acai-ui-library 0.1.11

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 (693) hide show
  1. package/README.md +83 -0
  2. package/dist/components/accordion.cjs +138 -0
  3. package/dist/components/accordion.cjs.map +1 -0
  4. package/dist/components/accordion.d.cts +13 -0
  5. package/dist/components/accordion.d.ts +13 -0
  6. package/dist/components/accordion.js +100 -0
  7. package/dist/components/accordion.js.map +1 -0
  8. package/dist/components/alert-dialog.cjs +282 -0
  9. package/dist/components/alert-dialog.cjs.map +1 -0
  10. package/dist/components/alert-dialog.d.cts +31 -0
  11. package/dist/components/alert-dialog.d.ts +31 -0
  12. package/dist/components/alert-dialog.js +236 -0
  13. package/dist/components/alert-dialog.js.map +1 -0
  14. package/dist/components/alert.cjs +117 -0
  15. package/dist/components/alert.cjs.map +1 -0
  16. package/dist/components/alert.d.cts +15 -0
  17. package/dist/components/alert.d.ts +15 -0
  18. package/dist/components/alert.js +78 -0
  19. package/dist/components/alert.js.map +1 -0
  20. package/dist/components/app-header.cjs +137 -0
  21. package/dist/components/app-header.cjs.map +1 -0
  22. package/dist/components/app-header.d.cts +19 -0
  23. package/dist/components/app-header.d.ts +19 -0
  24. package/dist/components/app-header.js +103 -0
  25. package/dist/components/app-header.js.map +1 -0
  26. package/dist/components/avatar.cjs +176 -0
  27. package/dist/components/avatar.cjs.map +1 -0
  28. package/dist/components/avatar.d.cts +23 -0
  29. package/dist/components/avatar.d.ts +23 -0
  30. package/dist/components/avatar.js +138 -0
  31. package/dist/components/avatar.js.map +1 -0
  32. package/dist/components/badge.cjs +121 -0
  33. package/dist/components/badge.cjs.map +1 -0
  34. package/dist/components/badge.d.cts +15 -0
  35. package/dist/components/badge.d.ts +15 -0
  36. package/dist/components/badge.js +96 -0
  37. package/dist/components/badge.js.map +1 -0
  38. package/dist/components/banner.cjs +87 -0
  39. package/dist/components/banner.cjs.map +1 -0
  40. package/dist/components/banner.d.cts +12 -0
  41. package/dist/components/banner.d.ts +12 -0
  42. package/dist/components/banner.js +52 -0
  43. package/dist/components/banner.js.map +1 -0
  44. package/dist/components/breadcrumb.cjs +137 -0
  45. package/dist/components/breadcrumb.cjs.map +1 -0
  46. package/dist/components/breadcrumb.d.cts +22 -0
  47. package/dist/components/breadcrumb.d.ts +22 -0
  48. package/dist/components/breadcrumb.js +96 -0
  49. package/dist/components/breadcrumb.js.map +1 -0
  50. package/dist/components/button.cjs +125 -0
  51. package/dist/components/button.cjs.map +1 -0
  52. package/dist/components/button.d.cts +18 -0
  53. package/dist/components/button.d.ts +18 -0
  54. package/dist/components/button.js +89 -0
  55. package/dist/components/button.js.map +1 -0
  56. package/dist/components/calendar.cjs +92 -0
  57. package/dist/components/calendar.cjs.map +1 -0
  58. package/dist/components/calendar.d.cts +11 -0
  59. package/dist/components/calendar.d.ts +11 -0
  60. package/dist/components/calendar.js +67 -0
  61. package/dist/components/calendar.js.map +1 -0
  62. package/dist/components/card.cjs +142 -0
  63. package/dist/components/card.cjs.map +1 -0
  64. package/dist/components/card.d.cts +34 -0
  65. package/dist/components/card.d.ts +34 -0
  66. package/dist/components/card.js +101 -0
  67. package/dist/components/card.js.map +1 -0
  68. package/dist/components/carousel.cjs +218 -0
  69. package/dist/components/carousel.cjs.map +1 -0
  70. package/dist/components/carousel.d.cts +23 -0
  71. package/dist/components/carousel.d.ts +23 -0
  72. package/dist/components/carousel.js +179 -0
  73. package/dist/components/carousel.js.map +1 -0
  74. package/dist/components/chart.cjs +181 -0
  75. package/dist/components/chart.cjs.map +1 -0
  76. package/dist/components/chart.d.cts +69 -0
  77. package/dist/components/chart.d.ts +69 -0
  78. package/dist/components/chart.js +141 -0
  79. package/dist/components/chart.js.map +1 -0
  80. package/dist/components/checkbox.cjs +106 -0
  81. package/dist/components/checkbox.cjs.map +1 -0
  82. package/dist/components/checkbox.d.cts +15 -0
  83. package/dist/components/checkbox.d.ts +15 -0
  84. package/dist/components/checkbox.js +70 -0
  85. package/dist/components/checkbox.js.map +1 -0
  86. package/dist/components/collapsible.cjs +48 -0
  87. package/dist/components/collapsible.cjs.map +1 -0
  88. package/dist/components/collapsible.d.cts +8 -0
  89. package/dist/components/collapsible.d.ts +8 -0
  90. package/dist/components/collapsible.js +11 -0
  91. package/dist/components/collapsible.js.map +1 -0
  92. package/dist/components/command.cjs +245 -0
  93. package/dist/components/command.cjs.map +1 -0
  94. package/dist/components/command.d.cts +85 -0
  95. package/dist/components/command.d.ts +85 -0
  96. package/dist/components/command.js +202 -0
  97. package/dist/components/command.js.map +1 -0
  98. package/dist/components/context-menu.cjs +194 -0
  99. package/dist/components/context-menu.cjs.map +1 -0
  100. package/dist/components/context-menu.d.cts +30 -0
  101. package/dist/components/context-menu.d.ts +30 -0
  102. package/dist/components/context-menu.js +145 -0
  103. package/dist/components/context-menu.js.map +1 -0
  104. package/dist/components/dashboard-header.cjs +118 -0
  105. package/dist/components/dashboard-header.cjs.map +1 -0
  106. package/dist/components/dashboard-header.d.cts +16 -0
  107. package/dist/components/dashboard-header.d.ts +16 -0
  108. package/dist/components/dashboard-header.js +84 -0
  109. package/dist/components/dashboard-header.js.map +1 -0
  110. package/dist/components/data-table.cjs +426 -0
  111. package/dist/components/data-table.cjs.map +1 -0
  112. package/dist/components/data-table.d.cts +16 -0
  113. package/dist/components/data-table.d.ts +16 -0
  114. package/dist/components/data-table.js +398 -0
  115. package/dist/components/data-table.js.map +1 -0
  116. package/dist/components/date-picker.cjs +278 -0
  117. package/dist/components/date-picker.cjs.map +1 -0
  118. package/dist/components/date-picker.d.cts +34 -0
  119. package/dist/components/date-picker.d.ts +34 -0
  120. package/dist/components/date-picker.js +243 -0
  121. package/dist/components/date-picker.js.map +1 -0
  122. package/dist/components/dialog.cjs +174 -0
  123. package/dist/components/dialog.cjs.map +1 -0
  124. package/dist/components/dialog.d.cts +35 -0
  125. package/dist/components/dialog.d.ts +35 -0
  126. package/dist/components/dialog.js +130 -0
  127. package/dist/components/dialog.js.map +1 -0
  128. package/dist/components/drawer.cjs +184 -0
  129. package/dist/components/drawer.cjs.map +1 -0
  130. package/dist/components/drawer.d.cts +33 -0
  131. package/dist/components/drawer.d.ts +33 -0
  132. package/dist/components/drawer.js +139 -0
  133. package/dist/components/drawer.js.map +1 -0
  134. package/dist/components/dropdown-menu.cjs +195 -0
  135. package/dist/components/dropdown-menu.cjs.map +1 -0
  136. package/dist/components/dropdown-menu.d.cts +30 -0
  137. package/dist/components/dropdown-menu.d.ts +30 -0
  138. package/dist/components/dropdown-menu.js +146 -0
  139. package/dist/components/dropdown-menu.js.map +1 -0
  140. package/dist/components/empty-state.cjs +94 -0
  141. package/dist/components/empty-state.cjs.map +1 -0
  142. package/dist/components/empty-state.d.cts +19 -0
  143. package/dist/components/empty-state.d.ts +19 -0
  144. package/dist/components/empty-state.js +57 -0
  145. package/dist/components/empty-state.js.map +1 -0
  146. package/dist/components/file-input.cjs +135 -0
  147. package/dist/components/file-input.cjs.map +1 -0
  148. package/dist/components/file-input.d.cts +13 -0
  149. package/dist/components/file-input.d.ts +13 -0
  150. package/dist/components/file-input.js +101 -0
  151. package/dist/components/file-input.js.map +1 -0
  152. package/dist/components/form.cjs +256 -0
  153. package/dist/components/form.cjs.map +1 -0
  154. package/dist/components/form.d.cts +34 -0
  155. package/dist/components/form.d.ts +34 -0
  156. package/dist/components/form.js +218 -0
  157. package/dist/components/form.js.map +1 -0
  158. package/dist/components/hover-card.cjs +72 -0
  159. package/dist/components/hover-card.cjs.map +1 -0
  160. package/dist/components/hover-card.d.cts +8 -0
  161. package/dist/components/hover-card.d.ts +8 -0
  162. package/dist/components/hover-card.js +35 -0
  163. package/dist/components/hover-card.js.map +1 -0
  164. package/dist/components/icon/bell-icon.cjs +72 -0
  165. package/dist/components/icon/bell-icon.cjs.map +1 -0
  166. package/dist/components/icon/bell-icon.d.cts +9 -0
  167. package/dist/components/icon/bell-icon.d.ts +9 -0
  168. package/dist/components/icon/bell-icon.js +47 -0
  169. package/dist/components/icon/bell-icon.js.map +1 -0
  170. package/dist/components/icon/boxicons-dashboard-icon.cjs +37 -0
  171. package/dist/components/icon/boxicons-dashboard-icon.cjs.map +1 -0
  172. package/dist/components/icon/boxicons-dashboard-icon.d.cts +7 -0
  173. package/dist/components/icon/boxicons-dashboard-icon.d.ts +7 -0
  174. package/dist/components/icon/boxicons-dashboard-icon.js +12 -0
  175. package/dist/components/icon/boxicons-dashboard-icon.js.map +1 -0
  176. package/dist/components/icon/bx-user-x-icon.cjs +37 -0
  177. package/dist/components/icon/bx-user-x-icon.cjs.map +1 -0
  178. package/dist/components/icon/bx-user-x-icon.d.cts +7 -0
  179. package/dist/components/icon/bx-user-x-icon.d.ts +7 -0
  180. package/dist/components/icon/bx-user-x-icon.js +12 -0
  181. package/dist/components/icon/bx-user-x-icon.js.map +1 -0
  182. package/dist/components/icon/bytesize-upload-icon.cjs +64 -0
  183. package/dist/components/icon/bytesize-upload-icon.cjs.map +1 -0
  184. package/dist/components/icon/bytesize-upload-icon.d.cts +7 -0
  185. package/dist/components/icon/bytesize-upload-icon.d.ts +7 -0
  186. package/dist/components/icon/bytesize-upload-icon.js +39 -0
  187. package/dist/components/icon/bytesize-upload-icon.js.map +1 -0
  188. package/dist/components/icon/clarity-notification-line-icon.cjs +37 -0
  189. package/dist/components/icon/clarity-notification-line-icon.cjs.map +1 -0
  190. package/dist/components/icon/clarity-notification-line-icon.d.cts +7 -0
  191. package/dist/components/icon/clarity-notification-line-icon.d.ts +7 -0
  192. package/dist/components/icon/clarity-notification-line-icon.js +12 -0
  193. package/dist/components/icon/clarity-notification-line-icon.js.map +1 -0
  194. package/dist/components/icon/ep-setting-icon.cjs +37 -0
  195. package/dist/components/icon/ep-setting-icon.cjs.map +1 -0
  196. package/dist/components/icon/ep-setting-icon.d.cts +7 -0
  197. package/dist/components/icon/ep-setting-icon.d.ts +7 -0
  198. package/dist/components/icon/ep-setting-icon.js +12 -0
  199. package/dist/components/icon/ep-setting-icon.js.map +1 -0
  200. package/dist/components/icon/eva-attach-fill-icon.cjs +62 -0
  201. package/dist/components/icon/eva-attach-fill-icon.cjs.map +1 -0
  202. package/dist/components/icon/eva-attach-fill-icon.d.cts +7 -0
  203. package/dist/components/icon/eva-attach-fill-icon.d.ts +7 -0
  204. package/dist/components/icon/eva-attach-fill-icon.js +37 -0
  205. package/dist/components/icon/eva-attach-fill-icon.js.map +1 -0
  206. package/dist/components/icon/grommet-icons-upgrade-icon.cjs +37 -0
  207. package/dist/components/icon/grommet-icons-upgrade-icon.cjs.map +1 -0
  208. package/dist/components/icon/grommet-icons-upgrade-icon.d.cts +7 -0
  209. package/dist/components/icon/grommet-icons-upgrade-icon.d.ts +7 -0
  210. package/dist/components/icon/grommet-icons-upgrade-icon.js +12 -0
  211. package/dist/components/icon/grommet-icons-upgrade-icon.js.map +1 -0
  212. package/dist/components/icon/ic-round-work-outline-icon.cjs +37 -0
  213. package/dist/components/icon/ic-round-work-outline-icon.cjs.map +1 -0
  214. package/dist/components/icon/ic-round-work-outline-icon.d.cts +7 -0
  215. package/dist/components/icon/ic-round-work-outline-icon.d.ts +7 -0
  216. package/dist/components/icon/ic-round-work-outline-icon.js +12 -0
  217. package/dist/components/icon/ic-round-work-outline-icon.js.map +1 -0
  218. package/dist/components/icon/icon-ai-line-icon.cjs +37 -0
  219. package/dist/components/icon/icon-ai-line-icon.cjs.map +1 -0
  220. package/dist/components/icon/icon-ai-line-icon.d.cts +7 -0
  221. package/dist/components/icon/icon-ai-line-icon.d.ts +7 -0
  222. package/dist/components/icon/icon-ai-line-icon.js +12 -0
  223. package/dist/components/icon/icon-ai-line-icon.js.map +1 -0
  224. package/dist/components/icon/icon-calender-icon.cjs +37 -0
  225. package/dist/components/icon/icon-calender-icon.cjs.map +1 -0
  226. package/dist/components/icon/icon-calender-icon.d.cts +7 -0
  227. package/dist/components/icon/icon-calender-icon.d.ts +7 -0
  228. package/dist/components/icon/icon-calender-icon.js +12 -0
  229. package/dist/components/icon/icon-calender-icon.js.map +1 -0
  230. package/dist/components/icon/icon-close-icon.cjs +37 -0
  231. package/dist/components/icon/icon-close-icon.cjs.map +1 -0
  232. package/dist/components/icon/icon-close-icon.d.cts +7 -0
  233. package/dist/components/icon/icon-close-icon.d.ts +7 -0
  234. package/dist/components/icon/icon-close-icon.js +12 -0
  235. package/dist/components/icon/icon-close-icon.js.map +1 -0
  236. package/dist/components/icon/icon-delete-icon.cjs +37 -0
  237. package/dist/components/icon/icon-delete-icon.cjs.map +1 -0
  238. package/dist/components/icon/icon-delete-icon.d.cts +7 -0
  239. package/dist/components/icon/icon-delete-icon.d.ts +7 -0
  240. package/dist/components/icon/icon-delete-icon.js +12 -0
  241. package/dist/components/icon/icon-delete-icon.js.map +1 -0
  242. package/dist/components/icon/icon-download-filled-icon.cjs +37 -0
  243. package/dist/components/icon/icon-download-filled-icon.cjs.map +1 -0
  244. package/dist/components/icon/icon-download-filled-icon.d.cts +7 -0
  245. package/dist/components/icon/icon-download-filled-icon.d.ts +7 -0
  246. package/dist/components/icon/icon-download-filled-icon.js +12 -0
  247. package/dist/components/icon/icon-download-filled-icon.js.map +1 -0
  248. package/dist/components/icon/icon-edit-icon.cjs +38 -0
  249. package/dist/components/icon/icon-edit-icon.cjs.map +1 -0
  250. package/dist/components/icon/icon-edit-icon.d.cts +7 -0
  251. package/dist/components/icon/icon-edit-icon.d.ts +7 -0
  252. package/dist/components/icon/icon-edit-icon.js +13 -0
  253. package/dist/components/icon/icon-edit-icon.js.map +1 -0
  254. package/dist/components/icon/icon-help-icon.cjs +37 -0
  255. package/dist/components/icon/icon-help-icon.cjs.map +1 -0
  256. package/dist/components/icon/icon-help-icon.d.cts +7 -0
  257. package/dist/components/icon/icon-help-icon.d.ts +7 -0
  258. package/dist/components/icon/icon-help-icon.js +12 -0
  259. package/dist/components/icon/icon-help-icon.js.map +1 -0
  260. package/dist/components/icon/icon-info-line-icon.cjs +37 -0
  261. package/dist/components/icon/icon-info-line-icon.cjs.map +1 -0
  262. package/dist/components/icon/icon-info-line-icon.d.cts +7 -0
  263. package/dist/components/icon/icon-info-line-icon.d.ts +7 -0
  264. package/dist/components/icon/icon-info-line-icon.js +12 -0
  265. package/dist/components/icon/icon-info-line-icon.js.map +1 -0
  266. package/dist/components/icon/icon-search-icon.cjs +37 -0
  267. package/dist/components/icon/icon-search-icon.cjs.map +1 -0
  268. package/dist/components/icon/icon-search-icon.d.cts +7 -0
  269. package/dist/components/icon/icon-search-icon.d.ts +7 -0
  270. package/dist/components/icon/icon-search-icon.js +12 -0
  271. package/dist/components/icon/icon-search-icon.js.map +1 -0
  272. package/dist/components/icon/icon-security-icon.cjs +37 -0
  273. package/dist/components/icon/icon-security-icon.cjs.map +1 -0
  274. package/dist/components/icon/icon-security-icon.d.cts +7 -0
  275. package/dist/components/icon/icon-security-icon.d.ts +7 -0
  276. package/dist/components/icon/icon-security-icon.js +12 -0
  277. package/dist/components/icon/icon-security-icon.js.map +1 -0
  278. package/dist/components/icon/icon-upload-icon.cjs +37 -0
  279. package/dist/components/icon/icon-upload-icon.cjs.map +1 -0
  280. package/dist/components/icon/icon-upload-icon.d.cts +7 -0
  281. package/dist/components/icon/icon-upload-icon.d.ts +7 -0
  282. package/dist/components/icon/icon-upload-icon.js +12 -0
  283. package/dist/components/icon/icon-upload-icon.js.map +1 -0
  284. package/dist/components/icon/icon-user-icon.cjs +38 -0
  285. package/dist/components/icon/icon-user-icon.cjs.map +1 -0
  286. package/dist/components/icon/icon-user-icon.d.cts +7 -0
  287. package/dist/components/icon/icon-user-icon.d.ts +7 -0
  288. package/dist/components/icon/icon-user-icon.js +13 -0
  289. package/dist/components/icon/icon-user-icon.js.map +1 -0
  290. package/dist/components/icon/icon-view-outline-icon.cjs +38 -0
  291. package/dist/components/icon/icon-view-outline-icon.cjs.map +1 -0
  292. package/dist/components/icon/icon-view-outline-icon.d.cts +7 -0
  293. package/dist/components/icon/icon-view-outline-icon.d.ts +7 -0
  294. package/dist/components/icon/icon-view-outline-icon.js +13 -0
  295. package/dist/components/icon/icon-view-outline-icon.js.map +1 -0
  296. package/dist/components/icon/iconamoon-arrow-down2-icon.cjs +37 -0
  297. package/dist/components/icon/iconamoon-arrow-down2-icon.cjs.map +1 -0
  298. package/dist/components/icon/iconamoon-arrow-down2-icon.d.cts +7 -0
  299. package/dist/components/icon/iconamoon-arrow-down2-icon.d.ts +7 -0
  300. package/dist/components/icon/iconamoon-arrow-down2-icon.js +12 -0
  301. package/dist/components/icon/iconamoon-arrow-down2-icon.js.map +1 -0
  302. package/dist/components/icon/iconamoon-arrow-left1-icon.cjs +37 -0
  303. package/dist/components/icon/iconamoon-arrow-left1-icon.cjs.map +1 -0
  304. package/dist/components/icon/iconamoon-arrow-left1-icon.d.cts +7 -0
  305. package/dist/components/icon/iconamoon-arrow-left1-icon.d.ts +7 -0
  306. package/dist/components/icon/iconamoon-arrow-left1-icon.js +12 -0
  307. package/dist/components/icon/iconamoon-arrow-left1-icon.js.map +1 -0
  308. package/dist/components/icon/iconamoon-arrow-left2-duotone-icon.cjs +37 -0
  309. package/dist/components/icon/iconamoon-arrow-left2-duotone-icon.cjs.map +1 -0
  310. package/dist/components/icon/iconamoon-arrow-left2-duotone-icon.d.cts +7 -0
  311. package/dist/components/icon/iconamoon-arrow-left2-duotone-icon.d.ts +7 -0
  312. package/dist/components/icon/iconamoon-arrow-left2-duotone-icon.js +12 -0
  313. package/dist/components/icon/iconamoon-arrow-left2-duotone-icon.js.map +1 -0
  314. package/dist/components/icon/iconamoon-arrow-right2-icon.cjs +37 -0
  315. package/dist/components/icon/iconamoon-arrow-right2-icon.cjs.map +1 -0
  316. package/dist/components/icon/iconamoon-arrow-right2-icon.d.cts +7 -0
  317. package/dist/components/icon/iconamoon-arrow-right2-icon.d.ts +7 -0
  318. package/dist/components/icon/iconamoon-arrow-right2-icon.js +12 -0
  319. package/dist/components/icon/iconamoon-arrow-right2-icon.js.map +1 -0
  320. package/dist/components/icon/iconamoon-arrow-up2-duotone-icon.cjs +37 -0
  321. package/dist/components/icon/iconamoon-arrow-up2-duotone-icon.cjs.map +1 -0
  322. package/dist/components/icon/iconamoon-arrow-up2-duotone-icon.d.cts +7 -0
  323. package/dist/components/icon/iconamoon-arrow-up2-duotone-icon.d.ts +7 -0
  324. package/dist/components/icon/iconamoon-arrow-up2-duotone-icon.js +12 -0
  325. package/dist/components/icon/iconamoon-arrow-up2-duotone-icon.js.map +1 -0
  326. package/dist/components/icon/iconoir-bell-notification-icon.cjs +64 -0
  327. package/dist/components/icon/iconoir-bell-notification-icon.cjs.map +1 -0
  328. package/dist/components/icon/iconoir-bell-notification-icon.d.cts +7 -0
  329. package/dist/components/icon/iconoir-bell-notification-icon.d.ts +7 -0
  330. package/dist/components/icon/iconoir-bell-notification-icon.js +39 -0
  331. package/dist/components/icon/iconoir-bell-notification-icon.js.map +1 -0
  332. package/dist/components/icon/icons-menu-dots16-icon.cjs +37 -0
  333. package/dist/components/icon/icons-menu-dots16-icon.cjs.map +1 -0
  334. package/dist/components/icon/icons-menu-dots16-icon.d.cts +7 -0
  335. package/dist/components/icon/icons-menu-dots16-icon.d.ts +7 -0
  336. package/dist/components/icon/icons-menu-dots16-icon.js +12 -0
  337. package/dist/components/icon/icons-menu-dots16-icon.js.map +1 -0
  338. package/dist/components/icon/icons8-minus-icon.cjs +37 -0
  339. package/dist/components/icon/icons8-minus-icon.cjs.map +1 -0
  340. package/dist/components/icon/icons8-minus-icon.d.cts +7 -0
  341. package/dist/components/icon/icons8-minus-icon.d.ts +7 -0
  342. package/dist/components/icon/icons8-minus-icon.js +12 -0
  343. package/dist/components/icon/icons8-minus-icon.js.map +1 -0
  344. package/dist/components/icon/index.cjs +991 -0
  345. package/dist/components/icon/index.cjs.map +1 -0
  346. package/dist/components/icon/index.d.cts +114 -0
  347. package/dist/components/icon/index.d.ts +114 -0
  348. package/dist/components/icon/index.js +911 -0
  349. package/dist/components/icon/index.js.map +1 -0
  350. package/dist/components/icon/ion-finger-print-icon.cjs +83 -0
  351. package/dist/components/icon/ion-finger-print-icon.cjs.map +1 -0
  352. package/dist/components/icon/ion-finger-print-icon.d.cts +7 -0
  353. package/dist/components/icon/ion-finger-print-icon.d.ts +7 -0
  354. package/dist/components/icon/ion-finger-print-icon.js +58 -0
  355. package/dist/components/icon/ion-finger-print-icon.js.map +1 -0
  356. package/dist/components/icon/ion-warning-outline-icon.cjs +39 -0
  357. package/dist/components/icon/ion-warning-outline-icon.cjs.map +1 -0
  358. package/dist/components/icon/ion-warning-outline-icon.d.cts +7 -0
  359. package/dist/components/icon/ion-warning-outline-icon.d.ts +7 -0
  360. package/dist/components/icon/ion-warning-outline-icon.js +14 -0
  361. package/dist/components/icon/ion-warning-outline-icon.js.map +1 -0
  362. package/dist/components/icon/library-icon-props.cjs +19 -0
  363. package/dist/components/icon/library-icon-props.cjs.map +1 -0
  364. package/dist/components/icon/library-icon-props.d.cts +8 -0
  365. package/dist/components/icon/library-icon-props.d.ts +8 -0
  366. package/dist/components/icon/library-icon-props.js +1 -0
  367. package/dist/components/icon/library-icon-props.js.map +1 -0
  368. package/dist/components/icon/lucide-file-edit-icon.cjs +38 -0
  369. package/dist/components/icon/lucide-file-edit-icon.cjs.map +1 -0
  370. package/dist/components/icon/lucide-file-edit-icon.d.cts +7 -0
  371. package/dist/components/icon/lucide-file-edit-icon.d.ts +7 -0
  372. package/dist/components/icon/lucide-file-edit-icon.js +13 -0
  373. package/dist/components/icon/lucide-file-edit-icon.js.map +1 -0
  374. package/dist/components/icon/lucide-user-check-icon.cjs +38 -0
  375. package/dist/components/icon/lucide-user-check-icon.cjs.map +1 -0
  376. package/dist/components/icon/lucide-user-check-icon.d.cts +7 -0
  377. package/dist/components/icon/lucide-user-check-icon.d.ts +7 -0
  378. package/dist/components/icon/lucide-user-check-icon.js +13 -0
  379. package/dist/components/icon/lucide-user-check-icon.js.map +1 -0
  380. package/dist/components/icon/lucide-users-round-icon.cjs +39 -0
  381. package/dist/components/icon/lucide-users-round-icon.cjs.map +1 -0
  382. package/dist/components/icon/lucide-users-round-icon.d.cts +7 -0
  383. package/dist/components/icon/lucide-users-round-icon.d.ts +7 -0
  384. package/dist/components/icon/lucide-users-round-icon.js +14 -0
  385. package/dist/components/icon/lucide-users-round-icon.js.map +1 -0
  386. package/dist/components/icon/mage-dashboard-cross-icon.cjs +38 -0
  387. package/dist/components/icon/mage-dashboard-cross-icon.cjs.map +1 -0
  388. package/dist/components/icon/mage-dashboard-cross-icon.d.cts +7 -0
  389. package/dist/components/icon/mage-dashboard-cross-icon.d.ts +7 -0
  390. package/dist/components/icon/mage-dashboard-cross-icon.js +13 -0
  391. package/dist/components/icon/mage-dashboard-cross-icon.js.map +1 -0
  392. package/dist/components/icon/material-symbols-help-outline-rounded-icon.cjs +62 -0
  393. package/dist/components/icon/material-symbols-help-outline-rounded-icon.cjs.map +1 -0
  394. package/dist/components/icon/material-symbols-help-outline-rounded-icon.d.cts +7 -0
  395. package/dist/components/icon/material-symbols-help-outline-rounded-icon.d.ts +7 -0
  396. package/dist/components/icon/material-symbols-help-outline-rounded-icon.js +37 -0
  397. package/dist/components/icon/material-symbols-help-outline-rounded-icon.js.map +1 -0
  398. package/dist/components/icon/material-symbols-light-travel-icon.cjs +62 -0
  399. package/dist/components/icon/material-symbols-light-travel-icon.cjs.map +1 -0
  400. package/dist/components/icon/material-symbols-light-travel-icon.d.cts +7 -0
  401. package/dist/components/icon/material-symbols-light-travel-icon.d.ts +7 -0
  402. package/dist/components/icon/material-symbols-light-travel-icon.js +37 -0
  403. package/dist/components/icon/material-symbols-light-travel-icon.js.map +1 -0
  404. package/dist/components/icon/material-symbols-task-outline-icon.cjs +37 -0
  405. package/dist/components/icon/material-symbols-task-outline-icon.cjs.map +1 -0
  406. package/dist/components/icon/material-symbols-task-outline-icon.d.cts +7 -0
  407. package/dist/components/icon/material-symbols-task-outline-icon.d.ts +7 -0
  408. package/dist/components/icon/material-symbols-task-outline-icon.js +12 -0
  409. package/dist/components/icon/material-symbols-task-outline-icon.js.map +1 -0
  410. package/dist/components/icon/mingcute-announcement-line-icon.cjs +64 -0
  411. package/dist/components/icon/mingcute-announcement-line-icon.cjs.map +1 -0
  412. package/dist/components/icon/mingcute-announcement-line-icon.d.cts +7 -0
  413. package/dist/components/icon/mingcute-announcement-line-icon.d.ts +7 -0
  414. package/dist/components/icon/mingcute-announcement-line-icon.js +39 -0
  415. package/dist/components/icon/mingcute-announcement-line-icon.js.map +1 -0
  416. package/dist/components/icon/mynaui-lock-icon.cjs +37 -0
  417. package/dist/components/icon/mynaui-lock-icon.cjs.map +1 -0
  418. package/dist/components/icon/mynaui-lock-icon.d.cts +7 -0
  419. package/dist/components/icon/mynaui-lock-icon.d.ts +7 -0
  420. package/dist/components/icon/mynaui-lock-icon.js +12 -0
  421. package/dist/components/icon/mynaui-lock-icon.js.map +1 -0
  422. package/dist/components/icon/qlementine-icons-success-12-icon.cjs +71 -0
  423. package/dist/components/icon/qlementine-icons-success-12-icon.cjs.map +1 -0
  424. package/dist/components/icon/qlementine-icons-success-12-icon.d.cts +7 -0
  425. package/dist/components/icon/qlementine-icons-success-12-icon.d.ts +7 -0
  426. package/dist/components/icon/qlementine-icons-success-12-icon.js +46 -0
  427. package/dist/components/icon/qlementine-icons-success-12-icon.js.map +1 -0
  428. package/dist/components/icon/solar-calendar-linear-icon.cjs +39 -0
  429. package/dist/components/icon/solar-calendar-linear-icon.cjs.map +1 -0
  430. package/dist/components/icon/solar-calendar-linear-icon.d.cts +7 -0
  431. package/dist/components/icon/solar-calendar-linear-icon.d.ts +7 -0
  432. package/dist/components/icon/solar-calendar-linear-icon.js +14 -0
  433. package/dist/components/icon/solar-calendar-linear-icon.js.map +1 -0
  434. package/dist/components/icon/stash-integrations-icon.cjs +37 -0
  435. package/dist/components/icon/stash-integrations-icon.cjs.map +1 -0
  436. package/dist/components/icon/stash-integrations-icon.d.cts +7 -0
  437. package/dist/components/icon/stash-integrations-icon.d.ts +7 -0
  438. package/dist/components/icon/stash-integrations-icon.js +12 -0
  439. package/dist/components/icon/stash-integrations-icon.js.map +1 -0
  440. package/dist/components/icon/streamline-ultimate-performance-increase-icon.cjs +37 -0
  441. package/dist/components/icon/streamline-ultimate-performance-increase-icon.cjs.map +1 -0
  442. package/dist/components/icon/streamline-ultimate-performance-increase-icon.d.cts +7 -0
  443. package/dist/components/icon/streamline-ultimate-performance-increase-icon.d.ts +7 -0
  444. package/dist/components/icon/streamline-ultimate-performance-increase-icon.js +12 -0
  445. package/dist/components/icon/streamline-ultimate-performance-increase-icon.js.map +1 -0
  446. package/dist/components/icon/success-icon.cjs +38 -0
  447. package/dist/components/icon/success-icon.cjs.map +1 -0
  448. package/dist/components/icon/success-icon.d.cts +7 -0
  449. package/dist/components/icon/success-icon.d.ts +7 -0
  450. package/dist/components/icon/success-icon.js +13 -0
  451. package/dist/components/icon/success-icon.js.map +1 -0
  452. package/dist/components/icon/tabler-arrow-down-icon.cjs +37 -0
  453. package/dist/components/icon/tabler-arrow-down-icon.cjs.map +1 -0
  454. package/dist/components/icon/tabler-arrow-down-icon.d.cts +7 -0
  455. package/dist/components/icon/tabler-arrow-down-icon.d.ts +7 -0
  456. package/dist/components/icon/tabler-arrow-down-icon.js +12 -0
  457. package/dist/components/icon/tabler-arrow-down-icon.js.map +1 -0
  458. package/dist/components/icon/tabler-arrow-right-icon.cjs +37 -0
  459. package/dist/components/icon/tabler-arrow-right-icon.cjs.map +1 -0
  460. package/dist/components/icon/tabler-arrow-right-icon.d.cts +7 -0
  461. package/dist/components/icon/tabler-arrow-right-icon.d.ts +7 -0
  462. package/dist/components/icon/tabler-arrow-right-icon.js +12 -0
  463. package/dist/components/icon/tabler-arrow-right-icon.js.map +1 -0
  464. package/dist/components/icon/tabler-arrow-up-icon.cjs +37 -0
  465. package/dist/components/icon/tabler-arrow-up-icon.cjs.map +1 -0
  466. package/dist/components/icon/tabler-arrow-up-icon.d.cts +7 -0
  467. package/dist/components/icon/tabler-arrow-up-icon.d.ts +7 -0
  468. package/dist/components/icon/tabler-arrow-up-icon.js +12 -0
  469. package/dist/components/icon/tabler-arrow-up-icon.js.map +1 -0
  470. package/dist/components/icon/tabler-clock-icon.cjs +75 -0
  471. package/dist/components/icon/tabler-clock-icon.cjs.map +1 -0
  472. package/dist/components/icon/tabler-clock-icon.d.cts +7 -0
  473. package/dist/components/icon/tabler-clock-icon.d.ts +7 -0
  474. package/dist/components/icon/tabler-clock-icon.js +50 -0
  475. package/dist/components/icon/tabler-clock-icon.js.map +1 -0
  476. package/dist/components/icon/uil-arrow-growth-icon.cjs +37 -0
  477. package/dist/components/icon/uil-arrow-growth-icon.cjs.map +1 -0
  478. package/dist/components/icon/uil-arrow-growth-icon.d.cts +7 -0
  479. package/dist/components/icon/uil-arrow-growth-icon.d.ts +7 -0
  480. package/dist/components/icon/uil-arrow-growth-icon.js +12 -0
  481. package/dist/components/icon/uil-arrow-growth-icon.js.map +1 -0
  482. package/dist/components/icon/uil-credit-card-icon.cjs +37 -0
  483. package/dist/components/icon/uil-credit-card-icon.cjs.map +1 -0
  484. package/dist/components/icon/uil-credit-card-icon.d.cts +7 -0
  485. package/dist/components/icon/uil-credit-card-icon.d.ts +7 -0
  486. package/dist/components/icon/uil-credit-card-icon.js +12 -0
  487. package/dist/components/icon/uil-credit-card-icon.js.map +1 -0
  488. package/dist/components/icon/uil-graph-bar-icon.cjs +37 -0
  489. package/dist/components/icon/uil-graph-bar-icon.cjs.map +1 -0
  490. package/dist/components/icon/uil-graph-bar-icon.d.cts +7 -0
  491. package/dist/components/icon/uil-graph-bar-icon.d.ts +7 -0
  492. package/dist/components/icon/uil-graph-bar-icon.js +12 -0
  493. package/dist/components/icon/uil-graph-bar-icon.js.map +1 -0
  494. package/dist/components/input-group.cjs +107 -0
  495. package/dist/components/input-group.cjs.map +1 -0
  496. package/dist/components/input-group.d.cts +17 -0
  497. package/dist/components/input-group.d.ts +17 -0
  498. package/dist/components/input-group.js +71 -0
  499. package/dist/components/input-group.js.map +1 -0
  500. package/dist/components/input-otp.cjs +127 -0
  501. package/dist/components/input-otp.cjs.map +1 -0
  502. package/dist/components/input-otp.d.cts +40 -0
  503. package/dist/components/input-otp.d.ts +40 -0
  504. package/dist/components/input-otp.js +89 -0
  505. package/dist/components/input-otp.js.map +1 -0
  506. package/dist/components/input.cjs +231 -0
  507. package/dist/components/input.cjs.map +1 -0
  508. package/dist/components/input.d.cts +19 -0
  509. package/dist/components/input.d.ts +19 -0
  510. package/dist/components/input.js +195 -0
  511. package/dist/components/input.js.map +1 -0
  512. package/dist/components/item.cjs +150 -0
  513. package/dist/components/item.cjs.map +1 -0
  514. package/dist/components/item.d.cts +17 -0
  515. package/dist/components/item.d.ts +17 -0
  516. package/dist/components/item.js +109 -0
  517. package/dist/components/item.js.map +1 -0
  518. package/dist/components/label.cjs +124 -0
  519. package/dist/components/label.cjs.map +1 -0
  520. package/dist/components/label.d.cts +14 -0
  521. package/dist/components/label.d.ts +14 -0
  522. package/dist/components/label.js +89 -0
  523. package/dist/components/label.js.map +1 -0
  524. package/dist/components/menubar.cjs +219 -0
  525. package/dist/components/menubar.cjs.map +1 -0
  526. package/dist/components/menubar.d.cts +31 -0
  527. package/dist/components/menubar.d.ts +31 -0
  528. package/dist/components/menubar.js +169 -0
  529. package/dist/components/menubar.js.map +1 -0
  530. package/dist/components/navigation-menu.cjs +154 -0
  531. package/dist/components/navigation-menu.cjs.map +1 -0
  532. package/dist/components/navigation-menu.d.cts +15 -0
  533. package/dist/components/navigation-menu.d.ts +15 -0
  534. package/dist/components/navigation-menu.js +111 -0
  535. package/dist/components/navigation-menu.js.map +1 -0
  536. package/dist/components/pagination.cjs +253 -0
  537. package/dist/components/pagination.cjs.map +1 -0
  538. package/dist/components/pagination.d.cts +43 -0
  539. package/dist/components/pagination.d.ts +43 -0
  540. package/dist/components/pagination.js +211 -0
  541. package/dist/components/pagination.js.map +1 -0
  542. package/dist/components/popover.cjs +72 -0
  543. package/dist/components/popover.cjs.map +1 -0
  544. package/dist/components/popover.d.cts +8 -0
  545. package/dist/components/popover.d.ts +8 -0
  546. package/dist/components/popover.js +35 -0
  547. package/dist/components/popover.js.map +1 -0
  548. package/dist/components/progress.cjs +151 -0
  549. package/dist/components/progress.cjs.map +1 -0
  550. package/dist/components/progress.d.cts +17 -0
  551. package/dist/components/progress.d.ts +17 -0
  552. package/dist/components/progress.js +116 -0
  553. package/dist/components/progress.js.map +1 -0
  554. package/dist/components/radio-group.cjs +81 -0
  555. package/dist/components/radio-group.cjs.map +1 -0
  556. package/dist/components/radio-group.d.cts +7 -0
  557. package/dist/components/radio-group.d.ts +7 -0
  558. package/dist/components/radio-group.js +45 -0
  559. package/dist/components/radio-group.js.map +1 -0
  560. package/dist/components/resizable.cjs +85 -0
  561. package/dist/components/resizable.cjs.map +1 -0
  562. package/dist/components/resizable.d.cts +34 -0
  563. package/dist/components/resizable.d.ts +34 -0
  564. package/dist/components/resizable.js +48 -0
  565. package/dist/components/resizable.js.map +1 -0
  566. package/dist/components/scroll-area.cjs +85 -0
  567. package/dist/components/scroll-area.cjs.map +1 -0
  568. package/dist/components/scroll-area.d.cts +11 -0
  569. package/dist/components/scroll-area.d.ts +11 -0
  570. package/dist/components/scroll-area.js +49 -0
  571. package/dist/components/scroll-area.js.map +1 -0
  572. package/dist/components/select.cjs +172 -0
  573. package/dist/components/select.cjs.map +1 -0
  574. package/dist/components/select.d.cts +15 -0
  575. package/dist/components/select.d.ts +15 -0
  576. package/dist/components/select.js +128 -0
  577. package/dist/components/select.js.map +1 -0
  578. package/dist/components/separator.cjs +85 -0
  579. package/dist/components/separator.cjs.map +1 -0
  580. package/dist/components/separator.d.cts +9 -0
  581. package/dist/components/separator.d.ts +9 -0
  582. package/dist/components/separator.js +50 -0
  583. package/dist/components/separator.js.map +1 -0
  584. package/dist/components/sheet.cjs +162 -0
  585. package/dist/components/sheet.cjs.map +1 -0
  586. package/dist/components/sheet.d.cts +30 -0
  587. package/dist/components/sheet.d.ts +30 -0
  588. package/dist/components/sheet.js +118 -0
  589. package/dist/components/sheet.js.map +1 -0
  590. package/dist/components/sidebar.cjs +523 -0
  591. package/dist/components/sidebar.cjs.map +1 -0
  592. package/dist/components/sidebar.d.cts +45 -0
  593. package/dist/components/sidebar.d.ts +45 -0
  594. package/dist/components/sidebar.js +475 -0
  595. package/dist/components/sidebar.js.map +1 -0
  596. package/dist/components/skeleton.cjs +55 -0
  597. package/dist/components/skeleton.cjs.map +1 -0
  598. package/dist/components/skeleton.d.cts +9 -0
  599. package/dist/components/skeleton.d.ts +9 -0
  600. package/dist/components/skeleton.js +28 -0
  601. package/dist/components/skeleton.js.map +1 -0
  602. package/dist/components/slider.cjs +77 -0
  603. package/dist/components/slider.cjs.map +1 -0
  604. package/dist/components/slider.d.cts +6 -0
  605. package/dist/components/slider.d.ts +6 -0
  606. package/dist/components/slider.js +42 -0
  607. package/dist/components/slider.js.map +1 -0
  608. package/dist/components/sonner.cjs +56 -0
  609. package/dist/components/sonner.cjs.map +1 -0
  610. package/dist/components/sonner.d.cts +8 -0
  611. package/dist/components/sonner.d.ts +8 -0
  612. package/dist/components/sonner.js +30 -0
  613. package/dist/components/sonner.js.map +1 -0
  614. package/dist/components/spinner.cjs +87 -0
  615. package/dist/components/spinner.cjs.map +1 -0
  616. package/dist/components/spinner.d.cts +12 -0
  617. package/dist/components/spinner.d.ts +12 -0
  618. package/dist/components/spinner.js +51 -0
  619. package/dist/components/spinner.js.map +1 -0
  620. package/dist/components/stepper.cjs +201 -0
  621. package/dist/components/stepper.cjs.map +1 -0
  622. package/dist/components/stepper.d.cts +20 -0
  623. package/dist/components/stepper.d.ts +20 -0
  624. package/dist/components/stepper.js +165 -0
  625. package/dist/components/stepper.js.map +1 -0
  626. package/dist/components/switch.cjs +99 -0
  627. package/dist/components/switch.cjs.map +1 -0
  628. package/dist/components/switch.d.cts +14 -0
  629. package/dist/components/switch.d.ts +14 -0
  630. package/dist/components/switch.js +63 -0
  631. package/dist/components/switch.js.map +1 -0
  632. package/dist/components/table.cjs +97 -0
  633. package/dist/components/table.cjs.map +1 -0
  634. package/dist/components/table.d.cts +12 -0
  635. package/dist/components/table.d.ts +12 -0
  636. package/dist/components/table.js +55 -0
  637. package/dist/components/table.js.map +1 -0
  638. package/dist/components/tabs.cjs +95 -0
  639. package/dist/components/tabs.cjs.map +1 -0
  640. package/dist/components/tabs.d.cts +9 -0
  641. package/dist/components/tabs.d.ts +9 -0
  642. package/dist/components/tabs.js +57 -0
  643. package/dist/components/tabs.js.map +1 -0
  644. package/dist/components/textarea.cjs +84 -0
  645. package/dist/components/textarea.cjs.map +1 -0
  646. package/dist/components/textarea.d.cts +9 -0
  647. package/dist/components/textarea.d.ts +9 -0
  648. package/dist/components/textarea.js +49 -0
  649. package/dist/components/textarea.js.map +1 -0
  650. package/dist/components/theme-provider.cjs +39 -0
  651. package/dist/components/theme-provider.cjs.map +1 -0
  652. package/dist/components/theme-provider.d.cts +7 -0
  653. package/dist/components/theme-provider.d.ts +7 -0
  654. package/dist/components/theme-provider.js +14 -0
  655. package/dist/components/theme-provider.js.map +1 -0
  656. package/dist/components/toggle-group.cjs +122 -0
  657. package/dist/components/toggle-group.cjs.map +1 -0
  658. package/dist/components/toggle-group.d.cts +15 -0
  659. package/dist/components/toggle-group.d.ts +15 -0
  660. package/dist/components/toggle-group.js +86 -0
  661. package/dist/components/toggle-group.js.map +1 -0
  662. package/dist/components/toggle.cjs +84 -0
  663. package/dist/components/toggle.cjs.map +1 -0
  664. package/dist/components/toggle.d.cts +14 -0
  665. package/dist/components/toggle.d.ts +14 -0
  666. package/dist/components/toggle.js +48 -0
  667. package/dist/components/toggle.js.map +1 -0
  668. package/dist/components/tooltip.cjs +74 -0
  669. package/dist/components/tooltip.cjs.map +1 -0
  670. package/dist/components/tooltip.d.cts +9 -0
  671. package/dist/components/tooltip.d.ts +9 -0
  672. package/dist/components/tooltip.js +36 -0
  673. package/dist/components/tooltip.js.map +1 -0
  674. package/dist/components/typography.cjs +140 -0
  675. package/dist/components/typography.cjs.map +1 -0
  676. package/dist/components/typography.d.cts +24 -0
  677. package/dist/components/typography.d.ts +24 -0
  678. package/dist/components/typography.js +96 -0
  679. package/dist/components/typography.js.map +1 -0
  680. package/dist/index.cjs +5041 -0
  681. package/dist/index.cjs.map +1 -0
  682. package/dist/index.d.cts +112 -0
  683. package/dist/index.d.ts +112 -0
  684. package/dist/index.js +4734 -0
  685. package/dist/index.js.map +1 -0
  686. package/dist/lib/utils.cjs +35 -0
  687. package/dist/lib/utils.cjs.map +1 -0
  688. package/dist/lib/utils.d.cts +5 -0
  689. package/dist/lib/utils.d.ts +5 -0
  690. package/dist/lib/utils.js +10 -0
  691. package/dist/lib/utils.js.map +1 -0
  692. package/dist/styles.css +336 -0
  693. package/package.json +128 -0
package/dist/index.js ADDED
@@ -0,0 +1,4734 @@
1
+ // src/lib/utils.ts
2
+ import { clsx } from "clsx";
3
+ import { twMerge } from "tailwind-merge";
4
+ function cn(...inputs) {
5
+ return twMerge(clsx(inputs));
6
+ }
7
+
8
+ // src/components/button.tsx
9
+ import * as React from "react";
10
+ import { Slot } from "@radix-ui/react-slot";
11
+ import { cva } from "class-variance-authority";
12
+ import { Loader2 } from "lucide-react";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ var buttonVariants = cva(
15
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
16
+ {
17
+ variants: {
18
+ variant: {
19
+ default: "bg-primary text-primary-foreground hover:bg-primary-hover",
20
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
21
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
22
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover",
23
+ ghost: "hover:bg-accent hover:text-accent-foreground",
24
+ link: "text-primary underline-offset-4 hover:underline",
25
+ success: "bg-success text-success-foreground hover:bg-success-hover"
26
+ },
27
+ size: {
28
+ xs: "h-7 px-2.5 text-xs",
29
+ sm: "h-9 px-3",
30
+ default: "h-10 px-4 py-2",
31
+ lg: "h-11 px-8",
32
+ icon: "h-10 w-10",
33
+ "icon-sm": "h-8 w-8"
34
+ },
35
+ shape: {
36
+ default: "rounded-md",
37
+ rounded: "rounded-lg",
38
+ pill: "rounded-full",
39
+ square: "rounded-none"
40
+ }
41
+ },
42
+ defaultVariants: {
43
+ variant: "default",
44
+ size: "default",
45
+ shape: "default"
46
+ }
47
+ }
48
+ );
49
+ var Button = React.forwardRef(
50
+ ({
51
+ className,
52
+ variant,
53
+ size,
54
+ shape,
55
+ asChild = false,
56
+ loading = false,
57
+ prefixIcon,
58
+ suffixIcon,
59
+ children,
60
+ disabled,
61
+ ...props
62
+ }, ref) => {
63
+ const Comp = asChild ? Slot : "button";
64
+ const isDisabled = disabled || loading;
65
+ return /* @__PURE__ */ jsxs(
66
+ Comp,
67
+ {
68
+ className: cn(buttonVariants({ variant, size, shape, className })),
69
+ ref,
70
+ disabled: isDisabled,
71
+ ...props,
72
+ children: [
73
+ loading && /* @__PURE__ */ jsx(Loader2, { className: "animate-spin" }),
74
+ !loading && prefixIcon,
75
+ children,
76
+ suffixIcon
77
+ ]
78
+ }
79
+ );
80
+ }
81
+ );
82
+ Button.displayName = "Button";
83
+
84
+ // src/components/input.tsx
85
+ import * as React2 from "react";
86
+ import { cva as cva2 } from "class-variance-authority";
87
+ import { Eye, EyeOff, X } from "lucide-react";
88
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
89
+ var inputVariants = cva2(
90
+ "flex w-full rounded-md border bg-background transition-[color,border-color,box-shadow] duration-150 file:border-0 file:bg-transparent file:font-medium file:text-foreground placeholder:text-muted-foreground focus-within:outline-none disabled:cursor-not-allowed disabled:opacity-50",
91
+ {
92
+ variants: {
93
+ variant: {
94
+ default: "border-input hover:border-muted-foreground focus-within:border-[var(--hc-primary-500)] focus-within:ring-[3px] focus-within:ring-[color-mix(in_srgb,var(--hc-primary-500)_22%,transparent)]",
95
+ error: "border-[var(--hc-color-destructive)] focus-within:border-[var(--hc-color-destructive)] focus-within:ring-[3px] focus-within:ring-[color-mix(in_srgb,var(--hc-color-destructive)_22%,transparent)]",
96
+ success: "border-[var(--hc-color-success)] focus-within:border-[var(--hc-color-success)] focus-within:ring-[3px] focus-within:ring-[color-mix(in_srgb,var(--hc-color-success)_22%,transparent)]"
97
+ },
98
+ inputSize: {
99
+ default: "h-10 px-3 py-2 text-sm",
100
+ sm: "h-8 px-2.5 py-1.5 text-xs",
101
+ lg: "h-12 px-4 py-3 text-base"
102
+ }
103
+ },
104
+ defaultVariants: {
105
+ variant: "default",
106
+ inputSize: "default"
107
+ }
108
+ }
109
+ );
110
+ var Input = React2.forwardRef(
111
+ ({
112
+ className,
113
+ type,
114
+ label,
115
+ hint,
116
+ variant = "default",
117
+ inputSize = "default",
118
+ leadingIcon,
119
+ trailingIcon,
120
+ clearable,
121
+ onClear,
122
+ disabled,
123
+ id,
124
+ value,
125
+ defaultValue,
126
+ onChange,
127
+ ...props
128
+ }, ref) => {
129
+ const inputId = id || React2.useId();
130
+ const isControlled = value !== void 0;
131
+ const [internalValue, setInternalValue] = React2.useState(defaultValue);
132
+ const innerRef = React2.useRef(null);
133
+ React2.useImperativeHandle(
134
+ ref,
135
+ () => innerRef.current,
136
+ []
137
+ );
138
+ const currentValue = isControlled ? value : internalValue;
139
+ const hasValue = currentValue !== void 0 && currentValue !== null && String(currentValue).length > 0;
140
+ const isPassword = type === "password";
141
+ const [showPassword, setShowPassword] = React2.useState(false);
142
+ const resolvedType = isPassword ? showPassword ? "text" : "password" : type;
143
+ const handleChange = (e) => {
144
+ if (!isControlled) {
145
+ setInternalValue(e.target.value);
146
+ }
147
+ onChange?.(e);
148
+ };
149
+ const handleClear = () => {
150
+ if (!isControlled) {
151
+ setInternalValue("");
152
+ }
153
+ const input = innerRef.current;
154
+ if (input) {
155
+ const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
156
+ window.HTMLInputElement.prototype,
157
+ "value"
158
+ )?.set;
159
+ nativeInputValueSetter?.call(input, "");
160
+ const event = new Event("input", { bubbles: true });
161
+ input.dispatchEvent(event);
162
+ input.focus();
163
+ }
164
+ onClear?.();
165
+ };
166
+ const showClearButton = clearable && hasValue && !isPassword && !disabled;
167
+ const showPasswordToggle = isPassword && !disabled;
168
+ const trailingSlots = [
169
+ showClearButton ? 1 : 0,
170
+ showPasswordToggle ? 1 : 0,
171
+ trailingIcon ? 1 : 0
172
+ ].reduce((a, b) => a + b, 0);
173
+ const inputPaddingEnd = trailingSlots >= 2 ? "pe-14" : trailingSlots === 1 ? "pe-8" : void 0;
174
+ return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-1.5", "data-slot": "input-root", children: [
175
+ label && /* @__PURE__ */ jsx2(
176
+ "label",
177
+ {
178
+ htmlFor: inputId,
179
+ className: cn(
180
+ "text-sm font-medium text-foreground",
181
+ disabled && "text-muted-foreground"
182
+ ),
183
+ children: label
184
+ }
185
+ ),
186
+ /* @__PURE__ */ jsxs2(
187
+ "div",
188
+ {
189
+ "data-slot": "input-wrapper",
190
+ className: cn(
191
+ inputVariants({ variant, inputSize }),
192
+ "relative flex items-center gap-2",
193
+ disabled && "cursor-not-allowed opacity-50",
194
+ className
195
+ ),
196
+ children: [
197
+ leadingIcon && /* @__PURE__ */ jsx2("span", { className: "shrink-0 text-muted-foreground", children: leadingIcon }),
198
+ /* @__PURE__ */ jsx2(
199
+ "input",
200
+ {
201
+ id: inputId,
202
+ type: resolvedType,
203
+ disabled,
204
+ className: cn(
205
+ "flex-1 min-w-0 bg-transparent outline-none text-inherit placeholder:text-muted-foreground disabled:cursor-not-allowed",
206
+ inputPaddingEnd
207
+ ),
208
+ ref: innerRef,
209
+ value: isControlled ? value : internalValue,
210
+ defaultValue: isControlled ? void 0 : void 0,
211
+ onChange: handleChange,
212
+ ...props
213
+ }
214
+ ),
215
+ (showClearButton || showPasswordToggle) && /* @__PURE__ */ jsxs2(
216
+ "span",
217
+ {
218
+ className: "pointer-events-none absolute end-2 top-1/2 -translate-y-1/2 flex items-center gap-1",
219
+ children: [
220
+ showClearButton && /* @__PURE__ */ jsx2(
221
+ "button",
222
+ {
223
+ type: "button",
224
+ "aria-label": "Clear",
225
+ onClick: handleClear,
226
+ tabIndex: -1,
227
+ className: "pointer-events-auto inline-flex size-4 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background",
228
+ children: /* @__PURE__ */ jsx2(X, { className: "size-4", "aria-hidden": "true" })
229
+ }
230
+ ),
231
+ showPasswordToggle && /* @__PURE__ */ jsx2(
232
+ "button",
233
+ {
234
+ type: "button",
235
+ "aria-label": showPassword ? "Hide password" : "Show password",
236
+ onClick: () => setShowPassword((s) => !s),
237
+ tabIndex: -1,
238
+ className: "pointer-events-auto inline-flex size-4 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background",
239
+ children: showPassword ? /* @__PURE__ */ jsx2(EyeOff, { className: "size-4", "aria-hidden": "true" }) : /* @__PURE__ */ jsx2(Eye, { className: "size-4", "aria-hidden": "true" })
240
+ }
241
+ )
242
+ ]
243
+ }
244
+ ),
245
+ trailingIcon && !showClearButton && !showPasswordToggle && /* @__PURE__ */ jsx2("span", { className: "shrink-0 text-muted-foreground", children: trailingIcon })
246
+ ]
247
+ }
248
+ ),
249
+ hint && /* @__PURE__ */ jsx2(
250
+ "p",
251
+ {
252
+ className: cn(
253
+ "text-xs",
254
+ variant === "default" && "text-muted-foreground",
255
+ variant === "error" && "text-destructive",
256
+ variant === "success" && "text-success"
257
+ ),
258
+ children: hint
259
+ }
260
+ )
261
+ ] });
262
+ }
263
+ );
264
+ Input.displayName = "Input";
265
+
266
+ // src/components/file-input.tsx
267
+ import * as React3 from "react";
268
+ import { CloudUpload } from "lucide-react";
269
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
270
+ var FileInput = React3.forwardRef(
271
+ ({ accept, maxSize = 15, onFileSelect, multiple = false, disabled = false, className, ...props }, ref) => {
272
+ const [isDragOver, setIsDragOver] = React3.useState(false);
273
+ const inputRef = React3.useRef(null);
274
+ const handleDragOver = (e) => {
275
+ e.preventDefault();
276
+ if (!disabled) setIsDragOver(true);
277
+ };
278
+ const handleDragLeave = () => setIsDragOver(false);
279
+ const handleDrop = (e) => {
280
+ e.preventDefault();
281
+ setIsDragOver(false);
282
+ if (disabled) return;
283
+ const files = Array.from(e.dataTransfer.files);
284
+ onFileSelect?.(files);
285
+ };
286
+ const handleClick = () => {
287
+ if (!disabled) inputRef.current?.click();
288
+ };
289
+ const handleKeyDown = (e) => {
290
+ if (disabled) return;
291
+ if (e.key === "Enter" || e.key === " ") {
292
+ e.preventDefault();
293
+ inputRef.current?.click();
294
+ }
295
+ };
296
+ const handleChange = (e) => {
297
+ const files = Array.from(e.target.files || []);
298
+ onFileSelect?.(files);
299
+ };
300
+ return /* @__PURE__ */ jsxs3(
301
+ "div",
302
+ {
303
+ ref,
304
+ role: "button",
305
+ tabIndex: disabled ? -1 : 0,
306
+ "aria-label": "File upload area",
307
+ "aria-disabled": disabled || void 0,
308
+ onDragOver: handleDragOver,
309
+ onDragLeave: handleDragLeave,
310
+ onDrop: handleDrop,
311
+ onClick: handleClick,
312
+ onKeyDown: handleKeyDown,
313
+ className: cn(
314
+ "flex flex-col items-center justify-center gap-[14px] rounded-[6px] bg-white p-[22px] cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)]",
315
+ isDragOver && "border-2 border-dashed border-[var(--hc-primary-500)] bg-[var(--hc-primary-100)]",
316
+ !isDragOver && "border-2 border-dashed border-[var(--hc-color-border-subtle)]",
317
+ disabled && "opacity-50 cursor-not-allowed",
318
+ className
319
+ ),
320
+ ...props,
321
+ children: [
322
+ /* @__PURE__ */ jsx3(CloudUpload, { className: "size-6 text-[var(--hc-primary-500)]" }),
323
+ /* @__PURE__ */ jsxs3("p", { className: "text-[12px] leading-[16px] text-[var(--hc-grey-200)] text-center", children: [
324
+ "PNG, JPG or PDF, smaller than ",
325
+ maxSize,
326
+ "MB"
327
+ ] }),
328
+ /* @__PURE__ */ jsxs3("p", { className: "text-[14px] leading-[20px] font-medium text-[var(--hc-grey-300)] text-center", children: [
329
+ "Drag and Drop your file here or",
330
+ " ",
331
+ /* @__PURE__ */ jsx3("span", { className: "text-[var(--hc-primary-500)] hover:underline", children: "Browse file" })
332
+ ] }),
333
+ /* @__PURE__ */ jsx3(
334
+ "input",
335
+ {
336
+ ref: inputRef,
337
+ type: "file",
338
+ accept,
339
+ multiple,
340
+ onChange: handleChange,
341
+ className: "hidden",
342
+ tabIndex: -1,
343
+ "aria-hidden": "true"
344
+ }
345
+ )
346
+ ]
347
+ }
348
+ );
349
+ }
350
+ );
351
+ FileInput.displayName = "FileInput";
352
+
353
+ // src/components/textarea.tsx
354
+ import * as React4 from "react";
355
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
356
+ var Textarea = React4.forwardRef(
357
+ ({ className, error, maxCharacters, value, onChange, ...props }, ref) => {
358
+ const [charCount, setCharCount] = React4.useState(
359
+ typeof value === "string" ? value.length : 0
360
+ );
361
+ const handleChange = (e) => {
362
+ setCharCount(e.target.value.length);
363
+ onChange?.(e);
364
+ };
365
+ return /* @__PURE__ */ jsxs4("div", { className: "relative", children: [
366
+ /* @__PURE__ */ jsx4(
367
+ "textarea",
368
+ {
369
+ className: cn(
370
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus:outline-none focus:border-ring disabled:cursor-not-allowed disabled:opacity-50",
371
+ error && "border-destructive focus:border-destructive",
372
+ className
373
+ ),
374
+ ref,
375
+ value,
376
+ onChange: handleChange,
377
+ ...props
378
+ }
379
+ ),
380
+ maxCharacters && /* @__PURE__ */ jsxs4("span", { className: "absolute bottom-2 end-3 text-xs text-muted-foreground", children: [
381
+ charCount,
382
+ "/",
383
+ maxCharacters
384
+ ] })
385
+ ] });
386
+ }
387
+ );
388
+ Textarea.displayName = "Textarea";
389
+
390
+ // src/components/label.tsx
391
+ import * as React6 from "react";
392
+ import * as LabelPrimitive from "@radix-ui/react-label";
393
+ import { cva as cva3 } from "class-variance-authority";
394
+ import { Info } from "lucide-react";
395
+
396
+ // src/components/tooltip.tsx
397
+ import * as React5 from "react";
398
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
399
+ import { jsx as jsx5 } from "react/jsx-runtime";
400
+ var TooltipProvider = TooltipPrimitive.Provider;
401
+ var Tooltip = TooltipPrimitive.Root;
402
+ var TooltipTrigger = TooltipPrimitive.Trigger;
403
+ var TooltipContent = React5.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx5(
404
+ TooltipPrimitive.Content,
405
+ {
406
+ ref,
407
+ sideOffset,
408
+ className: cn(
409
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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",
410
+ className
411
+ ),
412
+ ...props
413
+ }
414
+ ));
415
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
416
+
417
+ // src/components/label.tsx
418
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
419
+ var labelVariants = cva3(
420
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
421
+ );
422
+ var Label = React6.forwardRef(({ className, required, helperText, tooltip, children, ...props }, ref) => {
423
+ const tooltipIcon = tooltip ? /* @__PURE__ */ jsx6(TooltipProvider, { delayDuration: 200, children: /* @__PURE__ */ jsxs5(Tooltip, { children: [
424
+ /* @__PURE__ */ jsx6(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx6(
425
+ "span",
426
+ {
427
+ role: "button",
428
+ tabIndex: 0,
429
+ "aria-label": "More information",
430
+ className: "ms-1 inline-flex align-middle text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background rounded-sm",
431
+ children: /* @__PURE__ */ jsx6(Info, { className: "size-3.5", "aria-hidden": "true" })
432
+ }
433
+ ) }),
434
+ /* @__PURE__ */ jsx6(TooltipContent, { children: tooltip })
435
+ ] }) }) : null;
436
+ if (helperText || tooltip) {
437
+ return /* @__PURE__ */ jsxs5("span", { className: "flex flex-col", children: [
438
+ /* @__PURE__ */ jsxs5(
439
+ LabelPrimitive.Root,
440
+ {
441
+ ref,
442
+ className: cn(labelVariants(), className),
443
+ ...props,
444
+ children: [
445
+ children,
446
+ required && /* @__PURE__ */ jsx6("span", { className: "ms-1 text-destructive", children: "*" }),
447
+ tooltipIcon
448
+ ]
449
+ }
450
+ ),
451
+ helperText && /* @__PURE__ */ jsx6("span", { className: "mt-1 text-xs text-muted-foreground", children: helperText })
452
+ ] });
453
+ }
454
+ return /* @__PURE__ */ jsxs5(
455
+ LabelPrimitive.Root,
456
+ {
457
+ ref,
458
+ className: cn(labelVariants(), className),
459
+ ...props,
460
+ children: [
461
+ children,
462
+ required && /* @__PURE__ */ jsx6("span", { className: "ms-1 text-destructive", children: "*" })
463
+ ]
464
+ }
465
+ );
466
+ });
467
+ Label.displayName = LabelPrimitive.Root.displayName;
468
+
469
+ // src/components/checkbox.tsx
470
+ import * as React7 from "react";
471
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
472
+ import { Check } from "lucide-react";
473
+ import { cva as cva4 } from "class-variance-authority";
474
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
475
+ var checkboxVariants = cva4(
476
+ "peer shrink-0 border ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-0 data-[state=indeterminate]:border-0",
477
+ {
478
+ variants: {
479
+ variant: {
480
+ default: "border-input hover:border-muted-foreground data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground",
481
+ destructive: "border-input hover:border-muted-foreground data-[state=checked]:bg-destructive data-[state=checked]:text-destructive-foreground data-[state=indeterminate]:bg-destructive data-[state=indeterminate]:text-destructive-foreground",
482
+ success: "border-input hover:border-muted-foreground data-[state=checked]:bg-success data-[state=checked]:text-success-foreground data-[state=indeterminate]:bg-success data-[state=indeterminate]:text-success-foreground"
483
+ },
484
+ size: {
485
+ sm: "size-3.5 rounded-sm",
486
+ default: "size-4 rounded-sm",
487
+ lg: "size-5 rounded"
488
+ }
489
+ },
490
+ defaultVariants: {
491
+ variant: "default",
492
+ size: "default"
493
+ }
494
+ }
495
+ );
496
+ var checkboxIconSize = {
497
+ sm: "size-2.5",
498
+ default: "size-3",
499
+ lg: "size-4"
500
+ };
501
+ var Checkbox = React7.forwardRef(({ className, label, id, variant, size = "default", ...props }, ref) => {
502
+ const checkboxId = id || React7.useId();
503
+ return /* @__PURE__ */ jsxs6("div", { className: "inline-flex items-center gap-2", children: [
504
+ /* @__PURE__ */ jsx7(
505
+ CheckboxPrimitive.Root,
506
+ {
507
+ ref,
508
+ id: checkboxId,
509
+ className: cn(checkboxVariants({ variant, size, className })),
510
+ ...props,
511
+ children: /* @__PURE__ */ jsx7(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: /* @__PURE__ */ jsx7(Check, { className: checkboxIconSize[size ?? "default"] }) })
512
+ }
513
+ ),
514
+ label && /* @__PURE__ */ jsx7(
515
+ "label",
516
+ {
517
+ htmlFor: checkboxId,
518
+ className: "text-sm leading-none text-foreground select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
519
+ children: label
520
+ }
521
+ )
522
+ ] });
523
+ });
524
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
525
+
526
+ // src/components/radio-group.tsx
527
+ import * as React8 from "react";
528
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
529
+ import { Circle } from "lucide-react";
530
+ import { jsx as jsx8 } from "react/jsx-runtime";
531
+ var RadioGroup = React8.forwardRef(({ className, ...props }, ref) => {
532
+ return /* @__PURE__ */ jsx8(
533
+ RadioGroupPrimitive.Root,
534
+ {
535
+ className: cn("grid gap-2", className),
536
+ ...props,
537
+ ref
538
+ }
539
+ );
540
+ });
541
+ RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
542
+ var RadioGroupItem = React8.forwardRef(({ className, ...props }, ref) => {
543
+ return /* @__PURE__ */ jsx8(
544
+ RadioGroupPrimitive.Item,
545
+ {
546
+ ref,
547
+ className: cn(
548
+ "aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
549
+ className
550
+ ),
551
+ ...props,
552
+ children: /* @__PURE__ */ jsx8(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx8(Circle, { className: "h-2.5 w-2.5 fill-current text-current" }) })
553
+ }
554
+ );
555
+ });
556
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
557
+
558
+ // src/components/switch.tsx
559
+ import * as React9 from "react";
560
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
561
+ import { cva as cva5 } from "class-variance-authority";
562
+ import { jsx as jsx9 } from "react/jsx-runtime";
563
+ var switchVariants = cva5(
564
+ "peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=unchecked]:bg-[var(--hc-grey-200)] aria-[invalid=true]:ring-2 aria-[invalid=true]:ring-destructive aria-[invalid=true]:ring-offset-2",
565
+ {
566
+ variants: {
567
+ variant: {
568
+ default: "data-[state=checked]:bg-[var(--hc-primary-600)]",
569
+ destructive: "data-[state=checked]:bg-destructive",
570
+ success: "data-[state=checked]:bg-success"
571
+ },
572
+ size: {
573
+ sm: "h-5 w-9",
574
+ default: "h-[28px] w-[52px]",
575
+ lg: "h-[36px] w-[64px]"
576
+ }
577
+ },
578
+ defaultVariants: {
579
+ variant: "default",
580
+ size: "default"
581
+ }
582
+ }
583
+ );
584
+ var thumbStyles = {
585
+ sm: "h-3.5 w-3.5 data-[state=unchecked]:translate-x-[3px] data-[state=checked]:translate-x-[15px]",
586
+ default: "h-[22px] w-[22px] data-[state=unchecked]:translate-x-[3px] data-[state=checked]:translate-x-[23px]",
587
+ lg: "h-[26px] w-[26px] data-[state=unchecked]:translate-x-[4px] data-[state=checked]:translate-x-[30px]"
588
+ };
589
+ var Switch = React9.forwardRef(({ className, variant, size = "default", ...props }, ref) => /* @__PURE__ */ jsx9(
590
+ SwitchPrimitives.Root,
591
+ {
592
+ className: cn(switchVariants({ variant, size }), className),
593
+ ...props,
594
+ ref,
595
+ children: /* @__PURE__ */ jsx9(
596
+ SwitchPrimitives.Thumb,
597
+ {
598
+ className: cn(
599
+ "pointer-events-none block rounded-full bg-white shadow-lg ring-0 transition-transform duration-200 [[disabled]_&]:bg-[var(--hc-grey-300)]",
600
+ thumbStyles[size ?? "default"]
601
+ )
602
+ }
603
+ )
604
+ }
605
+ ));
606
+ Switch.displayName = SwitchPrimitives.Root.displayName;
607
+
608
+ // src/components/slider.tsx
609
+ import * as React10 from "react";
610
+ import * as SliderPrimitive from "@radix-ui/react-slider";
611
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
612
+ var Slider = React10.forwardRef(({ className, ...props }, ref) => {
613
+ const values = props.value ?? props.defaultValue ?? [0];
614
+ return /* @__PURE__ */ jsxs7(
615
+ SliderPrimitive.Root,
616
+ {
617
+ ref,
618
+ className: cn(
619
+ "relative flex w-full touch-none select-none items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col data-[disabled]:opacity-50",
620
+ className
621
+ ),
622
+ ...props,
623
+ children: [
624
+ /* @__PURE__ */ jsx10(SliderPrimitive.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-muted data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2", children: /* @__PURE__ */ jsx10(SliderPrimitive.Range, { className: "absolute h-full bg-primary data-[orientation=vertical]:w-full" }) }),
625
+ values.map((_, i) => /* @__PURE__ */ jsx10(
626
+ SliderPrimitive.Thumb,
627
+ {
628
+ className: "block h-5 w-5 rounded-full border-2 border-primary bg-background shadow-sm transition-colors focus-visible:outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none"
629
+ },
630
+ i
631
+ ))
632
+ ]
633
+ }
634
+ );
635
+ });
636
+ Slider.displayName = SliderPrimitive.Root.displayName;
637
+
638
+ // src/components/toggle.tsx
639
+ import * as React11 from "react";
640
+ import * as TogglePrimitive from "@radix-ui/react-toggle";
641
+ import { cva as cva6 } from "class-variance-authority";
642
+ import { jsx as jsx11 } from "react/jsx-runtime";
643
+ var toggleVariants = cva6(
644
+ "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-primary data-[state=on]:text-primary-foreground",
645
+ {
646
+ variants: {
647
+ variant: {
648
+ default: "bg-transparent",
649
+ outline: "border border-input bg-transparent hover:bg-muted hover:text-foreground"
650
+ },
651
+ size: {
652
+ sm: "h-9 px-2.5",
653
+ md: "h-10 px-3",
654
+ lg: "h-11 px-5"
655
+ }
656
+ },
657
+ defaultVariants: {
658
+ variant: "default",
659
+ size: "md"
660
+ }
661
+ }
662
+ );
663
+ var Toggle = React11.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx11(
664
+ TogglePrimitive.Root,
665
+ {
666
+ ref,
667
+ className: cn(toggleVariants({ variant, size, className })),
668
+ ...props
669
+ }
670
+ ));
671
+ Toggle.displayName = TogglePrimitive.Root.displayName;
672
+
673
+ // src/components/toggle-group.tsx
674
+ import * as React12 from "react";
675
+ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
676
+ import { jsx as jsx12 } from "react/jsx-runtime";
677
+ var ToggleGroupContext = React12.createContext({
678
+ size: "md",
679
+ variant: "default"
680
+ });
681
+ var ToggleGroup = React12.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx12(
682
+ ToggleGroupPrimitive.Root,
683
+ {
684
+ ref,
685
+ className: cn("flex items-center justify-center gap-1", className),
686
+ ...props,
687
+ children: /* @__PURE__ */ jsx12(ToggleGroupContext.Provider, { value: { variant, size }, children })
688
+ }
689
+ ));
690
+ ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
691
+ var ToggleGroupItem = React12.forwardRef(({ className, children, variant, size, ...props }, ref) => {
692
+ const context = React12.useContext(ToggleGroupContext);
693
+ return /* @__PURE__ */ jsx12(
694
+ ToggleGroupPrimitive.Item,
695
+ {
696
+ ref,
697
+ className: cn(
698
+ toggleVariants({
699
+ variant: context.variant || variant,
700
+ size: context.size || size
701
+ }),
702
+ className
703
+ ),
704
+ ...props,
705
+ children
706
+ }
707
+ );
708
+ });
709
+ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
710
+
711
+ // src/components/select.tsx
712
+ import * as React13 from "react";
713
+ import * as SelectPrimitive from "@radix-ui/react-select";
714
+ import { Check as Check2, ChevronDown, ChevronUp } from "lucide-react";
715
+ import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
716
+ var Select = SelectPrimitive.Root;
717
+ var SelectGroup = SelectPrimitive.Group;
718
+ var SelectValue = SelectPrimitive.Value;
719
+ var SelectTrigger = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
720
+ SelectPrimitive.Trigger,
721
+ {
722
+ ref,
723
+ className: cn(
724
+ "flex h-10 w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:border-ring disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:border-destructive data-[placeholder]:text-muted-foreground [&>span]:line-clamp-1 [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted-foreground",
725
+ className
726
+ ),
727
+ ...props,
728
+ children: [
729
+ children,
730
+ /* @__PURE__ */ jsx13(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx13(ChevronDown, { className: "h-4 w-4 opacity-70" }) })
731
+ ]
732
+ }
733
+ ));
734
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
735
+ var SelectScrollUpButton = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
736
+ SelectPrimitive.ScrollUpButton,
737
+ {
738
+ ref,
739
+ className: cn("flex cursor-default items-center justify-center py-1", className),
740
+ ...props,
741
+ children: /* @__PURE__ */ jsx13(ChevronUp, { className: "h-4 w-4" })
742
+ }
743
+ ));
744
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
745
+ var SelectScrollDownButton = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
746
+ SelectPrimitive.ScrollDownButton,
747
+ {
748
+ ref,
749
+ className: cn("flex cursor-default items-center justify-center py-1", className),
750
+ ...props,
751
+ children: /* @__PURE__ */ jsx13(ChevronDown, { className: "h-4 w-4" })
752
+ }
753
+ ));
754
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
755
+ var SelectContent = React13.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx13(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs8(
756
+ SelectPrimitive.Content,
757
+ {
758
+ ref,
759
+ className: cn(
760
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
761
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
762
+ className
763
+ ),
764
+ position,
765
+ ...props,
766
+ children: [
767
+ /* @__PURE__ */ jsx13(SelectScrollUpButton, {}),
768
+ /* @__PURE__ */ jsx13(
769
+ SelectPrimitive.Viewport,
770
+ {
771
+ className: cn(
772
+ "p-1",
773
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
774
+ ),
775
+ children
776
+ }
777
+ ),
778
+ /* @__PURE__ */ jsx13(SelectScrollDownButton, {})
779
+ ]
780
+ }
781
+ ) }));
782
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
783
+ var SelectLabel = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
784
+ SelectPrimitive.Label,
785
+ {
786
+ ref,
787
+ className: cn("px-2 py-1.5 text-xs font-semibold text-muted-foreground", className),
788
+ ...props
789
+ }
790
+ ));
791
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
792
+ var SelectItem = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
793
+ SelectPrimitive.Item,
794
+ {
795
+ ref,
796
+ className: cn(
797
+ "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pe-2 ps-8 text-sm text-foreground outline-none focus:bg-primary focus:text-primary-foreground data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
798
+ className
799
+ ),
800
+ ...props,
801
+ children: [
802
+ /* @__PURE__ */ jsx13("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx13(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx13(Check2, { className: "h-4 w-4" }) }) }),
803
+ /* @__PURE__ */ jsx13(SelectPrimitive.ItemText, { children })
804
+ ]
805
+ }
806
+ ));
807
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
808
+ var SelectSeparator = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
809
+ SelectPrimitive.Separator,
810
+ {
811
+ ref,
812
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
813
+ ...props
814
+ }
815
+ ));
816
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
817
+
818
+ // src/components/form.tsx
819
+ import * as React14 from "react";
820
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
821
+ import {
822
+ Controller,
823
+ FormProvider,
824
+ useFormContext
825
+ } from "react-hook-form";
826
+ import { jsx as jsx14 } from "react/jsx-runtime";
827
+ var Form = FormProvider;
828
+ var FormFieldContext = React14.createContext(
829
+ {}
830
+ );
831
+ var FormField = ({
832
+ ...props
833
+ }) => {
834
+ return /* @__PURE__ */ jsx14(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx14(Controller, { ...props }) });
835
+ };
836
+ var useFormField = () => {
837
+ const fieldContext = React14.useContext(FormFieldContext);
838
+ const itemContext = React14.useContext(FormItemContext);
839
+ const { getFieldState, formState } = useFormContext();
840
+ const fieldState = getFieldState(fieldContext.name, formState);
841
+ if (!fieldContext) {
842
+ throw new Error("useFormField should be used within <FormField>");
843
+ }
844
+ const { id } = itemContext;
845
+ return {
846
+ id,
847
+ name: fieldContext.name,
848
+ formItemId: `${id}-form-item`,
849
+ formDescriptionId: `${id}-form-item-description`,
850
+ formMessageId: `${id}-form-item-message`,
851
+ ...fieldState
852
+ };
853
+ };
854
+ var FormItemContext = React14.createContext(
855
+ {}
856
+ );
857
+ var FormItem = React14.forwardRef(
858
+ ({ className, orientation = "vertical", ...props }, ref) => {
859
+ const id = React14.useId();
860
+ return /* @__PURE__ */ jsx14(FormItemContext.Provider, { value: { id, orientation }, children: /* @__PURE__ */ jsx14(
861
+ "div",
862
+ {
863
+ ref,
864
+ className: cn(
865
+ orientation === "horizontal" ? "flex items-start gap-4" : "space-y-2",
866
+ className
867
+ ),
868
+ ...props
869
+ }
870
+ ) });
871
+ }
872
+ );
873
+ FormItem.displayName = "FormItem";
874
+ var FormLabel = React14.forwardRef(({ className, ...props }, ref) => {
875
+ const { error, formItemId } = useFormField();
876
+ const itemContext = React14.useContext(FormItemContext);
877
+ return /* @__PURE__ */ jsx14(
878
+ Label,
879
+ {
880
+ ref,
881
+ className: cn(
882
+ error && "text-destructive",
883
+ itemContext.orientation === "horizontal" && "w-32 shrink-0 pt-2",
884
+ className
885
+ ),
886
+ htmlFor: formItemId,
887
+ ...props
888
+ }
889
+ );
890
+ });
891
+ FormLabel.displayName = "FormLabel";
892
+ var FormControl = React14.forwardRef(({ ...props }, ref) => {
893
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
894
+ return /* @__PURE__ */ jsx14(
895
+ Slot2,
896
+ {
897
+ ref,
898
+ id: formItemId,
899
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
900
+ "aria-invalid": !!error,
901
+ ...props
902
+ }
903
+ );
904
+ });
905
+ FormControl.displayName = "FormControl";
906
+ var FormDescription = React14.forwardRef(({ className, ...props }, ref) => {
907
+ const { formDescriptionId } = useFormField();
908
+ return /* @__PURE__ */ jsx14(
909
+ "p",
910
+ {
911
+ ref,
912
+ id: formDescriptionId,
913
+ className: cn("text-sm text-muted-foreground", className),
914
+ ...props
915
+ }
916
+ );
917
+ });
918
+ FormDescription.displayName = "FormDescription";
919
+ var FormMessage = React14.forwardRef(({ className, children, ...props }, ref) => {
920
+ const { error, formMessageId } = useFormField();
921
+ const body = error ? String(error?.message) : children;
922
+ if (!body) {
923
+ return null;
924
+ }
925
+ return /* @__PURE__ */ jsx14(
926
+ "p",
927
+ {
928
+ ref,
929
+ id: formMessageId,
930
+ className: cn("text-sm font-medium text-destructive", className),
931
+ ...props,
932
+ children: body
933
+ }
934
+ );
935
+ });
936
+ FormMessage.displayName = "FormMessage";
937
+
938
+ // src/components/input-otp.tsx
939
+ import * as React15 from "react";
940
+ import { OTPInput, OTPInputContext } from "input-otp";
941
+ import { Dot } from "lucide-react";
942
+ import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
943
+ var InputOTPGroupContext = React15.createContext("joined");
944
+ var InputOTP = React15.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx15(
945
+ OTPInput,
946
+ {
947
+ ref,
948
+ containerClassName: cn(
949
+ "flex items-center gap-2 has-[:disabled]:opacity-50",
950
+ containerClassName
951
+ ),
952
+ className: cn("disabled:cursor-not-allowed", className),
953
+ ...props
954
+ }
955
+ ));
956
+ InputOTP.displayName = "InputOTP";
957
+ var InputOTPGroup = React15.forwardRef(({ className, variant = "joined", ...props }, ref) => /* @__PURE__ */ jsx15(InputOTPGroupContext.Provider, { value: variant, children: /* @__PURE__ */ jsx15(
958
+ "div",
959
+ {
960
+ ref,
961
+ "data-variant": variant,
962
+ className: cn(
963
+ "flex items-center",
964
+ variant === "separated" && "gap-2",
965
+ className
966
+ ),
967
+ ...props
968
+ }
969
+ ) }));
970
+ InputOTPGroup.displayName = "InputOTPGroup";
971
+ var InputOTPSlot = React15.forwardRef(({ index, className, ...props }, ref) => {
972
+ const inputOTPContext = React15.useContext(OTPInputContext);
973
+ const variant = React15.useContext(InputOTPGroupContext);
974
+ const slot = inputOTPContext.slots[index];
975
+ if (!slot) return null;
976
+ const { char, hasFakeCaret, isActive } = slot;
977
+ return /* @__PURE__ */ jsxs9(
978
+ "div",
979
+ {
980
+ ref,
981
+ role: "textbox",
982
+ "aria-label": `Digit ${index + 1}`,
983
+ "data-slot-index": index,
984
+ className: cn(
985
+ "relative flex size-10 items-center justify-center border border-input bg-background text-base font-medium transition-[color,border-color,box-shadow] duration-150",
986
+ variant === "joined" && "border-y border-e border-s-0 first:rounded-s-md first:border-s last:rounded-e-md",
987
+ variant === "separated" && "rounded-md",
988
+ isActive && "z-10 border-[var(--hc-primary-500)] ring-[3px] ring-[color-mix(in_srgb,var(--hc-primary-500)_22%,transparent)]",
989
+ className
990
+ ),
991
+ ...props,
992
+ children: [
993
+ char,
994
+ hasFakeCaret && /* @__PURE__ */ jsx15("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx15("div", { className: "h-5 w-px animate-caret-blink bg-foreground duration-1000" }) })
995
+ ]
996
+ }
997
+ );
998
+ });
999
+ InputOTPSlot.displayName = "InputOTPSlot";
1000
+ var InputOTPSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1001
+ "div",
1002
+ {
1003
+ ref,
1004
+ role: "separator",
1005
+ className: cn("text-muted-foreground", className),
1006
+ ...props,
1007
+ children: /* @__PURE__ */ jsx15(Dot, {})
1008
+ }
1009
+ ));
1010
+ InputOTPSeparator.displayName = "InputOTPSeparator";
1011
+
1012
+ // src/components/badge.tsx
1013
+ import { AlertTriangle, Loader2 as Loader22, Sparkles } from "lucide-react";
1014
+
1015
+ // src/components/icon/success-icon.tsx
1016
+ import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1017
+ function SuccessIcon({ size = 16, width, height, fill, title, ...props }) {
1018
+ return /* @__PURE__ */ jsxs10("svg", { viewBox: "0 0 16 16", width: width ?? size, height: height ?? size, fill: fill ?? "none", "aria-hidden": title ? void 0 : true, role: title ? "img" : "presentation", ...props, children: [
1019
+ /* @__PURE__ */ jsx16("path", { d: "M11.4 6.85C11.4911 6.7557 11.5415 6.6294 11.5403 6.4983C11.5392 6.3672 11.4866 6.2418 11.3939 6.14909C11.3012 6.05639 11.1758 6.00381 11.0447 6.00267C10.9136 6.00153 10.7873 6.05192 10.693 6.143L7.04301 9.793L5.39301 8.143C5.29871 8.05192 5.17241 8.00153 5.04131 8.00267C4.91021 8.0038 4.7848 8.05639 4.6921 8.14909C4.5994 8.2418 4.54681 8.3672 4.54567 8.4983C4.54453 8.6294 4.59493 8.7557 4.68601 8.85L6.68601 10.85C6.77977 10.9437 6.90693 10.9964 7.03951 10.9964C7.17209 10.9964 7.29925 10.9437 7.39301 10.85L11.393 6.85H11.4Z", fill: "black" }),
1020
+ /* @__PURE__ */ jsx16("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M8 0C3.58 0 0 3.58 0 8C0 12.42 3.58 16 8 16C12.42 16 16 12.42 16 8C16 3.58 12.42 0 8 0ZM1 8C1 4.13 4.13 1 8 1C11.87 1 15 4.13 15 8C15 11.87 11.87 15 8 15C4.13 15 1 11.87 1 8Z", fill: "black" }),
1021
+ title ? /* @__PURE__ */ jsx16("title", { children: title }) : null
1022
+ ] });
1023
+ }
1024
+
1025
+ // src/components/badge.tsx
1026
+ import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1027
+ var severityStyles = {
1028
+ critical: "bg-[var(--hc-color-destructive)] text-white border-t border-t-black/20",
1029
+ high: "bg-[var(--hc-badge-severity-high)] text-white border-t border-t-black/20",
1030
+ medium: "bg-[var(--hc-badge-severity-medium)] text-white border-t border-t-black/20",
1031
+ low: "bg-[var(--hc-badge-severity-low)] text-white border-t border-t-black/20"
1032
+ };
1033
+ var statusStyles = {
1034
+ pending: "bg-[var(--hc-badge-pending-bg)] border border-[var(--hc-badge-pending-border)] text-[var(--hc-badge-pending-text)]",
1035
+ "in-progress": "bg-[var(--hc-badge-in-progress-bg)] border border-[var(--hc-badge-in-progress-border)] text-[var(--hc-badge-in-progress-text)]",
1036
+ "under-review": "bg-[var(--hc-badge-under-review-bg)] border border-[var(--hc-badge-under-review-border)] text-[var(--hc-badge-under-review-text)]",
1037
+ resolved: "bg-[var(--hc-badge-resolved-bg)] border border-[var(--hc-badge-resolved-border)] text-[var(--hc-badge-resolved-text)]"
1038
+ };
1039
+ var pillStyles = {
1040
+ error: "bg-[var(--hc-color-destructive)] text-white border-t border-t-black/20",
1041
+ warning: "bg-[var(--hc-badge-severity-high)] text-white border-t border-t-black/20",
1042
+ success: "bg-[var(--hc-badge-pill-success)] text-white border-t border-t-black/20",
1043
+ primary: "bg-[var(--hc-primary-600)] text-white border-t border-t-black/20"
1044
+ };
1045
+ var iconStyles = {
1046
+ warning: "bg-[var(--hc-badge-severity-high)] text-white border-t border-t-black/20 gap-[6px]",
1047
+ complete: "bg-[var(--hc-badge-pill-success)] text-white border-t border-t-black/20 gap-[6px]",
1048
+ "ai-generated": "bg-[var(--hc-primary-600)] text-white border-t border-t-black/20 gap-[6px]"
1049
+ };
1050
+ var designationStyles = "bg-[var(--hc-badge-designation-bg)] text-[var(--hc-badge-designation-text)] font-normal";
1051
+ var spinnerStyles = {
1052
+ primary: "bg-[var(--hc-primary-100)] text-[var(--hc-primary-700)] border border-[var(--hc-primary-200)] gap-1.5",
1053
+ neutral: "bg-muted text-muted-foreground border border-[var(--hc-color-border-subtle)] gap-1.5",
1054
+ success: "bg-[var(--hc-banner-success-bg)] text-[var(--hc-color-success)] border border-[var(--hc-banner-success-border)] gap-1.5",
1055
+ warning: "bg-[var(--hc-banner-warning-bg)] text-[var(--hc-badge-severity-high)] border border-[var(--hc-banner-warning-border)] gap-1.5"
1056
+ };
1057
+ var iconMap = {
1058
+ warning: AlertTriangle,
1059
+ complete: SuccessIcon,
1060
+ "ai-generated": Sparkles
1061
+ };
1062
+ function Badge({
1063
+ className,
1064
+ variant,
1065
+ severity,
1066
+ status,
1067
+ pill,
1068
+ iconType,
1069
+ spinnerTone = "primary",
1070
+ dot,
1071
+ children,
1072
+ ...props
1073
+ }) {
1074
+ const base = "inline-flex items-center h-[22px] rounded-[6px] px-2 py-0.5 text-xs font-medium gap-1";
1075
+ let variantClasses = "";
1076
+ if (variant === "severity" && severity) {
1077
+ variantClasses = severityStyles[severity] ?? "";
1078
+ } else if (variant === "status" && status) {
1079
+ variantClasses = statusStyles[status] ?? "";
1080
+ } else if (variant === "pill" && pill) {
1081
+ variantClasses = pillStyles[pill] ?? "";
1082
+ } else if (variant === "icon" && iconType) {
1083
+ variantClasses = iconStyles[iconType] ?? "";
1084
+ } else if (variant === "designation") {
1085
+ variantClasses = designationStyles;
1086
+ } else if (variant === "spinner") {
1087
+ variantClasses = spinnerStyles[spinnerTone] ?? spinnerStyles.primary;
1088
+ }
1089
+ const IconComponent = variant === "icon" && iconType ? iconMap[iconType] : null;
1090
+ return /* @__PURE__ */ jsxs11("div", { className: cn(base, variantClasses, className), ...props, children: [
1091
+ variant === "spinner" && /* @__PURE__ */ jsx17(Loader22, { "aria-hidden": true, className: "size-3 shrink-0 animate-spin" }),
1092
+ IconComponent && /* @__PURE__ */ jsx17(IconComponent, { className: "size-3 shrink-0" }),
1093
+ dot && /* @__PURE__ */ jsx17("span", { className: "size-1.5 shrink-0 rounded-full bg-current" }),
1094
+ children
1095
+ ] });
1096
+ }
1097
+
1098
+ // src/components/avatar.tsx
1099
+ import * as React16 from "react";
1100
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
1101
+ import { cva as cva7 } from "class-variance-authority";
1102
+ import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1103
+ var avatarVariants = cva7(
1104
+ "relative flex shrink-0 overflow-hidden rounded-full bg-[var(--hc-primary-600)] text-white",
1105
+ {
1106
+ variants: {
1107
+ size: {
1108
+ xs: "size-6 text-[10px] leading-[14px]",
1109
+ sm: "size-8 text-sm leading-5",
1110
+ md: "size-10 text-base leading-6",
1111
+ lg: "size-[52px] text-xl leading-7",
1112
+ xl: "size-16 text-2xl leading-8"
1113
+ },
1114
+ bordered: {
1115
+ true: "ring-2 ring-background",
1116
+ false: ""
1117
+ }
1118
+ },
1119
+ defaultVariants: {
1120
+ size: "md",
1121
+ bordered: false
1122
+ }
1123
+ }
1124
+ );
1125
+ var statusToneClass = {
1126
+ online: "bg-[var(--hc-color-success)]",
1127
+ offline: "bg-[var(--hc-grey-400)]",
1128
+ away: "bg-[var(--hc-badge-severity-medium,#F59E0B)]",
1129
+ busy: "bg-[var(--hc-color-destructive)]"
1130
+ };
1131
+ var statusSizeClass = {
1132
+ xs: "size-2",
1133
+ sm: "size-2.5",
1134
+ md: "size-3",
1135
+ lg: "size-3.5",
1136
+ xl: "size-4"
1137
+ };
1138
+ var Avatar = React16.forwardRef(({ className, size = "md", bordered, status, children, onClick, ...props }, ref) => {
1139
+ const isInteractive = typeof onClick === "function";
1140
+ return /* @__PURE__ */ jsxs12("span", { className: "relative inline-flex", children: [
1141
+ /* @__PURE__ */ jsx18(
1142
+ AvatarPrimitive.Root,
1143
+ {
1144
+ ref,
1145
+ onClick,
1146
+ className: cn(
1147
+ avatarVariants({ size, bordered }),
1148
+ isInteractive && "cursor-pointer outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-2 focus-visible:ring-offset-background hover:opacity-90",
1149
+ className
1150
+ ),
1151
+ ...props,
1152
+ children
1153
+ }
1154
+ ),
1155
+ status && /* @__PURE__ */ jsx18(
1156
+ "span",
1157
+ {
1158
+ "aria-hidden": true,
1159
+ className: cn(
1160
+ "absolute bottom-0 end-0 block rounded-full ring-2 ring-background",
1161
+ statusSizeClass[size ?? "md"],
1162
+ statusToneClass[status]
1163
+ )
1164
+ }
1165
+ )
1166
+ ] });
1167
+ });
1168
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
1169
+ var AvatarImage = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1170
+ AvatarPrimitive.Image,
1171
+ {
1172
+ ref,
1173
+ className: cn("aspect-square h-full w-full object-cover", className),
1174
+ ...props
1175
+ }
1176
+ ));
1177
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1178
+ var AvatarFallback = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1179
+ AvatarPrimitive.Fallback,
1180
+ {
1181
+ ref,
1182
+ className: cn("flex h-full w-full items-center justify-center font-semibold", className),
1183
+ ...props
1184
+ }
1185
+ ));
1186
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1187
+ var overlapClass = {
1188
+ xs: "-ms-1.5",
1189
+ sm: "-ms-2",
1190
+ md: "-ms-2.5",
1191
+ lg: "-ms-3",
1192
+ xl: "-ms-3.5"
1193
+ };
1194
+ var AvatarGroup = React16.forwardRef(
1195
+ ({ children, max, size = "md", className, ...props }, ref) => {
1196
+ const childArray = React16.Children.toArray(children).filter(React16.isValidElement);
1197
+ const visibleChildren = max ? childArray.slice(0, max) : childArray;
1198
+ const overflowCount = max ? childArray.length - max : 0;
1199
+ return /* @__PURE__ */ jsxs12("div", { ref, className: cn("flex items-center", className), ...props, children: [
1200
+ visibleChildren.map((child, index) => /* @__PURE__ */ jsx18(
1201
+ "div",
1202
+ {
1203
+ className: cn("relative", index > 0 && overlapClass[size]),
1204
+ style: { zIndex: visibleChildren.length - index },
1205
+ children: React16.isValidElement(child) ? React16.cloneElement(child, {
1206
+ size: child.props.size ?? size,
1207
+ bordered: true
1208
+ }) : child
1209
+ },
1210
+ index
1211
+ )),
1212
+ overflowCount > 0 && /* @__PURE__ */ jsx18("div", { className: cn("relative", overlapClass[size]), children: /* @__PURE__ */ jsx18(Avatar, { size, bordered: true, children: /* @__PURE__ */ jsxs12(AvatarFallback, { children: [
1213
+ "+",
1214
+ overflowCount
1215
+ ] }) }) })
1216
+ ] });
1217
+ }
1218
+ );
1219
+ AvatarGroup.displayName = "AvatarGroup";
1220
+
1221
+ // src/components/alert.tsx
1222
+ import * as React17 from "react";
1223
+ import { cva as cva8 } from "class-variance-authority";
1224
+ import { jsx as jsx19 } from "react/jsx-runtime";
1225
+ var alertVariants = cva8(
1226
+ "relative w-full rounded-lg border p-4 [&>svg~*]:ps-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:start-4 [&>svg]:top-4 [&>svg]:text-foreground",
1227
+ {
1228
+ variants: {
1229
+ variant: {
1230
+ default: "bg-background text-foreground",
1231
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",
1232
+ success: "border-success/50 text-success [&>svg]:text-success",
1233
+ warning: "border-warning/50 text-warning-foreground bg-warning/10 [&>svg]:text-warning",
1234
+ info: "border-primary/50 text-primary [&>svg]:text-primary"
1235
+ }
1236
+ },
1237
+ defaultVariants: {
1238
+ variant: "default"
1239
+ }
1240
+ }
1241
+ );
1242
+ var Alert = React17.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx19(
1243
+ "div",
1244
+ {
1245
+ ref,
1246
+ role: "alert",
1247
+ className: cn(alertVariants({ variant }), className),
1248
+ ...props
1249
+ }
1250
+ ));
1251
+ Alert.displayName = "Alert";
1252
+ var AlertTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1253
+ "h5",
1254
+ {
1255
+ ref,
1256
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
1257
+ ...props
1258
+ }
1259
+ ));
1260
+ AlertTitle.displayName = "AlertTitle";
1261
+ var AlertDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1262
+ "div",
1263
+ {
1264
+ ref,
1265
+ className: cn("text-sm [&_p]:leading-relaxed", className),
1266
+ ...props
1267
+ }
1268
+ ));
1269
+ AlertDescription.displayName = "AlertDescription";
1270
+ var AlertAction = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1271
+ "div",
1272
+ {
1273
+ ref,
1274
+ className: cn(
1275
+ "mt-3 flex flex-wrap items-center gap-2 [&>button]:h-8 [&>button]:px-3 [&>button]:text-xs",
1276
+ className
1277
+ ),
1278
+ ...props
1279
+ }
1280
+ ));
1281
+ AlertAction.displayName = "AlertAction";
1282
+
1283
+ // src/components/progress.tsx
1284
+ import * as React18 from "react";
1285
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
1286
+ import { cva as cva9 } from "class-variance-authority";
1287
+ import { jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
1288
+ var progressVariants = cva9(
1289
+ "relative w-full overflow-hidden rounded-full bg-muted",
1290
+ {
1291
+ variants: {
1292
+ size: {
1293
+ sm: "h-2",
1294
+ md: "h-3",
1295
+ lg: "h-4"
1296
+ }
1297
+ },
1298
+ defaultVariants: {
1299
+ size: "md"
1300
+ }
1301
+ }
1302
+ );
1303
+ var Progress = React18.forwardRef(
1304
+ ({
1305
+ className,
1306
+ value = 0,
1307
+ size,
1308
+ indeterminate,
1309
+ showLabel,
1310
+ segments,
1311
+ ...props
1312
+ }, ref) => {
1313
+ const safeValue = Math.max(0, Math.min(100, value));
1314
+ const ariaProps = indeterminate ? { "aria-busy": true, "aria-valuemin": 0, "aria-valuemax": 100 } : {
1315
+ "aria-valuenow": safeValue,
1316
+ "aria-valuemin": 0,
1317
+ "aria-valuemax": 100
1318
+ };
1319
+ if (segments && segments > 0 && !indeterminate) {
1320
+ const filled = Math.ceil(safeValue / 100 * segments);
1321
+ return /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2", children: [
1322
+ /* @__PURE__ */ jsx20(
1323
+ "div",
1324
+ {
1325
+ role: "progressbar",
1326
+ ...ariaProps,
1327
+ className: cn(
1328
+ "grid w-full gap-1",
1329
+ className
1330
+ ),
1331
+ style: {
1332
+ gridTemplateColumns: `repeat(${segments}, minmax(0, 1fr))`
1333
+ },
1334
+ children: Array.from({ length: segments }).map((_, i) => /* @__PURE__ */ jsx20(
1335
+ "div",
1336
+ {
1337
+ className: cn(
1338
+ "rounded-full transition-colors",
1339
+ size === "sm" ? "h-2" : size === "lg" ? "h-4" : "h-3",
1340
+ i < filled ? "bg-primary" : "bg-muted"
1341
+ )
1342
+ },
1343
+ i
1344
+ ))
1345
+ }
1346
+ ),
1347
+ showLabel && /* @__PURE__ */ jsxs13("span", { className: "text-xs font-medium text-foreground tabular-nums", children: [
1348
+ safeValue,
1349
+ "%"
1350
+ ] })
1351
+ ] });
1352
+ }
1353
+ const labelNode = showLabel ? /* @__PURE__ */ jsx20("span", { className: "text-xs font-medium text-foreground tabular-nums shrink-0", children: indeterminate ? "Loading..." : `${safeValue}%` }) : null;
1354
+ const bar = /* @__PURE__ */ jsx20(
1355
+ ProgressPrimitive.Root,
1356
+ {
1357
+ ref,
1358
+ ...ariaProps,
1359
+ ...props,
1360
+ value: indeterminate ? null : safeValue,
1361
+ className: cn(progressVariants({ size }), className),
1362
+ children: indeterminate ? /* @__PURE__ */ jsx20(
1363
+ "div",
1364
+ {
1365
+ className: "h-full w-1/3 rounded-full bg-gradient-to-r from-transparent via-primary to-transparent animate-[progress-indeterminate_1.2s_ease-in-out_infinite]"
1366
+ }
1367
+ ) : /* @__PURE__ */ jsx20(
1368
+ ProgressPrimitive.Indicator,
1369
+ {
1370
+ className: "h-full w-full flex-1 bg-primary transition-all",
1371
+ style: { transform: `translateX(-${100 - safeValue}%)` }
1372
+ }
1373
+ )
1374
+ }
1375
+ );
1376
+ if (labelNode) {
1377
+ return /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2", children: [
1378
+ bar,
1379
+ labelNode
1380
+ ] });
1381
+ }
1382
+ return bar;
1383
+ }
1384
+ );
1385
+ Progress.displayName = ProgressPrimitive.Root.displayName;
1386
+
1387
+ // src/components/skeleton.tsx
1388
+ import { jsx as jsx21 } from "react/jsx-runtime";
1389
+ function Skeleton({ className, shape = "rect", ...props }) {
1390
+ return /* @__PURE__ */ jsx21(
1391
+ "div",
1392
+ {
1393
+ className: cn(
1394
+ "animate-pulse bg-muted",
1395
+ shape === "circle" && "rounded-full",
1396
+ shape === "text" && "h-4 w-full rounded-md",
1397
+ shape === "rect" && "rounded-md",
1398
+ className
1399
+ ),
1400
+ ...props
1401
+ }
1402
+ );
1403
+ }
1404
+
1405
+ // src/components/spinner.tsx
1406
+ import * as React19 from "react";
1407
+ import { cva as cva10 } from "class-variance-authority";
1408
+ import { jsx as jsx22 } from "react/jsx-runtime";
1409
+ var spinnerVariants = cva10("animate-spin", {
1410
+ variants: {
1411
+ size: {
1412
+ sm: "h-4 w-4",
1413
+ md: "h-6 w-6",
1414
+ lg: "h-8 w-8"
1415
+ }
1416
+ },
1417
+ defaultVariants: {
1418
+ size: "md"
1419
+ }
1420
+ });
1421
+ var Spinner = React19.forwardRef(
1422
+ ({ className, size, ...props }, ref) => /* @__PURE__ */ jsx22(
1423
+ "svg",
1424
+ {
1425
+ ref,
1426
+ xmlns: "http://www.w3.org/2000/svg",
1427
+ viewBox: "0 0 24 24",
1428
+ fill: "none",
1429
+ stroke: "currentColor",
1430
+ strokeWidth: "2",
1431
+ strokeLinecap: "round",
1432
+ strokeLinejoin: "round",
1433
+ role: "status",
1434
+ "aria-label": "Loading",
1435
+ className: cn(spinnerVariants({ size }), className),
1436
+ ...props,
1437
+ children: /* @__PURE__ */ jsx22("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
1438
+ }
1439
+ )
1440
+ );
1441
+ Spinner.displayName = "Spinner";
1442
+
1443
+ // src/components/separator.tsx
1444
+ import * as React20 from "react";
1445
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
1446
+ import { jsx as jsx23, jsxs as jsxs14 } from "react/jsx-runtime";
1447
+ var Separator2 = React20.forwardRef(({ className, orientation = "horizontal", decorative = true, label, ...props }, ref) => {
1448
+ if (label) {
1449
+ return /* @__PURE__ */ jsxs14(
1450
+ "div",
1451
+ {
1452
+ ref,
1453
+ role: decorative ? "none" : "separator",
1454
+ "aria-orientation": "horizontal",
1455
+ className: cn("flex w-full items-center", className),
1456
+ children: [
1457
+ /* @__PURE__ */ jsx23("span", { "aria-hidden": true, className: "h-px flex-1 bg-border" }),
1458
+ /* @__PURE__ */ jsx23("span", { className: "mx-3 shrink-0 text-xs text-muted-foreground", children: label }),
1459
+ /* @__PURE__ */ jsx23("span", { "aria-hidden": true, className: "h-px flex-1 bg-border" })
1460
+ ]
1461
+ }
1462
+ );
1463
+ }
1464
+ return /* @__PURE__ */ jsx23(
1465
+ SeparatorPrimitive.Root,
1466
+ {
1467
+ ref,
1468
+ decorative,
1469
+ orientation,
1470
+ className: cn(
1471
+ "shrink-0 bg-border",
1472
+ orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
1473
+ className
1474
+ ),
1475
+ ...props
1476
+ }
1477
+ );
1478
+ });
1479
+ Separator2.displayName = SeparatorPrimitive.Root.displayName;
1480
+
1481
+ // src/components/scroll-area.tsx
1482
+ import * as React21 from "react";
1483
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
1484
+ import { jsx as jsx24, jsxs as jsxs15 } from "react/jsx-runtime";
1485
+ var ScrollArea = React21.forwardRef(({ className, children, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsxs15(
1486
+ ScrollAreaPrimitive.Root,
1487
+ {
1488
+ ref,
1489
+ className: cn("relative overflow-hidden", className),
1490
+ ...props,
1491
+ children: [
1492
+ /* @__PURE__ */ jsx24(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
1493
+ (orientation === "vertical" || orientation === "both") && /* @__PURE__ */ jsx24(ScrollBar, { orientation: "vertical" }),
1494
+ (orientation === "horizontal" || orientation === "both") && /* @__PURE__ */ jsx24(ScrollBar, { orientation: "horizontal" }),
1495
+ /* @__PURE__ */ jsx24(ScrollAreaPrimitive.Corner, {})
1496
+ ]
1497
+ }
1498
+ ));
1499
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
1500
+ var ScrollBar = React21.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx24(
1501
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
1502
+ {
1503
+ ref,
1504
+ orientation,
1505
+ className: cn(
1506
+ "flex touch-none select-none p-px transition-colors",
1507
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
1508
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
1509
+ className
1510
+ ),
1511
+ ...props,
1512
+ children: /* @__PURE__ */ jsx24(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border transition-colors hover:bg-muted-foreground/50" })
1513
+ }
1514
+ ));
1515
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
1516
+
1517
+ // src/components/aspect-ratio.tsx
1518
+ import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
1519
+ var AspectRatio = AspectRatioPrimitive.Root;
1520
+
1521
+ // src/components/empty-state.tsx
1522
+ import * as React22 from "react";
1523
+ import { cva as cva11 } from "class-variance-authority";
1524
+ import { jsx as jsx25, jsxs as jsxs16 } from "react/jsx-runtime";
1525
+ var emptyStateVariants = cva11("text-center", {
1526
+ variants: {
1527
+ variant: {
1528
+ muted: "bg-transparent text-muted-foreground p-10",
1529
+ card: "rounded-lg border border-[var(--hc-color-border-subtle)] bg-background p-10",
1530
+ gradient: "rounded-lg bg-gradient-to-br from-[var(--hc-primary-100)] to-background p-10 border border-[var(--hc-primary-200)]"
1531
+ }
1532
+ },
1533
+ defaultVariants: {
1534
+ variant: "muted"
1535
+ }
1536
+ });
1537
+ var EmptyState = React22.forwardRef(
1538
+ ({ className, variant, icon, title, description, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
1539
+ "div",
1540
+ {
1541
+ ref,
1542
+ className: cn(emptyStateVariants({ variant }), className),
1543
+ ...props,
1544
+ children: [
1545
+ icon && /* @__PURE__ */ jsx25("div", { className: "mx-auto mb-4 flex size-14 items-center justify-center rounded-full bg-muted text-muted-foreground [&>svg]:size-6", children: icon }),
1546
+ /* @__PURE__ */ jsx25("h3", { className: "text-lg font-semibold text-foreground", children: title }),
1547
+ description && /* @__PURE__ */ jsx25("p", { className: "mt-1 text-sm text-muted-foreground max-w-md mx-auto", children: description }),
1548
+ children
1549
+ ]
1550
+ }
1551
+ )
1552
+ );
1553
+ EmptyState.displayName = "EmptyState";
1554
+ var EmptyStateActions = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
1555
+ "div",
1556
+ {
1557
+ ref,
1558
+ className: cn("mt-6 flex items-center justify-center gap-2 flex-wrap", className),
1559
+ ...props
1560
+ }
1561
+ ));
1562
+ EmptyStateActions.displayName = "EmptyStateActions";
1563
+
1564
+ // src/components/input-group.tsx
1565
+ import * as React23 from "react";
1566
+ import { jsx as jsx26 } from "react/jsx-runtime";
1567
+ var InputGroup = React23.forwardRef(
1568
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
1569
+ "div",
1570
+ {
1571
+ ref,
1572
+ "data-slot": "input-group",
1573
+ className: cn(
1574
+ // container — full height row, shared border + glow ring
1575
+ "relative flex h-10 w-full items-stretch rounded-md border border-input bg-background text-sm transition-[color,border-color,box-shadow] duration-150 overflow-hidden",
1576
+ "focus-within:border-[var(--hc-primary-500)] focus-within:ring-[3px] focus-within:ring-[color-mix(in_srgb,var(--hc-primary-500)_22%,transparent)]",
1577
+ // Flatten the lib Input's outer wrapper so horizontal flow works
1578
+ "[&_[data-slot=input-root]]:h-full [&_[data-slot=input-root]]:flex-1 [&_[data-slot=input-root]]:flex-row [&_[data-slot=input-root]]:gap-0 [&_[data-slot=input-root]]:min-w-0",
1579
+ // Hide any label/hint the user accidentally passed via the lib Input
1580
+ "[&_[data-slot=input-root]>label]:hidden [&_[data-slot=input-root]>p]:hidden",
1581
+ // Flatten the lib Input's inner wrapper (remove border, ring, round, padding, bg)
1582
+ "[&_[data-slot=input-wrapper]]:h-full [&_[data-slot=input-wrapper]]:w-full [&_[data-slot=input-wrapper]]:flex-1 [&_[data-slot=input-wrapper]]:border-0 [&_[data-slot=input-wrapper]]:rounded-none [&_[data-slot=input-wrapper]]:bg-transparent [&_[data-slot=input-wrapper]]:shadow-none [&_[data-slot=input-wrapper]]:ring-0 [&_[data-slot=input-wrapper]]:px-0 [&_[data-slot=input-wrapper]]:py-0 [&_[data-slot=input-wrapper]]:focus-within:ring-0 [&_[data-slot=input-wrapper]]:focus-within:border-transparent",
1583
+ // Native <input> styling inside the group
1584
+ "[&_input]:h-full [&_input]:flex-1 [&_input]:min-w-0 [&_input]:bg-transparent [&_input]:px-3 [&_input]:text-sm [&_input]:outline-none [&_input]:placeholder:text-muted-foreground",
1585
+ "[&_input]:border-0 [&_input]:rounded-none [&_input]:shadow-none [&_input]:ring-0",
1586
+ "[&_input:focus]:ring-0 [&_input:focus-visible]:ring-0 [&_input:focus-within]:ring-0",
1587
+ // Buttons inside the group fill height + shed own borders/rings
1588
+ "[&>button]:h-full [&>button]:rounded-none [&>button]:border-0 [&>button]:shadow-none [&>button]:ring-0 [&>button:focus]:ring-0 [&>button:focus-visible]:ring-0",
1589
+ className
1590
+ ),
1591
+ ...props
1592
+ }
1593
+ )
1594
+ );
1595
+ InputGroup.displayName = "InputGroup";
1596
+ var InputAddon = React23.forwardRef(
1597
+ ({ className, children, ...props }, ref) => {
1598
+ const containsButton = React23.Children.toArray(children).some(
1599
+ (c) => React23.isValidElement(c) && (c.type === "button" || typeof c.type !== "string" && c.type?.displayName?.includes?.("Button"))
1600
+ );
1601
+ return /* @__PURE__ */ jsx26(
1602
+ "div",
1603
+ {
1604
+ ref,
1605
+ "data-slot": "input-addon",
1606
+ className: cn(
1607
+ "flex shrink-0 items-center justify-center whitespace-nowrap text-sm font-medium text-muted-foreground select-none",
1608
+ // plain-content addon: subtle muted fill with a divider that matches the container border
1609
+ !containsButton && "bg-[var(--hc-grey-100)] px-3 border-e border-[var(--hc-color-border-subtle)] last:border-e-0 last:border-s",
1610
+ // button addon: transparent slot, button fills the area and has proper padding
1611
+ containsButton && "p-0 bg-transparent border-e border-[var(--hc-color-border-subtle)] last:border-e-0 last:border-s [&>button]:h-full [&>button]:px-3 [&>button]:gap-2 [&>button]:rounded-none",
1612
+ className
1613
+ ),
1614
+ ...props,
1615
+ children
1616
+ }
1617
+ );
1618
+ }
1619
+ );
1620
+ InputAddon.displayName = "InputAddon";
1621
+
1622
+ // src/components/item.tsx
1623
+ import * as React24 from "react";
1624
+ import { jsx as jsx27 } from "react/jsx-runtime";
1625
+ var Item4 = React24.forwardRef(
1626
+ ({ className, clickable, onClick, children, ...props }, ref) => {
1627
+ const baseClasses = "flex items-center gap-3 px-4 py-3 rounded-md";
1628
+ const interactiveClasses = "cursor-pointer transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] w-full text-start";
1629
+ if (clickable) {
1630
+ return /* @__PURE__ */ jsx27(
1631
+ "button",
1632
+ {
1633
+ type: "button",
1634
+ ref,
1635
+ onClick,
1636
+ className: cn(baseClasses, interactiveClasses, className),
1637
+ ...props,
1638
+ children
1639
+ }
1640
+ );
1641
+ }
1642
+ return /* @__PURE__ */ jsx27(
1643
+ "div",
1644
+ {
1645
+ ref,
1646
+ onClick,
1647
+ className: cn(baseClasses, className),
1648
+ ...props,
1649
+ children
1650
+ }
1651
+ );
1652
+ }
1653
+ );
1654
+ Item4.displayName = "Item";
1655
+ var ItemMedia = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
1656
+ "div",
1657
+ {
1658
+ ref,
1659
+ className: cn("shrink-0 flex items-center", className),
1660
+ ...props
1661
+ }
1662
+ ));
1663
+ ItemMedia.displayName = "ItemMedia";
1664
+ var ItemContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
1665
+ "div",
1666
+ {
1667
+ ref,
1668
+ className: cn("flex-1 min-w-0 flex flex-col gap-0.5", className),
1669
+ ...props
1670
+ }
1671
+ ));
1672
+ ItemContent.displayName = "ItemContent";
1673
+ var ItemTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
1674
+ "p",
1675
+ {
1676
+ ref,
1677
+ className: cn("text-sm font-medium text-foreground truncate", className),
1678
+ ...props
1679
+ }
1680
+ ));
1681
+ ItemTitle.displayName = "ItemTitle";
1682
+ var ItemDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
1683
+ "p",
1684
+ {
1685
+ ref,
1686
+ className: cn("text-xs text-muted-foreground truncate", className),
1687
+ ...props
1688
+ }
1689
+ ));
1690
+ ItemDescription.displayName = "ItemDescription";
1691
+ var ItemActions = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
1692
+ "div",
1693
+ {
1694
+ ref,
1695
+ className: cn("shrink-0 flex items-center gap-1 ms-auto", className),
1696
+ ...props
1697
+ }
1698
+ ));
1699
+ ItemActions.displayName = "ItemActions";
1700
+ var ItemGroup = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
1701
+ "div",
1702
+ {
1703
+ ref,
1704
+ className: cn(
1705
+ "flex flex-col divide-y divide-[var(--hc-color-border-subtle)] rounded-md border border-[var(--hc-color-border-subtle)] bg-background overflow-hidden",
1706
+ className
1707
+ ),
1708
+ ...props
1709
+ }
1710
+ ));
1711
+ ItemGroup.displayName = "ItemGroup";
1712
+
1713
+ // src/components/dialog.tsx
1714
+ import * as React25 from "react";
1715
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
1716
+ import { cva as cva12 } from "class-variance-authority";
1717
+ import { X as X2 } from "lucide-react";
1718
+ import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
1719
+ function useIsMobile(breakpoint = 768) {
1720
+ const [isMobile, setIsMobile] = React25.useState(false);
1721
+ React25.useEffect(() => {
1722
+ const mql = window.matchMedia(`(max-width: ${breakpoint}px)`);
1723
+ const onChange = () => setIsMobile(mql.matches);
1724
+ onChange();
1725
+ mql.addEventListener("change", onChange);
1726
+ return () => mql.removeEventListener("change", onChange);
1727
+ }, [breakpoint]);
1728
+ return isMobile;
1729
+ }
1730
+ var dialogContentVariants = cva12(
1731
+ "fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
1732
+ {
1733
+ variants: {
1734
+ size: {
1735
+ sm: "max-w-sm",
1736
+ default: "max-w-lg",
1737
+ lg: "max-w-2xl",
1738
+ xl: "max-w-4xl",
1739
+ fullscreen: "max-w-none w-screen h-screen rounded-none m-0 inset-0 start-0 top-0 translate-x-0 translate-y-0 sm:rounded-none"
1740
+ }
1741
+ },
1742
+ defaultVariants: {
1743
+ size: "default"
1744
+ }
1745
+ }
1746
+ );
1747
+ var Dialog = DialogPrimitive.Root;
1748
+ var DialogTrigger = DialogPrimitive.Trigger;
1749
+ var DialogPortal = DialogPrimitive.Portal;
1750
+ var DialogClose = DialogPrimitive.Close;
1751
+ var DialogOverlay = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
1752
+ DialogPrimitive.Overlay,
1753
+ {
1754
+ ref,
1755
+ className: cn(
1756
+ "fixed inset-0 z-50 bg-black/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1757
+ className
1758
+ ),
1759
+ ...props
1760
+ }
1761
+ ));
1762
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
1763
+ var DialogContent = React25.forwardRef(({ className, children, size, mobileDrawer = false, ...props }, ref) => {
1764
+ const isMobile = useIsMobile();
1765
+ const asDrawer = mobileDrawer && isMobile;
1766
+ return /* @__PURE__ */ jsxs17(DialogPortal, { children: [
1767
+ /* @__PURE__ */ jsx28(DialogOverlay, {}),
1768
+ /* @__PURE__ */ jsxs17(
1769
+ DialogPrimitive.Content,
1770
+ {
1771
+ ref,
1772
+ className: cn(
1773
+ asDrawer ? "fixed inset-x-0 bottom-0 z-50 grid w-full max-w-none gap-4 rounded-t-[10px] border bg-background p-6 shadow-lg duration-200 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]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom" : dialogContentVariants({ size }),
1774
+ className
1775
+ ),
1776
+ ...props,
1777
+ children: [
1778
+ asDrawer && /* @__PURE__ */ jsx28("div", { className: "mx-auto -mt-2 mb-2 h-2 w-[100px] rounded-full bg-muted" }),
1779
+ children,
1780
+ /* @__PURE__ */ jsxs17(DialogPrimitive.Close, { className: "absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-muted data-[state=open]:text-muted-foreground", children: [
1781
+ /* @__PURE__ */ jsx28(X2, { className: "h-4 w-4" }),
1782
+ /* @__PURE__ */ jsx28("span", { className: "sr-only", children: "Close" })
1783
+ ] })
1784
+ ]
1785
+ }
1786
+ )
1787
+ ] });
1788
+ });
1789
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
1790
+ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx28("div", { className: cn("flex flex-col gap-2 text-center sm:text-start", className), ...props });
1791
+ DialogHeader.displayName = "DialogHeader";
1792
+ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx28(
1793
+ "div",
1794
+ {
1795
+ className: cn(
1796
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:space-x-0 sm:[&>button]:min-w-[96px]",
1797
+ className
1798
+ ),
1799
+ ...props
1800
+ }
1801
+ );
1802
+ DialogFooter.displayName = "DialogFooter";
1803
+ var DialogTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
1804
+ DialogPrimitive.Title,
1805
+ {
1806
+ ref,
1807
+ className: cn("text-lg font-semibold leading-tight tracking-tight text-foreground", className),
1808
+ ...props
1809
+ }
1810
+ ));
1811
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
1812
+ var DialogDescription = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
1813
+ DialogPrimitive.Description,
1814
+ {
1815
+ ref,
1816
+ className: cn("text-sm leading-relaxed text-muted-foreground", className),
1817
+ ...props
1818
+ }
1819
+ ));
1820
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
1821
+
1822
+ // src/components/alert-dialog.tsx
1823
+ import * as React26 from "react";
1824
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
1825
+ import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
1826
+ var AlertDialogSizeContext = React26.createContext("default");
1827
+ var AlertDialog = AlertDialogPrimitive.Root;
1828
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
1829
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
1830
+ var AlertDialogOverlay = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
1831
+ AlertDialogPrimitive.Overlay,
1832
+ {
1833
+ className: cn(
1834
+ "fixed inset-0 z-50 bg-black/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1835
+ className
1836
+ ),
1837
+ ...props,
1838
+ ref
1839
+ }
1840
+ ));
1841
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
1842
+ var AlertDialogContent = React26.forwardRef(({ className, size = "default", ...props }, ref) => /* @__PURE__ */ jsx29(AlertDialogSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsxs18(AlertDialogPortal, { children: [
1843
+ /* @__PURE__ */ jsx29(AlertDialogOverlay, {}),
1844
+ /* @__PURE__ */ jsx29(
1845
+ AlertDialogPrimitive.Content,
1846
+ {
1847
+ ref,
1848
+ className: cn(
1849
+ "group/alert-dialog-content fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
1850
+ size === "sm" ? "max-w-sm p-5" : "max-w-lg p-6",
1851
+ className
1852
+ ),
1853
+ ...props
1854
+ }
1855
+ )
1856
+ ] }) }));
1857
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
1858
+ var AlertDialogMedia = React26.forwardRef(({ className, tone = "primary", children, ...props }, ref) => {
1859
+ const size = React26.useContext(AlertDialogSizeContext);
1860
+ const tones = {
1861
+ primary: "bg-[var(--hc-primary-100)] text-[var(--hc-primary-600)]",
1862
+ destructive: "bg-[color-mix(in_srgb,var(--hc-color-destructive)_12%,transparent)] text-[var(--hc-color-destructive)]",
1863
+ success: "bg-[var(--hc-banner-success-bg)] text-[var(--hc-color-success)]",
1864
+ warning: "bg-[var(--hc-banner-warning-bg)] text-[var(--hc-color-warning)]",
1865
+ muted: "bg-muted text-foreground"
1866
+ };
1867
+ return /* @__PURE__ */ jsx29(
1868
+ "div",
1869
+ {
1870
+ ref,
1871
+ "data-slot": "media",
1872
+ className: cn(
1873
+ "flex shrink-0 items-center justify-center self-center rounded-full",
1874
+ size === "sm" ? "h-9 w-9 [&>svg]:size-[18px]" : "h-10 w-10 [&>svg]:size-5",
1875
+ tones[tone],
1876
+ className
1877
+ ),
1878
+ ...props,
1879
+ children
1880
+ }
1881
+ );
1882
+ });
1883
+ AlertDialogMedia.displayName = "AlertDialogMedia";
1884
+ var AlertDialogHeader = ({ className, children, ...props }) => {
1885
+ const size = React26.useContext(AlertDialogSizeContext);
1886
+ const hasMedia = React26.Children.toArray(children).some(
1887
+ (c) => React26.isValidElement(c) && c.type?.displayName === "AlertDialogMedia"
1888
+ );
1889
+ return /* @__PURE__ */ jsx29(
1890
+ "div",
1891
+ {
1892
+ className: cn(
1893
+ "flex flex-col gap-2",
1894
+ hasMedia || size === "sm" ? "items-center text-center" : "text-center sm:text-left",
1895
+ className
1896
+ ),
1897
+ ...props,
1898
+ children
1899
+ }
1900
+ );
1901
+ };
1902
+ AlertDialogHeader.displayName = "AlertDialogHeader";
1903
+ var AlertDialogFooter = ({ className, ...props }) => {
1904
+ const size = React26.useContext(AlertDialogSizeContext);
1905
+ return /* @__PURE__ */ jsx29(
1906
+ "div",
1907
+ {
1908
+ className: cn(
1909
+ "flex flex-col-reverse gap-2 sm:flex-row sm:space-x-0 sm:[&>button]:min-w-[96px]",
1910
+ // Center if small or when the Content has a media slot
1911
+ size === "sm" ? "sm:justify-center" : "sm:justify-end group-has-[[data-slot=media]]/alert-dialog-content:sm:justify-center",
1912
+ className
1913
+ ),
1914
+ ...props
1915
+ }
1916
+ );
1917
+ };
1918
+ AlertDialogFooter.displayName = "AlertDialogFooter";
1919
+ var AlertDialogTitle = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
1920
+ AlertDialogPrimitive.Title,
1921
+ {
1922
+ ref,
1923
+ className: cn("text-lg font-semibold leading-tight tracking-tight text-foreground", className),
1924
+ ...props
1925
+ }
1926
+ ));
1927
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
1928
+ var AlertDialogDescription = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
1929
+ AlertDialogPrimitive.Description,
1930
+ {
1931
+ ref,
1932
+ className: cn("text-sm leading-relaxed text-muted-foreground", className),
1933
+ ...props
1934
+ }
1935
+ ));
1936
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
1937
+ var AlertDialogAction = React26.forwardRef(({ className, variant = "default", ...props }, ref) => /* @__PURE__ */ jsx29(
1938
+ AlertDialogPrimitive.Action,
1939
+ {
1940
+ ref,
1941
+ className: cn(
1942
+ buttonVariants({ variant: variant === "destructive" ? "destructive" : "default" }),
1943
+ className
1944
+ ),
1945
+ ...props
1946
+ }
1947
+ ));
1948
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
1949
+ var AlertDialogCancel = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
1950
+ AlertDialogPrimitive.Cancel,
1951
+ {
1952
+ ref,
1953
+ className: cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className),
1954
+ ...props
1955
+ }
1956
+ ));
1957
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
1958
+
1959
+ // src/components/sheet.tsx
1960
+ import * as React27 from "react";
1961
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
1962
+ import { cva as cva13 } from "class-variance-authority";
1963
+ import { X as X3 } from "lucide-react";
1964
+ import { jsx as jsx30, jsxs as jsxs19 } from "react/jsx-runtime";
1965
+ var Sheet = SheetPrimitive.Root;
1966
+ var SheetTrigger = SheetPrimitive.Trigger;
1967
+ var SheetClose = SheetPrimitive.Close;
1968
+ var SheetPortal = SheetPrimitive.Portal;
1969
+ var SheetOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
1970
+ SheetPrimitive.Overlay,
1971
+ {
1972
+ className: cn(
1973
+ "fixed inset-0 z-50 bg-black/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1974
+ className
1975
+ ),
1976
+ ...props,
1977
+ ref
1978
+ }
1979
+ ));
1980
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
1981
+ var sheetVariants = cva13(
1982
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
1983
+ {
1984
+ variants: {
1985
+ side: {
1986
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
1987
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
1988
+ left: "inset-y-0 start-0 h-full border-e ltr:data-[state=closed]:slide-out-to-left ltr:data-[state=open]:slide-in-from-left rtl:data-[state=closed]:slide-out-to-right rtl:data-[state=open]:slide-in-from-right",
1989
+ right: "inset-y-0 end-0 h-full border-s ltr:data-[state=closed]:slide-out-to-right ltr:data-[state=open]:slide-in-from-right rtl:data-[state=closed]:slide-out-to-left rtl:data-[state=open]:slide-in-from-left"
1990
+ },
1991
+ size: {
1992
+ sm: "",
1993
+ md: "",
1994
+ lg: "",
1995
+ full: ""
1996
+ }
1997
+ },
1998
+ compoundVariants: [
1999
+ { side: "left", size: "sm", className: "w-3/4 max-w-sm" },
2000
+ { side: "left", size: "md", className: "w-3/4 max-w-md" },
2001
+ { side: "left", size: "lg", className: "w-3/4 max-w-lg" },
2002
+ { side: "left", size: "full", className: "w-full" },
2003
+ { side: "right", size: "sm", className: "w-3/4 max-w-sm" },
2004
+ { side: "right", size: "md", className: "w-3/4 max-w-md" },
2005
+ { side: "right", size: "lg", className: "w-3/4 max-w-lg" },
2006
+ { side: "right", size: "full", className: "w-full" }
2007
+ ],
2008
+ defaultVariants: {
2009
+ side: "right",
2010
+ size: "md"
2011
+ }
2012
+ }
2013
+ );
2014
+ var SheetContent = React27.forwardRef(({ side = "right", size = "md", className, children, ...props }, ref) => /* @__PURE__ */ jsxs19(SheetPortal, { children: [
2015
+ /* @__PURE__ */ jsx30(SheetOverlay, {}),
2016
+ /* @__PURE__ */ jsxs19(
2017
+ SheetPrimitive.Content,
2018
+ {
2019
+ ref,
2020
+ className: cn(sheetVariants({ side, size }), className),
2021
+ ...props,
2022
+ children: [
2023
+ children,
2024
+ /* @__PURE__ */ jsxs19(SheetPrimitive.Close, { className: "absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
2025
+ /* @__PURE__ */ jsx30(X3, { className: "h-4 w-4" }),
2026
+ /* @__PURE__ */ jsx30("span", { className: "sr-only", children: "Close" })
2027
+ ] })
2028
+ ]
2029
+ }
2030
+ )
2031
+ ] }));
2032
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
2033
+ var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx30("div", { className: cn("flex flex-col space-y-2 text-center sm:text-start", className), ...props });
2034
+ SheetHeader.displayName = "SheetHeader";
2035
+ var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx30("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
2036
+ SheetFooter.displayName = "SheetFooter";
2037
+ var SheetTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
2038
+ SheetPrimitive.Title,
2039
+ {
2040
+ ref,
2041
+ className: cn("text-lg font-semibold text-foreground", className),
2042
+ ...props
2043
+ }
2044
+ ));
2045
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
2046
+ var SheetDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
2047
+ SheetPrimitive.Description,
2048
+ {
2049
+ ref,
2050
+ className: cn("text-sm text-muted-foreground", className),
2051
+ ...props
2052
+ }
2053
+ ));
2054
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
2055
+
2056
+ // src/components/drawer.tsx
2057
+ import * as React28 from "react";
2058
+ import { Drawer as DrawerPrimitive } from "vaul";
2059
+ import { jsx as jsx31, jsxs as jsxs20 } from "react/jsx-runtime";
2060
+ var DrawerSideContext = React28.createContext("bottom");
2061
+ var Drawer = ({
2062
+ shouldScaleBackground = true,
2063
+ side = "bottom",
2064
+ ...props
2065
+ }) => {
2066
+ const rootProps = {
2067
+ shouldScaleBackground,
2068
+ direction: side,
2069
+ ...props
2070
+ };
2071
+ return /* @__PURE__ */ jsx31(DrawerSideContext.Provider, { value: side, children: /* @__PURE__ */ jsx31(DrawerPrimitive.Root, { ...rootProps }) });
2072
+ };
2073
+ Drawer.displayName = "Drawer";
2074
+ var DrawerTrigger = DrawerPrimitive.Trigger;
2075
+ var DrawerPortal = DrawerPrimitive.Portal;
2076
+ var DrawerClose = DrawerPrimitive.Close;
2077
+ var DrawerOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2078
+ DrawerPrimitive.Overlay,
2079
+ {
2080
+ ref,
2081
+ className: cn("fixed inset-0 z-50 bg-black/80", className),
2082
+ ...props
2083
+ }
2084
+ ));
2085
+ DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
2086
+ var sideClasses = {
2087
+ bottom: "inset-x-0 bottom-0 mt-24 h-auto rounded-t-[10px] border shadow-lg",
2088
+ top: "inset-x-0 top-0 mb-24 h-auto rounded-b-[10px] border shadow-lg",
2089
+ left: "inset-y-0 start-0 w-[22rem] max-w-[85vw] border-e shadow-lg",
2090
+ right: "inset-y-0 end-0 w-[22rem] max-w-[85vw] border-s shadow-lg"
2091
+ };
2092
+ var handleClasses = {
2093
+ bottom: "mx-auto mt-4 mb-2 h-1.5 w-[80px] rounded-full bg-[var(--hc-color-border-subtle)]",
2094
+ top: "mx-auto mb-4 mt-2 h-1.5 w-[80px] rounded-full bg-[var(--hc-color-border-subtle)]",
2095
+ left: "hidden",
2096
+ right: "hidden"
2097
+ };
2098
+ var DrawerContent = React28.forwardRef(({ className, children, ...props }, ref) => {
2099
+ const side = React28.useContext(DrawerSideContext);
2100
+ return /* @__PURE__ */ jsxs20(DrawerPortal, { children: [
2101
+ /* @__PURE__ */ jsx31(DrawerOverlay, {}),
2102
+ /* @__PURE__ */ jsxs20(
2103
+ DrawerPrimitive.Content,
2104
+ {
2105
+ ref,
2106
+ className: cn(
2107
+ "fixed z-50 flex flex-col bg-background",
2108
+ sideClasses[side],
2109
+ className
2110
+ ),
2111
+ ...props,
2112
+ children: [
2113
+ /* @__PURE__ */ jsx31("div", { className: handleClasses[side] }),
2114
+ children
2115
+ ]
2116
+ }
2117
+ )
2118
+ ] });
2119
+ });
2120
+ DrawerContent.displayName = "DrawerContent";
2121
+ var DrawerHeader = ({ className, ...props }) => /* @__PURE__ */ jsx31(
2122
+ "div",
2123
+ {
2124
+ className: cn(
2125
+ "grid gap-1.5 px-6 pt-5 pb-4 text-start border-b border-[var(--hc-color-border-subtle)]",
2126
+ className
2127
+ ),
2128
+ ...props
2129
+ }
2130
+ );
2131
+ DrawerHeader.displayName = "DrawerHeader";
2132
+ var DrawerFooter = ({ className, ...props }) => /* @__PURE__ */ jsx31(
2133
+ "div",
2134
+ {
2135
+ className: cn(
2136
+ "mt-auto flex flex-col-reverse gap-2 px-6 py-4 border-t border-[var(--hc-color-border-subtle)] sm:flex-row sm:justify-end sm:[&>button]:min-w-[88px]",
2137
+ className
2138
+ ),
2139
+ ...props
2140
+ }
2141
+ );
2142
+ DrawerFooter.displayName = "DrawerFooter";
2143
+ var DrawerTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2144
+ DrawerPrimitive.Title,
2145
+ {
2146
+ ref,
2147
+ className: cn("text-lg font-semibold leading-tight tracking-tight text-foreground", className),
2148
+ ...props
2149
+ }
2150
+ ));
2151
+ DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
2152
+ var DrawerDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2153
+ DrawerPrimitive.Description,
2154
+ {
2155
+ ref,
2156
+ className: cn("text-sm leading-relaxed text-muted-foreground", className),
2157
+ ...props
2158
+ }
2159
+ ));
2160
+ DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
2161
+ var DrawerBody = React28.forwardRef(
2162
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2163
+ "div",
2164
+ {
2165
+ ref,
2166
+ className: cn("flex-1 overflow-y-auto px-6 py-4 text-sm text-foreground", className),
2167
+ ...props
2168
+ }
2169
+ )
2170
+ );
2171
+ DrawerBody.displayName = "DrawerBody";
2172
+
2173
+ // src/components/popover.tsx
2174
+ import * as React29 from "react";
2175
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
2176
+ import { jsx as jsx32 } from "react/jsx-runtime";
2177
+ var Popover = PopoverPrimitive.Root;
2178
+ var PopoverTrigger = PopoverPrimitive.Trigger;
2179
+ var PopoverContent = React29.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx32(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx32(
2180
+ PopoverPrimitive.Content,
2181
+ {
2182
+ ref,
2183
+ align,
2184
+ sideOffset,
2185
+ className: cn(
2186
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2187
+ className
2188
+ ),
2189
+ ...props
2190
+ }
2191
+ ) }));
2192
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2193
+
2194
+ // src/components/hover-card.tsx
2195
+ import * as React30 from "react";
2196
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
2197
+ import { jsx as jsx33 } from "react/jsx-runtime";
2198
+ var HoverCard = HoverCardPrimitive.Root;
2199
+ var HoverCardTrigger = HoverCardPrimitive.Trigger;
2200
+ var HoverCardContent = React30.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx33(
2201
+ HoverCardPrimitive.Content,
2202
+ {
2203
+ ref,
2204
+ align,
2205
+ sideOffset,
2206
+ className: cn(
2207
+ "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2208
+ className
2209
+ ),
2210
+ ...props
2211
+ }
2212
+ ));
2213
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
2214
+
2215
+ // src/components/context-menu.tsx
2216
+ import * as React31 from "react";
2217
+ import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
2218
+ import { Check as Check3, ChevronRight, Circle as Circle2 } from "lucide-react";
2219
+ import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
2220
+ var ContextMenu = ContextMenuPrimitive.Root;
2221
+ var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
2222
+ var ContextMenuGroup = ContextMenuPrimitive.Group;
2223
+ var ContextMenuPortal = ContextMenuPrimitive.Portal;
2224
+ var ContextMenuSub = ContextMenuPrimitive.Sub;
2225
+ var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
2226
+ var ContextMenuSubTrigger = React31.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs21(
2227
+ ContextMenuPrimitive.SubTrigger,
2228
+ {
2229
+ ref,
2230
+ className: cn(
2231
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-muted focus:text-foreground data-[state=open]:bg-muted data-[state=open]:text-foreground",
2232
+ inset && "ps-8",
2233
+ className
2234
+ ),
2235
+ ...props,
2236
+ children: [
2237
+ children,
2238
+ /* @__PURE__ */ jsx34(ChevronRight, { className: "ms-auto h-4 w-4" })
2239
+ ]
2240
+ }
2241
+ ));
2242
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
2243
+ var ContextMenuSubContent = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2244
+ ContextMenuPrimitive.SubContent,
2245
+ {
2246
+ ref,
2247
+ className: cn(
2248
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2249
+ className
2250
+ ),
2251
+ ...props
2252
+ }
2253
+ ));
2254
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
2255
+ var ContextMenuContent = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx34(
2256
+ ContextMenuPrimitive.Content,
2257
+ {
2258
+ ref,
2259
+ className: cn(
2260
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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",
2261
+ className
2262
+ ),
2263
+ ...props
2264
+ }
2265
+ ) }));
2266
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
2267
+ var ContextMenuItem = React31.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx34(
2268
+ ContextMenuPrimitive.Item,
2269
+ {
2270
+ ref,
2271
+ className: cn(
2272
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-muted focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2273
+ inset && "ps-8",
2274
+ className
2275
+ ),
2276
+ ...props
2277
+ }
2278
+ ));
2279
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
2280
+ var ContextMenuCheckboxItem = React31.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs21(
2281
+ ContextMenuPrimitive.CheckboxItem,
2282
+ {
2283
+ ref,
2284
+ className: cn(
2285
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-none focus:bg-muted focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2286
+ className
2287
+ ),
2288
+ checked,
2289
+ ...props,
2290
+ children: [
2291
+ /* @__PURE__ */ jsx34("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx34(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx34(Check3, { className: "h-4 w-4" }) }) }),
2292
+ children
2293
+ ]
2294
+ }
2295
+ ));
2296
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
2297
+ var ContextMenuRadioItem = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs21(
2298
+ ContextMenuPrimitive.RadioItem,
2299
+ {
2300
+ ref,
2301
+ className: cn(
2302
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-none focus:bg-muted focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2303
+ className
2304
+ ),
2305
+ ...props,
2306
+ children: [
2307
+ /* @__PURE__ */ jsx34("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx34(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx34(Circle2, { className: "h-2 w-2 fill-current" }) }) }),
2308
+ children
2309
+ ]
2310
+ }
2311
+ ));
2312
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
2313
+ var ContextMenuLabel = React31.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx34(
2314
+ ContextMenuPrimitive.Label,
2315
+ {
2316
+ ref,
2317
+ className: cn("px-2 py-1.5 text-sm font-semibold text-foreground", inset && "ps-8", className),
2318
+ ...props
2319
+ }
2320
+ ));
2321
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
2322
+ var ContextMenuSeparator = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2323
+ ContextMenuPrimitive.Separator,
2324
+ {
2325
+ ref,
2326
+ className: cn("-mx-1 my-1 h-px bg-border", className),
2327
+ ...props
2328
+ }
2329
+ ));
2330
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
2331
+ var ContextMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx34("span", { className: cn("ms-auto text-xs tracking-widest text-muted-foreground", className), ...props });
2332
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
2333
+
2334
+ // src/components/dropdown-menu.tsx
2335
+ import * as React32 from "react";
2336
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
2337
+ import { Check as Check4, ChevronRight as ChevronRight2, Circle as Circle3 } from "lucide-react";
2338
+ import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
2339
+ var DropdownMenu = DropdownMenuPrimitive.Root;
2340
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
2341
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
2342
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
2343
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
2344
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
2345
+ var DropdownMenuSubTrigger = React32.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs22(
2346
+ DropdownMenuPrimitive.SubTrigger,
2347
+ {
2348
+ ref,
2349
+ className: cn(
2350
+ "flex cursor-default select-none items-center rounded-[6px] px-[12px] py-[6px] text-[14px] leading-[20px] font-normal text-[var(--hc-grey-700)] outline-none focus:bg-[var(--hc-primary-100)] data-[state=open]:bg-[var(--hc-primary-100)]",
2351
+ inset && "ps-8",
2352
+ className
2353
+ ),
2354
+ ...props,
2355
+ children: [
2356
+ children,
2357
+ /* @__PURE__ */ jsx35(ChevronRight2, { className: "ms-auto h-4 w-4" })
2358
+ ]
2359
+ }
2360
+ ));
2361
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
2362
+ var DropdownMenuSubContent = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
2363
+ DropdownMenuPrimitive.SubContent,
2364
+ {
2365
+ ref,
2366
+ className: cn(
2367
+ "z-50 min-w-[8rem] overflow-hidden rounded-[6px] border border-[var(--hc-color-border-subtle)] bg-popover p-1 text-popover-foreground shadow-sm 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",
2368
+ className
2369
+ ),
2370
+ ...props
2371
+ }
2372
+ ));
2373
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
2374
+ var DropdownMenuContent = React32.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx35(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx35(
2375
+ DropdownMenuPrimitive.Content,
2376
+ {
2377
+ ref,
2378
+ sideOffset,
2379
+ className: cn(
2380
+ "z-50 min-w-[8rem] overflow-hidden rounded-[6px] border border-[var(--hc-color-border-subtle)] bg-popover p-1 text-popover-foreground shadow-sm 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",
2381
+ className
2382
+ ),
2383
+ ...props
2384
+ }
2385
+ ) }));
2386
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
2387
+ var DropdownMenuItem = React32.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx35(
2388
+ DropdownMenuPrimitive.Item,
2389
+ {
2390
+ ref,
2391
+ className: cn(
2392
+ "relative flex cursor-default select-none items-center rounded-[6px] px-[12px] py-[6px] text-[14px] leading-[20px] font-normal text-[var(--hc-grey-700)] outline-none transition-colors focus:bg-[var(--hc-primary-100)] data-[highlighted]:bg-[var(--hc-primary-600)] data-[highlighted]:text-white data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2393
+ inset && "ps-8",
2394
+ className
2395
+ ),
2396
+ ...props
2397
+ }
2398
+ ));
2399
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
2400
+ var DropdownMenuCheckboxItem = React32.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs22(
2401
+ DropdownMenuPrimitive.CheckboxItem,
2402
+ {
2403
+ ref,
2404
+ className: cn(
2405
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-none transition-colors focus:bg-muted focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2406
+ className
2407
+ ),
2408
+ checked,
2409
+ ...props,
2410
+ children: [
2411
+ /* @__PURE__ */ jsx35("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx35(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx35(Check4, { className: "h-4 w-4" }) }) }),
2412
+ children
2413
+ ]
2414
+ }
2415
+ ));
2416
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
2417
+ var DropdownMenuRadioItem = React32.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs22(
2418
+ DropdownMenuPrimitive.RadioItem,
2419
+ {
2420
+ ref,
2421
+ className: cn(
2422
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-none transition-colors focus:bg-muted focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2423
+ className
2424
+ ),
2425
+ ...props,
2426
+ children: [
2427
+ /* @__PURE__ */ jsx35("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx35(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx35(Circle3, { className: "h-2 w-2 fill-current" }) }) }),
2428
+ children
2429
+ ]
2430
+ }
2431
+ ));
2432
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
2433
+ var DropdownMenuLabel = React32.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx35(
2434
+ DropdownMenuPrimitive.Label,
2435
+ {
2436
+ ref,
2437
+ className: cn("px-[12px] py-[6px] text-[14px] font-semibold", inset && "ps-8", className),
2438
+ ...props
2439
+ }
2440
+ ));
2441
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
2442
+ var DropdownMenuSeparator = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
2443
+ DropdownMenuPrimitive.Separator,
2444
+ {
2445
+ ref,
2446
+ className: cn("-mx-1 my-1 h-px bg-[var(--hc-color-border-subtle)]", className),
2447
+ ...props
2448
+ }
2449
+ ));
2450
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
2451
+ var DropdownMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx35("span", { className: cn("ms-auto text-xs tracking-widest opacity-60", className), ...props });
2452
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
2453
+
2454
+ // src/components/tabs.tsx
2455
+ import * as React33 from "react";
2456
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
2457
+ import { jsx as jsx36 } from "react/jsx-runtime";
2458
+ var Tabs = TabsPrimitive.Root;
2459
+ var TabsList = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
2460
+ TabsPrimitive.List,
2461
+ {
2462
+ ref,
2463
+ className: cn(
2464
+ "inline-flex items-center rounded-md bg-muted p-1 gap-0.5",
2465
+ className
2466
+ ),
2467
+ ...props
2468
+ }
2469
+ ));
2470
+ TabsList.displayName = TabsPrimitive.List.displayName;
2471
+ var TabsTrigger = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
2472
+ TabsPrimitive.Trigger,
2473
+ {
2474
+ ref,
2475
+ className: cn(
2476
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-2 py-1.5 text-sm leading-5 font-normal gap-1.5 ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 text-foreground [&_svg]:text-foreground data-[state=active]:bg-background data-[state=active]:text-primary data-[state=active]:shadow-sm [&_svg]:size-4 data-[state=active]:[&_svg]:text-primary",
2477
+ className
2478
+ ),
2479
+ ...props
2480
+ }
2481
+ ));
2482
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
2483
+ var TabsContent = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
2484
+ TabsPrimitive.Content,
2485
+ {
2486
+ ref,
2487
+ className: cn(
2488
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2489
+ className
2490
+ ),
2491
+ ...props
2492
+ }
2493
+ ));
2494
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
2495
+
2496
+ // src/components/accordion.tsx
2497
+ import * as React34 from "react";
2498
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
2499
+ import { ChevronDown as ChevronDown2 } from "lucide-react";
2500
+ import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
2501
+ var AccordionVariantContext = React34.createContext("default");
2502
+ var Accordion = React34.forwardRef(({ variant = "default", className, ...props }, ref) => /* @__PURE__ */ jsx37(AccordionVariantContext.Provider, { value: variant, children: /* @__PURE__ */ jsx37(
2503
+ AccordionPrimitive.Root,
2504
+ {
2505
+ ref,
2506
+ className: cn(
2507
+ variant === "bordered" && "space-y-2",
2508
+ variant === "separated" && "space-y-3",
2509
+ className
2510
+ ),
2511
+ ...props
2512
+ }
2513
+ ) }));
2514
+ Accordion.displayName = "Accordion";
2515
+ var AccordionItem = React34.forwardRef(({ className, ...props }, ref) => {
2516
+ const variant = React34.useContext(AccordionVariantContext);
2517
+ return /* @__PURE__ */ jsx37(
2518
+ AccordionPrimitive.Item,
2519
+ {
2520
+ ref,
2521
+ className: cn(
2522
+ variant === "default" && "border-b",
2523
+ variant === "bordered" && "border rounded-md",
2524
+ variant === "ghost" && "",
2525
+ variant === "separated" && "border rounded-lg bg-card",
2526
+ className
2527
+ ),
2528
+ ...props
2529
+ }
2530
+ );
2531
+ });
2532
+ AccordionItem.displayName = "AccordionItem";
2533
+ var AccordionTrigger = React34.forwardRef(({ className, children, ...props }, ref) => {
2534
+ const variant = React34.useContext(AccordionVariantContext);
2535
+ return /* @__PURE__ */ jsx37(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs23(
2536
+ AccordionPrimitive.Trigger,
2537
+ {
2538
+ ref,
2539
+ className: cn(
2540
+ "flex flex-1 items-center justify-between text-sm font-medium transition-all [&[data-state=open]>svg]:rotate-180",
2541
+ variant === "default" && "py-4 hover:underline",
2542
+ variant === "bordered" && "px-4 py-4 hover:underline",
2543
+ variant === "ghost" && "py-3 px-3 rounded-md hover:bg-accent",
2544
+ variant === "separated" && "px-4 py-3",
2545
+ className
2546
+ ),
2547
+ ...props,
2548
+ children: [
2549
+ children,
2550
+ /* @__PURE__ */ jsx37(ChevronDown2, { className: "size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
2551
+ ]
2552
+ }
2553
+ ) });
2554
+ });
2555
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
2556
+ var AccordionContent = React34.forwardRef(({ className, children, ...props }, ref) => {
2557
+ const variant = React34.useContext(AccordionVariantContext);
2558
+ return /* @__PURE__ */ jsx37(
2559
+ AccordionPrimitive.Content,
2560
+ {
2561
+ ref,
2562
+ className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
2563
+ ...props,
2564
+ children: /* @__PURE__ */ jsx37(
2565
+ "div",
2566
+ {
2567
+ className: cn(
2568
+ "pb-4 pt-0",
2569
+ (variant === "bordered" || variant === "separated") && "px-4",
2570
+ variant === "ghost" && "px-3",
2571
+ className
2572
+ ),
2573
+ children
2574
+ }
2575
+ )
2576
+ }
2577
+ );
2578
+ });
2579
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
2580
+
2581
+ // src/components/collapsible.tsx
2582
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
2583
+ var Collapsible = CollapsiblePrimitive.Root;
2584
+ var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
2585
+ var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
2586
+
2587
+ // src/components/navigation-menu.tsx
2588
+ import * as React35 from "react";
2589
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
2590
+ import { cva as cva14 } from "class-variance-authority";
2591
+ import { ChevronDown as ChevronDown3 } from "lucide-react";
2592
+ import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
2593
+ var NavigationMenu = React35.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs24(
2594
+ NavigationMenuPrimitive.Root,
2595
+ {
2596
+ ref,
2597
+ className: cn("relative z-10 flex max-w-max flex-1 items-center justify-center", className),
2598
+ ...props,
2599
+ children: [
2600
+ children,
2601
+ /* @__PURE__ */ jsx38(NavigationMenuViewport, {})
2602
+ ]
2603
+ }
2604
+ ));
2605
+ NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
2606
+ var NavigationMenuList = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
2607
+ NavigationMenuPrimitive.List,
2608
+ {
2609
+ ref,
2610
+ className: cn("group flex flex-1 list-none items-center justify-center space-x-1", className),
2611
+ ...props
2612
+ }
2613
+ ));
2614
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
2615
+ var NavigationMenuItem = NavigationMenuPrimitive.Item;
2616
+ var navigationMenuTriggerStyle = cva14(
2617
+ "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-muted hover:text-foreground focus:bg-muted focus:text-foreground focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-muted/50 data-[state=open]:bg-muted/50"
2618
+ );
2619
+ var NavigationMenuTrigger = React35.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs24(
2620
+ NavigationMenuPrimitive.Trigger,
2621
+ {
2622
+ ref,
2623
+ className: cn(navigationMenuTriggerStyle(), "group", className),
2624
+ ...props,
2625
+ children: [
2626
+ children,
2627
+ " ",
2628
+ /* @__PURE__ */ jsx38(
2629
+ ChevronDown3,
2630
+ {
2631
+ className: "relative top-[1px] ms-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180",
2632
+ "aria-hidden": "true"
2633
+ }
2634
+ )
2635
+ ]
2636
+ }
2637
+ ));
2638
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
2639
+ var NavigationMenuContent = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
2640
+ NavigationMenuPrimitive.Content,
2641
+ {
2642
+ ref,
2643
+ className: cn(
2644
+ "start-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto",
2645
+ className
2646
+ ),
2647
+ ...props
2648
+ }
2649
+ ));
2650
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
2651
+ var NavigationMenuLink = NavigationMenuPrimitive.Link;
2652
+ var NavigationMenuViewport = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38("div", { className: cn("absolute start-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx38(
2653
+ NavigationMenuPrimitive.Viewport,
2654
+ {
2655
+ className: cn(
2656
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
2657
+ className
2658
+ ),
2659
+ ref,
2660
+ ...props
2661
+ }
2662
+ ) }));
2663
+ NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
2664
+ var NavigationMenuIndicator = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
2665
+ NavigationMenuPrimitive.Indicator,
2666
+ {
2667
+ ref,
2668
+ className: cn(
2669
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
2670
+ className
2671
+ ),
2672
+ ...props,
2673
+ children: /* @__PURE__ */ jsx38("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
2674
+ }
2675
+ ));
2676
+ NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
2677
+
2678
+ // src/components/breadcrumb.tsx
2679
+ import * as React36 from "react";
2680
+ import { Slot as Slot3 } from "@radix-ui/react-slot";
2681
+ import { ChevronRight as ChevronRight3, MoreHorizontal } from "lucide-react";
2682
+ import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
2683
+ var Breadcrumb = React36.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx39("nav", { ref, "aria-label": "breadcrumb", ...props }));
2684
+ Breadcrumb.displayName = "Breadcrumb";
2685
+ var BreadcrumbList = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(
2686
+ "ol",
2687
+ {
2688
+ ref,
2689
+ className: cn(
2690
+ "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
2691
+ className
2692
+ ),
2693
+ ...props
2694
+ }
2695
+ ));
2696
+ BreadcrumbList.displayName = "BreadcrumbList";
2697
+ var BreadcrumbItem = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(
2698
+ "li",
2699
+ {
2700
+ ref,
2701
+ className: cn("inline-flex items-center gap-1.5", className),
2702
+ ...props
2703
+ }
2704
+ ));
2705
+ BreadcrumbItem.displayName = "BreadcrumbItem";
2706
+ var BreadcrumbLink = React36.forwardRef(({ asChild, className, ...props }, ref) => {
2707
+ const Comp = asChild ? Slot3 : "a";
2708
+ return /* @__PURE__ */ jsx39(
2709
+ Comp,
2710
+ {
2711
+ ref,
2712
+ className: cn("transition-colors hover:text-foreground", className),
2713
+ ...props
2714
+ }
2715
+ );
2716
+ });
2717
+ BreadcrumbLink.displayName = "BreadcrumbLink";
2718
+ var BreadcrumbPage = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(
2719
+ "span",
2720
+ {
2721
+ ref,
2722
+ role: "link",
2723
+ "aria-disabled": "true",
2724
+ "aria-current": "page",
2725
+ className: cn("font-normal text-foreground", className),
2726
+ ...props
2727
+ }
2728
+ ));
2729
+ BreadcrumbPage.displayName = "BreadcrumbPage";
2730
+ var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */ jsx39(
2731
+ "li",
2732
+ {
2733
+ role: "presentation",
2734
+ "aria-hidden": "true",
2735
+ className: cn("[&>svg]:size-3.5", className),
2736
+ ...props,
2737
+ children: children ?? /* @__PURE__ */ jsx39(ChevronRight3, {})
2738
+ }
2739
+ );
2740
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
2741
+ var BreadcrumbEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsxs25(
2742
+ "span",
2743
+ {
2744
+ role: "presentation",
2745
+ "aria-hidden": "true",
2746
+ className: cn("flex h-9 w-9 items-center justify-center", className),
2747
+ ...props,
2748
+ children: [
2749
+ /* @__PURE__ */ jsx39(MoreHorizontal, { className: "h-4 w-4" }),
2750
+ /* @__PURE__ */ jsx39("span", { className: "sr-only", children: "More" })
2751
+ ]
2752
+ }
2753
+ );
2754
+ BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
2755
+
2756
+ // src/components/menubar.tsx
2757
+ import * as React37 from "react";
2758
+ import * as MenubarPrimitive from "@radix-ui/react-menubar";
2759
+ import { Check as Check5, ChevronRight as ChevronRight4, Circle as Circle4 } from "lucide-react";
2760
+ import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
2761
+ var MenubarMenu = MenubarPrimitive.Menu;
2762
+ var MenubarGroup = MenubarPrimitive.Group;
2763
+ var MenubarPortal = MenubarPrimitive.Portal;
2764
+ var MenubarSub = MenubarPrimitive.Sub;
2765
+ var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
2766
+ var Menubar = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
2767
+ MenubarPrimitive.Root,
2768
+ {
2769
+ ref,
2770
+ className: cn("flex h-10 items-center space-x-1 rounded-md border bg-background p-1", className),
2771
+ ...props
2772
+ }
2773
+ ));
2774
+ Menubar.displayName = MenubarPrimitive.Root.displayName;
2775
+ var MenubarTrigger = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
2776
+ MenubarPrimitive.Trigger,
2777
+ {
2778
+ ref,
2779
+ className: cn(
2780
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-muted focus:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background data-[state=open]:bg-muted data-[state=open]:text-foreground",
2781
+ className
2782
+ ),
2783
+ ...props
2784
+ }
2785
+ ));
2786
+ MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
2787
+ var MenubarSubTrigger = React37.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs26(
2788
+ MenubarPrimitive.SubTrigger,
2789
+ {
2790
+ ref,
2791
+ className: cn(
2792
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-muted focus:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background data-[state=open]:bg-muted data-[state=open]:text-foreground",
2793
+ inset && "ps-8",
2794
+ className
2795
+ ),
2796
+ ...props,
2797
+ children: [
2798
+ children,
2799
+ /* @__PURE__ */ jsx40(ChevronRight4, { className: "ms-auto h-4 w-4" })
2800
+ ]
2801
+ }
2802
+ ));
2803
+ MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
2804
+ var MenubarSubContent = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
2805
+ MenubarPrimitive.SubContent,
2806
+ {
2807
+ ref,
2808
+ className: cn(
2809
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 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",
2810
+ className
2811
+ ),
2812
+ ...props
2813
+ }
2814
+ ));
2815
+ MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
2816
+ var MenubarContent = React37.forwardRef(({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx40(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx40(
2817
+ MenubarPrimitive.Content,
2818
+ {
2819
+ ref,
2820
+ align,
2821
+ alignOffset,
2822
+ sideOffset,
2823
+ className: cn(
2824
+ "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2825
+ className
2826
+ ),
2827
+ ...props
2828
+ }
2829
+ ) }));
2830
+ MenubarContent.displayName = MenubarPrimitive.Content.displayName;
2831
+ var MenubarItem = React37.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx40(
2832
+ MenubarPrimitive.Item,
2833
+ {
2834
+ ref,
2835
+ className: cn(
2836
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-muted focus:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2837
+ inset && "ps-8",
2838
+ className
2839
+ ),
2840
+ ...props
2841
+ }
2842
+ ));
2843
+ MenubarItem.displayName = MenubarPrimitive.Item.displayName;
2844
+ var MenubarCheckboxItem = React37.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs26(
2845
+ MenubarPrimitive.CheckboxItem,
2846
+ {
2847
+ ref,
2848
+ className: cn(
2849
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-none focus:bg-muted focus:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2850
+ className
2851
+ ),
2852
+ checked,
2853
+ ...props,
2854
+ children: [
2855
+ /* @__PURE__ */ jsx40("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx40(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx40(Check5, { className: "h-4 w-4" }) }) }),
2856
+ children
2857
+ ]
2858
+ }
2859
+ ));
2860
+ MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
2861
+ var MenubarRadioItem = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs26(
2862
+ MenubarPrimitive.RadioItem,
2863
+ {
2864
+ ref,
2865
+ className: cn(
2866
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-none focus:bg-muted focus:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-1 focus-visible:ring-offset-background data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2867
+ className
2868
+ ),
2869
+ ...props,
2870
+ children: [
2871
+ /* @__PURE__ */ jsx40("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx40(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx40(Circle4, { className: "h-2 w-2 fill-current" }) }) }),
2872
+ children
2873
+ ]
2874
+ }
2875
+ ));
2876
+ MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
2877
+ var MenubarLabel = React37.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx40(
2878
+ MenubarPrimitive.Label,
2879
+ {
2880
+ ref,
2881
+ className: cn("px-2 py-1.5 text-sm font-semibold", inset && "ps-8", className),
2882
+ ...props
2883
+ }
2884
+ ));
2885
+ MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
2886
+ var MenubarSeparator = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
2887
+ MenubarPrimitive.Separator,
2888
+ {
2889
+ ref,
2890
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
2891
+ ...props
2892
+ }
2893
+ ));
2894
+ MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
2895
+ var MenubarShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx40("span", { className: cn("ms-auto text-xs tracking-widest text-muted-foreground", className), ...props });
2896
+ MenubarShortcut.displayName = "MenubarShortcut";
2897
+
2898
+ // src/components/sidebar.tsx
2899
+ import * as React38 from "react";
2900
+ import { Slot as Slot4 } from "@radix-ui/react-slot";
2901
+ import { PanelLeft } from "lucide-react";
2902
+ import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
2903
+ var SIDEBAR_WIDTH = "239px";
2904
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
2905
+ var SIDEBAR_WIDTH_ICON = "3rem";
2906
+ var SidebarContext = React38.createContext(null);
2907
+ function useSidebar() {
2908
+ const context = React38.useContext(SidebarContext);
2909
+ if (!context) {
2910
+ throw new Error("useSidebar must be used within a SidebarProvider.");
2911
+ }
2912
+ return context;
2913
+ }
2914
+ var SidebarProvider = React38.forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {
2915
+ const [openMobile, setOpenMobile] = React38.useState(false);
2916
+ const [_open, _setOpen] = React38.useState(defaultOpen);
2917
+ const open = openProp ?? _open;
2918
+ const setOpen = React38.useCallback(
2919
+ (value) => {
2920
+ const openState = typeof value === "function" ? value(open) : value;
2921
+ if (setOpenProp) {
2922
+ setOpenProp(openState);
2923
+ } else {
2924
+ _setOpen(openState);
2925
+ }
2926
+ },
2927
+ [setOpenProp, open]
2928
+ );
2929
+ const [isMobile, setIsMobile] = React38.useState(false);
2930
+ React38.useEffect(() => {
2931
+ const mql = window.matchMedia("(max-width: 768px)");
2932
+ const onChange = () => setIsMobile(mql.matches);
2933
+ onChange();
2934
+ mql.addEventListener("change", onChange);
2935
+ return () => mql.removeEventListener("change", onChange);
2936
+ }, []);
2937
+ const toggleSidebar = React38.useCallback(() => {
2938
+ return isMobile ? setOpenMobile((o) => !o) : setOpen((o) => !o);
2939
+ }, [isMobile, setOpen, setOpenMobile]);
2940
+ const state = open ? "expanded" : "collapsed";
2941
+ const contextValue = React38.useMemo(
2942
+ () => ({ state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar }),
2943
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
2944
+ );
2945
+ return /* @__PURE__ */ jsx41(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx41(
2946
+ "div",
2947
+ {
2948
+ ref,
2949
+ style: { "--sidebar-width": SIDEBAR_WIDTH, "--sidebar-width-icon": SIDEBAR_WIDTH_ICON, ...style },
2950
+ className: cn("group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-muted", className),
2951
+ ...props,
2952
+ children
2953
+ }
2954
+ ) });
2955
+ });
2956
+ SidebarProvider.displayName = "SidebarProvider";
2957
+ var Sidebar = React38.forwardRef(({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }, ref) => {
2958
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
2959
+ if (collapsible === "none") {
2960
+ return /* @__PURE__ */ jsx41(
2961
+ "div",
2962
+ {
2963
+ className: cn(
2964
+ "flex h-full w-[--sidebar-width] flex-col border-r border-border bg-background text-foreground",
2965
+ className
2966
+ ),
2967
+ ref,
2968
+ ...props,
2969
+ children
2970
+ }
2971
+ );
2972
+ }
2973
+ if (isMobile) {
2974
+ return /* @__PURE__ */ jsx41(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsx41(
2975
+ SheetContent,
2976
+ {
2977
+ "data-sidebar": "sidebar",
2978
+ "data-mobile": "true",
2979
+ className: "w-[--sidebar-width] bg-background p-0 text-foreground [&>button]:hidden",
2980
+ style: { "--sidebar-width": SIDEBAR_WIDTH_MOBILE },
2981
+ side,
2982
+ children: /* @__PURE__ */ jsx41("div", { className: "flex h-full w-full flex-col", children })
2983
+ }
2984
+ ) });
2985
+ }
2986
+ return /* @__PURE__ */ jsxs27(
2987
+ "div",
2988
+ {
2989
+ ref,
2990
+ className: "group peer hidden md:block text-foreground",
2991
+ "data-state": state,
2992
+ "data-collapsible": state === "collapsed" ? collapsible : "",
2993
+ "data-variant": variant,
2994
+ "data-side": side,
2995
+ children: [
2996
+ /* @__PURE__ */ jsx41(
2997
+ "div",
2998
+ {
2999
+ className: cn(
3000
+ "duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-out",
3001
+ "group-data-[collapsible=offcanvas]:w-0",
3002
+ "group-data-[side=right]:rotate-180",
3003
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]"
3004
+ )
3005
+ }
3006
+ ),
3007
+ /* @__PURE__ */ jsx41(
3008
+ "div",
3009
+ {
3010
+ className: cn(
3011
+ "duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-out md:flex",
3012
+ side === "left" ? "start-0 group-data-[collapsible=offcanvas]:start-[calc(var(--sidebar-width)*-1)]" : "end-0 group-data-[collapsible=offcanvas]:end-[calc(var(--sidebar-width)*-1)]",
3013
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]",
3014
+ className
3015
+ ),
3016
+ ...props,
3017
+ children: /* @__PURE__ */ jsx41(
3018
+ "div",
3019
+ {
3020
+ "data-sidebar": "sidebar",
3021
+ className: "flex h-full w-full flex-col justify-between border-border bg-background group-data-[side=left]:border-e group-data-[side=right]:border-s group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow",
3022
+ children
3023
+ }
3024
+ )
3025
+ }
3026
+ )
3027
+ ]
3028
+ }
3029
+ );
3030
+ });
3031
+ Sidebar.displayName = "Sidebar";
3032
+ var SidebarHeader = React38.forwardRef(
3033
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3034
+ "div",
3035
+ {
3036
+ ref,
3037
+ "data-sidebar": "header",
3038
+ className: cn("flex flex-col gap-2 border-b border-border p-3", className),
3039
+ ...props
3040
+ }
3041
+ )
3042
+ );
3043
+ SidebarHeader.displayName = "SidebarHeader";
3044
+ var SidebarFooter = React38.forwardRef(
3045
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3046
+ "div",
3047
+ {
3048
+ ref,
3049
+ "data-sidebar": "footer",
3050
+ className: cn("flex flex-col gap-2 border-t border-border p-2", className),
3051
+ ...props
3052
+ }
3053
+ )
3054
+ );
3055
+ SidebarFooter.displayName = "SidebarFooter";
3056
+ var SidebarContent = React38.forwardRef(
3057
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3058
+ "div",
3059
+ {
3060
+ ref,
3061
+ "data-sidebar": "content",
3062
+ className: cn(
3063
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto overflow-x-hidden group-data-[collapsible=icon]:overflow-hidden",
3064
+ "[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
3065
+ className
3066
+ ),
3067
+ ...props
3068
+ }
3069
+ )
3070
+ );
3071
+ SidebarContent.displayName = "SidebarContent";
3072
+ var SidebarGroup = React38.forwardRef(
3073
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3074
+ "div",
3075
+ {
3076
+ ref,
3077
+ "data-sidebar": "group",
3078
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
3079
+ ...props
3080
+ }
3081
+ )
3082
+ );
3083
+ SidebarGroup.displayName = "SidebarGroup";
3084
+ var SidebarGroupLabel = React38.forwardRef(
3085
+ ({ className, asChild = false, ...props }, ref) => {
3086
+ const Comp = asChild ? Slot4 : "div";
3087
+ return /* @__PURE__ */ jsx41(
3088
+ Comp,
3089
+ {
3090
+ ref,
3091
+ "data-sidebar": "group-label",
3092
+ className: cn(
3093
+ "duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-muted-foreground outline-none ring-ring transition-[margin,opacity] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
3094
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
3095
+ className
3096
+ ),
3097
+ ...props
3098
+ }
3099
+ );
3100
+ }
3101
+ );
3102
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
3103
+ var SidebarGroupContent = React38.forwardRef(
3104
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx41("div", { ref, "data-sidebar": "group-content", className: cn("w-full text-sm", className), ...props })
3105
+ );
3106
+ SidebarGroupContent.displayName = "SidebarGroupContent";
3107
+ var SidebarMenu = React38.forwardRef(
3108
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx41("ul", { ref, "data-sidebar": "menu", className: cn("w-full gap-1 flex flex-col", className), ...props })
3109
+ );
3110
+ SidebarMenu.displayName = "SidebarMenu";
3111
+ var SidebarMenuItem = React38.forwardRef(
3112
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx41("li", { ref, "data-sidebar": "menu-item", className: cn("group/menu-item relative", className), ...props })
3113
+ );
3114
+ SidebarMenuItem.displayName = "SidebarMenuItem";
3115
+ var SidebarMenuButton = React38.forwardRef(({ asChild = false, isActive = false, className, tooltip, ...props }, ref) => {
3116
+ const Comp = asChild ? Slot4 : "button";
3117
+ const button = /* @__PURE__ */ jsx41(
3118
+ Comp,
3119
+ {
3120
+ ref,
3121
+ "data-sidebar": "menu-button",
3122
+ "data-active": isActive,
3123
+ className: cn(
3124
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-start text-sm font-medium outline-none ring-ring transition-[width,height,padding,background-color,color] duration-200 ease-out focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pe-8 aria-disabled:pointer-events-none aria-disabled:opacity-50",
3125
+ "text-foreground hover:bg-muted hover:text-foreground",
3126
+ "data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:font-semibold data-[active=true]:hover:bg-primary data-[active=true]:hover:text-primary-foreground",
3127
+ "data-[state=open]:hover:bg-muted",
3128
+ "group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2",
3129
+ "[&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
3130
+ className
3131
+ ),
3132
+ ...props
3133
+ }
3134
+ );
3135
+ return button;
3136
+ });
3137
+ SidebarMenuButton.displayName = "SidebarMenuButton";
3138
+ var SidebarInset = React38.forwardRef(
3139
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3140
+ "main",
3141
+ {
3142
+ ref,
3143
+ className: cn(
3144
+ "relative flex min-h-svh flex-1 flex-col bg-background",
3145
+ "peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ms-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
3146
+ className
3147
+ ),
3148
+ ...props
3149
+ }
3150
+ )
3151
+ );
3152
+ SidebarInset.displayName = "SidebarInset";
3153
+ var SidebarTrigger = React38.forwardRef(({ className, onClick, ...props }, ref) => {
3154
+ const { toggleSidebar } = useSidebar();
3155
+ return /* @__PURE__ */ jsxs27(
3156
+ Button,
3157
+ {
3158
+ ref,
3159
+ "data-sidebar": "trigger",
3160
+ variant: "ghost",
3161
+ size: "icon",
3162
+ className: cn("h-7 w-7", className),
3163
+ onClick: (event) => {
3164
+ onClick?.(event);
3165
+ toggleSidebar();
3166
+ },
3167
+ ...props,
3168
+ children: [
3169
+ /* @__PURE__ */ jsx41(PanelLeft, {}),
3170
+ /* @__PURE__ */ jsx41("span", { className: "sr-only", children: "Toggle Sidebar" })
3171
+ ]
3172
+ }
3173
+ );
3174
+ });
3175
+ SidebarTrigger.displayName = "SidebarTrigger";
3176
+
3177
+ // src/components/card.tsx
3178
+ import * as React39 from "react";
3179
+ import { cva as cva15 } from "class-variance-authority";
3180
+ import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
3181
+ var cardVariants = cva15("rounded-lg text-card-foreground", {
3182
+ variants: {
3183
+ variant: {
3184
+ default: "border bg-card shadow-sm",
3185
+ outline: "border bg-transparent",
3186
+ elevated: "bg-card shadow-md hover:shadow-lg transition-shadow",
3187
+ ghost: "bg-transparent",
3188
+ warning: "border border-[var(--hc-color-warning)] bg-card shadow-sm",
3189
+ info: "border border-[var(--hc-color-primary)] bg-card shadow-sm"
3190
+ }
3191
+ },
3192
+ defaultVariants: {
3193
+ variant: "default"
3194
+ }
3195
+ });
3196
+ var Card = React39.forwardRef(
3197
+ ({ className, variant, image, children, ...props }, ref) => /* @__PURE__ */ jsxs28("div", { ref, className: cn(cardVariants({ variant }), image && "overflow-hidden", className), ...props, children: [
3198
+ image && /* @__PURE__ */ jsx42("div", { className: "rounded-t-lg overflow-hidden", children: image }),
3199
+ children
3200
+ ] })
3201
+ );
3202
+ Card.displayName = "Card";
3203
+ var CardHeader = React39.forwardRef(
3204
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx42("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
3205
+ );
3206
+ CardHeader.displayName = "CardHeader";
3207
+ var CardTitle = React39.forwardRef(
3208
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx42("h3", { ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })
3209
+ );
3210
+ CardTitle.displayName = "CardTitle";
3211
+ var CardDescription = React39.forwardRef(
3212
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx42("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
3213
+ );
3214
+ CardDescription.displayName = "CardDescription";
3215
+ var CardContent = React39.forwardRef(
3216
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx42("div", { ref, className: cn("p-6 pt-0", className), ...props })
3217
+ );
3218
+ CardContent.displayName = "CardContent";
3219
+ var CardFooter = React39.forwardRef(
3220
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx42("div", { ref, className: cn("flex items-center p-6 pt-0", className), ...props })
3221
+ );
3222
+ CardFooter.displayName = "CardFooter";
3223
+ var CardKPI = React39.forwardRef(
3224
+ ({ icon, iconBg = "var(--hc-banner-success-bg)", label, value, changeText, changeColor, className, ...props }, ref) => /* @__PURE__ */ jsxs28(
3225
+ "div",
3226
+ {
3227
+ ref,
3228
+ className: cn(
3229
+ "grid min-h-[140px] grid-rows-[auto_1fr_auto] gap-4 rounded-lg border border-[var(--hc-color-border-subtle)] bg-background p-5",
3230
+ className
3231
+ ),
3232
+ ...props,
3233
+ children: [
3234
+ /* @__PURE__ */ jsxs28("div", { className: "flex items-start justify-between gap-3", children: [
3235
+ /* @__PURE__ */ jsx42("span", { className: "text-sm leading-5 font-medium text-muted-foreground", children: label }),
3236
+ icon && /* @__PURE__ */ jsx42(
3237
+ "div",
3238
+ {
3239
+ className: "flex size-10 shrink-0 items-center justify-center rounded-md [&>svg]:size-5",
3240
+ style: { backgroundColor: iconBg },
3241
+ children: icon
3242
+ }
3243
+ )
3244
+ ] }),
3245
+ /* @__PURE__ */ jsx42("div", { className: "flex items-end", children: /* @__PURE__ */ jsx42("span", { className: "text-3xl leading-none font-semibold text-foreground tracking-tight", children: value }) }),
3246
+ /* @__PURE__ */ jsx42("div", { className: "min-h-[20px]", children: changeText && /* @__PURE__ */ jsx42(
3247
+ "span",
3248
+ {
3249
+ className: "text-sm leading-5 font-medium",
3250
+ style: changeColor ? { color: changeColor } : void 0,
3251
+ children: changeText
3252
+ }
3253
+ ) })
3254
+ ]
3255
+ }
3256
+ )
3257
+ );
3258
+ CardKPI.displayName = "CardKPI";
3259
+
3260
+ // src/components/resizable.tsx
3261
+ import { GripVertical } from "lucide-react";
3262
+ import * as ResizablePrimitive from "react-resizable-panels";
3263
+ import { jsx as jsx43 } from "react/jsx-runtime";
3264
+ var ResizablePanelGroup = ({
3265
+ className,
3266
+ storageKey,
3267
+ autoSaveId,
3268
+ ...props
3269
+ }) => /* @__PURE__ */ jsx43(
3270
+ ResizablePrimitive.PanelGroup,
3271
+ {
3272
+ autoSaveId: storageKey ?? autoSaveId,
3273
+ className: cn("flex h-full w-full data-[panel-group-direction=vertical]:flex-col", className),
3274
+ ...props
3275
+ }
3276
+ );
3277
+ var ResizablePanel = ResizablePrimitive.Panel;
3278
+ var ResizableHandle = ({
3279
+ withHandle,
3280
+ className,
3281
+ ...props
3282
+ }) => /* @__PURE__ */ jsx43(
3283
+ ResizablePrimitive.PanelResizeHandle,
3284
+ {
3285
+ className: cn(
3286
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
3287
+ className
3288
+ ),
3289
+ ...props,
3290
+ children: withHandle && /* @__PURE__ */ jsx43("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx43(GripVertical, { className: "h-2.5 w-2.5" }) })
3291
+ }
3292
+ );
3293
+
3294
+ // src/components/stepper.tsx
3295
+ import * as React40 from "react";
3296
+ import { Check as Check6 } from "lucide-react";
3297
+ import { jsx as jsx44, jsxs as jsxs29 } from "react/jsx-runtime";
3298
+ var StepperContext = React40.createContext({
3299
+ activeStep: 0,
3300
+ totalSteps: 0,
3301
+ clickable: false,
3302
+ registerButton: () => {
3303
+ }
3304
+ });
3305
+ var Stepper = React40.forwardRef(
3306
+ ({
3307
+ activeStep,
3308
+ clickable = false,
3309
+ onStepChange,
3310
+ className,
3311
+ children,
3312
+ onKeyDown,
3313
+ ...props
3314
+ }, ref) => {
3315
+ const steps = React40.Children.toArray(children);
3316
+ const buttonRefs = React40.useRef([]);
3317
+ const registerButton = React40.useCallback(
3318
+ (index, el) => {
3319
+ buttonRefs.current[index] = el;
3320
+ },
3321
+ []
3322
+ );
3323
+ const focusButton = (index) => {
3324
+ const btn = buttonRefs.current[index];
3325
+ if (btn && !btn.disabled) btn.focus();
3326
+ };
3327
+ const handleKeyDown = (e) => {
3328
+ onKeyDown?.(e);
3329
+ if (!clickable) return;
3330
+ if (e.key !== "ArrowLeft" && e.key !== "ArrowRight") return;
3331
+ const current = buttonRefs.current.findIndex(
3332
+ (b) => b === document.activeElement
3333
+ );
3334
+ if (current === -1) return;
3335
+ const dir = e.key === "ArrowRight" ? 1 : -1;
3336
+ const last = steps.length - 1;
3337
+ let next = current + dir;
3338
+ while (next >= 0 && next <= last) {
3339
+ const btn = buttonRefs.current[next];
3340
+ if (btn && !btn.disabled) {
3341
+ e.preventDefault();
3342
+ focusButton(next);
3343
+ return;
3344
+ }
3345
+ next += dir;
3346
+ }
3347
+ };
3348
+ return /* @__PURE__ */ jsx44(
3349
+ StepperContext.Provider,
3350
+ {
3351
+ value: {
3352
+ activeStep,
3353
+ totalSteps: steps.length,
3354
+ clickable,
3355
+ onStepChange,
3356
+ registerButton
3357
+ },
3358
+ children: /* @__PURE__ */ jsx44(
3359
+ "div",
3360
+ {
3361
+ ref,
3362
+ className: cn("flex w-full items-start", className),
3363
+ onKeyDown: handleKeyDown,
3364
+ ...props,
3365
+ children: steps.map((child, index) => /* @__PURE__ */ jsxs29(React40.Fragment, { children: [
3366
+ React40.isValidElement(child) ? React40.cloneElement(child, { _index: index }) : child,
3367
+ index < steps.length - 1 && /* @__PURE__ */ jsx44("div", { className: "flex flex-1 items-center pt-[16px] px-2", children: /* @__PURE__ */ jsx44(
3368
+ "div",
3369
+ {
3370
+ className: cn(
3371
+ "h-[2px] w-full transition-colors duration-300 ease-out",
3372
+ index < activeStep ? "bg-[var(--hc-primary-600)]" : "bg-[var(--hc-grey-200)]"
3373
+ )
3374
+ }
3375
+ ) })
3376
+ ] }, index))
3377
+ }
3378
+ )
3379
+ }
3380
+ );
3381
+ }
3382
+ );
3383
+ Stepper.displayName = "Stepper";
3384
+ var StepperItem = React40.forwardRef(({ label, className, _index = 0, ...props }, ref) => {
3385
+ const { activeStep, clickable, onStepChange, registerButton } = React40.useContext(StepperContext);
3386
+ const status = _index < activeStep ? "completed" : _index === activeStep ? "active" : "upcoming";
3387
+ const circle = /* @__PURE__ */ jsx44(
3388
+ "div",
3389
+ {
3390
+ className: cn(
3391
+ "flex h-[32px] w-[32px] shrink-0 items-center justify-center rounded-full text-[14px] transition-colors duration-300 ease-out",
3392
+ status === "upcoming" && "border-[2px] border-[var(--hc-grey-200)] bg-white text-[var(--hc-grey-400)]",
3393
+ status === "active" && "bg-[var(--hc-primary-600)] font-semibold text-white",
3394
+ status === "completed" && "bg-[var(--hc-primary-600)] text-white"
3395
+ ),
3396
+ children: status === "completed" ? /* @__PURE__ */ jsx44(Check6, { className: "h-[14px] w-[14px]" }) : _index + 1
3397
+ }
3398
+ );
3399
+ const labelEl = /* @__PURE__ */ jsx44("span", { className: "mt-[8px] text-center text-[12px] text-foreground", children: label });
3400
+ if (clickable) {
3401
+ const disabled = _index > activeStep;
3402
+ return /* @__PURE__ */ jsx44(
3403
+ "div",
3404
+ {
3405
+ ref,
3406
+ className: cn("flex flex-col items-center", className),
3407
+ ...props,
3408
+ children: /* @__PURE__ */ jsxs29(
3409
+ "button",
3410
+ {
3411
+ type: "button",
3412
+ ref: (el) => registerButton(_index, el),
3413
+ disabled,
3414
+ tabIndex: status === "active" ? 0 : -1,
3415
+ onClick: () => !disabled && onStepChange?.(_index),
3416
+ className: cn(
3417
+ "flex flex-col items-center rounded-[4px] outline-none",
3418
+ "focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-600)] focus-visible:ring-offset-2",
3419
+ disabled ? "cursor-default" : "cursor-pointer"
3420
+ ),
3421
+ "aria-current": status === "active" ? "step" : void 0,
3422
+ children: [
3423
+ circle,
3424
+ labelEl
3425
+ ]
3426
+ }
3427
+ )
3428
+ }
3429
+ );
3430
+ }
3431
+ return /* @__PURE__ */ jsxs29(
3432
+ "div",
3433
+ {
3434
+ ref,
3435
+ className: cn("flex flex-col items-center", className),
3436
+ ...props,
3437
+ children: [
3438
+ circle,
3439
+ labelEl
3440
+ ]
3441
+ }
3442
+ );
3443
+ });
3444
+ StepperItem.displayName = "StepperItem";
3445
+
3446
+ // src/components/table.tsx
3447
+ import * as React41 from "react";
3448
+ import { jsx as jsx45 } from "react/jsx-runtime";
3449
+ var Table = React41.forwardRef(
3450
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx45("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx45("table", { ref, className: cn("w-full caption-bottom text-sm", className), ...props }) })
3451
+ );
3452
+ Table.displayName = "Table";
3453
+ var TableHeader = React41.forwardRef(
3454
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx45("thead", { ref, className: cn("[&_tr]:border-b [&_tr]:border-[var(--hc-color-border-subtle)] [&_tr:hover]:bg-transparent", className), ...props })
3455
+ );
3456
+ TableHeader.displayName = "TableHeader";
3457
+ var TableBody = React41.forwardRef(
3458
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx45("tbody", { ref, className: cn("[&_tr:last-child]:border-0", className), ...props })
3459
+ );
3460
+ TableBody.displayName = "TableBody";
3461
+ var TableFooter = React41.forwardRef(
3462
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx45("tfoot", { ref, className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props })
3463
+ );
3464
+ TableFooter.displayName = "TableFooter";
3465
+ var TableRow = React41.forwardRef(
3466
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx45("tr", { ref, className: cn("border-b border-[var(--hc-color-border-subtle)] transition-colors hover:bg-muted/60 data-[state=selected]:bg-muted", className), ...props })
3467
+ );
3468
+ TableRow.displayName = "TableRow";
3469
+ var TableHead = React41.forwardRef(
3470
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx45("th", { ref, className: cn("h-12 px-4 text-xs font-semibold uppercase tracking-wider text-muted-foreground text-start align-middle [&:has([role=checkbox])]:pe-0", className), ...props })
3471
+ );
3472
+ TableHead.displayName = "TableHead";
3473
+ var TableCell = React41.forwardRef(
3474
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx45("td", { ref, className: cn("px-4 py-3 text-sm text-foreground align-middle [&:has([role=checkbox])]:pe-0", className), ...props })
3475
+ );
3476
+ TableCell.displayName = "TableCell";
3477
+ var TableCaption = React41.forwardRef(
3478
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx45("caption", { ref, className: cn("mt-4 text-sm text-muted-foreground", className), ...props })
3479
+ );
3480
+ TableCaption.displayName = "TableCaption";
3481
+
3482
+ // src/components/data-table.tsx
3483
+ import * as React42 from "react";
3484
+ import {
3485
+ flexRender,
3486
+ getCoreRowModel,
3487
+ getFilteredRowModel,
3488
+ getPaginationRowModel,
3489
+ getSortedRowModel,
3490
+ useReactTable
3491
+ } from "@tanstack/react-table";
3492
+ import { jsx as jsx46, jsxs as jsxs30 } from "react/jsx-runtime";
3493
+ function DataTable({
3494
+ columns,
3495
+ data,
3496
+ searchKey,
3497
+ searchPlaceholder = "Filter...",
3498
+ loading = false,
3499
+ emptyState,
3500
+ pageSize
3501
+ }) {
3502
+ const [sorting, setSorting] = React42.useState([]);
3503
+ const [columnFilters, setColumnFilters] = React42.useState([]);
3504
+ const [columnVisibility, setColumnVisibility] = React42.useState({});
3505
+ const [rowSelection, setRowSelection] = React42.useState({});
3506
+ const table = useReactTable({
3507
+ data,
3508
+ columns,
3509
+ onSortingChange: setSorting,
3510
+ onColumnFiltersChange: setColumnFilters,
3511
+ getCoreRowModel: getCoreRowModel(),
3512
+ getPaginationRowModel: getPaginationRowModel(),
3513
+ getSortedRowModel: getSortedRowModel(),
3514
+ getFilteredRowModel: getFilteredRowModel(),
3515
+ onColumnVisibilityChange: setColumnVisibility,
3516
+ onRowSelectionChange: setRowSelection,
3517
+ state: { sorting, columnFilters, columnVisibility, rowSelection },
3518
+ ...pageSize ? { initialState: { pagination: { pageSize, pageIndex: 0 } } } : {}
3519
+ });
3520
+ const skeletonRowCount = pageSize ?? 5;
3521
+ return /* @__PURE__ */ jsxs30("div", { className: "w-full", children: [
3522
+ searchKey && /* @__PURE__ */ jsx46("div", { className: "flex items-center py-4", children: /* @__PURE__ */ jsx46(
3523
+ Input,
3524
+ {
3525
+ placeholder: searchPlaceholder,
3526
+ value: table.getColumn(searchKey)?.getFilterValue() ?? "",
3527
+ onChange: (event) => table.getColumn(searchKey)?.setFilterValue(event.target.value),
3528
+ className: "max-w-sm"
3529
+ }
3530
+ ) }),
3531
+ /* @__PURE__ */ jsx46("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxs30(Table, { children: [
3532
+ /* @__PURE__ */ jsx46(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx46(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx46(TableHead, { children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()) }, header.id)) }, headerGroup.id)) }),
3533
+ /* @__PURE__ */ jsx46(TableBody, { children: loading ? Array.from({ length: skeletonRowCount }).map((_, rowIdx) => /* @__PURE__ */ jsx46(TableRow, { children: columns.map((_col, colIdx) => /* @__PURE__ */ jsx46(TableCell, { children: /* @__PURE__ */ jsx46(Skeleton, { className: "h-4 w-full" }) }, `skeleton-cell-${rowIdx}-${colIdx}`)) }, `skeleton-${rowIdx}`)) : table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx46(TableRow, { "data-state": row.getIsSelected() && "selected", children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx46(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) : /* @__PURE__ */ jsx46(TableRow, { children: /* @__PURE__ */ jsx46(TableCell, { colSpan: columns.length, className: "text-center", children: emptyState ?? /* @__PURE__ */ jsxs30("div", { className: "flex flex-col items-center justify-center gap-1 py-10 text-muted-foreground", children: [
3534
+ /* @__PURE__ */ jsx46("span", { className: "text-sm font-medium", children: "No results found." }),
3535
+ /* @__PURE__ */ jsx46("span", { className: "text-xs", children: "Try adjusting your filters or search." })
3536
+ ] }) }) }) })
3537
+ ] }) }),
3538
+ /* @__PURE__ */ jsxs30("div", { className: "flex items-center justify-end space-x-2 py-4", children: [
3539
+ /* @__PURE__ */ jsxs30("div", { className: "flex-1 text-sm text-muted-foreground", children: [
3540
+ table.getFilteredSelectedRowModel().rows.length,
3541
+ " of",
3542
+ " ",
3543
+ table.getFilteredRowModel().rows.length,
3544
+ " row(s) selected."
3545
+ ] }),
3546
+ /* @__PURE__ */ jsxs30("div", { className: "space-x-2", children: [
3547
+ /* @__PURE__ */ jsx46(Button, { variant: "outline", size: "sm", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: "Previous" }),
3548
+ /* @__PURE__ */ jsx46(Button, { variant: "outline", size: "sm", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: "Next" })
3549
+ ] })
3550
+ ] })
3551
+ ] });
3552
+ }
3553
+
3554
+ // src/components/pagination.tsx
3555
+ import * as React43 from "react";
3556
+ import { ChevronLeft, ChevronRight as ChevronRight5, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
3557
+ import { jsx as jsx47, jsxs as jsxs31 } from "react/jsx-runtime";
3558
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx47(
3559
+ "nav",
3560
+ {
3561
+ role: "navigation",
3562
+ "aria-label": "pagination",
3563
+ className: cn("mx-auto flex w-full justify-center", className),
3564
+ ...props
3565
+ }
3566
+ );
3567
+ Pagination.displayName = "Pagination";
3568
+ var PaginationContent = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx47(
3569
+ "ul",
3570
+ {
3571
+ ref,
3572
+ className: cn("flex flex-row items-center gap-1", className),
3573
+ ...props
3574
+ }
3575
+ ));
3576
+ PaginationContent.displayName = "PaginationContent";
3577
+ var PaginationItem = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx47("li", { ref, className: cn("", className), ...props }));
3578
+ PaginationItem.displayName = "PaginationItem";
3579
+ var PaginationLink = ({
3580
+ className,
3581
+ isActive,
3582
+ size = "icon",
3583
+ ...props
3584
+ }) => /* @__PURE__ */ jsx47(
3585
+ "a",
3586
+ {
3587
+ "aria-current": isActive ? "page" : void 0,
3588
+ className: cn(
3589
+ buttonVariants({
3590
+ variant: isActive ? "default" : "ghost",
3591
+ size
3592
+ }),
3593
+ className
3594
+ ),
3595
+ ...props
3596
+ }
3597
+ );
3598
+ PaginationLink.displayName = "PaginationLink";
3599
+ var PaginationPrevious = ({
3600
+ className,
3601
+ ...props
3602
+ }) => /* @__PURE__ */ jsxs31(
3603
+ PaginationLink,
3604
+ {
3605
+ "aria-label": "Go to previous page",
3606
+ size: "default",
3607
+ className: cn("gap-1 px-2.5", className),
3608
+ ...props,
3609
+ children: [
3610
+ /* @__PURE__ */ jsx47(ChevronLeft, { className: "size-4" }),
3611
+ /* @__PURE__ */ jsx47("span", { className: "hidden sm:block", children: "Previous" })
3612
+ ]
3613
+ }
3614
+ );
3615
+ PaginationPrevious.displayName = "PaginationPrevious";
3616
+ var PaginationNext = ({
3617
+ className,
3618
+ ...props
3619
+ }) => /* @__PURE__ */ jsxs31(
3620
+ PaginationLink,
3621
+ {
3622
+ "aria-label": "Go to next page",
3623
+ size: "default",
3624
+ className: cn("gap-1 px-2.5", className),
3625
+ ...props,
3626
+ children: [
3627
+ /* @__PURE__ */ jsx47("span", { className: "hidden sm:block", children: "Next" }),
3628
+ /* @__PURE__ */ jsx47(ChevronRight5, { className: "size-4" })
3629
+ ]
3630
+ }
3631
+ );
3632
+ PaginationNext.displayName = "PaginationNext";
3633
+ var PaginationEllipsis = ({
3634
+ className,
3635
+ ...props
3636
+ }) => /* @__PURE__ */ jsxs31(
3637
+ "span",
3638
+ {
3639
+ "aria-hidden": true,
3640
+ className: cn("flex size-10 items-center justify-center", className),
3641
+ ...props,
3642
+ children: [
3643
+ /* @__PURE__ */ jsx47(MoreHorizontal2, { className: "size-4" }),
3644
+ /* @__PURE__ */ jsx47("span", { className: "sr-only", children: "More pages" })
3645
+ ]
3646
+ }
3647
+ );
3648
+ PaginationEllipsis.displayName = "PaginationEllipsis";
3649
+ var PaginationInfo = ({
3650
+ currentPage,
3651
+ totalPages,
3652
+ formatPage = (p) => String(p).padStart(2, "0"),
3653
+ className,
3654
+ ...props
3655
+ }) => /* @__PURE__ */ jsxs31(
3656
+ "div",
3657
+ {
3658
+ className: cn("inline-flex items-center gap-1.5 text-sm", className),
3659
+ ...props,
3660
+ children: [
3661
+ /* @__PURE__ */ jsx47("span", { className: "text-muted-foreground", children: "Page" }),
3662
+ /* @__PURE__ */ jsx47("span", { className: "font-medium text-foreground", children: formatPage(currentPage) }),
3663
+ /* @__PURE__ */ jsx47("span", { className: "text-muted-foreground", children: "of" }),
3664
+ /* @__PURE__ */ jsx47("span", { className: "font-medium text-foreground", children: formatPage(totalPages) })
3665
+ ]
3666
+ }
3667
+ );
3668
+ PaginationInfo.displayName = "PaginationInfo";
3669
+
3670
+ // src/components/calendar.tsx
3671
+ import { DayPicker } from "react-day-picker";
3672
+ import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight6 } from "lucide-react";
3673
+ import { jsx as jsx48 } from "react/jsx-runtime";
3674
+ function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "dropdown", ...props }) {
3675
+ return /* @__PURE__ */ jsx48(
3676
+ DayPicker,
3677
+ {
3678
+ showOutsideDays,
3679
+ className: cn("w-[260px] rounded-lg p-3", className),
3680
+ classNames: {
3681
+ months: "flex flex-col",
3682
+ month: "space-y-3",
3683
+ month_caption: "relative flex h-8 items-center justify-center",
3684
+ caption_label: "text-sm font-medium hidden",
3685
+ nav: "flex items-center",
3686
+ button_previous: cn(
3687
+ "absolute start-0 inline-flex size-7 items-center justify-center rounded-md bg-transparent p-0 text-muted-foreground hover:bg-[var(--hc-color-border-subtle)] hover:text-foreground transition-colors cursor-pointer border-none"
3688
+ ),
3689
+ button_next: cn(
3690
+ "absolute end-0 inline-flex size-7 items-center justify-center rounded-md bg-transparent p-0 text-muted-foreground hover:bg-[var(--hc-color-border-subtle)] hover:text-foreground transition-colors cursor-pointer border-none"
3691
+ ),
3692
+ month_grid: "w-full border-collapse",
3693
+ weekdays: "flex w-full",
3694
+ weekday: "flex-1 h-8 flex items-center justify-center text-[11px] font-medium text-muted-foreground uppercase tracking-wider",
3695
+ week: "flex w-full mt-1",
3696
+ day: "flex-1 h-8 p-0 relative focus-within:z-20 flex items-center justify-center text-sm",
3697
+ day_button: cn(
3698
+ "inline-flex size-8 items-center justify-center rounded-md bg-transparent text-sm font-normal cursor-pointer border-none hover:bg-[var(--hc-color-border-subtle)] transition-colors"
3699
+ ),
3700
+ range_end: "day-range-end",
3701
+ selected: "[&>button]:bg-[var(--hc-primary-600)] [&>button]:text-white [&>button]:hover:bg-[var(--hc-primary-600)] [&>button]:hover:text-white [&>button]:font-medium",
3702
+ today: "[&>button]:font-semibold [&>button]:text-[var(--hc-primary-600)]",
3703
+ outside: "day-outside [&>button]:bg-transparent [&>button]:text-[var(--hc-grey-200)]",
3704
+ disabled: "[&>button]:text-[var(--hc-grey-200)] [&>button]:opacity-50 [&>button]:cursor-default",
3705
+ range_middle: "[&>button]:bg-[var(--hc-primary-100)] [&>button]:text-foreground [&>button]:rounded-none",
3706
+ range_start: "[&>button]:rounded-e-none",
3707
+ dropdowns: "flex items-center gap-1.5 justify-center [&>select]:flex-1",
3708
+ dropdown: "h-7 w-[88px] rounded-md border border-[var(--hc-color-border-subtle)] bg-background px-2 text-xs font-medium text-foreground cursor-pointer outline-none accent-[var(--hc-primary-600)] focus:border-[var(--hc-primary-500)] focus:ring-[2px] focus:ring-[var(--hc-primary-500)]/20 [&>option:checked]:bg-[var(--hc-primary-600)] [&>option:checked]:text-white [&>option]:py-1",
3709
+ hidden: "invisible",
3710
+ ...classNames
3711
+ },
3712
+ captionLayout,
3713
+ components: {
3714
+ Chevron: ({ orientation }) => {
3715
+ const Icon2 = orientation === "left" ? ChevronLeft2 : ChevronRight6;
3716
+ return /* @__PURE__ */ jsx48(Icon2, { className: "size-4" });
3717
+ }
3718
+ },
3719
+ ...props
3720
+ }
3721
+ );
3722
+ }
3723
+ Calendar.displayName = "Calendar";
3724
+
3725
+ // src/components/date-picker.tsx
3726
+ import * as React44 from "react";
3727
+ import { CalendarIcon } from "lucide-react";
3728
+ import { jsx as jsx49, jsxs as jsxs32 } from "react/jsx-runtime";
3729
+ function formatDate(d) {
3730
+ return d.toLocaleDateString();
3731
+ }
3732
+ function DatePicker({
3733
+ date,
3734
+ onDateChange,
3735
+ mode = "single",
3736
+ placeholder = "Pick a date",
3737
+ className,
3738
+ presets,
3739
+ disabled
3740
+ }) {
3741
+ const label = React44.useMemo(() => {
3742
+ if (!date) return /* @__PURE__ */ jsx49("span", { children: placeholder });
3743
+ if (mode === "range") {
3744
+ const range = date;
3745
+ if (range.from && range.to) {
3746
+ return `${formatDate(range.from)} \u2013 ${formatDate(range.to)}`;
3747
+ }
3748
+ if (range.from) return formatDate(range.from);
3749
+ return /* @__PURE__ */ jsx49("span", { children: placeholder });
3750
+ }
3751
+ return date.toLocaleDateString();
3752
+ }, [date, mode, placeholder]);
3753
+ return /* @__PURE__ */ jsxs32(Popover, { children: [
3754
+ /* @__PURE__ */ jsx49(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs32(
3755
+ Button,
3756
+ {
3757
+ variant: "outline",
3758
+ className: cn(
3759
+ "w-[280px] justify-start text-left font-normal",
3760
+ !date && "text-muted-foreground",
3761
+ className
3762
+ ),
3763
+ children: [
3764
+ /* @__PURE__ */ jsx49(CalendarIcon, { className: "me-2 h-4 w-4" }),
3765
+ label
3766
+ ]
3767
+ }
3768
+ ) }),
3769
+ /* @__PURE__ */ jsx49(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsxs32("div", { className: "flex", children: [
3770
+ presets && presets.length > 0 && /* @__PURE__ */ jsx49("div", { className: "flex flex-col gap-1 border-e p-2 min-w-[140px]", children: presets.map((preset) => /* @__PURE__ */ jsx49(
3771
+ Button,
3772
+ {
3773
+ variant: "ghost",
3774
+ size: "sm",
3775
+ className: "justify-start font-normal",
3776
+ onClick: () => onDateChange?.(preset.value),
3777
+ children: preset.label
3778
+ },
3779
+ preset.label
3780
+ )) }),
3781
+ /* @__PURE__ */ jsx49("div", { children: mode === "range" ? /* @__PURE__ */ jsx49(
3782
+ Calendar,
3783
+ {
3784
+ mode: "range",
3785
+ selected: date,
3786
+ onSelect: (value) => onDateChange?.(value),
3787
+ disabled,
3788
+ autoFocus: true
3789
+ }
3790
+ ) : /* @__PURE__ */ jsx49(
3791
+ Calendar,
3792
+ {
3793
+ mode: "single",
3794
+ selected: date,
3795
+ onSelect: (value) => onDateChange?.(value),
3796
+ disabled,
3797
+ autoFocus: true
3798
+ }
3799
+ ) })
3800
+ ] }) })
3801
+ ] });
3802
+ }
3803
+
3804
+ // src/components/command.tsx
3805
+ import * as React45 from "react";
3806
+ import { Command as CommandPrimitive } from "cmdk";
3807
+ import { Search } from "lucide-react";
3808
+ import { jsx as jsx50, jsxs as jsxs33 } from "react/jsx-runtime";
3809
+ var Command = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx50(
3810
+ CommandPrimitive,
3811
+ {
3812
+ ref,
3813
+ className: cn(
3814
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
3815
+ className
3816
+ ),
3817
+ ...props
3818
+ }
3819
+ ));
3820
+ Command.displayName = CommandPrimitive.displayName;
3821
+ var CommandDialog = ({ children, ...props }) => {
3822
+ return /* @__PURE__ */ jsx50(Dialog, { ...props, children: /* @__PURE__ */ jsx50(DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ jsx50(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
3823
+ };
3824
+ var CommandInput = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs33("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
3825
+ /* @__PURE__ */ jsx50(Search, { className: "me-2 h-4 w-4 shrink-0 opacity-50" }),
3826
+ /* @__PURE__ */ jsx50(
3827
+ CommandPrimitive.Input,
3828
+ {
3829
+ ref,
3830
+ className: cn(
3831
+ "flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
3832
+ className
3833
+ ),
3834
+ ...props
3835
+ }
3836
+ )
3837
+ ] }));
3838
+ CommandInput.displayName = CommandPrimitive.Input.displayName;
3839
+ var CommandList = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx50(
3840
+ CommandPrimitive.List,
3841
+ {
3842
+ ref,
3843
+ className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
3844
+ ...props
3845
+ }
3846
+ ));
3847
+ CommandList.displayName = CommandPrimitive.List.displayName;
3848
+ var CommandEmpty = React45.forwardRef((props, ref) => /* @__PURE__ */ jsx50(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
3849
+ CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
3850
+ var CommandGroup = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx50(
3851
+ CommandPrimitive.Group,
3852
+ {
3853
+ ref,
3854
+ className: cn(
3855
+ "overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
3856
+ className
3857
+ ),
3858
+ ...props
3859
+ }
3860
+ ));
3861
+ CommandGroup.displayName = CommandPrimitive.Group.displayName;
3862
+ var CommandSeparator = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx50(CommandPrimitive.Separator, { ref, className: cn("-mx-1 h-px bg-border", className), ...props }));
3863
+ CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
3864
+ var CommandItem = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx50(
3865
+ CommandPrimitive.Item,
3866
+ {
3867
+ ref,
3868
+ className: cn(
3869
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-muted data-[selected=true]:text-foreground data-[disabled=true]:opacity-50",
3870
+ className
3871
+ ),
3872
+ ...props
3873
+ }
3874
+ ));
3875
+ CommandItem.displayName = CommandPrimitive.Item.displayName;
3876
+ var CommandShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx50("span", { className: cn("ms-auto text-xs tracking-widest text-muted-foreground", className), ...props });
3877
+ CommandShortcut.displayName = "CommandShortcut";
3878
+
3879
+ // src/components/carousel.tsx
3880
+ import * as React46 from "react";
3881
+ import useEmblaCarousel from "embla-carousel-react";
3882
+ import { ArrowLeft, ArrowRight } from "lucide-react";
3883
+ import { jsx as jsx51, jsxs as jsxs34 } from "react/jsx-runtime";
3884
+ var CarouselContext = React46.createContext(null);
3885
+ function useCarousel() {
3886
+ const context = React46.useContext(CarouselContext);
3887
+ if (!context) throw new Error("useCarousel must be used within a <Carousel />");
3888
+ return context;
3889
+ }
3890
+ var Carousel = React46.forwardRef(
3891
+ ({ orientation = "horizontal", opts, setApi, plugins, className, children, ...props }, ref) => {
3892
+ const [carouselRef, api] = useEmblaCarousel({ ...opts, axis: orientation === "horizontal" ? "x" : "y" }, plugins);
3893
+ const [canScrollPrev, setCanScrollPrev] = React46.useState(false);
3894
+ const [canScrollNext, setCanScrollNext] = React46.useState(false);
3895
+ const onSelect = React46.useCallback((api2) => {
3896
+ if (!api2) return;
3897
+ setCanScrollPrev(api2.canScrollPrev());
3898
+ setCanScrollNext(api2.canScrollNext());
3899
+ }, []);
3900
+ const scrollPrev = React46.useCallback(() => api?.scrollPrev(), [api]);
3901
+ const scrollNext = React46.useCallback(() => api?.scrollNext(), [api]);
3902
+ const handleKeyDown = React46.useCallback(
3903
+ (event) => {
3904
+ if (event.key === "ArrowLeft") {
3905
+ event.preventDefault();
3906
+ scrollPrev();
3907
+ } else if (event.key === "ArrowRight") {
3908
+ event.preventDefault();
3909
+ scrollNext();
3910
+ }
3911
+ },
3912
+ [scrollPrev, scrollNext]
3913
+ );
3914
+ React46.useEffect(() => {
3915
+ if (!api || !setApi) return;
3916
+ setApi(api);
3917
+ }, [api, setApi]);
3918
+ React46.useEffect(() => {
3919
+ if (!api) return;
3920
+ onSelect(api);
3921
+ api.on("reInit", onSelect);
3922
+ api.on("select", onSelect);
3923
+ return () => {
3924
+ api?.off("select", onSelect);
3925
+ };
3926
+ }, [api, onSelect]);
3927
+ return /* @__PURE__ */ jsx51(CarouselContext.Provider, { value: { carouselRef, api, opts, orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"), scrollPrev, scrollNext, canScrollPrev, canScrollNext }, children: /* @__PURE__ */ jsx51("div", { ref, onKeyDownCapture: handleKeyDown, className: cn("relative", className), role: "region", "aria-roledescription": "carousel", ...props, children }) });
3928
+ }
3929
+ );
3930
+ Carousel.displayName = "Carousel";
3931
+ var CarouselContent = React46.forwardRef(
3932
+ ({ className, ...props }, ref) => {
3933
+ const { carouselRef, orientation } = useCarousel();
3934
+ return /* @__PURE__ */ jsx51("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx51("div", { ref, className: cn("flex", orientation === "horizontal" ? "-ms-4" : "-mt-4 flex-col", className), ...props }) });
3935
+ }
3936
+ );
3937
+ CarouselContent.displayName = "CarouselContent";
3938
+ var CarouselItem = React46.forwardRef(
3939
+ ({ className, ...props }, ref) => {
3940
+ const { orientation } = useCarousel();
3941
+ return /* @__PURE__ */ jsx51("div", { ref, role: "group", "aria-roledescription": "slide", className: cn("min-w-0 shrink-0 grow-0 basis-full", orientation === "horizontal" ? "ps-4" : "pt-4", className), ...props });
3942
+ }
3943
+ );
3944
+ CarouselItem.displayName = "CarouselItem";
3945
+ var CarouselPrevious = React46.forwardRef(
3946
+ ({ className, variant = "outline", size = "icon", ...props }, ref) => {
3947
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
3948
+ return /* @__PURE__ */ jsxs34(Button, { ref, variant, size, className: cn("absolute h-8 w-8 rounded-full", orientation === "horizontal" ? "-start-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90", className), disabled: !canScrollPrev, onClick: scrollPrev, ...props, children: [
3949
+ /* @__PURE__ */ jsx51(ArrowLeft, { className: "h-4 w-4" }),
3950
+ /* @__PURE__ */ jsx51("span", { className: "sr-only", children: "Previous slide" })
3951
+ ] });
3952
+ }
3953
+ );
3954
+ CarouselPrevious.displayName = "CarouselPrevious";
3955
+ var CarouselNext = React46.forwardRef(
3956
+ ({ className, variant = "outline", size = "icon", ...props }, ref) => {
3957
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
3958
+ return /* @__PURE__ */ jsxs34(Button, { ref, variant, size, className: cn("absolute h-8 w-8 rounded-full", orientation === "horizontal" ? "-end-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90", className), disabled: !canScrollNext, onClick: scrollNext, ...props, children: [
3959
+ /* @__PURE__ */ jsx51(ArrowRight, { className: "h-4 w-4" }),
3960
+ /* @__PURE__ */ jsx51("span", { className: "sr-only", children: "Next slide" })
3961
+ ] });
3962
+ }
3963
+ );
3964
+ CarouselNext.displayName = "CarouselNext";
3965
+
3966
+ // src/components/chart.tsx
3967
+ import * as React47 from "react";
3968
+ import * as RechartsPrimitive from "recharts";
3969
+ import { Fragment as Fragment2, jsx as jsx52, jsxs as jsxs35 } from "react/jsx-runtime";
3970
+ var THEMES = { light: "", dark: ".dark" };
3971
+ var ChartContext = React47.createContext(null);
3972
+ function useChart() {
3973
+ const context = React47.useContext(ChartContext);
3974
+ if (!context) throw new Error("useChart must be used within a <ChartContainer />");
3975
+ return context;
3976
+ }
3977
+ var ChartContainer = React47.forwardRef(({ id, className, children, config, ...props }, ref) => {
3978
+ const uniqueId = React47.useId();
3979
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
3980
+ return /* @__PURE__ */ jsx52(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs35(
3981
+ "div",
3982
+ {
3983
+ "data-chart": chartId,
3984
+ ref,
3985
+ className: cn(
3986
+ "flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",
3987
+ className
3988
+ ),
3989
+ ...props,
3990
+ children: [
3991
+ /* @__PURE__ */ jsx52(ChartStyle, { id: chartId, config }),
3992
+ /* @__PURE__ */ jsx52(RechartsPrimitive.ResponsiveContainer, { children })
3993
+ ]
3994
+ }
3995
+ ) });
3996
+ });
3997
+ ChartContainer.displayName = "ChartContainer";
3998
+ var ChartStyle = ({ id, config }) => {
3999
+ const colorConfig = Object.entries(config).filter(([_, cfg]) => cfg.theme || cfg.color);
4000
+ if (!colorConfig.length) return null;
4001
+ return /* @__PURE__ */ jsx52(
4002
+ "style",
4003
+ {
4004
+ dangerouslySetInnerHTML: {
4005
+ __html: Object.entries(THEMES).map(
4006
+ ([theme, prefix]) => `
4007
+ ${prefix} [data-chart=${id}] {
4008
+ ${colorConfig.map(([key, itemConfig]) => {
4009
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
4010
+ return color ? ` --color-${key}: ${color};` : null;
4011
+ }).join("\n")}
4012
+ }`
4013
+ ).join("\n")
4014
+ }
4015
+ }
4016
+ );
4017
+ };
4018
+ var ChartTooltip = RechartsPrimitive.Tooltip;
4019
+ var ChartTooltipContent = React47.forwardRef(
4020
+ ({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey }, ref) => {
4021
+ const { config } = useChart();
4022
+ const tooltipLabel = React47.useMemo(() => {
4023
+ if (hideLabel || !payload?.length) return null;
4024
+ const item = payload[0];
4025
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
4026
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
4027
+ const value = !labelKey && typeof label === "string" ? itemConfig?.label || label : label;
4028
+ if (labelFormatter) {
4029
+ return /* @__PURE__ */ jsx52("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
4030
+ }
4031
+ if (!value) return null;
4032
+ return /* @__PURE__ */ jsx52("div", { className: cn("font-medium", labelClassName), children: value });
4033
+ }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);
4034
+ if (!active || !payload?.length) return null;
4035
+ return /* @__PURE__ */ jsxs35("div", { ref, className: cn("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl", className), children: [
4036
+ tooltipLabel,
4037
+ /* @__PURE__ */ jsx52("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
4038
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
4039
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
4040
+ const indicatorColor = color || item.payload?.fill || item.color;
4041
+ return /* @__PURE__ */ jsx52("div", { className: cn("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground", indicator === "dot" && "items-center"), children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs35(Fragment2, { children: [
4042
+ !hideIndicator && /* @__PURE__ */ jsx52(
4043
+ "div",
4044
+ {
4045
+ className: cn("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]", {
4046
+ "h-2.5 w-2.5": indicator === "dot",
4047
+ "w-1": indicator === "line",
4048
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
4049
+ "my-0.5": indicator === "dashed" || indicator === "line"
4050
+ }),
4051
+ style: { "--color-bg": indicatorColor, "--color-border": indicatorColor }
4052
+ }
4053
+ ),
4054
+ /* @__PURE__ */ jsxs35("div", { className: cn("flex flex-1 justify-between leading-none", hideIndicator ? "gap-2" : "gap-2"), children: [
4055
+ /* @__PURE__ */ jsx52("div", { className: "grid gap-1.5", children: /* @__PURE__ */ jsx52("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name }) }),
4056
+ item.value !== void 0 && /* @__PURE__ */ jsx52("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
4057
+ ] })
4058
+ ] }) }, item.dataKey);
4059
+ }) })
4060
+ ] });
4061
+ }
4062
+ );
4063
+ ChartTooltipContent.displayName = "ChartTooltipContent";
4064
+ var ChartLegend = RechartsPrimitive.Legend;
4065
+ var ChartLegendContent = React47.forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
4066
+ const { config } = useChart();
4067
+ if (!payload?.length) return null;
4068
+ return /* @__PURE__ */ jsx52("div", { ref, className: cn("flex items-center justify-center gap-4", verticalAlign === "top" ? "pb-3" : "pt-3", className), children: payload.map((item) => {
4069
+ const key = `${nameKey || item.dataKey || "value"}`;
4070
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
4071
+ return /* @__PURE__ */ jsxs35("div", { className: cn("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"), children: [
4072
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx52(itemConfig.icon, {}) : /* @__PURE__ */ jsx52("div", { className: "h-2 w-2 shrink-0 rounded-[2px]", style: { backgroundColor: item.color } }),
4073
+ itemConfig?.label
4074
+ ] }, item.value);
4075
+ }) });
4076
+ });
4077
+ ChartLegendContent.displayName = "ChartLegendContent";
4078
+ function getPayloadConfigFromPayload(config, payload, key) {
4079
+ if (typeof payload !== "object" || payload === null) return void 0;
4080
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
4081
+ let configLabelKey = key;
4082
+ if (key in config) {
4083
+ configLabelKey = key;
4084
+ } else if (payloadPayload && key in payloadPayload) {
4085
+ configLabelKey = payloadPayload[key];
4086
+ }
4087
+ return configLabelKey in config ? config[configLabelKey] : config[key];
4088
+ }
4089
+
4090
+ // src/components/dashboard-header.tsx
4091
+ import * as React48 from "react";
4092
+ import { Search as Search2, Bell } from "lucide-react";
4093
+ import { jsx as jsx53, jsxs as jsxs36 } from "react/jsx-runtime";
4094
+ var DashboardHeader = React48.forwardRef(
4095
+ ({ title, onSearch, notificationCount, user, className, ...props }, ref) => {
4096
+ const [searchQuery, setSearchQuery] = React48.useState("");
4097
+ return /* @__PURE__ */ jsxs36(
4098
+ "header",
4099
+ {
4100
+ ref,
4101
+ className: cn(
4102
+ "flex h-16 w-full items-center justify-between gap-4 border-b border-[var(--hc-color-border-subtle)] bg-background px-6",
4103
+ className
4104
+ ),
4105
+ ...props,
4106
+ children: [
4107
+ title && /* @__PURE__ */ jsx53("h1", { className: "truncate text-base font-semibold text-foreground", children: title }),
4108
+ /* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-3", children: [
4109
+ onSearch && /* @__PURE__ */ jsxs36("div", { className: "flex h-9 w-[260px] items-center gap-2 rounded-md border border-input bg-background px-3 transition-[border-color,box-shadow] duration-150 focus-within:border-[var(--hc-primary-500)] focus-within:ring-[3px] focus-within:ring-[color-mix(in_srgb,var(--hc-primary-500)_22%,transparent)]", children: [
4110
+ /* @__PURE__ */ jsx53(Search2, { className: "size-4 shrink-0 text-muted-foreground" }),
4111
+ /* @__PURE__ */ jsx53(
4112
+ "input",
4113
+ {
4114
+ type: "text",
4115
+ placeholder: "Search...",
4116
+ value: searchQuery,
4117
+ onChange: (e) => {
4118
+ setSearchQuery(e.target.value);
4119
+ onSearch(e.target.value);
4120
+ },
4121
+ className: "w-full bg-transparent text-sm text-foreground placeholder:text-muted-foreground outline-none",
4122
+ "aria-label": "Search"
4123
+ }
4124
+ )
4125
+ ] }),
4126
+ /* @__PURE__ */ jsxs36("div", { className: "relative", children: [
4127
+ /* @__PURE__ */ jsx53(
4128
+ "button",
4129
+ {
4130
+ type: "button",
4131
+ "aria-label": notificationCount && notificationCount > 0 ? `Notifications, ${notificationCount} unread` : "Notifications",
4132
+ className: "inline-flex size-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-2 focus-visible:ring-offset-background",
4133
+ children: /* @__PURE__ */ jsx53(Bell, { className: "size-[18px]" })
4134
+ }
4135
+ ),
4136
+ notificationCount && notificationCount > 0 && /* @__PURE__ */ jsx53(
4137
+ "span",
4138
+ {
4139
+ "aria-label": `${notificationCount} notifications`,
4140
+ className: "absolute -top-0.5 -end-0.5 flex min-w-[18px] items-center justify-center rounded-full bg-[var(--hc-color-destructive)] px-1 text-[10px] font-semibold leading-none text-white h-[18px] ring-2 ring-background",
4141
+ children: notificationCount > 9 ? "9+" : notificationCount
4142
+ }
4143
+ )
4144
+ ] }),
4145
+ user && /* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-3 ps-3 border-s border-[var(--hc-color-border-subtle)]", children: [
4146
+ /* @__PURE__ */ jsxs36("div", { className: "text-end leading-tight", children: [
4147
+ /* @__PURE__ */ jsx53("p", { className: "text-sm font-semibold text-foreground", children: user.name }),
4148
+ /* @__PURE__ */ jsx53("p", { className: "text-xs text-muted-foreground", children: user.role })
4149
+ ] }),
4150
+ /* @__PURE__ */ jsx53("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-full bg-[var(--hc-primary-600)] text-sm font-semibold text-white", children: user.initials || user.name.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2) })
4151
+ ] })
4152
+ ] })
4153
+ ]
4154
+ }
4155
+ );
4156
+ }
4157
+ );
4158
+ DashboardHeader.displayName = "DashboardHeader";
4159
+
4160
+ // src/components/app-header.tsx
4161
+ import * as React49 from "react";
4162
+ import { Search as Search3, Bell as Bell2, Moon } from "lucide-react";
4163
+ import { jsx as jsx54, jsxs as jsxs37 } from "react/jsx-runtime";
4164
+ var AppHeader = React49.forwardRef(
4165
+ ({
4166
+ onSearch,
4167
+ searchPlaceholder = "Search cases, employees...",
4168
+ showThemeToggle = true,
4169
+ onThemeToggle,
4170
+ hasNotifications = false,
4171
+ onNotificationClick,
4172
+ user,
4173
+ className,
4174
+ ...props
4175
+ }, ref) => {
4176
+ const [searchQuery, setSearchQuery] = React49.useState("");
4177
+ return /* @__PURE__ */ jsxs37(
4178
+ "header",
4179
+ {
4180
+ ref,
4181
+ className: cn(
4182
+ "flex h-16 w-full items-center justify-between gap-4 border-b border-[var(--hc-color-border-subtle)] bg-background px-6",
4183
+ className
4184
+ ),
4185
+ ...props,
4186
+ children: [
4187
+ onSearch && /* @__PURE__ */ jsxs37("div", { className: "flex h-9 w-[300px] items-center gap-2 rounded-md border border-input bg-background px-3 transition-[border-color,box-shadow] duration-150 focus-within:border-[var(--hc-primary-500)] focus-within:ring-[3px] focus-within:ring-[color-mix(in_srgb,var(--hc-primary-500)_22%,transparent)]", children: [
4188
+ /* @__PURE__ */ jsx54(Search3, { className: "size-4 shrink-0 text-muted-foreground" }),
4189
+ /* @__PURE__ */ jsx54(
4190
+ "input",
4191
+ {
4192
+ type: "text",
4193
+ placeholder: searchPlaceholder,
4194
+ value: searchQuery,
4195
+ onChange: (e) => {
4196
+ setSearchQuery(e.target.value);
4197
+ onSearch(e.target.value);
4198
+ },
4199
+ className: "w-full bg-transparent text-sm text-foreground placeholder:text-muted-foreground outline-none",
4200
+ "aria-label": searchPlaceholder
4201
+ }
4202
+ )
4203
+ ] }),
4204
+ /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
4205
+ showThemeToggle && /* @__PURE__ */ jsx54(
4206
+ "button",
4207
+ {
4208
+ type: "button",
4209
+ onClick: onThemeToggle,
4210
+ "aria-label": "Toggle theme",
4211
+ className: "inline-flex size-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-2 focus-visible:ring-offset-background",
4212
+ children: /* @__PURE__ */ jsx54(Moon, { className: "size-[18px]" })
4213
+ }
4214
+ ),
4215
+ /* @__PURE__ */ jsxs37(
4216
+ "button",
4217
+ {
4218
+ type: "button",
4219
+ onClick: onNotificationClick,
4220
+ "aria-label": hasNotifications ? "Notifications (unread)" : "Notifications",
4221
+ className: "relative inline-flex size-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--hc-primary-500)] focus-visible:ring-offset-2 focus-visible:ring-offset-background",
4222
+ children: [
4223
+ /* @__PURE__ */ jsx54(Bell2, { className: "size-[18px]" }),
4224
+ hasNotifications && /* @__PURE__ */ jsx54(
4225
+ "span",
4226
+ {
4227
+ "aria-hidden": "true",
4228
+ className: "absolute top-[8px] end-[8px] size-2 rounded-full bg-[var(--hc-color-destructive)] ring-2 ring-background"
4229
+ }
4230
+ )
4231
+ ]
4232
+ }
4233
+ ),
4234
+ user && /* @__PURE__ */ jsxs37("div", { className: "ms-1 flex items-center gap-3 ps-3 border-s border-[var(--hc-color-border-subtle)]", children: [
4235
+ /* @__PURE__ */ jsxs37("div", { className: "text-end leading-tight", children: [
4236
+ /* @__PURE__ */ jsx54("p", { className: "text-sm font-semibold text-foreground", children: user.name }),
4237
+ /* @__PURE__ */ jsx54("p", { className: "text-xs text-muted-foreground truncate max-w-[160px]", children: user.email })
4238
+ ] }),
4239
+ /* @__PURE__ */ jsx54("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-full bg-[var(--hc-primary-600)] text-sm font-semibold text-white", children: user.initials || user.name.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2) })
4240
+ ] })
4241
+ ] })
4242
+ ]
4243
+ }
4244
+ );
4245
+ }
4246
+ );
4247
+ AppHeader.displayName = "AppHeader";
4248
+
4249
+ // src/components/icon/bell-icon.tsx
4250
+ import { jsx as jsx55, jsxs as jsxs38 } from "react/jsx-runtime";
4251
+ function BellIcon({
4252
+ size = 20,
4253
+ width,
4254
+ height,
4255
+ fill = "none",
4256
+ ...props
4257
+ }) {
4258
+ return /* @__PURE__ */ jsxs38(
4259
+ "svg",
4260
+ {
4261
+ viewBox: "0 0 20 20",
4262
+ width: width ?? size,
4263
+ height: height ?? size,
4264
+ fill,
4265
+ "aria-hidden": "true",
4266
+ ...props,
4267
+ children: [
4268
+ /* @__PURE__ */ jsx55(
4269
+ "path",
4270
+ {
4271
+ d: "M10 2.75a3.5 3.5 0 0 0-3.5 3.5v1.137c0 .647-.215 1.276-.611 1.788l-.82 1.062A2.25 2.25 0 0 0 6.85 13.75h6.3a2.25 2.25 0 0 0 1.781-3.513l-.82-1.062A2.935 2.935 0 0 1 13.5 7.387V6.25A3.5 3.5 0 0 0 10 2.75Z",
4272
+ stroke: "currentColor",
4273
+ strokeWidth: "1.4",
4274
+ strokeLinecap: "round",
4275
+ strokeLinejoin: "round"
4276
+ }
4277
+ ),
4278
+ /* @__PURE__ */ jsx55(
4279
+ "path",
4280
+ {
4281
+ d: "M8.25 15.25a1.75 1.75 0 0 0 3.5 0",
4282
+ stroke: "currentColor",
4283
+ strokeWidth: "1.4",
4284
+ strokeLinecap: "round",
4285
+ strokeLinejoin: "round"
4286
+ }
4287
+ )
4288
+ ]
4289
+ }
4290
+ );
4291
+ }
4292
+
4293
+ // src/components/icon/icon-info-line-icon.tsx
4294
+ import { jsx as jsx56, jsxs as jsxs39 } from "react/jsx-runtime";
4295
+ function IconInfoLineIcon({ size = 16, width, height, fill, title, ...props }) {
4296
+ return /* @__PURE__ */ jsxs39("svg", { viewBox: "0 0 16 16", width: width ?? size, height: height ?? size, fill: fill ?? "none", "aria-hidden": title ? void 0 : true, role: title ? "img" : "presentation", ...props, children: [
4297
+ /* @__PURE__ */ jsx56("path", { d: "M7.99992 5.33333H8.00525M7.99992 10.6667V7.33333M14.6666 8C14.6666 11.682 11.6819 14.6667 7.99992 14.6667C4.31792 14.6667 1.33325 11.682 1.33325 8C1.33325 4.318 4.31792 1.33333 7.99992 1.33333C11.6819 1.33333 14.6666 4.318 14.6666 8Z", stroke: "black", strokeMiterlimit: "10", strokeLinecap: "round", strokeLinejoin: "round" }),
4298
+ title ? /* @__PURE__ */ jsx56("title", { children: title }) : null
4299
+ ] });
4300
+ }
4301
+
4302
+ // src/components/sonner.tsx
4303
+ import { useTheme } from "next-themes";
4304
+ import { Toaster as Sonner, toast } from "sonner";
4305
+ import { jsx as jsx57 } from "react/jsx-runtime";
4306
+ var Toaster = ({ ...props }) => {
4307
+ const { theme = "system" } = useTheme();
4308
+ return /* @__PURE__ */ jsx57(
4309
+ Sonner,
4310
+ {
4311
+ theme,
4312
+ className: "toaster group",
4313
+ toastOptions: {
4314
+ classNames: {
4315
+ toast: "group toast group-[.toaster]:!bg-white group-[.toaster]:!rounded-[6px] group-[.toaster]:!shadow-lg group-[.toaster]:!border group-[.toaster]:!border-[rgba(0,0,0,0.08)] group-[.toaster]:!p-4 group-[.toaster]:!font-[Inter]",
4316
+ title: "group-[.toast]:!text-sm group-[.toast]:!leading-[24px] group-[.toast]:!font-medium group-[.toast]:!text-[var(--hc-grey-600)]",
4317
+ description: "group-[.toast]:!text-xs group-[.toast]:!leading-[18px] group-[.toast]:!text-[var(--hc-grey-600)] group-[.toast]:!font-normal",
4318
+ actionButton: "group-[.toast]:!text-sm group-[.toast]:!leading-[18px] group-[.toast]:!font-medium group-[.toast]:!text-[var(--hc-primary-600)] group-[.toast]:!bg-transparent group-[.toast]:!p-0",
4319
+ cancelButton: "group-[.toast]:!bg-transparent group-[.toast]:!text-foreground group-[.toast]:!text-sm group-[.toast]:!font-medium group-[.toast]:!p-0",
4320
+ closeButton: "group-[.toast]:!text-[var(--hc-grey-300)]"
4321
+ }
4322
+ },
4323
+ ...props
4324
+ }
4325
+ );
4326
+ };
4327
+
4328
+ // src/components/typography.tsx
4329
+ import * as React50 from "react";
4330
+ import { jsx as jsx58 } from "react/jsx-runtime";
4331
+ var weightMap = {
4332
+ extrabold: "font-extrabold",
4333
+ bold: "font-bold",
4334
+ semibold: "font-semibold",
4335
+ medium: "font-medium",
4336
+ regular: "font-normal",
4337
+ light: "font-light"
4338
+ };
4339
+ var colorMap = {
4340
+ secondary: "text-muted-foreground",
4341
+ foreground: "text-[var(--hc-color-foreground)]",
4342
+ muted: "text-muted-foreground",
4343
+ success: "text-[var(--hc-color-success)]",
4344
+ warning: "text-[var(--hc-color-warning)]",
4345
+ destructive: "text-[var(--hc-color-destructive)]",
4346
+ inherit: "text-inherit"
4347
+ };
4348
+ function resolveColor(color, defaultColorClass) {
4349
+ if (!color || color === "default") return defaultColorClass;
4350
+ return colorMap[color];
4351
+ }
4352
+ var H1 = React50.forwardRef(
4353
+ ({ className, weight = "semibold", color, ...props }, ref) => /* @__PURE__ */ jsx58("h1", { ref, className: cn("scroll-m-20 text-3xl tracking-tight", resolveColor(color, "text-foreground"), weightMap[weight], className), ...props })
4354
+ );
4355
+ H1.displayName = "H1";
4356
+ var H2 = React50.forwardRef(
4357
+ ({ className, weight = "semibold", color, ...props }, ref) => /* @__PURE__ */ jsx58("h2", { ref, className: cn("scroll-m-20 text-2xl tracking-tight", resolveColor(color, "text-foreground"), weightMap[weight], className), ...props })
4358
+ );
4359
+ H2.displayName = "H2";
4360
+ var H3 = React50.forwardRef(
4361
+ ({ className, weight = "semibold", color, ...props }, ref) => /* @__PURE__ */ jsx58("h3", { ref, className: cn("scroll-m-20 text-xl tracking-tight", resolveColor(color, "text-foreground"), weightMap[weight], className), ...props })
4362
+ );
4363
+ H3.displayName = "H3";
4364
+ var H4 = React50.forwardRef(
4365
+ ({ className, weight = "semibold", color, ...props }, ref) => /* @__PURE__ */ jsx58("h4", { ref, className: cn("scroll-m-20 text-lg tracking-tight", resolveColor(color, "text-foreground"), weightMap[weight], className), ...props })
4366
+ );
4367
+ H4.displayName = "H4";
4368
+ var Body = React50.forwardRef(
4369
+ ({ className, weight = "regular", color, ...props }, ref) => /* @__PURE__ */ jsx58("p", { ref, className: cn("text-base leading-7", resolveColor(color, "text-foreground"), weightMap[weight], className), ...props })
4370
+ );
4371
+ Body.displayName = "Body";
4372
+ var Small = React50.forwardRef(
4373
+ ({ className, weight = "regular", color, ...props }, ref) => /* @__PURE__ */ jsx58("p", { ref, className: cn("text-sm", resolveColor(color, "text-muted-foreground"), weightMap[weight], className), ...props })
4374
+ );
4375
+ Small.displayName = "Small";
4376
+ var Caption = React50.forwardRef(
4377
+ ({ className, weight = "regular", color, ...props }, ref) => /* @__PURE__ */ jsx58("p", { ref, className: cn("text-xs", resolveColor(color, "text-muted-foreground"), weightMap[weight], className), ...props })
4378
+ );
4379
+ Caption.displayName = "Caption";
4380
+ var Lead = React50.forwardRef(
4381
+ ({ className, weight = "medium", color, ...props }, ref) => /* @__PURE__ */ jsx58("p", { ref, className: cn("text-lg", resolveColor(color, "text-foreground"), weightMap[weight], className), ...props })
4382
+ );
4383
+ Lead.displayName = "Lead";
4384
+ var Muted = React50.forwardRef(
4385
+ ({ className, weight = "regular", color, ...props }, ref) => /* @__PURE__ */ jsx58("p", { ref, className: cn("text-sm", resolveColor(color, "text-muted-foreground"), weightMap[weight], className), ...props })
4386
+ );
4387
+ Muted.displayName = "Muted";
4388
+ var Code = React50.forwardRef(
4389
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx58(
4390
+ "code",
4391
+ {
4392
+ ref,
4393
+ className: cn(
4394
+ "relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold",
4395
+ className
4396
+ ),
4397
+ ...props
4398
+ }
4399
+ )
4400
+ );
4401
+ Code.displayName = "Code";
4402
+
4403
+ // src/components/theme-provider.tsx
4404
+ import { ThemeProvider as NextThemesProvider } from "next-themes";
4405
+ import { useTheme as useTheme2 } from "next-themes";
4406
+ import { jsx as jsx59 } from "react/jsx-runtime";
4407
+ function ThemeProvider({ children, ...props }) {
4408
+ return /* @__PURE__ */ jsx59(NextThemesProvider, { ...props, children });
4409
+ }
4410
+
4411
+ // src/components/banner.tsx
4412
+ import * as React51 from "react";
4413
+ import { jsx as jsx60, jsxs as jsxs40 } from "react/jsx-runtime";
4414
+ var variantStyles = {
4415
+ primary: "bg-[var(--hc-banner-primary-bg)] border border-[var(--hc-primary-200)]",
4416
+ muted: "bg-[var(--hc-color-muted)] border border-[var(--hc-color-border)]",
4417
+ success: "bg-[var(--hc-banner-success-bg)] border border-[var(--hc-banner-success-border)]",
4418
+ warning: "bg-[var(--hc-banner-warning-bg)] border border-[var(--hc-banner-warning-border)]",
4419
+ destructive: "bg-[var(--hc-banner-destructive-bg)] border border-[var(--hc-banner-destructive-border)]"
4420
+ };
4421
+ var iconBgStyles = {
4422
+ primary: "bg-[var(--hc-primary-500)]",
4423
+ muted: "bg-[var(--hc-color-border)]",
4424
+ success: "bg-[var(--hc-color-success)]",
4425
+ warning: "bg-[var(--hc-color-warning)]",
4426
+ destructive: "bg-[var(--hc-color-destructive)]"
4427
+ };
4428
+ var Banner = React51.forwardRef(
4429
+ ({ variant = "primary", icon, title, description, action, className, children, ...props }, ref) => /* @__PURE__ */ jsx60(
4430
+ "div",
4431
+ {
4432
+ ref,
4433
+ className: cn("rounded-lg px-6 py-5", variantStyles[variant], className),
4434
+ ...props,
4435
+ children: /* @__PURE__ */ jsxs40("div", { className: "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4", children: [
4436
+ /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-3", children: [
4437
+ icon && /* @__PURE__ */ jsx60("div", { className: cn("h-10 w-10 rounded-full flex items-center justify-center shrink-0 text-white", iconBgStyles[variant]), children: icon }),
4438
+ /* @__PURE__ */ jsxs40("div", { children: [
4439
+ title && /* @__PURE__ */ jsx60("p", { className: "text-sm font-bold text-foreground", children: title }),
4440
+ description && /* @__PURE__ */ jsx60("p", { className: "text-xs mt-0.5 text-muted-foreground", children: description }),
4441
+ children
4442
+ ] })
4443
+ ] }),
4444
+ action && /* @__PURE__ */ jsx60("div", { className: "shrink-0", children: action })
4445
+ ] })
4446
+ }
4447
+ )
4448
+ );
4449
+ Banner.displayName = "Banner";
4450
+ export {
4451
+ Accordion,
4452
+ AccordionContent,
4453
+ AccordionItem,
4454
+ AccordionTrigger,
4455
+ Alert,
4456
+ AlertAction,
4457
+ AlertDescription,
4458
+ AlertDialog,
4459
+ AlertDialogAction,
4460
+ AlertDialogCancel,
4461
+ AlertDialogContent,
4462
+ AlertDialogDescription,
4463
+ AlertDialogFooter,
4464
+ AlertDialogHeader,
4465
+ AlertDialogMedia,
4466
+ AlertDialogOverlay,
4467
+ AlertDialogPortal,
4468
+ AlertDialogTitle,
4469
+ AlertDialogTrigger,
4470
+ AlertTitle,
4471
+ AppHeader,
4472
+ AspectRatio,
4473
+ Avatar,
4474
+ AvatarFallback,
4475
+ AvatarGroup,
4476
+ AvatarImage,
4477
+ Badge,
4478
+ Banner,
4479
+ BellIcon,
4480
+ Body,
4481
+ Breadcrumb,
4482
+ BreadcrumbEllipsis,
4483
+ BreadcrumbItem,
4484
+ BreadcrumbLink,
4485
+ BreadcrumbList,
4486
+ BreadcrumbPage,
4487
+ BreadcrumbSeparator,
4488
+ Button,
4489
+ Calendar,
4490
+ Caption,
4491
+ Card,
4492
+ CardContent,
4493
+ CardDescription,
4494
+ CardFooter,
4495
+ CardHeader,
4496
+ CardKPI,
4497
+ CardTitle,
4498
+ Carousel,
4499
+ CarouselContent,
4500
+ CarouselItem,
4501
+ CarouselNext,
4502
+ CarouselPrevious,
4503
+ ChartContainer,
4504
+ ChartLegend,
4505
+ ChartLegendContent,
4506
+ ChartStyle,
4507
+ ChartTooltip,
4508
+ ChartTooltipContent,
4509
+ Checkbox,
4510
+ Code,
4511
+ Collapsible,
4512
+ CollapsibleContent2 as CollapsibleContent,
4513
+ CollapsibleTrigger2 as CollapsibleTrigger,
4514
+ Command,
4515
+ CommandDialog,
4516
+ CommandEmpty,
4517
+ CommandGroup,
4518
+ CommandInput,
4519
+ CommandItem,
4520
+ CommandList,
4521
+ CommandSeparator,
4522
+ CommandShortcut,
4523
+ ContextMenu,
4524
+ ContextMenuCheckboxItem,
4525
+ ContextMenuContent,
4526
+ ContextMenuGroup,
4527
+ ContextMenuItem,
4528
+ ContextMenuLabel,
4529
+ ContextMenuPortal,
4530
+ ContextMenuRadioGroup,
4531
+ ContextMenuRadioItem,
4532
+ ContextMenuSeparator,
4533
+ ContextMenuShortcut,
4534
+ ContextMenuSub,
4535
+ ContextMenuSubContent,
4536
+ ContextMenuSubTrigger,
4537
+ ContextMenuTrigger,
4538
+ DashboardHeader,
4539
+ DataTable,
4540
+ DatePicker,
4541
+ Dialog,
4542
+ DialogClose,
4543
+ DialogContent,
4544
+ DialogDescription,
4545
+ DialogFooter,
4546
+ DialogHeader,
4547
+ DialogOverlay,
4548
+ DialogPortal,
4549
+ DialogTitle,
4550
+ DialogTrigger,
4551
+ Drawer,
4552
+ DrawerBody,
4553
+ DrawerClose,
4554
+ DrawerContent,
4555
+ DrawerDescription,
4556
+ DrawerFooter,
4557
+ DrawerHeader,
4558
+ DrawerOverlay,
4559
+ DrawerPortal,
4560
+ DrawerTitle,
4561
+ DrawerTrigger,
4562
+ DropdownMenu,
4563
+ DropdownMenuCheckboxItem,
4564
+ DropdownMenuContent,
4565
+ DropdownMenuGroup,
4566
+ DropdownMenuItem,
4567
+ DropdownMenuLabel,
4568
+ DropdownMenuPortal,
4569
+ DropdownMenuRadioGroup,
4570
+ DropdownMenuRadioItem,
4571
+ DropdownMenuSeparator,
4572
+ DropdownMenuShortcut,
4573
+ DropdownMenuSub,
4574
+ DropdownMenuSubContent,
4575
+ DropdownMenuSubTrigger,
4576
+ DropdownMenuTrigger,
4577
+ EmptyState,
4578
+ EmptyStateActions,
4579
+ FileInput,
4580
+ Form,
4581
+ FormControl,
4582
+ FormDescription,
4583
+ FormField,
4584
+ FormItem,
4585
+ FormLabel,
4586
+ FormMessage,
4587
+ H1,
4588
+ H2,
4589
+ H3,
4590
+ H4,
4591
+ HoverCard,
4592
+ HoverCardContent,
4593
+ HoverCardTrigger,
4594
+ IconInfoLineIcon,
4595
+ Input,
4596
+ InputAddon,
4597
+ InputGroup,
4598
+ InputOTP,
4599
+ InputOTPGroup,
4600
+ InputOTPSeparator,
4601
+ InputOTPSlot,
4602
+ Item4 as Item,
4603
+ ItemActions,
4604
+ ItemContent,
4605
+ ItemDescription,
4606
+ ItemGroup,
4607
+ ItemMedia,
4608
+ ItemTitle,
4609
+ Label,
4610
+ Lead,
4611
+ Menubar,
4612
+ MenubarCheckboxItem,
4613
+ MenubarContent,
4614
+ MenubarGroup,
4615
+ MenubarItem,
4616
+ MenubarLabel,
4617
+ MenubarMenu,
4618
+ MenubarPortal,
4619
+ MenubarRadioGroup,
4620
+ MenubarRadioItem,
4621
+ MenubarSeparator,
4622
+ MenubarShortcut,
4623
+ MenubarSub,
4624
+ MenubarSubContent,
4625
+ MenubarSubTrigger,
4626
+ MenubarTrigger,
4627
+ Muted,
4628
+ NavigationMenu,
4629
+ NavigationMenuContent,
4630
+ NavigationMenuIndicator,
4631
+ NavigationMenuItem,
4632
+ NavigationMenuLink,
4633
+ NavigationMenuList,
4634
+ NavigationMenuTrigger,
4635
+ NavigationMenuViewport,
4636
+ Pagination,
4637
+ PaginationContent,
4638
+ PaginationEllipsis,
4639
+ PaginationInfo,
4640
+ PaginationItem,
4641
+ PaginationLink,
4642
+ PaginationNext,
4643
+ PaginationPrevious,
4644
+ Popover,
4645
+ PopoverContent,
4646
+ PopoverTrigger,
4647
+ Progress,
4648
+ RadioGroup,
4649
+ RadioGroupItem,
4650
+ ResizableHandle,
4651
+ ResizablePanel,
4652
+ ResizablePanelGroup,
4653
+ ScrollArea,
4654
+ ScrollBar,
4655
+ Select,
4656
+ SelectContent,
4657
+ SelectGroup,
4658
+ SelectItem,
4659
+ SelectLabel,
4660
+ SelectScrollDownButton,
4661
+ SelectScrollUpButton,
4662
+ SelectSeparator,
4663
+ SelectTrigger,
4664
+ SelectValue,
4665
+ Separator2 as Separator,
4666
+ Sheet,
4667
+ SheetClose,
4668
+ SheetContent,
4669
+ SheetDescription,
4670
+ SheetFooter,
4671
+ SheetHeader,
4672
+ SheetOverlay,
4673
+ SheetPortal,
4674
+ SheetTitle,
4675
+ SheetTrigger,
4676
+ Sidebar,
4677
+ SidebarContent,
4678
+ SidebarFooter,
4679
+ SidebarGroup,
4680
+ SidebarGroupContent,
4681
+ SidebarGroupLabel,
4682
+ SidebarHeader,
4683
+ SidebarInset,
4684
+ SidebarMenu,
4685
+ SidebarMenuButton,
4686
+ SidebarMenuItem,
4687
+ SidebarProvider,
4688
+ SidebarTrigger,
4689
+ Skeleton,
4690
+ Slider,
4691
+ Small,
4692
+ Spinner,
4693
+ Stepper,
4694
+ StepperItem,
4695
+ SuccessIcon,
4696
+ Switch,
4697
+ Table,
4698
+ TableBody,
4699
+ TableCaption,
4700
+ TableCell,
4701
+ TableFooter,
4702
+ TableHead,
4703
+ TableHeader,
4704
+ TableRow,
4705
+ Tabs,
4706
+ TabsContent,
4707
+ TabsList,
4708
+ TabsTrigger,
4709
+ Textarea,
4710
+ ThemeProvider,
4711
+ Toaster,
4712
+ Toggle,
4713
+ ToggleGroup,
4714
+ ToggleGroupItem,
4715
+ Tooltip,
4716
+ TooltipContent,
4717
+ TooltipProvider,
4718
+ TooltipTrigger,
4719
+ alertVariants,
4720
+ buttonVariants,
4721
+ checkboxVariants,
4722
+ cn,
4723
+ emptyStateVariants,
4724
+ inputVariants,
4725
+ navigationMenuTriggerStyle,
4726
+ spinnerVariants,
4727
+ switchVariants,
4728
+ toast,
4729
+ toggleVariants,
4730
+ useFormField,
4731
+ useSidebar,
4732
+ useTheme2 as useTheme
4733
+ };
4734
+ //# sourceMappingURL=index.js.map