@enya-learning/nova 0.4.3 → 0.5.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.
Files changed (132) hide show
  1. package/README.md +7 -16
  2. package/dist/chunks/dist-fahbq1psobj0ox6s.js +1327 -0
  3. package/dist/chunks/dist-fahbq1psobj0ox6s.js.map +1 -0
  4. package/dist/chunks/dist-o8x0ip0z71xkr2oh.js +37 -0
  5. package/dist/chunks/dist-o8x0ip0z71xkr2oh.js.map +1 -0
  6. package/dist/components/accordion.js +59 -0
  7. package/dist/components/accordion.js.map +1 -0
  8. package/dist/components/alert-dialog.js +108 -0
  9. package/dist/components/alert-dialog.js.map +1 -0
  10. package/dist/components/alert.js +49 -0
  11. package/dist/components/alert.js.map +1 -0
  12. package/dist/components/aspect-ratio.js +16 -0
  13. package/dist/components/aspect-ratio.js.map +1 -0
  14. package/dist/components/avatar.js +58 -0
  15. package/dist/components/avatar.js.map +1 -0
  16. package/dist/components/badge.js +33 -0
  17. package/dist/components/badge.js.map +1 -0
  18. package/dist/components/breadcrumb.js +81 -0
  19. package/dist/components/breadcrumb.js.map +1 -0
  20. package/dist/components/button-group.js +47 -0
  21. package/dist/components/button-group.js.map +1 -0
  22. package/dist/components/button.js +48 -3
  23. package/dist/components/button.js.map +1 -0
  24. package/dist/components/calendar.js +3000 -0
  25. package/dist/components/calendar.js.map +1 -0
  26. package/dist/components/card.js +65 -0
  27. package/dist/components/card.js.map +1 -0
  28. package/dist/components/carousel.js +1191 -0
  29. package/dist/components/carousel.js.map +1 -0
  30. package/dist/components/chart.js +10596 -0
  31. package/dist/components/chart.js.map +1 -0
  32. package/dist/components/checkbox.js +22 -0
  33. package/dist/components/checkbox.js.map +1 -0
  34. package/dist/components/collapsible.js +28 -0
  35. package/dist/components/collapsible.js.map +1 -0
  36. package/dist/components/combobox.js +179 -0
  37. package/dist/components/combobox.js.map +1 -0
  38. package/dist/components/command.js +656 -0
  39. package/dist/components/command.js.map +1 -0
  40. package/dist/components/context-menu.js +149 -0
  41. package/dist/components/context-menu.js.map +1 -0
  42. package/dist/components/dialog.js +103 -0
  43. package/dist/components/dialog.js.map +1 -0
  44. package/dist/components/direction.js +6 -0
  45. package/dist/components/drawer.js +1042 -0
  46. package/dist/components/drawer.js.map +1 -0
  47. package/dist/components/dropdown-menu.js +153 -0
  48. package/dist/components/dropdown-menu.js.map +1 -0
  49. package/dist/components/empty.js +67 -0
  50. package/dist/components/empty.js.map +1 -0
  51. package/dist/components/enya-logo.js +42 -42
  52. package/dist/components/enya-logo.js.map +1 -1
  53. package/dist/components/field.js +119 -0
  54. package/dist/components/field.js.map +1 -0
  55. package/dist/components/hover-card.js +40 -0
  56. package/dist/components/hover-card.js.map +1 -0
  57. package/dist/components/input-group.js +85 -0
  58. package/dist/components/input-group.js.map +1 -0
  59. package/dist/components/input-otp.js +416 -0
  60. package/dist/components/input-otp.js.map +1 -0
  61. package/dist/components/input.js +18 -0
  62. package/dist/components/input.js.map +1 -0
  63. package/dist/components/item.js +133 -0
  64. package/dist/components/item.js.map +1 -0
  65. package/dist/components/kbd.js +23 -0
  66. package/dist/components/kbd.js.map +1 -0
  67. package/dist/components/label.js +16 -0
  68. package/dist/components/label.js.map +1 -0
  69. package/dist/components/menubar.js +153 -0
  70. package/dist/components/menubar.js.map +1 -0
  71. package/dist/components/native-select.js +43 -0
  72. package/dist/components/native-select.js.map +1 -0
  73. package/dist/components/navigation-menu.js +93 -0
  74. package/dist/components/navigation-menu.js.map +1 -0
  75. package/dist/components/pagination.js +95 -0
  76. package/dist/components/pagination.js.map +1 -0
  77. package/dist/components/popover.js +62 -0
  78. package/dist/components/popover.js.map +1 -0
  79. package/dist/components/progress.js +50 -0
  80. package/dist/components/progress.js.map +1 -0
  81. package/dist/components/radio-group.js +30 -0
  82. package/dist/components/radio-group.js.map +1 -0
  83. package/dist/components/resizable.js +1562 -0
  84. package/dist/components/resizable.js.map +1 -0
  85. package/dist/components/scroll-area.js +40 -0
  86. package/dist/components/scroll-area.js.map +1 -0
  87. package/dist/components/select.js +109 -0
  88. package/dist/components/select.js.map +1 -0
  89. package/dist/components/separator.js +17 -0
  90. package/dist/components/separator.js.map +1 -0
  91. package/dist/components/sheet.js +98 -0
  92. package/dist/components/sheet.js.map +1 -0
  93. package/dist/components/sidebar.js +395 -0
  94. package/dist/components/sidebar.js.map +1 -0
  95. package/dist/components/skeleton.js +15 -0
  96. package/dist/components/skeleton.js.map +1 -0
  97. package/dist/components/slider.js +36 -0
  98. package/dist/components/slider.js.map +1 -0
  99. package/dist/components/sonner.js +722 -0
  100. package/dist/components/sonner.js.map +1 -0
  101. package/dist/components/spinner.js +17 -0
  102. package/dist/components/spinner.js.map +1 -0
  103. package/dist/components/switch.js +21 -0
  104. package/dist/components/switch.js.map +1 -0
  105. package/dist/components/table.js +76 -0
  106. package/dist/components/table.js.map +1 -0
  107. package/dist/components/tabs.js +51 -0
  108. package/dist/components/tabs.js.map +1 -0
  109. package/dist/components/textarea.js +16 -0
  110. package/dist/components/textarea.js.map +1 -0
  111. package/dist/components/toggle-group.js +55 -0
  112. package/dist/components/toggle-group.js.map +1 -0
  113. package/dist/components/toggle.js +39 -0
  114. package/dist/components/toggle.js.map +1 -0
  115. package/dist/components/tooltip.js +46 -0
  116. package/dist/components/tooltip.js.map +1 -0
  117. package/dist/index.js +17 -23241
  118. package/dist/src/components/badge/badge.d.ts +1 -1
  119. package/dist/src/components/button/button.d.ts +1 -1
  120. package/dist/src/components/item/item.d.ts +1 -1
  121. package/dist/src/components/tabs/tabs.d.ts +1 -1
  122. package/dist/src/index.d.ts +1 -53
  123. package/dist/styles/nova-binding.css +102 -0
  124. package/dist/styles/nova.css +106 -48
  125. package/dist/styles/theme-nova.css +77 -81
  126. package/dist/styles/typography.css +34 -22
  127. package/package.json +17 -9
  128. package/src/eslint/no-primitive-colors.test.ts +97 -0
  129. package/dist/chunks/button-kvgr8g13fe959ju0.js +0 -81
  130. package/dist/chunks/button-kvgr8g13fe959ju0.js.map +0 -1
  131. package/dist/index.js.map +0 -1
  132. package/dist/styles/globals.css +0 -77
@@ -0,0 +1,108 @@
1
+ "use client";
2
+ import { t as o } from "../chunks/utils-kyb5nny4y41y7hd8.js";
3
+ import { Button as i } from "./button.js";
4
+ import { jsx as e, jsxs as n } from "react/jsx-runtime";
5
+ import "react";
6
+ import { AlertDialog as l } from "@base-ui/react/alert-dialog";
7
+ function x({ ...t }) {
8
+ return /* @__PURE__ */ e(l.Root, {
9
+ "data-slot": "alert-dialog",
10
+ ...t
11
+ });
12
+ }
13
+ function z({ ...t }) {
14
+ return /* @__PURE__ */ e(l.Trigger, {
15
+ "data-slot": "alert-dialog-trigger",
16
+ ...t
17
+ });
18
+ }
19
+ function s({ ...t }) {
20
+ return /* @__PURE__ */ e(l.Portal, {
21
+ "data-slot": "alert-dialog-portal",
22
+ ...t
23
+ });
24
+ }
25
+ function g({ className: t, ...a }) {
26
+ return /* @__PURE__ */ e(l.Backdrop, {
27
+ "data-slot": "alert-dialog-overlay",
28
+ className: o("fixed inset-0 isolate z-50 bg-nova-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", t),
29
+ ...a
30
+ });
31
+ }
32
+ function D({ className: t, size: a = "default", ...r }) {
33
+ return /* @__PURE__ */ n(s, { children: [/* @__PURE__ */ e(g, {}), /* @__PURE__ */ e(l.Popup, {
34
+ "data-slot": "alert-dialog-content",
35
+ "data-size": a,
36
+ className: o("group/alert-dialog-content fixed start-1/2 top-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md rtl:translate-x-1/2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", t),
37
+ ...r
38
+ })] });
39
+ }
40
+ function A({ className: t, ...a }) {
41
+ return /* @__PURE__ */ e("div", {
42
+ "data-slot": "alert-dialog-header",
43
+ className: o("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", t),
44
+ ...a
45
+ });
46
+ }
47
+ function v({ className: t, ...a }) {
48
+ return /* @__PURE__ */ e("div", {
49
+ "data-slot": "alert-dialog-footer",
50
+ className: o("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", t),
51
+ ...a
52
+ });
53
+ }
54
+ function b({ className: t, ...a }) {
55
+ return /* @__PURE__ */ e("div", {
56
+ "data-slot": "alert-dialog-media",
57
+ className: o("mb-2 inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8", t),
58
+ ...a
59
+ });
60
+ }
61
+ function w({ className: t, ...a }) {
62
+ return /* @__PURE__ */ e(l.Title, {
63
+ "data-slot": "alert-dialog-title",
64
+ className: o("font-heading text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", t),
65
+ ...a
66
+ });
67
+ }
68
+ function N({ className: t, ...a }) {
69
+ return /* @__PURE__ */ e(l.Description, {
70
+ "data-slot": "alert-dialog-description",
71
+ className: o("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", t),
72
+ ...a
73
+ });
74
+ }
75
+ function h({ className: t, ...a }) {
76
+ return /* @__PURE__ */ e(i, {
77
+ "data-slot": "alert-dialog-action",
78
+ className: o(t),
79
+ ...a
80
+ });
81
+ }
82
+ function y({ className: t, variant: a = "outline", size: r = "default", ...d }) {
83
+ return /* @__PURE__ */ e(l.Close, {
84
+ "data-slot": "alert-dialog-cancel",
85
+ className: o(t),
86
+ render: /* @__PURE__ */ e(i, {
87
+ variant: a,
88
+ size: r
89
+ }),
90
+ ...d
91
+ });
92
+ }
93
+ export {
94
+ x as AlertDialog,
95
+ h as AlertDialogAction,
96
+ y as AlertDialogCancel,
97
+ D as AlertDialogContent,
98
+ N as AlertDialogDescription,
99
+ v as AlertDialogFooter,
100
+ A as AlertDialogHeader,
101
+ b as AlertDialogMedia,
102
+ g as AlertDialogOverlay,
103
+ s as AlertDialogPortal,
104
+ w as AlertDialogTitle,
105
+ z as AlertDialogTrigger
106
+ };
107
+
108
+ //# sourceMappingURL=alert-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.js","names":[],"sources":["../../src/components/alert-dialog/alert-dialog.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"../button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-nova-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"group/alert-dialog-content fixed start-1/2 top-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md rtl:translate-x-1/2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"font-heading text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\n \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n return (\n <Button\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n"],"mappings":";;;;;;AAQA,SAAS,EAAY,EAAE,GAAG,EAAA,GAA0C;AAClE,SAAO,gBAAA,EAAC,EAAqB,MAAtB;AAAA,IAA2B,aAAU;AAAA,IAAe,GAAI;AAAA,EAAQ,CAAA;AACzE;AAEA,SAAS,EAAmB,EAAE,GAAG,EAAA,GAA6C;AAC5E,SACE,gBAAA,EAAC,EAAqB,SAAtB;AAAA,IAA8B,aAAU;AAAA,IAAuB,GAAI;AAAA,EAAQ,CAAA;AAE/E;AAEA,SAAS,EAAkB,EAAE,GAAG,EAAA,GAA4C;AAC1E,SACE,gBAAA,EAAC,EAAqB,QAAtB;AAAA,IAA6B,aAAU;AAAA,IAAsB,GAAI;AAAA,EAAQ,CAAA;AAE7E;AAEA,SAAS,EAAmB,EAC1B,WAAA,GACA,GAAG,EAAA,GACmC;AACtC,SACE,gBAAA,EAAC,EAAqB,UAAtB;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,8LACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAmB,EAC1B,WAAA,GACA,MAAA,IAAO,WACP,GAAG,EAAA,GAGF;AACD,SACE,gBAAA,EAAC,GAAD,EAAA,UAAA,CACE,gBAAA,EAAC,GAAD,CAAqB,CAAA,GACrB,gBAAA,EAAC,EAAqB,OAAtB;AAAA,IACE,aAAU;AAAA,IACV,aAAW;AAAA,IACX,WAAW,EACT,mcACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA,CACgB,EAAA,CAAA;AAEvB;AAEA,SAAS,EAAkB,EACzB,WAAA,GACA,GAAG,EAAA,GAC2B;AAC9B,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,uZACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAkB,EACzB,WAAA,GACA,GAAG,EAAA,GAC2B;AAC9B,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,+JACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EACxB,WAAA,GACA,GAAG,EAAA,GAC2B;AAC9B,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,gLACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EACxB,WAAA,GACA,GAAG,EAAA,GACuD;AAC1D,SACE,gBAAA,EAAC,EAAqB,OAAtB;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,gKACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAuB,EAC9B,WAAA,GACA,GAAG,EAAA,GAC6D;AAChE,SACE,gBAAA,EAAC,EAAqB,aAAtB;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,kIACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAkB,EACzB,WAAA,GACA,GAAG,EAAA,GACmC;AACtC,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EAAG,CAAS;AAAA,IACvB,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAkB,EACzB,WAAA,GACA,SAAA,IAAU,WACV,MAAA,IAAO,WACP,GAAG,EAAA,GAE4D;AAC/D,SACE,gBAAA,EAAC,EAAqB,OAAtB;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EAAG,CAAS;AAAA,IACvB,QAAQ,gBAAA,EAAC,GAAD;AAAA,MAAiB,SAAA;AAAA,MAAe,MAAA;AAAA,IAAO,CAAA;AAAA,IAC/C,GAAI;AAAA,EACL,CAAA;AAEL"}
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import { t as o } from "../chunks/dist-o8x0ip0z71xkr2oh.js";
3
+ import { t as a } from "../chunks/utils-kyb5nny4y41y7hd8.js";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ import "react";
6
+ var l = o("group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-start text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pe-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
7
+ variants: { variant: {
8
+ default: "bg-card text-card-foreground",
9
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
10
+ } },
11
+ defaultVariants: { variant: "default" }
12
+ });
13
+ function c({ className: t, variant: e, ...s }) {
14
+ return /* @__PURE__ */ r("div", {
15
+ "data-slot": "alert",
16
+ role: "alert",
17
+ className: a(l({ variant: e }), t),
18
+ ...s
19
+ });
20
+ }
21
+ function v({ className: t, ...e }) {
22
+ return /* @__PURE__ */ r("div", {
23
+ "data-slot": "alert-title",
24
+ className: a("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", t),
25
+ ...e
26
+ });
27
+ }
28
+ function f({ className: t, ...e }) {
29
+ return /* @__PURE__ */ r("div", {
30
+ "data-slot": "alert-description",
31
+ className: a("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", t),
32
+ ...e
33
+ });
34
+ }
35
+ function g({ className: t, ...e }) {
36
+ return /* @__PURE__ */ r("div", {
37
+ "data-slot": "alert-action",
38
+ className: a("absolute end-3 top-2.5", t),
39
+ ...e
40
+ });
41
+ }
42
+ export {
43
+ c as Alert,
44
+ g as AlertAction,
45
+ f as AlertDescription,
46
+ v as AlertTitle
47
+ };
48
+
49
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","names":[],"sources":["../../src/components/alert/alert.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-start text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pe-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\"absolute end-3 top-2.5\", className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"],"mappings":";;;;;AAKA,IAAM,IAAgB,EACpB,8TACA;AAAA,EACE,UAAU,EACR,SAAS;AAAA,IACP,SAAS;AAAA,IACT,aACE;AAAA,EACJ,EACF;AAAA,EACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,SAAS,EAAM,EACb,WAAA,GACA,SAAA,GACA,GAAG,EAAA,GACgE;AACnE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,MAAK;AAAA,IACL,WAAW,EAAG,EAAc,EAAE,SAAA,EAAQ,CAAC,GAAG,CAAS;AAAA,IACnD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAW,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AACxE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,uHACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EACxB,WAAA,GACA,GAAG,EAAA,GAC2B;AAC9B,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,8JACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AACzE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EAAG,0BAA0B,CAAS;AAAA,IACjD,GAAI;AAAA,EACL,CAAA;AAEL"}
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { t as o } from "../chunks/utils-kyb5nny4y41y7hd8.js";
3
+ import { jsx as r } from "react/jsx-runtime";
4
+ function c({ ratio: t, className: a, ...e }) {
5
+ return /* @__PURE__ */ r("div", {
6
+ "data-slot": "aspect-ratio",
7
+ style: { "--ratio": t },
8
+ className: o("relative aspect-(--ratio)", a),
9
+ ...e
10
+ });
11
+ }
12
+ export {
13
+ c as AspectRatio
14
+ };
15
+
16
+ //# sourceMappingURL=aspect-ratio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspect-ratio.js","names":[],"sources":["../../src/components/aspect-ratio/aspect-ratio.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\"\n\nfunction AspectRatio({\n ratio,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & { ratio: number }) {\n return (\n <div\n data-slot=\"aspect-ratio\"\n style={\n {\n \"--ratio\": ratio,\n } as React.CSSProperties\n }\n className={cn(\"relative aspect-(--ratio)\", className)}\n {...props}\n />\n )\n}\n\nexport { AspectRatio }\n"],"mappings":";;;AAEA,SAAS,EAAY,EACnB,OAAA,GACA,WAAA,GACA,GAAG,EAAA,GAC+C;AAClD,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,OACE,EACE,WAAW,EACb;AAAA,IAEF,WAAW,EAAG,6BAA6B,CAAS;AAAA,IACpD,GAAI;AAAA,EACL,CAAA;AAEL"}
@@ -0,0 +1,58 @@
1
+ "use client";
2
+ import { t as e } from "../chunks/utils-kyb5nny4y41y7hd8.js";
3
+ import { jsx as r } from "react/jsx-runtime";
4
+ import "react";
5
+ import { Avatar as s } from "@base-ui/react/avatar";
6
+ function l({ className: a, size: t = "default", ...o }) {
7
+ return /* @__PURE__ */ r(s.Root, {
8
+ "data-slot": "avatar",
9
+ "data-size": t,
10
+ className: e("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", a),
11
+ ...o
12
+ });
13
+ }
14
+ function g({ className: a, ...t }) {
15
+ return /* @__PURE__ */ r(s.Image, {
16
+ "data-slot": "avatar-image",
17
+ className: e("aspect-square size-full rounded-full object-cover", a),
18
+ ...t
19
+ });
20
+ }
21
+ function v({ className: a, ...t }) {
22
+ return /* @__PURE__ */ r(s.Fallback, {
23
+ "data-slot": "avatar-fallback",
24
+ className: e("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs", a),
25
+ ...t
26
+ });
27
+ }
28
+ function f({ className: a, ...t }) {
29
+ return /* @__PURE__ */ r("span", {
30
+ "data-slot": "avatar-badge",
31
+ className: e("absolute end-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", a),
32
+ ...t
33
+ });
34
+ }
35
+ function m({ className: a, ...t }) {
36
+ return /* @__PURE__ */ r("div", {
37
+ "data-slot": "avatar-group",
38
+ className: e("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", a),
39
+ ...t
40
+ });
41
+ }
42
+ function c({ className: a, ...t }) {
43
+ return /* @__PURE__ */ r("div", {
44
+ "data-slot": "avatar-group-count",
45
+ className: e("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", a),
46
+ ...t
47
+ });
48
+ }
49
+ export {
50
+ l as Avatar,
51
+ f as AvatarBadge,
52
+ v as AvatarFallback,
53
+ m as AvatarGroup,
54
+ c as AvatarGroupCount,
55
+ g as AvatarImage
56
+ };
57
+
58
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","names":[],"sources":["../../src/components/avatar/avatar.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\n \"aspect-square size-full rounded-full object-cover\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute end-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n"],"mappings":";;;;;AAKA,SAAS,EAAO,EACd,WAAA,GACA,MAAA,IAAO,WACP,GAAG,EAAA,GAGF;AACD,SACE,gBAAA,EAAC,EAAgB,MAAjB;AAAA,IACE,aAAU;AAAA,IACV,aAAW;AAAA,IACX,WAAW,EACT,yPACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AACzE,SACE,gBAAA,EAAC,EAAgB,OAAjB;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,qDACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAe,EACtB,WAAA,GACA,GAAG,EAAA,GAC8B;AACjC,SACE,gBAAA,EAAC,EAAgB,UAAjB;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,sIACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,WAAA,GAAW,GAAG,EAAA,GAAuC;AAC1E,SACE,gBAAA,EAAC,QAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,0KACA,iFACA,6FACA,iFACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AACzE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,uGACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EACxB,WAAA,GACA,GAAG,EAAA,GAC2B;AAC9B,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,4VACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL"}
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ import { t as a } from "../chunks/dist-o8x0ip0z71xkr2oh.js";
3
+ import { t as n } from "../chunks/utils-kyb5nny4y41y7hd8.js";
4
+ import { mergeProps as o } from "@base-ui/react/merge-props";
5
+ import { useRender as d } from "@base-ui/react/use-render";
6
+ var s = a("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", {
7
+ variants: { variant: {
8
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
9
+ secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
10
+ destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
11
+ outline: "border-border bg-input/30 text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
12
+ ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
13
+ link: "text-primary underline-offset-4 hover:underline"
14
+ } },
15
+ defaultVariants: { variant: "default" }
16
+ });
17
+ function l({ className: r, variant: e = "default", render: t, ...i }) {
18
+ return d({
19
+ defaultTagName: "span",
20
+ props: o({ className: n(s({ variant: e }), r) }, i),
21
+ render: t,
22
+ state: {
23
+ slot: "badge",
24
+ variant: e
25
+ }
26
+ });
27
+ }
28
+ export {
29
+ l as Badge,
30
+ s as badgeVariants
31
+ };
32
+
33
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","names":[],"sources":["../../src/components/badge/badge.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border bg-input/30 text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n"],"mappings":";;;;;AAMA,IAAM,IAAgB,EACpB,8eACA;AAAA,EACE,UAAU,EACR,SAAS;AAAA,IACP,SAAS;AAAA,IACT,WACE;AAAA,IACF,aACE;AAAA,IACF,SACE;AAAA,IACF,OACE;AAAA,IACF,MAAM;AAAA,EACR,EACF;AAAA,EACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,SAAS,EAAM,EACb,WAAA,GACA,SAAA,IAAU,WACV,QAAA,GACA,GAAG,EAAA,GACqE;AACxE,SAAO,EAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO,EACL,EACE,WAAW,EAAG,EAAc,EAAE,SAAA,EAAQ,CAAC,GAAG,CAAS,EACrD,GACA,CACF;AAAA,IACA,QAAA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAA;AAAA,IACF;AAAA,EACF,CAAC;AACH"}
@@ -0,0 +1,81 @@
1
+ "use client";
2
+ import { t } from "../chunks/utils-kyb5nny4y41y7hd8.js";
3
+ import { jsx as a, jsxs as n } from "react/jsx-runtime";
4
+ import { mergeProps as o } from "@base-ui/react/merge-props";
5
+ import { useRender as i } from "@base-ui/react/use-render";
6
+ import { ChevronRightIcon as l, MoreHorizontalIcon as m } from "lucide-react";
7
+ import "react";
8
+ function g({ className: r, ...e }) {
9
+ return /* @__PURE__ */ a("nav", {
10
+ "aria-label": "breadcrumb",
11
+ "data-slot": "breadcrumb",
12
+ className: t(r),
13
+ ...e
14
+ });
15
+ }
16
+ function x({ className: r, ...e }) {
17
+ return /* @__PURE__ */ a("ol", {
18
+ "data-slot": "breadcrumb-list",
19
+ className: t("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5", r),
20
+ ...e
21
+ });
22
+ }
23
+ function N({ className: r, ...e }) {
24
+ return /* @__PURE__ */ a("li", {
25
+ "data-slot": "breadcrumb-item",
26
+ className: t("inline-flex items-center gap-1.5", r),
27
+ ...e
28
+ });
29
+ }
30
+ function h({ className: r, render: e, ...s }) {
31
+ return i({
32
+ defaultTagName: "a",
33
+ props: o({ className: t("transition-colors hover:text-foreground", r) }, s),
34
+ render: e,
35
+ state: { slot: "breadcrumb-link" }
36
+ });
37
+ }
38
+ function B({ className: r, ...e }) {
39
+ return /* @__PURE__ */ a("span", {
40
+ "data-slot": "breadcrumb-page",
41
+ role: "link",
42
+ "aria-disabled": "true",
43
+ "aria-current": "page",
44
+ className: t("font-normal text-foreground", r),
45
+ ...e
46
+ });
47
+ }
48
+ function v({ children: r, className: e, ...s }) {
49
+ return /* @__PURE__ */ a("li", {
50
+ "data-slot": "breadcrumb-separator",
51
+ role: "presentation",
52
+ "aria-hidden": "true",
53
+ className: t("[&>svg]:size-3.5", e),
54
+ ...s,
55
+ children: r ?? /* @__PURE__ */ a(l, { className: "rtl:rotate-180" })
56
+ });
57
+ }
58
+ function k({ className: r, ...e }) {
59
+ return /* @__PURE__ */ n("span", {
60
+ "data-slot": "breadcrumb-ellipsis",
61
+ role: "presentation",
62
+ "aria-hidden": "true",
63
+ className: t("flex size-5 items-center justify-center [&>svg]:size-4", r),
64
+ ...e,
65
+ children: [/* @__PURE__ */ a(m, {}), /* @__PURE__ */ a("span", {
66
+ className: "sr-only",
67
+ children: "More"
68
+ })]
69
+ });
70
+ }
71
+ export {
72
+ g as Breadcrumb,
73
+ k as BreadcrumbEllipsis,
74
+ N as BreadcrumbItem,
75
+ h as BreadcrumbLink,
76
+ x as BreadcrumbList,
77
+ B as BreadcrumbPage,
78
+ v as BreadcrumbSeparator
79
+ };
80
+
81
+ //# sourceMappingURL=breadcrumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb.js","names":[],"sources":["../../src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"../../lib/utils\"\nimport { ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n aria-label=\"breadcrumb\"\n data-slot=\"breadcrumb\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"transition-colors hover:text-foreground\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRightIcon className=\"rtl:rotate-180\" />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"flex size-5 items-center justify-center [&>svg]:size-4\",\n className\n )}\n {...props}\n >\n <MoreHorizontalIcon />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n"],"mappings":";;;;;;;AAOA,SAAS,EAAW,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AACxE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,cAAW;AAAA,IACX,aAAU;AAAA,IACV,WAAW,EAAG,CAAS;AAAA,IACvB,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAe,EAAE,WAAA,GAAW,GAAG,EAAA,GAAqC;AAC3E,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,gGACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAe,EAAE,WAAA,GAAW,GAAG,EAAA,GAAqC;AAC3E,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EAAG,oCAAoC,CAAS;AAAA,IAC3D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAe,EACtB,WAAA,GACA,QAAA,GACA,GAAG,EAAA,GAC6B;AAChC,SAAO,EAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO,EACL,EACE,WAAW,EAAG,2CAA2C,CAAS,EACpE,GACA,CACF;AAAA,IACA,QAAA;AAAA,IACA,OAAO,EACL,MAAM,kBACR;AAAA,EACF,CAAC;AACH;AAEA,SAAS,EAAe,EAAE,WAAA,GAAW,GAAG,EAAA,GAAuC;AAC7E,SACE,gBAAA,EAAC,QAAD;AAAA,IACE,aAAU;AAAA,IACV,MAAK;AAAA,IACL,iBAAc;AAAA,IACd,gBAAa;AAAA,IACb,WAAW,EAAG,+BAA+B,CAAS;AAAA,IACtD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAoB,EAC3B,UAAA,GACA,WAAA,GACA,GAAG,EAAA,GAC0B;AAC7B,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,aAAU;AAAA,IACV,MAAK;AAAA,IACL,eAAY;AAAA,IACZ,WAAW,EAAG,oBAAoB,CAAS;AAAA,IAC3C,GAAI;AAAA,cAEH,KAAY,gBAAA,EAAC,GAAD,EAAkB,WAAU,iBAAkB,CAAA;AAAA,EACzD,CAAA;AAER;AAEA,SAAS,EAAmB,EAC1B,WAAA,GACA,GAAG,EAAA,GAC4B;AAC/B,SACE,gBAAA,EAAC,QAAD;AAAA,IACE,aAAU;AAAA,IACV,MAAK;AAAA,IACL,eAAY;AAAA,IACZ,WAAW,EACT,0DACA,CACF;AAAA,IACA,GAAI;AAAA,cARN,CAUE,gBAAA,EAAC,GAAD,CAAqB,CAAA,GACrB,gBAAA,EAAC,QAAD;AAAA,MAAM,WAAU;AAAA,gBAAU;AAAA,IAAU,CAAA,CAChC;AAAA;AAEV"}
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { t as s } from "../chunks/dist-o8x0ip0z71xkr2oh.js";
3
+ import { t as e } from "../chunks/utils-kyb5nny4y41y7hd8.js";
4
+ import { Separator as n } from "./separator.js";
5
+ import { jsx as r } from "react/jsx-runtime";
6
+ import { mergeProps as l } from "@base-ui/react/merge-props";
7
+ import { useRender as d } from "@base-ui/react/use-render";
8
+ var i = s("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-4xl [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
9
+ variants: { orientation: {
10
+ horizontal: "*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-4xl! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0",
11
+ vertical: "flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-4xl! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0"
12
+ } },
13
+ defaultVariants: { orientation: "horizontal" }
14
+ });
15
+ function x({ className: a, orientation: t, ...o }) {
16
+ return /* @__PURE__ */ r("div", {
17
+ role: "group",
18
+ "data-slot": "button-group",
19
+ "data-orientation": t,
20
+ className: e(i({ orientation: t }), a),
21
+ ...o
22
+ });
23
+ }
24
+ function v({ className: a, render: t, ...o }) {
25
+ return d({
26
+ defaultTagName: "div",
27
+ props: l({ className: e("flex items-center gap-2 rounded-4xl border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", a) }, o),
28
+ render: t,
29
+ state: { slot: "button-group-text" }
30
+ });
31
+ }
32
+ function b({ className: a, orientation: t = "vertical", ...o }) {
33
+ return /* @__PURE__ */ r(n, {
34
+ "data-slot": "button-group-separator",
35
+ orientation: t,
36
+ className: e("relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto", a),
37
+ ...o
38
+ });
39
+ }
40
+ export {
41
+ x as ButtonGroup,
42
+ b as ButtonGroupSeparator,
43
+ v as ButtonGroupText,
44
+ i as buttonGroupVariants
45
+ };
46
+
47
+ //# sourceMappingURL=button-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../../src/components/button-group/button-group.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Separator } from \"../separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-4xl [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-4xl! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0\",\n vertical:\n \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-4xl! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex items-center gap-2 rounded-4xl border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n })\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n"],"mappings":";;;;;;;AAOA,IAAM,IAAsB,EAC1B,6RACA;AAAA,EACE,UAAU,EACR,aAAa;AAAA,IACX,YACE;AAAA,IACF,UACE;AAAA,EACJ,EACF;AAAA,EACA,iBAAiB,EACf,aAAa,aACf;AACF,CACF;AAEA,SAAS,EAAY,EACnB,WAAA,GACA,aAAA,GACA,GAAG,EAAA,GACsE;AACzE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,MAAK;AAAA,IACL,aAAU;AAAA,IACV,oBAAkB;AAAA,IAClB,WAAW,EAAG,EAAoB,EAAE,aAAA,EAAY,CAAC,GAAG,CAAS;AAAA,IAC7D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAgB,EACvB,WAAA,GACA,QAAA,GACA,GAAG,EAAA,GAC+B;AAClC,SAAO,EAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO,EACL,EACE,WAAW,EACT,mJACA,CACF,EACF,GACA,CACF;AAAA,IACA,QAAA;AAAA,IACA,OAAO,EACL,MAAM,oBACR;AAAA,EACF,CAAC;AACH;AAEA,SAAS,EAAqB,EAC5B,WAAA,GACA,aAAA,IAAc,YACd,GAAG,EAAA,GACsC;AACzC,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,aAAU;AAAA,IACG,aAAA;AAAA,IACb,WAAW,EACT,wHACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL"}
@@ -1,6 +1,51 @@
1
1
  "use client";
2
- import { n, t as o } from "../chunks/button-kvgr8g13fe959ju0.js";
2
+ import { t as a } from "../chunks/dist-o8x0ip0z71xkr2oh.js";
3
+ import { t as n } from "../chunks/utils-kyb5nny4y41y7hd8.js";
4
+ import { Button as o } from "@base-ui/react/button";
5
+ import { jsx as s } from "react/jsx-runtime";
6
+ var d = a("group/button inline-flex shrink-0 items-center justify-center rounded-4xl border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all duration-150 outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:not-aria-[haspopup]:scale-[0.97] disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
7
+ variants: {
8
+ variant: {
9
+ default: "bg-nova-primary text-primary-foreground hover:bg-foreground/80",
10
+ accent: "bg-accent text-primary-foreground hover:bg-accent/80",
11
+ outline: "border-border bg-nova-white hover:bg-input/30 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground",
12
+ secondary: "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--color-secondary),var(--color-foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
13
+ ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
14
+ destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
15
+ link: "text-primary underline-offset-4 hover:underline"
16
+ },
17
+ size: {
18
+ default: "h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pe-2.5 has-data-[icon=inline-start]:ps-2.5",
19
+ xs: "h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2 [&_svg:not([class*='size-'])]:size-3",
20
+ sm: "h-8 gap-1 px-3 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2",
21
+ lg: "h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3",
22
+ xl: "h-15 gap-2 rounded-full px-5 text-2xl has-data-[icon=inline-end]:pe-4 has-data-[icon=inline-start]:ps-4",
23
+ icon: "size-9",
24
+ "icon-xs": "size-6 [&_svg:not([class*='size-'])]:size-3",
25
+ "icon-sm": "size-8",
26
+ "icon-lg": "size-10",
27
+ "icon-xl": "size-12"
28
+ }
29
+ },
30
+ defaultVariants: {
31
+ variant: "default",
32
+ size: "default"
33
+ }
34
+ });
35
+ function v({ className: e, variant: i = "default", size: r = "default", ...t }) {
36
+ return /* @__PURE__ */ s(o, {
37
+ "data-slot": "button",
38
+ className: n(d({
39
+ variant: i,
40
+ size: r,
41
+ className: e
42
+ })),
43
+ ...t
44
+ });
45
+ }
3
46
  export {
4
- o as Button,
5
- n as buttonVariants
47
+ v as Button,
48
+ d as buttonVariants
6
49
  };
50
+
51
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","names":[],"sources":["../../src/components/button/button.tsx"],"sourcesContent":["import { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-4xl border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all duration-150 outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:not-aria-[haspopup]:scale-[0.97] disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default:\n \"bg-nova-primary text-primary-foreground hover:bg-foreground/80\",\n accent: \"bg-accent text-primary-foreground hover:bg-accent/80\",\n outline:\n \"border-border bg-nova-white hover:bg-input/30 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--color-secondary),var(--color-foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pe-2.5 has-data-[icon=inline-start]:ps-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3\",\n xl: \"h-15 gap-2 rounded-full px-5 text-2xl has-data-[icon=inline-end]:pe-4 has-data-[icon=inline-start]:ps-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n \"icon-xl\": \"size-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;AAKA,IAAM,IAAiB,EACrB,knBACA;AAAA,EACE,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SACE;AAAA,MACF,QAAQ;AAAA,MACR,SACE;AAAA,MACF,WACE;AAAA,MACF,OACE;AAAA,MACF,aACE;AAAA,MACF,MAAM;AAAA,IACR;AAAA,IACA,MAAM;AAAA,MACJ,SACE;AAAA,MACF,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF,CACF;AAEA,SAAS,EAAO,EACd,WAAA,GACA,SAAA,IAAU,WACV,MAAA,IAAO,WACP,GAAG,EAAA,GAC2D;AAC9D,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EAAG,EAAe;AAAA,MAAE,SAAA;AAAA,MAAS,MAAA;AAAA,MAAM,WAAA;AAAA,IAAU,CAAC,CAAC;AAAA,IAC1D,GAAI;AAAA,EACL,CAAA;AAEL"}