@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.
- package/.turbo/turbo-build.log +165 -165
- package/CHANGELOG.md +12 -0
- package/dist/{chunk-7JVKSZ4O.mjs → chunk-2CHH5QOA.mjs} +1 -1
- package/dist/{chunk-5ST6BK7R.mjs → chunk-36IN7YRM.mjs} +1 -1
- package/dist/{chunk-RGHKARAK.mjs → chunk-7PTRHNUV.mjs} +1 -1
- package/dist/{chunk-QM7LU2BR.mjs → chunk-AAZSLTER.mjs} +7 -7
- package/dist/{chunk-OFQFD2E2.mjs → chunk-C35JMOII.mjs} +1 -1
- package/dist/{chunk-4FJC64FV.mjs → chunk-CE2WONIY.mjs} +15 -14
- package/dist/{chunk-YV7XF32X.mjs → chunk-DSVKEVX6.mjs} +1 -1
- package/dist/{chunk-EY5YPFKX.mjs → chunk-EVUY67CY.mjs} +4 -4
- package/dist/{chunk-5G2M45CA.mjs → chunk-FYZBGWYR.mjs} +1 -1
- package/dist/{chunk-RVDBYV2B.mjs → chunk-HONTZFLO.mjs} +1 -1
- package/dist/chunk-HSL23TOM.mjs +443 -0
- package/dist/{chunk-VNB5E7SI.mjs → chunk-HSXMTFIM.mjs} +4 -4
- package/dist/{chunk-ABVCQWDY.mjs → chunk-KGVVK6OS.mjs} +5 -5
- package/dist/{chunk-IG7DEIWU.mjs → chunk-KI57CBJR.mjs} +7 -7
- package/dist/{chunk-IT3QJF3D.mjs → chunk-LBXIYS34.mjs} +4 -4
- package/dist/{chunk-K35TFQUB.mjs → chunk-LSSIWLYU.mjs} +1 -1
- package/dist/{chunk-UMR3HVZF.mjs → chunk-M32QNCD3.mjs} +7 -7
- package/dist/{chunk-ECC2LLZM.mjs → chunk-MD66TGX7.mjs} +7 -7
- package/dist/{chunk-ZSMQZ3VN.mjs → chunk-NGKTJRFN.mjs} +7 -7
- package/dist/{chunk-2PWTXE66.mjs → chunk-OG2VM34K.mjs} +1 -1
- package/dist/{chunk-SQ54W3JH.mjs → chunk-OKIWXOJL.mjs} +4 -4
- package/dist/{chunk-WIDZVCH3.mjs → chunk-S7SBLNX4.mjs} +7 -7
- package/dist/{chunk-PX2B3Q3A.mjs → chunk-SYJ6LVJ6.mjs} +1 -1
- package/dist/{chunk-OIETBBXQ.mjs → chunk-T5FRVEJQ.mjs} +1 -1
- package/dist/{chunk-Z5QI7CW2.mjs → chunk-T5HU4S4X.mjs} +1 -1
- package/dist/{chunk-KENLXFJ7.mjs → chunk-ULQ53FRJ.mjs} +4 -4
- package/dist/{chunk-NTIFG5A7.mjs → chunk-USIRKDYQ.mjs} +4 -4
- package/dist/{chunk-QJ3RSZF4.mjs → chunk-VVURVETY.mjs} +4 -4
- package/dist/components/ui/add-column-modal.js +1 -1
- package/dist/components/ui/add-column-modal.mjs +2 -2
- package/dist/components/ui/add-lead-modal.js +1 -1
- package/dist/components/ui/add-lead-modal.mjs +2 -2
- package/dist/components/ui/advisor-card.mjs +2 -2
- package/dist/components/ui/{ai-builder.js → ai-builder/index.js} +288 -187
- package/dist/components/ui/ai-builder/index.mjs +26 -0
- package/dist/components/ui/ai-conversations/index.js +4 -3
- package/dist/components/ui/ai-conversations/index.mjs +3 -3
- package/dist/components/ui/appointment-action-dialogs.js +1 -1
- package/dist/components/ui/appointment-action-dialogs.mjs +2 -2
- package/dist/components/ui/appointment-availability-settings.js +1 -1
- package/dist/components/ui/appointment-availability-settings.mjs +3 -3
- package/dist/components/ui/appointment-book-dialog.js +1 -1
- package/dist/components/ui/appointment-book-dialog.mjs +3 -3
- package/dist/components/ui/appointment-calendar-view.mjs +2 -2
- package/dist/components/ui/appointment-detail-sheet.js +1 -1
- package/dist/components/ui/appointment-detail-sheet.mjs +4 -4
- package/dist/components/ui/appointment-upcoming-card.js +1 -1
- package/dist/components/ui/appointment-upcoming-card.mjs +3 -3
- package/dist/components/ui/bank-statement-generate-dialog.js +1 -1
- package/dist/components/ui/bank-statement-generate-dialog.mjs +2 -2
- package/dist/components/ui/bank-statement-pdf-viewer.mjs +2 -2
- package/dist/components/ui/cash-balance-line-chart.mjs +2 -2
- package/dist/components/ui/category-edit-dialog.js +1 -1
- package/dist/components/ui/category-edit-dialog.mjs +2 -2
- package/dist/components/ui/chat-widget.mjs +1 -1
- package/dist/components/ui/contact-alert-dialog/index.js +1 -1
- package/dist/components/ui/contact-alert-dialog/index.mjs +2 -2
- package/dist/components/ui/create-contact-modal.js +1 -1
- package/dist/components/ui/create-contact-modal.mjs +2 -2
- package/dist/components/ui/csv-import-modal.js +1 -1
- package/dist/components/ui/csv-import-modal.mjs +2 -2
- package/dist/components/ui/dashboard-expense-categories.mjs +3 -3
- package/dist/components/ui/dashboard-transactions-table.js +1 -1
- package/dist/components/ui/dashboard-transactions-table.mjs +5 -5
- package/dist/components/ui/dialog.js +1 -1
- package/dist/components/ui/dialog.mjs +1 -1
- package/dist/components/ui/document-checklist-template.mjs +2 -2
- package/dist/components/ui/expense-detail-item.mjs +2 -2
- package/dist/components/ui/expense-work-details.mjs +8 -8
- package/dist/components/ui/file-preview-dialog.js +1 -1
- package/dist/components/ui/file-preview-dialog.mjs +2 -2
- package/dist/components/ui/income-sources-card.mjs +3 -3
- package/dist/components/ui/income-work-details.mjs +2 -2
- package/dist/components/ui/kanban-column.mjs +4 -4
- package/dist/components/ui/opportunity-card.mjs +3 -3
- package/dist/components/ui/opportunity-edit-modals.js +1 -1
- package/dist/components/ui/opportunity-edit-modals.mjs +2 -2
- package/dist/components/ui/opportunity-summary-tab.js +1 -1
- package/dist/components/ui/opportunity-summary-tab.mjs +4 -4
- package/dist/components/ui/pipeline-board.mjs +5 -5
- package/dist/components/ui/pipeline-dialogs.js +1 -1
- package/dist/components/ui/pipeline-dialogs.mjs +2 -2
- package/dist/components/ui/pipeline-primitives.mjs +2 -2
- package/dist/components/ui/property-report-dialog.js +1 -1
- package/dist/components/ui/property-report-dialog.mjs +2 -2
- package/dist/components/ui/resource-center/index.js +1 -1
- package/dist/components/ui/resource-center/index.mjs +2 -2
- package/dist/components/ui/review-alerts-dialog.js +1 -1
- package/dist/components/ui/review-alerts-dialog.mjs +2 -2
- package/dist/components/ui/savings-goal-modal.js +1 -1
- package/dist/components/ui/savings-goal-modal.mjs +1 -1
- package/dist/components/ui/share-details-dialog.js +1 -1
- package/dist/components/ui/share-details-dialog.mjs +2 -2
- package/dist/components/ui/stage-timeline.mjs +3 -3
- package/dist/components/ui/transactions-income-expense-bar-chart.mjs +2 -2
- package/dist/index.js +4302 -4241
- package/dist/index.mjs +114 -114
- package/package.json +4 -4
- package/src/components/index.tsx +1 -0
- package/src/components/ui/ai-builder/agent-card.tsx +181 -0
- package/src/components/ui/ai-builder/index.tsx +21 -0
- package/src/components/ui/ai-builder/integration-card.tsx +144 -0
- package/src/components/ui/ai-builder/service-config-modal.tsx +283 -0
- package/src/components/ui/ai-builder/types.ts +34 -0
- package/src/components/ui/ai-conversations/thread.tsx +14 -9
- package/src/components/ui/dialog.tsx +1 -1
- package/tsup.config.ts +1 -1
- package/dist/chunk-INGYBZGU.mjs +0 -394
- package/dist/components/ui/ai-builder.mjs +0 -25
- package/src/components/ui/ai-builder.tsx +0 -558
- package/dist/{chunk-G2W754UJ.mjs → chunk-6UKOJLXO.mjs} +3 -3
- package/dist/{chunk-S6AYZJYO.mjs → chunk-CZ6IEOM5.mjs} +3 -3
- package/dist/{chunk-K2KX3NX7.mjs → chunk-I433SC7S.mjs} +3 -3
- package/dist/{chunk-57QES5LX.mjs → chunk-JHS2T6JZ.mjs} +3 -3
- package/dist/{chunk-EXI64H46.mjs → chunk-L6LE4OIM.mjs} +3 -3
- package/dist/{chunk-DCKT635J.mjs → chunk-LHQACMZY.mjs} +3 -3
- package/dist/{chunk-V23CBULF.mjs → chunk-SZLAPJKD.mjs} +3 -3
- 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
|
-
|
|
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/
|
|
93
|
-
var
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
348
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
342
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
395
343
|
function Dialog(_a) {
|
|
396
344
|
var props = __objRest(_a, []);
|
|
397
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
456
|
-
/* @__PURE__ */ (0,
|
|
457
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
485
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
492
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
545
493
|
import_dialog.Dialog.Title,
|
|
546
494
|
__spreadValues({
|
|
547
|
-
className: cn("text-h5
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
653
|
-
/* @__PURE__ */ (0,
|
|
654
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
664
|
-
isComingSoon && /* @__PURE__ */ (0,
|
|
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,
|
|
667
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
690
|
-
/* @__PURE__ */ (0,
|
|
691
|
-
infoBadge && /* @__PURE__ */ (0,
|
|
692
|
-
tags.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
706
|
-
/* @__PURE__ */ (0,
|
|
707
|
-
/* @__PURE__ */ (0,
|
|
708
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
711
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
720
|
-
/* @__PURE__ */ (0,
|
|
721
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
747
|
-
/* @__PURE__ */ (0,
|
|
748
|
-
imageUrl && /* @__PURE__ */ (0,
|
|
749
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
752
|
-
/* @__PURE__ */ (0,
|
|
753
|
-
isConnected && /* @__PURE__ */ (0,
|
|
754
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
795
|
-
/* @__PURE__ */ (0,
|
|
796
|
-
/* @__PURE__ */ (0,
|
|
797
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
805
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
808
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
831
|
-
/* @__PURE__ */ (0,
|
|
832
|
-
/* @__PURE__ */ (0,
|
|
833
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
836
|
-
/* @__PURE__ */ (0,
|
|
837
|
-
/* @__PURE__ */ (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,
|
|
841
|
-
/* @__PURE__ */ (0,
|
|
842
|
-
/* @__PURE__ */ (0,
|
|
843
|
-
/* @__PURE__ */ (0,
|
|
844
|
-
/* @__PURE__ */ (0,
|
|
845
|
-
/* @__PURE__ */ (0,
|
|
846
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
903
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "font-medium", children: serviceData.accountIdentifier })
|
|
851
904
|
] }),
|
|
852
|
-
/* @__PURE__ */ (0,
|
|
853
|
-
/* @__PURE__ */ (0,
|
|
854
|
-
/* @__PURE__ */ (0,
|
|
855
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
858
|
-
/* @__PURE__ */ (0,
|
|
859
|
-
/* @__PURE__ */ (0,
|
|
860
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
865
|
-
/* @__PURE__ */ (0,
|
|
866
|
-
/* @__PURE__ */ (0,
|
|
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-
|
|
922
|
+
className: "flex items-center gap-2 text-sm",
|
|
870
923
|
children: [
|
|
871
|
-
/* @__PURE__ */ (0,
|
|
872
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
879
|
-
/* @__PURE__ */ (0,
|
|
880
|
-
/* @__PURE__ */ (0,
|
|
881
|
-
/* @__PURE__ */ (0,
|
|
882
|
-
/* @__PURE__ */ (0,
|
|
883
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
898
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
1018
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Button, { size: "sm", onClick: onReconnect, children: "Reconnect" })
|
|
918
1019
|
] })
|
|
919
|
-
] }) : /* @__PURE__ */ (0,
|
|
920
|
-
/* @__PURE__ */ (0,
|
|
921
|
-
/* @__PURE__ */ (0,
|
|
922
|
-
/* @__PURE__ */ (0,
|
|
923
|
-
/* @__PURE__ */ (0,
|
|
924
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
932
|
-
/* @__PURE__ */ (0,
|
|
933
|
-
connectPermissions.map((perm) => /* @__PURE__ */ (0,
|
|
934
|
-
/* @__PURE__ */ (0,
|
|
935
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
940
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1050
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Button, { size: "sm", onClick: onConnect, children: "Connect" })
|
|
950
1051
|
] })
|
|
951
1052
|
] }) }) });
|
|
952
1053
|
}
|