@wealthx/shadcn 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/.turbo/turbo-build.log +203 -150
  2. package/CHANGELOG.md +29 -0
  3. package/dist/{chunk-4Y6R4WEC.mjs → chunk-2A5RRQGG.mjs} +9 -22
  4. package/dist/{chunk-TS2ZX2VS.mjs → chunk-2UM72RJ7.mjs} +11 -15
  5. package/dist/{chunk-A56YQQHG.mjs → chunk-3NCUZIFP.mjs} +2 -2
  6. package/dist/chunk-3OYFOX3X.mjs +79 -0
  7. package/dist/{chunk-RP3SQYA3.mjs → chunk-3TTACBDP.mjs} +9 -4
  8. package/dist/chunk-4GAWMKMI.mjs +710 -0
  9. package/dist/{chunk-SYOD63OZ.mjs → chunk-5FQIKDKP.mjs} +6 -6
  10. package/dist/{chunk-K3JYD4IU.mjs → chunk-5IS7G74I.mjs} +11 -4
  11. package/dist/chunk-6AW4KJHE.mjs +235 -0
  12. package/dist/chunk-6CR5N2JW.mjs +302 -0
  13. package/dist/{chunk-XIRTEFKH.mjs → chunk-6DZEXFNB.mjs} +36 -8
  14. package/dist/chunk-6O6KD7CE.mjs +271 -0
  15. package/dist/chunk-7PV3IWCN.mjs +33 -0
  16. package/dist/{chunk-SPJ5KXW7.mjs → chunk-7S5AESZO.mjs} +5 -5
  17. package/dist/{chunk-RYCLWMZ7.mjs → chunk-ABFDMHOR.mjs} +9 -7
  18. package/dist/{chunk-SWGT756Z.mjs → chunk-AMQZRHEZ.mjs} +10 -4
  19. package/dist/{chunk-WOEHFRGB.mjs → chunk-BDYZCBRT.mjs} +4 -4
  20. package/dist/{chunk-WAZD7NFU.mjs → chunk-BKNFWEH2.mjs} +6 -6
  21. package/dist/{chunk-CLIN5525.mjs → chunk-C7CQJNMR.mjs} +1 -1
  22. package/dist/{chunk-D4ILTPOG.mjs → chunk-CFMQP5QS.mjs} +5 -4
  23. package/dist/{chunk-VPBN3WOO.mjs → chunk-DGHAXJBN.mjs} +9 -7
  24. package/dist/chunk-DOEO3CDL.mjs +27 -0
  25. package/dist/{chunk-KUDCQ4FI.mjs → chunk-DUJTAXMH.mjs} +9 -4
  26. package/dist/{chunk-GGM2UYGG.mjs → chunk-EBXQWIYG.mjs} +10 -4
  27. package/dist/{chunk-PMB3A7V3.mjs → chunk-EI5F6FMT.mjs} +1 -1
  28. package/dist/chunk-EWRB4PAD.mjs +468 -0
  29. package/dist/chunk-FAKPBKLT.mjs +253 -0
  30. package/dist/chunk-FNQXOAYJ.mjs +169 -0
  31. package/dist/{chunk-4CX4SBRO.mjs → chunk-GHC7LLUX.mjs} +14 -5
  32. package/dist/chunk-HBZLGDIN.mjs +507 -0
  33. package/dist/{chunk-SIZMLSRU.mjs → chunk-HISNT2MG.mjs} +8 -6
  34. package/dist/{chunk-PR6V5XKM.mjs → chunk-HVY6KCCF.mjs} +7 -4
  35. package/dist/chunk-I3RZS7V2.mjs +136 -0
  36. package/dist/chunk-IAE3F7DR.mjs +1962 -0
  37. package/dist/{chunk-ZRO5JO3H.mjs → chunk-IHMFS7NZ.mjs} +81 -84
  38. package/dist/{chunk-PCPLO5HT.mjs → chunk-IOJRDS6V.mjs} +96 -14
  39. package/dist/{chunk-LHYCMLVA.mjs → chunk-JKGDCQTZ.mjs} +11 -4
  40. package/dist/{chunk-H45TKD34.mjs → chunk-JMHR3YGZ.mjs} +1 -1
  41. package/dist/{chunk-4MN6UQHG.mjs → chunk-K5A5L6T2.mjs} +17 -39
  42. package/dist/{chunk-CSDO6VBW.mjs → chunk-LBMRIB3G.mjs} +10 -10
  43. package/dist/chunk-LV35NGVG.mjs +272 -0
  44. package/dist/{chunk-FZIXGLMV.mjs → chunk-M3FV7LOK.mjs} +5 -12
  45. package/dist/{chunk-FMAXJ2SI.mjs → chunk-MBON7YRJ.mjs} +1 -1
  46. package/dist/chunk-MIZQHHUO.mjs +441 -0
  47. package/dist/chunk-MN5NYQCL.mjs +29 -0
  48. package/dist/chunk-NL3ZO62D.mjs +31 -0
  49. package/dist/{chunk-Q76O3RIQ.mjs → chunk-NMOI6CQD.mjs} +1 -1
  50. package/dist/{chunk-P6AM5V7O.mjs → chunk-OODBHKG7.mjs} +1 -1
  51. package/dist/chunk-PBL4OQV2.mjs +283 -0
  52. package/dist/{chunk-3WMX6KWS.mjs → chunk-PU4YZQXV.mjs} +11 -12
  53. package/dist/chunk-QMY3AZJH.mjs +80 -0
  54. package/dist/{chunk-BL3DXM2X.mjs → chunk-QZ4RE6NA.mjs} +11 -4
  55. package/dist/{chunk-VACKZOMY.mjs → chunk-R3VSPKNP.mjs} +3 -3
  56. package/dist/{chunk-OPNQAVVH.mjs → chunk-RJI6GKVF.mjs} +8 -6
  57. package/dist/{chunk-WG6JGJXB.mjs → chunk-T4BJLT57.mjs} +1 -1
  58. package/dist/chunk-U4NDAF2P.mjs +207 -0
  59. package/dist/{chunk-DOH3EHX7.mjs → chunk-U5X52X37.mjs} +1 -1
  60. package/dist/chunk-UMTOX62O.mjs +415 -0
  61. package/dist/{chunk-7MMXNK3C.mjs → chunk-VLARHE5V.mjs} +8 -6
  62. package/dist/{chunk-2I5S2AMY.mjs → chunk-XREGSKX3.mjs} +2 -2
  63. package/dist/{chunk-JNQORUPP.mjs → chunk-YJG55G2H.mjs} +14 -11
  64. package/dist/chunk-ZC45IGZO.mjs +388 -0
  65. package/dist/components/ui/add-column-modal.js +42 -14
  66. package/dist/components/ui/add-column-modal.mjs +4 -4
  67. package/dist/components/ui/add-lead-modal.js +42 -11
  68. package/dist/components/ui/add-lead-modal.mjs +3 -3
  69. package/dist/components/ui/advisor-card.js +497 -0
  70. package/dist/components/ui/advisor-card.mjs +13 -0
  71. package/dist/components/ui/ai-assistant-drawer.js +11 -10
  72. package/dist/components/ui/ai-assistant-drawer.mjs +3 -3
  73. package/dist/components/ui/alert-dialog.js +2 -2
  74. package/dist/components/ui/alert-dialog.mjs +2 -2
  75. package/dist/components/ui/appointment-action-dialogs.js +1160 -0
  76. package/dist/components/ui/appointment-action-dialogs.mjs +23 -0
  77. package/dist/components/ui/appointment-availability-settings.js +1590 -0
  78. package/dist/components/ui/appointment-availability-settings.mjs +23 -0
  79. package/dist/components/ui/appointment-book-dialog.js +1744 -0
  80. package/dist/components/ui/appointment-book-dialog.mjs +27 -0
  81. package/dist/components/ui/appointment-calendar-view.js +833 -0
  82. package/dist/components/ui/appointment-calendar-view.mjs +14 -0
  83. package/dist/components/ui/appointment-detail-sheet.js +1517 -0
  84. package/dist/components/ui/appointment-detail-sheet.mjs +24 -0
  85. package/dist/components/ui/appointment-gmail-connect.js +467 -0
  86. package/dist/components/ui/appointment-gmail-connect.mjs +14 -0
  87. package/dist/components/ui/appointment-mini-card.js +345 -0
  88. package/dist/components/ui/appointment-mini-card.mjs +11 -0
  89. package/dist/components/ui/appointment-time-slot-picker.js +311 -0
  90. package/dist/components/ui/appointment-time-slot-picker.mjs +13 -0
  91. package/dist/components/ui/appointment-upcoming-card.js +1268 -0
  92. package/dist/components/ui/appointment-upcoming-card.mjs +21 -0
  93. package/dist/components/ui/backoffice-alert-history-chart.js +11 -5
  94. package/dist/components/ui/backoffice-alert-history-chart.mjs +5 -4
  95. package/dist/components/ui/backoffice-alerts-chart.js +786 -0
  96. package/dist/components/ui/backoffice-alerts-chart.mjs +19 -0
  97. package/dist/components/ui/backoffice-connections-chart.js +817 -0
  98. package/dist/components/ui/backoffice-connections-chart.mjs +19 -0
  99. package/dist/components/ui/backoffice-contact-history-chart.js +11 -5
  100. package/dist/components/ui/backoffice-contact-history-chart.mjs +5 -4
  101. package/dist/components/ui/badge.js +6 -6
  102. package/dist/components/ui/badge.mjs +1 -1
  103. package/dist/components/ui/borrowing-capacity-line-chart.js +30 -21
  104. package/dist/components/ui/borrowing-capacity-line-chart.mjs +5 -4
  105. package/dist/components/ui/button.js +2 -2
  106. package/dist/components/ui/button.mjs +1 -1
  107. package/dist/components/ui/calendar.js +2 -2
  108. package/dist/components/ui/calendar.mjs +2 -2
  109. package/dist/components/ui/card.js +1 -1
  110. package/dist/components/ui/card.mjs +1 -1
  111. package/dist/components/ui/cash-balance-line-chart.js +31 -23
  112. package/dist/components/ui/cash-balance-line-chart.mjs +5 -4
  113. package/dist/components/ui/cashflow-bar-chart.js +12 -5
  114. package/dist/components/ui/cashflow-bar-chart.mjs +5 -4
  115. package/dist/components/ui/chip.js +97 -18
  116. package/dist/components/ui/chip.mjs +3 -2
  117. package/dist/components/ui/color-picker.js +547 -0
  118. package/dist/components/ui/color-picker.mjs +24 -0
  119. package/dist/components/ui/data-table.js +182 -129
  120. package/dist/components/ui/data-table.mjs +3 -2
  121. package/dist/components/ui/date-picker.js +48 -27
  122. package/dist/components/ui/date-picker.mjs +4 -3
  123. package/dist/components/ui/dialog.js +37 -9
  124. package/dist/components/ui/dialog.mjs +2 -2
  125. package/dist/components/ui/expense-bar-chart.js +12 -5
  126. package/dist/components/ui/expense-bar-chart.mjs +5 -4
  127. package/dist/components/ui/field.mjs +2 -2
  128. package/dist/components/ui/financial-cards.js +322 -155
  129. package/dist/components/ui/financial-cards.mjs +5 -3
  130. package/dist/components/ui/financial-drawers.js +2 -2
  131. package/dist/components/ui/financial-drawers.mjs +3 -3
  132. package/dist/components/ui/financial-sections.js +14 -10
  133. package/dist/components/ui/financial-sections.mjs +6 -5
  134. package/dist/components/ui/form-primitives.js +4 -4
  135. package/dist/components/ui/form-primitives.mjs +3 -3
  136. package/dist/components/ui/income-bar-chart.js +12 -5
  137. package/dist/components/ui/income-bar-chart.mjs +5 -4
  138. package/dist/components/ui/input-group.js +2 -2
  139. package/dist/components/ui/input-group.mjs +2 -2
  140. package/dist/components/ui/kanban-column.js +52 -44
  141. package/dist/components/ui/kanban-column.mjs +7 -5
  142. package/dist/components/ui/opportunity-card.js +52 -44
  143. package/dist/components/ui/opportunity-card.mjs +6 -4
  144. package/dist/components/ui/opportunity-edit-modals.js +1371 -1267
  145. package/dist/components/ui/opportunity-edit-modals.mjs +10 -10
  146. package/dist/components/ui/opportunity-summary-tab.js +2748 -2161
  147. package/dist/components/ui/opportunity-summary-tab.mjs +16 -16
  148. package/dist/components/ui/page-header.js +92 -0
  149. package/dist/components/ui/page-header.mjs +8 -0
  150. package/dist/components/ui/page-top-bar.js +88 -0
  151. package/dist/components/ui/page-top-bar.mjs +8 -0
  152. package/dist/components/ui/pagination.js +303 -19
  153. package/dist/components/ui/pagination.mjs +11 -4
  154. package/dist/components/ui/pipeline-board.js +209 -195
  155. package/dist/components/ui/pipeline-board.mjs +10 -8
  156. package/dist/components/ui/pipeline-dialogs.js +118 -69
  157. package/dist/components/ui/pipeline-dialogs.mjs +8 -7
  158. package/dist/components/ui/pipeline-primitives.js +6 -6
  159. package/dist/components/ui/pipeline-primitives.mjs +2 -2
  160. package/dist/components/ui/property-cashflow-doughnut-chart.js +14 -12
  161. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +5 -4
  162. package/dist/components/ui/property-debt-equity-doughnut-chart.js +14 -12
  163. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +5 -4
  164. package/dist/components/ui/property-mobile-estimate-line-chart.js +16 -14
  165. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +5 -4
  166. package/dist/components/ui/sidebar-nav.js +679 -0
  167. package/dist/components/ui/sidebar-nav.mjs +14 -0
  168. package/dist/components/ui/stage-timeline.js +6 -6
  169. package/dist/components/ui/stage-timeline.mjs +3 -3
  170. package/dist/components/ui/stepper.js +283 -0
  171. package/dist/components/ui/stepper.mjs +18 -0
  172. package/dist/components/ui/toggle-group.js +4 -4
  173. package/dist/components/ui/toggle-group.mjs +2 -2
  174. package/dist/components/ui/toggle.js +4 -4
  175. package/dist/components/ui/toggle.mjs +1 -1
  176. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +18 -16
  177. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +5 -4
  178. package/dist/components/ui/transactions-income-expense-bar-chart.js +28 -12
  179. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +5 -4
  180. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +18 -16
  181. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +5 -4
  182. package/dist/index.js +12927 -8522
  183. package/dist/index.mjs +288 -190
  184. package/dist/lib/typography.js +10 -10
  185. package/dist/lib/typography.mjs +1 -1
  186. package/dist/styles.css +1 -1
  187. package/package.json +86 -1
  188. package/src/components/index.tsx +146 -0
  189. package/src/components/ui/add-column-modal.tsx +7 -7
  190. package/src/components/ui/add-lead-modal.tsx +6 -3
  191. package/src/components/ui/advisor-card.tsx +227 -0
  192. package/src/components/ui/ai-assistant-drawer.tsx +4 -3
  193. package/src/components/ui/appointment-action-dialogs.tsx +297 -0
  194. package/src/components/ui/appointment-availability-settings.tsx +645 -0
  195. package/src/components/ui/appointment-book-dialog.tsx +618 -0
  196. package/src/components/ui/appointment-calendar-view.tsx +510 -0
  197. package/src/components/ui/appointment-detail-sheet.tsx +415 -0
  198. package/src/components/ui/appointment-gmail-connect.tsx +188 -0
  199. package/src/components/ui/appointment-mini-card.tsx +104 -0
  200. package/src/components/ui/appointment-time-slot-picker.tsx +123 -0
  201. package/src/components/ui/appointment-upcoming-card.tsx +635 -0
  202. package/src/components/ui/backoffice-alert-history-chart.tsx +10 -2
  203. package/src/components/ui/backoffice-alerts-chart.tsx +312 -0
  204. package/src/components/ui/backoffice-connections-chart.tsx +339 -0
  205. package/src/components/ui/backoffice-contact-history-chart.tsx +10 -2
  206. package/src/components/ui/badge.tsx +12 -6
  207. package/src/components/ui/borrowing-capacity-line-chart.tsx +4 -11
  208. package/src/components/ui/button.tsx +2 -2
  209. package/src/components/ui/card.tsx +1 -1
  210. package/src/components/ui/cash-balance-line-chart.tsx +4 -23
  211. package/src/components/ui/cashflow-bar-chart.tsx +9 -2
  212. package/src/components/ui/chart-shared.tsx +4 -11
  213. package/src/components/ui/chip.tsx +23 -19
  214. package/src/components/ui/color-picker.tsx +309 -0
  215. package/src/components/ui/data-table.tsx +117 -83
  216. package/src/components/ui/date-picker.tsx +42 -37
  217. package/src/components/ui/dialog.tsx +72 -6
  218. package/src/components/ui/expense-bar-chart.tsx +11 -2
  219. package/src/components/ui/financial-cards.tsx +99 -10
  220. package/src/components/ui/income-bar-chart.tsx +11 -2
  221. package/src/components/ui/opportunity-card.tsx +10 -39
  222. package/src/components/ui/opportunity-edit-modals.tsx +98 -36
  223. package/src/components/ui/opportunity-summary-tab.tsx +548 -232
  224. package/src/components/ui/page-header.tsx +57 -0
  225. package/src/components/ui/page-top-bar.tsx +48 -0
  226. package/src/components/ui/pagination.tsx +171 -22
  227. package/src/components/ui/pipeline-board.tsx +12 -5
  228. package/src/components/ui/property-cashflow-doughnut-chart.tsx +3 -1
  229. package/src/components/ui/property-debt-equity-doughnut-chart.tsx +3 -1
  230. package/src/components/ui/property-mobile-estimate-line-chart.tsx +3 -1
  231. package/src/components/ui/sidebar-nav.tsx +516 -0
  232. package/src/components/ui/stepper.tsx +347 -0
  233. package/src/components/ui/toggle.tsx +4 -4
  234. package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +3 -1
  235. package/src/components/ui/transactions-income-expense-bar-chart.tsx +12 -9
  236. package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +3 -1
  237. package/src/lib/format-currency.ts +44 -0
  238. package/src/lib/format-date.ts +50 -0
  239. package/src/lib/opportunity-constants.ts +12 -0
  240. package/src/lib/typography.ts +11 -11
  241. package/src/styles/globals.css +36 -34
  242. package/src/styles/styles-css.ts +1 -1
  243. package/tsup.config.ts +17 -0
  244. package/dist/chunk-PG6K5XEC.mjs +0 -475
  245. package/dist/chunk-WA6O6EUR.mjs +0 -1885
  246. package/dist/chunk-WNGWBVLV.mjs +0 -148
  247. package/dist/{chunk-LLVQKSU3.mjs → chunk-GD4BJDJR.mjs} +3 -3
@@ -6,6 +6,9 @@ import {
6
6
  TableHeader,
7
7
  TableRow
8
8
  } from "./chunk-66MI7Q4B.mjs";
9
+ import {
10
+ PaginationNavButtons
11
+ } from "./chunk-PBL4OQV2.mjs";
9
12
  import {
10
13
  DropdownMenu,
11
14
  DropdownMenuCheckboxItem,
@@ -33,10 +36,14 @@ import {
33
36
  } from "./chunk-GYMYRIZP.mjs";
34
37
  import {
35
38
  Button
36
- } from "./chunk-2I5S2AMY.mjs";
39
+ } from "./chunk-XREGSKX3.mjs";
37
40
  import {
38
41
  cn
39
42
  } from "./chunk-VLQZANBF.mjs";
43
+ import {
44
+ __spreadProps,
45
+ __spreadValues
46
+ } from "./chunk-FWCSY2DS.mjs";
40
47
 
41
48
  // src/components/ui/data-table.tsx
42
49
  import * as React from "react";
@@ -52,10 +59,6 @@ import {
52
59
  ArrowUpDown,
53
60
  ArrowUp,
54
61
  ArrowDown,
55
- ChevronLeftIcon,
56
- ChevronRightIcon,
57
- ChevronsLeftIcon,
58
- ChevronsRightIcon,
59
62
  SlidersHorizontal
60
63
  } from "lucide-react";
61
64
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -194,99 +197,62 @@ function DataTablePagination({
194
197
  return /* @__PURE__ */ jsxs(
195
198
  "div",
196
199
  {
197
- className: "flex items-center justify-between gap-4 py-4",
200
+ className: "flex items-center gap-4 py-4",
198
201
  "data-slot": "data-table-pagination",
199
202
  children: [
200
- /* @__PURE__ */ jsx("p", { className: "text-body-small text-muted-foreground", children: table.getFilteredSelectedRowModel().rows.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
203
+ table.getFilteredSelectedRowModel().rows.length > 0 && /* @__PURE__ */ jsxs("span", { className: "text-body-small text-muted-foreground", children: [
201
204
  table.getFilteredSelectedRowModel().rows.length,
202
205
  " of",
203
206
  " ",
204
207
  table.getFilteredRowModel().rows.length,
205
208
  " row(s) selected."
206
- ] }) }),
207
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-6", children: [
209
+ ] }),
210
+ /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-6", children: [
208
211
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
209
- /* @__PURE__ */ jsx("p", { className: "text-body-small text-muted-foreground whitespace-nowrap", children: "Rows per page" }),
212
+ /* @__PURE__ */ jsx("span", { className: "text-body-small text-muted-foreground whitespace-nowrap", children: "Rows per page" }),
210
213
  /* @__PURE__ */ jsxs(
211
214
  Select,
212
215
  {
213
- onValueChange: (value) => {
214
- table.setPageSize(Number(value));
215
- },
216
+ onValueChange: (value) => table.setPageSize(Number(value)),
216
217
  value: `${table.getState().pagination.pageSize}`,
217
218
  children: [
218
- /* @__PURE__ */ jsx(SelectTrigger, { className: "w-[70px]", size: "sm", children: /* @__PURE__ */ jsx(
219
- SelectValue,
219
+ /* @__PURE__ */ jsx(
220
+ SelectTrigger,
220
221
  {
221
- placeholder: `${table.getState().pagination.pageSize}`
222
+ "aria-label": "Rows per page",
223
+ className: "w-[70px]",
224
+ size: "sm",
225
+ children: /* @__PURE__ */ jsx(
226
+ SelectValue,
227
+ {
228
+ placeholder: `${table.getState().pagination.pageSize}`
229
+ }
230
+ )
222
231
  }
223
- ) }),
232
+ ),
224
233
  /* @__PURE__ */ jsx(SelectContent, { children: pageSizeOptions.map((pageSize) => /* @__PURE__ */ jsx(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize)) })
225
234
  ]
226
235
  }
227
236
  )
228
237
  ] }),
229
- /* @__PURE__ */ jsxs("p", { className: "text-body-small text-muted-foreground whitespace-nowrap", children: [
238
+ /* @__PURE__ */ jsxs("span", { className: "text-body-small text-muted-foreground whitespace-nowrap", children: [
230
239
  "Page ",
231
240
  table.getState().pagination.pageIndex + 1,
232
241
  " of",
233
242
  " ",
234
243
  table.getPageCount()
235
244
  ] }),
236
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
237
- /* @__PURE__ */ jsx(
238
- Button,
239
- {
240
- "aria-label": "Go to first page",
241
- disabled: !table.getCanPreviousPage(),
242
- onClick: () => {
243
- table.setPageIndex(0);
244
- },
245
- size: "icon-sm",
246
- variant: "outline",
247
- children: /* @__PURE__ */ jsx(ChevronsLeftIcon, { className: "size-4" })
248
- }
249
- ),
250
- /* @__PURE__ */ jsx(
251
- Button,
252
- {
253
- "aria-label": "Go to previous page",
254
- disabled: !table.getCanPreviousPage(),
255
- onClick: () => {
256
- table.previousPage();
257
- },
258
- size: "icon-sm",
259
- variant: "outline",
260
- children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "size-4" })
261
- }
262
- ),
263
- /* @__PURE__ */ jsx(
264
- Button,
265
- {
266
- "aria-label": "Go to next page",
267
- disabled: !table.getCanNextPage(),
268
- onClick: () => {
269
- table.nextPage();
270
- },
271
- size: "icon-sm",
272
- variant: "outline",
273
- children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-4" })
274
- }
275
- ),
276
- /* @__PURE__ */ jsx(
277
- Button,
278
- {
279
- "aria-label": "Go to last page",
280
- disabled: !table.getCanNextPage(),
281
- onClick: () => {
282
- table.setPageIndex(table.getPageCount() - 1);
283
- },
284
- size: "icon-sm",
285
- variant: "outline",
286
- children: /* @__PURE__ */ jsx(ChevronsRightIcon, { className: "size-4" })
287
- }
288
- )
289
- ] })
245
+ /* @__PURE__ */ jsx(
246
+ PaginationNavButtons,
247
+ {
248
+ hasNext: table.getCanNextPage(),
249
+ hasPrev: table.getCanPreviousPage(),
250
+ onFirst: () => table.setPageIndex(0),
251
+ onLast: () => table.setPageIndex(table.getPageCount() - 1),
252
+ onNext: () => table.nextPage(),
253
+ onPrev: () => table.previousPage()
254
+ }
255
+ )
290
256
  ] })
291
257
  ]
292
258
  }
@@ -317,41 +283,72 @@ function DataTable({
317
283
  onRowSelectionChange,
318
284
  className,
319
285
  toolbar,
320
- emptyText = "No results."
286
+ emptyText = "No results.",
287
+ manualPagination = false,
288
+ manualSorting = false,
289
+ manualFiltering = false,
290
+ pageCount,
291
+ rowCount,
292
+ sorting: controlledSorting,
293
+ pagination: controlledPagination,
294
+ columnFilters: controlledColumnFilters,
295
+ onSortingChange: onSortingChangeProp,
296
+ onPaginationChange: onPaginationChangeProp,
297
+ onColumnFiltersChange: onColumnFiltersChangeProp
321
298
  }) {
322
- const [sorting, setSorting] = React.useState([]);
323
- const [columnFilters, setColumnFilters] = React.useState(
299
+ var _a;
300
+ const [internalSorting, setInternalSorting] = React.useState(
324
301
  []
325
302
  );
303
+ const [internalColumnFilters, setInternalColumnFilters] = React.useState([]);
304
+ const [internalPagination, setInternalPagination] = React.useState({
305
+ pageIndex: 0,
306
+ pageSize: (_a = pageSizeOptions[0]) != null ? _a : 10
307
+ });
326
308
  const [columnVisibility, setColumnVisibility] = React.useState({});
327
309
  const [rowSelection, setRowSelection] = React.useState({});
310
+ const sorting = controlledSorting != null ? controlledSorting : internalSorting;
311
+ const columnFilters = controlledColumnFilters != null ? controlledColumnFilters : internalColumnFilters;
312
+ const pagination = controlledPagination != null ? controlledPagination : internalPagination;
328
313
  const resolvedColumns = React.useMemo(() => {
329
314
  if (!enableRowSelection) return userColumns;
330
315
  return [getSelectionColumn(), ...userColumns];
331
316
  }, [userColumns, enableRowSelection]);
332
- const table = useReactTable({
317
+ const table = useReactTable(__spreadProps(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
333
318
  data,
334
319
  columns: resolvedColumns,
335
320
  state: {
336
321
  sorting,
337
322
  columnFilters,
338
323
  columnVisibility,
339
- rowSelection
324
+ rowSelection,
325
+ pagination
326
+ },
327
+ onSortingChange: (updater) => {
328
+ const next = typeof updater === "function" ? updater(sorting) : updater;
329
+ if (controlledSorting === void 0) setInternalSorting(next);
330
+ onSortingChangeProp == null ? void 0 : onSortingChangeProp(next);
331
+ },
332
+ onColumnFiltersChange: (updater) => {
333
+ const next = typeof updater === "function" ? updater(columnFilters) : updater;
334
+ if (controlledColumnFilters === void 0) setInternalColumnFilters(next);
335
+ onColumnFiltersChangeProp == null ? void 0 : onColumnFiltersChangeProp(next);
336
+ },
337
+ onPaginationChange: (updater) => {
338
+ const next = typeof updater === "function" ? updater(pagination) : updater;
339
+ if (controlledPagination === void 0) setInternalPagination(next);
340
+ onPaginationChangeProp == null ? void 0 : onPaginationChangeProp(next);
340
341
  },
341
- onSortingChange: setSorting,
342
- onColumnFiltersChange: setColumnFilters,
343
342
  onColumnVisibilityChange: setColumnVisibility,
344
343
  onRowSelectionChange: (updater) => {
345
344
  const next = typeof updater === "function" ? updater(rowSelection) : updater;
346
345
  setRowSelection(next);
347
346
  onRowSelectionChange == null ? void 0 : onRowSelectionChange(next);
348
347
  },
349
- getCoreRowModel: getCoreRowModel(),
350
- getFilteredRowModel: getFilteredRowModel(),
351
- getPaginationRowModel: getPaginationRowModel(),
352
- getSortedRowModel: getSortedRowModel(),
348
+ getCoreRowModel: getCoreRowModel()
349
+ }, manualFiltering ? { manualFiltering: true } : { getFilteredRowModel: getFilteredRowModel() }), manualPagination ? { manualPagination: true } : { getPaginationRowModel: getPaginationRowModel() }), manualSorting ? { manualSorting: true } : { getSortedRowModel: getSortedRowModel() }), pageCount !== void 0 && { pageCount }), rowCount !== void 0 && { rowCount }), {
353
350
  enableRowSelection
354
- });
351
+ }));
355
352
  function renderTableBody() {
356
353
  if (loading) {
357
354
  return /* @__PURE__ */ jsx(
@@ -1,7 +1,3 @@
1
- import {
2
- RadioGroup,
3
- RadioGroupItem
4
- } from "./chunk-7XJHLGUV.mjs";
5
1
  import {
6
2
  FinancialDetailField,
7
3
  FinancialLvrBar,
@@ -9,9 +5,19 @@ import {
9
5
  FinancialSubtotalBlock,
10
6
  FinancialSubtotalFrame
11
7
  } from "./chunk-OGOYQ7BG.mjs";
8
+ import {
9
+ formatDateShort
10
+ } from "./chunk-7PV3IWCN.mjs";
11
+ import {
12
+ RadioGroup,
13
+ RadioGroupItem
14
+ } from "./chunk-7XJHLGUV.mjs";
12
15
  import {
13
16
  Badge
14
- } from "./chunk-WAZD7NFU.mjs";
17
+ } from "./chunk-BKNFWEH2.mjs";
18
+ import {
19
+ Button
20
+ } from "./chunk-XREGSKX3.mjs";
15
21
  import {
16
22
  cn
17
23
  } from "./chunk-VLQZANBF.mjs";
@@ -70,12 +76,13 @@ function PropertyCard({
70
76
  ),
71
77
  children: [
72
78
  isLinkedToBank ? /* @__PURE__ */ jsxs(
73
- "button",
79
+ Button,
74
80
  {
75
81
  type: "button",
82
+ variant: "ghost",
76
83
  "aria-expanded": expanded,
77
84
  onClick: () => setExpanded((prev) => !prev),
78
- className: "flex items-center gap-1.5 px-5 py-3 text-left cursor-pointer hover:opacity-85",
85
+ className: "h-auto w-full justify-start gap-1.5 px-5 py-3 text-left",
79
86
  children: [
80
87
  /* @__PURE__ */ jsx("span", { className: "text-label-medium text-foreground", children: address }),
81
88
  type && /* @__PURE__ */ jsx(Badge, { variant: "outline", children: type }),
@@ -517,15 +524,28 @@ function AboutCard({
517
524
  lastName,
518
525
  phone,
519
526
  email,
527
+ dob,
520
528
  gender,
521
529
  maritalStatus,
530
+ numDependants,
522
531
  citizenStatus,
532
+ residentialAddress,
533
+ residentialStatus,
534
+ timeAtAddressYears,
535
+ timeAtAddressMonths,
536
+ driversLicence,
537
+ passport,
523
538
  propertyInTrust,
524
539
  companyOwnership
525
540
  }) {
526
541
  const fullName = [title, firstName, lastName].filter(Boolean).join(" ") || "\u2014";
542
+ const timeAtAddress = timeAtAddressYears || timeAtAddressMonths ? [
543
+ timeAtAddressYears && `${timeAtAddressYears}yr`,
544
+ timeAtAddressMonths && `${timeAtAddressMonths}mo`
545
+ ].filter(Boolean).join(" ") : void 0;
527
546
  return /* @__PURE__ */ jsx("div", { className: "border border-border overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-x-8 gap-y-4 px-5 py-4", children: [
528
547
  /* @__PURE__ */ jsx(FinancialDetailField, { label: "Full Name", value: fullName }),
548
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Date of Birth", value: dob || "\u2014" }),
529
549
  /* @__PURE__ */ jsx(FinancialDetailField, { label: "Gender", value: gender || "\u2014" }),
530
550
  /* @__PURE__ */ jsx(FinancialDetailField, { label: "Phone", value: phone || "\u2014" }),
531
551
  /* @__PURE__ */ jsx(FinancialDetailField, { label: "Email", value: email || "\u2014" }),
@@ -536,6 +556,13 @@ function AboutCard({
536
556
  value: maritalStatus || "\u2014"
537
557
  }
538
558
  ),
559
+ /* @__PURE__ */ jsx(
560
+ FinancialDetailField,
561
+ {
562
+ label: "No. of Dependants",
563
+ value: numDependants != null ? numDependants : "\u2014"
564
+ }
565
+ ),
539
566
  /* @__PURE__ */ jsx(
540
567
  FinancialDetailField,
541
568
  {
@@ -543,6 +570,29 @@ function AboutCard({
543
570
  value: citizenStatus || "\u2014"
544
571
  }
545
572
  ),
573
+ /* @__PURE__ */ jsx(
574
+ FinancialDetailField,
575
+ {
576
+ label: "Residential Address",
577
+ value: residentialAddress || "\u2014"
578
+ }
579
+ ),
580
+ /* @__PURE__ */ jsx(
581
+ FinancialDetailField,
582
+ {
583
+ label: "Residential Status",
584
+ value: residentialStatus || "\u2014"
585
+ }
586
+ ),
587
+ timeAtAddress && /* @__PURE__ */ jsx(FinancialDetailField, { label: "Time at Address", value: timeAtAddress }),
588
+ /* @__PURE__ */ jsx(
589
+ FinancialDetailField,
590
+ {
591
+ label: "Driver's Licence",
592
+ value: driversLicence || "\u2014"
593
+ }
594
+ ),
595
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Passport", value: passport || "\u2014" }),
546
596
  /* @__PURE__ */ jsx(
547
597
  FinancialDetailField,
548
598
  {
@@ -568,19 +618,51 @@ function IncomeCard({ items, totalMonthly }) {
568
618
  "div",
569
619
  {
570
620
  className: cn(
571
- "grid grid-cols-3 gap-x-6 px-5 py-[15px]",
621
+ "flex flex-col gap-3 px-5 py-[15px]",
572
622
  i < items.length - 1 && "border-b border-border"
573
623
  ),
574
624
  children: [
575
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Type", value: item.incomeType || "\u2014" }),
576
- /* @__PURE__ */ jsx(
625
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-x-6", children: [
626
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Type", value: item.incomeType || "\u2014" }),
627
+ /* @__PURE__ */ jsx(
628
+ FinancialDetailField,
629
+ {
630
+ label: "Job Title",
631
+ value: item.jobTitle || "\u2014"
632
+ }
633
+ ),
634
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Amount", value: item.amountLabel })
635
+ ] }),
636
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-x-6", children: [
637
+ /* @__PURE__ */ jsx(
638
+ FinancialDetailField,
639
+ {
640
+ label: "Company",
641
+ value: item.companyName || "\u2014"
642
+ }
643
+ ),
644
+ /* @__PURE__ */ jsx(
645
+ FinancialDetailField,
646
+ {
647
+ label: "Start Date",
648
+ value: formatDateShort(item.startDate)
649
+ }
650
+ ),
651
+ /* @__PURE__ */ jsx(
652
+ FinancialDetailField,
653
+ {
654
+ label: "Status",
655
+ value: item.stillInPosition === void 0 ? "\u2014" : item.stillInPosition ? "Still in position" : item.endDate ? `Ended ${formatDateShort(item.endDate)}` : "No longer in position"
656
+ }
657
+ )
658
+ ] }),
659
+ item.companyAddress && /* @__PURE__ */ jsx(
577
660
  FinancialDetailField,
578
661
  {
579
- label: "Employer",
580
- value: item.companyName || item.jobTitle || "\u2014"
662
+ label: "Company Address",
663
+ value: item.companyAddress
581
664
  }
582
- ),
583
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Amount", value: item.amountLabel })
665
+ )
584
666
  ]
585
667
  },
586
668
  i
@@ -8,7 +8,7 @@ import {
8
8
  FALLBACK_TICK,
9
9
  formatTooltipDate,
10
10
  hexToRgba
11
- } from "./chunk-FZIXGLMV.mjs";
11
+ } from "./chunk-M3FV7LOK.mjs";
12
12
  import {
13
13
  Empty,
14
14
  EmptyDescription
@@ -19,7 +19,7 @@ import {
19
19
  CardContent,
20
20
  CardHeader,
21
21
  CardTitle
22
- } from "./chunk-CLIN5525.mjs";
22
+ } from "./chunk-C7CQJNMR.mjs";
23
23
  import {
24
24
  useThemeVars
25
25
  } from "./chunk-FEZKMUCF.mjs";
@@ -40,7 +40,14 @@ import {
40
40
  } from "chart.js";
41
41
  import { Chart } from "react-chartjs-2";
42
42
  import { jsx, jsxs } from "react/jsx-runtime";
43
- ChartJS.register(CategoryScale, LinearScale, BarController, BarElement, Tooltip, Legend);
43
+ ChartJS.register(
44
+ CategoryScale,
45
+ LinearScale,
46
+ BarController,
47
+ BarElement,
48
+ Tooltip,
49
+ Legend
50
+ );
44
51
  function LegendItem({
45
52
  label,
46
53
  fillColor,
@@ -251,7 +258,7 @@ function CashflowBarChart({
251
258
  style: { maxWidth: width, fontFamily },
252
259
  children: [
253
260
  /* @__PURE__ */ jsxs(CardHeader, { className: "px-3 sm:px-6", children: [
254
- /* @__PURE__ */ jsx(CardTitle, { className: "text-sm sm:text-base uppercase tracking-wider", children: title }),
261
+ /* @__PURE__ */ jsx(CardTitle, { className: "text-xs font-semibold uppercase tracking-wide", children: title }),
255
262
  showPeriodSelector && /* @__PURE__ */ jsx(CardAction, { children: /* @__PURE__ */ jsx("div", { className: "flex gap-0.5 sm:gap-1", children: PERIODS.map((p) => /* @__PURE__ */ jsx(
256
263
  ChartPeriodButton,
257
264
  {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buttonVariants
3
- } from "./chunk-2I5S2AMY.mjs";
3
+ } from "./chunk-XREGSKX3.mjs";
4
4
  import {
5
5
  useThemeVars
6
6
  } from "./chunk-FEZKMUCF.mjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TaskCheckItem
3
- } from "./chunk-FMAXJ2SI.mjs";
3
+ } from "./chunk-MBON7YRJ.mjs";
4
4
  import {
5
5
  DropdownMenu,
6
6
  DropdownMenuContent,
@@ -8,9 +8,16 @@ import {
8
8
  DropdownMenuSeparator,
9
9
  DropdownMenuTrigger
10
10
  } from "./chunk-EFRENWEJ.mjs";
11
+ import {
12
+ formatCurrency
13
+ } from "./chunk-MN5NYQCL.mjs";
14
+ import {
15
+ formatDateDayMonth,
16
+ formatDateShort
17
+ } from "./chunk-7PV3IWCN.mjs";
11
18
  import {
12
19
  Badge
13
- } from "./chunk-WAZD7NFU.mjs";
20
+ } from "./chunk-BKNFWEH2.mjs";
14
21
  import {
15
22
  Accordion,
16
23
  AccordionContent,
@@ -23,7 +30,7 @@ import {
23
30
  import {
24
31
  Button,
25
32
  buttonVariants
26
- } from "./chunk-2I5S2AMY.mjs";
33
+ } from "./chunk-XREGSKX3.mjs";
27
34
  import {
28
35
  cn
29
36
  } from "./chunk-VLQZANBF.mjs";
@@ -60,34 +67,6 @@ function resolvePriority(days, warningDays, priorityDays, priority) {
60
67
  if (warningDays !== void 0 || priorityDays !== void 0) return "LOW";
61
68
  return priority;
62
69
  }
63
- function formatAmount(amount) {
64
- return new Intl.NumberFormat("en-AU", {
65
- style: "currency",
66
- currency: "AUD",
67
- maximumFractionDigits: 0
68
- }).format(amount);
69
- }
70
- function formatDate(iso) {
71
- try {
72
- return new Date(iso).toLocaleDateString("en-AU", {
73
- day: "2-digit",
74
- month: "short",
75
- year: "numeric"
76
- });
77
- } catch (e) {
78
- return iso;
79
- }
80
- }
81
- function formatHoldDate(iso) {
82
- try {
83
- return new Date(iso).toLocaleDateString("en-AU", {
84
- day: "2-digit",
85
- month: "short"
86
- });
87
- } catch (e) {
88
- return iso;
89
- }
90
- }
91
70
  function formatLoanType(type) {
92
71
  return type.split("-").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
93
72
  }
@@ -149,7 +128,7 @@ function OpportunityCard({
149
128
  children: [
150
129
  /* @__PURE__ */ jsx(Clock, { className: "size-3 shrink-0" }),
151
130
  "On hold until ",
152
- formatHoldDate(onHoldTo)
131
+ formatDateDayMonth(onHoldTo)
153
132
  ]
154
133
  }
155
134
  ),
@@ -164,17 +143,16 @@ function OpportunityCard({
164
143
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-2", children: [
165
144
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
166
145
  (loanPurposeLabel || loanType) && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "self-start", children: loanPurposeLabel != null ? loanPurposeLabel : formatLoanType(loanType) }),
167
- /* @__PURE__ */ jsx("span", { className: "text-base font-bold tabular-nums text-foreground", children: formatAmount(amount) })
146
+ /* @__PURE__ */ jsx("span", { className: "text-base font-bold tabular-nums text-foreground", children: formatCurrency(amount) })
168
147
  ] }),
169
148
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 -mr-1 -mt-1", children: [
170
149
  onLaunchAssistant && /* @__PURE__ */ jsx(
171
- "button",
150
+ Button,
172
151
  {
173
152
  type: "button",
174
- className: cn(
175
- buttonVariants({ variant: "ghost", size: "icon" }),
176
- "size-7 shrink-0"
177
- ),
153
+ variant: "ghost",
154
+ size: "icon",
155
+ className: "size-7 shrink-0",
178
156
  onClick: onLaunchAssistant,
179
157
  "aria-label": "Launch AI Assistant",
180
158
  title: "Launch AI Assistant",
@@ -230,7 +208,7 @@ function OpportunityCard({
230
208
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
231
209
  /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
232
210
  /* @__PURE__ */ jsx(Calendar, { className: "size-3 shrink-0", "aria-hidden": "true" }),
233
- formatDate(date)
211
+ formatDateShort(date)
234
212
  ] }),
235
213
  /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
236
214
  daysSinceColumnChanged !== void 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -13,12 +13,12 @@ var TYPOGRAPHY_DISPLAY = {
13
13
  small: style(600, "2.125rem", "2.625rem")
14
14
  };
15
15
  var TYPOGRAPHY_HEADING = {
16
- h1: style(700, "2rem", "2.5rem"),
16
+ h1: style(700, "1.875rem", "2.25rem"),
17
17
  h2: style(600, "1.75rem", "2.25rem"),
18
18
  h3: style(600, "1.5rem", "2rem"),
19
- h4: style(600, "1.3125rem", "1.75rem"),
19
+ h4: style(600, "1.25rem", "1.625rem"),
20
20
  h5: style(600, "1.125rem", "1.5rem"),
21
- h6: style(600, "1rem", "1.375rem")
21
+ h6: style(600, "0.9375rem", "1.25rem")
22
22
  };
23
23
  var TYPOGRAPHY_BODY = {
24
24
  large: style(400, "1.125rem", "1.75rem"),
@@ -27,16 +27,16 @@ var TYPOGRAPHY_BODY = {
27
27
  };
28
28
  var TYPOGRAPHY_LABEL = {
29
29
  large: style(600, "1rem", "1.25rem"),
30
- medium: style(600, "0.875rem", "1.125rem"),
31
- small: style(600, "0.75rem", "1rem", { letterSpacing: "0.03125rem" })
30
+ medium: style(600, "0.9375rem", "1.25rem"),
31
+ small: style(600, "0.8125rem", "1.125rem", { letterSpacing: "0.03125rem" })
32
32
  };
33
33
  var TYPOGRAPHY_BUTTON = {
34
- default: style(500, "0.875rem", "1.25rem"),
35
- xs: style(500, "0.75rem", "1.25rem")
34
+ default: style(600, "0.875rem", "1.25rem"),
35
+ xs: style(600, "0.75rem", "1.25rem")
36
36
  };
37
37
  var TYPOGRAPHY_UTILITY = {
38
- caption: style(400, "0.75rem", "1rem"),
39
- overline: style(600, "0.625rem", "0.875rem", {
38
+ caption: style(500, "0.8125rem", "1.125rem"),
39
+ overline: style(600, "0.75rem", "1rem", {
40
40
  letterSpacing: "0.09375rem",
41
41
  textTransform: "uppercase"
42
42
  }),
@@ -63,7 +63,7 @@ var TYPOGRAPHY_RESPONSIVE = {
63
63
  letterSpacing: "-0.03125rem"
64
64
  }),
65
65
  "display-medium": style(700, "2rem", "2.334rem"),
66
- h1: style(700, "1.75rem", "2.1875rem"),
66
+ h1: style(700, "1.625rem", "2rem"),
67
67
  h2: style(600, "1.5rem", "1.93rem")
68
68
  }
69
69
  };