@wealthx/shadcn 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/.turbo/turbo-build.log +235 -154
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-6OJF6XRN.mjs → chunk-24FUO7TD.mjs} +4 -8
  4. package/dist/{chunk-4AJ5HWHD.mjs → chunk-2I5S2AMY.mjs} +3 -3
  5. package/dist/{chunk-GPRJQ24C.mjs → chunk-34NWQURD.mjs} +2 -2
  6. package/dist/{chunk-MQ72DIBH.mjs → chunk-3GF7OVTP.mjs} +14 -5
  7. package/dist/chunk-3WMX6KWS.mjs +245 -0
  8. package/dist/{chunk-PMKODV6M.mjs → chunk-462HMNO4.mjs} +6 -10
  9. package/dist/chunk-4CX4SBRO.mjs +153 -0
  10. package/dist/chunk-4MN6UQHG.mjs +443 -0
  11. package/dist/chunk-4Y6R4WEC.mjs +250 -0
  12. package/dist/{chunk-BGP2N52Z.mjs → chunk-66MI7Q4B.mjs} +5 -5
  13. package/dist/{chunk-CGOKTPXU.mjs → chunk-6JQFUE5I.mjs} +20 -23
  14. package/dist/{chunk-Z3MK2KKZ.mjs → chunk-7DHU4VGG.mjs} +7 -3
  15. package/dist/chunk-7MMXNK3C.mjs +317 -0
  16. package/dist/{chunk-VZ2NR7L3.mjs → chunk-7PYJD5JI.mjs} +35 -27
  17. package/dist/{chunk-JU2RUWHF.mjs → chunk-7XJHLGUV.mjs} +1 -1
  18. package/dist/{chunk-BMFN37JH.mjs → chunk-7YAU5CY6.mjs} +1 -1
  19. package/dist/chunk-A56YQQHG.mjs +402 -0
  20. package/dist/{chunk-GLW2UO6O.mjs → chunk-BL3DXM2X.mjs} +84 -62
  21. package/dist/{chunk-SLWCCURD.mjs → chunk-CLIN5525.mjs} +8 -4
  22. package/dist/{chunk-3VQNJ235.mjs → chunk-CSDO6VBW.mjs} +7 -0
  23. package/dist/chunk-D4ILTPOG.mjs +293 -0
  24. package/dist/{chunk-HS7TFG7V.mjs → chunk-D6ID6M4V.mjs} +1 -1
  25. package/dist/chunk-DOH3EHX7.mjs +378 -0
  26. package/dist/{chunk-MJIEMGRD.mjs → chunk-EFRENWEJ.mjs} +9 -17
  27. package/dist/{chunk-YBXCIF5Q.mjs → chunk-ERGGHC2V.mjs} +36 -49
  28. package/dist/{chunk-OXQQNQZI.mjs → chunk-FEZKMUCF.mjs} +10 -1
  29. package/dist/{chunk-55CEW76V.mjs → chunk-FH6QVUVZ.mjs} +1 -1
  30. package/dist/chunk-FMAXJ2SI.mjs +71 -0
  31. package/dist/chunk-FZIXGLMV.mjs +173 -0
  32. package/dist/chunk-GGM2UYGG.mjs +273 -0
  33. package/dist/{chunk-DS2AMHN2.mjs → chunk-GYMYRIZP.mjs} +2 -2
  34. package/dist/{chunk-KQDD5MU3.mjs → chunk-H45TKD34.mjs} +5 -5
  35. package/dist/{chunk-BBJBJSXQ.mjs → chunk-J5UICVJS.mjs} +1 -1
  36. package/dist/{chunk-RL772EH7.mjs → chunk-JHJHG4GO.mjs} +4 -12
  37. package/dist/{chunk-RN67642N.mjs → chunk-JNQORUPP.mjs} +49 -42
  38. package/dist/{chunk-5JGQAAQV.mjs → chunk-K3JYD4IU.mjs} +86 -63
  39. package/dist/{chunk-FHNT55I5.mjs → chunk-KUDCQ4FI.mjs} +4 -4
  40. package/dist/{chunk-UEL4RD5P.mjs → chunk-LHYCMLVA.mjs} +82 -68
  41. package/dist/{chunk-NLLKTU4B.mjs → chunk-LLVQKSU3.mjs} +21 -17
  42. package/dist/{chunk-KKHTJNMM.mjs → chunk-MARPPFOJ.mjs} +8 -4
  43. package/dist/{chunk-6AFMNC42.mjs → chunk-N2PT566P.mjs} +15 -11
  44. package/dist/{chunk-YN5SYTOO.mjs → chunk-NQPOYKAQ.mjs} +9 -5
  45. package/dist/{chunk-ZZV5JVNW.mjs → chunk-NSLMILBT.mjs} +3 -7
  46. package/dist/chunk-OGOYQ7BG.mjs +150 -0
  47. package/dist/chunk-OPNQAVVH.mjs +162 -0
  48. package/dist/{chunk-3NQGYJEZ.mjs → chunk-P6AM5V7O.mjs} +10 -18
  49. package/dist/{chunk-CZ3BW5GL.mjs → chunk-P76HMUI6.mjs} +5 -11
  50. package/dist/chunk-PCPLO5HT.mjs +671 -0
  51. package/dist/chunk-PG6K5XEC.mjs +475 -0
  52. package/dist/{chunk-DDPA2XXS.mjs → chunk-PMB3A7V3.mjs} +2 -2
  53. package/dist/chunk-PR6V5XKM.mjs +209 -0
  54. package/dist/{chunk-46OFHMQA.mjs → chunk-Q76O3RIQ.mjs} +10 -6
  55. package/dist/chunk-RGU7HOEC.mjs +140 -0
  56. package/dist/{chunk-JF4PHPD5.mjs → chunk-RGVKLTLH.mjs} +4 -4
  57. package/dist/{chunk-VG6UF6UT.mjs → chunk-RP3SQYA3.mjs} +2 -2
  58. package/dist/chunk-RYCLWMZ7.mjs +162 -0
  59. package/dist/chunk-SIZMLSRU.mjs +162 -0
  60. package/dist/chunk-SPJ5KXW7.mjs +199 -0
  61. package/dist/chunk-SWGT756Z.mjs +210 -0
  62. package/dist/chunk-SYOD63OZ.mjs +225 -0
  63. package/dist/chunk-TS2ZX2VS.mjs +270 -0
  64. package/dist/chunk-UFYSFDER.mjs +42 -0
  65. package/dist/chunk-VACKZOMY.mjs +190 -0
  66. package/dist/chunk-VLQZANBF.mjs +42 -0
  67. package/dist/chunk-VPBN3WOO.mjs +164 -0
  68. package/dist/chunk-WA6O6EUR.mjs +1885 -0
  69. package/dist/{chunk-E3K6O4FZ.mjs → chunk-WAZD7NFU.mjs} +5 -2
  70. package/dist/chunk-WG6JGJXB.mjs +165 -0
  71. package/dist/{chunk-I64K754C.mjs → chunk-WNGWBVLV.mjs} +2 -2
  72. package/dist/{chunk-3U7SD3MS.mjs → chunk-WOEHFRGB.mjs} +3 -3
  73. package/dist/{chunk-DKZRJOMF.mjs → chunk-XIRTEFKH.mjs} +12 -12
  74. package/dist/chunk-Y6DWJSKZ.mjs +79 -0
  75. package/dist/{chunk-CJ46PDXE.mjs → chunk-ZRO5JO3H.mjs} +106 -66
  76. package/dist/{chunk-VYMHBV6D.mjs → chunk-ZU4NV6RG.mjs} +5 -3
  77. package/dist/components/ui/accordion.js +40 -4
  78. package/dist/components/ui/accordion.mjs +2 -2
  79. package/dist/components/ui/add-column-modal.js +789 -0
  80. package/dist/components/ui/add-column-modal.mjs +17 -0
  81. package/dist/components/ui/add-lead-modal.js +647 -0
  82. package/dist/components/ui/add-lead-modal.mjs +16 -0
  83. package/dist/components/ui/ai-assistant-drawer.js +686 -0
  84. package/dist/components/ui/ai-assistant-drawer.mjs +16 -0
  85. package/dist/components/ui/alert-dialog.js +37 -5
  86. package/dist/components/ui/alert-dialog.mjs +4 -4
  87. package/dist/components/ui/alert.js +37 -11
  88. package/dist/components/ui/alert.mjs +2 -2
  89. package/dist/components/ui/avatar.js +36 -8
  90. package/dist/components/ui/avatar.mjs +2 -2
  91. package/dist/components/ui/backoffice-alert-history-chart.js +624 -0
  92. package/dist/components/ui/backoffice-alert-history-chart.mjs +16 -0
  93. package/dist/components/ui/backoffice-contact-history-chart.js +687 -0
  94. package/dist/components/ui/backoffice-contact-history-chart.mjs +16 -0
  95. package/dist/components/ui/badge.js +37 -2
  96. package/dist/components/ui/badge.mjs +2 -2
  97. package/dist/components/ui/borrowing-capacity-line-chart.js +640 -0
  98. package/dist/components/ui/borrowing-capacity-line-chart.mjs +16 -0
  99. package/dist/components/ui/button.js +35 -3
  100. package/dist/components/ui/button.mjs +2 -2
  101. package/dist/components/ui/calendar.js +43 -19
  102. package/dist/components/ui/calendar.mjs +3 -3
  103. package/dist/components/ui/card.js +40 -4
  104. package/dist/components/ui/card.mjs +2 -2
  105. package/dist/components/ui/cash-balance-line-chart.js +628 -0
  106. package/dist/components/ui/cash-balance-line-chart.mjs +16 -0
  107. package/dist/components/ui/cashflow-bar-chart.js +124 -70
  108. package/dist/components/ui/cashflow-bar-chart.mjs +8 -8
  109. package/dist/components/ui/checkbox.js +36 -5
  110. package/dist/components/ui/checkbox.mjs +2 -3
  111. package/dist/components/ui/chip.js +37 -2
  112. package/dist/components/ui/chip.mjs +3 -3
  113. package/dist/components/ui/combobox.js +68 -49
  114. package/dist/components/ui/combobox.mjs +2 -2
  115. package/dist/components/ui/data-table.js +160 -88
  116. package/dist/components/ui/data-table.mjs +10 -11
  117. package/dist/components/ui/date-picker.js +44 -20
  118. package/dist/components/ui/date-picker.mjs +6 -7
  119. package/dist/components/ui/dialog.js +44 -12
  120. package/dist/components/ui/dialog.mjs +4 -4
  121. package/dist/components/ui/drawer.js +46 -10
  122. package/dist/components/ui/drawer.mjs +3 -3
  123. package/dist/components/ui/dropdown-menu.js +40 -16
  124. package/dist/components/ui/dropdown-menu.mjs +3 -3
  125. package/dist/components/ui/empty.js +41 -5
  126. package/dist/components/ui/empty.mjs +2 -2
  127. package/dist/components/ui/expense-bar-chart.js +166 -67
  128. package/dist/components/ui/expense-bar-chart.mjs +8 -8
  129. package/dist/components/ui/field.js +53 -21
  130. package/dist/components/ui/field.mjs +4 -4
  131. package/dist/components/ui/financial-cards.js +1002 -0
  132. package/dist/components/ui/financial-cards.mjs +24 -0
  133. package/dist/components/ui/financial-drawers.js +637 -0
  134. package/dist/components/ui/financial-drawers.mjs +17 -0
  135. package/dist/components/ui/financial-primitives.js +218 -0
  136. package/dist/components/ui/financial-primitives.mjs +22 -0
  137. package/dist/components/ui/financial-sections.js +1422 -0
  138. package/dist/components/ui/financial-sections.mjs +30 -0
  139. package/dist/components/ui/form-primitives.js +682 -0
  140. package/dist/components/ui/form-primitives.mjs +19 -0
  141. package/dist/components/ui/income-bar-chart.js +164 -66
  142. package/dist/components/ui/income-bar-chart.mjs +8 -8
  143. package/dist/components/ui/input-group.js +43 -7
  144. package/dist/components/ui/input-group.mjs +5 -5
  145. package/dist/components/ui/input-otp.js +39 -3
  146. package/dist/components/ui/input-otp.mjs +2 -2
  147. package/dist/components/ui/input.js +34 -2
  148. package/dist/components/ui/input.mjs +2 -2
  149. package/dist/components/ui/kanban-column.js +1143 -0
  150. package/dist/components/ui/kanban-column.mjs +20 -0
  151. package/dist/components/ui/label.js +35 -7
  152. package/dist/components/ui/label.mjs +2 -2
  153. package/dist/components/ui/opportunity-card.js +960 -0
  154. package/dist/components/ui/opportunity-card.mjs +20 -0
  155. package/dist/components/ui/opportunity-edit-modals.js +3360 -0
  156. package/dist/components/ui/opportunity-edit-modals.mjs +37 -0
  157. package/dist/components/ui/opportunity-summary-tab.js +4365 -0
  158. package/dist/components/ui/opportunity-summary-tab.mjs +34 -0
  159. package/dist/components/ui/pagination.js +35 -3
  160. package/dist/components/ui/pagination.mjs +3 -3
  161. package/dist/components/ui/pipeline-alerts.js +103 -0
  162. package/dist/components/ui/pipeline-alerts.mjs +8 -0
  163. package/dist/components/ui/pipeline-board.js +1408 -0
  164. package/dist/components/ui/pipeline-board.mjs +24 -0
  165. package/dist/components/ui/pipeline-chart.js +216 -0
  166. package/dist/components/ui/pipeline-chart.mjs +10 -0
  167. package/dist/components/ui/pipeline-dialogs.js +1183 -0
  168. package/dist/components/ui/pipeline-dialogs.mjs +23 -0
  169. package/dist/components/ui/pipeline-primitives.js +300 -0
  170. package/dist/components/ui/pipeline-primitives.mjs +11 -0
  171. package/dist/components/ui/popover.js +45 -4
  172. package/dist/components/ui/popover.mjs +3 -3
  173. package/dist/components/ui/progress.js +33 -1
  174. package/dist/components/ui/progress.mjs +2 -2
  175. package/dist/components/ui/property-cashflow-doughnut-chart.js +523 -0
  176. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +16 -0
  177. package/dist/components/ui/property-debt-equity-doughnut-chart.js +521 -0
  178. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +16 -0
  179. package/dist/components/ui/property-mobile-estimate-line-chart.js +683 -0
  180. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +16 -0
  181. package/dist/components/ui/radio-group.js +33 -1
  182. package/dist/components/ui/radio-group.mjs +2 -2
  183. package/dist/components/ui/select.js +66 -26
  184. package/dist/components/ui/select.mjs +3 -3
  185. package/dist/components/ui/separator.js +33 -1
  186. package/dist/components/ui/separator.mjs +2 -2
  187. package/dist/components/ui/sheet.js +37 -9
  188. package/dist/components/ui/sheet.mjs +3 -3
  189. package/dist/components/ui/skeleton.js +33 -1
  190. package/dist/components/ui/skeleton.mjs +2 -2
  191. package/dist/components/ui/slider.js +86 -102
  192. package/dist/components/ui/slider.mjs +2 -2
  193. package/dist/components/ui/spinner.js +33 -1
  194. package/dist/components/ui/spinner.mjs +2 -2
  195. package/dist/components/ui/stage-timeline.js +579 -0
  196. package/dist/components/ui/stage-timeline.mjs +15 -0
  197. package/dist/components/ui/switch.js +37 -4
  198. package/dist/components/ui/switch.mjs +2 -3
  199. package/dist/components/ui/table.js +37 -5
  200. package/dist/components/ui/table.mjs +2 -2
  201. package/dist/components/ui/tabs.js +36 -12
  202. package/dist/components/ui/tabs.mjs +2 -2
  203. package/dist/components/ui/textarea.js +34 -2
  204. package/dist/components/ui/textarea.mjs +2 -2
  205. package/dist/components/ui/toggle-group.js +35 -4
  206. package/dist/components/ui/toggle-group.mjs +3 -4
  207. package/dist/components/ui/toggle.js +35 -4
  208. package/dist/components/ui/toggle.mjs +2 -3
  209. package/dist/components/ui/tooltip.js +51 -22
  210. package/dist/components/ui/tooltip.mjs +3 -3
  211. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +528 -0
  212. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +16 -0
  213. package/dist/components/ui/transactions-income-expense-bar-chart.js +77 -39
  214. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +8 -8
  215. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +528 -0
  216. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +16 -0
  217. package/dist/index.js +11620 -3832
  218. package/dist/index.mjs +333 -161
  219. package/dist/lib/theme-provider.js +10 -1
  220. package/dist/lib/theme-provider.mjs +1 -1
  221. package/dist/lib/typography.js +8 -0
  222. package/dist/lib/typography.mjs +3 -1
  223. package/dist/lib/utils.js +33 -1
  224. package/dist/lib/utils.mjs +1 -1
  225. package/dist/styles.css +1 -1
  226. package/package.json +140 -5
  227. package/src/components/index.tsx +296 -42
  228. package/src/components/ui/accordion.tsx +6 -3
  229. package/src/components/ui/add-column-modal.tsx +339 -0
  230. package/src/components/ui/add-lead-modal.tsx +290 -0
  231. package/src/components/ui/ai-assistant-drawer.tsx +408 -0
  232. package/src/components/ui/alert-dialog.tsx +80 -54
  233. package/src/components/ui/alert.tsx +28 -28
  234. package/src/components/ui/avatar.tsx +30 -29
  235. package/src/components/ui/backoffice-alert-history-chart.tsx +261 -0
  236. package/src/components/ui/backoffice-contact-history-chart.tsx +326 -0
  237. package/src/components/ui/badge.tsx +17 -15
  238. package/src/components/ui/borrowing-capacity-line-chart.tsx +359 -0
  239. package/src/components/ui/button.tsx +30 -27
  240. package/src/components/ui/calendar.tsx +53 -67
  241. package/src/components/ui/card.tsx +27 -24
  242. package/src/components/ui/cash-balance-line-chart.tsx +304 -0
  243. package/src/components/ui/cashflow-bar-chart.tsx +106 -78
  244. package/src/components/ui/chart-shared.tsx +176 -15
  245. package/src/components/ui/checkbox.tsx +30 -26
  246. package/src/components/ui/combobox.tsx +78 -72
  247. package/src/components/ui/data-table.tsx +160 -99
  248. package/src/components/ui/date-picker.tsx +0 -2
  249. package/src/components/ui/dialog.tsx +70 -60
  250. package/src/components/ui/drawer.tsx +57 -48
  251. package/src/components/ui/dropdown-menu.tsx +90 -82
  252. package/src/components/ui/empty.tsx +31 -27
  253. package/src/components/ui/expense-bar-chart.tsx +85 -66
  254. package/src/components/ui/field.tsx +70 -62
  255. package/src/components/ui/financial-cards.tsx +830 -0
  256. package/src/components/ui/financial-drawers.tsx +339 -0
  257. package/src/components/ui/financial-primitives.tsx +331 -0
  258. package/src/components/ui/financial-sections.tsx +672 -0
  259. package/src/components/ui/form-primitives.tsx +536 -0
  260. package/src/components/ui/income-bar-chart.tsx +81 -61
  261. package/src/components/ui/input-group.tsx +41 -34
  262. package/src/components/ui/input-otp.tsx +29 -24
  263. package/src/components/ui/input.tsx +8 -8
  264. package/src/components/ui/kanban-column.tsx +333 -0
  265. package/src/components/ui/label.tsx +9 -12
  266. package/src/components/ui/opportunity-card.tsx +616 -0
  267. package/src/components/ui/opportunity-edit-modals.tsx +2528 -0
  268. package/src/components/ui/opportunity-summary-tab.tsx +579 -0
  269. package/src/components/ui/pipeline-alerts.tsx +74 -0
  270. package/src/components/ui/pipeline-board.tsx +268 -0
  271. package/src/components/ui/pipeline-chart.tsx +173 -0
  272. package/src/components/ui/pipeline-dialogs.tsx +303 -0
  273. package/src/components/ui/pipeline-primitives.tsx +108 -0
  274. package/src/components/ui/popover.tsx +41 -36
  275. package/src/components/ui/property-cashflow-doughnut-chart.tsx +189 -0
  276. package/src/components/ui/property-debt-equity-doughnut-chart.tsx +186 -0
  277. package/src/components/ui/property-mobile-estimate-line-chart.tsx +395 -0
  278. package/src/components/ui/select.tsx +65 -52
  279. package/src/components/ui/sheet.tsx +55 -52
  280. package/src/components/ui/slider.tsx +54 -77
  281. package/src/components/ui/stage-timeline.tsx +205 -0
  282. package/src/components/ui/switch.tsx +42 -29
  283. package/src/components/ui/table.tsx +28 -28
  284. package/src/components/ui/tabs.tsx +22 -28
  285. package/src/components/ui/textarea.tsx +8 -8
  286. package/src/components/ui/toggle-group.tsx +0 -2
  287. package/src/components/ui/toggle.tsx +13 -15
  288. package/src/components/ui/tooltip.tsx +30 -28
  289. package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +192 -0
  290. package/src/components/ui/transactions-income-expense-bar-chart.tsx +47 -39
  291. package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +192 -0
  292. package/src/lib/theme-provider.tsx +10 -0
  293. package/src/lib/typography.ts +9 -0
  294. package/src/lib/utils.ts +41 -3
  295. package/src/styles/globals.css +371 -124
  296. package/src/styles/styles-css.ts +1 -1
  297. package/tsup.config.ts +27 -0
  298. package/dist/chunk-3EQP72AW.mjs +0 -58
  299. package/dist/chunk-K74JRTJR.mjs +0 -105
  300. package/dist/chunk-V7CNWJT3.mjs +0 -10
@@ -77,8 +77,40 @@ function useThemeVars() {
77
77
  // src/lib/utils.ts
78
78
  var import_clsx = require("clsx");
79
79
  var import_tailwind_merge = require("tailwind-merge");
80
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
81
+ extend: {
82
+ classGroups: {
83
+ "font-size": [
84
+ {
85
+ text: [
86
+ "display-large",
87
+ "display-medium",
88
+ "display-small",
89
+ "h1",
90
+ "h2",
91
+ "h3",
92
+ "h4",
93
+ "h5",
94
+ "h6",
95
+ "body-large",
96
+ "body-medium",
97
+ "body-small",
98
+ "label-large",
99
+ "label-medium",
100
+ "label-small",
101
+ "button",
102
+ "button-xs",
103
+ "caption",
104
+ "overline",
105
+ "code"
106
+ ]
107
+ }
108
+ ]
109
+ }
110
+ }
111
+ });
80
112
  function cn(...inputs) {
81
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
113
+ return twMerge((0, import_clsx.clsx)(inputs));
82
114
  }
83
115
 
84
116
  // src/components/ui/card.tsx
@@ -114,7 +146,7 @@ function CardTitle(_a) {
114
146
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
115
147
  "div",
116
148
  __spreadValues({
117
- className: cn("leading-none font-semibold", className),
149
+ className: cn("text-label-large", className),
118
150
  "data-slot": "card-title"
119
151
  }, props)
120
152
  );
@@ -183,7 +215,7 @@ function EmptyDescription(_a) {
183
215
  "div",
184
216
  __spreadValues({
185
217
  className: cn(
186
- "text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
218
+ "text-body-small leading-relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
187
219
  className
188
220
  ),
189
221
  "data-slot": "empty-description"
@@ -259,7 +291,7 @@ Slot.displayName = "Slot";
259
291
  // src/components/ui/button.tsx
260
292
  var import_jsx_runtime5 = require("react/jsx-runtime");
261
293
  var buttonVariants = (0, import_class_variance_authority2.cva)(
262
- "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-sm font-medium whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
294
+ "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-button whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
263
295
  {
264
296
  variants: {
265
297
  variant: {
@@ -274,7 +306,7 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
274
306
  },
275
307
  size: {
276
308
  default: "h-9 px-4 py-2 has-[>svg]:px-3",
277
- xs: "h-6 gap-1 px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
309
+ xs: "h-6 gap-1 px-2 text-button-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
278
310
  sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
279
311
  lg: "h-10 px-6 has-[>svg]:px-4",
280
312
  icon: "size-9",
@@ -340,6 +372,8 @@ function hexToRgba(hex, alpha) {
340
372
  const b = parseInt(full.slice(4, 6), 16);
341
373
  return `rgba(${r},${g},${b},${alpha})`;
342
374
  }
375
+ var FALLBACK_PRIMARY = "#33FF99";
376
+ var FALLBACK_SECONDARY = "#162029";
343
377
  var FALLBACK_TICK = "#9EAAB5";
344
378
  function formatTooltipDate(iso, granularity) {
345
379
  const d = new Date(iso);
@@ -351,18 +385,32 @@ function formatTooltipDate(iso, granularity) {
351
385
  function ChartPeriodButton({
352
386
  period,
353
387
  active,
354
- onClick
388
+ onClick,
389
+ unit = "M"
355
390
  }) {
356
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Button, { variant: active ? "default" : "outline", size: "xs", onClick, children: [
357
- period,
358
- "M"
359
- ] });
391
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
392
+ Button,
393
+ {
394
+ variant: active ? "default" : "outline",
395
+ size: "xs",
396
+ onClick,
397
+ children: [
398
+ period,
399
+ unit
400
+ ]
401
+ }
402
+ );
360
403
  }
361
404
 
362
405
  // src/components/ui/cashflow-bar-chart.tsx
363
406
  var import_jsx_runtime7 = require("react/jsx-runtime");
364
- import_chart.Chart.register(import_chart.CategoryScale, import_chart.LinearScale, import_chart.BarElement, import_chart.Tooltip, import_chart.Legend);
365
- function LegendItem({ label, fillColor, strokeColor, strokeWidth = 1.5 }) {
407
+ import_chart.Chart.register(import_chart.CategoryScale, import_chart.LinearScale, import_chart.BarController, import_chart.BarElement, import_chart.Tooltip, import_chart.Legend);
408
+ function LegendItem({
409
+ label,
410
+ fillColor,
411
+ strokeColor,
412
+ strokeWidth = 1.5
413
+ }) {
366
414
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-1.5", children: [
367
415
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
368
416
  "div",
@@ -379,7 +427,10 @@ function LegendItem({ label, fillColor, strokeColor, strokeWidth = 1.5 }) {
379
427
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
380
428
  ] });
381
429
  }
382
- function ChartLegend({ primary, secondary }) {
430
+ function ChartLegend({
431
+ primary,
432
+ secondary
433
+ }) {
383
434
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: [
384
435
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
385
436
  LegendItem,
@@ -418,8 +469,6 @@ function ChartLegend({ primary, secondary }) {
418
469
  ] });
419
470
  }
420
471
  var PERIODS = [3, 6, 12];
421
- var FALLBACK_PRIMARY = "#33FF99";
422
- var FALLBACK_SECONDARY = "#162029";
423
472
  function CashflowBarChart({
424
473
  cashflowData,
425
474
  title = "Cashflow",
@@ -428,6 +477,7 @@ function CashflowBarChart({
428
477
  showYAxis = true,
429
478
  legendPosition = "top",
430
479
  defaultPeriod = 6,
480
+ showPeriodSelector = true,
431
481
  height = 280,
432
482
  width = "100%",
433
483
  className,
@@ -437,6 +487,7 @@ function CashflowBarChart({
437
487
  const themeVars = useThemeVars();
438
488
  const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY;
439
489
  const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY;
490
+ const fontFamily = themeVars["--font-sans"] || "Figtree, sans-serif";
440
491
  const sliced = (0, import_react3.useMemo)(() => {
441
492
  var _a;
442
493
  if (!((_a = cashflowData == null ? void 0 : cashflowData.data) == null ? void 0 : _a.length)) return null;
@@ -496,73 +547,76 @@ function CashflowBarChart({
496
547
  ]
497
548
  };
498
549
  }, [sliced, brandPrimary, brandSecondary]);
499
- const options = (0, import_react3.useMemo)(() => ({
500
- responsive: true,
501
- maintainAspectRatio: false,
502
- animation: { duration: 800, easing: "easeOutQuart" },
503
- layout: { padding: 0 },
504
- plugins: {
505
- legend: { display: false },
506
- tooltip: {
507
- mode: "index",
508
- intersect: false,
509
- padding: 12,
510
- cornerRadius: 0,
511
- titleFont: { size: 11, weight: "600" },
512
- bodyFont: { size: 12, weight: "500" },
513
- callbacks: {
514
- title: (tooltipItems) => {
515
- var _a, _b, _c, _d;
516
- const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
517
- if (idx != null && ((_b = sliced == null ? void 0 : sliced.data[idx]) == null ? void 0 : _b.date)) {
518
- return formatTooltipDate(sliced.data[idx].date, "monthly");
519
- }
520
- return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
521
- },
522
- label: (ctx) => {
523
- const val = ctx.raw;
524
- if (val === 0) return null;
525
- if (ctx.datasetIndex === 2) {
526
- const d = sliced == null ? void 0 : sliced.data[ctx.dataIndex];
527
- if (!d) return null;
528
- const lbl = d.overspending > 0 ? "Over Spending" : "Surplus Income";
529
- return ` ${lbl}: $${val.toLocaleString()}`;
550
+ const options = (0, import_react3.useMemo)(
551
+ () => ({
552
+ responsive: true,
553
+ maintainAspectRatio: false,
554
+ animation: { duration: 800, easing: "easeOutQuart" },
555
+ layout: { padding: 0 },
556
+ plugins: {
557
+ legend: { display: false },
558
+ tooltip: {
559
+ mode: "index",
560
+ intersect: false,
561
+ padding: 12,
562
+ cornerRadius: 0,
563
+ titleFont: { size: 11, weight: 600 },
564
+ bodyFont: { size: 12, weight: 500 },
565
+ callbacks: {
566
+ title: (tooltipItems) => {
567
+ var _a, _b, _c, _d;
568
+ const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
569
+ if (idx != null && ((_b = sliced == null ? void 0 : sliced.data[idx]) == null ? void 0 : _b.date)) {
570
+ return formatTooltipDate(sliced.data[idx].date, "monthly");
571
+ }
572
+ return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
573
+ },
574
+ label: (ctx) => {
575
+ const val = ctx.raw;
576
+ if (val === 0) return;
577
+ if (ctx.datasetIndex === 2) {
578
+ const d = sliced == null ? void 0 : sliced.data[ctx.dataIndex];
579
+ if (!d) return;
580
+ const lbl = d.overspending > 0 ? "Over Spending" : "Surplus Income";
581
+ return ` ${lbl}: $${val.toLocaleString()}`;
582
+ }
583
+ return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
530
584
  }
531
- return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
532
585
  }
533
586
  }
534
- }
535
- },
536
- scales: {
537
- x: {
538
- display: showXAxis,
539
- grid: { display: false },
540
- border: { display: false },
541
- ticks: { font: { size: 10 }, color: FALLBACK_TICK }
542
587
  },
543
- y: {
544
- display: showYAxis,
545
- grid: { display: false },
546
- border: { display: false },
547
- ticks: {
548
- font: { size: 10 },
549
- color: FALLBACK_TICK,
550
- maxTicksLimit: 5,
551
- padding: 8,
552
- callback: (v) => `$${Number(v).toLocaleString()}`
588
+ scales: {
589
+ x: {
590
+ display: showXAxis,
591
+ grid: { display: false },
592
+ border: { display: false },
593
+ ticks: { font: { size: 10 }, color: FALLBACK_TICK }
594
+ },
595
+ y: {
596
+ display: showYAxis,
597
+ grid: { display: false },
598
+ border: { display: false },
599
+ ticks: {
600
+ font: { size: 10 },
601
+ color: FALLBACK_TICK,
602
+ maxTicksLimit: 5,
603
+ padding: 8,
604
+ callback: (v) => `$${Number(v).toLocaleString()}`
605
+ }
553
606
  }
554
607
  }
555
- }
556
- }), [showXAxis, showYAxis, sliced]);
608
+ }),
609
+ [showXAxis, showYAxis, sliced]
610
+ );
557
611
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
558
612
  Card,
559
613
  {
560
614
  className: cn("w-full py-4 sm:py-6 gap-2", className),
561
- style: { maxWidth: width },
615
+ style: { maxWidth: width, fontFamily },
562
616
  children: [
563
617
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
564
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
565
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: PERIODS.map((p) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
618
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-sm sm:text-base uppercase tracking-wider", children: title }),
619
+ showPeriodSelector && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: PERIODS.map((p) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
566
620
  ChartPeriodButton,
567
621
  {
568
622
  period: p,
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  CashflowBarChart
3
- } from "../../chunk-UEL4RD5P.mjs";
4
- import "../../chunk-3EQP72AW.mjs";
5
- import "../../chunk-HS7TFG7V.mjs";
6
- import "../../chunk-YN5SYTOO.mjs";
7
- import "../../chunk-SLWCCURD.mjs";
8
- import "../../chunk-4AJ5HWHD.mjs";
3
+ } from "../../chunk-LHYCMLVA.mjs";
4
+ import "../../chunk-D6ID6M4V.mjs";
5
+ import "../../chunk-FZIXGLMV.mjs";
6
+ import "../../chunk-NQPOYKAQ.mjs";
7
+ import "../../chunk-CLIN5525.mjs";
8
+ import "../../chunk-2I5S2AMY.mjs";
9
9
  import "../../chunk-DBHJ5KC3.mjs";
10
- import "../../chunk-OXQQNQZI.mjs";
10
+ import "../../chunk-FEZKMUCF.mjs";
11
11
  import "../../chunk-QOJ2DQD6.mjs";
12
- import "../../chunk-V7CNWJT3.mjs";
12
+ import "../../chunk-VLQZANBF.mjs";
13
13
  import "../../chunk-FWCSY2DS.mjs";
14
14
  export {
15
15
  CashflowBarChart
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- "use client";
3
2
  var __defProp = Object.defineProperty;
4
3
  var __defProps = Object.defineProperties;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -61,8 +60,40 @@ var import_checkbox = require("@base-ui/react/checkbox");
61
60
  // src/lib/utils.ts
62
61
  var import_clsx = require("clsx");
63
62
  var import_tailwind_merge = require("tailwind-merge");
63
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
64
+ extend: {
65
+ classGroups: {
66
+ "font-size": [
67
+ {
68
+ text: [
69
+ "display-large",
70
+ "display-medium",
71
+ "display-small",
72
+ "h1",
73
+ "h2",
74
+ "h3",
75
+ "h4",
76
+ "h5",
77
+ "h6",
78
+ "body-large",
79
+ "body-medium",
80
+ "body-small",
81
+ "label-large",
82
+ "label-medium",
83
+ "label-small",
84
+ "button",
85
+ "button-xs",
86
+ "caption",
87
+ "overline",
88
+ "code"
89
+ ]
90
+ }
91
+ ]
92
+ }
93
+ }
94
+ });
64
95
  function cn(...inputs) {
65
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
96
+ return twMerge((0, import_clsx.clsx)(inputs));
66
97
  }
67
98
 
68
99
  // src/components/ui/checkbox.tsx
@@ -73,7 +104,7 @@ function Checkbox(_a) {
73
104
  import_checkbox.Checkbox.Root,
74
105
  __spreadProps(__spreadValues({
75
106
  className: cn(
76
- "peer group inline-flex size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-all outline-none",
107
+ "peer group inline-flex size-4 shrink-0 border border-input shadow-xs transition-all outline-none",
77
108
  "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
78
109
  "disabled:cursor-not-allowed disabled:opacity-50",
79
110
  "aria-invalid:border-destructive aria-invalid:ring-destructive/20",
@@ -152,8 +183,8 @@ function CheckboxCard(_a) {
152
183
  }, props)
153
184
  ),
154
185
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-1", children: [
155
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
156
- description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
186
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-label-medium leading-none", children: label }),
187
+ description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-body-small text-muted-foreground", children: description }) : null
157
188
  ] })
158
189
  ]
159
190
  }
@@ -1,9 +1,8 @@
1
- "use client";
2
1
  import {
3
2
  Checkbox,
4
3
  CheckboxCard
5
- } from "../../chunk-JF4PHPD5.mjs";
6
- import "../../chunk-V7CNWJT3.mjs";
4
+ } from "../../chunk-RGVKLTLH.mjs";
5
+ import "../../chunk-VLQZANBF.mjs";
7
6
  import "../../chunk-FWCSY2DS.mjs";
8
7
  export {
9
8
  Checkbox,
@@ -67,8 +67,40 @@ var import_lucide_react = require("lucide-react");
67
67
  // src/lib/utils.ts
68
68
  var import_clsx = require("clsx");
69
69
  var import_tailwind_merge = require("tailwind-merge");
70
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
71
+ extend: {
72
+ classGroups: {
73
+ "font-size": [
74
+ {
75
+ text: [
76
+ "display-large",
77
+ "display-medium",
78
+ "display-small",
79
+ "h1",
80
+ "h2",
81
+ "h3",
82
+ "h4",
83
+ "h5",
84
+ "h6",
85
+ "body-large",
86
+ "body-medium",
87
+ "body-small",
88
+ "label-large",
89
+ "label-medium",
90
+ "label-small",
91
+ "button",
92
+ "button-xs",
93
+ "caption",
94
+ "overline",
95
+ "code"
96
+ ]
97
+ }
98
+ ]
99
+ }
100
+ }
101
+ });
70
102
  function cn(...inputs) {
71
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
103
+ return twMerge((0, import_clsx.clsx)(inputs));
72
104
  }
73
105
 
74
106
  // src/components/ui/badge.tsx
@@ -124,13 +156,16 @@ Slot.displayName = "Slot";
124
156
  // src/components/ui/badge.tsx
125
157
  var import_jsx_runtime = require("react/jsx-runtime");
126
158
  var badgeVariants = (0, import_class_variance_authority.cva)(
127
- "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium font-sans whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",
159
+ "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2.5 py-0.5 text-xs font-medium font-sans whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",
128
160
  {
129
161
  variants: {
130
162
  variant: {
131
163
  default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
132
164
  secondary: "bg-muted text-muted-foreground [a&]:hover:bg-muted/80",
133
165
  destructive: "bg-destructive text-destructive-foreground focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",
166
+ success: "bg-success text-success-foreground [a&]:hover:bg-success/90",
167
+ warning: "bg-warning text-warning-foreground [a&]:hover:bg-warning/90",
168
+ info: "bg-info text-info-foreground [a&]:hover:bg-info/90",
134
169
  outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
135
170
  ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
136
171
  link: "text-primary underline-offset-4 [a&]:hover:underline"
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Chip
3
- } from "../../chunk-VG6UF6UT.mjs";
4
- import "../../chunk-E3K6O4FZ.mjs";
3
+ } from "../../chunk-RP3SQYA3.mjs";
4
+ import "../../chunk-WAZD7NFU.mjs";
5
5
  import "../../chunk-DBHJ5KC3.mjs";
6
- import "../../chunk-V7CNWJT3.mjs";
6
+ import "../../chunk-VLQZANBF.mjs";
7
7
  import "../../chunk-FWCSY2DS.mjs";
8
8
  export {
9
9
  Chip
@@ -68,8 +68,40 @@ var import_combobox = require("@base-ui/react/combobox");
68
68
  // src/lib/utils.ts
69
69
  var import_clsx = require("clsx");
70
70
  var import_tailwind_merge = require("tailwind-merge");
71
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
72
+ extend: {
73
+ classGroups: {
74
+ "font-size": [
75
+ {
76
+ text: [
77
+ "display-large",
78
+ "display-medium",
79
+ "display-small",
80
+ "h1",
81
+ "h2",
82
+ "h3",
83
+ "h4",
84
+ "h5",
85
+ "h6",
86
+ "body-large",
87
+ "body-medium",
88
+ "body-small",
89
+ "label-large",
90
+ "label-medium",
91
+ "label-small",
92
+ "button",
93
+ "button-xs",
94
+ "caption",
95
+ "overline",
96
+ "code"
97
+ ]
98
+ }
99
+ ]
100
+ }
101
+ }
102
+ });
71
103
  function cn(...inputs) {
72
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
104
+ return twMerge((0, import_clsx.clsx)(inputs));
73
105
  }
74
106
 
75
107
  // src/components/ui/combobox.tsx
@@ -94,7 +126,7 @@ function ComboboxTrigger(_a) {
94
126
  "data-slot": "combobox-trigger",
95
127
  "data-size": size,
96
128
  className: cn(
97
- "flex w-fit items-center justify-between gap-2 border border-input bg-transparent px-3 py-2 text-body-small whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20 data-[popup-open]:border-primary data-[popup-open]:ring-[3px] data-[popup-open]:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=combobox-value]:line-clamp-1 *:data-[slot=combobox-value]:flex *:data-[slot=combobox-value]:items-center *:data-[slot=combobox-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
129
+ "flex w-fit items-center justify-between gap-2 border border-input bg-transparent px-3 py-2 text-body-small whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20 data-[popup-open]:border-primary data-[popup-open]:ring-[3px] data-[popup-open]:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:font-normal data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=combobox-value]:line-clamp-1 *:data-[slot=combobox-value]:flex *:data-[slot=combobox-value]:items-center *:data-[slot=combobox-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
98
130
  className
99
131
  )
100
132
  }, props), {
@@ -110,24 +142,27 @@ function ComboboxValue(_a) {
110
142
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_combobox.Combobox.Value, __spreadValues({ "data-slot": "combobox-value" }, props));
111
143
  }
112
144
  function ComboboxInput(_a) {
113
- var _b = _a, {
114
- className
115
- } = _b, props = __objRest(_b, [
116
- "className"
117
- ]);
118
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { "data-slot": "combobox-input-wrapper", className: "flex items-center gap-2 border-b border-border px-3", children: [
119
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
120
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
121
- import_combobox.Combobox.Input,
122
- __spreadValues({
123
- "data-slot": "combobox-input",
124
- className: cn(
125
- "h-9 w-full min-w-0 bg-transparent py-1 text-body-small outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
126
- className
145
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
146
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
147
+ "div",
148
+ {
149
+ "data-slot": "combobox-input-wrapper",
150
+ className: "flex items-center gap-2 border-b border-border px-3",
151
+ children: [
152
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
153
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
154
+ import_combobox.Combobox.Input,
155
+ __spreadValues({
156
+ "data-slot": "combobox-input",
157
+ className: cn(
158
+ "h-9 w-full min-w-0 bg-transparent py-1 text-body-small outline-none placeholder:font-normal placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
159
+ className
160
+ )
161
+ }, props)
127
162
  )
128
- }, props)
129
- )
130
- ] });
163
+ ]
164
+ }
165
+ );
131
166
  }
132
167
  function ComboboxContent(_a) {
133
168
  var _b = _a, {
@@ -151,11 +186,7 @@ function ComboboxContent(_a) {
151
186
  ) }) });
152
187
  }
153
188
  function ComboboxList(_a) {
154
- var _b = _a, {
155
- className
156
- } = _b, props = __objRest(_b, [
157
- "className"
158
- ]);
189
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
159
190
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
160
191
  import_combobox.Combobox.List,
161
192
  __spreadValues({
@@ -168,19 +199,13 @@ function ComboboxList(_a) {
168
199
  );
169
200
  }
170
201
  function ComboboxItem(_a) {
171
- var _b = _a, {
172
- className,
173
- children
174
- } = _b, props = __objRest(_b, [
175
- "className",
176
- "children"
177
- ]);
202
+ var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
178
203
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
179
204
  import_combobox.Combobox.Item,
180
205
  __spreadProps(__spreadValues({
181
206
  "data-slot": "combobox-item",
182
207
  className: cn(
183
- "relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-body-small outline-hidden select-none data-[highlighted]:bg-primary/5 data-[highlighted]:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
208
+ "relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-body-small outline-hidden select-none data-highlighted:bg-primary/5 data-highlighted:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
184
209
  className
185
210
  )
186
211
  }, props), {
@@ -199,16 +224,15 @@ function ComboboxItem(_a) {
199
224
  );
200
225
  }
201
226
  function ComboboxEmpty(_a) {
202
- var _b = _a, {
203
- className
204
- } = _b, props = __objRest(_b, [
205
- "className"
206
- ]);
227
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
207
228
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
208
229
  import_combobox.Combobox.Empty,
209
230
  __spreadValues({
210
231
  "data-slot": "combobox-empty",
211
- className: `text-body-small ${cn("py-6 text-center text-muted-foreground empty:hidden", className)}`
232
+ className: cn(
233
+ "text-body-small py-6 text-center text-muted-foreground empty:hidden",
234
+ className
235
+ )
212
236
  }, props)
213
237
  );
214
238
  }
@@ -217,25 +241,20 @@ function ComboboxGroup(_a) {
217
241
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_combobox.Combobox.Group, __spreadValues({ "data-slot": "combobox-group" }, props));
218
242
  }
219
243
  function ComboboxGroupLabel(_a) {
220
- var _b = _a, {
221
- className
222
- } = _b, props = __objRest(_b, [
223
- "className"
224
- ]);
244
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
225
245
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
226
246
  import_combobox.Combobox.GroupLabel,
227
247
  __spreadValues({
228
248
  "data-slot": "combobox-group-label",
229
- className: `text-label-small ${cn("px-2 py-1.5 uppercase text-muted-foreground", className)}`
249
+ className: cn(
250
+ "text-label-small px-2 py-1.5 uppercase text-muted-foreground",
251
+ className
252
+ )
230
253
  }, props)
231
254
  );
232
255
  }
233
256
  function ComboboxSeparator(_a) {
234
- var _b = _a, {
235
- className
236
- } = _b, props = __objRest(_b, [
237
- "className"
238
- ]);
257
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
239
258
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
240
259
  "div",
241
260
  __spreadValues({