@pihanga2/shadcn 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/README.md +114 -0
  2. package/cards/badge/badge.component.d.ts +14 -0
  3. package/cards/badge/badge.component.js +18 -0
  4. package/cards/badge/badge.component.js.map +1 -0
  5. package/cards/badge/badge.types.d.ts +37 -0
  6. package/cards/badge/badge.types.js +7 -0
  7. package/cards/badge/badge.types.js.map +1 -0
  8. package/cards/badge/index.d.ts +1 -0
  9. package/cards/badge/index.js +12 -0
  10. package/cards/badge/index.js.map +1 -0
  11. package/cards/box/box.component.d.ts +4 -0
  12. package/cards/box/box.component.js +24 -0
  13. package/cards/box/box.component.js.map +1 -0
  14. package/cards/box/box.types.d.ts +71 -0
  15. package/cards/box/box.types.js +7 -0
  16. package/cards/box/box.types.js.map +1 -0
  17. package/cards/box/index.d.ts +1 -0
  18. package/cards/box/index.js +12 -0
  19. package/cards/box/index.js.map +1 -0
  20. package/cards/button/button.component.d.ts +4 -0
  21. package/cards/button/button.component.js +71 -0
  22. package/cards/button/button.component.js.map +1 -0
  23. package/cards/button/button.types.d.ts +106 -0
  24. package/cards/button/button.types.js +7 -0
  25. package/cards/button/button.types.js.map +1 -0
  26. package/cards/button/index.d.ts +1 -0
  27. package/cards/button/index.js +13 -0
  28. package/cards/button/index.js.map +1 -0
  29. package/cards/checkbox/checkbox.component.d.ts +4 -0
  30. package/cards/checkbox/checkbox.component.js +36 -0
  31. package/cards/checkbox/checkbox.component.js.map +1 -0
  32. package/cards/checkbox/checkbox.types.d.ts +37 -0
  33. package/cards/checkbox/checkbox.types.js +7 -0
  34. package/cards/checkbox/checkbox.types.js.map +1 -0
  35. package/cards/checkbox/index.d.ts +1 -0
  36. package/cards/checkbox/index.js +13 -0
  37. package/cards/checkbox/index.js.map +1 -0
  38. package/cards/conditional/conditional.component.d.ts +11 -0
  39. package/cards/conditional/conditional.component.js +15 -0
  40. package/cards/conditional/conditional.component.js.map +1 -0
  41. package/cards/conditional/conditional.types.d.ts +29 -0
  42. package/cards/conditional/conditional.types.js +7 -0
  43. package/cards/conditional/conditional.types.js.map +1 -0
  44. package/cards/conditional/index.d.ts +1 -0
  45. package/cards/conditional/index.js +12 -0
  46. package/cards/conditional/index.js.map +1 -0
  47. package/cards/core-index.d.ts +30 -0
  48. package/cards/core-index.js +61 -0
  49. package/cards/dataTable/dataTable.component.d.ts +4 -0
  50. package/cards/dataTable/dataTable.component.js +209 -0
  51. package/cards/dataTable/dataTable.component.js.map +1 -0
  52. package/cards/dataTable/dataTable.types.d.ts +196 -0
  53. package/cards/dataTable/dataTable.types.js +13 -0
  54. package/cards/dataTable/dataTable.types.js.map +1 -0
  55. package/cards/dataTable/dataTableRowDetail.component.d.ts +26 -0
  56. package/cards/dataTable/dataTableRowDetail.component.js +47 -0
  57. package/cards/dataTable/dataTableRowDetail.component.js.map +1 -0
  58. package/cards/dataTable/index.d.ts +1 -0
  59. package/cards/dataTable/index.js +16 -0
  60. package/cards/dataTable/index.js.map +1 -0
  61. package/cards/dialog/dialog.component.d.ts +4 -0
  62. package/cards/dialog/dialog.component.js +89 -0
  63. package/cards/dialog/dialog.component.js.map +1 -0
  64. package/cards/dialog/dialog.types.d.ts +115 -0
  65. package/cards/dialog/dialog.types.js +11 -0
  66. package/cards/dialog/dialog.types.js.map +1 -0
  67. package/cards/dialog/index.d.ts +1 -0
  68. package/cards/dialog/index.js +13 -0
  69. package/cards/dialog/index.js.map +1 -0
  70. package/cards/dropDownMenu/drop-down.component.d.ts +4 -0
  71. package/cards/dropDownMenu/drop-down.component.js +205 -0
  72. package/cards/dropDownMenu/drop-down.component.js.map +1 -0
  73. package/cards/dropDownMenu/drop-down.types.d.ts +131 -0
  74. package/cards/dropDownMenu/drop-down.types.js +7 -0
  75. package/cards/dropDownMenu/drop-down.types.js.map +1 -0
  76. package/cards/dropDownMenu/dropdown-context.d.ts +7 -0
  77. package/cards/dropDownMenu/dropdown-context.js +7 -0
  78. package/cards/dropDownMenu/dropdown-context.js.map +1 -0
  79. package/cards/dropDownMenu/dropdown-menu.ui.d.ts +42 -0
  80. package/cards/dropDownMenu/dropdown-menu.ui.js +111 -0
  81. package/cards/dropDownMenu/dropdown-menu.ui.js.map +1 -0
  82. package/cards/dropDownMenu/index.d.ts +1 -0
  83. package/cards/dropDownMenu/index.js +13 -0
  84. package/cards/dropDownMenu/index.js.map +1 -0
  85. package/cards/emptyCard.d.ts +7 -0
  86. package/cards/field/field.component.d.ts +4 -0
  87. package/cards/field/field.component.js +38 -0
  88. package/cards/field/field.component.js.map +1 -0
  89. package/cards/field/field.types.d.ts +30 -0
  90. package/cards/field/field.types.js +7 -0
  91. package/cards/field/field.types.js.map +1 -0
  92. package/cards/field/index.d.ts +1 -0
  93. package/cards/field/index.js +12 -0
  94. package/cards/field/index.js.map +1 -0
  95. package/cards/flexGrid/flexGrid.component.d.ts +4 -0
  96. package/cards/flexGrid/flexGrid.component.js +40 -0
  97. package/cards/flexGrid/flexGrid.component.js.map +1 -0
  98. package/cards/flexGrid/flexGrid.types.d.ts +23 -0
  99. package/cards/flexGrid/flexGrid.types.js +7 -0
  100. package/cards/flexGrid/flexGrid.types.js.map +1 -0
  101. package/cards/flexGrid/index.d.ts +1 -0
  102. package/cards/flexGrid/index.js +12 -0
  103. package/cards/flexGrid/index.js.map +1 -0
  104. package/cards/form/form.component.d.ts +4 -0
  105. package/cards/form/form.component.js +64 -0
  106. package/cards/form/form.component.js.map +1 -0
  107. package/cards/form/form.context.d.ts +23 -0
  108. package/cards/form/form.context.js +13 -0
  109. package/cards/form/form.context.js.map +1 -0
  110. package/cards/form/form.types.d.ts +43 -0
  111. package/cards/form/form.types.js +7 -0
  112. package/cards/form/form.types.js.map +1 -0
  113. package/cards/form/index.d.ts +2 -0
  114. package/cards/form/index.js +14 -0
  115. package/cards/form/index.js.map +1 -0
  116. package/cards/framework/framework.component.d.ts +3 -0
  117. package/cards/framework/framework.component.js +21 -0
  118. package/cards/framework/framework.component.js.map +1 -0
  119. package/cards/framework/index.d.ts +2 -0
  120. package/cards/framework/index.js +12 -0
  121. package/cards/framework/index.js.map +1 -0
  122. package/cards/graphin/graphin.component.d.ts +4 -0
  123. package/cards/graphin/graphin.types.d.ts +18 -0
  124. package/cards/graphin/index.d.ts +2 -0
  125. package/cards/graphin/tooltip.component.d.ts +10 -0
  126. package/cards/icons.d.ts +15 -0
  127. package/cards/icons.js +15 -0
  128. package/cards/icons.js.map +1 -0
  129. package/cards/input/index.d.ts +1 -0
  130. package/cards/input/index.js +13 -0
  131. package/cards/input/index.js.map +1 -0
  132. package/cards/input/input.component.d.ts +4 -0
  133. package/cards/input/input.component.js +69 -0
  134. package/cards/input/input.component.js.map +1 -0
  135. package/cards/input/input.types.d.ts +80 -0
  136. package/cards/input/input.types.js +7 -0
  137. package/cards/input/input.types.js.map +1 -0
  138. package/cards/jsonViewer/index.d.ts +1 -0
  139. package/cards/jsonViewer/jsonViewer.component.d.ts +4 -0
  140. package/cards/jsonViewer/jsonViewer.types.d.ts +76 -0
  141. package/cards/list/index.d.ts +1 -0
  142. package/cards/list/index.js +13 -0
  143. package/cards/list/index.js.map +1 -0
  144. package/cards/list/list.component.d.ts +4 -0
  145. package/cards/list/list.component.js +102 -0
  146. package/cards/list/list.component.js.map +1 -0
  147. package/cards/list/list.types.d.ts +65 -0
  148. package/cards/list/list.types.js +7 -0
  149. package/cards/list/list.types.js.map +1 -0
  150. package/cards/loadingOverlay/index.d.ts +1 -0
  151. package/cards/loadingOverlay/index.js +12 -0
  152. package/cards/loadingOverlay/index.js.map +1 -0
  153. package/cards/loadingOverlay/loadingOverlay.component.d.ts +4 -0
  154. package/cards/loadingOverlay/loadingOverlay.component.js +31 -0
  155. package/cards/loadingOverlay/loadingOverlay.component.js.map +1 -0
  156. package/cards/loadingOverlay/loadingOverlay.types.d.ts +13 -0
  157. package/cards/loadingOverlay/loadingOverlay.types.js +7 -0
  158. package/cards/loadingOverlay/loadingOverlay.types.js.map +1 -0
  159. package/cards/loadingSkeleton/index.d.ts +1 -0
  160. package/cards/loadingSkeleton/index.js +12 -0
  161. package/cards/loadingSkeleton/index.js.map +1 -0
  162. package/cards/loadingSkeleton/loading-skeleton.component.d.ts +19 -0
  163. package/cards/loadingSkeleton/loading-skeleton.component.js +33 -0
  164. package/cards/loadingSkeleton/loading-skeleton.component.js.map +1 -0
  165. package/cards/loadingSkeleton/loading-skeleton.types.d.ts +94 -0
  166. package/cards/loadingSkeleton/loading-skeleton.types.js +7 -0
  167. package/cards/loadingSkeleton/loading-skeleton.types.js.map +1 -0
  168. package/cards/markdownViewer/index.d.ts +1 -0
  169. package/cards/markdownViewer/markdownViewer.component.d.ts +4 -0
  170. package/cards/markdownViewer/markdownViewer.types.d.ts +28 -0
  171. package/cards/menu/index.d.ts +1 -0
  172. package/cards/menu/index.js +13 -0
  173. package/cards/menu/index.js.map +1 -0
  174. package/cards/menu/menu.component.d.ts +4 -0
  175. package/cards/menu/menu.component.js +23 -0
  176. package/cards/menu/menu.component.js.map +1 -0
  177. package/cards/menu/menu.types.d.ts +53 -0
  178. package/cards/menu/menu.types.js +7 -0
  179. package/cards/menu/menu.types.js.map +1 -0
  180. package/cards/modeToggle/index.d.ts +1 -0
  181. package/cards/modeToggle/index.js +13 -0
  182. package/cards/modeToggle/index.js.map +1 -0
  183. package/cards/modeToggle/mode-toggle.component.d.ts +4 -0
  184. package/cards/modeToggle/mode-toggle.component.js +32 -0
  185. package/cards/modeToggle/mode-toggle.component.js.map +1 -0
  186. package/cards/modeToggle/mode-toggle.types.d.ts +20 -0
  187. package/cards/modeToggle/mode-toggle.types.js +7 -0
  188. package/cards/modeToggle/mode-toggle.types.js.map +1 -0
  189. package/cards/navbarSearch/index.d.ts +1 -0
  190. package/cards/navbarSearch/index.js +13 -0
  191. package/cards/navbarSearch/index.js.map +1 -0
  192. package/cards/navbarSearch/navbarSearch.component.d.ts +3 -0
  193. package/cards/navbarSearch/navbarSearch.component.js +88 -0
  194. package/cards/navbarSearch/navbarSearch.component.js.map +1 -0
  195. package/cards/navbarSearch/navbarSearch.type.d.ts +32 -0
  196. package/cards/navbarSearch/navbarSearch.type.js +11 -0
  197. package/cards/navbarSearch/navbarSearch.type.js.map +1 -0
  198. package/cards/pageWithNavbar/index.d.ts +2 -0
  199. package/cards/pageWithNavbar/index.js +14 -0
  200. package/cards/pageWithNavbar/index.js.map +1 -0
  201. package/cards/pageWithNavbar/pageWithNavbar.component.d.ts +12 -0
  202. package/cards/pageWithNavbar/pageWithNavbar.component.js +153 -0
  203. package/cards/pageWithNavbar/pageWithNavbar.component.js.map +1 -0
  204. package/cards/pageWithNavbar/pageWithNavbar.type.d.ts +81 -0
  205. package/cards/pageWithNavbar/pageWithNavbar.type.js +7 -0
  206. package/cards/pageWithNavbar/pageWithNavbar.type.js.map +1 -0
  207. package/cards/pasteTarget/index.d.ts +1 -0
  208. package/cards/pasteTarget/index.js +13 -0
  209. package/cards/pasteTarget/index.js.map +1 -0
  210. package/cards/pasteTarget/pasteTarget.component.d.ts +4 -0
  211. package/cards/pasteTarget/pasteTarget.component.js +158 -0
  212. package/cards/pasteTarget/pasteTarget.component.js.map +1 -0
  213. package/cards/pasteTarget/pasteTarget.types.d.ts +46 -0
  214. package/cards/pasteTarget/pasteTarget.types.js +11 -0
  215. package/cards/pasteTarget/pasteTarget.types.js.map +1 -0
  216. package/cards/resizable/index.d.ts +1 -0
  217. package/cards/resizable/resizable.component.d.ts +4 -0
  218. package/cards/resizable/resizable.types.d.ts +49 -0
  219. package/cards/select/index.d.ts +1 -0
  220. package/cards/select/index.js +13 -0
  221. package/cards/select/index.js.map +1 -0
  222. package/cards/select/select.component.d.ts +4 -0
  223. package/cards/select/select.component.js +41 -0
  224. package/cards/select/select.component.js.map +1 -0
  225. package/cards/select/select.types.d.ts +73 -0
  226. package/cards/select/select.types.js +11 -0
  227. package/cards/select/select.types.js.map +1 -0
  228. package/cards/stack/index.d.ts +1 -0
  229. package/cards/stack/index.js +12 -0
  230. package/cards/stack/index.js.map +1 -0
  231. package/cards/stack/stack.component.d.ts +7 -0
  232. package/cards/stack/stack.component.js +83 -0
  233. package/cards/stack/stack.component.js.map +1 -0
  234. package/cards/stack/stack.types.d.ts +47 -0
  235. package/cards/stack/stack.types.js +7 -0
  236. package/cards/stack/stack.types.js.map +1 -0
  237. package/cards/stepper/index.d.ts +1 -0
  238. package/cards/stepper/index.js +13 -0
  239. package/cards/stepper/index.js.map +1 -0
  240. package/cards/stepper/stepper.component.d.ts +4 -0
  241. package/cards/stepper/stepper.component.js +48 -0
  242. package/cards/stepper/stepper.component.js.map +1 -0
  243. package/cards/stepper/stepper.types.d.ts +96 -0
  244. package/cards/stepper/stepper.types.js +7 -0
  245. package/cards/stepper/stepper.types.js.map +1 -0
  246. package/cards/switch/index.d.ts +1 -0
  247. package/cards/switch/index.js +13 -0
  248. package/cards/switch/index.js.map +1 -0
  249. package/cards/switch/switch.component.d.ts +4 -0
  250. package/cards/switch/switch.component.js +34 -0
  251. package/cards/switch/switch.component.js.map +1 -0
  252. package/cards/switch/switch.types.d.ts +39 -0
  253. package/cards/switch/switch.types.js +7 -0
  254. package/cards/switch/switch.types.js.map +1 -0
  255. package/cards/tabs/index.d.ts +1 -0
  256. package/cards/tabs/index.js +13 -0
  257. package/cards/tabs/index.js.map +1 -0
  258. package/cards/tabs/tabs.component.d.ts +4 -0
  259. package/cards/tabs/tabs.component.js +42 -0
  260. package/cards/tabs/tabs.component.js.map +1 -0
  261. package/cards/tabs/tabs.types.d.ts +72 -0
  262. package/cards/tabs/tabs.types.js +7 -0
  263. package/cards/tabs/tabs.types.js.map +1 -0
  264. package/cards/textField/index.d.ts +1 -0
  265. package/cards/textField/index.js +13 -0
  266. package/cards/textField/index.js.map +1 -0
  267. package/cards/textField/textField.component.d.ts +4 -0
  268. package/cards/textField/textField.component.js +29 -0
  269. package/cards/textField/textField.component.js.map +1 -0
  270. package/cards/textField/textField.types.d.ts +36 -0
  271. package/cards/textField/textField.types.js +7 -0
  272. package/cards/textField/textField.types.js.map +1 -0
  273. package/cards/toast/index.d.ts +1 -0
  274. package/cards/toast/index.js +13 -0
  275. package/cards/toast/index.js.map +1 -0
  276. package/cards/toast/toast.component.d.ts +4 -0
  277. package/cards/toast/toast.component.js +76 -0
  278. package/cards/toast/toast.component.js.map +1 -0
  279. package/cards/toast/toast.types.d.ts +100 -0
  280. package/cards/toast/toast.types.js +12 -0
  281. package/cards/toast/toast.types.js.map +1 -0
  282. package/cards/toggleGroup/index.d.ts +1 -0
  283. package/cards/toggleGroup/index.js +13 -0
  284. package/cards/toggleGroup/index.js.map +1 -0
  285. package/cards/toggleGroup/toggleGroup.component.d.ts +4 -0
  286. package/cards/toggleGroup/toggleGroup.component.js +55 -0
  287. package/cards/toggleGroup/toggleGroup.component.js.map +1 -0
  288. package/cards/toggleGroup/toggleGroup.types.d.ts +96 -0
  289. package/cards/toggleGroup/toggleGroup.types.js +7 -0
  290. package/cards/toggleGroup/toggleGroup.types.js.map +1 -0
  291. package/cards/types.d.ts +72 -0
  292. package/cards/types.js +22 -0
  293. package/cards/types.js.map +1 -0
  294. package/cards/typography/index.d.ts +1 -0
  295. package/cards/typography/index.js +12 -0
  296. package/cards/typography/index.js.map +1 -0
  297. package/cards/typography/typography.component.d.ts +4 -0
  298. package/cards/typography/typography.component.js +44 -0
  299. package/cards/typography/typography.component.js.map +1 -0
  300. package/cards/typography/typography.types.d.ts +23 -0
  301. package/cards/typography/typography.types.js +7 -0
  302. package/cards/typography/typography.types.js.map +1 -0
  303. package/components/hooks/use-is-touch-device.d.ts +1 -0
  304. package/components/lib/utils.js +10 -0
  305. package/components/lib/utils.js.map +1 -0
  306. package/components/theme-provider/index.d.ts +4 -0
  307. package/components/theme-provider/index.js +12 -0
  308. package/components/theme-provider/index.js.map +1 -0
  309. package/components/theme-provider/theme-provider.component.d.ts +2 -0
  310. package/components/theme-provider/theme-provider.component.js +31 -0
  311. package/components/theme-provider/theme-provider.component.js.map +1 -0
  312. package/components/theme-provider/theme-provider.types.d.ts +12 -0
  313. package/components/theme-provider/theme-provider.types.js +9 -0
  314. package/components/theme-provider/theme-provider.types.js.map +1 -0
  315. package/components/ui/avatar.js +30 -0
  316. package/components/ui/avatar.js.map +1 -0
  317. package/components/ui/badge.js +26 -0
  318. package/components/ui/badge.js.map +1 -0
  319. package/components/ui/button.js +98 -0
  320. package/components/ui/button.js.map +1 -0
  321. package/components/ui/dialog.js +109 -0
  322. package/components/ui/dialog.js.map +1 -0
  323. package/components/ui/field.js +68 -0
  324. package/components/ui/field.js.map +1 -0
  325. package/components/ui/input.js +16 -0
  326. package/components/ui/input.js.map +1 -0
  327. package/components/ui/label.js +16 -0
  328. package/components/ui/label.js.map +1 -0
  329. package/components/ui/menubar.js +62 -0
  330. package/components/ui/menubar.js.map +1 -0
  331. package/components/ui/select.js +84 -0
  332. package/components/ui/select.js.map +1 -0
  333. package/components/ui/separator.js +5 -0
  334. package/components/ui/sheet.js +49 -0
  335. package/components/ui/sheet.js.map +1 -0
  336. package/components/ui/spinner.js +35 -0
  337. package/components/ui/spinner.js.map +1 -0
  338. package/components/ui/stepper.js +145 -0
  339. package/components/ui/stepper.js.map +1 -0
  340. package/components/ui/switch.js +20 -0
  341. package/components/ui/switch.js.map +1 -0
  342. package/components/ui/table.js +61 -0
  343. package/components/ui/table.js.map +1 -0
  344. package/components/ui/tabs.js +38 -0
  345. package/components/ui/tabs.js.map +1 -0
  346. package/components/ui/toggle-group.js +50 -0
  347. package/components/ui/toggle-group.js.map +1 -0
  348. package/components/ui/toggle.js +27 -0
  349. package/components/ui/toggle.js.map +1 -0
  350. package/components/ui/tooltip.js +38 -0
  351. package/components/ui/tooltip.js.map +1 -0
  352. package/lib/utils.d.ts +2 -0
  353. package/lib/utils.js +10 -0
  354. package/lib/utils.js.map +1 -0
  355. package/mountain-snow.svg +4 -0
  356. package/package.json +203 -0
  357. package/pihanga-shadcn.css +2 -0
  358. package/r/badge.json +35 -0
  359. package/r/box.json +26 -0
  360. package/r/button.json +39 -0
  361. package/r/checkbox.json +31 -0
  362. package/r/conditional.json +30 -0
  363. package/r/dataTable.json +43 -0
  364. package/r/dialog.json +36 -0
  365. package/r/dropDownMenu.json +47 -0
  366. package/r/field.json +35 -0
  367. package/r/flexGrid.json +32 -0
  368. package/r/form.json +37 -0
  369. package/r/framework.json +28 -0
  370. package/r/graphin.json +42 -0
  371. package/r/input.json +35 -0
  372. package/r/jsonViewer.json +40 -0
  373. package/r/list.json +39 -0
  374. package/r/loadingOverlay.json +39 -0
  375. package/r/loadingSkeleton.json +30 -0
  376. package/r/markdownViewer.json +51 -0
  377. package/r/menu.json +34 -0
  378. package/r/modeToggle.json +36 -0
  379. package/r/navbarSearch.json +31 -0
  380. package/r/pageWithNavbar.json +46 -0
  381. package/r/pasteTarget.json +41 -0
  382. package/r/pihanga-base.json +11 -0
  383. package/r/pihanga-cards-icons.json +16 -0
  384. package/r/pihanga-cards-types.json +16 -0
  385. package/r/pihanga-hook-use-is-touch-device.json +15 -0
  386. package/r/pihanga-lib-utils.json +18 -0
  387. package/r/pihanga-theme-provider.json +25 -0
  388. package/r/pihanga-ui-extras.json +68 -0
  389. package/r/registry.json +171 -0
  390. package/r/resizable.json +35 -0
  391. package/r/select.json +35 -0
  392. package/r/stack.json +27 -0
  393. package/r/stepper.json +39 -0
  394. package/r/switch.json +36 -0
  395. package/r/tabs.json +33 -0
  396. package/r/textField.json +32 -0
  397. package/r/toast.json +32 -0
  398. package/r/toggleGroup.json +35 -0
  399. package/r/typography.json +31 -0
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ import "../../lib/utils.js";
3
+ import "react";
4
+ import "react/jsx-runtime";
5
+ import "radix-ui";
@@ -0,0 +1,49 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import "react";
3
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
+ import { XIcon as r } from "lucide-react";
5
+ import * as i from "@radix-ui/react-dialog";
6
+ //#region src/components/ui/sheet.tsx
7
+ function a({ ...e }) {
8
+ return /* @__PURE__ */ t(i.Root, {
9
+ "data-slot": "sheet",
10
+ ...e
11
+ });
12
+ }
13
+ function o({ ...e }) {
14
+ return /* @__PURE__ */ t(i.Trigger, {
15
+ "data-slot": "sheet-trigger",
16
+ ...e
17
+ });
18
+ }
19
+ function s({ ...e }) {
20
+ return /* @__PURE__ */ t(i.Portal, {
21
+ "data-slot": "sheet-portal",
22
+ ...e
23
+ });
24
+ }
25
+ function c({ className: n, ...r }) {
26
+ return /* @__PURE__ */ t(i.Overlay, {
27
+ "data-slot": "sheet-overlay",
28
+ className: e("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", n),
29
+ ...r
30
+ });
31
+ }
32
+ function l({ className: a, children: o, side: l = "right", ...u }) {
33
+ return /* @__PURE__ */ n(s, { children: [/* @__PURE__ */ t(c, {}), /* @__PURE__ */ n(i.Content, {
34
+ "data-slot": "sheet-content",
35
+ className: e("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", l === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", l === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", l === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", l === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", a),
36
+ ...u,
37
+ children: [o, /* @__PURE__ */ n(i.Close, {
38
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",
39
+ children: [/* @__PURE__ */ t(r, { className: "size-4" }), /* @__PURE__ */ t("span", {
40
+ className: "sr-only",
41
+ children: "Close"
42
+ })]
43
+ })]
44
+ })] });
45
+ }
46
+ //#endregion
47
+ export { a as Sheet, l as SheetContent, o as SheetTrigger };
48
+
49
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.js","names":[],"sources":["../../../src/components/ui/sheet.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/components/lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":";;;;;;AAMA,SAAS,EAAM,EAAE,GAAG,KAA2D;CAC7E,OAAO,kBAAC,EAAe,MAAhB;EAAqB,aAAU;EAAQ,GAAI;CAAQ,CAAA;AAC5D;AAEA,SAAS,EAAa,EACpB,GAAG,KACmD;CACtD,OAAO,kBAAC,EAAe,SAAhB;EAAwB,aAAU;EAAgB,GAAI;CAAQ,CAAA;AACvE;AAQA,SAAS,EAAY,EACnB,GAAG,KACkD;CACrD,OAAO,kBAAC,EAAe,QAAhB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;AAEA,SAAS,EAAa,EACpB,cACA,GAAG,KACmD;CACtD,OACE,kBAAC,EAAe,SAAhB;EACE,aAAU;EACV,WAAW,EACT,0JACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAa,EACpB,cACA,aACA,UAAO,SACP,GAAG,KAGF;CACD,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,CAAe,CAAA,GACf,kBAAC,EAAe,SAAhB;EACE,aAAU;EACV,WAAW,EACT,8MACA,MAAS,WACP,oIACF,MAAS,UACP,iIACF,MAAS,SACP,4GACF,MAAS,YACP,qHACF,CACF;EACA,GAAI;YAdN,CAgBG,GACD,kBAAC,EAAe,OAAhB;GAAsB,WAAU;aAAhC,CACE,kBAAC,GAAD,EAAO,WAAU,SAAU,CAAA,GAC3B,kBAAC,QAAD;IAAM,WAAU;cAAU;GAAW,CAAA,CACjB;IACA;GACb,EAAA,CAAA;AAEjB"}
@@ -0,0 +1,35 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/ui/spinner.tsx
4
+ var r = {
5
+ default: "size-6",
6
+ sm: "size-4",
7
+ lg: "size-8",
8
+ icon: "size-9"
9
+ };
10
+ function i({ className: i, size: a = "default" }) {
11
+ return /* @__PURE__ */ n("svg", {
12
+ xmlns: "http://www.w3.org/2000/svg",
13
+ fill: "none",
14
+ viewBox: "0 0 24 24",
15
+ role: "status",
16
+ "aria-label": "Loading",
17
+ className: e("animate-spin", r[a], i),
18
+ children: [/* @__PURE__ */ t("circle", {
19
+ className: "opacity-25",
20
+ cx: "12",
21
+ cy: "12",
22
+ r: "10",
23
+ stroke: "currentColor",
24
+ strokeWidth: "4"
25
+ }), /* @__PURE__ */ t("path", {
26
+ className: "opacity-75",
27
+ fill: "currentColor",
28
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
29
+ })]
30
+ });
31
+ }
32
+ //#endregion
33
+ export { i as Spinner };
34
+
35
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","names":[],"sources":["../../../src/components/ui/spinner.tsx"],"sourcesContent":["import {cn} from \"@/lib/utils\";\n\ntype SpinnerProps = {\n className?: string;\n size?: \"default\" | \"sm\" | \"lg\" | \"icon\";\n};\n\nconst sizeClasses: Record<string, string> = {\n default: \"size-6\",\n sm: \"size-4\",\n lg: \"size-8\",\n icon: \"size-9\",\n};\n\nfunction Spinner({className, size = \"default\"}: SpinnerProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"animate-spin\", sizeClasses[size], className)}\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n}\n\nexport {Spinner};\n"],"mappings":";;;AAOA,IAAM,IAAsC;CAC1C,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,SAAS,EAAQ,EAAC,cAAW,UAAO,aAA0B;CAC5D,OACE,kBAAC,OAAD;EACE,OAAM;EACN,MAAK;EACL,SAAQ;EACR,MAAK;EACL,cAAW;EACX,WAAW,EAAG,gBAAgB,EAAY,IAAO,CAAS;YAN5D,CAQE,kBAAC,UAAD;GACE,WAAU;GACV,IAAG;GACH,IAAG;GACH,GAAE;GACF,QAAO;GACP,aAAY;EACb,CAAA,GACD,kBAAC,QAAD;GACE,WAAU;GACV,MAAK;GACL,GAAE;EACH,CAAA,CACE;;AAET"}
@@ -0,0 +1,145 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import "react";
3
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
+ import { Check as r } from "lucide-react";
5
+ //#region src/components/ui/stepper.tsx
6
+ function i(e, t) {
7
+ return e < t ? "completed" : e === t ? "active" : "upcoming";
8
+ }
9
+ var a = {
10
+ sm: {
11
+ btn: "h-6 w-6 text-xs",
12
+ icon: "h-3 w-3"
13
+ },
14
+ md: {
15
+ btn: "h-8 w-8 text-sm",
16
+ icon: "h-4 w-4"
17
+ },
18
+ lg: {
19
+ btn: "h-10 w-10 text-base",
20
+ icon: "h-5 w-5"
21
+ }
22
+ }, o = {
23
+ sm: "text-xs",
24
+ md: "text-sm",
25
+ lg: "text-base"
26
+ };
27
+ function s({ state: n, stepIndex: i, size: o, onClick: s }) {
28
+ let c = a[o];
29
+ return /* @__PURE__ */ t("button", {
30
+ type: "button",
31
+ onClick: s,
32
+ disabled: !s,
33
+ "aria-current": n === "active" ? "step" : void 0,
34
+ className: e("pi-stepper__indicator", `pi-stepper__indicator--${n}`, s ? "pi-stepper__indicator--clickable" : "pi-stepper__indicator--static", "flex shrink-0 items-center justify-center rounded-full font-semibold", c.btn, n === "completed" && "bg-primary text-primary-foreground", n === "active" && "bg-primary text-primary-foreground ring-2 ring-primary ring-offset-2", n === "upcoming" && "border-2 border-muted-foreground/40 bg-background text-muted-foreground", s && "cursor-pointer hover:opacity-80", !s && "cursor-default"),
35
+ children: n === "completed" ? /* @__PURE__ */ t(r, {
36
+ className: e("pi-stepper__indicator-icon", c.icon),
37
+ strokeWidth: 2.5
38
+ }) : /* @__PURE__ */ t("span", {
39
+ className: "pi-stepper__indicator-label",
40
+ children: i + 1
41
+ })
42
+ });
43
+ }
44
+ function c({ step: r, state: i, size: a, vertical: s = !1 }) {
45
+ return r.labelNode == null ? /* @__PURE__ */ n("div", {
46
+ className: e("pi-stepper__label", `pi-stepper__label--${i}`, s && "pi-stepper__label--vertical", s ? "ml-4" : "mt-2 text-center", !s && "max-w-[96px]"),
47
+ children: [
48
+ /* @__PURE__ */ n("p", {
49
+ className: e("pi-stepper__label-title", `pi-stepper__label-title--${i}`, o[a], "font-medium leading-tight", i === "upcoming" ? "text-muted-foreground" : "text-foreground", s && "leading-none"),
50
+ children: [r.title, s && r.optional && /* @__PURE__ */ t("span", {
51
+ className: "pi-stepper__label-optional ml-1 text-xs font-normal text-muted-foreground",
52
+ children: "(Optional)"
53
+ })]
54
+ }),
55
+ !s && r.optional && /* @__PURE__ */ t("p", {
56
+ className: "pi-stepper__label-optional text-xs font-normal text-muted-foreground",
57
+ children: "Optional"
58
+ }),
59
+ r.description && /* @__PURE__ */ t("p", {
60
+ className: "pi-stepper__label-description mt-0.5 text-xs text-muted-foreground",
61
+ children: r.description
62
+ })
63
+ ]
64
+ }) : /* @__PURE__ */ t("div", {
65
+ className: e("pi-stepper__label-card", `pi-stepper__label-card--${i}`, s && "pi-stepper__label-card--vertical", s ? "ml-4" : "mt-2 text-center"),
66
+ children: r.labelNode
67
+ });
68
+ }
69
+ function l({ steps: r, activeStep: a, size: o = "md", className: l, onStepClick: u }) {
70
+ return /* @__PURE__ */ t("ol", {
71
+ "aria-label": "Steps",
72
+ className: e("pi-stepper pi-stepper--horizontal", `pi-stepper--${o}`, "flex w-full items-start", l),
73
+ children: r.map((l, d) => {
74
+ let f = i(d, a), p = d === 0, m = d === r.length - 1, h = !p && i(d - 1, a) === "completed", g = !m && f === "completed";
75
+ return /* @__PURE__ */ n("li", {
76
+ className: e("pi-stepper__step", `pi-stepper__step--${f}`, p && "pi-stepper__step--first", m && "pi-stepper__step--last", "flex flex-1 flex-col items-center"),
77
+ children: [/* @__PURE__ */ n("div", {
78
+ className: "flex w-full items-center",
79
+ children: [
80
+ p ? /* @__PURE__ */ t("div", {
81
+ className: "flex-1",
82
+ "aria-hidden": "true"
83
+ }) : /* @__PURE__ */ t("div", { className: e("pi-stepper__connector pi-stepper__connector--left", h ? "pi-stepper__connector--completed" : "pi-stepper__connector--upcoming", "h-0.5 flex-1 transition-colors duration-300", h ? "bg-primary" : "bg-border") }),
84
+ /* @__PURE__ */ t(s, {
85
+ state: f,
86
+ stepIndex: d,
87
+ size: o,
88
+ onClick: u ? () => u(d, l.id) : void 0
89
+ }),
90
+ m ? /* @__PURE__ */ t("div", {
91
+ className: "flex-1",
92
+ "aria-hidden": "true"
93
+ }) : /* @__PURE__ */ t("div", { className: e("pi-stepper__connector pi-stepper__connector--right", g ? "pi-stepper__connector--completed" : "pi-stepper__connector--upcoming", "h-0.5 flex-1 transition-colors duration-300", g ? "bg-primary" : "bg-border") })
94
+ ]
95
+ }), /* @__PURE__ */ t(c, {
96
+ step: l,
97
+ state: f,
98
+ size: o,
99
+ vertical: !1
100
+ })]
101
+ }, l.id);
102
+ })
103
+ });
104
+ }
105
+ function u({ steps: r, activeStep: a, size: o = "md", className: l, onStepClick: u, renderStepContent: d }) {
106
+ return /* @__PURE__ */ t("ol", {
107
+ className: e("pi-stepper pi-stepper--vertical", `pi-stepper--${o}`, "flex flex-col", l),
108
+ children: r.map((l, f) => {
109
+ let p = i(f, a), m = f === 0, h = f === r.length - 1, g = p === "active" && d ? d(f, l) : null;
110
+ return /* @__PURE__ */ n("li", {
111
+ className: e("pi-stepper__step", `pi-stepper__step--${p}`, m && "pi-stepper__step--first", h && "pi-stepper__step--last", "flex"),
112
+ children: [/* @__PURE__ */ n("div", {
113
+ className: "flex flex-col items-center",
114
+ children: [/* @__PURE__ */ t(s, {
115
+ state: p,
116
+ stepIndex: f,
117
+ size: o,
118
+ onClick: u ? () => u(f, l.id) : void 0
119
+ }), !h && /* @__PURE__ */ t("div", {
120
+ className: e("pi-stepper__connector pi-stepper__connector--vertical", p === "completed" ? "pi-stepper__connector--completed" : "pi-stepper__connector--upcoming", "mb-1 mt-1 w-0.5 flex-1 transition-colors duration-300", p === "completed" ? "bg-primary" : "bg-border"),
121
+ style: { minHeight: "24px" }
122
+ })]
123
+ }), /* @__PURE__ */ n("div", {
124
+ className: e("flex-1", !h && "pb-6"),
125
+ children: [/* @__PURE__ */ t(c, {
126
+ step: l,
127
+ state: p,
128
+ size: o,
129
+ vertical: !0
130
+ }), g && /* @__PURE__ */ t("div", {
131
+ className: "pi-stepper__step-content ml-4 mt-3",
132
+ children: g
133
+ })]
134
+ })]
135
+ }, l.id);
136
+ })
137
+ });
138
+ }
139
+ function d(e) {
140
+ return e.orientation === "vertical" ? /* @__PURE__ */ t(u, { ...e }) : /* @__PURE__ */ t(l, { ...e });
141
+ }
142
+ //#endregion
143
+ export { d as StepperUI };
144
+
145
+ //# sourceMappingURL=stepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepper.js","names":[],"sources":["../../../src/components/ui/stepper.tsx"],"sourcesContent":["/**\n * Stepper UI primitive — shadcn/Tailwind-based, inspired by MUI Joy UI's Stepper.\n *\n * Architecture\n * ───────────\n * • Tailwind classes handle structural / layout / dimension concerns that are\n * difficult to override with plain CSS (flex layout, width/height, spacing).\n * • BEM class names (`pi-stepper`, `pi-stepper__*`, `pi-stepper__*--state`)\n * are applied to every element so consumers can override visual styles\n * (colours, borders, transitions) in `stepper.css` or any downstream sheet.\n * • Default visual styles live in `src/cards/shadcn/stepper/stepper.css`\n * (imported by the Pihanga card component).\n */\nimport * as React from \"react\";\nimport {Check} from \"lucide-react\";\nimport {cn} from \"@/lib/utils\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type StepState = \"completed\" | \"active\" | \"upcoming\";\n\nexport interface StepData {\n id: string;\n title: string;\n description?: string;\n optional?: boolean;\n /**\n * Optional pre-rendered React node to replace the default title/description\n * label. Produced by the Pihanga card component when `labelCard` is set on\n * a `StepItem`; rendered via `<Card cardName={step.labelCard} />` there.\n */\n labelNode?: React.ReactNode;\n}\n\nexport interface StepperUIProps {\n steps: StepData[];\n /** 0-based index of the currently active step */\n activeStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n /** If provided, steps become clickable */\n onStepClick?: (stepIndex: number, stepId: string) => void;\n /** Optional content rendered below the label in vertical-mode active steps */\n renderStepContent?: (stepIndex: number, step: StepData) => React.ReactNode;\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction getStepState(stepIndex: number, activeStep: number): StepState {\n if (stepIndex < activeStep) return \"completed\";\n if (stepIndex === activeStep) return \"active\";\n return \"upcoming\";\n}\n\n// Tailwind dimension classes for the step-indicator button.\n// Kept here so layout always works even without the CSS file loaded.\nconst INDICATOR_SIZE = {\n sm: {btn: \"h-6 w-6 text-xs\", icon: \"h-3 w-3\"},\n md: {btn: \"h-8 w-8 text-sm\", icon: \"h-4 w-4\"},\n lg: {btn: \"h-10 w-10 text-base\", icon: \"h-5 w-5\"},\n} as const;\n\n// Tailwind label font classes — fallback when CSS file is absent.\nconst LABEL_SIZE = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n} as const;\n\n// ─── Indicator button ─────────────────────────────────────────────────────────\n\nfunction IndicatorButton({\n state,\n stepIndex,\n size,\n onClick,\n}: {\n state: StepState;\n stepIndex: number;\n size: \"sm\" | \"md\" | \"lg\";\n onClick?: () => void;\n}) {\n const s = INDICATOR_SIZE[size];\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={!onClick}\n aria-current={state === \"active\" ? \"step\" : undefined}\n className={cn(\n // ── BEM — visual override target ──\n \"pi-stepper__indicator\",\n `pi-stepper__indicator--${state}`,\n onClick\n ? \"pi-stepper__indicator--clickable\"\n : \"pi-stepper__indicator--static\",\n // ── Tailwind — structural defaults (always applied) ──\n \"flex shrink-0 items-center justify-center rounded-full font-semibold\",\n s.btn,\n // Default visual appearance via Tailwind (overridden by stepper.css rules)\n state === \"completed\" && \"bg-primary text-primary-foreground\",\n state === \"active\" &&\n \"bg-primary text-primary-foreground ring-2 ring-primary ring-offset-2\",\n state === \"upcoming\" &&\n \"border-2 border-muted-foreground/40 bg-background text-muted-foreground\",\n onClick && \"cursor-pointer hover:opacity-80\",\n !onClick && \"cursor-default\",\n )}\n >\n {state === \"completed\" ? (\n <Check\n className={cn(\"pi-stepper__indicator-icon\", s.icon)}\n strokeWidth={2.5}\n />\n ) : (\n <span className=\"pi-stepper__indicator-label\">{stepIndex + 1}</span>\n )}\n </button>\n );\n}\n\n// ─── Label ────────────────────────────────────────────────────────────────────\n\nfunction StepLabel({\n step,\n state,\n size,\n vertical = false,\n}: {\n step: StepData;\n state: StepState;\n size: \"sm\" | \"md\" | \"lg\";\n vertical?: boolean;\n}) {\n // Custom card label takes precedence over the default text label.\n if (step.labelNode != null) {\n return (\n <div\n className={cn(\n \"pi-stepper__label-card\",\n `pi-stepper__label-card--${state}`,\n vertical && \"pi-stepper__label-card--vertical\",\n // Tailwind defaults\n vertical ? \"ml-4\" : \"mt-2 text-center\",\n )}\n >\n {step.labelNode}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"pi-stepper__label\",\n `pi-stepper__label--${state}`,\n vertical && \"pi-stepper__label--vertical\",\n // Tailwind defaults\n vertical ? \"ml-4\" : \"mt-2 text-center\",\n !vertical && \"max-w-[96px]\",\n )}\n >\n <p\n className={cn(\n \"pi-stepper__label-title\",\n `pi-stepper__label-title--${state}`,\n // Tailwind defaults\n LABEL_SIZE[size],\n \"font-medium leading-tight\",\n state === \"upcoming\" ? \"text-muted-foreground\" : \"text-foreground\",\n vertical && \"leading-none\",\n )}\n >\n {step.title}\n {vertical && step.optional && (\n <span className=\"pi-stepper__label-optional ml-1 text-xs font-normal text-muted-foreground\">\n (Optional)\n </span>\n )}\n </p>\n\n {!vertical && step.optional && (\n <p className=\"pi-stepper__label-optional text-xs font-normal text-muted-foreground\">\n Optional\n </p>\n )}\n\n {step.description && (\n <p className=\"pi-stepper__label-description mt-0.5 text-xs text-muted-foreground\">\n {step.description}\n </p>\n )}\n </div>\n );\n}\n\n// ─── Horizontal layout ────────────────────────────────────────────────────────\n\nfunction HorizontalStepper({\n steps,\n activeStep,\n size = \"md\",\n className,\n onStepClick,\n}: StepperUIProps) {\n return (\n <ol\n aria-label=\"Steps\"\n className={cn(\n \"pi-stepper pi-stepper--horizontal\",\n `pi-stepper--${size}`,\n \"flex w-full items-start\",\n className,\n )}\n >\n {steps.map((step, index) => {\n const state = getStepState(index, activeStep);\n const isFirst = index === 0;\n const isLast = index === steps.length - 1;\n\n const leftCompleted =\n !isFirst && getStepState(index - 1, activeStep) === \"completed\";\n const rightCompleted = !isLast && state === \"completed\";\n\n return (\n <li\n key={step.id}\n className={cn(\n \"pi-stepper__step\",\n `pi-stepper__step--${state}`,\n isFirst && \"pi-stepper__step--first\",\n isLast && \"pi-stepper__step--last\",\n \"flex flex-1 flex-col items-center\",\n )}\n >\n {/* ── [left-half] [indicator] [right-half] centred row ── */}\n <div className=\"flex w-full items-center\">\n {isFirst ? (\n <div className=\"flex-1\" aria-hidden=\"true\" />\n ) : (\n <div\n className={cn(\n \"pi-stepper__connector pi-stepper__connector--left\",\n leftCompleted\n ? \"pi-stepper__connector--completed\"\n : \"pi-stepper__connector--upcoming\",\n // Tailwind defaults\n \"h-0.5 flex-1 transition-colors duration-300\",\n leftCompleted ? \"bg-primary\" : \"bg-border\",\n )}\n />\n )}\n\n <IndicatorButton\n state={state}\n stepIndex={index}\n size={size}\n onClick={\n onStepClick ? () => onStepClick(index, step.id) : undefined\n }\n />\n\n {isLast ? (\n <div className=\"flex-1\" aria-hidden=\"true\" />\n ) : (\n <div\n className={cn(\n \"pi-stepper__connector pi-stepper__connector--right\",\n rightCompleted\n ? \"pi-stepper__connector--completed\"\n : \"pi-stepper__connector--upcoming\",\n // Tailwind defaults\n \"h-0.5 flex-1 transition-colors duration-300\",\n rightCompleted ? \"bg-primary\" : \"bg-border\",\n )}\n />\n )}\n </div>\n\n <StepLabel step={step} state={state} size={size} vertical={false} />\n </li>\n );\n })}\n </ol>\n );\n}\n\n// ─── Vertical layout ──────────────────────────────────────────────────────────\n\nfunction VerticalStepper({\n steps,\n activeStep,\n size = \"md\",\n className,\n onStepClick,\n renderStepContent,\n}: StepperUIProps) {\n return (\n <ol\n className={cn(\n \"pi-stepper pi-stepper--vertical\",\n `pi-stepper--${size}`,\n \"flex flex-col\",\n className,\n )}\n >\n {steps.map((step, index) => {\n const state = getStepState(index, activeStep);\n const isFirst = index === 0;\n const isLast = index === steps.length - 1;\n const content =\n state === \"active\" && renderStepContent\n ? renderStepContent(index, step)\n : null;\n\n return (\n <li\n key={step.id}\n className={cn(\n \"pi-stepper__step\",\n `pi-stepper__step--${state}`,\n isFirst && \"pi-stepper__step--first\",\n isLast && \"pi-stepper__step--last\",\n \"flex\",\n )}\n >\n {/* Left col: indicator + connector */}\n <div className=\"flex flex-col items-center\">\n <IndicatorButton\n state={state}\n stepIndex={index}\n size={size}\n onClick={\n onStepClick ? () => onStepClick(index, step.id) : undefined\n }\n />\n {!isLast && (\n <div\n className={cn(\n \"pi-stepper__connector pi-stepper__connector--vertical\",\n state === \"completed\"\n ? \"pi-stepper__connector--completed\"\n : \"pi-stepper__connector--upcoming\",\n // Tailwind defaults\n \"mb-1 mt-1 w-0.5 flex-1 transition-colors duration-300\",\n state === \"completed\" ? \"bg-primary\" : \"bg-border\",\n )}\n style={{minHeight: \"24px\"}}\n />\n )}\n </div>\n\n {/* Right col: label + content */}\n <div className={cn(\"flex-1\", !isLast && \"pb-6\")}>\n <StepLabel\n step={step}\n state={state}\n size={size}\n vertical={true}\n />\n {content && (\n <div className=\"pi-stepper__step-content ml-4 mt-3\">\n {content}\n </div>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n\n// ─── Public export ────────────────────────────────────────────────────────────\n\nexport function StepperUI(props: StepperUIProps) {\n return props.orientation === \"vertical\" ? (\n <VerticalStepper {...props} />\n ) : (\n <HorizontalStepper {...props} />\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import "react";
3
+ import { jsx as t } from "react/jsx-runtime";
4
+ import * as n from "@radix-ui/react-switch";
5
+ //#region src/components/ui/switch.tsx
6
+ function r({ className: r, ...i }) {
7
+ return /* @__PURE__ */ t(n.Root, {
8
+ "data-slot": "switch",
9
+ className: e("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input", "focus-visible:border-ring focus-visible:ring-ring/50", "dark:data-[state=unchecked]:bg-input/80", "inline-flex h-5 w-9 shrink-0 items-center rounded-full", "border-2 border-transparent shadow-xs transition-all outline-none", "focus-visible:ring-[3px]", "disabled:cursor-not-allowed disabled:opacity-50", r),
10
+ ...i,
11
+ children: /* @__PURE__ */ t(n.Thumb, {
12
+ "data-slot": "switch-thumb",
13
+ className: e("bg-background dark:data-[state=unchecked]:bg-foreground", "dark:data-[state=checked]:bg-primary-foreground", "pointer-events-none block size-4 rounded-full ring-0 shadow-lg transition-transform", "data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")
14
+ })
15
+ });
16
+ }
17
+ //#endregion
18
+ export { r as Switch };
19
+
20
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","names":[],"sources":["../../../src/components/ui/switch.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport {cn} from \"@/components/lib/utils\";\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n \"focus-visible:border-ring focus-visible:ring-ring/50\",\n \"dark:data-[state=unchecked]:bg-input/80\",\n \"inline-flex h-5 w-9 shrink-0 items-center rounded-full\",\n \"border-2 border-transparent shadow-xs transition-all outline-none\",\n \"focus-visible:ring-[3px]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground\",\n \"dark:data-[state=checked]:bg-primary-foreground\",\n \"pointer-events-none block size-4 rounded-full ring-0 shadow-lg transition-transform\",\n \"data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport {Switch};\n"],"mappings":";;;;;AAKA,SAAS,EAAO,EACd,cACA,GAAG,KACiD;CACpD,OACE,kBAAC,EAAgB,MAAjB;EACE,aAAU;EACV,WAAW,EACT,wEACA,wDACA,2CACA,0DACA,qEACA,4BACA,mDACA,CACF;EACA,GAAI;YAEJ,kBAAC,EAAgB,OAAjB;GACE,aAAU;GACV,WAAW,EACT,2DACA,mDACA,uFACA,yEACF;EACD,CAAA;CACmB,CAAA;AAE1B"}
@@ -0,0 +1,61 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import "react";
3
+ import { jsx as t } from "react/jsx-runtime";
4
+ //#region src/components/ui/table.tsx
5
+ function n({ className: n, ...r }) {
6
+ return /* @__PURE__ */ t("div", {
7
+ "data-slot": "table-container",
8
+ className: "relative w-full overflow-x-auto",
9
+ children: /* @__PURE__ */ t("table", {
10
+ "data-slot": "table",
11
+ className: e("w-full caption-bottom text-sm", n),
12
+ ...r
13
+ })
14
+ });
15
+ }
16
+ function r({ className: n, ...r }) {
17
+ return /* @__PURE__ */ t("thead", {
18
+ "data-slot": "table-header",
19
+ className: e("[&_tr]:border-b", n),
20
+ ...r
21
+ });
22
+ }
23
+ function i({ className: n, ...r }) {
24
+ return /* @__PURE__ */ t("tbody", {
25
+ "data-slot": "table-body",
26
+ className: e("[&_tr:last-child]:border-0", n),
27
+ ...r
28
+ });
29
+ }
30
+ function a({ className: n, ...r }) {
31
+ return /* @__PURE__ */ t("tr", {
32
+ "data-slot": "table-row",
33
+ className: e("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted", n),
34
+ ...r
35
+ });
36
+ }
37
+ function o({ className: n, ...r }) {
38
+ return /* @__PURE__ */ t("th", {
39
+ "data-slot": "table-head",
40
+ className: e("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", n),
41
+ ...r
42
+ });
43
+ }
44
+ function s({ className: n, ...r }) {
45
+ return /* @__PURE__ */ t("td", {
46
+ "data-slot": "table-cell",
47
+ className: e("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", n),
48
+ ...r
49
+ });
50
+ }
51
+ function c({ className: n, ...r }) {
52
+ return /* @__PURE__ */ t("caption", {
53
+ "data-slot": "table-caption",
54
+ className: e("mt-4 text-sm text-muted-foreground", n),
55
+ ...r
56
+ });
57
+ }
58
+ //#endregion
59
+ export { n as Table, i as TableBody, c as TableCaption, s as TableCell, o as TableHead, r as TableHeader, a as TableRow };
60
+
61
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","names":[],"sources":["../../../src/components/ui/table.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n"],"mappings":";;;;AAIA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAwC;CACrE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAU;YAEV,kBAAC,SAAD;GACE,aAAU;GACV,WAAW,EAAG,iCAAiC,CAAS;GACxD,GAAI;EACL,CAAA;CACE,CAAA;AAET;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAwC;CAC3E,OACE,kBAAC,SAAD;EACE,aAAU;EACV,WAAW,EAAG,mBAAmB,CAAS;EAC1C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAU,EAAE,cAAW,GAAG,KAAwC;CACzE,OACE,kBAAC,SAAD;EACE,aAAU;EACV,WAAW,EAAG,8BAA8B,CAAS;EACrD,GAAI;CACL,CAAA;AAEL;AAeA,SAAS,EAAS,EAAE,cAAW,GAAG,KAAqC;CACrE,OACE,kBAAC,MAAD;EACE,aAAU;EACV,WAAW,EACT,6GACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAU,EAAE,cAAW,GAAG,KAAqC;CACtE,OACE,kBAAC,MAAD;EACE,aAAU;EACV,WAAW,EACT,sJACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAU,EAAE,cAAW,GAAG,KAAqC;CACtE,OACE,kBAAC,MAAD;EACE,aAAU;EACV,WAAW,EACT,0GACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAa,EACpB,cACA,GAAG,KAC+B;CAClC,OACE,kBAAC,WAAD;EACE,aAAU;EACV,WAAW,EAAG,sCAAsC,CAAS;EAC7D,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,38 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import "react";
3
+ import { jsx as t } from "react/jsx-runtime";
4
+ import * as n from "@radix-ui/react-tabs";
5
+ //#region src/components/ui/tabs.tsx
6
+ function r({ className: r, orientation: i, ...a }) {
7
+ return /* @__PURE__ */ t(n.Root, {
8
+ "data-slot": "tabs",
9
+ orientation: i,
10
+ className: e("flex gap-2", i === "vertical" ? "flex-row" : "flex-col", r),
11
+ ...a
12
+ });
13
+ }
14
+ function i({ className: r, ...i }) {
15
+ return /* @__PURE__ */ t(n.List, {
16
+ "data-slot": "tabs-list",
17
+ className: e("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]", "data-[orientation=vertical]:flex-col data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-auto", r),
18
+ ...i
19
+ });
20
+ }
21
+ function a({ className: r, ...i }) {
22
+ return /* @__PURE__ */ t(n.Trigger, {
23
+ "data-slot": "tabs-trigger",
24
+ className: e("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start", r),
25
+ ...i
26
+ });
27
+ }
28
+ function o({ className: r, ...i }) {
29
+ return /* @__PURE__ */ t(n.Content, {
30
+ "data-slot": "tabs-content",
31
+ className: e("flex-1 outline-none", r),
32
+ ...i
33
+ });
34
+ }
35
+ //#endregion
36
+ export { r as Tabs, o as TabsContent, i as TabsList, a as TabsTrigger };
37
+
38
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/components/ui/tabs.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport {cn} from \"@/components/lib/utils\";\n\nfunction Tabs({\n className,\n orientation,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={cn(\n \"flex gap-2\",\n orientation === \"vertical\" ? \"flex-row\" : \"flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n \"data-[orientation=vertical]:flex-col data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport {Tabs, TabsList, TabsTrigger, TabsContent};\n"],"mappings":";;;;;AAKA,SAAS,EAAK,EACZ,cACA,gBACA,GAAG,KAC+C;CAClD,OACE,kBAAC,EAAc,MAAf;EACE,aAAU;EACG;EACb,WAAW,EACT,cACA,MAAgB,aAAa,aAAa,YAC1C,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAS,EAChB,cACA,GAAG,KAC+C;CAClD,OACE,kBAAC,EAAc,MAAf;EACE,aAAU;EACV,WAAW,EACT,uGACA,8GACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EACnB,cACA,GAAG,KACkD;CACrD,OACE,kBAAC,EAAc,SAAf;EACE,aAAU;EACV,WAAW,EACT,mqBACA,mHACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EACnB,cACA,GAAG,KACkD;CACrD,OACE,kBAAC,EAAc,SAAf;EACE,aAAU;EACV,WAAW,EAAG,uBAAuB,CAAS;EAC9C,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { toggleVariants as t } from "./toggle.js";
4
+ import * as n from "react";
5
+ import { jsx as r } from "react/jsx-runtime";
6
+ import { ToggleGroup as i } from "radix-ui";
7
+ //#region src/components/ui/toggle-group.tsx
8
+ var a = n.createContext({
9
+ size: "default",
10
+ variant: "default",
11
+ spacing: 0
12
+ });
13
+ function o({ className: t, variant: n, size: o, spacing: s = 0, children: c, ...l }) {
14
+ return /* @__PURE__ */ r(i.Root, {
15
+ "data-slot": "toggle-group",
16
+ "data-variant": n,
17
+ "data-size": o,
18
+ "data-spacing": s,
19
+ style: { "--gap": s },
20
+ className: e("group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs", t),
21
+ ...l,
22
+ children: /* @__PURE__ */ r(a.Provider, {
23
+ value: {
24
+ variant: n,
25
+ size: o,
26
+ spacing: s
27
+ },
28
+ children: c
29
+ })
30
+ });
31
+ }
32
+ function s({ className: o, children: s, variant: c, size: l, ...u }) {
33
+ let d = n.useContext(a);
34
+ return /* @__PURE__ */ r(i.Item, {
35
+ "data-slot": "toggle-group-item",
36
+ "data-variant": d.variant || c,
37
+ "data-size": d.size || l,
38
+ "data-spacing": d.spacing,
39
+ className: e(t({
40
+ variant: d.variant || c,
41
+ size: d.size || l
42
+ }), "w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10", "data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l", o),
43
+ ...u,
44
+ children: s
45
+ });
46
+ }
47
+ //#endregion
48
+ export { o as ToggleGroup, s as ToggleGroupItem };
49
+
50
+ //# sourceMappingURL=toggle-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.js","names":[],"sources":["../../../src/components/ui/toggle-group.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"],"mappings":";;;;;;;AASA,IAAM,IAAqB,EAAM,cAI/B;CACA,MAAM;CACN,SAAS;CACT,SAAS;AACX,CAAC;AAED,SAAS,EAAY,EACnB,cACA,YACA,SACA,aAAU,GACV,aACA,GAAG,KAIA;CACH,OACE,kBAAC,EAAqB,MAAtB;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,gBAAc;EACd,OAAO,EAAE,SAAS,EAAQ;EAC1B,WAAW,EACT,6IACA,CACF;EACA,GAAI;YAEJ,kBAAC,EAAmB,UAApB;GAA6B,OAAO;IAAE;IAAS;IAAM;GAAQ;GAC1D;EAC0B,CAAA;CACJ,CAAA;AAE/B;AAEA,SAAS,EAAgB,EACvB,cACA,aACA,YACA,SACA,GAAG,KAEkC;CACrC,IAAM,IAAU,EAAM,WAAW,CAAkB;CAEnD,OACE,kBAAC,EAAqB,MAAtB;EACE,aAAU;EACV,gBAAc,EAAQ,WAAW;EACjC,aAAW,EAAQ,QAAQ;EAC3B,gBAAc,EAAQ;EACtB,WAAW,EACT,EAAe;GACb,SAAS,EAAQ,WAAW;GAC5B,MAAM,EAAQ,QAAQ;EACxB,CAAC,GACD,8DACA,+OACA,CACF;EACA,GAAI;EAEH;CACwB,CAAA;AAE/B"}
@@ -0,0 +1,27 @@
1
+ import "../../lib/utils.js";
2
+ import "react";
3
+ import { cva as e } from "class-variance-authority";
4
+ import "react/jsx-runtime";
5
+ import "radix-ui";
6
+ //#region src/components/ui/toggle.tsx
7
+ var t = e("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
8
+ variants: {
9
+ variant: {
10
+ default: "bg-transparent",
11
+ outline: "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"
12
+ },
13
+ size: {
14
+ default: "h-9 min-w-9 px-2",
15
+ sm: "h-8 min-w-8 px-1.5",
16
+ lg: "h-10 min-w-10 px-2.5"
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ size: "default"
22
+ }
23
+ });
24
+ //#endregion
25
+ export { t as toggleVariants };
26
+
27
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.js","names":[],"sources":["../../../src/components/ui/toggle.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 min-w-9 px-2\",\n sm: \"h-8 min-w-8 px-1.5\",\n lg: \"h-10 min-w-10 px-2.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n"],"mappings":";;;;;;AAMA,IAAM,IAAiB,EACrB,ijBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SACE;EACJ;EACA,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import { cn as e } from "../lib/utils.js";
3
+ import "react";
4
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
5
+ import * as r from "@radix-ui/react-tooltip";
6
+ //#region src/components/ui/tooltip.tsx
7
+ function i({ delayDuration: e = 0, ...n }) {
8
+ return /* @__PURE__ */ t(r.Provider, {
9
+ "data-slot": "tooltip-provider",
10
+ delayDuration: e,
11
+ ...n
12
+ });
13
+ }
14
+ function a({ ...e }) {
15
+ return /* @__PURE__ */ t(i, { children: /* @__PURE__ */ t(r.Root, {
16
+ "data-slot": "tooltip",
17
+ ...e
18
+ }) });
19
+ }
20
+ function o({ ...e }) {
21
+ return /* @__PURE__ */ t(r.Trigger, {
22
+ "data-slot": "tooltip-trigger",
23
+ ...e
24
+ });
25
+ }
26
+ function s({ className: i, sideOffset: a = 0, children: o, ...s }) {
27
+ return /* @__PURE__ */ t(r.Portal, { children: /* @__PURE__ */ n(r.Content, {
28
+ "data-slot": "tooltip-content",
29
+ sideOffset: a,
30
+ className: e("bg-primary 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance", i),
31
+ ...s,
32
+ children: [o, /* @__PURE__ */ t(r.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
33
+ }) });
34
+ }
35
+ //#endregion
36
+ export { a as Tooltip, s as TooltipContent, i as TooltipProvider, o as TooltipTrigger };
37
+
38
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","names":[],"sources":["../../../src/components/ui/tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport {cn} from \"@/components/lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport {Tooltip, TooltipTrigger, TooltipContent, TooltipProvider};\n"],"mappings":";;;;;;AAOA,SAAS,EAAgB,EACvB,mBAAgB,GAChB,GAAG,KACsD;CACzD,OACE,kBAAC,EAAiB,UAAlB;EACE,aAAU;EACK;EACf,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAQ,EACf,GAAG,KACkD;CACrD,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,EAAiB,MAAlB;EAAuB,aAAU;EAAU,GAAI;CAAQ,CAAA,EACxC,CAAA;AAErB;AAEA,SAAS,EAAe,EACtB,GAAG,KACqD;CACxD,OAAO,kBAAC,EAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAEA,SAAS,EAAe,EACtB,cACA,gBAAa,GACb,aACA,GAAG,KACqD;CACxD,OACE,kBAAC,EAAiB,QAAlB,EAAA,UACE,kBAAC,EAAiB,SAAlB;EACE,aAAU;EACE;EACZ,WAAW,EACT,0aACA,CACF;EACA,GAAI;YAPN,CASG,GACD,kBAAC,EAAiB,OAAlB,EAAwB,WAAU,+FAAgG,CAAA,CAC1G;IACH,CAAA;AAE7B"}
package/lib/utils.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
package/lib/utils.js ADDED
@@ -0,0 +1,10 @@
1
+ import { clsx as e } from "clsx";
2
+ import { twMerge as t } from "tailwind-merge";
3
+ //#region src/lib/utils.ts
4
+ function n(...n) {
5
+ return t(e(n));
6
+ }
7
+ //#endregion
8
+ export { n as cn };
9
+
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/lib/utils.ts"],"sourcesContent":["import {clsx, type ClassValue} from \"clsx\";\nimport {twMerge} from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;AAGA,SAAgB,EAAG,GAAG,GAAsB;CAC1C,OAAO,EAAQ,EAAK,CAAM,CAAC;AAC7B"}
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#6366f1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="m8 3 4 8 5-5 5 15H2L8 3z"/>
3
+ <path d="M4.14 15.08c2.62-1.57 5.24-1.43 7.86.42 2.74 1.94 5.49 2 8.23.19"/>
4
+ </svg>