@khal-os/ui 1.0.21 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,6 +20,32 @@ Import design tokens CSS:
20
20
  import '@khal-os/ui/tokens.css';
21
21
  ```
22
22
 
23
+ ## Design system
24
+
25
+ The visual + interaction language for `@khal-os/ui` is documented as a
26
+ package-local spec:
27
+
28
+ - [`DESIGN-SYSTEM.md`](./DESIGN-SYSTEM.md) — posture, canonical tokens,
29
+ component families, P0/P1/P2 review checklist.
30
+ - [`design-system.html`](./design-system.html) — standalone HTML preview
31
+ (token swatches, primitive gallery, starter templates). Open in a
32
+ browser; no server needed.
33
+
34
+ Canonical tokens are exposed three ways:
35
+
36
+ | Surface | Source |
37
+ | ------- | ------ |
38
+ | CSS custom properties (`--khal-*`) | [`tokens.css`](./tokens.css), `KhalOS Brand Aliases` block |
39
+ | TypeScript constants (`KHAL_*`) | [`src/tokens/khal-os-tokens.ts`](./src/tokens/khal-os-tokens.ts) |
40
+ | Aggregate object (`KHAL_TOKENS`) | same module — frozen, typed, runtime-safe |
41
+
42
+ ```ts
43
+ import { KHAL_TOKENS, KHAL_ACCENT } from '@khal-os/ui';
44
+ ```
45
+
46
+ The legacy `lp-tokens.ts` module is retained for the mesh-gradient
47
+ consumer; prefer `khal-os-tokens.ts` for new code.
48
+
23
49
  ## License
24
50
 
25
51
  [Elastic License 2.0 (ELv2)](./LICENSE)
package/dist/index.cjs CHANGED
@@ -79,6 +79,27 @@ __export(index_exports, {
79
79
  EmptyState: () => EmptyState,
80
80
  GlassCard: () => GlassCard,
81
81
  Input: () => Input,
82
+ KHAL_ACCENT: () => KHAL_ACCENT,
83
+ KHAL_ACCENT_BLUE: () => KHAL_ACCENT_BLUE,
84
+ KHAL_BG: () => KHAL_BG,
85
+ KHAL_BORDER: () => KHAL_BORDER,
86
+ KHAL_BORDER_STRONG: () => KHAL_BORDER_STRONG,
87
+ KHAL_CELL: () => KHAL_CELL,
88
+ KHAL_CHROME: () => KHAL_CHROME,
89
+ KHAL_CSS_VARS: () => KHAL_CSS_VARS,
90
+ KHAL_FG: () => KHAL_FG,
91
+ KHAL_FONT_BODY: () => KHAL_FONT_BODY,
92
+ KHAL_FONT_DISPLAY: () => KHAL_FONT_DISPLAY,
93
+ KHAL_FONT_MONO: () => KHAL_FONT_MONO,
94
+ KHAL_MOTION_DURATION_MS: () => KHAL_MOTION_DURATION_MS,
95
+ KHAL_MOTION_EASE: () => KHAL_MOTION_EASE,
96
+ KHAL_MUTED: () => KHAL_MUTED,
97
+ KHAL_RADIUS: () => KHAL_RADIUS,
98
+ KHAL_RADIUS_LG: () => KHAL_RADIUS_LG,
99
+ KHAL_SURFACE: () => KHAL_SURFACE,
100
+ KHAL_SURFACE_LIGHT: () => KHAL_SURFACE_LIGHT,
101
+ KHAL_TERTIARY: () => KHAL_TERTIARY,
102
+ KHAL_TOKENS: () => KHAL_TOKENS,
82
103
  KhalLogo: () => KhalLogo,
83
104
  ListView: () => ListView,
84
105
  LiveFeed: () => LiveFeed,
@@ -2516,6 +2537,70 @@ var useNotificationStore = (0, import_zustand2.create)()((set, get) => ({
2516
2537
  }
2517
2538
  }));
2518
2539
 
2540
+ // src/tokens/khal-os-tokens.ts
2541
+ var KHAL_BG = "oklch(14.48% 0.0000 89.88)";
2542
+ var KHAL_SURFACE = "oklch(18.69% 0.0107 268.11)";
2543
+ var KHAL_FG = "oklch(93.72% 0.0084 271.33)";
2544
+ var KHAL_MUTED = "oklch(66.06% 0.0293 269.51)";
2545
+ var KHAL_BORDER = "oklch(25.72% 0.0257 268.23)";
2546
+ var KHAL_ACCENT = "oklch(71.49% 0.1112 63.09)";
2547
+ var KHAL_CHROME = "oklch(16.86% 0.0110 268.03)";
2548
+ var KHAL_CELL = "oklch(17.33% 0.0154 266.68)";
2549
+ var KHAL_TERTIARY = "oklch(47.99% 0.0369 269.33)";
2550
+ var KHAL_BORDER_STRONG = "oklch(36.17% 0.0439 266.77)";
2551
+ var KHAL_ACCENT_BLUE = "oklch(55.73% 0.1910 256.76)";
2552
+ var KHAL_SURFACE_LIGHT = "oklch(95.99% 0.0079 73.74)";
2553
+ var KHAL_FONT_DISPLAY = '"Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
2554
+ var KHAL_FONT_BODY = '"Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';
2555
+ var KHAL_FONT_MONO = '"Geist Mono", "SFMono-Regular", ui-monospace, Menlo, Consolas, monospace';
2556
+ var KHAL_RADIUS = "10px";
2557
+ var KHAL_RADIUS_LG = "12px";
2558
+ var KHAL_MOTION_EASE = "cubic-bezier(0.22, 1, 0.36, 1)";
2559
+ var KHAL_MOTION_DURATION_MS = 420;
2560
+ var KHAL_TOKENS = Object.freeze({
2561
+ color: {
2562
+ bg: KHAL_BG,
2563
+ surface: KHAL_SURFACE,
2564
+ fg: KHAL_FG,
2565
+ muted: KHAL_MUTED,
2566
+ border: KHAL_BORDER,
2567
+ accent: KHAL_ACCENT,
2568
+ chrome: KHAL_CHROME,
2569
+ cell: KHAL_CELL,
2570
+ tertiary: KHAL_TERTIARY,
2571
+ borderStrong: KHAL_BORDER_STRONG,
2572
+ accentBlue: KHAL_ACCENT_BLUE,
2573
+ surfaceLight: KHAL_SURFACE_LIGHT
2574
+ },
2575
+ font: {
2576
+ display: KHAL_FONT_DISPLAY,
2577
+ body: KHAL_FONT_BODY,
2578
+ mono: KHAL_FONT_MONO
2579
+ },
2580
+ radius: {
2581
+ base: KHAL_RADIUS,
2582
+ lg: KHAL_RADIUS_LG
2583
+ },
2584
+ motion: {
2585
+ ease: KHAL_MOTION_EASE,
2586
+ durationMs: KHAL_MOTION_DURATION_MS
2587
+ }
2588
+ });
2589
+ var KHAL_CSS_VARS = Object.freeze({
2590
+ bg: "--khal-bg",
2591
+ surface: "--khal-surface",
2592
+ fg: "--khal-fg",
2593
+ muted: "--khal-muted",
2594
+ border: "--khal-border",
2595
+ accent: "--khal-accent",
2596
+ chrome: "--khal-chrome",
2597
+ cell: "--khal-cell",
2598
+ tertiary: "--khal-tertiary",
2599
+ borderStrong: "--khal-border-strong",
2600
+ accentBlue: "--khal-accent-blue",
2601
+ surfaceLight: "--khal-surface-light"
2602
+ });
2603
+
2519
2604
  // src/tokens/lp-tokens.ts
2520
2605
  var WIN_BG = "#111318";
2521
2606
  var CHROME_BG = "#0D0F14";
@@ -2589,6 +2674,27 @@ var BUTTON_RADIUS = "10px";
2589
2674
  EmptyState,
2590
2675
  GlassCard,
2591
2676
  Input,
2677
+ KHAL_ACCENT,
2678
+ KHAL_ACCENT_BLUE,
2679
+ KHAL_BG,
2680
+ KHAL_BORDER,
2681
+ KHAL_BORDER_STRONG,
2682
+ KHAL_CELL,
2683
+ KHAL_CHROME,
2684
+ KHAL_CSS_VARS,
2685
+ KHAL_FG,
2686
+ KHAL_FONT_BODY,
2687
+ KHAL_FONT_DISPLAY,
2688
+ KHAL_FONT_MONO,
2689
+ KHAL_MOTION_DURATION_MS,
2690
+ KHAL_MOTION_EASE,
2691
+ KHAL_MUTED,
2692
+ KHAL_RADIUS,
2693
+ KHAL_RADIUS_LG,
2694
+ KHAL_SURFACE,
2695
+ KHAL_SURFACE_LIGHT,
2696
+ KHAL_TERTIARY,
2697
+ KHAL_TOKENS,
2592
2698
  KhalLogo,
2593
2699
  ListView,
2594
2700
  LiveFeed,