@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/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  tailwind_preset_default
3
- } from "./chunk-7DDWFQNU.mjs";
3
+ } from "./chunk-MBYGB67D.mjs";
4
4
  import {
5
5
  colors,
6
6
  duration,
@@ -9,7 +9,7 @@ import {
9
9
  shadows,
10
10
  spacing,
11
11
  typography
12
- } from "./chunk-OPJXDW4C.mjs";
12
+ } from "./chunk-MDNHT46W.mjs";
13
13
 
14
14
  // src/components/Button.tsx
15
15
  import React from "react";
@@ -19,13 +19,29 @@ function cx(...classes) {
19
19
  var Button = React.forwardRef(
20
20
  ({ variant = "primary", size = "md", loading = false, className, disabled, children, ...rest }, ref) => {
21
21
  const isDisabled = disabled || loading;
22
- const variantClass = variant === "primary" ? "btn-primary" : variant === "important" ? "btn-important" : variant === "elevated" ? "btn-elevated" : variant === "outlined" ? "btn-outlined" : variant === "featured" ? "btn-featured" : variant === "ghost" ? "btn-ghost" : "btn-danger";
23
- const sizeClass = `btn-${size}`;
22
+ 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";
23
+ const variantClasses = {
24
+ 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",
25
+ 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",
26
+ 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",
27
+ 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",
28
+ 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",
29
+ 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",
30
+ 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"
31
+ };
32
+ const sizeClasses = {
33
+ sm: "h-8 px-3 text-sm",
34
+ md: "h-10 px-4 text-sm",
35
+ lg: "h-12 px-6 text-base",
36
+ xl: "h-14 px-8 text-lg"
37
+ };
38
+ const variantClass = variantClasses[variant];
39
+ const sizeClass = sizeClasses[size];
24
40
  return /* @__PURE__ */ React.createElement(
25
41
  "button",
26
42
  {
27
43
  ref,
28
- className: cx("btn", variantClass, sizeClass, loading && "opacity-80", className),
44
+ className: cx(base, variantClass, sizeClass, loading && "opacity-80", className),
29
45
  disabled: isDisabled,
30
46
  ...rest
31
47
  },
@@ -49,8 +65,8 @@ function cx2(...classes) {
49
65
  }
50
66
  var Input = React2.forwardRef(
51
67
  ({ error = false, className, leadingIcon, trailingIcon, disabled, ...rest }, ref) => {
52
- const base = "input";
53
- const errorCls = error ? "input-error" : "";
68
+ 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";
69
+ const errorCls = error ? "border-error focus:border-error focus:ring-error" : "";
54
70
  return /* @__PURE__ */ React2.createElement("div", { className: cx2("relative", disabled && "opacity-90") }, leadingIcon && /* @__PURE__ */ React2.createElement("span", { className: "pointer-events-none absolute inset-y-0 left-3 flex items-center text-silver" }, leadingIcon), /* @__PURE__ */ React2.createElement(
55
71
  "input",
56
72
  {
@@ -76,9 +92,16 @@ function cx3(...classes) {
76
92
  }
77
93
  var Card = React3.forwardRef(
78
94
  ({ variant = "default", interactive = false, className, ...rest }, ref) => {
79
- const base = "card";
80
- const variantClass = variant === "elevated" ? "card-elevated" : variant === "outlined" ? "card-outlined" : variant === "ghost" ? "bg-transparent shadow-none border-0" : variant === "featured" ? "card-featured" : "";
81
- const interactiveClass = interactive ? "card-interactive" : "";
95
+ const base = "rounded-none p-6";
96
+ const variantClasses = {
97
+ default: "bg-charcoal shadow-sm border border-gold/30",
98
+ elevated: "bg-charcoal shadow-lg border-0",
99
+ outlined: "bg-charcoal shadow-none border border-ash",
100
+ ghost: "bg-transparent shadow-none border-0",
101
+ featured: "bg-charcoal border border-gold shadow-[0_0_10px_rgba(201,162,39,0.2)]"
102
+ };
103
+ const interactiveClass = interactive ? "transition-all duration-normal hover:border-gold hover:shadow-glow cursor-pointer" : "";
104
+ const variantClass = variantClasses[variant];
82
105
  return /* @__PURE__ */ React3.createElement(
83
106
  "div",
84
107
  {
@@ -150,8 +173,17 @@ function cx5(...classes) {
150
173
  }
151
174
  var Badge = React5.forwardRef(
152
175
  ({ variant = "default", className, ...rest }, ref) => {
153
- const variantClass = variant === "gold" ? "badge-gold" : variant === "success" ? "badge-success" : variant === "error" ? "badge-error" : variant === "warning" ? "bg-warning/20 text-warning border-warning/30" : variant === "info" ? "bg-info/20 text-info border-info/30" : "badge-default";
154
- return /* @__PURE__ */ React5.createElement("span", { ref, className: cx5("badge", variantClass, className), ...rest });
176
+ const base = "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium border";
177
+ const variantClasses = {
178
+ default: "bg-slate text-silver border-slate",
179
+ gold: "bg-gold/20 text-gold border-gold/30",
180
+ success: "bg-success/20 text-success border-success/30",
181
+ error: "bg-error/20 text-error border-error/30",
182
+ warning: "bg-warning/20 text-warning border-warning/30",
183
+ info: "bg-info/20 text-info border-info/30"
184
+ };
185
+ const variantClass = variantClasses[variant];
186
+ return /* @__PURE__ */ React5.createElement("span", { ref, className: cx5(base, variantClass, className), ...rest });
155
187
  }
156
188
  );
157
189
  Badge.displayName = "Badge";
@@ -190,10 +222,11 @@ var Label = React7.forwardRef(
190
222
  "label",
191
223
  {
192
224
  ref,
193
- className: cx7("label", required && "label-required", className),
225
+ className: cx7("block text-sm font-medium text-silver mb-1.5", className),
194
226
  ...rest
195
227
  },
196
- children
228
+ children,
229
+ required && /* @__PURE__ */ React7.createElement("span", { className: "text-error ml-1" }, "*")
197
230
  );
198
231
  }
199
232
  );
@@ -226,7 +259,7 @@ function cx9(...classes) {
226
259
  }
227
260
  var Textarea = React9.forwardRef(
228
261
  ({ error = false, className, disabled, ...rest }, ref) => {
229
- const base = "textarea";
262
+ 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";
230
263
  const errorCls = error ? "border-error focus:border-error focus:ring-error" : "";
231
264
  return /* @__PURE__ */ React9.createElement(
232
265
  "textarea",
@@ -246,15 +279,26 @@ import React10 from "react";
246
279
  function cx10(...classes) {
247
280
  return classes.filter(Boolean).join(" ");
248
281
  }
282
+ 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")`;
249
283
  var Select = React10.forwardRef(
250
284
  ({ error = false, className, disabled, options, children, ...rest }, ref) => {
251
- const base = "select";
252
- const errorCls = error ? "border-error focus:border-error focus:ring-error" : "";
253
285
  return /* @__PURE__ */ React10.createElement(
254
286
  "select",
255
287
  {
256
288
  ref,
257
- className: cx10(base, errorCls, disabled && "opacity-90", className),
289
+ className: cx10(
290
+ "appearance-none bg-graphite border border-ash rounded-none text-white px-3 py-2 pr-8",
291
+ "focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none",
292
+ "disabled:opacity-50 disabled:cursor-not-allowed",
293
+ error && "border-error focus:border-error focus:ring-error",
294
+ className
295
+ ),
296
+ style: {
297
+ backgroundImage: selectBgImage,
298
+ backgroundPosition: "right 0.5rem center",
299
+ backgroundRepeat: "no-repeat",
300
+ backgroundSize: "1.5em 1.5em"
301
+ },
258
302
  disabled,
259
303
  ...rest
260
304
  },
@@ -265,20 +309,54 @@ var Select = React10.forwardRef(
265
309
  Select.displayName = "Select";
266
310
 
267
311
  // src/components/Checkbox.tsx
268
- import React11 from "react";
312
+ import React11, { useCallback } from "react";
269
313
  function cx11(...classes) {
270
314
  return classes.filter(Boolean).join(" ");
271
315
  }
316
+ 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")`;
272
317
  var Checkbox = React11.forwardRef(
273
318
  ({ className, label, id, ...rest }, ref) => {
274
319
  const inputId = id || rest.name || Math.random().toString(36).substr(2, 9);
320
+ const setRef = useCallback((node) => {
321
+ if (node) {
322
+ if (node.checked) {
323
+ node.style.backgroundImage = checkmarkSvg;
324
+ }
325
+ }
326
+ if (typeof ref === "function") {
327
+ ref(node);
328
+ } else if (ref) {
329
+ ref.current = node;
330
+ }
331
+ }, [ref]);
275
332
  return /* @__PURE__ */ React11.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React11.createElement(
276
333
  "input",
277
334
  {
278
335
  type: "checkbox",
279
336
  id: inputId,
280
- ref,
281
- className: cx11("checkbox", className),
337
+ ref: setRef,
338
+ className: cx11(
339
+ "appearance-none h-4 w-4 border border-ash rounded-sm bg-graphite",
340
+ "checked:bg-gold checked:border-gold",
341
+ "focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian",
342
+ "transition duration-200 ease-in-out cursor-pointer",
343
+ "disabled:opacity-50 disabled:cursor-not-allowed",
344
+ className
345
+ ),
346
+ style: {
347
+ backgroundPosition: "center",
348
+ backgroundSize: "contain",
349
+ backgroundRepeat: "no-repeat"
350
+ },
351
+ onChange: (e) => {
352
+ const input = e.currentTarget;
353
+ if (input.checked) {
354
+ input.style.backgroundImage = checkmarkSvg;
355
+ } else {
356
+ input.style.backgroundImage = "none";
357
+ }
358
+ rest.onChange?.(e);
359
+ },
282
360
  ...rest
283
361
  }
284
362
  ), label && /* @__PURE__ */ React11.createElement("label", { htmlFor: inputId, className: "ml-2 text-sm text-silver cursor-pointer select-none" }, label));
@@ -287,20 +365,62 @@ var Checkbox = React11.forwardRef(
287
365
  Checkbox.displayName = "Checkbox";
288
366
 
289
367
  // src/components/Radio.tsx
290
- import React12 from "react";
368
+ import React12, { useCallback as useCallback2 } from "react";
291
369
  function cx12(...classes) {
292
370
  return classes.filter(Boolean).join(" ");
293
371
  }
372
+ 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")`;
294
373
  var Radio = React12.forwardRef(
295
374
  ({ className, label, id, ...rest }, ref) => {
296
375
  const inputId = id || rest.name || Math.random().toString(36).substr(2, 9);
376
+ const setRef = useCallback2((node) => {
377
+ if (node) {
378
+ if (node.checked) {
379
+ node.style.backgroundImage = radioDotSvg;
380
+ }
381
+ }
382
+ if (typeof ref === "function") {
383
+ ref(node);
384
+ } else if (ref) {
385
+ ref.current = node;
386
+ }
387
+ }, [ref]);
297
388
  return /* @__PURE__ */ React12.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React12.createElement(
298
389
  "input",
299
390
  {
300
391
  type: "radio",
301
392
  id: inputId,
302
- ref,
303
- className: cx12("radio", className),
393
+ ref: setRef,
394
+ className: cx12(
395
+ "appearance-none h-4 w-4 border border-ash rounded-full bg-graphite",
396
+ "checked:bg-gold checked:border-gold",
397
+ "focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian",
398
+ "transition duration-200 ease-in-out cursor-pointer",
399
+ "disabled:opacity-50 disabled:cursor-not-allowed",
400
+ className
401
+ ),
402
+ style: {
403
+ backgroundPosition: "center",
404
+ backgroundSize: "contain",
405
+ backgroundRepeat: "no-repeat"
406
+ },
407
+ onChange: (e) => {
408
+ const input = e.currentTarget;
409
+ if (input.checked) {
410
+ input.style.backgroundImage = radioDotSvg;
411
+ if (input.name) {
412
+ const radios = document.querySelectorAll(`input[type="radio"][name="${input.name}"]`);
413
+ radios.forEach((radio) => {
414
+ if (radio !== input) {
415
+ radio.style.backgroundImage = "none";
416
+ }
417
+ });
418
+ }
419
+ } else {
420
+ input.style.backgroundImage = "none";
421
+ }
422
+ rest.onChange?.(e);
423
+ },
304
424
  ...rest
305
425
  }
306
426
  ), label && /* @__PURE__ */ React12.createElement("label", { htmlFor: inputId, className: "ml-2 text-sm text-silver cursor-pointer select-none" }, label));
@@ -309,7 +429,7 @@ var Radio = React12.forwardRef(
309
429
  Radio.displayName = "Radio";
310
430
 
311
431
  // src/components/Switch.tsx
312
- import React13, { useState } from "react";
432
+ import React13, { useCallback as useCallback3, useRef, useState } from "react";
313
433
  function cx13(...classes) {
314
434
  return classes.filter(Boolean).join(" ");
315
435
  }
@@ -318,6 +438,18 @@ var Switch = React13.forwardRef(
318
438
  const [internalChecked, setInternalChecked] = useState(defaultChecked);
319
439
  const isControlled = controlledChecked !== void 0;
320
440
  const checked = isControlled ? controlledChecked : internalChecked;
441
+ const buttonRef = useRef(null);
442
+ const setRefs = useCallback3(
443
+ (node) => {
444
+ buttonRef.current = node;
445
+ if (typeof ref === "function") {
446
+ ref(node);
447
+ } else if (ref) {
448
+ ref.current = node;
449
+ }
450
+ },
451
+ [ref]
452
+ );
321
453
  const handleClick = (e) => {
322
454
  if (disabled) return;
323
455
  const newChecked = !checked;
@@ -335,13 +467,39 @@ var Switch = React13.forwardRef(
335
467
  "aria-checked": checked,
336
468
  "data-state": checked ? "checked" : "unchecked",
337
469
  disabled,
338
- ref,
470
+ ref: setRefs,
339
471
  onClick: handleClick,
340
- className: cx13("switch", className),
472
+ className: cx13(
473
+ "relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent",
474
+ "transition-colors duration-200 ease-in-out",
475
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian",
476
+ "disabled:opacity-50 disabled:cursor-not-allowed",
477
+ checked ? "bg-gold" : "bg-charcoal",
478
+ className
479
+ ),
341
480
  ...rest
342
481
  },
343
- /* @__PURE__ */ React13.createElement("span", { className: "switch-thumb" })
344
- ), label && /* @__PURE__ */ React13.createElement("span", { className: "text-sm text-silver cursor-pointer", onClick: () => !disabled && handleClick({}) }, label));
482
+ /* @__PURE__ */ React13.createElement(
483
+ "span",
484
+ {
485
+ className: cx13(
486
+ "pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0",
487
+ "transition duration-200 ease-in-out",
488
+ checked ? "translate-x-5" : "translate-x-0"
489
+ )
490
+ }
491
+ )
492
+ ), label && /* @__PURE__ */ React13.createElement(
493
+ "span",
494
+ {
495
+ className: "text-sm text-silver cursor-pointer",
496
+ onClick: () => {
497
+ if (disabled) return;
498
+ buttonRef.current?.click();
499
+ }
500
+ },
501
+ label
502
+ ));
345
503
  }
346
504
  );
347
505
  Switch.displayName = "Switch";
@@ -358,16 +516,25 @@ var icons = {
358
516
  warning: AlertTriangle,
359
517
  error: XCircle
360
518
  };
519
+ var variantStyles = {
520
+ info: "bg-info/10 border-info text-info",
521
+ success: "bg-success/10 border-success text-success",
522
+ warning: "bg-warning/10 border-warning text-warning",
523
+ error: "bg-error/10 border-error text-error"
524
+ };
361
525
  var Alert = React14.forwardRef(
362
526
  ({ variant = "info", title, children, className, ...rest }, ref) => {
363
527
  const Icon = icons[variant];
364
- const variantClass = `alert-${variant}`;
365
528
  return /* @__PURE__ */ React14.createElement(
366
529
  "div",
367
530
  {
368
531
  ref,
369
532
  role: "alert",
370
- className: cx14("alert", variantClass, "flex gap-3", className),
533
+ className: cx14(
534
+ "relative w-full p-4 rounded-none border border-l-4 flex gap-3",
535
+ variantStyles[variant],
536
+ className
537
+ ),
371
538
  ...rest
372
539
  },
373
540
  /* @__PURE__ */ React14.createElement(Icon, { className: "h-5 w-5 shrink-0" }),
@@ -456,12 +623,15 @@ var Modal = ({ isOpen, onClose, title, children, className }) => {
456
623
  }, [onClose]);
457
624
  if (!mounted) return null;
458
625
  if (!isOpen) return null;
459
- const content = /* @__PURE__ */ React17.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6", onClick: onClose }, /* @__PURE__ */ React17.createElement("div", { className: "modal-backdrop", "aria-hidden": "true" }), /* @__PURE__ */ React17.createElement(
626
+ const content = /* @__PURE__ */ React17.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6", onClick: onClose }, /* @__PURE__ */ React17.createElement("div", { className: "fixed inset-0 z-40 bg-obsidian/80 backdrop-blur-sm", "aria-hidden": "true" }), /* @__PURE__ */ React17.createElement(
460
627
  "div",
461
628
  {
462
629
  role: "dialog",
463
630
  "aria-modal": "true",
464
- className: cx17("modal-content relative", className),
631
+ className: cx17(
632
+ "bg-charcoal border border-gold/30 shadow-2xl z-50 w-full max-w-lg p-6 rounded-none relative",
633
+ className
634
+ ),
465
635
  "data-state": "open",
466
636
  onClick: (e) => e.stopPropagation()
467
637
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Button.tsx","../src/components/Input.tsx","../src/components/Card.tsx","../src/components/Avatar.tsx","../src/components/Badge.tsx","../src/components/Tooltip.tsx","../src/components/Label.tsx","../src/components/HelperText.tsx","../src/components/Textarea.tsx","../src/components/Select.tsx","../src/components/Checkbox.tsx","../src/components/Radio.tsx","../src/components/Switch.tsx","../src/components/Alert.tsx","../src/components/Spinner.tsx","../src/components/Skeleton.tsx","../src/components/Modal.tsx","../src/index.ts"],"sourcesContent":["import React from 'react'\r\n\r\nexport type ButtonVariant =\r\n | 'primary'\r\n | 'important'\r\n | 'elevated'\r\n | 'outlined'\r\n | 'featured'\r\n | 'ghost'\r\n | 'danger'\r\n\r\nexport type ButtonSize = 'sm' | 'md' | 'lg' | 'xl'\r\n\r\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: ButtonVariant\r\n size?: ButtonSize\r\n loading?: boolean\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({variant = 'primary', size = 'md', loading = false, className, disabled, children, ...rest},\r\n ref) => {\r\n const isDisabled = disabled || loading\r\n const variantClass =\r\n variant === 'primary'\r\n ? 'btn-primary'\r\n : variant === 'important'\r\n ? 'btn-important'\r\n : variant === 'elevated'\r\n ? 'btn-elevated'\r\n : variant === 'outlined'\r\n ? 'btn-outlined'\r\n : variant === 'featured'\r\n ? 'btn-featured'\r\n : variant === 'ghost'\r\n ? 'btn-ghost'\r\n : 'btn-danger'\r\n\r\n const sizeClass = `btn-${size}`\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n className={cx('btn', variantClass, sizeClass, loading && 'opacity-80', className)}\r\n disabled={isDisabled}\r\n {...rest}\r\n >\r\n {loading && (\r\n <span className=\"mr-2 inline-block h-4 w-4 animate-pulse rounded-full bg-gold\"\r\n aria-hidden/>\r\n )}\r\n {children}\r\n </button>\r\n )\r\n }\r\n)\r\n\r\nButton.displayName = 'Button'\r\n\r\nexport default Button\r\n","import React from 'react'\r\n\r\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n error?: boolean\r\n leadingIcon?: React.ReactNode\r\n trailingIcon?: React.ReactNode\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ error = false, className, leadingIcon, trailingIcon, disabled, ...rest }, ref) => {\r\n const base = 'input'\r\n const errorCls = error ? 'input-error' : ''\r\n\r\n return (\r\n <div className={cx('relative', disabled && 'opacity-90')}> \r\n {leadingIcon && (\r\n <span className=\"pointer-events-none absolute inset-y-0 left-3 flex items-center text-silver\">\r\n {leadingIcon}\r\n </span>\r\n )}\r\n <input\r\n ref={ref}\r\n className={cx(\r\n base,\r\n errorCls,\r\n (leadingIcon || trailingIcon) && 'pl-9 pr-9',\r\n className\r\n )}\r\n disabled={disabled}\r\n {...rest}\r\n />\r\n {trailingIcon && (\r\n <span className=\"pointer-events-none absolute inset-y-0 right-3 flex items-center text-silver\">\r\n {trailingIcon}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nInput.displayName = 'Input'\r\n\r\nexport default Input\r\n","import React from 'react'\r\n\r\nexport type CardVariant = 'default' | 'elevated' | 'outlined' | 'ghost' | 'featured'\r\n\r\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: CardVariant\r\n interactive?: boolean\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({variant = 'default', interactive = false, className, ...rest}, ref) => {\r\n const base = 'card'\r\n const variantClass =\r\n variant === 'elevated'\r\n ? 'card-elevated'\r\n : variant === 'outlined'\r\n ? 'card-outlined'\r\n : variant === 'ghost'\r\n ? 'bg-transparent shadow-none border-0'\r\n : variant === 'featured'\r\n ? 'card-featured'\r\n : ''\r\n\r\n // Use the design system's interactive class so hover styles match CSS\r\n const interactiveClass = interactive ? 'card-interactive' : ''\r\n\r\n return <div ref={ref}\r\n className={cx(base, variantClass, interactiveClass, className)} {...rest} />\r\n }\r\n)\r\n\r\nCard.displayName = 'Card'\r\n\r\nexport default Card\r\n","import React from 'react'\r\n\r\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\r\n\r\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\r\n src?: string\r\n alt?: string\r\n name?: string\r\n size?: AvatarSize\r\n status?: 'online' | 'offline' | 'busy'\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nconst sizeMap: Record<AvatarSize, string> = {\r\n xs: 'h-6 w-6 text-[10px]',\r\n sm: 'h-8 w-8 text-[11px]',\r\n md: 'h-10 w-10 text-xs',\r\n lg: 'h-12 w-12 text-sm',\r\n xl: 'h-16 w-16 text-base',\r\n '2xl': 'h-24 w-24 text-lg',\r\n}\r\n\r\nfunction initials(name?: string) {\r\n if (!name) return ''\r\n const parts = name.trim().split(/\\s+/)\r\n return parts.slice(0, 2).map(p => p[0]!.toUpperCase()).join('')\r\n}\r\n\r\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\r\n ({ src, alt = '', name, size = 'md', status, className, ...rest }, ref) => {\r\n const statusColor =\r\n status === 'online' ? 'bg-success' : status === 'busy' ? 'bg-warning' : 'bg-zinc'\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cx(\r\n 'relative inline-flex items-center justify-center rounded-full border-2 border-ash bg-slate text-silver font-semibold select-none overflow-hidden',\r\n sizeMap[size],\r\n className\r\n )}\r\n {...rest}\r\n >\r\n {src ? (\r\n // eslint-disable-next-line @next/next/no-img-element\r\n <img src={src} alt={alt || name || 'Avatar'} className=\"h-full w-full object-cover\" />\r\n ) : (\r\n <span aria-hidden>{initials(name) || '·'}</span>\r\n )}\r\n {status && (\r\n <span\r\n className={cx(\r\n 'absolute bottom-0 right-0 rounded-full ring-2 ring-charcoal',\r\n // 25% of avatar size\r\n size === 'xs' ? 'h-1.5 w-1.5' :\r\n size === 'sm' ? 'h-2 w-2' :\r\n size === 'md' ? 'h-2.5 w-2.5' :\r\n size === 'lg' ? 'h-3 w-3' :\r\n size === 'xl' ? 'h-4 w-4' : 'h-5 w-5',\r\n statusColor\r\n )}\r\n />\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nAvatar.displayName = 'Avatar'\r\n\r\nexport default Avatar\r\n","import React from 'react'\r\n\r\nexport type BadgeVariant = 'default' | 'gold' | 'success' | 'error' | 'warning' | 'info'\r\n\r\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n variant?: BadgeVariant\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\r\n ({ variant = 'default', className, ...rest }, ref) => {\r\n const variantClass =\r\n variant === 'gold'\r\n ? 'badge-gold'\r\n : variant === 'success'\r\n ? 'badge-success'\r\n : variant === 'error'\r\n ? 'badge-error'\r\n : variant === 'warning'\r\n ? 'bg-warning/20 text-warning border-warning/30'\r\n : variant === 'info'\r\n ? 'bg-info/20 text-info border-info/30'\r\n : 'badge-default'\r\n\r\n return <span ref={ref} className={cx('badge', variantClass, className)} {...rest} />\r\n }\r\n)\r\n\r\nBadge.displayName = 'Badge'\r\n\r\nexport default Badge\r\n","import React from 'react'\r\n\r\nexport interface TooltipProps {\r\n content: React.ReactNode\r\n children: React.ReactElement\r\n open?: boolean\r\n side?: 'top' | 'right' | 'bottom' | 'left'\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\n// Simple, controlled tooltip. Consumer handles open state.\r\nexport const Tooltip: React.FC<TooltipProps> = ({ content, children, open = false, side = 'top' }) => {\r\n return (\r\n <span className=\"relative inline-block\">\r\n {children}\r\n <span\r\n role=\"tooltip\"\r\n className={cx(\r\n 'pointer-events-none absolute z-50 whitespace-nowrap rounded-md border border-ash bg-graphite px-3 py-1.5 text-sm text-white shadow-lg transition-opacity duration-fast ease-out',\r\n open ? 'opacity-100' : 'opacity-0',\r\n side === 'top' && 'left-1/2 -translate-x-1/2 -top-2 translate-y-[-100%]',\r\n side === 'bottom' && 'left-1/2 -translate-x-1/2 -bottom-2 translate-y-[100%]',\r\n side === 'left' && 'top-1/2 -translate-y-1/2 -left-2 -translate-x-[100%]',\r\n side === 'right' && 'top-1/2 -translate-y-1/2 -right-2 translate-x-[100%]'\r\n )}\r\n >\r\n {content}\r\n </span>\r\n </span>\r\n )\r\n}\r\n\r\nexport default Tooltip\r\n","import React from 'react'\r\n\r\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\r\n required?: boolean\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\r\n ({ className, required, children, ...rest }, ref) => {\r\n return (\r\n <label\r\n ref={ref}\r\n className={cx('label', required && 'label-required', className)}\r\n {...rest}\r\n >\r\n {children}\r\n </label>\r\n )\r\n }\r\n)\r\n\r\nLabel.displayName = 'Label'\r\n\r\nexport default Label\r\n","import React from 'react'\r\n\r\nexport interface HelperTextProps extends React.HTMLAttributes<HTMLParagraphElement> {\r\n error?: boolean\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const HelperText = React.forwardRef<HTMLParagraphElement, HelperTextProps>(\r\n ({ className, error, children, ...rest }, ref) => {\r\n return (\r\n <p\r\n ref={ref}\r\n className={cx('mt-1.5 text-xs', error ? 'text-error' : 'text-silver', className)}\r\n {...rest}\r\n >\r\n {children}\r\n </p>\r\n )\r\n }\r\n)\r\n\r\nHelperText.displayName = 'HelperText'\r\n\r\nexport default HelperText\r\n","import React from 'react'\r\n\r\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n error?: boolean\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ error = false, className, disabled, ...rest }, ref) => {\r\n const base = 'textarea'\r\n const errorCls = error ? 'border-error focus:border-error focus:ring-error' : ''\r\n\r\n return (\r\n <textarea\r\n ref={ref}\r\n className={cx(base, errorCls, disabled && 'opacity-90', className)}\r\n disabled={disabled}\r\n {...rest}\r\n />\r\n )\r\n }\r\n)\r\n\r\nTextarea.displayName = 'Textarea'\r\n\r\nexport default Textarea\r\n","import React from 'react'\r\n\r\nexport interface SelectOption {\r\n label: string\r\n value: string | number\r\n}\r\n\r\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\r\n error?: boolean\r\n options?: SelectOption[]\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\r\n ({ error = false, className, disabled, options, children, ...rest }, ref) => {\r\n const base = 'select'\r\n const errorCls = error ? 'border-error focus:border-error focus:ring-error' : ''\r\n\r\n return (\r\n <select\r\n ref={ref}\r\n className={cx(base, errorCls, disabled && 'opacity-90', className)}\r\n disabled={disabled}\r\n {...rest}\r\n >\r\n {options\r\n ? options.map((opt) => (\r\n <option key={opt.value} value={opt.value}>\r\n {opt.label}\r\n </option>\r\n ))\r\n : children}\r\n </select>\r\n )\r\n }\r\n)\r\n\r\nSelect.displayName = 'Select'\r\n\r\nexport default Select\r\n","import React from 'react'\r\n\r\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\r\n ({ className, label, id, ...rest }, ref) => {\r\n const inputId = id || rest.name || Math.random().toString(36).substr(2, 9)\r\n\r\n return (\r\n <div className=\"flex items-center\">\r\n <input\r\n type=\"checkbox\"\r\n id={inputId}\r\n ref={ref}\r\n className={cx('checkbox', className)}\r\n {...rest}\r\n />\r\n {label && (\r\n <label htmlFor={inputId} className=\"ml-2 text-sm text-silver cursor-pointer select-none\">\r\n {label}\r\n </label>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nCheckbox.displayName = 'Checkbox'\r\n\r\nexport default Checkbox\r\n","import React from 'react'\r\n\r\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\r\n ({ className, label, id, ...rest }, ref) => {\r\n const inputId = id || rest.name || Math.random().toString(36).substr(2, 9)\r\n\r\n return (\r\n <div className=\"flex items-center\">\r\n <input\r\n type=\"radio\"\r\n id={inputId}\r\n ref={ref}\r\n className={cx('radio', className)}\r\n {...rest}\r\n />\r\n {label && (\r\n <label htmlFor={inputId} className=\"ml-2 text-sm text-silver cursor-pointer select-none\">\r\n {label}\r\n </label>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nRadio.displayName = 'Radio'\r\n\r\nexport default Radio\r\n","import React, { useState } from 'react'\r\n\r\nexport interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\r\n checked?: boolean\r\n defaultChecked?: boolean\r\n onCheckedChange?: (checked: boolean) => void\r\n label?: string\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\r\n ({ checked: controlledChecked, defaultChecked = false, onCheckedChange, disabled, className, label, ...rest }, ref) => {\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\r\n const isControlled = controlledChecked !== undefined\r\n const checked = isControlled ? controlledChecked : internalChecked\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (disabled) return\r\n const newChecked = !checked\r\n if (!isControlled) {\r\n setInternalChecked(newChecked)\r\n }\r\n onCheckedChange?.(newChecked)\r\n rest.onClick?.(e)\r\n }\r\n\r\n return (\r\n <div className=\"flex items-center gap-2\">\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n data-state={checked ? 'checked' : 'unchecked'}\r\n disabled={disabled}\r\n ref={ref}\r\n onClick={handleClick}\r\n className={cx('switch', className)}\r\n {...rest}\r\n >\r\n <span className=\"switch-thumb\" />\r\n </button>\r\n {label && (\r\n <span className=\"text-sm text-silver cursor-pointer\" onClick={() => !disabled && handleClick({} as any)}>\r\n {label}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nSwitch.displayName = 'Switch'\r\n\r\nexport default Switch\r\n","import React from 'react'\r\nimport { Info, CheckCircle, AlertTriangle, XCircle } from 'lucide-react'\r\n\r\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\r\n\r\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: AlertVariant\r\n title?: string\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nconst icons = {\r\n info: Info,\r\n success: CheckCircle,\r\n warning: AlertTriangle,\r\n error: XCircle,\r\n}\r\n\r\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\r\n ({ variant = 'info', title, children, className, ...rest }, ref) => {\r\n const Icon = icons[variant]\r\n const variantClass = `alert-${variant}`\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={cx('alert', variantClass, 'flex gap-3', className)}\r\n {...rest}\r\n >\r\n <Icon className=\"h-5 w-5 shrink-0\" />\r\n <div className=\"flex-1\">\r\n {title && <h5 className=\"mb-1 font-medium leading-none tracking-tight text-current\">{title}</h5>}\r\n <div className=\"text-sm opacity-90\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nAlert.displayName = 'Alert'\r\n\r\nexport default Alert\r\n","import React from 'react'\r\n\r\nexport interface SpinnerProps extends React.SVGAttributes<SVGElement> {\r\n size?: 'sm' | 'md' | 'lg'\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Spinner = ({ className, size = 'md', ...rest }: SpinnerProps) => {\r\n const sizeClass =\r\n size === 'sm' ? 'h-4 w-4' : size === 'lg' ? 'h-8 w-8' : 'h-6 w-6'\r\n\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={cx('animate-spin text-gold', sizeClass, className)}\r\n {...rest}\r\n >\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n )\r\n}\r\n\r\nSpinner.displayName = 'Spinner'\r\n\r\nexport default Spinner\r\n","import React from 'react'\r\n\r\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\r\n ({ className, ...rest }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cx('animate-pulse bg-ash rounded-sm', className)}\r\n {...rest}\r\n />\r\n )\r\n }\r\n)\r\n\r\nSkeleton.displayName = 'Skeleton'\r\n\r\nexport default Skeleton\r\n","import React, { useEffect, useState } from 'react'\r\nimport { createPortal } from 'react-dom'\r\nimport { X } from 'lucide-react'\r\n\r\nexport interface ModalProps {\r\n isOpen: boolean\r\n onClose: () => void\r\n title?: string\r\n children: React.ReactNode\r\n className?: string\r\n}\r\n\r\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\nexport const Modal = ({ isOpen, onClose, title, children, className }: ModalProps) => {\r\n const [mounted, setMounted] = useState(false)\r\n\r\n useEffect(() => {\r\n setMounted(true)\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\r\n document.body.style.overflow = 'hidden'\r\n document.body.style.paddingRight = `${scrollbarWidth}px`\r\n } else {\r\n document.body.style.overflow = 'unset'\r\n document.body.style.paddingRight = '0px'\r\n }\r\n return () => {\r\n document.body.style.overflow = 'unset'\r\n document.body.style.paddingRight = '0px'\r\n }\r\n }, [isOpen])\r\n\r\n useEffect(() => {\r\n const handleEsc = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') onClose()\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [onClose])\r\n\r\n if (!mounted) return null\r\n\r\n // Don't render anything if closed, unless we want exit animations. \r\n // My CSS relies on data-state, but if I unmount immediately, exit animation won't play.\r\n // To support exit animations, I'd need a transition manager (like framer-motion or headlessui).\r\n // For this simple implementation, I'll render conditionally. \r\n // If I want animation, I need to keep it mounted until animation ends.\r\n // Given the prompt \"add all suggestions\" and \"premium\", a simple unmount is acceptable for v1 without heavy deps.\r\n // However, the CSS I wrote has `data-state=closed`. \r\n // Without a transition library, handling exit animation is tricky. \r\n // I'll just conditional render for now. The entry animation `animate-fade-in` will play.\r\n \r\n if (!isOpen) return null;\r\n\r\n const content = (\r\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6\" onClick={onClose}>\r\n <div className=\"modal-backdrop\" aria-hidden=\"true\" />\r\n <div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n className={cx('modal-content relative', className)}\r\n data-state=\"open\"\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <div className=\"flex items-center justify-between mb-2\">\r\n {title ? <h3 className=\"text-xl font-semibold text-white m-0\">{title}</h3> : <div />}\r\n <button onClick={onClose} className=\"text-silver hover:text-white transition-colors ml-auto\">\r\n <X className=\"h-5 w-5\" />\r\n <span className=\"sr-only\">Close</span>\r\n </button>\r\n </div>\r\n <div>{children}</div>\r\n </div>\r\n </div>\r\n )\r\n\r\n return createPortal(content, document.body)\r\n}\r\n\r\nModal.displayName = 'Modal'\r\n\r\nexport default Modal\r\n","/**\n * Aurelius Design System\n *\n * A cohesive visual language for creative technologists.\n * Combines technical sophistication with artistic sensibility.\n */\n\n// Export Tailwind preset\nexport { default as tailwindPreset } from './tailwind.preset'\n\n// Export design tokens\nexport * from './tokens'\n\n// Re-export individual token modules for convenience\nexport { colors, type ColorToken } from './tokens/colors'\nexport { typography, type TypographyToken } from './tokens/typography'\nexport { spacing, type SpacingToken } from './tokens/spacing'\n\n// React components\nexport * from './components'\n\n// Version\nexport const version = '1.0.0'\n"],"mappings":"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","names":["React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","useState","cx"]}
1
+ {"version":3,"sources":["../src/components/Button.tsx","../src/components/Input.tsx","../src/components/Card.tsx","../src/components/Avatar.tsx","../src/components/Badge.tsx","../src/components/Tooltip.tsx","../src/components/Label.tsx","../src/components/HelperText.tsx","../src/components/Textarea.tsx","../src/components/Select.tsx","../src/components/Checkbox.tsx","../src/components/Radio.tsx","../src/components/Switch.tsx","../src/components/Alert.tsx","../src/components/Spinner.tsx","../src/components/Skeleton.tsx","../src/components/Modal.tsx","../src/index.ts"],"sourcesContent":["import React from 'react'\n\nexport type ButtonVariant =\n | 'primary'\n | 'important'\n | 'elevated'\n | 'outlined'\n | 'featured'\n | 'ghost'\n | 'danger'\n\nexport type ButtonSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant\n size?: ButtonSize\n loading?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({variant = 'primary', size = 'md', loading = false, className, disabled, children, ...rest},\n ref) => {\n const isDisabled = disabled || loading\n\n // Base button styles - common to all variants\n const base =\n 'inline-flex items-center justify-center font-semibold tracking-wide ' +\n 'transition-all duration-fast ' +\n 'rounded-none ' +\n 'disabled:opacity-50 disabled:cursor-not-allowed'\n\n // Variant styles\n const variantClasses = {\n primary:\n 'bg-charcoal text-white border border-gold/30 ' +\n 'hover:border-gold hover:shadow-glow hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n important:\n 'bg-gold text-obsidian border border-gold ' +\n 'hover:bg-gold-light hover:text-obsidian ' +\n 'active:bg-gold-bright ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n elevated:\n 'bg-charcoal text-white border-0 shadow-lg ' +\n 'hover:shadow-xl hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n outlined:\n 'bg-transparent text-white border border-ash ' +\n 'hover:border-white hover:text-white ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n featured:\n 'bg-charcoal text-white border border-gold ' +\n 'shadow-[0_0_10px_rgba(201,162,39,0.2)] ' +\n 'hover:shadow-[0_0_15px_rgba(201,162,39,0.4)] hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n ghost:\n 'bg-transparent text-gold border-0 ' +\n 'hover:text-gold-light ' +\n 'active:text-gold-bright ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n danger:\n 'bg-error text-white border-0 ' +\n 'hover:bg-error/90 ' +\n 'active:bg-error/80 ' +\n 'focus-visible:ring-2 focus-visible:ring-error focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n }\n\n // Size styles\n const sizeClasses = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-sm',\n lg: 'h-12 px-6 text-base',\n xl: 'h-14 px-8 text-lg',\n }\n\n const variantClass = variantClasses[variant]\n const sizeClass = sizeClasses[size]\n\n return (\n <button\n ref={ref}\n className={cx(base, variantClass, sizeClass, loading && 'opacity-80', className)}\n disabled={isDisabled}\n {...rest}\n >\n {loading && (\n <span\n className=\"mr-2 inline-block h-4 w-4 animate-pulse rounded-full bg-gold\"\n aria-hidden\n />\n )}\n {children}\n </button>\n )\n }\n)\n\nButton.displayName = 'Button'\n\nexport default Button\n","import React from 'react'\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n error?: boolean\n leadingIcon?: React.ReactNode\n trailingIcon?: React.ReactNode\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ error = false, className, leadingIcon, trailingIcon, disabled, ...rest }, ref) => {\n // Base input styles\n const base =\n 'w-full h-10 px-3 bg-graphite border border-ash rounded-none ' +\n 'text-white placeholder:text-zinc ' +\n 'transition-all duration-fast ' +\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none ' +\n 'disabled:bg-slate disabled:text-dim disabled:cursor-not-allowed'\n\n // Error styles\n const errorCls = error ? 'border-error focus:border-error focus:ring-error' : ''\n\n return (\n <div className={cx('relative', disabled && 'opacity-90')}>\n {leadingIcon && (\n <span className=\"pointer-events-none absolute inset-y-0 left-3 flex items-center text-silver\">\n {leadingIcon}\n </span>\n )}\n <input\n ref={ref}\n className={cx(\n base,\n errorCls,\n (leadingIcon || trailingIcon) && 'pl-9 pr-9',\n className\n )}\n disabled={disabled}\n {...rest}\n />\n {trailingIcon && (\n <span className=\"pointer-events-none absolute inset-y-0 right-3 flex items-center text-silver\">\n {trailingIcon}\n </span>\n )}\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\n\nexport default Input\n","import React from 'react'\n\nexport type CardVariant = 'default' | 'elevated' | 'outlined' | 'ghost' | 'featured'\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: CardVariant\n interactive?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({variant = 'default', interactive = false, className, ...rest}, ref) => {\n // Base card styles\n const base = 'rounded-none p-6'\n\n // Variant styles\n const variantClasses = {\n default: 'bg-charcoal shadow-sm border border-gold/30',\n elevated: 'bg-charcoal shadow-lg border-0',\n outlined: 'bg-charcoal shadow-none border border-ash',\n ghost: 'bg-transparent shadow-none border-0',\n featured: 'bg-charcoal border border-gold shadow-[0_0_10px_rgba(201,162,39,0.2)]',\n }\n\n // Interactive styles\n const interactiveClass = interactive\n ? 'transition-all duration-normal hover:border-gold hover:shadow-glow cursor-pointer'\n : ''\n\n const variantClass = variantClasses[variant]\n\n return (\n <div\n ref={ref}\n className={cx(base, variantClass, interactiveClass, className)}\n {...rest}\n />\n )\n }\n)\n\nCard.displayName = 'Card'\n\nexport default Card\n","import React from 'react'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n src?: string\n alt?: string\n name?: string\n size?: AvatarSize\n status?: 'online' | 'offline' | 'busy'\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst sizeMap: Record<AvatarSize, string> = {\n xs: 'h-6 w-6 text-[10px]',\n sm: 'h-8 w-8 text-[11px]',\n md: 'h-10 w-10 text-xs',\n lg: 'h-12 w-12 text-sm',\n xl: 'h-16 w-16 text-base',\n '2xl': 'h-24 w-24 text-lg',\n}\n\nfunction initials(name?: string) {\n if (!name) return ''\n const parts = name.trim().split(/\\s+/)\n return parts.slice(0, 2).map(p => p[0]!.toUpperCase()).join('')\n}\n\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ src, alt = '', name, size = 'md', status, className, ...rest }, ref) => {\n const statusColor =\n status === 'online' ? 'bg-success' : status === 'busy' ? 'bg-warning' : 'bg-zinc'\n\n return (\n <div\n ref={ref}\n className={cx(\n 'relative inline-flex items-center justify-center rounded-full border-2 border-ash bg-slate text-silver font-semibold select-none overflow-hidden',\n sizeMap[size],\n className\n )}\n {...rest}\n >\n {src ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img src={src} alt={alt || name || 'Avatar'} className=\"h-full w-full object-cover\" />\n ) : (\n <span aria-hidden>{initials(name) || '·'}</span>\n )}\n {status && (\n <span\n className={cx(\n 'absolute bottom-0 right-0 rounded-full ring-2 ring-charcoal',\n // 25% of avatar size\n size === 'xs' ? 'h-1.5 w-1.5' :\n size === 'sm' ? 'h-2 w-2' :\n size === 'md' ? 'h-2.5 w-2.5' :\n size === 'lg' ? 'h-3 w-3' :\n size === 'xl' ? 'h-4 w-4' : 'h-5 w-5',\n statusColor\n )}\n />\n )}\n </div>\n )\n }\n)\n\nAvatar.displayName = 'Avatar'\n\nexport default Avatar\n","import React from 'react'\n\nexport type BadgeVariant = 'default' | 'gold' | 'success' | 'error' | 'warning' | 'info'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ variant = 'default', className, ...rest }, ref) => {\n // Base badge styles\n const base = 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium border'\n\n // Variant styles\n const variantClasses = {\n default: 'bg-slate text-silver border-slate',\n gold: 'bg-gold/20 text-gold border-gold/30',\n success: 'bg-success/20 text-success border-success/30',\n error: 'bg-error/20 text-error border-error/30',\n warning: 'bg-warning/20 text-warning border-warning/30',\n info: 'bg-info/20 text-info border-info/30',\n }\n\n const variantClass = variantClasses[variant]\n\n return <span ref={ref} className={cx(base, variantClass, className)} {...rest} />\n }\n)\n\nBadge.displayName = 'Badge'\n\nexport default Badge\n","import React from 'react'\n\nexport interface TooltipProps {\n content: React.ReactNode\n children: React.ReactElement\n open?: boolean\n side?: 'top' | 'right' | 'bottom' | 'left'\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\n// Simple, controlled tooltip. Consumer handles open state.\nexport const Tooltip: React.FC<TooltipProps> = ({ content, children, open = false, side = 'top' }) => {\n return (\n <span className=\"relative inline-block\">\n {children}\n <span\n role=\"tooltip\"\n className={cx(\n 'pointer-events-none absolute z-50 whitespace-nowrap rounded-md border border-ash bg-graphite px-3 py-1.5 text-sm text-white shadow-lg transition-opacity duration-fast ease-out',\n open ? 'opacity-100' : 'opacity-0',\n side === 'top' && 'left-1/2 -translate-x-1/2 -top-2 translate-y-[-100%]',\n side === 'bottom' && 'left-1/2 -translate-x-1/2 -bottom-2 translate-y-[100%]',\n side === 'left' && 'top-1/2 -translate-y-1/2 -left-2 -translate-x-[100%]',\n side === 'right' && 'top-1/2 -translate-y-1/2 -right-2 translate-x-[100%]'\n )}\n >\n {content}\n </span>\n </span>\n )\n}\n\nexport default Tooltip\n","import React from 'react'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, children, ...rest }, ref) => {\n return (\n <label\n ref={ref}\n className={cx('block text-sm font-medium text-silver mb-1.5', className)}\n {...rest}\n >\n {children}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )\n }\n)\n\nLabel.displayName = 'Label'\n\nexport default Label\n","import React from 'react'\n\nexport interface HelperTextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n error?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const HelperText = React.forwardRef<HTMLParagraphElement, HelperTextProps>(\n ({ className, error, children, ...rest }, ref) => {\n return (\n <p\n ref={ref}\n className={cx('mt-1.5 text-xs', error ? 'text-error' : 'text-silver', className)}\n {...rest}\n >\n {children}\n </p>\n )\n }\n)\n\nHelperText.displayName = 'HelperText'\n\nexport default HelperText\n","import React from 'react'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ error = false, className, disabled, ...rest }, ref) => {\n // Base textarea styles\n const base =\n 'w-full px-3 py-2 bg-graphite border border-ash rounded-none ' +\n 'text-white placeholder:text-zinc min-h-[80px] ' +\n 'transition-all duration-fast ' +\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none ' +\n 'disabled:bg-slate disabled:text-dim disabled:cursor-not-allowed'\n\n // Error styles\n const errorCls = error ? 'border-error focus:border-error focus:ring-error' : ''\n\n return (\n <textarea\n ref={ref}\n className={cx(base, errorCls, disabled && 'opacity-90', className)}\n disabled={disabled}\n {...rest}\n />\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n\nexport default Textarea\n","import React from 'react'\n\nexport interface SelectOption {\n label: string\n value: string | number\n}\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n error?: boolean\n options?: SelectOption[]\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst 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\\\")\"\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ error = false, className, disabled, options, children, ...rest }, ref) => {\n return (\n <select\n ref={ref}\n className={cx(\n 'appearance-none bg-graphite border border-ash rounded-none text-white px-3 py-2 pr-8',\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n error && 'border-error focus:border-error focus:ring-error',\n className\n )}\n style={{\n backgroundImage: selectBgImage,\n backgroundPosition: 'right 0.5rem center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '1.5em 1.5em',\n }}\n disabled={disabled}\n {...rest}\n >\n {options\n ? options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))\n : children}\n </select>\n )\n }\n)\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import React, { useCallback } from 'react'\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst 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\\\")\"\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, id, ...rest }, ref) => {\n const inputId = id || rest.name || Math.random().toString(36).substr(2, 9)\n\n const setRef = useCallback((node: HTMLInputElement | null) => {\n if (node) {\n // Set initial background image based on checked state\n if (node.checked) {\n node.style.backgroundImage = checkmarkSvg\n }\n }\n // Forward ref\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n }, [ref])\n\n return (\n <div className=\"flex items-center\">\n <input\n type=\"checkbox\"\n id={inputId}\n ref={setRef}\n className={cx(\n 'appearance-none h-4 w-4 border border-ash rounded-sm bg-graphite',\n 'checked:bg-gold checked:border-gold',\n 'focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian',\n 'transition duration-200 ease-in-out cursor-pointer',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n className\n )}\n style={{\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n onChange={(e) => {\n const input = e.currentTarget\n if (input.checked) {\n input.style.backgroundImage = checkmarkSvg\n } else {\n input.style.backgroundImage = 'none'\n }\n rest.onChange?.(e)\n }}\n {...rest}\n />\n {label && (\n <label htmlFor={inputId} className=\"ml-2 text-sm text-silver cursor-pointer select-none\">\n {label}\n </label>\n )}\n </div>\n )\n }\n)\n\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\n","import React, { useCallback } from 'react'\n\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst 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\\\")\"\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ className, label, id, ...rest }, ref) => {\n const inputId = id || rest.name || Math.random().toString(36).substr(2, 9)\n\n const setRef = useCallback((node: HTMLInputElement | null) => {\n if (node) {\n // Set initial background image based on checked state\n if (node.checked) {\n node.style.backgroundImage = radioDotSvg\n }\n }\n // Forward ref\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n }, [ref])\n\n return (\n <div className=\"flex items-center\">\n <input\n type=\"radio\"\n id={inputId}\n ref={setRef}\n className={cx(\n 'appearance-none h-4 w-4 border border-ash rounded-full bg-graphite',\n 'checked:bg-gold checked:border-gold',\n 'focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian',\n 'transition duration-200 ease-in-out cursor-pointer',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n className\n )}\n style={{\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n onChange={(e) => {\n const input = e.currentTarget\n if (input.checked) {\n input.style.backgroundImage = radioDotSvg\n // Clear other radios in the same group\n if (input.name) {\n const radios = document.querySelectorAll<HTMLInputElement>(`input[type=\"radio\"][name=\"${input.name}\"]`)\n radios.forEach((radio) => {\n if (radio !== input) {\n radio.style.backgroundImage = 'none'\n }\n })\n }\n } else {\n input.style.backgroundImage = 'none'\n }\n rest.onChange?.(e)\n }}\n {...rest}\n />\n {label && (\n <label htmlFor={inputId} className=\"ml-2 text-sm text-silver cursor-pointer select-none\">\n {label}\n </label>\n )}\n </div>\n )\n }\n)\n\nRadio.displayName = 'Radio'\n\nexport default Radio\n","import React, { useCallback, useRef, useState } from 'react'\n\nexport interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked?: boolean\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n label?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ checked: controlledChecked, defaultChecked = false, onCheckedChange, disabled, className, label, ...rest }, ref) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isControlled = controlledChecked !== undefined\n const checked = isControlled ? controlledChecked : internalChecked\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const setRefs = useCallback(\n (node: HTMLButtonElement | null) => {\n buttonRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref]\n )\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return\n const newChecked = !checked\n if (!isControlled) {\n setInternalChecked(newChecked)\n }\n onCheckedChange?.(newChecked)\n rest.onClick?.(e)\n }\n\n return (\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n data-state={checked ? 'checked' : 'unchecked'}\n disabled={disabled}\n ref={setRefs}\n onClick={handleClick}\n className={cx(\n 'relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent',\n 'transition-colors duration-200 ease-in-out',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n checked ? 'bg-gold' : 'bg-charcoal',\n className\n )}\n {...rest}\n >\n <span\n className={cx(\n 'pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0',\n 'transition duration-200 ease-in-out',\n checked ? 'translate-x-5' : 'translate-x-0'\n )}\n />\n </button>\n {label && (\n <span\n className=\"text-sm text-silver cursor-pointer\"\n onClick={() => {\n if (disabled) return\n buttonRef.current?.click()\n }}\n >\n {label}\n </span>\n )}\n </div>\n )\n }\n)\n\nSwitch.displayName = 'Switch'\n\nexport default Switch\n","import React from 'react'\nimport { Info, CheckCircle, AlertTriangle, XCircle } from 'lucide-react'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: AlertVariant\n title?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst icons = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: XCircle,\n}\n\nconst variantStyles = {\n info: 'bg-info/10 border-info text-info',\n success: 'bg-success/10 border-success text-success',\n warning: 'bg-warning/10 border-warning text-warning',\n error: 'bg-error/10 border-error text-error',\n}\n\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ variant = 'info', title, children, className, ...rest }, ref) => {\n const Icon = icons[variant]\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cx(\n 'relative w-full p-4 rounded-none border border-l-4 flex gap-3',\n variantStyles[variant],\n className\n )}\n {...rest}\n >\n <Icon className=\"h-5 w-5 shrink-0\" />\n <div className=\"flex-1\">\n {title && <h5 className=\"mb-1 font-medium leading-none tracking-tight text-current\">{title}</h5>}\n <div className=\"text-sm opacity-90\">{children}</div>\n </div>\n </div>\n )\n }\n)\n\nAlert.displayName = 'Alert'\n\nexport default Alert\n","import React from 'react'\n\nexport interface SpinnerProps extends React.SVGAttributes<SVGElement> {\n size?: 'sm' | 'md' | 'lg'\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Spinner = ({ className, size = 'md', ...rest }: SpinnerProps) => {\n const sizeClass =\n size === 'sm' ? 'h-4 w-4' : size === 'lg' ? 'h-8 w-8' : 'h-6 w-6'\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cx('animate-spin text-gold', sizeClass, className)}\n {...rest}\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n )\n}\n\nSpinner.displayName = 'Spinner'\n\nexport default Spinner\n","import React from 'react'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cx('animate-pulse bg-ash rounded-sm', className)}\n {...rest}\n />\n )\n }\n)\n\nSkeleton.displayName = 'Skeleton'\n\nexport default Skeleton\n","import React, { useEffect, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { X } from 'lucide-react'\n\nexport interface ModalProps {\n isOpen: boolean\n onClose: () => void\n title?: string\n children: React.ReactNode\n className?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Modal = ({ isOpen, onClose, title, children, className }: ModalProps) => {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n useEffect(() => {\n if (isOpen) {\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n document.body.style.overflow = 'hidden'\n document.body.style.paddingRight = `${scrollbarWidth}px`\n } else {\n document.body.style.overflow = 'unset'\n document.body.style.paddingRight = '0px'\n }\n return () => {\n document.body.style.overflow = 'unset'\n document.body.style.paddingRight = '0px'\n }\n }, [isOpen])\n\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n window.addEventListener('keydown', handleEsc)\n return () => window.removeEventListener('keydown', handleEsc)\n }, [onClose])\n\n if (!mounted) return null\n\n // Don't render anything if closed, unless we want exit animations. \n // My CSS relies on data-state, but if I unmount immediately, exit animation won't play.\n // To support exit animations, I'd need a transition manager (like framer-motion or headlessui).\n // For this simple implementation, I'll render conditionally. \n // If I want animation, I need to keep it mounted until animation ends.\n // Given the prompt \"add all suggestions\" and \"premium\", a simple unmount is acceptable for v1 without heavy deps.\n // However, the CSS I wrote has `data-state=closed`. \n // Without a transition library, handling exit animation is tricky. \n // I'll just conditional render for now. The entry animation `animate-fade-in` will play.\n \n if (!isOpen) return null;\n\n const content = (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6\" onClick={onClose}>\n <div className=\"fixed inset-0 z-40 bg-obsidian/80 backdrop-blur-sm\" aria-hidden=\"true\" />\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={cx(\n 'bg-charcoal border border-gold/30 shadow-2xl z-50 w-full max-w-lg p-6 rounded-none relative',\n className\n )}\n data-state=\"open\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex items-center justify-between mb-2\">\n {title ? <h3 className=\"text-xl font-semibold text-white m-0\">{title}</h3> : <div />}\n <button onClick={onClose} className=\"text-silver hover:text-white transition-colors ml-auto\">\n <X className=\"h-5 w-5\" />\n <span className=\"sr-only\">Close</span>\n </button>\n </div>\n <div>{children}</div>\n </div>\n </div>\n )\n\n return createPortal(content, document.body)\n}\n\nModal.displayName = 'Modal'\n\nexport default Modal\n","/**\n * Aurelius Design System\n *\n * A cohesive visual language for creative technologists.\n * Combines technical sophistication with artistic sensibility.\n */\n\n// Export Tailwind preset\nexport { default as tailwindPreset } from './tailwind.preset'\n\n// Export design tokens\nexport * from './tokens'\n\n// Re-export individual token modules for convenience\nexport { colors, type ColorToken } from './tokens/colors'\nexport { typography, type TypographyToken } from './tokens/typography'\nexport { spacing, type SpacingToken } from './tokens/spacing'\n\n// React components\nexport * from './components'\n\n// Version\nexport const version = '1.0.0'\n"],"mappings":"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","names":["React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","cx","React","useCallback","cx","React","useCallback","cx","React","cx","React","cx","React","cx","React","useState","cx"]}