@byldpartners/ui 0.0.1

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 (413) hide show
  1. package/README.md +284 -0
  2. package/dist/chunk-464G63BO.cjs +224 -0
  3. package/dist/chunk-464G63BO.cjs.map +1 -0
  4. package/dist/chunk-JFJY6DZZ.js +224 -0
  5. package/dist/chunk-JFJY6DZZ.js.map +1 -0
  6. package/dist/index.cjs +3894 -0
  7. package/dist/index.cjs.map +1 -0
  8. package/dist/index.d.cts +1543 -0
  9. package/dist/index.d.ts +1543 -0
  10. package/dist/index.js +3894 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/theme/web.cjs +16 -0
  13. package/dist/theme/web.cjs.map +1 -0
  14. package/dist/theme/web.d.cts +81 -0
  15. package/dist/theme/web.d.ts +81 -0
  16. package/dist/theme/web.js +16 -0
  17. package/dist/theme/web.js.map +1 -0
  18. package/package.json +117 -0
  19. package/src/components/Accordion/Accordion.native.tsx +195 -0
  20. package/src/components/Accordion/Accordion.stories.tsx +49 -0
  21. package/src/components/Accordion/Accordion.types.ts +28 -0
  22. package/src/components/Accordion/Accordion.web.tsx +61 -0
  23. package/src/components/Accordion/index.native.ts +12 -0
  24. package/src/components/Accordion/index.ts +12 -0
  25. package/src/components/Accordion/useAccordion.test.ts +114 -0
  26. package/src/components/Accordion/useAccordion.ts +65 -0
  27. package/src/components/Alert/Alert.native.tsx +86 -0
  28. package/src/components/Alert/Alert.stories.tsx +43 -0
  29. package/src/components/Alert/Alert.types.ts +17 -0
  30. package/src/components/Alert/Alert.web.test.tsx +49 -0
  31. package/src/components/Alert/Alert.web.tsx +59 -0
  32. package/src/components/Alert/index.native.ts +2 -0
  33. package/src/components/Alert/index.ts +2 -0
  34. package/src/components/Alert/useAlert.test.ts +19 -0
  35. package/src/components/Alert/useAlert.ts +10 -0
  36. package/src/components/AlertDialog/AlertDialog.native.tsx +281 -0
  37. package/src/components/AlertDialog/AlertDialog.stories.tsx +49 -0
  38. package/src/components/AlertDialog/AlertDialog.types.ts +49 -0
  39. package/src/components/AlertDialog/AlertDialog.web.tsx +138 -0
  40. package/src/components/AlertDialog/index.native.ts +22 -0
  41. package/src/components/AlertDialog/index.ts +24 -0
  42. package/src/components/AlertDialog/useAlertDialog.test.ts +40 -0
  43. package/src/components/AlertDialog/useAlertDialog.ts +36 -0
  44. package/src/components/AspectRatio/AspectRatio.native.tsx +37 -0
  45. package/src/components/AspectRatio/AspectRatio.stories.tsx +44 -0
  46. package/src/components/AspectRatio/AspectRatio.types.ts +5 -0
  47. package/src/components/AspectRatio/AspectRatio.web.tsx +5 -0
  48. package/src/components/AspectRatio/index.native.ts +2 -0
  49. package/src/components/AspectRatio/index.ts +2 -0
  50. package/src/components/AspectRatio/useAspectRatio.test.ts +40 -0
  51. package/src/components/AspectRatio/useAspectRatio.ts +12 -0
  52. package/src/components/Avatar/Avatar.native.tsx +95 -0
  53. package/src/components/Avatar/Avatar.stories.tsx +31 -0
  54. package/src/components/Avatar/Avatar.types.ts +17 -0
  55. package/src/components/Avatar/Avatar.web.tsx +47 -0
  56. package/src/components/Avatar/index.native.ts +2 -0
  57. package/src/components/Avatar/index.ts +2 -0
  58. package/src/components/Avatar/useAvatarImage.test.ts +66 -0
  59. package/src/components/Avatar/useAvatarImage.ts +31 -0
  60. package/src/components/Badge/Badge.native.tsx +64 -0
  61. package/src/components/Badge/Badge.stories.tsx +42 -0
  62. package/src/components/Badge/Badge.types.ts +7 -0
  63. package/src/components/Badge/Badge.web.test.tsx +40 -0
  64. package/src/components/Badge/Badge.web.tsx +41 -0
  65. package/src/components/Badge/index.native.ts +2 -0
  66. package/src/components/Badge/index.ts +2 -0
  67. package/src/components/Breadcrumb/Breadcrumb.native.tsx +158 -0
  68. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +41 -0
  69. package/src/components/Breadcrumb/Breadcrumb.types.ts +37 -0
  70. package/src/components/Breadcrumb/Breadcrumb.web.tsx +125 -0
  71. package/src/components/Breadcrumb/index.native.ts +18 -0
  72. package/src/components/Breadcrumb/index.ts +18 -0
  73. package/src/components/Button/Button.native.tsx +118 -0
  74. package/src/components/Button/Button.stories.tsx +97 -0
  75. package/src/components/Button/Button.types.ts +19 -0
  76. package/src/components/Button/Button.web.test.tsx +69 -0
  77. package/src/components/Button/Button.web.tsx +55 -0
  78. package/src/components/Button/index.native.ts +2 -0
  79. package/src/components/Button/index.ts +2 -0
  80. package/src/components/Calendar/Calendar.native.tsx +108 -0
  81. package/src/components/Calendar/Calendar.stories.tsx +18 -0
  82. package/src/components/Calendar/Calendar.types.ts +8 -0
  83. package/src/components/Calendar/Calendar.web.tsx +143 -0
  84. package/src/components/Calendar/index.native.ts +2 -0
  85. package/src/components/Calendar/index.ts +2 -0
  86. package/src/components/Calendar/useCalendar.test.ts +145 -0
  87. package/src/components/Calendar/useCalendar.ts +94 -0
  88. package/src/components/Card/Card.native.tsx +42 -0
  89. package/src/components/Card/Card.stories.tsx +41 -0
  90. package/src/components/Card/Card.types.ts +4 -0
  91. package/src/components/Card/Card.web.test.tsx +29 -0
  92. package/src/components/Card/Card.web.tsx +23 -0
  93. package/src/components/Card/index.native.ts +2 -0
  94. package/src/components/Card/index.ts +2 -0
  95. package/src/components/Carousel/Carousel.native.tsx +193 -0
  96. package/src/components/Carousel/Carousel.stories.tsx +51 -0
  97. package/src/components/Carousel/Carousel.types.ts +29 -0
  98. package/src/components/Carousel/Carousel.web.tsx +272 -0
  99. package/src/components/Carousel/index.native.ts +2 -0
  100. package/src/components/Carousel/index.ts +2 -0
  101. package/src/components/Carousel/useCarousel.test.ts +111 -0
  102. package/src/components/Carousel/useCarousel.ts +48 -0
  103. package/src/components/Chart/Chart.native.tsx +7 -0
  104. package/src/components/Chart/Chart.stories.tsx +57 -0
  105. package/src/components/Chart/Chart.types.ts +13 -0
  106. package/src/components/Chart/Chart.web.tsx +36 -0
  107. package/src/components/Chart/index.native.ts +2 -0
  108. package/src/components/Chart/index.ts +3 -0
  109. package/src/components/Checkbox/Checkbox.native.tsx +47 -0
  110. package/src/components/Checkbox/Checkbox.stories.tsx +30 -0
  111. package/src/components/Checkbox/Checkbox.types.ts +12 -0
  112. package/src/components/Checkbox/Checkbox.web.tsx +37 -0
  113. package/src/components/Checkbox/index.native.ts +2 -0
  114. package/src/components/Checkbox/index.ts +2 -0
  115. package/src/components/Checkbox/useCheckbox.test.ts +66 -0
  116. package/src/components/Checkbox/useCheckbox.ts +37 -0
  117. package/src/components/Collapsible/Collapsible.native.tsx +111 -0
  118. package/src/components/Collapsible/Collapsible.stories.tsx +35 -0
  119. package/src/components/Collapsible/Collapsible.types.ts +19 -0
  120. package/src/components/Collapsible/Collapsible.web.tsx +9 -0
  121. package/src/components/Collapsible/index.native.ts +2 -0
  122. package/src/components/Collapsible/index.ts +2 -0
  123. package/src/components/Collapsible/useCollapsible.test.ts +53 -0
  124. package/src/components/Collapsible/useCollapsible.ts +38 -0
  125. package/src/components/Combobox/Combobox.native.tsx +146 -0
  126. package/src/components/Combobox/Combobox.stories.tsx +43 -0
  127. package/src/components/Combobox/Combobox.types.ts +15 -0
  128. package/src/components/Combobox/Combobox.web.tsx +145 -0
  129. package/src/components/Combobox/index.native.ts +2 -0
  130. package/src/components/Combobox/index.ts +2 -0
  131. package/src/components/Combobox/useCombobox.test.ts +59 -0
  132. package/src/components/Combobox/useCombobox.ts +42 -0
  133. package/src/components/Command/Command.native.tsx +7 -0
  134. package/src/components/Command/Command.stories.tsx +37 -0
  135. package/src/components/Command/Command.types.ts +43 -0
  136. package/src/components/Command/Command.web.tsx +134 -0
  137. package/src/components/Command/index.native.ts +2 -0
  138. package/src/components/Command/index.ts +18 -0
  139. package/src/components/ContextMenu/ContextMenu.native.tsx +241 -0
  140. package/src/components/ContextMenu/ContextMenu.stories.tsx +43 -0
  141. package/src/components/ContextMenu/ContextMenu.types.ts +69 -0
  142. package/src/components/ContextMenu/ContextMenu.web.tsx +220 -0
  143. package/src/components/ContextMenu/index.native.ts +28 -0
  144. package/src/components/ContextMenu/index.ts +2 -0
  145. package/src/components/ContextMenu/useContextMenu.test.ts +44 -0
  146. package/src/components/ContextMenu/useContextMenu.ts +36 -0
  147. package/src/components/DataTable/DataTable.native.tsx +85 -0
  148. package/src/components/DataTable/DataTable.stories.tsx +72 -0
  149. package/src/components/DataTable/DataTable.types.ts +16 -0
  150. package/src/components/DataTable/DataTable.web.tsx +135 -0
  151. package/src/components/DataTable/index.native.ts +2 -0
  152. package/src/components/DataTable/index.ts +3 -0
  153. package/src/components/DataTable/useDataTable.test.ts +98 -0
  154. package/src/components/DataTable/useDataTable.ts +68 -0
  155. package/src/components/DatePicker/DatePicker.native.tsx +82 -0
  156. package/src/components/DatePicker/DatePicker.stories.tsx +68 -0
  157. package/src/components/DatePicker/DatePicker.types.ts +7 -0
  158. package/src/components/DatePicker/DatePicker.web.tsx +85 -0
  159. package/src/components/DatePicker/index.native.ts +2 -0
  160. package/src/components/DatePicker/index.ts +2 -0
  161. package/src/components/DatePicker/useDatePicker.test.ts +62 -0
  162. package/src/components/DatePicker/useDatePicker.ts +54 -0
  163. package/src/components/Dialog/Dialog.native.tsx +188 -0
  164. package/src/components/Dialog/Dialog.stories.tsx +42 -0
  165. package/src/components/Dialog/Dialog.types.ts +45 -0
  166. package/src/components/Dialog/Dialog.web.tsx +126 -0
  167. package/src/components/Dialog/index.native.ts +2 -0
  168. package/src/components/Dialog/index.ts +2 -0
  169. package/src/components/Dialog/useDialog.test.ts +44 -0
  170. package/src/components/Dialog/useDialog.ts +36 -0
  171. package/src/components/Drawer/Drawer.native.tsx +244 -0
  172. package/src/components/Drawer/Drawer.stories.tsx +39 -0
  173. package/src/components/Drawer/Drawer.types.ts +44 -0
  174. package/src/components/Drawer/Drawer.web.tsx +133 -0
  175. package/src/components/Drawer/index.native.ts +2 -0
  176. package/src/components/Drawer/index.ts +2 -0
  177. package/src/components/Drawer/useDrawer.test.ts +33 -0
  178. package/src/components/Drawer/useDrawer.ts +19 -0
  179. package/src/components/DropdownMenu/DropdownMenu.native.tsx +272 -0
  180. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +36 -0
  181. package/src/components/DropdownMenu/DropdownMenu.types.ts +73 -0
  182. package/src/components/DropdownMenu/DropdownMenu.web.tsx +225 -0
  183. package/src/components/DropdownMenu/index.native.ts +2 -0
  184. package/src/components/DropdownMenu/index.ts +2 -0
  185. package/src/components/DropdownMenu/useDropdownMenu.test.ts +44 -0
  186. package/src/components/DropdownMenu/useDropdownMenu.ts +36 -0
  187. package/src/components/Form/Form.native.tsx +98 -0
  188. package/src/components/Form/Form.stories.tsx +83 -0
  189. package/src/components/Form/Form.types.ts +35 -0
  190. package/src/components/Form/Form.web.test.tsx +73 -0
  191. package/src/components/Form/Form.web.tsx +111 -0
  192. package/src/components/Form/index.native.ts +18 -0
  193. package/src/components/Form/index.ts +18 -0
  194. package/src/components/Form/useFormField.test.ts +25 -0
  195. package/src/components/Form/useFormField.ts +22 -0
  196. package/src/components/HoverCard/HoverCard.native.tsx +15 -0
  197. package/src/components/HoverCard/HoverCard.stories.tsx +34 -0
  198. package/src/components/HoverCard/HoverCard.types.ts +18 -0
  199. package/src/components/HoverCard/HoverCard.web.test.tsx +35 -0
  200. package/src/components/HoverCard/HoverCard.web.tsx +26 -0
  201. package/src/components/HoverCard/index.native.ts +2 -0
  202. package/src/components/HoverCard/index.ts +2 -0
  203. package/src/components/Icon/Icon.native.tsx +27 -0
  204. package/src/components/Icon/index.native.ts +2 -0
  205. package/src/components/Input/Input.native.tsx +32 -0
  206. package/src/components/Input/Input.stories.tsx +42 -0
  207. package/src/components/Input/Input.types.ts +10 -0
  208. package/src/components/Input/Input.web.test.tsx +39 -0
  209. package/src/components/Input/Input.web.tsx +21 -0
  210. package/src/components/Input/index.native.ts +2 -0
  211. package/src/components/Input/index.ts +2 -0
  212. package/src/components/InputOTP/InputOTP.native.tsx +93 -0
  213. package/src/components/InputOTP/InputOTP.stories.tsx +56 -0
  214. package/src/components/InputOTP/InputOTP.types.ts +14 -0
  215. package/src/components/InputOTP/InputOTP.web.tsx +128 -0
  216. package/src/components/InputOTP/index.native.ts +2 -0
  217. package/src/components/InputOTP/index.ts +2 -0
  218. package/src/components/InputOTP/useInputOTP.test.ts +97 -0
  219. package/src/components/InputOTP/useInputOTP.ts +69 -0
  220. package/src/components/Label/Label.native.tsx +25 -0
  221. package/src/components/Label/Label.stories.tsx +20 -0
  222. package/src/components/Label/Label.types.ts +6 -0
  223. package/src/components/Label/Label.web.test.tsx +27 -0
  224. package/src/components/Label/Label.web.tsx +23 -0
  225. package/src/components/Label/index.native.ts +2 -0
  226. package/src/components/Label/index.ts +2 -0
  227. package/src/components/Menubar/Menubar.native.tsx +287 -0
  228. package/src/components/Menubar/Menubar.stories.tsx +46 -0
  229. package/src/components/Menubar/Menubar.types.ts +70 -0
  230. package/src/components/Menubar/Menubar.web.tsx +256 -0
  231. package/src/components/Menubar/index.native.ts +28 -0
  232. package/src/components/Menubar/index.ts +2 -0
  233. package/src/components/Menubar/useMenubar.test.ts +35 -0
  234. package/src/components/Menubar/useMenubar.ts +19 -0
  235. package/src/components/NavigationMenu/NavigationMenu.native.tsx +128 -0
  236. package/src/components/NavigationMenu/NavigationMenu.stories.tsx +35 -0
  237. package/src/components/NavigationMenu/NavigationMenu.types.ts +35 -0
  238. package/src/components/NavigationMenu/NavigationMenu.web.test.tsx +56 -0
  239. package/src/components/NavigationMenu/NavigationMenu.web.tsx +134 -0
  240. package/src/components/NavigationMenu/index.native.ts +16 -0
  241. package/src/components/NavigationMenu/index.ts +2 -0
  242. package/src/components/Pagination/Pagination.native.tsx +192 -0
  243. package/src/components/Pagination/Pagination.stories.tsx +49 -0
  244. package/src/components/Pagination/Pagination.types.ts +41 -0
  245. package/src/components/Pagination/Pagination.web.test.tsx +101 -0
  246. package/src/components/Pagination/Pagination.web.tsx +185 -0
  247. package/src/components/Pagination/index.native.ts +19 -0
  248. package/src/components/Pagination/index.ts +2 -0
  249. package/src/components/Popover/Popover.native.tsx +97 -0
  250. package/src/components/Popover/Popover.stories.tsx +25 -0
  251. package/src/components/Popover/Popover.types.ts +20 -0
  252. package/src/components/Popover/Popover.web.tsx +30 -0
  253. package/src/components/Popover/index.native.ts +2 -0
  254. package/src/components/Popover/index.ts +2 -0
  255. package/src/components/Popover/usePopover.test.ts +40 -0
  256. package/src/components/Popover/usePopover.ts +36 -0
  257. package/src/components/Progress/Progress.native.tsx +65 -0
  258. package/src/components/Progress/Progress.stories.tsx +36 -0
  259. package/src/components/Progress/Progress.types.ts +6 -0
  260. package/src/components/Progress/Progress.web.test.tsx +27 -0
  261. package/src/components/Progress/Progress.web.tsx +30 -0
  262. package/src/components/Progress/index.native.ts +2 -0
  263. package/src/components/Progress/index.ts +2 -0
  264. package/src/components/Progress/useProgress.test.ts +44 -0
  265. package/src/components/Progress/useProgress.ts +11 -0
  266. package/src/components/RadioGroup/RadioGroup.native.tsx +96 -0
  267. package/src/components/RadioGroup/RadioGroup.stories.tsx +31 -0
  268. package/src/components/RadioGroup/RadioGroup.types.ts +16 -0
  269. package/src/components/RadioGroup/RadioGroup.web.tsx +47 -0
  270. package/src/components/RadioGroup/index.native.ts +2 -0
  271. package/src/components/RadioGroup/index.ts +2 -0
  272. package/src/components/RadioGroup/useRadioGroup.test.ts +50 -0
  273. package/src/components/RadioGroup/useRadioGroup.ts +40 -0
  274. package/src/components/ResizablePanel/ResizablePanel.native.tsx +75 -0
  275. package/src/components/ResizablePanel/ResizablePanel.stories.tsx +84 -0
  276. package/src/components/ResizablePanel/ResizablePanel.types.ts +20 -0
  277. package/src/components/ResizablePanel/ResizablePanel.web.test.tsx +52 -0
  278. package/src/components/ResizablePanel/ResizablePanel.web.tsx +77 -0
  279. package/src/components/ResizablePanel/index.native.ts +2 -0
  280. package/src/components/ResizablePanel/index.ts +2 -0
  281. package/src/components/ScrollArea/ScrollArea.native.tsx +43 -0
  282. package/src/components/ScrollArea/ScrollArea.stories.tsx +46 -0
  283. package/src/components/ScrollArea/ScrollArea.types.ts +11 -0
  284. package/src/components/ScrollArea/ScrollArea.web.test.tsx +19 -0
  285. package/src/components/ScrollArea/ScrollArea.web.tsx +45 -0
  286. package/src/components/ScrollArea/index.native.ts +2 -0
  287. package/src/components/ScrollArea/index.ts +2 -0
  288. package/src/components/Select/Select.native.tsx +203 -0
  289. package/src/components/Select/Select.stories.tsx +33 -0
  290. package/src/components/Select/Select.types.ts +14 -0
  291. package/src/components/Select/Select.web.tsx +204 -0
  292. package/src/components/Select/index.native.ts +11 -0
  293. package/src/components/Select/index.ts +2 -0
  294. package/src/components/Select/useSelect.test.ts +38 -0
  295. package/src/components/Select/useSelect.ts +33 -0
  296. package/src/components/Separator/Separator.native.tsx +38 -0
  297. package/src/components/Separator/Separator.stories.tsx +34 -0
  298. package/src/components/Separator/Separator.types.ts +7 -0
  299. package/src/components/Separator/Separator.web.test.tsx +32 -0
  300. package/src/components/Separator/Separator.web.tsx +38 -0
  301. package/src/components/Separator/index.native.ts +2 -0
  302. package/src/components/Separator/index.ts +2 -0
  303. package/src/components/Sheet/Sheet.native.tsx +246 -0
  304. package/src/components/Sheet/Sheet.stories.tsx +43 -0
  305. package/src/components/Sheet/Sheet.types.ts +47 -0
  306. package/src/components/Sheet/Sheet.web.tsx +144 -0
  307. package/src/components/Sheet/index.native.ts +2 -0
  308. package/src/components/Sheet/index.ts +2 -0
  309. package/src/components/Sheet/useSheet.test.ts +40 -0
  310. package/src/components/Sheet/useSheet.ts +19 -0
  311. package/src/components/Sidebar/Sidebar.native.tsx +7 -0
  312. package/src/components/Sidebar/Sidebar.stories.tsx +100 -0
  313. package/src/components/Sidebar/Sidebar.types.ts +30 -0
  314. package/src/components/Sidebar/Sidebar.web.test.tsx +74 -0
  315. package/src/components/Sidebar/Sidebar.web.tsx +200 -0
  316. package/src/components/Sidebar/index.native.ts +2 -0
  317. package/src/components/Sidebar/index.ts +2 -0
  318. package/src/components/Sidebar/useSidebar.test.ts +51 -0
  319. package/src/components/Sidebar/useSidebar.ts +26 -0
  320. package/src/components/Skeleton/Skeleton.native.tsx +45 -0
  321. package/src/components/Skeleton/Skeleton.stories.tsx +32 -0
  322. package/src/components/Skeleton/Skeleton.types.ts +6 -0
  323. package/src/components/Skeleton/Skeleton.web.test.tsx +35 -0
  324. package/src/components/Skeleton/Skeleton.web.tsx +18 -0
  325. package/src/components/Skeleton/index.native.ts +2 -0
  326. package/src/components/Skeleton/index.ts +2 -0
  327. package/src/components/Slider/Slider.native.tsx +98 -0
  328. package/src/components/Slider/Slider.stories.tsx +23 -0
  329. package/src/components/Slider/Slider.types.ts +10 -0
  330. package/src/components/Slider/Slider.web.tsx +25 -0
  331. package/src/components/Slider/index.native.ts +2 -0
  332. package/src/components/Slider/index.ts +2 -0
  333. package/src/components/Slider/useSlider.test.ts +68 -0
  334. package/src/components/Slider/useSlider.ts +55 -0
  335. package/src/components/Switch/Switch.native.tsx +36 -0
  336. package/src/components/Switch/Switch.stories.tsx +28 -0
  337. package/src/components/Switch/Switch.types.ts +7 -0
  338. package/src/components/Switch/Switch.web.test.tsx +44 -0
  339. package/src/components/Switch/Switch.web.tsx +26 -0
  340. package/src/components/Switch/index.native.ts +2 -0
  341. package/src/components/Switch/index.ts +2 -0
  342. package/src/components/Table/Table.native.tsx +165 -0
  343. package/src/components/Table/Table.stories.tsx +54 -0
  344. package/src/components/Table/Table.types.ts +41 -0
  345. package/src/components/Table/Table.web.test.tsx +77 -0
  346. package/src/components/Table/Table.web.tsx +119 -0
  347. package/src/components/Table/index.native.ts +2 -0
  348. package/src/components/Table/index.ts +2 -0
  349. package/src/components/Tabs/Tabs.native.tsx +136 -0
  350. package/src/components/Tabs/Tabs.stories.tsx +35 -0
  351. package/src/components/Tabs/Tabs.types.ts +25 -0
  352. package/src/components/Tabs/Tabs.web.tsx +52 -0
  353. package/src/components/Tabs/index.native.ts +2 -0
  354. package/src/components/Tabs/index.ts +2 -0
  355. package/src/components/Tabs/useTabs.test.ts +40 -0
  356. package/src/components/Tabs/useTabs.ts +20 -0
  357. package/src/components/Textarea/Textarea.native.tsx +33 -0
  358. package/src/components/Textarea/Textarea.stories.tsx +27 -0
  359. package/src/components/Textarea/Textarea.types.ts +10 -0
  360. package/src/components/Textarea/Textarea.web.test.tsx +33 -0
  361. package/src/components/Textarea/Textarea.web.tsx +21 -0
  362. package/src/components/Textarea/index.native.ts +2 -0
  363. package/src/components/Textarea/index.ts +2 -0
  364. package/src/components/Toast/Toast.native.tsx +267 -0
  365. package/src/components/Toast/Toast.stories.tsx +34 -0
  366. package/src/components/Toast/Toast.types.ts +50 -0
  367. package/src/components/Toast/Toast.web.tsx +282 -0
  368. package/src/components/Toast/index.native.ts +17 -0
  369. package/src/components/Toast/index.ts +11 -0
  370. package/src/components/Toast/useToast.test.ts +122 -0
  371. package/src/components/Toast/useToast.ts +64 -0
  372. package/src/components/Toggle/Toggle.native.tsx +70 -0
  373. package/src/components/Toggle/Toggle.stories.tsx +34 -0
  374. package/src/components/Toggle/Toggle.types.ts +13 -0
  375. package/src/components/Toggle/Toggle.web.tsx +42 -0
  376. package/src/components/Toggle/index.native.ts +2 -0
  377. package/src/components/Toggle/index.ts +2 -0
  378. package/src/components/Toggle/useToggle.test.ts +48 -0
  379. package/src/components/Toggle/useToggle.ts +37 -0
  380. package/src/components/ToggleGroup/ToggleGroup.native.tsx +103 -0
  381. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +24 -0
  382. package/src/components/ToggleGroup/ToggleGroup.types.ts +22 -0
  383. package/src/components/ToggleGroup/ToggleGroup.web.tsx +56 -0
  384. package/src/components/ToggleGroup/index.native.ts +2 -0
  385. package/src/components/ToggleGroup/index.ts +2 -0
  386. package/src/components/ToggleGroup/useToggleGroup.test.ts +79 -0
  387. package/src/components/ToggleGroup/useToggleGroup.ts +63 -0
  388. package/src/components/Tooltip/Tooltip.native.tsx +7 -0
  389. package/src/components/Tooltip/Tooltip.stories.tsx +32 -0
  390. package/src/components/Tooltip/Tooltip.types.ts +27 -0
  391. package/src/components/Tooltip/Tooltip.web.test.tsx +42 -0
  392. package/src/components/Tooltip/Tooltip.web.tsx +29 -0
  393. package/src/components/Tooltip/index.native.ts +2 -0
  394. package/src/components/Tooltip/index.ts +2 -0
  395. package/src/components/index.native.ts +50 -0
  396. package/src/components/index.ts +49 -0
  397. package/src/hooks/useControllableState.test.ts +89 -0
  398. package/src/hooks/useControllableState.ts +37 -0
  399. package/src/index.native.ts +20 -0
  400. package/src/index.ts +12 -0
  401. package/src/theme/native.ts +211 -0
  402. package/src/theme/presets/aurora.ts +56 -0
  403. package/src/theme/presets/dark.ts +30 -0
  404. package/src/theme/presets/default.ts +30 -0
  405. package/src/theme/theme.types.ts +64 -0
  406. package/src/theme/tokens.ts +31 -0
  407. package/src/theme/web.ts +123 -0
  408. package/src/uniwind.d.ts +38 -0
  409. package/src/utils/cn.native.ts +10 -0
  410. package/src/utils/cn.test.ts +28 -0
  411. package/src/utils/cn.ts +6 -0
  412. package/src/utils/glass.native.ts +22 -0
  413. package/src/utils/withGlass.native.tsx +59 -0
package/dist/index.js ADDED
@@ -0,0 +1,3894 @@
1
+ import {
2
+ ThemeProvider,
3
+ auroraPreset,
4
+ darkPreset,
5
+ defaultPreset,
6
+ useTheme
7
+ } from "./chunk-JFJY6DZZ.js";
8
+
9
+ // src/components/Accordion/Accordion.web.tsx
10
+ import { forwardRef } from "react";
11
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
12
+
13
+ // src/utils/cn.ts
14
+ import { clsx } from "clsx";
15
+ import { twMerge } from "tailwind-merge";
16
+ function cn(...inputs) {
17
+ return twMerge(clsx(inputs));
18
+ }
19
+
20
+ // src/components/Accordion/Accordion.web.tsx
21
+ import { jsx, jsxs } from "react/jsx-runtime";
22
+ function ChevronDownIcon(props) {
23
+ return /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" }) });
24
+ }
25
+ var Accordion = AccordionPrimitive.Root;
26
+ var AccordionItem = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
27
+ AccordionPrimitive.Item,
28
+ {
29
+ ref,
30
+ className: cn("border-b", className),
31
+ ...props
32
+ }
33
+ ));
34
+ AccordionItem.displayName = "AccordionItem";
35
+ var AccordionTrigger = forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
36
+ AccordionPrimitive.Trigger,
37
+ {
38
+ ref,
39
+ className: cn(
40
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
41
+ className
42
+ ),
43
+ ...props,
44
+ children: [
45
+ children,
46
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
47
+ ]
48
+ }
49
+ ) }));
50
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
51
+ var AccordionContent = forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
52
+ AccordionPrimitive.Content,
53
+ {
54
+ ref,
55
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
56
+ ...props,
57
+ children: /* @__PURE__ */ jsx("div", { className: cn("pb-4 pt-0", className), children })
58
+ }
59
+ ));
60
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
61
+
62
+ // src/components/Alert/Alert.web.tsx
63
+ import { forwardRef as forwardRef2 } from "react";
64
+ import { cva } from "class-variance-authority";
65
+ import { jsx as jsx2 } from "react/jsx-runtime";
66
+ var alertVariants = cva(
67
+ "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg~*]:pl-7",
68
+ {
69
+ variants: {
70
+ variant: {
71
+ default: "bg-background text-foreground",
72
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
73
+ }
74
+ },
75
+ defaultVariants: {
76
+ variant: "default"
77
+ }
78
+ }
79
+ );
80
+ var Alert = forwardRef2(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx2(
81
+ "div",
82
+ {
83
+ ref,
84
+ role: "alert",
85
+ className: cn(alertVariants({ variant }), className),
86
+ ...props
87
+ }
88
+ ));
89
+ Alert.displayName = "Alert";
90
+ var AlertTitle = forwardRef2(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
91
+ "h5",
92
+ {
93
+ ref,
94
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
95
+ ...props
96
+ }
97
+ ));
98
+ AlertTitle.displayName = "AlertTitle";
99
+ var AlertDescription = forwardRef2(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
100
+ "div",
101
+ {
102
+ ref,
103
+ className: cn("text-sm [&_p]:leading-relaxed", className),
104
+ ...props
105
+ }
106
+ ));
107
+ AlertDescription.displayName = "AlertDescription";
108
+
109
+ // src/components/AlertDialog/AlertDialog.web.tsx
110
+ import { forwardRef as forwardRef4 } from "react";
111
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
112
+
113
+ // src/components/Button/Button.web.tsx
114
+ import { forwardRef as forwardRef3 } from "react";
115
+ import { Slot } from "@radix-ui/react-slot";
116
+ import { cva as cva2 } from "class-variance-authority";
117
+ import { jsx as jsx3 } from "react/jsx-runtime";
118
+ var buttonVariants = cva2(
119
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
120
+ {
121
+ variants: {
122
+ variant: {
123
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
124
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
125
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
126
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
127
+ ghost: "hover:bg-accent hover:text-accent-foreground",
128
+ link: "text-primary underline-offset-4 hover:underline"
129
+ },
130
+ size: {
131
+ default: "h-9 px-4 py-2",
132
+ sm: "h-8 rounded-md px-3 text-xs",
133
+ lg: "h-10 rounded-md px-8",
134
+ icon: "h-9 w-9"
135
+ }
136
+ },
137
+ defaultVariants: {
138
+ variant: "default",
139
+ size: "default"
140
+ }
141
+ }
142
+ );
143
+ var Button = forwardRef3(
144
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
145
+ const Comp = asChild ? Slot : "button";
146
+ return /* @__PURE__ */ jsx3(
147
+ Comp,
148
+ {
149
+ className: cn(buttonVariants({ variant, size, className })),
150
+ ref,
151
+ ...props
152
+ }
153
+ );
154
+ }
155
+ );
156
+ Button.displayName = "Button";
157
+
158
+ // src/components/AlertDialog/AlertDialog.web.tsx
159
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
160
+ var AlertDialog = AlertDialogPrimitive.Root;
161
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
162
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
163
+ var AlertDialogOverlay = forwardRef4(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
164
+ AlertDialogPrimitive.Overlay,
165
+ {
166
+ className: cn(
167
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
168
+ className
169
+ ),
170
+ ...props,
171
+ ref
172
+ }
173
+ ));
174
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
175
+ var AlertDialogContent = forwardRef4(({ className, ...props }, ref) => /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
176
+ /* @__PURE__ */ jsx4(AlertDialogOverlay, {}),
177
+ /* @__PURE__ */ jsx4(
178
+ AlertDialogPrimitive.Content,
179
+ {
180
+ ref,
181
+ className: cn(
182
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background text-foreground p-6 shadow-lg transition-opacity duration-200 data-[state=open]:opacity-100 data-[state=closed]:opacity-0 sm:rounded-lg",
183
+ className
184
+ ),
185
+ ...props
186
+ }
187
+ )
188
+ ] }));
189
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
190
+ var AlertDialogHeader = ({
191
+ className,
192
+ ...props
193
+ }) => /* @__PURE__ */ jsx4(
194
+ "div",
195
+ {
196
+ className: cn(
197
+ "flex flex-col space-y-2 text-center sm:text-left",
198
+ className
199
+ ),
200
+ ...props
201
+ }
202
+ );
203
+ AlertDialogHeader.displayName = "AlertDialogHeader";
204
+ var AlertDialogFooter = ({
205
+ className,
206
+ ...props
207
+ }) => /* @__PURE__ */ jsx4(
208
+ "div",
209
+ {
210
+ className: cn(
211
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
212
+ className
213
+ ),
214
+ ...props
215
+ }
216
+ );
217
+ AlertDialogFooter.displayName = "AlertDialogFooter";
218
+ var AlertDialogTitle = forwardRef4(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
219
+ AlertDialogPrimitive.Title,
220
+ {
221
+ ref,
222
+ className: cn("text-lg font-semibold", className),
223
+ ...props
224
+ }
225
+ ));
226
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
227
+ var AlertDialogDescription = forwardRef4(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
228
+ AlertDialogPrimitive.Description,
229
+ {
230
+ ref,
231
+ className: cn("text-sm text-muted-foreground", className),
232
+ ...props
233
+ }
234
+ ));
235
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
236
+ var AlertDialogAction = forwardRef4(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
237
+ AlertDialogPrimitive.Action,
238
+ {
239
+ ref,
240
+ className: cn(buttonVariants(), className),
241
+ ...props
242
+ }
243
+ ));
244
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
245
+ var AlertDialogCancel = forwardRef4(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
246
+ AlertDialogPrimitive.Cancel,
247
+ {
248
+ ref,
249
+ className: cn(
250
+ buttonVariants({ variant: "outline" }),
251
+ "mt-2 sm:mt-0",
252
+ className
253
+ ),
254
+ ...props
255
+ }
256
+ ));
257
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
258
+
259
+ // src/components/AspectRatio/AspectRatio.web.tsx
260
+ import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
261
+ var AspectRatio = AspectRatioPrimitive.Root;
262
+
263
+ // src/components/Avatar/Avatar.web.tsx
264
+ import { forwardRef as forwardRef5 } from "react";
265
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
266
+ import { jsx as jsx5 } from "react/jsx-runtime";
267
+ var Avatar = forwardRef5(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
268
+ AvatarPrimitive.Root,
269
+ {
270
+ ref,
271
+ className: cn(
272
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
273
+ className
274
+ ),
275
+ ...props
276
+ }
277
+ ));
278
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
279
+ var AvatarImage = forwardRef5(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
280
+ AvatarPrimitive.Image,
281
+ {
282
+ ref,
283
+ className: cn("aspect-square h-full w-full", className),
284
+ ...props
285
+ }
286
+ ));
287
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
288
+ var AvatarFallback = forwardRef5(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
289
+ AvatarPrimitive.Fallback,
290
+ {
291
+ ref,
292
+ className: cn(
293
+ "flex h-full w-full items-center justify-center rounded-full bg-muted",
294
+ className
295
+ ),
296
+ ...props
297
+ }
298
+ ));
299
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
300
+
301
+ // src/components/Badge/Badge.web.tsx
302
+ import { forwardRef as forwardRef6 } from "react";
303
+ import { cva as cva3 } from "class-variance-authority";
304
+ import { jsx as jsx6 } from "react/jsx-runtime";
305
+ var badgeVariants = cva3(
306
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
307
+ {
308
+ variants: {
309
+ variant: {
310
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
311
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
312
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
313
+ outline: "text-foreground"
314
+ }
315
+ },
316
+ defaultVariants: {
317
+ variant: "default"
318
+ }
319
+ }
320
+ );
321
+ var Badge = forwardRef6(
322
+ ({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx6(
323
+ "div",
324
+ {
325
+ ref,
326
+ className: cn(badgeVariants({ variant }), className),
327
+ ...props
328
+ }
329
+ )
330
+ );
331
+ Badge.displayName = "Badge";
332
+
333
+ // src/components/Breadcrumb/Breadcrumb.web.tsx
334
+ import { forwardRef as forwardRef7 } from "react";
335
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
336
+ import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
337
+ function ChevronRightIcon(props) {
338
+ return /* @__PURE__ */ jsx7("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx7("path", { d: "m9 18 6-6-6-6" }) });
339
+ }
340
+ function MoreHorizontalIcon(props) {
341
+ return /* @__PURE__ */ jsxs3("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [
342
+ /* @__PURE__ */ jsx7("circle", { cx: "12", cy: "12", r: "1" }),
343
+ /* @__PURE__ */ jsx7("circle", { cx: "19", cy: "12", r: "1" }),
344
+ /* @__PURE__ */ jsx7("circle", { cx: "5", cy: "12", r: "1" })
345
+ ] });
346
+ }
347
+ var Breadcrumb = forwardRef7(({ ...props }, ref) => /* @__PURE__ */ jsx7("nav", { ref, "aria-label": "breadcrumb", ...props }));
348
+ Breadcrumb.displayName = "Breadcrumb";
349
+ var BreadcrumbList = forwardRef7(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
350
+ "ol",
351
+ {
352
+ ref,
353
+ className: cn(
354
+ "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
355
+ className
356
+ ),
357
+ ...props
358
+ }
359
+ ));
360
+ BreadcrumbList.displayName = "BreadcrumbList";
361
+ var BreadcrumbItem = forwardRef7(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
362
+ "li",
363
+ {
364
+ ref,
365
+ className: cn("inline-flex items-center gap-1.5", className),
366
+ ...props
367
+ }
368
+ ));
369
+ BreadcrumbItem.displayName = "BreadcrumbItem";
370
+ var BreadcrumbLink = forwardRef7(({ asChild, className, ...props }, ref) => {
371
+ const Comp = asChild ? Slot2 : "a";
372
+ return /* @__PURE__ */ jsx7(
373
+ Comp,
374
+ {
375
+ ref,
376
+ className: cn("transition-colors hover:text-foreground", className),
377
+ ...props
378
+ }
379
+ );
380
+ });
381
+ BreadcrumbLink.displayName = "BreadcrumbLink";
382
+ var BreadcrumbPage = forwardRef7(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
383
+ "span",
384
+ {
385
+ ref,
386
+ role: "link",
387
+ "aria-disabled": "true",
388
+ "aria-current": "page",
389
+ className: cn("font-normal text-foreground", className),
390
+ ...props
391
+ }
392
+ ));
393
+ BreadcrumbPage.displayName = "BreadcrumbPage";
394
+ var BreadcrumbSeparator = ({
395
+ children,
396
+ className,
397
+ ...props
398
+ }) => /* @__PURE__ */ jsx7(
399
+ "li",
400
+ {
401
+ role: "presentation",
402
+ "aria-hidden": "true",
403
+ className: cn("[&>svg]:h-3.5 [&>svg]:w-3.5", className),
404
+ ...props,
405
+ children: children ?? /* @__PURE__ */ jsx7(ChevronRightIcon, {})
406
+ }
407
+ );
408
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
409
+ var BreadcrumbEllipsis = ({
410
+ className,
411
+ ...props
412
+ }) => /* @__PURE__ */ jsxs3(
413
+ "span",
414
+ {
415
+ role: "presentation",
416
+ "aria-hidden": "true",
417
+ className: cn("flex h-9 w-9 items-center justify-center", className),
418
+ ...props,
419
+ children: [
420
+ /* @__PURE__ */ jsx7(MoreHorizontalIcon, { className: "h-4 w-4" }),
421
+ /* @__PURE__ */ jsx7("span", { className: "sr-only", children: "More" })
422
+ ]
423
+ }
424
+ );
425
+ BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
426
+
427
+ // src/components/Calendar/Calendar.web.tsx
428
+ import { forwardRef as forwardRef8, useState } from "react";
429
+ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
430
+ var DAYS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
431
+ function getDaysInMonth(year, month) {
432
+ return new Date(year, month + 1, 0).getDate();
433
+ }
434
+ function getFirstDayOfMonth(year, month) {
435
+ return new Date(year, month, 1).getDay();
436
+ }
437
+ function isSameDay(a, b) {
438
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
439
+ }
440
+ function isToday(date) {
441
+ return isSameDay(date, /* @__PURE__ */ new Date());
442
+ }
443
+ var Calendar = forwardRef8(
444
+ ({
445
+ selected,
446
+ onSelect,
447
+ month: controlledMonth,
448
+ onMonthChange,
449
+ disabled = false,
450
+ className,
451
+ ...props
452
+ }, ref) => {
453
+ const [internalMonth, setInternalMonth] = useState(
454
+ controlledMonth || selected || /* @__PURE__ */ new Date()
455
+ );
456
+ const displayMonth = controlledMonth || internalMonth;
457
+ const year = displayMonth.getFullYear();
458
+ const monthIndex = displayMonth.getMonth();
459
+ const daysInMonth = getDaysInMonth(year, monthIndex);
460
+ const firstDay = getFirstDayOfMonth(year, monthIndex);
461
+ const monthLabel = displayMonth.toLocaleString("default", {
462
+ month: "long",
463
+ year: "numeric"
464
+ });
465
+ const goToPrevMonth = () => {
466
+ const prev = new Date(year, monthIndex - 1, 1);
467
+ if (controlledMonth === void 0) setInternalMonth(prev);
468
+ onMonthChange?.(prev);
469
+ };
470
+ const goToNextMonth = () => {
471
+ const next = new Date(year, monthIndex + 1, 1);
472
+ if (controlledMonth === void 0) setInternalMonth(next);
473
+ onMonthChange?.(next);
474
+ };
475
+ const handleDayClick = (day) => {
476
+ if (disabled) return;
477
+ const date = new Date(year, monthIndex, day);
478
+ onSelect?.(date);
479
+ };
480
+ const cells = [];
481
+ for (let i = 0; i < firstDay; i++) {
482
+ cells.push(null);
483
+ }
484
+ for (let d = 1; d <= daysInMonth; d++) {
485
+ cells.push(d);
486
+ }
487
+ return /* @__PURE__ */ jsxs4("div", { ref, className: cn("p-3", className), ...props, children: [
488
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center justify-between mb-4", children: [
489
+ /* @__PURE__ */ jsx8(
490
+ "button",
491
+ {
492
+ type: "button",
493
+ onClick: goToPrevMonth,
494
+ className: "inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent text-sm shadow-sm hover:bg-accent hover:text-accent-foreground",
495
+ disabled,
496
+ children: /* @__PURE__ */ jsx8("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx8("path", { d: "m15 18-6-6 6-6" }) })
497
+ }
498
+ ),
499
+ /* @__PURE__ */ jsx8("div", { className: "text-sm font-medium", children: monthLabel }),
500
+ /* @__PURE__ */ jsx8(
501
+ "button",
502
+ {
503
+ type: "button",
504
+ onClick: goToNextMonth,
505
+ className: "inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent text-sm shadow-sm hover:bg-accent hover:text-accent-foreground",
506
+ disabled,
507
+ children: /* @__PURE__ */ jsx8("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx8("path", { d: "m9 18 6-6-6-6" }) })
508
+ }
509
+ )
510
+ ] }),
511
+ /* @__PURE__ */ jsxs4("div", { className: "grid grid-cols-7 gap-0", children: [
512
+ DAYS.map((day) => /* @__PURE__ */ jsx8(
513
+ "div",
514
+ {
515
+ className: "flex h-8 w-8 items-center justify-center text-[0.8rem] text-muted-foreground font-medium",
516
+ children: day
517
+ },
518
+ day
519
+ )),
520
+ cells.map((day, i) => {
521
+ if (day === null) {
522
+ return /* @__PURE__ */ jsx8("div", { className: "h-8 w-8" }, `empty-${i}`);
523
+ }
524
+ const date = new Date(year, monthIndex, day);
525
+ const isSelected = selected && isSameDay(date, selected);
526
+ const isTodayDate = isToday(date);
527
+ return /* @__PURE__ */ jsx8(
528
+ "button",
529
+ {
530
+ type: "button",
531
+ onClick: () => handleDayClick(day),
532
+ disabled,
533
+ className: cn(
534
+ "inline-flex h-8 w-8 items-center justify-center rounded-md text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
535
+ isSelected && "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground",
536
+ isTodayDate && !isSelected && "bg-accent text-accent-foreground"
537
+ ),
538
+ children: day
539
+ },
540
+ day
541
+ );
542
+ })
543
+ ] })
544
+ ] });
545
+ }
546
+ );
547
+ Calendar.displayName = "Calendar";
548
+
549
+ // src/components/Card/Card.web.tsx
550
+ import { forwardRef as forwardRef9 } from "react";
551
+ import { jsx as jsx9 } from "react/jsx-runtime";
552
+ var Card = forwardRef9(
553
+ ({ className, children, ...props }, ref) => {
554
+ return /* @__PURE__ */ jsx9(
555
+ "div",
556
+ {
557
+ ref,
558
+ className: cn(
559
+ "rounded-xl border border-border bg-card text-card-foreground shadow-sm",
560
+ className
561
+ ),
562
+ ...props,
563
+ children
564
+ }
565
+ );
566
+ }
567
+ );
568
+ Card.displayName = "Card";
569
+
570
+ // src/components/Carousel/Carousel.web.tsx
571
+ import {
572
+ forwardRef as forwardRef10,
573
+ createContext,
574
+ useContext,
575
+ useState as useState2,
576
+ useCallback,
577
+ Children
578
+ } from "react";
579
+ import { cva as cva4 } from "class-variance-authority";
580
+ import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
581
+ var CarouselContext = createContext(null);
582
+ function useCarousel() {
583
+ const context = useContext(CarouselContext);
584
+ if (!context) {
585
+ throw new Error("useCarousel must be used within a <Carousel />");
586
+ }
587
+ return context;
588
+ }
589
+ var carouselContentVariants = cva4(
590
+ "flex transition-transform duration-300 ease-in-out",
591
+ {
592
+ variants: {
593
+ orientation: {
594
+ horizontal: "-ml-4",
595
+ vertical: "-mt-4 flex-col"
596
+ }
597
+ },
598
+ defaultVariants: {
599
+ orientation: "horizontal"
600
+ }
601
+ }
602
+ );
603
+ var carouselItemVariants = cva4("min-w-0 shrink-0 grow-0 basis-full", {
604
+ variants: {
605
+ orientation: {
606
+ horizontal: "pl-4",
607
+ vertical: "pt-4"
608
+ }
609
+ },
610
+ defaultVariants: {
611
+ orientation: "horizontal"
612
+ }
613
+ });
614
+ var carouselPreviousVariants = cva4(
615
+ "absolute inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",
616
+ {
617
+ variants: {
618
+ orientation: {
619
+ horizontal: "-left-12 top-1/2 -translate-y-1/2",
620
+ vertical: "-top-12 left-1/2 -translate-x-1/2 rotate-90"
621
+ }
622
+ },
623
+ defaultVariants: {
624
+ orientation: "horizontal"
625
+ }
626
+ }
627
+ );
628
+ var carouselNextVariants = cva4(
629
+ "absolute inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",
630
+ {
631
+ variants: {
632
+ orientation: {
633
+ horizontal: "-right-12 top-1/2 -translate-y-1/2",
634
+ vertical: "-bottom-12 left-1/2 -translate-x-1/2 rotate-90"
635
+ }
636
+ },
637
+ defaultVariants: {
638
+ orientation: "horizontal"
639
+ }
640
+ }
641
+ );
642
+ var Carousel = forwardRef10(({ className, orientation = "horizontal", children, ...props }, ref) => {
643
+ const [currentIndex, setCurrentIndex] = useState2(0);
644
+ const [totalItems, setTotalItems] = useState2(0);
645
+ const canScrollPrevious = currentIndex > 0;
646
+ const canScrollNext = currentIndex < totalItems - 1;
647
+ const scrollPrevious = useCallback(() => {
648
+ setCurrentIndex((prev) => Math.max(0, prev - 1));
649
+ }, []);
650
+ const scrollNext = useCallback(() => {
651
+ setCurrentIndex((prev) => Math.min(totalItems - 1, prev + 1));
652
+ }, [totalItems]);
653
+ return /* @__PURE__ */ jsx10(
654
+ CarouselContext.Provider,
655
+ {
656
+ value: {
657
+ orientation,
658
+ currentIndex,
659
+ totalItems,
660
+ scrollPrevious,
661
+ scrollNext,
662
+ canScrollPrevious,
663
+ canScrollNext,
664
+ setTotalItems
665
+ },
666
+ children: /* @__PURE__ */ jsx10(
667
+ "div",
668
+ {
669
+ ref,
670
+ role: "region",
671
+ "aria-roledescription": "carousel",
672
+ className: cn("relative", className),
673
+ ...props,
674
+ children
675
+ }
676
+ )
677
+ }
678
+ );
679
+ });
680
+ Carousel.displayName = "Carousel";
681
+ var CarouselContent = forwardRef10(({ className, children, ...props }, ref) => {
682
+ const { orientation, currentIndex, setTotalItems } = useCarousel();
683
+ const items = Children.toArray(children);
684
+ if (items.length !== 0) {
685
+ queueMicrotask(() => setTotalItems(items.length));
686
+ }
687
+ return /* @__PURE__ */ jsx10("div", { className: "overflow-hidden", ref, children: /* @__PURE__ */ jsx10(
688
+ "div",
689
+ {
690
+ className: cn(carouselContentVariants({ orientation }), className),
691
+ style: {
692
+ transform: orientation === "horizontal" ? `translateX(-${currentIndex * 100}%)` : `translateY(-${currentIndex * 100}%)`
693
+ },
694
+ ...props,
695
+ children
696
+ }
697
+ ) });
698
+ });
699
+ CarouselContent.displayName = "CarouselContent";
700
+ var CarouselItem = forwardRef10(({ className, ...props }, ref) => {
701
+ const { orientation } = useCarousel();
702
+ return /* @__PURE__ */ jsx10(
703
+ "div",
704
+ {
705
+ ref,
706
+ role: "group",
707
+ "aria-roledescription": "slide",
708
+ className: cn(carouselItemVariants({ orientation }), className),
709
+ ...props
710
+ }
711
+ );
712
+ });
713
+ CarouselItem.displayName = "CarouselItem";
714
+ var CarouselPrevious = forwardRef10(({ className, children, ...props }, ref) => {
715
+ const { orientation, scrollPrevious, canScrollPrevious } = useCarousel();
716
+ return /* @__PURE__ */ jsxs5(
717
+ "button",
718
+ {
719
+ ref,
720
+ className: cn(carouselPreviousVariants({ orientation }), className),
721
+ disabled: !canScrollPrevious,
722
+ onClick: scrollPrevious,
723
+ "aria-label": "Previous slide",
724
+ ...props,
725
+ children: [
726
+ children ?? /* @__PURE__ */ jsx10(
727
+ "svg",
728
+ {
729
+ xmlns: "http://www.w3.org/2000/svg",
730
+ width: "16",
731
+ height: "16",
732
+ viewBox: "0 0 24 24",
733
+ fill: "none",
734
+ stroke: "currentColor",
735
+ strokeWidth: "2",
736
+ strokeLinecap: "round",
737
+ strokeLinejoin: "round",
738
+ children: /* @__PURE__ */ jsx10("path", { d: "m15 18-6-6 6-6" })
739
+ }
740
+ ),
741
+ /* @__PURE__ */ jsx10("span", { className: "sr-only", children: "Previous slide" })
742
+ ]
743
+ }
744
+ );
745
+ });
746
+ CarouselPrevious.displayName = "CarouselPrevious";
747
+ var CarouselNext = forwardRef10(({ className, children, ...props }, ref) => {
748
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
749
+ return /* @__PURE__ */ jsxs5(
750
+ "button",
751
+ {
752
+ ref,
753
+ className: cn(carouselNextVariants({ orientation }), className),
754
+ disabled: !canScrollNext,
755
+ onClick: scrollNext,
756
+ "aria-label": "Next slide",
757
+ ...props,
758
+ children: [
759
+ children ?? /* @__PURE__ */ jsx10(
760
+ "svg",
761
+ {
762
+ xmlns: "http://www.w3.org/2000/svg",
763
+ width: "16",
764
+ height: "16",
765
+ viewBox: "0 0 24 24",
766
+ fill: "none",
767
+ stroke: "currentColor",
768
+ strokeWidth: "2",
769
+ strokeLinecap: "round",
770
+ strokeLinejoin: "round",
771
+ children: /* @__PURE__ */ jsx10("path", { d: "m9 18 6-6-6-6" })
772
+ }
773
+ ),
774
+ /* @__PURE__ */ jsx10("span", { className: "sr-only", children: "Next slide" })
775
+ ]
776
+ }
777
+ );
778
+ });
779
+ CarouselNext.displayName = "CarouselNext";
780
+
781
+ // src/components/Chart/Chart.web.tsx
782
+ import { forwardRef as forwardRef11, useMemo } from "react";
783
+ import { jsx as jsx11 } from "react/jsx-runtime";
784
+ var Chart = forwardRef11(({ className, config, children, ...props }, ref) => {
785
+ const cssVars = useMemo(() => {
786
+ const vars = {};
787
+ Object.entries(config).forEach(([key, value]) => {
788
+ if (value.color) {
789
+ vars[`--color-${key}`] = value.color;
790
+ }
791
+ });
792
+ return vars;
793
+ }, [config]);
794
+ return /* @__PURE__ */ jsx11(
795
+ "div",
796
+ {
797
+ ref,
798
+ className: cn(
799
+ "flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",
800
+ className
801
+ ),
802
+ style: cssVars,
803
+ ...props,
804
+ children
805
+ }
806
+ );
807
+ });
808
+ Chart.displayName = "Chart";
809
+
810
+ // src/components/Checkbox/Checkbox.web.tsx
811
+ import { forwardRef as forwardRef12 } from "react";
812
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
813
+ import { jsx as jsx12 } from "react/jsx-runtime";
814
+ var Checkbox = forwardRef12(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
815
+ CheckboxPrimitive.Root,
816
+ {
817
+ ref,
818
+ className: cn(
819
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
820
+ className
821
+ ),
822
+ ...props,
823
+ children: /* @__PURE__ */ jsx12(
824
+ CheckboxPrimitive.Indicator,
825
+ {
826
+ className: cn("flex items-center justify-center text-current"),
827
+ children: /* @__PURE__ */ jsx12(
828
+ "svg",
829
+ {
830
+ xmlns: "http://www.w3.org/2000/svg",
831
+ viewBox: "0 0 24 24",
832
+ fill: "none",
833
+ stroke: "currentColor",
834
+ strokeWidth: "3",
835
+ strokeLinecap: "round",
836
+ strokeLinejoin: "round",
837
+ className: "h-3.5 w-3.5",
838
+ children: /* @__PURE__ */ jsx12("polyline", { points: "20 6 9 17 4 12" })
839
+ }
840
+ )
841
+ }
842
+ )
843
+ }
844
+ ));
845
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
846
+
847
+ // src/components/Collapsible/Collapsible.web.tsx
848
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
849
+ var Collapsible = CollapsiblePrimitive.Root;
850
+ var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
851
+ var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
852
+
853
+ // src/components/Combobox/Combobox.web.tsx
854
+ import { forwardRef as forwardRef13, useState as useState3 } from "react";
855
+ import * as Popover from "@radix-ui/react-popover";
856
+ import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
857
+ var Combobox = forwardRef13(
858
+ ({
859
+ options,
860
+ value,
861
+ onValueChange,
862
+ placeholder = "Select...",
863
+ searchPlaceholder = "Search...",
864
+ emptyMessage = "No results found.",
865
+ disabled = false,
866
+ className,
867
+ ...props
868
+ }, ref) => {
869
+ const [open, setOpen] = useState3(false);
870
+ const [search, setSearch] = useState3("");
871
+ const selectedOption = options.find((o) => o.value === value);
872
+ const filtered = options.filter(
873
+ (o) => o.label.toLowerCase().includes(search.toLowerCase())
874
+ );
875
+ const handleSelect = (val) => {
876
+ onValueChange?.(val === value ? "" : val);
877
+ setOpen(false);
878
+ setSearch("");
879
+ };
880
+ return /* @__PURE__ */ jsxs6(Popover.Root, { open, onOpenChange: setOpen, children: [
881
+ /* @__PURE__ */ jsx13(Popover.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsxs6(
882
+ "button",
883
+ {
884
+ type: "button",
885
+ role: "combobox",
886
+ "aria-expanded": open,
887
+ className: cn(
888
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
889
+ className
890
+ ),
891
+ children: [
892
+ /* @__PURE__ */ jsx13("span", { className: cn(!selectedOption && "text-muted-foreground"), children: selectedOption ? selectedOption.label : placeholder }),
893
+ /* @__PURE__ */ jsx13(
894
+ "svg",
895
+ {
896
+ xmlns: "http://www.w3.org/2000/svg",
897
+ width: "16",
898
+ height: "16",
899
+ viewBox: "0 0 24 24",
900
+ fill: "none",
901
+ stroke: "currentColor",
902
+ strokeWidth: "2",
903
+ strokeLinecap: "round",
904
+ strokeLinejoin: "round",
905
+ className: "ml-2 h-4 w-4 shrink-0 opacity-50",
906
+ children: /* @__PURE__ */ jsx13("path", { d: "m6 9 6 6 6-6" })
907
+ }
908
+ )
909
+ ]
910
+ }
911
+ ) }),
912
+ /* @__PURE__ */ jsx13(Popover.Portal, { children: /* @__PURE__ */ jsxs6(
913
+ Popover.Content,
914
+ {
915
+ ref,
916
+ className: "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
917
+ align: "start",
918
+ sideOffset: 4,
919
+ onCloseAutoFocus: (e) => e.preventDefault(),
920
+ ...props,
921
+ children: [
922
+ /* @__PURE__ */ jsxs6("div", { className: "flex items-center border-b px-3", children: [
923
+ /* @__PURE__ */ jsxs6(
924
+ "svg",
925
+ {
926
+ xmlns: "http://www.w3.org/2000/svg",
927
+ width: "16",
928
+ height: "16",
929
+ viewBox: "0 0 24 24",
930
+ fill: "none",
931
+ stroke: "currentColor",
932
+ strokeWidth: "2",
933
+ strokeLinecap: "round",
934
+ strokeLinejoin: "round",
935
+ className: "mr-2 h-4 w-4 shrink-0 opacity-50",
936
+ children: [
937
+ /* @__PURE__ */ jsx13("circle", { cx: "11", cy: "11", r: "8" }),
938
+ /* @__PURE__ */ jsx13("path", { d: "m21 21-4.3-4.3" })
939
+ ]
940
+ }
941
+ ),
942
+ /* @__PURE__ */ jsx13(
943
+ "input",
944
+ {
945
+ value: search,
946
+ onChange: (e) => setSearch(e.target.value),
947
+ placeholder: searchPlaceholder,
948
+ className: "flex h-9 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50"
949
+ }
950
+ )
951
+ ] }),
952
+ /* @__PURE__ */ jsx13("div", { className: "max-h-[300px] overflow-y-auto p-1", children: filtered.length === 0 ? /* @__PURE__ */ jsx13("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }) : filtered.map((option) => /* @__PURE__ */ jsxs6(
953
+ "button",
954
+ {
955
+ type: "button",
956
+ onClick: () => handleSelect(option.value),
957
+ className: cn(
958
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none hover:bg-accent hover:text-accent-foreground",
959
+ value === option.value && "bg-accent"
960
+ ),
961
+ children: [
962
+ /* @__PURE__ */ jsx13("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: value === option.value && /* @__PURE__ */ jsx13(
963
+ "svg",
964
+ {
965
+ xmlns: "http://www.w3.org/2000/svg",
966
+ width: "16",
967
+ height: "16",
968
+ viewBox: "0 0 24 24",
969
+ fill: "none",
970
+ stroke: "currentColor",
971
+ strokeWidth: "2",
972
+ strokeLinecap: "round",
973
+ strokeLinejoin: "round",
974
+ className: "h-4 w-4",
975
+ children: /* @__PURE__ */ jsx13("polyline", { points: "20 6 9 17 4 12" })
976
+ }
977
+ ) }),
978
+ option.label
979
+ ]
980
+ },
981
+ option.value
982
+ )) })
983
+ ]
984
+ }
985
+ ) })
986
+ ] });
987
+ }
988
+ );
989
+ Combobox.displayName = "Combobox";
990
+
991
+ // src/components/Command/Command.web.tsx
992
+ import { forwardRef as forwardRef14 } from "react";
993
+ import { jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
994
+ var Command = forwardRef14(
995
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
996
+ "div",
997
+ {
998
+ ref,
999
+ className: cn(
1000
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
1001
+ className
1002
+ ),
1003
+ ...props
1004
+ }
1005
+ )
1006
+ );
1007
+ Command.displayName = "Command";
1008
+ var CommandInput = forwardRef14(({ className, ...props }, ref) => /* @__PURE__ */ jsxs7("div", { className: "flex items-center border-b px-3", "data-command-input-wrapper": "", children: [
1009
+ /* @__PURE__ */ jsxs7(
1010
+ "svg",
1011
+ {
1012
+ xmlns: "http://www.w3.org/2000/svg",
1013
+ width: "16",
1014
+ height: "16",
1015
+ viewBox: "0 0 24 24",
1016
+ fill: "none",
1017
+ stroke: "currentColor",
1018
+ strokeWidth: "2",
1019
+ strokeLinecap: "round",
1020
+ strokeLinejoin: "round",
1021
+ className: "mr-2 h-4 w-4 shrink-0 opacity-50",
1022
+ children: [
1023
+ /* @__PURE__ */ jsx14("circle", { cx: "11", cy: "11", r: "8" }),
1024
+ /* @__PURE__ */ jsx14("path", { d: "m21 21-4.3-4.3" })
1025
+ ]
1026
+ }
1027
+ ),
1028
+ /* @__PURE__ */ jsx14(
1029
+ "input",
1030
+ {
1031
+ ref,
1032
+ className: cn(
1033
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
1034
+ className
1035
+ ),
1036
+ ...props
1037
+ }
1038
+ )
1039
+ ] }));
1040
+ CommandInput.displayName = "CommandInput";
1041
+ var CommandList = forwardRef14(
1042
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1043
+ "div",
1044
+ {
1045
+ ref,
1046
+ className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
1047
+ ...props
1048
+ }
1049
+ )
1050
+ );
1051
+ CommandList.displayName = "CommandList";
1052
+ var CommandEmpty = forwardRef14(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1053
+ "div",
1054
+ {
1055
+ ref,
1056
+ className: cn("py-6 text-center text-sm", className),
1057
+ ...props
1058
+ }
1059
+ ));
1060
+ CommandEmpty.displayName = "CommandEmpty";
1061
+ var CommandGroup = forwardRef14(({ className, heading, children, ...props }, ref) => /* @__PURE__ */ jsxs7(
1062
+ "div",
1063
+ {
1064
+ ref,
1065
+ className: cn(
1066
+ "overflow-hidden p-1 text-foreground [&_[data-command-group-heading]]:px-2 [&_[data-command-group-heading]]:py-1.5 [&_[data-command-group-heading]]:text-xs [&_[data-command-group-heading]]:font-medium [&_[data-command-group-heading]]:text-muted-foreground",
1067
+ className
1068
+ ),
1069
+ ...props,
1070
+ children: [
1071
+ heading && /* @__PURE__ */ jsx14("div", { "data-command-group-heading": "", className: "px-2 py-1.5 text-xs font-medium text-muted-foreground", children: heading }),
1072
+ children
1073
+ ]
1074
+ }
1075
+ ));
1076
+ CommandGroup.displayName = "CommandGroup";
1077
+ var CommandSeparator = forwardRef14(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1078
+ "div",
1079
+ {
1080
+ ref,
1081
+ className: cn("-mx-1 h-px bg-border", className),
1082
+ ...props
1083
+ }
1084
+ ));
1085
+ CommandSeparator.displayName = "CommandSeparator";
1086
+ var CommandItem = forwardRef14(({ className, disabled, ...props }, ref) => /* @__PURE__ */ jsx14(
1087
+ "div",
1088
+ {
1089
+ ref,
1090
+ role: "option",
1091
+ "aria-disabled": disabled,
1092
+ className: cn(
1093
+ "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent hover:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1094
+ disabled && "pointer-events-none opacity-50",
1095
+ className
1096
+ ),
1097
+ "data-disabled": disabled || void 0,
1098
+ ...props
1099
+ }
1100
+ ));
1101
+ CommandItem.displayName = "CommandItem";
1102
+
1103
+ // src/components/ContextMenu/ContextMenu.web.tsx
1104
+ import { forwardRef as forwardRef15 } from "react";
1105
+ import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
1106
+ import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
1107
+ function CheckIcon(props) {
1108
+ return /* @__PURE__ */ jsx15("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx15("path", { d: "M20 6 9 17l-5-5" }) });
1109
+ }
1110
+ function ChevronRightIcon2(props) {
1111
+ return /* @__PURE__ */ jsx15("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx15("path", { d: "m9 18 6-6-6-6" }) });
1112
+ }
1113
+ function CircleIcon(props) {
1114
+ return /* @__PURE__ */ jsx15("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx15("circle", { cx: "12", cy: "12", r: "10" }) });
1115
+ }
1116
+ var ContextMenu = ContextMenuPrimitive.Root;
1117
+ var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
1118
+ var ContextMenuGroup = ContextMenuPrimitive.Group;
1119
+ var ContextMenuPortal = ContextMenuPrimitive.Portal;
1120
+ var ContextMenuSub = ContextMenuPrimitive.Sub;
1121
+ var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
1122
+ var ContextMenuSubTrigger = forwardRef15(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1123
+ ContextMenuPrimitive.SubTrigger,
1124
+ {
1125
+ ref,
1126
+ className: cn(
1127
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
1128
+ inset && "pl-8",
1129
+ className
1130
+ ),
1131
+ ...props,
1132
+ children: [
1133
+ children,
1134
+ /* @__PURE__ */ jsx15(ChevronRightIcon2, { className: "ml-auto h-4 w-4" })
1135
+ ]
1136
+ }
1137
+ ));
1138
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
1139
+ var ContextMenuSubContent = forwardRef15(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1140
+ ContextMenuPrimitive.SubContent,
1141
+ {
1142
+ ref,
1143
+ className: cn(
1144
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
1145
+ className
1146
+ ),
1147
+ ...props
1148
+ }
1149
+ ));
1150
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
1151
+ var ContextMenuContent = forwardRef15(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx15(
1152
+ ContextMenuPrimitive.Content,
1153
+ {
1154
+ ref,
1155
+ className: cn(
1156
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
1157
+ className
1158
+ ),
1159
+ ...props
1160
+ }
1161
+ ) }));
1162
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
1163
+ var ContextMenuItem = forwardRef15(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx15(
1164
+ ContextMenuPrimitive.Item,
1165
+ {
1166
+ ref,
1167
+ className: cn(
1168
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1169
+ inset && "pl-8",
1170
+ className
1171
+ ),
1172
+ ...props
1173
+ }
1174
+ ));
1175
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
1176
+ var ContextMenuCheckboxItem = forwardRef15(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs8(
1177
+ ContextMenuPrimitive.CheckboxItem,
1178
+ {
1179
+ ref,
1180
+ className: cn(
1181
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1182
+ className
1183
+ ),
1184
+ checked,
1185
+ ...props,
1186
+ children: [
1187
+ /* @__PURE__ */ jsx15("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx15(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx15(CheckIcon, { className: "h-4 w-4" }) }) }),
1188
+ children
1189
+ ]
1190
+ }
1191
+ ));
1192
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
1193
+ var ContextMenuRadioItem = forwardRef15(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1194
+ ContextMenuPrimitive.RadioItem,
1195
+ {
1196
+ ref,
1197
+ className: cn(
1198
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1199
+ className
1200
+ ),
1201
+ ...props,
1202
+ children: [
1203
+ /* @__PURE__ */ jsx15("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx15(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx15(CircleIcon, { className: "h-2 w-2 fill-current" }) }) }),
1204
+ children
1205
+ ]
1206
+ }
1207
+ ));
1208
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1209
+ var ContextMenuLabel = forwardRef15(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx15(
1210
+ ContextMenuPrimitive.Label,
1211
+ {
1212
+ ref,
1213
+ className: cn(
1214
+ "px-2 py-1.5 text-sm font-semibold text-foreground",
1215
+ inset && "pl-8",
1216
+ className
1217
+ ),
1218
+ ...props
1219
+ }
1220
+ ));
1221
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1222
+ var ContextMenuSeparator = forwardRef15(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1223
+ ContextMenuPrimitive.Separator,
1224
+ {
1225
+ ref,
1226
+ className: cn("-mx-1 my-1 h-px bg-border", className),
1227
+ ...props
1228
+ }
1229
+ ));
1230
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
1231
+ var ContextMenuShortcut = ({
1232
+ className,
1233
+ ...props
1234
+ }) => {
1235
+ return /* @__PURE__ */ jsx15(
1236
+ "span",
1237
+ {
1238
+ className: cn(
1239
+ "ml-auto text-xs tracking-widest text-muted-foreground",
1240
+ className
1241
+ ),
1242
+ ...props
1243
+ }
1244
+ );
1245
+ };
1246
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
1247
+
1248
+ // src/components/DataTable/DataTable.web.tsx
1249
+ import { forwardRef as forwardRef16, useState as useState4, useMemo as useMemo2, useCallback as useCallback2 } from "react";
1250
+ import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
1251
+ function getCellValue(column, row) {
1252
+ if (column.accessorFn) return column.accessorFn(row);
1253
+ if (column.accessorKey) return row[column.accessorKey];
1254
+ return void 0;
1255
+ }
1256
+ function DataTableInner({
1257
+ columns,
1258
+ data,
1259
+ className,
1260
+ ...props
1261
+ }, ref) {
1262
+ const [sortColumn, setSortColumn] = useState4(null);
1263
+ const [sortDirection, setSortDirection] = useState4(null);
1264
+ const handleSort = useCallback2(
1265
+ (columnId) => {
1266
+ if (sortColumn === columnId) {
1267
+ if (sortDirection === "asc") {
1268
+ setSortDirection("desc");
1269
+ } else if (sortDirection === "desc") {
1270
+ setSortColumn(null);
1271
+ setSortDirection(null);
1272
+ }
1273
+ } else {
1274
+ setSortColumn(columnId);
1275
+ setSortDirection("asc");
1276
+ }
1277
+ },
1278
+ [sortColumn, sortDirection]
1279
+ );
1280
+ const sortedData = useMemo2(() => {
1281
+ if (!sortColumn || !sortDirection) return data;
1282
+ const column = columns.find((c) => c.id === sortColumn);
1283
+ if (!column) return data;
1284
+ return [...data].sort((a, b) => {
1285
+ const aVal = getCellValue(column, a);
1286
+ const bVal = getCellValue(column, b);
1287
+ if (aVal == null && bVal == null) return 0;
1288
+ if (aVal == null) return 1;
1289
+ if (bVal == null) return -1;
1290
+ const comparison = typeof aVal === "string" && typeof bVal === "string" ? aVal.localeCompare(bVal) : Number(aVal) - Number(bVal);
1291
+ return sortDirection === "asc" ? comparison : -comparison;
1292
+ });
1293
+ }, [data, columns, sortColumn, sortDirection]);
1294
+ return /* @__PURE__ */ jsx16("div", { ref, className: cn("relative w-full overflow-auto", className), ...props, children: /* @__PURE__ */ jsxs9("table", { className: "w-full caption-bottom text-sm", children: [
1295
+ /* @__PURE__ */ jsx16("thead", { className: "[&_tr]:border-b", children: /* @__PURE__ */ jsx16("tr", { className: "border-b transition-colors hover:bg-muted/50", children: columns.map((column) => /* @__PURE__ */ jsx16(
1296
+ "th",
1297
+ {
1298
+ className: cn(
1299
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1300
+ column.sortable && "cursor-pointer select-none"
1301
+ ),
1302
+ onClick: column.sortable ? () => handleSort(column.id) : void 0,
1303
+ children: /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-1", children: [
1304
+ column.header,
1305
+ column.sortable && sortColumn === column.id && /* @__PURE__ */ jsx16("span", { className: "ml-1 text-xs", children: sortDirection === "asc" ? "\u2191" : "\u2193" })
1306
+ ] })
1307
+ },
1308
+ column.id
1309
+ )) }) }),
1310
+ /* @__PURE__ */ jsx16("tbody", { className: "[&_tr:last-child]:border-0", children: sortedData.length === 0 ? /* @__PURE__ */ jsx16("tr", { children: /* @__PURE__ */ jsx16(
1311
+ "td",
1312
+ {
1313
+ colSpan: columns.length,
1314
+ className: "h-24 text-center text-muted-foreground",
1315
+ children: "No results."
1316
+ }
1317
+ ) }) : sortedData.map((row, rowIndex) => /* @__PURE__ */ jsx16(
1318
+ "tr",
1319
+ {
1320
+ className: "border-b transition-colors hover:bg-muted/50",
1321
+ children: columns.map((column) => {
1322
+ const value = getCellValue(column, row);
1323
+ return /* @__PURE__ */ jsx16(
1324
+ "td",
1325
+ {
1326
+ className: "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1327
+ children: column.cell ? column.cell(value, row) : String(value ?? "")
1328
+ },
1329
+ column.id
1330
+ );
1331
+ })
1332
+ },
1333
+ rowIndex
1334
+ )) })
1335
+ ] }) });
1336
+ }
1337
+ var DataTable = forwardRef16(DataTableInner);
1338
+
1339
+ // src/components/DatePicker/DatePicker.web.tsx
1340
+ import { forwardRef as forwardRef17, useState as useState5 } from "react";
1341
+ import * as Popover2 from "@radix-ui/react-popover";
1342
+ import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
1343
+ function formatDate(date) {
1344
+ return date.toLocaleDateString("en-US", {
1345
+ month: "long",
1346
+ day: "numeric",
1347
+ year: "numeric"
1348
+ });
1349
+ }
1350
+ var DatePicker = forwardRef17(
1351
+ ({
1352
+ value,
1353
+ onValueChange,
1354
+ placeholder = "Pick a date",
1355
+ disabled = false,
1356
+ className,
1357
+ ...props
1358
+ }, ref) => {
1359
+ const [open, setOpen] = useState5(false);
1360
+ const handleSelect = (date) => {
1361
+ onValueChange?.(date);
1362
+ setOpen(false);
1363
+ };
1364
+ return /* @__PURE__ */ jsxs10(Popover2.Root, { open, onOpenChange: setOpen, children: [
1365
+ /* @__PURE__ */ jsx17(Popover2.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsxs10(
1366
+ "button",
1367
+ {
1368
+ type: "button",
1369
+ className: cn(
1370
+ "flex h-9 w-full items-center justify-start whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
1371
+ !value && "text-muted-foreground",
1372
+ className
1373
+ ),
1374
+ children: [
1375
+ /* @__PURE__ */ jsxs10(
1376
+ "svg",
1377
+ {
1378
+ xmlns: "http://www.w3.org/2000/svg",
1379
+ width: "16",
1380
+ height: "16",
1381
+ viewBox: "0 0 24 24",
1382
+ fill: "none",
1383
+ stroke: "currentColor",
1384
+ strokeWidth: "2",
1385
+ strokeLinecap: "round",
1386
+ strokeLinejoin: "round",
1387
+ className: "mr-2 h-4 w-4",
1388
+ children: [
1389
+ /* @__PURE__ */ jsx17("path", { d: "M8 2v4" }),
1390
+ /* @__PURE__ */ jsx17("path", { d: "M16 2v4" }),
1391
+ /* @__PURE__ */ jsx17("rect", { width: "18", height: "18", x: "3", y: "4", rx: "2" }),
1392
+ /* @__PURE__ */ jsx17("path", { d: "M3 10h18" })
1393
+ ]
1394
+ }
1395
+ ),
1396
+ value ? formatDate(value) : placeholder
1397
+ ]
1398
+ }
1399
+ ) }),
1400
+ /* @__PURE__ */ jsx17(Popover2.Portal, { children: /* @__PURE__ */ jsx17(
1401
+ Popover2.Content,
1402
+ {
1403
+ ref,
1404
+ className: "z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
1405
+ align: "start",
1406
+ sideOffset: 4,
1407
+ ...props,
1408
+ children: /* @__PURE__ */ jsx17(
1409
+ Calendar,
1410
+ {
1411
+ selected: value,
1412
+ onSelect: handleSelect
1413
+ }
1414
+ )
1415
+ }
1416
+ ) })
1417
+ ] });
1418
+ }
1419
+ );
1420
+ DatePicker.displayName = "DatePicker";
1421
+
1422
+ // src/components/Dialog/Dialog.web.tsx
1423
+ import { forwardRef as forwardRef18 } from "react";
1424
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
1425
+ import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
1426
+ function XIcon(props) {
1427
+ return /* @__PURE__ */ jsxs11("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [
1428
+ /* @__PURE__ */ jsx18("path", { d: "M18 6 6 18" }),
1429
+ /* @__PURE__ */ jsx18("path", { d: "m6 6 12 12" })
1430
+ ] });
1431
+ }
1432
+ var Dialog = DialogPrimitive.Root;
1433
+ var DialogTrigger = DialogPrimitive.Trigger;
1434
+ var DialogPortal = DialogPrimitive.Portal;
1435
+ var DialogClose = DialogPrimitive.Close;
1436
+ var DialogOverlay = forwardRef18(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1437
+ DialogPrimitive.Overlay,
1438
+ {
1439
+ ref,
1440
+ className: cn(
1441
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1442
+ className
1443
+ ),
1444
+ ...props
1445
+ }
1446
+ ));
1447
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
1448
+ var DialogContent = forwardRef18(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs11(DialogPortal, { children: [
1449
+ /* @__PURE__ */ jsx18(DialogOverlay, {}),
1450
+ /* @__PURE__ */ jsxs11(
1451
+ DialogPrimitive.Content,
1452
+ {
1453
+ ref,
1454
+ className: cn(
1455
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background text-foreground p-6 shadow-lg transition-opacity duration-200 data-[state=open]:opacity-100 data-[state=closed]:opacity-0 sm:rounded-lg",
1456
+ className
1457
+ ),
1458
+ ...props,
1459
+ children: [
1460
+ children,
1461
+ /* @__PURE__ */ jsxs11(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
1462
+ /* @__PURE__ */ jsx18(XIcon, { className: "h-4 w-4" }),
1463
+ /* @__PURE__ */ jsx18("span", { className: "sr-only", children: "Close" })
1464
+ ] })
1465
+ ]
1466
+ }
1467
+ )
1468
+ ] }));
1469
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
1470
+ var DialogHeader = ({
1471
+ className,
1472
+ ...props
1473
+ }) => /* @__PURE__ */ jsx18(
1474
+ "div",
1475
+ {
1476
+ className: cn(
1477
+ "flex flex-col space-y-1.5 text-center sm:text-left",
1478
+ className
1479
+ ),
1480
+ ...props
1481
+ }
1482
+ );
1483
+ DialogHeader.displayName = "DialogHeader";
1484
+ var DialogFooter = ({
1485
+ className,
1486
+ ...props
1487
+ }) => /* @__PURE__ */ jsx18(
1488
+ "div",
1489
+ {
1490
+ className: cn(
1491
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1492
+ className
1493
+ ),
1494
+ ...props
1495
+ }
1496
+ );
1497
+ DialogFooter.displayName = "DialogFooter";
1498
+ var DialogTitle = forwardRef18(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1499
+ DialogPrimitive.Title,
1500
+ {
1501
+ ref,
1502
+ className: cn(
1503
+ "text-lg font-semibold leading-none tracking-tight",
1504
+ className
1505
+ ),
1506
+ ...props
1507
+ }
1508
+ ));
1509
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
1510
+ var DialogDescription = forwardRef18(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1511
+ DialogPrimitive.Description,
1512
+ {
1513
+ ref,
1514
+ className: cn("text-sm text-muted-foreground", className),
1515
+ ...props
1516
+ }
1517
+ ));
1518
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
1519
+
1520
+ // src/components/Drawer/Drawer.web.tsx
1521
+ import { Drawer as DrawerPrimitive } from "vaul";
1522
+ import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
1523
+ function Drawer({
1524
+ ...props
1525
+ }) {
1526
+ return /* @__PURE__ */ jsx19(DrawerPrimitive.Root, { ...props });
1527
+ }
1528
+ Drawer.displayName = "Drawer";
1529
+ function DrawerTrigger({
1530
+ ...props
1531
+ }) {
1532
+ return /* @__PURE__ */ jsx19(DrawerPrimitive.Trigger, { ...props });
1533
+ }
1534
+ DrawerTrigger.displayName = "DrawerTrigger";
1535
+ function DrawerPortal({
1536
+ ...props
1537
+ }) {
1538
+ return /* @__PURE__ */ jsx19(DrawerPrimitive.Portal, { ...props });
1539
+ }
1540
+ DrawerPortal.displayName = "DrawerPortal";
1541
+ function DrawerClose({
1542
+ ...props
1543
+ }) {
1544
+ return /* @__PURE__ */ jsx19(DrawerPrimitive.Close, { ...props });
1545
+ }
1546
+ DrawerClose.displayName = "DrawerClose";
1547
+ function DrawerOverlay({
1548
+ className,
1549
+ ...props
1550
+ }) {
1551
+ return /* @__PURE__ */ jsx19(
1552
+ DrawerPrimitive.Overlay,
1553
+ {
1554
+ className: cn(
1555
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1556
+ className
1557
+ ),
1558
+ ...props
1559
+ }
1560
+ );
1561
+ }
1562
+ DrawerOverlay.displayName = "DrawerOverlay";
1563
+ function DrawerContent({
1564
+ className,
1565
+ children,
1566
+ ...props
1567
+ }) {
1568
+ return /* @__PURE__ */ jsxs12(DrawerPortal, { children: [
1569
+ /* @__PURE__ */ jsx19(DrawerOverlay, {}),
1570
+ /* @__PURE__ */ jsxs12(
1571
+ DrawerPrimitive.Content,
1572
+ {
1573
+ className: cn(
1574
+ "fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background text-foreground",
1575
+ className
1576
+ ),
1577
+ ...props,
1578
+ children: [
1579
+ /* @__PURE__ */ jsx19("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" }),
1580
+ children
1581
+ ]
1582
+ }
1583
+ )
1584
+ ] });
1585
+ }
1586
+ DrawerContent.displayName = "DrawerContent";
1587
+ var DrawerHeader = ({
1588
+ className,
1589
+ ...props
1590
+ }) => /* @__PURE__ */ jsx19(
1591
+ "div",
1592
+ {
1593
+ className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
1594
+ ...props
1595
+ }
1596
+ );
1597
+ DrawerHeader.displayName = "DrawerHeader";
1598
+ var DrawerFooter = ({
1599
+ className,
1600
+ ...props
1601
+ }) => /* @__PURE__ */ jsx19(
1602
+ "div",
1603
+ {
1604
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
1605
+ ...props
1606
+ }
1607
+ );
1608
+ DrawerFooter.displayName = "DrawerFooter";
1609
+ function DrawerTitle({
1610
+ className,
1611
+ ...props
1612
+ }) {
1613
+ return /* @__PURE__ */ jsx19(
1614
+ DrawerPrimitive.Title,
1615
+ {
1616
+ className: cn(
1617
+ "text-lg font-semibold leading-none tracking-tight",
1618
+ className
1619
+ ),
1620
+ ...props
1621
+ }
1622
+ );
1623
+ }
1624
+ DrawerTitle.displayName = "DrawerTitle";
1625
+ function DrawerDescription({
1626
+ className,
1627
+ ...props
1628
+ }) {
1629
+ return /* @__PURE__ */ jsx19(
1630
+ DrawerPrimitive.Description,
1631
+ {
1632
+ className: cn("text-sm text-muted-foreground", className),
1633
+ ...props
1634
+ }
1635
+ );
1636
+ }
1637
+ DrawerDescription.displayName = "DrawerDescription";
1638
+
1639
+ // src/components/DropdownMenu/DropdownMenu.web.tsx
1640
+ import { forwardRef as forwardRef19 } from "react";
1641
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
1642
+ import { jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
1643
+ function CheckIcon2(props) {
1644
+ return /* @__PURE__ */ jsx20("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx20("path", { d: "M20 6 9 17l-5-5" }) });
1645
+ }
1646
+ function ChevronRightIcon3(props) {
1647
+ return /* @__PURE__ */ jsx20("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx20("path", { d: "m9 18 6-6-6-6" }) });
1648
+ }
1649
+ function CircleIcon2(props) {
1650
+ return /* @__PURE__ */ jsx20("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx20("circle", { cx: "12", cy: "12", r: "10" }) });
1651
+ }
1652
+ var DropdownMenu = DropdownMenuPrimitive.Root;
1653
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
1654
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
1655
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
1656
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
1657
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1658
+ var DropdownMenuSubTrigger = forwardRef19(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
1659
+ DropdownMenuPrimitive.SubTrigger,
1660
+ {
1661
+ ref,
1662
+ className: cn(
1663
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
1664
+ inset && "pl-8",
1665
+ className
1666
+ ),
1667
+ ...props,
1668
+ children: [
1669
+ children,
1670
+ /* @__PURE__ */ jsx20(ChevronRightIcon3, { className: "ml-auto h-4 w-4" })
1671
+ ]
1672
+ }
1673
+ ));
1674
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1675
+ var DropdownMenuSubContent = forwardRef19(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
1676
+ DropdownMenuPrimitive.SubContent,
1677
+ {
1678
+ ref,
1679
+ className: cn(
1680
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
1681
+ className
1682
+ ),
1683
+ ...props
1684
+ }
1685
+ ));
1686
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1687
+ var DropdownMenuContent = forwardRef19(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx20(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx20(
1688
+ DropdownMenuPrimitive.Content,
1689
+ {
1690
+ ref,
1691
+ sideOffset,
1692
+ className: cn(
1693
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
1694
+ className
1695
+ ),
1696
+ ...props
1697
+ }
1698
+ ) }));
1699
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1700
+ var DropdownMenuItem = forwardRef19(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx20(
1701
+ DropdownMenuPrimitive.Item,
1702
+ {
1703
+ ref,
1704
+ className: cn(
1705
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1706
+ inset && "pl-8",
1707
+ className
1708
+ ),
1709
+ ...props
1710
+ }
1711
+ ));
1712
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1713
+ var DropdownMenuCheckboxItem = forwardRef19(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs13(
1714
+ DropdownMenuPrimitive.CheckboxItem,
1715
+ {
1716
+ ref,
1717
+ className: cn(
1718
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1719
+ className
1720
+ ),
1721
+ checked,
1722
+ ...props,
1723
+ children: [
1724
+ /* @__PURE__ */ jsx20("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx20(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx20(CheckIcon2, { className: "h-4 w-4" }) }) }),
1725
+ children
1726
+ ]
1727
+ }
1728
+ ));
1729
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1730
+ var DropdownMenuRadioItem = forwardRef19(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
1731
+ DropdownMenuPrimitive.RadioItem,
1732
+ {
1733
+ ref,
1734
+ className: cn(
1735
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1736
+ className
1737
+ ),
1738
+ ...props,
1739
+ children: [
1740
+ /* @__PURE__ */ jsx20("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx20(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx20(CircleIcon2, { className: "h-2 w-2 fill-current" }) }) }),
1741
+ children
1742
+ ]
1743
+ }
1744
+ ));
1745
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1746
+ var DropdownMenuLabel = forwardRef19(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx20(
1747
+ DropdownMenuPrimitive.Label,
1748
+ {
1749
+ ref,
1750
+ className: cn(
1751
+ "px-2 py-1.5 text-sm font-semibold",
1752
+ inset && "pl-8",
1753
+ className
1754
+ ),
1755
+ ...props
1756
+ }
1757
+ ));
1758
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1759
+ var DropdownMenuSeparator = forwardRef19(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
1760
+ DropdownMenuPrimitive.Separator,
1761
+ {
1762
+ ref,
1763
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1764
+ ...props
1765
+ }
1766
+ ));
1767
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
1768
+ var DropdownMenuShortcut = ({
1769
+ className,
1770
+ ...props
1771
+ }) => {
1772
+ return /* @__PURE__ */ jsx20(
1773
+ "span",
1774
+ {
1775
+ className: cn(
1776
+ "ml-auto text-xs tracking-widest opacity-60",
1777
+ className
1778
+ ),
1779
+ ...props
1780
+ }
1781
+ );
1782
+ };
1783
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1784
+
1785
+ // src/components/Form/Form.web.tsx
1786
+ import { forwardRef as forwardRef20 } from "react";
1787
+
1788
+ // src/components/Form/useFormField.ts
1789
+ import { createContext as createContext2, useContext as useContext2, useId } from "react";
1790
+ var FormFieldContext = createContext2({
1791
+ id: "",
1792
+ name: ""
1793
+ });
1794
+ function useFormFieldContext() {
1795
+ return useContext2(FormFieldContext);
1796
+ }
1797
+ function useFormFieldId() {
1798
+ return useId();
1799
+ }
1800
+
1801
+ // src/components/Form/Form.web.tsx
1802
+ import { jsx as jsx21 } from "react/jsx-runtime";
1803
+ var Form = forwardRef20(
1804
+ ({ className, ...props }, ref) => {
1805
+ return /* @__PURE__ */ jsx21("form", { ref, className: cn("space-y-6", className), ...props });
1806
+ }
1807
+ );
1808
+ Form.displayName = "Form";
1809
+ function FormField({ name, children }) {
1810
+ const id = useFormFieldId();
1811
+ return /* @__PURE__ */ jsx21(FormFieldContext.Provider, { value: { id, name }, children });
1812
+ }
1813
+ FormField.displayName = "FormField";
1814
+ var FormItem = forwardRef20(
1815
+ ({ className, ...props }, ref) => {
1816
+ return /* @__PURE__ */ jsx21("div", { ref, className: cn("space-y-2", className), ...props });
1817
+ }
1818
+ );
1819
+ FormItem.displayName = "FormItem";
1820
+ var FormLabel = forwardRef20(
1821
+ ({ className, ...props }, ref) => {
1822
+ const { id } = useFormFieldContext();
1823
+ return /* @__PURE__ */ jsx21(
1824
+ "label",
1825
+ {
1826
+ ref,
1827
+ className: cn(
1828
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
1829
+ className
1830
+ ),
1831
+ htmlFor: id,
1832
+ ...props
1833
+ }
1834
+ );
1835
+ }
1836
+ );
1837
+ FormLabel.displayName = "FormLabel";
1838
+ var FormControl = forwardRef20(
1839
+ ({ className, ...props }, ref) => {
1840
+ const { id } = useFormFieldContext();
1841
+ return /* @__PURE__ */ jsx21(
1842
+ "div",
1843
+ {
1844
+ ref,
1845
+ id,
1846
+ className: cn("", className),
1847
+ ...props
1848
+ }
1849
+ );
1850
+ }
1851
+ );
1852
+ FormControl.displayName = "FormControl";
1853
+ var FormDescription = forwardRef20(({ className, ...props }, ref) => {
1854
+ return /* @__PURE__ */ jsx21(
1855
+ "p",
1856
+ {
1857
+ ref,
1858
+ className: cn("text-[0.8rem] text-muted-foreground", className),
1859
+ ...props
1860
+ }
1861
+ );
1862
+ });
1863
+ FormDescription.displayName = "FormDescription";
1864
+ var FormMessage = forwardRef20(({ className, children, ...props }, ref) => {
1865
+ if (!children) return null;
1866
+ return /* @__PURE__ */ jsx21(
1867
+ "p",
1868
+ {
1869
+ ref,
1870
+ className: cn("text-[0.8rem] font-medium text-destructive", className),
1871
+ ...props,
1872
+ children
1873
+ }
1874
+ );
1875
+ });
1876
+ FormMessage.displayName = "FormMessage";
1877
+
1878
+ // src/components/HoverCard/HoverCard.web.tsx
1879
+ import { forwardRef as forwardRef21 } from "react";
1880
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
1881
+ import { jsx as jsx22 } from "react/jsx-runtime";
1882
+ var HoverCard = HoverCardPrimitive.Root;
1883
+ var HoverCardTrigger = HoverCardPrimitive.Trigger;
1884
+ var HoverCardContent = forwardRef21(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx22(
1885
+ HoverCardPrimitive.Content,
1886
+ {
1887
+ ref,
1888
+ align,
1889
+ sideOffset,
1890
+ className: cn(
1891
+ "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
1892
+ className
1893
+ ),
1894
+ ...props
1895
+ }
1896
+ ));
1897
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
1898
+
1899
+ // src/components/Input/Input.web.tsx
1900
+ import { forwardRef as forwardRef22 } from "react";
1901
+ import { jsx as jsx23 } from "react/jsx-runtime";
1902
+ var Input = forwardRef22(
1903
+ ({ className, type, ...props }, ref) => {
1904
+ return /* @__PURE__ */ jsx23(
1905
+ "input",
1906
+ {
1907
+ type,
1908
+ className: cn(
1909
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
1910
+ className
1911
+ ),
1912
+ ref,
1913
+ ...props
1914
+ }
1915
+ );
1916
+ }
1917
+ );
1918
+ Input.displayName = "Input";
1919
+
1920
+ // src/components/InputOTP/InputOTP.web.tsx
1921
+ import { forwardRef as forwardRef23, useState as useState6, useRef, useCallback as useCallback3, createContext as createContext3 } from "react";
1922
+ import { jsx as jsx24 } from "react/jsx-runtime";
1923
+ var InputOTPContext = createContext3({
1924
+ value: "",
1925
+ activeIndex: -1,
1926
+ length: 6
1927
+ });
1928
+ var InputOTP = forwardRef23(
1929
+ ({
1930
+ length = 6,
1931
+ value: controlledValue,
1932
+ onValueChange,
1933
+ disabled = false,
1934
+ className,
1935
+ children,
1936
+ ...props
1937
+ }, ref) => {
1938
+ const [internalValue, setInternalValue] = useState6("");
1939
+ const [activeIndex, setActiveIndex] = useState6(-1);
1940
+ const inputRefs = useRef([]);
1941
+ const currentValue = controlledValue !== void 0 ? controlledValue : internalValue;
1942
+ const updateValue = useCallback3(
1943
+ (newValue) => {
1944
+ const clamped = newValue.slice(0, length);
1945
+ if (controlledValue === void 0) {
1946
+ setInternalValue(clamped);
1947
+ }
1948
+ onValueChange?.(clamped);
1949
+ },
1950
+ [controlledValue, length, onValueChange]
1951
+ );
1952
+ const handleKeyDown = (index, e) => {
1953
+ if (e.key === "Backspace") {
1954
+ e.preventDefault();
1955
+ const chars = currentValue.split("");
1956
+ if (chars[index]) {
1957
+ chars[index] = "";
1958
+ updateValue(chars.join(""));
1959
+ } else if (index > 0) {
1960
+ chars[index - 1] = "";
1961
+ updateValue(chars.join(""));
1962
+ inputRefs.current[index - 1]?.focus();
1963
+ }
1964
+ } else if (e.key === "ArrowLeft" && index > 0) {
1965
+ inputRefs.current[index - 1]?.focus();
1966
+ } else if (e.key === "ArrowRight" && index < length - 1) {
1967
+ inputRefs.current[index + 1]?.focus();
1968
+ }
1969
+ };
1970
+ const handleInput = (index, e) => {
1971
+ const char = e.target.value.slice(-1);
1972
+ if (!char) return;
1973
+ const chars = currentValue.split("");
1974
+ while (chars.length < length) chars.push("");
1975
+ chars[index] = char;
1976
+ updateValue(chars.join(""));
1977
+ if (index < length - 1) {
1978
+ inputRefs.current[index + 1]?.focus();
1979
+ }
1980
+ };
1981
+ const handlePaste = (e) => {
1982
+ e.preventDefault();
1983
+ const pasted = e.clipboardData.getData("text").slice(0, length);
1984
+ updateValue(pasted);
1985
+ const nextIndex = Math.min(pasted.length, length - 1);
1986
+ inputRefs.current[nextIndex]?.focus();
1987
+ };
1988
+ return /* @__PURE__ */ jsx24(InputOTPContext.Provider, { value: { value: currentValue, activeIndex, length }, children: /* @__PURE__ */ jsx24(
1989
+ "div",
1990
+ {
1991
+ ref,
1992
+ className: cn("flex items-center gap-2", disabled && "opacity-50", className),
1993
+ onPaste: handlePaste,
1994
+ ...props,
1995
+ children: Array.from({ length }, (_, i) => /* @__PURE__ */ jsx24(
1996
+ "input",
1997
+ {
1998
+ ref: (el) => {
1999
+ inputRefs.current[i] = el;
2000
+ },
2001
+ type: "text",
2002
+ inputMode: "numeric",
2003
+ maxLength: 1,
2004
+ value: currentValue[i] || "",
2005
+ disabled,
2006
+ onChange: (e) => handleInput(i, e),
2007
+ onKeyDown: (e) => handleKeyDown(i, e),
2008
+ onFocus: () => setActiveIndex(i),
2009
+ onBlur: () => setActiveIndex(-1),
2010
+ className: cn(
2011
+ "flex h-9 w-9 items-center justify-center rounded-md border border-input bg-transparent text-center text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed",
2012
+ activeIndex === i && "ring-1 ring-ring"
2013
+ ),
2014
+ autoComplete: "one-time-code"
2015
+ },
2016
+ i
2017
+ ))
2018
+ }
2019
+ ) });
2020
+ }
2021
+ );
2022
+ InputOTP.displayName = "InputOTP";
2023
+
2024
+ // src/components/Label/Label.web.tsx
2025
+ import { forwardRef as forwardRef24 } from "react";
2026
+ import * as LabelPrimitive from "@radix-ui/react-label";
2027
+ import { cva as cva5 } from "class-variance-authority";
2028
+ import { jsx as jsx25 } from "react/jsx-runtime";
2029
+ var labelVariants = cva5(
2030
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
2031
+ );
2032
+ var Label3 = forwardRef24(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2033
+ LabelPrimitive.Root,
2034
+ {
2035
+ ref,
2036
+ className: cn(labelVariants(), className),
2037
+ ...props
2038
+ }
2039
+ ));
2040
+ Label3.displayName = LabelPrimitive.Root.displayName;
2041
+
2042
+ // src/components/Menubar/Menubar.web.tsx
2043
+ import { forwardRef as forwardRef25 } from "react";
2044
+ import * as MenubarPrimitive from "@radix-ui/react-menubar";
2045
+ import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
2046
+ function CheckIcon3(props) {
2047
+ return /* @__PURE__ */ jsx26("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx26("path", { d: "M20 6 9 17l-5-5" }) });
2048
+ }
2049
+ function ChevronRightIcon4(props) {
2050
+ return /* @__PURE__ */ jsx26("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx26("path", { d: "m9 18 6-6-6-6" }) });
2051
+ }
2052
+ function CircleIcon3(props) {
2053
+ return /* @__PURE__ */ jsx26("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx26("circle", { cx: "12", cy: "12", r: "10" }) });
2054
+ }
2055
+ var MenubarMenu = MenubarPrimitive.Menu;
2056
+ var MenubarGroup = MenubarPrimitive.Group;
2057
+ var MenubarPortal = MenubarPrimitive.Portal;
2058
+ var MenubarSub = MenubarPrimitive.Sub;
2059
+ var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
2060
+ var Menubar = forwardRef25(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
2061
+ MenubarPrimitive.Root,
2062
+ {
2063
+ ref,
2064
+ className: cn(
2065
+ "flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm",
2066
+ className
2067
+ ),
2068
+ ...props
2069
+ }
2070
+ ));
2071
+ Menubar.displayName = MenubarPrimitive.Root.displayName;
2072
+ var MenubarTrigger = forwardRef25(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
2073
+ MenubarPrimitive.Trigger,
2074
+ {
2075
+ ref,
2076
+ className: cn(
2077
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2078
+ className
2079
+ ),
2080
+ ...props
2081
+ }
2082
+ ));
2083
+ MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
2084
+ var MenubarSubTrigger = forwardRef25(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
2085
+ MenubarPrimitive.SubTrigger,
2086
+ {
2087
+ ref,
2088
+ className: cn(
2089
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2090
+ inset && "pl-8",
2091
+ className
2092
+ ),
2093
+ ...props,
2094
+ children: [
2095
+ children,
2096
+ /* @__PURE__ */ jsx26(ChevronRightIcon4, { className: "ml-auto h-4 w-4" })
2097
+ ]
2098
+ }
2099
+ ));
2100
+ MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
2101
+ var MenubarSubContent = forwardRef25(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
2102
+ MenubarPrimitive.SubContent,
2103
+ {
2104
+ ref,
2105
+ className: cn(
2106
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
2107
+ className
2108
+ ),
2109
+ ...props
2110
+ }
2111
+ ));
2112
+ MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
2113
+ var MenubarContent = forwardRef25(
2114
+ ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx26(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx26(
2115
+ MenubarPrimitive.Content,
2116
+ {
2117
+ ref,
2118
+ align,
2119
+ alignOffset,
2120
+ sideOffset,
2121
+ className: cn(
2122
+ "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
2123
+ className
2124
+ ),
2125
+ ...props
2126
+ }
2127
+ ) })
2128
+ );
2129
+ MenubarContent.displayName = MenubarPrimitive.Content.displayName;
2130
+ var MenubarItem = forwardRef25(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx26(
2131
+ MenubarPrimitive.Item,
2132
+ {
2133
+ ref,
2134
+ className: cn(
2135
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2136
+ inset && "pl-8",
2137
+ className
2138
+ ),
2139
+ ...props
2140
+ }
2141
+ ));
2142
+ MenubarItem.displayName = MenubarPrimitive.Item.displayName;
2143
+ var MenubarCheckboxItem = forwardRef25(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs14(
2144
+ MenubarPrimitive.CheckboxItem,
2145
+ {
2146
+ ref,
2147
+ className: cn(
2148
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2149
+ className
2150
+ ),
2151
+ checked,
2152
+ ...props,
2153
+ children: [
2154
+ /* @__PURE__ */ jsx26("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx26(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx26(CheckIcon3, { className: "h-4 w-4" }) }) }),
2155
+ children
2156
+ ]
2157
+ }
2158
+ ));
2159
+ MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
2160
+ var MenubarRadioItem = forwardRef25(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
2161
+ MenubarPrimitive.RadioItem,
2162
+ {
2163
+ ref,
2164
+ className: cn(
2165
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2166
+ className
2167
+ ),
2168
+ ...props,
2169
+ children: [
2170
+ /* @__PURE__ */ jsx26("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx26(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx26(CircleIcon3, { className: "h-2 w-2 fill-current" }) }) }),
2171
+ children
2172
+ ]
2173
+ }
2174
+ ));
2175
+ MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
2176
+ var MenubarLabel = forwardRef25(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx26(
2177
+ MenubarPrimitive.Label,
2178
+ {
2179
+ ref,
2180
+ className: cn(
2181
+ "px-2 py-1.5 text-sm font-semibold",
2182
+ inset && "pl-8",
2183
+ className
2184
+ ),
2185
+ ...props
2186
+ }
2187
+ ));
2188
+ MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
2189
+ var MenubarSeparator = forwardRef25(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
2190
+ MenubarPrimitive.Separator,
2191
+ {
2192
+ ref,
2193
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
2194
+ ...props
2195
+ }
2196
+ ));
2197
+ MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
2198
+ var MenubarShortcut = ({
2199
+ className,
2200
+ ...props
2201
+ }) => {
2202
+ return /* @__PURE__ */ jsx26(
2203
+ "span",
2204
+ {
2205
+ className: cn(
2206
+ "ml-auto text-xs tracking-widest text-muted-foreground",
2207
+ className
2208
+ ),
2209
+ ...props
2210
+ }
2211
+ );
2212
+ };
2213
+ MenubarShortcut.displayName = "MenubarShortcut";
2214
+
2215
+ // src/components/NavigationMenu/NavigationMenu.web.tsx
2216
+ import { forwardRef as forwardRef26 } from "react";
2217
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
2218
+ import { cva as cva6 } from "class-variance-authority";
2219
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
2220
+ function ChevronDownIcon2(props) {
2221
+ return /* @__PURE__ */ jsx27("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: /* @__PURE__ */ jsx27("path", { d: "m6 9 6 6 6-6" }) });
2222
+ }
2223
+ var NavigationMenu = forwardRef26(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs15(
2224
+ NavigationMenuPrimitive.Root,
2225
+ {
2226
+ ref,
2227
+ className: cn(
2228
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
2229
+ className
2230
+ ),
2231
+ ...props,
2232
+ children: [
2233
+ children,
2234
+ /* @__PURE__ */ jsx27(NavigationMenuViewport, {})
2235
+ ]
2236
+ }
2237
+ ));
2238
+ NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
2239
+ var NavigationMenuList = forwardRef26(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
2240
+ NavigationMenuPrimitive.List,
2241
+ {
2242
+ ref,
2243
+ className: cn(
2244
+ "group flex flex-1 list-none items-center justify-center space-x-1",
2245
+ className
2246
+ ),
2247
+ ...props
2248
+ }
2249
+ ));
2250
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
2251
+ var NavigationMenuItem = NavigationMenuPrimitive.Item;
2252
+ var navigationMenuTriggerStyle = cva6(
2253
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
2254
+ );
2255
+ var NavigationMenuTrigger = forwardRef26(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs15(
2256
+ NavigationMenuPrimitive.Trigger,
2257
+ {
2258
+ ref,
2259
+ className: cn(navigationMenuTriggerStyle(), "group", className),
2260
+ ...props,
2261
+ children: [
2262
+ children,
2263
+ " ",
2264
+ /* @__PURE__ */ jsx27(
2265
+ ChevronDownIcon2,
2266
+ {
2267
+ className: "relative top-[1px] ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180",
2268
+ "aria-hidden": "true"
2269
+ }
2270
+ )
2271
+ ]
2272
+ }
2273
+ ));
2274
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
2275
+ var NavigationMenuContent = forwardRef26(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
2276
+ NavigationMenuPrimitive.Content,
2277
+ {
2278
+ ref,
2279
+ className: cn(
2280
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto",
2281
+ className
2282
+ ),
2283
+ ...props
2284
+ }
2285
+ ));
2286
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
2287
+ var NavigationMenuLink = NavigationMenuPrimitive.Link;
2288
+ var NavigationMenuViewport = forwardRef26(({ className, ...props }, ref) => /* @__PURE__ */ jsx27("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx27(
2289
+ NavigationMenuPrimitive.Viewport,
2290
+ {
2291
+ className: cn(
2292
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
2293
+ className
2294
+ ),
2295
+ ref,
2296
+ ...props
2297
+ }
2298
+ ) }));
2299
+ NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
2300
+ var NavigationMenuIndicator = forwardRef26(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
2301
+ NavigationMenuPrimitive.Indicator,
2302
+ {
2303
+ ref,
2304
+ className: cn(
2305
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
2306
+ className
2307
+ ),
2308
+ ...props,
2309
+ children: /* @__PURE__ */ jsx27("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
2310
+ }
2311
+ ));
2312
+ NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
2313
+
2314
+ // src/components/Pagination/Pagination.web.tsx
2315
+ import { forwardRef as forwardRef27 } from "react";
2316
+ import { cva as cva7 } from "class-variance-authority";
2317
+ import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
2318
+ var Pagination = forwardRef27(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
2319
+ "nav",
2320
+ {
2321
+ ref,
2322
+ role: "navigation",
2323
+ "aria-label": "pagination",
2324
+ className: cn("mx-auto flex w-full justify-center", className),
2325
+ ...props
2326
+ }
2327
+ ));
2328
+ Pagination.displayName = "Pagination";
2329
+ var PaginationContent = forwardRef27(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
2330
+ "ul",
2331
+ {
2332
+ ref,
2333
+ className: cn("flex flex-row items-center gap-1", className),
2334
+ ...props
2335
+ }
2336
+ ));
2337
+ PaginationContent.displayName = "PaginationContent";
2338
+ var PaginationItem = forwardRef27(({ className, ...props }, ref) => /* @__PURE__ */ jsx28("li", { ref, className: cn("", className), ...props }));
2339
+ PaginationItem.displayName = "PaginationItem";
2340
+ var paginationLinkVariants = cva7(
2341
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
2342
+ {
2343
+ variants: {
2344
+ size: {
2345
+ default: "h-9 px-4 py-2",
2346
+ icon: "h-9 w-9"
2347
+ }
2348
+ },
2349
+ defaultVariants: {
2350
+ size: "icon"
2351
+ }
2352
+ }
2353
+ );
2354
+ var PaginationLink = forwardRef27(
2355
+ ({ className, isActive, size = "icon", ...props }, ref) => /* @__PURE__ */ jsx28(
2356
+ "a",
2357
+ {
2358
+ ref,
2359
+ "aria-current": isActive ? "page" : void 0,
2360
+ className: cn(
2361
+ paginationLinkVariants({ size }),
2362
+ isActive ? "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground" : "hover:bg-accent hover:text-accent-foreground",
2363
+ className
2364
+ ),
2365
+ ...props
2366
+ }
2367
+ )
2368
+ );
2369
+ PaginationLink.displayName = "PaginationLink";
2370
+ var PaginationPrevious = forwardRef27(({ className, ...props }, ref) => /* @__PURE__ */ jsxs16(
2371
+ PaginationLink,
2372
+ {
2373
+ ref,
2374
+ "aria-label": "Go to previous page",
2375
+ size: "default",
2376
+ className: cn("gap-1 pl-2.5", className),
2377
+ ...props,
2378
+ children: [
2379
+ /* @__PURE__ */ jsx28(
2380
+ "svg",
2381
+ {
2382
+ xmlns: "http://www.w3.org/2000/svg",
2383
+ width: "16",
2384
+ height: "16",
2385
+ viewBox: "0 0 24 24",
2386
+ fill: "none",
2387
+ stroke: "currentColor",
2388
+ strokeWidth: "2",
2389
+ strokeLinecap: "round",
2390
+ strokeLinejoin: "round",
2391
+ children: /* @__PURE__ */ jsx28("path", { d: "m15 18-6-6 6-6" })
2392
+ }
2393
+ ),
2394
+ /* @__PURE__ */ jsx28("span", { children: "Previous" })
2395
+ ]
2396
+ }
2397
+ ));
2398
+ PaginationPrevious.displayName = "PaginationPrevious";
2399
+ var PaginationNext = forwardRef27(
2400
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsxs16(
2401
+ PaginationLink,
2402
+ {
2403
+ ref,
2404
+ "aria-label": "Go to next page",
2405
+ size: "default",
2406
+ className: cn("gap-1 pr-2.5", className),
2407
+ ...props,
2408
+ children: [
2409
+ /* @__PURE__ */ jsx28("span", { children: "Next" }),
2410
+ /* @__PURE__ */ jsx28(
2411
+ "svg",
2412
+ {
2413
+ xmlns: "http://www.w3.org/2000/svg",
2414
+ width: "16",
2415
+ height: "16",
2416
+ viewBox: "0 0 24 24",
2417
+ fill: "none",
2418
+ stroke: "currentColor",
2419
+ strokeWidth: "2",
2420
+ strokeLinecap: "round",
2421
+ strokeLinejoin: "round",
2422
+ children: /* @__PURE__ */ jsx28("path", { d: "m9 18 6-6-6-6" })
2423
+ }
2424
+ )
2425
+ ]
2426
+ }
2427
+ )
2428
+ );
2429
+ PaginationNext.displayName = "PaginationNext";
2430
+ var PaginationEllipsis = forwardRef27(({ className, ...props }, ref) => /* @__PURE__ */ jsxs16(
2431
+ "span",
2432
+ {
2433
+ ref,
2434
+ "aria-hidden": true,
2435
+ className: cn("flex h-9 w-9 items-center justify-center", className),
2436
+ ...props,
2437
+ children: [
2438
+ /* @__PURE__ */ jsxs16(
2439
+ "svg",
2440
+ {
2441
+ xmlns: "http://www.w3.org/2000/svg",
2442
+ width: "16",
2443
+ height: "16",
2444
+ viewBox: "0 0 24 24",
2445
+ fill: "none",
2446
+ stroke: "currentColor",
2447
+ strokeWidth: "2",
2448
+ strokeLinecap: "round",
2449
+ strokeLinejoin: "round",
2450
+ children: [
2451
+ /* @__PURE__ */ jsx28("circle", { cx: "12", cy: "12", r: "1" }),
2452
+ /* @__PURE__ */ jsx28("circle", { cx: "19", cy: "12", r: "1" }),
2453
+ /* @__PURE__ */ jsx28("circle", { cx: "5", cy: "12", r: "1" })
2454
+ ]
2455
+ }
2456
+ ),
2457
+ /* @__PURE__ */ jsx28("span", { className: "sr-only", children: "More pages" })
2458
+ ]
2459
+ }
2460
+ ));
2461
+ PaginationEllipsis.displayName = "PaginationEllipsis";
2462
+
2463
+ // src/components/Popover/Popover.web.tsx
2464
+ import { forwardRef as forwardRef28 } from "react";
2465
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
2466
+ import { jsx as jsx29 } from "react/jsx-runtime";
2467
+ var Popover3 = PopoverPrimitive.Root;
2468
+ var PopoverTrigger = PopoverPrimitive.Trigger;
2469
+ var PopoverAnchor = PopoverPrimitive.Anchor;
2470
+ var PopoverContent = forwardRef28(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx29(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx29(
2471
+ PopoverPrimitive.Content,
2472
+ {
2473
+ ref,
2474
+ align,
2475
+ sideOffset,
2476
+ className: cn(
2477
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
2478
+ className
2479
+ ),
2480
+ ...props
2481
+ }
2482
+ ) }));
2483
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2484
+
2485
+ // src/components/Progress/Progress.web.tsx
2486
+ import { forwardRef as forwardRef29 } from "react";
2487
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
2488
+
2489
+ // src/components/Progress/useProgress.ts
2490
+ function useProgress({ value = 0, max = 100 } = {}) {
2491
+ const clampedValue = Math.min(Math.max(value, 0), max);
2492
+ const percentage = max > 0 ? clampedValue / max : 0;
2493
+ return { clampedValue, percentage, max };
2494
+ }
2495
+
2496
+ // src/components/Progress/Progress.web.tsx
2497
+ import { jsx as jsx30 } from "react/jsx-runtime";
2498
+ var Progress = forwardRef29(({ className, value, ...props }, ref) => {
2499
+ const { percentage } = useProgress({ value: value ?? 0 });
2500
+ return /* @__PURE__ */ jsx30(
2501
+ ProgressPrimitive.Root,
2502
+ {
2503
+ ref,
2504
+ className: cn(
2505
+ "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
2506
+ className
2507
+ ),
2508
+ ...props,
2509
+ children: /* @__PURE__ */ jsx30(
2510
+ ProgressPrimitive.Indicator,
2511
+ {
2512
+ className: "h-full w-full flex-1 bg-primary transition-all",
2513
+ style: { transform: `translateX(-${100 - percentage * 100}%)` }
2514
+ }
2515
+ )
2516
+ }
2517
+ );
2518
+ });
2519
+ Progress.displayName = ProgressPrimitive.Root.displayName;
2520
+
2521
+ // src/components/RadioGroup/RadioGroup.web.tsx
2522
+ import { forwardRef as forwardRef30 } from "react";
2523
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2524
+ import { jsx as jsx31 } from "react/jsx-runtime";
2525
+ var RadioGroup4 = forwardRef30(({ className, ...props }, ref) => {
2526
+ return /* @__PURE__ */ jsx31(
2527
+ RadioGroupPrimitive.Root,
2528
+ {
2529
+ className: cn("grid gap-2", className),
2530
+ ...props,
2531
+ ref
2532
+ }
2533
+ );
2534
+ });
2535
+ RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
2536
+ var RadioGroupItem = forwardRef30(({ className, ...props }, ref) => {
2537
+ return /* @__PURE__ */ jsx31(
2538
+ RadioGroupPrimitive.Item,
2539
+ {
2540
+ ref,
2541
+ className: cn(
2542
+ "aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
2543
+ className
2544
+ ),
2545
+ ...props,
2546
+ children: /* @__PURE__ */ jsx31(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx31(
2547
+ "svg",
2548
+ {
2549
+ xmlns: "http://www.w3.org/2000/svg",
2550
+ viewBox: "0 0 24 24",
2551
+ fill: "currentColor",
2552
+ className: "h-3.5 w-3.5",
2553
+ children: /* @__PURE__ */ jsx31("circle", { cx: "12", cy: "12", r: "6" })
2554
+ }
2555
+ ) })
2556
+ }
2557
+ );
2558
+ });
2559
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
2560
+
2561
+ // src/components/ResizablePanel/ResizablePanel.web.tsx
2562
+ import {
2563
+ Group as Group4,
2564
+ Panel,
2565
+ Separator as Separator4
2566
+ } from "react-resizable-panels";
2567
+ import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
2568
+ function ResizablePanelGroup({
2569
+ className,
2570
+ direction = "horizontal",
2571
+ children
2572
+ }) {
2573
+ return /* @__PURE__ */ jsx32(
2574
+ Group4,
2575
+ {
2576
+ orientation: direction,
2577
+ className: cn(
2578
+ "flex h-full w-full data-[orientation=vertical]:flex-col",
2579
+ className
2580
+ ),
2581
+ children
2582
+ }
2583
+ );
2584
+ }
2585
+ function ResizablePanel({
2586
+ className,
2587
+ ...props
2588
+ }) {
2589
+ return /* @__PURE__ */ jsx32(Panel, { className: cn("relative overflow-auto", className), ...props });
2590
+ }
2591
+ function ResizableHandle({
2592
+ className,
2593
+ withHandle,
2594
+ ...props
2595
+ }) {
2596
+ return /* @__PURE__ */ jsx32(
2597
+ Separator4,
2598
+ {
2599
+ className: cn(
2600
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[orientation=vertical]:h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:after:left-0 data-[orientation=vertical]:after:h-1 data-[orientation=vertical]:after:w-full data-[orientation=vertical]:after:-translate-y-1/2 data-[orientation=vertical]:after:translate-x-0 [&[data-orientation=vertical]>div]:rotate-90",
2601
+ className
2602
+ ),
2603
+ ...props,
2604
+ children: withHandle && /* @__PURE__ */ jsx32("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsxs17(
2605
+ "svg",
2606
+ {
2607
+ xmlns: "http://www.w3.org/2000/svg",
2608
+ width: "10",
2609
+ height: "10",
2610
+ viewBox: "0 0 24 24",
2611
+ fill: "none",
2612
+ stroke: "currentColor",
2613
+ strokeWidth: "2",
2614
+ strokeLinecap: "round",
2615
+ strokeLinejoin: "round",
2616
+ children: [
2617
+ /* @__PURE__ */ jsx32("circle", { cx: "12", cy: "5", r: "1" }),
2618
+ /* @__PURE__ */ jsx32("circle", { cx: "12", cy: "12", r: "1" }),
2619
+ /* @__PURE__ */ jsx32("circle", { cx: "12", cy: "19", r: "1" }),
2620
+ /* @__PURE__ */ jsx32("circle", { cx: "19", cy: "5", r: "1" }),
2621
+ /* @__PURE__ */ jsx32("circle", { cx: "19", cy: "12", r: "1" }),
2622
+ /* @__PURE__ */ jsx32("circle", { cx: "19", cy: "19", r: "1" })
2623
+ ]
2624
+ }
2625
+ ) })
2626
+ }
2627
+ );
2628
+ }
2629
+
2630
+ // src/components/ScrollArea/ScrollArea.web.tsx
2631
+ import { forwardRef as forwardRef31 } from "react";
2632
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
2633
+ import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
2634
+ var ScrollArea = forwardRef31(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs18(
2635
+ ScrollAreaPrimitive.Root,
2636
+ {
2637
+ ref,
2638
+ className: cn("relative overflow-hidden", className),
2639
+ ...props,
2640
+ children: [
2641
+ /* @__PURE__ */ jsx33(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
2642
+ /* @__PURE__ */ jsx33(ScrollBar, {}),
2643
+ /* @__PURE__ */ jsx33(ScrollAreaPrimitive.Corner, {})
2644
+ ]
2645
+ }
2646
+ ));
2647
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
2648
+ var ScrollBar = forwardRef31(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx33(
2649
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
2650
+ {
2651
+ ref,
2652
+ orientation,
2653
+ className: cn(
2654
+ "flex touch-none select-none transition-colors",
2655
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
2656
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
2657
+ className
2658
+ ),
2659
+ ...props,
2660
+ children: /* @__PURE__ */ jsx33(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
2661
+ }
2662
+ ));
2663
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
2664
+
2665
+ // src/components/Select/Select.web.tsx
2666
+ import { forwardRef as forwardRef32 } from "react";
2667
+ import * as SelectPrimitive from "@radix-ui/react-select";
2668
+ import { jsx as jsx34, jsxs as jsxs19 } from "react/jsx-runtime";
2669
+ var Select = SelectPrimitive.Root;
2670
+ var SelectGroup = SelectPrimitive.Group;
2671
+ var SelectValue = SelectPrimitive.Value;
2672
+ var SelectTrigger = forwardRef32(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
2673
+ SelectPrimitive.Trigger,
2674
+ {
2675
+ ref,
2676
+ className: cn(
2677
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2678
+ className
2679
+ ),
2680
+ ...props,
2681
+ children: [
2682
+ children,
2683
+ /* @__PURE__ */ jsx34(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx34(
2684
+ "svg",
2685
+ {
2686
+ xmlns: "http://www.w3.org/2000/svg",
2687
+ width: "16",
2688
+ height: "16",
2689
+ viewBox: "0 0 24 24",
2690
+ fill: "none",
2691
+ stroke: "currentColor",
2692
+ strokeWidth: "2",
2693
+ strokeLinecap: "round",
2694
+ strokeLinejoin: "round",
2695
+ className: "h-4 w-4 opacity-50",
2696
+ children: /* @__PURE__ */ jsx34("path", { d: "m6 9 6 6 6-6" })
2697
+ }
2698
+ ) })
2699
+ ]
2700
+ }
2701
+ ));
2702
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2703
+ var SelectScrollUpButton = forwardRef32(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2704
+ SelectPrimitive.ScrollUpButton,
2705
+ {
2706
+ ref,
2707
+ className: cn(
2708
+ "flex cursor-default items-center justify-center py-1",
2709
+ className
2710
+ ),
2711
+ ...props,
2712
+ children: /* @__PURE__ */ jsx34(
2713
+ "svg",
2714
+ {
2715
+ xmlns: "http://www.w3.org/2000/svg",
2716
+ width: "16",
2717
+ height: "16",
2718
+ viewBox: "0 0 24 24",
2719
+ fill: "none",
2720
+ stroke: "currentColor",
2721
+ strokeWidth: "2",
2722
+ strokeLinecap: "round",
2723
+ strokeLinejoin: "round",
2724
+ className: "h-4 w-4",
2725
+ children: /* @__PURE__ */ jsx34("path", { d: "m18 15-6-6-6 6" })
2726
+ }
2727
+ )
2728
+ }
2729
+ ));
2730
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2731
+ var SelectScrollDownButton = forwardRef32(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2732
+ SelectPrimitive.ScrollDownButton,
2733
+ {
2734
+ ref,
2735
+ className: cn(
2736
+ "flex cursor-default items-center justify-center py-1",
2737
+ className
2738
+ ),
2739
+ ...props,
2740
+ children: /* @__PURE__ */ jsx34(
2741
+ "svg",
2742
+ {
2743
+ xmlns: "http://www.w3.org/2000/svg",
2744
+ width: "16",
2745
+ height: "16",
2746
+ viewBox: "0 0 24 24",
2747
+ fill: "none",
2748
+ stroke: "currentColor",
2749
+ strokeWidth: "2",
2750
+ strokeLinecap: "round",
2751
+ strokeLinejoin: "round",
2752
+ className: "h-4 w-4",
2753
+ children: /* @__PURE__ */ jsx34("path", { d: "m6 9 6 6 6-6" })
2754
+ }
2755
+ )
2756
+ }
2757
+ ));
2758
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2759
+ var SelectContent = forwardRef32(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx34(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs19(
2760
+ SelectPrimitive.Content,
2761
+ {
2762
+ ref,
2763
+ className: cn(
2764
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
2765
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
2766
+ className
2767
+ ),
2768
+ position,
2769
+ ...props,
2770
+ children: [
2771
+ /* @__PURE__ */ jsx34(SelectScrollUpButton, {}),
2772
+ /* @__PURE__ */ jsx34(
2773
+ SelectPrimitive.Viewport,
2774
+ {
2775
+ className: cn(
2776
+ "p-1",
2777
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
2778
+ ),
2779
+ children
2780
+ }
2781
+ ),
2782
+ /* @__PURE__ */ jsx34(SelectScrollDownButton, {})
2783
+ ]
2784
+ }
2785
+ ) }));
2786
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
2787
+ var SelectLabel = forwardRef32(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2788
+ SelectPrimitive.Label,
2789
+ {
2790
+ ref,
2791
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
2792
+ ...props
2793
+ }
2794
+ ));
2795
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
2796
+ var SelectItem = forwardRef32(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
2797
+ SelectPrimitive.Item,
2798
+ {
2799
+ ref,
2800
+ className: cn(
2801
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2802
+ className
2803
+ ),
2804
+ ...props,
2805
+ children: [
2806
+ /* @__PURE__ */ jsx34("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx34(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx34(
2807
+ "svg",
2808
+ {
2809
+ xmlns: "http://www.w3.org/2000/svg",
2810
+ width: "16",
2811
+ height: "16",
2812
+ viewBox: "0 0 24 24",
2813
+ fill: "none",
2814
+ stroke: "currentColor",
2815
+ strokeWidth: "2",
2816
+ strokeLinecap: "round",
2817
+ strokeLinejoin: "round",
2818
+ className: "h-4 w-4",
2819
+ children: /* @__PURE__ */ jsx34("polyline", { points: "20 6 9 17 4 12" })
2820
+ }
2821
+ ) }) }),
2822
+ /* @__PURE__ */ jsx34(SelectPrimitive.ItemText, { children })
2823
+ ]
2824
+ }
2825
+ ));
2826
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
2827
+ var SelectSeparator = forwardRef32(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2828
+ SelectPrimitive.Separator,
2829
+ {
2830
+ ref,
2831
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
2832
+ ...props
2833
+ }
2834
+ ));
2835
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2836
+
2837
+ // src/components/Separator/Separator.web.tsx
2838
+ import { forwardRef as forwardRef33 } from "react";
2839
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
2840
+ import { cva as cva8 } from "class-variance-authority";
2841
+ import { jsx as jsx35 } from "react/jsx-runtime";
2842
+ var separatorVariants = cva8("shrink-0 bg-border", {
2843
+ variants: {
2844
+ orientation: {
2845
+ horizontal: "h-[1px] w-full",
2846
+ vertical: "h-full w-[1px]"
2847
+ }
2848
+ },
2849
+ defaultVariants: {
2850
+ orientation: "horizontal"
2851
+ }
2852
+ });
2853
+ var Separator6 = forwardRef33(
2854
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx35(
2855
+ SeparatorPrimitive.Root,
2856
+ {
2857
+ ref,
2858
+ decorative,
2859
+ orientation,
2860
+ className: cn(separatorVariants({ orientation }), className),
2861
+ ...props
2862
+ }
2863
+ )
2864
+ );
2865
+ Separator6.displayName = SeparatorPrimitive.Root.displayName;
2866
+
2867
+ // src/components/Sheet/Sheet.web.tsx
2868
+ import { forwardRef as forwardRef34 } from "react";
2869
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
2870
+ import { cva as cva9 } from "class-variance-authority";
2871
+ import { jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
2872
+ function XIcon2(props) {
2873
+ return /* @__PURE__ */ jsxs20("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [
2874
+ /* @__PURE__ */ jsx36("path", { d: "M18 6 6 18" }),
2875
+ /* @__PURE__ */ jsx36("path", { d: "m6 6 12 12" })
2876
+ ] });
2877
+ }
2878
+ var Sheet = SheetPrimitive.Root;
2879
+ var SheetTrigger = SheetPrimitive.Trigger;
2880
+ var SheetClose = SheetPrimitive.Close;
2881
+ var SheetPortal = SheetPrimitive.Portal;
2882
+ var SheetOverlay = forwardRef34(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
2883
+ SheetPrimitive.Overlay,
2884
+ {
2885
+ className: cn(
2886
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
2887
+ className
2888
+ ),
2889
+ ...props,
2890
+ ref
2891
+ }
2892
+ ));
2893
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
2894
+ var sheetVariants = cva9(
2895
+ "fixed z-50 gap-4 bg-background text-foreground p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
2896
+ {
2897
+ variants: {
2898
+ side: {
2899
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
2900
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
2901
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
2902
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
2903
+ }
2904
+ },
2905
+ defaultVariants: {
2906
+ side: "right"
2907
+ }
2908
+ }
2909
+ );
2910
+ var SheetContent = forwardRef34(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs20(SheetPortal, { children: [
2911
+ /* @__PURE__ */ jsx36(SheetOverlay, {}),
2912
+ /* @__PURE__ */ jsxs20(
2913
+ SheetPrimitive.Content,
2914
+ {
2915
+ ref,
2916
+ className: cn(sheetVariants({ side }), className),
2917
+ ...props,
2918
+ children: [
2919
+ /* @__PURE__ */ jsxs20(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
2920
+ /* @__PURE__ */ jsx36(XIcon2, { className: "h-4 w-4" }),
2921
+ /* @__PURE__ */ jsx36("span", { className: "sr-only", children: "Close" })
2922
+ ] }),
2923
+ children
2924
+ ]
2925
+ }
2926
+ )
2927
+ ] }));
2928
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
2929
+ var SheetHeader = ({
2930
+ className,
2931
+ ...props
2932
+ }) => /* @__PURE__ */ jsx36(
2933
+ "div",
2934
+ {
2935
+ className: cn(
2936
+ "flex flex-col space-y-2 text-center sm:text-left",
2937
+ className
2938
+ ),
2939
+ ...props
2940
+ }
2941
+ );
2942
+ SheetHeader.displayName = "SheetHeader";
2943
+ var SheetFooter = ({
2944
+ className,
2945
+ ...props
2946
+ }) => /* @__PURE__ */ jsx36(
2947
+ "div",
2948
+ {
2949
+ className: cn(
2950
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2951
+ className
2952
+ ),
2953
+ ...props
2954
+ }
2955
+ );
2956
+ SheetFooter.displayName = "SheetFooter";
2957
+ var SheetTitle = forwardRef34(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
2958
+ SheetPrimitive.Title,
2959
+ {
2960
+ ref,
2961
+ className: cn("text-lg font-semibold text-foreground", className),
2962
+ ...props
2963
+ }
2964
+ ));
2965
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
2966
+ var SheetDescription = forwardRef34(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
2967
+ SheetPrimitive.Description,
2968
+ {
2969
+ ref,
2970
+ className: cn("text-sm text-muted-foreground", className),
2971
+ ...props
2972
+ }
2973
+ ));
2974
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
2975
+
2976
+ // src/components/Sidebar/Sidebar.web.tsx
2977
+ import {
2978
+ forwardRef as forwardRef35,
2979
+ createContext as createContext4,
2980
+ useContext as useContext4
2981
+ } from "react";
2982
+
2983
+ // src/components/Sidebar/useSidebar.ts
2984
+ import { useCallback as useCallback5 } from "react";
2985
+
2986
+ // src/hooks/useControllableState.ts
2987
+ import { useState as useState7, useCallback as useCallback4, useRef as useRef2 } from "react";
2988
+ function useControllableState({
2989
+ value: controlledValue,
2990
+ defaultValue,
2991
+ onChange
2992
+ }) {
2993
+ const [uncontrolledValue, setUncontrolledValue] = useState7(defaultValue);
2994
+ const isControlled = controlledValue !== void 0;
2995
+ const value = isControlled ? controlledValue : uncontrolledValue;
2996
+ const onChangeRef = useRef2(onChange);
2997
+ onChangeRef.current = onChange;
2998
+ const setValue = useCallback4(
2999
+ (next) => {
3000
+ const nextValue = typeof next === "function" ? next(value) : next;
3001
+ if (!isControlled) {
3002
+ setUncontrolledValue(nextValue);
3003
+ }
3004
+ onChangeRef.current?.(nextValue);
3005
+ },
3006
+ [isControlled, value]
3007
+ );
3008
+ return [value, setValue];
3009
+ }
3010
+
3011
+ // src/components/Sidebar/useSidebar.ts
3012
+ function useSidebar({
3013
+ open: controlledOpen,
3014
+ defaultOpen = true,
3015
+ onOpenChange
3016
+ } = {}) {
3017
+ const [open, setOpen] = useControllableState({
3018
+ value: controlledOpen,
3019
+ defaultValue: defaultOpen,
3020
+ onChange: onOpenChange
3021
+ });
3022
+ const toggleSidebar = useCallback5(() => {
3023
+ setOpen((prev) => !prev);
3024
+ }, [setOpen]);
3025
+ return { open, setOpen, toggleSidebar };
3026
+ }
3027
+
3028
+ // src/components/Sidebar/Sidebar.web.tsx
3029
+ import { jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
3030
+ var SidebarContext = createContext4({
3031
+ open: true,
3032
+ setOpen: () => {
3033
+ },
3034
+ toggleSidebar: () => {
3035
+ }
3036
+ });
3037
+ function useSidebarContext() {
3038
+ const context = useContext4(SidebarContext);
3039
+ if (!context) {
3040
+ throw new Error("useSidebarContext must be used within a SidebarProvider.");
3041
+ }
3042
+ return context;
3043
+ }
3044
+ var SidebarProvider = forwardRef35(({ defaultOpen = true, open: controlledOpen, onOpenChange, className, children, ...props }, ref) => {
3045
+ const { open, setOpen, toggleSidebar } = useSidebar({
3046
+ open: controlledOpen,
3047
+ defaultOpen,
3048
+ onOpenChange
3049
+ });
3050
+ return /* @__PURE__ */ jsx37(SidebarContext.Provider, { value: { open, setOpen, toggleSidebar }, children: /* @__PURE__ */ jsx37(
3051
+ "div",
3052
+ {
3053
+ ref,
3054
+ className: cn("flex min-h-svh w-full", className),
3055
+ ...props,
3056
+ children
3057
+ }
3058
+ ) });
3059
+ });
3060
+ SidebarProvider.displayName = "SidebarProvider";
3061
+ var Sidebar = forwardRef35(({ side = "left", collapsible = "offcanvas", className, children, ...props }, ref) => {
3062
+ const { open } = useSidebarContext();
3063
+ if (collapsible === "none") {
3064
+ return /* @__PURE__ */ jsx37(
3065
+ "div",
3066
+ {
3067
+ ref,
3068
+ className: cn(
3069
+ "flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
3070
+ className
3071
+ ),
3072
+ ...props,
3073
+ children
3074
+ }
3075
+ );
3076
+ }
3077
+ return /* @__PURE__ */ jsx37(
3078
+ "div",
3079
+ {
3080
+ ref,
3081
+ className: cn(
3082
+ "group/sidebar relative flex flex-col bg-sidebar text-sidebar-foreground transition-[width] duration-200 ease-linear",
3083
+ open ? "w-[--sidebar-width]" : collapsible === "icon" ? "w-[--sidebar-width-icon]" : "w-0",
3084
+ side === "right" && "order-last",
3085
+ className
3086
+ ),
3087
+ "data-state": open ? "expanded" : "collapsed",
3088
+ "data-side": side,
3089
+ ...props,
3090
+ children: /* @__PURE__ */ jsx37(
3091
+ "div",
3092
+ {
3093
+ className: cn(
3094
+ "flex h-full w-[--sidebar-width] flex-col overflow-hidden",
3095
+ !open && collapsible === "offcanvas" && "invisible"
3096
+ ),
3097
+ children
3098
+ }
3099
+ )
3100
+ }
3101
+ );
3102
+ });
3103
+ Sidebar.displayName = "Sidebar";
3104
+ var SidebarHeader = forwardRef35(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3105
+ "div",
3106
+ {
3107
+ ref,
3108
+ className: cn("flex flex-col gap-2 p-2", className),
3109
+ ...props
3110
+ }
3111
+ ));
3112
+ SidebarHeader.displayName = "SidebarHeader";
3113
+ var SidebarContent = forwardRef35(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3114
+ "div",
3115
+ {
3116
+ ref,
3117
+ className: cn(
3118
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto p-2",
3119
+ className
3120
+ ),
3121
+ ...props
3122
+ }
3123
+ ));
3124
+ SidebarContent.displayName = "SidebarContent";
3125
+ var SidebarFooter = forwardRef35(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3126
+ "div",
3127
+ {
3128
+ ref,
3129
+ className: cn("flex flex-col gap-2 p-2", className),
3130
+ ...props
3131
+ }
3132
+ ));
3133
+ SidebarFooter.displayName = "SidebarFooter";
3134
+ var SidebarTrigger = forwardRef35(({ className, onClick, ...props }, ref) => {
3135
+ const { toggleSidebar } = useSidebarContext();
3136
+ return /* @__PURE__ */ jsxs21(
3137
+ "button",
3138
+ {
3139
+ ref,
3140
+ className: cn("h-7 w-7", className),
3141
+ onClick: (e) => {
3142
+ onClick?.(e);
3143
+ toggleSidebar();
3144
+ },
3145
+ ...props,
3146
+ children: [
3147
+ /* @__PURE__ */ jsxs21(
3148
+ "svg",
3149
+ {
3150
+ xmlns: "http://www.w3.org/2000/svg",
3151
+ width: "24",
3152
+ height: "24",
3153
+ viewBox: "0 0 24 24",
3154
+ fill: "none",
3155
+ stroke: "currentColor",
3156
+ strokeWidth: "2",
3157
+ strokeLinecap: "round",
3158
+ strokeLinejoin: "round",
3159
+ className: "h-4 w-4",
3160
+ children: [
3161
+ /* @__PURE__ */ jsx37("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }),
3162
+ /* @__PURE__ */ jsx37("path", { d: "M9 3v18" })
3163
+ ]
3164
+ }
3165
+ ),
3166
+ /* @__PURE__ */ jsx37("span", { className: "sr-only", children: "Toggle Sidebar" })
3167
+ ]
3168
+ }
3169
+ );
3170
+ });
3171
+ SidebarTrigger.displayName = "SidebarTrigger";
3172
+
3173
+ // src/components/Skeleton/Skeleton.web.tsx
3174
+ import { forwardRef as forwardRef36 } from "react";
3175
+ import { jsx as jsx38 } from "react/jsx-runtime";
3176
+ var Skeleton = forwardRef36(({ className, ...props }, ref) => {
3177
+ return /* @__PURE__ */ jsx38(
3178
+ "div",
3179
+ {
3180
+ ref,
3181
+ className: cn("animate-pulse rounded-md bg-primary/10", className),
3182
+ ...props
3183
+ }
3184
+ );
3185
+ });
3186
+ Skeleton.displayName = "Skeleton";
3187
+
3188
+ // src/components/Slider/Slider.web.tsx
3189
+ import { forwardRef as forwardRef37 } from "react";
3190
+ import * as SliderPrimitive from "@radix-ui/react-slider";
3191
+ import { jsx as jsx39, jsxs as jsxs22 } from "react/jsx-runtime";
3192
+ var Slider = forwardRef37(({ className, ...props }, ref) => /* @__PURE__ */ jsxs22(
3193
+ SliderPrimitive.Root,
3194
+ {
3195
+ ref,
3196
+ className: cn(
3197
+ "relative flex w-full touch-none select-none items-center",
3198
+ className
3199
+ ),
3200
+ ...props,
3201
+ children: [
3202
+ /* @__PURE__ */ jsx39(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsx39(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
3203
+ /* @__PURE__ */ jsx39(SliderPrimitive.Thumb, { className: "block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" })
3204
+ ]
3205
+ }
3206
+ ));
3207
+ Slider.displayName = SliderPrimitive.Root.displayName;
3208
+
3209
+ // src/components/Switch/Switch.web.tsx
3210
+ import { forwardRef as forwardRef38 } from "react";
3211
+ import * as SwitchPrimitive from "@radix-ui/react-switch";
3212
+ import { jsx as jsx40 } from "react/jsx-runtime";
3213
+ var Switch = forwardRef38(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
3214
+ SwitchPrimitive.Root,
3215
+ {
3216
+ className: cn(
3217
+ "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
3218
+ className
3219
+ ),
3220
+ ...props,
3221
+ ref,
3222
+ children: /* @__PURE__ */ jsx40(
3223
+ SwitchPrimitive.Thumb,
3224
+ {
3225
+ className: cn(
3226
+ "pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
3227
+ )
3228
+ }
3229
+ )
3230
+ }
3231
+ ));
3232
+ Switch.displayName = SwitchPrimitive.Root.displayName;
3233
+
3234
+ // src/components/Table/Table.web.tsx
3235
+ import { forwardRef as forwardRef39 } from "react";
3236
+ import { jsx as jsx41 } from "react/jsx-runtime";
3237
+ var Table = forwardRef39(({ className, ...props }, ref) => /* @__PURE__ */ jsx41("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx41(
3238
+ "table",
3239
+ {
3240
+ ref,
3241
+ className: cn("w-full caption-bottom text-sm", className),
3242
+ ...props
3243
+ }
3244
+ ) }));
3245
+ Table.displayName = "Table";
3246
+ var TableHeader = forwardRef39(({ className, ...props }, ref) => /* @__PURE__ */ jsx41("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
3247
+ TableHeader.displayName = "TableHeader";
3248
+ var TableBody = forwardRef39(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3249
+ "tbody",
3250
+ {
3251
+ ref,
3252
+ className: cn("[&_tr:last-child]:border-0", className),
3253
+ ...props
3254
+ }
3255
+ ));
3256
+ TableBody.displayName = "TableBody";
3257
+ var TableFooter = forwardRef39(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3258
+ "tfoot",
3259
+ {
3260
+ ref,
3261
+ className: cn(
3262
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
3263
+ className
3264
+ ),
3265
+ ...props
3266
+ }
3267
+ ));
3268
+ TableFooter.displayName = "TableFooter";
3269
+ var TableRow = forwardRef39(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3270
+ "tr",
3271
+ {
3272
+ ref,
3273
+ className: cn(
3274
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
3275
+ className
3276
+ ),
3277
+ ...props
3278
+ }
3279
+ ));
3280
+ TableRow.displayName = "TableRow";
3281
+ var TableHead = forwardRef39(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3282
+ "th",
3283
+ {
3284
+ ref,
3285
+ className: cn(
3286
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
3287
+ className
3288
+ ),
3289
+ ...props
3290
+ }
3291
+ ));
3292
+ TableHead.displayName = "TableHead";
3293
+ var TableCell = forwardRef39(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3294
+ "td",
3295
+ {
3296
+ ref,
3297
+ className: cn(
3298
+ "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
3299
+ className
3300
+ ),
3301
+ ...props
3302
+ }
3303
+ ));
3304
+ TableCell.displayName = "TableCell";
3305
+ var TableCaption = forwardRef39(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3306
+ "caption",
3307
+ {
3308
+ ref,
3309
+ className: cn("mt-4 text-sm text-muted-foreground", className),
3310
+ ...props
3311
+ }
3312
+ ));
3313
+ TableCaption.displayName = "TableCaption";
3314
+
3315
+ // src/components/Tabs/Tabs.web.tsx
3316
+ import { forwardRef as forwardRef40 } from "react";
3317
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
3318
+ import { jsx as jsx42 } from "react/jsx-runtime";
3319
+ var Tabs = TabsPrimitive.Root;
3320
+ var TabsList = forwardRef40(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3321
+ TabsPrimitive.List,
3322
+ {
3323
+ ref,
3324
+ className: cn(
3325
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
3326
+ className
3327
+ ),
3328
+ ...props
3329
+ }
3330
+ ));
3331
+ TabsList.displayName = TabsPrimitive.List.displayName;
3332
+ var TabsTrigger = forwardRef40(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3333
+ TabsPrimitive.Trigger,
3334
+ {
3335
+ ref,
3336
+ className: cn(
3337
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
3338
+ className
3339
+ ),
3340
+ ...props
3341
+ }
3342
+ ));
3343
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
3344
+ var TabsContent = forwardRef40(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3345
+ TabsPrimitive.Content,
3346
+ {
3347
+ ref,
3348
+ className: cn(
3349
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
3350
+ className
3351
+ ),
3352
+ ...props
3353
+ }
3354
+ ));
3355
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
3356
+
3357
+ // src/components/Textarea/Textarea.web.tsx
3358
+ import { forwardRef as forwardRef41 } from "react";
3359
+ import { jsx as jsx43 } from "react/jsx-runtime";
3360
+ var Textarea = forwardRef41(({ className, ...props }, ref) => {
3361
+ return /* @__PURE__ */ jsx43(
3362
+ "textarea",
3363
+ {
3364
+ className: cn(
3365
+ "flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
3366
+ className
3367
+ ),
3368
+ ref,
3369
+ ...props
3370
+ }
3371
+ );
3372
+ });
3373
+ Textarea.displayName = "Textarea";
3374
+
3375
+ // src/components/Toast/Toast.web.tsx
3376
+ import { forwardRef as forwardRef42, useState as useState8, useEffect } from "react";
3377
+ import { cva as cva10 } from "class-variance-authority";
3378
+ import { Fragment, jsx as jsx44, jsxs as jsxs23 } from "react/jsx-runtime";
3379
+ function XIcon3(props) {
3380
+ return /* @__PURE__ */ jsxs23("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", ...props, children: [
3381
+ /* @__PURE__ */ jsx44("path", { d: "M18 6 6 18" }),
3382
+ /* @__PURE__ */ jsx44("path", { d: "m6 6 12 12" })
3383
+ ] });
3384
+ }
3385
+ var toastKeyframes = `@keyframes byld-toast-slide-in{from{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}`;
3386
+ var toastStyleInjected = false;
3387
+ var toastVariants = cva10(
3388
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg [animation:byld-toast-slide-in_0.3s_ease-out]",
3389
+ {
3390
+ variants: {
3391
+ variant: {
3392
+ default: "border bg-background text-foreground",
3393
+ destructive: "destructive group border-destructive bg-destructive text-destructive-foreground"
3394
+ }
3395
+ },
3396
+ defaultVariants: {
3397
+ variant: "default"
3398
+ }
3399
+ }
3400
+ );
3401
+ var ToastProvider = ({ children }) => {
3402
+ return /* @__PURE__ */ jsx44(Fragment, { children });
3403
+ };
3404
+ ToastProvider.displayName = "ToastProvider";
3405
+ var ToastViewport = forwardRef42(({ className, ...props }, ref) => {
3406
+ useEffect(() => {
3407
+ if (toastStyleInjected) return;
3408
+ toastStyleInjected = true;
3409
+ const style = document.createElement("style");
3410
+ style.textContent = toastKeyframes;
3411
+ document.head.appendChild(style);
3412
+ }, []);
3413
+ return /* @__PURE__ */ jsx44(
3414
+ "ol",
3415
+ {
3416
+ ref,
3417
+ className: cn(
3418
+ "fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",
3419
+ className
3420
+ ),
3421
+ ...props
3422
+ }
3423
+ );
3424
+ });
3425
+ ToastViewport.displayName = "ToastViewport";
3426
+ var Toast = forwardRef42(
3427
+ ({ className, variant, open = true, onOpenChange, ...props }, ref) => {
3428
+ if (!open) return null;
3429
+ return /* @__PURE__ */ jsx44(
3430
+ "li",
3431
+ {
3432
+ ref,
3433
+ className: cn(toastVariants({ variant }), className),
3434
+ "data-state": open ? "open" : "closed",
3435
+ ...props
3436
+ }
3437
+ );
3438
+ }
3439
+ );
3440
+ Toast.displayName = "Toast";
3441
+ var ToastAction = forwardRef42(({ className, altText, ...props }, ref) => /* @__PURE__ */ jsx44(
3442
+ "button",
3443
+ {
3444
+ ref,
3445
+ className: cn(
3446
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",
3447
+ className
3448
+ ),
3449
+ ...props
3450
+ }
3451
+ ));
3452
+ ToastAction.displayName = "ToastAction";
3453
+ var ToastClose = forwardRef42(({ className, ...props }, ref) => /* @__PURE__ */ jsx44(
3454
+ "button",
3455
+ {
3456
+ ref,
3457
+ className: cn(
3458
+ "absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",
3459
+ className
3460
+ ),
3461
+ "toast-close": "",
3462
+ ...props,
3463
+ children: /* @__PURE__ */ jsx44(XIcon3, { className: "h-4 w-4" })
3464
+ }
3465
+ ));
3466
+ ToastClose.displayName = "ToastClose";
3467
+ var ToastTitle = forwardRef42(({ className, ...props }, ref) => /* @__PURE__ */ jsx44(
3468
+ "div",
3469
+ {
3470
+ ref,
3471
+ className: cn("text-sm font-semibold [&+div]:text-xs", className),
3472
+ ...props
3473
+ }
3474
+ ));
3475
+ ToastTitle.displayName = "ToastTitle";
3476
+ var ToastDescription = forwardRef42(({ className, ...props }, ref) => /* @__PURE__ */ jsx44(
3477
+ "div",
3478
+ {
3479
+ ref,
3480
+ className: cn("text-sm opacity-90", className),
3481
+ ...props
3482
+ }
3483
+ ));
3484
+ ToastDescription.displayName = "ToastDescription";
3485
+ var TOAST_LIMIT = 1;
3486
+ var TOAST_REMOVE_DELAY = 5e3;
3487
+ var count = 0;
3488
+ function genId() {
3489
+ count = (count + 1) % Number.MAX_SAFE_INTEGER;
3490
+ return count.toString();
3491
+ }
3492
+ var toastTimeouts = /* @__PURE__ */ new Map();
3493
+ var addToRemoveQueue = (toastId) => {
3494
+ if (toastTimeouts.has(toastId)) return;
3495
+ const timeout = setTimeout(() => {
3496
+ toastTimeouts.delete(toastId);
3497
+ dispatch({ type: "REMOVE_TOAST", toastId });
3498
+ }, TOAST_REMOVE_DELAY);
3499
+ toastTimeouts.set(toastId, timeout);
3500
+ };
3501
+ var reducer = (state, action) => {
3502
+ switch (action.type) {
3503
+ case "ADD_TOAST":
3504
+ return [action.toast, ...state].slice(0, TOAST_LIMIT);
3505
+ case "UPDATE_TOAST":
3506
+ return state.map(
3507
+ (t) => t.id === action.toast.id ? { ...t, ...action.toast } : t
3508
+ );
3509
+ case "DISMISS_TOAST": {
3510
+ const { toastId } = action;
3511
+ if (toastId) {
3512
+ addToRemoveQueue(toastId);
3513
+ } else {
3514
+ state.forEach((t) => addToRemoveQueue(t.id));
3515
+ }
3516
+ return state.map(
3517
+ (t) => t.id === toastId || toastId === void 0 ? { ...t, open: false } : t
3518
+ );
3519
+ }
3520
+ case "REMOVE_TOAST":
3521
+ if (action.toastId === void 0) return [];
3522
+ return state.filter((t) => t.id !== action.toastId);
3523
+ default:
3524
+ return state;
3525
+ }
3526
+ };
3527
+ var listeners = [];
3528
+ var memoryState = [];
3529
+ function dispatch(action) {
3530
+ memoryState = reducer(memoryState, action);
3531
+ listeners.forEach((listener) => listener(memoryState));
3532
+ }
3533
+ function toast({
3534
+ ...props
3535
+ }) {
3536
+ const id = genId();
3537
+ const update = (updateProps) => dispatch({ type: "UPDATE_TOAST", toast: { ...updateProps, id } });
3538
+ const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
3539
+ dispatch({
3540
+ type: "ADD_TOAST",
3541
+ toast: {
3542
+ ...props,
3543
+ id,
3544
+ open: true,
3545
+ onOpenChange: (open) => {
3546
+ if (!open) dismiss();
3547
+ }
3548
+ }
3549
+ });
3550
+ setTimeout(() => {
3551
+ dismiss();
3552
+ }, TOAST_REMOVE_DELAY);
3553
+ return { id, dismiss, update };
3554
+ }
3555
+ function useToast() {
3556
+ const [state, setState] = useState8(memoryState);
3557
+ useEffect(() => {
3558
+ listeners.push(setState);
3559
+ return () => {
3560
+ const index = listeners.indexOf(setState);
3561
+ if (index > -1) listeners.splice(index, 1);
3562
+ };
3563
+ }, []);
3564
+ return {
3565
+ toasts: state,
3566
+ toast,
3567
+ dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", toastId })
3568
+ };
3569
+ }
3570
+
3571
+ // src/components/Toggle/Toggle.web.tsx
3572
+ import { forwardRef as forwardRef43 } from "react";
3573
+ import * as TogglePrimitive from "@radix-ui/react-toggle";
3574
+ import { cva as cva11 } from "class-variance-authority";
3575
+ import { jsx as jsx45 } from "react/jsx-runtime";
3576
+ var toggleVariants = cva11(
3577
+ "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3578
+ {
3579
+ variants: {
3580
+ variant: {
3581
+ default: "bg-transparent",
3582
+ outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
3583
+ },
3584
+ size: {
3585
+ default: "h-9 px-2 min-w-9",
3586
+ sm: "h-8 px-1.5 min-w-8",
3587
+ lg: "h-10 px-2.5 min-w-10"
3588
+ }
3589
+ },
3590
+ defaultVariants: {
3591
+ variant: "default",
3592
+ size: "default"
3593
+ }
3594
+ }
3595
+ );
3596
+ var Toggle = forwardRef43(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx45(
3597
+ TogglePrimitive.Root,
3598
+ {
3599
+ ref,
3600
+ className: cn(toggleVariants({ variant, size, className })),
3601
+ ...props
3602
+ }
3603
+ ));
3604
+ Toggle.displayName = TogglePrimitive.Root.displayName;
3605
+
3606
+ // src/components/ToggleGroup/ToggleGroup.web.tsx
3607
+ import { forwardRef as forwardRef44, createContext as createContext5, useContext as useContext5 } from "react";
3608
+ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
3609
+ import { jsx as jsx46 } from "react/jsx-runtime";
3610
+ var ToggleGroupContext = createContext5({
3611
+ size: "default",
3612
+ variant: "default"
3613
+ });
3614
+ var ToggleGroup = forwardRef44(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx46(
3615
+ ToggleGroupPrimitive.Root,
3616
+ {
3617
+ ref,
3618
+ className: cn("flex items-center justify-center gap-1", className),
3619
+ ...props,
3620
+ children: /* @__PURE__ */ jsx46(ToggleGroupContext.Provider, { value: { variant, size }, children })
3621
+ }
3622
+ ));
3623
+ ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
3624
+ var ToggleGroupItem = forwardRef44(({ className, children, variant, size, ...props }, ref) => {
3625
+ const context = useContext5(ToggleGroupContext);
3626
+ return /* @__PURE__ */ jsx46(
3627
+ ToggleGroupPrimitive.Item,
3628
+ {
3629
+ ref,
3630
+ className: cn(
3631
+ toggleVariants({
3632
+ variant: variant || context.variant,
3633
+ size: size || context.size
3634
+ }),
3635
+ className
3636
+ ),
3637
+ ...props,
3638
+ children
3639
+ }
3640
+ );
3641
+ });
3642
+ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
3643
+
3644
+ // src/components/Tooltip/Tooltip.web.tsx
3645
+ import { forwardRef as forwardRef45 } from "react";
3646
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3647
+ import { jsx as jsx47 } from "react/jsx-runtime";
3648
+ var TooltipProvider = TooltipPrimitive.Provider;
3649
+ var Tooltip = TooltipPrimitive.Root;
3650
+ var TooltipTrigger = TooltipPrimitive.Trigger;
3651
+ var TooltipContent = forwardRef45(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx47(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx47(
3652
+ TooltipPrimitive.Content,
3653
+ {
3654
+ ref,
3655
+ sideOffset,
3656
+ className: cn(
3657
+ "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 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",
3658
+ className
3659
+ ),
3660
+ ...props
3661
+ }
3662
+ ) }));
3663
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
3664
+ export {
3665
+ Accordion,
3666
+ AccordionContent,
3667
+ AccordionItem,
3668
+ AccordionTrigger,
3669
+ Alert,
3670
+ AlertDescription,
3671
+ AlertDialog,
3672
+ AlertDialogAction,
3673
+ AlertDialogCancel,
3674
+ AlertDialogContent,
3675
+ AlertDialogDescription,
3676
+ AlertDialogFooter,
3677
+ AlertDialogHeader,
3678
+ AlertDialogOverlay,
3679
+ AlertDialogPortal,
3680
+ AlertDialogTitle,
3681
+ AlertDialogTrigger,
3682
+ AlertTitle,
3683
+ AspectRatio,
3684
+ Avatar,
3685
+ AvatarFallback,
3686
+ AvatarImage,
3687
+ Badge,
3688
+ Breadcrumb,
3689
+ BreadcrumbEllipsis,
3690
+ BreadcrumbItem,
3691
+ BreadcrumbLink,
3692
+ BreadcrumbList,
3693
+ BreadcrumbPage,
3694
+ BreadcrumbSeparator,
3695
+ Button,
3696
+ Calendar,
3697
+ Card,
3698
+ Carousel,
3699
+ CarouselContent,
3700
+ CarouselItem,
3701
+ CarouselNext,
3702
+ CarouselPrevious,
3703
+ Chart,
3704
+ Checkbox,
3705
+ Collapsible,
3706
+ CollapsibleContent2 as CollapsibleContent,
3707
+ CollapsibleTrigger2 as CollapsibleTrigger,
3708
+ Combobox,
3709
+ Command,
3710
+ CommandEmpty,
3711
+ CommandGroup,
3712
+ CommandInput,
3713
+ CommandItem,
3714
+ CommandList,
3715
+ CommandSeparator,
3716
+ ContextMenu,
3717
+ ContextMenuCheckboxItem,
3718
+ ContextMenuContent,
3719
+ ContextMenuGroup,
3720
+ ContextMenuItem,
3721
+ ContextMenuLabel,
3722
+ ContextMenuPortal,
3723
+ ContextMenuRadioGroup,
3724
+ ContextMenuRadioItem,
3725
+ ContextMenuSeparator,
3726
+ ContextMenuShortcut,
3727
+ ContextMenuSub,
3728
+ ContextMenuSubContent,
3729
+ ContextMenuSubTrigger,
3730
+ ContextMenuTrigger,
3731
+ DataTable,
3732
+ DatePicker,
3733
+ Dialog,
3734
+ DialogClose,
3735
+ DialogContent,
3736
+ DialogDescription,
3737
+ DialogFooter,
3738
+ DialogHeader,
3739
+ DialogOverlay,
3740
+ DialogPortal,
3741
+ DialogTitle,
3742
+ DialogTrigger,
3743
+ Drawer,
3744
+ DrawerClose,
3745
+ DrawerContent,
3746
+ DrawerDescription,
3747
+ DrawerFooter,
3748
+ DrawerHeader,
3749
+ DrawerOverlay,
3750
+ DrawerPortal,
3751
+ DrawerTitle,
3752
+ DrawerTrigger,
3753
+ DropdownMenu,
3754
+ DropdownMenuCheckboxItem,
3755
+ DropdownMenuContent,
3756
+ DropdownMenuGroup,
3757
+ DropdownMenuItem,
3758
+ DropdownMenuLabel,
3759
+ DropdownMenuPortal,
3760
+ DropdownMenuRadioGroup,
3761
+ DropdownMenuRadioItem,
3762
+ DropdownMenuSeparator,
3763
+ DropdownMenuShortcut,
3764
+ DropdownMenuSub,
3765
+ DropdownMenuSubContent,
3766
+ DropdownMenuSubTrigger,
3767
+ DropdownMenuTrigger,
3768
+ Form,
3769
+ FormControl,
3770
+ FormDescription,
3771
+ FormField,
3772
+ FormItem,
3773
+ FormLabel,
3774
+ FormMessage,
3775
+ HoverCard,
3776
+ HoverCardContent,
3777
+ HoverCardTrigger,
3778
+ Input,
3779
+ InputOTP,
3780
+ Label3 as Label,
3781
+ Menubar,
3782
+ MenubarCheckboxItem,
3783
+ MenubarContent,
3784
+ MenubarGroup,
3785
+ MenubarItem,
3786
+ MenubarLabel,
3787
+ MenubarMenu,
3788
+ MenubarPortal,
3789
+ MenubarRadioGroup,
3790
+ MenubarRadioItem,
3791
+ MenubarSeparator,
3792
+ MenubarShortcut,
3793
+ MenubarSub,
3794
+ MenubarSubContent,
3795
+ MenubarSubTrigger,
3796
+ MenubarTrigger,
3797
+ NavigationMenu,
3798
+ NavigationMenuContent,
3799
+ NavigationMenuIndicator,
3800
+ NavigationMenuItem,
3801
+ NavigationMenuLink,
3802
+ NavigationMenuList,
3803
+ NavigationMenuTrigger,
3804
+ NavigationMenuViewport,
3805
+ Pagination,
3806
+ PaginationContent,
3807
+ PaginationEllipsis,
3808
+ PaginationItem,
3809
+ PaginationLink,
3810
+ PaginationNext,
3811
+ PaginationPrevious,
3812
+ Popover3 as Popover,
3813
+ PopoverAnchor,
3814
+ PopoverContent,
3815
+ PopoverTrigger,
3816
+ Progress,
3817
+ RadioGroup4 as RadioGroup,
3818
+ RadioGroupItem,
3819
+ ResizableHandle,
3820
+ ResizablePanel,
3821
+ ResizablePanelGroup,
3822
+ ScrollArea,
3823
+ ScrollBar,
3824
+ Select,
3825
+ SelectContent,
3826
+ SelectGroup,
3827
+ SelectItem,
3828
+ SelectLabel,
3829
+ SelectSeparator,
3830
+ SelectTrigger,
3831
+ SelectValue,
3832
+ Separator6 as Separator,
3833
+ Sheet,
3834
+ SheetClose,
3835
+ SheetContent,
3836
+ SheetDescription,
3837
+ SheetFooter,
3838
+ SheetHeader,
3839
+ SheetOverlay,
3840
+ SheetPortal,
3841
+ SheetTitle,
3842
+ SheetTrigger,
3843
+ Sidebar,
3844
+ SidebarContent,
3845
+ SidebarFooter,
3846
+ SidebarHeader,
3847
+ SidebarProvider,
3848
+ SidebarTrigger,
3849
+ Skeleton,
3850
+ Slider,
3851
+ Switch,
3852
+ Table,
3853
+ TableBody,
3854
+ TableCaption,
3855
+ TableCell,
3856
+ TableFooter,
3857
+ TableHead,
3858
+ TableHeader,
3859
+ TableRow,
3860
+ Tabs,
3861
+ TabsContent,
3862
+ TabsList,
3863
+ TabsTrigger,
3864
+ Textarea,
3865
+ ThemeProvider,
3866
+ Toast,
3867
+ ToastAction,
3868
+ ToastClose,
3869
+ ToastDescription,
3870
+ ToastProvider,
3871
+ ToastTitle,
3872
+ ToastViewport,
3873
+ Toggle,
3874
+ ToggleGroup,
3875
+ ToggleGroupItem,
3876
+ Tooltip,
3877
+ TooltipContent,
3878
+ TooltipProvider,
3879
+ TooltipTrigger,
3880
+ auroraPreset,
3881
+ badgeVariants,
3882
+ darkPreset,
3883
+ defaultPreset,
3884
+ navigationMenuTriggerStyle,
3885
+ paginationLinkVariants,
3886
+ separatorVariants,
3887
+ toast,
3888
+ toastVariants,
3889
+ toggleVariants,
3890
+ useSidebarContext,
3891
+ useTheme,
3892
+ useToast
3893
+ };
3894
+ //# sourceMappingURL=index.js.map