Krizaka
Documentation

Orochia 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.

Obsidian Velvet Noir. Dark-first obsidian surfaces, a velvet violet accent and a sensual magenta second accent, with Outfit for display. The light theme, Luminous Ivory, is first-class. A theme is a set of token values: theme.css overrides the --kz-* roles of @krizaka/tokens, so every @krizaka/ui primitive wears Orochia 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ôleObsidian Velvet NoirLuminous IvoryFixé par
--kz-surface-0Obsidian: the page, near-black with a blue cast.#060709#f8fafcKit
--kz-surface-1Panels and cards on the page.#0c0e14#ffffffKit
--kz-surface-2Raised surfaces: inputs, menus, a card's footer.#121520#f1f1f3Kit
--kz-surface-3The highest surface: hovered rows, chips.#1a1e2c#e4e4e7Kit
--kz-border-defaultCard and input edges, tinted towards the obsidian.#1f2438hsl(240 6% 0% / 0.10)Kit
--kz-text-primary#f5f5f5#18181bPlateforme
--kz-text-secondary#a0a0a7#64646dPlateforme
--kz-text-muted#73737d#808089Plateforme
--kz-accentVelvet violet: the primary action, the active state, links.#7c3aed#7c3aedKit
--kz-accent-hoverThe accent under the pointer: deeper.#6d28d9#6d28d9Kit
--kz-accent-softA violet wash behind an active item.rgb(139 92 246 / 0.12)rgb(124 58 237 / 0.08)Kit
--kz-accent-text#a78bfa#6d28d9Marque
--kz-accent-2Sensual magenta: the second stop of the signature gradient (`from-accent to-accent-2`).#db2777#db2777Kit
--kz-on-accent#ffffff#ffffffMarque
--kz-ringThe focus ring: a light violet that stands out on obsidian.#a78bfa#7c3aedKit
--kz-success#10b77f#10b77fPlateforme
--kz-warning#f59f0a#f59f0aPlateforme
--kz-danger#ef4343#ef4343Plateforme
--kz-info#7c3aed#7c3aedMarque

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-018.48:1Conforme AA16.93:1Conforme AA4.5:1
text-secondary sur surface-07.75:1Conforme AA5.60:1Conforme AA4.5:1
text-muted sur surface-04.30:1Conforme AA3.74:1Conforme AA3:1
accent-text sur surface-07.40:1Conforme AA6.79:1Conforme AA4.5:1
text-primary sur surface-117.70:1Conforme AA17.72:1Conforme AA4.5:1
text-secondary sur surface-17.42:1Conforme AA5.86:1Conforme AA4.5:1
text-muted sur surface-14.11:1Conforme AA3.91:1Conforme AA3:1
accent-text sur surface-17.09:1Conforme AA7.10:1Conforme AA4.5:1
text-primary sur surface-216.69:1Conforme AA15.71:1Conforme AA4.5:1
text-secondary sur surface-27.00:1Conforme AA5.19:1Conforme AA4.5:1
text-muted sur surface-23.88:1Conforme AA3.47:1Conforme AA3:1
accent-text sur surface-26.69:1Conforme AA6.30:1Conforme AA4.5:1
text-primary sur surface-315.21:1Conforme AA13.96:1Conforme AA4.5:1
text-secondary sur surface-36.38:1Conforme AA4.62:1Conforme AA4.5:1
text-muted sur surface-33.54:1Conforme AA3.08:1Conforme AA3:1
accent-text sur surface-36.10:1Conforme AA5.60:1Conforme AA4.5:1
on-accent sur accent5.70:1Conforme AA5.70:1Conforme AA4.5:1
on-accent sur accent-hover7.10:1Conforme AA7.10:1Conforme AA4.5:1
on-accent sur accent-24.60:1Conforme AA4.60:1Conforme AA4.5:1
ring sur surface-07.40:1Conforme AA5.45:1Conforme AA3:1

Tokens produit

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

TokenValeurUsage
--orochia-story-ringlinear-gradient(135deg, var(--kz-accent), var(--kz-accent-2))The ring around a creator's avatar when they have a story — `bg-story-ring`.
--orochia-glow-accent0 0 25px -5px color-mix(in oklab, var(--kz-accent) 40%, transparent)A violet glow under a featured card — `shadow-glow-primary`.
--orochia-glow-accent-20 0 25px -5px color-mix(in oklab, var(--kz-accent-2) 40%, transparent)A magenta glow, for the second accent — `shadow-glow-accent`.

Typographie

RôleFamilleTokenUsage
DisplayOutfit--kz-font-displayHeadings, prices, counters — set by theme.css.
BodyPlus Jakarta Sans--kz-font-sansInterface and reading text — loaded by the web app (next/font, in the repository); the platform default is Inter.
MonoJetBrains Mono--kz-font-monoAmounts aligned in tables, codes — the platform's.

Icônes et marques

  • OrochiaLogo (@krizaka/ui) — The brand mark — the serpent and the flame, animated; never a placeholder icon. It stops under reduced motion.
  • @krizaka/icons (@krizaka/icons) — Every interface icon (<Name>Icon, the Krizaka signature); lucide-react is being retired screen by screen.
  • SocialIcon (@krizaka/orochia-design-system) — The networks a creator links from their profile.

Règles produit

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

  • Never "live"Orochia has no live streaming: no screen, badge or message says "live". An auction is open, a challenge takes pledges — StatusBadge replaced LiveBadge for that reason.orochia-design-system AGENTS.md §3
  • 18+, checked by the serverThe date of birth is checked 18+ by the server at registration; adult ratings are veiled for visitors whose age the server has not checked; only verified creators upload.Orochia AGENTS.md §3 (absolute invariants)
  • The address is the stateEvery place a person can be is a URL they can copy, share and reload: tabs, settings sections, filters, detail views. Tabs are links — never useState alone.Orochia AGENTS.md §6
  • Quick actions where the thing is shownEdit a photo on the photo, a cover on the cover, a title on the title. Settings pages are for preferences.Orochia AGENTS.md §6
  • Words come from the appComponents take their words as props; every string lives in the app's messages. Destructive actions confirm with a second tap (ConfirmButton), never window.confirm.orochia-design-system AGENTS.md §3
  • Roles only, both themesNo raw palette colour, no light: / dark:, no [var(--…)]: surfaces, text and accents use the roles, which change with the theme. Every hover and focus reads in both themes.Orochia AGENTS.md §6

React Native

The mobile app (Expo) takes the theme, not the components: nativeTheme is the @krizaka/tokens native roles with the Orochia overrides — the same values as theme.css (a test keeps them equal).

import { nativeTheme, gradientStops } from "@krizaka/orochia-design-system/tokens";

const t = nativeTheme[colorScheme === "light" ? "light" : "dark"];
// t.surface0, t.textPrimary, t.accent, t.accent2…

Sur cette page