@tradalab/lyra 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/dist/blocks/index.d.ts +68 -1
- package/dist/blocks/index.js +152 -4
- package/dist/blocks/index.js.map +1 -1
- package/dist/{chunk-DUWK53B5.js → chunk-EJP7F42V.js} +41 -4
- package/dist/chunk-EJP7F42V.js.map +1 -0
- package/dist/ui/index.js +4 -41
- package/dist/ui/index.js.map +1 -1
- package/package.json +1 -1
- package/styles/globals.css +585 -0
- package/dist/chunk-DUWK53B5.js.map +0 -1
package/package.json
CHANGED
package/styles/globals.css
CHANGED
|
@@ -195,3 +195,588 @@
|
|
|
195
195
|
background: var(--sidebar-active-rail, var(--sidebar-accent-foreground));
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
+
|
|
199
|
+
/* COMPACT - denser UI, from ONE lever: the root font size.
|
|
200
|
+
*
|
|
201
|
+
* `data-compact="true"` anywhere in the tree (an app usually puts it on `<html>`, beside the theme
|
|
202
|
+
* class) and every rem-sized thing in the kit tightens together: text, padding, control heights, gaps,
|
|
203
|
+
* icon boxes. That is the whole mechanism, and it is here rather than in each app because the sizes
|
|
204
|
+
* it acts on are lyra's.
|
|
205
|
+
*
|
|
206
|
+
* It came out of redishub, which had three "density tokens" beside it - `--tab-height`,
|
|
207
|
+
* `--tree-item-py`, `--sidebar-header-p`. Measured before moving: the first two had ZERO readers.
|
|
208
|
+
* Only the font size was doing anything, and it works for every app, so only the font size moved.
|
|
209
|
+
*
|
|
210
|
+
* No combinator in the selector, deliberately: unlike the dark plate blocks this matches wherever the
|
|
211
|
+
* attribute lands, on the root or on a wrapper. And `rem` in a root `font-size` resolves against the
|
|
212
|
+
* INITIAL 16px rather than itself, so 0.875rem is 14px whichever element carries the attribute.
|
|
213
|
+
*
|
|
214
|
+
* ⚠️ It reaches rem sizes only. 32 places in this kit use an explicit px value; most should not scale
|
|
215
|
+
* (hairlines, `ring-[3px]`, a 2px rail), but about ten are content sizes - `text-[10px]`, `h-[14px]`,
|
|
216
|
+
* `w-[32px]` - and those stay put while everything around them tightens. Prefer the rem scale in a new
|
|
217
|
+
* primitive, or compact will leave it behind.
|
|
218
|
+
*
|
|
219
|
+
* An app that wants a different density sets `--compact-font-size` and nothing else. */
|
|
220
|
+
:root {
|
|
221
|
+
--compact-font-size: 0.875rem;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
[data-compact="true"] {
|
|
225
|
+
font-size: var(--compact-font-size);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* TOAST above every overlay. Not a style preference.
|
|
229
|
+
*
|
|
230
|
+
* A toast reports the outcome of something the reader just did, and they usually did it in a dialog,
|
|
231
|
+
* so the case where the message matters is the case where it was hidden. Every overlay in this kit
|
|
232
|
+
* ships at z-50, which left stacking to DOM order, and the viewport mounts once at app start while a
|
|
233
|
+
* dialog portals in later: the dialog won every time.
|
|
234
|
+
*
|
|
235
|
+
* ⚠️ The per-toast `z-[calc(1000-var(--toast-index))]` inside the viewport is NOT a second chance at
|
|
236
|
+
* this. `position: fixed` with a z-index other than `auto` makes the viewport its own stacking
|
|
237
|
+
* context, so that 1000 is trapped inside it - it orders toasts against each other and can never lift
|
|
238
|
+
* one over a dialog. The viewport is the only element where the fix works.
|
|
239
|
+
*
|
|
240
|
+
* Unlayered on purpose: it has to outrank `.z-50` from `@layer utilities`, and an unlayered rule does
|
|
241
|
+
* that by cascade rather than by source order. It lives here rather than in `ui/primitives/toast.tsx`
|
|
242
|
+
* so that no primitive carries a hand deviation.
|
|
243
|
+
*
|
|
244
|
+
* ⚠️ Nothing checks this. An overlay added later at 60 or above reopens the bug silently, so raise
|
|
245
|
+
* this number rather than matching it. */
|
|
246
|
+
[data-slot="toast-viewport"] {
|
|
247
|
+
z-index: 60;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* PLATES - the palette a READER picks: the action colour, and a tint on every surface.
|
|
251
|
+
*
|
|
252
|
+
* A plate paints `--primary` / `--primary-foreground` / `--ring`, and tints `--background` `--card`
|
|
253
|
+
* `--popover` `--sidebar` `--muted` `--accent`. It never touches `--destructive` `--success`
|
|
254
|
+
* `--warning` `--info`: letting a chosen colour reach a status token is how a success badge comes to
|
|
255
|
+
* look like a button (doc/platform/CONVENTIONS.md §19).
|
|
256
|
+
*
|
|
257
|
+
* No app sets a plate by default. With no `data-plate` in the tree every token above keeps the
|
|
258
|
+
* neutral value declared earlier in this file, which is what every app ships.
|
|
259
|
+
*
|
|
260
|
+
* ## BOTH dark selectors, and why one alone is a white-on-white bug
|
|
261
|
+
*
|
|
262
|
+
* `.dark [data-plate]` is a DESCENDANT selector. An app that sets the theme class and the plate on
|
|
263
|
+
* the same element - `<html class="dark" data-plate=teal>`, which is where next-themes and a one-line
|
|
264
|
+
* effect both land - does not match it. The dark block is skipped, the LIGHT block wins, and
|
|
265
|
+
* `--background` goes near-white while `.dark` keeps `--foreground` near-white: white text on a white
|
|
266
|
+
* page. Measured with a real DOM, not reasoned: for a plate on `<html class=dark>` the descendant
|
|
267
|
+
* form is false and the same-element form true, and for a plate on `<body>` it is the other way
|
|
268
|
+
* round. Neither form covers both placements, so every dark block carries both.
|
|
269
|
+
*
|
|
270
|
+
* ## The label colour is per plate, and that is what makes the yellow band yellow
|
|
271
|
+
*
|
|
272
|
+
* Every plate used to carry a near-WHITE label, so it had to be dark enough for 4.6:1. Yellow, amber
|
|
273
|
+
* and gold are intrinsically light in sRGB, so that rule turned them brown: `gold` was #746208 (dark
|
|
274
|
+
* olive) and `orange` #803703. A yellow button in any real palette carries BLACK text. Each plate now
|
|
275
|
+
* takes whichever label lets it be more saturated, and `orange` went from #803703 C0.115 to #ef6c01
|
|
276
|
+
* C0.185.
|
|
277
|
+
*
|
|
278
|
+
* Two consequences worth stating. The swatch row is NOT one lightness, and it should not be - yellow
|
|
279
|
+
* IS lighter than blue, and levelling them is what made mud. And the switch needs a MARGIN (0.03
|
|
280
|
+
* chroma): without one, picking the more saturated family flips a plate over a rounding difference,
|
|
281
|
+
* so the row stops being consistent. That margin is what separates the yellow band (a real gain) from
|
|
282
|
+
* pink (0.200 to 0.215, noise).
|
|
283
|
+
*
|
|
284
|
+
* ⚠️ In DARK mode there is only one family: a button on a near-black page has to be the light thing.
|
|
285
|
+
* Allowing the alternative let chroma-maximising choose a navy button on a black page.
|
|
286
|
+
*
|
|
287
|
+
* ## Nineteen hues: 12 degrees through red and yellow, 24 elsewhere, one gap
|
|
288
|
+
*
|
|
289
|
+
* The step is finer where the palette was thinnest and where names are most distinct to the eye -
|
|
290
|
+
* red (0 to 36) and yellow (48 to 120). Adjacent plates measure dE76 10 to 21 in the fine bands and
|
|
291
|
+
* 15 to 57 in the 24-degree ones; 10 is still four times the just-noticeable difference, so they read
|
|
292
|
+
* as neighbours rather than duplicates.
|
|
293
|
+
*
|
|
294
|
+
* The single 48 degree gap is where `emerald` would go, and it is empty because `--success` sits at
|
|
295
|
+
* hue 165.6 - measured, no rotation of the grid avoids it. There is no emerald plate because emerald
|
|
296
|
+
* is what success means.
|
|
297
|
+
*
|
|
298
|
+
* Every plate clears, in both themes: its own label at 4.6:1, dE76 >= 25 from `--destructive` and
|
|
299
|
+
* >= 18 from the other three. The bars are this low - and red and orange plates exist at all - because
|
|
300
|
+
* NO status token fills a shape here: `--destructive` on a button is `bg-destructive/10
|
|
301
|
+
* text-destructive` and the other three only ever paint text or a border, so a solid plate block is
|
|
302
|
+
* already a different object.
|
|
303
|
+
*
|
|
304
|
+
* Nine of the nineteen - pink rust amber olive green teal azure blue violet - additionally sit
|
|
305
|
+
* >= 29.7 from EACH OTHER, an exact maximum rather than a greedy one, and are the only plates an app
|
|
306
|
+
* may derive from an id, where the difference between two plates IS the signal.
|
|
307
|
+
*
|
|
308
|
+
* ## The surface tint, and the white it costs
|
|
309
|
+
*
|
|
310
|
+
* You cannot tint white. At L 1.0 sRGB admits chroma 0.000, so `--background` `--card` `--popover`
|
|
311
|
+
* come down to L 0.99 - a light-mode plate is paid for with pure white, and that is the one visible
|
|
312
|
+
* concession the feature makes. The other three keep their neutral lightness, because lowering
|
|
313
|
+
* `--sidebar` or `--muted` took `--muted-foreground` under the contrast it already has.
|
|
314
|
+
*
|
|
315
|
+
* Chroma is UNIFORM across the nineteen, at the weakest value every hue can hold at that lightness
|
|
316
|
+
* (0.004 on the page, 0.007 on the sidebar, 0.014 on muted). Per-hue maxima would have tinted green
|
|
317
|
+
* ten times harder than red for no reason a reader could see. The lightness ladder is preserved -
|
|
318
|
+
* 0.99 page, 0.985 sidebar, 0.97 muted - because inverting it would flip which surface reads as
|
|
319
|
+
* "on top". The contrast check is relative: 4.5:1 is the bar, and where lyra already leaves a pair
|
|
320
|
+
* under it (`--muted-foreground` on `--muted` is 4.32 with no plate at all) the tint must merely not
|
|
321
|
+
* make it worse.
|
|
322
|
+
*
|
|
323
|
+
* `plate.test.ts` PARSES THIS BLOCK and re-measures every axis, including the surfaces, both dark
|
|
324
|
+
* selectors, and each plate's own label whichever one it chose. It reads the stylesheet rather than a
|
|
325
|
+
* copy of the numbers in TypeScript on purpose: the same table in two languages is a table that
|
|
326
|
+
* drifts, and chat shipped exactly that. */
|
|
327
|
+
|
|
328
|
+
[data-plate="pink"] {
|
|
329
|
+
--primary: oklch(0.500 0.200 0);
|
|
330
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
331
|
+
--ring: oklch(0.500 0.200 0);
|
|
332
|
+
--background: oklch(0.990 0.004 0);
|
|
333
|
+
--card: oklch(0.990 0.004 0);
|
|
334
|
+
--popover: oklch(0.990 0.004 0);
|
|
335
|
+
--sidebar: oklch(0.985 0.007 0);
|
|
336
|
+
--muted: oklch(0.970 0.014 0);
|
|
337
|
+
--accent: oklch(0.970 0.014 0);
|
|
338
|
+
}
|
|
339
|
+
.dark[data-plate="pink"],
|
|
340
|
+
.dark [data-plate="pink"] {
|
|
341
|
+
--primary: oklch(0.780 0.140 0);
|
|
342
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
343
|
+
--ring: oklch(0.780 0.140 0);
|
|
344
|
+
--background: oklch(0.145 0.014 0);
|
|
345
|
+
--card: oklch(0.205 0.014 0);
|
|
346
|
+
--popover: oklch(0.205 0.014 0);
|
|
347
|
+
--sidebar: oklch(0.205 0.014 0);
|
|
348
|
+
--muted: oklch(0.269 0.016 0);
|
|
349
|
+
--accent: oklch(0.269 0.016 0);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
[data-plate="rose"] {
|
|
353
|
+
--primary: oklch(0.500 0.200 12);
|
|
354
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
355
|
+
--ring: oklch(0.500 0.200 12);
|
|
356
|
+
--background: oklch(0.990 0.004 12);
|
|
357
|
+
--card: oklch(0.990 0.004 12);
|
|
358
|
+
--popover: oklch(0.990 0.004 12);
|
|
359
|
+
--sidebar: oklch(0.985 0.007 12);
|
|
360
|
+
--muted: oklch(0.970 0.014 12);
|
|
361
|
+
--accent: oklch(0.970 0.014 12);
|
|
362
|
+
}
|
|
363
|
+
.dark[data-plate="rose"],
|
|
364
|
+
.dark [data-plate="rose"] {
|
|
365
|
+
--primary: oklch(0.780 0.130 12);
|
|
366
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
367
|
+
--ring: oklch(0.780 0.130 12);
|
|
368
|
+
--background: oklch(0.145 0.014 12);
|
|
369
|
+
--card: oklch(0.205 0.014 12);
|
|
370
|
+
--popover: oklch(0.205 0.014 12);
|
|
371
|
+
--sidebar: oklch(0.205 0.014 12);
|
|
372
|
+
--muted: oklch(0.269 0.016 12);
|
|
373
|
+
--accent: oklch(0.269 0.016 12);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
[data-plate="crimson"] {
|
|
377
|
+
--primary: oklch(0.500 0.200 24);
|
|
378
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
379
|
+
--ring: oklch(0.500 0.200 24);
|
|
380
|
+
--background: oklch(0.990 0.004 24);
|
|
381
|
+
--card: oklch(0.990 0.004 24);
|
|
382
|
+
--popover: oklch(0.990 0.004 24);
|
|
383
|
+
--sidebar: oklch(0.985 0.007 24);
|
|
384
|
+
--muted: oklch(0.970 0.014 24);
|
|
385
|
+
--accent: oklch(0.970 0.014 24);
|
|
386
|
+
}
|
|
387
|
+
.dark[data-plate="crimson"],
|
|
388
|
+
.dark [data-plate="crimson"] {
|
|
389
|
+
--primary: oklch(0.780 0.125 24);
|
|
390
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
391
|
+
--ring: oklch(0.780 0.125 24);
|
|
392
|
+
--background: oklch(0.145 0.014 24);
|
|
393
|
+
--card: oklch(0.205 0.014 24);
|
|
394
|
+
--popover: oklch(0.205 0.014 24);
|
|
395
|
+
--sidebar: oklch(0.205 0.014 24);
|
|
396
|
+
--muted: oklch(0.269 0.016 24);
|
|
397
|
+
--accent: oklch(0.269 0.016 24);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
[data-plate="rust"] {
|
|
401
|
+
--primary: oklch(0.440 0.150 36);
|
|
402
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
403
|
+
--ring: oklch(0.440 0.150 36);
|
|
404
|
+
--background: oklch(0.990 0.004 36);
|
|
405
|
+
--card: oklch(0.990 0.004 36);
|
|
406
|
+
--popover: oklch(0.990 0.004 36);
|
|
407
|
+
--sidebar: oklch(0.985 0.007 36);
|
|
408
|
+
--muted: oklch(0.970 0.014 36);
|
|
409
|
+
--accent: oklch(0.970 0.014 36);
|
|
410
|
+
}
|
|
411
|
+
.dark[data-plate="rust"],
|
|
412
|
+
.dark [data-plate="rust"] {
|
|
413
|
+
--primary: oklch(0.780 0.130 36);
|
|
414
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
415
|
+
--ring: oklch(0.780 0.130 36);
|
|
416
|
+
--background: oklch(0.145 0.014 36);
|
|
417
|
+
--card: oklch(0.205 0.014 36);
|
|
418
|
+
--popover: oklch(0.205 0.014 36);
|
|
419
|
+
--sidebar: oklch(0.205 0.014 36);
|
|
420
|
+
--muted: oklch(0.269 0.016 36);
|
|
421
|
+
--accent: oklch(0.269 0.016 36);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
[data-plate="orange"] {
|
|
425
|
+
--primary: oklch(0.680 0.185 48);
|
|
426
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
427
|
+
--ring: oklch(0.680 0.185 48);
|
|
428
|
+
--background: oklch(0.990 0.004 48);
|
|
429
|
+
--card: oklch(0.990 0.004 48);
|
|
430
|
+
--popover: oklch(0.990 0.004 48);
|
|
431
|
+
--sidebar: oklch(0.985 0.007 48);
|
|
432
|
+
--muted: oklch(0.970 0.014 48);
|
|
433
|
+
--accent: oklch(0.970 0.014 48);
|
|
434
|
+
}
|
|
435
|
+
.dark[data-plate="orange"],
|
|
436
|
+
.dark [data-plate="orange"] {
|
|
437
|
+
--primary: oklch(0.780 0.140 48);
|
|
438
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
439
|
+
--ring: oklch(0.780 0.140 48);
|
|
440
|
+
--background: oklch(0.145 0.014 48);
|
|
441
|
+
--card: oklch(0.205 0.014 48);
|
|
442
|
+
--popover: oklch(0.205 0.014 48);
|
|
443
|
+
--sidebar: oklch(0.205 0.014 48);
|
|
444
|
+
--muted: oklch(0.269 0.016 48);
|
|
445
|
+
--accent: oklch(0.269 0.016 48);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
[data-plate="ochre"] {
|
|
449
|
+
--primary: oklch(0.680 0.155 60);
|
|
450
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
451
|
+
--ring: oklch(0.680 0.155 60);
|
|
452
|
+
--background: oklch(0.990 0.004 60);
|
|
453
|
+
--card: oklch(0.990 0.004 60);
|
|
454
|
+
--popover: oklch(0.990 0.004 60);
|
|
455
|
+
--sidebar: oklch(0.985 0.007 60);
|
|
456
|
+
--muted: oklch(0.970 0.014 60);
|
|
457
|
+
--accent: oklch(0.970 0.014 60);
|
|
458
|
+
}
|
|
459
|
+
.dark[data-plate="ochre"],
|
|
460
|
+
.dark [data-plate="ochre"] {
|
|
461
|
+
--primary: oklch(0.790 0.145 60);
|
|
462
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
463
|
+
--ring: oklch(0.790 0.145 60);
|
|
464
|
+
--background: oklch(0.145 0.014 60);
|
|
465
|
+
--card: oklch(0.205 0.014 60);
|
|
466
|
+
--popover: oklch(0.205 0.014 60);
|
|
467
|
+
--sidebar: oklch(0.205 0.014 60);
|
|
468
|
+
--muted: oklch(0.269 0.016 60);
|
|
469
|
+
--accent: oklch(0.269 0.016 60);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
[data-plate="amber"] {
|
|
473
|
+
--primary: oklch(0.670 0.140 72);
|
|
474
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
475
|
+
--ring: oklch(0.670 0.140 72);
|
|
476
|
+
--background: oklch(0.990 0.004 72);
|
|
477
|
+
--card: oklch(0.990 0.004 72);
|
|
478
|
+
--popover: oklch(0.990 0.004 72);
|
|
479
|
+
--sidebar: oklch(0.985 0.007 72);
|
|
480
|
+
--muted: oklch(0.970 0.014 72);
|
|
481
|
+
--accent: oklch(0.970 0.014 72);
|
|
482
|
+
}
|
|
483
|
+
.dark[data-plate="amber"],
|
|
484
|
+
.dark [data-plate="amber"] {
|
|
485
|
+
--primary: oklch(0.830 0.135 72);
|
|
486
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
487
|
+
--ring: oklch(0.830 0.135 72);
|
|
488
|
+
--background: oklch(0.145 0.014 72);
|
|
489
|
+
--card: oklch(0.205 0.014 72);
|
|
490
|
+
--popover: oklch(0.205 0.014 72);
|
|
491
|
+
--sidebar: oklch(0.205 0.014 72);
|
|
492
|
+
--muted: oklch(0.269 0.016 72);
|
|
493
|
+
--accent: oklch(0.269 0.016 72);
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
[data-plate="honey"] {
|
|
497
|
+
--primary: oklch(0.670 0.135 84);
|
|
498
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
499
|
+
--ring: oklch(0.670 0.135 84);
|
|
500
|
+
--background: oklch(0.990 0.004 84);
|
|
501
|
+
--card: oklch(0.990 0.004 84);
|
|
502
|
+
--popover: oklch(0.990 0.004 84);
|
|
503
|
+
--sidebar: oklch(0.985 0.007 84);
|
|
504
|
+
--muted: oklch(0.970 0.014 84);
|
|
505
|
+
--accent: oklch(0.970 0.014 84);
|
|
506
|
+
}
|
|
507
|
+
.dark[data-plate="honey"],
|
|
508
|
+
.dark [data-plate="honey"] {
|
|
509
|
+
--primary: oklch(0.700 0.140 84);
|
|
510
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
511
|
+
--ring: oklch(0.700 0.140 84);
|
|
512
|
+
--background: oklch(0.145 0.014 84);
|
|
513
|
+
--card: oklch(0.205 0.014 84);
|
|
514
|
+
--popover: oklch(0.205 0.014 84);
|
|
515
|
+
--sidebar: oklch(0.205 0.014 84);
|
|
516
|
+
--muted: oklch(0.269 0.016 84);
|
|
517
|
+
--accent: oklch(0.269 0.016 84);
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
[data-plate="gold"] {
|
|
521
|
+
--primary: oklch(0.660 0.135 96);
|
|
522
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
523
|
+
--ring: oklch(0.660 0.135 96);
|
|
524
|
+
--background: oklch(0.990 0.004 96);
|
|
525
|
+
--card: oklch(0.990 0.004 96);
|
|
526
|
+
--popover: oklch(0.990 0.004 96);
|
|
527
|
+
--sidebar: oklch(0.985 0.007 96);
|
|
528
|
+
--muted: oklch(0.970 0.014 96);
|
|
529
|
+
--accent: oklch(0.970 0.014 96);
|
|
530
|
+
}
|
|
531
|
+
.dark[data-plate="gold"],
|
|
532
|
+
.dark [data-plate="gold"] {
|
|
533
|
+
--primary: oklch(0.780 0.160 96);
|
|
534
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
535
|
+
--ring: oklch(0.780 0.160 96);
|
|
536
|
+
--background: oklch(0.145 0.014 96);
|
|
537
|
+
--card: oklch(0.205 0.014 96);
|
|
538
|
+
--popover: oklch(0.205 0.014 96);
|
|
539
|
+
--sidebar: oklch(0.205 0.014 96);
|
|
540
|
+
--muted: oklch(0.269 0.016 96);
|
|
541
|
+
--accent: oklch(0.269 0.016 96);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
[data-plate="olive"] {
|
|
545
|
+
--primary: oklch(0.660 0.140 108);
|
|
546
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
547
|
+
--ring: oklch(0.660 0.140 108);
|
|
548
|
+
--background: oklch(0.990 0.004 108);
|
|
549
|
+
--card: oklch(0.990 0.004 108);
|
|
550
|
+
--popover: oklch(0.990 0.004 108);
|
|
551
|
+
--sidebar: oklch(0.985 0.007 108);
|
|
552
|
+
--muted: oklch(0.970 0.014 108);
|
|
553
|
+
--accent: oklch(0.970 0.014 108);
|
|
554
|
+
}
|
|
555
|
+
.dark[data-plate="olive"],
|
|
556
|
+
.dark [data-plate="olive"] {
|
|
557
|
+
--primary: oklch(0.780 0.165 108);
|
|
558
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
559
|
+
--ring: oklch(0.780 0.165 108);
|
|
560
|
+
--background: oklch(0.145 0.014 108);
|
|
561
|
+
--card: oklch(0.205 0.014 108);
|
|
562
|
+
--popover: oklch(0.205 0.014 108);
|
|
563
|
+
--sidebar: oklch(0.205 0.014 108);
|
|
564
|
+
--muted: oklch(0.269 0.016 108);
|
|
565
|
+
--accent: oklch(0.269 0.016 108);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
[data-plate="lime"] {
|
|
569
|
+
--primary: oklch(0.660 0.155 120);
|
|
570
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
571
|
+
--ring: oklch(0.660 0.155 120);
|
|
572
|
+
--background: oklch(0.990 0.004 120);
|
|
573
|
+
--card: oklch(0.990 0.004 120);
|
|
574
|
+
--popover: oklch(0.990 0.004 120);
|
|
575
|
+
--sidebar: oklch(0.985 0.007 120);
|
|
576
|
+
--muted: oklch(0.970 0.014 120);
|
|
577
|
+
--accent: oklch(0.970 0.014 120);
|
|
578
|
+
}
|
|
579
|
+
.dark[data-plate="lime"],
|
|
580
|
+
.dark [data-plate="lime"] {
|
|
581
|
+
--primary: oklch(0.780 0.185 120);
|
|
582
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
583
|
+
--ring: oklch(0.780 0.185 120);
|
|
584
|
+
--background: oklch(0.145 0.014 120);
|
|
585
|
+
--card: oklch(0.205 0.014 120);
|
|
586
|
+
--popover: oklch(0.205 0.014 120);
|
|
587
|
+
--sidebar: oklch(0.205 0.014 120);
|
|
588
|
+
--muted: oklch(0.269 0.016 120);
|
|
589
|
+
--accent: oklch(0.269 0.016 120);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
[data-plate="green"] {
|
|
593
|
+
--primary: oklch(0.500 0.160 144);
|
|
594
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
595
|
+
--ring: oklch(0.500 0.160 144);
|
|
596
|
+
--background: oklch(0.990 0.004 144);
|
|
597
|
+
--card: oklch(0.990 0.004 144);
|
|
598
|
+
--popover: oklch(0.990 0.004 144);
|
|
599
|
+
--sidebar: oklch(0.985 0.007 144);
|
|
600
|
+
--muted: oklch(0.970 0.014 144);
|
|
601
|
+
--accent: oklch(0.970 0.014 144);
|
|
602
|
+
}
|
|
603
|
+
.dark[data-plate="green"],
|
|
604
|
+
.dark [data-plate="green"] {
|
|
605
|
+
--primary: oklch(0.780 0.220 144);
|
|
606
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
607
|
+
--ring: oklch(0.780 0.220 144);
|
|
608
|
+
--background: oklch(0.145 0.014 144);
|
|
609
|
+
--card: oklch(0.205 0.014 144);
|
|
610
|
+
--popover: oklch(0.205 0.014 144);
|
|
611
|
+
--sidebar: oklch(0.205 0.014 144);
|
|
612
|
+
--muted: oklch(0.269 0.016 144);
|
|
613
|
+
--accent: oklch(0.269 0.016 144);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
[data-plate="teal"] {
|
|
617
|
+
--primary: oklch(0.530 0.090 192);
|
|
618
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
619
|
+
--ring: oklch(0.530 0.090 192);
|
|
620
|
+
--background: oklch(0.990 0.004 192);
|
|
621
|
+
--card: oklch(0.990 0.004 192);
|
|
622
|
+
--popover: oklch(0.990 0.004 192);
|
|
623
|
+
--sidebar: oklch(0.985 0.007 192);
|
|
624
|
+
--muted: oklch(0.970 0.014 192);
|
|
625
|
+
--accent: oklch(0.970 0.014 192);
|
|
626
|
+
}
|
|
627
|
+
.dark[data-plate="teal"],
|
|
628
|
+
.dark [data-plate="teal"] {
|
|
629
|
+
--primary: oklch(0.780 0.130 192);
|
|
630
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
631
|
+
--ring: oklch(0.780 0.130 192);
|
|
632
|
+
--background: oklch(0.145 0.014 192);
|
|
633
|
+
--card: oklch(0.205 0.014 192);
|
|
634
|
+
--popover: oklch(0.205 0.014 192);
|
|
635
|
+
--sidebar: oklch(0.205 0.014 192);
|
|
636
|
+
--muted: oklch(0.269 0.016 192);
|
|
637
|
+
--accent: oklch(0.269 0.016 192);
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
[data-plate="cyan"] {
|
|
641
|
+
--primary: oklch(0.510 0.090 216);
|
|
642
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
643
|
+
--ring: oklch(0.510 0.090 216);
|
|
644
|
+
--background: oklch(0.990 0.004 216);
|
|
645
|
+
--card: oklch(0.990 0.004 216);
|
|
646
|
+
--popover: oklch(0.990 0.004 216);
|
|
647
|
+
--sidebar: oklch(0.985 0.007 216);
|
|
648
|
+
--muted: oklch(0.970 0.014 216);
|
|
649
|
+
--accent: oklch(0.970 0.014 216);
|
|
650
|
+
}
|
|
651
|
+
.dark[data-plate="cyan"],
|
|
652
|
+
.dark [data-plate="cyan"] {
|
|
653
|
+
--primary: oklch(0.780 0.135 216);
|
|
654
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
655
|
+
--ring: oklch(0.780 0.135 216);
|
|
656
|
+
--background: oklch(0.145 0.014 216);
|
|
657
|
+
--card: oklch(0.205 0.014 216);
|
|
658
|
+
--popover: oklch(0.205 0.014 216);
|
|
659
|
+
--sidebar: oklch(0.205 0.014 216);
|
|
660
|
+
--muted: oklch(0.269 0.016 216);
|
|
661
|
+
--accent: oklch(0.269 0.016 216);
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
[data-plate="azure"] {
|
|
665
|
+
--primary: oklch(0.660 0.150 240);
|
|
666
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
667
|
+
--ring: oklch(0.660 0.150 240);
|
|
668
|
+
--background: oklch(0.990 0.004 240);
|
|
669
|
+
--card: oklch(0.990 0.004 240);
|
|
670
|
+
--popover: oklch(0.990 0.004 240);
|
|
671
|
+
--sidebar: oklch(0.985 0.007 240);
|
|
672
|
+
--muted: oklch(0.970 0.014 240);
|
|
673
|
+
--accent: oklch(0.970 0.014 240);
|
|
674
|
+
}
|
|
675
|
+
.dark[data-plate="azure"],
|
|
676
|
+
.dark [data-plate="azure"] {
|
|
677
|
+
--primary: oklch(0.830 0.090 240);
|
|
678
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
679
|
+
--ring: oklch(0.830 0.090 240);
|
|
680
|
+
--background: oklch(0.145 0.014 240);
|
|
681
|
+
--card: oklch(0.205 0.014 240);
|
|
682
|
+
--popover: oklch(0.205 0.014 240);
|
|
683
|
+
--sidebar: oklch(0.205 0.014 240);
|
|
684
|
+
--muted: oklch(0.269 0.016 240);
|
|
685
|
+
--accent: oklch(0.269 0.016 240);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
[data-plate="blue"] {
|
|
689
|
+
--primary: oklch(0.500 0.220 264);
|
|
690
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
691
|
+
--ring: oklch(0.500 0.220 264);
|
|
692
|
+
--background: oklch(0.990 0.004 264);
|
|
693
|
+
--card: oklch(0.990 0.004 264);
|
|
694
|
+
--popover: oklch(0.990 0.004 264);
|
|
695
|
+
--sidebar: oklch(0.985 0.007 264);
|
|
696
|
+
--muted: oklch(0.970 0.014 264);
|
|
697
|
+
--accent: oklch(0.970 0.014 264);
|
|
698
|
+
}
|
|
699
|
+
.dark[data-plate="blue"],
|
|
700
|
+
.dark [data-plate="blue"] {
|
|
701
|
+
--primary: oklch(0.710 0.150 264);
|
|
702
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
703
|
+
--ring: oklch(0.710 0.150 264);
|
|
704
|
+
--background: oklch(0.145 0.014 264);
|
|
705
|
+
--card: oklch(0.205 0.014 264);
|
|
706
|
+
--popover: oklch(0.205 0.014 264);
|
|
707
|
+
--sidebar: oklch(0.205 0.014 264);
|
|
708
|
+
--muted: oklch(0.269 0.016 264);
|
|
709
|
+
--accent: oklch(0.269 0.016 264);
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
[data-plate="indigo"] {
|
|
713
|
+
--primary: oklch(0.500 0.220 288);
|
|
714
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
715
|
+
--ring: oklch(0.500 0.220 288);
|
|
716
|
+
--background: oklch(0.990 0.004 288);
|
|
717
|
+
--card: oklch(0.990 0.004 288);
|
|
718
|
+
--popover: oklch(0.990 0.004 288);
|
|
719
|
+
--sidebar: oklch(0.985 0.007 288);
|
|
720
|
+
--muted: oklch(0.970 0.014 288);
|
|
721
|
+
--accent: oklch(0.970 0.014 288);
|
|
722
|
+
}
|
|
723
|
+
.dark[data-plate="indigo"],
|
|
724
|
+
.dark [data-plate="indigo"] {
|
|
725
|
+
--primary: oklch(0.780 0.115 288);
|
|
726
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
727
|
+
--ring: oklch(0.780 0.115 288);
|
|
728
|
+
--background: oklch(0.145 0.014 288);
|
|
729
|
+
--card: oklch(0.205 0.014 288);
|
|
730
|
+
--popover: oklch(0.205 0.014 288);
|
|
731
|
+
--sidebar: oklch(0.205 0.014 288);
|
|
732
|
+
--muted: oklch(0.269 0.016 288);
|
|
733
|
+
--accent: oklch(0.269 0.016 288);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
[data-plate="violet"] {
|
|
737
|
+
--primary: oklch(0.500 0.220 312);
|
|
738
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
739
|
+
--ring: oklch(0.500 0.220 312);
|
|
740
|
+
--background: oklch(0.990 0.004 312);
|
|
741
|
+
--card: oklch(0.990 0.004 312);
|
|
742
|
+
--popover: oklch(0.990 0.004 312);
|
|
743
|
+
--sidebar: oklch(0.985 0.007 312);
|
|
744
|
+
--muted: oklch(0.970 0.014 312);
|
|
745
|
+
--accent: oklch(0.970 0.014 312);
|
|
746
|
+
}
|
|
747
|
+
.dark[data-plate="violet"],
|
|
748
|
+
.dark [data-plate="violet"] {
|
|
749
|
+
--primary: oklch(0.780 0.155 312);
|
|
750
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
751
|
+
--ring: oklch(0.780 0.155 312);
|
|
752
|
+
--background: oklch(0.145 0.014 312);
|
|
753
|
+
--card: oklch(0.205 0.014 312);
|
|
754
|
+
--popover: oklch(0.205 0.014 312);
|
|
755
|
+
--sidebar: oklch(0.205 0.014 312);
|
|
756
|
+
--muted: oklch(0.269 0.016 312);
|
|
757
|
+
--accent: oklch(0.269 0.016 312);
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
[data-plate="magenta"] {
|
|
761
|
+
--primary: oklch(0.500 0.220 336);
|
|
762
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
763
|
+
--ring: oklch(0.500 0.220 336);
|
|
764
|
+
--background: oklch(0.990 0.004 336);
|
|
765
|
+
--card: oklch(0.990 0.004 336);
|
|
766
|
+
--popover: oklch(0.990 0.004 336);
|
|
767
|
+
--sidebar: oklch(0.985 0.007 336);
|
|
768
|
+
--muted: oklch(0.970 0.014 336);
|
|
769
|
+
--accent: oklch(0.970 0.014 336);
|
|
770
|
+
}
|
|
771
|
+
.dark[data-plate="magenta"],
|
|
772
|
+
.dark [data-plate="magenta"] {
|
|
773
|
+
--primary: oklch(0.780 0.185 336);
|
|
774
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
775
|
+
--ring: oklch(0.780 0.185 336);
|
|
776
|
+
--background: oklch(0.145 0.014 336);
|
|
777
|
+
--card: oklch(0.205 0.014 336);
|
|
778
|
+
--popover: oklch(0.205 0.014 336);
|
|
779
|
+
--sidebar: oklch(0.205 0.014 336);
|
|
780
|
+
--muted: oklch(0.269 0.016 336);
|
|
781
|
+
--accent: oklch(0.269 0.016 336);
|
|
782
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/primitives/alert.tsx","../src/ui/primitives/badge.tsx","../src/ui/primitives/combobox.tsx","../src/ui/primitives/label.tsx","../src/ui/primitives/field.tsx","../src/ui/primitives/progress.tsx","../src/ui/primitives/spinner.tsx","../src/ui/primitives/switch.tsx"],"names":["cva","jsx","ComboboxPrimitive","LabelPrimitive","jsxs","ProgressPrimitive","SwitchPrimitive"],"mappings":"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","file":"chunk-DUWK53B5.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"~/utils/cn.js\"\n\nconst alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\n \"absolute top-[calc(--spacing(1.25))] right-[calc(--spacing(1.25))]\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"~/utils/cn.js\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-none border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { ChevronDownIcon, XIcon, CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"~/utils/cn.js\"\nimport { Button } from \"./button.js\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"./input-group.js\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n}) {\n return (\n <InputGroup className={cn(\"w-auto\", className)}>\n <ComboboxPrimitive.Input\n render={<InputGroupInput disabled={disabled} />}\n {...props}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\"group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-none bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n \"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain data-empty:p-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-none py-2 pr-8 pl-2 text-xs outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ComboboxPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\"px-2 py-2 text-xs text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"hidden w-full justify-center py-2 text-center text-xs text-muted-foreground group-data-empty/combobox-content:flex\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({\n className,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={cn(\n \"flex min-h-8 flex-wrap items-center gap-1 rounded-none border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-xs transition-colors focus-within:border-ring focus-within:ring-1 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-1 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-none bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n className\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({\n className,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\"min-w-16 flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxEmpty,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\n","import * as React from \"react\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nimport { cn } from \"~/utils/cn.js\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-xs leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"~/utils/cn.js\"\nimport { Label } from \"./label.js\"\nimport { Separator } from \"./separator.js\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-2.5 font-medium data-[variant=label]:text-xs data-[variant=legend]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-2 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-xs/relaxed group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-left text-xs/relaxed leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-xs group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-xs font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","import * as React from \"react\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"~/utils/cn.js\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"relative flex h-1 w-full items-center overflow-x-hidden rounded-none bg-muted\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"size-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","import { Loader2Icon } from \"lucide-react\"\n\nimport { cn } from \"~/utils/cn.js\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon data-slot=\"spinner\" role=\"status\" aria-label=\"Loading\" className={cn(\"size-4 animate-spin\", className)} {...props} />\n )\n}\n\nexport { Spinner }\n","import * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"~/utils/cn.js\"\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"]}
|