@xanots/sdk 0.0.2 → 0.0.3

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 (43) hide show
  1. package/README.md +11 -2
  2. package/dist/.build-fingerprint +1 -1
  3. package/dist/{agent-file-refresh-7XCACU34.js → agent-file-refresh-6M5M7T24.js} +4 -3
  4. package/dist/bin.js +7 -7
  5. package/dist/{chunk-MUDLJG2O.js → chunk-2V4YE6QC.js} +25 -15
  6. package/dist/{chunk-UVLVQWWF.js → chunk-3NFUWXOC.js} +70 -20
  7. package/dist/chunk-6DHJVLYP.js +2044 -0
  8. package/dist/{chunk-IZW6MK3U.js → chunk-6USV65XA.js} +2 -2
  9. package/dist/{chunk-XLD4BUTF.js → chunk-BT2CSEC5.js} +2 -2
  10. package/dist/{chunk-VKFQJEMW.js → chunk-CMZLPTGW.js} +37 -406
  11. package/dist/{chunk-YYRDLFSJ.js → chunk-DYCLVQXW.js} +50 -3
  12. package/dist/chunk-HQ2CBRVI.js +530 -0
  13. package/dist/{chunk-ZPEY5WE4.js → chunk-W2G2WPTB.js} +3 -3
  14. package/dist/chunk-WUSKBXXD.js +25 -0
  15. package/dist/{chunk-ODNMVJ6H.js → chunk-YZ4GU6F5.js} +283 -252
  16. package/dist/{chunk-5YTBTF25.js → chunk-ZO3HJOCJ.js} +2 -2
  17. package/dist/cli.d.ts +31 -0
  18. package/dist/cli.js +5 -5
  19. package/dist/{codegen-command-RY2GWDLX.js → codegen-command-FIADGXRN.js} +13 -11
  20. package/dist/{completion-TIPPZN7H.js → completion-BKAFCZBE.js} +2 -2
  21. package/dist/{deploy-command-DSISLUW5.js → deploy-command-4R6BYC6G.js} +13 -13
  22. package/dist/{env-target-7C2GKBCY.js → env-target-XWS2ZZ2Y.js} +2 -2
  23. package/dist/{ephemeral-command-5K573ZSG.js → ephemeral-command-JL4TPIRQ.js} +15 -15
  24. package/dist/{init-command-4AWL6CLW.js → init-command-LOK75W64.js} +11 -9
  25. package/dist/internal.js +4 -3
  26. package/dist/{lock-commands-7Q5LNZKL.js → lock-commands-XOYS75YQ.js} +9 -9
  27. package/dist/{marketplace-command-RATXTKXN.js → marketplace-command-UVV3XAOL.js} +6 -6
  28. package/dist/meta-client-OW5WKWW7.js +1 -1
  29. package/dist/node.js +8 -8
  30. package/dist/{release-command-QXLRJMY7.js → release-command-HZUY2XZX.js} +15 -15
  31. package/dist/sandbox-export-command-QCJY4GMV.js +1 -1
  32. package/dist/scaffold.d.ts +1896 -0
  33. package/dist/scaffold.js +101 -0
  34. package/dist/{test-command-BOLIU57E.js → test-command-72Y5S22H.js} +4 -4
  35. package/dist/{validate-command-SYCFEYZN.js → validate-command-KDGH537H.js} +7 -7
  36. package/dist/{workspace-command-TOB2AJ6X.js → workspace-command-ICSI6PKO.js} +13 -11
  37. package/dist/workspace-export-AJMGN3CQ.js +1 -1
  38. package/llms/kinds-agent-mcp.md +2 -1
  39. package/llms-full.txt +3 -2
  40. package/llms.txt +1 -1
  41. package/manifest.json +145 -1
  42. package/package.json +7 -1
  43. package/dist/chunk-47WDWMBJ.js +0 -14
@@ -0,0 +1,1896 @@
1
+ /**
2
+ * AUTO-GENERATED by scripts/gen-shadcn-themes.ts — DO NOT EDIT BY HAND.
3
+ *
4
+ * shadcn/ui's theme registry, distilled: 7 base colors carrying the complete
5
+ * token set, and 17 accents carrying the partial override that reads as a
6
+ * brand. Values are verbatim upstream oklch — see
7
+ * `apps/v4/registry/themes.ts` in github.com/shadcn-ui/ui.
8
+ *
9
+ * Composed by `buildTheme()` in ../theme-presets.ts, which mirrors upstream's
10
+ * own shallow-spread merge. Regenerate with `npm run codegen:themes`.
11
+ */
12
+ /** One registry theme: a display label and its light/dark token maps. */
13
+ interface ThemeTokens {
14
+ readonly label: string;
15
+ readonly light: Readonly<Record<string, string>>;
16
+ readonly dark: Readonly<Record<string, string>>;
17
+ }
18
+ /**
19
+ * The base colors, in upstream order. Each defines every token a shadcn/ui
20
+ * component reads, so a stylesheet rendered from one alone is complete.
21
+ */
22
+ declare const BASE_TOKENS: {
23
+ readonly neutral: {
24
+ readonly label: "Neutral";
25
+ readonly light: {
26
+ readonly background: "oklch(1 0 0)";
27
+ readonly foreground: "oklch(0.145 0 0)";
28
+ readonly card: "oklch(1 0 0)";
29
+ readonly "card-foreground": "oklch(0.145 0 0)";
30
+ readonly popover: "oklch(1 0 0)";
31
+ readonly "popover-foreground": "oklch(0.145 0 0)";
32
+ readonly primary: "oklch(0.205 0 0)";
33
+ readonly "primary-foreground": "oklch(0.985 0 0)";
34
+ readonly secondary: "oklch(0.97 0 0)";
35
+ readonly "secondary-foreground": "oklch(0.205 0 0)";
36
+ readonly muted: "oklch(0.97 0 0)";
37
+ readonly "muted-foreground": "oklch(0.556 0 0)";
38
+ readonly accent: "oklch(0.97 0 0)";
39
+ readonly "accent-foreground": "oklch(0.205 0 0)";
40
+ readonly destructive: "oklch(0.577 0.245 27.325)";
41
+ readonly border: "oklch(0.922 0 0)";
42
+ readonly input: "oklch(0.922 0 0)";
43
+ readonly ring: "oklch(0.708 0 0)";
44
+ readonly "chart-1": "oklch(0.87 0 0)";
45
+ readonly "chart-2": "oklch(0.556 0 0)";
46
+ readonly "chart-3": "oklch(0.439 0 0)";
47
+ readonly "chart-4": "oklch(0.371 0 0)";
48
+ readonly "chart-5": "oklch(0.269 0 0)";
49
+ readonly radius: "0.625rem";
50
+ readonly sidebar: "oklch(0.985 0 0)";
51
+ readonly "sidebar-foreground": "oklch(0.145 0 0)";
52
+ readonly "sidebar-primary": "oklch(0.205 0 0)";
53
+ readonly "sidebar-primary-foreground": "oklch(0.985 0 0)";
54
+ readonly "sidebar-accent": "oklch(0.97 0 0)";
55
+ readonly "sidebar-accent-foreground": "oklch(0.205 0 0)";
56
+ readonly "sidebar-border": "oklch(0.922 0 0)";
57
+ readonly "sidebar-ring": "oklch(0.708 0 0)";
58
+ };
59
+ readonly dark: {
60
+ readonly background: "oklch(0.145 0 0)";
61
+ readonly foreground: "oklch(0.985 0 0)";
62
+ readonly card: "oklch(0.205 0 0)";
63
+ readonly "card-foreground": "oklch(0.985 0 0)";
64
+ readonly popover: "oklch(0.205 0 0)";
65
+ readonly "popover-foreground": "oklch(0.985 0 0)";
66
+ readonly primary: "oklch(0.922 0 0)";
67
+ readonly "primary-foreground": "oklch(0.205 0 0)";
68
+ readonly secondary: "oklch(0.269 0 0)";
69
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
70
+ readonly muted: "oklch(0.269 0 0)";
71
+ readonly "muted-foreground": "oklch(0.708 0 0)";
72
+ readonly accent: "oklch(0.269 0 0)";
73
+ readonly "accent-foreground": "oklch(0.985 0 0)";
74
+ readonly destructive: "oklch(0.704 0.191 22.216)";
75
+ readonly border: "oklch(1 0 0 / 10%)";
76
+ readonly input: "oklch(1 0 0 / 15%)";
77
+ readonly ring: "oklch(0.556 0 0)";
78
+ readonly "chart-1": "oklch(0.87 0 0)";
79
+ readonly "chart-2": "oklch(0.556 0 0)";
80
+ readonly "chart-3": "oklch(0.439 0 0)";
81
+ readonly "chart-4": "oklch(0.371 0 0)";
82
+ readonly "chart-5": "oklch(0.269 0 0)";
83
+ readonly sidebar: "oklch(0.205 0 0)";
84
+ readonly "sidebar-foreground": "oklch(0.985 0 0)";
85
+ readonly "sidebar-primary": "oklch(0.488 0.243 264.376)";
86
+ readonly "sidebar-primary-foreground": "oklch(0.985 0 0)";
87
+ readonly "sidebar-accent": "oklch(0.269 0 0)";
88
+ readonly "sidebar-accent-foreground": "oklch(0.985 0 0)";
89
+ readonly "sidebar-border": "oklch(1 0 0 / 10%)";
90
+ readonly "sidebar-ring": "oklch(0.556 0 0)";
91
+ };
92
+ };
93
+ readonly stone: {
94
+ readonly label: "Stone";
95
+ readonly light: {
96
+ readonly background: "oklch(1 0 0)";
97
+ readonly foreground: "oklch(0.147 0.004 49.25)";
98
+ readonly card: "oklch(1 0 0)";
99
+ readonly "card-foreground": "oklch(0.147 0.004 49.25)";
100
+ readonly popover: "oklch(1 0 0)";
101
+ readonly "popover-foreground": "oklch(0.147 0.004 49.25)";
102
+ readonly primary: "oklch(0.216 0.006 56.043)";
103
+ readonly "primary-foreground": "oklch(0.985 0.001 106.423)";
104
+ readonly secondary: "oklch(0.97 0.001 106.424)";
105
+ readonly "secondary-foreground": "oklch(0.216 0.006 56.043)";
106
+ readonly muted: "oklch(0.97 0.001 106.424)";
107
+ readonly "muted-foreground": "oklch(0.553 0.013 58.071)";
108
+ readonly accent: "oklch(0.97 0.001 106.424)";
109
+ readonly "accent-foreground": "oklch(0.216 0.006 56.043)";
110
+ readonly destructive: "oklch(0.577 0.245 27.325)";
111
+ readonly border: "oklch(0.923 0.003 48.717)";
112
+ readonly input: "oklch(0.923 0.003 48.717)";
113
+ readonly ring: "oklch(0.709 0.01 56.259)";
114
+ readonly "chart-1": "oklch(0.869 0.005 56.366)";
115
+ readonly "chart-2": "oklch(0.553 0.013 58.071)";
116
+ readonly "chart-3": "oklch(0.444 0.011 73.639)";
117
+ readonly "chart-4": "oklch(0.374 0.01 67.558)";
118
+ readonly "chart-5": "oklch(0.268 0.007 34.298)";
119
+ readonly radius: "0.625rem";
120
+ readonly sidebar: "oklch(0.985 0.001 106.423)";
121
+ readonly "sidebar-foreground": "oklch(0.147 0.004 49.25)";
122
+ readonly "sidebar-primary": "oklch(0.216 0.006 56.043)";
123
+ readonly "sidebar-primary-foreground": "oklch(0.985 0.001 106.423)";
124
+ readonly "sidebar-accent": "oklch(0.97 0.001 106.424)";
125
+ readonly "sidebar-accent-foreground": "oklch(0.216 0.006 56.043)";
126
+ readonly "sidebar-border": "oklch(0.923 0.003 48.717)";
127
+ readonly "sidebar-ring": "oklch(0.709 0.01 56.259)";
128
+ };
129
+ readonly dark: {
130
+ readonly background: "oklch(0.147 0.004 49.25)";
131
+ readonly foreground: "oklch(0.985 0.001 106.423)";
132
+ readonly card: "oklch(0.216 0.006 56.043)";
133
+ readonly "card-foreground": "oklch(0.985 0.001 106.423)";
134
+ readonly popover: "oklch(0.216 0.006 56.043)";
135
+ readonly "popover-foreground": "oklch(0.985 0.001 106.423)";
136
+ readonly primary: "oklch(0.923 0.003 48.717)";
137
+ readonly "primary-foreground": "oklch(0.216 0.006 56.043)";
138
+ readonly secondary: "oklch(0.268 0.007 34.298)";
139
+ readonly "secondary-foreground": "oklch(0.985 0.001 106.423)";
140
+ readonly muted: "oklch(0.268 0.007 34.298)";
141
+ readonly "muted-foreground": "oklch(0.709 0.01 56.259)";
142
+ readonly accent: "oklch(0.268 0.007 34.298)";
143
+ readonly "accent-foreground": "oklch(0.985 0.001 106.423)";
144
+ readonly destructive: "oklch(0.704 0.191 22.216)";
145
+ readonly border: "oklch(1 0 0 / 10%)";
146
+ readonly input: "oklch(1 0 0 / 15%)";
147
+ readonly ring: "oklch(0.553 0.013 58.071)";
148
+ readonly "chart-1": "oklch(0.869 0.005 56.366)";
149
+ readonly "chart-2": "oklch(0.553 0.013 58.071)";
150
+ readonly "chart-3": "oklch(0.444 0.011 73.639)";
151
+ readonly "chart-4": "oklch(0.374 0.01 67.558)";
152
+ readonly "chart-5": "oklch(0.268 0.007 34.298)";
153
+ readonly sidebar: "oklch(0.216 0.006 56.043)";
154
+ readonly "sidebar-foreground": "oklch(0.985 0.001 106.423)";
155
+ readonly "sidebar-primary": "oklch(0.488 0.243 264.376)";
156
+ readonly "sidebar-primary-foreground": "oklch(0.985 0.001 106.423)";
157
+ readonly "sidebar-accent": "oklch(0.268 0.007 34.298)";
158
+ readonly "sidebar-accent-foreground": "oklch(0.985 0.001 106.423)";
159
+ readonly "sidebar-border": "oklch(1 0 0 / 10%)";
160
+ readonly "sidebar-ring": "oklch(0.553 0.013 58.071)";
161
+ };
162
+ };
163
+ readonly zinc: {
164
+ readonly label: "Zinc";
165
+ readonly light: {
166
+ readonly background: "oklch(1 0 0)";
167
+ readonly foreground: "oklch(0.141 0.005 285.823)";
168
+ readonly card: "oklch(1 0 0)";
169
+ readonly "card-foreground": "oklch(0.141 0.005 285.823)";
170
+ readonly popover: "oklch(1 0 0)";
171
+ readonly "popover-foreground": "oklch(0.141 0.005 285.823)";
172
+ readonly primary: "oklch(0.21 0.006 285.885)";
173
+ readonly "primary-foreground": "oklch(0.985 0 0)";
174
+ readonly secondary: "oklch(0.967 0.001 286.375)";
175
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
176
+ readonly muted: "oklch(0.967 0.001 286.375)";
177
+ readonly "muted-foreground": "oklch(0.552 0.016 285.938)";
178
+ readonly accent: "oklch(0.967 0.001 286.375)";
179
+ readonly "accent-foreground": "oklch(0.21 0.006 285.885)";
180
+ readonly destructive: "oklch(0.577 0.245 27.325)";
181
+ readonly border: "oklch(0.92 0.004 286.32)";
182
+ readonly input: "oklch(0.92 0.004 286.32)";
183
+ readonly ring: "oklch(0.705 0.015 286.067)";
184
+ readonly "chart-1": "oklch(0.871 0.006 286.286)";
185
+ readonly "chart-2": "oklch(0.552 0.016 285.938)";
186
+ readonly "chart-3": "oklch(0.442 0.017 285.786)";
187
+ readonly "chart-4": "oklch(0.37 0.013 285.805)";
188
+ readonly "chart-5": "oklch(0.274 0.006 286.033)";
189
+ readonly radius: "0.625rem";
190
+ readonly sidebar: "oklch(0.985 0 0)";
191
+ readonly "sidebar-foreground": "oklch(0.141 0.005 285.823)";
192
+ readonly "sidebar-primary": "oklch(0.21 0.006 285.885)";
193
+ readonly "sidebar-primary-foreground": "oklch(0.985 0 0)";
194
+ readonly "sidebar-accent": "oklch(0.967 0.001 286.375)";
195
+ readonly "sidebar-accent-foreground": "oklch(0.21 0.006 285.885)";
196
+ readonly "sidebar-border": "oklch(0.92 0.004 286.32)";
197
+ readonly "sidebar-ring": "oklch(0.705 0.015 286.067)";
198
+ };
199
+ readonly dark: {
200
+ readonly background: "oklch(0.141 0.005 285.823)";
201
+ readonly foreground: "oklch(0.985 0 0)";
202
+ readonly card: "oklch(0.21 0.006 285.885)";
203
+ readonly "card-foreground": "oklch(0.985 0 0)";
204
+ readonly popover: "oklch(0.21 0.006 285.885)";
205
+ readonly "popover-foreground": "oklch(0.985 0 0)";
206
+ readonly primary: "oklch(0.92 0.004 286.32)";
207
+ readonly "primary-foreground": "oklch(0.21 0.006 285.885)";
208
+ readonly secondary: "oklch(0.274 0.006 286.033)";
209
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
210
+ readonly muted: "oklch(0.274 0.006 286.033)";
211
+ readonly "muted-foreground": "oklch(0.705 0.015 286.067)";
212
+ readonly accent: "oklch(0.274 0.006 286.033)";
213
+ readonly "accent-foreground": "oklch(0.985 0 0)";
214
+ readonly destructive: "oklch(0.704 0.191 22.216)";
215
+ readonly border: "oklch(1 0 0 / 10%)";
216
+ readonly input: "oklch(1 0 0 / 15%)";
217
+ readonly ring: "oklch(0.552 0.016 285.938)";
218
+ readonly "chart-1": "oklch(0.871 0.006 286.286)";
219
+ readonly "chart-2": "oklch(0.552 0.016 285.938)";
220
+ readonly "chart-3": "oklch(0.442 0.017 285.786)";
221
+ readonly "chart-4": "oklch(0.37 0.013 285.805)";
222
+ readonly "chart-5": "oklch(0.274 0.006 286.033)";
223
+ readonly sidebar: "oklch(0.21 0.006 285.885)";
224
+ readonly "sidebar-foreground": "oklch(0.985 0 0)";
225
+ readonly "sidebar-primary": "oklch(0.488 0.243 264.376)";
226
+ readonly "sidebar-primary-foreground": "oklch(0.985 0 0)";
227
+ readonly "sidebar-accent": "oklch(0.274 0.006 286.033)";
228
+ readonly "sidebar-accent-foreground": "oklch(0.985 0 0)";
229
+ readonly "sidebar-border": "oklch(1 0 0 / 10%)";
230
+ readonly "sidebar-ring": "oklch(0.552 0.016 285.938)";
231
+ };
232
+ };
233
+ readonly mauve: {
234
+ readonly label: "Mauve";
235
+ readonly light: {
236
+ readonly background: "oklch(1 0 0)";
237
+ readonly foreground: "oklch(0.145 0.008 326)";
238
+ readonly card: "oklch(1 0 0)";
239
+ readonly "card-foreground": "oklch(0.145 0.008 326)";
240
+ readonly popover: "oklch(1 0 0)";
241
+ readonly "popover-foreground": "oklch(0.145 0.008 326)";
242
+ readonly primary: "oklch(0.212 0.019 322.12)";
243
+ readonly "primary-foreground": "oklch(0.985 0 0)";
244
+ readonly secondary: "oklch(0.96 0.003 325.6)";
245
+ readonly "secondary-foreground": "oklch(0.212 0.019 322.12)";
246
+ readonly muted: "oklch(0.96 0.003 325.6)";
247
+ readonly "muted-foreground": "oklch(0.542 0.034 322.5)";
248
+ readonly accent: "oklch(0.96 0.003 325.6)";
249
+ readonly "accent-foreground": "oklch(0.212 0.019 322.12)";
250
+ readonly destructive: "oklch(0.577 0.245 27.325)";
251
+ readonly border: "oklch(0.922 0.005 325.62)";
252
+ readonly input: "oklch(0.922 0.005 325.62)";
253
+ readonly ring: "oklch(0.711 0.019 323.02)";
254
+ readonly "chart-1": "oklch(0.865 0.012 325.68)";
255
+ readonly "chart-2": "oklch(0.542 0.034 322.5)";
256
+ readonly "chart-3": "oklch(0.435 0.029 321.78)";
257
+ readonly "chart-4": "oklch(0.364 0.029 323.89)";
258
+ readonly "chart-5": "oklch(0.263 0.024 320.12)";
259
+ readonly radius: "0.625rem";
260
+ readonly sidebar: "oklch(0.985 0 0)";
261
+ readonly "sidebar-foreground": "oklch(0.145 0.008 326)";
262
+ readonly "sidebar-primary": "oklch(0.212 0.019 322.12)";
263
+ readonly "sidebar-primary-foreground": "oklch(0.985 0 0)";
264
+ readonly "sidebar-accent": "oklch(0.96 0.003 325.6)";
265
+ readonly "sidebar-accent-foreground": "oklch(0.212 0.019 322.12)";
266
+ readonly "sidebar-border": "oklch(0.922 0.005 325.62)";
267
+ readonly "sidebar-ring": "oklch(0.711 0.019 323.02)";
268
+ };
269
+ readonly dark: {
270
+ readonly background: "oklch(0.145 0.008 326)";
271
+ readonly foreground: "oklch(0.985 0 0)";
272
+ readonly card: "oklch(0.212 0.019 322.12)";
273
+ readonly "card-foreground": "oklch(0.985 0 0)";
274
+ readonly popover: "oklch(0.212 0.019 322.12)";
275
+ readonly "popover-foreground": "oklch(0.985 0 0)";
276
+ readonly primary: "oklch(0.922 0.005 325.62)";
277
+ readonly "primary-foreground": "oklch(0.212 0.019 322.12)";
278
+ readonly secondary: "oklch(0.263 0.024 320.12)";
279
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
280
+ readonly muted: "oklch(0.263 0.024 320.12)";
281
+ readonly "muted-foreground": "oklch(0.711 0.019 323.02)";
282
+ readonly accent: "oklch(0.263 0.024 320.12)";
283
+ readonly "accent-foreground": "oklch(0.985 0 0)";
284
+ readonly destructive: "oklch(0.704 0.191 22.216)";
285
+ readonly border: "oklch(1 0 0 / 10%)";
286
+ readonly input: "oklch(1 0 0 / 15%)";
287
+ readonly ring: "oklch(0.542 0.034 322.5)";
288
+ readonly "chart-1": "oklch(0.865 0.012 325.68)";
289
+ readonly "chart-2": "oklch(0.542 0.034 322.5)";
290
+ readonly "chart-3": "oklch(0.435 0.029 321.78)";
291
+ readonly "chart-4": "oklch(0.364 0.029 323.89)";
292
+ readonly "chart-5": "oklch(0.263 0.024 320.12)";
293
+ readonly sidebar: "oklch(0.212 0.019 322.12)";
294
+ readonly "sidebar-foreground": "oklch(0.985 0 0)";
295
+ readonly "sidebar-primary": "oklch(0.488 0.243 264.376)";
296
+ readonly "sidebar-primary-foreground": "oklch(0.985 0 0)";
297
+ readonly "sidebar-accent": "oklch(0.263 0.024 320.12)";
298
+ readonly "sidebar-accent-foreground": "oklch(0.985 0 0)";
299
+ readonly "sidebar-border": "oklch(1 0 0 / 10%)";
300
+ readonly "sidebar-ring": "oklch(0.542 0.034 322.5)";
301
+ };
302
+ };
303
+ readonly olive: {
304
+ readonly label: "Olive";
305
+ readonly light: {
306
+ readonly background: "oklch(1 0 0)";
307
+ readonly foreground: "oklch(0.153 0.006 107.1)";
308
+ readonly card: "oklch(1 0 0)";
309
+ readonly "card-foreground": "oklch(0.153 0.006 107.1)";
310
+ readonly popover: "oklch(1 0 0)";
311
+ readonly "popover-foreground": "oklch(0.153 0.006 107.1)";
312
+ readonly primary: "oklch(0.228 0.013 107.4)";
313
+ readonly "primary-foreground": "oklch(0.988 0.003 106.5)";
314
+ readonly secondary: "oklch(0.966 0.005 106.5)";
315
+ readonly "secondary-foreground": "oklch(0.228 0.013 107.4)";
316
+ readonly muted: "oklch(0.966 0.005 106.5)";
317
+ readonly "muted-foreground": "oklch(0.58 0.031 107.3)";
318
+ readonly accent: "oklch(0.966 0.005 106.5)";
319
+ readonly "accent-foreground": "oklch(0.228 0.013 107.4)";
320
+ readonly destructive: "oklch(0.577 0.245 27.325)";
321
+ readonly border: "oklch(0.93 0.007 106.5)";
322
+ readonly input: "oklch(0.93 0.007 106.5)";
323
+ readonly ring: "oklch(0.737 0.021 106.9)";
324
+ readonly "chart-1": "oklch(0.88 0.011 106.6)";
325
+ readonly "chart-2": "oklch(0.58 0.031 107.3)";
326
+ readonly "chart-3": "oklch(0.466 0.025 107.3)";
327
+ readonly "chart-4": "oklch(0.394 0.023 107.4)";
328
+ readonly "chart-5": "oklch(0.286 0.016 107.4)";
329
+ readonly radius: "0.625rem";
330
+ readonly sidebar: "oklch(0.988 0.003 106.5)";
331
+ readonly "sidebar-foreground": "oklch(0.153 0.006 107.1)";
332
+ readonly "sidebar-primary": "oklch(0.228 0.013 107.4)";
333
+ readonly "sidebar-primary-foreground": "oklch(0.988 0.003 106.5)";
334
+ readonly "sidebar-accent": "oklch(0.966 0.005 106.5)";
335
+ readonly "sidebar-accent-foreground": "oklch(0.228 0.013 107.4)";
336
+ readonly "sidebar-border": "oklch(0.93 0.007 106.5)";
337
+ readonly "sidebar-ring": "oklch(0.737 0.021 106.9)";
338
+ };
339
+ readonly dark: {
340
+ readonly background: "oklch(0.153 0.006 107.1)";
341
+ readonly foreground: "oklch(0.988 0.003 106.5)";
342
+ readonly card: "oklch(0.228 0.013 107.4)";
343
+ readonly "card-foreground": "oklch(0.988 0.003 106.5)";
344
+ readonly popover: "oklch(0.228 0.013 107.4)";
345
+ readonly "popover-foreground": "oklch(0.988 0.003 106.5)";
346
+ readonly primary: "oklch(0.93 0.007 106.5)";
347
+ readonly "primary-foreground": "oklch(0.228 0.013 107.4)";
348
+ readonly secondary: "oklch(0.286 0.016 107.4)";
349
+ readonly "secondary-foreground": "oklch(0.988 0.003 106.5)";
350
+ readonly muted: "oklch(0.286 0.016 107.4)";
351
+ readonly "muted-foreground": "oklch(0.737 0.021 106.9)";
352
+ readonly accent: "oklch(0.286 0.016 107.4)";
353
+ readonly "accent-foreground": "oklch(0.988 0.003 106.5)";
354
+ readonly destructive: "oklch(0.704 0.191 22.216)";
355
+ readonly border: "oklch(1 0 0 / 10%)";
356
+ readonly input: "oklch(1 0 0 / 15%)";
357
+ readonly ring: "oklch(0.58 0.031 107.3)";
358
+ readonly "chart-1": "oklch(0.88 0.011 106.6)";
359
+ readonly "chart-2": "oklch(0.58 0.031 107.3)";
360
+ readonly "chart-3": "oklch(0.466 0.025 107.3)";
361
+ readonly "chart-4": "oklch(0.394 0.023 107.4)";
362
+ readonly "chart-5": "oklch(0.286 0.016 107.4)";
363
+ readonly sidebar: "oklch(0.228 0.013 107.4)";
364
+ readonly "sidebar-foreground": "oklch(0.988 0.003 106.5)";
365
+ readonly "sidebar-primary": "oklch(0.488 0.243 264.376)";
366
+ readonly "sidebar-primary-foreground": "oklch(0.988 0.003 106.5)";
367
+ readonly "sidebar-accent": "oklch(0.286 0.016 107.4)";
368
+ readonly "sidebar-accent-foreground": "oklch(0.988 0.003 106.5)";
369
+ readonly "sidebar-border": "oklch(1 0 0 / 10%)";
370
+ readonly "sidebar-ring": "oklch(0.58 0.031 107.3)";
371
+ };
372
+ };
373
+ readonly mist: {
374
+ readonly label: "Mist";
375
+ readonly light: {
376
+ readonly background: "oklch(1 0 0)";
377
+ readonly foreground: "oklch(0.148 0.004 228.8)";
378
+ readonly card: "oklch(1 0 0)";
379
+ readonly "card-foreground": "oklch(0.148 0.004 228.8)";
380
+ readonly popover: "oklch(1 0 0)";
381
+ readonly "popover-foreground": "oklch(0.148 0.004 228.8)";
382
+ readonly primary: "oklch(0.218 0.008 223.9)";
383
+ readonly "primary-foreground": "oklch(0.987 0.002 197.1)";
384
+ readonly secondary: "oklch(0.963 0.002 197.1)";
385
+ readonly "secondary-foreground": "oklch(0.218 0.008 223.9)";
386
+ readonly muted: "oklch(0.963 0.002 197.1)";
387
+ readonly "muted-foreground": "oklch(0.56 0.021 213.5)";
388
+ readonly accent: "oklch(0.963 0.002 197.1)";
389
+ readonly "accent-foreground": "oklch(0.218 0.008 223.9)";
390
+ readonly destructive: "oklch(0.577 0.245 27.325)";
391
+ readonly border: "oklch(0.925 0.005 214.3)";
392
+ readonly input: "oklch(0.925 0.005 214.3)";
393
+ readonly ring: "oklch(0.723 0.014 214.4)";
394
+ readonly "chart-1": "oklch(0.872 0.007 219.6)";
395
+ readonly "chart-2": "oklch(0.56 0.021 213.5)";
396
+ readonly "chart-3": "oklch(0.45 0.017 213.2)";
397
+ readonly "chart-4": "oklch(0.378 0.015 216)";
398
+ readonly "chart-5": "oklch(0.275 0.011 216.9)";
399
+ readonly radius: "0.625rem";
400
+ readonly sidebar: "oklch(0.987 0.002 197.1)";
401
+ readonly "sidebar-foreground": "oklch(0.148 0.004 228.8)";
402
+ readonly "sidebar-primary": "oklch(0.218 0.008 223.9)";
403
+ readonly "sidebar-primary-foreground": "oklch(0.987 0.002 197.1)";
404
+ readonly "sidebar-accent": "oklch(0.963 0.002 197.1)";
405
+ readonly "sidebar-accent-foreground": "oklch(0.218 0.008 223.9)";
406
+ readonly "sidebar-border": "oklch(0.925 0.005 214.3)";
407
+ readonly "sidebar-ring": "oklch(0.723 0.014 214.4)";
408
+ };
409
+ readonly dark: {
410
+ readonly background: "oklch(0.148 0.004 228.8)";
411
+ readonly foreground: "oklch(0.987 0.002 197.1)";
412
+ readonly card: "oklch(0.218 0.008 223.9)";
413
+ readonly "card-foreground": "oklch(0.987 0.002 197.1)";
414
+ readonly popover: "oklch(0.218 0.008 223.9)";
415
+ readonly "popover-foreground": "oklch(0.987 0.002 197.1)";
416
+ readonly primary: "oklch(0.925 0.005 214.3)";
417
+ readonly "primary-foreground": "oklch(0.218 0.008 223.9)";
418
+ readonly secondary: "oklch(0.275 0.011 216.9)";
419
+ readonly "secondary-foreground": "oklch(0.987 0.002 197.1)";
420
+ readonly muted: "oklch(0.275 0.011 216.9)";
421
+ readonly "muted-foreground": "oklch(0.723 0.014 214.4)";
422
+ readonly accent: "oklch(0.275 0.011 216.9)";
423
+ readonly "accent-foreground": "oklch(0.987 0.002 197.1)";
424
+ readonly destructive: "oklch(0.704 0.191 22.216)";
425
+ readonly border: "oklch(1 0 0 / 10%)";
426
+ readonly input: "oklch(1 0 0 / 15%)";
427
+ readonly ring: "oklch(0.56 0.021 213.5)";
428
+ readonly "chart-1": "oklch(0.872 0.007 219.6)";
429
+ readonly "chart-2": "oklch(0.56 0.021 213.5)";
430
+ readonly "chart-3": "oklch(0.45 0.017 213.2)";
431
+ readonly "chart-4": "oklch(0.378 0.015 216)";
432
+ readonly "chart-5": "oklch(0.275 0.011 216.9)";
433
+ readonly sidebar: "oklch(0.218 0.008 223.9)";
434
+ readonly "sidebar-foreground": "oklch(0.987 0.002 197.1)";
435
+ readonly "sidebar-primary": "oklch(0.488 0.243 264.376)";
436
+ readonly "sidebar-primary-foreground": "oklch(0.987 0.002 197.1)";
437
+ readonly "sidebar-accent": "oklch(0.275 0.011 216.9)";
438
+ readonly "sidebar-accent-foreground": "oklch(0.987 0.002 197.1)";
439
+ readonly "sidebar-border": "oklch(1 0 0 / 10%)";
440
+ readonly "sidebar-ring": "oklch(0.56 0.021 213.5)";
441
+ };
442
+ };
443
+ readonly taupe: {
444
+ readonly label: "Taupe";
445
+ readonly light: {
446
+ readonly background: "oklch(1 0 0)";
447
+ readonly foreground: "oklch(0.147 0.004 49.3)";
448
+ readonly card: "oklch(1 0 0)";
449
+ readonly "card-foreground": "oklch(0.147 0.004 49.3)";
450
+ readonly popover: "oklch(1 0 0)";
451
+ readonly "popover-foreground": "oklch(0.147 0.004 49.3)";
452
+ readonly primary: "oklch(0.214 0.009 43.1)";
453
+ readonly "primary-foreground": "oklch(0.986 0.002 67.8)";
454
+ readonly secondary: "oklch(0.96 0.002 17.2)";
455
+ readonly "secondary-foreground": "oklch(0.214 0.009 43.1)";
456
+ readonly muted: "oklch(0.96 0.002 17.2)";
457
+ readonly "muted-foreground": "oklch(0.547 0.021 43.1)";
458
+ readonly accent: "oklch(0.96 0.002 17.2)";
459
+ readonly "accent-foreground": "oklch(0.214 0.009 43.1)";
460
+ readonly destructive: "oklch(0.577 0.245 27.325)";
461
+ readonly border: "oklch(0.922 0.005 34.3)";
462
+ readonly input: "oklch(0.922 0.005 34.3)";
463
+ readonly ring: "oklch(0.714 0.014 41.2)";
464
+ readonly "chart-1": "oklch(0.868 0.007 39.5)";
465
+ readonly "chart-2": "oklch(0.547 0.021 43.1)";
466
+ readonly "chart-3": "oklch(0.438 0.017 39.3)";
467
+ readonly "chart-4": "oklch(0.367 0.016 35.7)";
468
+ readonly "chart-5": "oklch(0.268 0.011 36.5)";
469
+ readonly radius: "0.625rem";
470
+ readonly sidebar: "oklch(0.986 0.002 67.8)";
471
+ readonly "sidebar-foreground": "oklch(0.147 0.004 49.3)";
472
+ readonly "sidebar-primary": "oklch(0.214 0.009 43.1)";
473
+ readonly "sidebar-primary-foreground": "oklch(0.986 0.002 67.8)";
474
+ readonly "sidebar-accent": "oklch(0.96 0.002 17.2)";
475
+ readonly "sidebar-accent-foreground": "oklch(0.214 0.009 43.1)";
476
+ readonly "sidebar-border": "oklch(0.922 0.005 34.3)";
477
+ readonly "sidebar-ring": "oklch(0.714 0.014 41.2)";
478
+ };
479
+ readonly dark: {
480
+ readonly background: "oklch(0.147 0.004 49.3)";
481
+ readonly foreground: "oklch(0.986 0.002 67.8)";
482
+ readonly card: "oklch(0.214 0.009 43.1)";
483
+ readonly "card-foreground": "oklch(0.986 0.002 67.8)";
484
+ readonly popover: "oklch(0.214 0.009 43.1)";
485
+ readonly "popover-foreground": "oklch(0.986 0.002 67.8)";
486
+ readonly primary: "oklch(0.922 0.005 34.3)";
487
+ readonly "primary-foreground": "oklch(0.214 0.009 43.1)";
488
+ readonly secondary: "oklch(0.268 0.011 36.5)";
489
+ readonly "secondary-foreground": "oklch(0.986 0.002 67.8)";
490
+ readonly muted: "oklch(0.268 0.011 36.5)";
491
+ readonly "muted-foreground": "oklch(0.714 0.014 41.2)";
492
+ readonly accent: "oklch(0.268 0.011 36.5)";
493
+ readonly "accent-foreground": "oklch(0.986 0.002 67.8)";
494
+ readonly destructive: "oklch(0.704 0.191 22.216)";
495
+ readonly border: "oklch(1 0 0 / 10%)";
496
+ readonly input: "oklch(1 0 0 / 15%)";
497
+ readonly ring: "oklch(0.547 0.021 43.1)";
498
+ readonly "chart-1": "oklch(0.868 0.007 39.5)";
499
+ readonly "chart-2": "oklch(0.547 0.021 43.1)";
500
+ readonly "chart-3": "oklch(0.438 0.017 39.3)";
501
+ readonly "chart-4": "oklch(0.367 0.016 35.7)";
502
+ readonly "chart-5": "oklch(0.268 0.011 36.5)";
503
+ readonly sidebar: "oklch(0.214 0.009 43.1)";
504
+ readonly "sidebar-foreground": "oklch(0.986 0.002 67.8)";
505
+ readonly "sidebar-primary": "oklch(0.488 0.243 264.376)";
506
+ readonly "sidebar-primary-foreground": "oklch(0.986 0.002 67.8)";
507
+ readonly "sidebar-accent": "oklch(0.268 0.011 36.5)";
508
+ readonly "sidebar-accent-foreground": "oklch(0.986 0.002 67.8)";
509
+ readonly "sidebar-border": "oklch(1 0 0 / 10%)";
510
+ readonly "sidebar-ring": "oklch(0.547 0.021 43.1)";
511
+ };
512
+ };
513
+ };
514
+ /**
515
+ * The accents, in upstream order. Each is a PARTIAL map — primary, secondary,
516
+ * the chart ramp, the sidebar primary — spread over a base color's tokens.
517
+ */
518
+ declare const ACCENT_TOKENS: {
519
+ readonly amber: {
520
+ readonly label: "Amber";
521
+ readonly light: {
522
+ readonly primary: "oklch(0.555 0.163 48.998)";
523
+ readonly "primary-foreground": "oklch(0.987 0.022 95.277)";
524
+ readonly secondary: "oklch(0.967 0.001 286.375)";
525
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
526
+ readonly "chart-1": "oklch(0.879 0.169 91.605)";
527
+ readonly "chart-2": "oklch(0.769 0.188 70.08)";
528
+ readonly "chart-3": "oklch(0.666 0.179 58.318)";
529
+ readonly "chart-4": "oklch(0.555 0.163 48.998)";
530
+ readonly "chart-5": "oklch(0.473 0.137 46.201)";
531
+ readonly "sidebar-primary": "oklch(0.666 0.179 58.318)";
532
+ readonly "sidebar-primary-foreground": "oklch(0.987 0.022 95.277)";
533
+ };
534
+ readonly dark: {
535
+ readonly primary: "oklch(0.473 0.137 46.201)";
536
+ readonly "primary-foreground": "oklch(0.987 0.022 95.277)";
537
+ readonly secondary: "oklch(0.274 0.006 286.033)";
538
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
539
+ readonly "chart-1": "oklch(0.879 0.169 91.605)";
540
+ readonly "chart-2": "oklch(0.769 0.188 70.08)";
541
+ readonly "chart-3": "oklch(0.666 0.179 58.318)";
542
+ readonly "chart-4": "oklch(0.555 0.163 48.998)";
543
+ readonly "chart-5": "oklch(0.473 0.137 46.201)";
544
+ readonly "sidebar-primary": "oklch(0.769 0.188 70.08)";
545
+ readonly "sidebar-primary-foreground": "oklch(0.279 0.077 45.635)";
546
+ };
547
+ };
548
+ readonly blue: {
549
+ readonly label: "Blue";
550
+ readonly light: {
551
+ readonly primary: "oklch(0.488 0.243 264.376)";
552
+ readonly "primary-foreground": "oklch(0.97 0.014 254.604)";
553
+ readonly secondary: "oklch(0.967 0.001 286.375)";
554
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
555
+ readonly "chart-1": "oklch(0.809 0.105 251.813)";
556
+ readonly "chart-2": "oklch(0.623 0.214 259.815)";
557
+ readonly "chart-3": "oklch(0.546 0.245 262.881)";
558
+ readonly "chart-4": "oklch(0.488 0.243 264.376)";
559
+ readonly "chart-5": "oklch(0.424 0.199 265.638)";
560
+ readonly "sidebar-primary": "oklch(0.546 0.245 262.881)";
561
+ readonly "sidebar-primary-foreground": "oklch(0.97 0.014 254.604)";
562
+ };
563
+ readonly dark: {
564
+ readonly primary: "oklch(0.424 0.199 265.638)";
565
+ readonly "primary-foreground": "oklch(0.97 0.014 254.604)";
566
+ readonly secondary: "oklch(0.274 0.006 286.033)";
567
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
568
+ readonly "chart-1": "oklch(0.809 0.105 251.813)";
569
+ readonly "chart-2": "oklch(0.623 0.214 259.815)";
570
+ readonly "chart-3": "oklch(0.546 0.245 262.881)";
571
+ readonly "chart-4": "oklch(0.488 0.243 264.376)";
572
+ readonly "chart-5": "oklch(0.424 0.199 265.638)";
573
+ readonly "sidebar-primary": "oklch(0.623 0.214 259.815)";
574
+ readonly "sidebar-primary-foreground": "oklch(0.97 0.014 254.604)";
575
+ };
576
+ };
577
+ readonly cyan: {
578
+ readonly label: "Cyan";
579
+ readonly light: {
580
+ readonly primary: "oklch(0.52 0.105 223.128)";
581
+ readonly "primary-foreground": "oklch(0.984 0.019 200.873)";
582
+ readonly secondary: "oklch(0.967 0.001 286.375)";
583
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
584
+ readonly "chart-1": "oklch(0.865 0.127 207.078)";
585
+ readonly "chart-2": "oklch(0.715 0.143 215.221)";
586
+ readonly "chart-3": "oklch(0.609 0.126 221.723)";
587
+ readonly "chart-4": "oklch(0.52 0.105 223.128)";
588
+ readonly "chart-5": "oklch(0.45 0.085 224.283)";
589
+ readonly "sidebar-primary": "oklch(0.609 0.126 221.723)";
590
+ readonly "sidebar-primary-foreground": "oklch(0.984 0.019 200.873)";
591
+ };
592
+ readonly dark: {
593
+ readonly primary: "oklch(0.45 0.085 224.283)";
594
+ readonly "primary-foreground": "oklch(0.984 0.019 200.873)";
595
+ readonly secondary: "oklch(0.274 0.006 286.033)";
596
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
597
+ readonly "chart-1": "oklch(0.865 0.127 207.078)";
598
+ readonly "chart-2": "oklch(0.715 0.143 215.221)";
599
+ readonly "chart-3": "oklch(0.609 0.126 221.723)";
600
+ readonly "chart-4": "oklch(0.52 0.105 223.128)";
601
+ readonly "chart-5": "oklch(0.45 0.085 224.283)";
602
+ readonly "sidebar-primary": "oklch(0.715 0.143 215.221)";
603
+ readonly "sidebar-primary-foreground": "oklch(0.302 0.056 229.695)";
604
+ };
605
+ };
606
+ readonly emerald: {
607
+ readonly label: "Emerald";
608
+ readonly light: {
609
+ readonly primary: "oklch(0.508 0.118 165.612)";
610
+ readonly "primary-foreground": "oklch(0.979 0.021 166.113)";
611
+ readonly secondary: "oklch(0.967 0.001 286.375)";
612
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
613
+ readonly "chart-1": "oklch(0.845 0.143 164.978)";
614
+ readonly "chart-2": "oklch(0.696 0.17 162.48)";
615
+ readonly "chart-3": "oklch(0.596 0.145 163.225)";
616
+ readonly "chart-4": "oklch(0.508 0.118 165.612)";
617
+ readonly "chart-5": "oklch(0.432 0.095 166.913)";
618
+ readonly "sidebar-primary": "oklch(0.596 0.145 163.225)";
619
+ readonly "sidebar-primary-foreground": "oklch(0.979 0.021 166.113)";
620
+ };
621
+ readonly dark: {
622
+ readonly primary: "oklch(0.432 0.095 166.913)";
623
+ readonly "primary-foreground": "oklch(0.979 0.021 166.113)";
624
+ readonly secondary: "oklch(0.274 0.006 286.033)";
625
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
626
+ readonly "chart-1": "oklch(0.845 0.143 164.978)";
627
+ readonly "chart-2": "oklch(0.696 0.17 162.48)";
628
+ readonly "chart-3": "oklch(0.596 0.145 163.225)";
629
+ readonly "chart-4": "oklch(0.508 0.118 165.612)";
630
+ readonly "chart-5": "oklch(0.432 0.095 166.913)";
631
+ readonly "sidebar-primary": "oklch(0.696 0.17 162.48)";
632
+ readonly "sidebar-primary-foreground": "oklch(0.262 0.051 172.552)";
633
+ };
634
+ };
635
+ readonly fuchsia: {
636
+ readonly label: "Fuchsia";
637
+ readonly light: {
638
+ readonly primary: "oklch(0.518 0.253 323.949)";
639
+ readonly "primary-foreground": "oklch(0.977 0.017 320.058)";
640
+ readonly secondary: "oklch(0.967 0.001 286.375)";
641
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
642
+ readonly "chart-1": "oklch(0.833 0.145 321.434)";
643
+ readonly "chart-2": "oklch(0.667 0.295 322.15)";
644
+ readonly "chart-3": "oklch(0.591 0.293 322.896)";
645
+ readonly "chart-4": "oklch(0.518 0.253 323.949)";
646
+ readonly "chart-5": "oklch(0.452 0.211 324.591)";
647
+ readonly "sidebar-primary": "oklch(0.591 0.293 322.896)";
648
+ readonly "sidebar-primary-foreground": "oklch(0.977 0.017 320.058)";
649
+ };
650
+ readonly dark: {
651
+ readonly primary: "oklch(0.452 0.211 324.591)";
652
+ readonly "primary-foreground": "oklch(0.977 0.017 320.058)";
653
+ readonly secondary: "oklch(0.274 0.006 286.033)";
654
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
655
+ readonly "chart-1": "oklch(0.833 0.145 321.434)";
656
+ readonly "chart-2": "oklch(0.667 0.295 322.15)";
657
+ readonly "chart-3": "oklch(0.591 0.293 322.896)";
658
+ readonly "chart-4": "oklch(0.518 0.253 323.949)";
659
+ readonly "chart-5": "oklch(0.452 0.211 324.591)";
660
+ readonly "sidebar-primary": "oklch(0.667 0.295 322.15)";
661
+ readonly "sidebar-primary-foreground": "oklch(0.977 0.017 320.058)";
662
+ };
663
+ };
664
+ readonly green: {
665
+ readonly label: "Green";
666
+ readonly light: {
667
+ readonly primary: "oklch(0.527 0.154 150.069)";
668
+ readonly "primary-foreground": "oklch(0.982 0.018 155.826)";
669
+ readonly secondary: "oklch(0.967 0.001 286.375)";
670
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
671
+ readonly "chart-1": "oklch(0.871 0.15 154.449)";
672
+ readonly "chart-2": "oklch(0.723 0.219 149.579)";
673
+ readonly "chart-3": "oklch(0.627 0.194 149.214)";
674
+ readonly "chart-4": "oklch(0.527 0.154 150.069)";
675
+ readonly "chart-5": "oklch(0.448 0.119 151.328)";
676
+ readonly "sidebar-primary": "oklch(0.627 0.194 149.214)";
677
+ readonly "sidebar-primary-foreground": "oklch(0.982 0.018 155.826)";
678
+ };
679
+ readonly dark: {
680
+ readonly primary: "oklch(0.448 0.119 151.328)";
681
+ readonly "primary-foreground": "oklch(0.982 0.018 155.826)";
682
+ readonly secondary: "oklch(0.274 0.006 286.033)";
683
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
684
+ readonly "chart-1": "oklch(0.871 0.15 154.449)";
685
+ readonly "chart-2": "oklch(0.723 0.219 149.579)";
686
+ readonly "chart-3": "oklch(0.627 0.194 149.214)";
687
+ readonly "chart-4": "oklch(0.527 0.154 150.069)";
688
+ readonly "chart-5": "oklch(0.448 0.119 151.328)";
689
+ readonly "sidebar-primary": "oklch(0.723 0.219 149.579)";
690
+ readonly "sidebar-primary-foreground": "oklch(0.982 0.018 155.826)";
691
+ };
692
+ };
693
+ readonly indigo: {
694
+ readonly label: "Indigo";
695
+ readonly light: {
696
+ readonly primary: "oklch(0.457 0.24 277.023)";
697
+ readonly "primary-foreground": "oklch(0.962 0.018 272.314)";
698
+ readonly secondary: "oklch(0.967 0.001 286.375)";
699
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
700
+ readonly "chart-1": "oklch(0.785 0.115 274.713)";
701
+ readonly "chart-2": "oklch(0.585 0.233 277.117)";
702
+ readonly "chart-3": "oklch(0.511 0.262 276.966)";
703
+ readonly "chart-4": "oklch(0.457 0.24 277.023)";
704
+ readonly "chart-5": "oklch(0.398 0.195 277.366)";
705
+ readonly "sidebar-primary": "oklch(0.511 0.262 276.966)";
706
+ readonly "sidebar-primary-foreground": "oklch(0.962 0.018 272.314)";
707
+ };
708
+ readonly dark: {
709
+ readonly primary: "oklch(0.398 0.195 277.366)";
710
+ readonly "primary-foreground": "oklch(0.962 0.018 272.314)";
711
+ readonly secondary: "oklch(0.274 0.006 286.033)";
712
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
713
+ readonly "chart-1": "oklch(0.785 0.115 274.713)";
714
+ readonly "chart-2": "oklch(0.585 0.233 277.117)";
715
+ readonly "chart-3": "oklch(0.511 0.262 276.966)";
716
+ readonly "chart-4": "oklch(0.457 0.24 277.023)";
717
+ readonly "chart-5": "oklch(0.398 0.195 277.366)";
718
+ readonly "sidebar-primary": "oklch(0.585 0.233 277.117)";
719
+ readonly "sidebar-primary-foreground": "oklch(0.962 0.018 272.314)";
720
+ };
721
+ };
722
+ readonly lime: {
723
+ readonly label: "Lime";
724
+ readonly light: {
725
+ readonly primary: "oklch(0.841 0.238 128.85)";
726
+ readonly "primary-foreground": "oklch(0.405 0.101 131.063)";
727
+ readonly secondary: "oklch(0.967 0.001 286.375)";
728
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
729
+ readonly "chart-1": "oklch(0.897 0.196 126.665)";
730
+ readonly "chart-2": "oklch(0.768 0.233 130.85)";
731
+ readonly "chart-3": "oklch(0.648 0.2 131.684)";
732
+ readonly "chart-4": "oklch(0.532 0.157 131.589)";
733
+ readonly "chart-5": "oklch(0.453 0.124 130.933)";
734
+ readonly "sidebar-primary": "oklch(0.648 0.2 131.684)";
735
+ readonly "sidebar-primary-foreground": "oklch(0.986 0.031 120.757)";
736
+ };
737
+ readonly dark: {
738
+ readonly primary: "oklch(0.768 0.233 130.85)";
739
+ readonly "primary-foreground": "oklch(0.405 0.101 131.063)";
740
+ readonly secondary: "oklch(0.274 0.006 286.033)";
741
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
742
+ readonly "chart-1": "oklch(0.897 0.196 126.665)";
743
+ readonly "chart-2": "oklch(0.768 0.233 130.85)";
744
+ readonly "chart-3": "oklch(0.648 0.2 131.684)";
745
+ readonly "chart-4": "oklch(0.532 0.157 131.589)";
746
+ readonly "chart-5": "oklch(0.453 0.124 130.933)";
747
+ readonly "sidebar-primary": "oklch(0.768 0.233 130.85)";
748
+ readonly "sidebar-primary-foreground": "oklch(0.274 0.072 132.109)";
749
+ };
750
+ };
751
+ readonly orange: {
752
+ readonly label: "Orange";
753
+ readonly light: {
754
+ readonly primary: "oklch(0.553 0.195 38.402)";
755
+ readonly "primary-foreground": "oklch(0.98 0.016 73.684)";
756
+ readonly secondary: "oklch(0.967 0.001 286.375)";
757
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
758
+ readonly "chart-1": "oklch(0.837 0.128 66.29)";
759
+ readonly "chart-2": "oklch(0.705 0.213 47.604)";
760
+ readonly "chart-3": "oklch(0.646 0.222 41.116)";
761
+ readonly "chart-4": "oklch(0.553 0.195 38.402)";
762
+ readonly "chart-5": "oklch(0.47 0.157 37.304)";
763
+ readonly "sidebar-primary": "oklch(0.646 0.222 41.116)";
764
+ readonly "sidebar-primary-foreground": "oklch(0.98 0.016 73.684)";
765
+ };
766
+ readonly dark: {
767
+ readonly primary: "oklch(0.47 0.157 37.304)";
768
+ readonly "primary-foreground": "oklch(0.98 0.016 73.684)";
769
+ readonly secondary: "oklch(0.274 0.006 286.033)";
770
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
771
+ readonly "chart-1": "oklch(0.837 0.128 66.29)";
772
+ readonly "chart-2": "oklch(0.705 0.213 47.604)";
773
+ readonly "chart-3": "oklch(0.646 0.222 41.116)";
774
+ readonly "chart-4": "oklch(0.553 0.195 38.402)";
775
+ readonly "chart-5": "oklch(0.47 0.157 37.304)";
776
+ readonly "sidebar-primary": "oklch(0.705 0.213 47.604)";
777
+ readonly "sidebar-primary-foreground": "oklch(0.98 0.016 73.684)";
778
+ };
779
+ };
780
+ readonly pink: {
781
+ readonly label: "Pink";
782
+ readonly light: {
783
+ readonly primary: "oklch(0.525 0.223 3.958)";
784
+ readonly "primary-foreground": "oklch(0.971 0.014 343.198)";
785
+ readonly secondary: "oklch(0.967 0.001 286.375)";
786
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
787
+ readonly "chart-1": "oklch(0.823 0.12 346.018)";
788
+ readonly "chart-2": "oklch(0.656 0.241 354.308)";
789
+ readonly "chart-3": "oklch(0.592 0.249 0.584)";
790
+ readonly "chart-4": "oklch(0.525 0.223 3.958)";
791
+ readonly "chart-5": "oklch(0.459 0.187 3.815)";
792
+ readonly "sidebar-primary": "oklch(0.592 0.249 0.584)";
793
+ readonly "sidebar-primary-foreground": "oklch(0.971 0.014 343.198)";
794
+ };
795
+ readonly dark: {
796
+ readonly primary: "oklch(0.459 0.187 3.815)";
797
+ readonly "primary-foreground": "oklch(0.971 0.014 343.198)";
798
+ readonly secondary: "oklch(0.274 0.006 286.033)";
799
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
800
+ readonly "chart-1": "oklch(0.823 0.12 346.018)";
801
+ readonly "chart-2": "oklch(0.656 0.241 354.308)";
802
+ readonly "chart-3": "oklch(0.592 0.249 0.584)";
803
+ readonly "chart-4": "oklch(0.525 0.223 3.958)";
804
+ readonly "chart-5": "oklch(0.459 0.187 3.815)";
805
+ readonly "sidebar-primary": "oklch(0.656 0.241 354.308)";
806
+ readonly "sidebar-primary-foreground": "oklch(0.971 0.014 343.198)";
807
+ };
808
+ };
809
+ readonly purple: {
810
+ readonly label: "Purple";
811
+ readonly light: {
812
+ readonly primary: "oklch(0.496 0.265 301.924)";
813
+ readonly "primary-foreground": "oklch(0.977 0.014 308.299)";
814
+ readonly secondary: "oklch(0.967 0.001 286.375)";
815
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
816
+ readonly "chart-1": "oklch(0.827 0.119 306.383)";
817
+ readonly "chart-2": "oklch(0.627 0.265 303.9)";
818
+ readonly "chart-3": "oklch(0.558 0.288 302.321)";
819
+ readonly "chart-4": "oklch(0.496 0.265 301.924)";
820
+ readonly "chart-5": "oklch(0.438 0.218 303.724)";
821
+ readonly "sidebar-primary": "oklch(0.558 0.288 302.321)";
822
+ readonly "sidebar-primary-foreground": "oklch(0.977 0.014 308.299)";
823
+ };
824
+ readonly dark: {
825
+ readonly primary: "oklch(0.438 0.218 303.724)";
826
+ readonly "primary-foreground": "oklch(0.977 0.014 308.299)";
827
+ readonly secondary: "oklch(0.274 0.006 286.033)";
828
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
829
+ readonly "chart-1": "oklch(0.827 0.119 306.383)";
830
+ readonly "chart-2": "oklch(0.627 0.265 303.9)";
831
+ readonly "chart-3": "oklch(0.558 0.288 302.321)";
832
+ readonly "chart-4": "oklch(0.496 0.265 301.924)";
833
+ readonly "chart-5": "oklch(0.438 0.218 303.724)";
834
+ readonly "sidebar-primary": "oklch(0.627 0.265 303.9)";
835
+ readonly "sidebar-primary-foreground": "oklch(0.977 0.014 308.299)";
836
+ };
837
+ };
838
+ readonly red: {
839
+ readonly label: "Red";
840
+ readonly light: {
841
+ readonly primary: "oklch(0.505 0.213 27.518)";
842
+ readonly "primary-foreground": "oklch(0.971 0.013 17.38)";
843
+ readonly secondary: "oklch(0.967 0.001 286.375)";
844
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
845
+ readonly "chart-1": "oklch(0.808 0.114 19.571)";
846
+ readonly "chart-2": "oklch(0.637 0.237 25.331)";
847
+ readonly "chart-3": "oklch(0.577 0.245 27.325)";
848
+ readonly "chart-4": "oklch(0.505 0.213 27.518)";
849
+ readonly "chart-5": "oklch(0.444 0.177 26.899)";
850
+ readonly "sidebar-primary": "oklch(0.577 0.245 27.325)";
851
+ readonly "sidebar-primary-foreground": "oklch(0.971 0.013 17.38)";
852
+ };
853
+ readonly dark: {
854
+ readonly primary: "oklch(0.444 0.177 26.899)";
855
+ readonly "primary-foreground": "oklch(0.971 0.013 17.38)";
856
+ readonly secondary: "oklch(0.274 0.006 286.033)";
857
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
858
+ readonly "chart-1": "oklch(0.808 0.114 19.571)";
859
+ readonly "chart-2": "oklch(0.637 0.237 25.331)";
860
+ readonly "chart-3": "oklch(0.577 0.245 27.325)";
861
+ readonly "chart-4": "oklch(0.505 0.213 27.518)";
862
+ readonly "chart-5": "oklch(0.444 0.177 26.899)";
863
+ readonly "sidebar-primary": "oklch(0.637 0.237 25.331)";
864
+ readonly "sidebar-primary-foreground": "oklch(0.971 0.013 17.38)";
865
+ };
866
+ };
867
+ readonly rose: {
868
+ readonly label: "Rose";
869
+ readonly light: {
870
+ readonly primary: "oklch(0.514 0.222 16.935)";
871
+ readonly "primary-foreground": "oklch(0.969 0.015 12.422)";
872
+ readonly secondary: "oklch(0.967 0.001 286.375)";
873
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
874
+ readonly "chart-1": "oklch(0.81 0.117 11.638)";
875
+ readonly "chart-2": "oklch(0.645 0.246 16.439)";
876
+ readonly "chart-3": "oklch(0.586 0.253 17.585)";
877
+ readonly "chart-4": "oklch(0.514 0.222 16.935)";
878
+ readonly "chart-5": "oklch(0.455 0.188 13.697)";
879
+ readonly "sidebar-primary": "oklch(0.586 0.253 17.585)";
880
+ readonly "sidebar-primary-foreground": "oklch(0.969 0.015 12.422)";
881
+ };
882
+ readonly dark: {
883
+ readonly primary: "oklch(0.455 0.188 13.697)";
884
+ readonly "primary-foreground": "oklch(0.969 0.015 12.422)";
885
+ readonly secondary: "oklch(0.274 0.006 286.033)";
886
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
887
+ readonly "chart-1": "oklch(0.81 0.117 11.638)";
888
+ readonly "chart-2": "oklch(0.645 0.246 16.439)";
889
+ readonly "chart-3": "oklch(0.586 0.253 17.585)";
890
+ readonly "chart-4": "oklch(0.514 0.222 16.935)";
891
+ readonly "chart-5": "oklch(0.455 0.188 13.697)";
892
+ readonly sidebar: "oklch(0.21 0.006 285.885)";
893
+ readonly "sidebar-primary": "oklch(0.645 0.246 16.439)";
894
+ readonly "sidebar-primary-foreground": "oklch(0.969 0.015 12.422)";
895
+ };
896
+ };
897
+ readonly sky: {
898
+ readonly label: "Sky";
899
+ readonly light: {
900
+ readonly primary: "oklch(0.5 0.134 242.749)";
901
+ readonly "primary-foreground": "oklch(0.977 0.013 236.62)";
902
+ readonly secondary: "oklch(0.967 0.001 286.375)";
903
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
904
+ readonly "chart-1": "oklch(0.828 0.111 230.318)";
905
+ readonly "chart-2": "oklch(0.685 0.169 237.323)";
906
+ readonly "chart-3": "oklch(0.588 0.158 241.966)";
907
+ readonly "chart-4": "oklch(0.5 0.134 242.749)";
908
+ readonly "chart-5": "oklch(0.443 0.11 240.79)";
909
+ readonly "sidebar-primary": "oklch(0.588 0.158 241.966)";
910
+ readonly "sidebar-primary-foreground": "oklch(0.977 0.013 236.62)";
911
+ };
912
+ readonly dark: {
913
+ readonly primary: "oklch(0.443 0.11 240.79)";
914
+ readonly "primary-foreground": "oklch(0.977 0.013 236.62)";
915
+ readonly secondary: "oklch(0.274 0.006 286.033)";
916
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
917
+ readonly "chart-1": "oklch(0.828 0.111 230.318)";
918
+ readonly "chart-2": "oklch(0.685 0.169 237.323)";
919
+ readonly "chart-3": "oklch(0.588 0.158 241.966)";
920
+ readonly "chart-4": "oklch(0.5 0.134 242.749)";
921
+ readonly "chart-5": "oklch(0.443 0.11 240.79)";
922
+ readonly "sidebar-primary": "oklch(0.685 0.169 237.323)";
923
+ readonly "sidebar-primary-foreground": "oklch(0.293 0.066 243.157)";
924
+ };
925
+ };
926
+ readonly teal: {
927
+ readonly label: "Teal";
928
+ readonly light: {
929
+ readonly primary: "oklch(0.511 0.096 186.391)";
930
+ readonly "primary-foreground": "oklch(0.984 0.014 180.72)";
931
+ readonly secondary: "oklch(0.967 0.001 286.375)";
932
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
933
+ readonly "chart-1": "oklch(0.855 0.138 181.071)";
934
+ readonly "chart-2": "oklch(0.704 0.14 182.503)";
935
+ readonly "chart-3": "oklch(0.6 0.118 184.704)";
936
+ readonly "chart-4": "oklch(0.511 0.096 186.391)";
937
+ readonly "chart-5": "oklch(0.437 0.078 188.216)";
938
+ readonly "sidebar-primary": "oklch(0.6 0.118 184.704)";
939
+ readonly "sidebar-primary-foreground": "oklch(0.984 0.014 180.72)";
940
+ };
941
+ readonly dark: {
942
+ readonly primary: "oklch(0.437 0.078 188.216)";
943
+ readonly "primary-foreground": "oklch(0.984 0.014 180.72)";
944
+ readonly secondary: "oklch(0.274 0.006 286.033)";
945
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
946
+ readonly "chart-1": "oklch(0.855 0.138 181.071)";
947
+ readonly "chart-2": "oklch(0.704 0.14 182.503)";
948
+ readonly "chart-3": "oklch(0.6 0.118 184.704)";
949
+ readonly "chart-4": "oklch(0.511 0.096 186.391)";
950
+ readonly "chart-5": "oklch(0.437 0.078 188.216)";
951
+ readonly "sidebar-primary": "oklch(0.704 0.14 182.503)";
952
+ readonly "sidebar-primary-foreground": "oklch(0.277 0.046 192.524)";
953
+ };
954
+ };
955
+ readonly violet: {
956
+ readonly label: "Violet";
957
+ readonly light: {
958
+ readonly primary: "oklch(0.491 0.27 292.581)";
959
+ readonly "primary-foreground": "oklch(0.969 0.016 293.756)";
960
+ readonly secondary: "oklch(0.967 0.001 286.375)";
961
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
962
+ readonly "chart-1": "oklch(0.811 0.111 293.571)";
963
+ readonly "chart-2": "oklch(0.606 0.25 292.717)";
964
+ readonly "chart-3": "oklch(0.541 0.281 293.009)";
965
+ readonly "chart-4": "oklch(0.491 0.27 292.581)";
966
+ readonly "chart-5": "oklch(0.432 0.232 292.759)";
967
+ readonly "sidebar-primary": "oklch(0.541 0.281 293.009)";
968
+ readonly "sidebar-primary-foreground": "oklch(0.969 0.016 293.756)";
969
+ };
970
+ readonly dark: {
971
+ readonly primary: "oklch(0.432 0.232 292.759)";
972
+ readonly "primary-foreground": "oklch(0.969 0.016 293.756)";
973
+ readonly secondary: "oklch(0.274 0.006 286.033)";
974
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
975
+ readonly "chart-1": "oklch(0.811 0.111 293.571)";
976
+ readonly "chart-2": "oklch(0.606 0.25 292.717)";
977
+ readonly "chart-3": "oklch(0.541 0.281 293.009)";
978
+ readonly "chart-4": "oklch(0.491 0.27 292.581)";
979
+ readonly "chart-5": "oklch(0.432 0.232 292.759)";
980
+ readonly "sidebar-primary": "oklch(0.606 0.25 292.717)";
981
+ readonly "sidebar-primary-foreground": "oklch(0.969 0.016 293.756)";
982
+ };
983
+ };
984
+ readonly yellow: {
985
+ readonly label: "Yellow";
986
+ readonly light: {
987
+ readonly primary: "oklch(0.852 0.199 91.936)";
988
+ readonly "primary-foreground": "oklch(0.421 0.095 57.708)";
989
+ readonly secondary: "oklch(0.967 0.001 286.375)";
990
+ readonly "secondary-foreground": "oklch(0.21 0.006 285.885)";
991
+ readonly "chart-1": "oklch(0.905 0.182 98.111)";
992
+ readonly "chart-2": "oklch(0.795 0.184 86.047)";
993
+ readonly "chart-3": "oklch(0.681 0.162 75.834)";
994
+ readonly "chart-4": "oklch(0.554 0.135 66.442)";
995
+ readonly "chart-5": "oklch(0.476 0.114 61.907)";
996
+ readonly "sidebar-primary": "oklch(0.681 0.162 75.834)";
997
+ readonly "sidebar-primary-foreground": "oklch(0.987 0.026 102.212)";
998
+ };
999
+ readonly dark: {
1000
+ readonly primary: "oklch(0.795 0.184 86.047)";
1001
+ readonly "primary-foreground": "oklch(0.421 0.095 57.708)";
1002
+ readonly secondary: "oklch(0.274 0.006 286.033)";
1003
+ readonly "secondary-foreground": "oklch(0.985 0 0)";
1004
+ readonly "chart-1": "oklch(0.905 0.182 98.111)";
1005
+ readonly "chart-2": "oklch(0.795 0.184 86.047)";
1006
+ readonly "chart-3": "oklch(0.681 0.162 75.834)";
1007
+ readonly "chart-4": "oklch(0.554 0.135 66.442)";
1008
+ readonly "chart-5": "oklch(0.476 0.114 61.907)";
1009
+ readonly "sidebar-primary": "oklch(0.795 0.184 86.047)";
1010
+ readonly "sidebar-primary-foreground": "oklch(0.987 0.026 102.212)";
1011
+ };
1012
+ };
1013
+ };
1014
+ /**
1015
+ * Every token name a base color defines, in declaration order — the order the
1016
+ * rendered stylesheet emits, so a scaffold's `:root` block reads the same way
1017
+ * as shadcn's own docs.
1018
+ */
1019
+ declare const TOKEN_ORDER: readonly ["background", "foreground", "card", "card-foreground", "popover", "popover-foreground", "primary", "primary-foreground", "secondary", "secondary-foreground", "muted", "muted-foreground", "accent", "accent-foreground", "destructive", "border", "input", "ring", "chart-1", "chart-2", "chart-3", "chart-4", "chart-5", "radius", "sidebar", "sidebar-foreground", "sidebar-primary", "sidebar-primary-foreground", "sidebar-accent", "sidebar-accent-foreground", "sidebar-border", "sidebar-ring"];
1020
+
1021
+ /**
1022
+ * AUTO-GENERATED by scripts/gen-shadcn-fonts.ts — DO NOT EDIT BY HAND.
1023
+ *
1024
+ * shadcn/ui's typefaces: 17 sans, 7 serif, 2 mono. Each is
1025
+ * self-hosted through its `@fontsource-variable/*` package — a dependency and a
1026
+ * CSS `@import`, not a request to Google's CDN.
1027
+ *
1028
+ * Regenerate with `npm run codegen:fonts`.
1029
+ */
1030
+ /** One typeface: how to name it, install it, and write it into a font stack. */
1031
+ interface FontDefinition {
1032
+ /** Display name, e.g. `Instrument Serif`. */
1033
+ readonly label: string;
1034
+ /** Which slot it fills, and therefore which `--font-*` variable it can set. */
1035
+ readonly type: "sans" | "serif" | "mono";
1036
+ /** The CSS font stack, fallback included. */
1037
+ readonly family: string;
1038
+ /** The npm package that ships the files, added to the scaffold's dependencies. */
1039
+ readonly dependency: string;
1040
+ }
1041
+ /** Every typeface, in upstream order (sans first, then mono, then serif). */
1042
+ declare const FONTS: {
1043
+ readonly geist: {
1044
+ readonly label: "Geist";
1045
+ readonly type: "sans";
1046
+ readonly family: "'Geist Variable', sans-serif";
1047
+ readonly dependency: "@fontsource-variable/geist";
1048
+ };
1049
+ readonly inter: {
1050
+ readonly label: "Inter";
1051
+ readonly type: "sans";
1052
+ readonly family: "'Inter Variable', sans-serif";
1053
+ readonly dependency: "@fontsource-variable/inter";
1054
+ };
1055
+ readonly "noto-sans": {
1056
+ readonly label: "Noto Sans";
1057
+ readonly type: "sans";
1058
+ readonly family: "'Noto Sans Variable', sans-serif";
1059
+ readonly dependency: "@fontsource-variable/noto-sans";
1060
+ };
1061
+ readonly "nunito-sans": {
1062
+ readonly label: "Nunito Sans";
1063
+ readonly type: "sans";
1064
+ readonly family: "'Nunito Sans Variable', sans-serif";
1065
+ readonly dependency: "@fontsource-variable/nunito-sans";
1066
+ };
1067
+ readonly figtree: {
1068
+ readonly label: "Figtree";
1069
+ readonly type: "sans";
1070
+ readonly family: "'Figtree Variable', sans-serif";
1071
+ readonly dependency: "@fontsource-variable/figtree";
1072
+ };
1073
+ readonly roboto: {
1074
+ readonly label: "Roboto";
1075
+ readonly type: "sans";
1076
+ readonly family: "'Roboto Variable', sans-serif";
1077
+ readonly dependency: "@fontsource-variable/roboto";
1078
+ };
1079
+ readonly raleway: {
1080
+ readonly label: "Raleway";
1081
+ readonly type: "sans";
1082
+ readonly family: "'Raleway Variable', sans-serif";
1083
+ readonly dependency: "@fontsource-variable/raleway";
1084
+ };
1085
+ readonly "dm-sans": {
1086
+ readonly label: "DM Sans";
1087
+ readonly type: "sans";
1088
+ readonly family: "'DM Sans Variable', sans-serif";
1089
+ readonly dependency: "@fontsource-variable/dm-sans";
1090
+ };
1091
+ readonly "public-sans": {
1092
+ readonly label: "Public Sans";
1093
+ readonly type: "sans";
1094
+ readonly family: "'Public Sans Variable', sans-serif";
1095
+ readonly dependency: "@fontsource-variable/public-sans";
1096
+ };
1097
+ readonly outfit: {
1098
+ readonly label: "Outfit";
1099
+ readonly type: "sans";
1100
+ readonly family: "'Outfit Variable', sans-serif";
1101
+ readonly dependency: "@fontsource-variable/outfit";
1102
+ };
1103
+ readonly oxanium: {
1104
+ readonly label: "Oxanium";
1105
+ readonly type: "sans";
1106
+ readonly family: "'Oxanium Variable', sans-serif";
1107
+ readonly dependency: "@fontsource-variable/oxanium";
1108
+ };
1109
+ readonly manrope: {
1110
+ readonly label: "Manrope";
1111
+ readonly type: "sans";
1112
+ readonly family: "'Manrope Variable', sans-serif";
1113
+ readonly dependency: "@fontsource-variable/manrope";
1114
+ };
1115
+ readonly "space-grotesk": {
1116
+ readonly label: "Space Grotesk";
1117
+ readonly type: "sans";
1118
+ readonly family: "'Space Grotesk Variable', sans-serif";
1119
+ readonly dependency: "@fontsource-variable/space-grotesk";
1120
+ };
1121
+ readonly montserrat: {
1122
+ readonly label: "Montserrat";
1123
+ readonly type: "sans";
1124
+ readonly family: "'Montserrat Variable', sans-serif";
1125
+ readonly dependency: "@fontsource-variable/montserrat";
1126
+ };
1127
+ readonly "ibm-plex-sans": {
1128
+ readonly label: "IBM Plex Sans";
1129
+ readonly type: "sans";
1130
+ readonly family: "'IBM Plex Sans Variable', sans-serif";
1131
+ readonly dependency: "@fontsource-variable/ibm-plex-sans";
1132
+ };
1133
+ readonly "source-sans-3": {
1134
+ readonly label: "Source Sans 3";
1135
+ readonly type: "sans";
1136
+ readonly family: "'Source Sans 3 Variable', sans-serif";
1137
+ readonly dependency: "@fontsource-variable/source-sans-3";
1138
+ };
1139
+ readonly "instrument-sans": {
1140
+ readonly label: "Instrument Sans";
1141
+ readonly type: "sans";
1142
+ readonly family: "'Instrument Sans Variable', sans-serif";
1143
+ readonly dependency: "@fontsource-variable/instrument-sans";
1144
+ };
1145
+ readonly "jetbrains-mono": {
1146
+ readonly label: "JetBrains Mono";
1147
+ readonly type: "mono";
1148
+ readonly family: "'JetBrains Mono Variable', monospace";
1149
+ readonly dependency: "@fontsource-variable/jetbrains-mono";
1150
+ };
1151
+ readonly "geist-mono": {
1152
+ readonly label: "Geist Mono";
1153
+ readonly type: "mono";
1154
+ readonly family: "'Geist Mono Variable', monospace";
1155
+ readonly dependency: "@fontsource-variable/geist-mono";
1156
+ };
1157
+ readonly "noto-serif": {
1158
+ readonly label: "Noto Serif";
1159
+ readonly type: "serif";
1160
+ readonly family: "'Noto Serif Variable', serif";
1161
+ readonly dependency: "@fontsource-variable/noto-serif";
1162
+ };
1163
+ readonly "roboto-slab": {
1164
+ readonly label: "Roboto Slab";
1165
+ readonly type: "serif";
1166
+ readonly family: "'Roboto Slab Variable', serif";
1167
+ readonly dependency: "@fontsource-variable/roboto-slab";
1168
+ };
1169
+ readonly merriweather: {
1170
+ readonly label: "Merriweather";
1171
+ readonly type: "serif";
1172
+ readonly family: "'Merriweather Variable', serif";
1173
+ readonly dependency: "@fontsource-variable/merriweather";
1174
+ };
1175
+ readonly lora: {
1176
+ readonly label: "Lora";
1177
+ readonly type: "serif";
1178
+ readonly family: "'Lora Variable', serif";
1179
+ readonly dependency: "@fontsource-variable/lora";
1180
+ };
1181
+ readonly "playfair-display": {
1182
+ readonly label: "Playfair Display";
1183
+ readonly type: "serif";
1184
+ readonly family: "'Playfair Display Variable', serif";
1185
+ readonly dependency: "@fontsource-variable/playfair-display";
1186
+ };
1187
+ readonly "eb-garamond": {
1188
+ readonly label: "EB Garamond";
1189
+ readonly type: "serif";
1190
+ readonly family: "'EB Garamond Variable', serif";
1191
+ readonly dependency: "@fontsource-variable/eb-garamond";
1192
+ };
1193
+ readonly "instrument-serif": {
1194
+ readonly label: "Instrument Serif";
1195
+ readonly type: "serif";
1196
+ readonly family: "'Instrument Serif', serif";
1197
+ readonly dependency: "@fontsource/instrument-serif";
1198
+ };
1199
+ };
1200
+
1201
+ /**
1202
+ * Icon-library presets — the one visual axis that is genuinely framework-shaped.
1203
+ *
1204
+ * A theme is CSS: the same token values render identically under React and
1205
+ * Svelte, which is why `theme-presets.ts` never mentions a framework. An icon
1206
+ * set is not. Each library ships a different package per framework, names its
1207
+ * components differently (`ArrowRight` vs `IconArrowRight`), and exposes them
1208
+ * through a different import shape (named export, deep path, barrel). So this
1209
+ * module holds one binding PER LIBRARY PER FRAMEWORK, and a preset asks for the
1210
+ * pair it needs.
1211
+ *
1212
+ * Three things depend on the answer, and all three have to agree or the
1213
+ * scaffold does not compile: the dependency in `package.json`, the import line
1214
+ * in the landing page, and — for shadcn/ui — the `iconLibrary` field in
1215
+ * `components.json`, which is what makes `npx shadcn@latest add <component>`
1216
+ * write icons from the set the project already has rather than reinstalling
1217
+ * lucide alongside it.
1218
+ *
1219
+ * Browser-safe: pure data and string building.
1220
+ */
1221
+ /** Every icon library `--icons` accepts, in prompt/help order. */
1222
+ declare const ICON_LIBRARIES: readonly ["lucide", "tabler", "phosphor"];
1223
+ type IconLibraryId = (typeof ICON_LIBRARIES)[number];
1224
+ /** The set a scaffold gets when nothing selects one — shadcn/ui's own default. */
1225
+ declare const DEFAULT_ICON_LIBRARY: IconLibraryId;
1226
+ /**
1227
+ * The framework's half of an icon library: what to install, and how to reach
1228
+ * one icon.
1229
+ *
1230
+ * Only the icons the SCAFFOLD itself writes are modelled concretely: the
1231
+ * landing page's arrow, and the three the mode toggle cycles through.
1232
+ * Everything past that is the user's code, and the prose in
1233
+ * {@link IconLibrary.guidance} is what tells them (and any agent) the import
1234
+ * shape for the rest.
1235
+ *
1236
+ * The mode icons are not optional detail. `--dark toggle` emits a component
1237
+ * that imports three of them, so a binding that named only the arrow would
1238
+ * produce a scaffold importing lucide from a project that installs Tabler —
1239
+ * a build failure on the first `npm run dev`, caused by a flag that has
1240
+ * nothing to do with dark mode.
1241
+ */
1242
+ interface IconBinding {
1243
+ /** Added to the scaffold's `dependencies`. */
1244
+ readonly dependency: Readonly<Record<string, string>>;
1245
+ /** The import line for the landing page's arrow. */
1246
+ readonly arrowImport: string;
1247
+ /** The component that import binds, as written in markup. */
1248
+ readonly arrowComponent: string;
1249
+ /** Import lines for the mode toggle's three icons. */
1250
+ readonly modeImports: readonly string[];
1251
+ /** What those imports bind, keyed by the mode each represents. */
1252
+ readonly modeComponents: {
1253
+ readonly system: string;
1254
+ readonly light: string;
1255
+ readonly dark: string;
1256
+ };
1257
+ }
1258
+ /** One icon library, across every framework that can use it. */
1259
+ interface IconLibrary {
1260
+ readonly id: IconLibraryId;
1261
+ readonly label: string;
1262
+ /**
1263
+ * The `iconLibrary` value in shadcn/ui's `components.json`, when the CLI
1264
+ * knows this set.
1265
+ *
1266
+ * `undefined` leaves the field off entirely rather than writing a value the
1267
+ * CLI would reject — a components.json it cannot parse breaks `add` for every
1268
+ * component, which is a far worse outcome than icons defaulting to lucide.
1269
+ */
1270
+ readonly componentsJson: string | undefined;
1271
+ readonly react: IconBinding;
1272
+ readonly svelte: IconBinding;
1273
+ /** How to import any icon, for the README and the agent brief. */
1274
+ readonly guidance: {
1275
+ readonly react: string;
1276
+ readonly svelte: string;
1277
+ };
1278
+ }
1279
+ /** Look up a library by id, or `undefined` when the id is not one. */
1280
+ declare function findIconLibrary(id: string): IconLibrary | undefined;
1281
+ /** Every library, in {@link ICON_LIBRARIES} order. */
1282
+ declare function allIconLibraries(): IconLibrary[];
1283
+ /** The library a scaffold gets when nothing selects one. */
1284
+ declare function defaultIconLibrary(): IconLibrary;
1285
+ /**
1286
+ * Validate an `--icons` value, mirroring `--framework` and `--theme`: an
1287
+ * unknown id is a hard error naming every valid one, never a silent fallback.
1288
+ */
1289
+ declare function resolveIconsFlag(raw: string): IconLibrary;
1290
+ /** Resolve a possibly-absent choice to a library. */
1291
+ declare function iconLibraryOf(id: IconLibraryId | undefined): IconLibrary;
1292
+
1293
+ /**
1294
+ * Theme presets — the seam that lets `xanots init` scaffold a project that does
1295
+ * not look like every other shadcn/ui scaffold.
1296
+ *
1297
+ * shadcn/ui components carry no colors of their own: every one of them is
1298
+ * Tailwind utilities over a fixed set of semantic custom properties
1299
+ * (`bg-primary`, `text-muted-foreground`, `border-input`, …). Choosing a theme
1300
+ * is therefore choosing the VALUES of ~32 custom properties, and nothing else —
1301
+ * no component is edited, no dependency is added, and `npx shadcn@latest add
1302
+ * <name>` keeps working afterwards because the component it writes reads the
1303
+ * same names.
1304
+ *
1305
+ * Upstream composes those values from two registry items rather than one
1306
+ * (`apps/v4/app/(app)/(create)/lib/merge-theme.ts`):
1307
+ *
1308
+ * base color — all 32 tokens, a grayscale ramp plus a shared destructive red
1309
+ * accent — 11 of them, the ones that read as "the brand"
1310
+ *
1311
+ * and merges them with a shallow per-mode spread. {@link buildTheme} is that
1312
+ * same spread, so a `zinc-blue` scaffold is byte-identical to what
1313
+ * ui.shadcn.com hands out for the same pair. 7 bases × (17 accents + none) is
1314
+ * 126 themes from two small tables, which is why they are composed here rather
1315
+ * than pre-multiplied in the generated file.
1316
+ *
1317
+ * {@link themeFromRegistryItem} is the escape hatch: any `registry:theme` JSON —
1318
+ * shadcn's own, tweakcn's, a design team's private registry — is the same
1319
+ * light/dark token map under a schema, so it lands as a {@link Theme} too.
1320
+ *
1321
+ * Browser-safe: pure string building and arithmetic, no node:* imports. The
1322
+ * flag parsing that reads a URL and the prompt that reads a TTY live in
1323
+ * `theme-resolve.ts`, mirroring the `frontend-presets` / `frontend-resolve`
1324
+ * split.
1325
+ */
1326
+
1327
+ /** Every base color, in upstream order — the complete-token half of a theme. */
1328
+ declare const BASE_COLORS: readonly BaseColorId[];
1329
+ type BaseColorId = keyof typeof BASE_TOKENS;
1330
+ /** Every accent, in upstream order — the partial, brand-carrying half. */
1331
+ declare const ACCENTS: readonly AccentId[];
1332
+ type AccentId = keyof typeof ACCENT_TOKENS;
1333
+ /** The base color a scaffold gets when nothing selects one: plain shadcn/ui. */
1334
+ declare const DEFAULT_BASE_COLOR: BaseColorId;
1335
+ /**
1336
+ * How the scaffold treats dark mode.
1337
+ *
1338
+ * Every base color ships a full dark palette and every shadcn component is
1339
+ * written for both, so the tokens are there whatever this says — the only
1340
+ * question is what puts `class="dark"` on `<html>`.
1341
+ *
1342
+ * `system` follows the OS setting with no UI. `toggle` adds that plus a control
1343
+ * and a remembered preference. `off` writes light-only, which is what the
1344
+ * scaffold did before this existed.
1345
+ */
1346
+ declare const DARK_MODES: readonly ["system", "toggle", "off"];
1347
+ type DarkMode = (typeof DARK_MODES)[number];
1348
+ /**
1349
+ * The radius every upstream base color declares, and the fallback for an
1350
+ * imported theme that declares none. Read from the table rather than written as
1351
+ * a literal, so it cannot drift from what a default scaffold gets.
1352
+ */
1353
+ declare const DEFAULT_RADIUS: string;
1354
+ /** Dark handling when nothing selects it. Following the OS is the modern default. */
1355
+ declare const DEFAULT_DARK_MODE: DarkMode;
1356
+ /** A resolved theme: a label, the two token maps, and where it came from. */
1357
+ interface Theme {
1358
+ /** Stable id — `neutral`, `zinc-blue`, or an imported item's registry name. */
1359
+ readonly id: string;
1360
+ /** Human label for prose and the interactive prompt, e.g. `Zinc Blue`. */
1361
+ readonly label: string;
1362
+ /**
1363
+ * The base color this theme was built from, for `components.json`'s
1364
+ * `tailwind.baseColor`. The shadcn CLI reads it to decide which palette a
1365
+ * newly added component's *hard-coded* colors come from (the handful that are
1366
+ * not tokens), so a scaffold whose stylesheet says one thing and whose
1367
+ * `components.json` says another produces components that clash with it.
1368
+ *
1369
+ * `null` for an imported registry theme, whose tokens belong to no upstream
1370
+ * base — the caller then falls back to the CLI's own default rather than
1371
+ * claiming a base color the palette does not match.
1372
+ */
1373
+ readonly baseColor: BaseColorId | null;
1374
+ /** `:root` tokens, without the leading `--`. */
1375
+ readonly light: Readonly<Record<string, string>>;
1376
+ /** `.dark` tokens, without the leading `--`. */
1377
+ readonly dark: Readonly<Record<string, string>>;
1378
+ }
1379
+ /** Every typeface `--font`/`--font-mono`/`--font-heading` accept. */
1380
+ declare const FONT_IDS: readonly FontId[];
1381
+ type FontId = keyof typeof FONTS;
1382
+ /**
1383
+ * The typefaces a scaffold sets, by the Tailwind slot each fills.
1384
+ *
1385
+ * All three are optional and all three default to ABSENT rather than to a
1386
+ * named face. Tailwind v4 already ships a system stack for every slot, and a
1387
+ * scaffold that names no font is both faster (no font files) and neutral (it
1388
+ * looks native on every platform) — which is what shadcn's own starter does.
1389
+ * So `undefined` here is a real choice, not a missing value.
1390
+ */
1391
+ interface FontChoice {
1392
+ /** Body text — Tailwind's `--font-sans`, which v4 also uses as the page default. */
1393
+ readonly sans?: FontId;
1394
+ /** Code — Tailwind's `--font-mono`. */
1395
+ readonly mono?: FontId;
1396
+ /**
1397
+ * Headings. Not a Tailwind slot: it emits `--font-heading` plus a base-layer
1398
+ * rule binding `h1`–`h6` to it, because a display face applied to body text
1399
+ * is unreadable and applied by hand to every heading is forgotten.
1400
+ *
1401
+ * Absent means headings inherit the body face, which is the common case.
1402
+ */
1403
+ readonly heading?: FontId;
1404
+ }
1405
+ /** A theme plus how the scaffold switches into its dark half. */
1406
+ interface ThemeChoice {
1407
+ readonly theme: Theme;
1408
+ readonly dark: DarkMode;
1409
+ /**
1410
+ * Typefaces. Optional so every caller that predates fonts — and every test of
1411
+ * the color half — keeps compiling; absent means the system stack.
1412
+ */
1413
+ readonly fonts?: FontChoice;
1414
+ /**
1415
+ * The icon set, resolved against `icon-presets.ts`. Optional for the same
1416
+ * reason; absent means Lucide, which is what shadcn/ui defaults to.
1417
+ */
1418
+ readonly icons?: IconLibraryId;
1419
+ }
1420
+ /** Look up a typeface, or `undefined` when the id is not one. */
1421
+ declare function findFont(id: string): FontId | undefined;
1422
+ /**
1423
+ * Validate a font flag. `slot` names which of `--font` / `--font-mono` /
1424
+ * `--font-heading` is being resolved, so the error says which one to fix.
1425
+ *
1426
+ * A face is refused for a slot it cannot fill: `--font-mono lora` would emit a
1427
+ * serif as the code font, which is a mistake nothing downstream can catch.
1428
+ * `--font-heading` accepts anything, because a display serif over a sans body
1429
+ * is a legitimate and common pairing.
1430
+ */
1431
+ declare function resolveFontFlag(raw: string, slot: "sans" | "mono" | "heading"): FontId;
1432
+ /** The npm packages a font choice adds — one `@fontsource-*` per named face. */
1433
+ declare function fontDependencies(fonts: FontChoice | undefined): Record<string, string>;
1434
+ /**
1435
+ * The `@import` lines that load the chosen faces, before Tailwind's own.
1436
+ *
1437
+ * Self-hosted through the fontsource packages rather than fetched from
1438
+ * fonts.googleapis.com: a CDN link is a third-party request on every page load
1439
+ * of the user's app, it fails behind a firewall, and it is a privacy question
1440
+ * someone inherits later. Vite resolves a bare specifier in a CSS `@import`
1441
+ * through the same resolver it uses for JS, so this needs no plugin.
1442
+ */
1443
+ declare function fontImports(fonts: FontChoice | undefined): string[];
1444
+ /** The `@theme` entries a font choice contributes, in Tailwind slot order. */
1445
+ declare function fontThemeVars(fonts: FontChoice | undefined): Array<[string, string]>;
1446
+ /** A human label for a font choice, e.g. `Geist / Instrument Serif headings`. */
1447
+ declare function describeFonts(fonts: FontChoice | undefined): string;
1448
+ /**
1449
+ * Compose a base color with an optional accent, exactly as upstream's
1450
+ * `buildTheme` does: a shallow spread of the accent's partial map over the
1451
+ * base's complete one, per mode.
1452
+ *
1453
+ * Shallow is the whole point. An accent names `primary` and leaves `background`
1454
+ * alone precisely so that the neutral chrome keeps coming from the base, and
1455
+ * anything cleverer here (blending, deriving a foreground) would produce
1456
+ * colors that upstream's own preview never shows.
1457
+ */
1458
+ declare function buildTheme(base: BaseColorId, accent: AccentId | null): Theme;
1459
+ /** The theme a scaffold gets when nothing selects one. */
1460
+ declare function defaultTheme(): Theme;
1461
+ /** The full default: plain shadcn/ui, following the OS for dark mode. */
1462
+ declare function defaultThemeChoice(): ThemeChoice;
1463
+ /**
1464
+ * Override a theme's corner radius — the one token that is a length rather than
1465
+ * a color, and the one most likely to be wanted independently of the palette.
1466
+ *
1467
+ * Accepts a bare number as rem (`--radius 0` and `--radius 1` are what people
1468
+ * type) or any CSS length verbatim.
1469
+ */
1470
+ declare function withRadius(theme: Theme, radius: string): Theme;
1471
+ /**
1472
+ * Normalise a `--radius` value: a bare number becomes rem, anything with a unit
1473
+ * passes through, and anything else is a hard error rather than a stylesheet
1474
+ * that silently drops the declaration.
1475
+ */
1476
+ declare function normalizeRadius(raw: string): string;
1477
+ /**
1478
+ * Parse a `--theme` id: `<base>` or `<base>-<accent>`.
1479
+ *
1480
+ * Split on the LAST hyphen, and only when the tail is a known accent — no base
1481
+ * or accent name contains one today, but reading it as "everything before the
1482
+ * accent" keeps a future `warm-gray` base from being parsed as a base `warm`
1483
+ * with an unknown accent.
1484
+ *
1485
+ * An unknown value is a hard error naming both halves' valid values, mirroring
1486
+ * `--framework` and `--ai`. Someone typing `--theme blue` (an accent, not a
1487
+ * base) is the common near-miss, so the message says which side each name is
1488
+ * on rather than printing one undifferentiated list.
1489
+ */
1490
+ declare function resolveThemeFlag(raw: string): Theme;
1491
+ declare function isBaseColor(id: string): id is BaseColorId;
1492
+ declare function isAccent(id: string): id is AccentId;
1493
+ /** Validate a `--dark` value, mirroring the other scaffold flags' hard errors. */
1494
+ declare function resolveDarkModeFlag(raw: string): DarkMode;
1495
+ /**
1496
+ * The interactive menu: a short, opinionated list rather than all 126
1497
+ * combinations.
1498
+ *
1499
+ * A prompt is for someone who wants to not think about this. The full space
1500
+ * stays reachable — the prompt accepts any `<base>-<accent>` or URL typed in
1501
+ * place of a number, and `--theme` accepts the same — so this list is a
1502
+ * shortcut, not the supported set. One entry per base color, each paired with
1503
+ * an accent that suits its temperature, keeps the menu one screen tall while
1504
+ * still showing what every base looks like.
1505
+ */
1506
+ declare const CURATED_THEMES: readonly string[];
1507
+ /** {@link CURATED_THEMES}, resolved. Throws at import time if an id ever rots. */
1508
+ declare function curatedThemes(): Theme[];
1509
+ /**
1510
+ * Turn a shadcn `registry:theme` item into a {@link Theme}.
1511
+ *
1512
+ * Two normalisations, both of which decide whether an imported theme actually
1513
+ * renders:
1514
+ *
1515
+ * 1. `cssVars.theme` (mode-independent tokens, where `radius` usually lives) is
1516
+ * folded into BOTH modes. It is a separate bucket upstream because the CLI
1517
+ * writes it into `@theme` rather than `:root`; we render one token block per
1518
+ * mode, so a value left in that bucket would be dropped entirely.
1519
+ * 2. Bare HSL triples (`"240 5% 6%"`) are wrapped in `hsl()`. Themes authored
1520
+ * against shadcn's Tailwind v3 era emit them, because v3's config wrapped
1521
+ * them for you. Written raw into a v4 stylesheet, `--primary: 240 5% 6%` is
1522
+ * a valid custom property holding a value that is not a color, so every
1523
+ * control using it renders with no color at all and nothing reports an
1524
+ * error.
1525
+ *
1526
+ * A missing `radius` is filled in with the default. The stylesheet's
1527
+ * `@theme inline` block derives `--radius-sm/md/lg/xl` from `--radius`, and
1528
+ * `Button` and `Card` are already using them — so importing one of shadcn's own
1529
+ * legacy theme JSONs (none of which carry a radius) would otherwise produce a
1530
+ * scaffold whose two starter components have square corners for no stated
1531
+ * reason.
1532
+ *
1533
+ * `source` names where the JSON came from, for the error message and the
1534
+ * generated stylesheet's provenance comment.
1535
+ */
1536
+ declare function themeFromRegistryItem(raw: unknown, source: string): Theme;
1537
+ /**
1538
+ * Order a theme's tokens for rendering: the upstream order first, then anything
1539
+ * an imported theme adds, alphabetically.
1540
+ *
1541
+ * Upstream order is not alphabetical — it groups surfaces, then intent, then
1542
+ * the chart ramp, then the sidebar — and matching it means a scaffold's
1543
+ * stylesheet can be read side by side with shadcn's docs. `radius` is the one
1544
+ * token hoisted out of that order: it sits between the chart ramp and the
1545
+ * sidebar in the registry, where it reads as an afterthought, and first in
1546
+ * every stylesheet shadcn's own docs show. An imported theme may carry tokens
1547
+ * outside the set entirely (a custom `--brand`), and those are kept: they are
1548
+ * what someone chose that theme for.
1549
+ */
1550
+ declare function orderedTokens(vars: Readonly<Record<string, string>>): Array<[string, string]>;
1551
+ /**
1552
+ * The token names the `@theme inline` block maps into Tailwind's color scale.
1553
+ *
1554
+ * Tailwind v4 resolves `bg-primary` from `--color-primary`, so every color
1555
+ * token needs a `--color-*` alias pointing at it — but `radius` must NOT get
1556
+ * one (it is a length, and `--color-radius` would put a bogus entry in the
1557
+ * color scale that shows up in editor autocomplete).
1558
+ */
1559
+ declare function colorTokens(vars: Readonly<Record<string, string>>): string[];
1560
+ /**
1561
+ * The theme bullets in the scaffolded AI-assistant brief, appended to whatever
1562
+ * the frontend preset contributes.
1563
+ *
1564
+ * Shared across frameworks because the rule is: both kits read the same token
1565
+ * names out of the same stylesheet. Two failures it exists to prevent, both of
1566
+ * which produce code that compiles and looks fine in the one screenshot the
1567
+ * author checks:
1568
+ *
1569
+ * - Reaching for raw palette classes (`bg-gray-100`, `text-slate-500`). They
1570
+ * are stable in light mode and unreadable in dark, and they silently opt that
1571
+ * component out of the theme forever.
1572
+ * - Installing a theme library. `next-themes` is what the training data
1573
+ * suggests, and in a scaffold that already persists and applies the mode it
1574
+ * is a second source of truth for one boolean.
1575
+ */
1576
+ declare function themeGuidanceSection(choice: ThemeChoice): string;
1577
+ /** An sRGB triple, 0–255, for painting a swatch in the interactive prompt. */
1578
+ interface Rgb {
1579
+ readonly r: number;
1580
+ readonly g: number;
1581
+ readonly b: number;
1582
+ }
1583
+ /**
1584
+ * The colors that identify a theme at a glance in the prompt: the primary, the
1585
+ * page background, and a muted midtone.
1586
+ *
1587
+ * Three is the smallest set that distinguishes the menu's entries — the accent
1588
+ * alone would make every base look identical, and the background alone would
1589
+ * make every accent look identical.
1590
+ */
1591
+ declare function themeSwatch(theme: Theme): Rgb[];
1592
+ /**
1593
+ * Parse the color notations a theme's tokens actually use into sRGB.
1594
+ *
1595
+ * Only what we emit or import needs to work: oklch (every upstream token), hsl
1596
+ * (imported v3-era themes, after {@link normalizeVars} wraps them), and hex.
1597
+ * Anything else returns `null` and the caller simply draws no swatch — a
1598
+ * terminal decoration is never worth failing a scaffold over.
1599
+ */
1600
+ declare function parseColor(value: string): Rgb | null;
1601
+
1602
+ /** One file to write, at a path relative to the project root. */
1603
+ interface ScaffoldFile {
1604
+ /** Relative POSIX path, e.g. `xano/index.ts`. */
1605
+ readonly path: string;
1606
+ readonly content: string;
1607
+ }
1608
+
1609
+ /**
1610
+ * File templates for `xanots init` — the "perfect XanoTS project" distilled
1611
+ * to the smallest thing that compiles, deploys, and demonstrates the one
1612
+ * contract (frontend paths/types derived from the backend defs).
1613
+ *
1614
+ * Layout: `xano/` (the XanoTS backend) and `frontend/` (the Vite app) as peer
1615
+ * top-level folders under a single root `package.json`. Vite's root is pinned
1616
+ * to `frontend/` (see {@link renderViteConfig}) so `index.html` and the build
1617
+ * both live there without npm workspaces.
1618
+ *
1619
+ * Everything here is framework-agnostic. Which UI framework fills `frontend/`
1620
+ * is a {@link FrontendPreset} (see `frontend-presets.ts`), and the templates
1621
+ * that vary by framework — dependency set, typecheck command, tsconfig
1622
+ * `compilerOptions`, the Vite plugin list, the `index.html` entry — take one.
1623
+ *
1624
+ * Templates are inlined string builders (not a shipped `templates/` directory)
1625
+ * so they are always available at runtime regardless of packaging — the same
1626
+ * reason the CLI avoids `__dirname` asset resolution across `npx`/`file:`
1627
+ * installs. Each builder takes already-resolved, already-sanitized values.
1628
+ */
1629
+
1630
+ /** Inputs every template may need. `appName` is a valid npm package name; `sdkVersion` is the running CLI's version (or `"unknown"`). */
1631
+ interface TemplateVars {
1632
+ appName: string;
1633
+ sdkVersion: string;
1634
+ }
1635
+ /**
1636
+ * The frontend stylesheet: Tailwind v4 plus the shadcn/ui theme layer.
1637
+ *
1638
+ * shadcn/ui components are Tailwind classes over a fixed set of semantic color
1639
+ * tokens (`bg-primary`, `text-muted-foreground`, `border-input`, …). Those
1640
+ * tokens are declared here as CSS custom properties — light on `:root`, dark
1641
+ * under `.dark` — and mapped into Tailwind's theme with `@theme inline`, which
1642
+ * is how v4 replaces the v3 `tailwind.config.js`. Every component the shadcn CLI
1643
+ * adds later resolves against this same block, so it is the one file to edit
1644
+ * when rebranding.
1645
+ *
1646
+ * The VALUES come from the {@link ThemeChoice} resolved at scaffold time (see
1647
+ * `theme-presets.ts`); the structure around them does not vary. Two details in
1648
+ * that structure are load-bearing:
1649
+ *
1650
+ * - The full token set is emitted, `chart-1..5` and `sidebar-*` included, even
1651
+ * though nothing in a fresh scaffold reads them. `chart` and `sidebar` are
1652
+ * among the first components anyone adds, and a component whose colors
1653
+ * resolve to nothing renders invisibly with no error anywhere.
1654
+ * - `--color-*` aliases are emitted for colors only. `--radius` is a length,
1655
+ * and aliasing it into the color scale would put a non-color in Tailwind's
1656
+ * color autocomplete.
1657
+ */
1658
+ declare function renderIndexCss(choice?: ThemeChoice): string;
1659
+
1660
+ /**
1661
+ * Frontend framework presets — the seam that lets `xanots init` and
1662
+ * `xanots … codegen` scaffold more than one frontend without duplicating the
1663
+ * project around it.
1664
+ *
1665
+ * The scaffold is mostly framework-agnostic: `xano/`, `frontend/src/lib/api.ts`
1666
+ * (the one contract), the Tailwind token stylesheet, `.env.example`,
1667
+ * `.gitignore`, the deploy scripts, and the `frontend/dist` static-host contract
1668
+ * are the same whatever renders the UI. A {@link FrontendPreset} contributes
1669
+ * only the parts that genuinely differ — dependencies, the Vite plugin, the
1670
+ * typecheck command, the entry module, the app component, the vendored UI kit,
1671
+ * and its slice of the README / agent-instruction prose.
1672
+ *
1673
+ * Adding a framework is therefore one new module plus one row in
1674
+ * {@link PRESETS}: no edits to `init-command.ts`, `codegen-command.ts`,
1675
+ * `scaffold.ts`, or `cli.ts`.
1676
+ *
1677
+ * Browser-safe: pure string building, no node:* imports. `resolveFramework`
1678
+ * touches `process.stdin` only through the same TTY check the AI-preset prompt
1679
+ * uses, and lives in `scaffold.ts` alongside it.
1680
+ */
1681
+
1682
+ /**
1683
+ * Every framework `--framework` accepts, in prompt/help order. The single
1684
+ * source the flag's validation error, its `--help` line, and the zsh completion
1685
+ * values all read from — so they cannot disagree about what is supported.
1686
+ */
1687
+ declare const FRAMEWORKS: readonly ["react", "svelte"];
1688
+ type FrameworkId = (typeof FRAMEWORKS)[number];
1689
+ /** The framework a scaffold gets when nothing selects one (non-interactive runs). */
1690
+ declare const DEFAULT_FRAMEWORK: FrameworkId;
1691
+ /**
1692
+ * One piece of landing-page copy.
1693
+ *
1694
+ * `{ code }` renders inside the styled `<code>` each preset defines; `{ text }`
1695
+ * renders bare. Splitting the two lets one copy value render into JSX or Svelte
1696
+ * markup without either preset owning the wording.
1697
+ */
1698
+ type InlineNode = {
1699
+ readonly text: string;
1700
+ } | {
1701
+ readonly code: string;
1702
+ };
1703
+ /**
1704
+ * The scaffold's landing page, as content rather than markup.
1705
+ *
1706
+ * `init` and `codegen` differ in copy; React and Svelte differ in markup.
1707
+ * Writing the copy once here and rendering it per preset keeps that a 2 + N
1708
+ * problem instead of a 2 × N one — otherwise every framework added would double
1709
+ * the number of hand-written landing pages to keep in sync.
1710
+ */
1711
+ interface LandingContent {
1712
+ readonly title: string;
1713
+ /** The lead paragraph under the title. */
1714
+ readonly lead: readonly InlineNode[];
1715
+ /** The ordered "what to do next" list. Always three items. */
1716
+ readonly steps: readonly (readonly InlineNode[])[];
1717
+ readonly cta: {
1718
+ readonly label: string;
1719
+ readonly href: string;
1720
+ };
1721
+ }
1722
+ /** What one framework contributes to a scaffold. */
1723
+ interface FrontendPreset {
1724
+ readonly id: FrameworkId;
1725
+ /** Human label used in prose and in the interactive prompt. */
1726
+ readonly label: string;
1727
+ /** Runtime dependencies, merged over the shared `@xanots/sdk` entry. */
1728
+ readonly dependencies: Readonly<Record<string, string>>;
1729
+ readonly devDependencies: Readonly<Record<string, string>>;
1730
+ /**
1731
+ * The command that type-checks this framework's sources, prefixed onto every
1732
+ * scaffold script. `tsc --noEmit` alone cannot see inside `.svelte` files, so
1733
+ * this is a preset contribution rather than a literal — a scaffold whose
1734
+ * components are never type-checked would silently break the SDK's promise
1735
+ * that the frontend cannot drift from the backend defs.
1736
+ */
1737
+ readonly checkCmd: string;
1738
+ /**
1739
+ * The import alias this framework's UI kit writes its imports against — `@`
1740
+ * for shadcn/ui. Declared in BOTH `tsconfig.json` and `vite.config.ts`
1741
+ * (TypeScript resolves types, Vite resolves the bundle).
1742
+ *
1743
+ * `null` when the framework supplies the alias itself: SvelteKit generates
1744
+ * both halves (`$lib` in `.svelte-kit/tsconfig.json`, and the matching Vite
1745
+ * alias from its plugin), and a hand-written duplicate is a second source of
1746
+ * truth that can silently disagree with the generated one.
1747
+ */
1748
+ readonly aliasName: string | null;
1749
+ /** What the alias points at, relative to the project root. Unused when {@link aliasName} is `null`. */
1750
+ readonly aliasTarget: string;
1751
+ /**
1752
+ * The `compilerOptions.paths` entries for this alias. A separate field rather
1753
+ * than derived from {@link aliasName}: shadcn/ui only ever imports through
1754
+ * `@/…`, while shadcn-svelte also imports the bare `$lib`, and emitting a
1755
+ * mapping a kit never uses is noise in a file users read.
1756
+ *
1757
+ * Targets are written `./`-rooted: the rendered tsconfig sets no `baseUrl`
1758
+ * (TypeScript 6 errors on it), so a target resolves against the config
1759
+ * file's own directory.
1760
+ *
1761
+ * Empty when the framework generates its own paths — `paths` is then omitted
1762
+ * from the rendered tsconfig entirely rather than emitted blank.
1763
+ */
1764
+ readonly tsconfigPaths: Readonly<Record<string, readonly string[]>>;
1765
+ /** `compilerOptions` merged over the shared base in {@link renderTsconfig}. */
1766
+ readonly tsconfigOptions: Readonly<Record<string, unknown>>;
1767
+ /**
1768
+ * The config this project's `tsconfig.json` extends, if any.
1769
+ *
1770
+ * SvelteKit generates `.svelte-kit/tsconfig.json` during `svelte-kit sync`,
1771
+ * carrying the `$lib` / `$app` / `$env` path mappings and the route types.
1772
+ * Extending it is how one root tsconfig keeps covering BOTH halves of the
1773
+ * project — the generated half plus `xano/`, which the shared `include`
1774
+ * re-declares on top.
1775
+ */
1776
+ readonly tsconfigExtends?: string;
1777
+ /**
1778
+ * Extra `include` entries appended to the shared `["xano", "frontend/src"]`.
1779
+ *
1780
+ * Required alongside {@link tsconfigExtends}, because an extended config's
1781
+ * `include` is REPLACED rather than merged: re-declaring ours on top drops
1782
+ * whatever the generated config listed. For SvelteKit that is the ambient
1783
+ * declarations behind `$app/*` and `$env/*` and the generated route types —
1784
+ * so without these, the first `import { goto } from "$app/navigation"` an
1785
+ * assistant writes fails `svelte-check`, which gates build and deploy.
1786
+ */
1787
+ readonly tsconfigInclude?: readonly string[];
1788
+ /** Import lines placed at the top of `vite.config.ts`. */
1789
+ readonly viteImports: readonly string[];
1790
+ /** Plugin call expressions spread into vite's `plugins: [...]`. */
1791
+ readonly vitePlugins: readonly string[];
1792
+ /**
1793
+ * Vite's `root`. Defaults to `"frontend"` — the folder holding `index.html`
1794
+ * and the app, with the XanoTS backend sitting in `xano/` as a peer.
1795
+ *
1796
+ * `null` leaves `root` unset (the project root). SvelteKit resolves
1797
+ * everything against the project root and redirects
1798
+ * its own file locations into `frontend/` via `kit.files`, so moving Vite's
1799
+ * root out from under it breaks the two into disagreement.
1800
+ */
1801
+ readonly viteRoot?: string | null;
1802
+ /**
1803
+ * Vite's `build` options. Defaults to `{ outDir: "dist", emptyOutDir: true }`.
1804
+ *
1805
+ * `null` omits the block. A SvelteKit build routes its output through the
1806
+ * adapter rather than Vite's `build.outDir`, so emitting one would be a
1807
+ * setting that reads as authoritative and silently does nothing.
1808
+ */
1809
+ readonly viteBuild?: Readonly<Record<string, unknown>> | null;
1810
+ /**
1811
+ * The module the shared `frontend/index.html` loads, e.g. `/src/main.tsx`.
1812
+ * Absent when {@link ownsHtmlEntry} is true and no such file is emitted —
1813
+ * a stale path here would point at a module the scaffold does not write.
1814
+ */
1815
+ readonly entryScript?: string;
1816
+ /**
1817
+ * True when the preset supplies its own HTML entry document, so the shared
1818
+ * `frontend/index.html` is not emitted.
1819
+ *
1820
+ * SvelteKit owns the page template (`frontend/src/app.html`, with the
1821
+ * `%sveltekit.head%` / `%sveltekit.body%` placeholders it substitutes into);
1822
+ * a second hand-written `index.html` beside it would never be served and
1823
+ * would read as the entry point to anyone — human or agent — opening it.
1824
+ */
1825
+ readonly ownsHtmlEntry?: boolean;
1826
+ /**
1827
+ * Extra `package.json` scripts, merged over the shared set.
1828
+ *
1829
+ * SvelteKit needs `prepare: "svelte-kit sync"` so a fresh clone's
1830
+ * `.svelte-kit/tsconfig.json` exists before anything reads `tsconfig.json` —
1831
+ * without it `npm install && npm run typecheck` fails on a missing extends
1832
+ * target rather than on anything the user did.
1833
+ */
1834
+ readonly extraScripts?: Readonly<Record<string, string>>;
1835
+ /**
1836
+ * Extra exports appended to the shared `frontend/src/lib/utils.ts`.
1837
+ *
1838
+ * The kit's CLI generates components that import from this file, and it
1839
+ * expects more than `cn()`. shadcn-svelte's components import
1840
+ * `WithElementRef` and `WithoutChildrenOrChild` from `$lib/utils.js`, so a
1841
+ * scaffold shipping `cn()` alone type-checks until the first
1842
+ * `npx shadcn-svelte@latest add <name>` — which the agent guidance tells
1843
+ * assistants to run — and then fails on components the user never wrote.
1844
+ *
1845
+ * shadcn/ui for React uses no such helpers, which is why this is per-preset
1846
+ * rather than shared.
1847
+ */
1848
+ readonly libUtilsExtra?: string;
1849
+ /** Extra `.gitignore` entries appended to the shared set, e.g. `.svelte-kit/`. */
1850
+ readonly gitignoreEntries?: readonly string[];
1851
+ /**
1852
+ * Framework-owned files: entry module, app, UI kit, tool configs.
1853
+ *
1854
+ * `choice` is the resolved theme (see `theme-presets.ts`). A preset reads it
1855
+ * for the two things that are framework-shaped rather than CSS-shaped: the
1856
+ * base color its `components.json` declares, and whether it renders a
1857
+ * mode-toggle control. The token values themselves never reach here — they
1858
+ * are the shared stylesheet's business.
1859
+ *
1860
+ * Optional, defaulting to {@link defaultThemeChoice}, so a caller that does
1861
+ * not care about theming — every test of the framework half, and any future
1862
+ * consumer — is not forced to construct one.
1863
+ */
1864
+ files(vars: TemplateVars, landing: LandingContent, choice?: ThemeChoice): ScaffoldFile[];
1865
+ /**
1866
+ * This framework's half of an icon library — the dependency to install and
1867
+ * the import line for the landing page's arrow.
1868
+ *
1869
+ * A method rather than a static field because the answer depends on a choice:
1870
+ * `preset.dependencies` is what the FRAMEWORK needs whatever the user picks,
1871
+ * and the icon package is not that. See `icon-presets.ts` for why this is the
1872
+ * one visual axis a preset has to own.
1873
+ */
1874
+ iconBinding(id: IconLibraryId | undefined): IconBinding;
1875
+ /**
1876
+ * The README's "## The frontend" section.
1877
+ *
1878
+ * Takes the icon library because the import form for an icon is the one piece
1879
+ * of framework prose that varies by a user choice — and prose describing a
1880
+ * package the project does not install is worse than no prose.
1881
+ */
1882
+ readmeFrontendSection(icons?: IconLibraryId): string;
1883
+ /** The frontend bullets in the scaffolded AI-assistant instructions. */
1884
+ agentGuidanceSection(icons?: IconLibraryId): string;
1885
+ }
1886
+ /** Look up a preset by id, or `undefined` when the id is not a framework. */
1887
+ declare function findFrontendPreset(id: string): FrontendPreset | undefined;
1888
+ /** Every preset, in {@link FRAMEWORKS} order. */
1889
+ declare function allFrontendPresets(): FrontendPreset[];
1890
+ /**
1891
+ * Validate a `--framework` value, mirroring `resolveAiFlags`: an unknown id is a
1892
+ * hard error naming every valid one, never a silent fall back to the default.
1893
+ */
1894
+ declare function resolveFrameworkFlag(raw: string): FrontendPreset;
1895
+
1896
+ export { ACCENTS, ACCENT_TOKENS, type AccentId, BASE_COLORS, BASE_TOKENS, type BaseColorId, CURATED_THEMES, DARK_MODES, DEFAULT_BASE_COLOR, DEFAULT_DARK_MODE, DEFAULT_FRAMEWORK, DEFAULT_ICON_LIBRARY, DEFAULT_RADIUS, type DarkMode, FONTS, FONT_IDS, FRAMEWORKS, type FontChoice, type FontDefinition, type FontId, type FrameworkId, type FrontendPreset, ICON_LIBRARIES, type IconBinding, type IconLibrary, type IconLibraryId, type Rgb, TOKEN_ORDER, type Theme, type ThemeChoice, type ThemeTokens, allFrontendPresets, allIconLibraries, buildTheme, colorTokens, curatedThemes, defaultIconLibrary, defaultTheme, defaultThemeChoice, describeFonts, findFont, findFrontendPreset, findIconLibrary, fontDependencies, fontImports, fontThemeVars, iconLibraryOf, isAccent, isBaseColor, normalizeRadius, orderedTokens, parseColor, renderIndexCss, resolveDarkModeFlag, resolveFontFlag, resolveFrameworkFlag, resolveIconsFlag, resolveThemeFlag, themeFromRegistryItem, themeGuidanceSection, themeSwatch, withRadius };