@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.
- package/README.md +11 -2
- package/dist/.build-fingerprint +1 -1
- package/dist/{agent-file-refresh-7XCACU34.js → agent-file-refresh-6M5M7T24.js} +4 -3
- package/dist/bin.js +7 -7
- package/dist/{chunk-MUDLJG2O.js → chunk-2V4YE6QC.js} +25 -15
- package/dist/{chunk-UVLVQWWF.js → chunk-3NFUWXOC.js} +70 -20
- package/dist/chunk-6DHJVLYP.js +2044 -0
- package/dist/{chunk-IZW6MK3U.js → chunk-6USV65XA.js} +2 -2
- package/dist/{chunk-XLD4BUTF.js → chunk-BT2CSEC5.js} +2 -2
- package/dist/{chunk-VKFQJEMW.js → chunk-CMZLPTGW.js} +37 -406
- package/dist/{chunk-YYRDLFSJ.js → chunk-DYCLVQXW.js} +50 -3
- package/dist/chunk-HQ2CBRVI.js +530 -0
- package/dist/{chunk-ZPEY5WE4.js → chunk-W2G2WPTB.js} +3 -3
- package/dist/chunk-WUSKBXXD.js +25 -0
- package/dist/{chunk-ODNMVJ6H.js → chunk-YZ4GU6F5.js} +283 -252
- package/dist/{chunk-5YTBTF25.js → chunk-ZO3HJOCJ.js} +2 -2
- package/dist/cli.d.ts +31 -0
- package/dist/cli.js +5 -5
- package/dist/{codegen-command-RY2GWDLX.js → codegen-command-FIADGXRN.js} +13 -11
- package/dist/{completion-TIPPZN7H.js → completion-BKAFCZBE.js} +2 -2
- package/dist/{deploy-command-DSISLUW5.js → deploy-command-4R6BYC6G.js} +13 -13
- package/dist/{env-target-7C2GKBCY.js → env-target-XWS2ZZ2Y.js} +2 -2
- package/dist/{ephemeral-command-5K573ZSG.js → ephemeral-command-JL4TPIRQ.js} +15 -15
- package/dist/{init-command-4AWL6CLW.js → init-command-LOK75W64.js} +11 -9
- package/dist/internal.js +4 -3
- package/dist/{lock-commands-7Q5LNZKL.js → lock-commands-XOYS75YQ.js} +9 -9
- package/dist/{marketplace-command-RATXTKXN.js → marketplace-command-UVV3XAOL.js} +6 -6
- package/dist/meta-client-OW5WKWW7.js +1 -1
- package/dist/node.js +8 -8
- package/dist/{release-command-QXLRJMY7.js → release-command-HZUY2XZX.js} +15 -15
- package/dist/sandbox-export-command-QCJY4GMV.js +1 -1
- package/dist/scaffold.d.ts +1896 -0
- package/dist/scaffold.js +101 -0
- package/dist/{test-command-BOLIU57E.js → test-command-72Y5S22H.js} +4 -4
- package/dist/{validate-command-SYCFEYZN.js → validate-command-KDGH537H.js} +7 -7
- package/dist/{workspace-command-TOB2AJ6X.js → workspace-command-ICSI6PKO.js} +13 -11
- package/dist/workspace-export-AJMGN3CQ.js +1 -1
- package/llms/kinds-agent-mcp.md +2 -1
- package/llms-full.txt +3 -2
- package/llms.txt +1 -1
- package/manifest.json +145 -1
- package/package.json +7 -1
- package/dist/chunk-47WDWMBJ.js +0 -14
|
@@ -0,0 +1,2044 @@
|
|
|
1
|
+
// src/emit/generated/shadcn-themes.generated.ts
|
|
2
|
+
var BASE_TOKENS = {
|
|
3
|
+
"neutral": {
|
|
4
|
+
label: "Neutral",
|
|
5
|
+
light: {
|
|
6
|
+
"background": "oklch(1 0 0)",
|
|
7
|
+
"foreground": "oklch(0.145 0 0)",
|
|
8
|
+
"card": "oklch(1 0 0)",
|
|
9
|
+
"card-foreground": "oklch(0.145 0 0)",
|
|
10
|
+
"popover": "oklch(1 0 0)",
|
|
11
|
+
"popover-foreground": "oklch(0.145 0 0)",
|
|
12
|
+
"primary": "oklch(0.205 0 0)",
|
|
13
|
+
"primary-foreground": "oklch(0.985 0 0)",
|
|
14
|
+
"secondary": "oklch(0.97 0 0)",
|
|
15
|
+
"secondary-foreground": "oklch(0.205 0 0)",
|
|
16
|
+
"muted": "oklch(0.97 0 0)",
|
|
17
|
+
"muted-foreground": "oklch(0.556 0 0)",
|
|
18
|
+
"accent": "oklch(0.97 0 0)",
|
|
19
|
+
"accent-foreground": "oklch(0.205 0 0)",
|
|
20
|
+
"destructive": "oklch(0.577 0.245 27.325)",
|
|
21
|
+
"border": "oklch(0.922 0 0)",
|
|
22
|
+
"input": "oklch(0.922 0 0)",
|
|
23
|
+
"ring": "oklch(0.708 0 0)",
|
|
24
|
+
"chart-1": "oklch(0.87 0 0)",
|
|
25
|
+
"chart-2": "oklch(0.556 0 0)",
|
|
26
|
+
"chart-3": "oklch(0.439 0 0)",
|
|
27
|
+
"chart-4": "oklch(0.371 0 0)",
|
|
28
|
+
"chart-5": "oklch(0.269 0 0)",
|
|
29
|
+
"radius": "0.625rem",
|
|
30
|
+
"sidebar": "oklch(0.985 0 0)",
|
|
31
|
+
"sidebar-foreground": "oklch(0.145 0 0)",
|
|
32
|
+
"sidebar-primary": "oklch(0.205 0 0)",
|
|
33
|
+
"sidebar-primary-foreground": "oklch(0.985 0 0)",
|
|
34
|
+
"sidebar-accent": "oklch(0.97 0 0)",
|
|
35
|
+
"sidebar-accent-foreground": "oklch(0.205 0 0)",
|
|
36
|
+
"sidebar-border": "oklch(0.922 0 0)",
|
|
37
|
+
"sidebar-ring": "oklch(0.708 0 0)"
|
|
38
|
+
},
|
|
39
|
+
dark: {
|
|
40
|
+
"background": "oklch(0.145 0 0)",
|
|
41
|
+
"foreground": "oklch(0.985 0 0)",
|
|
42
|
+
"card": "oklch(0.205 0 0)",
|
|
43
|
+
"card-foreground": "oklch(0.985 0 0)",
|
|
44
|
+
"popover": "oklch(0.205 0 0)",
|
|
45
|
+
"popover-foreground": "oklch(0.985 0 0)",
|
|
46
|
+
"primary": "oklch(0.922 0 0)",
|
|
47
|
+
"primary-foreground": "oklch(0.205 0 0)",
|
|
48
|
+
"secondary": "oklch(0.269 0 0)",
|
|
49
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
50
|
+
"muted": "oklch(0.269 0 0)",
|
|
51
|
+
"muted-foreground": "oklch(0.708 0 0)",
|
|
52
|
+
"accent": "oklch(0.269 0 0)",
|
|
53
|
+
"accent-foreground": "oklch(0.985 0 0)",
|
|
54
|
+
"destructive": "oklch(0.704 0.191 22.216)",
|
|
55
|
+
"border": "oklch(1 0 0 / 10%)",
|
|
56
|
+
"input": "oklch(1 0 0 / 15%)",
|
|
57
|
+
"ring": "oklch(0.556 0 0)",
|
|
58
|
+
"chart-1": "oklch(0.87 0 0)",
|
|
59
|
+
"chart-2": "oklch(0.556 0 0)",
|
|
60
|
+
"chart-3": "oklch(0.439 0 0)",
|
|
61
|
+
"chart-4": "oklch(0.371 0 0)",
|
|
62
|
+
"chart-5": "oklch(0.269 0 0)",
|
|
63
|
+
"sidebar": "oklch(0.205 0 0)",
|
|
64
|
+
"sidebar-foreground": "oklch(0.985 0 0)",
|
|
65
|
+
"sidebar-primary": "oklch(0.488 0.243 264.376)",
|
|
66
|
+
"sidebar-primary-foreground": "oklch(0.985 0 0)",
|
|
67
|
+
"sidebar-accent": "oklch(0.269 0 0)",
|
|
68
|
+
"sidebar-accent-foreground": "oklch(0.985 0 0)",
|
|
69
|
+
"sidebar-border": "oklch(1 0 0 / 10%)",
|
|
70
|
+
"sidebar-ring": "oklch(0.556 0 0)"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"stone": {
|
|
74
|
+
label: "Stone",
|
|
75
|
+
light: {
|
|
76
|
+
"background": "oklch(1 0 0)",
|
|
77
|
+
"foreground": "oklch(0.147 0.004 49.25)",
|
|
78
|
+
"card": "oklch(1 0 0)",
|
|
79
|
+
"card-foreground": "oklch(0.147 0.004 49.25)",
|
|
80
|
+
"popover": "oklch(1 0 0)",
|
|
81
|
+
"popover-foreground": "oklch(0.147 0.004 49.25)",
|
|
82
|
+
"primary": "oklch(0.216 0.006 56.043)",
|
|
83
|
+
"primary-foreground": "oklch(0.985 0.001 106.423)",
|
|
84
|
+
"secondary": "oklch(0.97 0.001 106.424)",
|
|
85
|
+
"secondary-foreground": "oklch(0.216 0.006 56.043)",
|
|
86
|
+
"muted": "oklch(0.97 0.001 106.424)",
|
|
87
|
+
"muted-foreground": "oklch(0.553 0.013 58.071)",
|
|
88
|
+
"accent": "oklch(0.97 0.001 106.424)",
|
|
89
|
+
"accent-foreground": "oklch(0.216 0.006 56.043)",
|
|
90
|
+
"destructive": "oklch(0.577 0.245 27.325)",
|
|
91
|
+
"border": "oklch(0.923 0.003 48.717)",
|
|
92
|
+
"input": "oklch(0.923 0.003 48.717)",
|
|
93
|
+
"ring": "oklch(0.709 0.01 56.259)",
|
|
94
|
+
"chart-1": "oklch(0.869 0.005 56.366)",
|
|
95
|
+
"chart-2": "oklch(0.553 0.013 58.071)",
|
|
96
|
+
"chart-3": "oklch(0.444 0.011 73.639)",
|
|
97
|
+
"chart-4": "oklch(0.374 0.01 67.558)",
|
|
98
|
+
"chart-5": "oklch(0.268 0.007 34.298)",
|
|
99
|
+
"radius": "0.625rem",
|
|
100
|
+
"sidebar": "oklch(0.985 0.001 106.423)",
|
|
101
|
+
"sidebar-foreground": "oklch(0.147 0.004 49.25)",
|
|
102
|
+
"sidebar-primary": "oklch(0.216 0.006 56.043)",
|
|
103
|
+
"sidebar-primary-foreground": "oklch(0.985 0.001 106.423)",
|
|
104
|
+
"sidebar-accent": "oklch(0.97 0.001 106.424)",
|
|
105
|
+
"sidebar-accent-foreground": "oklch(0.216 0.006 56.043)",
|
|
106
|
+
"sidebar-border": "oklch(0.923 0.003 48.717)",
|
|
107
|
+
"sidebar-ring": "oklch(0.709 0.01 56.259)"
|
|
108
|
+
},
|
|
109
|
+
dark: {
|
|
110
|
+
"background": "oklch(0.147 0.004 49.25)",
|
|
111
|
+
"foreground": "oklch(0.985 0.001 106.423)",
|
|
112
|
+
"card": "oklch(0.216 0.006 56.043)",
|
|
113
|
+
"card-foreground": "oklch(0.985 0.001 106.423)",
|
|
114
|
+
"popover": "oklch(0.216 0.006 56.043)",
|
|
115
|
+
"popover-foreground": "oklch(0.985 0.001 106.423)",
|
|
116
|
+
"primary": "oklch(0.923 0.003 48.717)",
|
|
117
|
+
"primary-foreground": "oklch(0.216 0.006 56.043)",
|
|
118
|
+
"secondary": "oklch(0.268 0.007 34.298)",
|
|
119
|
+
"secondary-foreground": "oklch(0.985 0.001 106.423)",
|
|
120
|
+
"muted": "oklch(0.268 0.007 34.298)",
|
|
121
|
+
"muted-foreground": "oklch(0.709 0.01 56.259)",
|
|
122
|
+
"accent": "oklch(0.268 0.007 34.298)",
|
|
123
|
+
"accent-foreground": "oklch(0.985 0.001 106.423)",
|
|
124
|
+
"destructive": "oklch(0.704 0.191 22.216)",
|
|
125
|
+
"border": "oklch(1 0 0 / 10%)",
|
|
126
|
+
"input": "oklch(1 0 0 / 15%)",
|
|
127
|
+
"ring": "oklch(0.553 0.013 58.071)",
|
|
128
|
+
"chart-1": "oklch(0.869 0.005 56.366)",
|
|
129
|
+
"chart-2": "oklch(0.553 0.013 58.071)",
|
|
130
|
+
"chart-3": "oklch(0.444 0.011 73.639)",
|
|
131
|
+
"chart-4": "oklch(0.374 0.01 67.558)",
|
|
132
|
+
"chart-5": "oklch(0.268 0.007 34.298)",
|
|
133
|
+
"sidebar": "oklch(0.216 0.006 56.043)",
|
|
134
|
+
"sidebar-foreground": "oklch(0.985 0.001 106.423)",
|
|
135
|
+
"sidebar-primary": "oklch(0.488 0.243 264.376)",
|
|
136
|
+
"sidebar-primary-foreground": "oklch(0.985 0.001 106.423)",
|
|
137
|
+
"sidebar-accent": "oklch(0.268 0.007 34.298)",
|
|
138
|
+
"sidebar-accent-foreground": "oklch(0.985 0.001 106.423)",
|
|
139
|
+
"sidebar-border": "oklch(1 0 0 / 10%)",
|
|
140
|
+
"sidebar-ring": "oklch(0.553 0.013 58.071)"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"zinc": {
|
|
144
|
+
label: "Zinc",
|
|
145
|
+
light: {
|
|
146
|
+
"background": "oklch(1 0 0)",
|
|
147
|
+
"foreground": "oklch(0.141 0.005 285.823)",
|
|
148
|
+
"card": "oklch(1 0 0)",
|
|
149
|
+
"card-foreground": "oklch(0.141 0.005 285.823)",
|
|
150
|
+
"popover": "oklch(1 0 0)",
|
|
151
|
+
"popover-foreground": "oklch(0.141 0.005 285.823)",
|
|
152
|
+
"primary": "oklch(0.21 0.006 285.885)",
|
|
153
|
+
"primary-foreground": "oklch(0.985 0 0)",
|
|
154
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
155
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
156
|
+
"muted": "oklch(0.967 0.001 286.375)",
|
|
157
|
+
"muted-foreground": "oklch(0.552 0.016 285.938)",
|
|
158
|
+
"accent": "oklch(0.967 0.001 286.375)",
|
|
159
|
+
"accent-foreground": "oklch(0.21 0.006 285.885)",
|
|
160
|
+
"destructive": "oklch(0.577 0.245 27.325)",
|
|
161
|
+
"border": "oklch(0.92 0.004 286.32)",
|
|
162
|
+
"input": "oklch(0.92 0.004 286.32)",
|
|
163
|
+
"ring": "oklch(0.705 0.015 286.067)",
|
|
164
|
+
"chart-1": "oklch(0.871 0.006 286.286)",
|
|
165
|
+
"chart-2": "oklch(0.552 0.016 285.938)",
|
|
166
|
+
"chart-3": "oklch(0.442 0.017 285.786)",
|
|
167
|
+
"chart-4": "oklch(0.37 0.013 285.805)",
|
|
168
|
+
"chart-5": "oklch(0.274 0.006 286.033)",
|
|
169
|
+
"radius": "0.625rem",
|
|
170
|
+
"sidebar": "oklch(0.985 0 0)",
|
|
171
|
+
"sidebar-foreground": "oklch(0.141 0.005 285.823)",
|
|
172
|
+
"sidebar-primary": "oklch(0.21 0.006 285.885)",
|
|
173
|
+
"sidebar-primary-foreground": "oklch(0.985 0 0)",
|
|
174
|
+
"sidebar-accent": "oklch(0.967 0.001 286.375)",
|
|
175
|
+
"sidebar-accent-foreground": "oklch(0.21 0.006 285.885)",
|
|
176
|
+
"sidebar-border": "oklch(0.92 0.004 286.32)",
|
|
177
|
+
"sidebar-ring": "oklch(0.705 0.015 286.067)"
|
|
178
|
+
},
|
|
179
|
+
dark: {
|
|
180
|
+
"background": "oklch(0.141 0.005 285.823)",
|
|
181
|
+
"foreground": "oklch(0.985 0 0)",
|
|
182
|
+
"card": "oklch(0.21 0.006 285.885)",
|
|
183
|
+
"card-foreground": "oklch(0.985 0 0)",
|
|
184
|
+
"popover": "oklch(0.21 0.006 285.885)",
|
|
185
|
+
"popover-foreground": "oklch(0.985 0 0)",
|
|
186
|
+
"primary": "oklch(0.92 0.004 286.32)",
|
|
187
|
+
"primary-foreground": "oklch(0.21 0.006 285.885)",
|
|
188
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
189
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
190
|
+
"muted": "oklch(0.274 0.006 286.033)",
|
|
191
|
+
"muted-foreground": "oklch(0.705 0.015 286.067)",
|
|
192
|
+
"accent": "oklch(0.274 0.006 286.033)",
|
|
193
|
+
"accent-foreground": "oklch(0.985 0 0)",
|
|
194
|
+
"destructive": "oklch(0.704 0.191 22.216)",
|
|
195
|
+
"border": "oklch(1 0 0 / 10%)",
|
|
196
|
+
"input": "oklch(1 0 0 / 15%)",
|
|
197
|
+
"ring": "oklch(0.552 0.016 285.938)",
|
|
198
|
+
"chart-1": "oklch(0.871 0.006 286.286)",
|
|
199
|
+
"chart-2": "oklch(0.552 0.016 285.938)",
|
|
200
|
+
"chart-3": "oklch(0.442 0.017 285.786)",
|
|
201
|
+
"chart-4": "oklch(0.37 0.013 285.805)",
|
|
202
|
+
"chart-5": "oklch(0.274 0.006 286.033)",
|
|
203
|
+
"sidebar": "oklch(0.21 0.006 285.885)",
|
|
204
|
+
"sidebar-foreground": "oklch(0.985 0 0)",
|
|
205
|
+
"sidebar-primary": "oklch(0.488 0.243 264.376)",
|
|
206
|
+
"sidebar-primary-foreground": "oklch(0.985 0 0)",
|
|
207
|
+
"sidebar-accent": "oklch(0.274 0.006 286.033)",
|
|
208
|
+
"sidebar-accent-foreground": "oklch(0.985 0 0)",
|
|
209
|
+
"sidebar-border": "oklch(1 0 0 / 10%)",
|
|
210
|
+
"sidebar-ring": "oklch(0.552 0.016 285.938)"
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
"mauve": {
|
|
214
|
+
label: "Mauve",
|
|
215
|
+
light: {
|
|
216
|
+
"background": "oklch(1 0 0)",
|
|
217
|
+
"foreground": "oklch(0.145 0.008 326)",
|
|
218
|
+
"card": "oklch(1 0 0)",
|
|
219
|
+
"card-foreground": "oklch(0.145 0.008 326)",
|
|
220
|
+
"popover": "oklch(1 0 0)",
|
|
221
|
+
"popover-foreground": "oklch(0.145 0.008 326)",
|
|
222
|
+
"primary": "oklch(0.212 0.019 322.12)",
|
|
223
|
+
"primary-foreground": "oklch(0.985 0 0)",
|
|
224
|
+
"secondary": "oklch(0.96 0.003 325.6)",
|
|
225
|
+
"secondary-foreground": "oklch(0.212 0.019 322.12)",
|
|
226
|
+
"muted": "oklch(0.96 0.003 325.6)",
|
|
227
|
+
"muted-foreground": "oklch(0.542 0.034 322.5)",
|
|
228
|
+
"accent": "oklch(0.96 0.003 325.6)",
|
|
229
|
+
"accent-foreground": "oklch(0.212 0.019 322.12)",
|
|
230
|
+
"destructive": "oklch(0.577 0.245 27.325)",
|
|
231
|
+
"border": "oklch(0.922 0.005 325.62)",
|
|
232
|
+
"input": "oklch(0.922 0.005 325.62)",
|
|
233
|
+
"ring": "oklch(0.711 0.019 323.02)",
|
|
234
|
+
"chart-1": "oklch(0.865 0.012 325.68)",
|
|
235
|
+
"chart-2": "oklch(0.542 0.034 322.5)",
|
|
236
|
+
"chart-3": "oklch(0.435 0.029 321.78)",
|
|
237
|
+
"chart-4": "oklch(0.364 0.029 323.89)",
|
|
238
|
+
"chart-5": "oklch(0.263 0.024 320.12)",
|
|
239
|
+
"radius": "0.625rem",
|
|
240
|
+
"sidebar": "oklch(0.985 0 0)",
|
|
241
|
+
"sidebar-foreground": "oklch(0.145 0.008 326)",
|
|
242
|
+
"sidebar-primary": "oklch(0.212 0.019 322.12)",
|
|
243
|
+
"sidebar-primary-foreground": "oklch(0.985 0 0)",
|
|
244
|
+
"sidebar-accent": "oklch(0.96 0.003 325.6)",
|
|
245
|
+
"sidebar-accent-foreground": "oklch(0.212 0.019 322.12)",
|
|
246
|
+
"sidebar-border": "oklch(0.922 0.005 325.62)",
|
|
247
|
+
"sidebar-ring": "oklch(0.711 0.019 323.02)"
|
|
248
|
+
},
|
|
249
|
+
dark: {
|
|
250
|
+
"background": "oklch(0.145 0.008 326)",
|
|
251
|
+
"foreground": "oklch(0.985 0 0)",
|
|
252
|
+
"card": "oklch(0.212 0.019 322.12)",
|
|
253
|
+
"card-foreground": "oklch(0.985 0 0)",
|
|
254
|
+
"popover": "oklch(0.212 0.019 322.12)",
|
|
255
|
+
"popover-foreground": "oklch(0.985 0 0)",
|
|
256
|
+
"primary": "oklch(0.922 0.005 325.62)",
|
|
257
|
+
"primary-foreground": "oklch(0.212 0.019 322.12)",
|
|
258
|
+
"secondary": "oklch(0.263 0.024 320.12)",
|
|
259
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
260
|
+
"muted": "oklch(0.263 0.024 320.12)",
|
|
261
|
+
"muted-foreground": "oklch(0.711 0.019 323.02)",
|
|
262
|
+
"accent": "oklch(0.263 0.024 320.12)",
|
|
263
|
+
"accent-foreground": "oklch(0.985 0 0)",
|
|
264
|
+
"destructive": "oklch(0.704 0.191 22.216)",
|
|
265
|
+
"border": "oklch(1 0 0 / 10%)",
|
|
266
|
+
"input": "oklch(1 0 0 / 15%)",
|
|
267
|
+
"ring": "oklch(0.542 0.034 322.5)",
|
|
268
|
+
"chart-1": "oklch(0.865 0.012 325.68)",
|
|
269
|
+
"chart-2": "oklch(0.542 0.034 322.5)",
|
|
270
|
+
"chart-3": "oklch(0.435 0.029 321.78)",
|
|
271
|
+
"chart-4": "oklch(0.364 0.029 323.89)",
|
|
272
|
+
"chart-5": "oklch(0.263 0.024 320.12)",
|
|
273
|
+
"sidebar": "oklch(0.212 0.019 322.12)",
|
|
274
|
+
"sidebar-foreground": "oklch(0.985 0 0)",
|
|
275
|
+
"sidebar-primary": "oklch(0.488 0.243 264.376)",
|
|
276
|
+
"sidebar-primary-foreground": "oklch(0.985 0 0)",
|
|
277
|
+
"sidebar-accent": "oklch(0.263 0.024 320.12)",
|
|
278
|
+
"sidebar-accent-foreground": "oklch(0.985 0 0)",
|
|
279
|
+
"sidebar-border": "oklch(1 0 0 / 10%)",
|
|
280
|
+
"sidebar-ring": "oklch(0.542 0.034 322.5)"
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"olive": {
|
|
284
|
+
label: "Olive",
|
|
285
|
+
light: {
|
|
286
|
+
"background": "oklch(1 0 0)",
|
|
287
|
+
"foreground": "oklch(0.153 0.006 107.1)",
|
|
288
|
+
"card": "oklch(1 0 0)",
|
|
289
|
+
"card-foreground": "oklch(0.153 0.006 107.1)",
|
|
290
|
+
"popover": "oklch(1 0 0)",
|
|
291
|
+
"popover-foreground": "oklch(0.153 0.006 107.1)",
|
|
292
|
+
"primary": "oklch(0.228 0.013 107.4)",
|
|
293
|
+
"primary-foreground": "oklch(0.988 0.003 106.5)",
|
|
294
|
+
"secondary": "oklch(0.966 0.005 106.5)",
|
|
295
|
+
"secondary-foreground": "oklch(0.228 0.013 107.4)",
|
|
296
|
+
"muted": "oklch(0.966 0.005 106.5)",
|
|
297
|
+
"muted-foreground": "oklch(0.58 0.031 107.3)",
|
|
298
|
+
"accent": "oklch(0.966 0.005 106.5)",
|
|
299
|
+
"accent-foreground": "oklch(0.228 0.013 107.4)",
|
|
300
|
+
"destructive": "oklch(0.577 0.245 27.325)",
|
|
301
|
+
"border": "oklch(0.93 0.007 106.5)",
|
|
302
|
+
"input": "oklch(0.93 0.007 106.5)",
|
|
303
|
+
"ring": "oklch(0.737 0.021 106.9)",
|
|
304
|
+
"chart-1": "oklch(0.88 0.011 106.6)",
|
|
305
|
+
"chart-2": "oklch(0.58 0.031 107.3)",
|
|
306
|
+
"chart-3": "oklch(0.466 0.025 107.3)",
|
|
307
|
+
"chart-4": "oklch(0.394 0.023 107.4)",
|
|
308
|
+
"chart-5": "oklch(0.286 0.016 107.4)",
|
|
309
|
+
"radius": "0.625rem",
|
|
310
|
+
"sidebar": "oklch(0.988 0.003 106.5)",
|
|
311
|
+
"sidebar-foreground": "oklch(0.153 0.006 107.1)",
|
|
312
|
+
"sidebar-primary": "oklch(0.228 0.013 107.4)",
|
|
313
|
+
"sidebar-primary-foreground": "oklch(0.988 0.003 106.5)",
|
|
314
|
+
"sidebar-accent": "oklch(0.966 0.005 106.5)",
|
|
315
|
+
"sidebar-accent-foreground": "oklch(0.228 0.013 107.4)",
|
|
316
|
+
"sidebar-border": "oklch(0.93 0.007 106.5)",
|
|
317
|
+
"sidebar-ring": "oklch(0.737 0.021 106.9)"
|
|
318
|
+
},
|
|
319
|
+
dark: {
|
|
320
|
+
"background": "oklch(0.153 0.006 107.1)",
|
|
321
|
+
"foreground": "oklch(0.988 0.003 106.5)",
|
|
322
|
+
"card": "oklch(0.228 0.013 107.4)",
|
|
323
|
+
"card-foreground": "oklch(0.988 0.003 106.5)",
|
|
324
|
+
"popover": "oklch(0.228 0.013 107.4)",
|
|
325
|
+
"popover-foreground": "oklch(0.988 0.003 106.5)",
|
|
326
|
+
"primary": "oklch(0.93 0.007 106.5)",
|
|
327
|
+
"primary-foreground": "oklch(0.228 0.013 107.4)",
|
|
328
|
+
"secondary": "oklch(0.286 0.016 107.4)",
|
|
329
|
+
"secondary-foreground": "oklch(0.988 0.003 106.5)",
|
|
330
|
+
"muted": "oklch(0.286 0.016 107.4)",
|
|
331
|
+
"muted-foreground": "oklch(0.737 0.021 106.9)",
|
|
332
|
+
"accent": "oklch(0.286 0.016 107.4)",
|
|
333
|
+
"accent-foreground": "oklch(0.988 0.003 106.5)",
|
|
334
|
+
"destructive": "oklch(0.704 0.191 22.216)",
|
|
335
|
+
"border": "oklch(1 0 0 / 10%)",
|
|
336
|
+
"input": "oklch(1 0 0 / 15%)",
|
|
337
|
+
"ring": "oklch(0.58 0.031 107.3)",
|
|
338
|
+
"chart-1": "oklch(0.88 0.011 106.6)",
|
|
339
|
+
"chart-2": "oklch(0.58 0.031 107.3)",
|
|
340
|
+
"chart-3": "oklch(0.466 0.025 107.3)",
|
|
341
|
+
"chart-4": "oklch(0.394 0.023 107.4)",
|
|
342
|
+
"chart-5": "oklch(0.286 0.016 107.4)",
|
|
343
|
+
"sidebar": "oklch(0.228 0.013 107.4)",
|
|
344
|
+
"sidebar-foreground": "oklch(0.988 0.003 106.5)",
|
|
345
|
+
"sidebar-primary": "oklch(0.488 0.243 264.376)",
|
|
346
|
+
"sidebar-primary-foreground": "oklch(0.988 0.003 106.5)",
|
|
347
|
+
"sidebar-accent": "oklch(0.286 0.016 107.4)",
|
|
348
|
+
"sidebar-accent-foreground": "oklch(0.988 0.003 106.5)",
|
|
349
|
+
"sidebar-border": "oklch(1 0 0 / 10%)",
|
|
350
|
+
"sidebar-ring": "oklch(0.58 0.031 107.3)"
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
"mist": {
|
|
354
|
+
label: "Mist",
|
|
355
|
+
light: {
|
|
356
|
+
"background": "oklch(1 0 0)",
|
|
357
|
+
"foreground": "oklch(0.148 0.004 228.8)",
|
|
358
|
+
"card": "oklch(1 0 0)",
|
|
359
|
+
"card-foreground": "oklch(0.148 0.004 228.8)",
|
|
360
|
+
"popover": "oklch(1 0 0)",
|
|
361
|
+
"popover-foreground": "oklch(0.148 0.004 228.8)",
|
|
362
|
+
"primary": "oklch(0.218 0.008 223.9)",
|
|
363
|
+
"primary-foreground": "oklch(0.987 0.002 197.1)",
|
|
364
|
+
"secondary": "oklch(0.963 0.002 197.1)",
|
|
365
|
+
"secondary-foreground": "oklch(0.218 0.008 223.9)",
|
|
366
|
+
"muted": "oklch(0.963 0.002 197.1)",
|
|
367
|
+
"muted-foreground": "oklch(0.56 0.021 213.5)",
|
|
368
|
+
"accent": "oklch(0.963 0.002 197.1)",
|
|
369
|
+
"accent-foreground": "oklch(0.218 0.008 223.9)",
|
|
370
|
+
"destructive": "oklch(0.577 0.245 27.325)",
|
|
371
|
+
"border": "oklch(0.925 0.005 214.3)",
|
|
372
|
+
"input": "oklch(0.925 0.005 214.3)",
|
|
373
|
+
"ring": "oklch(0.723 0.014 214.4)",
|
|
374
|
+
"chart-1": "oklch(0.872 0.007 219.6)",
|
|
375
|
+
"chart-2": "oklch(0.56 0.021 213.5)",
|
|
376
|
+
"chart-3": "oklch(0.45 0.017 213.2)",
|
|
377
|
+
"chart-4": "oklch(0.378 0.015 216)",
|
|
378
|
+
"chart-5": "oklch(0.275 0.011 216.9)",
|
|
379
|
+
"radius": "0.625rem",
|
|
380
|
+
"sidebar": "oklch(0.987 0.002 197.1)",
|
|
381
|
+
"sidebar-foreground": "oklch(0.148 0.004 228.8)",
|
|
382
|
+
"sidebar-primary": "oklch(0.218 0.008 223.9)",
|
|
383
|
+
"sidebar-primary-foreground": "oklch(0.987 0.002 197.1)",
|
|
384
|
+
"sidebar-accent": "oklch(0.963 0.002 197.1)",
|
|
385
|
+
"sidebar-accent-foreground": "oklch(0.218 0.008 223.9)",
|
|
386
|
+
"sidebar-border": "oklch(0.925 0.005 214.3)",
|
|
387
|
+
"sidebar-ring": "oklch(0.723 0.014 214.4)"
|
|
388
|
+
},
|
|
389
|
+
dark: {
|
|
390
|
+
"background": "oklch(0.148 0.004 228.8)",
|
|
391
|
+
"foreground": "oklch(0.987 0.002 197.1)",
|
|
392
|
+
"card": "oklch(0.218 0.008 223.9)",
|
|
393
|
+
"card-foreground": "oklch(0.987 0.002 197.1)",
|
|
394
|
+
"popover": "oklch(0.218 0.008 223.9)",
|
|
395
|
+
"popover-foreground": "oklch(0.987 0.002 197.1)",
|
|
396
|
+
"primary": "oklch(0.925 0.005 214.3)",
|
|
397
|
+
"primary-foreground": "oklch(0.218 0.008 223.9)",
|
|
398
|
+
"secondary": "oklch(0.275 0.011 216.9)",
|
|
399
|
+
"secondary-foreground": "oklch(0.987 0.002 197.1)",
|
|
400
|
+
"muted": "oklch(0.275 0.011 216.9)",
|
|
401
|
+
"muted-foreground": "oklch(0.723 0.014 214.4)",
|
|
402
|
+
"accent": "oklch(0.275 0.011 216.9)",
|
|
403
|
+
"accent-foreground": "oklch(0.987 0.002 197.1)",
|
|
404
|
+
"destructive": "oklch(0.704 0.191 22.216)",
|
|
405
|
+
"border": "oklch(1 0 0 / 10%)",
|
|
406
|
+
"input": "oklch(1 0 0 / 15%)",
|
|
407
|
+
"ring": "oklch(0.56 0.021 213.5)",
|
|
408
|
+
"chart-1": "oklch(0.872 0.007 219.6)",
|
|
409
|
+
"chart-2": "oklch(0.56 0.021 213.5)",
|
|
410
|
+
"chart-3": "oklch(0.45 0.017 213.2)",
|
|
411
|
+
"chart-4": "oklch(0.378 0.015 216)",
|
|
412
|
+
"chart-5": "oklch(0.275 0.011 216.9)",
|
|
413
|
+
"sidebar": "oklch(0.218 0.008 223.9)",
|
|
414
|
+
"sidebar-foreground": "oklch(0.987 0.002 197.1)",
|
|
415
|
+
"sidebar-primary": "oklch(0.488 0.243 264.376)",
|
|
416
|
+
"sidebar-primary-foreground": "oklch(0.987 0.002 197.1)",
|
|
417
|
+
"sidebar-accent": "oklch(0.275 0.011 216.9)",
|
|
418
|
+
"sidebar-accent-foreground": "oklch(0.987 0.002 197.1)",
|
|
419
|
+
"sidebar-border": "oklch(1 0 0 / 10%)",
|
|
420
|
+
"sidebar-ring": "oklch(0.56 0.021 213.5)"
|
|
421
|
+
}
|
|
422
|
+
},
|
|
423
|
+
"taupe": {
|
|
424
|
+
label: "Taupe",
|
|
425
|
+
light: {
|
|
426
|
+
"background": "oklch(1 0 0)",
|
|
427
|
+
"foreground": "oklch(0.147 0.004 49.3)",
|
|
428
|
+
"card": "oklch(1 0 0)",
|
|
429
|
+
"card-foreground": "oklch(0.147 0.004 49.3)",
|
|
430
|
+
"popover": "oklch(1 0 0)",
|
|
431
|
+
"popover-foreground": "oklch(0.147 0.004 49.3)",
|
|
432
|
+
"primary": "oklch(0.214 0.009 43.1)",
|
|
433
|
+
"primary-foreground": "oklch(0.986 0.002 67.8)",
|
|
434
|
+
"secondary": "oklch(0.96 0.002 17.2)",
|
|
435
|
+
"secondary-foreground": "oklch(0.214 0.009 43.1)",
|
|
436
|
+
"muted": "oklch(0.96 0.002 17.2)",
|
|
437
|
+
"muted-foreground": "oklch(0.547 0.021 43.1)",
|
|
438
|
+
"accent": "oklch(0.96 0.002 17.2)",
|
|
439
|
+
"accent-foreground": "oklch(0.214 0.009 43.1)",
|
|
440
|
+
"destructive": "oklch(0.577 0.245 27.325)",
|
|
441
|
+
"border": "oklch(0.922 0.005 34.3)",
|
|
442
|
+
"input": "oklch(0.922 0.005 34.3)",
|
|
443
|
+
"ring": "oklch(0.714 0.014 41.2)",
|
|
444
|
+
"chart-1": "oklch(0.868 0.007 39.5)",
|
|
445
|
+
"chart-2": "oklch(0.547 0.021 43.1)",
|
|
446
|
+
"chart-3": "oklch(0.438 0.017 39.3)",
|
|
447
|
+
"chart-4": "oklch(0.367 0.016 35.7)",
|
|
448
|
+
"chart-5": "oklch(0.268 0.011 36.5)",
|
|
449
|
+
"radius": "0.625rem",
|
|
450
|
+
"sidebar": "oklch(0.986 0.002 67.8)",
|
|
451
|
+
"sidebar-foreground": "oklch(0.147 0.004 49.3)",
|
|
452
|
+
"sidebar-primary": "oklch(0.214 0.009 43.1)",
|
|
453
|
+
"sidebar-primary-foreground": "oklch(0.986 0.002 67.8)",
|
|
454
|
+
"sidebar-accent": "oklch(0.96 0.002 17.2)",
|
|
455
|
+
"sidebar-accent-foreground": "oklch(0.214 0.009 43.1)",
|
|
456
|
+
"sidebar-border": "oklch(0.922 0.005 34.3)",
|
|
457
|
+
"sidebar-ring": "oklch(0.714 0.014 41.2)"
|
|
458
|
+
},
|
|
459
|
+
dark: {
|
|
460
|
+
"background": "oklch(0.147 0.004 49.3)",
|
|
461
|
+
"foreground": "oklch(0.986 0.002 67.8)",
|
|
462
|
+
"card": "oklch(0.214 0.009 43.1)",
|
|
463
|
+
"card-foreground": "oklch(0.986 0.002 67.8)",
|
|
464
|
+
"popover": "oklch(0.214 0.009 43.1)",
|
|
465
|
+
"popover-foreground": "oklch(0.986 0.002 67.8)",
|
|
466
|
+
"primary": "oklch(0.922 0.005 34.3)",
|
|
467
|
+
"primary-foreground": "oklch(0.214 0.009 43.1)",
|
|
468
|
+
"secondary": "oklch(0.268 0.011 36.5)",
|
|
469
|
+
"secondary-foreground": "oklch(0.986 0.002 67.8)",
|
|
470
|
+
"muted": "oklch(0.268 0.011 36.5)",
|
|
471
|
+
"muted-foreground": "oklch(0.714 0.014 41.2)",
|
|
472
|
+
"accent": "oklch(0.268 0.011 36.5)",
|
|
473
|
+
"accent-foreground": "oklch(0.986 0.002 67.8)",
|
|
474
|
+
"destructive": "oklch(0.704 0.191 22.216)",
|
|
475
|
+
"border": "oklch(1 0 0 / 10%)",
|
|
476
|
+
"input": "oklch(1 0 0 / 15%)",
|
|
477
|
+
"ring": "oklch(0.547 0.021 43.1)",
|
|
478
|
+
"chart-1": "oklch(0.868 0.007 39.5)",
|
|
479
|
+
"chart-2": "oklch(0.547 0.021 43.1)",
|
|
480
|
+
"chart-3": "oklch(0.438 0.017 39.3)",
|
|
481
|
+
"chart-4": "oklch(0.367 0.016 35.7)",
|
|
482
|
+
"chart-5": "oklch(0.268 0.011 36.5)",
|
|
483
|
+
"sidebar": "oklch(0.214 0.009 43.1)",
|
|
484
|
+
"sidebar-foreground": "oklch(0.986 0.002 67.8)",
|
|
485
|
+
"sidebar-primary": "oklch(0.488 0.243 264.376)",
|
|
486
|
+
"sidebar-primary-foreground": "oklch(0.986 0.002 67.8)",
|
|
487
|
+
"sidebar-accent": "oklch(0.268 0.011 36.5)",
|
|
488
|
+
"sidebar-accent-foreground": "oklch(0.986 0.002 67.8)",
|
|
489
|
+
"sidebar-border": "oklch(1 0 0 / 10%)",
|
|
490
|
+
"sidebar-ring": "oklch(0.547 0.021 43.1)"
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
};
|
|
494
|
+
var ACCENT_TOKENS = {
|
|
495
|
+
"amber": {
|
|
496
|
+
label: "Amber",
|
|
497
|
+
light: {
|
|
498
|
+
"primary": "oklch(0.555 0.163 48.998)",
|
|
499
|
+
"primary-foreground": "oklch(0.987 0.022 95.277)",
|
|
500
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
501
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
502
|
+
"chart-1": "oklch(0.879 0.169 91.605)",
|
|
503
|
+
"chart-2": "oklch(0.769 0.188 70.08)",
|
|
504
|
+
"chart-3": "oklch(0.666 0.179 58.318)",
|
|
505
|
+
"chart-4": "oklch(0.555 0.163 48.998)",
|
|
506
|
+
"chart-5": "oklch(0.473 0.137 46.201)",
|
|
507
|
+
"sidebar-primary": "oklch(0.666 0.179 58.318)",
|
|
508
|
+
"sidebar-primary-foreground": "oklch(0.987 0.022 95.277)"
|
|
509
|
+
},
|
|
510
|
+
dark: {
|
|
511
|
+
"primary": "oklch(0.473 0.137 46.201)",
|
|
512
|
+
"primary-foreground": "oklch(0.987 0.022 95.277)",
|
|
513
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
514
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
515
|
+
"chart-1": "oklch(0.879 0.169 91.605)",
|
|
516
|
+
"chart-2": "oklch(0.769 0.188 70.08)",
|
|
517
|
+
"chart-3": "oklch(0.666 0.179 58.318)",
|
|
518
|
+
"chart-4": "oklch(0.555 0.163 48.998)",
|
|
519
|
+
"chart-5": "oklch(0.473 0.137 46.201)",
|
|
520
|
+
"sidebar-primary": "oklch(0.769 0.188 70.08)",
|
|
521
|
+
"sidebar-primary-foreground": "oklch(0.279 0.077 45.635)"
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
"blue": {
|
|
525
|
+
label: "Blue",
|
|
526
|
+
light: {
|
|
527
|
+
"primary": "oklch(0.488 0.243 264.376)",
|
|
528
|
+
"primary-foreground": "oklch(0.97 0.014 254.604)",
|
|
529
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
530
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
531
|
+
"chart-1": "oklch(0.809 0.105 251.813)",
|
|
532
|
+
"chart-2": "oklch(0.623 0.214 259.815)",
|
|
533
|
+
"chart-3": "oklch(0.546 0.245 262.881)",
|
|
534
|
+
"chart-4": "oklch(0.488 0.243 264.376)",
|
|
535
|
+
"chart-5": "oklch(0.424 0.199 265.638)",
|
|
536
|
+
"sidebar-primary": "oklch(0.546 0.245 262.881)",
|
|
537
|
+
"sidebar-primary-foreground": "oklch(0.97 0.014 254.604)"
|
|
538
|
+
},
|
|
539
|
+
dark: {
|
|
540
|
+
"primary": "oklch(0.424 0.199 265.638)",
|
|
541
|
+
"primary-foreground": "oklch(0.97 0.014 254.604)",
|
|
542
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
543
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
544
|
+
"chart-1": "oklch(0.809 0.105 251.813)",
|
|
545
|
+
"chart-2": "oklch(0.623 0.214 259.815)",
|
|
546
|
+
"chart-3": "oklch(0.546 0.245 262.881)",
|
|
547
|
+
"chart-4": "oklch(0.488 0.243 264.376)",
|
|
548
|
+
"chart-5": "oklch(0.424 0.199 265.638)",
|
|
549
|
+
"sidebar-primary": "oklch(0.623 0.214 259.815)",
|
|
550
|
+
"sidebar-primary-foreground": "oklch(0.97 0.014 254.604)"
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
"cyan": {
|
|
554
|
+
label: "Cyan",
|
|
555
|
+
light: {
|
|
556
|
+
"primary": "oklch(0.52 0.105 223.128)",
|
|
557
|
+
"primary-foreground": "oklch(0.984 0.019 200.873)",
|
|
558
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
559
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
560
|
+
"chart-1": "oklch(0.865 0.127 207.078)",
|
|
561
|
+
"chart-2": "oklch(0.715 0.143 215.221)",
|
|
562
|
+
"chart-3": "oklch(0.609 0.126 221.723)",
|
|
563
|
+
"chart-4": "oklch(0.52 0.105 223.128)",
|
|
564
|
+
"chart-5": "oklch(0.45 0.085 224.283)",
|
|
565
|
+
"sidebar-primary": "oklch(0.609 0.126 221.723)",
|
|
566
|
+
"sidebar-primary-foreground": "oklch(0.984 0.019 200.873)"
|
|
567
|
+
},
|
|
568
|
+
dark: {
|
|
569
|
+
"primary": "oklch(0.45 0.085 224.283)",
|
|
570
|
+
"primary-foreground": "oklch(0.984 0.019 200.873)",
|
|
571
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
572
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
573
|
+
"chart-1": "oklch(0.865 0.127 207.078)",
|
|
574
|
+
"chart-2": "oklch(0.715 0.143 215.221)",
|
|
575
|
+
"chart-3": "oklch(0.609 0.126 221.723)",
|
|
576
|
+
"chart-4": "oklch(0.52 0.105 223.128)",
|
|
577
|
+
"chart-5": "oklch(0.45 0.085 224.283)",
|
|
578
|
+
"sidebar-primary": "oklch(0.715 0.143 215.221)",
|
|
579
|
+
"sidebar-primary-foreground": "oklch(0.302 0.056 229.695)"
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
"emerald": {
|
|
583
|
+
label: "Emerald",
|
|
584
|
+
light: {
|
|
585
|
+
"primary": "oklch(0.508 0.118 165.612)",
|
|
586
|
+
"primary-foreground": "oklch(0.979 0.021 166.113)",
|
|
587
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
588
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
589
|
+
"chart-1": "oklch(0.845 0.143 164.978)",
|
|
590
|
+
"chart-2": "oklch(0.696 0.17 162.48)",
|
|
591
|
+
"chart-3": "oklch(0.596 0.145 163.225)",
|
|
592
|
+
"chart-4": "oklch(0.508 0.118 165.612)",
|
|
593
|
+
"chart-5": "oklch(0.432 0.095 166.913)",
|
|
594
|
+
"sidebar-primary": "oklch(0.596 0.145 163.225)",
|
|
595
|
+
"sidebar-primary-foreground": "oklch(0.979 0.021 166.113)"
|
|
596
|
+
},
|
|
597
|
+
dark: {
|
|
598
|
+
"primary": "oklch(0.432 0.095 166.913)",
|
|
599
|
+
"primary-foreground": "oklch(0.979 0.021 166.113)",
|
|
600
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
601
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
602
|
+
"chart-1": "oklch(0.845 0.143 164.978)",
|
|
603
|
+
"chart-2": "oklch(0.696 0.17 162.48)",
|
|
604
|
+
"chart-3": "oklch(0.596 0.145 163.225)",
|
|
605
|
+
"chart-4": "oklch(0.508 0.118 165.612)",
|
|
606
|
+
"chart-5": "oklch(0.432 0.095 166.913)",
|
|
607
|
+
"sidebar-primary": "oklch(0.696 0.17 162.48)",
|
|
608
|
+
"sidebar-primary-foreground": "oklch(0.262 0.051 172.552)"
|
|
609
|
+
}
|
|
610
|
+
},
|
|
611
|
+
"fuchsia": {
|
|
612
|
+
label: "Fuchsia",
|
|
613
|
+
light: {
|
|
614
|
+
"primary": "oklch(0.518 0.253 323.949)",
|
|
615
|
+
"primary-foreground": "oklch(0.977 0.017 320.058)",
|
|
616
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
617
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
618
|
+
"chart-1": "oklch(0.833 0.145 321.434)",
|
|
619
|
+
"chart-2": "oklch(0.667 0.295 322.15)",
|
|
620
|
+
"chart-3": "oklch(0.591 0.293 322.896)",
|
|
621
|
+
"chart-4": "oklch(0.518 0.253 323.949)",
|
|
622
|
+
"chart-5": "oklch(0.452 0.211 324.591)",
|
|
623
|
+
"sidebar-primary": "oklch(0.591 0.293 322.896)",
|
|
624
|
+
"sidebar-primary-foreground": "oklch(0.977 0.017 320.058)"
|
|
625
|
+
},
|
|
626
|
+
dark: {
|
|
627
|
+
"primary": "oklch(0.452 0.211 324.591)",
|
|
628
|
+
"primary-foreground": "oklch(0.977 0.017 320.058)",
|
|
629
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
630
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
631
|
+
"chart-1": "oklch(0.833 0.145 321.434)",
|
|
632
|
+
"chart-2": "oklch(0.667 0.295 322.15)",
|
|
633
|
+
"chart-3": "oklch(0.591 0.293 322.896)",
|
|
634
|
+
"chart-4": "oklch(0.518 0.253 323.949)",
|
|
635
|
+
"chart-5": "oklch(0.452 0.211 324.591)",
|
|
636
|
+
"sidebar-primary": "oklch(0.667 0.295 322.15)",
|
|
637
|
+
"sidebar-primary-foreground": "oklch(0.977 0.017 320.058)"
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
"green": {
|
|
641
|
+
label: "Green",
|
|
642
|
+
light: {
|
|
643
|
+
"primary": "oklch(0.527 0.154 150.069)",
|
|
644
|
+
"primary-foreground": "oklch(0.982 0.018 155.826)",
|
|
645
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
646
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
647
|
+
"chart-1": "oklch(0.871 0.15 154.449)",
|
|
648
|
+
"chart-2": "oklch(0.723 0.219 149.579)",
|
|
649
|
+
"chart-3": "oklch(0.627 0.194 149.214)",
|
|
650
|
+
"chart-4": "oklch(0.527 0.154 150.069)",
|
|
651
|
+
"chart-5": "oklch(0.448 0.119 151.328)",
|
|
652
|
+
"sidebar-primary": "oklch(0.627 0.194 149.214)",
|
|
653
|
+
"sidebar-primary-foreground": "oklch(0.982 0.018 155.826)"
|
|
654
|
+
},
|
|
655
|
+
dark: {
|
|
656
|
+
"primary": "oklch(0.448 0.119 151.328)",
|
|
657
|
+
"primary-foreground": "oklch(0.982 0.018 155.826)",
|
|
658
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
659
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
660
|
+
"chart-1": "oklch(0.871 0.15 154.449)",
|
|
661
|
+
"chart-2": "oklch(0.723 0.219 149.579)",
|
|
662
|
+
"chart-3": "oklch(0.627 0.194 149.214)",
|
|
663
|
+
"chart-4": "oklch(0.527 0.154 150.069)",
|
|
664
|
+
"chart-5": "oklch(0.448 0.119 151.328)",
|
|
665
|
+
"sidebar-primary": "oklch(0.723 0.219 149.579)",
|
|
666
|
+
"sidebar-primary-foreground": "oklch(0.982 0.018 155.826)"
|
|
667
|
+
}
|
|
668
|
+
},
|
|
669
|
+
"indigo": {
|
|
670
|
+
label: "Indigo",
|
|
671
|
+
light: {
|
|
672
|
+
"primary": "oklch(0.457 0.24 277.023)",
|
|
673
|
+
"primary-foreground": "oklch(0.962 0.018 272.314)",
|
|
674
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
675
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
676
|
+
"chart-1": "oklch(0.785 0.115 274.713)",
|
|
677
|
+
"chart-2": "oklch(0.585 0.233 277.117)",
|
|
678
|
+
"chart-3": "oklch(0.511 0.262 276.966)",
|
|
679
|
+
"chart-4": "oklch(0.457 0.24 277.023)",
|
|
680
|
+
"chart-5": "oklch(0.398 0.195 277.366)",
|
|
681
|
+
"sidebar-primary": "oklch(0.511 0.262 276.966)",
|
|
682
|
+
"sidebar-primary-foreground": "oklch(0.962 0.018 272.314)"
|
|
683
|
+
},
|
|
684
|
+
dark: {
|
|
685
|
+
"primary": "oklch(0.398 0.195 277.366)",
|
|
686
|
+
"primary-foreground": "oklch(0.962 0.018 272.314)",
|
|
687
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
688
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
689
|
+
"chart-1": "oklch(0.785 0.115 274.713)",
|
|
690
|
+
"chart-2": "oklch(0.585 0.233 277.117)",
|
|
691
|
+
"chart-3": "oklch(0.511 0.262 276.966)",
|
|
692
|
+
"chart-4": "oklch(0.457 0.24 277.023)",
|
|
693
|
+
"chart-5": "oklch(0.398 0.195 277.366)",
|
|
694
|
+
"sidebar-primary": "oklch(0.585 0.233 277.117)",
|
|
695
|
+
"sidebar-primary-foreground": "oklch(0.962 0.018 272.314)"
|
|
696
|
+
}
|
|
697
|
+
},
|
|
698
|
+
"lime": {
|
|
699
|
+
label: "Lime",
|
|
700
|
+
light: {
|
|
701
|
+
"primary": "oklch(0.841 0.238 128.85)",
|
|
702
|
+
"primary-foreground": "oklch(0.405 0.101 131.063)",
|
|
703
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
704
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
705
|
+
"chart-1": "oklch(0.897 0.196 126.665)",
|
|
706
|
+
"chart-2": "oklch(0.768 0.233 130.85)",
|
|
707
|
+
"chart-3": "oklch(0.648 0.2 131.684)",
|
|
708
|
+
"chart-4": "oklch(0.532 0.157 131.589)",
|
|
709
|
+
"chart-5": "oklch(0.453 0.124 130.933)",
|
|
710
|
+
"sidebar-primary": "oklch(0.648 0.2 131.684)",
|
|
711
|
+
"sidebar-primary-foreground": "oklch(0.986 0.031 120.757)"
|
|
712
|
+
},
|
|
713
|
+
dark: {
|
|
714
|
+
"primary": "oklch(0.768 0.233 130.85)",
|
|
715
|
+
"primary-foreground": "oklch(0.405 0.101 131.063)",
|
|
716
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
717
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
718
|
+
"chart-1": "oklch(0.897 0.196 126.665)",
|
|
719
|
+
"chart-2": "oklch(0.768 0.233 130.85)",
|
|
720
|
+
"chart-3": "oklch(0.648 0.2 131.684)",
|
|
721
|
+
"chart-4": "oklch(0.532 0.157 131.589)",
|
|
722
|
+
"chart-5": "oklch(0.453 0.124 130.933)",
|
|
723
|
+
"sidebar-primary": "oklch(0.768 0.233 130.85)",
|
|
724
|
+
"sidebar-primary-foreground": "oklch(0.274 0.072 132.109)"
|
|
725
|
+
}
|
|
726
|
+
},
|
|
727
|
+
"orange": {
|
|
728
|
+
label: "Orange",
|
|
729
|
+
light: {
|
|
730
|
+
"primary": "oklch(0.553 0.195 38.402)",
|
|
731
|
+
"primary-foreground": "oklch(0.98 0.016 73.684)",
|
|
732
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
733
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
734
|
+
"chart-1": "oklch(0.837 0.128 66.29)",
|
|
735
|
+
"chart-2": "oklch(0.705 0.213 47.604)",
|
|
736
|
+
"chart-3": "oklch(0.646 0.222 41.116)",
|
|
737
|
+
"chart-4": "oklch(0.553 0.195 38.402)",
|
|
738
|
+
"chart-5": "oklch(0.47 0.157 37.304)",
|
|
739
|
+
"sidebar-primary": "oklch(0.646 0.222 41.116)",
|
|
740
|
+
"sidebar-primary-foreground": "oklch(0.98 0.016 73.684)"
|
|
741
|
+
},
|
|
742
|
+
dark: {
|
|
743
|
+
"primary": "oklch(0.47 0.157 37.304)",
|
|
744
|
+
"primary-foreground": "oklch(0.98 0.016 73.684)",
|
|
745
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
746
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
747
|
+
"chart-1": "oklch(0.837 0.128 66.29)",
|
|
748
|
+
"chart-2": "oklch(0.705 0.213 47.604)",
|
|
749
|
+
"chart-3": "oklch(0.646 0.222 41.116)",
|
|
750
|
+
"chart-4": "oklch(0.553 0.195 38.402)",
|
|
751
|
+
"chart-5": "oklch(0.47 0.157 37.304)",
|
|
752
|
+
"sidebar-primary": "oklch(0.705 0.213 47.604)",
|
|
753
|
+
"sidebar-primary-foreground": "oklch(0.98 0.016 73.684)"
|
|
754
|
+
}
|
|
755
|
+
},
|
|
756
|
+
"pink": {
|
|
757
|
+
label: "Pink",
|
|
758
|
+
light: {
|
|
759
|
+
"primary": "oklch(0.525 0.223 3.958)",
|
|
760
|
+
"primary-foreground": "oklch(0.971 0.014 343.198)",
|
|
761
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
762
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
763
|
+
"chart-1": "oklch(0.823 0.12 346.018)",
|
|
764
|
+
"chart-2": "oklch(0.656 0.241 354.308)",
|
|
765
|
+
"chart-3": "oklch(0.592 0.249 0.584)",
|
|
766
|
+
"chart-4": "oklch(0.525 0.223 3.958)",
|
|
767
|
+
"chart-5": "oklch(0.459 0.187 3.815)",
|
|
768
|
+
"sidebar-primary": "oklch(0.592 0.249 0.584)",
|
|
769
|
+
"sidebar-primary-foreground": "oklch(0.971 0.014 343.198)"
|
|
770
|
+
},
|
|
771
|
+
dark: {
|
|
772
|
+
"primary": "oklch(0.459 0.187 3.815)",
|
|
773
|
+
"primary-foreground": "oklch(0.971 0.014 343.198)",
|
|
774
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
775
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
776
|
+
"chart-1": "oklch(0.823 0.12 346.018)",
|
|
777
|
+
"chart-2": "oklch(0.656 0.241 354.308)",
|
|
778
|
+
"chart-3": "oklch(0.592 0.249 0.584)",
|
|
779
|
+
"chart-4": "oklch(0.525 0.223 3.958)",
|
|
780
|
+
"chart-5": "oklch(0.459 0.187 3.815)",
|
|
781
|
+
"sidebar-primary": "oklch(0.656 0.241 354.308)",
|
|
782
|
+
"sidebar-primary-foreground": "oklch(0.971 0.014 343.198)"
|
|
783
|
+
}
|
|
784
|
+
},
|
|
785
|
+
"purple": {
|
|
786
|
+
label: "Purple",
|
|
787
|
+
light: {
|
|
788
|
+
"primary": "oklch(0.496 0.265 301.924)",
|
|
789
|
+
"primary-foreground": "oklch(0.977 0.014 308.299)",
|
|
790
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
791
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
792
|
+
"chart-1": "oklch(0.827 0.119 306.383)",
|
|
793
|
+
"chart-2": "oklch(0.627 0.265 303.9)",
|
|
794
|
+
"chart-3": "oklch(0.558 0.288 302.321)",
|
|
795
|
+
"chart-4": "oklch(0.496 0.265 301.924)",
|
|
796
|
+
"chart-5": "oklch(0.438 0.218 303.724)",
|
|
797
|
+
"sidebar-primary": "oklch(0.558 0.288 302.321)",
|
|
798
|
+
"sidebar-primary-foreground": "oklch(0.977 0.014 308.299)"
|
|
799
|
+
},
|
|
800
|
+
dark: {
|
|
801
|
+
"primary": "oklch(0.438 0.218 303.724)",
|
|
802
|
+
"primary-foreground": "oklch(0.977 0.014 308.299)",
|
|
803
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
804
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
805
|
+
"chart-1": "oklch(0.827 0.119 306.383)",
|
|
806
|
+
"chart-2": "oklch(0.627 0.265 303.9)",
|
|
807
|
+
"chart-3": "oklch(0.558 0.288 302.321)",
|
|
808
|
+
"chart-4": "oklch(0.496 0.265 301.924)",
|
|
809
|
+
"chart-5": "oklch(0.438 0.218 303.724)",
|
|
810
|
+
"sidebar-primary": "oklch(0.627 0.265 303.9)",
|
|
811
|
+
"sidebar-primary-foreground": "oklch(0.977 0.014 308.299)"
|
|
812
|
+
}
|
|
813
|
+
},
|
|
814
|
+
"red": {
|
|
815
|
+
label: "Red",
|
|
816
|
+
light: {
|
|
817
|
+
"primary": "oklch(0.505 0.213 27.518)",
|
|
818
|
+
"primary-foreground": "oklch(0.971 0.013 17.38)",
|
|
819
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
820
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
821
|
+
"chart-1": "oklch(0.808 0.114 19.571)",
|
|
822
|
+
"chart-2": "oklch(0.637 0.237 25.331)",
|
|
823
|
+
"chart-3": "oklch(0.577 0.245 27.325)",
|
|
824
|
+
"chart-4": "oklch(0.505 0.213 27.518)",
|
|
825
|
+
"chart-5": "oklch(0.444 0.177 26.899)",
|
|
826
|
+
"sidebar-primary": "oklch(0.577 0.245 27.325)",
|
|
827
|
+
"sidebar-primary-foreground": "oklch(0.971 0.013 17.38)"
|
|
828
|
+
},
|
|
829
|
+
dark: {
|
|
830
|
+
"primary": "oklch(0.444 0.177 26.899)",
|
|
831
|
+
"primary-foreground": "oklch(0.971 0.013 17.38)",
|
|
832
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
833
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
834
|
+
"chart-1": "oklch(0.808 0.114 19.571)",
|
|
835
|
+
"chart-2": "oklch(0.637 0.237 25.331)",
|
|
836
|
+
"chart-3": "oklch(0.577 0.245 27.325)",
|
|
837
|
+
"chart-4": "oklch(0.505 0.213 27.518)",
|
|
838
|
+
"chart-5": "oklch(0.444 0.177 26.899)",
|
|
839
|
+
"sidebar-primary": "oklch(0.637 0.237 25.331)",
|
|
840
|
+
"sidebar-primary-foreground": "oklch(0.971 0.013 17.38)"
|
|
841
|
+
}
|
|
842
|
+
},
|
|
843
|
+
"rose": {
|
|
844
|
+
label: "Rose",
|
|
845
|
+
light: {
|
|
846
|
+
"primary": "oklch(0.514 0.222 16.935)",
|
|
847
|
+
"primary-foreground": "oklch(0.969 0.015 12.422)",
|
|
848
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
849
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
850
|
+
"chart-1": "oklch(0.81 0.117 11.638)",
|
|
851
|
+
"chart-2": "oklch(0.645 0.246 16.439)",
|
|
852
|
+
"chart-3": "oklch(0.586 0.253 17.585)",
|
|
853
|
+
"chart-4": "oklch(0.514 0.222 16.935)",
|
|
854
|
+
"chart-5": "oklch(0.455 0.188 13.697)",
|
|
855
|
+
"sidebar-primary": "oklch(0.586 0.253 17.585)",
|
|
856
|
+
"sidebar-primary-foreground": "oklch(0.969 0.015 12.422)"
|
|
857
|
+
},
|
|
858
|
+
dark: {
|
|
859
|
+
"primary": "oklch(0.455 0.188 13.697)",
|
|
860
|
+
"primary-foreground": "oklch(0.969 0.015 12.422)",
|
|
861
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
862
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
863
|
+
"chart-1": "oklch(0.81 0.117 11.638)",
|
|
864
|
+
"chart-2": "oklch(0.645 0.246 16.439)",
|
|
865
|
+
"chart-3": "oklch(0.586 0.253 17.585)",
|
|
866
|
+
"chart-4": "oklch(0.514 0.222 16.935)",
|
|
867
|
+
"chart-5": "oklch(0.455 0.188 13.697)",
|
|
868
|
+
"sidebar": "oklch(0.21 0.006 285.885)",
|
|
869
|
+
"sidebar-primary": "oklch(0.645 0.246 16.439)",
|
|
870
|
+
"sidebar-primary-foreground": "oklch(0.969 0.015 12.422)"
|
|
871
|
+
}
|
|
872
|
+
},
|
|
873
|
+
"sky": {
|
|
874
|
+
label: "Sky",
|
|
875
|
+
light: {
|
|
876
|
+
"primary": "oklch(0.5 0.134 242.749)",
|
|
877
|
+
"primary-foreground": "oklch(0.977 0.013 236.62)",
|
|
878
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
879
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
880
|
+
"chart-1": "oklch(0.828 0.111 230.318)",
|
|
881
|
+
"chart-2": "oklch(0.685 0.169 237.323)",
|
|
882
|
+
"chart-3": "oklch(0.588 0.158 241.966)",
|
|
883
|
+
"chart-4": "oklch(0.5 0.134 242.749)",
|
|
884
|
+
"chart-5": "oklch(0.443 0.11 240.79)",
|
|
885
|
+
"sidebar-primary": "oklch(0.588 0.158 241.966)",
|
|
886
|
+
"sidebar-primary-foreground": "oklch(0.977 0.013 236.62)"
|
|
887
|
+
},
|
|
888
|
+
dark: {
|
|
889
|
+
"primary": "oklch(0.443 0.11 240.79)",
|
|
890
|
+
"primary-foreground": "oklch(0.977 0.013 236.62)",
|
|
891
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
892
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
893
|
+
"chart-1": "oklch(0.828 0.111 230.318)",
|
|
894
|
+
"chart-2": "oklch(0.685 0.169 237.323)",
|
|
895
|
+
"chart-3": "oklch(0.588 0.158 241.966)",
|
|
896
|
+
"chart-4": "oklch(0.5 0.134 242.749)",
|
|
897
|
+
"chart-5": "oklch(0.443 0.11 240.79)",
|
|
898
|
+
"sidebar-primary": "oklch(0.685 0.169 237.323)",
|
|
899
|
+
"sidebar-primary-foreground": "oklch(0.293 0.066 243.157)"
|
|
900
|
+
}
|
|
901
|
+
},
|
|
902
|
+
"teal": {
|
|
903
|
+
label: "Teal",
|
|
904
|
+
light: {
|
|
905
|
+
"primary": "oklch(0.511 0.096 186.391)",
|
|
906
|
+
"primary-foreground": "oklch(0.984 0.014 180.72)",
|
|
907
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
908
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
909
|
+
"chart-1": "oklch(0.855 0.138 181.071)",
|
|
910
|
+
"chart-2": "oklch(0.704 0.14 182.503)",
|
|
911
|
+
"chart-3": "oklch(0.6 0.118 184.704)",
|
|
912
|
+
"chart-4": "oklch(0.511 0.096 186.391)",
|
|
913
|
+
"chart-5": "oklch(0.437 0.078 188.216)",
|
|
914
|
+
"sidebar-primary": "oklch(0.6 0.118 184.704)",
|
|
915
|
+
"sidebar-primary-foreground": "oklch(0.984 0.014 180.72)"
|
|
916
|
+
},
|
|
917
|
+
dark: {
|
|
918
|
+
"primary": "oklch(0.437 0.078 188.216)",
|
|
919
|
+
"primary-foreground": "oklch(0.984 0.014 180.72)",
|
|
920
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
921
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
922
|
+
"chart-1": "oklch(0.855 0.138 181.071)",
|
|
923
|
+
"chart-2": "oklch(0.704 0.14 182.503)",
|
|
924
|
+
"chart-3": "oklch(0.6 0.118 184.704)",
|
|
925
|
+
"chart-4": "oklch(0.511 0.096 186.391)",
|
|
926
|
+
"chart-5": "oklch(0.437 0.078 188.216)",
|
|
927
|
+
"sidebar-primary": "oklch(0.704 0.14 182.503)",
|
|
928
|
+
"sidebar-primary-foreground": "oklch(0.277 0.046 192.524)"
|
|
929
|
+
}
|
|
930
|
+
},
|
|
931
|
+
"violet": {
|
|
932
|
+
label: "Violet",
|
|
933
|
+
light: {
|
|
934
|
+
"primary": "oklch(0.491 0.27 292.581)",
|
|
935
|
+
"primary-foreground": "oklch(0.969 0.016 293.756)",
|
|
936
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
937
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
938
|
+
"chart-1": "oklch(0.811 0.111 293.571)",
|
|
939
|
+
"chart-2": "oklch(0.606 0.25 292.717)",
|
|
940
|
+
"chart-3": "oklch(0.541 0.281 293.009)",
|
|
941
|
+
"chart-4": "oklch(0.491 0.27 292.581)",
|
|
942
|
+
"chart-5": "oklch(0.432 0.232 292.759)",
|
|
943
|
+
"sidebar-primary": "oklch(0.541 0.281 293.009)",
|
|
944
|
+
"sidebar-primary-foreground": "oklch(0.969 0.016 293.756)"
|
|
945
|
+
},
|
|
946
|
+
dark: {
|
|
947
|
+
"primary": "oklch(0.432 0.232 292.759)",
|
|
948
|
+
"primary-foreground": "oklch(0.969 0.016 293.756)",
|
|
949
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
950
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
951
|
+
"chart-1": "oklch(0.811 0.111 293.571)",
|
|
952
|
+
"chart-2": "oklch(0.606 0.25 292.717)",
|
|
953
|
+
"chart-3": "oklch(0.541 0.281 293.009)",
|
|
954
|
+
"chart-4": "oklch(0.491 0.27 292.581)",
|
|
955
|
+
"chart-5": "oklch(0.432 0.232 292.759)",
|
|
956
|
+
"sidebar-primary": "oklch(0.606 0.25 292.717)",
|
|
957
|
+
"sidebar-primary-foreground": "oklch(0.969 0.016 293.756)"
|
|
958
|
+
}
|
|
959
|
+
},
|
|
960
|
+
"yellow": {
|
|
961
|
+
label: "Yellow",
|
|
962
|
+
light: {
|
|
963
|
+
"primary": "oklch(0.852 0.199 91.936)",
|
|
964
|
+
"primary-foreground": "oklch(0.421 0.095 57.708)",
|
|
965
|
+
"secondary": "oklch(0.967 0.001 286.375)",
|
|
966
|
+
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
|
967
|
+
"chart-1": "oklch(0.905 0.182 98.111)",
|
|
968
|
+
"chart-2": "oklch(0.795 0.184 86.047)",
|
|
969
|
+
"chart-3": "oklch(0.681 0.162 75.834)",
|
|
970
|
+
"chart-4": "oklch(0.554 0.135 66.442)",
|
|
971
|
+
"chart-5": "oklch(0.476 0.114 61.907)",
|
|
972
|
+
"sidebar-primary": "oklch(0.681 0.162 75.834)",
|
|
973
|
+
"sidebar-primary-foreground": "oklch(0.987 0.026 102.212)"
|
|
974
|
+
},
|
|
975
|
+
dark: {
|
|
976
|
+
"primary": "oklch(0.795 0.184 86.047)",
|
|
977
|
+
"primary-foreground": "oklch(0.421 0.095 57.708)",
|
|
978
|
+
"secondary": "oklch(0.274 0.006 286.033)",
|
|
979
|
+
"secondary-foreground": "oklch(0.985 0 0)",
|
|
980
|
+
"chart-1": "oklch(0.905 0.182 98.111)",
|
|
981
|
+
"chart-2": "oklch(0.795 0.184 86.047)",
|
|
982
|
+
"chart-3": "oklch(0.681 0.162 75.834)",
|
|
983
|
+
"chart-4": "oklch(0.554 0.135 66.442)",
|
|
984
|
+
"chart-5": "oklch(0.476 0.114 61.907)",
|
|
985
|
+
"sidebar-primary": "oklch(0.795 0.184 86.047)",
|
|
986
|
+
"sidebar-primary-foreground": "oklch(0.987 0.026 102.212)"
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
};
|
|
990
|
+
var TOKEN_ORDER = [
|
|
991
|
+
"background",
|
|
992
|
+
"foreground",
|
|
993
|
+
"card",
|
|
994
|
+
"card-foreground",
|
|
995
|
+
"popover",
|
|
996
|
+
"popover-foreground",
|
|
997
|
+
"primary",
|
|
998
|
+
"primary-foreground",
|
|
999
|
+
"secondary",
|
|
1000
|
+
"secondary-foreground",
|
|
1001
|
+
"muted",
|
|
1002
|
+
"muted-foreground",
|
|
1003
|
+
"accent",
|
|
1004
|
+
"accent-foreground",
|
|
1005
|
+
"destructive",
|
|
1006
|
+
"border",
|
|
1007
|
+
"input",
|
|
1008
|
+
"ring",
|
|
1009
|
+
"chart-1",
|
|
1010
|
+
"chart-2",
|
|
1011
|
+
"chart-3",
|
|
1012
|
+
"chart-4",
|
|
1013
|
+
"chart-5",
|
|
1014
|
+
"radius",
|
|
1015
|
+
"sidebar",
|
|
1016
|
+
"sidebar-foreground",
|
|
1017
|
+
"sidebar-primary",
|
|
1018
|
+
"sidebar-primary-foreground",
|
|
1019
|
+
"sidebar-accent",
|
|
1020
|
+
"sidebar-accent-foreground",
|
|
1021
|
+
"sidebar-border",
|
|
1022
|
+
"sidebar-ring"
|
|
1023
|
+
];
|
|
1024
|
+
|
|
1025
|
+
// src/emit/generated/shadcn-fonts.generated.ts
|
|
1026
|
+
var FONTS = {
|
|
1027
|
+
"geist": {
|
|
1028
|
+
label: "Geist",
|
|
1029
|
+
type: "sans",
|
|
1030
|
+
family: "'Geist Variable', sans-serif",
|
|
1031
|
+
dependency: "@fontsource-variable/geist"
|
|
1032
|
+
},
|
|
1033
|
+
"inter": {
|
|
1034
|
+
label: "Inter",
|
|
1035
|
+
type: "sans",
|
|
1036
|
+
family: "'Inter Variable', sans-serif",
|
|
1037
|
+
dependency: "@fontsource-variable/inter"
|
|
1038
|
+
},
|
|
1039
|
+
"noto-sans": {
|
|
1040
|
+
label: "Noto Sans",
|
|
1041
|
+
type: "sans",
|
|
1042
|
+
family: "'Noto Sans Variable', sans-serif",
|
|
1043
|
+
dependency: "@fontsource-variable/noto-sans"
|
|
1044
|
+
},
|
|
1045
|
+
"nunito-sans": {
|
|
1046
|
+
label: "Nunito Sans",
|
|
1047
|
+
type: "sans",
|
|
1048
|
+
family: "'Nunito Sans Variable', sans-serif",
|
|
1049
|
+
dependency: "@fontsource-variable/nunito-sans"
|
|
1050
|
+
},
|
|
1051
|
+
"figtree": {
|
|
1052
|
+
label: "Figtree",
|
|
1053
|
+
type: "sans",
|
|
1054
|
+
family: "'Figtree Variable', sans-serif",
|
|
1055
|
+
dependency: "@fontsource-variable/figtree"
|
|
1056
|
+
},
|
|
1057
|
+
"roboto": {
|
|
1058
|
+
label: "Roboto",
|
|
1059
|
+
type: "sans",
|
|
1060
|
+
family: "'Roboto Variable', sans-serif",
|
|
1061
|
+
dependency: "@fontsource-variable/roboto"
|
|
1062
|
+
},
|
|
1063
|
+
"raleway": {
|
|
1064
|
+
label: "Raleway",
|
|
1065
|
+
type: "sans",
|
|
1066
|
+
family: "'Raleway Variable', sans-serif",
|
|
1067
|
+
dependency: "@fontsource-variable/raleway"
|
|
1068
|
+
},
|
|
1069
|
+
"dm-sans": {
|
|
1070
|
+
label: "DM Sans",
|
|
1071
|
+
type: "sans",
|
|
1072
|
+
family: "'DM Sans Variable', sans-serif",
|
|
1073
|
+
dependency: "@fontsource-variable/dm-sans"
|
|
1074
|
+
},
|
|
1075
|
+
"public-sans": {
|
|
1076
|
+
label: "Public Sans",
|
|
1077
|
+
type: "sans",
|
|
1078
|
+
family: "'Public Sans Variable', sans-serif",
|
|
1079
|
+
dependency: "@fontsource-variable/public-sans"
|
|
1080
|
+
},
|
|
1081
|
+
"outfit": {
|
|
1082
|
+
label: "Outfit",
|
|
1083
|
+
type: "sans",
|
|
1084
|
+
family: "'Outfit Variable', sans-serif",
|
|
1085
|
+
dependency: "@fontsource-variable/outfit"
|
|
1086
|
+
},
|
|
1087
|
+
"oxanium": {
|
|
1088
|
+
label: "Oxanium",
|
|
1089
|
+
type: "sans",
|
|
1090
|
+
family: "'Oxanium Variable', sans-serif",
|
|
1091
|
+
dependency: "@fontsource-variable/oxanium"
|
|
1092
|
+
},
|
|
1093
|
+
"manrope": {
|
|
1094
|
+
label: "Manrope",
|
|
1095
|
+
type: "sans",
|
|
1096
|
+
family: "'Manrope Variable', sans-serif",
|
|
1097
|
+
dependency: "@fontsource-variable/manrope"
|
|
1098
|
+
},
|
|
1099
|
+
"space-grotesk": {
|
|
1100
|
+
label: "Space Grotesk",
|
|
1101
|
+
type: "sans",
|
|
1102
|
+
family: "'Space Grotesk Variable', sans-serif",
|
|
1103
|
+
dependency: "@fontsource-variable/space-grotesk"
|
|
1104
|
+
},
|
|
1105
|
+
"montserrat": {
|
|
1106
|
+
label: "Montserrat",
|
|
1107
|
+
type: "sans",
|
|
1108
|
+
family: "'Montserrat Variable', sans-serif",
|
|
1109
|
+
dependency: "@fontsource-variable/montserrat"
|
|
1110
|
+
},
|
|
1111
|
+
"ibm-plex-sans": {
|
|
1112
|
+
label: "IBM Plex Sans",
|
|
1113
|
+
type: "sans",
|
|
1114
|
+
family: "'IBM Plex Sans Variable', sans-serif",
|
|
1115
|
+
dependency: "@fontsource-variable/ibm-plex-sans"
|
|
1116
|
+
},
|
|
1117
|
+
"source-sans-3": {
|
|
1118
|
+
label: "Source Sans 3",
|
|
1119
|
+
type: "sans",
|
|
1120
|
+
family: "'Source Sans 3 Variable', sans-serif",
|
|
1121
|
+
dependency: "@fontsource-variable/source-sans-3"
|
|
1122
|
+
},
|
|
1123
|
+
"instrument-sans": {
|
|
1124
|
+
label: "Instrument Sans",
|
|
1125
|
+
type: "sans",
|
|
1126
|
+
family: "'Instrument Sans Variable', sans-serif",
|
|
1127
|
+
dependency: "@fontsource-variable/instrument-sans"
|
|
1128
|
+
},
|
|
1129
|
+
"jetbrains-mono": {
|
|
1130
|
+
label: "JetBrains Mono",
|
|
1131
|
+
type: "mono",
|
|
1132
|
+
family: "'JetBrains Mono Variable', monospace",
|
|
1133
|
+
dependency: "@fontsource-variable/jetbrains-mono"
|
|
1134
|
+
},
|
|
1135
|
+
"geist-mono": {
|
|
1136
|
+
label: "Geist Mono",
|
|
1137
|
+
type: "mono",
|
|
1138
|
+
family: "'Geist Mono Variable', monospace",
|
|
1139
|
+
dependency: "@fontsource-variable/geist-mono"
|
|
1140
|
+
},
|
|
1141
|
+
"noto-serif": {
|
|
1142
|
+
label: "Noto Serif",
|
|
1143
|
+
type: "serif",
|
|
1144
|
+
family: "'Noto Serif Variable', serif",
|
|
1145
|
+
dependency: "@fontsource-variable/noto-serif"
|
|
1146
|
+
},
|
|
1147
|
+
"roboto-slab": {
|
|
1148
|
+
label: "Roboto Slab",
|
|
1149
|
+
type: "serif",
|
|
1150
|
+
family: "'Roboto Slab Variable', serif",
|
|
1151
|
+
dependency: "@fontsource-variable/roboto-slab"
|
|
1152
|
+
},
|
|
1153
|
+
"merriweather": {
|
|
1154
|
+
label: "Merriweather",
|
|
1155
|
+
type: "serif",
|
|
1156
|
+
family: "'Merriweather Variable', serif",
|
|
1157
|
+
dependency: "@fontsource-variable/merriweather"
|
|
1158
|
+
},
|
|
1159
|
+
"lora": {
|
|
1160
|
+
label: "Lora",
|
|
1161
|
+
type: "serif",
|
|
1162
|
+
family: "'Lora Variable', serif",
|
|
1163
|
+
dependency: "@fontsource-variable/lora"
|
|
1164
|
+
},
|
|
1165
|
+
"playfair-display": {
|
|
1166
|
+
label: "Playfair Display",
|
|
1167
|
+
type: "serif",
|
|
1168
|
+
family: "'Playfair Display Variable', serif",
|
|
1169
|
+
dependency: "@fontsource-variable/playfair-display"
|
|
1170
|
+
},
|
|
1171
|
+
"eb-garamond": {
|
|
1172
|
+
label: "EB Garamond",
|
|
1173
|
+
type: "serif",
|
|
1174
|
+
family: "'EB Garamond Variable', serif",
|
|
1175
|
+
dependency: "@fontsource-variable/eb-garamond"
|
|
1176
|
+
},
|
|
1177
|
+
"instrument-serif": {
|
|
1178
|
+
label: "Instrument Serif",
|
|
1179
|
+
type: "serif",
|
|
1180
|
+
family: "'Instrument Serif', serif",
|
|
1181
|
+
dependency: "@fontsource/instrument-serif"
|
|
1182
|
+
}
|
|
1183
|
+
};
|
|
1184
|
+
|
|
1185
|
+
// src/emit/theme-presets.ts
|
|
1186
|
+
var BASE_COLORS = Object.keys(BASE_TOKENS);
|
|
1187
|
+
var ACCENTS = Object.keys(ACCENT_TOKENS);
|
|
1188
|
+
var DEFAULT_BASE_COLOR = "neutral";
|
|
1189
|
+
var DARK_MODES = ["system", "toggle", "off"];
|
|
1190
|
+
var DEFAULT_RADIUS = BASE_TOKENS[DEFAULT_BASE_COLOR].light.radius ?? "0.625rem";
|
|
1191
|
+
var DEFAULT_DARK_MODE = "system";
|
|
1192
|
+
var FONT_IDS = Object.keys(FONTS);
|
|
1193
|
+
function findFont(id) {
|
|
1194
|
+
const normalized = id.trim().toLowerCase();
|
|
1195
|
+
return Object.prototype.hasOwnProperty.call(FONTS, normalized) ? normalized : void 0;
|
|
1196
|
+
}
|
|
1197
|
+
function resolveFontFlag(raw, slot) {
|
|
1198
|
+
const id = findFont(raw);
|
|
1199
|
+
if (id === void 0) {
|
|
1200
|
+
throw new Error(
|
|
1201
|
+
`Unknown font "${raw}". Valid fonts: ${FONT_IDS.join(", ")}.`
|
|
1202
|
+
);
|
|
1203
|
+
}
|
|
1204
|
+
if (slot !== "heading" && FONTS[id].type !== slot) {
|
|
1205
|
+
const usable = FONT_IDS.filter((f) => FONTS[f].type === slot);
|
|
1206
|
+
throw new Error(
|
|
1207
|
+
`"${raw}" is a ${FONTS[id].type} face, so it cannot fill the ${slot} slot. Valid ${slot} fonts: ${usable.join(", ")}.`
|
|
1208
|
+
);
|
|
1209
|
+
}
|
|
1210
|
+
return id;
|
|
1211
|
+
}
|
|
1212
|
+
function fontDependencies(fonts) {
|
|
1213
|
+
const deps = {};
|
|
1214
|
+
for (const id of [fonts?.sans, fonts?.mono, fonts?.heading]) {
|
|
1215
|
+
if (id !== void 0) deps[FONTS[id].dependency] = "*";
|
|
1216
|
+
}
|
|
1217
|
+
return deps;
|
|
1218
|
+
}
|
|
1219
|
+
function fontImports(fonts) {
|
|
1220
|
+
return Object.keys(fontDependencies(fonts)).map((pkg) => `@import "${pkg}";`);
|
|
1221
|
+
}
|
|
1222
|
+
function fontThemeVars(fonts) {
|
|
1223
|
+
const rows = [];
|
|
1224
|
+
if (fonts?.sans !== void 0) rows.push(["--font-sans", FONTS[fonts.sans].family]);
|
|
1225
|
+
if (fonts?.mono !== void 0) rows.push(["--font-mono", FONTS[fonts.mono].family]);
|
|
1226
|
+
if (fonts?.heading !== void 0) rows.push(["--font-heading", FONTS[fonts.heading].family]);
|
|
1227
|
+
return rows;
|
|
1228
|
+
}
|
|
1229
|
+
function describeFonts(fonts) {
|
|
1230
|
+
const parts = [];
|
|
1231
|
+
if (fonts?.sans !== void 0) parts.push(FONTS[fonts.sans].label);
|
|
1232
|
+
if (fonts?.heading !== void 0) parts.push(`${FONTS[fonts.heading].label} headings`);
|
|
1233
|
+
if (fonts?.mono !== void 0) parts.push(`${FONTS[fonts.mono].label} mono`);
|
|
1234
|
+
return parts.length === 0 ? "system" : parts.join(" / ");
|
|
1235
|
+
}
|
|
1236
|
+
function buildTheme(base, accent) {
|
|
1237
|
+
const b = BASE_TOKENS[base];
|
|
1238
|
+
if (accent === null) {
|
|
1239
|
+
return { id: base, label: b.label, baseColor: base, light: b.light, dark: b.dark };
|
|
1240
|
+
}
|
|
1241
|
+
const a = ACCENT_TOKENS[accent];
|
|
1242
|
+
return {
|
|
1243
|
+
id: `${base}-${accent}`,
|
|
1244
|
+
label: `${b.label} ${a.label}`,
|
|
1245
|
+
baseColor: base,
|
|
1246
|
+
light: { ...b.light, ...a.light },
|
|
1247
|
+
dark: { ...b.dark, ...a.dark }
|
|
1248
|
+
};
|
|
1249
|
+
}
|
|
1250
|
+
function defaultTheme() {
|
|
1251
|
+
return buildTheme(DEFAULT_BASE_COLOR, null);
|
|
1252
|
+
}
|
|
1253
|
+
function defaultThemeChoice() {
|
|
1254
|
+
return { theme: defaultTheme(), dark: DEFAULT_DARK_MODE };
|
|
1255
|
+
}
|
|
1256
|
+
function withRadius(theme, radius) {
|
|
1257
|
+
return { ...theme, light: { ...theme.light, radius } };
|
|
1258
|
+
}
|
|
1259
|
+
function normalizeRadius(raw) {
|
|
1260
|
+
const value = raw.trim();
|
|
1261
|
+
if (/^\d+(\.\d+)?$/.test(value)) return `${value}rem`;
|
|
1262
|
+
if (/^\d+(\.\d+)?(rem|px|em)$/.test(value)) return value;
|
|
1263
|
+
throw new Error(
|
|
1264
|
+
`Invalid --radius "${raw}". Pass a number of rem (e.g. 0, 0.5, 1) or a CSS length (e.g. 8px).`
|
|
1265
|
+
);
|
|
1266
|
+
}
|
|
1267
|
+
function resolveThemeFlag(raw) {
|
|
1268
|
+
const value = raw.trim().toLowerCase();
|
|
1269
|
+
const cut = value.lastIndexOf("-");
|
|
1270
|
+
if (cut > 0) {
|
|
1271
|
+
const base = value.slice(0, cut);
|
|
1272
|
+
const accent = value.slice(cut + 1);
|
|
1273
|
+
if (isBaseColor(base) && isAccent(accent)) return buildTheme(base, accent);
|
|
1274
|
+
}
|
|
1275
|
+
if (isBaseColor(value)) return buildTheme(value, null);
|
|
1276
|
+
throw new Error(
|
|
1277
|
+
`Unknown --theme "${raw}". Pass <base> or <base>-<accent>, a registry theme URL, or a path to a registry item JSON file.
|
|
1278
|
+
Base colors: ${BASE_COLORS.join(", ")}
|
|
1279
|
+
Accents: ${ACCENTS.join(", ")}`
|
|
1280
|
+
);
|
|
1281
|
+
}
|
|
1282
|
+
function isBaseColor(id) {
|
|
1283
|
+
return Object.prototype.hasOwnProperty.call(BASE_TOKENS, id);
|
|
1284
|
+
}
|
|
1285
|
+
function isAccent(id) {
|
|
1286
|
+
return Object.prototype.hasOwnProperty.call(ACCENT_TOKENS, id);
|
|
1287
|
+
}
|
|
1288
|
+
function resolveDarkModeFlag(raw) {
|
|
1289
|
+
const value = raw.trim().toLowerCase();
|
|
1290
|
+
if (DARK_MODES.includes(value)) return value;
|
|
1291
|
+
throw new Error(`Unknown --dark "${raw}". Valid modes: ${DARK_MODES.join(", ")}.`);
|
|
1292
|
+
}
|
|
1293
|
+
var CURATED_THEMES = [
|
|
1294
|
+
"neutral",
|
|
1295
|
+
"zinc-blue",
|
|
1296
|
+
"neutral-violet",
|
|
1297
|
+
"stone-orange",
|
|
1298
|
+
"mist-teal",
|
|
1299
|
+
"olive-green",
|
|
1300
|
+
"taupe-rose",
|
|
1301
|
+
"mauve-purple"
|
|
1302
|
+
];
|
|
1303
|
+
function curatedThemes() {
|
|
1304
|
+
return CURATED_THEMES.map(resolveThemeFlag);
|
|
1305
|
+
}
|
|
1306
|
+
function themeFromRegistryItem(raw, source) {
|
|
1307
|
+
const item = raw;
|
|
1308
|
+
const vars = item?.cssVars;
|
|
1309
|
+
if (vars === void 0 || vars === null || typeof vars !== "object") {
|
|
1310
|
+
throw new Error(
|
|
1311
|
+
`${source} is not a shadcn registry theme: no "cssVars" object. Expected a registry item with cssVars.light / cssVars.dark (see https://ui.shadcn.com/schema/registry-item.json).`
|
|
1312
|
+
);
|
|
1313
|
+
}
|
|
1314
|
+
const shared = normalizeVars(vars.theme);
|
|
1315
|
+
const light = { ...shared, ...normalizeVars(vars.light) };
|
|
1316
|
+
const dark = { ...shared, ...normalizeVars(vars.dark) };
|
|
1317
|
+
if (Object.keys(light).length === 0 && Object.keys(dark).length === 0) {
|
|
1318
|
+
throw new Error(`${source} defines no CSS variables under cssVars.`);
|
|
1319
|
+
}
|
|
1320
|
+
light["radius"] ??= DEFAULT_RADIUS;
|
|
1321
|
+
const name = typeof item.name === "string" && item.name !== "" ? item.name : "custom";
|
|
1322
|
+
const title = typeof item.title === "string" && item.title !== "" ? item.title : name;
|
|
1323
|
+
return { id: name, label: title, baseColor: null, light, dark };
|
|
1324
|
+
}
|
|
1325
|
+
var HSL_TRIPLE = /^-?\d*\.?\d+\s+-?\d*\.?\d+%\s+-?\d*\.?\d+%$/;
|
|
1326
|
+
function normalizeVars(vars) {
|
|
1327
|
+
const out = {};
|
|
1328
|
+
for (const [key, value] of Object.entries(vars ?? {})) {
|
|
1329
|
+
if (typeof value !== "string") continue;
|
|
1330
|
+
const name = key.replace(/^--/, "");
|
|
1331
|
+
out[name] = HSL_TRIPLE.test(value.trim()) ? `hsl(${value.trim()})` : value;
|
|
1332
|
+
}
|
|
1333
|
+
return out;
|
|
1334
|
+
}
|
|
1335
|
+
function orderedTokens(vars) {
|
|
1336
|
+
const order = ["radius", ...TOKEN_ORDER.filter((k) => k !== "radius")];
|
|
1337
|
+
const known = order.filter((k) => k in vars).map((k) => [k, vars[k]]);
|
|
1338
|
+
const extra = Object.keys(vars).filter((k) => !TOKEN_ORDER.includes(k)).sort().map((k) => [k, vars[k]]);
|
|
1339
|
+
return [...known, ...extra];
|
|
1340
|
+
}
|
|
1341
|
+
function colorTokens(vars) {
|
|
1342
|
+
return orderedTokens(vars).map(([k]) => k).filter((k) => k !== "radius");
|
|
1343
|
+
}
|
|
1344
|
+
function themeGuidanceSection(choice) {
|
|
1345
|
+
const { theme, dark } = choice;
|
|
1346
|
+
const darkBullet = {
|
|
1347
|
+
system: ` - Dark mode follows the OS: an inline script in the HTML entry sets the
|
|
1348
|
+
\`dark\` class before first paint. There is no in-app switcher \u2014 if you are
|
|
1349
|
+
asked for one, add a control that toggles that class on
|
|
1350
|
+
\`document.documentElement\` and persists the choice; do not install a theming
|
|
1351
|
+
library for it.`,
|
|
1352
|
+
toggle: ` - Dark mode is already wired: \`frontend/src/lib/theme.ts\` holds the mode
|
|
1353
|
+
(\`getMode\`/\`setMode\`/\`watchMode\`), an inline script in the HTML entry applies
|
|
1354
|
+
it before first paint, and the mode toggle on the landing page cycles
|
|
1355
|
+
system \u2192 light \u2192 dark. Use that module \u2014 do not add \`next-themes\` or a second
|
|
1356
|
+
class-toggling implementation.`,
|
|
1357
|
+
off: ` - This project has no dark-mode switch (scaffolded with \`--dark off\`), but
|
|
1358
|
+
the \`.dark\` palette in the stylesheet is complete. To turn it on, apply the
|
|
1359
|
+
\`dark\` class to \`document.documentElement\` \u2014 do not install a theming library.`
|
|
1360
|
+
}[dark];
|
|
1361
|
+
return ` - Theme: **${theme.label}**, defined as CSS custom properties at the top of
|
|
1362
|
+
\`frontend/src/index.css\`. That file is the entire theme \u2014 Tailwind v4 has no
|
|
1363
|
+
\`tailwind.config.js\`.
|
|
1364
|
+
- Use the semantic token classes only: \`bg-background\`, \`text-foreground\`,
|
|
1365
|
+
\`bg-primary\`, \`text-muted-foreground\`, \`border-input\`, \`bg-card\`,
|
|
1366
|
+
\`bg-destructive\`, and the \`chart-1..5\` / \`sidebar-*\` sets.
|
|
1367
|
+
NEVER raw palette classes (\`bg-gray-100\`, \`text-slate-500\`) \u2014 they ignore the
|
|
1368
|
+
theme and are unreadable in dark mode, and nothing will report it.
|
|
1369
|
+
- Rebranding means editing token VALUES in that stylesheet, never editing
|
|
1370
|
+
components to hard-code a color.
|
|
1371
|
+
${darkBullet}`;
|
|
1372
|
+
}
|
|
1373
|
+
function themeSwatch(theme) {
|
|
1374
|
+
return ["primary", "accent", "muted-foreground"].map((token) => theme.light[token]).map((value) => value === void 0 ? null : parseColor(value)).filter((rgb) => rgb !== null);
|
|
1375
|
+
}
|
|
1376
|
+
function parseColor(value) {
|
|
1377
|
+
const v = value.trim().toLowerCase();
|
|
1378
|
+
const oklch = /^oklch\(\s*([\d.]+%?)\s+([\d.]+)\s+([\d.]+)/.exec(v);
|
|
1379
|
+
if (oklch) {
|
|
1380
|
+
const l = oklch[1].endsWith("%") ? Number.parseFloat(oklch[1]) / 100 : Number.parseFloat(oklch[1]);
|
|
1381
|
+
return oklchToRgb(l, Number.parseFloat(oklch[2]), Number.parseFloat(oklch[3]));
|
|
1382
|
+
}
|
|
1383
|
+
const hsl = /^hsl\(\s*([-\d.]+)\s*,?\s*([\d.]+)%\s*,?\s*([\d.]+)%/.exec(v);
|
|
1384
|
+
if (hsl) {
|
|
1385
|
+
return hslToRgb(
|
|
1386
|
+
Number.parseFloat(hsl[1]),
|
|
1387
|
+
Number.parseFloat(hsl[2]) / 100,
|
|
1388
|
+
Number.parseFloat(hsl[3]) / 100
|
|
1389
|
+
);
|
|
1390
|
+
}
|
|
1391
|
+
const hex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(v);
|
|
1392
|
+
if (hex) {
|
|
1393
|
+
const h = hex[1];
|
|
1394
|
+
const full = h.length === 3 ? [...h].map((c) => c + c).join("") : h;
|
|
1395
|
+
return {
|
|
1396
|
+
r: Number.parseInt(full.slice(0, 2), 16),
|
|
1397
|
+
g: Number.parseInt(full.slice(2, 4), 16),
|
|
1398
|
+
b: Number.parseInt(full.slice(4, 6), 16)
|
|
1399
|
+
};
|
|
1400
|
+
}
|
|
1401
|
+
return null;
|
|
1402
|
+
}
|
|
1403
|
+
function byte(x) {
|
|
1404
|
+
return Math.max(0, Math.min(255, Math.round(x * 255)));
|
|
1405
|
+
}
|
|
1406
|
+
function gamma(c) {
|
|
1407
|
+
return c <= 31308e-7 ? 12.92 * c : 1.055 * Math.pow(c, 1 / 2.4) - 0.055;
|
|
1408
|
+
}
|
|
1409
|
+
function oklchToRgb(L, C, hDeg) {
|
|
1410
|
+
const h = hDeg * Math.PI / 180;
|
|
1411
|
+
const a = C * Math.cos(h);
|
|
1412
|
+
const bb = C * Math.sin(h);
|
|
1413
|
+
const l = (L + 0.3963377774 * a + 0.2158037573 * bb) ** 3;
|
|
1414
|
+
const m = (L - 0.1055613458 * a - 0.0638541728 * bb) ** 3;
|
|
1415
|
+
const s = (L - 0.0894841775 * a - 1.291485548 * bb) ** 3;
|
|
1416
|
+
return {
|
|
1417
|
+
r: byte(gamma(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s)),
|
|
1418
|
+
g: byte(gamma(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s)),
|
|
1419
|
+
b: byte(gamma(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s))
|
|
1420
|
+
};
|
|
1421
|
+
}
|
|
1422
|
+
function hslToRgb(hDeg, s, l) {
|
|
1423
|
+
const c = (1 - Math.abs(2 * l - 1)) * s;
|
|
1424
|
+
const hp = (hDeg % 360 + 360) % 360 / 60;
|
|
1425
|
+
const x = c * (1 - Math.abs(hp % 2 - 1));
|
|
1426
|
+
const [r, g, b] = hp < 1 ? [c, x, 0] : hp < 2 ? [x, c, 0] : hp < 3 ? [0, c, x] : hp < 4 ? [0, x, c] : hp < 5 ? [x, 0, c] : [c, 0, x];
|
|
1427
|
+
const m = l - c / 2;
|
|
1428
|
+
return { r: byte(r + m), g: byte(g + m), b: byte(b + m) };
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
// src/emit/icon-presets.ts
|
|
1432
|
+
var ICON_LIBRARIES = ["lucide", "tabler", "phosphor"];
|
|
1433
|
+
var DEFAULT_ICON_LIBRARY = "lucide";
|
|
1434
|
+
var LIBRARIES = {
|
|
1435
|
+
lucide: {
|
|
1436
|
+
id: "lucide",
|
|
1437
|
+
label: "Lucide",
|
|
1438
|
+
componentsJson: "lucide",
|
|
1439
|
+
react: {
|
|
1440
|
+
dependency: { "lucide-react": "^0.475.0" },
|
|
1441
|
+
arrowImport: `import { ArrowRight } from "lucide-react";`,
|
|
1442
|
+
arrowComponent: "ArrowRight",
|
|
1443
|
+
modeImports: [`import { Monitor, Moon, Sun } from "lucide-react";`],
|
|
1444
|
+
modeComponents: { system: "Monitor", light: "Sun", dark: "Moon" }
|
|
1445
|
+
},
|
|
1446
|
+
svelte: {
|
|
1447
|
+
// Not the same version line as `lucide-react`: the Svelte icons ship from
|
|
1448
|
+
// a separate package on their own 1.x.
|
|
1449
|
+
dependency: { "@lucide/svelte": "^1.31.0" },
|
|
1450
|
+
arrowImport: `import ArrowRight from "@lucide/svelte/icons/arrow-right";`,
|
|
1451
|
+
arrowComponent: "ArrowRight",
|
|
1452
|
+
modeImports: [
|
|
1453
|
+
`import Monitor from "@lucide/svelte/icons/monitor";`,
|
|
1454
|
+
`import Moon from "@lucide/svelte/icons/moon";`,
|
|
1455
|
+
`import Sun from "@lucide/svelte/icons/sun";`
|
|
1456
|
+
],
|
|
1457
|
+
modeComponents: { system: "Monitor", light: "Sun", dark: "Moon" }
|
|
1458
|
+
},
|
|
1459
|
+
guidance: {
|
|
1460
|
+
react: `Icons are [Lucide](https://lucide.dev/icons), installed as \`lucide-react\` and
|
|
1461
|
+
imported by name from the package root \u2014
|
|
1462
|
+
\`import { ArrowRight } from "lucide-react";\`.`,
|
|
1463
|
+
svelte: `Icons are [Lucide](https://lucide.dev/icons), installed as \`@lucide/svelte\` \u2014
|
|
1464
|
+
**not** \`lucide-react\`, which is the wrong package here in the same way the
|
|
1465
|
+
plain \`shadcn\` CLI is. Import them one per module, and kebab-case the name into
|
|
1466
|
+
the path: the icon is that module's DEFAULT export, and \`ArrowRight\` lives at
|
|
1467
|
+
\`arrow-right\` \u2014 \`import ArrowRight from "@lucide/svelte/icons/arrow-right";\`.
|
|
1468
|
+
Never from the package root, which pulls the whole set into the bundle.`
|
|
1469
|
+
}
|
|
1470
|
+
},
|
|
1471
|
+
tabler: {
|
|
1472
|
+
id: "tabler",
|
|
1473
|
+
label: "Tabler",
|
|
1474
|
+
componentsJson: "tabler",
|
|
1475
|
+
react: {
|
|
1476
|
+
dependency: { "@tabler/icons-react": "^3.31.0" },
|
|
1477
|
+
// Every Tabler component is prefixed `Icon`, so the name in markup is not
|
|
1478
|
+
// the name on the website — the single most common mistake with this set.
|
|
1479
|
+
arrowImport: `import { IconArrowRight } from "@tabler/icons-react";`,
|
|
1480
|
+
arrowComponent: "IconArrowRight",
|
|
1481
|
+
modeImports: [
|
|
1482
|
+
`import { IconDeviceDesktop, IconMoon, IconSun } from "@tabler/icons-react";`
|
|
1483
|
+
],
|
|
1484
|
+
modeComponents: {
|
|
1485
|
+
system: "IconDeviceDesktop",
|
|
1486
|
+
light: "IconSun",
|
|
1487
|
+
dark: "IconMoon"
|
|
1488
|
+
}
|
|
1489
|
+
},
|
|
1490
|
+
svelte: {
|
|
1491
|
+
dependency: { "@tabler/icons-svelte": "^3.31.0" },
|
|
1492
|
+
arrowImport: `import { IconArrowRight } from "@tabler/icons-svelte";`,
|
|
1493
|
+
arrowComponent: "IconArrowRight",
|
|
1494
|
+
modeImports: [
|
|
1495
|
+
`import { IconDeviceDesktop, IconMoon, IconSun } from "@tabler/icons-svelte";`
|
|
1496
|
+
],
|
|
1497
|
+
modeComponents: {
|
|
1498
|
+
system: "IconDeviceDesktop",
|
|
1499
|
+
light: "IconSun",
|
|
1500
|
+
dark: "IconMoon"
|
|
1501
|
+
}
|
|
1502
|
+
},
|
|
1503
|
+
guidance: {
|
|
1504
|
+
react: `Icons are [Tabler](https://tabler.io/icons), installed as \`@tabler/icons-react\`.
|
|
1505
|
+
Every component is prefixed \`Icon\` \u2014 the site lists \`arrow-right\`, the import is
|
|
1506
|
+
\`import { IconArrowRight } from "@tabler/icons-react";\`.`,
|
|
1507
|
+
svelte: `Icons are [Tabler](https://tabler.io/icons), installed as \`@tabler/icons-svelte\` \u2014
|
|
1508
|
+
**not** \`@tabler/icons-react\`, which is the wrong package here in the same way
|
|
1509
|
+
the plain \`shadcn\` CLI is. Every component is prefixed \`Icon\`, so the name in
|
|
1510
|
+
markup is not the name on the site: \`arrow-right\` is
|
|
1511
|
+
\`import { IconArrowRight } from "@tabler/icons-svelte";\`.`
|
|
1512
|
+
}
|
|
1513
|
+
},
|
|
1514
|
+
phosphor: {
|
|
1515
|
+
id: "phosphor",
|
|
1516
|
+
label: "Phosphor",
|
|
1517
|
+
// shadcn/ui's CLI does not know this set. Left off components.json rather
|
|
1518
|
+
// than guessed — see IconLibrary.componentsJson.
|
|
1519
|
+
componentsJson: void 0,
|
|
1520
|
+
react: {
|
|
1521
|
+
dependency: { "@phosphor-icons/react": "^2.1.7" },
|
|
1522
|
+
arrowImport: `import { ArrowRight } from "@phosphor-icons/react";`,
|
|
1523
|
+
arrowComponent: "ArrowRight",
|
|
1524
|
+
modeImports: [`import { Desktop, Moon, Sun } from "@phosphor-icons/react";`],
|
|
1525
|
+
modeComponents: { system: "Desktop", light: "Sun", dark: "Moon" }
|
|
1526
|
+
},
|
|
1527
|
+
svelte: {
|
|
1528
|
+
dependency: { "phosphor-svelte": "^3.0.1" },
|
|
1529
|
+
arrowImport: `import ArrowRight from "phosphor-svelte/lib/ArrowRight";`,
|
|
1530
|
+
arrowComponent: "ArrowRight",
|
|
1531
|
+
modeImports: [
|
|
1532
|
+
`import Desktop from "phosphor-svelte/lib/Desktop";`,
|
|
1533
|
+
`import Moon from "phosphor-svelte/lib/Moon";`,
|
|
1534
|
+
`import Sun from "phosphor-svelte/lib/Sun";`
|
|
1535
|
+
],
|
|
1536
|
+
modeComponents: { system: "Desktop", light: "Sun", dark: "Moon" }
|
|
1537
|
+
},
|
|
1538
|
+
guidance: {
|
|
1539
|
+
react: `Icons are [Phosphor](https://phosphoricons.com), installed as
|
|
1540
|
+
\`@phosphor-icons/react\` and imported by name \u2014
|
|
1541
|
+
\`import { ArrowRight } from "@phosphor-icons/react";\`. Each takes a \`weight\` prop
|
|
1542
|
+
(\`regular\`, \`bold\`, \`duotone\`, \u2026) rather than only a stroke width.`,
|
|
1543
|
+
svelte: `Icons are [Phosphor](https://phosphoricons.com), installed as \`phosphor-svelte\` \u2014
|
|
1544
|
+
**not** \`@phosphor-icons/react\`, which is the wrong package here in the same way
|
|
1545
|
+
the plain \`shadcn\` CLI is. Import them one per module, and PascalCase the name
|
|
1546
|
+
into the path: \`import ArrowRight from "phosphor-svelte/lib/ArrowRight";\`.
|
|
1547
|
+
Never from the package root, which pulls the whole set into the bundle.`
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1550
|
+
};
|
|
1551
|
+
function findIconLibrary(id) {
|
|
1552
|
+
const normalized = id.trim().toLowerCase();
|
|
1553
|
+
return ICON_LIBRARIES.includes(normalized) ? LIBRARIES[normalized] : void 0;
|
|
1554
|
+
}
|
|
1555
|
+
function allIconLibraries() {
|
|
1556
|
+
return ICON_LIBRARIES.map((id) => LIBRARIES[id]);
|
|
1557
|
+
}
|
|
1558
|
+
function defaultIconLibrary() {
|
|
1559
|
+
return LIBRARIES[DEFAULT_ICON_LIBRARY];
|
|
1560
|
+
}
|
|
1561
|
+
function resolveIconsFlag(raw) {
|
|
1562
|
+
const library = findIconLibrary(raw);
|
|
1563
|
+
if (library === void 0) {
|
|
1564
|
+
throw new Error(
|
|
1565
|
+
`Unknown --icons "${raw}". Valid icon libraries: ${ICON_LIBRARIES.join(", ")}.`
|
|
1566
|
+
);
|
|
1567
|
+
}
|
|
1568
|
+
return library;
|
|
1569
|
+
}
|
|
1570
|
+
function iconLibraryOf(id) {
|
|
1571
|
+
return id === void 0 ? defaultIconLibrary() : LIBRARIES[id];
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
// src/emit/frontend-react.ts
|
|
1575
|
+
var CODE_CLASS = "bg-muted rounded px-1.5 py-0.5 font-mono text-sm";
|
|
1576
|
+
function jsxText(s) {
|
|
1577
|
+
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\{/g, "{").replace(/\}/g, "}");
|
|
1578
|
+
}
|
|
1579
|
+
function renderNode(node) {
|
|
1580
|
+
return "code" in node ? `<code className="${CODE_CLASS}">${jsxText(node.code)}</code>` : jsxText(node.text);
|
|
1581
|
+
}
|
|
1582
|
+
function renderNodes(nodes) {
|
|
1583
|
+
return nodes.map(renderNode).join("");
|
|
1584
|
+
}
|
|
1585
|
+
function renderApp(landing, choice) {
|
|
1586
|
+
const steps = landing.steps.map((step) => ` <li>${renderNodes(step)}</li>`).join("\n");
|
|
1587
|
+
const toggle = choice.dark === "toggle";
|
|
1588
|
+
const icons = iconLibraryOf(choice.icons).react;
|
|
1589
|
+
return `${icons.arrowImport}
|
|
1590
|
+
|
|
1591
|
+
import { Button } from "@/components/ui/button";${toggle ? `
|
|
1592
|
+
import { ModeToggle } from "@/components/mode-toggle";` : ""}
|
|
1593
|
+
import {
|
|
1594
|
+
Card,
|
|
1595
|
+
CardContent,
|
|
1596
|
+
CardDescription,
|
|
1597
|
+
CardFooter,
|
|
1598
|
+
CardHeader,
|
|
1599
|
+
CardTitle,
|
|
1600
|
+
} from "@/components/ui/card";
|
|
1601
|
+
|
|
1602
|
+
export default function App() {
|
|
1603
|
+
return (
|
|
1604
|
+
<main className="mx-auto flex min-h-screen max-w-2xl flex-col justify-center p-8">${toggle ? `
|
|
1605
|
+
<div className="mb-4 flex justify-end">
|
|
1606
|
+
<ModeToggle />
|
|
1607
|
+
</div>` : ""}
|
|
1608
|
+
<Card>
|
|
1609
|
+
<CardHeader>
|
|
1610
|
+
<CardTitle className="text-3xl tracking-tight">${jsxText(landing.title)}</CardTitle>
|
|
1611
|
+
<CardDescription className="text-base">
|
|
1612
|
+
${renderNodes(landing.lead)}
|
|
1613
|
+
</CardDescription>
|
|
1614
|
+
</CardHeader>
|
|
1615
|
+
<CardContent>
|
|
1616
|
+
<ol className="text-muted-foreground list-inside list-decimal space-y-2">
|
|
1617
|
+
${steps}
|
|
1618
|
+
</ol>
|
|
1619
|
+
</CardContent>
|
|
1620
|
+
<CardFooter>
|
|
1621
|
+
{/* asChild renders the Button's styles onto the anchor. Components come
|
|
1622
|
+
from shadcn/ui \u2014 add more with \`npx shadcn@latest add <name>\`. */}
|
|
1623
|
+
<Button asChild>
|
|
1624
|
+
<a href="${landing.cta.href}" target="_blank" rel="noreferrer">
|
|
1625
|
+
${jsxText(landing.cta.label)} <${icons.arrowComponent} />
|
|
1626
|
+
</a>
|
|
1627
|
+
</Button>
|
|
1628
|
+
</CardFooter>
|
|
1629
|
+
</Card>
|
|
1630
|
+
</main>
|
|
1631
|
+
);
|
|
1632
|
+
}
|
|
1633
|
+
`;
|
|
1634
|
+
}
|
|
1635
|
+
function renderMainTsx() {
|
|
1636
|
+
return `import { StrictMode } from "react";
|
|
1637
|
+
import { createRoot } from "react-dom/client";
|
|
1638
|
+
import App from "./App.js";
|
|
1639
|
+
import "./index.css";
|
|
1640
|
+
|
|
1641
|
+
createRoot(document.getElementById("root")!).render(
|
|
1642
|
+
<StrictMode>
|
|
1643
|
+
<App />
|
|
1644
|
+
</StrictMode>,
|
|
1645
|
+
);
|
|
1646
|
+
`;
|
|
1647
|
+
}
|
|
1648
|
+
function renderComponentsJson(choice) {
|
|
1649
|
+
const config = {
|
|
1650
|
+
$schema: "https://ui.shadcn.com/schema.json",
|
|
1651
|
+
style: "new-york",
|
|
1652
|
+
rsc: false,
|
|
1653
|
+
tsx: true,
|
|
1654
|
+
tailwind: {
|
|
1655
|
+
// v4 has no config file; the theme lives in the stylesheet.
|
|
1656
|
+
config: "",
|
|
1657
|
+
css: "frontend/src/index.css",
|
|
1658
|
+
// The base color the scaffold's stylesheet was rendered from. The CLI
|
|
1659
|
+
// reads it for the few colors a generated component hard-codes rather
|
|
1660
|
+
// than tokenises, so a value that disagrees with index.css produces
|
|
1661
|
+
// components that clash with everything already there. An imported
|
|
1662
|
+
// registry theme belongs to no upstream base and falls back to neutral.
|
|
1663
|
+
baseColor: choice.theme.baseColor ?? "neutral",
|
|
1664
|
+
cssVariables: true,
|
|
1665
|
+
prefix: ""
|
|
1666
|
+
},
|
|
1667
|
+
aliases: {
|
|
1668
|
+
components: "@/components",
|
|
1669
|
+
utils: "@/lib/utils",
|
|
1670
|
+
ui: "@/components/ui",
|
|
1671
|
+
lib: "@/lib",
|
|
1672
|
+
hooks: "@/hooks"
|
|
1673
|
+
},
|
|
1674
|
+
// Omitted entirely for a set the CLI does not know — writing an
|
|
1675
|
+
// unrecognised value would break `add` for every component, which is worse
|
|
1676
|
+
// than icons defaulting to lucide. See IconLibrary.componentsJson.
|
|
1677
|
+
...iconLibraryOf(choice.icons).componentsJson === void 0 ? {} : { iconLibrary: iconLibraryOf(choice.icons).componentsJson }
|
|
1678
|
+
};
|
|
1679
|
+
return JSON.stringify(config, null, 2) + "\n";
|
|
1680
|
+
}
|
|
1681
|
+
function renderButtonTsx() {
|
|
1682
|
+
return `import * as React from "react"
|
|
1683
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
1684
|
+
import { Slot } from "radix-ui"
|
|
1685
|
+
|
|
1686
|
+
import { cn } from "@/lib/utils"
|
|
1687
|
+
|
|
1688
|
+
const buttonVariants = cva(
|
|
1689
|
+
"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1690
|
+
{
|
|
1691
|
+
variants: {
|
|
1692
|
+
variant: {
|
|
1693
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
1694
|
+
destructive:
|
|
1695
|
+
"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
|
|
1696
|
+
outline:
|
|
1697
|
+
"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
1698
|
+
secondary:
|
|
1699
|
+
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
1700
|
+
ghost:
|
|
1701
|
+
"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
1702
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
1703
|
+
},
|
|
1704
|
+
size: {
|
|
1705
|
+
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
1706
|
+
xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
1707
|
+
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
|
|
1708
|
+
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
1709
|
+
icon: "size-9",
|
|
1710
|
+
"icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
1711
|
+
"icon-sm": "size-8",
|
|
1712
|
+
"icon-lg": "size-10",
|
|
1713
|
+
},
|
|
1714
|
+
},
|
|
1715
|
+
defaultVariants: {
|
|
1716
|
+
variant: "default",
|
|
1717
|
+
size: "default",
|
|
1718
|
+
},
|
|
1719
|
+
}
|
|
1720
|
+
)
|
|
1721
|
+
|
|
1722
|
+
function Button({
|
|
1723
|
+
className,
|
|
1724
|
+
variant = "default",
|
|
1725
|
+
size = "default",
|
|
1726
|
+
asChild = false,
|
|
1727
|
+
...props
|
|
1728
|
+
}: React.ComponentProps<"button"> &
|
|
1729
|
+
VariantProps<typeof buttonVariants> & {
|
|
1730
|
+
asChild?: boolean
|
|
1731
|
+
}) {
|
|
1732
|
+
const Comp = asChild ? Slot.Root : "button"
|
|
1733
|
+
|
|
1734
|
+
return (
|
|
1735
|
+
<Comp
|
|
1736
|
+
data-slot="button"
|
|
1737
|
+
data-variant={variant}
|
|
1738
|
+
data-size={size}
|
|
1739
|
+
className={cn(buttonVariants({ variant, size, className }))}
|
|
1740
|
+
{...props}
|
|
1741
|
+
/>
|
|
1742
|
+
)
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
export { Button, buttonVariants }
|
|
1746
|
+
`;
|
|
1747
|
+
}
|
|
1748
|
+
function renderModeToggleTsx(icons) {
|
|
1749
|
+
return `import { useEffect, useState } from "react";
|
|
1750
|
+
${icons.modeImports.join("\n")}
|
|
1751
|
+
|
|
1752
|
+
import { Button } from "@/components/ui/button";
|
|
1753
|
+
import { getMode, setMode, watchMode, type Mode } from "@/lib/theme";
|
|
1754
|
+
|
|
1755
|
+
/** system \u2192 light \u2192 dark \u2192 system. */
|
|
1756
|
+
const NEXT: Record<Mode, Mode> = { system: "light", light: "dark", dark: "system" };
|
|
1757
|
+
|
|
1758
|
+
const ICON = {
|
|
1759
|
+
system: ${icons.modeComponents.system},
|
|
1760
|
+
light: ${icons.modeComponents.light},
|
|
1761
|
+
dark: ${icons.modeComponents.dark},
|
|
1762
|
+
};
|
|
1763
|
+
|
|
1764
|
+
export function ModeToggle() {
|
|
1765
|
+
// Read on mount, not during render: the inline script in index.html has
|
|
1766
|
+
// already applied the class, and touching localStorage while rendering would
|
|
1767
|
+
// break if this component is ever server-rendered.
|
|
1768
|
+
const [mode, setLocal] = useState<Mode>("system");
|
|
1769
|
+
useEffect(() => {
|
|
1770
|
+
setLocal(getMode());
|
|
1771
|
+
return watchMode(setLocal);
|
|
1772
|
+
}, []);
|
|
1773
|
+
|
|
1774
|
+
const Icon = ICON[mode];
|
|
1775
|
+
const change = () => {
|
|
1776
|
+
const next = NEXT[mode];
|
|
1777
|
+
setMode(next);
|
|
1778
|
+
setLocal(next);
|
|
1779
|
+
};
|
|
1780
|
+
|
|
1781
|
+
return (
|
|
1782
|
+
<Button variant="ghost" size="icon" onClick={change} aria-label={\`Switch to \${NEXT[mode]} theme\`}>
|
|
1783
|
+
<Icon />
|
|
1784
|
+
</Button>
|
|
1785
|
+
);
|
|
1786
|
+
}
|
|
1787
|
+
`;
|
|
1788
|
+
}
|
|
1789
|
+
function renderCardTsx() {
|
|
1790
|
+
return `import * as React from "react"
|
|
1791
|
+
|
|
1792
|
+
import { cn } from "@/lib/utils"
|
|
1793
|
+
|
|
1794
|
+
function Card({ className, ...props }: React.ComponentProps<"div">) {
|
|
1795
|
+
return (
|
|
1796
|
+
<div
|
|
1797
|
+
data-slot="card"
|
|
1798
|
+
className={cn(
|
|
1799
|
+
"flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",
|
|
1800
|
+
className
|
|
1801
|
+
)}
|
|
1802
|
+
{...props}
|
|
1803
|
+
/>
|
|
1804
|
+
)
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
1808
|
+
return (
|
|
1809
|
+
<div
|
|
1810
|
+
data-slot="card-header"
|
|
1811
|
+
className={cn(
|
|
1812
|
+
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
1813
|
+
className
|
|
1814
|
+
)}
|
|
1815
|
+
{...props}
|
|
1816
|
+
/>
|
|
1817
|
+
)
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
|
|
1821
|
+
return (
|
|
1822
|
+
<div
|
|
1823
|
+
data-slot="card-title"
|
|
1824
|
+
className={cn("leading-none font-semibold", className)}
|
|
1825
|
+
{...props}
|
|
1826
|
+
/>
|
|
1827
|
+
)
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
|
|
1831
|
+
return (
|
|
1832
|
+
<div
|
|
1833
|
+
data-slot="card-description"
|
|
1834
|
+
className={cn("text-sm text-muted-foreground", className)}
|
|
1835
|
+
{...props}
|
|
1836
|
+
/>
|
|
1837
|
+
)
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1840
|
+
function CardAction({ className, ...props }: React.ComponentProps<"div">) {
|
|
1841
|
+
return (
|
|
1842
|
+
<div
|
|
1843
|
+
data-slot="card-action"
|
|
1844
|
+
className={cn(
|
|
1845
|
+
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
1846
|
+
className
|
|
1847
|
+
)}
|
|
1848
|
+
{...props}
|
|
1849
|
+
/>
|
|
1850
|
+
)
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
function CardContent({ className, ...props }: React.ComponentProps<"div">) {
|
|
1854
|
+
return (
|
|
1855
|
+
<div
|
|
1856
|
+
data-slot="card-content"
|
|
1857
|
+
className={cn("px-6", className)}
|
|
1858
|
+
{...props}
|
|
1859
|
+
/>
|
|
1860
|
+
)
|
|
1861
|
+
}
|
|
1862
|
+
|
|
1863
|
+
function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
|
|
1864
|
+
return (
|
|
1865
|
+
<div
|
|
1866
|
+
data-slot="card-footer"
|
|
1867
|
+
className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
|
|
1868
|
+
{...props}
|
|
1869
|
+
/>
|
|
1870
|
+
)
|
|
1871
|
+
}
|
|
1872
|
+
|
|
1873
|
+
export {
|
|
1874
|
+
Card,
|
|
1875
|
+
CardHeader,
|
|
1876
|
+
CardFooter,
|
|
1877
|
+
CardTitle,
|
|
1878
|
+
CardAction,
|
|
1879
|
+
CardDescription,
|
|
1880
|
+
CardContent,
|
|
1881
|
+
}
|
|
1882
|
+
`;
|
|
1883
|
+
}
|
|
1884
|
+
var reactPreset = {
|
|
1885
|
+
id: "react",
|
|
1886
|
+
label: "React + Vite",
|
|
1887
|
+
dependencies: {
|
|
1888
|
+
// shadcn/ui's runtime surface. `radix-ui` is the unified primitives
|
|
1889
|
+
// package current components import (`Slot.Root` powers `asChild`) — not
|
|
1890
|
+
// the per-primitive `@radix-ui/react-*` packages, which it superseded.
|
|
1891
|
+
// cva types the variants, clsx + tailwind-merge back `cn()`. Pre-installed
|
|
1892
|
+
// so `npx shadcn@latest add <component>` works without a separate npm i.
|
|
1893
|
+
//
|
|
1894
|
+
// The icon package is deliberately absent: it is `--icons`, merged in by
|
|
1895
|
+
// renderPackageJson from `iconBinding` below. Naming lucide here too would
|
|
1896
|
+
// install it alongside whatever the user actually chose.
|
|
1897
|
+
"class-variance-authority": "^0.7.1",
|
|
1898
|
+
clsx: "^2.1.1",
|
|
1899
|
+
"radix-ui": "^1.6.7",
|
|
1900
|
+
react: "^19.1.0",
|
|
1901
|
+
"react-dom": "^19.1.0",
|
|
1902
|
+
"tailwind-merge": "^3.0.1"
|
|
1903
|
+
},
|
|
1904
|
+
devDependencies: {
|
|
1905
|
+
"@tailwindcss/vite": "^4.1.5",
|
|
1906
|
+
"@types/node": "^20.19.43",
|
|
1907
|
+
"@types/react": "^19.1.0",
|
|
1908
|
+
"@types/react-dom": "^19.1.0",
|
|
1909
|
+
// 6.x, which peer-requires vite ^8 — the same constraint the Svelte
|
|
1910
|
+
// preset's plugin has, which is why both presets share one Vite major.
|
|
1911
|
+
// Its `@rolldown/plugin-babel` and `babel-plugin-react-compiler` peers are
|
|
1912
|
+
// OPTIONAL (they back the React Compiler path, which this scaffold does
|
|
1913
|
+
// not enable), so neither is shipped: verified by a clean install with no
|
|
1914
|
+
// unmet-peer warnings.
|
|
1915
|
+
"@vitejs/plugin-react": "^6.0.5",
|
|
1916
|
+
tailwindcss: "^4.1.5",
|
|
1917
|
+
"tw-animate-css": "^1.2.4",
|
|
1918
|
+
tsx: "^4.19.2",
|
|
1919
|
+
// Kept in step with the Svelte preset — the major `sv create` pins. 7 is
|
|
1920
|
+
// out, but svelte-check's peer range stops at 6 and the two presets track
|
|
1921
|
+
// one TypeScript major so the shared tsconfig means the same thing in both.
|
|
1922
|
+
typescript: "^6.0.3",
|
|
1923
|
+
vite: "^8.0.16"
|
|
1924
|
+
},
|
|
1925
|
+
// `tsc` checks .tsx natively, so React needs nothing beyond it.
|
|
1926
|
+
checkCmd: "tsc --noEmit",
|
|
1927
|
+
aliasName: "@",
|
|
1928
|
+
aliasTarget: "frontend/src",
|
|
1929
|
+
// `./`-rooted: with no `baseUrl` (deprecated in TypeScript 6), a `paths`
|
|
1930
|
+
// target resolves against tsconfig.json's own directory.
|
|
1931
|
+
tsconfigPaths: { "@/*": ["./frontend/src/*"] },
|
|
1932
|
+
tsconfigOptions: { jsx: "react-jsx" },
|
|
1933
|
+
viteImports: [
|
|
1934
|
+
`import react from "@vitejs/plugin-react";`,
|
|
1935
|
+
`import tailwindcss from "@tailwindcss/vite";`
|
|
1936
|
+
],
|
|
1937
|
+
vitePlugins: ["react()", "tailwindcss()"],
|
|
1938
|
+
entryScript: "/src/main.tsx",
|
|
1939
|
+
files(_vars, landing, choice = defaultThemeChoice()) {
|
|
1940
|
+
return [
|
|
1941
|
+
// The shadcn/ui CLI's config — lets `npx shadcn@latest add <component>`
|
|
1942
|
+
// work in a fresh scaffold without a separate `shadcn init`.
|
|
1943
|
+
{ path: "components.json", content: renderComponentsJson(choice) },
|
|
1944
|
+
{ path: "frontend/src/main.tsx", content: renderMainTsx() },
|
|
1945
|
+
{ path: "frontend/src/App.tsx", content: renderApp(landing, choice) },
|
|
1946
|
+
// Only for `--dark toggle`. `system` needs no component: the inline
|
|
1947
|
+
// script in index.html is the whole implementation.
|
|
1948
|
+
...choice.dark === "toggle" ? [
|
|
1949
|
+
{
|
|
1950
|
+
path: "frontend/src/components/mode-toggle.tsx",
|
|
1951
|
+
content: renderModeToggleTsx(iconLibraryOf(choice.icons).react)
|
|
1952
|
+
}
|
|
1953
|
+
] : [],
|
|
1954
|
+
// The two components the landing page uses. Every other shadcn component
|
|
1955
|
+
// is one `npx shadcn@latest add` away and lands beside these.
|
|
1956
|
+
{ path: "frontend/src/components/ui/button.tsx", content: renderButtonTsx() },
|
|
1957
|
+
{ path: "frontend/src/components/ui/card.tsx", content: renderCardTsx() }
|
|
1958
|
+
];
|
|
1959
|
+
},
|
|
1960
|
+
iconBinding(id) {
|
|
1961
|
+
return iconLibraryOf(id).react;
|
|
1962
|
+
},
|
|
1963
|
+
readmeFrontendSection(icons) {
|
|
1964
|
+
return `React + Vite, styled with [Tailwind CSS](https://tailwindcss.com) v4 and
|
|
1965
|
+
[shadcn/ui](https://ui.shadcn.com). shadcn is not a dependency \u2014 its components
|
|
1966
|
+
are copied into [\`frontend/src/components/ui/\`](frontend/src/components/ui/) and
|
|
1967
|
+
owned by this project, so edit them freely. \`Button\` and \`Card\` are already
|
|
1968
|
+
there; add more with:
|
|
1969
|
+
|
|
1970
|
+
\`\`\`bash
|
|
1971
|
+
npx shadcn@latest add dialog input form
|
|
1972
|
+
\`\`\`
|
|
1973
|
+
|
|
1974
|
+
[\`components.json\`](components.json) is pre-configured, so that works with no
|
|
1975
|
+
\`shadcn init\` step. ${iconLibraryOf(icons).guidance.react}
|
|
1976
|
+
[\`frontend/src/App.tsx\`](frontend/src/App.tsx) already uses one.
|
|
1977
|
+
|
|
1978
|
+
Components import through the \`@/\` alias
|
|
1979
|
+
(\`@/components/ui/button\`, \`@/lib/utils\`), which maps to \`frontend/src/\` in both
|
|
1980
|
+
\`tsconfig.json\` and \`vite.config.ts\` \u2014 change one and change the other.
|
|
1981
|
+
|
|
1982
|
+
Colors come from the theme tokens in
|
|
1983
|
+
[\`frontend/src/index.css\`](frontend/src/index.css) \u2014 see **Theming** below.`;
|
|
1984
|
+
},
|
|
1985
|
+
agentGuidanceSection(icons) {
|
|
1986
|
+
return `- \`frontend/src/\` \u2014 the React app. Tailwind v4 + shadcn/ui.
|
|
1987
|
+
- \`frontend/src/components/ui/\` \u2014 shadcn components, **copied in and owned by
|
|
1988
|
+
this project**. Edit them directly; there is no library to configure around.
|
|
1989
|
+
- Need one that isn't there? \`npx shadcn@latest add <name>\` \u2014 do not hand-roll
|
|
1990
|
+
it, and do not add a different component library.
|
|
1991
|
+
- ${iconLibraryOf(icons).guidance.react.replace(/\n/g, "\n ")}
|
|
1992
|
+
\`frontend/src/App.tsx\` already uses one. Do not add another icon library and
|
|
1993
|
+
do not paste raw inline \`<svg>\` markup \u2014 search the set before concluding an
|
|
1994
|
+
icon is missing.
|
|
1995
|
+
- Import via the \`@/\` alias (\`@/components/ui/button\`, \`@/lib/utils\`), declared
|
|
1996
|
+
in both \`tsconfig.json\` and \`vite.config.ts\`.`;
|
|
1997
|
+
}
|
|
1998
|
+
};
|
|
1999
|
+
|
|
2000
|
+
export {
|
|
2001
|
+
BASE_TOKENS,
|
|
2002
|
+
ACCENT_TOKENS,
|
|
2003
|
+
TOKEN_ORDER,
|
|
2004
|
+
FONTS,
|
|
2005
|
+
BASE_COLORS,
|
|
2006
|
+
ACCENTS,
|
|
2007
|
+
DEFAULT_BASE_COLOR,
|
|
2008
|
+
DARK_MODES,
|
|
2009
|
+
DEFAULT_RADIUS,
|
|
2010
|
+
DEFAULT_DARK_MODE,
|
|
2011
|
+
FONT_IDS,
|
|
2012
|
+
findFont,
|
|
2013
|
+
resolveFontFlag,
|
|
2014
|
+
fontDependencies,
|
|
2015
|
+
fontImports,
|
|
2016
|
+
fontThemeVars,
|
|
2017
|
+
describeFonts,
|
|
2018
|
+
buildTheme,
|
|
2019
|
+
defaultTheme,
|
|
2020
|
+
defaultThemeChoice,
|
|
2021
|
+
withRadius,
|
|
2022
|
+
normalizeRadius,
|
|
2023
|
+
resolveThemeFlag,
|
|
2024
|
+
isBaseColor,
|
|
2025
|
+
isAccent,
|
|
2026
|
+
resolveDarkModeFlag,
|
|
2027
|
+
CURATED_THEMES,
|
|
2028
|
+
curatedThemes,
|
|
2029
|
+
themeFromRegistryItem,
|
|
2030
|
+
orderedTokens,
|
|
2031
|
+
colorTokens,
|
|
2032
|
+
themeGuidanceSection,
|
|
2033
|
+
themeSwatch,
|
|
2034
|
+
parseColor,
|
|
2035
|
+
ICON_LIBRARIES,
|
|
2036
|
+
DEFAULT_ICON_LIBRARY,
|
|
2037
|
+
findIconLibrary,
|
|
2038
|
+
allIconLibraries,
|
|
2039
|
+
defaultIconLibrary,
|
|
2040
|
+
resolveIconsFlag,
|
|
2041
|
+
iconLibraryOf,
|
|
2042
|
+
reactPreset
|
|
2043
|
+
};
|
|
2044
|
+
//# sourceMappingURL=chunk-6DHJVLYP.js.map
|