medusajs-documents-plugin 1.1.26 → 1.1.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/.medusa/server/src/admin/index.js +583 -172
- package/.medusa/server/src/admin/index.mjs +584 -173
- package/.medusa/server/src/api/admin/documents/sync/route.js +278 -0
- package/.medusa/server/src/api/admin/documents/templates/preview/route.js +89 -42
- package/CHANGELOG.md +8 -0
- package/package.json +1 -1
|
@@ -272,6 +272,32 @@ All hardware replacements and associated workshop labor are covered under our co
|
|
|
272
272
|
{ title: "Workshop Labor & Clean-Room Installation", description: "Certified technician installation & calibration", quantity: 1, unit_price: 45 }
|
|
273
273
|
]
|
|
274
274
|
},
|
|
275
|
+
{
|
|
276
|
+
id: "trade_in",
|
|
277
|
+
name: "Device Trade-In Agreement",
|
|
278
|
+
icon: "🔄",
|
|
279
|
+
badge: "Trade-In & Transfer",
|
|
280
|
+
title: "Device Trade-In & Buyback Agreement",
|
|
281
|
+
subject: "Device Trade-In & Buyback Agreement - Urban Device Care",
|
|
282
|
+
body_text: `This agreement confirms the valuation, transfer of title, and trade-in credit for the listed customer hardware. Customer verifies legal ownership and consents to complete data sanitation and ownership transfer.`,
|
|
283
|
+
items: [
|
|
284
|
+
{ title: "Trade-In Device Valuation & Credit", description: "Assessed Grade A condition allowance", quantity: 1, unit_price: 25e3 },
|
|
285
|
+
{ title: "Data Sanitization & Ownership Transfer", description: "Certified NIST 800-88 cryptographic wipe", quantity: 1, unit_price: 0 }
|
|
286
|
+
]
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
id: "destruction",
|
|
290
|
+
name: "Certificate of Destruction & Disposal",
|
|
291
|
+
icon: "♻️",
|
|
292
|
+
badge: "Eco & Compliance",
|
|
293
|
+
title: "Certificate of Destruction & Eco-Disposal",
|
|
294
|
+
subject: "Certificate of Hardware Destruction & Eco-Disposal",
|
|
295
|
+
body_text: `This certificate confirms that the decommissioned hardware listed below has been safely demanufactured, shredded, or recycled in full compliance with WEEE and environmental data destruction standards.`,
|
|
296
|
+
items: [
|
|
297
|
+
{ title: "Hardware Demanufacturing & Shredding", description: "Certified environmental destruction", quantity: 1, unit_price: 0 },
|
|
298
|
+
{ title: "Hazardous Materials Recycling", description: "Zero-landfill lithium battery reclamation", quantity: 1, unit_price: 0 }
|
|
299
|
+
]
|
|
300
|
+
},
|
|
275
301
|
{
|
|
276
302
|
id: "blank",
|
|
277
303
|
name: "Blank Custom Document",
|
|
@@ -290,10 +316,11 @@ const DocumentsPage = () => {
|
|
|
290
316
|
const [documents, setDocuments] = react.useState([]);
|
|
291
317
|
const [loading, setLoading] = react.useState(true);
|
|
292
318
|
const [searchTerm, setSearchTerm] = react.useState("");
|
|
293
|
-
const [typeFilter, setTypeFilter] = react.useState("
|
|
319
|
+
const [typeFilter, setTypeFilter] = react.useState("all");
|
|
294
320
|
const [sourceFilter, setSourceFilter] = react.useState("all");
|
|
295
321
|
const [zohoLiveDocs, setZohoLiveDocs] = react.useState([]);
|
|
296
322
|
const [loadingZoho, setLoadingZoho] = react.useState(false);
|
|
323
|
+
const [isSyncingRepairs, setIsSyncingRepairs] = react.useState(false);
|
|
297
324
|
const [groupByJob, setGroupByJob] = react.useState(true);
|
|
298
325
|
const [expandedGroups, setExpandedGroups] = react.useState({});
|
|
299
326
|
const toggleGroup = (groupId) => {
|
|
@@ -364,6 +391,7 @@ const DocumentsPage = () => {
|
|
|
364
391
|
const [previewModalOpen, setPreviewModalOpen] = react.useState(false);
|
|
365
392
|
const [previewStyle, setPreviewStyle] = react.useState("modern");
|
|
366
393
|
const [previewType, setPreviewType] = react.useState("invoice");
|
|
394
|
+
const [previewPreset, setPreviewPreset] = react.useState(null);
|
|
367
395
|
const [previewBlobUrl, setPreviewBlobUrl] = react.useState(null);
|
|
368
396
|
const [isPreviewModalLoading, setIsPreviewModalLoading] = react.useState(false);
|
|
369
397
|
const [isGeneratingManual, setIsGeneratingManual] = react.useState(false);
|
|
@@ -580,10 +608,11 @@ const DocumentsPage = () => {
|
|
|
580
608
|
setIsGeneratingCustom(false);
|
|
581
609
|
}
|
|
582
610
|
};
|
|
583
|
-
const loadPreviewBlob = async (style, type) => {
|
|
611
|
+
const loadPreviewBlob = async (style, type, preset) => {
|
|
584
612
|
setIsPreviewModalLoading(true);
|
|
585
613
|
try {
|
|
586
|
-
const
|
|
614
|
+
const presetParam = preset ? `&preset=${preset}` : "";
|
|
615
|
+
const res = await fetch(`/admin/documents/templates/preview?style=${style}&type=${type}${presetParam}`, {
|
|
587
616
|
credentials: "include"
|
|
588
617
|
});
|
|
589
618
|
if (!res.ok) {
|
|
@@ -604,31 +633,53 @@ const DocumentsPage = () => {
|
|
|
604
633
|
setPreviewLoading(null);
|
|
605
634
|
}
|
|
606
635
|
};
|
|
607
|
-
const handlePreviewTemplate = async (style, type) => {
|
|
608
|
-
const key = `${style}-${type}`;
|
|
636
|
+
const handlePreviewTemplate = async (style, type, preset) => {
|
|
637
|
+
const key = preset ? `${style}-${type}-${preset}` : `${style}-${type}`;
|
|
609
638
|
setPreviewLoading(key);
|
|
610
639
|
setPreviewStyle(style);
|
|
611
640
|
setPreviewType(type);
|
|
641
|
+
setPreviewPreset(preset || null);
|
|
612
642
|
setPreviewModalOpen(true);
|
|
613
|
-
await loadPreviewBlob(style, type);
|
|
643
|
+
await loadPreviewBlob(style, type, preset);
|
|
614
644
|
};
|
|
615
645
|
const switchPreview = async (style, type) => {
|
|
616
646
|
setPreviewStyle(style);
|
|
617
647
|
setPreviewType(type);
|
|
618
|
-
await loadPreviewBlob(style, type);
|
|
648
|
+
await loadPreviewBlob(style, type, previewPreset);
|
|
619
649
|
};
|
|
620
650
|
const handleOpenPreviewNewTab = () => {
|
|
621
|
-
|
|
651
|
+
const presetParam = previewPreset ? `&preset=${previewPreset}` : "";
|
|
652
|
+
window.open(`/admin/documents/templates/preview?style=${previewStyle}&type=${previewType}${presetParam}`, "_blank");
|
|
622
653
|
};
|
|
623
654
|
const handleDownloadPreview = () => {
|
|
624
655
|
if (!previewBlobUrl) return;
|
|
625
656
|
const a = document.createElement("a");
|
|
626
657
|
a.href = previewBlobUrl;
|
|
627
|
-
a.download = `preview-${previewStyle}-${previewType}.pdf`;
|
|
658
|
+
a.download = `preview-${previewStyle}-${previewPreset || previewType}.pdf`;
|
|
628
659
|
document.body.appendChild(a);
|
|
629
660
|
a.click();
|
|
630
661
|
document.body.removeChild(a);
|
|
631
662
|
};
|
|
663
|
+
const handleSyncRepairs = async () => {
|
|
664
|
+
setIsSyncingRepairs(true);
|
|
665
|
+
try {
|
|
666
|
+
const res = await fetch("/admin/documents/sync", {
|
|
667
|
+
method: "POST",
|
|
668
|
+
credentials: "include"
|
|
669
|
+
});
|
|
670
|
+
const data = await res.json().catch(() => ({}));
|
|
671
|
+
if (res.ok && data.success) {
|
|
672
|
+
alert(data.message || `Successfully synced ${data.synced_tickets || 0} repairs!`);
|
|
673
|
+
loadDocuments();
|
|
674
|
+
} else {
|
|
675
|
+
alert(`Sync failed: ${data.message || "Unknown error"}`);
|
|
676
|
+
}
|
|
677
|
+
} catch (e) {
|
|
678
|
+
alert(`Error syncing repairs: ${e.message}`);
|
|
679
|
+
} finally {
|
|
680
|
+
setIsSyncingRepairs(false);
|
|
681
|
+
}
|
|
682
|
+
};
|
|
632
683
|
const handleViewDocument = (id, displayId) => {
|
|
633
684
|
window.open(`/admin/documents/${id}/document`, "_blank");
|
|
634
685
|
};
|
|
@@ -759,6 +810,20 @@ const DocumentsPage = () => {
|
|
|
759
810
|
] })
|
|
760
811
|
] }),
|
|
761
812
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
813
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
814
|
+
ui.Button,
|
|
815
|
+
{
|
|
816
|
+
variant: "secondary",
|
|
817
|
+
size: "small",
|
|
818
|
+
onClick: handleSyncRepairs,
|
|
819
|
+
isLoading: isSyncingRepairs,
|
|
820
|
+
title: "Scan and synchronize all repair tickets and Zoho documents",
|
|
821
|
+
children: [
|
|
822
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowPath, { className: `w-4 h-4 mr-1 ${isSyncingRepairs ? "animate-spin" : ""}` }),
|
|
823
|
+
" Sync Repairs & Zoho"
|
|
824
|
+
]
|
|
825
|
+
}
|
|
826
|
+
),
|
|
762
827
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { variant: "secondary", size: "small", onClick: () => setManualModalOpen(true), children: [
|
|
763
828
|
/* @__PURE__ */ jsxRuntime.jsx(icons.Plus, { className: "w-4 h-4 mr-1" }),
|
|
764
829
|
" Create Invoice"
|
|
@@ -847,8 +912,8 @@ const DocumentsPage = () => {
|
|
|
847
912
|
children: [
|
|
848
913
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, { placeholder: "Document Type" }) }),
|
|
849
914
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
850
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "
|
|
851
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "
|
|
915
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "all", children: "All Types (Default)" }),
|
|
916
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "invoice", children: "Invoices" }),
|
|
852
917
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "receipt", children: "Receipts" }),
|
|
853
918
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "estimate", children: "Estimates / Quotes" }),
|
|
854
919
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "job_card", children: "Job Cards" }),
|
|
@@ -1366,221 +1431,567 @@ const DocumentsPage = () => {
|
|
|
1366
1431
|
] })
|
|
1367
1432
|
] })
|
|
1368
1433
|
] }),
|
|
1369
|
-
activeTab === "templates" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6 max-w-
|
|
1370
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1371
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", className: "text-
|
|
1372
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle", children: "Configure
|
|
1434
|
+
activeTab === "templates" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6 max-w-6xl flex flex-col gap-6", children: [
|
|
1435
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
1436
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", className: "text-lg font-semibold", children: "Document Templates & Live Previews" }),
|
|
1437
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle", children: "Configure styling templates and preview official customer, workshop, and compliance documents. Zoho-backed documents match official Zoho Books layouts; workshop and custom certificates use dedicated professional formats with consistent company headers." })
|
|
1373
1438
|
] }),
|
|
1374
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-
|
|
1375
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-
|
|
1439
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5", children: [
|
|
1440
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1376
1441
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1377
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1378
|
-
|
|
1442
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1443
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1444
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "🧾" }),
|
|
1445
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Tax Invoice" })
|
|
1446
|
+
] }),
|
|
1447
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "orange", size: "small", children: "Zoho Exact" })
|
|
1448
|
+
] }),
|
|
1449
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Official invoice matching Zoho Books layout with itemized parts & labor, balance due highlight, online payment shortlink, QR tracking, and KRA PIN." }),
|
|
1450
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1451
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1452
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1453
|
+
ui.Select,
|
|
1454
|
+
{
|
|
1455
|
+
value: settings.invoice_template || "zoho_exact",
|
|
1456
|
+
onValueChange: (v) => updateSettingField("invoice_template", v),
|
|
1457
|
+
children: [
|
|
1458
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1459
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1460
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "zoho_exact", children: "Zoho Books Exact Format" }),
|
|
1461
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1462
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1463
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1464
|
+
] })
|
|
1465
|
+
]
|
|
1466
|
+
}
|
|
1467
|
+
)
|
|
1468
|
+
] })
|
|
1469
|
+
] }),
|
|
1470
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1471
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Type: invoice" }),
|
|
1379
1472
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1380
|
-
ui.
|
|
1473
|
+
ui.Button,
|
|
1381
1474
|
{
|
|
1382
|
-
|
|
1383
|
-
|
|
1475
|
+
variant: "secondary",
|
|
1476
|
+
size: "small",
|
|
1477
|
+
onClick: () => handlePreviewTemplate(settings.invoice_template || "zoho_exact", "invoice"),
|
|
1478
|
+
isLoading: previewLoading === `${settings.invoice_template || "zoho_exact"}-invoice`,
|
|
1384
1479
|
children: [
|
|
1385
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1386
|
-
|
|
1387
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "zoho_exact", children: "Zoho Books Exact Layout" }),
|
|
1388
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1389
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1390
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1391
|
-
] })
|
|
1480
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1481
|
+
" Preview Invoice"
|
|
1392
1482
|
]
|
|
1393
1483
|
}
|
|
1394
1484
|
)
|
|
1485
|
+
] })
|
|
1486
|
+
] }),
|
|
1487
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1488
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1489
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1490
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1491
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "💼" }),
|
|
1492
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Repair Estimate / Quote" })
|
|
1493
|
+
] }),
|
|
1494
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "orange", size: "small", children: "Zoho Exact" })
|
|
1495
|
+
] }),
|
|
1496
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Itemized repair quotation matching Zoho Books with validity period, customer approval links, and workshop labor breakdown." }),
|
|
1497
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1498
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1499
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1500
|
+
ui.Select,
|
|
1501
|
+
{
|
|
1502
|
+
value: settings.estimate_template || "zoho_exact",
|
|
1503
|
+
onValueChange: (v) => updateSettingField("estimate_template", v),
|
|
1504
|
+
children: [
|
|
1505
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1506
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1507
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "zoho_exact", children: "Zoho Books Exact Format" }),
|
|
1508
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1509
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1510
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1511
|
+
] })
|
|
1512
|
+
]
|
|
1513
|
+
}
|
|
1514
|
+
)
|
|
1515
|
+
] })
|
|
1395
1516
|
] }),
|
|
1396
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1397
|
-
ui.
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1517
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1518
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Type: quote" }),
|
|
1519
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1520
|
+
ui.Button,
|
|
1521
|
+
{
|
|
1522
|
+
variant: "secondary",
|
|
1523
|
+
size: "small",
|
|
1524
|
+
onClick: () => handlePreviewTemplate(settings.estimate_template || "zoho_exact", "estimate"),
|
|
1525
|
+
isLoading: previewLoading === `${settings.estimate_template || "zoho_exact"}-estimate`,
|
|
1526
|
+
children: [
|
|
1527
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1528
|
+
" Preview Estimate"
|
|
1529
|
+
]
|
|
1530
|
+
}
|
|
1531
|
+
)
|
|
1532
|
+
] })
|
|
1409
1533
|
] }),
|
|
1410
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-
|
|
1534
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1411
1535
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1412
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1413
|
-
|
|
1536
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1537
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1538
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "💳" }),
|
|
1539
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Payment Receipt" })
|
|
1540
|
+
] }),
|
|
1541
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "orange", size: "small", children: "Zoho Exact" })
|
|
1542
|
+
] }),
|
|
1543
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Official payment receipt issued upon payment capture with green PAID watermark stamp, payment reference, and receipt details." }),
|
|
1544
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1545
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1546
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1547
|
+
ui.Select,
|
|
1548
|
+
{
|
|
1549
|
+
value: settings.receipt_template || "zoho_exact",
|
|
1550
|
+
onValueChange: (v) => updateSettingField("receipt_template", v),
|
|
1551
|
+
children: [
|
|
1552
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1553
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1554
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "zoho_exact", children: "Zoho Books Exact Format" }),
|
|
1555
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1556
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1557
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1558
|
+
] })
|
|
1559
|
+
]
|
|
1560
|
+
}
|
|
1561
|
+
)
|
|
1562
|
+
] })
|
|
1563
|
+
] }),
|
|
1564
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1565
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Type: receipt" }),
|
|
1414
1566
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1415
|
-
ui.
|
|
1567
|
+
ui.Button,
|
|
1416
1568
|
{
|
|
1417
|
-
|
|
1418
|
-
|
|
1569
|
+
variant: "secondary",
|
|
1570
|
+
size: "small",
|
|
1571
|
+
onClick: () => handlePreviewTemplate(settings.receipt_template || "zoho_exact", "receipt"),
|
|
1572
|
+
isLoading: previewLoading === `${settings.receipt_template || "zoho_exact"}-receipt`,
|
|
1419
1573
|
children: [
|
|
1420
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1421
|
-
|
|
1422
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1423
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1424
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1425
|
-
] })
|
|
1574
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1575
|
+
" Preview Receipt"
|
|
1426
1576
|
]
|
|
1427
1577
|
}
|
|
1428
1578
|
)
|
|
1579
|
+
] })
|
|
1580
|
+
] }),
|
|
1581
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1582
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1583
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1584
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1585
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "📋" }),
|
|
1586
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Repair Job Card" })
|
|
1587
|
+
] }),
|
|
1588
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "blue", size: "small", children: "Workshop Intake" })
|
|
1589
|
+
] }),
|
|
1590
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Customer intake job card featuring asset specifications, serial/IMEI, intake condition, checklist tasks, and technician sign-off." }),
|
|
1591
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1592
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1593
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1594
|
+
ui.Select,
|
|
1595
|
+
{
|
|
1596
|
+
value: settings.job_card_template || "standard",
|
|
1597
|
+
onValueChange: (v) => updateSettingField("job_card_template", v),
|
|
1598
|
+
children: [
|
|
1599
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1600
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1601
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "standard", children: "Standard Workshop Intake" }),
|
|
1602
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1603
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1604
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1605
|
+
] })
|
|
1606
|
+
]
|
|
1607
|
+
}
|
|
1608
|
+
)
|
|
1609
|
+
] })
|
|
1429
1610
|
] }),
|
|
1430
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1431
|
-
ui.
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1611
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1612
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Type: job_card" }),
|
|
1613
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1614
|
+
ui.Button,
|
|
1615
|
+
{
|
|
1616
|
+
variant: "secondary",
|
|
1617
|
+
size: "small",
|
|
1618
|
+
onClick: () => handlePreviewTemplate(settings.job_card_template || "standard", "job_card"),
|
|
1619
|
+
isLoading: previewLoading === `${settings.job_card_template || "standard"}-job_card`,
|
|
1620
|
+
children: [
|
|
1621
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1622
|
+
" Preview Job Card"
|
|
1623
|
+
]
|
|
1624
|
+
}
|
|
1625
|
+
)
|
|
1626
|
+
] })
|
|
1443
1627
|
] }),
|
|
1444
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-
|
|
1628
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1445
1629
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1446
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1447
|
-
|
|
1630
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1631
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1632
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "📦" }),
|
|
1633
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Packing Slip" })
|
|
1634
|
+
] }),
|
|
1635
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "purple", size: "small", children: "Order Fulfillment" })
|
|
1636
|
+
] }),
|
|
1637
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Used for warehouse fulfillment, package tracking, and shipping dispatch verification with itemized manifest." }),
|
|
1638
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1639
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1640
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1641
|
+
ui.Select,
|
|
1642
|
+
{
|
|
1643
|
+
value: settings.packing_slip_template || "modern",
|
|
1644
|
+
onValueChange: (v) => updateSettingField("packing_slip_template", v),
|
|
1645
|
+
children: [
|
|
1646
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1647
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1648
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1649
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1650
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1651
|
+
] })
|
|
1652
|
+
]
|
|
1653
|
+
}
|
|
1654
|
+
)
|
|
1655
|
+
] })
|
|
1656
|
+
] }),
|
|
1657
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1658
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Type: packing_slip" }),
|
|
1448
1659
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1449
|
-
ui.
|
|
1660
|
+
ui.Button,
|
|
1450
1661
|
{
|
|
1451
|
-
|
|
1452
|
-
|
|
1662
|
+
variant: "secondary",
|
|
1663
|
+
size: "small",
|
|
1664
|
+
onClick: () => handlePreviewTemplate(settings.packing_slip_template || "modern", "packing_slip"),
|
|
1665
|
+
isLoading: previewLoading === `${settings.packing_slip_template || "modern"}-packing_slip`,
|
|
1453
1666
|
children: [
|
|
1454
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1455
|
-
|
|
1456
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "zoho_exact", children: "Zoho Books Exact Layout" }),
|
|
1457
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1458
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1459
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1460
|
-
] })
|
|
1667
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1668
|
+
" Preview Packing Slip"
|
|
1461
1669
|
]
|
|
1462
1670
|
}
|
|
1463
1671
|
)
|
|
1672
|
+
] })
|
|
1673
|
+
] }),
|
|
1674
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1675
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1676
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1677
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1678
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "🛡️" }),
|
|
1679
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Warranty Certificate" })
|
|
1680
|
+
] }),
|
|
1681
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "green", size: "small", children: "90-Day Coverage" })
|
|
1682
|
+
] }),
|
|
1683
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Official certificate verifying professional repair with OEM-specification components and 90-day parts and labor coverage." }),
|
|
1684
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1685
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1686
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1687
|
+
ui.Select,
|
|
1688
|
+
{
|
|
1689
|
+
value: settings.custom_doc_template || "modern",
|
|
1690
|
+
onValueChange: (v) => updateSettingField("custom_doc_template", v),
|
|
1691
|
+
children: [
|
|
1692
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1693
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1694
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1695
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1696
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1697
|
+
] })
|
|
1698
|
+
]
|
|
1699
|
+
}
|
|
1700
|
+
)
|
|
1701
|
+
] })
|
|
1464
1702
|
] }),
|
|
1465
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1466
|
-
ui.
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1703
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1704
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Preset: warranty" }),
|
|
1705
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1706
|
+
ui.Button,
|
|
1707
|
+
{
|
|
1708
|
+
variant: "secondary",
|
|
1709
|
+
size: "small",
|
|
1710
|
+
onClick: () => handlePreviewTemplate(settings.custom_doc_template || "modern", "custom", "warranty"),
|
|
1711
|
+
isLoading: previewLoading === `${settings.custom_doc_template || "modern"}-custom-warranty`,
|
|
1712
|
+
children: [
|
|
1713
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1714
|
+
" Preview Certificate"
|
|
1715
|
+
]
|
|
1716
|
+
}
|
|
1717
|
+
)
|
|
1718
|
+
] })
|
|
1478
1719
|
] }),
|
|
1479
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-
|
|
1720
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1480
1721
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1481
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1482
|
-
|
|
1722
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1723
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1724
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "🔬" }),
|
|
1725
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Diagnostic & Inspection" })
|
|
1726
|
+
] }),
|
|
1727
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "purple", size: "small", children: "Hardware Findings" })
|
|
1728
|
+
] }),
|
|
1729
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Technical diagnostic report featuring component voltage checks, TrueTone / digitizer measurements, and technician notes." }),
|
|
1730
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1731
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1732
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1733
|
+
ui.Select,
|
|
1734
|
+
{
|
|
1735
|
+
value: settings.custom_doc_template || "modern",
|
|
1736
|
+
onValueChange: (v) => updateSettingField("custom_doc_template", v),
|
|
1737
|
+
children: [
|
|
1738
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1739
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1740
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1741
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1742
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1743
|
+
] })
|
|
1744
|
+
]
|
|
1745
|
+
}
|
|
1746
|
+
)
|
|
1747
|
+
] })
|
|
1748
|
+
] }),
|
|
1749
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1750
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Preset: diagnostic" }),
|
|
1483
1751
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1484
|
-
ui.
|
|
1752
|
+
ui.Button,
|
|
1485
1753
|
{
|
|
1486
|
-
|
|
1487
|
-
|
|
1754
|
+
variant: "secondary",
|
|
1755
|
+
size: "small",
|
|
1756
|
+
onClick: () => handlePreviewTemplate(settings.custom_doc_template || "modern", "custom", "diagnostic"),
|
|
1757
|
+
isLoading: previewLoading === `${settings.custom_doc_template || "modern"}-custom-diagnostic`,
|
|
1488
1758
|
children: [
|
|
1489
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1490
|
-
|
|
1491
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "zoho_exact", children: "Zoho Books Exact Layout" }),
|
|
1492
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1493
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1494
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1495
|
-
] })
|
|
1759
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1760
|
+
" Preview Report"
|
|
1496
1761
|
]
|
|
1497
1762
|
}
|
|
1498
1763
|
)
|
|
1764
|
+
] })
|
|
1765
|
+
] }),
|
|
1766
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1767
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1768
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1769
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1770
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "📜" }),
|
|
1771
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Service Completion" })
|
|
1772
|
+
] }),
|
|
1773
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "green", size: "small", children: "QC Cleared" })
|
|
1774
|
+
] }),
|
|
1775
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Certificate verifying that maintenance, repair overhaul, and 100% bench functional test criteria have been passed." }),
|
|
1776
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1777
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1778
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1779
|
+
ui.Select,
|
|
1780
|
+
{
|
|
1781
|
+
value: settings.custom_doc_template || "modern",
|
|
1782
|
+
onValueChange: (v) => updateSettingField("custom_doc_template", v),
|
|
1783
|
+
children: [
|
|
1784
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1785
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1786
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1787
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1788
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1789
|
+
] })
|
|
1790
|
+
]
|
|
1791
|
+
}
|
|
1792
|
+
)
|
|
1793
|
+
] })
|
|
1499
1794
|
] }),
|
|
1500
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1501
|
-
ui.
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1795
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1796
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Preset: service_completion" }),
|
|
1797
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1798
|
+
ui.Button,
|
|
1799
|
+
{
|
|
1800
|
+
variant: "secondary",
|
|
1801
|
+
size: "small",
|
|
1802
|
+
onClick: () => handlePreviewTemplate(settings.custom_doc_template || "modern", "custom", "service_completion"),
|
|
1803
|
+
isLoading: previewLoading === `${settings.custom_doc_template || "modern"}-custom-service_completion`,
|
|
1804
|
+
children: [
|
|
1805
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1806
|
+
" Preview Certificate"
|
|
1807
|
+
]
|
|
1808
|
+
}
|
|
1809
|
+
)
|
|
1810
|
+
] })
|
|
1513
1811
|
] }),
|
|
1514
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-
|
|
1812
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1515
1813
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1516
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1517
|
-
|
|
1814
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1815
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1816
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "🤝" }),
|
|
1817
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Asset Handover & Custody" })
|
|
1818
|
+
] }),
|
|
1819
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "blue", size: "small", children: "Custody Release" })
|
|
1820
|
+
] }),
|
|
1821
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Official physical custody and equipment return agreement acknowledging customer receipt in verified working condition." }),
|
|
1822
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1823
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1824
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1825
|
+
ui.Select,
|
|
1826
|
+
{
|
|
1827
|
+
value: settings.custom_doc_template || "modern",
|
|
1828
|
+
onValueChange: (v) => updateSettingField("custom_doc_template", v),
|
|
1829
|
+
children: [
|
|
1830
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1831
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1832
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1833
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1834
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1835
|
+
] })
|
|
1836
|
+
]
|
|
1837
|
+
}
|
|
1838
|
+
)
|
|
1839
|
+
] })
|
|
1840
|
+
] }),
|
|
1841
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1842
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Preset: handover" }),
|
|
1518
1843
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1519
|
-
ui.
|
|
1844
|
+
ui.Button,
|
|
1520
1845
|
{
|
|
1521
|
-
|
|
1522
|
-
|
|
1846
|
+
variant: "secondary",
|
|
1847
|
+
size: "small",
|
|
1848
|
+
onClick: () => handlePreviewTemplate(settings.custom_doc_template || "modern", "custom", "handover"),
|
|
1849
|
+
isLoading: previewLoading === `${settings.custom_doc_template || "modern"}-custom-handover`,
|
|
1523
1850
|
children: [
|
|
1524
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1525
|
-
|
|
1526
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1527
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1528
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" }),
|
|
1529
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "zoho_exact", children: "Zoho Books Exact Layout" })
|
|
1530
|
-
] })
|
|
1851
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1852
|
+
" Preview Handover"
|
|
1531
1853
|
]
|
|
1532
1854
|
}
|
|
1533
1855
|
)
|
|
1856
|
+
] })
|
|
1857
|
+
] }),
|
|
1858
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1859
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1860
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1861
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1862
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "💼" }),
|
|
1863
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Commercial Proforma Quote" })
|
|
1864
|
+
] }),
|
|
1865
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "orange", size: "small", children: "Cost Estimate" })
|
|
1866
|
+
] }),
|
|
1867
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Itemized corporate repair quotation with workshop turnaround estimate, OEM part warranties, and 14-day validity period." }),
|
|
1868
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1869
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1870
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1871
|
+
ui.Select,
|
|
1872
|
+
{
|
|
1873
|
+
value: settings.custom_doc_template || "modern",
|
|
1874
|
+
onValueChange: (v) => updateSettingField("custom_doc_template", v),
|
|
1875
|
+
children: [
|
|
1876
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1877
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1878
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1879
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1880
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1881
|
+
] })
|
|
1882
|
+
]
|
|
1883
|
+
}
|
|
1884
|
+
)
|
|
1885
|
+
] })
|
|
1534
1886
|
] }),
|
|
1535
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1536
|
-
ui.
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1887
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1888
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Preset: proforma" }),
|
|
1889
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1890
|
+
ui.Button,
|
|
1891
|
+
{
|
|
1892
|
+
variant: "secondary",
|
|
1893
|
+
size: "small",
|
|
1894
|
+
onClick: () => handlePreviewTemplate(settings.custom_doc_template || "modern", "custom", "proforma"),
|
|
1895
|
+
isLoading: previewLoading === `${settings.custom_doc_template || "modern"}-custom-proforma`,
|
|
1896
|
+
children: [
|
|
1897
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1898
|
+
" Preview Proforma"
|
|
1899
|
+
]
|
|
1900
|
+
}
|
|
1901
|
+
)
|
|
1902
|
+
] })
|
|
1548
1903
|
] }),
|
|
1549
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-
|
|
1904
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1550
1905
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1551
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1552
|
-
|
|
1906
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1907
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1908
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "🔄" }),
|
|
1909
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Device Trade-In Agreement" })
|
|
1910
|
+
] }),
|
|
1911
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "green", size: "small", children: "Trade-In & Transfer" })
|
|
1912
|
+
] }),
|
|
1913
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Official contract confirming hardware valuation, title handover, and trade-in store credit with verified ownership transfer." }),
|
|
1914
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1915
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1916
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1917
|
+
ui.Select,
|
|
1918
|
+
{
|
|
1919
|
+
value: settings.custom_doc_template || "modern",
|
|
1920
|
+
onValueChange: (v) => updateSettingField("custom_doc_template", v),
|
|
1921
|
+
children: [
|
|
1922
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1923
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1924
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1925
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1926
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1927
|
+
] })
|
|
1928
|
+
]
|
|
1929
|
+
}
|
|
1930
|
+
)
|
|
1931
|
+
] })
|
|
1932
|
+
] }),
|
|
1933
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1934
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Preset: trade_in" }),
|
|
1553
1935
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1554
|
-
ui.
|
|
1936
|
+
ui.Button,
|
|
1555
1937
|
{
|
|
1556
|
-
|
|
1557
|
-
|
|
1938
|
+
variant: "secondary",
|
|
1939
|
+
size: "small",
|
|
1940
|
+
onClick: () => handlePreviewTemplate(settings.custom_doc_template || "modern", "custom", "trade_in"),
|
|
1941
|
+
isLoading: previewLoading === `${settings.custom_doc_template || "modern"}-custom-trade_in`,
|
|
1558
1942
|
children: [
|
|
1559
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1560
|
-
|
|
1561
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "standard", children: "Workshop Intake Job Card (Standard)" }),
|
|
1562
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "zoho_exact", children: "Zoho Books Exact Layout" }),
|
|
1563
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1564
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1565
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1566
|
-
] })
|
|
1943
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1944
|
+
" Preview Trade-In"
|
|
1567
1945
|
]
|
|
1568
1946
|
}
|
|
1569
1947
|
)
|
|
1948
|
+
] })
|
|
1949
|
+
] }),
|
|
1950
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5 border border-ui-border-base rounded-lg bg-ui-bg-base flex flex-col justify-between shadow-sm hover:border-ui-border-interactive transition-colors", children: [
|
|
1951
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1952
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
1953
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1954
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl", children: "♻️" }),
|
|
1955
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "font-semibold text-sm", children: "Destruction & Disposal" })
|
|
1956
|
+
] }),
|
|
1957
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "red", size: "small", children: "Eco & Compliance" })
|
|
1958
|
+
] }),
|
|
1959
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-xs text-ui-fg-subtle mb-4", children: "Certificate verifying compliant electronic demanufacturing, physical shredding, and WEEE eco-friendly recycling." }),
|
|
1960
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1961
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs font-medium", children: "Template Style" }),
|
|
1962
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1963
|
+
ui.Select,
|
|
1964
|
+
{
|
|
1965
|
+
value: settings.custom_doc_template || "modern",
|
|
1966
|
+
onValueChange: (v) => updateSettingField("custom_doc_template", v),
|
|
1967
|
+
children: [
|
|
1968
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, {}) }),
|
|
1969
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Content, { children: [
|
|
1970
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "modern", children: "Modern Minimalist" }),
|
|
1971
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "classic", children: "Classic Corporate" }),
|
|
1972
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: "minimal", children: "Clean Tech Monospace" })
|
|
1973
|
+
] })
|
|
1974
|
+
]
|
|
1975
|
+
}
|
|
1976
|
+
)
|
|
1977
|
+
] })
|
|
1570
1978
|
] }),
|
|
1571
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1572
|
-
ui.
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1979
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 pt-3 border-t border-ui-border-base flex items-center justify-between", children: [
|
|
1980
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-[11px] text-ui-fg-muted font-mono", children: "Preset: destruction" }),
|
|
1981
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1982
|
+
ui.Button,
|
|
1983
|
+
{
|
|
1984
|
+
variant: "secondary",
|
|
1985
|
+
size: "small",
|
|
1986
|
+
onClick: () => handlePreviewTemplate(settings.custom_doc_template || "modern", "custom", "destruction"),
|
|
1987
|
+
isLoading: previewLoading === `${settings.custom_doc_template || "modern"}-custom-destruction`,
|
|
1988
|
+
children: [
|
|
1989
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownTray, { className: "w-3.5 h-3.5 mr-1" }),
|
|
1990
|
+
" Preview Disposal"
|
|
1991
|
+
]
|
|
1992
|
+
}
|
|
1993
|
+
)
|
|
1994
|
+
] })
|
|
1584
1995
|
] })
|
|
1585
1996
|
] }),
|
|
1586
1997
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 mt-4", children: [
|