@omnifyjp/ui 0.5.3 → 1.0.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 (424) hide show
  1. package/README.md +3 -6
  2. package/dist/chunk-2C2HRGM7.js +51 -0
  3. package/dist/chunk-2C2HRGM7.js.map +1 -0
  4. package/dist/chunk-2TUWDXAC.js +196 -0
  5. package/dist/chunk-2TUWDXAC.js.map +1 -0
  6. package/dist/chunk-34ARZSNP.js +63 -0
  7. package/dist/chunk-34ARZSNP.js.map +1 -0
  8. package/dist/chunk-35DNN46W.js +13 -0
  9. package/dist/chunk-35DNN46W.js.map +1 -0
  10. package/dist/chunk-35U6QG4P.js +116 -0
  11. package/dist/chunk-35U6QG4P.js.map +1 -0
  12. package/dist/chunk-36YYHIJU.js +52 -0
  13. package/dist/chunk-36YYHIJU.js.map +1 -0
  14. package/dist/chunk-3EOHW4QN.js +35 -0
  15. package/dist/chunk-3EOHW4QN.js.map +1 -0
  16. package/dist/chunk-3VU56V66.js +41 -0
  17. package/dist/chunk-3VU56V66.js.map +1 -0
  18. package/dist/chunk-55E7D2HR.js +99 -0
  19. package/dist/chunk-55E7D2HR.js.map +1 -0
  20. package/dist/chunk-67YUL2ZS.js +53 -0
  21. package/dist/chunk-67YUL2ZS.js.map +1 -0
  22. package/dist/chunk-6DIDQ4TB.js +131 -0
  23. package/dist/chunk-6DIDQ4TB.js.map +1 -0
  24. package/dist/chunk-6GWVQB3Q.js +155 -0
  25. package/dist/chunk-6GWVQB3Q.js.map +1 -0
  26. package/dist/chunk-75WZR6HF.js +44 -0
  27. package/dist/chunk-75WZR6HF.js.map +1 -0
  28. package/dist/chunk-7IRLBU2I.js +114 -0
  29. package/dist/chunk-7IRLBU2I.js.map +1 -0
  30. package/dist/chunk-7RMTPT6O.js +99 -0
  31. package/dist/chunk-7RMTPT6O.js.map +1 -0
  32. package/dist/chunk-7XH3MGBR.js +128 -0
  33. package/dist/chunk-7XH3MGBR.js.map +1 -0
  34. package/dist/chunk-A3BB5ZOC.js +77 -0
  35. package/dist/chunk-A3BB5ZOC.js.map +1 -0
  36. package/dist/chunk-BAQWGQJG.js +106 -0
  37. package/dist/chunk-BAQWGQJG.js.map +1 -0
  38. package/dist/chunk-BRSM3SZP.js +46 -0
  39. package/dist/chunk-BRSM3SZP.js.map +1 -0
  40. package/dist/chunk-C34KSTWA.js +43 -0
  41. package/dist/chunk-C34KSTWA.js.map +1 -0
  42. package/dist/chunk-C5NZAOA7.js +54 -0
  43. package/dist/chunk-C5NZAOA7.js.map +1 -0
  44. package/dist/chunk-CUZR4JWM.js +23 -0
  45. package/dist/chunk-CUZR4JWM.js.map +1 -0
  46. package/dist/chunk-DGPY4WP3.js +11 -0
  47. package/dist/chunk-DGPY4WP3.js.map +1 -0
  48. package/dist/chunk-DNCZOUNY.js +239 -0
  49. package/dist/chunk-DNCZOUNY.js.map +1 -0
  50. package/dist/chunk-EWBCV7VA.js +65 -0
  51. package/dist/chunk-EWBCV7VA.js.map +1 -0
  52. package/dist/chunk-F2ZJLKDP.js +119 -0
  53. package/dist/chunk-F2ZJLKDP.js.map +1 -0
  54. package/dist/chunk-FLWMT4DB.js +66 -0
  55. package/dist/chunk-FLWMT4DB.js.map +1 -0
  56. package/dist/chunk-FRKG7JQY.js +48 -0
  57. package/dist/chunk-FRKG7JQY.js.map +1 -0
  58. package/dist/chunk-G7HTZBUR.js +187 -0
  59. package/dist/chunk-G7HTZBUR.js.map +1 -0
  60. package/dist/chunk-HWTW64R5.js +90 -0
  61. package/dist/chunk-HWTW64R5.js.map +1 -0
  62. package/dist/chunk-IAWKX5W4.js +219 -0
  63. package/dist/chunk-IAWKX5W4.js.map +1 -0
  64. package/dist/chunk-INLM7UJC.js +238 -0
  65. package/dist/chunk-INLM7UJC.js.map +1 -0
  66. package/dist/chunk-JAJMM32I.js +18 -0
  67. package/dist/chunk-JAJMM32I.js.map +1 -0
  68. package/dist/chunk-JJSVA3TH.js +61 -0
  69. package/dist/chunk-JJSVA3TH.js.map +1 -0
  70. package/dist/chunk-JLTBUACL.js +121 -0
  71. package/dist/chunk-JLTBUACL.js.map +1 -0
  72. package/dist/chunk-JRU2QX7T.js +38 -0
  73. package/dist/chunk-JRU2QX7T.js.map +1 -0
  74. package/dist/chunk-JXGRW2MR.js +17 -0
  75. package/dist/chunk-JXGRW2MR.js.map +1 -0
  76. package/dist/chunk-KTBOZ4NE.js +93 -0
  77. package/dist/chunk-KTBOZ4NE.js.map +1 -0
  78. package/dist/chunk-LMT327XH.js +56 -0
  79. package/dist/chunk-LMT327XH.js.map +1 -0
  80. package/dist/chunk-LTTNCAAA.js +138 -0
  81. package/dist/chunk-LTTNCAAA.js.map +1 -0
  82. package/dist/chunk-LVZNNIK4.js +111 -0
  83. package/dist/chunk-LVZNNIK4.js.map +1 -0
  84. package/dist/chunk-MJLFJPUG.js +143 -0
  85. package/dist/chunk-MJLFJPUG.js.map +1 -0
  86. package/dist/chunk-MZ2P566X.js +65 -0
  87. package/dist/chunk-MZ2P566X.js.map +1 -0
  88. package/dist/chunk-N47H4MHX.js +41 -0
  89. package/dist/chunk-N47H4MHX.js.map +1 -0
  90. package/dist/chunk-NNJTKHCE.js +160 -0
  91. package/dist/chunk-NNJTKHCE.js.map +1 -0
  92. package/dist/chunk-NPL2R5LD.js +171 -0
  93. package/dist/chunk-NPL2R5LD.js.map +1 -0
  94. package/dist/chunk-NU56GKGM.js +44 -0
  95. package/dist/chunk-NU56GKGM.js.map +1 -0
  96. package/dist/chunk-P3M5TZD2.js +24 -0
  97. package/dist/chunk-P3M5TZD2.js.map +1 -0
  98. package/dist/chunk-PGWNOZDX.js +28 -0
  99. package/dist/chunk-PGWNOZDX.js.map +1 -0
  100. package/dist/chunk-QB3UWRZH.js +92 -0
  101. package/dist/chunk-QB3UWRZH.js.map +1 -0
  102. package/dist/chunk-R2CDE5DO.js +33 -0
  103. package/dist/chunk-R2CDE5DO.js.map +1 -0
  104. package/dist/chunk-RQNZDWY3.js +65 -0
  105. package/dist/chunk-RQNZDWY3.js.map +1 -0
  106. package/dist/chunk-S6PDRGR5.js +109 -0
  107. package/dist/chunk-S6PDRGR5.js.map +1 -0
  108. package/dist/chunk-TGYQ3AKH.js +95 -0
  109. package/dist/chunk-TGYQ3AKH.js.map +1 -0
  110. package/dist/chunk-THQUH6WX.js +81 -0
  111. package/dist/chunk-THQUH6WX.js.map +1 -0
  112. package/dist/chunk-TJMK2KBE.js +112 -0
  113. package/dist/chunk-TJMK2KBE.js.map +1 -0
  114. package/dist/chunk-TTH7TWVX.js +30 -0
  115. package/dist/chunk-TTH7TWVX.js.map +1 -0
  116. package/dist/chunk-USIHM7FV.js +211 -0
  117. package/dist/chunk-USIHM7FV.js.map +1 -0
  118. package/dist/chunk-VVYSAGB3.js +104 -0
  119. package/dist/chunk-VVYSAGB3.js.map +1 -0
  120. package/dist/chunk-WD5KZE25.js +25 -0
  121. package/dist/chunk-WD5KZE25.js.map +1 -0
  122. package/dist/chunk-WL4ZO2H3.js +33 -0
  123. package/dist/chunk-WL4ZO2H3.js.map +1 -0
  124. package/dist/chunk-WRCHR4AK.js +23 -0
  125. package/dist/chunk-WRCHR4AK.js.map +1 -0
  126. package/dist/chunk-WS6E7HBT.js +39 -0
  127. package/dist/chunk-WS6E7HBT.js.map +1 -0
  128. package/dist/chunk-XOJJBNDX.js +33 -0
  129. package/dist/chunk-XOJJBNDX.js.map +1 -0
  130. package/dist/chunk-YBMEQZX7.js +164 -0
  131. package/dist/chunk-YBMEQZX7.js.map +1 -0
  132. package/dist/chunk-Z2QAABLM.js +86 -0
  133. package/dist/chunk-Z2QAABLM.js.map +1 -0
  134. package/dist/chunk-ZHEKDP5X.js +41 -0
  135. package/dist/chunk-ZHEKDP5X.js.map +1 -0
  136. package/dist/chunk-ZPMXRW2A.js +63 -0
  137. package/dist/chunk-ZPMXRW2A.js.map +1 -0
  138. package/dist/chunk-ZYEGBF7G.js +25 -0
  139. package/dist/chunk-ZYEGBF7G.js.map +1 -0
  140. package/dist/components/accordion.d.ts +37 -0
  141. package/dist/components/accordion.js +4 -0
  142. package/dist/components/accordion.js.map +1 -0
  143. package/dist/components/alert-dialog.d.ts +56 -0
  144. package/dist/components/alert-dialog.js +5 -0
  145. package/dist/components/alert-dialog.js.map +1 -0
  146. package/dist/components/alert.d.ts +68 -0
  147. package/dist/components/alert.js +4 -0
  148. package/dist/components/alert.js.map +1 -0
  149. package/dist/components/aspect-ratio.d.ts +23 -0
  150. package/dist/components/aspect-ratio.js +3 -0
  151. package/dist/components/aspect-ratio.js.map +1 -0
  152. package/dist/components/avatar.d.ts +48 -0
  153. package/dist/components/avatar.js +4 -0
  154. package/dist/components/avatar.js.map +1 -0
  155. package/dist/components/badge.d.ts +52 -0
  156. package/dist/components/badge.js +4 -0
  157. package/dist/components/badge.js.map +1 -0
  158. package/dist/components/breadcrumb.d.ts +50 -0
  159. package/dist/components/breadcrumb.js +4 -0
  160. package/dist/components/breadcrumb.js.map +1 -0
  161. package/dist/components/button.d.ts +81 -0
  162. package/dist/components/button.js +4 -0
  163. package/dist/components/button.js.map +1 -0
  164. package/dist/components/calendar-category-badge.d.ts +24 -0
  165. package/dist/components/calendar-category-badge.js +5 -0
  166. package/dist/components/calendar-category-badge.js.map +1 -0
  167. package/dist/components/calendar-event-chip.d.ts +41 -0
  168. package/dist/components/calendar-event-chip.js +4 -0
  169. package/dist/components/calendar-event-chip.js.map +1 -0
  170. package/dist/components/calendar-event-sheet.d.ts +68 -0
  171. package/dist/components/calendar-event-sheet.js +9 -0
  172. package/dist/components/calendar-event-sheet.js.map +1 -0
  173. package/dist/components/calendar-mini.d.ts +65 -0
  174. package/dist/components/calendar-mini.js +6 -0
  175. package/dist/components/calendar-mini.js.map +1 -0
  176. package/dist/components/calendar-toolbar.d.ts +58 -0
  177. package/dist/components/calendar-toolbar.js +7 -0
  178. package/dist/components/calendar-toolbar.js.map +1 -0
  179. package/dist/components/calendar.d.ts +19 -0
  180. package/dist/components/calendar.js +5 -0
  181. package/dist/components/calendar.js.map +1 -0
  182. package/dist/components/card.d.ts +43 -0
  183. package/dist/components/card.js +4 -0
  184. package/dist/components/card.js.map +1 -0
  185. package/dist/components/carousel.d.ts +53 -0
  186. package/dist/components/carousel.js +5 -0
  187. package/dist/components/carousel.js.map +1 -0
  188. package/dist/components/chart.d.ts +125 -0
  189. package/dist/components/chart.js +4 -0
  190. package/dist/components/chart.js.map +1 -0
  191. package/dist/components/checkbox.d.ts +24 -0
  192. package/dist/components/checkbox.js +4 -0
  193. package/dist/components/checkbox.js.map +1 -0
  194. package/dist/components/collapsible.d.ts +28 -0
  195. package/dist/components/collapsible.js +3 -0
  196. package/dist/components/collapsible.js.map +1 -0
  197. package/dist/components/color-picker.d.ts +35 -0
  198. package/dist/components/color-picker.js +7 -0
  199. package/dist/components/color-picker.js.map +1 -0
  200. package/dist/components/combobox.d.ts +98 -0
  201. package/dist/components/combobox.js +8 -0
  202. package/dist/components/combobox.js.map +1 -0
  203. package/dist/components/command.d.ts +63 -0
  204. package/dist/components/command.js +5 -0
  205. package/dist/components/command.js.map +1 -0
  206. package/dist/components/context-menu.d.ts +70 -0
  207. package/dist/components/context-menu.js +4 -0
  208. package/dist/components/context-menu.js.map +1 -0
  209. package/dist/components/date-picker.d.ts +71 -0
  210. package/dist/components/date-picker.js +7 -0
  211. package/dist/components/date-picker.js.map +1 -0
  212. package/dist/components/dialog.d.ts +58 -0
  213. package/dist/components/dialog.js +4 -0
  214. package/dist/components/dialog.js.map +1 -0
  215. package/dist/components/drawer.d.ts +60 -0
  216. package/dist/components/drawer.js +4 -0
  217. package/dist/components/drawer.js.map +1 -0
  218. package/dist/components/dropdown-menu.d.ts +76 -0
  219. package/dist/components/dropdown-menu.js +4 -0
  220. package/dist/components/dropdown-menu.js.map +1 -0
  221. package/dist/components/file-upload.d.ts +44 -0
  222. package/dist/components/file-upload.js +5 -0
  223. package/dist/components/file-upload.js.map +1 -0
  224. package/dist/components/form.d.ts +67 -0
  225. package/dist/components/form.js +5 -0
  226. package/dist/components/form.js.map +1 -0
  227. package/dist/components/hover-card.d.ts +43 -0
  228. package/dist/components/hover-card.js +4 -0
  229. package/dist/components/hover-card.js.map +1 -0
  230. package/dist/components/input-otp.d.ts +38 -0
  231. package/dist/components/input-otp.js +4 -0
  232. package/dist/components/input-otp.js.map +1 -0
  233. package/dist/components/input.d.ts +38 -0
  234. package/dist/components/input.js +4 -0
  235. package/dist/components/input.js.map +1 -0
  236. package/dist/components/label.d.ts +20 -0
  237. package/dist/components/label.js +4 -0
  238. package/dist/components/label.js.map +1 -0
  239. package/dist/components/menubar.d.ts +82 -0
  240. package/dist/components/menubar.js +4 -0
  241. package/dist/components/menubar.js.map +1 -0
  242. package/dist/components/navigation-menu.d.ts +64 -0
  243. package/dist/components/navigation-menu.js +4 -0
  244. package/dist/components/navigation-menu.js.map +1 -0
  245. package/dist/components/pagination.d.ts +59 -0
  246. package/dist/components/pagination.js +5 -0
  247. package/dist/components/pagination.js.map +1 -0
  248. package/dist/components/password-input.d.ts +32 -0
  249. package/dist/components/password-input.js +5 -0
  250. package/dist/components/password-input.js.map +1 -0
  251. package/dist/components/permission-grid.d.ts +67 -0
  252. package/dist/components/permission-grid.js +5 -0
  253. package/dist/components/permission-grid.js.map +1 -0
  254. package/dist/components/popover.d.ts +37 -0
  255. package/dist/components/popover.js +4 -0
  256. package/dist/components/popover.js.map +1 -0
  257. package/dist/components/progress.d.ts +20 -0
  258. package/dist/components/progress.js +4 -0
  259. package/dist/components/progress.js.map +1 -0
  260. package/dist/components/radio-group.d.ts +38 -0
  261. package/dist/components/radio-group.js +4 -0
  262. package/dist/components/radio-group.js.map +1 -0
  263. package/dist/components/rating.d.ts +35 -0
  264. package/dist/components/rating.js +4 -0
  265. package/dist/components/rating.js.map +1 -0
  266. package/dist/components/resizable.d.ts +36 -0
  267. package/dist/components/resizable.js +4 -0
  268. package/dist/components/resizable.js.map +1 -0
  269. package/dist/components/scope-tree.d.ts +78 -0
  270. package/dist/components/scope-tree.js +5 -0
  271. package/dist/components/scope-tree.js.map +1 -0
  272. package/dist/components/scope-type-badge.d.ts +35 -0
  273. package/dist/components/scope-type-badge.js +5 -0
  274. package/dist/components/scope-type-badge.js.map +1 -0
  275. package/dist/components/scroll-area.d.ts +29 -0
  276. package/dist/components/scroll-area.js +4 -0
  277. package/dist/components/scroll-area.js.map +1 -0
  278. package/dist/components/select.d.ts +52 -0
  279. package/dist/components/select.js +4 -0
  280. package/dist/components/select.js.map +1 -0
  281. package/dist/components/separator.d.ts +24 -0
  282. package/dist/components/separator.js +4 -0
  283. package/dist/components/separator.js.map +1 -0
  284. package/dist/components/sheet.d.ts +51 -0
  285. package/dist/components/sheet.js +4 -0
  286. package/dist/components/sheet.js.map +1 -0
  287. package/dist/components/skeleton.d.ts +25 -0
  288. package/dist/components/skeleton.js +4 -0
  289. package/dist/components/skeleton.js.map +1 -0
  290. package/dist/components/slider.d.ts +24 -0
  291. package/dist/components/slider.js +4 -0
  292. package/dist/components/slider.js.map +1 -0
  293. package/dist/components/slug-input.d.ts +50 -0
  294. package/dist/components/slug-input.js +6 -0
  295. package/dist/components/slug-input.js.map +1 -0
  296. package/dist/components/sonner.d.ts +22 -0
  297. package/dist/components/sonner.js +3 -0
  298. package/dist/components/sonner.js.map +1 -0
  299. package/dist/components/stage-type-badge.d.ts +30 -0
  300. package/dist/components/stage-type-badge.js +5 -0
  301. package/dist/components/stage-type-badge.js.map +1 -0
  302. package/dist/components/switch.d.ts +26 -0
  303. package/dist/components/switch.js +4 -0
  304. package/dist/components/switch.js.map +1 -0
  305. package/dist/components/table.d.ts +57 -0
  306. package/dist/components/table.js +4 -0
  307. package/dist/components/table.js.map +1 -0
  308. package/dist/components/tabs.d.ts +39 -0
  309. package/dist/components/tabs.js +4 -0
  310. package/dist/components/tabs.js.map +1 -0
  311. package/dist/components/tag-input.d.ts +40 -0
  312. package/dist/components/tag-input.js +5 -0
  313. package/dist/components/tag-input.js.map +1 -0
  314. package/dist/components/textarea.d.ts +21 -0
  315. package/dist/components/textarea.js +4 -0
  316. package/dist/components/textarea.js.map +1 -0
  317. package/dist/components/time-picker.d.ts +57 -0
  318. package/dist/components/time-picker.js +8 -0
  319. package/dist/components/time-picker.js.map +1 -0
  320. package/dist/components/toggle-group.d.ts +45 -0
  321. package/dist/components/toggle-group.js +5 -0
  322. package/dist/components/toggle-group.js.map +1 -0
  323. package/dist/components/toggle.d.ts +31 -0
  324. package/dist/components/toggle.js +4 -0
  325. package/dist/components/toggle.js.map +1 -0
  326. package/dist/components/tooltip.d.ts +34 -0
  327. package/dist/components/tooltip.js +4 -0
  328. package/dist/components/tooltip.js.map +1 -0
  329. package/dist/components/workflow-category-badge.d.ts +32 -0
  330. package/dist/components/workflow-category-badge.js +5 -0
  331. package/dist/components/workflow-category-badge.js.map +1 -0
  332. package/dist/components/workflow-diagram.d.ts +63 -0
  333. package/dist/components/workflow-diagram.js +5 -0
  334. package/dist/components/workflow-diagram.js.map +1 -0
  335. package/dist/components/workflow-status-badge.d.ts +30 -0
  336. package/dist/components/workflow-status-badge.js +5 -0
  337. package/dist/components/workflow-status-badge.js.map +1 -0
  338. package/dist/components/workflow-stepper.d.ts +52 -0
  339. package/dist/components/workflow-stepper.js +4 -0
  340. package/dist/components/workflow-stepper.js.map +1 -0
  341. package/dist/hooks/use-mobile.d.ts +3 -3
  342. package/dist/hooks/use-mobile.js +1 -1
  343. package/dist/hooks/use-mobile.js.map +1 -1
  344. package/dist/index.d.ts +108 -15
  345. package/dist/index.js +69 -13
  346. package/dist/lib/types.d.ts +84 -1
  347. package/dist/lib/types.js +1 -1
  348. package/dist/lib/types.js.map +1 -1
  349. package/dist/lib/utils.d.ts +5 -1
  350. package/dist/lib/utils.js +1 -1
  351. package/dist/lib/utils.js.map +1 -1
  352. package/package.json +68 -31
  353. package/src/styles/fonts.css +0 -0
  354. package/src/styles/index.css +3 -1
  355. package/src/styles/tailwind.css +4 -0
  356. package/src/styles/theme.css +461 -0
  357. package/dist/chunk-2GN4WIOV.js +0 -240
  358. package/dist/chunk-2GN4WIOV.js.map +0 -1
  359. package/dist/chunk-5BL4VFRJ.js +0 -57
  360. package/dist/chunk-5BL4VFRJ.js.map +0 -1
  361. package/dist/chunk-735JNJJO.js +0 -27
  362. package/dist/chunk-735JNJJO.js.map +0 -1
  363. package/dist/chunk-EJEVW4RO.js +0 -49
  364. package/dist/chunk-EJEVW4RO.js.map +0 -1
  365. package/dist/chunk-FVOQZTHE.js +0 -191
  366. package/dist/chunk-FVOQZTHE.js.map +0 -1
  367. package/dist/chunk-ITXOZ4IR.js +0 -85
  368. package/dist/chunk-ITXOZ4IR.js.map +0 -1
  369. package/dist/chunk-NVPNMQSR.js +0 -30
  370. package/dist/chunk-NVPNMQSR.js.map +0 -1
  371. package/dist/chunk-O25D7DCP.js +0 -72
  372. package/dist/chunk-O25D7DCP.js.map +0 -1
  373. package/dist/chunk-O2ADW2GC.js +0 -224
  374. package/dist/chunk-O2ADW2GC.js.map +0 -1
  375. package/dist/chunk-OY3PSPA5.js +0 -661
  376. package/dist/chunk-OY3PSPA5.js.map +0 -1
  377. package/dist/chunk-UASABUQA.js +0 -39
  378. package/dist/chunk-UASABUQA.js.map +0 -1
  379. package/dist/chunk-UR2QLIS2.js +0 -93
  380. package/dist/chunk-UR2QLIS2.js.map +0 -1
  381. package/dist/chunk-XDXGUPCR.js +0 -123
  382. package/dist/chunk-XDXGUPCR.js.map +0 -1
  383. package/dist/components/AppShell.d.ts +0 -27
  384. package/dist/components/AppShell.js +0 -13
  385. package/dist/components/AppShell.js.map +0 -1
  386. package/dist/components/Header.d.ts +0 -11
  387. package/dist/components/Header.js +0 -9
  388. package/dist/components/Header.js.map +0 -1
  389. package/dist/components/LanguageSelector.d.ts +0 -11
  390. package/dist/components/LanguageSelector.js +0 -5
  391. package/dist/components/LanguageSelector.js.map +0 -1
  392. package/dist/components/OrganizationSelector.d.ts +0 -8
  393. package/dist/components/OrganizationSelector.js +0 -4
  394. package/dist/components/OrganizationSelector.js.map +0 -1
  395. package/dist/components/OrganizationSetupModal.d.ts +0 -5
  396. package/dist/components/OrganizationSetupModal.js +0 -4
  397. package/dist/components/OrganizationSetupModal.js.map +0 -1
  398. package/dist/components/PageContainer.d.ts +0 -105
  399. package/dist/components/PageContainer.js +0 -3
  400. package/dist/components/PageContainer.js.map +0 -1
  401. package/dist/components/ServiceMenu.d.ts +0 -11
  402. package/dist/components/ServiceMenu.js +0 -3
  403. package/dist/components/ServiceMenu.js.map +0 -1
  404. package/dist/components/Sidebar.d.ts +0 -11
  405. package/dist/components/Sidebar.js +0 -5
  406. package/dist/components/Sidebar.js.map +0 -1
  407. package/dist/contexts/LanguageContext.d.ts +0 -17
  408. package/dist/contexts/LanguageContext.js +0 -4
  409. package/dist/contexts/LanguageContext.js.map +0 -1
  410. package/dist/contexts/OrganizationContext.d.ts +0 -28
  411. package/dist/contexts/OrganizationContext.js +0 -3
  412. package/dist/contexts/OrganizationContext.js.map +0 -1
  413. package/dist/contexts/ThemeContext.d.ts +0 -14
  414. package/dist/contexts/ThemeContext.js +0 -3
  415. package/dist/contexts/ThemeContext.js.map +0 -1
  416. package/dist/hooks/useDateFormat.d.ts +0 -28
  417. package/dist/hooks/useDateFormat.js +0 -4
  418. package/dist/hooks/useDateFormat.js.map +0 -1
  419. package/dist/i18n.d.ts +0 -38
  420. package/dist/i18n.js +0 -3
  421. package/dist/i18n.js.map +0 -1
  422. package/dist/types.d.ts +0 -91
  423. package/dist/types.js +0 -3
  424. package/dist/types.js.map +0 -1
@@ -0,0 +1,211 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
3
+ import { ChevronRightIcon, CheckIcon, CircleIcon } from 'lucide-react';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ function ContextMenu({
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Root, { "data-slot": "context-menu", ...props });
10
+ }
11
+ function ContextMenuTrigger({
12
+ ...props
13
+ }) {
14
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Trigger, { "data-slot": "context-menu-trigger", ...props });
15
+ }
16
+ function ContextMenuGroup({
17
+ ...props
18
+ }) {
19
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Group, { "data-slot": "context-menu-group", ...props });
20
+ }
21
+ function ContextMenuPortal({
22
+ ...props
23
+ }) {
24
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { "data-slot": "context-menu-portal", ...props });
25
+ }
26
+ function ContextMenuSub({
27
+ ...props
28
+ }) {
29
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Sub, { "data-slot": "context-menu-sub", ...props });
30
+ }
31
+ function ContextMenuRadioGroup({
32
+ ...props
33
+ }) {
34
+ return /* @__PURE__ */ jsx(
35
+ ContextMenuPrimitive.RadioGroup,
36
+ {
37
+ "data-slot": "context-menu-radio-group",
38
+ ...props
39
+ }
40
+ );
41
+ }
42
+ function ContextMenuSubTrigger({
43
+ className,
44
+ inset,
45
+ children,
46
+ ...props
47
+ }) {
48
+ return /* @__PURE__ */ jsxs(
49
+ ContextMenuPrimitive.SubTrigger,
50
+ {
51
+ "data-slot": "context-menu-sub-trigger",
52
+ "data-inset": inset,
53
+ className: cn(
54
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
55
+ className
56
+ ),
57
+ ...props,
58
+ children: [
59
+ children,
60
+ /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })
61
+ ]
62
+ }
63
+ );
64
+ }
65
+ function ContextMenuSubContent({
66
+ className,
67
+ ...props
68
+ }) {
69
+ return /* @__PURE__ */ jsx(
70
+ ContextMenuPrimitive.SubContent,
71
+ {
72
+ "data-slot": "context-menu-sub-content",
73
+ className: cn(
74
+ "bg-popover text-popover-foreground 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 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
75
+ className
76
+ ),
77
+ ...props
78
+ }
79
+ );
80
+ }
81
+ function ContextMenuContent({
82
+ className,
83
+ ...props
84
+ }) {
85
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
86
+ ContextMenuPrimitive.Content,
87
+ {
88
+ "data-slot": "context-menu-content",
89
+ className: cn(
90
+ "bg-popover text-popover-foreground 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 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
91
+ className
92
+ ),
93
+ ...props
94
+ }
95
+ ) });
96
+ }
97
+ function ContextMenuItem({
98
+ className,
99
+ inset,
100
+ variant = "default",
101
+ ...props
102
+ }) {
103
+ return /* @__PURE__ */ jsx(
104
+ ContextMenuPrimitive.Item,
105
+ {
106
+ "data-slot": "context-menu-item",
107
+ "data-inset": inset,
108
+ "data-variant": variant,
109
+ className: cn(
110
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
111
+ className
112
+ ),
113
+ ...props
114
+ }
115
+ );
116
+ }
117
+ function ContextMenuCheckboxItem({
118
+ className,
119
+ children,
120
+ checked,
121
+ ...props
122
+ }) {
123
+ return /* @__PURE__ */ jsxs(
124
+ ContextMenuPrimitive.CheckboxItem,
125
+ {
126
+ "data-slot": "context-menu-checkbox-item",
127
+ className: cn(
128
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
129
+ className
130
+ ),
131
+ checked,
132
+ ...props,
133
+ children: [
134
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
135
+ children
136
+ ]
137
+ }
138
+ );
139
+ }
140
+ function ContextMenuRadioItem({
141
+ className,
142
+ children,
143
+ ...props
144
+ }) {
145
+ return /* @__PURE__ */ jsxs(
146
+ ContextMenuPrimitive.RadioItem,
147
+ {
148
+ "data-slot": "context-menu-radio-item",
149
+ className: cn(
150
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
151
+ className
152
+ ),
153
+ ...props,
154
+ children: [
155
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
156
+ children
157
+ ]
158
+ }
159
+ );
160
+ }
161
+ function ContextMenuLabel({
162
+ className,
163
+ inset,
164
+ ...props
165
+ }) {
166
+ return /* @__PURE__ */ jsx(
167
+ ContextMenuPrimitive.Label,
168
+ {
169
+ "data-slot": "context-menu-label",
170
+ "data-inset": inset,
171
+ className: cn(
172
+ "text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
173
+ className
174
+ ),
175
+ ...props
176
+ }
177
+ );
178
+ }
179
+ function ContextMenuSeparator({
180
+ className,
181
+ ...props
182
+ }) {
183
+ return /* @__PURE__ */ jsx(
184
+ ContextMenuPrimitive.Separator,
185
+ {
186
+ "data-slot": "context-menu-separator",
187
+ className: cn("bg-border -mx-1 my-1 h-px", className),
188
+ ...props
189
+ }
190
+ );
191
+ }
192
+ function ContextMenuShortcut({
193
+ className,
194
+ ...props
195
+ }) {
196
+ return /* @__PURE__ */ jsx(
197
+ "span",
198
+ {
199
+ "data-slot": "context-menu-shortcut",
200
+ className: cn(
201
+ "text-muted-foreground ml-auto text-xs tracking-widest",
202
+ className
203
+ ),
204
+ ...props
205
+ }
206
+ );
207
+ }
208
+
209
+ export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
210
+ //# sourceMappingURL=chunk-USIHM7FV.js.map
211
+ //# sourceMappingURL=chunk-USIHM7FV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/context-menu.tsx"],"names":[],"mappings":"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","file":"chunk-USIHM7FV.js","sourcesContent":["import * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\n/**\n * Right-click context menu built on Radix UI ContextMenu.\n *\n * Displays a menu of actions when the user right-clicks (or long-presses)\n * on the trigger area. Supports items, checkbox items, radio items,\n * sub-menus, separators, labels, and shortcuts.\n *\n * @example\n * ```tsx\n * <ContextMenu>\n * <ContextMenuTrigger className=\"flex h-40 w-64 items-center justify-center rounded-md border border-dashed\">\n * Right click here\n * </ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuItem>\n * Copy\n * <ContextMenuShortcut>Ctrl+C</ContextMenuShortcut>\n * </ContextMenuItem>\n * <ContextMenuItem>\n * Paste\n * <ContextMenuShortcut>Ctrl+V</ContextMenuShortcut>\n * </ContextMenuItem>\n * <ContextMenuSeparator />\n * <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n * ```\n */\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\n/** Area that opens the context menu on right-click. */\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\n/** Groups related context menu items together for accessibility. */\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\n/** Portal that renders context menu content outside the DOM hierarchy. */\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\n/** Container for a nested sub-menu within the context menu. */\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\n/** Container for radio context menu items where only one can be selected at a time. */\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\n/** Menu item that opens a sub-menu on hover. Displays a chevron indicator. */\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\n/** Floating container for sub-menu items. */\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Floating container for context menu items, positioned at the cursor location. */\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\n/** Actionable menu item. Set `variant=\"destructive\"` for dangerous actions, `inset` for left-padding alignment. */\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Menu item with a checkbox indicator for toggling options. */\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\n/** Menu item with a radio indicator for single-selection groups. */\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\n/** Non-interactive label used to title a group of menu items. */\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Visual divider between groups of menu items. */\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\n/** Keyboard shortcut hint displayed at the end of a menu item. */\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};"]}
@@ -0,0 +1,104 @@
1
+ import { Badge } from './chunk-A3BB5ZOC.js';
2
+ import { cn } from './chunk-DGPY4WP3.js';
3
+ import * as React from 'react';
4
+ import { X } from 'lucide-react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ function TagInput({
8
+ value = [],
9
+ onChange,
10
+ placeholder = "Nh\u1EADp v\xE0 nh\u1EA5n Enter...",
11
+ className,
12
+ disabled,
13
+ maxTags,
14
+ allowDuplicates = false,
15
+ delimiter = ","
16
+ }) {
17
+ const [inputValue, setInputValue] = React.useState("");
18
+ const inputRef = React.useRef(null);
19
+ const handleInputChange = (e) => {
20
+ setInputValue(e.target.value);
21
+ };
22
+ const addTag = (tag) => {
23
+ const trimmedTag = tag.trim();
24
+ if (!trimmedTag) return;
25
+ if (maxTags && value.length >= maxTags) return;
26
+ if (!allowDuplicates && value.includes(trimmedTag)) return;
27
+ onChange?.([...value, trimmedTag]);
28
+ setInputValue("");
29
+ };
30
+ const handleKeyDown = (e) => {
31
+ if (e.key === "Enter" || e.key === delimiter) {
32
+ e.preventDefault();
33
+ addTag(inputValue);
34
+ } else if (e.key === "Backspace" && !inputValue && value.length > 0) {
35
+ onChange?.(value.slice(0, -1));
36
+ }
37
+ };
38
+ const handlePaste = (e) => {
39
+ e.preventDefault();
40
+ const pastedText = e.clipboardData.getData("text");
41
+ const tags = pastedText.split(delimiter).map((tag) => tag.trim()).filter(Boolean);
42
+ const newTags = allowDuplicates ? tags : tags.filter((tag) => !value.includes(tag));
43
+ const tagsToAdd = maxTags ? newTags.slice(0, maxTags - value.length) : newTags;
44
+ onChange?.([...value, ...tagsToAdd]);
45
+ setInputValue("");
46
+ };
47
+ const removeTag = (index) => {
48
+ onChange?.(value.filter((_, i) => i !== index));
49
+ };
50
+ return /* @__PURE__ */ jsxs(
51
+ "div",
52
+ {
53
+ className: cn(
54
+ "flex flex-wrap gap-2 p-2 border rounded-lg bg-background min-h-[42px] cursor-text",
55
+ disabled && "opacity-50 cursor-not-allowed bg-muted",
56
+ className
57
+ ),
58
+ onClick: () => !disabled && inputRef.current?.focus(),
59
+ children: [
60
+ value.map((tag, index) => /* @__PURE__ */ jsxs(
61
+ Badge,
62
+ {
63
+ variant: "secondary",
64
+ className: "gap-1 pl-2 pr-1 py-1 h-auto",
65
+ children: [
66
+ /* @__PURE__ */ jsx("span", { children: tag }),
67
+ !disabled && /* @__PURE__ */ jsx(
68
+ "button",
69
+ {
70
+ type: "button",
71
+ onClick: (e) => {
72
+ e.stopPropagation();
73
+ removeTag(index);
74
+ },
75
+ className: "rounded-full hover:bg-muted-foreground/30 p-0.5 transition-colors",
76
+ children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
77
+ }
78
+ )
79
+ ]
80
+ },
81
+ index
82
+ )),
83
+ /* @__PURE__ */ jsx(
84
+ "input",
85
+ {
86
+ ref: inputRef,
87
+ type: "text",
88
+ value: inputValue,
89
+ onChange: handleInputChange,
90
+ onKeyDown: handleKeyDown,
91
+ onPaste: handlePaste,
92
+ disabled: disabled || (maxTags ? value.length >= maxTags : false),
93
+ placeholder: value.length === 0 ? placeholder : "",
94
+ className: "flex-1 outline-none bg-transparent min-w-[120px] text-sm disabled:cursor-not-allowed"
95
+ }
96
+ )
97
+ ]
98
+ }
99
+ );
100
+ }
101
+
102
+ export { TagInput };
103
+ //# sourceMappingURL=chunk-VVYSAGB3.js.map
104
+ //# sourceMappingURL=chunk-VVYSAGB3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/tag-input.tsx"],"names":[],"mappings":"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","file":"chunk-VVYSAGB3.js","sourcesContent":["import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { Badge } from \"./badge\";\n\ninterface TagInputProps {\n /** Array of current tag strings. */\n value?: string[];\n /** Callback fired when the tags array changes. */\n onChange?: (tags: string[]) => void;\n /** Placeholder text shown when there are no tags. */\n placeholder?: string;\n /** Additional CSS class for the outer container. */\n className?: string;\n /** Whether the tag input is disabled. */\n disabled?: boolean;\n /** Maximum number of tags allowed. */\n maxTags?: number;\n /** Whether duplicate tag values are allowed. Defaults to `false`. */\n allowDuplicates?: boolean;\n /** Character or pattern used to split pasted text into tags. Defaults to `\",\"`. */\n delimiter?: string | RegExp;\n}\n\n/**\n * Tag input that lets users add and remove string tags.\n * Tags are added by pressing Enter or the delimiter key, and by pasting comma-separated text.\n * Backspace removes the last tag when the input is empty.\n *\n * @example\n * ```tsx\n * const [tags, setTags] = useState<string[]>([\"react\", \"typescript\"]);\n *\n * <TagInput\n * value={tags}\n * onChange={setTags}\n * placeholder=\"Add a tag...\"\n * maxTags={10}\n * />\n * ```\n */\nexport function TagInput({\n value = [],\n onChange,\n placeholder = \"Nhập và nhấn Enter...\",\n className,\n disabled,\n maxTags,\n allowDuplicates = false,\n delimiter = \",\",\n}: TagInputProps) {\n const [inputValue, setInputValue] = React.useState(\"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const addTag = (tag: string) => {\n const trimmedTag = tag.trim();\n\n if (!trimmedTag) return;\n\n if (maxTags && value.length >= maxTags) return;\n\n if (!allowDuplicates && value.includes(trimmedTag)) return;\n\n onChange?.([ ...value, trimmedTag]);\n setInputValue(\"\");\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === delimiter) {\n e.preventDefault();\n addTag(inputValue);\n } else if (e.key === \"Backspace\" && !inputValue && value.length > 0) {\n // Remove last tag on backspace if input is empty\n onChange?.(value.slice(0, -1));\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedText = e.clipboardData.getData(\"text\");\n const tags = pastedText.split(delimiter).map((tag) => tag.trim()).filter(Boolean);\n\n const newTags = allowDuplicates\n ? tags\n : tags.filter((tag) => !value.includes(tag));\n\n const tagsToAdd = maxTags\n ? newTags.slice(0, maxTags - value.length)\n : newTags;\n\n onChange?.([...value, ...tagsToAdd]);\n setInputValue(\"\");\n };\n\n const removeTag = (index: number) => {\n onChange?.(value.filter((_, i) => i !== index));\n };\n\n return (\n <div\n className={cn(\n \"flex flex-wrap gap-2 p-2 border rounded-lg bg-background min-h-[42px] cursor-text\",\n disabled && \"opacity-50 cursor-not-allowed bg-muted\",\n className\n )}\n onClick={() => !disabled && inputRef.current?.focus()}\n >\n {value.map((tag, index) => (\n <Badge\n key={index}\n variant=\"secondary\"\n className=\"gap-1 pl-2 pr-1 py-1 h-auto\"\n >\n <span>{tag}</span>\n {!disabled && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n removeTag(index);\n }}\n className=\"rounded-full hover:bg-muted-foreground/30 p-0.5 transition-colors\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </Badge>\n ))}\n\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n disabled={disabled || (maxTags ? value.length >= maxTags : false)}\n placeholder={value.length === 0 ? placeholder : \"\"}\n className=\"flex-1 outline-none bg-transparent min-w-[120px] text-sm disabled:cursor-not-allowed\"\n />\n </div>\n );\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as React from 'react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var Textarea = React.forwardRef(
6
+ ({ className, ...props }, ref) => {
7
+ return /* @__PURE__ */ jsx(
8
+ "textarea",
9
+ {
10
+ ref,
11
+ "data-slot": "textarea",
12
+ className: cn(
13
+ "resize-none border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
14
+ className
15
+ ),
16
+ ...props
17
+ }
18
+ );
19
+ }
20
+ );
21
+ Textarea.displayName = "Textarea";
22
+
23
+ export { Textarea };
24
+ //# sourceMappingURL=chunk-WD5KZE25.js.map
25
+ //# sourceMappingURL=chunk-WD5KZE25.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/textarea.tsx"],"names":[],"mappings":";;;;AAqBA,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,uBACE,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,UAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,4cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-WD5KZE25.js","sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\ntype TextareaProps = React.ComponentProps<\"textarea\">;\n\n/**\n * Multi-line text input with auto-sizing via `field-sizing-content`.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Textarea placeholder=\"Enter a description...\" />\n *\n * // Controlled\n * <Textarea value={content} onChange={(e) => setContent(e.target.value)} />\n *\n * // With rows constraint\n * <Textarea rows={5} placeholder=\"Feedback\" />\n * ```\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\n \"resize-none border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n {...props}\n />\n );\n }\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\nexport type { TextareaProps };"]}
@@ -0,0 +1,33 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as React from 'react';
3
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
4
+ import { CheckIcon } from 'lucide-react';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var Checkbox = React.forwardRef(({ className, ...props }, ref) => {
8
+ return /* @__PURE__ */ jsx(
9
+ CheckboxPrimitive.Root,
10
+ {
11
+ ref,
12
+ "data-slot": "checkbox",
13
+ className: cn(
14
+ "peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
15
+ className
16
+ ),
17
+ ...props,
18
+ children: /* @__PURE__ */ jsx(
19
+ CheckboxPrimitive.Indicator,
20
+ {
21
+ "data-slot": "checkbox-indicator",
22
+ className: "flex items-center justify-center text-current transition-none",
23
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
24
+ }
25
+ )
26
+ }
27
+ );
28
+ });
29
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
30
+
31
+ export { Checkbox };
32
+ //# sourceMappingURL=chunk-WL4ZO2H3.js.map
33
+ //# sourceMappingURL=chunk-WL4ZO2H3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/checkbox.tsx"],"names":[],"mappings":";;;;;;AAyBA,IAAM,QAAA,GAAiB,iBAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACE,GAAA;AAAA,IAAmB,iBAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2fAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAmB,iBAAA,CAAA,SAAA;AAAA,QAAlB;AAAA,UACC,WAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAU,+DAAA;AAAA,UAEV,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,UAAA,EAAW;AAAA;AAAA;AAClC;AAAA,GACF;AAEJ,CAAC;AACD,QAAA,CAAS,cAAgC,iBAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-WL4ZO2H3.js","sourcesContent":["import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\ntype CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\n/**\n * Checkable input that allows selecting one or more options from a set.\n * Supports checked, unchecked, and indeterminate states.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms</Label>\n *\n * // Controlled\n * <Checkbox checked={accepted} onCheckedChange={setAccepted} />\n *\n * // Indeterminate (partial selection)\n * <Checkbox checked=\"indeterminate\" />\n * ```\n */\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, ...props }, ref) => {\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n data-slot=\"checkbox\"\n className={cn(\n \"peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\nexport type { CheckboxProps };\n"]}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+
3
+ // src/hooks/use-mobile.ts
4
+ var MOBILE_BREAKPOINT = 768;
5
+ function useIsMobile() {
6
+ const [isMobile, setIsMobile] = React.useState(
7
+ void 0
8
+ );
9
+ React.useEffect(() => {
10
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
11
+ const onChange = () => {
12
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
13
+ };
14
+ mql.addEventListener("change", onChange);
15
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
16
+ return () => mql.removeEventListener("change", onChange);
17
+ }, []);
18
+ return !!isMobile;
19
+ }
20
+
21
+ export { useIsMobile };
22
+ //# sourceMappingURL=chunk-WRCHR4AK.js.map
23
+ //# sourceMappingURL=chunk-WRCHR4AK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/use-mobile.ts"],"names":[],"mappings":";;;AAEA,IAAM,iBAAA,GAAoB,GAAA;AAEnB,SAAS,WAAA,GAAc;AAC5B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAU,KAAA,CAAA,QAAA;AAAA,IACpC;AAAA,GACF;AAEA,EAAM,gBAAU,MAAM;AACpB,IAAA,MAAM,MAAM,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAe,iBAAA,GAAoB,CAAC,CAAA,GAAA,CAAK,CAAA;AACvE,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,WAAA,CAAY,MAAA,CAAO,aAAa,iBAAiB,CAAA;AAAA,IACnD,CAAA;AACA,IAAA,GAAA,CAAI,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AACvC,IAAA,WAAA,CAAY,MAAA,CAAO,aAAa,iBAAiB,CAAA;AACjD,IAAA,OAAO,MAAM,GAAA,CAAI,mBAAA,CAAoB,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,CAAC,CAAC,QAAA;AACX","file":"chunk-WRCHR4AK.js","sourcesContent":["import * as React from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n\n return !!isMobile;\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import { inputVariants } from './chunk-3VU56V66.js';
2
+ import { cn } from './chunk-DGPY4WP3.js';
3
+ import * as React from 'react';
4
+ import { EyeOff, Eye } from 'lucide-react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var PasswordInput = React.forwardRef(
8
+ ({ className, size, ...props }, ref) => {
9
+ const [visible, setVisible] = React.useState(false);
10
+ return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
11
+ /* @__PURE__ */ jsx(
12
+ "input",
13
+ {
14
+ type: visible ? "text" : "password",
15
+ ref,
16
+ "data-slot": "input",
17
+ className: cn(inputVariants({ size, className: cn("pr-10 [&::-ms-reveal]:hidden [&::-webkit-credentials-auto-fill-button]:hidden", className) })),
18
+ ...props
19
+ }
20
+ ),
21
+ /* @__PURE__ */ jsx(
22
+ "button",
23
+ {
24
+ type: "button",
25
+ tabIndex: -1,
26
+ className: "absolute right-0 top-0 flex h-full w-10 items-center justify-center text-muted-foreground hover:text-foreground transition-colors",
27
+ onClick: () => setVisible((v) => !v),
28
+ "aria-label": visible ? "Hide password" : "Show password",
29
+ children: visible ? /* @__PURE__ */ jsx(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx(Eye, { className: "h-4 w-4" })
30
+ }
31
+ )
32
+ ] });
33
+ }
34
+ );
35
+ PasswordInput.displayName = "PasswordInput";
36
+
37
+ export { PasswordInput };
38
+ //# sourceMappingURL=chunk-WS6E7HBT.js.map
39
+ //# sourceMappingURL=chunk-WS6E7HBT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/password-input.tsx"],"names":[],"mappings":";;;;;;AAiCA,IAAM,aAAA,GAAsB,KAAA,CAAA,UAAA;AAAA,EAC1B,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAU,eAAS,KAAK,CAAA;AAElD,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,UAAU,MAAA,GAAS,UAAA;AAAA,UACzB,GAAA;AAAA,UACA,WAAA,EAAU,OAAA;AAAA,UACV,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,SAAA,EAAW,EAAA,CAAG,+EAAA,EAAiF,SAAS,CAAA,EAAG,CAAC,CAAA;AAAA,UAC/I,GAAG;AAAA;AAAA,OACN;AAAA,sBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,QAAA,EAAU,EAAA;AAAA,UACV,SAAA,EAAU,mIAAA;AAAA,UACV,SAAS,MAAM,UAAA,CAAW,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,UACnC,YAAA,EAAY,UAAU,eAAA,GAAkB,eAAA;AAAA,UAEvC,QAAA,EAAA,OAAA,uBACE,MAAA,EAAA,EAAO,SAAA,EAAU,WAAU,CAAA,mBAE5B,GAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAE7B,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA","file":"chunk-WS6E7HBT.js","sourcesContent":["import * as React from \"react\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { inputVariants } from \"./input\";\n\ninterface PasswordInputProps\n extends Omit<React.ComponentProps<\"input\">, \"type\" | \"size\">,\n VariantProps<typeof inputVariants> {}\n\n/**\n * Password input with a built-in show/hide toggle button.\n *\n * Extends native `<input>` (minus `type` which is managed internally).\n * Shares the same size variants as `Input`.\n *\n * @example\n * ```tsx\n * // Default size\n * <PasswordInput placeholder=\"Enter password\" />\n *\n * // Sizes: xs (24px) | sm (28px) | default (32px) | lg (36px) | xl (44px)\n * <PasswordInput size=\"xl\" placeholder=\"Password\" />\n *\n * // Controlled\n * <PasswordInput\n * value={password}\n * onChange={(e) => setPassword(e.target.value)}\n * placeholder=\"Password\"\n * />\n * ```\n */\nconst PasswordInput = React.forwardRef<HTMLInputElement, PasswordInputProps>(\n ({ className, size, ...props }, ref) => {\n const [visible, setVisible] = React.useState(false);\n\n return (\n <div className=\"relative\">\n <input\n type={visible ? \"text\" : \"password\"}\n ref={ref}\n data-slot=\"input\"\n className={cn(inputVariants({ size, className: cn(\"pr-10 [&::-ms-reveal]:hidden [&::-webkit-credentials-auto-fill-button]:hidden\", className) }))}\n {...props}\n />\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"absolute right-0 top-0 flex h-full w-10 items-center justify-center text-muted-foreground hover:text-foreground transition-colors\"\n onClick={() => setVisible((v) => !v)}\n aria-label={visible ? \"Hide password\" : \"Show password\"}\n >\n {visible ? (\n <EyeOff className=\"h-4 w-4\" />\n ) : (\n <Eye className=\"h-4 w-4\" />\n )}\n </button>\n </div>\n );\n },\n);\nPasswordInput.displayName = \"PasswordInput\";\n\nexport { PasswordInput };\nexport type { PasswordInputProps };\n"]}
@@ -0,0 +1,33 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ function Switch({
6
+ className,
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsx(
10
+ SwitchPrimitives.Root,
11
+ {
12
+ "data-slot": "switch",
13
+ className: cn(
14
+ "peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
15
+ className
16
+ ),
17
+ ...props,
18
+ children: /* @__PURE__ */ jsx(
19
+ SwitchPrimitives.Thumb,
20
+ {
21
+ "data-slot": "switch-thumb",
22
+ className: cn(
23
+ "bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
24
+ )
25
+ }
26
+ )
27
+ }
28
+ );
29
+ }
30
+
31
+ export { Switch };
32
+ //# sourceMappingURL=chunk-XOJJBNDX.js.map
33
+ //# sourceMappingURL=chunk-XOJJBNDX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/switch.tsx"],"names":[],"mappings":";;;;AAyBA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,IAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6WAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAkB,gBAAA,CAAA,KAAA;AAAA,QAAjB;AAAA,UACC,WAAA,EAAU,cAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACT;AAAA;AACF;AAAA;AACF;AAAA,GACF;AAEJ","file":"chunk-XOJJBNDX.js","sourcesContent":["import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../lib/utils\";\n\ntype SwitchProps = React.ComponentProps<typeof SwitchPrimitives.Root>;\n\n/**\n * Toggle switch for boolean on/off states, styled as a sliding pill.\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <Switch defaultChecked />\n *\n * // Controlled\n * <Switch checked={enabled} onCheckedChange={setEnabled} />\n *\n * // With label\n * <div className=\"flex items-center gap-2\">\n * <Switch id=\"notifications\" />\n * <Label htmlFor=\"notifications\">Enable notifications</Label>\n * </div>\n * ```\n */\nfunction Switch({\n className,\n ...props\n}: SwitchProps) {\n return (\n <SwitchPrimitives.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitives.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n );\n}\n\nexport { Switch };\nexport type { SwitchProps };\n"]}