@wealthx/shadcn 1.5.3 → 1.5.4

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.
@@ -14,7 +14,7 @@ npm warn Unknown project config "auto-install-peers". This will stop working in
14
14
  npm warn Unknown project config "public-hoist-pattern". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
15
15
  ≈ tailwindcss v4.2.2
16
16
 
17
- Done in 327ms
17
+ Done in 318ms
18
18
  Built dist/styles.css and src/styles/styles-css.ts
19
19
  warning package.json: No license field
20
20
  $ tsup
@@ -25,6 +25,7 @@ $ tsup
25
25
  CLI Target: es6
26
26
  CJS Build start
27
27
  ESM Build start
28
+ ESM dist/lib/colors.mjs 241.00 B
28
29
  ESM dist/chunk-JUBUN65Q.mjs 3.12 KB
29
30
  ESM dist/chunk-RUX3OLVZ.mjs 1.81 KB
30
31
  ESM dist/chunk-LLAGF6BA.mjs 1.37 KB
@@ -34,8 +35,8 @@ $ tsup
34
35
  ESM dist/chunk-I2EKKSEF.mjs 4.94 KB
35
36
  ESM dist/chunk-QHJDGB54.mjs 4.22 KB
36
37
  ESM dist/chunk-5SAYZ4CI.mjs 1.14 KB
37
- ESM dist/chunk-G2EWIP2N.mjs 29.01 KB
38
38
  ESM dist/index.mjs 19.55 KB
39
+ ESM dist/chunk-G2EWIP2N.mjs 29.01 KB
39
40
  ESM dist/chunk-KB7MZMED.mjs 5.12 KB
40
41
  ESM dist/chunk-PGR53HMH.mjs 5.55 KB
41
42
  ESM dist/chunk-V4CUTCHS.mjs 5.11 KB
@@ -54,9 +55,8 @@ $ tsup
54
55
  ESM dist/chunk-QRVEI6J3.mjs 5.08 KB
55
56
  ESM dist/chunk-D447W45Z.mjs 4.50 KB
56
57
  ESM dist/chunk-VFH632TB.mjs 7.43 KB
57
- ESM dist/chunk-AUEUTZIC.mjs 36.68 KB
58
58
  ESM dist/chunk-BDESHD25.mjs 5.28 KB
59
- ESM dist/chunk-NT4FX27K.mjs 866.00 B
59
+ ESM dist/chunk-AUEUTZIC.mjs 36.68 KB
60
60
  ESM dist/chunk-Q5SGEIJV.mjs 78.04 KB
61
61
  ESM dist/chunk-NB3ZL36B.mjs 711.00 B
62
62
  ESM dist/chunk-KFH36NKF.mjs 1.52 KB
@@ -64,38 +64,40 @@ $ tsup
64
64
  ESM dist/chunk-2P7HP7LR.mjs 2.31 KB
65
65
  ESM dist/chunk-6TX73WG7.mjs 6.07 KB
66
66
  ESM dist/chunk-ODO6BUOF.mjs 8.63 KB
67
- ESM dist/chunk-2WCIORP7.mjs 2.76 KB
68
67
  ESM dist/chunk-RAKBWNQH.mjs 25.96 KB
68
+ ESM dist/chunk-2WCIORP7.mjs 2.76 KB
69
69
  ESM dist/chunk-4DO3WM7V.mjs 1.13 KB
70
70
  ESM dist/chunk-623YVI5O.mjs 1.60 KB
71
- ESM dist/chunk-OECGKCVF.mjs 7.46 KB
72
71
  ESM dist/chunk-2QNOPXMQ.mjs 11.80 KB
73
- ESM dist/chunk-HROG643K.mjs 26.92 KB
72
+ ESM dist/chunk-OECGKCVF.mjs 7.46 KB
73
+ ESM dist/chunk-VLELWBEW.mjs 14.00 KB
74
74
  ESM dist/chunk-DQB4EPIS.mjs 5.13 KB
75
- ESM dist/chunk-A6ER36CW.mjs 15.87 KB
75
+ ESM dist/chunk-HROG643K.mjs 26.92 KB
76
76
  ESM dist/chunk-HK4HUQTV.mjs 2.68 KB
77
+ ESM dist/chunk-A6ER36CW.mjs 15.87 KB
77
78
  ESM dist/chunk-KAD26MCC.mjs 7.33 KB
78
79
  ESM dist/chunk-KLJLDNCA.mjs 7.37 KB
79
- ESM dist/chunk-PX4M67XQ.mjs 12.58 KB
80
80
  ESM dist/chunk-JPGL36WQ.mjs 995.00 B
81
- ESM dist/chunk-TLYSVRSK.mjs 13.49 KB
81
+ ESM dist/chunk-HXU5JGLQ.mjs 12.72 KB
82
82
  ESM dist/chunk-KCKYGQVQ.mjs 2.12 KB
83
+ ESM dist/chunk-TLYSVRSK.mjs 13.49 KB
83
84
  ESM dist/chunk-K7WSRWOU.mjs 7.28 KB
84
85
  ESM dist/chunk-QAX6HCUH.mjs 4.76 KB
85
86
  ESM dist/chunk-OEOOYMC2.mjs 6.85 KB
86
87
  ESM dist/chunk-2A53WPEC.mjs 5.60 KB
87
- ESM dist/chunk-CUSHAIUL.mjs 3.26 KB
88
- ESM dist/chunk-7YI3HEBH.mjs 5.73 KB
88
+ ESM dist/chunk-QBPNYXTI.mjs 3.33 KB
89
89
  ESM dist/chunk-3AREQTZU.mjs 6.99 KB
90
+ ESM dist/chunk-7YI3HEBH.mjs 5.73 KB
90
91
  ESM dist/chunk-I3UDLWQ7.mjs 8.80 KB
91
92
  ESM dist/chunk-3WGFIFP6.mjs 19.59 KB
92
- ESM dist/chunk-BBXSNDS3.mjs 7.55 KB
93
93
  ESM dist/chunk-KWD6GANL.mjs 1.63 KB
94
+ ESM dist/chunk-BBXSNDS3.mjs 7.55 KB
95
+ ESM dist/chunk-NT4FX27K.mjs 866.00 B
94
96
  ESM dist/chunk-HF4FUBCY.mjs 8.41 KB
95
- ESM dist/chunk-XTWAJWCQ.mjs 7.81 KB
96
97
  ESM dist/chunk-E3PQDBYI.mjs 8.57 KB
97
- ESM dist/chunk-K7TWMLLW.mjs 22.25 KB
98
+ ESM dist/chunk-XTWAJWCQ.mjs 7.81 KB
98
99
  ESM dist/chunk-TXUBGKB7.mjs 4.71 KB
100
+ ESM dist/chunk-K7TWMLLW.mjs 22.25 KB
99
101
  ESM dist/chunk-F4O2YPXJ.mjs 1.83 KB
100
102
  ESM dist/chunk-AL6GOL2Y.mjs 6.95 KB
101
103
  ESM dist/chunk-I4KVSZCH.mjs 2.28 KB
@@ -105,31 +107,29 @@ $ tsup
105
107
  ESM dist/chunk-XIY5DJXI.mjs 6.29 KB
106
108
  ESM dist/chunk-Y2MTAVAK.mjs 1.30 KB
107
109
  ESM dist/chunk-6OSULDEO.mjs 1.47 KB
108
- ESM dist/lib/colors.mjs 241.00 B
109
- ESM dist/chunk-VLELWBEW.mjs 14.00 KB
110
110
  ESM dist/chunk-OYBIUEGE.mjs 6.45 KB
111
- ESM dist/chunk-CDVG7SFT.mjs 8.14 KB
112
111
  ESM dist/chunk-M4LTX3MH.mjs 8.09 KB
112
+ ESM dist/chunk-CDVG7SFT.mjs 8.14 KB
113
113
  ESM dist/chunk-TOIVHWNC.mjs 8.69 KB
114
114
  ESM dist/chunk-GTAVSBDO.mjs 483.00 B
115
115
  ESM dist/chunk-YEWNFK5S.mjs 4.41 KB
116
116
  ESM dist/chunk-R2ON6CAN.mjs 2.83 KB
117
+ ESM dist/chunk-46Q4335I.mjs 22.24 KB
117
118
  ESM dist/chunk-JTK6VJXY.mjs 3.88 KB
118
119
  ESM dist/chunk-MXP2RX2V.mjs 11.33 KB
119
120
  ESM dist/chunk-ISUA7DSB.mjs 2.08 KB
120
121
  ESM dist/chunk-EW72FINW.mjs 14.51 KB
121
122
  ESM dist/chunk-HO6S3ECM.mjs 13.16 KB
122
123
  ESM dist/chunk-ZXEUBBHJ.mjs 5.64 KB
123
- ESM dist/chunk-46Q4335I.mjs 22.24 KB
124
124
  ESM dist/chunk-4Z66LMIQ.mjs 2.41 KB
125
125
  ESM dist/chunk-DFL5CV75.mjs 20.71 KB
126
126
  ESM dist/chunk-MDUKXXIL.mjs 2.24 KB
127
+ ESM dist/chunk-UTCQN6XU.mjs 4.35 KB
127
128
  ESM dist/chunk-QQSOZQOC.mjs 631.00 B
128
129
  ESM dist/chunk-2LLFNGJZ.mjs 8.46 KB
129
130
  ESM dist/chunk-FRT3S72S.mjs 2.27 KB
130
- ESM dist/chunk-UTCQN6XU.mjs 4.35 KB
131
- ESM dist/chunk-OL65UQHQ.mjs 9.72 KB
132
131
  ESM dist/chunk-VJ3GC7W3.mjs 22.16 KB
132
+ ESM dist/chunk-OL65UQHQ.mjs 9.72 KB
133
133
  ESM dist/chunk-XN37434W.mjs 7.26 KB
134
134
  ESM dist/chunk-GNER6MCO.mjs 7.37 KB
135
135
  ESM dist/chunk-GT3RU6GA.mjs 3.09 KB
@@ -152,11 +152,11 @@ $ tsup
152
152
  ESM dist/chunk-NCUH54IZ.mjs 6.31 KB
153
153
  ESM dist/chunk-H6NQTIF4.mjs 3.28 KB
154
154
  ESM dist/chunk-WL6WVV47.mjs 2.16 KB
155
- ESM dist/lib/theme-provider.mjs 237.00 B
156
155
  ESM dist/chunk-BD3DWDT4.mjs 6.30 KB
156
+ ESM dist/lib/theme-provider.mjs 237.00 B
157
157
  ESM dist/lib/typography.mjs 569.00 B
158
- ESM dist/lib/utils.mjs 125.00 B
159
158
  ESM dist/chunk-6AJUS7VX.mjs 3.73 KB
159
+ ESM dist/lib/utils.mjs 125.00 B
160
160
  ESM dist/chunk-FFXTQTB4.mjs 2.13 KB
161
161
  ESM dist/chunk-BFB3UH7V.mjs 3.61 KB
162
162
  ESM dist/chunk-C6SWS7OW.mjs 3.07 KB
@@ -169,35 +169,34 @@ $ tsup
169
169
  ESM dist/chunk-WDTXHLYM.mjs 3.55 KB
170
170
  ESM dist/chunk-S4CTM3UE.mjs 2.25 KB
171
171
  ESM dist/chunk-UNACI2YK.mjs 2.53 KB
172
- ESM dist/chunk-5FHBC6DY.mjs 2.10 KB
173
172
  ESM dist/chunk-MN5NYQCL.mjs 931.00 B
174
- ESM dist/chunk-NOOEKOWY.mjs 3.63 KB
173
+ ESM dist/chunk-5FHBC6DY.mjs 2.10 KB
175
174
  ESM dist/chunk-R4HCRDU5.mjs 1.56 KB
176
- ESM dist/chunk-AFML43VJ.mjs 988.00 B
175
+ ESM dist/chunk-NOOEKOWY.mjs 3.63 KB
177
176
  ESM dist/components/ui/top-three-product.mjs 5.06 KB
178
177
  ESM dist/chunk-WNQUEZJF.mjs 1.85 KB
179
- ESM dist/components/ui/transactions-summary-block.mjs 1.11 KB
178
+ ESM dist/chunk-AFML43VJ.mjs 988.00 B
180
179
  ESM dist/components/ui/two-fa-setup-form.mjs 440.00 B
181
180
  ESM dist/components/ui/upload-card.mjs 196.00 B
182
181
  ESM dist/components/ui/video-background.mjs 162.00 B
183
182
  ESM dist/components/ui/submission-confirmation-card.mjs 1.96 KB
184
- ESM dist/components/ui/switch.mjs 172.00 B
185
183
  ESM dist/components/ui/table.mjs 336.00 B
186
- ESM dist/components/ui/tabs.mjs 264.00 B
184
+ ESM dist/components/ui/switch.mjs 172.00 B
187
185
  ESM dist/components/ui/textarea.mjs 148.00 B
186
+ ESM dist/components/ui/tabs.mjs 264.00 B
188
187
  ESM dist/components/ui/toggle-group.mjs 227.00 B
189
188
  ESM dist/components/ui/toggle.mjs 180.00 B
190
- ESM dist/components/ui/tooltip.mjs 326.00 B
191
189
  ESM dist/components/ui/signup-form-primitives.mjs 637.00 B
190
+ ESM dist/components/ui/tooltip.mjs 326.00 B
192
191
  ESM dist/components/ui/signup-shell.mjs 263.00 B
193
192
  ESM dist/components/ui/skeleton.mjs 148.00 B
194
193
  ESM dist/components/ui/slider.mjs 144.00 B
195
- ESM dist/components/ui/spinner.mjs 184.00 B
196
194
  ESM dist/components/ui/sonner.mjs 111.00 B
195
+ ESM dist/components/ui/spinner.mjs 184.00 B
197
196
  ESM dist/components/ui/stage-timeline.mjs 438.00 B
198
197
  ESM dist/components/ui/stepper.mjs 276.00 B
199
- ESM dist/components/ui/scenario-item.mjs 261.00 B
200
198
  ESM dist/components/ui/scenario-drawer.mjs 9.64 KB
199
+ ESM dist/components/ui/scenario-item.mjs 261.00 B
201
200
  ESM dist/components/ui/scenario-list.mjs 3.24 KB
202
201
  ESM dist/components/ui/select.mjs 538.00 B
203
202
  ESM dist/components/ui/separator.mjs 150.00 B
@@ -229,8 +228,8 @@ $ tsup
229
228
  ESM dist/components/ui/password-strength-tooltip.mjs 283.00 B
230
229
  ESM dist/components/ui/pipeline-alerts.mjs 160.00 B
231
230
  ESM dist/components/ui/loan-financials.mjs 2.21 KB
232
- ESM dist/components/ui/loan-option-card.mjs 1.21 KB
233
231
  ESM dist/components/ui/loan-option-group.mjs 232.00 B
232
+ ESM dist/components/ui/loan-option-card.mjs 1.21 KB
234
233
  ESM dist/components/ui/loan-steps.mjs 15.27 KB
235
234
  ESM dist/components/ui/loan-wizard-shell.mjs 267.00 B
236
235
  ESM dist/components/ui/money-input-with-slider.mjs 242.00 B
@@ -252,7 +251,6 @@ $ tsup
252
251
  ESM dist/components/ui/input.mjs 142.00 B
253
252
  ESM dist/components/ui/interest-rate-input.mjs 2.26 KB
254
253
  ESM dist/components/ui/interest-rate-section.mjs 3.58 KB
255
- ESM dist/components/ui/financial-cards.mjs 581.00 B
256
254
  ESM dist/components/ui/financial-drawers.mjs 471.00 B
257
255
  ESM dist/components/ui/financial-primitives.mjs 508.00 B
258
256
  ESM dist/components/ui/financial-sections.mjs 807.00 B
@@ -282,9 +280,9 @@ $ tsup
282
280
  ESM dist/components/ui/create-contact-modal.mjs 623.00 B
283
281
  ESM dist/components/ui/csv-import-modal.mjs 370.00 B
284
282
  ESM dist/components/ui/currency-input.mjs 333.00 B
283
+ ESM dist/components/ui/dashboard-expense-categories.mjs 6.88 KB
285
284
  ESM dist/components/ui/dashboard-transactions-table.mjs 5.92 KB
286
285
  ESM dist/components/ui/card.mjs 318.00 B
287
- ESM dist/components/ui/dashboard-expense-categories.mjs 6.88 KB
288
286
  ESM dist/components/ui/cash-balance-line-chart.mjs 487.00 B
289
287
  ESM dist/components/ui/cashflow-bar-chart.mjs 479.00 B
290
288
  ESM dist/components/ui/category-edit-dialog.mjs 448.00 B
@@ -299,95 +297,98 @@ $ tsup
299
297
  ESM dist/components/ui/button.mjs 215.00 B
300
298
  ESM dist/components/ui/calculator-input-item.mjs 170.00 B
301
299
  ESM dist/components/ui/calculator-section.mjs 6.97 KB
300
+ ESM dist/components/ui/calendar.mjs 295.00 B
302
301
  ESM dist/components/ui/backoffice-contact-history-chart.mjs 505.00 B
303
- ESM dist/components/ui/backoffice-contact-matching-chart.mjs 577.00 B
304
- ESM dist/components/ui/badge.mjs 211.00 B
305
302
  ESM dist/components/ui/backoffice-signup-steps.mjs 954.00 B
303
+ ESM dist/components/ui/badge.mjs 211.00 B
306
304
  ESM dist/components/ui/bank-statement-document-table.mjs 324.00 B
307
305
  ESM dist/components/ui/bank-statement-generate-dialog.mjs 851.00 B
308
306
  ESM dist/components/ui/bank-statement-pdf-viewer.mjs 386.00 B
307
+ ESM dist/components/ui/backoffice-contact-matching-chart.mjs 577.00 B
308
+ ESM dist/components/ui/banking-accounts-connect.mjs 4.53 KB
309
309
  ESM dist/components/ui/assets-liabilities-side-card.mjs 4.65 KB
310
310
  ESM dist/components/ui/auth-logo.mjs 148.00 B
311
311
  ESM dist/components/ui/auth-page-layout.mjs 160.00 B
312
- ESM dist/components/ui/banking-accounts-connect.mjs 4.53 KB
313
312
  ESM dist/components/ui/avatar.mjs 310.00 B
314
- ESM dist/components/ui/backoffice-alert-matching-chart.mjs 573.00 B
315
313
  ESM dist/components/ui/backoffice-alert-history-chart.mjs 501.00 B
314
+ ESM dist/components/ui/backoffice-alert-matching-chart.mjs 573.00 B
316
315
  ESM dist/components/ui/backoffice-alerts-chart.mjs 559.00 B
316
+ ESM dist/components/ui/backoffice-connections-chart.mjs 569.00 B
317
317
  ESM dist/components/ui/appointment-book-dialog.mjs 874.00 B
318
318
  ESM dist/components/ui/appointment-calendar-view.mjs 423.00 B
319
- ESM dist/components/ui/appointment-mini-card.mjs 275.00 B
319
+ ESM dist/components/ui/appointment-detail-sheet.mjs 771.00 B
320
320
  ESM dist/components/ui/appointment-gmail-connect.mjs 353.00 B
321
+ ESM dist/components/ui/appointment-mini-card.mjs 275.00 B
321
322
  ESM dist/components/ui/appointment-time-slot-picker.mjs 339.00 B
322
- ESM dist/components/ui/appointment-upcoming-card.mjs 668.00 B
323
- ESM dist/components/ui/asset-accordion.mjs 6.80 KB
323
+ ESM dist/components/ui/transactions-expense-categories-doughnut-chart.mjs 531.00 B
324
+ ESM dist/components/ui/transactions-summary-block.mjs 1.11 KB
325
+ ESM dist/components/ui/financial-cards.mjs 581.00 B
326
+ ESM dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs 521.00 B
324
327
  ESM dist/components/ui/alert.mjs 210.00 B
325
328
  ESM dist/components/ui/applicant-document-checklist.mjs 254.00 B
326
- ESM dist/components/ui/applicant-navigation-bar.mjs 2.41 KB
327
329
  ESM dist/components/ui/applicant-expenses-section.mjs 7.22 KB
330
+ ESM dist/components/ui/applicant-navigation-bar.mjs 2.41 KB
328
331
  ESM dist/components/ui/applicant-switcher.mjs 1.12 KB
329
332
  ESM dist/components/ui/application-mobile-layout.mjs 178.00 B
330
333
  ESM dist/components/ui/appointment-action-dialogs.mjs 732.00 B
331
334
  ESM dist/components/ui/appointment-availability-settings.mjs 815.00 B
332
- ESM dist/components/ui/add-lead-modal.mjs 541.00 B
333
335
  ESM dist/components/ui/add-column-modal.mjs 475.00 B
336
+ ESM dist/components/ui/add-lead-modal.mjs 541.00 B
334
337
  ESM dist/components/ui/advisor-card.mjs 371.00 B
335
338
  ESM dist/components/ui/agent-evaluation-toast.mjs 296.00 B
336
339
  ESM dist/components/ui/ai-assistant-drawer.mjs 446.00 B
337
340
  ESM dist/components/ui/ai-builder.mjs 671.00 B
338
- ESM dist/components/ui/ai-conversations.mjs 1.04 KB
339
341
  ESM dist/components/ui/alert-dialog.mjs 768.00 B
340
- ESM dist/components/ui/calendar.mjs 295.00 B
341
- ESM dist/components/ui/transactions-expense-categories-doughnut-chart.mjs 531.00 B
342
- ESM dist/components/ui/transactions-income-expense-bar-chart.mjs 513.00 B
343
- ESM dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs 521.00 B
344
- ESM dist/components/ui/appointment-detail-sheet.mjs 771.00 B
345
- ESM dist/components/ui/backoffice-connections-chart.mjs 569.00 B
342
+ ESM dist/components/ui/ai-conversations.mjs 1.04 KB
346
343
  ESM dist/components/ui/about-you-form.mjs 11.05 KB
347
- ESM dist/components/ui/account-list-carousel.mjs 275.00 B
348
344
  ESM dist/components/ui/accordion.mjs 264.00 B
345
+ ESM dist/components/ui/account-list-carousel.mjs 275.00 B
346
+ ESM dist/components/ui/appointment-upcoming-card.mjs 668.00 B
347
+ ESM dist/components/ui/asset-accordion.mjs 6.80 KB
348
+ ESM dist/components/ui/transactions-income-expense-bar-chart.mjs 513.00 B
349
349
  ESM dist/components/ui/contact-alert-dialog/index.mjs 925.00 B
350
- ESM ⚡️ Build success in 741ms
350
+ ESM ⚡️ Build success in 739ms
351
351
  CJS dist/lib/theme-provider.js 6.71 KB
352
352
  CJS dist/lib/typography.js 5.74 KB
353
353
  CJS dist/lib/utils.js 2.02 KB
354
- CJS dist/lib/colors.js 3.38 KB
355
354
  CJS dist/components/ui/about-you-form.js 41.31 KB
356
355
  CJS dist/components/ui/accordion.js 5.75 KB
357
356
  CJS dist/components/ui/account-list-carousel.js 11.56 KB
358
357
  CJS dist/components/ui/add-column-modal.js 33.45 KB
359
358
  CJS dist/components/ui/add-lead-modal.js 39.54 KB
360
359
  CJS dist/components/ui/advisor-card.js 21.38 KB
361
- CJS dist/components/ui/ai-assistant-drawer.js 28.66 KB
362
360
  CJS dist/components/ui/agent-evaluation-toast.js 11.16 KB
361
+ CJS dist/components/ui/ai-assistant-drawer.js 28.66 KB
363
362
  CJS dist/components/ui/ai-builder.js 40.02 KB
363
+ CJS dist/lib/colors.js 3.38 KB
364
364
  CJS dist/components/ui/ai-conversations.js 84.12 KB
365
365
  CJS dist/components/ui/alert-dialog.js 16.03 KB
366
366
  CJS dist/components/ui/alert.js 5.17 KB
367
+ CJS dist/components/ui/applicant-document-checklist.js 13.68 KB
367
368
  CJS dist/components/ui/applicant-expenses-section.js 17.30 KB
369
+ CJS dist/components/ui/applicant-navigation-bar.js 11.35 KB
368
370
  CJS dist/components/ui/applicant-switcher.js 9.80 KB
369
371
  CJS dist/components/ui/application-mobile-layout.js 2.58 KB
370
- CJS dist/components/ui/applicant-document-checklist.js 13.68 KB
371
372
  CJS dist/components/ui/appointment-action-dialogs.js 45.61 KB
372
373
  CJS dist/components/ui/appointment-availability-settings.js 67.50 KB
373
- CJS dist/components/ui/appointment-book-dialog.js 75.40 KB
374
374
  CJS dist/components/ui/appointment-calendar-view.js 33.01 KB
375
+ CJS dist/components/ui/appointment-detail-sheet.js 65.29 KB
375
376
  CJS dist/components/ui/appointment-gmail-connect.js 19.29 KB
376
377
  CJS dist/components/ui/appointment-mini-card.js 12.50 KB
377
378
  CJS dist/components/ui/appointment-time-slot-picker.js 11.35 KB
378
- CJS dist/components/ui/appointment-detail-sheet.js 65.29 KB
379
379
  CJS dist/components/ui/appointment-upcoming-card.js 56.01 KB
380
380
  CJS dist/components/ui/asset-accordion.js 19.18 KB
381
381
  CJS dist/components/ui/assets-liabilities-side-card.js 12.56 KB
382
382
  CJS dist/components/ui/auth-logo.js 3.33 KB
383
- CJS dist/components/ui/avatar.js 6.33 KB
384
383
  CJS dist/components/ui/auth-page-layout.js 3.49 KB
384
+ CJS dist/components/ui/avatar.js 6.33 KB
385
385
  CJS dist/components/ui/backoffice-alert-history-chart.js 21.53 KB
386
386
  CJS dist/components/ui/backoffice-alert-matching-chart.js 27.13 KB
387
387
  CJS dist/components/ui/backoffice-alerts-chart.js 27.04 KB
388
388
  CJS dist/components/ui/backoffice-connections-chart.js 27.69 KB
389
389
  CJS dist/components/ui/backoffice-contact-history-chart.js 23.06 KB
390
390
  CJS dist/components/ui/backoffice-contact-matching-chart.js 27.60 KB
391
+ CJS dist/components/ui/backoffice-signup-steps.js 70.67 KB
391
392
  CJS dist/components/ui/badge.js 7.02 KB
392
393
  CJS dist/components/ui/bank-statement-document-table.js 19.19 KB
393
394
  CJS dist/components/ui/bank-statement-generate-dialog.js 59.60 KB
@@ -396,104 +397,106 @@ $ tsup
396
397
  CJS dist/components/ui/borrowing-capacity-atoms.js 14.71 KB
397
398
  CJS dist/components/ui/borrowing-capacity-card.js 31.33 KB
398
399
  CJS dist/components/ui/borrowing-capacity-line-chart.js 23.32 KB
400
+ CJS dist/components/ui/broker-info-panel.js 10.73 KB
399
401
  CJS dist/components/ui/button.js 8.76 KB
400
402
  CJS dist/components/ui/calculator-input-item.js 3.20 KB
401
403
  CJS dist/components/ui/calculator-section.js 28.15 KB
402
- CJS dist/components/ui/broker-info-panel.js 10.73 KB
403
404
  CJS dist/components/ui/calendar.js 16.87 KB
404
405
  CJS dist/components/ui/card.js 5.54 KB
405
406
  CJS dist/components/ui/cash-balance-line-chart.js 22.28 KB
406
407
  CJS dist/components/ui/cashflow-bar-chart.js 22.72 KB
407
408
  CJS dist/components/ui/chat-widget-primitives.js 21.42 KB
408
- CJS dist/components/ui/category-edit-dialog.js 28.47 KB
409
409
  CJS dist/components/ui/chat-widget.js 47.63 KB
410
410
  CJS dist/components/ui/checkbox.js 7.11 KB
411
- CJS dist/components/ui/chip.js 11.84 KB
412
411
  CJS dist/components/ui/color-picker.js 19.32 KB
413
412
  CJS dist/components/ui/combobox.js 10.71 KB
413
+ CJS dist/components/ui/chip.js 11.84 KB
414
414
  CJS dist/components/ui/connect-bank-step.js 20.49 KB
415
+ CJS dist/components/ui/category-edit-dialog.js 28.47 KB
415
416
  CJS dist/components/ui/create-contact-modal.js 38.23 KB
416
- CJS dist/components/ui/csv-import-modal.js 20.55 KB
417
+ CJS dist/components/ui/csv-import-modal.js 20.62 KB
417
418
  CJS dist/components/ui/currency-input.js 16.27 KB
418
419
  CJS dist/components/ui/dashboard-expense-categories.js 13.22 KB
419
420
  CJS dist/components/ui/dashboard-transactions-table.js 41.10 KB
420
- CJS dist/components/ui/data-table.js 41.34 KB
421
421
  CJS dist/components/ui/debt-accordion.js 19.84 KB
422
422
  CJS dist/components/ui/date-picker.js 23.55 KB
423
423
  CJS dist/components/ui/delete-contact-component.js 17.52 KB
424
- CJS dist/components/ui/document-checklist-template.js 25.96 KB
424
+ CJS dist/components/ui/data-table.js 41.34 KB
425
+ CJS dist/components/ui/dialog.js 15.85 KB
425
426
  CJS dist/components/ui/drawer.js 8.49 KB
426
- CJS dist/components/ui/dynamic-tabs.js 10.53 KB
427
427
  CJS dist/components/ui/dropdown-menu.js 13.57 KB
428
- CJS dist/components/ui/editable-money-item.js 11.37 KB
428
+ CJS dist/components/ui/dynamic-tabs.js 10.53 KB
429
+ CJS dist/components/ui/document-checklist-template.js 25.96 KB
429
430
  CJS dist/components/ui/empty.js 5.93 KB
430
431
  CJS dist/components/ui/expense-bar-chart.js 22.36 KB
431
432
  CJS dist/components/ui/expense-detail-item.js 19.01 KB
432
433
  CJS dist/components/ui/expense-work-details.js 46.89 KB
433
434
  CJS dist/components/ui/field.js 11.80 KB
434
- CJS dist/components/ui/file-preview-dialog.js 41.88 KB
435
+ CJS dist/components/ui/editable-money-item.js 11.37 KB
436
+ CJS dist/components/ui/file-preview-dialog.js 42.01 KB
435
437
  CJS dist/components/ui/financial-cards.js 50.65 KB
436
- CJS dist/components/ui/financial-drawers.js 25.49 KB
437
438
  CJS dist/components/ui/financial-primitives.js 8.00 KB
438
- CJS dist/components/ui/financial-sections.js 56.09 KB
439
439
  CJS dist/components/ui/form-primitives.js 23.00 KB
440
440
  CJS dist/components/ui/frontend-signup-steps.js 46.80 KB
441
441
  CJS dist/components/ui/income-bar-chart.js 22.32 KB
442
442
  CJS dist/components/ui/income-sources-card.js 9.81 KB
443
443
  CJS dist/components/ui/income-summary-component.js 14.75 KB
444
- CJS dist/components/ui/dialog.js 15.85 KB
444
+ CJS dist/components/ui/financial-drawers.js 25.49 KB
445
+ CJS dist/components/ui/financial-sections.js 56.09 KB
445
446
  CJS dist/components/ui/income-work-details.js 58.65 KB
446
- CJS dist/components/ui/input-group.js 16.63 KB
447
+ CJS dist/components/ui/incoming-outgoings-card.js 7.52 KB
448
+ CJS dist/components/ui/input-otp.js 6.49 KB
447
449
  CJS dist/components/ui/input.js 3.88 KB
448
450
  CJS dist/components/ui/interest-rate-input.js 16.38 KB
449
451
  CJS dist/components/ui/interest-rate-section.js 13.80 KB
450
452
  CJS dist/components/ui/interest-rate-used.js 6.83 KB
451
- CJS dist/components/ui/input-otp.js 6.49 KB
452
- CJS dist/components/ui/incoming-outgoings-card.js 7.52 KB
453
+ CJS dist/components/ui/kanban-column.js 66.91 KB
453
454
  CJS dist/components/ui/label.js 3.52 KB
454
455
  CJS dist/components/ui/loan-applicant-information.js 13.40 KB
455
456
  CJS dist/components/ui/loan-applicant-invite.js 12.23 KB
456
457
  CJS dist/components/ui/loan-application-badge.js 8.20 KB
457
- CJS dist/components/ui/loan-entry-shell.js 3.66 KB
458
458
  CJS dist/components/ui/loan-application-cards.js 14.53 KB
459
+ CJS dist/components/ui/loan-entry-shell.js 3.66 KB
459
460
  CJS dist/components/ui/loan-financials.js 15.65 KB
460
461
  CJS dist/components/ui/loan-option-card.js 3.10 KB
461
462
  CJS dist/components/ui/loan-option-group.js 9.49 KB
462
- CJS dist/components/ui/loan-wizard-shell.js 18.81 KB
463
463
  CJS dist/components/ui/loan-steps.js 39.22 KB
464
+ CJS dist/components/ui/loan-wizard-shell.js 18.81 KB
464
465
  CJS dist/components/ui/money-input-with-slider.js 6.93 KB
465
466
  CJS dist/components/ui/money-item-with-color-indicator.js 11.75 KB
466
467
  CJS dist/components/ui/onboarding-layout.js 17.42 KB
467
468
  CJS dist/components/ui/opportunity-card.js 57.32 KB
468
- CJS dist/components/ui/kanban-column.js 66.91 KB
469
469
  CJS dist/components/ui/opportunity-edit-modals.js 144.61 KB
470
470
  CJS dist/components/ui/page-header.js 2.79 KB
471
- CJS dist/components/ui/password-strength-tooltip.js 7.05 KB
472
- CJS dist/components/ui/pipeline-alerts.js 3.53 KB
473
471
  CJS dist/components/ui/page-top-bar.js 2.60 KB
474
472
  CJS dist/components/ui/pagination.js 23.58 KB
473
+ CJS dist/components/ui/password-strength-tooltip.js 7.05 KB
474
+ CJS dist/components/ui/pipeline-alerts.js 3.53 KB
475
475
  CJS dist/components/ui/opportunity-summary-tab.js 221.15 KB
476
476
  CJS dist/components/ui/pipeline-chart.js 7.67 KB
477
477
  CJS dist/components/ui/pipeline-board.js 76.96 KB
478
478
  CJS dist/components/ui/pipeline-dialogs.js 47.48 KB
479
+ CJS dist/components/ui/popover.js 6.49 KB
479
480
  CJS dist/components/ui/progress.js 3.94 KB
481
+ CJS dist/components/ui/property-asset-card.js 17.82 KB
480
482
  CJS dist/components/ui/property-cashflow-doughnut-chart.js 19.37 KB
481
483
  CJS dist/components/ui/property-debt-equity-doughnut-chart.js 19.25 KB
482
484
  CJS dist/components/ui/property-list-carousel.js 11.25 KB
483
485
  CJS dist/components/ui/property-mobile-estimate-line-chart.js 23.44 KB
484
486
  CJS dist/components/ui/pipeline-primitives.js 13.92 KB
485
- CJS dist/components/ui/popover.js 6.49 KB
486
- CJS dist/components/ui/property-report-dialog.js 43.86 KB
487
487
  CJS dist/components/ui/radio-group.js 7.16 KB
488
+ CJS dist/components/ui/property-report-dialog.js 43.86 KB
488
489
  CJS dist/components/ui/resource-center.js 32.95 KB
489
490
  CJS dist/components/ui/review-alerts-dialog.js 21.75 KB
490
491
  CJS dist/components/ui/savings-goal-modal.js 43.07 KB
491
492
  CJS dist/components/ui/scenario-drawer.js 29.79 KB
493
+ CJS dist/components/ui/scenario-item.js 9.28 KB
492
494
  CJS dist/components/ui/scenario-list.js 19.00 KB
493
495
  CJS dist/components/ui/select.js 10.94 KB
494
496
  CJS dist/components/ui/separator.js 3.58 KB
495
- CJS dist/components/ui/scenario-item.js 9.28 KB
496
497
  CJS dist/components/ui/share-details-dialog.js 24.72 KB
498
+ CJS dist/components/ui/sheet.js 8.64 KB
499
+ CJS dist/components/ui/sidebar-nav.js 30.71 KB
497
500
  CJS dist/components/ui/signup-form-primitives.js 29.72 KB
498
501
  CJS dist/components/ui/signup-shell.js 13.53 KB
499
502
  CJS dist/components/ui/skeleton.js 3.24 KB
@@ -519,11 +522,8 @@ $ tsup
519
522
  CJS dist/components/ui/upload-card.js 5.43 KB
520
523
  CJS dist/components/ui/video-background.js 3.25 KB
521
524
  CJS dist/components/ui/contact-alert-dialog/index.js 67.04 KB
522
- CJS dist/components/ui/applicant-navigation-bar.js 11.35 KB
523
- CJS dist/components/ui/sheet.js 8.64 KB
525
+ CJS dist/components/ui/appointment-book-dialog.js 75.40 KB
526
+ CJS dist/components/ui/input-group.js 16.63 KB
524
527
  CJS dist/index.js 1.08 MB
525
- CJS dist/components/ui/property-asset-card.js 17.82 KB
526
- CJS dist/components/ui/backoffice-signup-steps.js 70.67 KB
527
- CJS dist/components/ui/sidebar-nav.js 30.71 KB
528
- CJS ⚡️ Build success in 814ms
529
- Done in 4.09s.
528
+ CJS ⚡️ Build success in 794ms
529
+ Done in 3.93s.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @wealthx/shadcn
2
2
 
3
+ ## 1.5.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 16d9edb: Allow custom description and staff select
8
+
3
9
  ## 1.5.3
4
10
 
5
11
  ### Patch Changes
@@ -130,6 +130,7 @@ function FilePreviewDialog({
130
130
  staffOptions,
131
131
  selectedStaffId,
132
132
  onStaffSelect,
133
+ staffSelector,
133
134
  className
134
135
  }) {
135
136
  const [page, setPage] = React.useState(0);
@@ -140,7 +141,8 @@ function FilePreviewDialog({
140
141
  const pagedRows = rows.slice(page * pageSize, (page + 1) * pageSize);
141
142
  const pageStart = page * pageSize;
142
143
  const isImporting = state === "importing";
143
- const hasStaffSelector = !!staffOptions && staffOptions.length > 0;
144
+ const hasBuiltInStaffSelector = !!staffOptions && staffOptions.length > 0;
145
+ const hasStaffSelector = !!staffSelector || hasBuiltInStaffSelector;
144
146
  const canImport = state === "preview" && rows.length > 0 && (!hasStaffSelector || !!selectedStaffId);
145
147
  const successCount = rows.filter((r) => r._status === "success").length;
146
148
  const failedCount = rows.filter((r) => r._status === "failed").length;
@@ -177,7 +179,7 @@ function FilePreviewDialog({
177
179
  }
178
180
  ),
179
181
  state === "preview" && /* @__PURE__ */ jsxs(Fragment, { children: [
180
- hasStaffSelector && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
182
+ staffSelector ? staffSelector : hasBuiltInStaffSelector && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
181
183
  /* @__PURE__ */ jsxs("label", { className: "text-label-medium text-foreground", children: [
182
184
  "Assign staff",
183
185
  " ",
@@ -28,6 +28,7 @@ function CsvImportModal({
28
28
  onFileClear,
29
29
  onNext,
30
30
  onDownloadTemplate,
31
+ uploadDescription,
31
32
  isLoading = false,
32
33
  className
33
34
  }) {
@@ -61,7 +62,7 @@ function CsvImportModal({
61
62
  {
62
63
  size: "lg",
63
64
  label: "Drag & drop or click to upload",
64
- description: "Supports .csv files only. Max 10 MB.",
65
+ description: uploadDescription != null ? uploadDescription : "Supports .csv files only. Max 10 MB.",
65
66
  accept: ".csv",
66
67
  onFileChange: (file) => file && (onFileSelect == null ? void 0 : onFileSelect(file))
67
68
  }
@@ -502,6 +502,7 @@ function CsvImportModal({
502
502
  onFileClear,
503
503
  onNext,
504
504
  onDownloadTemplate,
505
+ uploadDescription,
505
506
  isLoading = false,
506
507
  className
507
508
  }) {
@@ -535,7 +536,7 @@ function CsvImportModal({
535
536
  {
536
537
  size: "lg",
537
538
  label: "Drag & drop or click to upload",
538
- description: "Supports .csv files only. Max 10 MB.",
539
+ description: uploadDescription != null ? uploadDescription : "Supports .csv files only. Max 10 MB.",
539
540
  accept: ".csv",
540
541
  onFileChange: (file) => file && (onFileSelect == null ? void 0 : onFileSelect(file))
541
542
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CsvImportModal
3
- } from "../../chunk-CUSHAIUL.mjs";
3
+ } from "../../chunk-QBPNYXTI.mjs";
4
4
  import "../../chunk-I4KVSZCH.mjs";
5
5
  import "../../chunk-NCUH54IZ.mjs";
6
6
  import "../../chunk-WDTXHLYM.mjs";
@@ -840,6 +840,7 @@ function FilePreviewDialog({
840
840
  staffOptions,
841
841
  selectedStaffId,
842
842
  onStaffSelect,
843
+ staffSelector,
843
844
  className
844
845
  }) {
845
846
  const [page, setPage] = React3.useState(0);
@@ -850,7 +851,8 @@ function FilePreviewDialog({
850
851
  const pagedRows = rows.slice(page * pageSize, (page + 1) * pageSize);
851
852
  const pageStart = page * pageSize;
852
853
  const isImporting = state === "importing";
853
- const hasStaffSelector = !!staffOptions && staffOptions.length > 0;
854
+ const hasBuiltInStaffSelector = !!staffOptions && staffOptions.length > 0;
855
+ const hasStaffSelector = !!staffSelector || hasBuiltInStaffSelector;
854
856
  const canImport = state === "preview" && rows.length > 0 && (!hasStaffSelector || !!selectedStaffId);
855
857
  const successCount = rows.filter((r) => r._status === "success").length;
856
858
  const failedCount = rows.filter((r) => r._status === "failed").length;
@@ -887,7 +889,7 @@ function FilePreviewDialog({
887
889
  }
888
890
  ),
889
891
  state === "preview" && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
890
- hasStaffSelector && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col gap-1", children: [
892
+ staffSelector ? staffSelector : hasBuiltInStaffSelector && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col gap-1", children: [
891
893
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("label", { className: "text-label-medium text-foreground", children: [
892
894
  "Assign staff",
893
895
  " ",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FilePreviewDialog
3
- } from "../../chunk-PX4M67XQ.mjs";
3
+ } from "../../chunk-HXU5JGLQ.mjs";
4
4
  import "../../chunk-JPGL36WQ.mjs";
5
5
  import "../../chunk-GTAVSBDO.mjs";
6
6
  import "../../chunk-GT3RU6GA.mjs";
package/dist/index.js CHANGED
@@ -13538,6 +13538,7 @@ function CsvImportModal({
13538
13538
  onFileClear,
13539
13539
  onNext,
13540
13540
  onDownloadTemplate,
13541
+ uploadDescription,
13541
13542
  isLoading = false,
13542
13543
  className
13543
13544
  }) {
@@ -13571,7 +13572,7 @@ function CsvImportModal({
13571
13572
  {
13572
13573
  size: "lg",
13573
13574
  label: "Drag & drop or click to upload",
13574
- description: "Supports .csv files only. Max 10 MB.",
13575
+ description: uploadDescription != null ? uploadDescription : "Supports .csv files only. Max 10 MB.",
13575
13576
  accept: ".csv",
13576
13577
  onFileChange: (file) => file && (onFileSelect == null ? void 0 : onFileSelect(file))
13577
13578
  }
@@ -15235,6 +15236,7 @@ function FilePreviewDialog({
15235
15236
  staffOptions,
15236
15237
  selectedStaffId,
15237
15238
  onStaffSelect,
15239
+ staffSelector,
15238
15240
  className
15239
15241
  }) {
15240
15242
  const [page, setPage] = React35.useState(0);
@@ -15245,7 +15247,8 @@ function FilePreviewDialog({
15245
15247
  const pagedRows = rows.slice(page * pageSize, (page + 1) * pageSize);
15246
15248
  const pageStart = page * pageSize;
15247
15249
  const isImporting = state === "importing";
15248
- const hasStaffSelector = !!staffOptions && staffOptions.length > 0;
15250
+ const hasBuiltInStaffSelector = !!staffOptions && staffOptions.length > 0;
15251
+ const hasStaffSelector = !!staffSelector || hasBuiltInStaffSelector;
15249
15252
  const canImport = state === "preview" && rows.length > 0 && (!hasStaffSelector || !!selectedStaffId);
15250
15253
  const successCount = rows.filter((r) => r._status === "success").length;
15251
15254
  const failedCount = rows.filter((r) => r._status === "failed").length;
@@ -15282,7 +15285,7 @@ function FilePreviewDialog({
15282
15285
  }
15283
15286
  ),
15284
15287
  state === "preview" && /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(import_jsx_runtime80.Fragment, { children: [
15285
- hasStaffSelector && /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: "flex flex-col gap-1", children: [
15288
+ staffSelector ? staffSelector : hasBuiltInStaffSelector && /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: "flex flex-col gap-1", children: [
15286
15289
  /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("label", { className: "text-label-medium text-foreground", children: [
15287
15290
  "Assign staff",
15288
15291
  " ",
package/dist/index.mjs CHANGED
@@ -181,7 +181,7 @@ import {
181
181
  } from "./chunk-KLJLDNCA.mjs";
182
182
  import {
183
183
  FilePreviewDialog
184
- } from "./chunk-PX4M67XQ.mjs";
184
+ } from "./chunk-HXU5JGLQ.mjs";
185
185
  import {
186
186
  Progress
187
187
  } from "./chunk-JPGL36WQ.mjs";
@@ -229,7 +229,7 @@ import {
229
229
  } from "./chunk-2A53WPEC.mjs";
230
230
  import {
231
231
  CsvImportModal
232
- } from "./chunk-CUSHAIUL.mjs";
232
+ } from "./chunk-QBPNYXTI.mjs";
233
233
  import {
234
234
  InputGroup,
235
235
  InputGroupAddon,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wealthx/shadcn",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./src/index.ts",
@@ -29,6 +29,8 @@ export interface CsvImportModalProps {
29
29
  onNext: () => void;
30
30
  /** Called when the user clicks the CSV template download link. */
31
31
  onDownloadTemplate?: () => void;
32
+ /** Override the upload zone description (e.g. for a stricter file-size cap). */
33
+ uploadDescription?: string;
32
34
  isLoading?: boolean;
33
35
  className?: string;
34
36
  }
@@ -55,6 +57,7 @@ export function CsvImportModal({
55
57
  onFileClear,
56
58
  onNext,
57
59
  onDownloadTemplate,
60
+ uploadDescription,
58
61
  isLoading = false,
59
62
  className,
60
63
  }: CsvImportModalProps) {
@@ -93,7 +96,7 @@ export function CsvImportModal({
93
96
  <UploadCard
94
97
  size="lg"
95
98
  label="Drag & drop or click to upload"
96
- description="Supports .csv files only. Max 10 MB."
99
+ description={uploadDescription ?? "Supports .csv files only. Max 10 MB."}
97
100
  accept=".csv"
98
101
  onFileChange={(file) => file && onFileSelect?.(file)}
99
102
  />
@@ -99,14 +99,21 @@ export interface FilePreviewDialogProps {
99
99
  pageSize?: number;
100
100
  /**
101
101
  * List of staff members available for assignment.
102
- * When provided, a staff selector is rendered above the table.
102
+ * When provided, a basic staff selector is rendered above the table.
103
103
  * Import is blocked until a staff member is selected.
104
+ * Ignored when `staffSelector` is provided.
104
105
  */
105
106
  staffOptions?: StaffOption[];
106
107
  /** Currently selected staff ID. */
107
108
  selectedStaffId?: string;
108
109
  /** Called when the user picks a staff member. */
109
110
  onStaffSelect?: (staffId: string) => void;
111
+ /**
112
+ * Custom staff-selector block rendered above the table. When provided, replaces
113
+ * the entire built-in "Assign staff" block (label + select + helper text).
114
+ * The caller still drives `selectedStaffId` so the Import button gating works.
115
+ */
116
+ staffSelector?: React.ReactNode;
110
117
  className?: string;
111
118
  }
112
119
 
@@ -250,6 +257,7 @@ export function FilePreviewDialog({
250
257
  staffOptions,
251
258
  selectedStaffId,
252
259
  onStaffSelect,
260
+ staffSelector,
253
261
  className,
254
262
  }: FilePreviewDialogProps) {
255
263
  const [page, setPage] = React.useState(0);
@@ -264,7 +272,8 @@ export function FilePreviewDialog({
264
272
  const pageStart = page * pageSize; // used for row index display
265
273
 
266
274
  const isImporting = state === "importing";
267
- const hasStaffSelector = !!staffOptions && staffOptions.length > 0;
275
+ const hasBuiltInStaffSelector = !!staffOptions && staffOptions.length > 0;
276
+ const hasStaffSelector = !!staffSelector || hasBuiltInStaffSelector;
268
277
  // Import is blocked when staff selection is required but none is chosen yet
269
278
  const canImport =
270
279
  state === "preview" &&
@@ -315,36 +324,38 @@ export function FilePreviewDialog({
315
324
 
316
325
  {state === "preview" && (
317
326
  <>
318
- {/* Staff assignment — shown when caller provides staffOptions */}
319
- {hasStaffSelector && (
320
- <div className="flex flex-col gap-1">
321
- <label className="text-label-medium text-foreground">
322
- Assign staff{" "}
323
- <span className="text-destructive" aria-hidden="true">
324
- *
325
- </span>
326
- </label>
327
- <Select
328
- value={selectedStaffId ?? ""}
329
- onValueChange={(id) => onStaffSelect?.(id)}
330
- >
331
- <SelectTrigger className="w-full">
332
- <SelectValue placeholder="Select a staff member" />
333
- </SelectTrigger>
334
- <SelectContent>
335
- {staffOptions!.map((s) => (
336
- <SelectItem key={s.id} value={s.id}>
337
- {s.name}
338
- </SelectItem>
339
- ))}
340
- </SelectContent>
341
- </Select>
342
- <p className="text-xs text-muted-foreground">
343
- All contacts in this import will be assigned to the selected
344
- staff member.
345
- </p>
346
- </div>
347
- )}
327
+ {/* Staff assignment — custom slot wins; otherwise fall back to built-in select */}
328
+ {staffSelector
329
+ ? staffSelector
330
+ : hasBuiltInStaffSelector && (
331
+ <div className="flex flex-col gap-1">
332
+ <label className="text-label-medium text-foreground">
333
+ Assign staff{" "}
334
+ <span className="text-destructive" aria-hidden="true">
335
+ *
336
+ </span>
337
+ </label>
338
+ <Select
339
+ value={selectedStaffId ?? ""}
340
+ onValueChange={(id) => onStaffSelect?.(id)}
341
+ >
342
+ <SelectTrigger className="w-full">
343
+ <SelectValue placeholder="Select a staff member" />
344
+ </SelectTrigger>
345
+ <SelectContent>
346
+ {staffOptions!.map((s) => (
347
+ <SelectItem key={s.id} value={s.id}>
348
+ {s.name}
349
+ </SelectItem>
350
+ ))}
351
+ </SelectContent>
352
+ </Select>
353
+ <p className="text-xs text-muted-foreground">
354
+ All contacts in this import will be assigned to the
355
+ selected staff member.
356
+ </p>
357
+ </div>
358
+ )}
348
359
 
349
360
  <div className="max-h-[360px] overflow-auto border border-border">
350
361
  <Table>