@wealthx/shadcn 1.5.2 → 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 341ms
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
@@ -52,10 +52,12 @@ $ tsup
52
52
  ESM dist/chunk-F24U4QQQ.mjs 9.02 KB
53
53
  ESM dist/chunk-EUYPMDQG.mjs 14.85 KB
54
54
  ESM dist/chunk-WUA546RX.mjs 3.96 KB
55
+ ESM dist/chunk-QRVEI6J3.mjs 5.08 KB
56
+ ESM dist/chunk-D447W45Z.mjs 4.50 KB
55
57
  ESM dist/chunk-VFH632TB.mjs 7.43 KB
56
58
  ESM dist/chunk-BDESHD25.mjs 5.28 KB
59
+ ESM dist/chunk-AUEUTZIC.mjs 36.68 KB
57
60
  ESM dist/chunk-Q5SGEIJV.mjs 78.04 KB
58
- ESM dist/chunk-NT4FX27K.mjs 866.00 B
59
61
  ESM dist/chunk-NB3ZL36B.mjs 711.00 B
60
62
  ESM dist/chunk-KFH36NKF.mjs 1.52 KB
61
63
  ESM dist/chunk-PUJ42INK.mjs 5.67 KB
@@ -69,32 +71,33 @@ $ tsup
69
71
  ESM dist/chunk-2QNOPXMQ.mjs 11.80 KB
70
72
  ESM dist/chunk-OECGKCVF.mjs 7.46 KB
71
73
  ESM dist/chunk-VLELWBEW.mjs 14.00 KB
72
- ESM dist/chunk-HROG643K.mjs 26.92 KB
73
74
  ESM dist/chunk-DQB4EPIS.mjs 5.13 KB
74
- ESM dist/chunk-A6ER36CW.mjs 15.87 KB
75
+ ESM dist/chunk-HROG643K.mjs 26.92 KB
75
76
  ESM dist/chunk-HK4HUQTV.mjs 2.68 KB
77
+ ESM dist/chunk-A6ER36CW.mjs 15.87 KB
76
78
  ESM dist/chunk-KAD26MCC.mjs 7.33 KB
77
79
  ESM dist/chunk-KLJLDNCA.mjs 7.37 KB
78
- ESM dist/chunk-PX4M67XQ.mjs 12.58 KB
79
80
  ESM dist/chunk-JPGL36WQ.mjs 995.00 B
80
- ESM dist/chunk-TLYSVRSK.mjs 13.49 KB
81
+ ESM dist/chunk-HXU5JGLQ.mjs 12.72 KB
81
82
  ESM dist/chunk-KCKYGQVQ.mjs 2.12 KB
83
+ ESM dist/chunk-TLYSVRSK.mjs 13.49 KB
82
84
  ESM dist/chunk-K7WSRWOU.mjs 7.28 KB
83
85
  ESM dist/chunk-QAX6HCUH.mjs 4.76 KB
84
86
  ESM dist/chunk-OEOOYMC2.mjs 6.85 KB
85
87
  ESM dist/chunk-2A53WPEC.mjs 5.60 KB
86
- ESM dist/chunk-CUSHAIUL.mjs 3.26 KB
87
- ESM dist/chunk-7YI3HEBH.mjs 5.73 KB
88
+ ESM dist/chunk-QBPNYXTI.mjs 3.33 KB
88
89
  ESM dist/chunk-3AREQTZU.mjs 6.99 KB
90
+ ESM dist/chunk-7YI3HEBH.mjs 5.73 KB
89
91
  ESM dist/chunk-I3UDLWQ7.mjs 8.80 KB
90
92
  ESM dist/chunk-3WGFIFP6.mjs 19.59 KB
91
- ESM dist/chunk-BBXSNDS3.mjs 7.55 KB
92
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
93
96
  ESM dist/chunk-HF4FUBCY.mjs 8.41 KB
94
- ESM dist/chunk-XTWAJWCQ.mjs 7.81 KB
95
97
  ESM dist/chunk-E3PQDBYI.mjs 8.57 KB
96
- ESM dist/chunk-K7TWMLLW.mjs 22.25 KB
98
+ ESM dist/chunk-XTWAJWCQ.mjs 7.81 KB
97
99
  ESM dist/chunk-TXUBGKB7.mjs 4.71 KB
100
+ ESM dist/chunk-K7TWMLLW.mjs 22.25 KB
98
101
  ESM dist/chunk-F4O2YPXJ.mjs 1.83 KB
99
102
  ESM dist/chunk-AL6GOL2Y.mjs 6.95 KB
100
103
  ESM dist/chunk-I4KVSZCH.mjs 2.28 KB
@@ -105,16 +108,16 @@ $ tsup
105
108
  ESM dist/chunk-Y2MTAVAK.mjs 1.30 KB
106
109
  ESM dist/chunk-6OSULDEO.mjs 1.47 KB
107
110
  ESM dist/chunk-OYBIUEGE.mjs 6.45 KB
108
- ESM dist/chunk-QRVEI6J3.mjs 5.08 KB
109
- ESM dist/chunk-D447W45Z.mjs 4.50 KB
110
- ESM dist/chunk-CDVG7SFT.mjs 8.14 KB
111
111
  ESM dist/chunk-M4LTX3MH.mjs 8.09 KB
112
+ ESM dist/chunk-CDVG7SFT.mjs 8.14 KB
112
113
  ESM dist/chunk-TOIVHWNC.mjs 8.69 KB
113
114
  ESM dist/chunk-GTAVSBDO.mjs 483.00 B
114
115
  ESM dist/chunk-YEWNFK5S.mjs 4.41 KB
115
116
  ESM dist/chunk-R2ON6CAN.mjs 2.83 KB
116
117
  ESM dist/chunk-46Q4335I.mjs 22.24 KB
117
118
  ESM dist/chunk-JTK6VJXY.mjs 3.88 KB
119
+ ESM dist/chunk-MXP2RX2V.mjs 11.33 KB
120
+ ESM dist/chunk-ISUA7DSB.mjs 2.08 KB
118
121
  ESM dist/chunk-EW72FINW.mjs 14.51 KB
119
122
  ESM dist/chunk-HO6S3ECM.mjs 13.16 KB
120
123
  ESM dist/chunk-ZXEUBBHJ.mjs 5.64 KB
@@ -145,13 +148,14 @@ $ tsup
145
148
  ESM dist/chunk-6SR4K5T5.mjs 2.37 KB
146
149
  ESM dist/chunk-WE4YKBDE.mjs 4.01 KB
147
150
  ESM dist/chunk-2GIYVERS.mjs 840.00 B
148
- ESM dist/chunk-ISUA7DSB.mjs 2.08 KB
149
- ESM dist/chunk-NCUH54IZ.mjs 6.31 KB
150
- ESM dist/chunk-MXP2RX2V.mjs 11.33 KB
151
151
  ESM dist/chunk-BS75ICOO.mjs 1.00 KB
152
+ ESM dist/chunk-NCUH54IZ.mjs 6.31 KB
153
+ ESM dist/chunk-H6NQTIF4.mjs 3.28 KB
154
+ ESM dist/chunk-WL6WVV47.mjs 2.16 KB
155
+ ESM dist/chunk-BD3DWDT4.mjs 6.30 KB
152
156
  ESM dist/lib/theme-provider.mjs 237.00 B
153
157
  ESM dist/lib/typography.mjs 569.00 B
154
- ESM dist/chunk-H6NQTIF4.mjs 3.28 KB
158
+ ESM dist/chunk-6AJUS7VX.mjs 3.73 KB
155
159
  ESM dist/lib/utils.mjs 125.00 B
156
160
  ESM dist/chunk-FFXTQTB4.mjs 2.13 KB
157
161
  ESM dist/chunk-BFB3UH7V.mjs 3.61 KB
@@ -165,29 +169,25 @@ $ tsup
165
169
  ESM dist/chunk-WDTXHLYM.mjs 3.55 KB
166
170
  ESM dist/chunk-S4CTM3UE.mjs 2.25 KB
167
171
  ESM dist/chunk-UNACI2YK.mjs 2.53 KB
168
- ESM dist/chunk-5FHBC6DY.mjs 2.10 KB
169
172
  ESM dist/chunk-MN5NYQCL.mjs 931.00 B
170
- ESM dist/chunk-NOOEKOWY.mjs 3.63 KB
173
+ ESM dist/chunk-5FHBC6DY.mjs 2.10 KB
171
174
  ESM dist/chunk-R4HCRDU5.mjs 1.56 KB
172
- ESM dist/chunk-AFML43VJ.mjs 988.00 B
173
- ESM dist/chunk-WNQUEZJF.mjs 1.85 KB
175
+ ESM dist/chunk-NOOEKOWY.mjs 3.63 KB
174
176
  ESM dist/components/ui/top-three-product.mjs 5.06 KB
175
- ESM dist/chunk-WL6WVV47.mjs 2.16 KB
176
- ESM dist/chunk-AUEUTZIC.mjs 36.68 KB
177
- ESM dist/chunk-BD3DWDT4.mjs 6.30 KB
178
- ESM dist/components/ui/transactions-summary-block.mjs 1.11 KB
177
+ ESM dist/chunk-WNQUEZJF.mjs 1.85 KB
178
+ ESM dist/chunk-AFML43VJ.mjs 988.00 B
179
179
  ESM dist/components/ui/two-fa-setup-form.mjs 440.00 B
180
180
  ESM dist/components/ui/upload-card.mjs 196.00 B
181
181
  ESM dist/components/ui/video-background.mjs 162.00 B
182
182
  ESM dist/components/ui/submission-confirmation-card.mjs 1.96 KB
183
- ESM dist/components/ui/switch.mjs 172.00 B
184
183
  ESM dist/components/ui/table.mjs 336.00 B
185
- ESM dist/components/ui/tabs.mjs 264.00 B
184
+ ESM dist/components/ui/switch.mjs 172.00 B
186
185
  ESM dist/components/ui/textarea.mjs 148.00 B
186
+ ESM dist/components/ui/tabs.mjs 264.00 B
187
187
  ESM dist/components/ui/toggle-group.mjs 227.00 B
188
188
  ESM dist/components/ui/toggle.mjs 180.00 B
189
- ESM dist/components/ui/tooltip.mjs 326.00 B
190
189
  ESM dist/components/ui/signup-form-primitives.mjs 637.00 B
190
+ ESM dist/components/ui/tooltip.mjs 326.00 B
191
191
  ESM dist/components/ui/signup-shell.mjs 263.00 B
192
192
  ESM dist/components/ui/skeleton.mjs 148.00 B
193
193
  ESM dist/components/ui/slider.mjs 144.00 B
@@ -228,16 +228,18 @@ $ tsup
228
228
  ESM dist/components/ui/password-strength-tooltip.mjs 283.00 B
229
229
  ESM dist/components/ui/pipeline-alerts.mjs 160.00 B
230
230
  ESM dist/components/ui/loan-financials.mjs 2.21 KB
231
- ESM dist/components/ui/loan-option-card.mjs 1.21 KB
232
231
  ESM dist/components/ui/loan-option-group.mjs 232.00 B
232
+ ESM dist/components/ui/loan-option-card.mjs 1.21 KB
233
233
  ESM dist/components/ui/loan-steps.mjs 15.27 KB
234
+ ESM dist/components/ui/loan-wizard-shell.mjs 267.00 B
234
235
  ESM dist/components/ui/money-input-with-slider.mjs 242.00 B
235
236
  ESM dist/components/ui/money-item-with-color-indicator.mjs 565.00 B
236
237
  ESM dist/components/ui/onboarding-layout.mjs 269.00 B
237
238
  ESM dist/components/ui/interest-rate-used.mjs 2.02 KB
238
239
  ESM dist/components/ui/kanban-column.mjs 751.00 B
239
- ESM dist/chunk-6AJUS7VX.mjs 3.73 KB
240
+ ESM dist/components/ui/label.mjs 142.00 B
240
241
  ESM dist/components/ui/loan-applicant-information.mjs 1.98 KB
242
+ ESM dist/components/ui/loan-applicant-invite.mjs 2.00 KB
241
243
  ESM dist/components/ui/loan-application-badge.mjs 242.00 B
242
244
  ESM dist/components/ui/loan-application-cards.mjs 4.49 KB
243
245
  ESM dist/components/ui/loan-entry-shell.mjs 160.00 B
@@ -249,7 +251,6 @@ $ tsup
249
251
  ESM dist/components/ui/input.mjs 142.00 B
250
252
  ESM dist/components/ui/interest-rate-input.mjs 2.26 KB
251
253
  ESM dist/components/ui/interest-rate-section.mjs 3.58 KB
252
- ESM dist/components/ui/financial-cards.mjs 581.00 B
253
254
  ESM dist/components/ui/financial-drawers.mjs 471.00 B
254
255
  ESM dist/components/ui/financial-primitives.mjs 508.00 B
255
256
  ESM dist/components/ui/financial-sections.mjs 807.00 B
@@ -266,7 +267,7 @@ $ tsup
266
267
  ESM dist/components/ui/field.mjs 486.00 B
267
268
  ESM dist/components/ui/file-preview-dialog.mjs 551.00 B
268
269
  ESM dist/components/ui/data-table.mjs 757.00 B
269
- ESM dist/components/ui/loan-applicant-invite.mjs 2.00 KB
270
+ ESM dist/components/ui/date-picker.mjs 432.00 B
270
271
  ESM dist/components/ui/debt-accordion.mjs 7.40 KB
271
272
  ESM dist/components/ui/delete-contact-component.mjs 386.00 B
272
273
  ESM dist/components/ui/dialog.mjs 584.00 B
@@ -281,6 +282,7 @@ $ tsup
281
282
  ESM dist/components/ui/currency-input.mjs 333.00 B
282
283
  ESM dist/components/ui/dashboard-expense-categories.mjs 6.88 KB
283
284
  ESM dist/components/ui/dashboard-transactions-table.mjs 5.92 KB
285
+ ESM dist/components/ui/card.mjs 318.00 B
284
286
  ESM dist/components/ui/cash-balance-line-chart.mjs 487.00 B
285
287
  ESM dist/components/ui/cashflow-bar-chart.mjs 479.00 B
286
288
  ESM dist/components/ui/category-edit-dialog.mjs 448.00 B
@@ -288,20 +290,21 @@ $ tsup
288
290
  ESM dist/components/ui/chat-widget.mjs 765.00 B
289
291
  ESM dist/components/ui/checkbox.mjs 180.00 B
290
292
  ESM dist/components/ui/chip.mjs 245.00 B
291
- ESM dist/components/ui/date-picker.mjs 432.00 B
292
- ESM dist/components/ui/label.mjs 142.00 B
293
+ ESM dist/components/ui/borrowing-capacity-atoms.mjs 389.00 B
293
294
  ESM dist/components/ui/borrowing-capacity-card.mjs 3.45 KB
295
+ ESM dist/components/ui/borrowing-capacity-line-chart.mjs 499.00 B
296
+ ESM dist/components/ui/broker-info-panel.mjs 1.87 KB
294
297
  ESM dist/components/ui/button.mjs 215.00 B
295
298
  ESM dist/components/ui/calculator-input-item.mjs 170.00 B
296
299
  ESM dist/components/ui/calculator-section.mjs 6.97 KB
297
300
  ESM dist/components/ui/calendar.mjs 295.00 B
298
301
  ESM dist/components/ui/backoffice-contact-history-chart.mjs 505.00 B
299
- ESM dist/components/ui/backoffice-contact-matching-chart.mjs 577.00 B
300
302
  ESM dist/components/ui/backoffice-signup-steps.mjs 954.00 B
301
303
  ESM dist/components/ui/badge.mjs 211.00 B
302
304
  ESM dist/components/ui/bank-statement-document-table.mjs 324.00 B
303
305
  ESM dist/components/ui/bank-statement-generate-dialog.mjs 851.00 B
304
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
305
308
  ESM dist/components/ui/banking-accounts-connect.mjs 4.53 KB
306
309
  ESM dist/components/ui/assets-liabilities-side-card.mjs 4.65 KB
307
310
  ESM dist/components/ui/auth-logo.mjs 148.00 B
@@ -313,52 +316,51 @@ $ tsup
313
316
  ESM dist/components/ui/backoffice-connections-chart.mjs 569.00 B
314
317
  ESM dist/components/ui/appointment-book-dialog.mjs 874.00 B
315
318
  ESM dist/components/ui/appointment-calendar-view.mjs 423.00 B
319
+ ESM dist/components/ui/appointment-detail-sheet.mjs 771.00 B
316
320
  ESM dist/components/ui/appointment-gmail-connect.mjs 353.00 B
317
321
  ESM dist/components/ui/appointment-mini-card.mjs 275.00 B
318
- ESM dist/components/ui/appointment-detail-sheet.mjs 771.00 B
319
322
  ESM dist/components/ui/appointment-time-slot-picker.mjs 339.00 B
320
- ESM dist/components/ui/appointment-upcoming-card.mjs 668.00 B
321
- 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
322
327
  ESM dist/components/ui/alert.mjs 210.00 B
323
328
  ESM dist/components/ui/applicant-document-checklist.mjs 254.00 B
324
329
  ESM dist/components/ui/applicant-expenses-section.mjs 7.22 KB
325
330
  ESM dist/components/ui/applicant-navigation-bar.mjs 2.41 KB
326
331
  ESM dist/components/ui/applicant-switcher.mjs 1.12 KB
327
- ESM dist/components/ui/loan-wizard-shell.mjs 267.00 B
328
- ESM dist/components/ui/appointment-action-dialogs.mjs 732.00 B
329
332
  ESM dist/components/ui/application-mobile-layout.mjs 178.00 B
330
- ESM dist/components/ui/add-column-modal.mjs 475.00 B
331
- ESM dist/components/ui/advisor-card.mjs 371.00 B
333
+ ESM dist/components/ui/appointment-action-dialogs.mjs 732.00 B
332
334
  ESM dist/components/ui/appointment-availability-settings.mjs 815.00 B
335
+ ESM dist/components/ui/add-column-modal.mjs 475.00 B
333
336
  ESM dist/components/ui/add-lead-modal.mjs 541.00 B
337
+ ESM dist/components/ui/advisor-card.mjs 371.00 B
334
338
  ESM dist/components/ui/agent-evaluation-toast.mjs 296.00 B
335
339
  ESM dist/components/ui/ai-assistant-drawer.mjs 446.00 B
336
340
  ESM dist/components/ui/ai-builder.mjs 671.00 B
337
- ESM dist/components/ui/ai-conversations.mjs 1.04 KB
338
341
  ESM dist/components/ui/alert-dialog.mjs 768.00 B
342
+ ESM dist/components/ui/ai-conversations.mjs 1.04 KB
339
343
  ESM dist/components/ui/about-you-form.mjs 11.05 KB
340
344
  ESM dist/components/ui/accordion.mjs 264.00 B
341
345
  ESM dist/components/ui/account-list-carousel.mjs 275.00 B
342
- ESM dist/components/ui/transactions-expense-categories-doughnut-chart.mjs 531.00 B
343
- ESM dist/components/ui/borrowing-capacity-atoms.mjs 389.00 B
344
- ESM dist/components/ui/card.mjs 318.00 B
345
- ESM dist/components/ui/borrowing-capacity-line-chart.mjs 499.00 B
346
- ESM dist/components/ui/broker-info-panel.mjs 1.87 KB
346
+ ESM dist/components/ui/appointment-upcoming-card.mjs 668.00 B
347
+ ESM dist/components/ui/asset-accordion.mjs 6.80 KB
347
348
  ESM dist/components/ui/transactions-income-expense-bar-chart.mjs 513.00 B
348
- ESM dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs 521.00 B
349
349
  ESM dist/components/ui/contact-alert-dialog/index.mjs 925.00 B
350
- ESM ⚡️ Build success in 803ms
351
- CJS dist/lib/colors.js 3.38 KB
350
+ ESM ⚡️ Build success in 739ms
352
351
  CJS dist/lib/theme-provider.js 6.71 KB
353
352
  CJS dist/lib/typography.js 5.74 KB
354
353
  CJS dist/lib/utils.js 2.02 KB
355
354
  CJS dist/components/ui/about-you-form.js 41.31 KB
355
+ CJS dist/components/ui/accordion.js 5.75 KB
356
+ CJS dist/components/ui/account-list-carousel.js 11.56 KB
357
+ CJS dist/components/ui/add-column-modal.js 33.45 KB
356
358
  CJS dist/components/ui/add-lead-modal.js 39.54 KB
357
359
  CJS dist/components/ui/advisor-card.js 21.38 KB
358
360
  CJS dist/components/ui/agent-evaluation-toast.js 11.16 KB
359
361
  CJS dist/components/ui/ai-assistant-drawer.js 28.66 KB
360
362
  CJS dist/components/ui/ai-builder.js 40.02 KB
361
- CJS dist/components/ui/add-column-modal.js 33.45 KB
363
+ CJS dist/lib/colors.js 3.38 KB
362
364
  CJS dist/components/ui/ai-conversations.js 84.12 KB
363
365
  CJS dist/components/ui/alert-dialog.js 16.03 KB
364
366
  CJS dist/components/ui/alert.js 5.17 KB
@@ -369,9 +371,6 @@ $ tsup
369
371
  CJS dist/components/ui/application-mobile-layout.js 2.58 KB
370
372
  CJS dist/components/ui/appointment-action-dialogs.js 45.61 KB
371
373
  CJS dist/components/ui/appointment-availability-settings.js 67.50 KB
372
- CJS dist/components/ui/accordion.js 5.75 KB
373
- CJS dist/components/ui/account-list-carousel.js 11.56 KB
374
- CJS dist/components/ui/appointment-book-dialog.js 75.40 KB
375
374
  CJS dist/components/ui/appointment-calendar-view.js 33.01 KB
376
375
  CJS dist/components/ui/appointment-detail-sheet.js 65.29 KB
377
376
  CJS dist/components/ui/appointment-gmail-connect.js 19.29 KB
@@ -382,76 +381,78 @@ $ tsup
382
381
  CJS dist/components/ui/assets-liabilities-side-card.js 12.56 KB
383
382
  CJS dist/components/ui/auth-logo.js 3.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
- CJS dist/components/ui/avatar.js 6.33 KB
388
387
  CJS dist/components/ui/backoffice-alerts-chart.js 27.04 KB
389
- CJS dist/components/ui/backoffice-contact-matching-chart.js 27.60 KB
390
388
  CJS dist/components/ui/backoffice-connections-chart.js 27.69 KB
389
+ CJS dist/components/ui/backoffice-contact-history-chart.js 23.06 KB
390
+ CJS dist/components/ui/backoffice-contact-matching-chart.js 27.60 KB
391
391
  CJS dist/components/ui/backoffice-signup-steps.js 70.67 KB
392
392
  CJS dist/components/ui/badge.js 7.02 KB
393
393
  CJS dist/components/ui/bank-statement-document-table.js 19.19 KB
394
- CJS dist/components/ui/bank-statement-pdf-viewer.js 20.93 KB
395
394
  CJS dist/components/ui/bank-statement-generate-dialog.js 59.60 KB
395
+ CJS dist/components/ui/bank-statement-pdf-viewer.js 20.93 KB
396
396
  CJS dist/components/ui/banking-accounts-connect.js 13.77 KB
397
397
  CJS dist/components/ui/borrowing-capacity-atoms.js 14.71 KB
398
398
  CJS dist/components/ui/borrowing-capacity-card.js 31.33 KB
399
399
  CJS dist/components/ui/borrowing-capacity-line-chart.js 23.32 KB
400
400
  CJS dist/components/ui/broker-info-panel.js 10.73 KB
401
401
  CJS dist/components/ui/button.js 8.76 KB
402
- CJS dist/components/ui/calculator-section.js 28.15 KB
403
402
  CJS dist/components/ui/calculator-input-item.js 3.20 KB
403
+ CJS dist/components/ui/calculator-section.js 28.15 KB
404
404
  CJS dist/components/ui/calendar.js 16.87 KB
405
405
  CJS dist/components/ui/card.js 5.54 KB
406
406
  CJS dist/components/ui/cash-balance-line-chart.js 22.28 KB
407
407
  CJS dist/components/ui/cashflow-bar-chart.js 22.72 KB
408
- CJS dist/components/ui/category-edit-dialog.js 28.47 KB
409
408
  CJS dist/components/ui/chat-widget-primitives.js 21.42 KB
410
409
  CJS dist/components/ui/chat-widget.js 47.63 KB
411
410
  CJS dist/components/ui/checkbox.js 7.11 KB
412
- CJS dist/components/ui/chip.js 11.84 KB
413
- CJS dist/components/ui/combobox.js 10.71 KB
414
411
  CJS dist/components/ui/color-picker.js 19.32 KB
412
+ CJS dist/components/ui/combobox.js 10.71 KB
413
+ CJS dist/components/ui/chip.js 11.84 KB
415
414
  CJS dist/components/ui/connect-bank-step.js 20.49 KB
416
- CJS dist/components/ui/csv-import-modal.js 20.55 KB
415
+ CJS dist/components/ui/category-edit-dialog.js 28.47 KB
417
416
  CJS dist/components/ui/create-contact-modal.js 38.23 KB
418
- CJS dist/components/ui/dashboard-expense-categories.js 13.22 KB
417
+ CJS dist/components/ui/csv-import-modal.js 20.62 KB
419
418
  CJS dist/components/ui/currency-input.js 16.27 KB
419
+ CJS dist/components/ui/dashboard-expense-categories.js 13.22 KB
420
420
  CJS dist/components/ui/dashboard-transactions-table.js 41.10 KB
421
- CJS dist/components/ui/data-table.js 41.34 KB
422
- CJS dist/components/ui/date-picker.js 23.55 KB
423
421
  CJS dist/components/ui/debt-accordion.js 19.84 KB
424
- CJS dist/components/ui/dialog.js 15.85 KB
422
+ CJS dist/components/ui/date-picker.js 23.55 KB
425
423
  CJS dist/components/ui/delete-contact-component.js 17.52 KB
426
- 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
427
426
  CJS dist/components/ui/drawer.js 8.49 KB
428
427
  CJS dist/components/ui/dropdown-menu.js 13.57 KB
429
428
  CJS dist/components/ui/dynamic-tabs.js 10.53 KB
429
+ CJS dist/components/ui/document-checklist-template.js 25.96 KB
430
430
  CJS dist/components/ui/empty.js 5.93 KB
431
- CJS dist/components/ui/editable-money-item.js 11.37 KB
432
- CJS dist/components/ui/expense-detail-item.js 19.01 KB
433
431
  CJS dist/components/ui/expense-bar-chart.js 22.36 KB
434
- CJS dist/components/ui/field.js 11.80 KB
432
+ CJS dist/components/ui/expense-detail-item.js 19.01 KB
435
433
  CJS dist/components/ui/expense-work-details.js 46.89 KB
434
+ CJS dist/components/ui/field.js 11.80 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
436
437
  CJS dist/components/ui/financial-cards.js 50.65 KB
437
- CJS dist/components/ui/file-preview-dialog.js 41.88 KB
438
- CJS dist/components/ui/financial-drawers.js 25.49 KB
439
438
  CJS dist/components/ui/financial-primitives.js 8.00 KB
440
439
  CJS dist/components/ui/form-primitives.js 23.00 KB
441
- CJS dist/components/ui/financial-sections.js 56.09 KB
442
- CJS dist/components/ui/income-bar-chart.js 22.32 KB
443
440
  CJS dist/components/ui/frontend-signup-steps.js 46.80 KB
441
+ CJS dist/components/ui/income-bar-chart.js 22.32 KB
444
442
  CJS dist/components/ui/income-sources-card.js 9.81 KB
445
443
  CJS dist/components/ui/income-summary-component.js 14.75 KB
444
+ CJS dist/components/ui/financial-drawers.js 25.49 KB
445
+ CJS dist/components/ui/financial-sections.js 56.09 KB
446
446
  CJS dist/components/ui/income-work-details.js 58.65 KB
447
- 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
448
449
  CJS dist/components/ui/input.js 3.88 KB
449
450
  CJS dist/components/ui/interest-rate-input.js 16.38 KB
450
451
  CJS dist/components/ui/interest-rate-section.js 13.80 KB
451
452
  CJS dist/components/ui/interest-rate-used.js 6.83 KB
452
- CJS dist/components/ui/input-otp.js 6.49 KB
453
- CJS dist/components/ui/incoming-outgoings-card.js 7.52 KB
453
+ CJS dist/components/ui/kanban-column.js 66.91 KB
454
454
  CJS dist/components/ui/label.js 3.52 KB
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
458
  CJS dist/components/ui/loan-application-cards.js 14.53 KB
@@ -464,26 +465,25 @@ $ tsup
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
- CJS dist/components/ui/loan-applicant-information.js 13.40 KB
468
468
  CJS dist/components/ui/opportunity-card.js 57.32 KB
469
- CJS dist/components/ui/kanban-column.js 66.91 KB
470
469
  CJS dist/components/ui/opportunity-edit-modals.js 144.61 KB
471
470
  CJS dist/components/ui/page-header.js 2.79 KB
472
- CJS dist/components/ui/opportunity-summary-tab.js 221.15 KB
473
471
  CJS dist/components/ui/page-top-bar.js 2.60 KB
472
+ CJS dist/components/ui/pagination.js 23.58 KB
474
473
  CJS dist/components/ui/password-strength-tooltip.js 7.05 KB
475
474
  CJS dist/components/ui/pipeline-alerts.js 3.53 KB
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/pipeline-primitives.js 13.92 KB
480
479
  CJS dist/components/ui/popover.js 6.49 KB
481
480
  CJS dist/components/ui/progress.js 3.94 KB
482
481
  CJS dist/components/ui/property-asset-card.js 17.82 KB
483
- CJS dist/components/ui/property-debt-equity-doughnut-chart.js 19.25 KB
484
482
  CJS dist/components/ui/property-cashflow-doughnut-chart.js 19.37 KB
485
- CJS dist/components/ui/property-mobile-estimate-line-chart.js 23.44 KB
483
+ CJS dist/components/ui/property-debt-equity-doughnut-chart.js 19.25 KB
486
484
  CJS dist/components/ui/property-list-carousel.js 11.25 KB
485
+ CJS dist/components/ui/property-mobile-estimate-line-chart.js 23.44 KB
486
+ CJS dist/components/ui/pipeline-primitives.js 13.92 KB
487
487
  CJS dist/components/ui/radio-group.js 7.16 KB
488
488
  CJS dist/components/ui/property-report-dialog.js 43.86 KB
489
489
  CJS dist/components/ui/resource-center.js 32.95 KB
@@ -494,10 +494,10 @@ $ tsup
494
494
  CJS dist/components/ui/scenario-list.js 19.00 KB
495
495
  CJS dist/components/ui/select.js 10.94 KB
496
496
  CJS dist/components/ui/separator.js 3.58 KB
497
- CJS dist/components/ui/sheet.js 8.64 KB
498
497
  CJS dist/components/ui/share-details-dialog.js 24.72 KB
499
- CJS dist/components/ui/signup-form-primitives.js 29.72 KB
498
+ CJS dist/components/ui/sheet.js 8.64 KB
500
499
  CJS dist/components/ui/sidebar-nav.js 30.71 KB
500
+ CJS dist/components/ui/signup-form-primitives.js 29.72 KB
501
501
  CJS dist/components/ui/signup-shell.js 13.53 KB
502
502
  CJS dist/components/ui/skeleton.js 3.24 KB
503
503
  CJS dist/components/ui/slider.js 4.60 KB
@@ -506,8 +506,8 @@ $ tsup
506
506
  CJS dist/components/ui/stage-timeline.js 24.62 KB
507
507
  CJS dist/components/ui/stepper.js 9.10 KB
508
508
  CJS dist/components/ui/submission-confirmation-card.js 10.88 KB
509
- CJS dist/components/ui/table.js 6.25 KB
510
509
  CJS dist/components/ui/switch.js 6.96 KB
510
+ CJS dist/components/ui/table.js 6.25 KB
511
511
  CJS dist/components/ui/tabs.js 7.02 KB
512
512
  CJS dist/components/ui/textarea.js 3.77 KB
513
513
  CJS dist/components/ui/toggle-group.js 7.34 KB
@@ -516,14 +516,14 @@ $ tsup
516
516
  CJS dist/components/ui/top-three-product.js 15.24 KB
517
517
  CJS dist/components/ui/transactions-expense-categories-doughnut-chart.js 19.64 KB
518
518
  CJS dist/components/ui/transactions-income-expense-bar-chart.js 19.06 KB
519
- CJS dist/components/ui/transactions-summary-block.js 3.15 KB
520
519
  CJS dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js 19.64 KB
520
+ CJS dist/components/ui/transactions-summary-block.js 3.15 KB
521
521
  CJS dist/components/ui/two-fa-setup-form.js 23.79 KB
522
522
  CJS dist/components/ui/upload-card.js 5.43 KB
523
523
  CJS dist/components/ui/video-background.js 3.25 KB
524
524
  CJS dist/components/ui/contact-alert-dialog/index.js 67.04 KB
525
+ CJS dist/components/ui/appointment-book-dialog.js 75.40 KB
526
+ CJS dist/components/ui/input-group.js 16.63 KB
525
527
  CJS dist/index.js 1.08 MB
526
- CJS dist/components/ui/backoffice-contact-history-chart.js 23.06 KB
527
- CJS dist/components/ui/pagination.js 23.58 KB
528
- CJS ⚡️ Build success in 851ms
529
- Done in 4.14s.
528
+ CJS ⚡️ Build success in 794ms
529
+ Done in 3.93s.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @wealthx/shadcn
2
2
 
3
+ ## 1.5.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 16d9edb: Allow custom description and staff select
8
+
9
+ ## 1.5.3
10
+
11
+ ### Patch Changes
12
+
13
+ - 247fa26: Update file upload dialog
14
+
3
15
  ## 1.5.2
4
16
 
5
17
  ### 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.2",
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>