@inui/design-system 0.0.0-stage → 1.22.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 (312) hide show
  1. package/README.md +360 -2
  2. package/dist/components/ui/accordion.d.ts +44 -0
  3. package/dist/components/ui/accordion.d.ts.map +1 -0
  4. package/dist/components/ui/accordion.js +86 -0
  5. package/dist/components/ui/accordion.js.map +1 -0
  6. package/dist/components/ui/ai-avatar.d.ts +46 -0
  7. package/dist/components/ui/ai-avatar.d.ts.map +1 -0
  8. package/dist/components/ui/ai-avatar.js +43 -0
  9. package/dist/components/ui/ai-avatar.js.map +1 -0
  10. package/dist/components/ui/ai-label.d.ts +118 -0
  11. package/dist/components/ui/ai-label.d.ts.map +1 -0
  12. package/dist/components/ui/ai-label.js +184 -0
  13. package/dist/components/ui/ai-label.js.map +1 -0
  14. package/dist/components/ui/ai-sparkle.d.ts +91 -0
  15. package/dist/components/ui/ai-sparkle.d.ts.map +1 -0
  16. package/dist/components/ui/ai-sparkle.js +200 -0
  17. package/dist/components/ui/ai-sparkle.js.map +1 -0
  18. package/dist/components/ui/alert-dialog.d.ts +79 -0
  19. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  20. package/dist/components/ui/alert-dialog.js +147 -0
  21. package/dist/components/ui/alert-dialog.js.map +1 -0
  22. package/dist/components/ui/alert.d.ts +71 -0
  23. package/dist/components/ui/alert.d.ts.map +1 -0
  24. package/dist/components/ui/alert.js +108 -0
  25. package/dist/components/ui/alert.js.map +1 -0
  26. package/dist/components/ui/aspect-ratio.d.ts +30 -0
  27. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  28. package/dist/components/ui/aspect-ratio.js +40 -0
  29. package/dist/components/ui/aspect-ratio.js.map +1 -0
  30. package/dist/components/ui/attachment.d.ts +74 -0
  31. package/dist/components/ui/attachment.d.ts.map +1 -0
  32. package/dist/components/ui/attachment.js +142 -0
  33. package/dist/components/ui/attachment.js.map +1 -0
  34. package/dist/components/ui/avatar.d.ts +82 -0
  35. package/dist/components/ui/avatar.d.ts.map +1 -0
  36. package/dist/components/ui/avatar.js +123 -0
  37. package/dist/components/ui/avatar.js.map +1 -0
  38. package/dist/components/ui/badge.d.ts +130 -0
  39. package/dist/components/ui/badge.d.ts.map +1 -0
  40. package/dist/components/ui/badge.js +226 -0
  41. package/dist/components/ui/badge.js.map +1 -0
  42. package/dist/components/ui/breadcrumb.d.ts +43 -0
  43. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  44. package/dist/components/ui/breadcrumb.js +98 -0
  45. package/dist/components/ui/breadcrumb.js.map +1 -0
  46. package/dist/components/ui/browser-tabs.d.ts +218 -0
  47. package/dist/components/ui/browser-tabs.d.ts.map +1 -0
  48. package/dist/components/ui/browser-tabs.js +528 -0
  49. package/dist/components/ui/browser-tabs.js.map +1 -0
  50. package/dist/components/ui/bubble.d.ts +80 -0
  51. package/dist/components/ui/bubble.d.ts.map +1 -0
  52. package/dist/components/ui/bubble.js +235 -0
  53. package/dist/components/ui/bubble.js.map +1 -0
  54. package/dist/components/ui/button-group.d.ts +60 -0
  55. package/dist/components/ui/button-group.d.ts.map +1 -0
  56. package/dist/components/ui/button-group.js +89 -0
  57. package/dist/components/ui/button-group.js.map +1 -0
  58. package/dist/components/ui/button.d.ts +157 -0
  59. package/dist/components/ui/button.d.ts.map +1 -0
  60. package/dist/components/ui/button.js +144 -0
  61. package/dist/components/ui/button.js.map +1 -0
  62. package/dist/components/ui/calendar.d.ts +57 -0
  63. package/dist/components/ui/calendar.d.ts.map +1 -0
  64. package/dist/components/ui/calendar.js +163 -0
  65. package/dist/components/ui/calendar.js.map +1 -0
  66. package/dist/components/ui/card.d.ts +96 -0
  67. package/dist/components/ui/card.d.ts.map +1 -0
  68. package/dist/components/ui/card.js +131 -0
  69. package/dist/components/ui/card.js.map +1 -0
  70. package/dist/components/ui/carousel.d.ts +86 -0
  71. package/dist/components/ui/carousel.d.ts.map +1 -0
  72. package/dist/components/ui/carousel.js +207 -0
  73. package/dist/components/ui/carousel.js.map +1 -0
  74. package/dist/components/ui/checkbox.d.ts +54 -0
  75. package/dist/components/ui/checkbox.d.ts.map +1 -0
  76. package/dist/components/ui/checkbox.js +78 -0
  77. package/dist/components/ui/checkbox.js.map +1 -0
  78. package/dist/components/ui/collapsible.d.ts +45 -0
  79. package/dist/components/ui/collapsible.d.ts.map +1 -0
  80. package/dist/components/ui/collapsible.js +65 -0
  81. package/dist/components/ui/collapsible.js.map +1 -0
  82. package/dist/components/ui/combobox.d.ts +111 -0
  83. package/dist/components/ui/combobox.d.ts.map +1 -0
  84. package/dist/components/ui/combobox.js +264 -0
  85. package/dist/components/ui/combobox.js.map +1 -0
  86. package/dist/components/ui/command.d.ts +71 -0
  87. package/dist/components/ui/command.d.ts.map +1 -0
  88. package/dist/components/ui/command.js +133 -0
  89. package/dist/components/ui/command.js.map +1 -0
  90. package/dist/components/ui/context-menu.d.ts +70 -0
  91. package/dist/components/ui/context-menu.d.ts.map +1 -0
  92. package/dist/components/ui/context-menu.js +163 -0
  93. package/dist/components/ui/context-menu.js.map +1 -0
  94. package/dist/components/ui/count-badge.d.ts +40 -0
  95. package/dist/components/ui/count-badge.d.ts.map +1 -0
  96. package/dist/components/ui/count-badge.js +43 -0
  97. package/dist/components/ui/count-badge.js.map +1 -0
  98. package/dist/components/ui/data-table.d.ts +1026 -0
  99. package/dist/components/ui/data-table.d.ts.map +1 -0
  100. package/dist/components/ui/data-table.js +3423 -0
  101. package/dist/components/ui/data-table.js.map +1 -0
  102. package/dist/components/ui/dialog.d.ts +73 -0
  103. package/dist/components/ui/dialog.d.ts.map +1 -0
  104. package/dist/components/ui/dialog.js +145 -0
  105. package/dist/components/ui/dialog.js.map +1 -0
  106. package/dist/components/ui/direction.d.ts +35 -0
  107. package/dist/components/ui/direction.d.ts.map +1 -0
  108. package/dist/components/ui/direction.js +35 -0
  109. package/dist/components/ui/direction.js.map +1 -0
  110. package/dist/components/ui/drawer.d.ts +53 -0
  111. package/dist/components/ui/drawer.d.ts.map +1 -0
  112. package/dist/components/ui/drawer.js +115 -0
  113. package/dist/components/ui/drawer.js.map +1 -0
  114. package/dist/components/ui/dropdown-menu.d.ts +75 -0
  115. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  116. package/dist/components/ui/dropdown-menu.js +173 -0
  117. package/dist/components/ui/dropdown-menu.js.map +1 -0
  118. package/dist/components/ui/dropzone.d.ts +141 -0
  119. package/dist/components/ui/dropzone.d.ts.map +1 -0
  120. package/dist/components/ui/dropzone.js +257 -0
  121. package/dist/components/ui/dropzone.js.map +1 -0
  122. package/dist/components/ui/empty.d.ts +94 -0
  123. package/dist/components/ui/empty.d.ts.map +1 -0
  124. package/dist/components/ui/empty.js +149 -0
  125. package/dist/components/ui/empty.js.map +1 -0
  126. package/dist/components/ui/field.d.ts +122 -0
  127. package/dist/components/ui/field.d.ts.map +1 -0
  128. package/dist/components/ui/field.js +254 -0
  129. package/dist/components/ui/field.js.map +1 -0
  130. package/dist/components/ui/hover-card.d.ts +51 -0
  131. package/dist/components/ui/hover-card.d.ts.map +1 -0
  132. package/dist/components/ui/hover-card.js +101 -0
  133. package/dist/components/ui/hover-card.js.map +1 -0
  134. package/dist/components/ui/input-group.d.ts +62 -0
  135. package/dist/components/ui/input-group.d.ts.map +1 -0
  136. package/dist/components/ui/input-group.js +115 -0
  137. package/dist/components/ui/input-group.js.map +1 -0
  138. package/dist/components/ui/input-otp.d.ts +52 -0
  139. package/dist/components/ui/input-otp.d.ts.map +1 -0
  140. package/dist/components/ui/input-otp.js +89 -0
  141. package/dist/components/ui/input-otp.js.map +1 -0
  142. package/dist/components/ui/input.d.ts +47 -0
  143. package/dist/components/ui/input.d.ts.map +1 -0
  144. package/dist/components/ui/input.js +47 -0
  145. package/dist/components/ui/input.js.map +1 -0
  146. package/dist/components/ui/item.d.ts +74 -0
  147. package/dist/components/ui/item.d.ts.map +1 -0
  148. package/dist/components/ui/item.js +176 -0
  149. package/dist/components/ui/item.js.map +1 -0
  150. package/dist/components/ui/kbd.d.ts +41 -0
  151. package/dist/components/ui/kbd.d.ts.map +1 -0
  152. package/dist/components/ui/kbd.js +58 -0
  153. package/dist/components/ui/kbd.js.map +1 -0
  154. package/dist/components/ui/key-value-pair.d.ts +56 -0
  155. package/dist/components/ui/key-value-pair.d.ts.map +1 -0
  156. package/dist/components/ui/key-value-pair.js +110 -0
  157. package/dist/components/ui/key-value-pair.js.map +1 -0
  158. package/dist/components/ui/label.d.ts +83 -0
  159. package/dist/components/ui/label.d.ts.map +1 -0
  160. package/dist/components/ui/label.js +85 -0
  161. package/dist/components/ui/label.js.map +1 -0
  162. package/dist/components/ui/marker.d.ts +54 -0
  163. package/dist/components/ui/marker.d.ts.map +1 -0
  164. package/dist/components/ui/marker.js +79 -0
  165. package/dist/components/ui/marker.js.map +1 -0
  166. package/dist/components/ui/menubar.d.ts +72 -0
  167. package/dist/components/ui/menubar.d.ts.map +1 -0
  168. package/dist/components/ui/menubar.js +174 -0
  169. package/dist/components/ui/menubar.js.map +1 -0
  170. package/dist/components/ui/message-scroller.d.ts +53 -0
  171. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  172. package/dist/components/ui/message-scroller.js +95 -0
  173. package/dist/components/ui/message-scroller.js.map +1 -0
  174. package/dist/components/ui/message.d.ts +63 -0
  175. package/dist/components/ui/message.d.ts.map +1 -0
  176. package/dist/components/ui/message.js +92 -0
  177. package/dist/components/ui/message.js.map +1 -0
  178. package/dist/components/ui/meta-list.d.ts +55 -0
  179. package/dist/components/ui/meta-list.d.ts.map +1 -0
  180. package/dist/components/ui/meta-list.js +75 -0
  181. package/dist/components/ui/meta-list.js.map +1 -0
  182. package/dist/components/ui/native-select.d.ts +51 -0
  183. package/dist/components/ui/native-select.d.ts.map +1 -0
  184. package/dist/components/ui/native-select.js +75 -0
  185. package/dist/components/ui/native-select.js.map +1 -0
  186. package/dist/components/ui/navigation-menu.d.ts +56 -0
  187. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  188. package/dist/components/ui/navigation-menu.js +116 -0
  189. package/dist/components/ui/navigation-menu.js.map +1 -0
  190. package/dist/components/ui/page-header.d.ts +223 -0
  191. package/dist/components/ui/page-header.d.ts.map +1 -0
  192. package/dist/components/ui/page-header.js +233 -0
  193. package/dist/components/ui/page-header.js.map +1 -0
  194. package/dist/components/ui/pagination.d.ts +68 -0
  195. package/dist/components/ui/pagination.d.ts.map +1 -0
  196. package/dist/components/ui/pagination.js +145 -0
  197. package/dist/components/ui/pagination.js.map +1 -0
  198. package/dist/components/ui/popover.d.ts +61 -0
  199. package/dist/components/ui/popover.d.ts.map +1 -0
  200. package/dist/components/ui/popover.js +144 -0
  201. package/dist/components/ui/popover.js.map +1 -0
  202. package/dist/components/ui/progress.d.ts +35 -0
  203. package/dist/components/ui/progress.d.ts.map +1 -0
  204. package/dist/components/ui/progress.js +46 -0
  205. package/dist/components/ui/progress.js.map +1 -0
  206. package/dist/components/ui/questionnaire.d.ts +92 -0
  207. package/dist/components/ui/questionnaire.d.ts.map +1 -0
  208. package/dist/components/ui/questionnaire.js +277 -0
  209. package/dist/components/ui/questionnaire.js.map +1 -0
  210. package/dist/components/ui/radio-group.d.ts +50 -0
  211. package/dist/components/ui/radio-group.d.ts.map +1 -0
  212. package/dist/components/ui/radio-group.js +65 -0
  213. package/dist/components/ui/radio-group.js.map +1 -0
  214. package/dist/components/ui/resizable.d.ts +44 -0
  215. package/dist/components/ui/resizable.d.ts.map +1 -0
  216. package/dist/components/ui/resizable.js +73 -0
  217. package/dist/components/ui/resizable.js.map +1 -0
  218. package/dist/components/ui/scroll-area.d.ts +55 -0
  219. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  220. package/dist/components/ui/scroll-area.js +72 -0
  221. package/dist/components/ui/scroll-area.js.map +1 -0
  222. package/dist/components/ui/select.d.ts +274 -0
  223. package/dist/components/ui/select.d.ts.map +1 -0
  224. package/dist/components/ui/select.js +609 -0
  225. package/dist/components/ui/select.js.map +1 -0
  226. package/dist/components/ui/separator.d.ts +31 -0
  227. package/dist/components/ui/separator.d.ts.map +1 -0
  228. package/dist/components/ui/separator.js +38 -0
  229. package/dist/components/ui/separator.js.map +1 -0
  230. package/dist/components/ui/sheet.d.ts +59 -0
  231. package/dist/components/ui/sheet.d.ts.map +1 -0
  232. package/dist/components/ui/sheet.js +128 -0
  233. package/dist/components/ui/sheet.js.map +1 -0
  234. package/dist/components/ui/sidebar.d.ts +166 -0
  235. package/dist/components/ui/sidebar.d.ts.map +1 -0
  236. package/dist/components/ui/sidebar.js +512 -0
  237. package/dist/components/ui/sidebar.js.map +1 -0
  238. package/dist/components/ui/skeleton.d.ts +35 -0
  239. package/dist/components/ui/skeleton.d.ts.map +1 -0
  240. package/dist/components/ui/skeleton.js +46 -0
  241. package/dist/components/ui/skeleton.js.map +1 -0
  242. package/dist/components/ui/slider.d.ts +39 -0
  243. package/dist/components/ui/slider.d.ts.map +1 -0
  244. package/dist/components/ui/slider.js +75 -0
  245. package/dist/components/ui/slider.js.map +1 -0
  246. package/dist/components/ui/sonner.d.ts +56 -0
  247. package/dist/components/ui/sonner.d.ts.map +1 -0
  248. package/dist/components/ui/sonner.js +96 -0
  249. package/dist/components/ui/sonner.js.map +1 -0
  250. package/dist/components/ui/spinner.d.ts +37 -0
  251. package/dist/components/ui/spinner.d.ts.map +1 -0
  252. package/dist/components/ui/spinner.js +51 -0
  253. package/dist/components/ui/spinner.js.map +1 -0
  254. package/dist/components/ui/stepper.d.ts +84 -0
  255. package/dist/components/ui/stepper.d.ts.map +1 -0
  256. package/dist/components/ui/stepper.js +145 -0
  257. package/dist/components/ui/stepper.js.map +1 -0
  258. package/dist/components/ui/switch.d.ts +36 -0
  259. package/dist/components/ui/switch.d.ts.map +1 -0
  260. package/dist/components/ui/switch.js +44 -0
  261. package/dist/components/ui/switch.js.map +1 -0
  262. package/dist/components/ui/table.d.ts +80 -0
  263. package/dist/components/ui/table.d.ts.map +1 -0
  264. package/dist/components/ui/table.js +130 -0
  265. package/dist/components/ui/table.js.map +1 -0
  266. package/dist/components/ui/tabs.d.ts +87 -0
  267. package/dist/components/ui/tabs.d.ts.map +1 -0
  268. package/dist/components/ui/tabs.js +128 -0
  269. package/dist/components/ui/tabs.js.map +1 -0
  270. package/dist/components/ui/textarea.d.ts +35 -0
  271. package/dist/components/ui/textarea.d.ts.map +1 -0
  272. package/dist/components/ui/textarea.js +38 -0
  273. package/dist/components/ui/textarea.js.map +1 -0
  274. package/dist/components/ui/time-picker.d.ts +58 -0
  275. package/dist/components/ui/time-picker.d.ts.map +1 -0
  276. package/dist/components/ui/time-picker.js +188 -0
  277. package/dist/components/ui/time-picker.js.map +1 -0
  278. package/dist/components/ui/toggle-group.d.ts +52 -0
  279. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  280. package/dist/components/ui/toggle-group.js +94 -0
  281. package/dist/components/ui/toggle-group.js.map +1 -0
  282. package/dist/components/ui/toggle.d.ts +50 -0
  283. package/dist/components/ui/toggle.d.ts.map +1 -0
  284. package/dist/components/ui/toggle.js +70 -0
  285. package/dist/components/ui/toggle.js.map +1 -0
  286. package/dist/components/ui/tooltip.d.ts +51 -0
  287. package/dist/components/ui/tooltip.d.ts.map +1 -0
  288. package/dist/components/ui/tooltip.js +78 -0
  289. package/dist/components/ui/tooltip.js.map +1 -0
  290. package/dist/hooks/use-dark-mode.d.ts +2 -0
  291. package/dist/hooks/use-dark-mode.d.ts.map +1 -0
  292. package/dist/hooks/use-dark-mode.js +36 -0
  293. package/dist/hooks/use-dark-mode.js.map +1 -0
  294. package/dist/hooks/use-mobile.d.ts +2 -0
  295. package/dist/hooks/use-mobile.d.ts.map +1 -0
  296. package/dist/hooks/use-mobile.js +20 -0
  297. package/dist/hooks/use-mobile.js.map +1 -0
  298. package/dist/index.d.ts +88 -0
  299. package/dist/index.d.ts.map +1 -0
  300. package/dist/index.js +77 -0
  301. package/dist/lib/scope.d.ts +64 -0
  302. package/dist/lib/scope.d.ts.map +1 -0
  303. package/dist/lib/scope.js +74 -0
  304. package/dist/lib/scope.js.map +1 -0
  305. package/dist/lib/utils.d.ts +3 -0
  306. package/dist/lib/utils.d.ts.map +1 -0
  307. package/dist/lib/utils.js +11 -0
  308. package/dist/lib/utils.js.map +1 -0
  309. package/dist/styles.css +2 -0
  310. package/dist/theme-tokens.css +537 -0
  311. package/dist/theme.css +417 -0
  312. package/package.json +103 -3
@@ -0,0 +1,94 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { toggleVariants } from "./toggle.js";
4
+ import * as React from "react";
5
+ import { ToggleGroup as ToggleGroup$1 } from "radix-ui";
6
+ import { jsx } from "react/jsx-runtime";
7
+ //#region src/components/ui/toggle-group.tsx
8
+ /**
9
+ * ToggleGroup — set of related Toggles sharing one selection state.
10
+ *
11
+ * `type` (required) is "single" for radio-like exclusive selection or
12
+ * "multiple" for any-number-pressed. variant/size set on the group cascade to
13
+ * every ToggleGroupItem via context, so items don't need to repeat them.
14
+ * Built on the Radix ToggleGroup primitive. Adds `orientation` (vertical
15
+ * stacking) and `spacing` (gap between items — spacing=0 collapses items
16
+ * into one seamless bar with shared borders, like ButtonGroup).
17
+ */
18
+ var ToggleGroupContext = React.createContext({
19
+ size: "default",
20
+ variant: "default",
21
+ spacing: 2,
22
+ orientation: "horizontal"
23
+ });
24
+ function ToggleGroup({ className, variant, size, spacing = 2, orientation = "horizontal", children, ...props }) {
25
+ return /* @__PURE__ */ jsx(ToggleGroup$1.Root, {
26
+ "data-slot": "toggle-group",
27
+ "data-variant": variant,
28
+ "data-size": size,
29
+ "data-spacing": spacing,
30
+ "data-orientation": orientation,
31
+ style: { "--gap": spacing },
32
+ className: cn("group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md,0.375rem),10px)] data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch", className),
33
+ ...props,
34
+ children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, {
35
+ value: {
36
+ variant,
37
+ size,
38
+ spacing,
39
+ orientation
40
+ },
41
+ children
42
+ })
43
+ });
44
+ }
45
+ function ToggleGroupItem({ className, children, variant = "default", size = "default", ...props }) {
46
+ const context = React.useContext(ToggleGroupContext);
47
+ return /* @__PURE__ */ jsx(ToggleGroup$1.Item, {
48
+ "data-slot": "toggle-group-item",
49
+ "data-variant": context.variant || variant,
50
+ "data-size": context.size || size,
51
+ "data-spacing": context.spacing,
52
+ className: cn("shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t", toggleVariants({
53
+ variant: context.variant || variant,
54
+ size: context.size || size
55
+ }), className),
56
+ ...props,
57
+ children
58
+ });
59
+ }
60
+ /**
61
+ * WHEN TO USE
62
+ * - Text alignment pickers, view density switchers, multi-select formatting toolbars
63
+ * - Any set of related Toggles that should share pressed state, variant, and size
64
+ *
65
+ * NOT WHEN
66
+ * - Switching between views/pages of content — use Tabs
67
+ * - A form field that needs a single mutually-exclusive value — use RadioGroup
68
+ * - Actions that don't hold pressed state — use ButtonGroup
69
+ *
70
+ * KEY RULES
71
+ * - type is required: "single" (only one item pressed at a time, like radio) or "multiple" (any number pressed)
72
+ * - variant/size set on ToggleGroup cascade to every ToggleGroupItem and take priority over a variant/size
73
+ * passed directly on an item
74
+ * - spacing: default 2 (gap between items); spacing={0} collapses items into a seamless segmented
75
+ * control with shared borders and collapsed inner radii
76
+ * - orientation: horizontal (default) | vertical
77
+ * - Each ToggleGroupItem needs its own aria-label (or visible text) when icon-only — none is added automatically
78
+ *
79
+ * USAGE
80
+ * <ToggleGroup type="single" defaultValue="center" variant="outline">
81
+ * <ToggleGroupItem value="left" aria-label="Align left"><AlignLeftIcon /></ToggleGroupItem>
82
+ * <ToggleGroupItem value="center" aria-label="Align center"><AlignCenterIcon /></ToggleGroupItem>
83
+ * <ToggleGroupItem value="right" aria-label="Align right"><AlignRightIcon /></ToggleGroupItem>
84
+ * </ToggleGroup>
85
+ *
86
+ * <ToggleGroup type="multiple" defaultValue={["bold"]}>
87
+ * <ToggleGroupItem value="bold" aria-label="Bold"><BoldIcon /></ToggleGroupItem>
88
+ * <ToggleGroupItem value="italic" aria-label="Italic"><ItalicIcon /></ToggleGroupItem>
89
+ * </ToggleGroup>
90
+ */
91
+ //#endregion
92
+ export { ToggleGroup, ToggleGroupItem };
93
+
94
+ //# sourceMappingURL=toggle-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.js","names":[],"sources":["../../../src/components/ui/toggle-group.tsx"],"sourcesContent":["\"use client\"\n\n/**\n * ToggleGroup — set of related Toggles sharing one selection state.\n *\n * `type` (required) is \"single\" for radio-like exclusive selection or\n * \"multiple\" for any-number-pressed. variant/size set on the group cascade to\n * every ToggleGroupItem via context, so items don't need to repeat them.\n * Built on the Radix ToggleGroup primitive. Adds `orientation` (vertical\n * stacking) and `spacing` (gap between items — spacing=0 collapses items\n * into one seamless bar with shared borders, like ButtonGroup).\n */\n\nimport * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n orientation?: \"horizontal\" | \"vertical\"\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 2,\n orientation: \"horizontal\",\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 2,\n orientation = \"horizontal\",\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n orientation?: \"horizontal\" | \"vertical\"\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n data-orientation={orientation}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md,0.375rem),10px)] data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider\n value={{ variant, size, spacing, orientation }}\n >\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n \"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n\n/**\n * WHEN TO USE\n * - Text alignment pickers, view density switchers, multi-select formatting toolbars\n * - Any set of related Toggles that should share pressed state, variant, and size\n *\n * NOT WHEN\n * - Switching between views/pages of content — use Tabs\n * - A form field that needs a single mutually-exclusive value — use RadioGroup\n * - Actions that don't hold pressed state — use ButtonGroup\n *\n * KEY RULES\n * - type is required: \"single\" (only one item pressed at a time, like radio) or \"multiple\" (any number pressed)\n * - variant/size set on ToggleGroup cascade to every ToggleGroupItem and take priority over a variant/size\n * passed directly on an item\n * - spacing: default 2 (gap between items); spacing={0} collapses items into a seamless segmented\n * control with shared borders and collapsed inner radii\n * - orientation: horizontal (default) | vertical\n * - Each ToggleGroupItem needs its own aria-label (or visible text) when icon-only — none is added automatically\n *\n * USAGE\n * <ToggleGroup type=\"single\" defaultValue=\"center\" variant=\"outline\">\n * <ToggleGroupItem value=\"left\" aria-label=\"Align left\"><AlignLeftIcon /></ToggleGroupItem>\n * <ToggleGroupItem value=\"center\" aria-label=\"Align center\"><AlignCenterIcon /></ToggleGroupItem>\n * <ToggleGroupItem value=\"right\" aria-label=\"Align right\"><AlignRightIcon /></ToggleGroupItem>\n * </ToggleGroup>\n *\n * <ToggleGroup type=\"multiple\" defaultValue={[\"bold\"]}>\n * <ToggleGroupItem value=\"bold\" aria-label=\"Bold\"><BoldIcon /></ToggleGroupItem>\n * <ToggleGroupItem value=\"italic\" aria-label=\"Italic\"><ItalicIcon /></ToggleGroupItem>\n * </ToggleGroup>\n */\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,IAAM,qBAAqB,MAAM,cAK/B;CACA,MAAM;CACN,SAAS;CACT,SAAS;CACT,aAAa;AACf,CAAC;AAED,SAAS,YAAY,EACnB,WACA,SACA,MACA,UAAU,GACV,cAAc,cACd,UACA,GAAG,SAKA;CACH,OACE,oBAAC,cAAqB,MAAtB;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,gBAAc;EACd,oBAAkB;EAClB,OAAO,EAAE,SAAS,QAAQ;EAC1B,WAAW,GACT,0OACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,mBAAmB,UAApB;GACE,OAAO;IAAE;IAAS;IAAM;IAAS;GAAY;GAE5C;EAC0B,CAAA;CACJ,CAAA;AAE/B;AAEA,SAAS,gBAAgB,EACvB,WACA,UACA,UAAU,WACV,OAAO,WACP,GAAG,SAEkC;CACrC,MAAM,UAAU,MAAM,WAAW,kBAAkB;CAEnD,OACE,oBAAC,cAAqB,MAAtB;EACE,aAAU;EACV,gBAAc,QAAQ,WAAW;EACjC,aAAW,QAAQ,QAAQ;EAC3B,gBAAc,QAAQ;EACtB,WAAW,GACT,o/BACA,eAAe;GACb,SAAS,QAAQ,WAAW;GAC5B,MAAM,QAAQ,QAAQ;EACxB,CAAC,GACD,SACF;EACA,GAAI;EAEH;CACwB,CAAA;AAE/B"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Toggle — two-state pressed/unpressed button.
3
+ *
4
+ * A Radix UI Toggle primitive (`data-state="on"|"off"`) styled with cva; two
5
+ * variants and three sizes. Uses the same
6
+ * `data-icon="inline-start"|"inline-end"` padding convention as Button so an
7
+ * icon paired with a label doesn't need manual gap tuning.
8
+ */
9
+ import * as React from "react";
10
+ import { type VariantProps } from "class-variance-authority";
11
+ import { Toggle as TogglePrimitive } from "radix-ui";
12
+ declare const toggleVariants: (props?: ({
13
+ variant?: "default" | "outline" | null | undefined;
14
+ size?: "sm" | "lg" | "default" | null | undefined;
15
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
+ declare function Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): React.JSX.Element;
17
+ export { Toggle, toggleVariants };
18
+ /**
19
+ * WHEN TO USE
20
+ * - A single formatting or display option that applies immediately — bold, italic, underline, show/hide
21
+ * - An icon-only or icon+label pressed/unpressed control that isn't part of a related set
22
+ *
23
+ * NOT WHEN
24
+ * - A form value that needs submitting — use Checkbox
25
+ * - An on/off setting that reads as a switch (e.g. dark mode) — use Switch
26
+ * - One selection among several related toggles — use ToggleGroup with type="single"
27
+ *
28
+ * KEY RULES
29
+ * - variant: default | outline (default "default")
30
+ * - size: default | sm | lg (default "default") — no icon-only size step; min-width keeps an icon-only toggle square
31
+ * - State is controlled via `pressed` / `defaultPressed` / `onPressedChange` (Radix Toggle), not `checked`
32
+ * - Icon-only toggles need aria-label (or aria-labelledby) — there is no visible text for screen readers otherwise
33
+ * - A leading/trailing icon next to a label can take data-icon="inline-start"/"inline-end" so the size's
34
+ * padding self-adjusts, matching Button's convention
35
+ *
36
+ * USAGE
37
+ * <Toggle aria-label="Toggle bold">
38
+ * <BoldIcon />
39
+ * </Toggle>
40
+ *
41
+ * <Toggle variant="outline" aria-label="Toggle italic">
42
+ * <ItalicIcon />
43
+ * </Toggle>
44
+ *
45
+ * <Toggle>
46
+ * <UnderlineIcon />
47
+ * Underline
48
+ * </Toggle>
49
+ */
50
+ //# sourceMappingURL=toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../src/components/ui/toggle.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AAIpD,QAAA,MAAM,cAAc;;;8EAuBnB,CAAA;AAED,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAClD,YAAY,CAAC,OAAO,cAAc,CAAC,qBAQpC;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG"}
@@ -0,0 +1,70 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import "react";
3
+ import { Toggle as Toggle$1 } from "radix-ui";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+ //#region src/components/ui/toggle.tsx
7
+ var toggleVariants = cva("group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-colors 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-primary/10 aria-pressed:text-primary data-[state=on]:bg-primary/10 data-[state=on]:text-primary dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
8
+ variants: {
9
+ variant: {
10
+ default: "bg-transparent",
11
+ outline: "border border-input bg-transparent hover:bg-muted aria-pressed:border-primary data-[state=on]:border-primary"
12
+ },
13
+ size: {
14
+ default: "h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
15
+ sm: "h-7 min-w-7 rounded-[min(var(--radius-md,0.375rem),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",
16
+ lg: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2"
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ size: "default"
22
+ }
23
+ });
24
+ function Toggle({ className, variant = "default", size = "default", ...props }) {
25
+ return /* @__PURE__ */ jsx(Toggle$1.Root, {
26
+ "data-slot": "toggle",
27
+ className: cn(toggleVariants({
28
+ variant,
29
+ size,
30
+ className
31
+ })),
32
+ ...props
33
+ });
34
+ }
35
+ /**
36
+ * WHEN TO USE
37
+ * - A single formatting or display option that applies immediately — bold, italic, underline, show/hide
38
+ * - An icon-only or icon+label pressed/unpressed control that isn't part of a related set
39
+ *
40
+ * NOT WHEN
41
+ * - A form value that needs submitting — use Checkbox
42
+ * - An on/off setting that reads as a switch (e.g. dark mode) — use Switch
43
+ * - One selection among several related toggles — use ToggleGroup with type="single"
44
+ *
45
+ * KEY RULES
46
+ * - variant: default | outline (default "default")
47
+ * - size: default | sm | lg (default "default") — no icon-only size step; min-width keeps an icon-only toggle square
48
+ * - State is controlled via `pressed` / `defaultPressed` / `onPressedChange` (Radix Toggle), not `checked`
49
+ * - Icon-only toggles need aria-label (or aria-labelledby) — there is no visible text for screen readers otherwise
50
+ * - A leading/trailing icon next to a label can take data-icon="inline-start"/"inline-end" so the size's
51
+ * padding self-adjusts, matching Button's convention
52
+ *
53
+ * USAGE
54
+ * <Toggle aria-label="Toggle bold">
55
+ * <BoldIcon />
56
+ * </Toggle>
57
+ *
58
+ * <Toggle variant="outline" aria-label="Toggle italic">
59
+ * <ItalicIcon />
60
+ * </Toggle>
61
+ *
62
+ * <Toggle>
63
+ * <UnderlineIcon />
64
+ * Underline
65
+ * </Toggle>
66
+ */
67
+ //#endregion
68
+ export { Toggle, toggleVariants };
69
+
70
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.js","names":[],"sources":["../../../src/components/ui/toggle.tsx"],"sourcesContent":["/**\n * Toggle — two-state pressed/unpressed button.\n *\n * A Radix UI Toggle primitive (`data-state=\"on\"|\"off\"`) styled with cva; two\n * variants and three sizes. Uses the same\n * `data-icon=\"inline-start\"|\"inline-end\"` padding convention as Button so an\n * icon paired with a label doesn't need manual gap tuning.\n */\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-colors 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-primary/10 aria-pressed:text-primary data-[state=on]:bg-primary/10 data-[state=on]:text-primary 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: \"bg-transparent\",\n // Selection recolors the existing border to primary — no separate\n // ring layered on top of it.\n outline:\n \"border border-input bg-transparent hover:bg-muted aria-pressed:border-primary data-[state=on]:border-primary\",\n },\n size: {\n default:\n \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n sm: \"h-7 min-w-7 rounded-[min(var(--radius-md,0.375rem),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\",\n lg: \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n\n/**\n * WHEN TO USE\n * - A single formatting or display option that applies immediately — bold, italic, underline, show/hide\n * - An icon-only or icon+label pressed/unpressed control that isn't part of a related set\n *\n * NOT WHEN\n * - A form value that needs submitting — use Checkbox\n * - An on/off setting that reads as a switch (e.g. dark mode) — use Switch\n * - One selection among several related toggles — use ToggleGroup with type=\"single\"\n *\n * KEY RULES\n * - variant: default | outline (default \"default\")\n * - size: default | sm | lg (default \"default\") — no icon-only size step; min-width keeps an icon-only toggle square\n * - State is controlled via `pressed` / `defaultPressed` / `onPressedChange` (Radix Toggle), not `checked`\n * - Icon-only toggles need aria-label (or aria-labelledby) — there is no visible text for screen readers otherwise\n * - A leading/trailing icon next to a label can take data-icon=\"inline-start\"/\"inline-end\" so the size's\n * padding self-adjusts, matching Button's convention\n *\n * USAGE\n * <Toggle aria-label=\"Toggle bold\">\n * <BoldIcon />\n * </Toggle>\n *\n * <Toggle variant=\"outline\" aria-label=\"Toggle italic\">\n * <ItalicIcon />\n * </Toggle>\n *\n * <Toggle>\n * <UnderlineIcon />\n * Underline\n * </Toggle>\n */\n"],"mappings":";;;;;;AAeA,IAAM,iBAAiB,IACrB,2lBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GAGT,SACE;EACJ;EACA,MAAM;GACJ,SACE;GACF,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;AAEA,SAAS,OAAO,EACd,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAEkC;CACrC,OACE,oBAAC,SAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EAC1D,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Tooltip — short, non-interactive hover/focus label.
3
+ *
4
+ * Built on the Radix Tooltip primitive. Sets `delayDuration={0}` as the
5
+ * TooltipProvider default (no hover delay) and renders a
6
+ * `TooltipContent` arrow by default.
7
+ */
8
+ import * as React from "react";
9
+ import { Tooltip as TooltipPrimitive } from "radix-ui";
10
+ declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): React.JSX.Element;
11
+ declare function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>): React.JSX.Element;
12
+ declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>): React.JSX.Element;
13
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>): React.JSX.Element;
14
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
15
+ /**
16
+ * WHEN TO USE
17
+ * - Labelling an icon-only button so its purpose is discoverable on hover/focus
18
+ * - Explaining a truncated or abbreviated value in place, without navigation
19
+ *
20
+ * NOT WHEN
21
+ * - The user needs to click, read at length, or interact with the content —
22
+ * use Popover (click-driven, interactive) or HoverCard (hover, richer preview)
23
+ * - The information is essential to completing the task — never hide
24
+ * required information behind a hover-only tooltip
25
+ *
26
+ * KEY RULES
27
+ * - Requires `TooltipProvider` mounted once at the app root — Tooltip does
28
+ * not wrap itself in one, and without it tooltips silently fail to open
29
+ * - Content is not reachable by keyboard or pointer — never put interactive
30
+ * elements (buttons, links) inside TooltipContent
31
+ * - `sideOffset` defaults to 0; TooltipProvider's `delayDuration` defaults to 0
32
+ * - An icon-only trigger still needs its own `aria-label` — the tooltip text
33
+ * is not a substitute for one
34
+ *
35
+ * USAGE
36
+ * <Tooltip>
37
+ * <TooltipTrigger asChild><Button variant="outline">Hover me</Button></TooltipTrigger>
38
+ * <TooltipContent>Deploys the current branch</TooltipContent>
39
+ * </Tooltip>
40
+ *
41
+ * // Icon-only trigger — aria-label is required regardless of the tooltip
42
+ * <Tooltip>
43
+ * <TooltipTrigger asChild>
44
+ * <Button variant="ghost" iconOnly aria-label="More information">
45
+ * <InfoIcon />
46
+ * </Button>
47
+ * </TooltipTrigger>
48
+ * <TooltipContent>Tokens are defined in oklch</TooltipContent>
49
+ * </Tooltip>
50
+ */
51
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/ui/tooltip.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAKtD,iBAAS,eAAe,CAAC,EACvB,aAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,qBAQxD;AAED,iBAAS,OAAO,CAAC,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,qBAEpD;AAED,iBAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAEvD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAc,EACd,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAsBvD;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,CAAA;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG"}
@@ -0,0 +1,78 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { getPortalContainer } from "../../lib/scope.js";
4
+ import "react";
5
+ import { Tooltip as Tooltip$1 } from "radix-ui";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/components/ui/tooltip.tsx
8
+ function TooltipProvider({ delayDuration = 0, ...props }) {
9
+ return /* @__PURE__ */ jsx(Tooltip$1.Provider, {
10
+ "data-slot": "tooltip-provider",
11
+ delayDuration,
12
+ ...props
13
+ });
14
+ }
15
+ function Tooltip({ ...props }) {
16
+ return /* @__PURE__ */ jsx(Tooltip$1.Root, {
17
+ "data-slot": "tooltip",
18
+ ...props
19
+ });
20
+ }
21
+ function TooltipTrigger({ ...props }) {
22
+ return /* @__PURE__ */ jsx(Tooltip$1.Trigger, {
23
+ "data-slot": "tooltip-trigger",
24
+ ...props
25
+ });
26
+ }
27
+ function TooltipContent({ className, sideOffset = 0, children, ...props }) {
28
+ return /* @__PURE__ */ jsx(Tooltip$1.Portal, {
29
+ container: getPortalContainer(),
30
+ children: /* @__PURE__ */ jsxs(Tooltip$1.Content, {
31
+ "data-slot": "tooltip-content",
32
+ sideOffset,
33
+ className: cn("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-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=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=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:animate-in data-[state=instant-open]:fade-in-0 data-[state=instant-open]:zoom-in-95", className),
34
+ ...props,
35
+ children: [children, /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground" })]
36
+ })
37
+ });
38
+ }
39
+ /**
40
+ * WHEN TO USE
41
+ * - Labelling an icon-only button so its purpose is discoverable on hover/focus
42
+ * - Explaining a truncated or abbreviated value in place, without navigation
43
+ *
44
+ * NOT WHEN
45
+ * - The user needs to click, read at length, or interact with the content —
46
+ * use Popover (click-driven, interactive) or HoverCard (hover, richer preview)
47
+ * - The information is essential to completing the task — never hide
48
+ * required information behind a hover-only tooltip
49
+ *
50
+ * KEY RULES
51
+ * - Requires `TooltipProvider` mounted once at the app root — Tooltip does
52
+ * not wrap itself in one, and without it tooltips silently fail to open
53
+ * - Content is not reachable by keyboard or pointer — never put interactive
54
+ * elements (buttons, links) inside TooltipContent
55
+ * - `sideOffset` defaults to 0; TooltipProvider's `delayDuration` defaults to 0
56
+ * - An icon-only trigger still needs its own `aria-label` — the tooltip text
57
+ * is not a substitute for one
58
+ *
59
+ * USAGE
60
+ * <Tooltip>
61
+ * <TooltipTrigger asChild><Button variant="outline">Hover me</Button></TooltipTrigger>
62
+ * <TooltipContent>Deploys the current branch</TooltipContent>
63
+ * </Tooltip>
64
+ *
65
+ * // Icon-only trigger — aria-label is required regardless of the tooltip
66
+ * <Tooltip>
67
+ * <TooltipTrigger asChild>
68
+ * <Button variant="ghost" iconOnly aria-label="More information">
69
+ * <InfoIcon />
70
+ * </Button>
71
+ * </TooltipTrigger>
72
+ * <TooltipContent>Tokens are defined in oklch</TooltipContent>
73
+ * </Tooltip>
74
+ */
75
+ //#endregion
76
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
77
+
78
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","names":[],"sources":["../../../src/components/ui/tooltip.tsx"],"sourcesContent":["\"use client\"\n\n/**\n * Tooltip — short, non-interactive hover/focus label.\n *\n * Built on the Radix Tooltip primitive. Sets `delayDuration={0}` as the\n * TooltipProvider default (no hover delay) and renders a\n * `TooltipContent` arrow by default.\n */\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { getPortalContainer } from \"@/lib/scope\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal container={getPortalContainer()}>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n // Real states are \"closed\" | \"delayed-open\" | \"instant-open\" —\n // never \"open\" — so entrance is two explicit rules (one per open\n // state Radix actually sets: the normal hover delay, and the\n // no-delay case right after closing an adjacent tooltip), not a\n // bare `data-open:` that matched neither.\n \"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-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=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=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:animate-in data-[state=instant-open]:fade-in-0 data-[state=instant-open]:zoom-in-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\n\n/**\n * WHEN TO USE\n * - Labelling an icon-only button so its purpose is discoverable on hover/focus\n * - Explaining a truncated or abbreviated value in place, without navigation\n *\n * NOT WHEN\n * - The user needs to click, read at length, or interact with the content —\n * use Popover (click-driven, interactive) or HoverCard (hover, richer preview)\n * - The information is essential to completing the task — never hide\n * required information behind a hover-only tooltip\n *\n * KEY RULES\n * - Requires `TooltipProvider` mounted once at the app root — Tooltip does\n * not wrap itself in one, and without it tooltips silently fail to open\n * - Content is not reachable by keyboard or pointer — never put interactive\n * elements (buttons, links) inside TooltipContent\n * - `sideOffset` defaults to 0; TooltipProvider's `delayDuration` defaults to 0\n * - An icon-only trigger still needs its own `aria-label` — the tooltip text\n * is not a substitute for one\n *\n * USAGE\n * <Tooltip>\n * <TooltipTrigger asChild><Button variant=\"outline\">Hover me</Button></TooltipTrigger>\n * <TooltipContent>Deploys the current branch</TooltipContent>\n * </Tooltip>\n *\n * // Icon-only trigger — aria-label is required regardless of the tooltip\n * <Tooltip>\n * <TooltipTrigger asChild>\n * <Button variant=\"ghost\" iconOnly aria-label=\"More information\">\n * <InfoIcon />\n * </Button>\n * </TooltipTrigger>\n * <TooltipContent>Tokens are defined in oklch</TooltipContent>\n * </Tooltip>\n */\n"],"mappings":";;;;;;;AAeA,SAAS,gBAAgB,EACvB,gBAAgB,GAChB,GAAG,SACsD;CACzD,OACE,oBAAC,UAAiB,UAAlB;EACE,aAAU;EACK;EACf,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,QAAQ,EACf,GAAG,SACkD;CACrD,OAAO,oBAAC,UAAiB,MAAlB;EAAuB,aAAU;EAAU,GAAI;CAAQ,CAAA;AAChE;AAEA,SAAS,eAAe,EACtB,GAAG,SACqD;CACxD,OAAO,oBAAC,UAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAEA,SAAS,eAAe,EACtB,WACA,aAAa,GACb,UACA,GAAG,SACqD;CACxD,OACE,oBAAC,UAAiB,QAAlB;EAAyB,WAAW,mBAAmB;EACrD,UAAA,qBAAC,UAAiB,SAAlB;GACE,aAAU;GACE;GACZ,WAAW,GAMT,swBACA,SACF;GACA,GAAI;GAZN,UAAA,CAcG,UACD,oBAAC,UAAiB,OAAlB,EAAwB,WAAU,qGAAsG,CAAA,CAChH;;CACH,CAAA;AAE7B"}
@@ -0,0 +1,2 @@
1
+ export declare function useIsDarkMode(): boolean;
2
+ //# sourceMappingURL=use-dark-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-dark-mode.d.ts","sourceRoot":"","sources":["../../src/hooks/use-dark-mode.ts"],"names":[],"mappings":"AAoCA,wBAAgB,aAAa,YAK5B"}
@@ -0,0 +1,36 @@
1
+ import * as React from "react";
2
+ //#region src/hooks/use-dark-mode.ts
3
+ /**
4
+ * Reports whether the document is currently in dark mode, by observing the
5
+ * `dark` class on `<html>` — the convention this design system's tokens use.
6
+ *
7
+ * This exists so components that need to know the active theme (currently only
8
+ * `Toaster`) don't have to depend on a theme provider. A library shouldn't
9
+ * force `next-themes` (or any specific provider) on its consumers; watching the
10
+ * class works with next-themes, a hand-rolled toggle, or a server-rendered
11
+ * class alike.
12
+ *
13
+ * Only `<html>` is observed. If you apply `dark` to a nested element instead,
14
+ * pass the resolved theme explicitly rather than relying on this hook.
15
+ */
16
+ function subscribe(onStoreChange) {
17
+ const observer = new MutationObserver(onStoreChange);
18
+ observer.observe(document.documentElement, {
19
+ attributes: true,
20
+ attributeFilter: ["class"]
21
+ });
22
+ return () => observer.disconnect();
23
+ }
24
+ function getSnapshot() {
25
+ return document.documentElement.classList.contains("dark");
26
+ }
27
+ function getServerSnapshot() {
28
+ return false;
29
+ }
30
+ function useIsDarkMode() {
31
+ return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
32
+ }
33
+ //#endregion
34
+ export { useIsDarkMode };
35
+
36
+ //# sourceMappingURL=use-dark-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-dark-mode.js","names":[],"sources":["../../src/hooks/use-dark-mode.ts"],"sourcesContent":["import * as React from \"react\"\n\n/**\n * Reports whether the document is currently in dark mode, by observing the\n * `dark` class on `<html>` — the convention this design system's tokens use.\n *\n * This exists so components that need to know the active theme (currently only\n * `Toaster`) don't have to depend on a theme provider. A library shouldn't\n * force `next-themes` (or any specific provider) on its consumers; watching the\n * class works with next-themes, a hand-rolled toggle, or a server-rendered\n * class alike.\n *\n * Only `<html>` is observed. If you apply `dark` to a nested element instead,\n * pass the resolved theme explicitly rather than relying on this hook.\n */\n\nfunction subscribe(onStoreChange: () => void) {\n const observer = new MutationObserver(onStoreChange)\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n })\n return () => observer.disconnect()\n}\n\nfunction getSnapshot() {\n return document.documentElement.classList.contains(\"dark\")\n}\n\n// Dark mode can't be known during SSR — the class is only on the real document.\n// Reporting `false` keeps server output and the first client render in\n// agreement, and useSyncExternalStore corrects it before paint.\nfunction getServerSnapshot() {\n return false\n}\n\nexport function useIsDarkMode() {\n // useSyncExternalStore rather than useState + useEffect: this is a\n // subscription to state React doesn't own, so it needs to be read during\n // render (not after) to avoid a flash of the wrong theme on mount.\n return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,SAAS,UAAU,eAA2B;CAC5C,MAAM,WAAW,IAAI,iBAAiB,aAAa;CACnD,SAAS,QAAQ,SAAS,iBAAiB;EACzC,YAAY;EACZ,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CACD,aAAa,SAAS,WAAW;AACnC;AAEA,SAAS,cAAc;CACrB,OAAO,SAAS,gBAAgB,UAAU,SAAS,MAAM;AAC3D;AAKA,SAAS,oBAAoB;CAC3B,OAAO;AACT;AAEA,SAAgB,gBAAgB;CAI9B,OAAO,MAAM,qBAAqB,WAAW,aAAa,iBAAiB;AAC7E"}
@@ -0,0 +1,2 @@
1
+ export declare function useIsMobile(): boolean;
2
+ //# sourceMappingURL=use-mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mobile.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,YAc1B"}
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ //#region src/hooks/use-mobile.ts
3
+ var MOBILE_BREAKPOINT = 768;
4
+ function useIsMobile() {
5
+ const [isMobile, setIsMobile] = React.useState(void 0);
6
+ React.useEffect(() => {
7
+ const mql = window.matchMedia(`(max-width: 767px)`);
8
+ const onChange = () => {
9
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
10
+ };
11
+ mql.addEventListener("change", onChange);
12
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
13
+ return () => mql.removeEventListener("change", onChange);
14
+ }, []);
15
+ return !!isMobile;
16
+ }
17
+ //#endregion
18
+ export { useIsMobile };
19
+
20
+ //# sourceMappingURL=use-mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.js","names":[],"sources":["../../src/hooks/use-mobile.ts"],"sourcesContent":["import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n"],"mappings":";;AAEA,IAAM,oBAAoB;AAE1B,SAAgB,cAAc;CAC5B,MAAM,CAAC,UAAU,eAAe,MAAM,SAA8B,KAAA,CAAS;CAE7E,MAAM,gBAAgB;EACpB,MAAM,MAAM,OAAO,WAAW,oBAAyC;EACvE,MAAM,iBAAiB;GACrB,YAAY,OAAO,aAAa,iBAAiB;EACnD;EACA,IAAI,iBAAiB,UAAU,QAAQ;EACvC,YAAY,OAAO,aAAa,iBAAiB;EACjD,aAAa,IAAI,oBAAoB,UAAU,QAAQ;CACzD,GAAG,CAAC,CAAC;CAEL,OAAO,CAAC,CAAC;AACX"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Magic Masala design system — public entry point.
3
+ *
4
+ * Every component lives in its own module under `components/ui/`, and the
5
+ * library build preserves that structure in `dist/`. Re-exporting through this
6
+ * barrel is therefore tree-shakeable: importing `Button` pulls in `button.js`
7
+ * and its dependencies, not all 61 components.
8
+ *
9
+ * Generated from the files in src/components/ui — verified collision-free
10
+ * across all 356 exported names, which is what makes `export *` safe here.
11
+ */
12
+ export { cn } from "./lib/utils";
13
+ export { M2DS_ROOT_ATTRIBUTE, M2DS_PORTAL_ATTRIBUTE, rootScopeProps, portalScopeProps, getPortalContainer, } from "./lib/scope";
14
+ export { useIsMobile } from "./hooks/use-mobile";
15
+ export { useIsDarkMode } from "./hooks/use-dark-mode";
16
+ export * from "./components/ui/accordion";
17
+ export * from "./components/ui/ai-avatar";
18
+ export * from "./components/ui/ai-label";
19
+ export * from "./components/ui/ai-sparkle";
20
+ export * from "./components/ui/alert-dialog";
21
+ export * from "./components/ui/alert";
22
+ export * from "./components/ui/aspect-ratio";
23
+ export * from "./components/ui/attachment";
24
+ export * from "./components/ui/avatar";
25
+ export * from "./components/ui/badge";
26
+ export * from "./components/ui/breadcrumb";
27
+ export * from "./components/ui/browser-tabs";
28
+ export * from "./components/ui/bubble";
29
+ export * from "./components/ui/button-group";
30
+ export * from "./components/ui/button";
31
+ export * from "./components/ui/calendar";
32
+ export * from "./components/ui/card";
33
+ export * from "./components/ui/carousel";
34
+ export * from "./components/ui/checkbox";
35
+ export * from "./components/ui/collapsible";
36
+ export * from "./components/ui/combobox";
37
+ export * from "./components/ui/command";
38
+ export * from "./components/ui/context-menu";
39
+ export * from "./components/ui/count-badge";
40
+ export * from "./components/ui/data-table";
41
+ export * from "./components/ui/dialog";
42
+ export * from "./components/ui/direction";
43
+ export * from "./components/ui/drawer";
44
+ export * from "./components/ui/dropdown-menu";
45
+ export * from "./components/ui/dropzone";
46
+ export * from "./components/ui/empty";
47
+ export * from "./components/ui/field";
48
+ export * from "./components/ui/hover-card";
49
+ export * from "./components/ui/input-group";
50
+ export * from "./components/ui/input-otp";
51
+ export * from "./components/ui/input";
52
+ export * from "./components/ui/item";
53
+ export * from "./components/ui/kbd";
54
+ export * from "./components/ui/key-value-pair";
55
+ export * from "./components/ui/label";
56
+ export * from "./components/ui/marker";
57
+ export * from "./components/ui/menubar";
58
+ export * from "./components/ui/message-scroller";
59
+ export * from "./components/ui/message";
60
+ export * from "./components/ui/meta-list";
61
+ export * from "./components/ui/native-select";
62
+ export * from "./components/ui/navigation-menu";
63
+ export * from "./components/ui/page-header";
64
+ export * from "./components/ui/pagination";
65
+ export * from "./components/ui/popover";
66
+ export * from "./components/ui/progress";
67
+ export * from "./components/ui/questionnaire";
68
+ export * from "./components/ui/radio-group";
69
+ export * from "./components/ui/resizable";
70
+ export * from "./components/ui/scroll-area";
71
+ export * from "./components/ui/select";
72
+ export * from "./components/ui/separator";
73
+ export * from "./components/ui/sheet";
74
+ export * from "./components/ui/sidebar";
75
+ export * from "./components/ui/skeleton";
76
+ export * from "./components/ui/slider";
77
+ export * from "./components/ui/sonner";
78
+ export * from "./components/ui/spinner";
79
+ export * from "./components/ui/stepper";
80
+ export * from "./components/ui/switch";
81
+ export * from "./components/ui/table";
82
+ export * from "./components/ui/tabs";
83
+ export * from "./components/ui/textarea";
84
+ export * from "./components/ui/time-picker";
85
+ export * from "./components/ui/toggle-group";
86
+ export * from "./components/ui/toggle";
87
+ export * from "./components/ui/tooltip";
88
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGrD,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kCAAkC,CAAA;AAChD,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA"}