@nibapp/ui 0.0.0-stage → 0.1.0

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 (292) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE +21 -0
  3. package/README.md +124 -2
  4. package/TRADEMARKS.md +22 -0
  5. package/dist/_bundled/money/index.d.ts +98 -0
  6. package/dist/_bundled/money/index.js +152 -0
  7. package/dist/_bundled/tokens/index.d.ts +2 -0
  8. package/dist/_bundled/tokens/index.js +2 -0
  9. package/dist/_bundled/tokens/palette.gen.d.ts +51 -0
  10. package/dist/_bundled/tokens/palette.gen.js +206 -0
  11. package/dist/_bundled/tokens/spec.d.ts +291 -0
  12. package/dist/_bundled/tokens/spec.js +221 -0
  13. package/dist/components/accordion.d.ts +27 -0
  14. package/dist/components/accordion.js +66 -0
  15. package/dist/components/alert-dialog.d.ts +59 -0
  16. package/dist/components/alert-dialog.js +82 -0
  17. package/dist/components/alert.d.ts +141 -0
  18. package/dist/components/alert.js +55 -0
  19. package/dist/components/appear.d.ts +21 -0
  20. package/dist/components/appear.js +42 -0
  21. package/dist/components/avatar.d.ts +196 -0
  22. package/dist/components/avatar.js +135 -0
  23. package/dist/components/badge.d.ts +183 -0
  24. package/dist/components/badge.js +68 -0
  25. package/dist/components/block-stack.d.ts +33 -0
  26. package/dist/components/block-stack.js +197 -0
  27. package/dist/components/button.d.ts +327 -0
  28. package/dist/components/button.js +101 -0
  29. package/dist/components/card.d.ts +131 -0
  30. package/dist/components/card.js +100 -0
  31. package/dist/components/checkbox.d.ts +34 -0
  32. package/dist/components/checkbox.js +37 -0
  33. package/dist/components/choice-row.d.ts +104 -0
  34. package/dist/components/choice-row.js +56 -0
  35. package/dist/components/clamped-text.d.ts +17 -0
  36. package/dist/components/clamped-text.js +47 -0
  37. package/dist/components/code-block.d.ts +48 -0
  38. package/dist/components/code-block.js +124 -0
  39. package/dist/components/code-input.d.ts +49 -0
  40. package/dist/components/code-input.js +59 -0
  41. package/dist/components/combobox.d.ts +194 -0
  42. package/dist/components/combobox.js +176 -0
  43. package/dist/components/command-palette.d.ts +57 -0
  44. package/dist/components/command-palette.js +83 -0
  45. package/dist/components/context-menu.d.ts +24 -0
  46. package/dist/components/context-menu.js +30 -0
  47. package/dist/components/copy-button.d.ts +9 -0
  48. package/dist/components/copy-button.js +20 -0
  49. package/dist/components/copy-command.d.ts +18 -0
  50. package/dist/components/copy-command.js +19 -0
  51. package/dist/components/data-table.d.ts +240 -0
  52. package/dist/components/data-table.js +63 -0
  53. package/dist/components/dialog.d.ts +80 -0
  54. package/dist/components/dialog.js +85 -0
  55. package/dist/components/diff-lines.d.ts +20 -0
  56. package/dist/components/diff-lines.js +10 -0
  57. package/dist/components/diff-view.d.ts +128 -0
  58. package/dist/components/diff-view.js +675 -0
  59. package/dist/components/disclosure.d.ts +33 -0
  60. package/dist/components/disclosure.js +51 -0
  61. package/dist/components/drawn-check.d.ts +8 -0
  62. package/dist/components/drawn-check.js +16 -0
  63. package/dist/components/edge-resizer.d.ts +26 -0
  64. package/dist/components/edge-resizer.js +53 -0
  65. package/dist/components/empty-state.d.ts +112 -0
  66. package/dist/components/empty-state.js +56 -0
  67. package/dist/components/expand-toggle.d.ts +19 -0
  68. package/dist/components/expand-toggle.js +10 -0
  69. package/dist/components/field.d.ts +48 -0
  70. package/dist/components/field.js +60 -0
  71. package/dist/components/filter-chip.d.ts +47 -0
  72. package/dist/components/filter-chip.js +33 -0
  73. package/dist/components/group.d.ts +10 -0
  74. package/dist/components/group.js +9 -0
  75. package/dist/components/icon-text.d.ts +11 -0
  76. package/dist/components/icon-text.js +10 -0
  77. package/dist/components/image-sources.d.ts +57 -0
  78. package/dist/components/image-sources.js +58 -0
  79. package/dist/components/image-thumbnail.d.ts +34 -0
  80. package/dist/components/image-thumbnail.js +58 -0
  81. package/dist/components/image-viewer.d.ts +60 -0
  82. package/dist/components/image-viewer.js +411 -0
  83. package/dist/components/inline-edit.d.ts +22 -0
  84. package/dist/components/inline-edit.js +51 -0
  85. package/dist/components/input.d.ts +155 -0
  86. package/dist/components/input.js +109 -0
  87. package/dist/components/item-label.d.ts +11 -0
  88. package/dist/components/item-label.js +5 -0
  89. package/dist/components/item-row.d.ts +23 -0
  90. package/dist/components/item-row.js +19 -0
  91. package/dist/components/kbd.d.ts +55 -0
  92. package/dist/components/kbd.js +86 -0
  93. package/dist/components/link-policy.d.ts +24 -0
  94. package/dist/components/link-policy.js +32 -0
  95. package/dist/components/linked-text.d.ts +15 -0
  96. package/dist/components/linked-text.js +48 -0
  97. package/dist/components/loading-region.d.ts +18 -0
  98. package/dist/components/loading-region.js +17 -0
  99. package/dist/components/markdown.d.ts +34 -0
  100. package/dist/components/markdown.js +307 -0
  101. package/dist/components/menu.d.ts +132 -0
  102. package/dist/components/menu.js +102 -0
  103. package/dist/components/message-bubble.d.ts +57 -0
  104. package/dist/components/message-bubble.js +28 -0
  105. package/dist/components/meta-line.d.ts +28 -0
  106. package/dist/components/meta-line.js +36 -0
  107. package/dist/components/money-input.d.ts +23 -0
  108. package/dist/components/money-input.js +34 -0
  109. package/dist/components/native-select.d.ts +120 -0
  110. package/dist/components/native-select.js +85 -0
  111. package/dist/components/page-trail.d.ts +30 -0
  112. package/dist/components/page-trail.js +43 -0
  113. package/dist/components/page.d.ts +80 -0
  114. package/dist/components/page.js +60 -0
  115. package/dist/components/path-text.d.ts +8 -0
  116. package/dist/components/path-text.js +11 -0
  117. package/dist/components/percent-input.d.ts +20 -0
  118. package/dist/components/percent-input.js +32 -0
  119. package/dist/components/popover.d.ts +52 -0
  120. package/dist/components/popover.js +36 -0
  121. package/dist/components/progress.d.ts +389 -0
  122. package/dist/components/progress.js +142 -0
  123. package/dist/components/radio.d.ts +65 -0
  124. package/dist/components/radio.js +54 -0
  125. package/dist/components/remote-image-gate.d.ts +34 -0
  126. package/dist/components/remote-image-gate.js +60 -0
  127. package/dist/components/resizable.d.ts +23 -0
  128. package/dist/components/resizable.js +30 -0
  129. package/dist/components/rolling-number.d.ts +13 -0
  130. package/dist/components/rolling-number.js +69 -0
  131. package/dist/components/scroll-area.d.ts +17 -0
  132. package/dist/components/scroll-area.js +25 -0
  133. package/dist/components/section-label.d.ts +10 -0
  134. package/dist/components/section-label.js +21 -0
  135. package/dist/components/section-nav.d.ts +22 -0
  136. package/dist/components/section-nav.js +80 -0
  137. package/dist/components/segmented-control.d.ts +125 -0
  138. package/dist/components/segmented-control.js +101 -0
  139. package/dist/components/select.d.ts +120 -0
  140. package/dist/components/select.js +89 -0
  141. package/dist/components/separator.d.ts +10 -0
  142. package/dist/components/separator.js +12 -0
  143. package/dist/components/sheet.d.ts +101 -0
  144. package/dist/components/sheet.js +129 -0
  145. package/dist/components/shortcut-recorder.d.ts +31 -0
  146. package/dist/components/shortcut-recorder.js +67 -0
  147. package/dist/components/skeleton.d.ts +31 -0
  148. package/dist/components/skeleton.js +33 -0
  149. package/dist/components/slider.d.ts +138 -0
  150. package/dist/components/slider.js +98 -0
  151. package/dist/components/spinner.d.ts +37 -0
  152. package/dist/components/spinner.js +16 -0
  153. package/dist/components/switch.d.ts +59 -0
  154. package/dist/components/switch.js +56 -0
  155. package/dist/components/tab-strip.d.ts +29 -0
  156. package/dist/components/tab-strip.js +42 -0
  157. package/dist/components/tabs.d.ts +13 -0
  158. package/dist/components/tabs.js +68 -0
  159. package/dist/components/text-link.d.ts +54 -0
  160. package/dist/components/text-link.js +38 -0
  161. package/dist/components/textarea.d.ts +75 -0
  162. package/dist/components/textarea.js +90 -0
  163. package/dist/components/toast.d.ts +74 -0
  164. package/dist/components/toast.js +128 -0
  165. package/dist/components/tooltip.d.ts +50 -0
  166. package/dist/components/tooltip.js +46 -0
  167. package/dist/components/truncated-text.d.ts +15 -0
  168. package/dist/components/truncated-text.js +19 -0
  169. package/dist/i18n/defaults.d.ts +7 -0
  170. package/dist/i18n/defaults.js +7 -0
  171. package/dist/i18n/format.d.ts +84 -0
  172. package/dist/i18n/format.js +169 -0
  173. package/dist/i18n/index.d.ts +6 -0
  174. package/dist/i18n/index.js +8 -0
  175. package/dist/i18n/locales/ru-formatters.d.ts +3 -0
  176. package/dist/i18n/locales/ru-formatters.js +22 -0
  177. package/dist/i18n/locales/ru.d.ts +5 -0
  178. package/dist/i18n/locales/ru.js +185 -0
  179. package/dist/i18n/plural.d.ts +20 -0
  180. package/dist/i18n/plural.js +26 -0
  181. package/dist/i18n/provider.d.ts +36 -0
  182. package/dist/i18n/provider.js +39 -0
  183. package/dist/i18n/rich.d.ts +14 -0
  184. package/dist/i18n/rich.js +44 -0
  185. package/dist/i18n/ru-plural.d.ts +3 -0
  186. package/dist/i18n/ru-plural.js +4 -0
  187. package/dist/i18n/strings/alert-dialog.d.ts +5 -0
  188. package/dist/i18n/strings/alert-dialog.js +5 -0
  189. package/dist/i18n/strings/block-stack.d.ts +17 -0
  190. package/dist/i18n/strings/block-stack.js +11 -0
  191. package/dist/i18n/strings/code-block.d.ts +18 -0
  192. package/dist/i18n/strings/code-block.js +13 -0
  193. package/dist/i18n/strings/combobox.d.ts +12 -0
  194. package/dist/i18n/strings/combobox.js +10 -0
  195. package/dist/i18n/strings/command-palette.d.ts +17 -0
  196. package/dist/i18n/strings/command-palette.js +11 -0
  197. package/dist/i18n/strings/diff-view.d.ts +92 -0
  198. package/dist/i18n/strings/diff-view.js +68 -0
  199. package/dist/i18n/strings/image-viewer.d.ts +43 -0
  200. package/dist/i18n/strings/image-viewer.js +32 -0
  201. package/dist/i18n/strings/index.d.ts +314 -0
  202. package/dist/i18n/strings/index.js +43 -0
  203. package/dist/i18n/strings/kbd.d.ts +42 -0
  204. package/dist/i18n/strings/kbd.js +39 -0
  205. package/dist/i18n/strings/markdown.d.ts +23 -0
  206. package/dist/i18n/strings/markdown.js +18 -0
  207. package/dist/i18n/strings/money.d.ts +7 -0
  208. package/dist/i18n/strings/money.js +5 -0
  209. package/dist/i18n/strings/primitives.d.ts +25 -0
  210. package/dist/i18n/strings/primitives.js +18 -0
  211. package/dist/i18n/strings/progress.d.ts +4 -0
  212. package/dist/i18n/strings/progress.js +4 -0
  213. package/dist/i18n/strings/shortcut-recorder.d.ts +15 -0
  214. package/dist/i18n/strings/shortcut-recorder.js +11 -0
  215. package/dist/i18n/strings/time.d.ts +41 -0
  216. package/dist/i18n/strings/time.js +20 -0
  217. package/dist/i18n/strings/toast.d.ts +6 -0
  218. package/dist/i18n/strings/toast.js +6 -0
  219. package/dist/i18n/time-zones.d.ts +20 -0
  220. package/dist/i18n/time-zones.js +64 -0
  221. package/dist/index.d.ts +84 -0
  222. package/dist/index.js +88 -0
  223. package/dist/lib/ansi.d.ts +55 -0
  224. package/dist/lib/ansi.js +438 -0
  225. package/dist/lib/clock.d.ts +32 -0
  226. package/dist/lib/clock.js +106 -0
  227. package/dist/lib/cn.d.ts +12 -0
  228. package/dist/lib/cn.js +28 -0
  229. package/dist/lib/control-props.d.ts +21 -0
  230. package/dist/lib/control-props.js +14 -0
  231. package/dist/lib/direction.d.ts +13 -0
  232. package/dist/lib/direction.js +25 -0
  233. package/dist/lib/image-size.d.ts +12 -0
  234. package/dist/lib/image-size.js +66 -0
  235. package/dist/lib/keycaps.d.ts +21 -0
  236. package/dist/lib/keycaps.js +62 -0
  237. package/dist/lib/keyed.d.ts +9 -0
  238. package/dist/lib/keyed.js +14 -0
  239. package/dist/lib/keys.d.ts +49 -0
  240. package/dist/lib/keys.js +159 -0
  241. package/dist/lib/kit-motion.d.ts +9 -0
  242. package/dist/lib/kit-motion.js +12 -0
  243. package/dist/lib/link-check-dialog.d.ts +11 -0
  244. package/dist/lib/link-check-dialog.js +18 -0
  245. package/dist/lib/motion-features.d.ts +1 -0
  246. package/dist/lib/motion-features.js +4 -0
  247. package/dist/lib/motion-provider.d.ts +5 -0
  248. package/dist/lib/motion-provider.js +8 -0
  249. package/dist/lib/motion.d.ts +39 -0
  250. package/dist/lib/motion.js +49 -0
  251. package/dist/lib/number-format.d.ts +114 -0
  252. package/dist/lib/number-format.js +313 -0
  253. package/dist/lib/patch.d.ts +72 -0
  254. package/dist/lib/patch.js +344 -0
  255. package/dist/lib/path.d.ts +34 -0
  256. package/dist/lib/path.js +85 -0
  257. package/dist/lib/search.d.ts +10 -0
  258. package/dist/lib/search.js +20 -0
  259. package/dist/lib/shiki-themes.d.ts +7 -0
  260. package/dist/lib/shiki-themes.js +115 -0
  261. package/dist/lib/shiki.d.ts +101 -0
  262. package/dist/lib/shiki.js +353 -0
  263. package/dist/lib/shortcut-context.d.ts +23 -0
  264. package/dist/lib/shortcut-context.js +29 -0
  265. package/dist/lib/text.d.ts +56 -0
  266. package/dist/lib/text.js +149 -0
  267. package/dist/lib/theme-scope.d.ts +18 -0
  268. package/dist/lib/theme-scope.js +24 -0
  269. package/dist/lib/theme.d.ts +40 -0
  270. package/dist/lib/theme.js +96 -0
  271. package/dist/lib/tree-keys.d.ts +72 -0
  272. package/dist/lib/tree-keys.js +126 -0
  273. package/dist/lib/url.d.ts +17 -0
  274. package/dist/lib/url.js +38 -0
  275. package/dist/lib/use-copy-to-clipboard.d.ts +13 -0
  276. package/dist/lib/use-copy-to-clipboard.js +40 -0
  277. package/dist/lib/use-delayed-loading.d.ts +11 -0
  278. package/dist/lib/use-delayed-loading.js +31 -0
  279. package/dist/lib/use-file-picker.d.ts +26 -0
  280. package/dist/lib/use-file-picker.js +43 -0
  281. package/dist/lib/use-hydrated.d.ts +6 -0
  282. package/dist/lib/use-hydrated.js +11 -0
  283. package/dist/lib/use-latest.d.ts +12 -0
  284. package/dist/lib/use-latest.js +22 -0
  285. package/dist/lib/use-resolved-theme.d.ts +12 -0
  286. package/dist/lib/use-resolved-theme.js +25 -0
  287. package/dist/styles/base.css +393 -0
  288. package/dist/styles/code.css +35 -0
  289. package/dist/styles/fonts.css +12 -0
  290. package/dist/styles/index.css +13 -0
  291. package/dist/styles/tokens.gen.css +494 -0
  292. package/package.json +208 -4
@@ -0,0 +1,206 @@
1
+ export const palette = {
2
+ light: {
3
+ gray: [
4
+ "#fdfcf9",
5
+ "#f9f8f5",
6
+ "#f4f2ee",
7
+ "#eeece8",
8
+ "#e9e6e1",
9
+ "#e1ded9",
10
+ "#d5d3cd",
11
+ "#c2bfb9",
12
+ "#82807b",
13
+ "#676460",
14
+ "#514e4a",
15
+ "#1b1a17"
16
+ ],
17
+ blue: [
18
+ "#fafcff",
19
+ "#f4f8ff",
20
+ "#ebf3ff",
21
+ "#e2edff",
22
+ "#d9e8ff",
23
+ "#cde0ff",
24
+ "#bad4ff",
25
+ "#9bc0ff",
26
+ "#0169ff",
27
+ "#005de5",
28
+ "#125bd1",
29
+ "#001643"
30
+ ],
31
+ green: [
32
+ "#f9fefa",
33
+ "#f1fbf3",
34
+ "#e6f8e9",
35
+ "#daf5e0",
36
+ "#cef1d6",
37
+ "#c1ebca",
38
+ "#ade2ba",
39
+ "#8cd39f",
40
+ "#008743",
41
+ "#00773b",
42
+ "#097038",
43
+ "#00210c"
44
+ ],
45
+ amber: [
46
+ "#fffbf7",
47
+ "#fff7ed",
48
+ "#fef0de",
49
+ "#fee9d0",
50
+ "#fde2c1",
51
+ "#fad8b0",
52
+ "#f4cb98",
53
+ "#eab470",
54
+ "#f3a52b",
55
+ "#e29721",
56
+ "#905c00",
57
+ "#271600"
58
+ ],
59
+ red: [
60
+ "#fffbfb",
61
+ "#fff6f5",
62
+ "#ffeeec",
63
+ "#ffe6e3",
64
+ "#ffdeda",
65
+ "#ffd2ce",
66
+ "#ffc1bb",
67
+ "#ffa39b",
68
+ "#d2393a",
69
+ "#bf2d30",
70
+ "#ac3434",
71
+ "#370406"
72
+ ],
73
+ violet: [
74
+ "#fcfbff",
75
+ "#f8f7ff",
76
+ "#f3f0ff",
77
+ "#ede9ff",
78
+ "#e8e2ff",
79
+ "#e1d8ff",
80
+ "#d6caff",
81
+ "#c4b2fb",
82
+ "#8264c8",
83
+ "#7558b7",
84
+ "#6952a1",
85
+ "#1d1234"
86
+ ]
87
+ },
88
+ dark: {
89
+ gray: [
90
+ "#191917",
91
+ "#1f1e1c",
92
+ "#252422",
93
+ "#2c2b28",
94
+ "#32312e",
95
+ "#3b3936",
96
+ "#484643",
97
+ "#5e5c58",
98
+ "#767470",
99
+ "#a19f9a",
100
+ "#bfbdb9",
101
+ "#f1f0ed"
102
+ ],
103
+ blue: [
104
+ "#16191d",
105
+ "#191e27",
106
+ "#1b2535",
107
+ "#1d2b43",
108
+ "#1e3151",
109
+ "#213961",
110
+ "#27457a",
111
+ "#2f59a2",
112
+ "#4c8eff",
113
+ "#669eff",
114
+ "#8eb8ff",
115
+ "#e8f1ff"
116
+ ],
117
+ green: [
118
+ "#171a17",
119
+ "#1a201b",
120
+ "#1d281f",
121
+ "#1f2f23",
122
+ "#213727",
123
+ "#25412d",
124
+ "#2c5036",
125
+ "#366945",
126
+ "#36ac62",
127
+ "#4db972",
128
+ "#7dd596",
129
+ "#d2fddc"
130
+ ],
131
+ amber: [
132
+ "#1b1816",
133
+ "#221d18",
134
+ "#2b2319",
135
+ "#352819",
136
+ "#3e2e19",
137
+ "#4a351a",
138
+ "#5b411d",
139
+ "#785421",
140
+ "#faab35",
141
+ "#ffbe6a",
142
+ "#febc67",
143
+ "#ffedd8"
144
+ ],
145
+ red: [
146
+ "#1c1717",
147
+ "#251b1b",
148
+ "#301f1e",
149
+ "#3c2321",
150
+ "#482724",
151
+ "#552c29",
152
+ "#6a3531",
153
+ "#8c433e",
154
+ "#e9504d",
155
+ "#f6625e",
156
+ "#ff958d",
157
+ "#ffebe9"
158
+ ],
159
+ violet: [
160
+ "#19181b",
161
+ "#1e1d23",
162
+ "#25232e",
163
+ "#2c2839",
164
+ "#332d44",
165
+ "#3b3450",
166
+ "#494064",
167
+ "#5f5284",
168
+ "#9477dd",
169
+ "#a186e9",
170
+ "#c3afff",
171
+ "#f1edff"
172
+ ]
173
+ }
174
+ };
175
+ export const syntax = {
176
+ light: {
177
+ fg: "#1b1a17",
178
+ muted: "#514e4a",
179
+ comment: "#56534f",
180
+ keyword: "#5e4694",
181
+ string: "#00622f",
182
+ number: "#764a00",
183
+ fn: "#004cbd",
184
+ type: "#005c78",
185
+ tag: "#933333",
186
+ attribute: "#764a00",
187
+ regex: "#9e2629",
188
+ inserted: "#00622f",
189
+ deleted: "#9e2629"
190
+ },
191
+ dark: {
192
+ fg: "#e6e5e2",
193
+ muted: "#bfbdb9",
194
+ comment: "#bcbab4",
195
+ keyword: "#c2b2f2",
196
+ string: "#89d19c",
197
+ number: "#f3bc76",
198
+ fn: "#99bbf4",
199
+ type: "#90c5c8",
200
+ tag: "#faa29b",
201
+ attribute: "#f3bc76",
202
+ regex: "#faa29b",
203
+ inserted: "#89d19c",
204
+ deleted: "#faa29b"
205
+ }
206
+ };
@@ -0,0 +1,291 @@
1
+ /**
2
+ * The kit's design-token specification — the single source of truth.
3
+ *
4
+ * Colors are authored in OKLCH so lightness steps are perceptually even. The kit's
5
+ * `packages/ui/scripts/gen-tokens.ts` turns this spec into its `src/styles/tokens.gen.css` (CSS custom
6
+ * properties using `light-dark()`) and into `palette.gen.ts` here (sRGB hex, for the CLI/TUI, Tauri,
7
+ * OG images, emails).
8
+ *
9
+ * Ramp semantics (12 steps, Radix-style):
10
+ * 1 app background · 2 subtle background · 3 element · 4 element hover · 5 element active
11
+ * 6 subtle border · 7 border · 8 strong border / focus · 9 solid · 10 solid hover
12
+ * 11 low-contrast text · 12 high-contrast text
13
+ */
14
+ export type Oklch = readonly [l: number, c: number, h: number];
15
+ type RampStep = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
16
+ export type Ramp = readonly [
17
+ Oklch,
18
+ Oklch,
19
+ Oklch,
20
+ Oklch,
21
+ Oklch,
22
+ Oklch,
23
+ Oklch,
24
+ Oklch,
25
+ Oklch,
26
+ Oklch,
27
+ Oklch,
28
+ Oklch
29
+ ];
30
+ /** The brand blue. Exact value, never tinted for the logo. */
31
+ export declare const BRAND_HEX = "#0169ff";
32
+ /**
33
+ * Focus ring strength: percent of blue-9 per theme. Solid in light (62 % blended to 2.1:1 on bg);
34
+ * 72 % in dark. Both clear WCAG 2.2 non-text contrast (3:1) on bg, bg-subtle, bg-muted and surface.
35
+ */
36
+ export declare const FOCUS_MIX: {
37
+ readonly light: 100;
38
+ readonly dark: 72;
39
+ };
40
+ /** Light `surface` (cards): a touch brighter than bg. Dark surface is gray-2. */
41
+ export declare const SURFACE_LIGHT: Oklch;
42
+ export declare const HUES: {
43
+ /**
44
+ * Brand blue — `BRAND_HEX` sits at step 9 in light mode. Text steps are tuned so each hue's step 11
45
+ * reads at 4.5:1 on its own tints (`*-subtle`, `*-subtle-hover`) over bg, bg-subtle and bg-muted.
46
+ */
47
+ readonly blue: {
48
+ readonly h: 260.44;
49
+ readonly c: 0.2373;
50
+ readonly solid: readonly [0.5692, 0.66];
51
+ readonly text: readonly [0.505, 0.78];
52
+ };
53
+ readonly green: {
54
+ readonly h: 152;
55
+ readonly c: 0.15;
56
+ readonly solid: readonly [0.545, 0.66];
57
+ readonly text: readonly [0.48, 0.8];
58
+ readonly onWhite: 0.545;
59
+ };
60
+ readonly amber: {
61
+ readonly h: 72;
62
+ readonly c: 0.155;
63
+ readonly solid: readonly [0.78, 0.8];
64
+ readonly text: readonly [0.52, 0.84];
65
+ };
66
+ readonly red: {
67
+ readonly h: 25;
68
+ readonly c: 0.19;
69
+ readonly solid: readonly [0.575, 0.64];
70
+ readonly text: readonly [0.505, 0.78];
71
+ readonly onWhite: 0.575;
72
+ };
73
+ readonly violet: {
74
+ readonly h: 295;
75
+ readonly c: 0.15;
76
+ readonly solid: readonly [0.58, 0.64];
77
+ readonly text: readonly [0.5, 0.8];
78
+ };
79
+ };
80
+ export declare const RAMPS: {
81
+ readonly light: {
82
+ readonly gray: Ramp;
83
+ readonly blue: Ramp;
84
+ readonly green: Ramp;
85
+ readonly amber: Ramp;
86
+ readonly red: Ramp;
87
+ readonly violet: Ramp;
88
+ };
89
+ readonly dark: {
90
+ readonly gray: Ramp;
91
+ readonly blue: Ramp;
92
+ readonly green: Ramp;
93
+ readonly amber: Ramp;
94
+ readonly red: Ramp;
95
+ readonly violet: Ramp;
96
+ };
97
+ };
98
+ export type RampName = keyof (typeof RAMPS)["light"];
99
+ /** A syntax colour: a ramp step, or a mix of two (`t` toward the second, in sRGB). */
100
+ export type SyntaxColor = readonly [ramp: RampName, step: RampStep] | {
101
+ readonly mix: readonly [SyntaxColor, SyntaxColor, number];
102
+ };
103
+ export type SyntaxRole = "fg" | "muted" | "comment" | "keyword" | "string" | "number" | "fn" | "type" | "tag" | "attribute" | "regex" | "inserted" | "deleted";
104
+ /**
105
+ * The syntax themes (Shiki `nib-light` / `nib-dark`): calm and low-saturation. Keywords lean
106
+ * violet, strings green, numbers amber, functions blue, comments gray italic. The kit's gen-tokens.ts
107
+ * then holds every role to 4.5:1 on each background code sits on (the code well, a highlighted line,
108
+ * a diff's word change), moving only its lightness.
109
+ */
110
+ export declare const SYNTAX: Record<"light" | "dark", Record<SyntaxRole, SyntaxColor>>;
111
+ /**
112
+ * Avatar tints — muted, earthy, distinguishable at avatar size. Each tint gets a background
113
+ * (light/dark) and an ink color. Kept deliberately desaturated so a dashboard full of
114
+ * avatars still reads as calm.
115
+ */
116
+ export declare const PERSONA_HUES: {
117
+ readonly clay: 42;
118
+ readonly ochre: 78;
119
+ readonly sage: 140;
120
+ readonly teal: 192;
121
+ readonly slate: 245;
122
+ readonly iris: 278;
123
+ readonly plum: 330;
124
+ readonly rose: 12;
125
+ };
126
+ export type PersonaTint = keyof typeof PERSONA_HUES;
127
+ export declare const RADII: {
128
+ readonly xs: "0.25rem";
129
+ readonly sm: "0.375rem";
130
+ readonly md: "0.5rem";
131
+ readonly lg: "0.625rem";
132
+ readonly xl: "0.75rem";
133
+ readonly "2xl": "1rem";
134
+ readonly "3xl": "1.375rem";
135
+ readonly "4xl": "1.75rem";
136
+ };
137
+ /**
138
+ * Content widths (docs/design/system.md §1.3). Emitted as Tailwind containers, so `max-w-reading`,
139
+ * `max-w-form`, `max-w-page` and `max-w-wide` exist next to Tailwind's own `max-w-md`…`max-w-7xl`.
140
+ */
141
+ export declare const CONTAINERS: {
142
+ /** Conversations, documents, long text: ~70 characters per line at 14 px. */
143
+ readonly reading: "46rem";
144
+ /** Settings, forms, single-column flows. */
145
+ readonly form: "42rem";
146
+ /** Lists and dashboards. */
147
+ readonly page: "64rem";
148
+ /** Galleries and boards. */
149
+ readonly wide: "76rem";
150
+ /** One centred card: sign-in, the first run's steps, onboarding. */
151
+ readonly card: "25rem";
152
+ /** A card that holds a choice of several things side by side. */
153
+ readonly "card-wide": "44rem";
154
+ /** A bar floating over a page or a stage: a sentence and its action. */
155
+ readonly bar: "40rem";
156
+ };
157
+ /**
158
+ * The page's own width steps (docs/design/system.md §1.4): breakpoints for container queries on the
159
+ * `page` region, emitted as Tailwind containers so `@page-md/page:` and `@max-page-md/page:` exist.
160
+ * From `page-md` the gutter is 24 px and a screen may show its roomy layout (a full toolbar); from
161
+ * `page-lg` it is 32 px.
162
+ */
163
+ export declare const PAGE_STEPS: {
164
+ readonly "page-md": "40rem";
165
+ readonly "page-lg": "64rem";
166
+ };
167
+ /**
168
+ * Stacking layers, low to high, as `--z-*` custom properties: every fixed or floating surface takes
169
+ * one by name (`z-(--z-overlay)`); a local `z-10` stays inside an `isolate` root.
170
+ */
171
+ export declare const LAYERS: {
172
+ /** Headers that stick inside a scrolling region. */
173
+ readonly sticky: 10;
174
+ /** Lists anchored to a field in the page (completion, go to file). */
175
+ readonly dropdown: 20;
176
+ /** Fixed notices over the page (the account bar). */
177
+ readonly banner: 30;
178
+ /** The narrow window's side panels and their scrim. */
179
+ readonly drawer: 40;
180
+ /** The pane tour: over the page, under anything modal. */
181
+ readonly tour: 45;
182
+ /** Toasts: over the page and the tour, under a modal's backdrop (their close stays reachable). */
183
+ readonly toast: 50;
184
+ /** Dialogs, sheets, popovers, menus, selects and the sign-in gate; later ones stack by DOM order. */
185
+ readonly overlay: 60;
186
+ /** Tooltips, over everything they label. */
187
+ readonly tooltip: 70;
188
+ };
189
+ /** Window regions (docs/design/system.md §1.2), as `--layout-*` custom properties. */
190
+ export declare const LAYOUT: {
191
+ readonly sidebar: "16.5rem";
192
+ readonly header: "3.25rem";
193
+ readonly "bottom-bar": "2.75rem";
194
+ readonly "pane-min": "18.75rem";
195
+ };
196
+ /**
197
+ * Type scale: [font-size, line-height, letter-spacing]. Tuned for Inter 4 with optical sizing.
198
+ *
199
+ * An app uses six of these, one per role (docs/design/system.md §3.1): `xs` caption, `sm` UI,
200
+ * `base` body, `md` reading, `xl` title, `3xl` display. The rest are a marketing site's scale.
201
+ */
202
+ export declare const TYPE_SCALE: {
203
+ /** Site only. */
204
+ readonly "2xs": readonly ["0.6875rem", "1rem", "0.01em"];
205
+ /** App: captions, metadata, badges, keycaps, code inside UI text (Geist Mono). */
206
+ readonly xs: readonly ["0.75rem", "1.125rem", "0.005em"];
207
+ /** App: dense UI: sidebar, menus, rows, tool rows, descriptions, field labels. */
208
+ readonly sm: readonly ["0.8125rem", "1.25rem", "0em"];
209
+ /** App: default UI and body copy. */
210
+ readonly base: readonly ["0.875rem", "1.375rem", "-0.003em"];
211
+ /** App: reading text (a conversation, a message) and card, dialog and section titles. */
212
+ readonly md: readonly ["0.9375rem", "1.5rem", "-0.006em"];
213
+ /** Site only. */
214
+ readonly lg: readonly ["1.0625rem", "1.625rem", "-0.011em"];
215
+ /** App: page titles. */
216
+ readonly xl: readonly ["1.25rem", "1.75rem", "-0.015em"];
217
+ /** Site only. */
218
+ readonly "2xl": readonly ["1.5rem", "2rem", "-0.019em"];
219
+ /** App: display: the home greeting, welcome, first run, onboarding, a big code to type. */
220
+ readonly "3xl": readonly ["1.875rem", "2.375rem", "-0.022em"];
221
+ /** Site only. */
222
+ readonly "4xl": readonly ["2.375rem", "2.75rem", "-0.025em"];
223
+ readonly "5xl": readonly ["3rem", "3.375rem", "-0.028em"];
224
+ readonly "6xl": readonly ["3.75rem", "4rem", "-0.03em"];
225
+ };
226
+ /** Durations in milliseconds. */
227
+ export declare const DURATIONS: {
228
+ readonly instant: 80;
229
+ readonly fast: 120;
230
+ readonly base: 180;
231
+ readonly moderate: 240;
232
+ readonly slow: 320;
233
+ readonly slower: 480;
234
+ readonly glacial: 800;
235
+ /** Don't show a loader before this — fast results never flash a spinner. */
236
+ readonly loaderDelay: 200;
237
+ /** Once shown, keep a loader visible at least this long so it never flickers. */
238
+ readonly loaderMin: 400;
239
+ };
240
+ /** Cubic-bezier easings. */
241
+ export declare const EASINGS: {
242
+ readonly standard: readonly [0.2, 0, 0, 1];
243
+ readonly out: readonly [0.16, 1, 0.3, 1];
244
+ readonly in: readonly [0.5, 0, 0.75, 0];
245
+ readonly inOut: readonly [0.65, 0, 0.35, 1];
246
+ readonly emphasized: readonly [0.3, 0, 0, 1.15];
247
+ /** iOS-like sheet curve for drawers (Ionic / Vaul). */
248
+ readonly sheet: readonly [0.32, 0.72, 0, 1];
249
+ };
250
+ /**
251
+ * Springs, expressed the Motion way (perceived duration + bounce). The generator also bakes each
252
+ * into a CSS `linear()` easing so pure-CSS transitions feel identical to JS-driven ones; the baked
253
+ * `--duration-spring-*` ends once the spring stays within 1 % of its target (see
254
+ * `SPRING_CSS_REST`), so functional UI stays inside the motion budget: snappy ≈ 183 ms and smooth
255
+ * ≈ 225 ms in CSS. Longer springs are for deliberate moments only, never for everyday controls.
256
+ */
257
+ export declare const SPRINGS: {
258
+ /** Hover/press feedback, toggles, chevrons. Panes, rails and expanders open instantly. */
259
+ readonly snappy: {
260
+ readonly visualDuration: 0.14;
261
+ readonly bounce: 0;
262
+ };
263
+ /** Meter fills (`scaleX`), JS enter/exit fades. Popups use the `popup-motion` tween. */
264
+ readonly smooth: {
265
+ readonly visualDuration: 0.17;
266
+ readonly bounce: 0;
267
+ };
268
+ /** Deliberate, larger transform moments. Never size or position in layout, never controls. */
269
+ readonly gentle: {
270
+ readonly visualDuration: 0.42;
271
+ readonly bounce: 0;
272
+ };
273
+ /** Micro-moments of delight: success ticks, mascot hops. Use sparingly. */
274
+ readonly bouncy: {
275
+ readonly visualDuration: 0.38;
276
+ readonly bounce: 0.28;
277
+ };
278
+ /** The convergence moment only (race adopt): the nib meets, flashes blue once. Never elsewhere. */
279
+ readonly signature: {
280
+ readonly visualDuration: 0.5;
281
+ readonly bounce: 0.2;
282
+ };
283
+ };
284
+ /**
285
+ * Where a CSS-baked spring is "at rest": the residual (fraction of the full change) it never
286
+ * leaves again. 1 % is under a pixel for UI-sized moves and invisible on opacity and colour; a
287
+ * tighter rest (0.15 %) adds about 170 ms of invisible tail to every spring.
288
+ */
289
+ export declare const SPRING_CSS_REST = 0.01;
290
+ export type SpringName = keyof typeof SPRINGS;
291
+ export {};