import { type ColorName } from "./color_tokens"; export { withAlpha, solid, tint, ramp, isColorName, asColorName, ACCENT_FAMILY } from "./color_tokens"; export type { ColorName } from "./color_tokens"; /** * The token contract, with its five themeable roles indirected through CSS * variables so an app can carry its own visual identity. * * Why this file exists at all, rather than a React context: 136 of the kit's 320 * modules import `colors` directly, at module scope, into `StyleSheet.create`. * A context would have to reach every one of them, turning static stylesheets * into per-render inline styles — the kit's whole performance model — for a * feature that changes five values. A variable costs nothing at runtime and * touches no component: `colors.background` still reads `colors.background`. * * A `var()` reaches CSS untouched on every colour property, so ONE theme paints * a component styling from its own sheet and an app styling inline alike. * * The literals stay in `./color_tokens` rather than moving here, because the two * are different things: that module is the palette a test can compare a hex * against, this one is the themeable surface every component reads. * * NO INLINE FALLBACK. A fallback is a second copy of a token that drifts from * the first, and the values live in `tokens.css` now; a tree that forgets * `styles.css` gets the loud error `styleParts` raises instead of a silent * second set of defaults. * * ONLY these five. The palette families stay literal, and must: `withAlpha`, * `tint` and `ramp` do string surgery on an `rgba()` to derive a wash, and a * `var()` handed to them would produce garbage no type would catch. Keeping the * themeable set to chrome keeps those functions total — the maintainability * argument and the "colour must keep meaning status" argument turn out to be the * same argument. */ export declare const colors: { black: string; white: string; red: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; orange: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; amber: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; yellow: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; lime: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; green: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; emerald: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; teal: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; cyan: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; sky: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; blue: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; indigo: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; violet: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; purple: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; fuchsia: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; pink: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; rose: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; slate: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; gray: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; zinc: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; neutral: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; stone: { 50: string; 100: string; 200: string; 300: string; 400: string; 500: string; 600: string; 700: string; 800: string; 900: string; 950: string; }; border_shadow: string; shadow: string; background: string; border: string; accent: string; primary: string; accent_wash: string; }; /** * The colour for `label` — stable for a given string, so one tag keeps one * colour across every screen and every session. * * The hash MIXES rather than sums (`h * 31 + c`), so anagrams and reorderings * land in different buckets; `|0` keeps it int32 so every engine agrees. * * Case- and space-insensitive, which matters more here than for a name: the tag * set folds `NOXH` and `noxh` to one label, so the two spellings must not come * out as two colours in the window before a write normalizes them. */ export declare function labelTone(label: string): ColorName;