@lukeashford/aurelius 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -93
- package/dist/chunk-MBYGB67D.mjs +243 -0
- package/dist/chunk-MBYGB67D.mjs.map +1 -0
- package/dist/{chunk-OPJXDW4C.mjs → chunk-MDNHT46W.mjs} +1 -1
- package/dist/chunk-MDNHT46W.mjs.map +1 -0
- package/dist/index.js +338 -59
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +203 -33
- package/dist/index.mjs.map +1 -1
- package/dist/styles/base.css +2 -536
- package/dist/styles/fonts/OFL_Raleway.txt +93 -93
- package/dist/tailwind.preset.js +148 -31
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/tailwind.preset.mjs +2 -2
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/index.mjs +1 -1
- package/llms.md +180 -0
- package/package.json +9 -4
- package/dist/chunk-7DDWFQNU.mjs +0 -136
- package/dist/chunk-7DDWFQNU.mjs.map +0 -1
- package/dist/chunk-OPJXDW4C.mjs.map +0 -1
- package/dist/llms.md +0 -325
package/dist/index.js
CHANGED
|
@@ -59,6 +59,9 @@ __export(index_exports, {
|
|
|
59
59
|
});
|
|
60
60
|
module.exports = __toCommonJS(index_exports);
|
|
61
61
|
|
|
62
|
+
// src/tailwind.preset.ts
|
|
63
|
+
var import_plugin = __toESM(require("tailwindcss/plugin"));
|
|
64
|
+
|
|
62
65
|
// src/tokens/colors.ts
|
|
63
66
|
var colors = {
|
|
64
67
|
// Black spectrum
|
|
@@ -200,37 +203,142 @@ var radii = {
|
|
|
200
203
|
};
|
|
201
204
|
|
|
202
205
|
// src/tailwind.preset.ts
|
|
206
|
+
var aureliusPlugin = (0, import_plugin.default)(function({ addBase, addUtilities, theme }) {
|
|
207
|
+
addBase({
|
|
208
|
+
"html": {
|
|
209
|
+
fontFamily: theme("fontFamily.body"),
|
|
210
|
+
backgroundColor: theme("colors.obsidian"),
|
|
211
|
+
color: theme("colors.white"),
|
|
212
|
+
"-webkit-font-smoothing": "antialiased",
|
|
213
|
+
"-moz-osx-font-smoothing": "grayscale"
|
|
214
|
+
},
|
|
215
|
+
"body": {
|
|
216
|
+
minHeight: "100vh",
|
|
217
|
+
lineHeight: "1.5"
|
|
218
|
+
},
|
|
219
|
+
"table": {
|
|
220
|
+
borderCollapse: "collapse",
|
|
221
|
+
width: "100%"
|
|
222
|
+
},
|
|
223
|
+
"table, th, td": {
|
|
224
|
+
border: `1px solid ${theme("colors.gold.muted")}`
|
|
225
|
+
},
|
|
226
|
+
"th, td": {
|
|
227
|
+
padding: "0.5rem 0.75rem"
|
|
228
|
+
},
|
|
229
|
+
"table:hover": {
|
|
230
|
+
boxShadow: theme("boxShadow.glow")
|
|
231
|
+
},
|
|
232
|
+
"progress": {
|
|
233
|
+
appearance: "none",
|
|
234
|
+
"-webkit-appearance": "none",
|
|
235
|
+
border: `1px solid ${theme("colors.gold.muted")}`,
|
|
236
|
+
borderRadius: "0",
|
|
237
|
+
backgroundColor: theme("colors.charcoal"),
|
|
238
|
+
width: "100%",
|
|
239
|
+
height: "0.5rem"
|
|
240
|
+
},
|
|
241
|
+
"progress::-webkit-progress-bar": {
|
|
242
|
+
backgroundColor: theme("colors.charcoal")
|
|
243
|
+
},
|
|
244
|
+
"progress::-webkit-progress-value": {
|
|
245
|
+
backgroundColor: theme("colors.gold.DEFAULT")
|
|
246
|
+
},
|
|
247
|
+
"progress::-moz-progress-bar": {
|
|
248
|
+
backgroundColor: theme("colors.gold.DEFAULT")
|
|
249
|
+
},
|
|
250
|
+
"h1, h2, h3, h4, h5, h6": {
|
|
251
|
+
fontFamily: theme("fontFamily.heading"),
|
|
252
|
+
fontWeight: "600",
|
|
253
|
+
letterSpacing: "-0.025em",
|
|
254
|
+
color: theme("colors.white")
|
|
255
|
+
},
|
|
256
|
+
"h1": { fontSize: "2.25rem", lineHeight: "1.25" },
|
|
257
|
+
"h2": { fontSize: "1.875rem", lineHeight: "1.25" },
|
|
258
|
+
"h3": { fontSize: "1.5rem", lineHeight: "1.375" },
|
|
259
|
+
"h4": { fontSize: "1.25rem", lineHeight: "1.375" },
|
|
260
|
+
"h5": { fontSize: "1.125rem", lineHeight: "1.5" },
|
|
261
|
+
"h6": { fontSize: "1rem", lineHeight: "1.5" },
|
|
262
|
+
"code, pre, kbd, samp": {
|
|
263
|
+
fontFamily: theme("fontFamily.mono"),
|
|
264
|
+
fontSize: "0.875em"
|
|
265
|
+
},
|
|
266
|
+
"a": {
|
|
267
|
+
color: theme("colors.gold.DEFAULT"),
|
|
268
|
+
textDecoration: "none",
|
|
269
|
+
transition: `color ${theme("transitionDuration.fast")} ease-out`
|
|
270
|
+
},
|
|
271
|
+
"a:hover": {
|
|
272
|
+
color: theme("colors.gold.light")
|
|
273
|
+
},
|
|
274
|
+
":focus-visible": {
|
|
275
|
+
outline: `2px solid ${theme("colors.gold.DEFAULT")}`,
|
|
276
|
+
outlineOffset: "2px"
|
|
277
|
+
},
|
|
278
|
+
"::selection": {
|
|
279
|
+
backgroundColor: theme("colors.gold.DEFAULT"),
|
|
280
|
+
color: theme("colors.obsidian")
|
|
281
|
+
},
|
|
282
|
+
"::-webkit-scrollbar": { width: "8px", height: "8px" },
|
|
283
|
+
"::-webkit-scrollbar-track": { background: theme("colors.charcoal") },
|
|
284
|
+
"::-webkit-scrollbar-thumb": {
|
|
285
|
+
background: theme("colors.ash"),
|
|
286
|
+
borderRadius: theme("borderRadius.full")
|
|
287
|
+
},
|
|
288
|
+
"::-webkit-scrollbar-thumb:hover": { background: theme("colors.silver") }
|
|
289
|
+
});
|
|
290
|
+
addUtilities({
|
|
291
|
+
".text-gradient-gold": {
|
|
292
|
+
background: `linear-gradient(to right, ${theme("colors.gold.DEFAULT")}, ${theme(
|
|
293
|
+
"colors.gold.light"
|
|
294
|
+
)}, ${theme("colors.gold.DEFAULT")})`,
|
|
295
|
+
"-webkit-background-clip": "text",
|
|
296
|
+
"background-clip": "text",
|
|
297
|
+
color: "transparent"
|
|
298
|
+
},
|
|
299
|
+
".glow": { boxShadow: theme("boxShadow.glow") },
|
|
300
|
+
".glow-sm": { boxShadow: theme("boxShadow.glow-sm") },
|
|
301
|
+
".glow-lg": { boxShadow: theme("boxShadow.glow-lg") },
|
|
302
|
+
".scroll-smooth": {
|
|
303
|
+
scrollBehavior: "smooth",
|
|
304
|
+
"-webkit-overflow-scrolling": "touch"
|
|
305
|
+
},
|
|
306
|
+
".scrollbar-hide": {
|
|
307
|
+
"-ms-overflow-style": "none",
|
|
308
|
+
"scrollbar-width": "none",
|
|
309
|
+
"&::-webkit-scrollbar": { display: "none" }
|
|
310
|
+
},
|
|
311
|
+
".backdrop-glass": {
|
|
312
|
+
backdropFilter: "blur(12px)",
|
|
313
|
+
backgroundColor: "rgba(20, 20, 20, 0.8)"
|
|
314
|
+
},
|
|
315
|
+
".focus-ring": {
|
|
316
|
+
"&:focus-visible": {
|
|
317
|
+
outline: "2px solid #c9a227",
|
|
318
|
+
outlineOffset: "2px"
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
".line-clamp-2": {
|
|
322
|
+
display: "-webkit-box",
|
|
323
|
+
"-webkit-line-clamp": "2",
|
|
324
|
+
"-webkit-box-orient": "vertical",
|
|
325
|
+
overflow: "hidden"
|
|
326
|
+
},
|
|
327
|
+
".line-clamp-3": {
|
|
328
|
+
display: "-webkit-box",
|
|
329
|
+
"-webkit-line-clamp": "3",
|
|
330
|
+
"-webkit-box-orient": "vertical",
|
|
331
|
+
overflow: "hidden"
|
|
332
|
+
},
|
|
333
|
+
".center-absolute": {
|
|
334
|
+
position: "absolute",
|
|
335
|
+
top: "50%",
|
|
336
|
+
left: "50%",
|
|
337
|
+
transform: "translate(-50%, -50%)"
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
});
|
|
203
341
|
var preset = {
|
|
204
|
-
// Safelist color utilities used dynamically in the demo so Tailwind doesn't purge them
|
|
205
|
-
safelist: [
|
|
206
|
-
// Black spectrum
|
|
207
|
-
"bg-void",
|
|
208
|
-
"bg-obsidian",
|
|
209
|
-
"bg-charcoal",
|
|
210
|
-
"bg-graphite",
|
|
211
|
-
"bg-slate",
|
|
212
|
-
"bg-ash",
|
|
213
|
-
// Gold spectrum
|
|
214
|
-
"bg-gold",
|
|
215
|
-
"bg-gold-light",
|
|
216
|
-
"bg-gold-bright",
|
|
217
|
-
"bg-gold-muted",
|
|
218
|
-
"bg-gold-pale",
|
|
219
|
-
// Neutrals
|
|
220
|
-
"bg-white",
|
|
221
|
-
"bg-silver",
|
|
222
|
-
"bg-zinc",
|
|
223
|
-
"bg-dim",
|
|
224
|
-
// Semantic
|
|
225
|
-
"bg-success",
|
|
226
|
-
"bg-success-muted",
|
|
227
|
-
"bg-error",
|
|
228
|
-
"bg-error-muted",
|
|
229
|
-
"bg-warning",
|
|
230
|
-
"bg-warning-muted",
|
|
231
|
-
"bg-info",
|
|
232
|
-
"bg-info-muted"
|
|
233
|
-
],
|
|
234
342
|
theme: {
|
|
235
343
|
extend: {
|
|
236
344
|
colors: {
|
|
@@ -317,7 +425,8 @@ var preset = {
|
|
|
317
425
|
}
|
|
318
426
|
}
|
|
319
427
|
}
|
|
320
|
-
}
|
|
428
|
+
},
|
|
429
|
+
plugins: [aureliusPlugin]
|
|
321
430
|
};
|
|
322
431
|
var tailwind_preset_default = preset;
|
|
323
432
|
|
|
@@ -329,13 +438,29 @@ function cx(...classes) {
|
|
|
329
438
|
var Button = import_react.default.forwardRef(
|
|
330
439
|
({ variant = "primary", size = "md", loading = false, className, disabled, children, ...rest }, ref) => {
|
|
331
440
|
const isDisabled = disabled || loading;
|
|
332
|
-
const
|
|
333
|
-
const
|
|
441
|
+
const base = "inline-flex items-center justify-center font-semibold tracking-wide transition-all duration-fast rounded-none disabled:opacity-50 disabled:cursor-not-allowed";
|
|
442
|
+
const variantClasses = {
|
|
443
|
+
primary: "bg-charcoal text-white border border-gold/30 hover:border-gold hover:shadow-glow hover:text-gold-light active:bg-white/5 focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian",
|
|
444
|
+
important: "bg-gold text-obsidian border border-gold hover:bg-gold-light hover:text-obsidian active:bg-gold-bright focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian",
|
|
445
|
+
elevated: "bg-charcoal text-white border-0 shadow-lg hover:shadow-xl hover:text-gold-light active:bg-white/5 focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian",
|
|
446
|
+
outlined: "bg-transparent text-white border border-ash hover:border-white hover:text-white active:bg-white/5 focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian",
|
|
447
|
+
featured: "bg-charcoal text-white border border-gold shadow-[0_0_10px_rgba(201,162,39,0.2)] hover:shadow-[0_0_15px_rgba(201,162,39,0.4)] hover:text-gold-light active:bg-white/5 focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian",
|
|
448
|
+
ghost: "bg-transparent text-gold border-0 hover:text-gold-light active:text-gold-bright focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian",
|
|
449
|
+
danger: "bg-error text-white border-0 hover:bg-error/90 active:bg-error/80 focus-visible:ring-2 focus-visible:ring-error focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian"
|
|
450
|
+
};
|
|
451
|
+
const sizeClasses = {
|
|
452
|
+
sm: "h-8 px-3 text-sm",
|
|
453
|
+
md: "h-10 px-4 text-sm",
|
|
454
|
+
lg: "h-12 px-6 text-base",
|
|
455
|
+
xl: "h-14 px-8 text-lg"
|
|
456
|
+
};
|
|
457
|
+
const variantClass = variantClasses[variant];
|
|
458
|
+
const sizeClass = sizeClasses[size];
|
|
334
459
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
335
460
|
"button",
|
|
336
461
|
{
|
|
337
462
|
ref,
|
|
338
|
-
className: cx(
|
|
463
|
+
className: cx(base, variantClass, sizeClass, loading && "opacity-80", className),
|
|
339
464
|
disabled: isDisabled,
|
|
340
465
|
...rest
|
|
341
466
|
},
|
|
@@ -359,8 +484,8 @@ function cx2(...classes) {
|
|
|
359
484
|
}
|
|
360
485
|
var Input = import_react2.default.forwardRef(
|
|
361
486
|
({ error = false, className, leadingIcon, trailingIcon, disabled, ...rest }, ref) => {
|
|
362
|
-
const base = "
|
|
363
|
-
const errorCls = error ? "
|
|
487
|
+
const base = "w-full h-10 px-3 bg-graphite border border-ash rounded-none text-white placeholder:text-zinc transition-all duration-fast focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none disabled:bg-slate disabled:text-dim disabled:cursor-not-allowed";
|
|
488
|
+
const errorCls = error ? "border-error focus:border-error focus:ring-error" : "";
|
|
364
489
|
return /* @__PURE__ */ import_react2.default.createElement("div", { className: cx2("relative", disabled && "opacity-90") }, leadingIcon && /* @__PURE__ */ import_react2.default.createElement("span", { className: "pointer-events-none absolute inset-y-0 left-3 flex items-center text-silver" }, leadingIcon), /* @__PURE__ */ import_react2.default.createElement(
|
|
365
490
|
"input",
|
|
366
491
|
{
|
|
@@ -386,9 +511,16 @@ function cx3(...classes) {
|
|
|
386
511
|
}
|
|
387
512
|
var Card = import_react3.default.forwardRef(
|
|
388
513
|
({ variant = "default", interactive = false, className, ...rest }, ref) => {
|
|
389
|
-
const base = "
|
|
390
|
-
const
|
|
391
|
-
|
|
514
|
+
const base = "rounded-none p-6";
|
|
515
|
+
const variantClasses = {
|
|
516
|
+
default: "bg-charcoal shadow-sm border border-gold/30",
|
|
517
|
+
elevated: "bg-charcoal shadow-lg border-0",
|
|
518
|
+
outlined: "bg-charcoal shadow-none border border-ash",
|
|
519
|
+
ghost: "bg-transparent shadow-none border-0",
|
|
520
|
+
featured: "bg-charcoal border border-gold shadow-[0_0_10px_rgba(201,162,39,0.2)]"
|
|
521
|
+
};
|
|
522
|
+
const interactiveClass = interactive ? "transition-all duration-normal hover:border-gold hover:shadow-glow cursor-pointer" : "";
|
|
523
|
+
const variantClass = variantClasses[variant];
|
|
392
524
|
return /* @__PURE__ */ import_react3.default.createElement(
|
|
393
525
|
"div",
|
|
394
526
|
{
|
|
@@ -460,8 +592,17 @@ function cx5(...classes) {
|
|
|
460
592
|
}
|
|
461
593
|
var Badge = import_react5.default.forwardRef(
|
|
462
594
|
({ variant = "default", className, ...rest }, ref) => {
|
|
463
|
-
const
|
|
464
|
-
|
|
595
|
+
const base = "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium border";
|
|
596
|
+
const variantClasses = {
|
|
597
|
+
default: "bg-slate text-silver border-slate",
|
|
598
|
+
gold: "bg-gold/20 text-gold border-gold/30",
|
|
599
|
+
success: "bg-success/20 text-success border-success/30",
|
|
600
|
+
error: "bg-error/20 text-error border-error/30",
|
|
601
|
+
warning: "bg-warning/20 text-warning border-warning/30",
|
|
602
|
+
info: "bg-info/20 text-info border-info/30"
|
|
603
|
+
};
|
|
604
|
+
const variantClass = variantClasses[variant];
|
|
605
|
+
return /* @__PURE__ */ import_react5.default.createElement("span", { ref, className: cx5(base, variantClass, className), ...rest });
|
|
465
606
|
}
|
|
466
607
|
);
|
|
467
608
|
Badge.displayName = "Badge";
|
|
@@ -500,10 +641,11 @@ var Label = import_react7.default.forwardRef(
|
|
|
500
641
|
"label",
|
|
501
642
|
{
|
|
502
643
|
ref,
|
|
503
|
-
className: cx7("
|
|
644
|
+
className: cx7("block text-sm font-medium text-silver mb-1.5", className),
|
|
504
645
|
...rest
|
|
505
646
|
},
|
|
506
|
-
children
|
|
647
|
+
children,
|
|
648
|
+
required && /* @__PURE__ */ import_react7.default.createElement("span", { className: "text-error ml-1" }, "*")
|
|
507
649
|
);
|
|
508
650
|
}
|
|
509
651
|
);
|
|
@@ -536,7 +678,7 @@ function cx9(...classes) {
|
|
|
536
678
|
}
|
|
537
679
|
var Textarea = import_react9.default.forwardRef(
|
|
538
680
|
({ error = false, className, disabled, ...rest }, ref) => {
|
|
539
|
-
const base = "
|
|
681
|
+
const base = "w-full px-3 py-2 bg-graphite border border-ash rounded-none text-white placeholder:text-zinc min-h-[80px] transition-all duration-fast focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none disabled:bg-slate disabled:text-dim disabled:cursor-not-allowed";
|
|
540
682
|
const errorCls = error ? "border-error focus:border-error focus:ring-error" : "";
|
|
541
683
|
return /* @__PURE__ */ import_react9.default.createElement(
|
|
542
684
|
"textarea",
|
|
@@ -556,15 +698,26 @@ var import_react10 = __toESM(require("react"));
|
|
|
556
698
|
function cx10(...classes) {
|
|
557
699
|
return classes.filter(Boolean).join(" ");
|
|
558
700
|
}
|
|
701
|
+
var selectBgImage = `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23C9A227' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e")`;
|
|
559
702
|
var Select = import_react10.default.forwardRef(
|
|
560
703
|
({ error = false, className, disabled, options, children, ...rest }, ref) => {
|
|
561
|
-
const base = "select";
|
|
562
|
-
const errorCls = error ? "border-error focus:border-error focus:ring-error" : "";
|
|
563
704
|
return /* @__PURE__ */ import_react10.default.createElement(
|
|
564
705
|
"select",
|
|
565
706
|
{
|
|
566
707
|
ref,
|
|
567
|
-
className: cx10(
|
|
708
|
+
className: cx10(
|
|
709
|
+
"appearance-none bg-graphite border border-ash rounded-none text-white px-3 py-2 pr-8",
|
|
710
|
+
"focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none",
|
|
711
|
+
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
712
|
+
error && "border-error focus:border-error focus:ring-error",
|
|
713
|
+
className
|
|
714
|
+
),
|
|
715
|
+
style: {
|
|
716
|
+
backgroundImage: selectBgImage,
|
|
717
|
+
backgroundPosition: "right 0.5rem center",
|
|
718
|
+
backgroundRepeat: "no-repeat",
|
|
719
|
+
backgroundSize: "1.5em 1.5em"
|
|
720
|
+
},
|
|
568
721
|
disabled,
|
|
569
722
|
...rest
|
|
570
723
|
},
|
|
@@ -579,16 +732,50 @@ var import_react11 = __toESM(require("react"));
|
|
|
579
732
|
function cx11(...classes) {
|
|
580
733
|
return classes.filter(Boolean).join(" ");
|
|
581
734
|
}
|
|
735
|
+
var checkmarkSvg = `url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='%231A1A1A' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")`;
|
|
582
736
|
var Checkbox = import_react11.default.forwardRef(
|
|
583
737
|
({ className, label, id, ...rest }, ref) => {
|
|
584
738
|
const inputId = id || rest.name || Math.random().toString(36).substr(2, 9);
|
|
739
|
+
const setRef = (0, import_react11.useCallback)((node) => {
|
|
740
|
+
if (node) {
|
|
741
|
+
if (node.checked) {
|
|
742
|
+
node.style.backgroundImage = checkmarkSvg;
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
if (typeof ref === "function") {
|
|
746
|
+
ref(node);
|
|
747
|
+
} else if (ref) {
|
|
748
|
+
ref.current = node;
|
|
749
|
+
}
|
|
750
|
+
}, [ref]);
|
|
585
751
|
return /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react11.default.createElement(
|
|
586
752
|
"input",
|
|
587
753
|
{
|
|
588
754
|
type: "checkbox",
|
|
589
755
|
id: inputId,
|
|
590
|
-
ref,
|
|
591
|
-
className: cx11(
|
|
756
|
+
ref: setRef,
|
|
757
|
+
className: cx11(
|
|
758
|
+
"appearance-none h-4 w-4 border border-ash rounded-sm bg-graphite",
|
|
759
|
+
"checked:bg-gold checked:border-gold",
|
|
760
|
+
"focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian",
|
|
761
|
+
"transition duration-200 ease-in-out cursor-pointer",
|
|
762
|
+
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
763
|
+
className
|
|
764
|
+
),
|
|
765
|
+
style: {
|
|
766
|
+
backgroundPosition: "center",
|
|
767
|
+
backgroundSize: "contain",
|
|
768
|
+
backgroundRepeat: "no-repeat"
|
|
769
|
+
},
|
|
770
|
+
onChange: (e) => {
|
|
771
|
+
const input = e.currentTarget;
|
|
772
|
+
if (input.checked) {
|
|
773
|
+
input.style.backgroundImage = checkmarkSvg;
|
|
774
|
+
} else {
|
|
775
|
+
input.style.backgroundImage = "none";
|
|
776
|
+
}
|
|
777
|
+
rest.onChange?.(e);
|
|
778
|
+
},
|
|
592
779
|
...rest
|
|
593
780
|
}
|
|
594
781
|
), label && /* @__PURE__ */ import_react11.default.createElement("label", { htmlFor: inputId, className: "ml-2 text-sm text-silver cursor-pointer select-none" }, label));
|
|
@@ -601,16 +788,58 @@ var import_react12 = __toESM(require("react"));
|
|
|
601
788
|
function cx12(...classes) {
|
|
602
789
|
return classes.filter(Boolean).join(" ");
|
|
603
790
|
}
|
|
791
|
+
var radioDotSvg = `url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='%231A1A1A' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")`;
|
|
604
792
|
var Radio = import_react12.default.forwardRef(
|
|
605
793
|
({ className, label, id, ...rest }, ref) => {
|
|
606
794
|
const inputId = id || rest.name || Math.random().toString(36).substr(2, 9);
|
|
795
|
+
const setRef = (0, import_react12.useCallback)((node) => {
|
|
796
|
+
if (node) {
|
|
797
|
+
if (node.checked) {
|
|
798
|
+
node.style.backgroundImage = radioDotSvg;
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
if (typeof ref === "function") {
|
|
802
|
+
ref(node);
|
|
803
|
+
} else if (ref) {
|
|
804
|
+
ref.current = node;
|
|
805
|
+
}
|
|
806
|
+
}, [ref]);
|
|
607
807
|
return /* @__PURE__ */ import_react12.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react12.default.createElement(
|
|
608
808
|
"input",
|
|
609
809
|
{
|
|
610
810
|
type: "radio",
|
|
611
811
|
id: inputId,
|
|
612
|
-
ref,
|
|
613
|
-
className: cx12(
|
|
812
|
+
ref: setRef,
|
|
813
|
+
className: cx12(
|
|
814
|
+
"appearance-none h-4 w-4 border border-ash rounded-full bg-graphite",
|
|
815
|
+
"checked:bg-gold checked:border-gold",
|
|
816
|
+
"focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian",
|
|
817
|
+
"transition duration-200 ease-in-out cursor-pointer",
|
|
818
|
+
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
819
|
+
className
|
|
820
|
+
),
|
|
821
|
+
style: {
|
|
822
|
+
backgroundPosition: "center",
|
|
823
|
+
backgroundSize: "contain",
|
|
824
|
+
backgroundRepeat: "no-repeat"
|
|
825
|
+
},
|
|
826
|
+
onChange: (e) => {
|
|
827
|
+
const input = e.currentTarget;
|
|
828
|
+
if (input.checked) {
|
|
829
|
+
input.style.backgroundImage = radioDotSvg;
|
|
830
|
+
if (input.name) {
|
|
831
|
+
const radios = document.querySelectorAll(`input[type="radio"][name="${input.name}"]`);
|
|
832
|
+
radios.forEach((radio) => {
|
|
833
|
+
if (radio !== input) {
|
|
834
|
+
radio.style.backgroundImage = "none";
|
|
835
|
+
}
|
|
836
|
+
});
|
|
837
|
+
}
|
|
838
|
+
} else {
|
|
839
|
+
input.style.backgroundImage = "none";
|
|
840
|
+
}
|
|
841
|
+
rest.onChange?.(e);
|
|
842
|
+
},
|
|
614
843
|
...rest
|
|
615
844
|
}
|
|
616
845
|
), label && /* @__PURE__ */ import_react12.default.createElement("label", { htmlFor: inputId, className: "ml-2 text-sm text-silver cursor-pointer select-none" }, label));
|
|
@@ -628,6 +857,18 @@ var Switch = import_react13.default.forwardRef(
|
|
|
628
857
|
const [internalChecked, setInternalChecked] = (0, import_react13.useState)(defaultChecked);
|
|
629
858
|
const isControlled = controlledChecked !== void 0;
|
|
630
859
|
const checked = isControlled ? controlledChecked : internalChecked;
|
|
860
|
+
const buttonRef = (0, import_react13.useRef)(null);
|
|
861
|
+
const setRefs = (0, import_react13.useCallback)(
|
|
862
|
+
(node) => {
|
|
863
|
+
buttonRef.current = node;
|
|
864
|
+
if (typeof ref === "function") {
|
|
865
|
+
ref(node);
|
|
866
|
+
} else if (ref) {
|
|
867
|
+
ref.current = node;
|
|
868
|
+
}
|
|
869
|
+
},
|
|
870
|
+
[ref]
|
|
871
|
+
);
|
|
631
872
|
const handleClick = (e) => {
|
|
632
873
|
if (disabled) return;
|
|
633
874
|
const newChecked = !checked;
|
|
@@ -645,13 +886,39 @@ var Switch = import_react13.default.forwardRef(
|
|
|
645
886
|
"aria-checked": checked,
|
|
646
887
|
"data-state": checked ? "checked" : "unchecked",
|
|
647
888
|
disabled,
|
|
648
|
-
ref,
|
|
889
|
+
ref: setRefs,
|
|
649
890
|
onClick: handleClick,
|
|
650
|
-
className: cx13(
|
|
891
|
+
className: cx13(
|
|
892
|
+
"relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent",
|
|
893
|
+
"transition-colors duration-200 ease-in-out",
|
|
894
|
+
"focus:outline-none focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian",
|
|
895
|
+
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
896
|
+
checked ? "bg-gold" : "bg-charcoal",
|
|
897
|
+
className
|
|
898
|
+
),
|
|
651
899
|
...rest
|
|
652
900
|
},
|
|
653
|
-
/* @__PURE__ */ import_react13.default.createElement(
|
|
654
|
-
|
|
901
|
+
/* @__PURE__ */ import_react13.default.createElement(
|
|
902
|
+
"span",
|
|
903
|
+
{
|
|
904
|
+
className: cx13(
|
|
905
|
+
"pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0",
|
|
906
|
+
"transition duration-200 ease-in-out",
|
|
907
|
+
checked ? "translate-x-5" : "translate-x-0"
|
|
908
|
+
)
|
|
909
|
+
}
|
|
910
|
+
)
|
|
911
|
+
), label && /* @__PURE__ */ import_react13.default.createElement(
|
|
912
|
+
"span",
|
|
913
|
+
{
|
|
914
|
+
className: "text-sm text-silver cursor-pointer",
|
|
915
|
+
onClick: () => {
|
|
916
|
+
if (disabled) return;
|
|
917
|
+
buttonRef.current?.click();
|
|
918
|
+
}
|
|
919
|
+
},
|
|
920
|
+
label
|
|
921
|
+
));
|
|
655
922
|
}
|
|
656
923
|
);
|
|
657
924
|
Switch.displayName = "Switch";
|
|
@@ -668,16 +935,25 @@ var icons = {
|
|
|
668
935
|
warning: import_lucide_react.AlertTriangle,
|
|
669
936
|
error: import_lucide_react.XCircle
|
|
670
937
|
};
|
|
938
|
+
var variantStyles = {
|
|
939
|
+
info: "bg-info/10 border-info text-info",
|
|
940
|
+
success: "bg-success/10 border-success text-success",
|
|
941
|
+
warning: "bg-warning/10 border-warning text-warning",
|
|
942
|
+
error: "bg-error/10 border-error text-error"
|
|
943
|
+
};
|
|
671
944
|
var Alert = import_react14.default.forwardRef(
|
|
672
945
|
({ variant = "info", title, children, className, ...rest }, ref) => {
|
|
673
946
|
const Icon = icons[variant];
|
|
674
|
-
const variantClass = `alert-${variant}`;
|
|
675
947
|
return /* @__PURE__ */ import_react14.default.createElement(
|
|
676
948
|
"div",
|
|
677
949
|
{
|
|
678
950
|
ref,
|
|
679
951
|
role: "alert",
|
|
680
|
-
className: cx14(
|
|
952
|
+
className: cx14(
|
|
953
|
+
"relative w-full p-4 rounded-none border border-l-4 flex gap-3",
|
|
954
|
+
variantStyles[variant],
|
|
955
|
+
className
|
|
956
|
+
),
|
|
681
957
|
...rest
|
|
682
958
|
},
|
|
683
959
|
/* @__PURE__ */ import_react14.default.createElement(Icon, { className: "h-5 w-5 shrink-0" }),
|
|
@@ -766,12 +1042,15 @@ var Modal = ({ isOpen, onClose, title, children, className }) => {
|
|
|
766
1042
|
}, [onClose]);
|
|
767
1043
|
if (!mounted) return null;
|
|
768
1044
|
if (!isOpen) return null;
|
|
769
|
-
const content = /* @__PURE__ */ import_react17.default.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6", onClick: onClose }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "
|
|
1045
|
+
const content = /* @__PURE__ */ import_react17.default.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6", onClick: onClose }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "fixed inset-0 z-40 bg-obsidian/80 backdrop-blur-sm", "aria-hidden": "true" }), /* @__PURE__ */ import_react17.default.createElement(
|
|
770
1046
|
"div",
|
|
771
1047
|
{
|
|
772
1048
|
role: "dialog",
|
|
773
1049
|
"aria-modal": "true",
|
|
774
|
-
className: cx17(
|
|
1050
|
+
className: cx17(
|
|
1051
|
+
"bg-charcoal border border-gold/30 shadow-2xl z-50 w-full max-w-lg p-6 rounded-none relative",
|
|
1052
|
+
className
|
|
1053
|
+
),
|
|
775
1054
|
"data-state": "open",
|
|
776
1055
|
onClick: (e) => e.stopPropagation()
|
|
777
1056
|
},
|