@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.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
- saveApplicationDataToLocalStorage: () => saveApplicationDataToLocalStorage
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
- const OCRValue = typeof window === "undefined" ? null : localStorage.getItem("ocrResult");
397
- if (OCRValue != null) {
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 districtCollection = (0, import_react5.createListCollection)({ items: districtOptions });
886
- var barangayCollection = (0, import_react5.createListCollection)({ items: barangayOptions });
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 OCRValue = typeof window === "undefined" ? null : localStorage.getItem("ocrResult");
891
- const [lot, setLot] = (0, import_react6.useState)("123");
892
- const [street, setStreet] = (0, import_react6.useState)("Mabini Street");
893
- const [city, setCity] = (0, import_react6.useState)("Makati");
894
- const [province, setProvince] = (0, import_react6.useState)("Metro Manila");
895
- const [district, setDistrict] = (0, import_react6.useState)("Taguig");
896
- const [barangay, setBarangay] = (0, import_react6.useState)("San Juan");
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.jsxs)(
953
- import_react5.Select.Root,
1002
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Field.Root, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1003
+ FloatingLabelInput,
954
1004
  {
955
- value: [district],
956
- onValueChange: (e) => setDistrict(e.value[0] ?? ""),
957
- collection: districtCollection,
958
- width: "100%",
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.jsxs)(
973
- import_react5.Select.Root,
1011
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Field.Root, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1012
+ FloatingLabelInput,
974
1013
  {
975
- value: [barangay],
976
- onValueChange: (e) => setBarangay(e.value[0] ?? ""),
977
- collection: barangayCollection,
978
- width: "100%",
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)(LifePlanApplication2_default, { onAddressUpdate: handleAddressUpdate })
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/Generic/BottomQuickActions.tsx
3511
- var import_react28 = __toESM(require("react"));
3512
- var import_react29 = require("@chakra-ui/react");
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 import_jsx_runtime18 = require("react/jsx-runtime");
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 = import_react28.default.memo(
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, import_jsx_runtime18.jsxs)(
3540
- import_react29.HStack,
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, import_jsx_runtime18.jsx)(
3551
- import_react29.Flex,
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, import_jsx_runtime18.jsx)(
3561
- import_react29.Text,
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, import_jsx_runtime18.jsxs)(import_react29.Box, { flex: "1", minW: 0, children: [
3573
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3574
- import_react29.Text,
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, import_jsx_runtime18.jsx)(
3587
- import_react29.Text,
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 = import_react28.default.memo(({ action }) => {
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, import_jsx_runtime18.jsxs)(
3612
- import_react29.HStack,
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, import_jsx_runtime18.jsx)(
3635
- import_react29.Flex,
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, import_jsx_runtime18.jsx)(import_react29.Icon, { as: action.icon, boxSize: "20px", color: iconColor })
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, import_jsx_runtime18.jsxs)(import_react29.Box, { flex: "1", minW: 0, children: [
3648
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3649
- import_react29.Text,
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, import_jsx_runtime18.jsx)(
3659
- import_react29.Text,
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, import_jsx_runtime18.jsx)(
3673
- import_react29.Icon,
4585
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4586
+ import_react36.Icon,
3674
4587
  {
3675
- as: import_lu6.LuChevronRight,
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, import_jsx_runtime18.jsx)(
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, import_jsx_runtime18.jsx)(
3705
- import_react29.Drawer.Root,
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, import_jsx_runtime18.jsxs)(import_react29.Portal, { children: [
3711
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react29.Drawer.Backdrop, {}),
3712
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react29.Drawer.Positioner, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
3713
- import_react29.Drawer.Content,
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, import_jsx_runtime18.jsx)(import_react29.Flex, { justify: "center", pt: "10px", pb: "4px", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3724
- import_react29.Box,
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, import_jsx_runtime18.jsx)(
3733
- import_react29.Drawer.Header,
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, import_jsx_runtime18.jsxs)(import_react29.Flex, { align: "flex-start", justify: "space-between", gap: "12px", children: [
3740
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_react29.Box, { flex: "1", minW: 0, children: [
3741
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3742
- import_react29.Drawer.Title,
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, import_jsx_runtime18.jsx)(
3753
- import_react29.Text,
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, import_jsx_runtime18.jsx)(import_react29.Drawer.CloseTrigger, { asChild: true, mt: "2px", flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3765
- import_react29.CloseButton,
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, import_jsx_runtime18.jsxs)(
3777
- import_react29.Drawer.Body,
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, import_jsx_runtime18.jsx)(import_react29.Box, { mb: STANDARD_SPACING.xs, children: headerSlot }),
3784
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react29.VStack, { gap: STANDARD_SPACING.xs, align: "stretch", children: actions.map((action, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ActionItem, { action }, i)) })
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 import_react31 = require("react");
3799
- var import_react32 = require("@chakra-ui/react");
3800
- var import_react33 = require("motion/react");
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 import_react30 = require("react");
4717
+ var import_react37 = require("react");
3805
4718
  function useNotifyInstall() {
3806
- const [isInstalled, setIsInstalled] = (0, import_react30.useState)(false);
3807
- const [isMobile, setIsMobile] = (0, import_react30.useState)(false);
3808
- const [installPrompt, setInstallPrompt] = (0, import_react30.useState)(null);
3809
- (0, import_react30.useEffect)(() => {
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 import_jsx_runtime19 = require("react/jsx-runtime");
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, import_react31.useState)(true);
3853
- (0, import_react31.useEffect)(() => {
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, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
4776
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
3864
4777
  children,
3865
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react33.AnimatePresence, { children: showPrompt && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
3866
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3867
- import_react33.motion.div,
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, import_jsx_runtime19.jsxs)(
3886
- import_react33.motion.div,
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, import_jsx_runtime19.jsx)(
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, import_jsx_runtime19.jsx)(import_fi2.FiX, { size: 18 })
4836
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fi2.FiX, { size: 18 })
3924
4837
  }
3925
4838
  ),
3926
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.VStack, { gap: 6, textAlign: "center", px: 6, py: 8, children: [
3927
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3928
- import_react32.Flex,
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, import_jsx_runtime19.jsx)(import_react32.Icon, { as: import_fi2.FiDownload, boxSize: 8 })
4850
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react39.Icon, { as: import_fi2.FiDownload, boxSize: 8 })
3938
4851
  }
3939
4852
  ),
3940
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.VStack, { gap: 2, children: [
3941
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
3942
- import_react32.Text,
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, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "sm", color: "gray.500", lineHeight: "tall", children: "Add the app to your home screen for a faster, app-like experience before continuing." })
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, import_jsx_runtime19.jsxs)(
3957
- import_react32.Button,
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, import_jsx_runtime19.jsx)(import_react32.Icon, { as: import_fi2.FiDownload }),
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, import_jsx_runtime19.jsx)(
3970
- import_react32.VStack,
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, import_jsx_runtime19.jsxs)(import_react32.HStack, { gap: 3, align: "center", children: [
3981
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3982
- import_react32.Flex,
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, import_jsx_runtime19.jsx)(import_react32.Icon, { as: step.icon, boxSize: 4 })
4906
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react39.Icon, { as: step.icon, boxSize: 4 })
3994
4907
  }
3995
4908
  ),
3996
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react32.Text, { fontSize: "sm", color: "gray.700", textAlign: "left", children: step.label })
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 import_react34 = require("react");
4011
- var import_react35 = require("@chakra-ui/react");
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 import_lu7 = require("react-icons/lu");
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 import_jsx_runtime20 = require("react/jsx-runtime");
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: import_lu7.LuHouse,
4037
- activeIcon: import_lu7.LuHouse,
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: import_lu7.LuCreditCard,
4055
- activeIcon: import_lu7.LuCreditCard,
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: import_lu7.LuFileText,
4064
- activeIcon: import_lu7.LuFileText,
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, import_react34.useState)("main");
4319
- const [fallbackColorMode, setFallbackColorMode] = (0, import_react34.useState)("light");
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, import_react34.useState)("md");
4322
- const [quickNavHrefs, setQuickNavHrefs] = (0, import_react34.useState)(initialQuickNavHrefs);
4323
- const [replacingIdx, setReplacingIdx] = (0, import_react34.useState)(null);
4324
- const [editName, setEditName] = (0, import_react34.useState)(user.displayName);
4325
- const [editLoading, setEditLoading] = (0, import_react34.useState)(false);
4326
- const [currentPw, setCurrentPw] = (0, import_react34.useState)("");
4327
- const [newPw, setNewPw] = (0, import_react34.useState)("");
4328
- const [confirmPw, setConfirmPw] = (0, import_react34.useState)("");
4329
- const [showCurrentPw, setShowCurrentPw] = (0, import_react34.useState)(false);
4330
- const [showNewPw, setShowNewPw] = (0, import_react34.useState)(false);
4331
- const [showConfirmPw, setShowConfirmPw] = (0, import_react34.useState)(false);
4332
- const [pwLoading, setPwLoading] = (0, import_react34.useState)(false);
4333
- const [twoFactorEnabled, setTwoFactorEnabled] = (0, import_react34.useState)(
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, import_react34.useState)(false);
4337
- const isDesktopRaw = (0, import_react35.useBreakpointValue)({ base: false, md: true });
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, import_react34.useEffect)(() => {
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, import_react34.useEffect)(() => {
5263
+ (0, import_react41.useEffect)(() => {
4351
5264
  setEditName(user.displayName);
4352
5265
  }, [user.displayName]);
4353
- const availableOptions = (0, import_react34.useMemo)(
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, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
4482
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4483
- import_react35.Box,
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, import_jsx_runtime20.jsxs)(
4492
- import_react35.Avatar.Root,
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, import_jsx_runtime20.jsx)(import_react35.Avatar.Image, { src: user.avatarSrc, alt: user.displayName }),
4500
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Avatar.Fallback, { name: user.displayName })
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, import_jsx_runtime20.jsx)(
4505
- import_react35.Text,
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, import_jsx_runtime20.jsx)(import_react35.Text, { color: "rgba(255,255,255,0.75)", fontSize: "sm", mb: 2, children: user.email }),
4516
- roleLabel && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Box, { display: "inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4517
- import_react35.Badge,
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, import_jsx_runtime20.jsxs)(import_react35.Box, { px: 4, pt: 5, pb: 1, children: [
4534
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4535
- import_react35.Text,
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, import_jsx_runtime20.jsx)(
4547
- import_react35.Box,
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, import_jsx_runtime20.jsxs)(
4556
- import_react35.Flex,
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, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4566
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4567
- import_react35.Box,
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, import_jsx_runtime20.jsx)(import_lu7.LuUser, { size: 16 })
5491
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuUser, { size: 16 })
4579
5492
  }
4580
5493
  ),
4581
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4582
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Edit Account" }),
4583
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", color: "gray.500", children: "Update your display name and contact details" })
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, import_jsx_runtime20.jsx)(import_lu7.LuChevronRight, { size: 16, color: "var(--chakra-colors-gray-400)" })
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, import_jsx_runtime20.jsx)(import_react35.Separator, {}),
4593
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4594
- import_react35.Box,
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, import_jsx_runtime20.jsxs)(
4606
- import_react35.Flex,
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, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4616
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4617
- import_react35.Box,
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, import_jsx_runtime20.jsx)(import_lu7.LuLock, { size: 16 })
5541
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuLock, { size: 16 })
4629
5542
  }
4630
5543
  ),
4631
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4632
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Change Password" }),
4633
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", color: "gray.500", children: "Test locally through the callback prop" })
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, import_jsx_runtime20.jsx)(import_lu7.LuChevronRight, { size: 16, color: "var(--chakra-colors-gray-400)" })
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, import_jsx_runtime20.jsx)(import_react35.Separator, {}),
4643
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 3, children: [
4644
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4645
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4646
- import_react35.Box,
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, import_jsx_runtime20.jsx)(import_lu7.LuShield, { size: 16 })
5570
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuShield, { size: 16 })
4658
5571
  }
4659
5572
  ),
4660
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4661
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Two Factor Authentication" }),
4662
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", color: "gray.500", children: twoFactorEnabled ? "Enabled" : "Disabled" })
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, import_jsx_runtime20.jsx)(
4666
- import_react35.Box,
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, import_jsx_runtime20.jsx)(
4689
- import_react35.Box,
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, import_jsx_runtime20.jsxs)(import_react35.Box, { px: 4, pt: 4, pb: 2, children: [
4707
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4708
- import_react35.Text,
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, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 3, children: [
4720
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4721
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4722
- import_react35.Box,
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, import_jsx_runtime20.jsx)(import_lu7.LuMoon, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuSun, { size: 16 })
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, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4737
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Appearance" }),
4738
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", color: "gray.500", children: colorMode === "light" ? "Light mode" : "Dark mode" })
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, import_jsx_runtime20.jsx)(import_react35.HStack, { gap: 1.5, children: ["light", "dark"].map((mode) => {
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, import_jsx_runtime20.jsxs)(
4744
- import_react35.Button,
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, import_jsx_runtime20.jsx)(import_lu7.LuSun, { size: 13 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuMoon, { size: 13 }),
4760
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4761
- import_react35.Text,
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, import_jsx_runtime20.jsx)(import_react35.Separator, {}),
4776
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 3, children: [
4777
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4778
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4779
- import_react35.Box,
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, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4796
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Text Size" }),
4797
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", color: "gray.500", children: fontSizeLabel })
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, import_jsx_runtime20.jsx)(import_react35.HStack, { gap: 1, children: FONT_SIZES.map((option) => {
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, import_jsx_runtime20.jsx)(
4803
- import_react35.Button,
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, import_jsx_runtime20.jsx)(
4819
- import_react35.Text,
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, import_jsx_runtime20.jsx)(import_react35.Separator, {}),
4832
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4833
- import_react35.Box,
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, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 3, children: [
4842
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4843
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4844
- import_react35.Box,
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, import_jsx_runtime20.jsx)(import_lu7.LuArrowLeftRight, { size: 16 })
5768
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuArrowLeftRight, { size: 16 })
4856
5769
  }
4857
5770
  ),
4858
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4859
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Quick Navigation" }),
4860
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Text, { fontSize: "xs", color: "gray.500", children: [
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, import_jsx_runtime20.jsx)(import_lu7.LuChevronRight, { size: 16, color: "var(--chakra-colors-gray-400)" })
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, import_jsx_runtime20.jsx)(import_react35.Box, { px: 4, pt: 4, pb: 10, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.VStack, { gap: 2.5, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4874
- import_react35.Button,
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, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
4887
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Box, { px: 4, pt: 4, pb: 3, borderBottomWidth: "1px", borderColor: "gray.200", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 2, pr: 10, children: [
4888
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4889
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuChevronLeft, {})
5809
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
4897
5810
  }
4898
5811
  ),
4899
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontWeight: "bold", fontSize: "md", children: "Edit Account" })
5812
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontWeight: "bold", fontSize: "md", children: "Edit Account" })
4900
5813
  ] }) }),
4901
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Box, { textAlign: "center", pt: 5, pb: 4, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Avatar.Root, { size: "xl", mx: "auto", mb: 1, children: [
4902
- user.avatarSrc && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Avatar.Image, { src: user.avatarSrc, alt: editName }),
4903
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Avatar.Fallback, { name: editName })
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, import_jsx_runtime20.jsxs)(import_react35.VStack, { gap: 4, px: 4, pb: 10, align: "stretch", children: [
4906
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
4907
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Display Name" }),
4908
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4909
- import_react35.Input,
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, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
4919
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Email" }),
4920
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4921
- import_react35.Input,
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, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
4932
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Mobile Number" }),
4933
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4934
- import_react35.Input,
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, import_jsx_runtime20.jsx)(
4945
- import_react35.Button,
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, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
4960
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Box, { px: 4, pt: 4, pb: 3, borderBottomWidth: "1px", borderColor: "gray.200", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 2, pr: 10, children: [
4961
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4962
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuChevronLeft, {})
5882
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
4970
5883
  }
4971
5884
  ),
4972
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontWeight: "bold", fontSize: "md", children: "Change Password" })
5885
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Text, { fontWeight: "bold", fontSize: "md", children: "Change Password" })
4973
5886
  ] }) }),
4974
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.VStack, { gap: 5, px: 4, pt: 6, pb: 10, children: [
4975
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
4976
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Current Password" }),
4977
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4978
- import_react35.InputGroup,
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, import_jsx_runtime20.jsx)(
4981
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuEyeOff, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuEye, { size: 15 })
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, import_jsx_runtime20.jsx)(
4992
- import_react35.Input,
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, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5005
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "New Password" }),
5006
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5007
- import_react35.InputGroup,
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, import_jsx_runtime20.jsx)(
5010
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuEyeOff, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuEye, { size: 15 })
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, import_jsx_runtime20.jsx)(
5021
- import_react35.Input,
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, import_jsx_runtime20.jsxs)(import_react35.Box, { mt: 2, children: [
5033
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Flex, { gap: 1, mb: 1, children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5034
- import_react35.Box,
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, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", color: pwMeta.color, fontWeight: "medium", children: pwMeta.label })
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, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5048
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Confirm New Password" }),
5049
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5050
- import_react35.InputGroup,
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, import_jsx_runtime20.jsx)(
5053
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuEyeOff, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuEye, { size: 15 })
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, import_jsx_runtime20.jsx)(
5064
- import_react35.Input,
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, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", color: "red.500", mt: 1, children: "Passwords do not match" })
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, import_jsx_runtime20.jsx)(
5078
- import_react35.Button,
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, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
5094
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5095
- import_react35.Box,
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, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 2, pr: 10, children: [
5107
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5108
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuChevronLeft, {})
6031
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
5119
6032
  }
5120
6033
  ),
5121
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
5122
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontWeight: "bold", fontSize: "md", children: "Quick Navigation" }),
5123
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Text, { fontSize: "xs", color: "gray.500", children: [
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, import_jsx_runtime20.jsxs)(import_react35.Box, { px: 4, pt: 5, pb: 2, children: [
5133
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", justify: "space-between", mb: 3, children: [
5134
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5135
- import_react35.Text,
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, import_jsx_runtime20.jsxs)(
5146
- import_react35.Text,
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, import_jsx_runtime20.jsx)(
5160
- import_react35.Flex,
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, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", color: "gray.400", children: "No items pinned \u2014 add from below" })
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, import_jsx_runtime20.jsx)(import_react35.VStack, { gap: 0, children: quickNavHrefs.map((href, idx) => {
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, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5179
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
5180
- import_react35.Flex,
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, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
5193
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5194
- import_react35.Box,
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, import_jsx_runtime20.jsx)(ItemIcon, { size: 15 })
6118
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ItemIcon, { size: 15 })
5206
6119
  }
5207
6120
  ),
5208
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
5209
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "medium", children: option.title }),
5210
- isReplacing && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5211
- import_react35.Text,
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, import_jsx_runtime20.jsxs)(import_react35.HStack, { gap: 0.5, children: [
5222
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5223
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuChevronUp, { size: 14 })
6144
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronUp, { size: 14 })
5232
6145
  }
5233
6146
  ),
5234
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5235
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuChevronDown, { size: 14 })
6156
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronDown, { size: 14 })
5244
6157
  }
5245
6158
  ),
5246
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5247
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuArrowLeftRight, { size: 13 })
6169
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuArrowLeftRight, { size: 13 })
5257
6170
  }
5258
6171
  ),
5259
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5260
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuX, { size: 14 })
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, import_jsx_runtime20.jsx)(import_react35.Separator, {})
6189
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {})
5277
6190
  ] }, href);
5278
6191
  }) })
5279
6192
  ] }),
5280
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, { mx: 4, my: 1 }),
5281
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { px: 4, pt: 4, pb: 10, children: [
5282
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", justify: "space-between", mb: 3, children: [
5283
- replacingIdx !== null ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
5284
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5285
- import_react35.Text,
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, import_jsx_runtime20.jsxs)(import_react35.Text, { fontSize: "xs", color: "gray.500", mt: 0.5, children: [
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, import_jsx_runtime20.jsx)(
5303
- import_react35.Text,
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, import_jsx_runtime20.jsx)(
5314
- import_react35.Button,
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, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", color: "gray.400", py: 3, textAlign: "center", children: "All available items are pinned" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.VStack, { gap: 0, children: unpinnedOptions.map((option, idx) => {
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, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5331
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 2.5, children: [
5332
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
5333
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5334
- import_react35.Box,
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, import_jsx_runtime20.jsx)(ItemIcon, { size: 15 })
6258
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ItemIcon, { size: 15 })
5346
6259
  }
5347
6260
  ),
5348
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5349
- import_react35.Text,
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, import_jsx_runtime20.jsx)(
5359
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuArrowLeftRight, { size: 13 })
6281
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuArrowLeftRight, { size: 13 })
5369
6282
  }
5370
- ) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5371
- import_react35.IconButton,
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, import_jsx_runtime20.jsx)(import_lu7.LuPlus, { size: 13 })
6294
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuPlus, { size: 13 })
5382
6295
  }
5383
6296
  )
5384
6297
  ] }),
5385
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, {})
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, import_jsx_runtime20.jsxs)(
5393
- import_react35.Flex,
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, import_jsx_runtime20.jsx)(
5404
- import_react35.Box,
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, import_jsx_runtime20.jsx)(
5419
- import_react35.Box,
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, import_jsx_runtime20.jsxs)(
5430
- import_react35.Flex,
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, import_jsx_runtime20.jsx)(
5441
- import_react35.Box,
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, import_jsx_runtime20.jsx)(import_lu7.LuUser, { size: 24 })
6364
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuUser, { size: 24 })
5452
6365
  }
5453
6366
  ),
5454
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", mt: 1, maxW: "280px", children: "Choose Edit Account, Change Password, or Quick Navigation from the menu to update your details here." })
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, import_jsx_runtime20.jsx)(import_react35.Box, { maxW: "480px", mx: "auto", w: "full", minH: "100%", bg: "bg", children: profileView === "main" ? mainContent : subViewContent });
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
- saveApplicationDataToLocalStorage
6399
+ markOcrApplied,
6400
+ readOcrResult,
6401
+ saveApplicationDataToLocalStorage,
6402
+ saveOcrResult,
6403
+ useOcr
5483
6404
  });
5484
6405
  //# sourceMappingURL=index.js.map