Krizaka
Documentation

Orazaka UI — Fondations

La palette, les deux modes et leurs contrastes, les tokens produit, la typographie, les icônes et les règles produit — lus dans les tokens du kit à chaque build.

Orazaka Orange. Calm obsidian surfaces — the platform's, the krizaka.com values — and the orange of the Orazaka mark as the accent, from the Orazaka brand of @krizaka/tokens. Five named themes sit beside it, orthogonal to dark and light. A theme is a set of token values: theme.css overrides the --kz-* roles, so every @krizaka/ui primitive wears Orazaka without a class of its own.

Palette

Chaque rôle tel qu'une app le résout : la plateforme, puis la marque, puis le kit. Les rôles que le produit fixe sont signalés.

RôleOrazaka Orange — darkOrazaka Orange — lightFixé par
--kz-surface-0#0c0c0e#fafafaPlateforme
--kz-surface-1#161618#ffffffPlateforme
--kz-surface-2#1f1f23#f1f1f3Plateforme
--kz-surface-3#2a2a2d#e4e4e7Plateforme
--kz-border-defaulthsl(0 0% 100% / 0.10)hsl(240 6% 0% / 0.10)Plateforme
--kz-text-primary#f5f5f5#18181bPlateforme
--kz-text-secondary#a0a0a7#64646dPlateforme
--kz-text-muted#73737d#808089Plateforme
--kz-accentThe Orazaka orange: primary actions, the active state, the sent bubble.#f67e23#b45309Marque
--kz-accent-hoverThe accent under the pointer.#f79245#964608Marque
--kz-accent-softAn orange wash behind an active item or a pipeline chip.hsl(26 92% 55% / 0.12)hsl(26 90.5% 37.1% / 0.08)Marque
--kz-accent-textThe orange as text: links, active labels — AA on every surface.#f78c3b#9b4808Marque
--kz-accent-2The second stop of the buttons' gradient.#f59e0b#a45904Marque
--kz-on-accentText on the accent: near-black in dark, white in light.#0c0c0e#ffffffMarque
--kz-ringThe focus ring, in the accent.#f67e23#b45309Marque
--kz-success#10b77f#10b77fPlateforme
--kz-warning#f59f0a#f59f0aPlateforme
--kz-danger#ef4343#ef4343Plateforme
--kz-infoBlue, not orange: an orange "info" would read as a warning.#3b83f7#0a64f5Marque

Contrastes

Les paires que tout thème Krizaka respecte (WCAG 2.2) : le texte sur chaque surface, le texte sur l'accent, l'accent en texte, l'anneau de focus.

PaireSombreClairMinimum
text-primary sur surface-017.93:1Conforme AA16.97:1Conforme AA4.5:1
text-secondary sur surface-07.52:1Conforme AA5.61:1Conforme AA4.5:1
text-muted sur surface-04.17:1Conforme AA3.75:1Conforme AA3:1
accent-text sur surface-08.16:1Conforme AA6.05:1Conforme AA4.5:1
text-primary sur surface-116.58:1Conforme AA17.72:1Conforme AA4.5:1
text-secondary sur surface-16.95:1Conforme AA5.86:1Conforme AA4.5:1
text-muted sur surface-13.85:1Conforme AA3.91:1Conforme AA3:1
accent-text sur surface-17.55:1Conforme AA6.32:1Conforme AA4.5:1
text-primary sur surface-215.07:1Conforme AA15.71:1Conforme AA4.5:1
text-secondary sur surface-26.32:1Conforme AA5.19:1Conforme AA4.5:1
text-muted sur surface-23.50:1Conforme AA3.47:1Conforme AA3:1
accent-text sur surface-26.86:1Conforme AA5.60:1Conforme AA4.5:1
text-primary sur surface-313.13:1Conforme AA13.96:1Conforme AA4.5:1
text-secondary sur surface-35.51:1Conforme AA4.62:1Conforme AA4.5:1
text-muted sur surface-33.05:1Conforme AA3.08:1Conforme AA3:1
accent-text sur surface-35.98:1Conforme AA4.98:1Conforme AA4.5:1
on-accent sur accent7.38:1Conforme AA5.02:1Conforme AA4.5:1
on-accent sur accent-hover8.52:1Conforme AA6.61:1Conforme AA4.5:1
on-accent sur accent-29.10:1Conforme AA5.24:1Conforme AA4.5:1
ring sur surface-07.38:1Conforme AA4.81:1Conforme AA3:1

Thèmes nommés

Choisis par la personne, indépendants du mode sombre ou clair : chacun fixe tous les rôles, il se lit pareil dans les deux modes. En direct, avec les composants du kit.

  • Electric BlueRépondu en local3 contrats cités · 0 octet n'a quitté le réseau

    .theme-electric — The 2.x identity, kept for the users who chose it.

    20 paires sur 20 conformes AA · minimum 3.05:1

  • Deep VioletRépondu en local3 contrats cités · 0 octet n'a quitté le réseau

    .theme-custom — A violet night theme.

    20 paires sur 20 conformes AA · minimum 3.37:1

  • Neon MatrixRépondu en local3 contrats cités · 0 octet n'a quitté le réseau

    .theme-cyberpunk — Neon green text on violet black, magenta accent.

    20 paires sur 20 conformes AA · minimum 3.37:1

  • Warm ParchmentRépondu en local3 contrats cités · 0 octet n'a quitté le réseau

    .theme-solarized — A light theme on parchment surfaces.

    20 paires sur 20 conformes AA · minimum 3.36:1

  • Obsidian RazorRépondu en local3 contrats cités · 0 octet n'a quitté le réseau

    .theme-krizaka — Pitch-black surfaces, zero radius, a cold-steel accent.

    20 paires sur 20 conformes AA · minimum 3.34:1

Tokens produit

Ce que les rôles ne savent pas dire, préfixé du nom du produit — jamais générique.

TokenValeurUsage
--orazaka-grid-colorhsl(0 0% 100% / 0.02)The faint grid behind the console and the landing sections.
--orazaka-accent-glow0 0 0 3px color-mix(in oklab, var(--kz-accent) 12%, transparent)The soft accent halo around a focused composer or card.
--orazaka-space-cardclamp(1rem, 0.8rem + 0.8vw, 1.5rem)The fluid padding of a card.
--orazaka-space-sectionclamp(1.5rem, 1.2rem + 1.2vw, 2.5rem)The fluid gap between sections.

Échelle typographique

--text-xsclamp(0.6875rem, 0.65rem + 0.15vw, 0.75rem)
--text-smclamp(0.8125rem, 0.77rem + 0.18vw, 0.875rem)
--text-baseclamp(0.875rem, 0.83rem + 0.2vw, 1rem)
--text-lgclamp(1.125rem, 1.05rem + 0.3vw, 1.25rem)
--text-xlclamp(1.5rem, 1.3rem + 0.8vw, 2rem)
--text-2xlclamp(1.75rem, 1.5rem + 1vw, 2.5rem)
--text-displayclamp(2rem, 1.6rem + 1.6vw, 3rem)
--text-primaryvar(--kz-text-primary)
--text-secondaryvar(--kz-text-secondary)
--text-mutedvar(--kz-text-muted)

Typographie

RôleFamilleTokenUsage
DisplayOutfit--kz-font-displayHeadings and figures (h1, h2, .text-display) — Krizaka Display when the app loads it.
BodyInter--kz-font-sansInterface and reading text.
MonoJetBrains Mono--kz-font-monoData tables, console nodes, prompt streams, model names.

Icônes et marques

  • OrazakaLogo (@krizaka/ui) — The brand mark, in the brand's orange — never a placeholder icon.
  • Icon (@krizaka/orazaka-design-system) — The icon registry: every icon of an Orazaka screen, one typed name per concept; no app imports an icon library.
  • SentinelMini (@krizaka/orazaka-design-system) — The Sentinel, the guardian of the pipeline, at 24 px.

Règles produit

Ce que chaque écran du produit respecte — chaque règle citée depuis le contrat qui l'énonce.

  • Sovereign by designLocal-first: AI inference runs on the organisation's machines, never in an unsolicited cloud; no network dependency is introduced without being asked. The showcases say it: answered locally, nothing left the network.Orazaka AGENTS.md §0 and §13
  • The browser never reaches the engineA web page never calls the router or the model runtime directly: all browser traffic goes through the app's server routes (the BFF).Orazaka AGENTS.md §8
  • A persona, not an adminExamples, showcases and recordings speak as a named person with a real need (Eric, finance lead), in a fictional but believable workspace — never an admin account or an internal label.orazaka-ui-kit AGENTS.md
  • Input locks while the engine worksText entry surfaces lock while sending or generating: textareas, menus, attachments and submit buttons are disabled (ERR-126).ui_standards §5
  • Every state, every sizeEvery interactive element has hover, active, focus and disabled states; mobile-first layouts with touch targets of at least 44 px; an aria-label on every icon-only button.ui_standards §1 and §3
  • No hard-coded words or coloursNo JSX text: every string comes from the translation dictionary (room for +30 % in French). Colours are roles: no inline hex, no palette class.ui_standards §1 and §3

React Native

The mobile app has its own React Native components and takes the same tokens from @krizaka/orazaka-shared — the Orazaka orange of @krizaka/tokens/native.

import { themes, tokens } from "@krizaka/orazaka-shared";

const t = themes[colorScheme === "light" ? "light" : "dark"];
// t.accent, t.surface1, t.textPrimary…

Sur cette page