@spawn-llc/design-system 1.1.0 → 1.2.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 (195) hide show
  1. package/DESIGN-SYSTEM.md +4 -0
  2. package/README.md +8 -6
  3. package/SPEC.md +3 -1
  4. package/dist/DESIGN-SYSTEM.md +4 -0
  5. package/dist/chunk-227VGN2D.js +617 -0
  6. package/dist/chunk-2UK4FHS3.js +31 -0
  7. package/dist/chunk-36NOAJFW.js +53 -0
  8. package/dist/chunk-3EZ5FFYG.js +154 -0
  9. package/dist/chunk-3PN2XMRA.js +80 -0
  10. package/dist/chunk-3SLZRFKQ.js +107 -0
  11. package/dist/chunk-4ABNKOPC.js +18 -0
  12. package/dist/chunk-4IKPZU4X.js +34 -0
  13. package/dist/chunk-5YRMB7KW.js +31 -0
  14. package/dist/chunk-66R4755B.js +37 -0
  15. package/dist/chunk-ATBQXQM7.js +165 -0
  16. package/dist/chunk-AUWFUYJI.js +79 -0
  17. package/dist/chunk-BTGJV2P6.js +237 -0
  18. package/dist/chunk-BYJWYU66.js +95 -0
  19. package/dist/chunk-D6UXXTC6.js +18 -0
  20. package/dist/chunk-DFVSGTAN.js +24 -0
  21. package/dist/chunk-DQ52UWO2.js +28 -0
  22. package/dist/chunk-DXXFNPYR.js +20 -0
  23. package/dist/chunk-GBPD3QPO.js +60 -0
  24. package/dist/chunk-GHSVAEXO.js +227 -0
  25. package/dist/chunk-GQIUVLXP.js +42 -0
  26. package/dist/chunk-HG4AEMA5.js +74 -0
  27. package/dist/chunk-HK6P54FZ.js +139 -0
  28. package/dist/chunk-HSP43BHH.js +97 -0
  29. package/dist/chunk-HYBBZTLY.js +1 -0
  30. package/dist/chunk-IS2ZVRUW.js +186 -0
  31. package/dist/chunk-JSULEEYQ.js +9 -0
  32. package/dist/chunk-K46NYJUT.js +15 -0
  33. package/dist/chunk-L5SMHZJL.js +162 -0
  34. package/dist/chunk-LPPLLYOR.js +185 -0
  35. package/dist/chunk-LYDG55X2.js +194 -0
  36. package/dist/chunk-MLC45YHE.js +122 -0
  37. package/dist/chunk-MZEY2L46.js +186 -0
  38. package/dist/chunk-N34HFTEJ.js +22 -0
  39. package/dist/chunk-PPW4C342.js +232 -0
  40. package/dist/chunk-PZCXY6QZ.js +208 -0
  41. package/dist/chunk-Q3HD7YQZ.js +261 -0
  42. package/dist/chunk-QF7LZKLC.js +98 -0
  43. package/dist/chunk-QNUAUOJW.js +15 -0
  44. package/dist/chunk-QZSQXEOU.js +28 -0
  45. package/dist/chunk-RBTFEYGV.js +77 -0
  46. package/dist/chunk-SJMEO63M.js +116 -0
  47. package/dist/chunk-T6DWCVR3.js +73 -0
  48. package/dist/chunk-T7GS4AXQ.js +245 -0
  49. package/dist/chunk-TP35WWVP.js +46 -0
  50. package/dist/chunk-TQ6CJZMT.js +42 -0
  51. package/dist/chunk-U7N2A7A3.js +9 -0
  52. package/dist/chunk-V3NRC7QE.js +142 -0
  53. package/dist/chunk-VOHNOSMH.js +22 -0
  54. package/dist/chunk-W3PHWPYP.js +43 -0
  55. package/dist/chunk-WJ6DNG2Z.js +75 -0
  56. package/dist/chunk-WMXCMDSQ.js +126 -0
  57. package/dist/chunk-WSNSTJAR.js +58 -0
  58. package/dist/chunk-XG3HHC3U.js +79 -0
  59. package/dist/chunk-XOLQ37I2.js +118 -0
  60. package/dist/chunk-YFPY5SLS.js +19 -0
  61. package/dist/chunk-YFVERFQA.js +76 -0
  62. package/dist/chunk-YL4VCJKF.js +75 -0
  63. package/dist/chunk-ZMHTPZVQ.js +61 -0
  64. package/dist/chunk-ZO74KVH3.js +38 -0
  65. package/dist/components/ui/accordion.d.ts +9 -0
  66. package/dist/components/ui/accordion.js +3 -0
  67. package/dist/components/ui/alert-dialog.d.ts +24 -0
  68. package/dist/components/ui/alert-dialog.js +5 -0
  69. package/dist/components/ui/alert.d.ts +13 -0
  70. package/dist/components/ui/alert.js +3 -0
  71. package/dist/components/ui/aspect-ratio.d.ts +7 -0
  72. package/dist/components/ui/aspect-ratio.js +3 -0
  73. package/dist/components/ui/avatar.d.ts +13 -0
  74. package/dist/components/ui/avatar.js +3 -0
  75. package/dist/components/ui/badge.d.ts +11 -0
  76. package/dist/components/ui/badge.js +3 -0
  77. package/dist/components/ui/breadcrumb.d.ts +12 -0
  78. package/dist/components/ui/breadcrumb.js +3 -0
  79. package/dist/components/ui/button-group.d.ts +15 -0
  80. package/dist/components/ui/button-group.js +4 -0
  81. package/dist/components/ui/button.d.ts +9 -0
  82. package/dist/components/ui/button.js +4 -0
  83. package/dist/components/ui/calendar.d.ts +16 -0
  84. package/dist/components/ui/calendar.js +5 -0
  85. package/dist/components/ui/card.d.ts +13 -0
  86. package/dist/components/ui/card.js +3 -0
  87. package/dist/components/ui/carousel.d.ts +34 -0
  88. package/dist/components/ui/carousel.js +5 -0
  89. package/dist/components/ui/chart.d.ts +46 -0
  90. package/dist/components/ui/chart.js +3 -0
  91. package/dist/components/ui/checkbox.d.ts +6 -0
  92. package/dist/components/ui/checkbox.js +3 -0
  93. package/dist/components/ui/collapsible.d.ts +8 -0
  94. package/dist/components/ui/collapsible.js +2 -0
  95. package/dist/components/ui/combobox.d.ts +26 -0
  96. package/dist/components/ui/combobox.js +8 -0
  97. package/dist/components/ui/command.d.ts +22 -0
  98. package/dist/components/ui/command.js +9 -0
  99. package/dist/components/ui/context-menu.d.ts +31 -0
  100. package/dist/components/ui/context-menu.js +3 -0
  101. package/dist/components/ui/dialog.d.ts +19 -0
  102. package/dist/components/ui/dialog.js +5 -0
  103. package/dist/components/ui/direction.d.ts +1 -0
  104. package/dist/components/ui/direction.js +2 -0
  105. package/dist/components/ui/drawer.d.ts +15 -0
  106. package/dist/components/ui/drawer.js +3 -0
  107. package/dist/components/ui/dropdown-menu.d.ts +31 -0
  108. package/dist/components/ui/dropdown-menu.js +3 -0
  109. package/dist/components/ui/empty.d.ts +15 -0
  110. package/dist/components/ui/empty.js +3 -0
  111. package/dist/components/ui/field.d.ts +28 -0
  112. package/dist/components/ui/field.js +5 -0
  113. package/dist/components/ui/hover-card.d.ts +8 -0
  114. package/dist/components/ui/hover-card.js +3 -0
  115. package/dist/components/ui/input-group.d.ts +23 -0
  116. package/dist/components/ui/input-group.js +7 -0
  117. package/dist/components/ui/input-otp.d.ts +13 -0
  118. package/dist/components/ui/input-otp.js +3 -0
  119. package/dist/components/ui/input.d.ts +5 -0
  120. package/dist/components/ui/input.js +3 -0
  121. package/dist/components/ui/item.d.ts +26 -0
  122. package/dist/components/ui/item.js +4 -0
  123. package/dist/components/ui/kbd.d.ts +6 -0
  124. package/dist/components/ui/kbd.js +3 -0
  125. package/dist/components/ui/label.d.ts +5 -0
  126. package/dist/components/ui/label.js +3 -0
  127. package/dist/components/ui/logo.d.ts +17 -0
  128. package/dist/components/ui/logo.js +3 -0
  129. package/dist/components/ui/menubar.d.ts +31 -0
  130. package/dist/components/ui/menubar.js +4 -0
  131. package/dist/components/ui/native-select.d.ts +10 -0
  132. package/dist/components/ui/native-select.js +3 -0
  133. package/dist/components/ui/navigation-menu.d.ts +15 -0
  134. package/dist/components/ui/navigation-menu.js +3 -0
  135. package/dist/components/ui/pagination.d.ts +23 -0
  136. package/dist/components/ui/pagination.js +5 -0
  137. package/dist/components/ui/popover.d.ts +11 -0
  138. package/dist/components/ui/popover.js +3 -0
  139. package/dist/components/ui/progress.d.ts +10 -0
  140. package/dist/components/ui/progress.js +3 -0
  141. package/dist/components/ui/radio-group.d.ts +8 -0
  142. package/dist/components/ui/radio-group.js +3 -0
  143. package/dist/components/ui/resizable.d.ts +10 -0
  144. package/dist/components/ui/resizable.js +3 -0
  145. package/dist/components/ui/scroll-area.d.ts +7 -0
  146. package/dist/components/ui/scroll-area.js +3 -0
  147. package/dist/components/ui/select.d.ts +17 -0
  148. package/dist/components/ui/select.js +3 -0
  149. package/dist/components/ui/separator.d.ts +6 -0
  150. package/dist/components/ui/separator.js +3 -0
  151. package/dist/components/ui/sheet.d.ts +16 -0
  152. package/dist/components/ui/sheet.js +5 -0
  153. package/dist/components/ui/sidebar.d.ts +70 -0
  154. package/dist/components/ui/sidebar.js +11 -0
  155. package/dist/components/ui/skeleton.d.ts +5 -0
  156. package/dist/components/ui/skeleton.js +3 -0
  157. package/dist/components/ui/slider.d.ts +6 -0
  158. package/dist/components/ui/slider.js +3 -0
  159. package/dist/components/ui/sonner.d.ts +6 -0
  160. package/dist/components/ui/sonner.js +2 -0
  161. package/dist/components/ui/spinner.d.ts +5 -0
  162. package/dist/components/ui/spinner.js +3 -0
  163. package/dist/components/ui/switch.d.ts +8 -0
  164. package/dist/components/ui/switch.js +3 -0
  165. package/dist/components/ui/table.d.ts +12 -0
  166. package/dist/components/ui/table.js +3 -0
  167. package/dist/components/ui/tabs.d.ts +14 -0
  168. package/dist/components/ui/tabs.js +3 -0
  169. package/dist/components/ui/textarea.d.ts +5 -0
  170. package/dist/components/ui/textarea.js +3 -0
  171. package/dist/components/ui/toggle-group.d.ts +14 -0
  172. package/dist/components/ui/toggle-group.js +4 -0
  173. package/dist/components/ui/toggle.d.ts +12 -0
  174. package/dist/components/ui/toggle.js +3 -0
  175. package/dist/components/ui/tooltip.d.ts +9 -0
  176. package/dist/components/ui/tooltip.js +3 -0
  177. package/dist/hooks/use-mobile.d.ts +3 -0
  178. package/dist/hooks/use-mobile.js +2 -0
  179. package/dist/index.d.ts +98 -640
  180. package/dist/index.js +60 -5573
  181. package/dist/lib/button-variants.d.ts +17 -0
  182. package/dist/lib/button-variants.js +1 -0
  183. package/dist/lib/contrast.d.ts +9 -0
  184. package/dist/lib/contrast.js +1 -0
  185. package/dist/lib/utils.d.ts +5 -0
  186. package/dist/lib/utils.js +1 -0
  187. package/dist/styles.css +1 -1
  188. package/dist/theme.css +4 -0
  189. package/dist/{tokens.d.ts → tokens.generated.d.ts} +8 -0
  190. package/dist/{tokens.js → tokens.generated.js} +4 -0
  191. package/dist/variants.d.ts +3 -0
  192. package/dist/variants.js +1 -0
  193. package/package.json +17 -5
  194. package/tokens/tokens.css +2 -0
  195. package/tokens/tokens.json +5 -1
@@ -0,0 +1,60 @@
1
+ import { cn } from './chunk-U7N2A7A3.js';
2
+ import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ function TooltipProvider({
6
+ delay = 0,
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsx(
10
+ Tooltip$1.Provider,
11
+ {
12
+ "data-slot": "tooltip-provider",
13
+ delay,
14
+ ...props
15
+ }
16
+ );
17
+ }
18
+ function Tooltip({ ...props }) {
19
+ return /* @__PURE__ */ jsx(Tooltip$1.Root, { "data-slot": "tooltip", ...props });
20
+ }
21
+ function TooltipTrigger({ ...props }) {
22
+ return /* @__PURE__ */ jsx(Tooltip$1.Trigger, { "data-slot": "tooltip-trigger", ...props });
23
+ }
24
+ function TooltipContent({
25
+ className,
26
+ side = "top",
27
+ sideOffset = 4,
28
+ align = "center",
29
+ alignOffset = 0,
30
+ children,
31
+ ...props
32
+ }) {
33
+ return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
34
+ Tooltip$1.Positioner,
35
+ {
36
+ align,
37
+ alignOffset,
38
+ side,
39
+ sideOffset,
40
+ className: "isolate z-50",
41
+ children: /* @__PURE__ */ jsxs(
42
+ Tooltip$1.Popup,
43
+ {
44
+ "data-slot": "tooltip-content",
45
+ className: cn(
46
+ "z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 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",
47
+ className
48
+ ),
49
+ ...props,
50
+ children: [
51
+ children,
52
+ /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })
53
+ ]
54
+ }
55
+ )
56
+ }
57
+ ) });
58
+ }
59
+
60
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -0,0 +1,227 @@
1
+ import { cn } from './chunk-U7N2A7A3.js';
2
+ import { ContextMenu as ContextMenu$1 } from '@base-ui/react/context-menu';
3
+ import { ChevronRightIcon, CheckIcon } from 'lucide-react';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ function ContextMenu({ ...props }) {
7
+ return /* @__PURE__ */ jsx(ContextMenu$1.Root, { "data-slot": "context-menu", ...props });
8
+ }
9
+ function ContextMenuPortal({ ...props }) {
10
+ return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { "data-slot": "context-menu-portal", ...props });
11
+ }
12
+ function ContextMenuTrigger({
13
+ className,
14
+ ...props
15
+ }) {
16
+ return /* @__PURE__ */ jsx(
17
+ ContextMenu$1.Trigger,
18
+ {
19
+ "data-slot": "context-menu-trigger",
20
+ className: cn("select-none", className),
21
+ ...props
22
+ }
23
+ );
24
+ }
25
+ function ContextMenuContent({
26
+ className,
27
+ align = "start",
28
+ alignOffset = 4,
29
+ side = "right",
30
+ sideOffset = 0,
31
+ ...props
32
+ }) {
33
+ return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(
34
+ ContextMenu$1.Positioner,
35
+ {
36
+ className: "isolate z-50 outline-none",
37
+ align,
38
+ alignOffset,
39
+ side,
40
+ sideOffset,
41
+ children: /* @__PURE__ */ jsx(
42
+ ContextMenu$1.Popup,
43
+ {
44
+ "data-slot": "context-menu-content",
45
+ className: cn("z-50 max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
46
+ ...props
47
+ }
48
+ )
49
+ }
50
+ ) });
51
+ }
52
+ function ContextMenuGroup({ ...props }) {
53
+ return /* @__PURE__ */ jsx(ContextMenu$1.Group, { "data-slot": "context-menu-group", ...props });
54
+ }
55
+ function ContextMenuLabel({
56
+ className,
57
+ inset,
58
+ ...props
59
+ }) {
60
+ return /* @__PURE__ */ jsx(
61
+ ContextMenu$1.GroupLabel,
62
+ {
63
+ "data-slot": "context-menu-label",
64
+ "data-inset": inset,
65
+ className: cn(
66
+ "px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",
67
+ className
68
+ ),
69
+ ...props
70
+ }
71
+ );
72
+ }
73
+ function ContextMenuItem({
74
+ className,
75
+ inset,
76
+ variant = "default",
77
+ ...props
78
+ }) {
79
+ return /* @__PURE__ */ jsx(
80
+ ContextMenu$1.Item,
81
+ {
82
+ "data-slot": "context-menu-item",
83
+ "data-inset": inset,
84
+ "data-variant": variant,
85
+ className: cn(
86
+ "group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive",
87
+ className
88
+ ),
89
+ ...props
90
+ }
91
+ );
92
+ }
93
+ function ContextMenuSub({ ...props }) {
94
+ return /* @__PURE__ */ jsx(ContextMenu$1.SubmenuRoot, { "data-slot": "context-menu-sub", ...props });
95
+ }
96
+ function ContextMenuSubTrigger({
97
+ className,
98
+ inset,
99
+ children,
100
+ ...props
101
+ }) {
102
+ return /* @__PURE__ */ jsxs(
103
+ ContextMenu$1.SubmenuTrigger,
104
+ {
105
+ "data-slot": "context-menu-sub-trigger",
106
+ "data-inset": inset,
107
+ className: cn(
108
+ "flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
109
+ className
110
+ ),
111
+ ...props,
112
+ children: [
113
+ children,
114
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })
115
+ ]
116
+ }
117
+ );
118
+ }
119
+ function ContextMenuSubContent({
120
+ ...props
121
+ }) {
122
+ return /* @__PURE__ */ jsx(
123
+ ContextMenuContent,
124
+ {
125
+ "data-slot": "context-menu-sub-content",
126
+ className: "shadow-lg",
127
+ side: "right",
128
+ ...props
129
+ }
130
+ );
131
+ }
132
+ function ContextMenuCheckboxItem({
133
+ className,
134
+ children,
135
+ checked,
136
+ inset,
137
+ ...props
138
+ }) {
139
+ return /* @__PURE__ */ jsxs(
140
+ ContextMenu$1.CheckboxItem,
141
+ {
142
+ "data-slot": "context-menu-checkbox-item",
143
+ "data-inset": inset,
144
+ className: cn(
145
+ "relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
146
+ className
147
+ ),
148
+ checked,
149
+ ...props,
150
+ children: [
151
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2", children: /* @__PURE__ */ jsx(ContextMenu$1.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(
152
+ CheckIcon,
153
+ {}
154
+ ) }) }),
155
+ children
156
+ ]
157
+ }
158
+ );
159
+ }
160
+ function ContextMenuRadioGroup({
161
+ ...props
162
+ }) {
163
+ return /* @__PURE__ */ jsx(
164
+ ContextMenu$1.RadioGroup,
165
+ {
166
+ "data-slot": "context-menu-radio-group",
167
+ ...props
168
+ }
169
+ );
170
+ }
171
+ function ContextMenuRadioItem({
172
+ className,
173
+ children,
174
+ inset,
175
+ ...props
176
+ }) {
177
+ return /* @__PURE__ */ jsxs(
178
+ ContextMenu$1.RadioItem,
179
+ {
180
+ "data-slot": "context-menu-radio-item",
181
+ "data-inset": inset,
182
+ className: cn(
183
+ "relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
184
+ className
185
+ ),
186
+ ...props,
187
+ children: [
188
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2", children: /* @__PURE__ */ jsx(ContextMenu$1.RadioItemIndicator, { children: /* @__PURE__ */ jsx(
189
+ CheckIcon,
190
+ {}
191
+ ) }) }),
192
+ children
193
+ ]
194
+ }
195
+ );
196
+ }
197
+ function ContextMenuSeparator({
198
+ className,
199
+ ...props
200
+ }) {
201
+ return /* @__PURE__ */ jsx(
202
+ ContextMenu$1.Separator,
203
+ {
204
+ "data-slot": "context-menu-separator",
205
+ className: cn("-mx-1 my-1 h-px bg-border", className),
206
+ ...props
207
+ }
208
+ );
209
+ }
210
+ function ContextMenuShortcut({
211
+ className,
212
+ ...props
213
+ }) {
214
+ return /* @__PURE__ */ jsx(
215
+ "span",
216
+ {
217
+ "data-slot": "context-menu-shortcut",
218
+ className: cn(
219
+ "ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground",
220
+ className
221
+ ),
222
+ ...props
223
+ }
224
+ );
225
+ }
226
+
227
+ export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
@@ -0,0 +1,42 @@
1
+ import { cn } from './chunk-U7N2A7A3.js';
2
+ import { Toggle as Toggle$1 } from '@base-ui/react/toggle';
3
+ import { cva } from 'class-variance-authority';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var toggleVariants = cva(
7
+ "group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
8
+ {
9
+ variants: {
10
+ variant: {
11
+ default: "bg-transparent",
12
+ outline: "border border-input bg-transparent hover:bg-muted"
13
+ },
14
+ size: {
15
+ default: "h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
16
+ sm: "h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
17
+ lg: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2"
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ variant: "default",
22
+ size: "default"
23
+ }
24
+ }
25
+ );
26
+ function Toggle({
27
+ className,
28
+ variant = "default",
29
+ size = "default",
30
+ ...props
31
+ }) {
32
+ return /* @__PURE__ */ jsx(
33
+ Toggle$1,
34
+ {
35
+ "data-slot": "toggle",
36
+ className: cn(toggleVariants({ variant, size, className })),
37
+ ...props
38
+ }
39
+ );
40
+ }
41
+
42
+ export { Toggle, toggleVariants };
@@ -0,0 +1,74 @@
1
+ import { cn } from './chunk-U7N2A7A3.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var alertVariants = cva(
6
+ "group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default: "bg-card text-card-foreground",
11
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
12
+ }
13
+ },
14
+ defaultVariants: {
15
+ variant: "default"
16
+ }
17
+ }
18
+ );
19
+ function Alert({
20
+ className,
21
+ variant,
22
+ ...props
23
+ }) {
24
+ return /* @__PURE__ */ jsx(
25
+ "div",
26
+ {
27
+ "data-slot": "alert",
28
+ role: "alert",
29
+ className: cn(alertVariants({ variant }), className),
30
+ ...props
31
+ }
32
+ );
33
+ }
34
+ function AlertTitle({ className, ...props }) {
35
+ return /* @__PURE__ */ jsx(
36
+ "div",
37
+ {
38
+ "data-slot": "alert-title",
39
+ className: cn(
40
+ "font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
41
+ className
42
+ ),
43
+ ...props
44
+ }
45
+ );
46
+ }
47
+ function AlertDescription({
48
+ className,
49
+ ...props
50
+ }) {
51
+ return /* @__PURE__ */ jsx(
52
+ "div",
53
+ {
54
+ "data-slot": "alert-description",
55
+ className: cn(
56
+ "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",
57
+ className
58
+ ),
59
+ ...props
60
+ }
61
+ );
62
+ }
63
+ function AlertAction({ className, ...props }) {
64
+ return /* @__PURE__ */ jsx(
65
+ "div",
66
+ {
67
+ "data-slot": "alert-action",
68
+ className: cn("absolute top-2 right-2", className),
69
+ ...props
70
+ }
71
+ );
72
+ }
73
+
74
+ export { Alert, AlertAction, AlertDescription, AlertTitle };
@@ -0,0 +1,139 @@
1
+ import { Textarea } from './chunk-D6UXXTC6.js';
2
+ import { Input } from './chunk-DXXFNPYR.js';
3
+ import { Button } from './chunk-N34HFTEJ.js';
4
+ import { cn } from './chunk-U7N2A7A3.js';
5
+ import { cva } from 'class-variance-authority';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ function InputGroup({ className, ...props }) {
9
+ return /* @__PURE__ */ jsx(
10
+ "div",
11
+ {
12
+ "data-slot": "input-group",
13
+ role: "group",
14
+ className: cn(
15
+ "group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
16
+ className
17
+ ),
18
+ ...props
19
+ }
20
+ );
21
+ }
22
+ var inputGroupAddonVariants = cva(
23
+ "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
24
+ {
25
+ variants: {
26
+ align: {
27
+ "inline-start": "order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]",
28
+ "inline-end": "order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]",
29
+ "block-start": "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
30
+ "block-end": "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
31
+ }
32
+ },
33
+ defaultVariants: {
34
+ align: "inline-start"
35
+ }
36
+ }
37
+ );
38
+ function InputGroupAddon({
39
+ className,
40
+ align = "inline-start",
41
+ ...props
42
+ }) {
43
+ return /* @__PURE__ */ jsx(
44
+ "div",
45
+ {
46
+ role: "group",
47
+ "data-slot": "input-group-addon",
48
+ "data-align": align,
49
+ className: cn(inputGroupAddonVariants({ align }), className),
50
+ onClick: (e) => {
51
+ if (e.target.closest("button")) {
52
+ return;
53
+ }
54
+ e.currentTarget.parentElement?.querySelector("input")?.focus();
55
+ },
56
+ ...props
57
+ }
58
+ );
59
+ }
60
+ var inputGroupButtonVariants = cva(
61
+ "flex items-center gap-2 text-sm shadow-none",
62
+ {
63
+ variants: {
64
+ size: {
65
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
66
+ sm: "",
67
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0",
68
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
69
+ }
70
+ },
71
+ defaultVariants: {
72
+ size: "xs"
73
+ }
74
+ }
75
+ );
76
+ function InputGroupButton({
77
+ className,
78
+ type = "button",
79
+ variant = "ghost",
80
+ size = "xs",
81
+ ...props
82
+ }) {
83
+ return /* @__PURE__ */ jsx(
84
+ Button,
85
+ {
86
+ type,
87
+ "data-size": size,
88
+ variant,
89
+ className: cn(inputGroupButtonVariants({ size }), className),
90
+ ...props
91
+ }
92
+ );
93
+ }
94
+ function InputGroupText({ className, ...props }) {
95
+ return /* @__PURE__ */ jsx(
96
+ "span",
97
+ {
98
+ className: cn(
99
+ "flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
100
+ className
101
+ ),
102
+ ...props
103
+ }
104
+ );
105
+ }
106
+ function InputGroupInput({
107
+ className,
108
+ ...props
109
+ }) {
110
+ return /* @__PURE__ */ jsx(
111
+ Input,
112
+ {
113
+ "data-slot": "input-group-control",
114
+ className: cn(
115
+ "flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
116
+ className
117
+ ),
118
+ ...props
119
+ }
120
+ );
121
+ }
122
+ function InputGroupTextarea({
123
+ className,
124
+ ...props
125
+ }) {
126
+ return /* @__PURE__ */ jsx(
127
+ Textarea,
128
+ {
129
+ "data-slot": "input-group-control",
130
+ className: cn(
131
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
132
+ className
133
+ ),
134
+ ...props
135
+ }
136
+ );
137
+ }
138
+
139
+ export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };
@@ -0,0 +1,97 @@
1
+ import { cn } from './chunk-U7N2A7A3.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ function Empty({ className, ...props }) {
6
+ return /* @__PURE__ */ jsx(
7
+ "div",
8
+ {
9
+ "data-slot": "empty",
10
+ className: cn(
11
+ "flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",
12
+ className
13
+ ),
14
+ ...props
15
+ }
16
+ );
17
+ }
18
+ function EmptyHeader({ className, ...props }) {
19
+ return /* @__PURE__ */ jsx(
20
+ "div",
21
+ {
22
+ "data-slot": "empty-header",
23
+ className: cn("flex max-w-sm flex-col items-center gap-2", className),
24
+ ...props
25
+ }
26
+ );
27
+ }
28
+ var emptyMediaVariants = cva(
29
+ "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
30
+ {
31
+ variants: {
32
+ variant: {
33
+ default: "bg-transparent",
34
+ icon: "flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4"
35
+ }
36
+ },
37
+ defaultVariants: {
38
+ variant: "default"
39
+ }
40
+ }
41
+ );
42
+ function EmptyMedia({
43
+ className,
44
+ variant = "default",
45
+ ...props
46
+ }) {
47
+ return /* @__PURE__ */ jsx(
48
+ "div",
49
+ {
50
+ "data-slot": "empty-icon",
51
+ "data-variant": variant,
52
+ className: cn(emptyMediaVariants({ variant, className })),
53
+ ...props
54
+ }
55
+ );
56
+ }
57
+ function EmptyTitle({ className, ...props }) {
58
+ return /* @__PURE__ */ jsx(
59
+ "div",
60
+ {
61
+ "data-slot": "empty-title",
62
+ className: cn(
63
+ "text-sm font-medium tracking-tight",
64
+ className
65
+ ),
66
+ ...props
67
+ }
68
+ );
69
+ }
70
+ function EmptyDescription({ className, ...props }) {
71
+ return /* @__PURE__ */ jsx(
72
+ "div",
73
+ {
74
+ "data-slot": "empty-description",
75
+ className: cn(
76
+ "text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
77
+ className
78
+ ),
79
+ ...props
80
+ }
81
+ );
82
+ }
83
+ function EmptyContent({ className, ...props }) {
84
+ return /* @__PURE__ */ jsx(
85
+ "div",
86
+ {
87
+ "data-slot": "empty-content",
88
+ className: cn(
89
+ "flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",
90
+ className
91
+ ),
92
+ ...props
93
+ }
94
+ );
95
+ }
96
+
97
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
@@ -0,0 +1 @@
1
+ export { DirectionProvider, useDirection } from '@base-ui/react/direction-provider';