@wealthx/shadcn 1.5.25 → 1.5.27

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 (120) hide show
  1. package/.turbo/turbo-build.log +165 -165
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-7JVKSZ4O.mjs → chunk-2CHH5QOA.mjs} +1 -1
  4. package/dist/{chunk-5ST6BK7R.mjs → chunk-36IN7YRM.mjs} +1 -1
  5. package/dist/{chunk-RGHKARAK.mjs → chunk-7PTRHNUV.mjs} +1 -1
  6. package/dist/{chunk-QM7LU2BR.mjs → chunk-AAZSLTER.mjs} +7 -7
  7. package/dist/{chunk-OFQFD2E2.mjs → chunk-C35JMOII.mjs} +1 -1
  8. package/dist/{chunk-4FJC64FV.mjs → chunk-CE2WONIY.mjs} +15 -14
  9. package/dist/{chunk-YV7XF32X.mjs → chunk-DSVKEVX6.mjs} +1 -1
  10. package/dist/{chunk-EY5YPFKX.mjs → chunk-EVUY67CY.mjs} +4 -4
  11. package/dist/{chunk-5G2M45CA.mjs → chunk-FYZBGWYR.mjs} +1 -1
  12. package/dist/{chunk-RVDBYV2B.mjs → chunk-HONTZFLO.mjs} +1 -1
  13. package/dist/chunk-HSL23TOM.mjs +443 -0
  14. package/dist/{chunk-VNB5E7SI.mjs → chunk-HSXMTFIM.mjs} +4 -4
  15. package/dist/{chunk-ABVCQWDY.mjs → chunk-KGVVK6OS.mjs} +5 -5
  16. package/dist/{chunk-IG7DEIWU.mjs → chunk-KI57CBJR.mjs} +7 -7
  17. package/dist/{chunk-IT3QJF3D.mjs → chunk-LBXIYS34.mjs} +4 -4
  18. package/dist/{chunk-K35TFQUB.mjs → chunk-LSSIWLYU.mjs} +1 -1
  19. package/dist/{chunk-UMR3HVZF.mjs → chunk-M32QNCD3.mjs} +7 -7
  20. package/dist/{chunk-ECC2LLZM.mjs → chunk-MD66TGX7.mjs} +7 -7
  21. package/dist/{chunk-ZSMQZ3VN.mjs → chunk-NGKTJRFN.mjs} +7 -7
  22. package/dist/{chunk-2PWTXE66.mjs → chunk-OG2VM34K.mjs} +1 -1
  23. package/dist/{chunk-SQ54W3JH.mjs → chunk-OKIWXOJL.mjs} +4 -4
  24. package/dist/{chunk-WIDZVCH3.mjs → chunk-S7SBLNX4.mjs} +7 -7
  25. package/dist/{chunk-PX2B3Q3A.mjs → chunk-SYJ6LVJ6.mjs} +1 -1
  26. package/dist/{chunk-OIETBBXQ.mjs → chunk-T5FRVEJQ.mjs} +1 -1
  27. package/dist/{chunk-Z5QI7CW2.mjs → chunk-T5HU4S4X.mjs} +1 -1
  28. package/dist/{chunk-KENLXFJ7.mjs → chunk-ULQ53FRJ.mjs} +4 -4
  29. package/dist/{chunk-NTIFG5A7.mjs → chunk-USIRKDYQ.mjs} +4 -4
  30. package/dist/{chunk-QJ3RSZF4.mjs → chunk-VVURVETY.mjs} +4 -4
  31. package/dist/components/ui/add-column-modal.js +1 -1
  32. package/dist/components/ui/add-column-modal.mjs +2 -2
  33. package/dist/components/ui/add-lead-modal.js +1 -1
  34. package/dist/components/ui/add-lead-modal.mjs +2 -2
  35. package/dist/components/ui/advisor-card.mjs +2 -2
  36. package/dist/components/ui/{ai-builder.js → ai-builder/index.js} +288 -187
  37. package/dist/components/ui/ai-builder/index.mjs +26 -0
  38. package/dist/components/ui/ai-conversations/index.js +4 -3
  39. package/dist/components/ui/ai-conversations/index.mjs +3 -3
  40. package/dist/components/ui/appointment-action-dialogs.js +1 -1
  41. package/dist/components/ui/appointment-action-dialogs.mjs +2 -2
  42. package/dist/components/ui/appointment-availability-settings.js +1 -1
  43. package/dist/components/ui/appointment-availability-settings.mjs +3 -3
  44. package/dist/components/ui/appointment-book-dialog.js +1 -1
  45. package/dist/components/ui/appointment-book-dialog.mjs +3 -3
  46. package/dist/components/ui/appointment-calendar-view.mjs +2 -2
  47. package/dist/components/ui/appointment-detail-sheet.js +1 -1
  48. package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
  49. package/dist/components/ui/appointment-upcoming-card.js +1 -1
  50. package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
  51. package/dist/components/ui/bank-statement-generate-dialog.js +1 -1
  52. package/dist/components/ui/bank-statement-generate-dialog.mjs +2 -2
  53. package/dist/components/ui/bank-statement-pdf-viewer.mjs +2 -2
  54. package/dist/components/ui/cash-balance-line-chart.mjs +2 -2
  55. package/dist/components/ui/category-edit-dialog.js +1 -1
  56. package/dist/components/ui/category-edit-dialog.mjs +2 -2
  57. package/dist/components/ui/chat-widget.mjs +1 -1
  58. package/dist/components/ui/contact-alert-dialog/index.js +1 -1
  59. package/dist/components/ui/contact-alert-dialog/index.mjs +2 -2
  60. package/dist/components/ui/create-contact-modal.js +1 -1
  61. package/dist/components/ui/create-contact-modal.mjs +2 -2
  62. package/dist/components/ui/csv-import-modal.js +1 -1
  63. package/dist/components/ui/csv-import-modal.mjs +2 -2
  64. package/dist/components/ui/dashboard-expense-categories.mjs +3 -3
  65. package/dist/components/ui/dashboard-transactions-table.js +1 -1
  66. package/dist/components/ui/dashboard-transactions-table.mjs +5 -5
  67. package/dist/components/ui/dialog.js +1 -1
  68. package/dist/components/ui/dialog.mjs +1 -1
  69. package/dist/components/ui/document-checklist-template.mjs +2 -2
  70. package/dist/components/ui/expense-detail-item.mjs +2 -2
  71. package/dist/components/ui/expense-work-details.mjs +8 -8
  72. package/dist/components/ui/file-preview-dialog.js +1 -1
  73. package/dist/components/ui/file-preview-dialog.mjs +2 -2
  74. package/dist/components/ui/income-sources-card.mjs +3 -3
  75. package/dist/components/ui/income-work-details.mjs +2 -2
  76. package/dist/components/ui/kanban-column.mjs +4 -4
  77. package/dist/components/ui/opportunity-card.mjs +3 -3
  78. package/dist/components/ui/opportunity-edit-modals.js +1 -1
  79. package/dist/components/ui/opportunity-edit-modals.mjs +2 -2
  80. package/dist/components/ui/opportunity-summary-tab.js +1 -1
  81. package/dist/components/ui/opportunity-summary-tab.mjs +4 -4
  82. package/dist/components/ui/pipeline-board.mjs +5 -5
  83. package/dist/components/ui/pipeline-dialogs.js +1 -1
  84. package/dist/components/ui/pipeline-dialogs.mjs +2 -2
  85. package/dist/components/ui/pipeline-primitives.mjs +2 -2
  86. package/dist/components/ui/property-report-dialog.js +1 -1
  87. package/dist/components/ui/property-report-dialog.mjs +2 -2
  88. package/dist/components/ui/resource-center/index.js +1 -1
  89. package/dist/components/ui/resource-center/index.mjs +2 -2
  90. package/dist/components/ui/review-alerts-dialog.js +1 -1
  91. package/dist/components/ui/review-alerts-dialog.mjs +2 -2
  92. package/dist/components/ui/savings-goal-modal.js +1 -1
  93. package/dist/components/ui/savings-goal-modal.mjs +1 -1
  94. package/dist/components/ui/share-details-dialog.js +1 -1
  95. package/dist/components/ui/share-details-dialog.mjs +2 -2
  96. package/dist/components/ui/stage-timeline.mjs +3 -3
  97. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +2 -2
  98. package/dist/index.js +4302 -4241
  99. package/dist/index.mjs +114 -114
  100. package/package.json +4 -4
  101. package/src/components/index.tsx +1 -0
  102. package/src/components/ui/ai-builder/agent-card.tsx +181 -0
  103. package/src/components/ui/ai-builder/index.tsx +21 -0
  104. package/src/components/ui/ai-builder/integration-card.tsx +144 -0
  105. package/src/components/ui/ai-builder/service-config-modal.tsx +283 -0
  106. package/src/components/ui/ai-builder/types.ts +34 -0
  107. package/src/components/ui/ai-conversations/thread.tsx +14 -9
  108. package/src/components/ui/dialog.tsx +1 -1
  109. package/tsup.config.ts +1 -1
  110. package/dist/chunk-INGYBZGU.mjs +0 -394
  111. package/dist/components/ui/ai-builder.mjs +0 -25
  112. package/src/components/ui/ai-builder.tsx +0 -558
  113. package/dist/{chunk-G2W754UJ.mjs → chunk-6UKOJLXO.mjs} +3 -3
  114. package/dist/{chunk-S6AYZJYO.mjs → chunk-CZ6IEOM5.mjs} +3 -3
  115. package/dist/{chunk-K2KX3NX7.mjs → chunk-I433SC7S.mjs} +3 -3
  116. package/dist/{chunk-57QES5LX.mjs → chunk-JHS2T6JZ.mjs} +3 -3
  117. package/dist/{chunk-EXI64H46.mjs → chunk-L6LE4OIM.mjs} +3 -3
  118. package/dist/{chunk-DCKT635J.mjs → chunk-LHQACMZY.mjs} +3 -3
  119. package/dist/{chunk-V23CBULF.mjs → chunk-SZLAPJKD.mjs} +3 -3
  120. package/dist/{chunk-KGBLORCQ.mjs → chunk-ZA37ZWZW.mjs} +4 -4
@@ -76,7 +76,7 @@ var __async = (__this, __arguments, generator) => {
76
76
  });
77
77
  };
78
78
 
79
- // src/components/ui/ai-builder.tsx
79
+ // src/components/ui/ai-builder/index.tsx
80
80
  var ai_builder_exports = {};
81
81
  __export(ai_builder_exports, {
82
82
  AgentCard: () => AgentCard,
@@ -86,11 +86,12 @@ __export(ai_builder_exports, {
86
86
  ServiceConfigurationModal: () => ServiceConfigurationModal
87
87
  });
88
88
  module.exports = __toCommonJS(ai_builder_exports);
89
- var import_react4 = require("react");
89
+
90
+ // src/components/ui/ai-builder/agent-card.tsx
90
91
  var import_lucide_react3 = require("lucide-react");
91
92
 
92
- // src/components/ui/avatar.tsx
93
- var import_avatar = require("@base-ui/react/avatar");
93
+ // src/components/ui/badge.tsx
94
+ var import_class_variance_authority = require("class-variance-authority");
94
95
 
95
96
  // src/lib/utils.ts
96
97
  var import_clsx = require("clsx");
@@ -131,59 +132,6 @@ function cn(...inputs) {
131
132
  return twMerge((0, import_clsx.clsx)(inputs));
132
133
  }
133
134
 
134
- // src/components/ui/avatar.tsx
135
- var import_jsx_runtime = require("react/jsx-runtime");
136
- function Avatar(_a) {
137
- var _b = _a, {
138
- className,
139
- size = "default"
140
- } = _b, props = __objRest(_b, [
141
- "className",
142
- "size"
143
- ]);
144
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
145
- import_avatar.Avatar.Root,
146
- __spreadValues({
147
- className: cn(
148
- "group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",
149
- className
150
- ),
151
- "data-size": size,
152
- "data-slot": "avatar"
153
- }, props)
154
- );
155
- }
156
- function AvatarImage(_a) {
157
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
158
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
159
- import_avatar.Avatar.Image,
160
- __spreadValues({
161
- className: cn("aspect-square size-full rounded-full", className),
162
- "data-slot": "avatar-image"
163
- }, props)
164
- );
165
- }
166
- function AvatarFallback(_a) {
167
- var _b = _a, {
168
- className
169
- } = _b, props = __objRest(_b, [
170
- "className"
171
- ]);
172
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
173
- import_avatar.Avatar.Fallback,
174
- __spreadValues({
175
- className: cn(
176
- "flex size-full items-center justify-center rounded-full overflow-hidden bg-muted text-body-small font-sans text-muted-foreground group-data-[size=sm]/avatar:text-caption",
177
- className
178
- ),
179
- "data-slot": "avatar-fallback"
180
- }, props)
181
- );
182
- }
183
-
184
- // src/components/ui/badge.tsx
185
- var import_class_variance_authority = require("class-variance-authority");
186
-
187
135
  // src/lib/slot.tsx
188
136
  var React = __toESM(require("react"));
189
137
  function mergeRefs(...refs) {
@@ -232,7 +180,7 @@ var Slot = React.forwardRef(
232
180
  Slot.displayName = "Slot";
233
181
 
234
182
  // src/components/ui/badge.tsx
235
- var import_jsx_runtime2 = require("react/jsx-runtime");
183
+ var import_jsx_runtime = require("react/jsx-runtime");
236
184
  var badgeVariants = (0, import_class_variance_authority.cva)(
237
185
  "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2.5 py-0.5 text-caption whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",
238
186
  {
@@ -265,7 +213,7 @@ function Badge(_a) {
265
213
  "asChild"
266
214
  ]);
267
215
  const Comp = asChild ? Slot : "span";
268
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
216
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
269
217
  Comp,
270
218
  __spreadValues({
271
219
  className: cn(badgeVariants({ variant }), className),
@@ -279,7 +227,7 @@ function Badge(_a) {
279
227
  var import_react = require("react");
280
228
  var import_class_variance_authority2 = require("class-variance-authority");
281
229
  var import_lucide_react = require("lucide-react");
282
- var import_jsx_runtime3 = require("react/jsx-runtime");
230
+ var import_jsx_runtime2 = require("react/jsx-runtime");
283
231
  var buttonVariants = (0, import_class_variance_authority2.cva)(
284
232
  "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-button whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
285
233
  {
@@ -333,7 +281,7 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
333
281
  ]);
334
282
  const Comp = asChild ? Slot : "button";
335
283
  const isIconOnly = size === "icon" || size === "icon-xs" || size === "icon-sm" || size === "icon-lg";
336
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
284
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
337
285
  Comp,
338
286
  __spreadProps(__spreadValues({
339
287
  className: cn(buttonVariants({ variant, size, className })),
@@ -344,8 +292,8 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
344
292
  ref,
345
293
  type
346
294
  }, props), {
347
- children: loading ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
348
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Loader2, { "aria-hidden": "true", className: "animate-spin" }),
295
+ children: loading ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
296
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.Loader2, { "aria-hidden": "true", className: "animate-spin" }),
349
297
  !isIconOnly && children
350
298
  ] }) : children
351
299
  })
@@ -353,10 +301,10 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
353
301
  });
354
302
 
355
303
  // src/components/ui/card.tsx
356
- var import_jsx_runtime4 = require("react/jsx-runtime");
304
+ var import_jsx_runtime3 = require("react/jsx-runtime");
357
305
  function Card(_a) {
358
306
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
359
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
307
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
360
308
  "div",
361
309
  __spreadValues({
362
310
  className: cn(
@@ -369,7 +317,7 @@ function Card(_a) {
369
317
  }
370
318
  function CardContent(_a) {
371
319
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
372
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
320
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
373
321
  "div",
374
322
  __spreadValues({
375
323
  className: cn("px-6", className),
@@ -384,21 +332,21 @@ var import_dialog = require("@base-ui/react/dialog");
384
332
 
385
333
  // src/lib/theme-provider.tsx
386
334
  var import_react2 = require("react");
387
- var import_jsx_runtime5 = require("react/jsx-runtime");
335
+ var import_jsx_runtime4 = require("react/jsx-runtime");
388
336
  var ThemeVarsContext = (0, import_react2.createContext)({});
389
337
  function useThemeVars() {
390
338
  return (0, import_react2.useContext)(ThemeVarsContext);
391
339
  }
392
340
 
393
341
  // src/components/ui/dialog.tsx
394
- var import_jsx_runtime6 = require("react/jsx-runtime");
342
+ var import_jsx_runtime5 = require("react/jsx-runtime");
395
343
  function Dialog(_a) {
396
344
  var props = __objRest(_a, []);
397
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_dialog.Dialog.Root, __spreadValues({ "data-slot": "dialog" }, props));
345
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_dialog.Dialog.Root, __spreadValues({ "data-slot": "dialog" }, props));
398
346
  }
399
347
  function DialogPortal(_a) {
400
348
  var props = __objRest(_a, []);
401
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_dialog.Dialog.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
349
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_dialog.Dialog.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
402
350
  }
403
351
  function DialogOverlay(_a) {
404
352
  var _b = _a, {
@@ -406,7 +354,7 @@ function DialogOverlay(_a) {
406
354
  } = _b, props = __objRest(_b, [
407
355
  "className"
408
356
  ]);
409
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
357
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
410
358
  import_dialog.Dialog.Backdrop,
411
359
  __spreadValues({
412
360
  className: cn(
@@ -452,9 +400,9 @@ function DialogContent(_a) {
452
400
  const themeVars = useThemeVars();
453
401
  const isAuto = size === "auto";
454
402
  const sizeStyle = isAuto ? { minWidth: minWidth != null ? minWidth : DIALOG_AUTO_MIN_WIDTH } : { maxWidth: DIALOG_MAX_WIDTHS[size] };
455
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(DialogPortal, { container: container != null ? container : void 0, children: [
456
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(DialogOverlay, { style: themeVars }),
457
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
403
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(DialogPortal, { container: container != null ? container : void 0, children: [
404
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(DialogOverlay, { style: themeVars }),
405
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
458
406
  import_dialog.Dialog.Popup,
459
407
  __spreadProps(__spreadValues({
460
408
  className: cn(
@@ -475,14 +423,14 @@ function DialogContent(_a) {
475
423
  }, props), {
476
424
  children: [
477
425
  children,
478
- showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
426
+ showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
479
427
  import_dialog.Dialog.Close,
480
428
  {
481
429
  className: "absolute top-4 right-4 inline-flex size-7 items-center justify-center transition-colors hover:bg-foreground/5 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-border focus-visible:ring-offset-0 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
482
430
  "data-slot": "dialog-close",
483
431
  children: [
484
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.XIcon, {}),
485
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "sr-only", children: "Close" })
432
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.XIcon, {}),
433
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "sr-only", children: "Close" })
486
434
  ]
487
435
  }
488
436
  ) : null
@@ -497,7 +445,7 @@ function DialogHeader(_a) {
497
445
  } = _b, props = __objRest(_b, [
498
446
  "className"
499
447
  ]);
500
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
448
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
501
449
  "div",
502
450
  __spreadValues({
503
451
  className: cn("flex flex-col gap-1.5", className),
@@ -515,7 +463,7 @@ function DialogFooter(_a) {
515
463
  "showCloseButton",
516
464
  "children"
517
465
  ]);
518
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
466
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
519
467
  "div",
520
468
  __spreadProps(__spreadValues({
521
469
  className: cn(
@@ -527,7 +475,7 @@ function DialogFooter(_a) {
527
475
  }, props), {
528
476
  children: [
529
477
  children,
530
- showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
478
+ showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
531
479
  import_dialog.Dialog.Close,
532
480
  {
533
481
  className: cn(buttonVariants({ variant: "outline" })),
@@ -541,10 +489,10 @@ function DialogFooter(_a) {
541
489
  }
542
490
  function DialogTitle(_a) {
543
491
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
544
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
492
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
545
493
  import_dialog.Dialog.Title,
546
494
  __spreadValues({
547
- className: cn("text-h5 leading-none", className),
495
+ className: cn("text-h5", className),
548
496
  "data-slot": "dialog-title"
549
497
  }, props)
550
498
  );
@@ -555,7 +503,7 @@ function DialogDescription(_a) {
555
503
  } = _b, props = __objRest(_b, [
556
504
  "className"
557
505
  ]);
558
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
506
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
559
507
  import_dialog.Dialog.Description,
560
508
  __spreadValues({
561
509
  className: cn("text-body-small text-muted-foreground", className),
@@ -567,7 +515,7 @@ function DialogDescription(_a) {
567
515
  // src/components/ui/switch.tsx
568
516
  var import_react3 = require("react");
569
517
  var import_switch = require("@base-ui/react/switch");
570
- var import_jsx_runtime7 = require("react/jsx-runtime");
518
+ var import_jsx_runtime6 = require("react/jsx-runtime");
571
519
  function Switch(_a) {
572
520
  var _b = _a, {
573
521
  className,
@@ -576,7 +524,7 @@ function Switch(_a) {
576
524
  "className",
577
525
  "size"
578
526
  ]);
579
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
527
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
580
528
  import_switch.Switch.Root,
581
529
  __spreadProps(__spreadValues({
582
530
  className: cn(
@@ -593,7 +541,7 @@ function Switch(_a) {
593
541
  "data-size": size,
594
542
  "data-slot": "switch"
595
543
  }, props), {
596
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
544
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
597
545
  import_switch.Switch.Thumb,
598
546
  {
599
547
  className: cn(
@@ -609,8 +557,8 @@ function Switch(_a) {
609
557
  );
610
558
  }
611
559
 
612
- // src/components/ui/ai-builder.tsx
613
- var import_jsx_runtime8 = require("react/jsx-runtime");
560
+ // src/components/ui/ai-builder/agent-card.tsx
561
+ var import_jsx_runtime7 = require("react/jsx-runtime");
614
562
  var AGENT_FEATURES = [
615
563
  {
616
564
  title: "Lead Capture",
@@ -640,7 +588,7 @@ function AgentCard({
640
588
  className
641
589
  }) {
642
590
  const { id, title, description, tags, isEnabled, infoBadge, isComingSoon } = agent;
643
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
591
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
644
592
  Card,
645
593
  {
646
594
  className: cn(
@@ -649,9 +597,9 @@ function AgentCard({
649
597
  className
650
598
  ),
651
599
  children: [
652
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
653
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-1 items-center gap-2 min-w-0", children: [
654
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
600
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
601
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-1 items-center gap-2 min-w-0", children: [
602
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
655
603
  "span",
656
604
  {
657
605
  className: cn(
@@ -660,11 +608,11 @@ function AgentCard({
660
608
  )
661
609
  }
662
610
  ),
663
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "truncate text-sm font-semibold leading-tight", children: title }),
664
- isComingSoon && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Badge, { variant: "outline", className: "shrink-0 text-xs", children: "Coming Soon" })
611
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "truncate text-sm font-semibold leading-tight", children: title }),
612
+ isComingSoon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Badge, { variant: "outline", className: "shrink-0 text-xs", children: "Coming Soon" })
665
613
  ] }),
666
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
667
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
614
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
615
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
668
616
  Switch,
669
617
  {
670
618
  checked: isEnabled,
@@ -673,7 +621,7 @@ function AgentCard({
673
621
  "aria-label": `Toggle ${title}`
674
622
  }
675
623
  ),
676
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
624
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
677
625
  Button,
678
626
  {
679
627
  variant: "ghost",
@@ -681,15 +629,15 @@ function AgentCard({
681
629
  className: "h-7 w-7",
682
630
  onClick: () => onMenuClick(id),
683
631
  "aria-label": `View details for ${title}`,
684
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.MoreHorizontal, { className: "h-4 w-4" })
632
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.MoreHorizontal, { className: "h-4 w-4" })
685
633
  }
686
634
  )
687
635
  ] })
688
636
  ] }),
689
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-muted-foreground text-xs leading-relaxed flex-1", children: description }),
690
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-2", children: [
691
- infoBadge && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "bg-info/10 text-info px-2 py-1 text-xs", children: infoBadge }),
692
- tags.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex flex-wrap gap-1", children: tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Badge, { variant: "secondary", className: "text-xs", children: tag }, tag)) })
637
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-muted-foreground text-xs leading-relaxed flex-1", children: description }),
638
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-2", children: [
639
+ infoBadge && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "bg-info/10 text-info px-2 py-1 text-xs", children: infoBadge }),
640
+ tags.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap gap-1", children: tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Badge, { variant: "secondary", className: "text-xs", children: tag }, tag)) })
693
641
  ] })
694
642
  ]
695
643
  }
@@ -702,13 +650,13 @@ function AgentMenuModal({
702
650
  description = "AI-powered lead management that works around the clock to grow your mortgage business.",
703
651
  features = AGENT_FEATURES
704
652
  }) {
705
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DialogContent, { className: "max-w-lg", children: [
706
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DialogHeader, { children: [
707
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DialogTitle, { children: agentTitle }),
708
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DialogDescription, { children: description })
653
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(DialogContent, { className: "max-w-lg", children: [
654
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(DialogHeader, { children: [
655
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DialogTitle, { children: agentTitle }),
656
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DialogDescription, { children: description })
709
657
  ] }),
710
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex flex-col gap-3 py-2", children: features.map((feature, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex gap-3", children: [
711
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
658
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-col gap-3 py-2", children: features.map((feature, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex gap-3", children: [
659
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
712
660
  Badge,
713
661
  {
714
662
  variant: "default",
@@ -716,13 +664,71 @@ function AgentMenuModal({
716
664
  children: index + 1
717
665
  }
718
666
  ),
719
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
720
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-sm font-semibold", children: feature.title }),
721
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-muted-foreground text-xs leading-relaxed", children: feature.description })
667
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
668
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-sm font-semibold", children: feature.title }),
669
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-muted-foreground text-xs leading-relaxed", children: feature.description })
722
670
  ] })
723
671
  ] }, feature.title)) })
724
672
  ] }) });
725
673
  }
674
+
675
+ // src/components/ui/ai-builder/integration-card.tsx
676
+ var import_react4 = require("react");
677
+ var import_lucide_react4 = require("lucide-react");
678
+
679
+ // src/components/ui/avatar.tsx
680
+ var import_avatar = require("@base-ui/react/avatar");
681
+ var import_jsx_runtime8 = require("react/jsx-runtime");
682
+ function Avatar(_a) {
683
+ var _b = _a, {
684
+ className,
685
+ size = "default"
686
+ } = _b, props = __objRest(_b, [
687
+ "className",
688
+ "size"
689
+ ]);
690
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
691
+ import_avatar.Avatar.Root,
692
+ __spreadValues({
693
+ className: cn(
694
+ "group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",
695
+ className
696
+ ),
697
+ "data-size": size,
698
+ "data-slot": "avatar"
699
+ }, props)
700
+ );
701
+ }
702
+ function AvatarImage(_a) {
703
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
704
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
705
+ import_avatar.Avatar.Image,
706
+ __spreadValues({
707
+ className: cn("aspect-square size-full rounded-full", className),
708
+ "data-slot": "avatar-image"
709
+ }, props)
710
+ );
711
+ }
712
+ function AvatarFallback(_a) {
713
+ var _b = _a, {
714
+ className
715
+ } = _b, props = __objRest(_b, [
716
+ "className"
717
+ ]);
718
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
719
+ import_avatar.Avatar.Fallback,
720
+ __spreadValues({
721
+ className: cn(
722
+ "flex size-full items-center justify-center rounded-full overflow-hidden bg-muted text-body-small font-sans text-muted-foreground group-data-[size=sm]/avatar:text-caption",
723
+ className
724
+ ),
725
+ "data-slot": "avatar-fallback"
726
+ }, props)
727
+ );
728
+ }
729
+
730
+ // src/components/ui/ai-builder/integration-card.tsx
731
+ var import_jsx_runtime9 = require("react/jsx-runtime");
726
732
  function IntegrationServiceCard({
727
733
  title,
728
734
  imageUrl,
@@ -733,7 +739,7 @@ function IntegrationServiceCard({
733
739
  onSettingsClick,
734
740
  className
735
741
  }) {
736
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
742
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
737
743
  Card,
738
744
  {
739
745
  className: cn(
@@ -743,19 +749,19 @@ function IntegrationServiceCard({
743
749
  ),
744
750
  onClick: !isConnected ? onCardClick : void 0,
745
751
  children: [
746
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-start gap-3", children: [
747
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Avatar, { className: "h-10 w-10 shrink-0", children: [
748
- imageUrl && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AvatarImage, { src: imageUrl, alt: title }),
749
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AvatarFallback, { className: iconNode ? "bg-transparent p-0.5" : "", children: iconNode != null ? iconNode : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.User, { className: "h-5 w-5" }) })
752
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-start gap-3", children: [
753
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Avatar, { className: "h-10 w-10 shrink-0", children: [
754
+ imageUrl && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(AvatarImage, { src: imageUrl, alt: title }),
755
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(AvatarFallback, { className: iconNode ? "bg-transparent p-0.5" : "", children: iconNode != null ? iconNode : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react4.User, { className: "h-5 w-5" }) })
750
756
  ] }),
751
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-2", children: [
752
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "text-base font-semibold", children: title }),
753
- isConnected && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Badge, { variant: "success", className: "gap-1 text-xs", children: [
754
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.CheckCircle2, { className: "h-3 w-3" }),
757
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center gap-2", children: [
758
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-base font-semibold", children: title }),
759
+ isConnected && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Badge, { variant: "success", className: "gap-1 text-xs", children: [
760
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react4.CheckCircle2, { className: "h-3 w-3" }),
755
761
  "Connected"
756
762
  ] })
757
763
  ] }) }),
758
- isConnected && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
764
+ isConnected && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
759
765
  Button,
760
766
  {
761
767
  variant: "ghost",
@@ -766,11 +772,11 @@ function IntegrationServiceCard({
766
772
  onSettingsClick();
767
773
  },
768
774
  "aria-label": `Settings for ${title}`,
769
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.Settings, { className: "h-4 w-4" })
775
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react4.Settings, { className: "h-4 w-4" })
770
776
  }
771
777
  )
772
778
  ] }),
773
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-sm leading-relaxed text-muted-foreground", children: description })
779
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-sm leading-relaxed text-muted-foreground", children: description })
774
780
  ]
775
781
  }
776
782
  );
@@ -791,29 +797,76 @@ function IntegrationInstructionCard({
791
797
  } catch (e) {
792
798
  }
793
799
  });
794
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Card, { className: cn("flex flex-col gap-3 p-4", className), children: [
795
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
796
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { className: "text-sm font-semibold", children: title }),
797
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
800
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Card, { className: cn("flex flex-col gap-3 p-4", className), children: [
801
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
802
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className: "text-sm font-semibold", children: title }),
803
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
798
804
  Button,
799
805
  {
800
806
  variant: "outline",
801
807
  size: "sm",
802
808
  className: "h-7 gap-1.5 text-xs",
803
809
  onClick: handleCopy,
804
- children: copied ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
805
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.Check, { className: "h-3 w-3" }),
810
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
811
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react4.Check, { className: "h-3 w-3" }),
806
812
  "Copied"
807
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
808
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.Copy, { className: "h-3 w-3" }),
813
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
814
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react4.Copy, { className: "h-3 w-3" }),
809
815
  "Copy"
810
816
  ] })
811
817
  }
812
818
  )
813
819
  ] }),
814
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("pre", { className: "bg-muted overflow-x-auto p-3 text-xs leading-relaxed", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: codeBlock }) })
820
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("pre", { className: "bg-muted overflow-x-auto p-3 text-xs leading-relaxed", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("code", { children: codeBlock }) })
815
821
  ] });
816
822
  }
823
+
824
+ // src/components/ui/ai-builder/service-config-modal.tsx
825
+ var import_lucide_react6 = require("lucide-react");
826
+
827
+ // src/components/ui/checkbox.tsx
828
+ var import_react5 = require("react");
829
+ var import_lucide_react5 = require("lucide-react");
830
+ var import_checkbox = require("@base-ui/react/checkbox");
831
+ var import_jsx_runtime10 = require("react/jsx-runtime");
832
+ function Checkbox(_a) {
833
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
834
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
835
+ import_checkbox.Checkbox.Root,
836
+ __spreadProps(__spreadValues({
837
+ className: cn(
838
+ "peer group inline-flex size-4 shrink-0 border border-input shadow-xs transition-all outline-none",
839
+ "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
840
+ "disabled:cursor-not-allowed disabled:opacity-50",
841
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20",
842
+ "data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground",
843
+ "data-indeterminate:border-primary data-indeterminate:bg-primary data-indeterminate:text-primary-foreground",
844
+ // Dark mode (upstream shadcn)
845
+ "dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-checked:bg-primary",
846
+ // Stacked (2 attr selectors) → wins over single-attr rules above
847
+ "aria-invalid:data-checked:border-destructive aria-invalid:data-checked:bg-destructive aria-invalid:data-checked:text-destructive-foreground",
848
+ "aria-invalid:data-indeterminate:border-destructive aria-invalid:data-indeterminate:bg-destructive aria-invalid:data-indeterminate:text-destructive-foreground",
849
+ className
850
+ ),
851
+ "data-slot": "checkbox"
852
+ }, props), {
853
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
854
+ import_checkbox.Checkbox.Indicator,
855
+ {
856
+ className: "grid place-content-center text-current transition-none",
857
+ "data-slot": "checkbox-indicator",
858
+ children: [
859
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react5.CheckIcon, { className: "size-3.5 group-data-indeterminate:hidden" }),
860
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react5.MinusIcon, { className: "size-3.5 hidden group-data-indeterminate:block" })
861
+ ]
862
+ }
863
+ )
864
+ })
865
+ );
866
+ }
867
+
868
+ // src/components/ui/ai-builder/service-config-modal.tsx
869
+ var import_jsx_runtime11 = require("react/jsx-runtime");
817
870
  function ServiceConfigurationModal({
818
871
  open,
819
872
  onOpenChange,
@@ -827,62 +880,62 @@ function ServiceConfigurationModal({
827
880
  onDisconnect,
828
881
  onReconnect
829
882
  }) {
830
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DialogContent, { className: "max-w-md", children: isConnected ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
831
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DialogHeader, { children: [
832
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DialogTitle, { children: serviceTitle }),
833
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DialogDescription, { children: "Manage your integration settings." })
883
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DialogContent, { className: "max-w-md", children: isConnected ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
884
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(DialogHeader, { children: [
885
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DialogTitle, { children: serviceTitle }),
886
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DialogDescription, { children: "Manage your integration settings." })
834
887
  ] }),
835
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-4 py-2", children: [
836
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-2 px-3 py-2 text-xs font-medium bg-success/10 text-success", children: [
837
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.CheckCircle2, { className: "h-3.5 w-3.5 shrink-0" }),
888
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-4 py-2", children: [
889
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-2 px-3 py-2 text-xs font-medium bg-success/10 text-success", children: [
890
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react6.CheckCircle2, { className: "h-3.5 w-3.5 shrink-0" }),
838
891
  "Active \u2014 integration is running"
839
892
  ] }),
840
- serviceData && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
841
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-2", children: [
842
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-muted-foreground text-xs font-medium uppercase tracking-wide", children: "Account Information" }),
843
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Card, { className: "py-0", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(CardContent, { className: "flex flex-col gap-3 p-3", children: [
844
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-2 text-xs", children: [
845
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.User, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }),
846
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "text-muted-foreground", children: [
893
+ serviceData && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
894
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-2", children: [
895
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-overline text-muted-foreground", children: "Account Information" }),
896
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Card, { className: "py-0", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(CardContent, { className: "flex flex-col gap-3 p-3", children: [
897
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-2 text-sm", children: [
898
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react6.User, { className: "text-muted-foreground h-4 w-4 shrink-0" }),
899
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "text-muted-foreground", children: [
847
900
  serviceData.accountIdentifierLabel,
848
901
  ":"
849
902
  ] }),
850
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "font-medium", children: serviceData.accountIdentifier })
903
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-medium", children: serviceData.accountIdentifier })
851
904
  ] }),
852
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-2 text-xs", children: [
853
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.Clock, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }),
854
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "text-muted-foreground", children: "Connected on:" }),
855
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "font-medium", children: serviceData.connectedOn })
905
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-2 text-sm", children: [
906
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react6.Clock, { className: "text-muted-foreground h-4 w-4 shrink-0" }),
907
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-muted-foreground", children: "Connected on:" }),
908
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-medium", children: serviceData.connectedOn })
856
909
  ] }),
857
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-2 text-xs", children: [
858
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.Clock, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }),
859
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "text-muted-foreground", children: "Last synced:" }),
860
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "font-medium", children: serviceData.lastSynced })
910
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-2 text-sm", children: [
911
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react6.Clock, { className: "text-muted-foreground h-4 w-4 shrink-0" }),
912
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-muted-foreground", children: "Last synced:" }),
913
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-medium", children: serviceData.lastSynced })
861
914
  ] })
862
915
  ] }) })
863
916
  ] }),
864
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-2", children: [
865
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-muted-foreground text-xs font-medium uppercase tracking-wide", children: "Granted Permissions" }),
866
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Card, { className: "py-0", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CardContent, { className: "flex flex-col gap-2 p-3", children: serviceData.permissions.map((permission) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
917
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-2", children: [
918
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-overline text-muted-foreground", children: "Granted Permissions" }),
919
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Card, { className: "py-0", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CardContent, { className: "flex flex-col gap-2 p-3", children: serviceData.permissions.map((permission) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
867
920
  "div",
868
921
  {
869
- className: "flex items-center gap-2 text-xs",
922
+ className: "flex items-center gap-2 text-sm",
870
923
  children: [
871
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.Shield, { className: "text-success h-3.5 w-3.5 shrink-0" }),
872
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: permission })
924
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react6.Shield, { className: "text-success h-4 w-4 shrink-0" }),
925
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { children: permission })
873
926
  ]
874
927
  },
875
928
  permission
876
929
  )) }) })
877
930
  ] }),
878
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-2", children: [
879
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-muted-foreground text-xs font-medium uppercase tracking-wide", children: "Sync Settings" }),
880
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Card, { className: "py-0", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(CardContent, { className: "flex items-center justify-between gap-3 p-3", children: [
881
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
882
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-sm font-medium", children: serviceData.syncLabel }),
883
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-muted-foreground text-xs", children: serviceData.syncDescription })
931
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-2", children: [
932
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-overline text-muted-foreground", children: "Sync Settings" }),
933
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Card, { className: "py-0", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(CardContent, { className: "flex items-center justify-between gap-3 p-3", children: [
934
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
935
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-sm font-medium", children: serviceData.syncLabel }),
936
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-muted-foreground text-sm", children: serviceData.syncDescription })
884
937
  ] }),
885
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
938
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
886
939
  Switch,
887
940
  {
888
941
  checked: serviceData.syncEnabled,
@@ -891,11 +944,59 @@ function ServiceConfigurationModal({
891
944
  }
892
945
  )
893
946
  ] }) })
947
+ ] }),
948
+ serviceData.emailCategories && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-2", children: [
949
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { children: [
950
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-overline text-muted-foreground", children: "Email Filters" }),
951
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-muted-foreground text-sm mt-0.5", children: "Choose which inbox categories to sync into WealthX." })
952
+ ] }),
953
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Card, { className: "py-0", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CardContent, { className: "flex flex-col gap-3 p-3", children: serviceData.emailCategories.available.map(
954
+ (category) => {
955
+ const checked = serviceData.emailCategories.selected.includes(
956
+ category
957
+ );
958
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
959
+ "div",
960
+ {
961
+ className: "flex items-center gap-2",
962
+ children: [
963
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
964
+ Checkbox,
965
+ {
966
+ id: `email-cat-${category}`,
967
+ checked,
968
+ onCheckedChange: (v) => {
969
+ const next = v ? [
970
+ ...serviceData.emailCategories.selected,
971
+ category
972
+ ] : serviceData.emailCategories.selected.filter(
973
+ (c) => c !== category
974
+ );
975
+ serviceData.emailCategories.onChange(
976
+ next
977
+ );
978
+ }
979
+ }
980
+ ),
981
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
982
+ "label",
983
+ {
984
+ htmlFor: `email-cat-${category}`,
985
+ className: "text-sm cursor-pointer select-none",
986
+ children: category
987
+ }
988
+ )
989
+ ]
990
+ },
991
+ category
992
+ );
993
+ }
994
+ ) }) })
894
995
  ] })
895
996
  ] })
896
997
  ] }),
897
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DialogFooter, { children: [
898
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
998
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(DialogFooter, { children: [
999
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
899
1000
  Button,
900
1001
  {
901
1002
  variant: "destructive",
@@ -905,7 +1006,7 @@ function ServiceConfigurationModal({
905
1006
  children: "Disconnect"
906
1007
  }
907
1008
  ),
908
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1009
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
909
1010
  Button,
910
1011
  {
911
1012
  variant: "outline-secondary",
@@ -914,30 +1015,30 @@ function ServiceConfigurationModal({
914
1015
  children: "Cancel"
915
1016
  }
916
1017
  ),
917
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Button, { size: "sm", onClick: onReconnect, children: "Reconnect" })
1018
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Button, { size: "sm", onClick: onReconnect, children: "Reconnect" })
918
1019
  ] })
919
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
920
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-4 py-2", children: [
921
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-3", children: [
922
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center bg-muted", children: iconNode != null ? iconNode : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.Mail, { className: "h-5 w-5 text-muted-foreground" }) }),
923
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
924
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { className: "text-sm font-semibold", children: [
1020
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
1021
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-4 py-2", children: [
1022
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-3", children: [
1023
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center bg-muted", children: iconNode != null ? iconNode : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react6.Mail, { className: "h-5 w-5 text-muted-foreground" }) }),
1024
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
1025
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("p", { className: "text-sm font-semibold", children: [
925
1026
  "Connect ",
926
1027
  serviceTitle
927
1028
  ] }),
928
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-muted-foreground text-xs", children: connectDescription })
1029
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-muted-foreground text-xs", children: connectDescription })
929
1030
  ] })
930
1031
  ] }),
931
- connectPermissions && connectPermissions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-col gap-2 border border-border px-4 py-3", children: [
932
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide", children: "Permissions requested" }),
933
- connectPermissions.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-2", children: [
934
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.Check, { className: "h-3.5 w-3.5 shrink-0 text-success" }),
935
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
1032
+ connectPermissions && connectPermissions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-2 border border-border px-4 py-3", children: [
1033
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-overline text-muted-foreground", children: "Permissions requested" }),
1034
+ connectPermissions.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-2", children: [
1035
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react6.Check, { className: "h-3.5 w-3.5 shrink-0 text-success" }),
1036
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
936
1037
  ] }, perm))
937
1038
  ] })
938
1039
  ] }),
939
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DialogFooter, { children: [
940
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1040
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(DialogFooter, { children: [
1041
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
941
1042
  Button,
942
1043
  {
943
1044
  variant: "outline-secondary",
@@ -946,7 +1047,7 @@ function ServiceConfigurationModal({
946
1047
  children: "Cancel"
947
1048
  }
948
1049
  ),
949
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Button, { size: "sm", onClick: onConnect, children: "Connect" })
1050
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Button, { size: "sm", onClick: onConnect, children: "Connect" })
950
1051
  ] })
951
1052
  ] }) }) });
952
1053
  }