@splpi/estore-shared-components 7.0.1 → 7.0.3
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/dist/index.d.mts +131 -17
- package/dist/index.d.ts +131 -17
- package/dist/index.js +1380 -459
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1373 -434
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -32,6 +32,8 @@ var index_exports = {};
|
|
|
32
32
|
__export(index_exports, {
|
|
33
33
|
Beneficiary: () => beneficiary_default,
|
|
34
34
|
BottomQuickActions: () => BottomQuickActions_default,
|
|
35
|
+
DocumentUploadCard: () => DocumentUploadCard,
|
|
36
|
+
GetStarted: () => GetStarted_default,
|
|
35
37
|
HealthDeclaration: () => HealthDeclaration_default,
|
|
36
38
|
LifePlanApplication1: () => LifePlanApplication1_default,
|
|
37
39
|
LifePlanApplication2: () => LifePlanApplication2_default,
|
|
@@ -39,11 +41,17 @@ __export(index_exports, {
|
|
|
39
41
|
LifePlanApplicationFormWrapper: () => LifePlanApplicationFormWrapper_default,
|
|
40
42
|
LifePlanApplicationStepWrapper: () => LifePlanApplicationStepWrapper_default,
|
|
41
43
|
NotifyInstall: () => NotifyInstall,
|
|
44
|
+
OCR_STORAGE_KEY: () => OCR_STORAGE_KEY,
|
|
42
45
|
SharedLifePlanApplication: () => SharedLifePlanApplication_default,
|
|
43
46
|
UserProfile: () => UserProfile_default,
|
|
47
|
+
clearOcrResult: () => clearOcrResult,
|
|
44
48
|
createEmptyApplicationData: () => createEmptyApplicationData,
|
|
45
49
|
loadApplicationDataFromLocalStorage: () => loadApplicationDataFromLocalStorage,
|
|
46
|
-
|
|
50
|
+
markOcrApplied: () => markOcrApplied,
|
|
51
|
+
readOcrResult: () => readOcrResult,
|
|
52
|
+
saveApplicationDataToLocalStorage: () => saveApplicationDataToLocalStorage,
|
|
53
|
+
saveOcrResult: () => saveOcrResult,
|
|
54
|
+
useOcr: () => useOcr
|
|
47
55
|
});
|
|
48
56
|
module.exports = __toCommonJS(index_exports);
|
|
49
57
|
|
|
@@ -269,6 +277,51 @@ var STANDARD_ICON_BUTTON_STYLES = {
|
|
|
269
277
|
}
|
|
270
278
|
};
|
|
271
279
|
|
|
280
|
+
// src/hooks/ocrStorage.ts
|
|
281
|
+
var OCR_STORAGE_KEY = "ocrResult";
|
|
282
|
+
var readStored = () => {
|
|
283
|
+
try {
|
|
284
|
+
const raw = localStorage.getItem(OCR_STORAGE_KEY);
|
|
285
|
+
return raw ? JSON.parse(raw) : null;
|
|
286
|
+
} catch {
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
var readOcrResult = (section) => {
|
|
291
|
+
if (typeof window === "undefined") return null;
|
|
292
|
+
const stored = readStored();
|
|
293
|
+
if (!stored || stored.applied?.[section]) return null;
|
|
294
|
+
return stored;
|
|
295
|
+
};
|
|
296
|
+
var markOcrApplied = (section) => {
|
|
297
|
+
if (typeof window === "undefined") return false;
|
|
298
|
+
const stored = readStored();
|
|
299
|
+
if (!stored || stored.applied?.[section]) return false;
|
|
300
|
+
try {
|
|
301
|
+
localStorage.setItem(
|
|
302
|
+
OCR_STORAGE_KEY,
|
|
303
|
+
JSON.stringify({ ...stored, applied: { ...stored.applied, [section]: true } })
|
|
304
|
+
);
|
|
305
|
+
} catch {
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
return true;
|
|
309
|
+
};
|
|
310
|
+
var saveOcrResult = (value) => {
|
|
311
|
+
if (typeof window === "undefined") return;
|
|
312
|
+
try {
|
|
313
|
+
localStorage.setItem(OCR_STORAGE_KEY, JSON.stringify(value));
|
|
314
|
+
} catch {
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
var clearOcrResult = () => {
|
|
318
|
+
if (typeof window === "undefined") return;
|
|
319
|
+
try {
|
|
320
|
+
localStorage.removeItem(OCR_STORAGE_KEY);
|
|
321
|
+
} catch {
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
|
|
272
325
|
// src/NewSaleForm/LifePlanApplication1.tsx
|
|
273
326
|
var import_react4 = require("react");
|
|
274
327
|
|
|
@@ -366,11 +419,20 @@ var civilStatusCollection = (0, import_react3.createListCollection)({
|
|
|
366
419
|
{ label: "Annulled", value: "annulled" }
|
|
367
420
|
]
|
|
368
421
|
});
|
|
422
|
+
var applyOcr = (data, ocr) => ocr ? {
|
|
423
|
+
...data,
|
|
424
|
+
firstName: ocr.firstName || data.firstName || "",
|
|
425
|
+
middleName: ocr.middleName || data.middleName || "",
|
|
426
|
+
lastName: ocr.lastName || data.lastName || "",
|
|
427
|
+
birthDate: ocr.birthDate || data.birthDate || "",
|
|
428
|
+
idType: ocr.idType || data.idType || "",
|
|
429
|
+
idNumber: ocr.idNumber || data.idNumber || ""
|
|
430
|
+
} : data;
|
|
369
431
|
var LifePlanApplication1 = ({
|
|
370
432
|
initialData,
|
|
371
433
|
onUpdate
|
|
372
434
|
}) => {
|
|
373
|
-
const [formData, setFormData] = (0, import_react4.useState)({
|
|
435
|
+
const [formData, setFormData] = (0, import_react4.useState)(() => applyOcr({
|
|
374
436
|
firstName: initialData?.firstName ?? "Juan",
|
|
375
437
|
middleName: initialData?.middleName ?? "Santos",
|
|
376
438
|
lastName: initialData?.lastName ?? "Dela Cruz",
|
|
@@ -387,49 +449,14 @@ var LifePlanApplication1 = ({
|
|
|
387
449
|
emailAddress: initialData?.emailAddress ?? "juan.delacruz@example.com",
|
|
388
450
|
mailingAddress: initialData?.mailingAddress ?? "123 Mabini Street, Barangay San Antonio, Makati City",
|
|
389
451
|
landLineNumber: initialData?.landLineNumber ?? "02-8123-4567"
|
|
390
|
-
});
|
|
452
|
+
}, readOcrResult("personal")));
|
|
391
453
|
const updateFormData = (nextData) => {
|
|
392
454
|
setFormData(nextData);
|
|
393
455
|
onUpdate?.(nextData);
|
|
394
456
|
};
|
|
395
457
|
(0, import_react4.useEffect)(() => {
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
try {
|
|
399
|
-
const ocrData = JSON.parse(OCRValue);
|
|
400
|
-
let formattedBirthDate = "";
|
|
401
|
-
if (typeof ocrData?.birthDate === "string") {
|
|
402
|
-
const [month, day, year] = ocrData.birthDate.split("/").map((part) => part.trim());
|
|
403
|
-
if (month && day && year) {
|
|
404
|
-
formattedBirthDate = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
let mappedIdType = "";
|
|
408
|
-
if (ocrData?.idType) {
|
|
409
|
-
const normalizedIdType = ocrData.idType.toLowerCase().replace(/\s+/g, "_").replace(/'/g, "");
|
|
410
|
-
if (normalizedIdType.includes("passport")) {
|
|
411
|
-
mappedIdType = "passport";
|
|
412
|
-
} else if (normalizedIdType.includes("driver")) {
|
|
413
|
-
mappedIdType = "driver_license";
|
|
414
|
-
} else if (normalizedIdType.includes("national") || normalizedIdType.includes("id")) {
|
|
415
|
-
mappedIdType = "national_id";
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
const updatedData = {
|
|
419
|
-
...formData,
|
|
420
|
-
firstName: ocrData?.firstName || "",
|
|
421
|
-
lastName: ocrData?.lastName || "",
|
|
422
|
-
middleName: ocrData?.middleName || "",
|
|
423
|
-
birthDate: formattedBirthDate || "",
|
|
424
|
-
idType: mappedIdType || ""
|
|
425
|
-
};
|
|
426
|
-
updateFormData(updatedData);
|
|
427
|
-
} catch (e) {
|
|
428
|
-
console.error("Failed to parse OCR value:", e);
|
|
429
|
-
localStorage.removeItem("ocrResult");
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
}, []);
|
|
458
|
+
if (markOcrApplied("personal")) onUpdate?.(formData);
|
|
459
|
+
}, [formData, onUpdate]);
|
|
433
460
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
434
461
|
import_react3.Grid,
|
|
435
462
|
{
|
|
@@ -878,22 +905,45 @@ var cityOptions = [
|
|
|
878
905
|
"Bongao",
|
|
879
906
|
"Ipil"
|
|
880
907
|
].map((city) => ({ label: city, value: city }));
|
|
881
|
-
var districtOptions = cityOptions;
|
|
882
|
-
var barangayOptions = cityOptions;
|
|
883
908
|
var provinceCollection = (0, import_react5.createListCollection)({ items: provinceOptions });
|
|
884
909
|
var cityCollection = (0, import_react5.createListCollection)({ items: cityOptions });
|
|
885
|
-
var
|
|
886
|
-
var
|
|
910
|
+
var normalizePlace = (value) => value.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().trim().replace(/^city of\s+/, "").replace(/\s+city$/, "").replace(/[^a-z0-9]/g, "");
|
|
911
|
+
var matchOption = (candidates, options) => {
|
|
912
|
+
for (const candidate of candidates ?? []) {
|
|
913
|
+
const key = normalizePlace(candidate);
|
|
914
|
+
const match = options.find(
|
|
915
|
+
(option) => normalizePlace(option.value) === key
|
|
916
|
+
);
|
|
917
|
+
if (match) return match.value;
|
|
918
|
+
}
|
|
919
|
+
return "";
|
|
920
|
+
};
|
|
887
921
|
var LifePlanApplication2 = ({
|
|
888
|
-
onAddressUpdate
|
|
922
|
+
onAddressUpdate,
|
|
923
|
+
parseAddress
|
|
889
924
|
}) => {
|
|
890
|
-
const
|
|
891
|
-
const [
|
|
892
|
-
const [
|
|
893
|
-
const [
|
|
894
|
-
const [
|
|
895
|
-
const [
|
|
896
|
-
|
|
925
|
+
const [lot, setLot] = (0, import_react6.useState)("");
|
|
926
|
+
const [street, setStreet] = (0, import_react6.useState)("");
|
|
927
|
+
const [city, setCity] = (0, import_react6.useState)("");
|
|
928
|
+
const [province, setProvince] = (0, import_react6.useState)("");
|
|
929
|
+
const [district, setDistrict] = (0, import_react6.useState)("");
|
|
930
|
+
const [barangay, setBarangay] = (0, import_react6.useState)("");
|
|
931
|
+
(0, import_react6.useEffect)(() => {
|
|
932
|
+
if (!parseAddress) return;
|
|
933
|
+
const ocr = readOcrResult("address");
|
|
934
|
+
if (!ocr?.addressLine) return;
|
|
935
|
+
markOcrApplied("address");
|
|
936
|
+
parseAddress(ocr.addressLine).then((result) => {
|
|
937
|
+
setLot(result.lot ?? "");
|
|
938
|
+
setStreet(result.street ?? "");
|
|
939
|
+
setProvince(matchOption(result.provinceCandidates, provinceOptions));
|
|
940
|
+
setCity(matchOption(result.cityCandidates, cityOptions));
|
|
941
|
+
setDistrict(result.district ?? "");
|
|
942
|
+
setBarangay(result.barangay ?? "");
|
|
943
|
+
}).catch((error) => {
|
|
944
|
+
console.error("Error parsing address:", error);
|
|
945
|
+
});
|
|
946
|
+
}, [parseAddress]);
|
|
897
947
|
(0, import_react6.useEffect)(() => {
|
|
898
948
|
onAddressUpdate?.({
|
|
899
949
|
lot,
|
|
@@ -949,44 +999,22 @@ var LifePlanApplication2 = ({
|
|
|
949
999
|
]
|
|
950
1000
|
}
|
|
951
1001
|
) }),
|
|
952
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Field.Root, { children: /* @__PURE__ */ (0, import_jsx_runtime3.
|
|
953
|
-
|
|
1002
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Field.Root, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1003
|
+
FloatingLabelInput,
|
|
954
1004
|
{
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
children: [
|
|
960
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.HiddenSelect, {}),
|
|
961
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react5.Select.Control, { children: [
|
|
962
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.ValueText, { placeholder: "Select District" }) }),
|
|
963
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.IndicatorGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.Indicator, {}) })
|
|
964
|
-
] }),
|
|
965
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.Positioner, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.Content, { children: districtOptions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react5.Select.Item, { item, children: [
|
|
966
|
-
item.label,
|
|
967
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.ItemIndicator, {})
|
|
968
|
-
] }, item.value)) }) }) })
|
|
969
|
-
]
|
|
1005
|
+
id: "district",
|
|
1006
|
+
label: "District",
|
|
1007
|
+
value: district,
|
|
1008
|
+
onChange: (e) => setDistrict(e.target.value)
|
|
970
1009
|
}
|
|
971
1010
|
) }),
|
|
972
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Field.Root, { children: /* @__PURE__ */ (0, import_jsx_runtime3.
|
|
973
|
-
|
|
1011
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Field.Root, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1012
|
+
FloatingLabelInput,
|
|
974
1013
|
{
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
children: [
|
|
980
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.HiddenSelect, {}),
|
|
981
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react5.Select.Control, { children: [
|
|
982
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.ValueText, { placeholder: "Select Barangay" }) }),
|
|
983
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.IndicatorGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.Indicator, {}) })
|
|
984
|
-
] }),
|
|
985
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.Positioner, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.Content, { children: barangayOptions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react5.Select.Item, { item, children: [
|
|
986
|
-
item.label,
|
|
987
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Select.ItemIndicator, {})
|
|
988
|
-
] }, item.value)) }) }) })
|
|
989
|
-
]
|
|
1014
|
+
id: "barangay",
|
|
1015
|
+
label: "Barangay",
|
|
1016
|
+
value: barangay,
|
|
1017
|
+
onChange: (e) => setBarangay(e.target.value)
|
|
990
1018
|
}
|
|
991
1019
|
) }),
|
|
992
1020
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Field.Root, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
@@ -2133,6 +2161,7 @@ var InfoCard = ({
|
|
|
2133
2161
|
}
|
|
2134
2162
|
);
|
|
2135
2163
|
};
|
|
2164
|
+
var info_card_default = InfoCard;
|
|
2136
2165
|
|
|
2137
2166
|
// src/NewSaleForm/ui/input-card-accordion.tsx
|
|
2138
2167
|
var import_react15 = require("@chakra-ui/react");
|
|
@@ -2260,7 +2289,8 @@ var isEmploymentComplete = (e) => !!e && [
|
|
|
2260
2289
|
var LifePlanApplicationFormWrapper = ({
|
|
2261
2290
|
openSection,
|
|
2262
2291
|
openSectionKey,
|
|
2263
|
-
onValidChange
|
|
2292
|
+
onValidChange,
|
|
2293
|
+
parseAddress
|
|
2264
2294
|
}) => {
|
|
2265
2295
|
const [applicationData, setApplicationData] = (0, import_react18.useState)(
|
|
2266
2296
|
createEmptyApplicationData
|
|
@@ -2335,7 +2365,13 @@ var LifePlanApplicationFormWrapper = ({
|
|
|
2335
2365
|
description: "Where you currently live",
|
|
2336
2366
|
value: "address",
|
|
2337
2367
|
complete: isAddressComplete(applicationData.address),
|
|
2338
|
-
page: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2368
|
+
page: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2369
|
+
LifePlanApplication2_default,
|
|
2370
|
+
{
|
|
2371
|
+
onAddressUpdate: handleAddressUpdate,
|
|
2372
|
+
...parseAddress ? { parseAddress } : {}
|
|
2373
|
+
}
|
|
2374
|
+
)
|
|
2339
2375
|
},
|
|
2340
2376
|
{
|
|
2341
2377
|
icon: import_io.IoIosInformationCircleOutline,
|
|
@@ -3076,6 +3112,9 @@ var createLifePlanSteps = (confirmationProps) => [
|
|
|
3076
3112
|
if (confirmationProps?.onApplicationValidChange !== void 0) {
|
|
3077
3113
|
applicationFormWrapperProps.onValidChange = confirmationProps.onApplicationValidChange;
|
|
3078
3114
|
}
|
|
3115
|
+
if (confirmationProps?.parseAddress !== void 0) {
|
|
3116
|
+
applicationFormWrapperProps.parseAddress = confirmationProps.parseAddress;
|
|
3117
|
+
}
|
|
3079
3118
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(LifePlanApplicationFormWrapper_default, { ...applicationFormWrapperProps });
|
|
3080
3119
|
})()
|
|
3081
3120
|
},
|
|
@@ -3459,10 +3498,20 @@ var horizontal_stepper_default = HorizontalStepper;
|
|
|
3459
3498
|
|
|
3460
3499
|
// src/NewSaleForm/SharedLifePlanApplication.tsx
|
|
3461
3500
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
3501
|
+
var safeParse = (value) => {
|
|
3502
|
+
if (!value) return null;
|
|
3503
|
+
try {
|
|
3504
|
+
return JSON.parse(value);
|
|
3505
|
+
} catch {
|
|
3506
|
+
return null;
|
|
3507
|
+
}
|
|
3508
|
+
};
|
|
3462
3509
|
var SharedLifePlanApplication = ({
|
|
3463
3510
|
title = "Life Plan Application",
|
|
3464
3511
|
description = "Please fill out the form below to apply for a life plan.",
|
|
3465
|
-
onPaymentError
|
|
3512
|
+
onPaymentError,
|
|
3513
|
+
onCheckout,
|
|
3514
|
+
parseAddress
|
|
3466
3515
|
}) => {
|
|
3467
3516
|
const [currentStep, setCurrentStep] = (0, import_react27.useState)(0);
|
|
3468
3517
|
const [loading, setLoading] = (0, import_react27.useState)(false);
|
|
@@ -3475,6 +3524,7 @@ var SharedLifePlanApplication = ({
|
|
|
3475
3524
|
...applicationSection ? { applicationSection } : {},
|
|
3476
3525
|
applicationSectionKey,
|
|
3477
3526
|
onApplicationValidChange: setApplicationValid,
|
|
3527
|
+
...parseAddress ? { parseAddress } : {},
|
|
3478
3528
|
onEdit: (section) => {
|
|
3479
3529
|
setApplicationSection(section ?? "personal");
|
|
3480
3530
|
setApplicationSectionKey((key) => key + 1);
|
|
@@ -3485,6 +3535,38 @@ var SharedLifePlanApplication = ({
|
|
|
3485
3535
|
const handleCheckout = async () => {
|
|
3486
3536
|
if (!allAgreementsAccepted) return;
|
|
3487
3537
|
setLoading(true);
|
|
3538
|
+
try {
|
|
3539
|
+
if (!onCheckout) {
|
|
3540
|
+
throw new Error("onCheckout prop is not provided");
|
|
3541
|
+
}
|
|
3542
|
+
const checkoutRaw = sessionStorage.getItem("CheckoutCart");
|
|
3543
|
+
const cartRaw = sessionStorage.getItem("Cart");
|
|
3544
|
+
const parsed = safeParse(checkoutRaw) ?? safeParse(cartRaw);
|
|
3545
|
+
const items = Array.isArray(parsed) ? parsed : parsed ? [parsed] : [];
|
|
3546
|
+
if (items.length === 0) {
|
|
3547
|
+
throw new Error("No items to checkout");
|
|
3548
|
+
}
|
|
3549
|
+
const applicationData = loadApplicationDataFromLocalStorage() ?? createEmptyApplicationData();
|
|
3550
|
+
const checkoutPayload = items.map((item) => ({
|
|
3551
|
+
planDesc: item.planDesc,
|
|
3552
|
+
mode: item.mode,
|
|
3553
|
+
ipInstAmt: Number(item.price),
|
|
3554
|
+
planTerm: item.planTerm,
|
|
3555
|
+
quantity: item.quantity ?? 1
|
|
3556
|
+
}));
|
|
3557
|
+
const checkoutUrl = await onCheckout({
|
|
3558
|
+
items: checkoutPayload,
|
|
3559
|
+
application: applicationData
|
|
3560
|
+
});
|
|
3561
|
+
if (!checkoutUrl) throw new Error("Checkout URL not found");
|
|
3562
|
+
window.location.href = checkoutUrl;
|
|
3563
|
+
} catch (error) {
|
|
3564
|
+
console.error(error);
|
|
3565
|
+
onPaymentError?.(error);
|
|
3566
|
+
alert("Failed to proceed to payment");
|
|
3567
|
+
} finally {
|
|
3568
|
+
setLoading(false);
|
|
3569
|
+
}
|
|
3488
3570
|
};
|
|
3489
3571
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react26.Box, { w: "full", overflowX: "hidden", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3490
3572
|
horizontal_stepper_default,
|
|
@@ -3502,17 +3584,848 @@ var SharedLifePlanApplication_default = SharedLifePlanApplication;
|
|
|
3502
3584
|
|
|
3503
3585
|
// src/NewSaleForm/LifePlanApplicationStepWrapper.tsx
|
|
3504
3586
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
3505
|
-
var LifePlanApplicationStepWrapper = () => {
|
|
3506
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SharedLifePlanApplication_default, {});
|
|
3587
|
+
var LifePlanApplicationStepWrapper = (props) => {
|
|
3588
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SharedLifePlanApplication_default, { ...props });
|
|
3507
3589
|
};
|
|
3508
3590
|
var LifePlanApplicationStepWrapper_default = LifePlanApplicationStepWrapper;
|
|
3509
3591
|
|
|
3510
|
-
// src/
|
|
3511
|
-
var import_react28 =
|
|
3512
|
-
|
|
3592
|
+
// src/hooks/useOcr.ts
|
|
3593
|
+
var import_react28 = require("react");
|
|
3594
|
+
function useOcr(scanIdFn) {
|
|
3595
|
+
const [data, setData] = (0, import_react28.useState)(null);
|
|
3596
|
+
const [loading, setLoading] = (0, import_react28.useState)(false);
|
|
3597
|
+
const [error, setError] = (0, import_react28.useState)(null);
|
|
3598
|
+
const scanId = (0, import_react28.useCallback)(
|
|
3599
|
+
async (file) => {
|
|
3600
|
+
setLoading(true);
|
|
3601
|
+
setError(null);
|
|
3602
|
+
try {
|
|
3603
|
+
clearOcrResult();
|
|
3604
|
+
const result = await scanIdFn(file);
|
|
3605
|
+
saveOcrResult(result);
|
|
3606
|
+
setData(result);
|
|
3607
|
+
return result;
|
|
3608
|
+
} catch (err) {
|
|
3609
|
+
setError(err instanceof Error ? err.message : "OCR failed");
|
|
3610
|
+
throw err;
|
|
3611
|
+
} finally {
|
|
3612
|
+
setLoading(false);
|
|
3613
|
+
}
|
|
3614
|
+
},
|
|
3615
|
+
[scanIdFn]
|
|
3616
|
+
);
|
|
3617
|
+
return { data, loading, error, scanId };
|
|
3618
|
+
}
|
|
3619
|
+
|
|
3620
|
+
// src/GetStarted/GetStarted.tsx
|
|
3621
|
+
var import_st_peter_ui8 = require("st-peter-ui");
|
|
3622
|
+
var import_react33 = require("@chakra-ui/react");
|
|
3623
|
+
var import_react34 = require("react");
|
|
3624
|
+
var import_lu7 = require("react-icons/lu");
|
|
3625
|
+
|
|
3626
|
+
// src/GetStarted/Container.tsx
|
|
3627
|
+
var import_react29 = require("react");
|
|
3628
|
+
var import_react30 = require("@chakra-ui/react");
|
|
3629
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
3630
|
+
var Container = ({ children }) => {
|
|
3631
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
3632
|
+
import_react30.Box,
|
|
3633
|
+
{
|
|
3634
|
+
px: { base: 8, md: 8 },
|
|
3635
|
+
mt: { base: 16, md: 32 },
|
|
3636
|
+
mb: { base: 32, md: 16 },
|
|
3637
|
+
maxW: "7xl",
|
|
3638
|
+
mx: "auto",
|
|
3639
|
+
children
|
|
3640
|
+
}
|
|
3641
|
+
);
|
|
3642
|
+
};
|
|
3643
|
+
var Container_default = Container;
|
|
3644
|
+
|
|
3645
|
+
// src/GetStarted/DocumentUploadCard.tsx
|
|
3646
|
+
var import_react31 = require("react");
|
|
3647
|
+
var import_react32 = require("@chakra-ui/react");
|
|
3513
3648
|
var import_lu6 = require("react-icons/lu");
|
|
3649
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
3650
|
+
var PRIMARY2 = "var(--chakra-colors-primary)";
|
|
3651
|
+
var PRIMARY_SOFT = "var(--chakra-colors-primary-disabled)";
|
|
3652
|
+
var defaultNotifyError = (message) => {
|
|
3653
|
+
console.error(message);
|
|
3654
|
+
};
|
|
3655
|
+
var formatBytes = (bytes) => {
|
|
3656
|
+
if (!bytes) return "";
|
|
3657
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
3658
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;
|
|
3659
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
3660
|
+
};
|
|
3661
|
+
var validate = (file, config) => {
|
|
3662
|
+
const accepted = config.accept.split(",").map((s) => s.trim());
|
|
3663
|
+
const okType = accepted.includes(file.type) || accepted.some(
|
|
3664
|
+
(a) => a.endsWith("/*") && file.type.startsWith(a.slice(0, -1))
|
|
3665
|
+
) || accepted.some(
|
|
3666
|
+
(a) => a.startsWith(".") && file.name.toLowerCase().endsWith(a)
|
|
3667
|
+
);
|
|
3668
|
+
if (!okType) return "Unsupported file type. Please upload a JPG, PNG or PDF.";
|
|
3669
|
+
if (file.size > config.maxSizeMB * 1024 * 1024)
|
|
3670
|
+
return `File is too large. Maximum size is ${config.maxSizeMB}MB.`;
|
|
3671
|
+
return null;
|
|
3672
|
+
};
|
|
3673
|
+
var useDocumentSlot = (config, onProcess, notifyError = defaultNotifyError) => {
|
|
3674
|
+
const [slot, setSlot] = (0, import_react31.useState)({ status: "idle" });
|
|
3675
|
+
const timers = (0, import_react31.useRef)([]);
|
|
3676
|
+
const runId = (0, import_react31.useRef)(0);
|
|
3677
|
+
const clearTimers = () => {
|
|
3678
|
+
timers.current.forEach(clearTimeout);
|
|
3679
|
+
timers.current = [];
|
|
3680
|
+
};
|
|
3681
|
+
const processFile = (file, currentRun, isSignature) => {
|
|
3682
|
+
if (!onProcess) return false;
|
|
3683
|
+
onProcess(file).then((result) => {
|
|
3684
|
+
if (runId.current !== currentRun) return;
|
|
3685
|
+
setSlot((prev) => ({
|
|
3686
|
+
...prev,
|
|
3687
|
+
status: "completed",
|
|
3688
|
+
cleanedImageUrl: isSignature ? prev.previewUrl : void 0,
|
|
3689
|
+
extraction: !isSignature && result && typeof result === "object" ? result : void 0
|
|
3690
|
+
}));
|
|
3691
|
+
}).catch((err) => {
|
|
3692
|
+
if (runId.current !== currentRun) return;
|
|
3693
|
+
const message = err instanceof Error && err.message ? err.message : "We couldn't process this document. Please try again.";
|
|
3694
|
+
setSlot((prev) => ({ ...prev, status: "failed", error: message }));
|
|
3695
|
+
notifyError(message);
|
|
3696
|
+
});
|
|
3697
|
+
return true;
|
|
3698
|
+
};
|
|
3699
|
+
const runLifecycle = (file) => {
|
|
3700
|
+
clearTimers();
|
|
3701
|
+
const currentRun = ++runId.current;
|
|
3702
|
+
const previewUrl = URL.createObjectURL(file);
|
|
3703
|
+
const isSignature = config.processor === "signature";
|
|
3704
|
+
setSlot({
|
|
3705
|
+
status: "uploading",
|
|
3706
|
+
file,
|
|
3707
|
+
fileName: file.name,
|
|
3708
|
+
fileType: file.type,
|
|
3709
|
+
fileSize: file.size,
|
|
3710
|
+
previewUrl,
|
|
3711
|
+
progress: 0
|
|
3712
|
+
});
|
|
3713
|
+
let progress = 0;
|
|
3714
|
+
const tick = () => {
|
|
3715
|
+
progress = Math.min(100, progress + 20);
|
|
3716
|
+
setSlot((prev) => ({ ...prev, progress }));
|
|
3717
|
+
if (progress < 100) {
|
|
3718
|
+
timers.current.push(setTimeout(tick, 180));
|
|
3719
|
+
} else {
|
|
3720
|
+
timers.current.push(
|
|
3721
|
+
setTimeout(() => {
|
|
3722
|
+
setSlot((prev) => ({ ...prev, status: "processing" }));
|
|
3723
|
+
if (processFile(file, currentRun, isSignature)) return;
|
|
3724
|
+
timers.current.push(
|
|
3725
|
+
setTimeout(() => {
|
|
3726
|
+
setSlot((prev) => ({
|
|
3727
|
+
...prev,
|
|
3728
|
+
status: "completed",
|
|
3729
|
+
cleanedImageUrl: isSignature ? prev.previewUrl : void 0,
|
|
3730
|
+
extraction: isSignature ? void 0 : { name: "Sample", date: "2026-07-16", id: "0001" }
|
|
3731
|
+
}));
|
|
3732
|
+
}, 1600)
|
|
3733
|
+
);
|
|
3734
|
+
}, 200)
|
|
3735
|
+
);
|
|
3736
|
+
}
|
|
3737
|
+
};
|
|
3738
|
+
timers.current.push(setTimeout(tick, 180));
|
|
3739
|
+
};
|
|
3740
|
+
const uploadDocument = (file) => runLifecycle(file);
|
|
3741
|
+
const retryDocument = () => {
|
|
3742
|
+
if (slot.file) runLifecycle(slot.file);
|
|
3743
|
+
};
|
|
3744
|
+
const removeDocument = () => {
|
|
3745
|
+
clearTimers();
|
|
3746
|
+
runId.current++;
|
|
3747
|
+
if (slot.previewUrl) URL.revokeObjectURL(slot.previewUrl);
|
|
3748
|
+
setSlot({ status: "idle" });
|
|
3749
|
+
};
|
|
3750
|
+
return { slot, uploadDocument, retryDocument, removeDocument };
|
|
3751
|
+
};
|
|
3752
|
+
var Card = ({
|
|
3753
|
+
activeIcon,
|
|
3754
|
+
title,
|
|
3755
|
+
subtitle,
|
|
3756
|
+
headerAction,
|
|
3757
|
+
children
|
|
3758
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
3759
|
+
import_react32.Box,
|
|
3760
|
+
{
|
|
3761
|
+
w: "full",
|
|
3762
|
+
borderRadius: "2xl",
|
|
3763
|
+
bg: "white",
|
|
3764
|
+
borderWidth: "1px",
|
|
3765
|
+
borderColor: "gray.200",
|
|
3766
|
+
shadow: "sm",
|
|
3767
|
+
overflow: "hidden",
|
|
3768
|
+
children: [
|
|
3769
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { align: "center", justify: "space-between", px: 4, py: 3, gap: 2, children: [
|
|
3770
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { align: "center", gap: 2, minW: 0, children: [
|
|
3771
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3772
|
+
import_react32.Box,
|
|
3773
|
+
{
|
|
3774
|
+
p: 2,
|
|
3775
|
+
borderRadius: "full",
|
|
3776
|
+
bg: "gray.100",
|
|
3777
|
+
color: PRIMARY2,
|
|
3778
|
+
flexShrink: 0,
|
|
3779
|
+
children: activeIcon
|
|
3780
|
+
}
|
|
3781
|
+
),
|
|
3782
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Box, { minW: 0, children: [
|
|
3783
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontWeight: "bold", fontSize: "md", lineHeight: "1.2", truncate: true, children: title }),
|
|
3784
|
+
subtitle && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "xs", color: "gray.500", truncate: true, children: subtitle })
|
|
3785
|
+
] })
|
|
3786
|
+
] }),
|
|
3787
|
+
headerAction
|
|
3788
|
+
] }),
|
|
3789
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Box, { px: 4, pb: 4, pt: 1, borderTopWidth: "1px", borderColor: "gray.100", children })
|
|
3790
|
+
]
|
|
3791
|
+
}
|
|
3792
|
+
);
|
|
3793
|
+
var StatusPill = ({ status }) => {
|
|
3794
|
+
const map = {
|
|
3795
|
+
idle: null,
|
|
3796
|
+
uploading: { label: "Uploading", fg: "#1D4ED8", bg: "#EFF6FF" },
|
|
3797
|
+
processing: { label: "Analyzing", fg: "#7C3AED", bg: "#F5F3FF" },
|
|
3798
|
+
completed: { label: "Completed", fg: "#15803D", bg: "#F0FDF4" },
|
|
3799
|
+
failed: { label: "Failed", fg: "#B91C1C", bg: "#FEF2F2" }
|
|
3800
|
+
};
|
|
3801
|
+
const meta = map[status];
|
|
3802
|
+
if (!meta) return null;
|
|
3803
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
3804
|
+
import_react32.Flex,
|
|
3805
|
+
{
|
|
3806
|
+
align: "center",
|
|
3807
|
+
gap: 1.5,
|
|
3808
|
+
px: 2.5,
|
|
3809
|
+
py: 1,
|
|
3810
|
+
borderRadius: "full",
|
|
3811
|
+
fontSize: "xs",
|
|
3812
|
+
fontWeight: 600,
|
|
3813
|
+
style: { color: meta.fg, background: meta.bg },
|
|
3814
|
+
flexShrink: 0,
|
|
3815
|
+
children: [
|
|
3816
|
+
status === "processing" || status === "uploading" ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Spinner, { size: "xs", borderWidth: "2px" }) : status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuCheck, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuTriangleAlert, { size: 12 }),
|
|
3817
|
+
meta.label
|
|
3818
|
+
]
|
|
3819
|
+
}
|
|
3820
|
+
);
|
|
3821
|
+
};
|
|
3822
|
+
var ProgressBar = ({ value, color }) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Box, { w: "full", h: "6px", bg: "gray.100", borderRadius: "full", overflow: "hidden", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3823
|
+
import_react32.Box,
|
|
3824
|
+
{
|
|
3825
|
+
h: "full",
|
|
3826
|
+
borderRadius: "full",
|
|
3827
|
+
style: {
|
|
3828
|
+
width: `${value}%`,
|
|
3829
|
+
background: color,
|
|
3830
|
+
transition: "width 0.2s ease"
|
|
3831
|
+
}
|
|
3832
|
+
}
|
|
3833
|
+
) });
|
|
3834
|
+
var Thumb = ({
|
|
3835
|
+
url,
|
|
3836
|
+
isPdf,
|
|
3837
|
+
fileName,
|
|
3838
|
+
transparent
|
|
3839
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3840
|
+
import_react32.Flex,
|
|
3841
|
+
{
|
|
3842
|
+
align: "center",
|
|
3843
|
+
justify: "center",
|
|
3844
|
+
boxSize: { base: "56px", md: "64px" },
|
|
3845
|
+
borderRadius: "lg",
|
|
3846
|
+
borderWidth: "1px",
|
|
3847
|
+
borderColor: "gray.200",
|
|
3848
|
+
overflow: "hidden",
|
|
3849
|
+
flexShrink: 0,
|
|
3850
|
+
bg: transparent ? "transparent" : "gray.50",
|
|
3851
|
+
style: transparent ? {
|
|
3852
|
+
backgroundImage: "linear-gradient(45deg,#eee 25%,transparent 25%),linear-gradient(-45deg,#eee 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eee 75%),linear-gradient(-45deg,transparent 75%,#eee 75%)",
|
|
3853
|
+
backgroundSize: "10px 10px",
|
|
3854
|
+
backgroundPosition: "0 0,0 5px,5px -5px,-5px 0"
|
|
3855
|
+
} : void 0,
|
|
3856
|
+
children: isPdf || !url ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { direction: "column", align: "center", color: "gray.400", gap: 0.5, children: [
|
|
3857
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuFileText, { size: 22 }),
|
|
3858
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "9px", fontWeight: 600, children: isPdf ? "PDF" : "FILE" })
|
|
3859
|
+
] }) : (
|
|
3860
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
3861
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3862
|
+
"img",
|
|
3863
|
+
{
|
|
3864
|
+
src: url,
|
|
3865
|
+
alt: fileName ?? "preview",
|
|
3866
|
+
style: { width: "100%", height: "100%", objectFit: "contain" }
|
|
3867
|
+
}
|
|
3868
|
+
)
|
|
3869
|
+
)
|
|
3870
|
+
}
|
|
3871
|
+
);
|
|
3872
|
+
var GhostBtn = ({
|
|
3873
|
+
icon,
|
|
3874
|
+
label,
|
|
3875
|
+
onClick,
|
|
3876
|
+
tone = "gray"
|
|
3877
|
+
}) => {
|
|
3878
|
+
const tones = {
|
|
3879
|
+
gray: { c: "gray.600", h: "gray.50", b: "gray.200" },
|
|
3880
|
+
danger: { c: "#B91C1C", h: "#FEF2F2", b: "#FECACA" },
|
|
3881
|
+
primary: { c: PRIMARY2, h: PRIMARY_SOFT, b: PRIMARY2 }
|
|
3882
|
+
};
|
|
3883
|
+
const t = tones[tone];
|
|
3884
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
3885
|
+
import_react32.Flex,
|
|
3886
|
+
{
|
|
3887
|
+
as: "button",
|
|
3888
|
+
align: "center",
|
|
3889
|
+
gap: 1.5,
|
|
3890
|
+
px: 2.5,
|
|
3891
|
+
py: 1.5,
|
|
3892
|
+
borderRadius: "lg",
|
|
3893
|
+
borderWidth: "1px",
|
|
3894
|
+
borderColor: t.b,
|
|
3895
|
+
color: t.c,
|
|
3896
|
+
bg: "white",
|
|
3897
|
+
fontSize: "xs",
|
|
3898
|
+
fontWeight: 600,
|
|
3899
|
+
cursor: "pointer",
|
|
3900
|
+
_hover: { bg: t.h },
|
|
3901
|
+
transition: "all 0.15s",
|
|
3902
|
+
onClick,
|
|
3903
|
+
children: [
|
|
3904
|
+
icon,
|
|
3905
|
+
label
|
|
3906
|
+
]
|
|
3907
|
+
}
|
|
3908
|
+
);
|
|
3909
|
+
};
|
|
3910
|
+
function DocumentUploadCard({
|
|
3911
|
+
config,
|
|
3912
|
+
onStatusChange,
|
|
3913
|
+
onProcess,
|
|
3914
|
+
onError
|
|
3915
|
+
}) {
|
|
3916
|
+
const notifyError = onError ?? defaultNotifyError;
|
|
3917
|
+
const { slot, uploadDocument, retryDocument, removeDocument } = useDocumentSlot(config, onProcess, notifyError);
|
|
3918
|
+
const status = slot?.status ?? "idle";
|
|
3919
|
+
(0, import_react31.useEffect)(() => {
|
|
3920
|
+
onStatusChange?.(status);
|
|
3921
|
+
}, [status, onStatusChange]);
|
|
3922
|
+
const browseRef = (0, import_react31.useRef)(null);
|
|
3923
|
+
const cameraRef = (0, import_react31.useRef)(null);
|
|
3924
|
+
const [dragging, setDragging] = (0, import_react31.useState)(false);
|
|
3925
|
+
const Icon6 = config.icon;
|
|
3926
|
+
const isPdf = slot?.fileType === "application/pdf";
|
|
3927
|
+
const handleFiles = (files) => {
|
|
3928
|
+
const file = files?.[0];
|
|
3929
|
+
if (!file) return;
|
|
3930
|
+
const error = validate(file, config);
|
|
3931
|
+
if (error) {
|
|
3932
|
+
notifyError(error);
|
|
3933
|
+
return;
|
|
3934
|
+
}
|
|
3935
|
+
void uploadDocument(file);
|
|
3936
|
+
};
|
|
3937
|
+
const onDrop = (e) => {
|
|
3938
|
+
e.preventDefault();
|
|
3939
|
+
setDragging(false);
|
|
3940
|
+
handleFiles(e.dataTransfer.files);
|
|
3941
|
+
};
|
|
3942
|
+
const renderDropzone = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
3943
|
+
import_react32.Flex,
|
|
3944
|
+
{
|
|
3945
|
+
direction: "column",
|
|
3946
|
+
align: "center",
|
|
3947
|
+
justify: "center",
|
|
3948
|
+
gap: 2,
|
|
3949
|
+
py: { base: 6, md: 7 },
|
|
3950
|
+
px: 4,
|
|
3951
|
+
borderWidth: "2px",
|
|
3952
|
+
borderStyle: "dashed",
|
|
3953
|
+
borderColor: dragging ? PRIMARY2 : "gray.200",
|
|
3954
|
+
borderRadius: "xl",
|
|
3955
|
+
bg: dragging ? PRIMARY_SOFT : "gray.50",
|
|
3956
|
+
transition: "all 0.15s",
|
|
3957
|
+
textAlign: "center",
|
|
3958
|
+
onDragOver: (e) => {
|
|
3959
|
+
e.preventDefault();
|
|
3960
|
+
setDragging(true);
|
|
3961
|
+
},
|
|
3962
|
+
onDragLeave: () => setDragging(false),
|
|
3963
|
+
onDrop,
|
|
3964
|
+
role: "button",
|
|
3965
|
+
tabIndex: 0,
|
|
3966
|
+
onClick: () => browseRef.current?.click(),
|
|
3967
|
+
onKeyDown: (e) => {
|
|
3968
|
+
if (e.key === "Enter" || e.key === " ") browseRef.current?.click();
|
|
3969
|
+
},
|
|
3970
|
+
cursor: "pointer",
|
|
3971
|
+
_hover: { borderColor: PRIMARY2, bg: PRIMARY_SOFT },
|
|
3972
|
+
children: [
|
|
3973
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3974
|
+
import_react32.Flex,
|
|
3975
|
+
{
|
|
3976
|
+
align: "center",
|
|
3977
|
+
justify: "center",
|
|
3978
|
+
boxSize: 11,
|
|
3979
|
+
borderRadius: "full",
|
|
3980
|
+
bg: "white",
|
|
3981
|
+
borderWidth: "1px",
|
|
3982
|
+
borderColor: "gray.200",
|
|
3983
|
+
color: PRIMARY2,
|
|
3984
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuUpload, { size: 18 })
|
|
3985
|
+
}
|
|
3986
|
+
),
|
|
3987
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Box, { children: [
|
|
3988
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "sm", fontWeight: 600, color: "gray.800", children: "Drag & drop or tap to upload" }),
|
|
3989
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "xs", color: "gray.500", mt: 0.5, children: config.hint ?? "JPG, PNG or PDF" })
|
|
3990
|
+
] }),
|
|
3991
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { gap: 2, mt: 1, onClick: (e) => e.stopPropagation(), children: [
|
|
3992
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3993
|
+
GhostBtn,
|
|
3994
|
+
{
|
|
3995
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuFolderOpen, { size: 13 }),
|
|
3996
|
+
label: "Browse",
|
|
3997
|
+
tone: "primary",
|
|
3998
|
+
onClick: () => browseRef.current?.click()
|
|
3999
|
+
}
|
|
4000
|
+
),
|
|
4001
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4002
|
+
GhostBtn,
|
|
4003
|
+
{
|
|
4004
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuCamera, { size: 13 }),
|
|
4005
|
+
label: "Take photo",
|
|
4006
|
+
onClick: () => cameraRef.current?.click()
|
|
4007
|
+
}
|
|
4008
|
+
)
|
|
4009
|
+
] })
|
|
4010
|
+
]
|
|
4011
|
+
}
|
|
4012
|
+
);
|
|
4013
|
+
const renderBusy = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { gap: 3, align: "center", children: [
|
|
4014
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Thumb, { url: slot?.previewUrl, isPdf, fileName: slot?.fileName }),
|
|
4015
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Box, { flex: "1", minW: 0, children: [
|
|
4016
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "sm", fontWeight: 600, color: "gray.800", truncate: true, children: slot?.fileName }),
|
|
4017
|
+
status === "uploading" ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
|
|
4018
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4019
|
+
import_react32.Flex,
|
|
4020
|
+
{
|
|
4021
|
+
justify: "space-between",
|
|
4022
|
+
fontSize: "xs",
|
|
4023
|
+
color: "gray.500",
|
|
4024
|
+
mt: 1,
|
|
4025
|
+
mb: 1,
|
|
4026
|
+
children: [
|
|
4027
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { children: "Uploading\u2026" }),
|
|
4028
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Text, { fontWeight: 600, children: [
|
|
4029
|
+
slot?.progress ?? 0,
|
|
4030
|
+
"%"
|
|
4031
|
+
] })
|
|
4032
|
+
]
|
|
4033
|
+
}
|
|
4034
|
+
),
|
|
4035
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ProgressBar, { value: slot?.progress ?? 0, color: "#2563EB" })
|
|
4036
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { align: "center", gap: 2, mt: 1.5, children: [
|
|
4037
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4038
|
+
import_react32.Flex,
|
|
4039
|
+
{
|
|
4040
|
+
align: "center",
|
|
4041
|
+
gap: 1.5,
|
|
4042
|
+
px: 2,
|
|
4043
|
+
py: 1,
|
|
4044
|
+
borderRadius: "md",
|
|
4045
|
+
bg: "#F5F3FF",
|
|
4046
|
+
color: "#7C3AED",
|
|
4047
|
+
fontSize: "xs",
|
|
4048
|
+
fontWeight: 600,
|
|
4049
|
+
children: [
|
|
4050
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuSparkles, { size: 12 }),
|
|
4051
|
+
config.processor === "signature" ? "Cleaning signature\u2026" : "Reading with AI\u2026"
|
|
4052
|
+
]
|
|
4053
|
+
}
|
|
4054
|
+
),
|
|
4055
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Spinner, { size: "xs", color: "#7C3AED", borderWidth: "2px" })
|
|
4056
|
+
] }),
|
|
4057
|
+
status === "processing" && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "11px", color: "gray.400", mt: 1.5, children: "This can take a few seconds. Your upload is already saved." })
|
|
4058
|
+
] })
|
|
4059
|
+
] });
|
|
4060
|
+
const renderFailed = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Box, { children: [
|
|
4061
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { gap: 3, align: "flex-start", children: [
|
|
4062
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Thumb, { url: slot?.previewUrl, isPdf, fileName: slot?.fileName }),
|
|
4063
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Box, { flex: "1", minW: 0, children: [
|
|
4064
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "sm", fontWeight: 600, color: "gray.800", truncate: true, children: slot?.fileName ?? config.label }),
|
|
4065
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { align: "flex-start", gap: 1.5, mt: 1, color: "#B91C1C", children: [
|
|
4066
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Box, { mt: "1px", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuTriangleAlert, { size: 13 }) }),
|
|
4067
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "xs", lineHeight: "1.4", children: slot?.error ?? "We couldn't process this document." })
|
|
4068
|
+
] })
|
|
4069
|
+
] })
|
|
4070
|
+
] }),
|
|
4071
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { gap: 2, mt: 3, wrap: "wrap", children: [
|
|
4072
|
+
slot?.file ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4073
|
+
GhostBtn,
|
|
4074
|
+
{
|
|
4075
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuRefreshCw, { size: 13 }),
|
|
4076
|
+
label: "Retry",
|
|
4077
|
+
tone: "primary",
|
|
4078
|
+
onClick: () => void retryDocument()
|
|
4079
|
+
}
|
|
4080
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4081
|
+
GhostBtn,
|
|
4082
|
+
{
|
|
4083
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuUpload, { size: 13 }),
|
|
4084
|
+
label: "Re-upload",
|
|
4085
|
+
tone: "primary",
|
|
4086
|
+
onClick: () => browseRef.current?.click()
|
|
4087
|
+
}
|
|
4088
|
+
),
|
|
4089
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4090
|
+
GhostBtn,
|
|
4091
|
+
{
|
|
4092
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuReplace, { size: 13 }),
|
|
4093
|
+
label: "Choose another",
|
|
4094
|
+
onClick: () => browseRef.current?.click()
|
|
4095
|
+
}
|
|
4096
|
+
),
|
|
4097
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4098
|
+
GhostBtn,
|
|
4099
|
+
{
|
|
4100
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuTrash2, { size: 13 }),
|
|
4101
|
+
label: "Remove",
|
|
4102
|
+
tone: "danger",
|
|
4103
|
+
onClick: () => removeDocument()
|
|
4104
|
+
}
|
|
4105
|
+
)
|
|
4106
|
+
] })
|
|
4107
|
+
] });
|
|
4108
|
+
const renderCompleted = () => {
|
|
4109
|
+
const isSignature = config.processor === "signature";
|
|
4110
|
+
const fieldCount = slot?.extraction ? Object.values(slot.extraction).filter(Boolean).length : 0;
|
|
4111
|
+
const displayUrl = isSignature ? slot?.cleanedImageUrl ?? slot?.previewUrl : slot?.previewUrl;
|
|
4112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Box, { children: [
|
|
4113
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { gap: 3, align: "center", children: [
|
|
4114
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4115
|
+
Thumb,
|
|
4116
|
+
{
|
|
4117
|
+
url: displayUrl,
|
|
4118
|
+
isPdf: isPdf && !isSignature,
|
|
4119
|
+
fileName: slot?.fileName,
|
|
4120
|
+
transparent: isSignature && !!slot?.cleanedImageUrl
|
|
4121
|
+
}
|
|
4122
|
+
),
|
|
4123
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Box, { flex: "1", minW: 0, children: [
|
|
4124
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "sm", fontWeight: 600, color: "gray.800", truncate: true, children: slot?.fileName }),
|
|
4125
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "xs", color: "gray.500", children: formatBytes(slot?.fileSize) }),
|
|
4126
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4127
|
+
import_react32.Flex,
|
|
4128
|
+
{
|
|
4129
|
+
align: "center",
|
|
4130
|
+
gap: 1.5,
|
|
4131
|
+
mt: 1.5,
|
|
4132
|
+
color: PRIMARY2,
|
|
4133
|
+
fontSize: "xs",
|
|
4134
|
+
fontWeight: 600,
|
|
4135
|
+
children: [
|
|
4136
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuSparkles, { size: 12 }),
|
|
4137
|
+
isSignature ? "Signature detected & cleaned" : `${fieldCount} field${fieldCount === 1 ? "" : "s"} extracted`
|
|
4138
|
+
]
|
|
4139
|
+
}
|
|
4140
|
+
)
|
|
4141
|
+
] })
|
|
4142
|
+
] }),
|
|
4143
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { gap: 2, mt: 3, wrap: "wrap", children: [
|
|
4144
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4145
|
+
GhostBtn,
|
|
4146
|
+
{
|
|
4147
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuReplace, { size: 13 }),
|
|
4148
|
+
label: "Replace",
|
|
4149
|
+
onClick: () => browseRef.current?.click()
|
|
4150
|
+
}
|
|
4151
|
+
),
|
|
4152
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4153
|
+
GhostBtn,
|
|
4154
|
+
{
|
|
4155
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lu6.LuTrash2, { size: 13 }),
|
|
4156
|
+
label: "Remove",
|
|
4157
|
+
tone: "danger",
|
|
4158
|
+
onClick: () => removeDocument()
|
|
4159
|
+
}
|
|
4160
|
+
)
|
|
4161
|
+
] })
|
|
4162
|
+
] });
|
|
4163
|
+
};
|
|
4164
|
+
const requiredTag = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4165
|
+
import_react32.Text,
|
|
4166
|
+
{
|
|
4167
|
+
fontSize: "10px",
|
|
4168
|
+
fontWeight: 700,
|
|
4169
|
+
px: 1.5,
|
|
4170
|
+
py: 0.5,
|
|
4171
|
+
borderRadius: "full",
|
|
4172
|
+
color: config.required ? "#B45309" : "gray.500",
|
|
4173
|
+
bg: config.required ? "#FEF3C7" : "gray.100",
|
|
4174
|
+
flexShrink: 0,
|
|
4175
|
+
children: config.required ? "REQUIRED" : "OPTIONAL"
|
|
4176
|
+
}
|
|
4177
|
+
);
|
|
4178
|
+
const isMobile = (0, import_react32.useBreakpointValue)({ base: true, lg: false });
|
|
4179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4180
|
+
Card,
|
|
4181
|
+
{
|
|
4182
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Icon6, { size: 18 }),
|
|
4183
|
+
title: config.label,
|
|
4184
|
+
subtitle: config.description,
|
|
4185
|
+
headerAction: !isMobile ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.Flex, { align: "center", gap: 2, flexShrink: 0, children: [
|
|
4186
|
+
requiredTag,
|
|
4187
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusPill, { status })
|
|
4188
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_jsx_runtime19.Fragment, {}),
|
|
4189
|
+
children: [
|
|
4190
|
+
isMobile ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4191
|
+
import_react32.Flex,
|
|
4192
|
+
{
|
|
4193
|
+
align: "center",
|
|
4194
|
+
justifySelf: "flex-end",
|
|
4195
|
+
gap: 2,
|
|
4196
|
+
mb: 1,
|
|
4197
|
+
flexShrink: 0,
|
|
4198
|
+
children: [
|
|
4199
|
+
requiredTag,
|
|
4200
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusPill, { status })
|
|
4201
|
+
]
|
|
4202
|
+
}
|
|
4203
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_jsx_runtime19.Fragment, {}),
|
|
4204
|
+
status === "idle" && renderDropzone(),
|
|
4205
|
+
(status === "uploading" || status === "processing") && renderBusy(),
|
|
4206
|
+
status === "failed" && renderFailed(),
|
|
4207
|
+
status === "completed" && renderCompleted(),
|
|
4208
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4209
|
+
"input",
|
|
4210
|
+
{
|
|
4211
|
+
ref: browseRef,
|
|
4212
|
+
type: "file",
|
|
4213
|
+
accept: config.accept,
|
|
4214
|
+
hidden: true,
|
|
4215
|
+
onChange: (e) => {
|
|
4216
|
+
handleFiles(e.target.files);
|
|
4217
|
+
e.target.value = "";
|
|
4218
|
+
}
|
|
4219
|
+
}
|
|
4220
|
+
),
|
|
4221
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4222
|
+
"input",
|
|
4223
|
+
{
|
|
4224
|
+
ref: cameraRef,
|
|
4225
|
+
type: "file",
|
|
4226
|
+
accept: "image/*",
|
|
4227
|
+
capture: "environment",
|
|
4228
|
+
hidden: true,
|
|
4229
|
+
onChange: (e) => {
|
|
4230
|
+
handleFiles(e.target.files);
|
|
4231
|
+
e.target.value = "";
|
|
4232
|
+
}
|
|
4233
|
+
}
|
|
4234
|
+
)
|
|
4235
|
+
]
|
|
4236
|
+
}
|
|
4237
|
+
);
|
|
4238
|
+
}
|
|
4239
|
+
|
|
4240
|
+
// src/GetStarted/GetStarted.tsx
|
|
4241
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
4242
|
+
var defaultNotify = (type, message) => {
|
|
4243
|
+
if (type === "error") console.error(message);
|
|
4244
|
+
else console.info(message);
|
|
4245
|
+
};
|
|
4246
|
+
var GOVERNMENT_ID_CONFIG = {
|
|
4247
|
+
id: "government-id",
|
|
4248
|
+
label: "Government-issued ID",
|
|
4249
|
+
description: "Current and valid ID",
|
|
4250
|
+
accept: "image/*",
|
|
4251
|
+
maxSizeMB: 5,
|
|
4252
|
+
required: true,
|
|
4253
|
+
hint: "Any image \xB7 up to 5MB",
|
|
4254
|
+
processor: "extraction",
|
|
4255
|
+
icon: import_lu7.LuIdCard
|
|
4256
|
+
};
|
|
4257
|
+
var SIGNATURE_CONFIG = {
|
|
4258
|
+
id: "specimen-signature",
|
|
4259
|
+
label: "Specimen Signature",
|
|
4260
|
+
description: "Signature on plain white paper",
|
|
4261
|
+
accept: "image/png,image/jpeg,application/pdf",
|
|
4262
|
+
maxSizeMB: 5,
|
|
4263
|
+
required: true,
|
|
4264
|
+
hint: "JPG, PNG or PDF \xB7 up to 5MB",
|
|
4265
|
+
processor: "signature",
|
|
4266
|
+
icon: import_lu7.LuSignature
|
|
4267
|
+
};
|
|
4268
|
+
var GetStarted = ({
|
|
4269
|
+
scanId: scanIdFn,
|
|
4270
|
+
onContinue,
|
|
4271
|
+
notify = defaultNotify
|
|
4272
|
+
}) => {
|
|
4273
|
+
const [uploadDialogOpen, setUploadDialogOpen] = (0, import_react34.useState)(false);
|
|
4274
|
+
const [referralDialogOpen, setReferralDialogOpen] = (0, import_react34.useState)(false);
|
|
4275
|
+
const [governmentIdStatus, setGovernmentIdStatus] = (0, import_react34.useState)("idle");
|
|
4276
|
+
const { scanId } = useOcr(scanIdFn);
|
|
4277
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Container_default, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
4278
|
+
import_react33.Box,
|
|
4279
|
+
{
|
|
4280
|
+
p: { base: 0, md: 8 },
|
|
4281
|
+
rounded: "lg",
|
|
4282
|
+
shadow: { base: "none", md: "md" },
|
|
4283
|
+
bg: "white",
|
|
4284
|
+
maxW: "3xl",
|
|
4285
|
+
display: "flex",
|
|
4286
|
+
flexDirection: "column",
|
|
4287
|
+
alignItems: "center",
|
|
4288
|
+
mx: "auto",
|
|
4289
|
+
children: [
|
|
4290
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.VStack, { gap: 4, align: "stretch", children: [
|
|
4291
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Box, { textAlign: "center", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.H3, { children: "Let's Get Started" }) }),
|
|
4292
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { textAlign: { base: "center", md: "start" }, children: "We'll be needing some documents and information to proceed with the purchase, please prepare the following in advance to smooth out the next steps" }),
|
|
4293
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Box, { bg: "gray.50", p: 8, rounded: "md", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.VStack, { align: "start", gap: 2, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.Box, { mb: 4, display: "flex", flexDirection: "column", gap: 2, children: [
|
|
4294
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { fontWeight: "bold", children: "Required Information" }),
|
|
4295
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "1. Full Name" }),
|
|
4296
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "2. Nationality" }),
|
|
4297
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "3. Mobile Number" }),
|
|
4298
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "4. Email Address" }),
|
|
4299
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "5. Date of Birth" }),
|
|
4300
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "6. Complete Address" }),
|
|
4301
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "7. Beneficiary/ies" }),
|
|
4302
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { fontWeight: "bold", children: "Required Documents" }),
|
|
4303
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "1. Current and Valid Government-issued ID" }),
|
|
4304
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.BaseText, { children: "2. Specimen Signature" })
|
|
4305
|
+
] }) }) })
|
|
4306
|
+
] }),
|
|
4307
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.Box, { textAlign: "end", children: [
|
|
4308
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
4309
|
+
import_react33.Dialog.Root,
|
|
4310
|
+
{
|
|
4311
|
+
size: { mdDown: "full", md: "md" },
|
|
4312
|
+
open: uploadDialogOpen,
|
|
4313
|
+
onOpenChange: (details) => setUploadDialogOpen(details.open),
|
|
4314
|
+
children: [
|
|
4315
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4316
|
+
import_react33.Button,
|
|
4317
|
+
{
|
|
4318
|
+
w: { base: "sm", md: "2xl" },
|
|
4319
|
+
mt: { base: 4, md: 8 },
|
|
4320
|
+
onClick: () => setUploadDialogOpen(true),
|
|
4321
|
+
children: "CONTINUE"
|
|
4322
|
+
}
|
|
4323
|
+
) }),
|
|
4324
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.Portal, { children: [
|
|
4325
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Backdrop, {}),
|
|
4326
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Positioner, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.Dialog.Content, { children: [
|
|
4327
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Title, { children: "Upload Requirements" }) }),
|
|
4328
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Body, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.VStack, { gap: 6, align: "stretch", children: [
|
|
4329
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(info_card_default, { children: "To continue, please upload a valid ID. The system will use it to populate your information automatically." }),
|
|
4330
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4331
|
+
DocumentUploadCard,
|
|
4332
|
+
{
|
|
4333
|
+
config: GOVERNMENT_ID_CONFIG,
|
|
4334
|
+
onStatusChange: setGovernmentIdStatus,
|
|
4335
|
+
onProcess: scanId,
|
|
4336
|
+
onError: (message) => notify("error", message)
|
|
4337
|
+
}
|
|
4338
|
+
),
|
|
4339
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4340
|
+
DocumentUploadCard,
|
|
4341
|
+
{
|
|
4342
|
+
config: SIGNATURE_CONFIG,
|
|
4343
|
+
onError: (message) => notify("error", message)
|
|
4344
|
+
}
|
|
4345
|
+
)
|
|
4346
|
+
] }) }),
|
|
4347
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.Dialog.Footer, { display: "flex", justifyContent: "space-between", children: [
|
|
4348
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.ActionTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.CancelButton, {}) }),
|
|
4349
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4350
|
+
import_st_peter_ui8.NextButton,
|
|
4351
|
+
{
|
|
4352
|
+
onClick: () => {
|
|
4353
|
+
if (governmentIdStatus === "uploading" || governmentIdStatus === "processing") {
|
|
4354
|
+
notify("info", "Please wait while we read your ID.");
|
|
4355
|
+
return;
|
|
4356
|
+
}
|
|
4357
|
+
if (governmentIdStatus !== "completed") {
|
|
4358
|
+
notify("error", "Please upload a government-issued ID.");
|
|
4359
|
+
return;
|
|
4360
|
+
}
|
|
4361
|
+
setUploadDialogOpen(false);
|
|
4362
|
+
setReferralDialogOpen(true);
|
|
4363
|
+
}
|
|
4364
|
+
}
|
|
4365
|
+
)
|
|
4366
|
+
] }),
|
|
4367
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.CloseTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.CloseButton, { size: "sm" }) })
|
|
4368
|
+
] }) })
|
|
4369
|
+
] })
|
|
4370
|
+
]
|
|
4371
|
+
}
|
|
4372
|
+
),
|
|
4373
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4374
|
+
import_react33.Dialog.Root,
|
|
4375
|
+
{
|
|
4376
|
+
placement: "center",
|
|
4377
|
+
open: referralDialogOpen,
|
|
4378
|
+
onOpenChange: (details) => setReferralDialogOpen(details.open),
|
|
4379
|
+
size: { mdDown: "full", md: "md" },
|
|
4380
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.Portal, { children: [
|
|
4381
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Backdrop, {}),
|
|
4382
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Positioner, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.Dialog.Content, { children: [
|
|
4383
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Title, { children: "Referral Agent" }) }),
|
|
4384
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.Body, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.VStack, { align: "stretch", gap: 4, children: [
|
|
4385
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_st_peter_ui8.Body, { children: "Do you have an referral agent? (optional)" }),
|
|
4386
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Input, { placeholder: "Enter agent name" })
|
|
4387
|
+
] }) }),
|
|
4388
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react33.Dialog.Footer, { display: "flex", justifyContent: "space-between", children: [
|
|
4389
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4390
|
+
import_react33.Button,
|
|
4391
|
+
{
|
|
4392
|
+
variant: "outline",
|
|
4393
|
+
onClick: () => {
|
|
4394
|
+
setReferralDialogOpen(false);
|
|
4395
|
+
onContinue?.();
|
|
4396
|
+
},
|
|
4397
|
+
children: "Skip"
|
|
4398
|
+
}
|
|
4399
|
+
),
|
|
4400
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4401
|
+
import_st_peter_ui8.PrimaryMdButton,
|
|
4402
|
+
{
|
|
4403
|
+
onClick: () => {
|
|
4404
|
+
setReferralDialogOpen(false);
|
|
4405
|
+
onContinue?.();
|
|
4406
|
+
},
|
|
4407
|
+
children: "Continue"
|
|
4408
|
+
}
|
|
4409
|
+
)
|
|
4410
|
+
] }),
|
|
4411
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.Dialog.CloseTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react33.CloseButton, { size: "sm" }) })
|
|
4412
|
+
] }) })
|
|
4413
|
+
] })
|
|
4414
|
+
}
|
|
4415
|
+
)
|
|
4416
|
+
] })
|
|
4417
|
+
]
|
|
4418
|
+
}
|
|
4419
|
+
) });
|
|
4420
|
+
};
|
|
4421
|
+
var GetStarted_default = GetStarted;
|
|
4422
|
+
|
|
4423
|
+
// src/Generic/BottomQuickActions.tsx
|
|
4424
|
+
var import_react35 = __toESM(require("react"));
|
|
4425
|
+
var import_react36 = require("@chakra-ui/react");
|
|
4426
|
+
var import_lu8 = require("react-icons/lu");
|
|
3514
4427
|
var import_link = __toESM(require("next/link"));
|
|
3515
|
-
var
|
|
4428
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
3516
4429
|
var SHEET_BG = BRAND_COLORS.white;
|
|
3517
4430
|
var DRAG_COLOR = BRAND_COLORS.neutralBorder;
|
|
3518
4431
|
var ITEM_BG = BRAND_COLORS.white;
|
|
@@ -3529,15 +4442,15 @@ var SUBTITLE_COLOR = BRAND_COLORS.grey;
|
|
|
3529
4442
|
var LABEL_COLOR = BRAND_COLORS.neutralText;
|
|
3530
4443
|
var DESC_COLOR = BRAND_COLORS.grey;
|
|
3531
4444
|
var CHEVRON_COLOR = BRAND_COLORS.ashWhite;
|
|
3532
|
-
var QuickActionsHeaderCard =
|
|
4445
|
+
var QuickActionsHeaderCard = import_react35.default.memo(
|
|
3533
4446
|
({
|
|
3534
4447
|
initials,
|
|
3535
4448
|
avatarBg = AVATAR_DEFAULT_BG,
|
|
3536
4449
|
label,
|
|
3537
4450
|
meta,
|
|
3538
4451
|
trailing
|
|
3539
|
-
}) => /* @__PURE__ */ (0,
|
|
3540
|
-
|
|
4452
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
4453
|
+
import_react36.HStack,
|
|
3541
4454
|
{
|
|
3542
4455
|
gap: STANDARD_SPACING.sm,
|
|
3543
4456
|
px: STANDARD_SPACING.sm,
|
|
@@ -3547,8 +4460,8 @@ var QuickActionsHeaderCard = import_react28.default.memo(
|
|
|
3547
4460
|
borderWidth: "1px",
|
|
3548
4461
|
borderColor: HEADER_CARD_BORDER,
|
|
3549
4462
|
children: [
|
|
3550
|
-
initials && /* @__PURE__ */ (0,
|
|
3551
|
-
|
|
4463
|
+
initials && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4464
|
+
import_react36.Flex,
|
|
3552
4465
|
{
|
|
3553
4466
|
w: "40px",
|
|
3554
4467
|
h: "40px",
|
|
@@ -3557,8 +4470,8 @@ var QuickActionsHeaderCard = import_react28.default.memo(
|
|
|
3557
4470
|
align: "center",
|
|
3558
4471
|
justify: "center",
|
|
3559
4472
|
flexShrink: 0,
|
|
3560
|
-
children: /* @__PURE__ */ (0,
|
|
3561
|
-
|
|
4473
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4474
|
+
import_react36.Text,
|
|
3562
4475
|
{
|
|
3563
4476
|
fontSize: "14px",
|
|
3564
4477
|
fontWeight: "700",
|
|
@@ -3569,9 +4482,9 @@ var QuickActionsHeaderCard = import_react28.default.memo(
|
|
|
3569
4482
|
)
|
|
3570
4483
|
}
|
|
3571
4484
|
),
|
|
3572
|
-
/* @__PURE__ */ (0,
|
|
3573
|
-
/* @__PURE__ */ (0,
|
|
3574
|
-
|
|
4485
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react36.Box, { flex: "1", minW: 0, children: [
|
|
4486
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4487
|
+
import_react36.Text,
|
|
3575
4488
|
{
|
|
3576
4489
|
fontSize: "15px",
|
|
3577
4490
|
fontWeight: "700",
|
|
@@ -3583,8 +4496,8 @@ var QuickActionsHeaderCard = import_react28.default.memo(
|
|
|
3583
4496
|
children: label
|
|
3584
4497
|
}
|
|
3585
4498
|
),
|
|
3586
|
-
meta && /* @__PURE__ */ (0,
|
|
3587
|
-
|
|
4499
|
+
meta && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4500
|
+
import_react36.Text,
|
|
3588
4501
|
{
|
|
3589
4502
|
fontSize: "12px",
|
|
3590
4503
|
color: SUBTITLE_COLOR,
|
|
@@ -3605,11 +4518,11 @@ var QuickActionsHeaderCard = import_react28.default.memo(
|
|
|
3605
4518
|
var ITEM_TRANSITION = {
|
|
3606
4519
|
transition: "background 0.15s ease, transform 0.1s ease"
|
|
3607
4520
|
};
|
|
3608
|
-
var ActionItem =
|
|
4521
|
+
var ActionItem = import_react35.default.memo(({ action }) => {
|
|
3609
4522
|
const iconBg = action.iconBg ?? DEFAULT_ICON_BG;
|
|
3610
4523
|
const iconColor = action.iconColor ?? DEFAULT_ICON_COLOR;
|
|
3611
|
-
const inner = /* @__PURE__ */ (0,
|
|
3612
|
-
|
|
4524
|
+
const inner = /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
4525
|
+
import_react36.HStack,
|
|
3613
4526
|
{
|
|
3614
4527
|
gap: STANDARD_SPACING.sm,
|
|
3615
4528
|
px: STANDARD_SPACING.sm,
|
|
@@ -3631,8 +4544,8 @@ var ActionItem = import_react28.default.memo(({ action }) => {
|
|
|
3631
4544
|
_active: { bg: ITEM_ACTIVE_BG, transform: "scale(0.99)" },
|
|
3632
4545
|
style: ITEM_TRANSITION,
|
|
3633
4546
|
children: [
|
|
3634
|
-
/* @__PURE__ */ (0,
|
|
3635
|
-
|
|
4547
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4548
|
+
import_react36.Flex,
|
|
3636
4549
|
{
|
|
3637
4550
|
w: "40px",
|
|
3638
4551
|
h: "40px",
|
|
@@ -3641,12 +4554,12 @@ var ActionItem = import_react28.default.memo(({ action }) => {
|
|
|
3641
4554
|
align: "center",
|
|
3642
4555
|
justify: "center",
|
|
3643
4556
|
flexShrink: 0,
|
|
3644
|
-
children: /* @__PURE__ */ (0,
|
|
4557
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react36.Icon, { as: action.icon, boxSize: "20px", color: iconColor })
|
|
3645
4558
|
}
|
|
3646
4559
|
),
|
|
3647
|
-
/* @__PURE__ */ (0,
|
|
3648
|
-
/* @__PURE__ */ (0,
|
|
3649
|
-
|
|
4560
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react36.Box, { flex: "1", minW: 0, children: [
|
|
4561
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4562
|
+
import_react36.Text,
|
|
3650
4563
|
{
|
|
3651
4564
|
fontSize: "15px",
|
|
3652
4565
|
fontWeight: "600",
|
|
@@ -3655,8 +4568,8 @@ var ActionItem = import_react28.default.memo(({ action }) => {
|
|
|
3655
4568
|
children: action.label
|
|
3656
4569
|
}
|
|
3657
4570
|
),
|
|
3658
|
-
action.description && /* @__PURE__ */ (0,
|
|
3659
|
-
|
|
4571
|
+
action.description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4572
|
+
import_react36.Text,
|
|
3660
4573
|
{
|
|
3661
4574
|
fontSize: "12px",
|
|
3662
4575
|
color: DESC_COLOR,
|
|
@@ -3669,10 +4582,10 @@ var ActionItem = import_react28.default.memo(({ action }) => {
|
|
|
3669
4582
|
}
|
|
3670
4583
|
)
|
|
3671
4584
|
] }),
|
|
3672
|
-
/* @__PURE__ */ (0,
|
|
3673
|
-
|
|
4585
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4586
|
+
import_react36.Icon,
|
|
3674
4587
|
{
|
|
3675
|
-
as:
|
|
4588
|
+
as: import_lu8.LuChevronRight,
|
|
3676
4589
|
boxSize: "18px",
|
|
3677
4590
|
color: CHEVRON_COLOR,
|
|
3678
4591
|
flexShrink: 0
|
|
@@ -3682,7 +4595,7 @@ var ActionItem = import_react28.default.memo(({ action }) => {
|
|
|
3682
4595
|
}
|
|
3683
4596
|
);
|
|
3684
4597
|
if (action.href) {
|
|
3685
|
-
return /* @__PURE__ */ (0,
|
|
4598
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3686
4599
|
import_link.default,
|
|
3687
4600
|
{
|
|
3688
4601
|
href: action.href,
|
|
@@ -3701,16 +4614,16 @@ var BottomQuickActions = ({
|
|
|
3701
4614
|
headerSlot,
|
|
3702
4615
|
actions
|
|
3703
4616
|
}) => {
|
|
3704
|
-
return /* @__PURE__ */ (0,
|
|
3705
|
-
|
|
4617
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4618
|
+
import_react36.Drawer.Root,
|
|
3706
4619
|
{
|
|
3707
4620
|
open,
|
|
3708
4621
|
onOpenChange: (e) => onOpenChange(e.open),
|
|
3709
4622
|
placement: "bottom",
|
|
3710
|
-
children: /* @__PURE__ */ (0,
|
|
3711
|
-
/* @__PURE__ */ (0,
|
|
3712
|
-
/* @__PURE__ */ (0,
|
|
3713
|
-
|
|
4623
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react36.Portal, { children: [
|
|
4624
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react36.Drawer.Backdrop, {}),
|
|
4625
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react36.Drawer.Positioner, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
4626
|
+
import_react36.Drawer.Content,
|
|
3714
4627
|
{
|
|
3715
4628
|
borderTopRadius: "l3",
|
|
3716
4629
|
borderBottomRadius: "0",
|
|
@@ -3720,8 +4633,8 @@ var BottomQuickActions = ({
|
|
|
3720
4633
|
pb: `calc(${STANDARD_SPACING.sm} + env(safe-area-inset-bottom))`,
|
|
3721
4634
|
boxShadow: STANDARD_SHADOWS.level4,
|
|
3722
4635
|
children: [
|
|
3723
|
-
/* @__PURE__ */ (0,
|
|
3724
|
-
|
|
4636
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react36.Flex, { justify: "center", pt: "10px", pb: "4px", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4637
|
+
import_react36.Box,
|
|
3725
4638
|
{
|
|
3726
4639
|
w: "36px",
|
|
3727
4640
|
h: "4px",
|
|
@@ -3729,17 +4642,17 @@ var BottomQuickActions = ({
|
|
|
3729
4642
|
bg: DRAG_COLOR
|
|
3730
4643
|
}
|
|
3731
4644
|
) }),
|
|
3732
|
-
/* @__PURE__ */ (0,
|
|
3733
|
-
|
|
4645
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4646
|
+
import_react36.Drawer.Header,
|
|
3734
4647
|
{
|
|
3735
4648
|
px: STANDARD_SPACING.sm,
|
|
3736
4649
|
pt: "12px",
|
|
3737
4650
|
pb: "0",
|
|
3738
4651
|
borderBottomWidth: "0",
|
|
3739
|
-
children: /* @__PURE__ */ (0,
|
|
3740
|
-
/* @__PURE__ */ (0,
|
|
3741
|
-
/* @__PURE__ */ (0,
|
|
3742
|
-
|
|
4652
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react36.Flex, { align: "flex-start", justify: "space-between", gap: "12px", children: [
|
|
4653
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react36.Box, { flex: "1", minW: 0, children: [
|
|
4654
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4655
|
+
import_react36.Drawer.Title,
|
|
3743
4656
|
{
|
|
3744
4657
|
fontSize: "18px",
|
|
3745
4658
|
fontWeight: "700",
|
|
@@ -3749,8 +4662,8 @@ var BottomQuickActions = ({
|
|
|
3749
4662
|
children: title
|
|
3750
4663
|
}
|
|
3751
4664
|
),
|
|
3752
|
-
subtitle && /* @__PURE__ */ (0,
|
|
3753
|
-
|
|
4665
|
+
subtitle && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4666
|
+
import_react36.Text,
|
|
3754
4667
|
{
|
|
3755
4668
|
fontSize: "13px",
|
|
3756
4669
|
color: SUBTITLE_COLOR,
|
|
@@ -3761,8 +4674,8 @@ var BottomQuickActions = ({
|
|
|
3761
4674
|
}
|
|
3762
4675
|
)
|
|
3763
4676
|
] }),
|
|
3764
|
-
/* @__PURE__ */ (0,
|
|
3765
|
-
|
|
4677
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react36.Drawer.CloseTrigger, { asChild: true, mt: "2px", flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4678
|
+
import_react36.CloseButton,
|
|
3766
4679
|
{
|
|
3767
4680
|
size: "sm",
|
|
3768
4681
|
color: BRAND_COLORS.neutralText,
|
|
@@ -3773,15 +4686,15 @@ var BottomQuickActions = ({
|
|
|
3773
4686
|
] })
|
|
3774
4687
|
}
|
|
3775
4688
|
),
|
|
3776
|
-
/* @__PURE__ */ (0,
|
|
3777
|
-
|
|
4689
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
4690
|
+
import_react36.Drawer.Body,
|
|
3778
4691
|
{
|
|
3779
4692
|
px: STANDARD_SPACING.sm,
|
|
3780
4693
|
pt: STANDARD_SPACING.sm,
|
|
3781
4694
|
pb: "4px",
|
|
3782
4695
|
children: [
|
|
3783
|
-
headerSlot && /* @__PURE__ */ (0,
|
|
3784
|
-
/* @__PURE__ */ (0,
|
|
4696
|
+
headerSlot && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react36.Box, { mb: STANDARD_SPACING.xs, children: headerSlot }),
|
|
4697
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react36.VStack, { gap: STANDARD_SPACING.xs, align: "stretch", children: actions.map((action, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ActionItem, { action }, i)) })
|
|
3785
4698
|
]
|
|
3786
4699
|
}
|
|
3787
4700
|
)
|
|
@@ -3795,18 +4708,18 @@ var BottomQuickActions = ({
|
|
|
3795
4708
|
var BottomQuickActions_default = BottomQuickActions;
|
|
3796
4709
|
|
|
3797
4710
|
// src/Generic/NotifyInstall.tsx
|
|
3798
|
-
var
|
|
3799
|
-
var
|
|
3800
|
-
var
|
|
4711
|
+
var import_react38 = require("react");
|
|
4712
|
+
var import_react39 = require("@chakra-ui/react");
|
|
4713
|
+
var import_react40 = require("motion/react");
|
|
3801
4714
|
var import_fi2 = require("react-icons/fi");
|
|
3802
4715
|
|
|
3803
4716
|
// src/hooks/useNotifyInstall.ts
|
|
3804
|
-
var
|
|
4717
|
+
var import_react37 = require("react");
|
|
3805
4718
|
function useNotifyInstall() {
|
|
3806
|
-
const [isInstalled, setIsInstalled] = (0,
|
|
3807
|
-
const [isMobile, setIsMobile] = (0,
|
|
3808
|
-
const [installPrompt, setInstallPrompt] = (0,
|
|
3809
|
-
(0,
|
|
4719
|
+
const [isInstalled, setIsInstalled] = (0, import_react37.useState)(false);
|
|
4720
|
+
const [isMobile, setIsMobile] = (0, import_react37.useState)(false);
|
|
4721
|
+
const [installPrompt, setInstallPrompt] = (0, import_react37.useState)(null);
|
|
4722
|
+
(0, import_react37.useEffect)(() => {
|
|
3810
4723
|
const mobile = /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
|
|
3811
4724
|
setIsMobile(mobile);
|
|
3812
4725
|
const installed = window.matchMedia("(display-mode: standalone)").matches || window.navigator.standalone === true;
|
|
@@ -3838,7 +4751,7 @@ function useNotifyInstall() {
|
|
|
3838
4751
|
}
|
|
3839
4752
|
|
|
3840
4753
|
// src/Generic/NotifyInstall.tsx
|
|
3841
|
-
var
|
|
4754
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
3842
4755
|
var STEPS = [
|
|
3843
4756
|
{ icon: import_fi2.FiShare, label: "Tap the browser menu or Share button" },
|
|
3844
4757
|
{ icon: import_fi2.FiPlusSquare, label: 'Choose "Add to Home Screen"' }
|
|
@@ -3849,8 +4762,8 @@ function NotifyInstall({
|
|
|
3849
4762
|
appName
|
|
3850
4763
|
}) {
|
|
3851
4764
|
const { isInstalled, isMobile, canInstall, install } = useNotifyInstall();
|
|
3852
|
-
const [isDismissed, setIsDismissed] = (0,
|
|
3853
|
-
(0,
|
|
4765
|
+
const [isDismissed, setIsDismissed] = (0, import_react38.useState)(true);
|
|
4766
|
+
(0, import_react38.useEffect)(() => {
|
|
3854
4767
|
if (localStorage.getItem(DISMISSED_KEY) !== "true") {
|
|
3855
4768
|
setIsDismissed(false);
|
|
3856
4769
|
}
|
|
@@ -3860,11 +4773,11 @@ function NotifyInstall({
|
|
|
3860
4773
|
setIsDismissed(true);
|
|
3861
4774
|
};
|
|
3862
4775
|
const showPrompt = isMobile && !isInstalled && !isDismissed;
|
|
3863
|
-
return /* @__PURE__ */ (0,
|
|
4776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
|
|
3864
4777
|
children,
|
|
3865
|
-
/* @__PURE__ */ (0,
|
|
3866
|
-
/* @__PURE__ */ (0,
|
|
3867
|
-
|
|
4778
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react40.AnimatePresence, { children: showPrompt && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
|
|
4779
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4780
|
+
import_react40.motion.div,
|
|
3868
4781
|
{
|
|
3869
4782
|
initial: { opacity: 0 },
|
|
3870
4783
|
animate: { opacity: 1 },
|
|
@@ -3882,8 +4795,8 @@ function NotifyInstall({
|
|
|
3882
4795
|
},
|
|
3883
4796
|
"install-backdrop"
|
|
3884
4797
|
),
|
|
3885
|
-
/* @__PURE__ */ (0,
|
|
3886
|
-
|
|
4798
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
4799
|
+
import_react40.motion.div,
|
|
3887
4800
|
{
|
|
3888
4801
|
initial: { y: "100%" },
|
|
3889
4802
|
animate: { y: 0 },
|
|
@@ -3901,7 +4814,7 @@ function NotifyInstall({
|
|
|
3901
4814
|
paddingBottom: "env(safe-area-inset-bottom)"
|
|
3902
4815
|
},
|
|
3903
4816
|
children: [
|
|
3904
|
-
/* @__PURE__ */ (0,
|
|
4817
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
3905
4818
|
"button",
|
|
3906
4819
|
{
|
|
3907
4820
|
"aria-label": "Dismiss install prompt",
|
|
@@ -3920,12 +4833,12 @@ function NotifyInstall({
|
|
|
3920
4833
|
justifyContent: "center",
|
|
3921
4834
|
color: "#9ca3af"
|
|
3922
4835
|
},
|
|
3923
|
-
children: /* @__PURE__ */ (0,
|
|
4836
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fi2.FiX, { size: 18 })
|
|
3924
4837
|
}
|
|
3925
4838
|
),
|
|
3926
|
-
/* @__PURE__ */ (0,
|
|
3927
|
-
/* @__PURE__ */ (0,
|
|
3928
|
-
|
|
4839
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react39.VStack, { gap: 6, textAlign: "center", px: 6, py: 8, children: [
|
|
4840
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4841
|
+
import_react39.Flex,
|
|
3929
4842
|
{
|
|
3930
4843
|
boxSize: 16,
|
|
3931
4844
|
align: "center",
|
|
@@ -3934,12 +4847,12 @@ function NotifyInstall({
|
|
|
3934
4847
|
bg: "green.50",
|
|
3935
4848
|
color: "green.600",
|
|
3936
4849
|
shadow: "sm",
|
|
3937
|
-
children: /* @__PURE__ */ (0,
|
|
4850
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react39.Icon, { as: import_fi2.FiDownload, boxSize: 8 })
|
|
3938
4851
|
}
|
|
3939
4852
|
),
|
|
3940
|
-
/* @__PURE__ */ (0,
|
|
3941
|
-
/* @__PURE__ */ (0,
|
|
3942
|
-
|
|
4853
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react39.VStack, { gap: 2, children: [
|
|
4854
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
4855
|
+
import_react39.Text,
|
|
3943
4856
|
{
|
|
3944
4857
|
fontSize: "lg",
|
|
3945
4858
|
fontWeight: "bold",
|
|
@@ -3951,10 +4864,10 @@ function NotifyInstall({
|
|
|
3951
4864
|
]
|
|
3952
4865
|
}
|
|
3953
4866
|
),
|
|
3954
|
-
/* @__PURE__ */ (0,
|
|
4867
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react39.Text, { fontSize: "sm", color: "gray.500", lineHeight: "tall", children: "Add the app to your home screen for a faster, app-like experience before continuing." })
|
|
3955
4868
|
] }),
|
|
3956
|
-
canInstall ? /* @__PURE__ */ (0,
|
|
3957
|
-
|
|
4869
|
+
canInstall ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
4870
|
+
import_react39.Button,
|
|
3958
4871
|
{
|
|
3959
4872
|
onClick: install,
|
|
3960
4873
|
colorPalette: "green",
|
|
@@ -3962,12 +4875,12 @@ function NotifyInstall({
|
|
|
3962
4875
|
w: "full",
|
|
3963
4876
|
rounded: "xl",
|
|
3964
4877
|
children: [
|
|
3965
|
-
/* @__PURE__ */ (0,
|
|
4878
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react39.Icon, { as: import_fi2.FiDownload }),
|
|
3966
4879
|
"Add to Home Screen"
|
|
3967
4880
|
]
|
|
3968
4881
|
}
|
|
3969
|
-
) : /* @__PURE__ */ (0,
|
|
3970
|
-
|
|
4882
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4883
|
+
import_react39.VStack,
|
|
3971
4884
|
{
|
|
3972
4885
|
w: "full",
|
|
3973
4886
|
bg: "gray.50",
|
|
@@ -3977,9 +4890,9 @@ function NotifyInstall({
|
|
|
3977
4890
|
p: 4,
|
|
3978
4891
|
gap: 4,
|
|
3979
4892
|
align: "stretch",
|
|
3980
|
-
children: STEPS.map((step, i) => /* @__PURE__ */ (0,
|
|
3981
|
-
/* @__PURE__ */ (0,
|
|
3982
|
-
|
|
4893
|
+
children: STEPS.map((step, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react39.HStack, { gap: 3, align: "center", children: [
|
|
4894
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4895
|
+
import_react39.Flex,
|
|
3983
4896
|
{
|
|
3984
4897
|
boxSize: 9,
|
|
3985
4898
|
flexShrink: 0,
|
|
@@ -3990,10 +4903,10 @@ function NotifyInstall({
|
|
|
3990
4903
|
borderWidth: "1px",
|
|
3991
4904
|
borderColor: "gray.200",
|
|
3992
4905
|
color: "green.600",
|
|
3993
|
-
children: /* @__PURE__ */ (0,
|
|
4906
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react39.Icon, { as: step.icon, boxSize: 4 })
|
|
3994
4907
|
}
|
|
3995
4908
|
),
|
|
3996
|
-
/* @__PURE__ */ (0,
|
|
4909
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react39.Text, { fontSize: "sm", color: "gray.700", textAlign: "left", children: step.label })
|
|
3997
4910
|
] }, i))
|
|
3998
4911
|
}
|
|
3999
4912
|
)
|
|
@@ -4007,17 +4920,17 @@ function NotifyInstall({
|
|
|
4007
4920
|
}
|
|
4008
4921
|
|
|
4009
4922
|
// src/UserProfile/UserProfile.tsx
|
|
4010
|
-
var
|
|
4011
|
-
var
|
|
4923
|
+
var import_react41 = require("react");
|
|
4924
|
+
var import_react42 = require("@chakra-ui/react");
|
|
4012
4925
|
var import_ri = require("react-icons/ri");
|
|
4013
|
-
var
|
|
4926
|
+
var import_lu9 = require("react-icons/lu");
|
|
4014
4927
|
var import_hi2 = require("react-icons/hi2");
|
|
4015
4928
|
var import_bs = require("react-icons/bs");
|
|
4016
4929
|
var import_lia = require("react-icons/lia");
|
|
4017
4930
|
var import_fa5 = require("react-icons/fa");
|
|
4018
4931
|
var import_md = require("react-icons/md");
|
|
4019
4932
|
var import_io5 = require("react-icons/io5");
|
|
4020
|
-
var
|
|
4933
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
4021
4934
|
var NAVBAR_STORAGE_KEY = "profile-navbar-quick-items";
|
|
4022
4935
|
var FONT_SIZE_STORAGE_KEY = "profile-font-size-pref";
|
|
4023
4936
|
var DEFAULT_NAV_HREFS = ["/", "/plans", "/pay-my-plan", "/claims"];
|
|
@@ -4033,8 +4946,8 @@ var ALL_NAV_OPTIONS = [
|
|
|
4033
4946
|
key: "/",
|
|
4034
4947
|
title: "Home",
|
|
4035
4948
|
href: "/",
|
|
4036
|
-
Icon:
|
|
4037
|
-
activeIcon:
|
|
4949
|
+
Icon: import_lu9.LuHouse,
|
|
4950
|
+
activeIcon: import_lu9.LuHouse,
|
|
4038
4951
|
match: (p) => p === "/",
|
|
4039
4952
|
roles: ["branch", "bmstl", "sales-agent"]
|
|
4040
4953
|
},
|
|
@@ -4051,8 +4964,8 @@ var ALL_NAV_OPTIONS = [
|
|
|
4051
4964
|
key: "/pay-my-plan",
|
|
4052
4965
|
title: "Pay",
|
|
4053
4966
|
href: "/pay-my-plan",
|
|
4054
|
-
Icon:
|
|
4055
|
-
activeIcon:
|
|
4967
|
+
Icon: import_lu9.LuCreditCard,
|
|
4968
|
+
activeIcon: import_lu9.LuCreditCard,
|
|
4056
4969
|
match: (p) => p.startsWith("/pay-my-plan") || p.startsWith("/account/pay-my-plan") || p.startsWith("/order-summary"),
|
|
4057
4970
|
roles: ["branch", "bmstl", "sales-agent"]
|
|
4058
4971
|
},
|
|
@@ -4060,8 +4973,8 @@ var ALL_NAV_OPTIONS = [
|
|
|
4060
4973
|
key: "/claims",
|
|
4061
4974
|
title: "Claim",
|
|
4062
4975
|
href: "/claims",
|
|
4063
|
-
Icon:
|
|
4064
|
-
activeIcon:
|
|
4976
|
+
Icon: import_lu9.LuFileText,
|
|
4977
|
+
activeIcon: import_lu9.LuFileText,
|
|
4065
4978
|
match: (p) => p.startsWith("/claims"),
|
|
4066
4979
|
roles: ["branch", "bmstl", "sales-agent"]
|
|
4067
4980
|
},
|
|
@@ -4315,28 +5228,28 @@ function ReusableProfile({
|
|
|
4315
5228
|
onTwoFactorChange,
|
|
4316
5229
|
onToast = noopToast
|
|
4317
5230
|
}) {
|
|
4318
|
-
const [profileView, setProfileView] = (0,
|
|
4319
|
-
const [fallbackColorMode, setFallbackColorMode] = (0,
|
|
5231
|
+
const [profileView, setProfileView] = (0, import_react41.useState)("main");
|
|
5232
|
+
const [fallbackColorMode, setFallbackColorMode] = (0, import_react41.useState)("light");
|
|
4320
5233
|
const colorMode = controlledColorMode ?? fallbackColorMode;
|
|
4321
|
-
const [fontSize, setFontSizeLocal] = (0,
|
|
4322
|
-
const [quickNavHrefs, setQuickNavHrefs] = (0,
|
|
4323
|
-
const [replacingIdx, setReplacingIdx] = (0,
|
|
4324
|
-
const [editName, setEditName] = (0,
|
|
4325
|
-
const [editLoading, setEditLoading] = (0,
|
|
4326
|
-
const [currentPw, setCurrentPw] = (0,
|
|
4327
|
-
const [newPw, setNewPw] = (0,
|
|
4328
|
-
const [confirmPw, setConfirmPw] = (0,
|
|
4329
|
-
const [showCurrentPw, setShowCurrentPw] = (0,
|
|
4330
|
-
const [showNewPw, setShowNewPw] = (0,
|
|
4331
|
-
const [showConfirmPw, setShowConfirmPw] = (0,
|
|
4332
|
-
const [pwLoading, setPwLoading] = (0,
|
|
4333
|
-
const [twoFactorEnabled, setTwoFactorEnabled] = (0,
|
|
5234
|
+
const [fontSize, setFontSizeLocal] = (0, import_react41.useState)("md");
|
|
5235
|
+
const [quickNavHrefs, setQuickNavHrefs] = (0, import_react41.useState)(initialQuickNavHrefs);
|
|
5236
|
+
const [replacingIdx, setReplacingIdx] = (0, import_react41.useState)(null);
|
|
5237
|
+
const [editName, setEditName] = (0, import_react41.useState)(user.displayName);
|
|
5238
|
+
const [editLoading, setEditLoading] = (0, import_react41.useState)(false);
|
|
5239
|
+
const [currentPw, setCurrentPw] = (0, import_react41.useState)("");
|
|
5240
|
+
const [newPw, setNewPw] = (0, import_react41.useState)("");
|
|
5241
|
+
const [confirmPw, setConfirmPw] = (0, import_react41.useState)("");
|
|
5242
|
+
const [showCurrentPw, setShowCurrentPw] = (0, import_react41.useState)(false);
|
|
5243
|
+
const [showNewPw, setShowNewPw] = (0, import_react41.useState)(false);
|
|
5244
|
+
const [showConfirmPw, setShowConfirmPw] = (0, import_react41.useState)(false);
|
|
5245
|
+
const [pwLoading, setPwLoading] = (0, import_react41.useState)(false);
|
|
5246
|
+
const [twoFactorEnabled, setTwoFactorEnabled] = (0, import_react41.useState)(
|
|
4334
5247
|
initialTwoFactorEnabled
|
|
4335
5248
|
);
|
|
4336
|
-
const [isMounted, setIsMounted] = (0,
|
|
4337
|
-
const isDesktopRaw = (0,
|
|
5249
|
+
const [isMounted, setIsMounted] = (0, import_react41.useState)(false);
|
|
5250
|
+
const isDesktopRaw = (0, import_react42.useBreakpointValue)({ base: false, md: true });
|
|
4338
5251
|
const isDesktop = isMounted ? isDesktopRaw ?? false : false;
|
|
4339
|
-
(0,
|
|
5252
|
+
(0, import_react41.useEffect)(() => {
|
|
4340
5253
|
setIsMounted(true);
|
|
4341
5254
|
if (!enableLocalStorage || typeof window === "undefined") return;
|
|
4342
5255
|
setFontSizeLocal(localStorage.getItem(FONT_SIZE_STORAGE_KEY) ?? "md");
|
|
@@ -4347,10 +5260,10 @@ function ReusableProfile({
|
|
|
4347
5260
|
setQuickNavHrefs(initialQuickNavHrefs);
|
|
4348
5261
|
}
|
|
4349
5262
|
}, [enableLocalStorage, initialQuickNavHrefs, storageKey]);
|
|
4350
|
-
(0,
|
|
5263
|
+
(0, import_react41.useEffect)(() => {
|
|
4351
5264
|
setEditName(user.displayName);
|
|
4352
5265
|
}, [user.displayName]);
|
|
4353
|
-
const availableOptions = (0,
|
|
5266
|
+
const availableOptions = (0, import_react41.useMemo)(
|
|
4354
5267
|
() => availableNavOptions.filter(
|
|
4355
5268
|
(option) => !user.role || option.roles.includes(user.role)
|
|
4356
5269
|
),
|
|
@@ -4478,9 +5391,9 @@ function ReusableProfile({
|
|
|
4478
5391
|
}
|
|
4479
5392
|
};
|
|
4480
5393
|
const roleLabel = user.role ? ROLE_LABELS[user.role] ?? user.role : "";
|
|
4481
|
-
const mainContent = /* @__PURE__ */ (0,
|
|
4482
|
-
/* @__PURE__ */ (0,
|
|
4483
|
-
|
|
5394
|
+
const mainContent = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
5395
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
5396
|
+
import_react42.Box,
|
|
4484
5397
|
{
|
|
4485
5398
|
bg: "var(--chakra-colors-primary)",
|
|
4486
5399
|
pt: 12,
|
|
@@ -4488,21 +5401,21 @@ function ReusableProfile({
|
|
|
4488
5401
|
px: 4,
|
|
4489
5402
|
textAlign: "center",
|
|
4490
5403
|
children: [
|
|
4491
|
-
/* @__PURE__ */ (0,
|
|
4492
|
-
|
|
5404
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
5405
|
+
import_react42.Avatar.Root,
|
|
4493
5406
|
{
|
|
4494
5407
|
size: "2xl",
|
|
4495
5408
|
mx: "auto",
|
|
4496
5409
|
mb: 4,
|
|
4497
5410
|
colorPalette: pickPalette(user.displayName || "U"),
|
|
4498
5411
|
children: [
|
|
4499
|
-
user.avatarSrc && /* @__PURE__ */ (0,
|
|
4500
|
-
/* @__PURE__ */ (0,
|
|
5412
|
+
user.avatarSrc && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Avatar.Image, { src: user.avatarSrc, alt: user.displayName }),
|
|
5413
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Avatar.Fallback, { name: user.displayName })
|
|
4501
5414
|
]
|
|
4502
5415
|
}
|
|
4503
5416
|
),
|
|
4504
|
-
/* @__PURE__ */ (0,
|
|
4505
|
-
|
|
5417
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5418
|
+
import_react42.Text,
|
|
4506
5419
|
{
|
|
4507
5420
|
color: "white",
|
|
4508
5421
|
fontWeight: "bold",
|
|
@@ -4512,9 +5425,9 @@ function ReusableProfile({
|
|
|
4512
5425
|
children: user.displayName
|
|
4513
5426
|
}
|
|
4514
5427
|
),
|
|
4515
|
-
user.email && /* @__PURE__ */ (0,
|
|
4516
|
-
roleLabel && /* @__PURE__ */ (0,
|
|
4517
|
-
|
|
5428
|
+
user.email && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { color: "rgba(255,255,255,0.75)", fontSize: "sm", mb: 2, children: user.email }),
|
|
5429
|
+
roleLabel && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Box, { display: "inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5430
|
+
import_react42.Badge,
|
|
4518
5431
|
{
|
|
4519
5432
|
bg: "rgba(255,255,255,0.15)",
|
|
4520
5433
|
color: "white",
|
|
@@ -4530,9 +5443,9 @@ function ReusableProfile({
|
|
|
4530
5443
|
]
|
|
4531
5444
|
}
|
|
4532
5445
|
),
|
|
4533
|
-
/* @__PURE__ */ (0,
|
|
4534
|
-
/* @__PURE__ */ (0,
|
|
4535
|
-
|
|
5446
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { px: 4, pt: 5, pb: 1, children: [
|
|
5447
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5448
|
+
import_react42.Text,
|
|
4536
5449
|
{
|
|
4537
5450
|
fontSize: "xs",
|
|
4538
5451
|
fontWeight: "bold",
|
|
@@ -4543,8 +5456,8 @@ function ReusableProfile({
|
|
|
4543
5456
|
children: "Account"
|
|
4544
5457
|
}
|
|
4545
5458
|
),
|
|
4546
|
-
/* @__PURE__ */ (0,
|
|
4547
|
-
|
|
5459
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5460
|
+
import_react42.Box,
|
|
4548
5461
|
{
|
|
4549
5462
|
as: "button",
|
|
4550
5463
|
w: "full",
|
|
@@ -4552,8 +5465,8 @@ function ReusableProfile({
|
|
|
4552
5465
|
_hover: { opacity: 0.7 },
|
|
4553
5466
|
transition: "opacity 0.15s",
|
|
4554
5467
|
onClick: () => setProfileView("edit-account"),
|
|
4555
|
-
children: /* @__PURE__ */ (0,
|
|
4556
|
-
|
|
5468
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
5469
|
+
import_react42.Flex,
|
|
4557
5470
|
{
|
|
4558
5471
|
justify: "space-between",
|
|
4559
5472
|
align: "center",
|
|
@@ -4562,9 +5475,9 @@ function ReusableProfile({
|
|
|
4562
5475
|
borderRadius: "lg",
|
|
4563
5476
|
bg: isDesktop && profileView === "edit-account" ? "gray.100" : void 0,
|
|
4564
5477
|
children: [
|
|
4565
|
-
/* @__PURE__ */ (0,
|
|
4566
|
-
/* @__PURE__ */ (0,
|
|
4567
|
-
|
|
5478
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 3, children: [
|
|
5479
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5480
|
+
import_react42.Box,
|
|
4568
5481
|
{
|
|
4569
5482
|
w: "38px",
|
|
4570
5483
|
h: "38px",
|
|
@@ -4575,23 +5488,23 @@ function ReusableProfile({
|
|
|
4575
5488
|
justifyContent: "center",
|
|
4576
5489
|
color: "gray.600",
|
|
4577
5490
|
flexShrink: 0,
|
|
4578
|
-
children: /* @__PURE__ */ (0,
|
|
5491
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuUser, { size: 16 })
|
|
4579
5492
|
}
|
|
4580
5493
|
),
|
|
4581
|
-
/* @__PURE__ */ (0,
|
|
4582
|
-
/* @__PURE__ */ (0,
|
|
4583
|
-
/* @__PURE__ */ (0,
|
|
5494
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
5495
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", fontWeight: "semibold", children: "Edit Account" }),
|
|
5496
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", color: "gray.500", children: "Update your display name and contact details" })
|
|
4584
5497
|
] })
|
|
4585
5498
|
] }),
|
|
4586
|
-
/* @__PURE__ */ (0,
|
|
5499
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronRight, { size: 16, color: "var(--chakra-colors-gray-400)" })
|
|
4587
5500
|
]
|
|
4588
5501
|
}
|
|
4589
5502
|
)
|
|
4590
5503
|
}
|
|
4591
5504
|
),
|
|
4592
|
-
/* @__PURE__ */ (0,
|
|
4593
|
-
/* @__PURE__ */ (0,
|
|
4594
|
-
|
|
5505
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {}),
|
|
5506
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5507
|
+
import_react42.Box,
|
|
4595
5508
|
{
|
|
4596
5509
|
as: "button",
|
|
4597
5510
|
w: "full",
|
|
@@ -4602,8 +5515,8 @@ function ReusableProfile({
|
|
|
4602
5515
|
resetPasswordForm();
|
|
4603
5516
|
setProfileView("change-password");
|
|
4604
5517
|
},
|
|
4605
|
-
children: /* @__PURE__ */ (0,
|
|
4606
|
-
|
|
5518
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
5519
|
+
import_react42.Flex,
|
|
4607
5520
|
{
|
|
4608
5521
|
justify: "space-between",
|
|
4609
5522
|
align: "center",
|
|
@@ -4612,9 +5525,9 @@ function ReusableProfile({
|
|
|
4612
5525
|
borderRadius: "lg",
|
|
4613
5526
|
bg: isDesktop && profileView === "change-password" ? "gray.100" : void 0,
|
|
4614
5527
|
children: [
|
|
4615
|
-
/* @__PURE__ */ (0,
|
|
4616
|
-
/* @__PURE__ */ (0,
|
|
4617
|
-
|
|
5528
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 3, children: [
|
|
5529
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5530
|
+
import_react42.Box,
|
|
4618
5531
|
{
|
|
4619
5532
|
w: "38px",
|
|
4620
5533
|
h: "38px",
|
|
@@ -4625,25 +5538,25 @@ function ReusableProfile({
|
|
|
4625
5538
|
justifyContent: "center",
|
|
4626
5539
|
color: "gray.600",
|
|
4627
5540
|
flexShrink: 0,
|
|
4628
|
-
children: /* @__PURE__ */ (0,
|
|
5541
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuLock, { size: 16 })
|
|
4629
5542
|
}
|
|
4630
5543
|
),
|
|
4631
|
-
/* @__PURE__ */ (0,
|
|
4632
|
-
/* @__PURE__ */ (0,
|
|
4633
|
-
/* @__PURE__ */ (0,
|
|
5544
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
5545
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", fontWeight: "semibold", children: "Change Password" }),
|
|
5546
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", color: "gray.500", children: "Test locally through the callback prop" })
|
|
4634
5547
|
] })
|
|
4635
5548
|
] }),
|
|
4636
|
-
/* @__PURE__ */ (0,
|
|
5549
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronRight, { size: 16, color: "var(--chakra-colors-gray-400)" })
|
|
4637
5550
|
]
|
|
4638
5551
|
}
|
|
4639
5552
|
)
|
|
4640
5553
|
}
|
|
4641
5554
|
),
|
|
4642
|
-
/* @__PURE__ */ (0,
|
|
4643
|
-
/* @__PURE__ */ (0,
|
|
4644
|
-
/* @__PURE__ */ (0,
|
|
4645
|
-
/* @__PURE__ */ (0,
|
|
4646
|
-
|
|
5555
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {}),
|
|
5556
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { justify: "space-between", align: "center", py: 3, children: [
|
|
5557
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 3, children: [
|
|
5558
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5559
|
+
import_react42.Box,
|
|
4647
5560
|
{
|
|
4648
5561
|
w: "38px",
|
|
4649
5562
|
h: "38px",
|
|
@@ -4654,16 +5567,16 @@ function ReusableProfile({
|
|
|
4654
5567
|
justifyContent: "center",
|
|
4655
5568
|
color: "gray.600",
|
|
4656
5569
|
flexShrink: 0,
|
|
4657
|
-
children: /* @__PURE__ */ (0,
|
|
5570
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuShield, { size: 16 })
|
|
4658
5571
|
}
|
|
4659
5572
|
),
|
|
4660
|
-
/* @__PURE__ */ (0,
|
|
4661
|
-
/* @__PURE__ */ (0,
|
|
4662
|
-
/* @__PURE__ */ (0,
|
|
5573
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
5574
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", fontWeight: "semibold", children: "Two Factor Authentication" }),
|
|
5575
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", color: "gray.500", children: twoFactorEnabled ? "Enabled" : "Disabled" })
|
|
4663
5576
|
] })
|
|
4664
5577
|
] }),
|
|
4665
|
-
/* @__PURE__ */ (0,
|
|
4666
|
-
|
|
5578
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5579
|
+
import_react42.Box,
|
|
4667
5580
|
{
|
|
4668
5581
|
role: "switch",
|
|
4669
5582
|
"aria-checked": twoFactorEnabled,
|
|
@@ -4685,8 +5598,8 @@ function ReusableProfile({
|
|
|
4685
5598
|
cursor: "pointer",
|
|
4686
5599
|
flexShrink: 0,
|
|
4687
5600
|
outline: "none",
|
|
4688
|
-
children: /* @__PURE__ */ (0,
|
|
4689
|
-
|
|
5601
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5602
|
+
import_react42.Box,
|
|
4690
5603
|
{
|
|
4691
5604
|
position: "absolute",
|
|
4692
5605
|
top: "3px",
|
|
@@ -4703,9 +5616,9 @@ function ReusableProfile({
|
|
|
4703
5616
|
)
|
|
4704
5617
|
] })
|
|
4705
5618
|
] }),
|
|
4706
|
-
/* @__PURE__ */ (0,
|
|
4707
|
-
/* @__PURE__ */ (0,
|
|
4708
|
-
|
|
5619
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { px: 4, pt: 4, pb: 2, children: [
|
|
5620
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5621
|
+
import_react42.Text,
|
|
4709
5622
|
{
|
|
4710
5623
|
fontSize: "xs",
|
|
4711
5624
|
fontWeight: "bold",
|
|
@@ -4716,10 +5629,10 @@ function ReusableProfile({
|
|
|
4716
5629
|
children: "Preferences"
|
|
4717
5630
|
}
|
|
4718
5631
|
),
|
|
4719
|
-
/* @__PURE__ */ (0,
|
|
4720
|
-
/* @__PURE__ */ (0,
|
|
4721
|
-
/* @__PURE__ */ (0,
|
|
4722
|
-
|
|
5632
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { justify: "space-between", align: "center", py: 3, children: [
|
|
5633
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 3, children: [
|
|
5634
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5635
|
+
import_react42.Box,
|
|
4723
5636
|
{
|
|
4724
5637
|
w: "38px",
|
|
4725
5638
|
h: "38px",
|
|
@@ -4730,18 +5643,18 @@ function ReusableProfile({
|
|
|
4730
5643
|
justifyContent: "center",
|
|
4731
5644
|
color: "gray.600",
|
|
4732
5645
|
flexShrink: 0,
|
|
4733
|
-
children: colorMode === "dark" ? /* @__PURE__ */ (0,
|
|
5646
|
+
children: colorMode === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuMoon, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuSun, { size: 16 })
|
|
4734
5647
|
}
|
|
4735
5648
|
),
|
|
4736
|
-
/* @__PURE__ */ (0,
|
|
4737
|
-
/* @__PURE__ */ (0,
|
|
4738
|
-
/* @__PURE__ */ (0,
|
|
5649
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
5650
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", fontWeight: "semibold", children: "Appearance" }),
|
|
5651
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", color: "gray.500", children: colorMode === "light" ? "Light mode" : "Dark mode" })
|
|
4739
5652
|
] })
|
|
4740
5653
|
] }),
|
|
4741
|
-
/* @__PURE__ */ (0,
|
|
5654
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.HStack, { gap: 1.5, children: ["light", "dark"].map((mode) => {
|
|
4742
5655
|
const isActive = colorMode === mode;
|
|
4743
|
-
return /* @__PURE__ */ (0,
|
|
4744
|
-
|
|
5656
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
5657
|
+
import_react42.Button,
|
|
4745
5658
|
{
|
|
4746
5659
|
size: "sm",
|
|
4747
5660
|
variant: "outline",
|
|
@@ -4756,9 +5669,9 @@ function ReusableProfile({
|
|
|
4756
5669
|
},
|
|
4757
5670
|
onClick: () => handleColorMode(mode),
|
|
4758
5671
|
children: [
|
|
4759
|
-
mode === "light" ? /* @__PURE__ */ (0,
|
|
4760
|
-
/* @__PURE__ */ (0,
|
|
4761
|
-
|
|
5672
|
+
mode === "light" ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuSun, { size: 13 }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuMoon, { size: 13 }),
|
|
5673
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5674
|
+
import_react42.Text,
|
|
4762
5675
|
{
|
|
4763
5676
|
fontSize: "xs",
|
|
4764
5677
|
textTransform: "capitalize",
|
|
@@ -4772,11 +5685,11 @@ function ReusableProfile({
|
|
|
4772
5685
|
);
|
|
4773
5686
|
}) })
|
|
4774
5687
|
] }),
|
|
4775
|
-
/* @__PURE__ */ (0,
|
|
4776
|
-
/* @__PURE__ */ (0,
|
|
4777
|
-
/* @__PURE__ */ (0,
|
|
4778
|
-
/* @__PURE__ */ (0,
|
|
4779
|
-
|
|
5688
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {}),
|
|
5689
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { justify: "space-between", align: "center", py: 3, children: [
|
|
5690
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 3, children: [
|
|
5691
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5692
|
+
import_react42.Box,
|
|
4780
5693
|
{
|
|
4781
5694
|
w: "38px",
|
|
4782
5695
|
h: "38px",
|
|
@@ -4792,15 +5705,15 @@ function ReusableProfile({
|
|
|
4792
5705
|
children: "A"
|
|
4793
5706
|
}
|
|
4794
5707
|
),
|
|
4795
|
-
/* @__PURE__ */ (0,
|
|
4796
|
-
/* @__PURE__ */ (0,
|
|
4797
|
-
/* @__PURE__ */ (0,
|
|
5708
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
5709
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", fontWeight: "semibold", children: "Text Size" }),
|
|
5710
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", color: "gray.500", children: fontSizeLabel })
|
|
4798
5711
|
] })
|
|
4799
5712
|
] }),
|
|
4800
|
-
/* @__PURE__ */ (0,
|
|
5713
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.HStack, { gap: 1, children: FONT_SIZES.map((option) => {
|
|
4801
5714
|
const isActive = fontSize === option.value;
|
|
4802
|
-
return /* @__PURE__ */ (0,
|
|
4803
|
-
|
|
5715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5716
|
+
import_react42.Button,
|
|
4804
5717
|
{
|
|
4805
5718
|
size: "sm",
|
|
4806
5719
|
variant: "outline",
|
|
@@ -4815,8 +5728,8 @@ function ReusableProfile({
|
|
|
4815
5728
|
},
|
|
4816
5729
|
onClick: () => handleFontSize(option.value),
|
|
4817
5730
|
title: option.title,
|
|
4818
|
-
children: /* @__PURE__ */ (0,
|
|
4819
|
-
|
|
5731
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5732
|
+
import_react42.Text,
|
|
4820
5733
|
{
|
|
4821
5734
|
fontWeight: isActive ? "bold" : "normal",
|
|
4822
5735
|
style: { fontSize: `${option.scale * 13}px` },
|
|
@@ -4828,9 +5741,9 @@ function ReusableProfile({
|
|
|
4828
5741
|
);
|
|
4829
5742
|
}) })
|
|
4830
5743
|
] }),
|
|
4831
|
-
/* @__PURE__ */ (0,
|
|
4832
|
-
/* @__PURE__ */ (0,
|
|
4833
|
-
|
|
5744
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {}),
|
|
5745
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5746
|
+
import_react42.Box,
|
|
4834
5747
|
{
|
|
4835
5748
|
as: "button",
|
|
4836
5749
|
w: "full",
|
|
@@ -4838,10 +5751,10 @@ function ReusableProfile({
|
|
|
4838
5751
|
_hover: { opacity: 0.7 },
|
|
4839
5752
|
transition: "opacity 0.15s",
|
|
4840
5753
|
onClick: () => setProfileView("navbar-customize"),
|
|
4841
|
-
children: /* @__PURE__ */ (0,
|
|
4842
|
-
/* @__PURE__ */ (0,
|
|
4843
|
-
/* @__PURE__ */ (0,
|
|
4844
|
-
|
|
5754
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { justify: "space-between", align: "center", py: 3, children: [
|
|
5755
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 3, children: [
|
|
5756
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5757
|
+
import_react42.Box,
|
|
4845
5758
|
{
|
|
4846
5759
|
w: "38px",
|
|
4847
5760
|
h: "38px",
|
|
@@ -4852,12 +5765,12 @@ function ReusableProfile({
|
|
|
4852
5765
|
justifyContent: "center",
|
|
4853
5766
|
color: "gray.600",
|
|
4854
5767
|
flexShrink: 0,
|
|
4855
|
-
children: /* @__PURE__ */ (0,
|
|
5768
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuArrowLeftRight, { size: 16 })
|
|
4856
5769
|
}
|
|
4857
5770
|
),
|
|
4858
|
-
/* @__PURE__ */ (0,
|
|
4859
|
-
/* @__PURE__ */ (0,
|
|
4860
|
-
/* @__PURE__ */ (0,
|
|
5771
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
5772
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", fontWeight: "semibold", children: "Quick Navigation" }),
|
|
5773
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Text, { fontSize: "xs", color: "gray.500", children: [
|
|
4861
5774
|
quickNavHrefs.length,
|
|
4862
5775
|
" of ",
|
|
4863
5776
|
maxQuickNavItems,
|
|
@@ -4865,13 +5778,13 @@ function ReusableProfile({
|
|
|
4865
5778
|
] })
|
|
4866
5779
|
] })
|
|
4867
5780
|
] }),
|
|
4868
|
-
/* @__PURE__ */ (0,
|
|
5781
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronRight, { size: 16, color: "var(--chakra-colors-gray-400)" })
|
|
4869
5782
|
] })
|
|
4870
5783
|
}
|
|
4871
5784
|
)
|
|
4872
5785
|
] }),
|
|
4873
|
-
/* @__PURE__ */ (0,
|
|
4874
|
-
|
|
5786
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Box, { px: 4, pt: 4, pb: 10, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.VStack, { gap: 2.5, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5787
|
+
import_react42.Button,
|
|
4875
5788
|
{
|
|
4876
5789
|
w: "full",
|
|
4877
5790
|
variant: "outline",
|
|
@@ -4883,30 +5796,30 @@ function ReusableProfile({
|
|
|
4883
5796
|
}
|
|
4884
5797
|
) }) })
|
|
4885
5798
|
] });
|
|
4886
|
-
const editAccountContent = /* @__PURE__ */ (0,
|
|
4887
|
-
/* @__PURE__ */ (0,
|
|
4888
|
-
/* @__PURE__ */ (0,
|
|
4889
|
-
|
|
5799
|
+
const editAccountContent = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
5800
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Box, { px: 4, pt: 4, pb: 3, borderBottomWidth: "1px", borderColor: "gray.200", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 2, pr: 10, children: [
|
|
5801
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5802
|
+
import_react42.IconButton,
|
|
4890
5803
|
{
|
|
4891
5804
|
size: "sm",
|
|
4892
5805
|
variant: "ghost",
|
|
4893
5806
|
"aria-label": "Back",
|
|
4894
5807
|
color: "gray.600",
|
|
4895
5808
|
onClick: () => setProfileView("main"),
|
|
4896
|
-
children: /* @__PURE__ */ (0,
|
|
5809
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
|
|
4897
5810
|
}
|
|
4898
5811
|
),
|
|
4899
|
-
/* @__PURE__ */ (0,
|
|
5812
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontWeight: "bold", fontSize: "md", children: "Edit Account" })
|
|
4900
5813
|
] }) }),
|
|
4901
|
-
/* @__PURE__ */ (0,
|
|
4902
|
-
user.avatarSrc && /* @__PURE__ */ (0,
|
|
4903
|
-
/* @__PURE__ */ (0,
|
|
5814
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Box, { textAlign: "center", pt: 5, pb: 4, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Avatar.Root, { size: "xl", mx: "auto", mb: 1, children: [
|
|
5815
|
+
user.avatarSrc && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Avatar.Image, { src: user.avatarSrc, alt: editName }),
|
|
5816
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Avatar.Fallback, { name: editName })
|
|
4904
5817
|
] }) }),
|
|
4905
|
-
/* @__PURE__ */ (0,
|
|
4906
|
-
/* @__PURE__ */ (0,
|
|
4907
|
-
/* @__PURE__ */ (0,
|
|
4908
|
-
/* @__PURE__ */ (0,
|
|
4909
|
-
|
|
5818
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.VStack, { gap: 4, px: 4, pb: 10, align: "stretch", children: [
|
|
5819
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { w: "full", children: [
|
|
5820
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Display Name" }),
|
|
5821
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5822
|
+
import_react42.Input,
|
|
4910
5823
|
{
|
|
4911
5824
|
value: editName,
|
|
4912
5825
|
onChange: (event) => setEditName(event.target.value),
|
|
@@ -4915,10 +5828,10 @@ function ReusableProfile({
|
|
|
4915
5828
|
}
|
|
4916
5829
|
)
|
|
4917
5830
|
] }),
|
|
4918
|
-
/* @__PURE__ */ (0,
|
|
4919
|
-
/* @__PURE__ */ (0,
|
|
4920
|
-
/* @__PURE__ */ (0,
|
|
4921
|
-
|
|
5831
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { w: "full", children: [
|
|
5832
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Email" }),
|
|
5833
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5834
|
+
import_react42.Input,
|
|
4922
5835
|
{
|
|
4923
5836
|
value: user.email ?? "",
|
|
4924
5837
|
readOnly: true,
|
|
@@ -4928,10 +5841,10 @@ function ReusableProfile({
|
|
|
4928
5841
|
}
|
|
4929
5842
|
)
|
|
4930
5843
|
] }),
|
|
4931
|
-
/* @__PURE__ */ (0,
|
|
4932
|
-
/* @__PURE__ */ (0,
|
|
4933
|
-
/* @__PURE__ */ (0,
|
|
4934
|
-
|
|
5844
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { w: "full", children: [
|
|
5845
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Mobile Number" }),
|
|
5846
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5847
|
+
import_react42.Input,
|
|
4935
5848
|
{
|
|
4936
5849
|
value: user.mobileNumber ?? "",
|
|
4937
5850
|
readOnly: true,
|
|
@@ -4941,8 +5854,8 @@ function ReusableProfile({
|
|
|
4941
5854
|
}
|
|
4942
5855
|
)
|
|
4943
5856
|
] }),
|
|
4944
|
-
/* @__PURE__ */ (0,
|
|
4945
|
-
|
|
5857
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5858
|
+
import_react42.Button,
|
|
4946
5859
|
{
|
|
4947
5860
|
w: "full",
|
|
4948
5861
|
mt: 2,
|
|
@@ -4956,40 +5869,40 @@ function ReusableProfile({
|
|
|
4956
5869
|
)
|
|
4957
5870
|
] })
|
|
4958
5871
|
] });
|
|
4959
|
-
const changePasswordContent = /* @__PURE__ */ (0,
|
|
4960
|
-
/* @__PURE__ */ (0,
|
|
4961
|
-
/* @__PURE__ */ (0,
|
|
4962
|
-
|
|
5872
|
+
const changePasswordContent = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
5873
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Box, { px: 4, pt: 4, pb: 3, borderBottomWidth: "1px", borderColor: "gray.200", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 2, pr: 10, children: [
|
|
5874
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5875
|
+
import_react42.IconButton,
|
|
4963
5876
|
{
|
|
4964
5877
|
size: "sm",
|
|
4965
5878
|
variant: "ghost",
|
|
4966
5879
|
"aria-label": "Back",
|
|
4967
5880
|
color: "gray.600",
|
|
4968
5881
|
onClick: () => setProfileView("main"),
|
|
4969
|
-
children: /* @__PURE__ */ (0,
|
|
5882
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
|
|
4970
5883
|
}
|
|
4971
5884
|
),
|
|
4972
|
-
/* @__PURE__ */ (0,
|
|
5885
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontWeight: "bold", fontSize: "md", children: "Change Password" })
|
|
4973
5886
|
] }) }),
|
|
4974
|
-
/* @__PURE__ */ (0,
|
|
4975
|
-
/* @__PURE__ */ (0,
|
|
4976
|
-
/* @__PURE__ */ (0,
|
|
4977
|
-
/* @__PURE__ */ (0,
|
|
4978
|
-
|
|
5887
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.VStack, { gap: 5, px: 4, pt: 6, pb: 10, children: [
|
|
5888
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { w: "full", children: [
|
|
5889
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Current Password" }),
|
|
5890
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5891
|
+
import_react42.InputGroup,
|
|
4979
5892
|
{
|
|
4980
|
-
endElement: /* @__PURE__ */ (0,
|
|
4981
|
-
|
|
5893
|
+
endElement: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5894
|
+
import_react42.IconButton,
|
|
4982
5895
|
{
|
|
4983
5896
|
size: "xs",
|
|
4984
5897
|
variant: "ghost",
|
|
4985
5898
|
color: "gray.500",
|
|
4986
5899
|
"aria-label": "Toggle current password visibility",
|
|
4987
5900
|
onClick: () => setShowCurrentPw(!showCurrentPw),
|
|
4988
|
-
children: showCurrentPw ? /* @__PURE__ */ (0,
|
|
5901
|
+
children: showCurrentPw ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuEyeOff, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuEye, { size: 15 })
|
|
4989
5902
|
}
|
|
4990
5903
|
),
|
|
4991
|
-
children: /* @__PURE__ */ (0,
|
|
4992
|
-
|
|
5904
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5905
|
+
import_react42.Input,
|
|
4993
5906
|
{
|
|
4994
5907
|
type: showCurrentPw ? "text" : "password",
|
|
4995
5908
|
value: currentPw,
|
|
@@ -5001,24 +5914,24 @@ function ReusableProfile({
|
|
|
5001
5914
|
}
|
|
5002
5915
|
)
|
|
5003
5916
|
] }),
|
|
5004
|
-
/* @__PURE__ */ (0,
|
|
5005
|
-
/* @__PURE__ */ (0,
|
|
5006
|
-
/* @__PURE__ */ (0,
|
|
5007
|
-
|
|
5917
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { w: "full", children: [
|
|
5918
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "New Password" }),
|
|
5919
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5920
|
+
import_react42.InputGroup,
|
|
5008
5921
|
{
|
|
5009
|
-
endElement: /* @__PURE__ */ (0,
|
|
5010
|
-
|
|
5922
|
+
endElement: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5923
|
+
import_react42.IconButton,
|
|
5011
5924
|
{
|
|
5012
5925
|
size: "xs",
|
|
5013
5926
|
variant: "ghost",
|
|
5014
5927
|
color: "gray.500",
|
|
5015
5928
|
"aria-label": "Toggle new password visibility",
|
|
5016
5929
|
onClick: () => setShowNewPw(!showNewPw),
|
|
5017
|
-
children: showNewPw ? /* @__PURE__ */ (0,
|
|
5930
|
+
children: showNewPw ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuEyeOff, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuEye, { size: 15 })
|
|
5018
5931
|
}
|
|
5019
5932
|
),
|
|
5020
|
-
children: /* @__PURE__ */ (0,
|
|
5021
|
-
|
|
5933
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5934
|
+
import_react42.Input,
|
|
5022
5935
|
{
|
|
5023
5936
|
type: showNewPw ? "text" : "password",
|
|
5024
5937
|
value: newPw,
|
|
@@ -5029,9 +5942,9 @@ function ReusableProfile({
|
|
|
5029
5942
|
)
|
|
5030
5943
|
}
|
|
5031
5944
|
),
|
|
5032
|
-
newPw && /* @__PURE__ */ (0,
|
|
5033
|
-
/* @__PURE__ */ (0,
|
|
5034
|
-
|
|
5945
|
+
newPw && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { mt: 2, children: [
|
|
5946
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Flex, { gap: 1, mb: 1, children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5947
|
+
import_react42.Box,
|
|
5035
5948
|
{
|
|
5036
5949
|
flex: 1,
|
|
5037
5950
|
h: "3px",
|
|
@@ -5041,27 +5954,27 @@ function ReusableProfile({
|
|
|
5041
5954
|
},
|
|
5042
5955
|
i
|
|
5043
5956
|
)) }),
|
|
5044
|
-
/* @__PURE__ */ (0,
|
|
5957
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", color: pwMeta.color, fontWeight: "medium", children: pwMeta.label })
|
|
5045
5958
|
] })
|
|
5046
5959
|
] }),
|
|
5047
|
-
/* @__PURE__ */ (0,
|
|
5048
|
-
/* @__PURE__ */ (0,
|
|
5049
|
-
/* @__PURE__ */ (0,
|
|
5050
|
-
|
|
5960
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { w: "full", children: [
|
|
5961
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Confirm New Password" }),
|
|
5962
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5963
|
+
import_react42.InputGroup,
|
|
5051
5964
|
{
|
|
5052
|
-
endElement: /* @__PURE__ */ (0,
|
|
5053
|
-
|
|
5965
|
+
endElement: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5966
|
+
import_react42.IconButton,
|
|
5054
5967
|
{
|
|
5055
5968
|
size: "xs",
|
|
5056
5969
|
variant: "ghost",
|
|
5057
5970
|
color: "gray.500",
|
|
5058
5971
|
"aria-label": "Toggle confirm password visibility",
|
|
5059
5972
|
onClick: () => setShowConfirmPw(!showConfirmPw),
|
|
5060
|
-
children: showConfirmPw ? /* @__PURE__ */ (0,
|
|
5973
|
+
children: showConfirmPw ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuEyeOff, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuEye, { size: 15 })
|
|
5061
5974
|
}
|
|
5062
5975
|
),
|
|
5063
|
-
children: /* @__PURE__ */ (0,
|
|
5064
|
-
|
|
5976
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5977
|
+
import_react42.Input,
|
|
5065
5978
|
{
|
|
5066
5979
|
type: showConfirmPw ? "text" : "password",
|
|
5067
5980
|
value: confirmPw,
|
|
@@ -5072,10 +5985,10 @@ function ReusableProfile({
|
|
|
5072
5985
|
)
|
|
5073
5986
|
}
|
|
5074
5987
|
),
|
|
5075
|
-
confirmPw && confirmPw !== newPw && /* @__PURE__ */ (0,
|
|
5988
|
+
confirmPw && confirmPw !== newPw && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "xs", color: "red.500", mt: 1, children: "Passwords do not match" })
|
|
5076
5989
|
] }),
|
|
5077
|
-
/* @__PURE__ */ (0,
|
|
5078
|
-
|
|
5990
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
5991
|
+
import_react42.Button,
|
|
5079
5992
|
{
|
|
5080
5993
|
w: "full",
|
|
5081
5994
|
mt: 1,
|
|
@@ -5090,9 +6003,9 @@ function ReusableProfile({
|
|
|
5090
6003
|
)
|
|
5091
6004
|
] })
|
|
5092
6005
|
] });
|
|
5093
|
-
const navbarCustomizeContent = /* @__PURE__ */ (0,
|
|
5094
|
-
/* @__PURE__ */ (0,
|
|
5095
|
-
|
|
6006
|
+
const navbarCustomizeContent = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
6007
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6008
|
+
import_react42.Box,
|
|
5096
6009
|
{
|
|
5097
6010
|
px: 4,
|
|
5098
6011
|
pt: 4,
|
|
@@ -5103,9 +6016,9 @@ function ReusableProfile({
|
|
|
5103
6016
|
top: 0,
|
|
5104
6017
|
bg: "bg",
|
|
5105
6018
|
zIndex: 1,
|
|
5106
|
-
children: /* @__PURE__ */ (0,
|
|
5107
|
-
/* @__PURE__ */ (0,
|
|
5108
|
-
|
|
6019
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 2, pr: 10, children: [
|
|
6020
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6021
|
+
import_react42.IconButton,
|
|
5109
6022
|
{
|
|
5110
6023
|
size: "sm",
|
|
5111
6024
|
variant: "ghost",
|
|
@@ -5115,12 +6028,12 @@ function ReusableProfile({
|
|
|
5115
6028
|
setReplacingIdx(null);
|
|
5116
6029
|
setProfileView("main");
|
|
5117
6030
|
},
|
|
5118
|
-
children: /* @__PURE__ */ (0,
|
|
6031
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
|
|
5119
6032
|
}
|
|
5120
6033
|
),
|
|
5121
|
-
/* @__PURE__ */ (0,
|
|
5122
|
-
/* @__PURE__ */ (0,
|
|
5123
|
-
/* @__PURE__ */ (0,
|
|
6034
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
6035
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontWeight: "bold", fontSize: "md", children: "Quick Navigation" }),
|
|
6036
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Text, { fontSize: "xs", color: "gray.500", children: [
|
|
5124
6037
|
"Choose up to ",
|
|
5125
6038
|
maxQuickNavItems,
|
|
5126
6039
|
" shortcuts for the bottom bar"
|
|
@@ -5129,10 +6042,10 @@ function ReusableProfile({
|
|
|
5129
6042
|
] })
|
|
5130
6043
|
}
|
|
5131
6044
|
),
|
|
5132
|
-
/* @__PURE__ */ (0,
|
|
5133
|
-
/* @__PURE__ */ (0,
|
|
5134
|
-
/* @__PURE__ */ (0,
|
|
5135
|
-
|
|
6045
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { px: 4, pt: 5, pb: 2, children: [
|
|
6046
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", justify: "space-between", mb: 3, children: [
|
|
6047
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6048
|
+
import_react42.Text,
|
|
5136
6049
|
{
|
|
5137
6050
|
fontSize: "xs",
|
|
5138
6051
|
fontWeight: "bold",
|
|
@@ -5142,8 +6055,8 @@ function ReusableProfile({
|
|
|
5142
6055
|
children: "Pinned"
|
|
5143
6056
|
}
|
|
5144
6057
|
),
|
|
5145
|
-
/* @__PURE__ */ (0,
|
|
5146
|
-
|
|
6058
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
6059
|
+
import_react42.Text,
|
|
5147
6060
|
{
|
|
5148
6061
|
fontSize: "xs",
|
|
5149
6062
|
color: quickNavHrefs.length >= maxQuickNavItems ? "orange.500" : "gray.400",
|
|
@@ -5156,8 +6069,8 @@ function ReusableProfile({
|
|
|
5156
6069
|
}
|
|
5157
6070
|
)
|
|
5158
6071
|
] }),
|
|
5159
|
-
quickNavHrefs.length === 0 ? /* @__PURE__ */ (0,
|
|
5160
|
-
|
|
6072
|
+
quickNavHrefs.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6073
|
+
import_react42.Flex,
|
|
5161
6074
|
{
|
|
5162
6075
|
align: "center",
|
|
5163
6076
|
justify: "center",
|
|
@@ -5166,18 +6079,18 @@ function ReusableProfile({
|
|
|
5166
6079
|
borderWidth: "1px",
|
|
5167
6080
|
borderStyle: "dashed",
|
|
5168
6081
|
borderColor: "gray.200",
|
|
5169
|
-
children: /* @__PURE__ */ (0,
|
|
6082
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", color: "gray.400", children: "No items pinned \u2014 add from below" })
|
|
5170
6083
|
}
|
|
5171
|
-
) : /* @__PURE__ */ (0,
|
|
6084
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.VStack, { gap: 0, children: quickNavHrefs.map((href, idx) => {
|
|
5172
6085
|
const option = availableOptions.find((item) => item.key === href);
|
|
5173
6086
|
if (!option) return null;
|
|
5174
6087
|
const ItemIcon = option.Icon;
|
|
5175
6088
|
const isFirst = idx === 0;
|
|
5176
6089
|
const isLast = idx === quickNavHrefs.length - 1;
|
|
5177
6090
|
const isReplacing = replacingIdx === idx;
|
|
5178
|
-
return /* @__PURE__ */ (0,
|
|
5179
|
-
/* @__PURE__ */ (0,
|
|
5180
|
-
|
|
6091
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { w: "full", children: [
|
|
6092
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
6093
|
+
import_react42.Flex,
|
|
5181
6094
|
{
|
|
5182
6095
|
justify: "space-between",
|
|
5183
6096
|
align: "center",
|
|
@@ -5189,9 +6102,9 @@ function ReusableProfile({
|
|
|
5189
6102
|
borderColor: isReplacing ? "orange.200" : void 0,
|
|
5190
6103
|
transition: "all 0.15s",
|
|
5191
6104
|
children: [
|
|
5192
|
-
/* @__PURE__ */ (0,
|
|
5193
|
-
/* @__PURE__ */ (0,
|
|
5194
|
-
|
|
6105
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 3, children: [
|
|
6106
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6107
|
+
import_react42.Box,
|
|
5195
6108
|
{
|
|
5196
6109
|
w: "36px",
|
|
5197
6110
|
h: "36px",
|
|
@@ -5202,13 +6115,13 @@ function ReusableProfile({
|
|
|
5202
6115
|
justifyContent: "center",
|
|
5203
6116
|
color: "white",
|
|
5204
6117
|
flexShrink: 0,
|
|
5205
|
-
children: /* @__PURE__ */ (0,
|
|
6118
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ItemIcon, { size: 15 })
|
|
5206
6119
|
}
|
|
5207
6120
|
),
|
|
5208
|
-
/* @__PURE__ */ (0,
|
|
5209
|
-
/* @__PURE__ */ (0,
|
|
5210
|
-
isReplacing && /* @__PURE__ */ (0,
|
|
5211
|
-
|
|
6121
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
6122
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", fontWeight: "medium", children: option.title }),
|
|
6123
|
+
isReplacing && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6124
|
+
import_react42.Text,
|
|
5212
6125
|
{
|
|
5213
6126
|
fontSize: "xs",
|
|
5214
6127
|
color: "orange.500",
|
|
@@ -5218,9 +6131,9 @@ function ReusableProfile({
|
|
|
5218
6131
|
)
|
|
5219
6132
|
] })
|
|
5220
6133
|
] }),
|
|
5221
|
-
/* @__PURE__ */ (0,
|
|
5222
|
-
/* @__PURE__ */ (0,
|
|
5223
|
-
|
|
6134
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.HStack, { gap: 0.5, children: [
|
|
6135
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6136
|
+
import_react42.IconButton,
|
|
5224
6137
|
{
|
|
5225
6138
|
size: "xs",
|
|
5226
6139
|
variant: "ghost",
|
|
@@ -5228,11 +6141,11 @@ function ReusableProfile({
|
|
|
5228
6141
|
color: "gray.500",
|
|
5229
6142
|
disabled: isFirst || isReplacing,
|
|
5230
6143
|
onClick: () => moveNavItem(idx, -1),
|
|
5231
|
-
children: /* @__PURE__ */ (0,
|
|
6144
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronUp, { size: 14 })
|
|
5232
6145
|
}
|
|
5233
6146
|
),
|
|
5234
|
-
/* @__PURE__ */ (0,
|
|
5235
|
-
|
|
6147
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6148
|
+
import_react42.IconButton,
|
|
5236
6149
|
{
|
|
5237
6150
|
size: "xs",
|
|
5238
6151
|
variant: "ghost",
|
|
@@ -5240,11 +6153,11 @@ function ReusableProfile({
|
|
|
5240
6153
|
color: "gray.500",
|
|
5241
6154
|
disabled: isLast || isReplacing,
|
|
5242
6155
|
onClick: () => moveNavItem(idx, 1),
|
|
5243
|
-
children: /* @__PURE__ */ (0,
|
|
6156
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronDown, { size: 14 })
|
|
5244
6157
|
}
|
|
5245
6158
|
),
|
|
5246
|
-
/* @__PURE__ */ (0,
|
|
5247
|
-
|
|
6159
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6160
|
+
import_react42.IconButton,
|
|
5248
6161
|
{
|
|
5249
6162
|
size: "xs",
|
|
5250
6163
|
variant: isReplacing ? "solid" : "ghost",
|
|
@@ -5253,11 +6166,11 @@ function ReusableProfile({
|
|
|
5253
6166
|
color: isReplacing ? "white" : "gray.500",
|
|
5254
6167
|
_hover: { bg: isReplacing ? "orange.500" : "gray.100" },
|
|
5255
6168
|
onClick: () => setReplacingIdx(isReplacing ? null : idx),
|
|
5256
|
-
children: /* @__PURE__ */ (0,
|
|
6169
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuArrowLeftRight, { size: 13 })
|
|
5257
6170
|
}
|
|
5258
6171
|
),
|
|
5259
|
-
/* @__PURE__ */ (0,
|
|
5260
|
-
|
|
6172
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6173
|
+
import_react42.IconButton,
|
|
5261
6174
|
{
|
|
5262
6175
|
size: "xs",
|
|
5263
6176
|
variant: "ghost",
|
|
@@ -5266,23 +6179,23 @@ function ReusableProfile({
|
|
|
5266
6179
|
_hover: { bg: "red.50" },
|
|
5267
6180
|
disabled: isReplacing,
|
|
5268
6181
|
onClick: () => removeNavItem(href),
|
|
5269
|
-
children: /* @__PURE__ */ (0,
|
|
6182
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuX, { size: 14 })
|
|
5270
6183
|
}
|
|
5271
6184
|
)
|
|
5272
6185
|
] })
|
|
5273
6186
|
]
|
|
5274
6187
|
}
|
|
5275
6188
|
),
|
|
5276
|
-
!isLast && /* @__PURE__ */ (0,
|
|
6189
|
+
!isLast && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {})
|
|
5277
6190
|
] }, href);
|
|
5278
6191
|
}) })
|
|
5279
6192
|
] }),
|
|
5280
|
-
/* @__PURE__ */ (0,
|
|
5281
|
-
/* @__PURE__ */ (0,
|
|
5282
|
-
/* @__PURE__ */ (0,
|
|
5283
|
-
replacingIdx !== null ? /* @__PURE__ */ (0,
|
|
5284
|
-
/* @__PURE__ */ (0,
|
|
5285
|
-
|
|
6193
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, { mx: 4, my: 1 }),
|
|
6194
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { px: 4, pt: 4, pb: 10, children: [
|
|
6195
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", justify: "space-between", mb: 3, children: [
|
|
6196
|
+
replacingIdx !== null ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { children: [
|
|
6197
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6198
|
+
import_react42.Text,
|
|
5286
6199
|
{
|
|
5287
6200
|
fontSize: "xs",
|
|
5288
6201
|
fontWeight: "bold",
|
|
@@ -5292,15 +6205,15 @@ function ReusableProfile({
|
|
|
5292
6205
|
children: "Select Replacement"
|
|
5293
6206
|
}
|
|
5294
6207
|
),
|
|
5295
|
-
/* @__PURE__ */ (0,
|
|
6208
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Text, { fontSize: "xs", color: "gray.500", mt: 0.5, children: [
|
|
5296
6209
|
'for "',
|
|
5297
6210
|
availableOptions.find(
|
|
5298
6211
|
(item) => item.key === quickNavHrefs[replacingIdx]
|
|
5299
6212
|
)?.title,
|
|
5300
6213
|
'"'
|
|
5301
6214
|
] })
|
|
5302
|
-
] }) : /* @__PURE__ */ (0,
|
|
5303
|
-
|
|
6215
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6216
|
+
import_react42.Text,
|
|
5304
6217
|
{
|
|
5305
6218
|
fontSize: "xs",
|
|
5306
6219
|
fontWeight: "bold",
|
|
@@ -5310,8 +6223,8 @@ function ReusableProfile({
|
|
|
5310
6223
|
children: "Available"
|
|
5311
6224
|
}
|
|
5312
6225
|
),
|
|
5313
|
-
replacingIdx !== null && /* @__PURE__ */ (0,
|
|
5314
|
-
|
|
6226
|
+
replacingIdx !== null && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6227
|
+
import_react42.Button,
|
|
5315
6228
|
{
|
|
5316
6229
|
size: "xs",
|
|
5317
6230
|
variant: "ghost",
|
|
@@ -5321,17 +6234,17 @@ function ReusableProfile({
|
|
|
5321
6234
|
}
|
|
5322
6235
|
)
|
|
5323
6236
|
] }),
|
|
5324
|
-
unpinnedOptions.length === 0 ? /* @__PURE__ */ (0,
|
|
6237
|
+
unpinnedOptions.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", color: "gray.400", py: 3, textAlign: "center", children: "All available items are pinned" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.VStack, { gap: 0, children: unpinnedOptions.map((option, idx) => {
|
|
5325
6238
|
const ItemIcon = option.Icon;
|
|
5326
6239
|
const isLast = idx === unpinnedOptions.length - 1;
|
|
5327
6240
|
const isReplacingMode = replacingIdx !== null;
|
|
5328
6241
|
const canAdd = quickNavHrefs.length < maxQuickNavItems;
|
|
5329
6242
|
const actionEnabled = isReplacingMode || canAdd;
|
|
5330
|
-
return /* @__PURE__ */ (0,
|
|
5331
|
-
/* @__PURE__ */ (0,
|
|
5332
|
-
/* @__PURE__ */ (0,
|
|
5333
|
-
/* @__PURE__ */ (0,
|
|
5334
|
-
|
|
6243
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Box, { w: "full", children: [
|
|
6244
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { justify: "space-between", align: "center", py: 2.5, children: [
|
|
6245
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react42.Flex, { align: "center", gap: 3, children: [
|
|
6246
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6247
|
+
import_react42.Box,
|
|
5335
6248
|
{
|
|
5336
6249
|
w: "36px",
|
|
5337
6250
|
h: "36px",
|
|
@@ -5342,11 +6255,11 @@ function ReusableProfile({
|
|
|
5342
6255
|
justifyContent: "center",
|
|
5343
6256
|
color: isReplacingMode ? "orange.500" : "gray.500",
|
|
5344
6257
|
flexShrink: 0,
|
|
5345
|
-
children: /* @__PURE__ */ (0,
|
|
6258
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ItemIcon, { size: 15 })
|
|
5346
6259
|
}
|
|
5347
6260
|
),
|
|
5348
|
-
/* @__PURE__ */ (0,
|
|
5349
|
-
|
|
6261
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6262
|
+
import_react42.Text,
|
|
5350
6263
|
{
|
|
5351
6264
|
fontSize: "sm",
|
|
5352
6265
|
fontWeight: "medium",
|
|
@@ -5355,8 +6268,8 @@ function ReusableProfile({
|
|
|
5355
6268
|
}
|
|
5356
6269
|
)
|
|
5357
6270
|
] }),
|
|
5358
|
-
isReplacingMode ? /* @__PURE__ */ (0,
|
|
5359
|
-
|
|
6271
|
+
isReplacingMode ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6272
|
+
import_react42.IconButton,
|
|
5360
6273
|
{
|
|
5361
6274
|
size: "xs",
|
|
5362
6275
|
variant: "outline",
|
|
@@ -5365,10 +6278,10 @@ function ReusableProfile({
|
|
|
5365
6278
|
color: "orange.500",
|
|
5366
6279
|
_hover: { bg: "orange.50" },
|
|
5367
6280
|
onClick: () => replaceNavItem(replacingIdx, option.key),
|
|
5368
|
-
children: /* @__PURE__ */ (0,
|
|
6281
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuArrowLeftRight, { size: 13 })
|
|
5369
6282
|
}
|
|
5370
|
-
) : /* @__PURE__ */ (0,
|
|
5371
|
-
|
|
6283
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6284
|
+
import_react42.IconButton,
|
|
5372
6285
|
{
|
|
5373
6286
|
size: "xs",
|
|
5374
6287
|
variant: "outline",
|
|
@@ -5378,19 +6291,19 @@ function ReusableProfile({
|
|
|
5378
6291
|
color: canAdd ? "var(--chakra-colors-primary)" : "gray.300",
|
|
5379
6292
|
_hover: { bg: canAdd ? "blue.50" : "transparent" },
|
|
5380
6293
|
onClick: () => addNavItem(option.key),
|
|
5381
|
-
children: /* @__PURE__ */ (0,
|
|
6294
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuPlus, { size: 13 })
|
|
5382
6295
|
}
|
|
5383
6296
|
)
|
|
5384
6297
|
] }),
|
|
5385
|
-
!isLast && /* @__PURE__ */ (0,
|
|
6298
|
+
!isLast && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {})
|
|
5386
6299
|
] }, option.key);
|
|
5387
6300
|
}) })
|
|
5388
6301
|
] })
|
|
5389
6302
|
] });
|
|
5390
6303
|
const subViewContent = profileView === "edit-account" ? editAccountContent : profileView === "change-password" ? changePasswordContent : profileView === "navbar-customize" ? navbarCustomizeContent : null;
|
|
5391
6304
|
if (isDesktop) {
|
|
5392
|
-
return /* @__PURE__ */ (0,
|
|
5393
|
-
|
|
6305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
6306
|
+
import_react42.Flex,
|
|
5394
6307
|
{
|
|
5395
6308
|
maxW: "6xl",
|
|
5396
6309
|
mx: "auto",
|
|
@@ -5400,8 +6313,8 @@ function ReusableProfile({
|
|
|
5400
6313
|
p: { md: 6, lg: 8 },
|
|
5401
6314
|
align: "start",
|
|
5402
6315
|
children: [
|
|
5403
|
-
/* @__PURE__ */ (0,
|
|
5404
|
-
|
|
6316
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6317
|
+
import_react42.Box,
|
|
5405
6318
|
{
|
|
5406
6319
|
w: { md: "300px", lg: "340px" },
|
|
5407
6320
|
flexShrink: 0,
|
|
@@ -5415,8 +6328,8 @@ function ReusableProfile({
|
|
|
5415
6328
|
children: mainContent
|
|
5416
6329
|
}
|
|
5417
6330
|
),
|
|
5418
|
-
/* @__PURE__ */ (0,
|
|
5419
|
-
|
|
6331
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6332
|
+
import_react42.Box,
|
|
5420
6333
|
{
|
|
5421
6334
|
flex: "1",
|
|
5422
6335
|
minW: 0,
|
|
@@ -5426,8 +6339,8 @@ function ReusableProfile({
|
|
|
5426
6339
|
overflow: "hidden",
|
|
5427
6340
|
bg: "bg",
|
|
5428
6341
|
minH: "540px",
|
|
5429
|
-
children: subViewContent ?? /* @__PURE__ */ (0,
|
|
5430
|
-
|
|
6342
|
+
children: subViewContent ?? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
6343
|
+
import_react42.Flex,
|
|
5431
6344
|
{
|
|
5432
6345
|
direction: "column",
|
|
5433
6346
|
align: "center",
|
|
@@ -5437,8 +6350,8 @@ function ReusableProfile({
|
|
|
5437
6350
|
textAlign: "center",
|
|
5438
6351
|
color: "gray.400",
|
|
5439
6352
|
children: [
|
|
5440
|
-
/* @__PURE__ */ (0,
|
|
5441
|
-
|
|
6353
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
6354
|
+
import_react42.Box,
|
|
5442
6355
|
{
|
|
5443
6356
|
w: "56px",
|
|
5444
6357
|
h: "56px",
|
|
@@ -5448,10 +6361,10 @@ function ReusableProfile({
|
|
|
5448
6361
|
alignItems: "center",
|
|
5449
6362
|
justifyContent: "center",
|
|
5450
6363
|
mb: 4,
|
|
5451
|
-
children: /* @__PURE__ */ (0,
|
|
6364
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuUser, { size: 24 })
|
|
5452
6365
|
}
|
|
5453
6366
|
),
|
|
5454
|
-
/* @__PURE__ */ (0,
|
|
6367
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontSize: "sm", mt: 1, maxW: "280px", children: "Choose Edit Account, Change Password, or Quick Navigation from the menu to update your details here." })
|
|
5455
6368
|
]
|
|
5456
6369
|
}
|
|
5457
6370
|
)
|
|
@@ -5461,13 +6374,15 @@ function ReusableProfile({
|
|
|
5461
6374
|
}
|
|
5462
6375
|
);
|
|
5463
6376
|
}
|
|
5464
|
-
return /* @__PURE__ */ (0,
|
|
6377
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Box, { maxW: "480px", mx: "auto", w: "full", minH: "100%", bg: "bg", children: profileView === "main" ? mainContent : subViewContent });
|
|
5465
6378
|
}
|
|
5466
6379
|
var UserProfile_default = ReusableProfile;
|
|
5467
6380
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5468
6381
|
0 && (module.exports = {
|
|
5469
6382
|
Beneficiary,
|
|
5470
6383
|
BottomQuickActions,
|
|
6384
|
+
DocumentUploadCard,
|
|
6385
|
+
GetStarted,
|
|
5471
6386
|
HealthDeclaration,
|
|
5472
6387
|
LifePlanApplication1,
|
|
5473
6388
|
LifePlanApplication2,
|
|
@@ -5475,10 +6390,16 @@ var UserProfile_default = ReusableProfile;
|
|
|
5475
6390
|
LifePlanApplicationFormWrapper,
|
|
5476
6391
|
LifePlanApplicationStepWrapper,
|
|
5477
6392
|
NotifyInstall,
|
|
6393
|
+
OCR_STORAGE_KEY,
|
|
5478
6394
|
SharedLifePlanApplication,
|
|
5479
6395
|
UserProfile,
|
|
6396
|
+
clearOcrResult,
|
|
5480
6397
|
createEmptyApplicationData,
|
|
5481
6398
|
loadApplicationDataFromLocalStorage,
|
|
5482
|
-
|
|
6399
|
+
markOcrApplied,
|
|
6400
|
+
readOcrResult,
|
|
6401
|
+
saveApplicationDataToLocalStorage,
|
|
6402
|
+
saveOcrResult,
|
|
6403
|
+
useOcr
|
|
5483
6404
|
});
|
|
5484
6405
|
//# sourceMappingURL=index.js.map
|