LAYER / 01
8-bit systems
Raster cells, limited palettes, discrete state, and repeatable grid logic.
Raster & Ink
A label-design system for turning structured data into reliable physical movement—from canvas and code to carton, rack, and dock.
LAYER / 01
8-bit systems
Raster cells, limited palettes, discrete state, and repeatable grid logic.
LAYER / 02
Retro gaming
Immediate feedback, compact system labels, progression, and purposeful signal colour.
LAYER / 03
Graffiti culture
Authorship, overprinting, annotation, and rare moments that deliberately break the grid.
01 · Foundation
The tests we use when two visually plausible answers compete.
System beneath style: every expressive move starts from the same spacing, type, and semantic-token contract.
Raster clarity: geometry is crisp, hierarchy is obvious, and interaction state is never ambiguous.
Material technology: one white surface establishes the base; restrained grey structure keeps the work visible, with optional editor roles available to public themes.
Leave a human mark: use registration, annotation, and overprint cues on expressive surfaces while core tools stay legible.
Feedback shows processing: motion reveals movement, rendering, and state change without slowing expert work.
02 · Foundation
One core palette serves the product. Public themes can optionally customize editor-specific roles.
Live palette editor
Changes apply to this catalogue and persist in this browser.
Surfaces
Text
Actions
Structure
Status
lightcanvas
oklch(1 0 0)secondary
oklch(0.91 0 0)muted
oklch(0.95 0 0)accent
oklch(0.94 0 0)default
oklch(0.25 0 0)muted
oklch(0.48 0 0)primary
oklch(0.35 0 0)default
oklch(0.73 0 0)ring
oklch(0.5 0 0)danger
oklch(0.470333 0.180405 27.841)success-text
oklch(0.373041 0.107178 148.286)warning-surface
oklch(0.744451 0.179766 55.811)darkcanvas
oklch(0.13 0 0)secondary
oklch(0.24 0 0)muted
oklch(0.21 0 0)accent
oklch(0.28 0 0)default
oklch(0.95 0 0)muted
oklch(0.73 0 0)primary
oklch(0.9 0 0)default
oklch(0.39 0 0)ring
oklch(0.78 0 0)danger
oklch(0.72 0.16 25)success-text
oklch(0.8 0.1 145)warning-surface
oklch(0.8 0.15 75)light-high-contrastcanvas
oklch(1 0 0)secondary
oklch(0.9 0 0)muted
oklch(0.95 0 0)accent
oklch(0.86 0 0)default
oklch(0.05 0 0)muted
oklch(0.3 0 0)primary
oklch(0.05 0 0)default
oklch(0.25 0 0)ring
oklch(0.38 0 0)danger
oklch(0.470333 0.180405 27.841)success-text
oklch(0.373041 0.107178 148.286)warning-surface
oklch(0.744451 0.179766 55.811)dark-high-contrastcanvas
oklch(0.05 0 0)secondary
oklch(0.18 0 0)muted
oklch(0.15 0 0)accent
oklch(0.42 0 0)default
oklch(1 0 0)muted
oklch(0.86 0 0)primary
oklch(1 0 0)default
oklch(0.72 0 0)ring
oklch(0.84 0 0)danger
oklch(0.72 0.16 25)success-text
oklch(0.8 0.1 145)warning-surface
oklch(0.8 0.15 75)Canvas, cards, popovers, sidebars, panes, headers, and the work plane all use #FFFFFF; borders and spacing provide structure.
The default editor aliases the core palette; public themes can override editor surfaces, gutter, and focus without expanding the required contract. The non-printable label gutter intentionally uses the editor gutter role; the label itself always uses the canvas surface.
Grey fills identify hover, selection, disabled, or muted states. They do not create slightly different passive surfaces.
An unchanged Zed v0.2 theme family loads every contained theme; Kite supplies fallbacks for product-specific status roles.
Optional theme plugin
An optional high-energy theme with acid-lime action, marker-magenta focus, and arcade-cabinet contrast.
com.kite.arcade@1.0.003 · Foundation
One clear sans-serif voice for work and display; monospace classifies layers, coordinates, tokens, and machine values.
Display
--kite-font-size-displayBuild labels with confidence
Title
--kite-font-size-titleProduction workspace
Body
--kite-font-size-bodyClear interface copy supports fast, accurate decisions.
Small
--kite-font-size-smUpdated 12 minutes ago by Priya
Metadata
--kite-font-size-xsPRINTER · ZT411 · 300 DPI
Machine data
ui-monospace^XA · semantic.color.action.primary · 203.2 dpi
04 · Foundation
A 4px base grid keeps expert workflows compact and makes alignment predictable.
14px28px312px416px624px832pxDensity rule
Visible control height may be compact; the surrounding layout must retain a comfortable pointer and touch target.
05 · Foundation
Small radii and thin rules define ordinary containment. Restrained depth appears only when an object genuinely stacks above the work plane.
Small · nested controls
Default · controls
Large · containers
Sticky toolbars and active cards use close, restrained elevation.
Dialogs, popovers, and dragged objects use the floating recipe.
06 · Foundation
Fast enough for expert operation, present enough to preserve context.
Fast · 120ms
Hover, press, focus
Moderate · 180ms
Disclosure, local layout
Slow · 280ms
Overlay and pane transitions
Hover each sample. Under prefers-reduced-motion: reduce, travel is removed and state changes are immediate.
07 · Foundation
Lucide’s 2px outline language supports interface actions; text carries meaning when an icon could be ambiguous.
Use one icon family, optical sizes of 16–20px, and labels for unfamiliar or destructive actions.
Do not mix filled and outline sets or use icon-only controls without an accessible name.
08 · Navigation
Breadcrumbs explain either where a page lives or how far a bounded task has progressed. Both variants share one semantic nav/list core and use text—not colour alone—to communicate state.
Use at the leading edge of a page navbar or page header. The final item is the current page; ancestors may link back to stable destinations.
Position before page-level actions. Keep labels short, collapse information architecture rather than repeating the sidebar, and omit a link from the current page.
BreadcrumbCore owns the accessible nav, ordered list, item, and separator structure. Product code should normally choose a named variant instead of styling the core directly.
@kite/ui/impl/breadcrumbsUse below the page heading and above the active step content. Pass stable step IDs and the current step ID; completed and upcoming states are derived.
Keep progress beneath the page title and above the form or decision for the current step. It may remain sticky within that content pane.
Do not put task progress in the sidebar or global navbar, and do not use it for free-form page navigation.
09 · Components
These examples render the actual @kite/ui components, so this catalogue exposes implementation drift.
One primary action per decision area; variants step down through secondary, outline, ghost, and destructive.
Labels remain visible; helper and error copy explain constraints and recovery.
Use for bounded numeric values that operators adjust repeatedly. Keep direct typing available alongside the step controls.
Every status pairs colour with words and, for high-salience messages, an icon.
Printer connected
ZT411 is ready to receive jobs.
Keep the label and consequence together; place the control at the predictable trailing edge.
Job notifications
Notify when a print job completes.
Automatic retry
Retry recoverable printer errors once.
Align comparable values, keep actions quiet, and preserve a clear selected state.
| Printer | Location | Resolution | Status | Actions |
|---|---|---|---|---|
| ZT411-01 | Packing line | 300 dpi | Online | |
| ZD621-04 | Dispatch | 203 dpi | Paused | |
| ZT610-02 | Cold store | 600 dpi | Online |
Use a dense status matrix when operators need to find unhealthy service/device intersections at a glance. Summary tiles establish scale; colour intensity carries urgency and load.
4 / 4
Azure · Cloud
5 / 6
WMS · Management
3 / 5
WCS · Control
2 / 4
SRC · Runtime
Current workload state · mock observation
Hosts and their aggregate Podman workload state
| Device | IP address | Status | Services | Last seen |
|---|---|---|---|---|
| wms-app-01 | 10.40.2.11 | Online | 4 | now |
| wcs-edge-01 | 10.40.2.18 | Degraded | 4 | 12s |
| src-worker-02 | 10.40.3.24 | Offline | 4 | 2m |
| print-node-01 | 10.40.4.31 | Offline | 2 | 18m |
| dispatch-02 | 10.40.4.36 | Degraded | 4 | 34s |
Group Podman workloads by service family and keep tile positions stable so recurring hotspots become spatially memorable.
Every cell retains a written state and value. Show the observation source and recency once monitoring is wired to Podman.
Actions
Inputs
Navigation
Feedback
Data & layout
10 · Product proof
The warehouse direction must prove itself against the actual label-design workspace—not only generic components. Change tokens above, then judge the whole editor composition here before migrating a recipe into production.
Dispatch / 04
SYD → MEL
Recipient
Kite Warehouse
Order
#319050
4 230313 190505
11 · Interaction
Every interactive recipe accounts for the same predictable states.
| State | Signal | Rule | Example |
|---|---|---|---|
| Rest | Structure | Clear affordance without demanding attention | |
| Hover | Surface + cursor | Preview interactivity; never reveal required information only on hover | |
| Focus | 2–3px ring | Keyboard focus remains visible against adjacent surfaces | |
| Active | 1px compression | Immediate tactile acknowledgement | |
| Disabled | 50% opacity | Use only when the reason is discoverable | |
| Invalid | Danger border + copy | Explain both problem and recovery |
12 · Quality
WCAG targets are the floor; predictable interaction and resilient communication are the design outcome.
Body copy targets 4.5:1. Large text and essential non-text controls target at least 3:1.
Focus is never removed. Order follows the visible layout, and icon-only controls retain accessible names.
Colour is reinforced through copy, icon, position, or pattern—especially in charts, risk, and validation.
5.46:1
Lowest verified text pair · WCAG AA
7.56:1
Lowest verified text pair · WCAG AA
5.46:1
Lowest verified text pair · WCAG AA
7.88:1
Lowest verified text pair · WCAG AA
High contrast is a dedicated theme variant, not an automatic saturation boost.
Both high-contrast modifiers inherit the normal semantic theme, then deliberately strengthen surfaces, borders, focus, and essential text pairs.
13 · Contract
The small required vocabulary every Kite theme implements. Product-specific editor, chart, and risk roles are optional extensions.
| Token | Type | Resolved value |
|---|---|---|
| semantic.color.surface.canvas | color | oklch(1 0 0) |
| semantic.color.surface.secondary | color | oklch(0.91 0 0) |
| semantic.color.surface.muted | color | oklch(0.95 0 0) |
| semantic.color.surface.accent | color | oklch(0.94 0 0) |
| semantic.color.text.default | color | oklch(0.25 0 0) |
| semantic.color.text.on-primary | color | oklch(1 0 0) |
| semantic.color.text.on-secondary | color | oklch(0.25 0 0) |
| semantic.color.text.muted | color | oklch(0.48 0 0) |
| semantic.color.text.on-accent | color | oklch(0.25 0 0) |
| semantic.color.action.primary | color | oklch(0.35 0 0) |
| semantic.color.border.default | color | oklch(0.73 0 0) |
| semantic.color.focus.ring | color | oklch(0.5 0 0) |
| semantic.color.status.danger | color | oklch(0.470333 0.180405 27.841) |
| semantic.color.status.success-surface | color | oklch(0.906887 0.072817 135.934 / 0.33) |
| semantic.color.status.success-text | color | oklch(0.373041 0.107178 148.286) |
| semantic.color.status.warning-surface | color | oklch(0.744451 0.179766 55.811) |
| semantic.color.status.warning-text | color | oklch(0.188933 0.025871 49.055) |
| semantic.color.status.info-surface | color | oklch(0.52 0.06 244) |
| semantic.color.status.info-text | color | oklch(1 0 0) |