@hewnui/themes 0.0.0-stage → 0.1.1

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.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -2
  3. package/dist/authoring/css-vars.d.ts +10 -0
  4. package/dist/authoring/css-vars.js +83 -0
  5. package/dist/authoring/derive.d.ts +9 -0
  6. package/dist/authoring/derive.js +79 -0
  7. package/dist/authoring/export-css.d.ts +8 -0
  8. package/dist/authoring/export-css.js +60 -0
  9. package/dist/authoring/export-design-md.d.ts +5 -0
  10. package/dist/authoring/export-design-md.js +113 -0
  11. package/dist/authoring/export-dtcg.d.ts +6 -0
  12. package/dist/authoring/export-dtcg.js +85 -0
  13. package/dist/authoring/export-figma.d.ts +27 -0
  14. package/dist/authoring/export-figma.js +76 -0
  15. package/dist/authoring/export-formats.d.ts +27 -0
  16. package/dist/authoring/export-formats.js +62 -0
  17. package/dist/authoring/export-skill.d.ts +5 -0
  18. package/dist/authoring/export-skill.js +75 -0
  19. package/dist/authoring/export-sticker.d.ts +6 -0
  20. package/dist/authoring/export-sticker.js +54 -0
  21. package/dist/authoring/export-style-dictionary.d.ts +3 -0
  22. package/dist/authoring/export-style-dictionary.js +52 -0
  23. package/dist/authoring/figma-kit.d.ts +16 -0
  24. package/dist/authoring/figma-kit.js +41 -0
  25. package/dist/authoring/index.d.ts +21 -0
  26. package/dist/authoring/index.js +18 -0
  27. package/dist/authoring/oklch.d.ts +11 -0
  28. package/dist/authoring/oklch.js +116 -0
  29. package/dist/authoring/override-map.d.ts +9 -0
  30. package/dist/authoring/override-map.js +150 -0
  31. package/dist/authoring/pack-def.d.ts +7 -0
  32. package/dist/authoring/pack-def.js +3 -0
  33. package/dist/authoring/pack-meta.d.ts +10 -0
  34. package/dist/authoring/pack-meta.js +58 -0
  35. package/dist/authoring/packs-dual.d.ts +129 -0
  36. package/dist/authoring/packs-dual.js +130 -0
  37. package/dist/authoring/packs-single.d.ts +87 -0
  38. package/dist/authoring/packs-single.js +88 -0
  39. package/dist/authoring/packs.d.ts +8 -0
  40. package/dist/authoring/packs.js +26 -0
  41. package/dist/authoring/pro-apply.d.ts +8 -0
  42. package/dist/authoring/pro-apply.js +107 -0
  43. package/dist/authoring/propose.d.ts +21 -0
  44. package/dist/authoring/propose.js +162 -0
  45. package/dist/authoring/ramps.d.ts +13 -0
  46. package/dist/authoring/ramps.js +40 -0
  47. package/dist/authoring/status-ramps.d.ts +13 -0
  48. package/dist/authoring/status-ramps.js +76 -0
  49. package/dist/authoring/token-entries.d.ts +10 -0
  50. package/dist/authoring/token-entries.js +52 -0
  51. package/dist/authoring/types.d.ts +110 -0
  52. package/dist/authoring/types.js +11 -0
  53. package/exports/clay/DESIGN.md +138 -0
  54. package/exports/clay/SKILL.md +94 -0
  55. package/exports/clay/theme.css +37 -0
  56. package/exports/clay/tokens.dtcg.json +200 -0
  57. package/exports/dune/DESIGN.md +138 -0
  58. package/exports/dune/SKILL.md +94 -0
  59. package/exports/dune/theme.css +37 -0
  60. package/exports/dune/tokens.dtcg.json +200 -0
  61. package/exports/ember/DESIGN.md +138 -0
  62. package/exports/ember/SKILL.md +94 -0
  63. package/exports/ember/theme.css +37 -0
  64. package/exports/ember/tokens.dtcg.json +200 -0
  65. package/exports/forest/DESIGN.md +138 -0
  66. package/exports/forest/SKILL.md +94 -0
  67. package/exports/forest/theme.css +67 -0
  68. package/exports/forest/tokens.dtcg.json +348 -0
  69. package/exports/graphite/DESIGN.md +138 -0
  70. package/exports/graphite/SKILL.md +94 -0
  71. package/exports/graphite/theme.css +67 -0
  72. package/exports/graphite/tokens.dtcg.json +348 -0
  73. package/exports/index.json +45 -0
  74. package/exports/tide/DESIGN.md +138 -0
  75. package/exports/tide/SKILL.md +94 -0
  76. package/exports/tide/theme.css +67 -0
  77. package/exports/tide/tokens.dtcg.json +348 -0
  78. package/figma/README.md +16 -0
  79. package/figma/hewn.tokens.json +1308 -0
  80. package/figma/sticker-sheet.svg +93 -0
  81. package/package.json +77 -3
  82. package/src/authoring/css-vars.ts +92 -0
  83. package/src/authoring/derive.ts +106 -0
  84. package/src/authoring/export-css.ts +86 -0
  85. package/src/authoring/export-design-md.ts +134 -0
  86. package/src/authoring/export-dtcg.ts +116 -0
  87. package/src/authoring/export-figma.ts +109 -0
  88. package/src/authoring/export-formats.ts +101 -0
  89. package/src/authoring/export-skill.ts +93 -0
  90. package/src/authoring/export-sticker.ts +60 -0
  91. package/src/authoring/export-style-dictionary.ts +67 -0
  92. package/src/authoring/figma-kit.ts +60 -0
  93. package/src/authoring/index.ts +61 -0
  94. package/src/authoring/oklch.ts +137 -0
  95. package/src/authoring/override-map.ts +191 -0
  96. package/src/authoring/pack-def.ts +11 -0
  97. package/src/authoring/pack-meta.ts +66 -0
  98. package/src/authoring/packs-dual.ts +131 -0
  99. package/src/authoring/packs-single.ts +89 -0
  100. package/src/authoring/packs.ts +43 -0
  101. package/src/authoring/pro-apply.ts +156 -0
  102. package/src/authoring/propose.ts +181 -0
  103. package/src/authoring/ramps.ts +62 -0
  104. package/src/authoring/status-ramps.ts +98 -0
  105. package/src/authoring/token-entries.ts +59 -0
  106. package/src/authoring/types.ts +133 -0
  107. package/src/glass-buttons.css +46 -0
  108. package/src/glass.css +266 -0
  109. package/src/motion.css +60 -0
  110. package/src/packs/clay.css +45 -0
  111. package/src/packs/dune.css +45 -0
  112. package/src/packs/ember.css +45 -0
  113. package/src/packs/forest.css +80 -0
  114. package/src/packs/graphite.css +79 -0
  115. package/src/packs/tide.css +79 -0
  116. package/src/radius.css +25 -0
  117. package/src/tokens.css +104 -0
@@ -0,0 +1,138 @@
1
+ # Tide — Design brief
2
+
3
+ > Generated from Hewn curated theme packs. Semantic OKLCH tokens; do not edit by hand.
4
+
5
+ ## Identity
6
+
7
+ Mineral neutrals and desaturated teal.
8
+
9
+ - **Pack id:** `tide`
10
+ - **Base pack:** `tide`
11
+ - **Supported modes:** light, dark
12
+ - **Color scheme (primary):** light
13
+
14
+ ## Palette
15
+
16
+ | Token | Role | light | dark |
17
+ |---|---|---|---|
18
+ | `background` | Page and app canvas | `oklch(0.97 0.01 220)` | `oklch(0.18 0.02 230)` |
19
+ | `foreground` | Primary text and icons | `oklch(0.24 0.03 230)` | `oklch(0.92 0.015 220)` |
20
+ | `surface` | Cards, panels, and elevated chrome | `oklch(0.995 0.004 220)` | `oklch(0.22 0.025 230)` |
21
+ | `surface-raised` | Overlays and nested elevation | `oklch(1 0 0)` | `oklch(0.26 0.028 230)` |
22
+ | `muted` | Subtle fills and disabled wells | `oklch(0.93 0.015 220)` | `oklch(0.28 0.025 230)` |
23
+ | `muted-foreground` | Secondary text and captions | `oklch(0.48 0.03 230)` | `oklch(0.72 0.025 220)` |
24
+ | `accent` | Primary actions and focus accents | `oklch(0.52 0.07 210)` | `oklch(0.72 0.08 205)` |
25
+ | `accent-foreground` | Text/icons on accent | `oklch(0.98 0.01 210)` | `oklch(0.985 0.01 220)` |
26
+ | `border` | Separators and control outlines | `oklch(0.35 0.03 230 / 14%)` | `oklch(0.86 0.02 220 / 13%)` |
27
+ | `ring` | Focus ring | `oklch(0.58 0.08 210)` | `oklch(0.72 0.08 205)` |
28
+ | `danger` | Destructive and error states | `oklch(0.56 0.17 27)` | `oklch(0.68 0.16 27)` |
29
+ | `danger-foreground` | danger-foreground | `oklch(0.985 0.01 27)` | `oklch(0.985 0.01 27)` |
30
+ | `danger-subtle` | danger-subtle | `oklch(0.94 0.035 27)` | `oklch(0.32 0.05 27)` |
31
+ | `danger-border` | danger-border | `oklch(0.56 0.12 27 / 40%)` | `oklch(0.72 0.1 27 / 40%)` |
32
+ | `success` | success | `oklch(0.55 0.15 165)` | `oklch(0.71 0.14 165)` |
33
+ | `success-foreground` | success-foreground | `oklch(0.985 0.01 165)` | `oklch(0.985 0.01 165)` |
34
+ | `success-subtle` | success-subtle | `oklch(0.94 0.035 165)` | `oklch(0.32 0.045 165)` |
35
+ | `success-border` | success-border | `oklch(0.55 0.12 165 / 40%)` | `oklch(0.72 0.1 165 / 40%)` |
36
+ | `warning` | warning | `oklch(0.75 0.14 75)` | `oklch(0.78 0.12 75)` |
37
+ | `warning-foreground` | warning-foreground | `oklch(0.25 0.05 75)` | `oklch(0.22 0.04 75)` |
38
+ | `warning-subtle` | warning-subtle | `oklch(0.94 0.04 75)` | `oklch(0.34 0.04 75)` |
39
+ | `warning-border` | warning-border | `oklch(0.72 0.12 75 / 40%)` | `oklch(0.78 0.1 75 / 40%)` |
40
+ | `info` | info | `oklch(0.52 0.11 230)` | `oklch(0.72 0.1 230)` |
41
+ | `info-foreground` | info-foreground | `oklch(0.985 0.01 230)` | `oklch(0.985 0.01 230)` |
42
+ | `info-subtle` | info-subtle | `oklch(0.94 0.03 230)` | `oklch(0.32 0.035 230)` |
43
+ | `info-border` | info-border | `oklch(0.52 0.09 230 / 40%)` | `oklch(0.72 0.08 230 / 40%)` |
44
+ | `glass-tint` | Tinted frosted glass material | `oklch(0.72 0.08 210 / 28%)` | `oklch(0.6 0.09 205 / 24%)` |
45
+
46
+ ## Typography
47
+
48
+ | Role | Stack | Usage |
49
+ |---|---|---|
50
+ | Sans | IBM Plex Sans, ui-sans-serif, system-ui | UI chrome, body, headings |
51
+ | Mono | IBM Plex Mono, ui-monospace | Labels, code, tabular metrics |
52
+ | Display | Space Grotesk → sans | Marketing hero H1 and brand wordmark ≥18px only |
53
+
54
+ Body text uses pretty wrapping; headings use balanced wrapping; dynamic numbers use `tabular-nums`.
55
+
56
+ ## Radius & density
57
+
58
+ - `radius-sm`: `0.45rem`
59
+ - `radius-md`: `0.7rem`
60
+ - `radius-lg`: `0.95rem`
61
+ - `radius-panel`: `0.95rem`
62
+ - `density`: `1`
63
+ - `motion-duration`: `240ms`
64
+ - `motion-stiffness`: `380`
65
+ - `motion-damping`: `30`
66
+
67
+ Density scales control spacing rhythm. Panel radius (`radius-panel`) caps menus and dialogs so they never go full-pill.
68
+
69
+ ## Motion
70
+
71
+ - Duration: `240ms`
72
+ - Spring stiffness: `380`
73
+ - Spring damping: `30`
74
+ - Reduced motion always wins over global motion toggles.
75
+ - Prefer transform / opacity / filter; never animate layout properties continuously.
76
+
77
+ ## Material
78
+
79
+ - `solid` — structured product surfaces and separators
80
+ - `glass` — accent-tinted frosted surfaces (blur, saturation, refraction, opaque fallback)
81
+
82
+ ## Do
83
+
84
+ - Use semantic OKLCH tokens (`--kp-*` / `--color-*`); never hard-code theme hues.
85
+ - Typography: IBM Plex Sans (UI), IBM Plex Mono (code/labels), Space Grotesk only for marketing hero H1 and brand wordmark ≥18px.
86
+ - Icons: Phosphor. Interactive hit targets ≥40×40px; press feedback `scale(0.96)`.
87
+ - Motion: animate transform, opacity, and filter; reduced motion always wins.
88
+ - Radius: concentric scale; panels use `--kp-radius-panel` (never full-pill menus/dialogs).
89
+ - Glass is a global material — tint, blur, saturation, refraction edge, opaque fallback.
90
+
91
+ ## Don't
92
+
93
+ - No purple/lila defaults, neon glow, pure black, Inter, emoji, or generic centered heroes.
94
+ - Never `transition: all` — list exact properties.
95
+ - Never `h-screen` for full-height sections — use `min-h-[100dvh]`.
96
+ - No per-component `glass` prop; material is global.
97
+ - Do not invent unsupported light/dark combinations for a pack.
98
+ - Do not put Space Grotesk in UI chrome, forms, or dense product copy.
99
+
100
+ ## Token reference (primary mode)
101
+
102
+ ```
103
+ --kp-background: oklch(0.97 0.01 220);
104
+ --kp-foreground: oklch(0.24 0.03 230);
105
+ --kp-surface: oklch(0.995 0.004 220);
106
+ --kp-surface-raised: oklch(1 0 0);
107
+ --kp-muted: oklch(0.93 0.015 220);
108
+ --kp-muted-foreground: oklch(0.48 0.03 230);
109
+ --kp-accent: oklch(0.52 0.07 210);
110
+ --kp-accent-foreground: oklch(0.98 0.01 210);
111
+ --kp-border: oklch(0.35 0.03 230 / 14%);
112
+ --kp-ring: oklch(0.58 0.08 210);
113
+ --kp-danger: oklch(0.56 0.17 27);
114
+ --kp-danger-foreground: oklch(0.985 0.01 27);
115
+ --kp-danger-subtle: oklch(0.94 0.035 27);
116
+ --kp-danger-border: oklch(0.56 0.12 27 / 40%);
117
+ --kp-success: oklch(0.55 0.15 165);
118
+ --kp-success-foreground: oklch(0.985 0.01 165);
119
+ --kp-success-subtle: oklch(0.94 0.035 165);
120
+ --kp-success-border: oklch(0.55 0.12 165 / 40%);
121
+ --kp-warning: oklch(0.75 0.14 75);
122
+ --kp-warning-foreground: oklch(0.25 0.05 75);
123
+ --kp-warning-subtle: oklch(0.94 0.04 75);
124
+ --kp-warning-border: oklch(0.72 0.12 75 / 40%);
125
+ --kp-info: oklch(0.52 0.11 230);
126
+ --kp-info-foreground: oklch(0.985 0.01 230);
127
+ --kp-info-subtle: oklch(0.94 0.03 230);
128
+ --kp-info-border: oklch(0.52 0.09 230 / 40%);
129
+ --kp-glass-tint: oklch(0.72 0.08 210 / 28%);
130
+ --kp-radius-sm: 0.45rem;
131
+ --kp-radius-md: 0.7rem;
132
+ --kp-radius-lg: 0.95rem;
133
+ --kp-radius-panel: 0.95rem;
134
+ --kp-density: 1;
135
+ --kp-motion-duration: 240ms;
136
+ --kp-motion-stiffness: 380;
137
+ --kp-motion-damping: 30;
138
+ ```
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: hewn-tide-theme
3
+ description: Apply the Hewn Tide theme tokens, typography, motion, and design rules when building or restyling UI.
4
+ ---
5
+
6
+ # Tide theme (Hewn)
7
+
8
+ Mineral neutrals and desaturated teal.
9
+
10
+ Use this skill whenever generating UI that should match the **Tide** pack
11
+ (`tide`). Supported modes: **light, dark**.
12
+
13
+ ## Quick rules
14
+
15
+ - Use semantic OKLCH tokens (`--kp-*` / `--color-*`); never hard-code theme hues.
16
+ - Typography: IBM Plex Sans (UI), IBM Plex Mono (code/labels), Space Grotesk only for marketing hero H1 and brand wordmark ≥18px.
17
+ - Icons: Phosphor. Interactive hit targets ≥40×40px; press feedback `scale(0.96)`.
18
+ - Motion: animate transform, opacity, and filter; reduced motion always wins.
19
+ - Radius: concentric scale; panels use `--kp-radius-panel` (never full-pill menus/dialogs).
20
+ - Glass is a global material — tint, blur, saturation, refraction edge, opaque fallback.
21
+
22
+ ## Never
23
+
24
+ - No purple/lila defaults, neon glow, pure black, Inter, emoji, or generic centered heroes.
25
+ - Never `transition: all` — list exact properties.
26
+ - Never `h-screen` for full-height sections — use `min-h-[100dvh]`.
27
+ - No per-component `glass` prop; material is global.
28
+ - Do not invent unsupported light/dark combinations for a pack.
29
+ - Do not put Space Grotesk in UI chrome, forms, or dense product copy.
30
+
31
+ ## How to apply
32
+
33
+ 1. Set `data-theme="tide"` and `data-mode="{light|dark}"` on a root element (or import the generated `@theme` CSS).
34
+ 2. Prefer semantic utilities / CSS variables (`bg-background`, `text-foreground`, `bg-accent`, `border-border`, `--kp-*`).
35
+ 3. Respect reduced motion — disable springs/shimmers when `prefers-reduced-motion: reduce`.
36
+ 4. Keep glass as a global material toggle; do not add per-component glass props.
37
+
38
+ ## Color tokens (primary mode: light)
39
+
40
+ | Token | Role | Value |
41
+ |---|---|---|
42
+ | `--kp-background` / `--color-background` | Page and app canvas | `oklch(0.97 0.01 220)` |
43
+ | `--kp-foreground` / `--color-foreground` | Primary text and icons | `oklch(0.24 0.03 230)` |
44
+ | `--kp-surface` / `--color-surface` | Cards, panels, and elevated chrome | `oklch(0.995 0.004 220)` |
45
+ | `--kp-surface-raised` / `--color-surface-raised` | Overlays and nested elevation | `oklch(1 0 0)` |
46
+ | `--kp-muted` / `--color-muted` | Subtle fills and disabled wells | `oklch(0.93 0.015 220)` |
47
+ | `--kp-muted-foreground` / `--color-muted-foreground` | Secondary text and captions | `oklch(0.48 0.03 230)` |
48
+ | `--kp-accent` / `--color-accent` | Primary actions and focus accents | `oklch(0.52 0.07 210)` |
49
+ | `--kp-accent-foreground` / `--color-accent-foreground` | Text/icons on accent | `oklch(0.98 0.01 210)` |
50
+ | `--kp-border` / `--color-border` | Separators and control outlines | `oklch(0.35 0.03 230 / 14%)` |
51
+ | `--kp-ring` / `--color-ring` | Focus ring | `oklch(0.58 0.08 210)` |
52
+ | `--kp-danger` / `--color-danger` | Destructive and error states | `oklch(0.56 0.17 27)` |
53
+ | `--kp-danger-foreground` / `--color-danger-foreground` | danger-foreground | `oklch(0.985 0.01 27)` |
54
+ | `--kp-danger-subtle` / `--color-danger-subtle` | danger-subtle | `oklch(0.94 0.035 27)` |
55
+ | `--kp-danger-border` / `--color-danger-border` | danger-border | `oklch(0.56 0.12 27 / 40%)` |
56
+ | `--kp-success` / `--color-success` | success | `oklch(0.55 0.15 165)` |
57
+ | `--kp-success-foreground` / `--color-success-foreground` | success-foreground | `oklch(0.985 0.01 165)` |
58
+ | `--kp-success-subtle` / `--color-success-subtle` | success-subtle | `oklch(0.94 0.035 165)` |
59
+ | `--kp-success-border` / `--color-success-border` | success-border | `oklch(0.55 0.12 165 / 40%)` |
60
+ | `--kp-warning` / `--color-warning` | warning | `oklch(0.75 0.14 75)` |
61
+ | `--kp-warning-foreground` / `--color-warning-foreground` | warning-foreground | `oklch(0.25 0.05 75)` |
62
+ | `--kp-warning-subtle` / `--color-warning-subtle` | warning-subtle | `oklch(0.94 0.04 75)` |
63
+ | `--kp-warning-border` / `--color-warning-border` | warning-border | `oklch(0.72 0.12 75 / 40%)` |
64
+ | `--kp-info` / `--color-info` | info | `oklch(0.52 0.11 230)` |
65
+ | `--kp-info-foreground` / `--color-info-foreground` | info-foreground | `oklch(0.985 0.01 230)` |
66
+ | `--kp-info-subtle` / `--color-info-subtle` | info-subtle | `oklch(0.94 0.03 230)` |
67
+ | `--kp-info-border` / `--color-info-border` | info-border | `oklch(0.52 0.09 230 / 40%)` |
68
+ | `--kp-glass-tint` / `--color-glass-tint` | Tinted frosted glass material | `oklch(0.72 0.08 210 / 28%)` |
69
+
70
+ ## Structure
71
+
72
+ - `--kp-radius-sm`: `0.45rem`
73
+ - `--kp-radius-md`: `0.7rem`
74
+ - `--kp-radius-lg`: `0.95rem`
75
+ - `--kp-radius-panel`: `0.95rem`
76
+ - `--kp-density`: `1`
77
+ - `--kp-motion-duration`: `240ms`
78
+ - `--kp-motion-stiffness`: `380`
79
+ - `--kp-motion-damping`: `30`
80
+
81
+ ## Typography
82
+
83
+ - **Sans:** IBM Plex Sans — UI and body
84
+ - **Mono:** IBM Plex Mono — labels, code, metrics (`tabular-nums`)
85
+ - **Display:** Space Grotesk — hero H1 / brand wordmark ≥18px only
86
+
87
+ ## Export companions
88
+
89
+ - `DESIGN.md` — full design brief
90
+ - `tokens.dtcg.json` — DTCG (`$value` / `$type`) with light/dark modes
91
+ - `theme.css` — Tailwind v4 `@theme` block
92
+
93
+ When unsure, re-read `DESIGN.md` for this pack and keep accents within the
94
+ curated ramp — do not invent a new hue family.
@@ -0,0 +1,67 @@
1
+ /* tide — Tailwind v4 @theme */
2
+ @theme {
3
+ --color-background: oklch(0.97 0.01 220);
4
+ --color-foreground: oklch(0.24 0.03 230);
5
+ --color-surface: oklch(0.995 0.004 220);
6
+ --color-surface-raised: oklch(1 0 0);
7
+ --color-muted: oklch(0.93 0.015 220);
8
+ --color-muted-foreground: oklch(0.48 0.03 230);
9
+ --color-accent: oklch(0.52 0.07 210);
10
+ --color-accent-foreground: oklch(0.98 0.01 210);
11
+ --color-border: oklch(0.35 0.03 230 / 14%);
12
+ --color-ring: oklch(0.58 0.08 210);
13
+ --color-danger: oklch(0.56 0.17 27);
14
+ --color-danger-foreground: oklch(0.985 0.01 27);
15
+ --color-danger-subtle: oklch(0.94 0.035 27);
16
+ --color-danger-border: oklch(0.56 0.12 27 / 40%);
17
+ --color-success: oklch(0.55 0.15 165);
18
+ --color-success-foreground: oklch(0.985 0.01 165);
19
+ --color-success-subtle: oklch(0.94 0.035 165);
20
+ --color-success-border: oklch(0.55 0.12 165 / 40%);
21
+ --color-warning: oklch(0.75 0.14 75);
22
+ --color-warning-foreground: oklch(0.25 0.05 75);
23
+ --color-warning-subtle: oklch(0.94 0.04 75);
24
+ --color-warning-border: oklch(0.72 0.12 75 / 40%);
25
+ --color-info: oklch(0.52 0.11 230);
26
+ --color-info-foreground: oklch(0.985 0.01 230);
27
+ --color-info-subtle: oklch(0.94 0.03 230);
28
+ --color-info-border: oklch(0.52 0.09 230 / 40%);
29
+ --color-glass-tint: oklch(0.72 0.08 210 / 28%);
30
+ --radius-sm: 0.45rem;
31
+ --radius-md: 0.7rem;
32
+ --radius-lg: 0.95rem;
33
+ --radius-panel: 0.95rem;
34
+ --font-sans: var(--font-plex-sans, "IBM Plex Sans"), ui-sans-serif, system-ui, sans-serif;
35
+ --font-mono: var(--font-plex-mono, "IBM Plex Mono"), ui-monospace, monospace;
36
+ --font-display: var(--font-space-grotesk, "Space Grotesk"), var(--font-sans);
37
+ }
38
+
39
+ [data-theme="tide"][data-mode="dark"] {
40
+ --color-background: oklch(0.18 0.02 230);
41
+ --color-foreground: oklch(0.92 0.015 220);
42
+ --color-surface: oklch(0.22 0.025 230);
43
+ --color-surface-raised: oklch(0.26 0.028 230);
44
+ --color-muted: oklch(0.28 0.025 230);
45
+ --color-muted-foreground: oklch(0.72 0.025 220);
46
+ --color-accent: oklch(0.72 0.08 205);
47
+ --color-accent-foreground: oklch(0.985 0.01 220);
48
+ --color-border: oklch(0.86 0.02 220 / 13%);
49
+ --color-ring: oklch(0.72 0.08 205);
50
+ --color-danger: oklch(0.68 0.16 27);
51
+ --color-danger-foreground: oklch(0.985 0.01 27);
52
+ --color-danger-subtle: oklch(0.32 0.05 27);
53
+ --color-danger-border: oklch(0.72 0.1 27 / 40%);
54
+ --color-success: oklch(0.71 0.14 165);
55
+ --color-success-foreground: oklch(0.985 0.01 165);
56
+ --color-success-subtle: oklch(0.32 0.045 165);
57
+ --color-success-border: oklch(0.72 0.1 165 / 40%);
58
+ --color-warning: oklch(0.78 0.12 75);
59
+ --color-warning-foreground: oklch(0.22 0.04 75);
60
+ --color-warning-subtle: oklch(0.34 0.04 75);
61
+ --color-warning-border: oklch(0.78 0.1 75 / 40%);
62
+ --color-info: oklch(0.72 0.1 230);
63
+ --color-info-foreground: oklch(0.985 0.01 230);
64
+ --color-info-subtle: oklch(0.32 0.035 230);
65
+ --color-info-border: oklch(0.72 0.08 230 / 40%);
66
+ --color-glass-tint: oklch(0.6 0.09 205 / 24%);
67
+ }
@@ -0,0 +1,348 @@
1
+ {
2
+ "$description": "Hewn tide theme — DTCG design tokens (light / dark).",
3
+ "meta": {
4
+ "packId": {
5
+ "$type": "string",
6
+ "$value": "tide"
7
+ },
8
+ "basePackId": {
9
+ "$type": "string",
10
+ "$value": "tide"
11
+ },
12
+ "supportedModes": {
13
+ "$type": "string",
14
+ "$value": "light,dark"
15
+ },
16
+ "colorScheme": {
17
+ "$type": "string",
18
+ "$value": "light"
19
+ }
20
+ },
21
+ "typography": {
22
+ "fontFamily": {
23
+ "sans": {
24
+ "$type": "fontFamily",
25
+ "$value": [
26
+ "IBM Plex Sans",
27
+ "ui-sans-serif",
28
+ "system-ui",
29
+ "sans-serif"
30
+ ]
31
+ },
32
+ "mono": {
33
+ "$type": "fontFamily",
34
+ "$value": [
35
+ "IBM Plex Mono",
36
+ "ui-monospace",
37
+ "monospace"
38
+ ]
39
+ },
40
+ "display": {
41
+ "$type": "fontFamily",
42
+ "$value": [
43
+ "Space Grotesk",
44
+ "IBM Plex Sans",
45
+ "sans-serif"
46
+ ]
47
+ }
48
+ }
49
+ },
50
+ "modes": {
51
+ "light": {
52
+ "color": {
53
+ "background": {
54
+ "$type": "color",
55
+ "$value": "oklch(0.97 0.01 220)"
56
+ },
57
+ "foreground": {
58
+ "$type": "color",
59
+ "$value": "oklch(0.24 0.03 230)"
60
+ },
61
+ "surface": {
62
+ "$type": "color",
63
+ "$value": "oklch(0.995 0.004 220)"
64
+ },
65
+ "surface-raised": {
66
+ "$type": "color",
67
+ "$value": "oklch(1 0 0)"
68
+ },
69
+ "muted": {
70
+ "$type": "color",
71
+ "$value": "oklch(0.93 0.015 220)"
72
+ },
73
+ "muted-foreground": {
74
+ "$type": "color",
75
+ "$value": "oklch(0.48 0.03 230)"
76
+ },
77
+ "accent": {
78
+ "$type": "color",
79
+ "$value": "oklch(0.52 0.07 210)"
80
+ },
81
+ "accent-foreground": {
82
+ "$type": "color",
83
+ "$value": "oklch(0.98 0.01 210)"
84
+ },
85
+ "border": {
86
+ "$type": "color",
87
+ "$value": "oklch(0.35 0.03 230 / 14%)"
88
+ },
89
+ "ring": {
90
+ "$type": "color",
91
+ "$value": "oklch(0.58 0.08 210)"
92
+ },
93
+ "danger": {
94
+ "$type": "color",
95
+ "$value": "oklch(0.56 0.17 27)"
96
+ },
97
+ "danger-foreground": {
98
+ "$type": "color",
99
+ "$value": "oklch(0.985 0.01 27)"
100
+ },
101
+ "danger-subtle": {
102
+ "$type": "color",
103
+ "$value": "oklch(0.94 0.035 27)"
104
+ },
105
+ "danger-border": {
106
+ "$type": "color",
107
+ "$value": "oklch(0.56 0.12 27 / 40%)"
108
+ },
109
+ "success": {
110
+ "$type": "color",
111
+ "$value": "oklch(0.55 0.15 165)"
112
+ },
113
+ "success-foreground": {
114
+ "$type": "color",
115
+ "$value": "oklch(0.985 0.01 165)"
116
+ },
117
+ "success-subtle": {
118
+ "$type": "color",
119
+ "$value": "oklch(0.94 0.035 165)"
120
+ },
121
+ "success-border": {
122
+ "$type": "color",
123
+ "$value": "oklch(0.55 0.12 165 / 40%)"
124
+ },
125
+ "warning": {
126
+ "$type": "color",
127
+ "$value": "oklch(0.75 0.14 75)"
128
+ },
129
+ "warning-foreground": {
130
+ "$type": "color",
131
+ "$value": "oklch(0.25 0.05 75)"
132
+ },
133
+ "warning-subtle": {
134
+ "$type": "color",
135
+ "$value": "oklch(0.94 0.04 75)"
136
+ },
137
+ "warning-border": {
138
+ "$type": "color",
139
+ "$value": "oklch(0.72 0.12 75 / 40%)"
140
+ },
141
+ "info": {
142
+ "$type": "color",
143
+ "$value": "oklch(0.52 0.11 230)"
144
+ },
145
+ "info-foreground": {
146
+ "$type": "color",
147
+ "$value": "oklch(0.985 0.01 230)"
148
+ },
149
+ "info-subtle": {
150
+ "$type": "color",
151
+ "$value": "oklch(0.94 0.03 230)"
152
+ },
153
+ "info-border": {
154
+ "$type": "color",
155
+ "$value": "oklch(0.52 0.09 230 / 40%)"
156
+ },
157
+ "glass-tint": {
158
+ "$type": "color",
159
+ "$value": "oklch(0.72 0.08 210 / 28%)"
160
+ }
161
+ },
162
+ "radius": {
163
+ "sm": {
164
+ "$type": "dimension",
165
+ "$value": "0.45rem"
166
+ },
167
+ "md": {
168
+ "$type": "dimension",
169
+ "$value": "0.7rem"
170
+ },
171
+ "lg": {
172
+ "$type": "dimension",
173
+ "$value": "0.95rem"
174
+ },
175
+ "panel": {
176
+ "$type": "dimension",
177
+ "$value": "0.95rem"
178
+ }
179
+ },
180
+ "motion": {
181
+ "duration": {
182
+ "$type": "duration",
183
+ "$value": "240ms"
184
+ },
185
+ "stiffness": {
186
+ "$type": "number",
187
+ "$value": 380
188
+ },
189
+ "damping": {
190
+ "$type": "number",
191
+ "$value": 30
192
+ }
193
+ },
194
+ "density": {
195
+ "$type": "number",
196
+ "$value": 1
197
+ }
198
+ },
199
+ "dark": {
200
+ "color": {
201
+ "background": {
202
+ "$type": "color",
203
+ "$value": "oklch(0.18 0.02 230)"
204
+ },
205
+ "foreground": {
206
+ "$type": "color",
207
+ "$value": "oklch(0.92 0.015 220)"
208
+ },
209
+ "surface": {
210
+ "$type": "color",
211
+ "$value": "oklch(0.22 0.025 230)"
212
+ },
213
+ "surface-raised": {
214
+ "$type": "color",
215
+ "$value": "oklch(0.26 0.028 230)"
216
+ },
217
+ "muted": {
218
+ "$type": "color",
219
+ "$value": "oklch(0.28 0.025 230)"
220
+ },
221
+ "muted-foreground": {
222
+ "$type": "color",
223
+ "$value": "oklch(0.72 0.025 220)"
224
+ },
225
+ "accent": {
226
+ "$type": "color",
227
+ "$value": "oklch(0.72 0.08 205)"
228
+ },
229
+ "accent-foreground": {
230
+ "$type": "color",
231
+ "$value": "oklch(0.985 0.01 220)"
232
+ },
233
+ "border": {
234
+ "$type": "color",
235
+ "$value": "oklch(0.86 0.02 220 / 13%)"
236
+ },
237
+ "ring": {
238
+ "$type": "color",
239
+ "$value": "oklch(0.72 0.08 205)"
240
+ },
241
+ "danger": {
242
+ "$type": "color",
243
+ "$value": "oklch(0.68 0.16 27)"
244
+ },
245
+ "danger-foreground": {
246
+ "$type": "color",
247
+ "$value": "oklch(0.985 0.01 27)"
248
+ },
249
+ "danger-subtle": {
250
+ "$type": "color",
251
+ "$value": "oklch(0.32 0.05 27)"
252
+ },
253
+ "danger-border": {
254
+ "$type": "color",
255
+ "$value": "oklch(0.72 0.1 27 / 40%)"
256
+ },
257
+ "success": {
258
+ "$type": "color",
259
+ "$value": "oklch(0.71 0.14 165)"
260
+ },
261
+ "success-foreground": {
262
+ "$type": "color",
263
+ "$value": "oklch(0.985 0.01 165)"
264
+ },
265
+ "success-subtle": {
266
+ "$type": "color",
267
+ "$value": "oklch(0.32 0.045 165)"
268
+ },
269
+ "success-border": {
270
+ "$type": "color",
271
+ "$value": "oklch(0.72 0.1 165 / 40%)"
272
+ },
273
+ "warning": {
274
+ "$type": "color",
275
+ "$value": "oklch(0.78 0.12 75)"
276
+ },
277
+ "warning-foreground": {
278
+ "$type": "color",
279
+ "$value": "oklch(0.22 0.04 75)"
280
+ },
281
+ "warning-subtle": {
282
+ "$type": "color",
283
+ "$value": "oklch(0.34 0.04 75)"
284
+ },
285
+ "warning-border": {
286
+ "$type": "color",
287
+ "$value": "oklch(0.78 0.1 75 / 40%)"
288
+ },
289
+ "info": {
290
+ "$type": "color",
291
+ "$value": "oklch(0.72 0.1 230)"
292
+ },
293
+ "info-foreground": {
294
+ "$type": "color",
295
+ "$value": "oklch(0.985 0.01 230)"
296
+ },
297
+ "info-subtle": {
298
+ "$type": "color",
299
+ "$value": "oklch(0.32 0.035 230)"
300
+ },
301
+ "info-border": {
302
+ "$type": "color",
303
+ "$value": "oklch(0.72 0.08 230 / 40%)"
304
+ },
305
+ "glass-tint": {
306
+ "$type": "color",
307
+ "$value": "oklch(0.6 0.09 205 / 24%)"
308
+ }
309
+ },
310
+ "radius": {
311
+ "sm": {
312
+ "$type": "dimension",
313
+ "$value": "0.45rem"
314
+ },
315
+ "md": {
316
+ "$type": "dimension",
317
+ "$value": "0.7rem"
318
+ },
319
+ "lg": {
320
+ "$type": "dimension",
321
+ "$value": "0.95rem"
322
+ },
323
+ "panel": {
324
+ "$type": "dimension",
325
+ "$value": "0.95rem"
326
+ }
327
+ },
328
+ "motion": {
329
+ "duration": {
330
+ "$type": "duration",
331
+ "$value": "240ms"
332
+ },
333
+ "stiffness": {
334
+ "$type": "number",
335
+ "$value": 380
336
+ },
337
+ "damping": {
338
+ "$type": "number",
339
+ "$value": 30
340
+ }
341
+ },
342
+ "density": {
343
+ "$type": "number",
344
+ "$value": 1
345
+ }
346
+ }
347
+ }
348
+ }
@@ -0,0 +1,16 @@
1
+ # Hewn Figma kit
2
+
3
+ Generated from curated theme packs — do not edit by hand.
4
+
5
+ ## Files
6
+
7
+ - `hewn.tokens.json` — Tokens Studio document (six packs × modes + structural)
8
+ - `sticker-sheet.svg` — surfaces / button / input reference sheet
9
+
10
+ ## Import
11
+
12
+ 1. Install [Tokens Studio](https://tokens.studio/) in Figma
13
+ 2. Tokens → Import → choose `hewn.tokens.json`
14
+ 3. Create variables from themes, then style the sticker sheet components
15
+
16
+ Regenerate: `pnpm --filter @hewnui/themes generate`