K Konspec UI v0.1.0
Internal tools · light theme only

A component library
written for the agent
building your app.

Plain HTML you copy and paste. Tailwind for styling, Alpine for state, htmx for server swaps, Lucide for icons, and Chart.js on the pages that plot something. No package, no build step — and every screen across every internal tool ends up looking like one person built it.

Components
Variants
Dependencies
Paste this into your agent the whole onboarding

For agents

What to do before you write a single line

This is the whole protocol. Four steps, in order. Skipping step one is how you end up inventing a blue button that exists nowhere else in the company.

llms.txt Protocol, stack, every rule, tokens, the status mapping, and a one-line index of every component. Read this first. 11 KB · 147 lines registry.json Exact HTML for every variant, plus when-to-use notes and per-component rules. Copy the strings; do not reconstruct markup from prose. 186 KB · components · variants

Still to come on this site

The component browser and the reference application, one at a time. Both files above are generated by node tools/build.js from assets/spec.js, which is also what renders the rules, tokens and status mapping further down this page — so the three can never drift apart.

Non-negotiable

rules, none optional

Every one of these is here because breaking it produced a visible defect at least once. They are not style preferences.

Palette

The class name is the token

Stock Tailwind. There is no theme file to import and no variable to look up. Graphite carries every interaction, which is what leaves red, amber and green free to mean something.

Neutral & accent

Shape

Reserved for record state

This mapping is fixed. Three separate agents asked to build components each invented their own version of it, and one of them put Overdue in amber — which is exactly the ambiguity the rule exists to prevent.

Semantic colour

Four tones, one shade each, the same shade in every component. A mark you read takes the text class; a dot or a bar takes the fill. Nothing takes a -50 tint — a coloured icon well is still bg-zinc-200.

Typography

Inter and JetBrains Mono, self-hosted — no request leaves the network. Every size states its leading: text-[13px]/5, never bare text-[13px], which compiles to a font-size with no line-height at all.

Weight — three, no more

Tracking — two, no more

The library

components

Documentation pages are written one at a time, each reviewed before the next begins. Every component below already exists in registry.json with its full markup — the page is where the anatomy, behaviour and accessibility notes live.

of pages written

Hand it the instructions once.

Every screen it builds after that will match every screen built before it — including the ones built by a different agent, six months from now.