@splpi/estore-shared-components 7.0.2 → 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,
@@ -42,11 +44,14 @@ __export(index_exports, {
42
44
  OCR_STORAGE_KEY: () => OCR_STORAGE_KEY,
43
45
  SharedLifePlanApplication: () => SharedLifePlanApplication_default,
44
46
  UserProfile: () => UserProfile_default,
47
+ clearOcrResult: () => clearOcrResult,
45
48
  createEmptyApplicationData: () => createEmptyApplicationData,
46
49
  loadApplicationDataFromLocalStorage: () => loadApplicationDataFromLocalStorage,
47
50
  markOcrApplied: () => markOcrApplied,
48
51
  readOcrResult: () => readOcrResult,
49
- saveApplicationDataToLocalStorage: () => saveApplicationDataToLocalStorage
52
+ saveApplicationDataToLocalStorage: () => saveApplicationDataToLocalStorage,
53
+ saveOcrResult: () => saveOcrResult,
54
+ useOcr: () => useOcr
50
55
  });
51
56
  module.exports = __toCommonJS(index_exports);
52
57
 
@@ -302,6 +307,20 @@ var markOcrApplied = (section) => {
302
307
  }
303
308
  return true;
304
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
+ };
305
324
 
306
325
  // src/NewSaleForm/LifePlanApplication1.tsx
307
326
  var import_react4 = require("react");
@@ -2142,6 +2161,7 @@ var InfoCard = ({
2142
2161
  }
2143
2162
  );
2144
2163
  };
2164
+ var info_card_default = InfoCard;
2145
2165
 
2146
2166
  // src/NewSaleForm/ui/input-card-accordion.tsx
2147
2167
  var import_react15 = require("@chakra-ui/react");
@@ -3569,12 +3589,843 @@ var LifePlanApplicationStepWrapper = (props) => {
3569
3589
  };
3570
3590
  var LifePlanApplicationStepWrapper_default = LifePlanApplicationStepWrapper;
3571
3591
 
3572
- // src/Generic/BottomQuickActions.tsx
3573
- var import_react28 = __toESM(require("react"));
3574
- 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");
3575
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");
3576
4427
  var import_link = __toESM(require("next/link"));
3577
- var import_jsx_runtime18 = require("react/jsx-runtime");
4428
+ var import_jsx_runtime21 = require("react/jsx-runtime");
3578
4429
  var SHEET_BG = BRAND_COLORS.white;
3579
4430
  var DRAG_COLOR = BRAND_COLORS.neutralBorder;
3580
4431
  var ITEM_BG = BRAND_COLORS.white;
@@ -3591,15 +4442,15 @@ var SUBTITLE_COLOR = BRAND_COLORS.grey;
3591
4442
  var LABEL_COLOR = BRAND_COLORS.neutralText;
3592
4443
  var DESC_COLOR = BRAND_COLORS.grey;
3593
4444
  var CHEVRON_COLOR = BRAND_COLORS.ashWhite;
3594
- var QuickActionsHeaderCard = import_react28.default.memo(
4445
+ var QuickActionsHeaderCard = import_react35.default.memo(
3595
4446
  ({
3596
4447
  initials,
3597
4448
  avatarBg = AVATAR_DEFAULT_BG,
3598
4449
  label,
3599
4450
  meta,
3600
4451
  trailing
3601
- }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
3602
- import_react29.HStack,
4452
+ }) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4453
+ import_react36.HStack,
3603
4454
  {
3604
4455
  gap: STANDARD_SPACING.sm,
3605
4456
  px: STANDARD_SPACING.sm,
@@ -3609,8 +4460,8 @@ var QuickActionsHeaderCard = import_react28.default.memo(
3609
4460
  borderWidth: "1px",
3610
4461
  borderColor: HEADER_CARD_BORDER,
3611
4462
  children: [
3612
- initials && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3613
- import_react29.Flex,
4463
+ initials && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4464
+ import_react36.Flex,
3614
4465
  {
3615
4466
  w: "40px",
3616
4467
  h: "40px",
@@ -3619,8 +4470,8 @@ var QuickActionsHeaderCard = import_react28.default.memo(
3619
4470
  align: "center",
3620
4471
  justify: "center",
3621
4472
  flexShrink: 0,
3622
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3623
- import_react29.Text,
4473
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4474
+ import_react36.Text,
3624
4475
  {
3625
4476
  fontSize: "14px",
3626
4477
  fontWeight: "700",
@@ -3631,9 +4482,9 @@ var QuickActionsHeaderCard = import_react28.default.memo(
3631
4482
  )
3632
4483
  }
3633
4484
  ),
3634
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_react29.Box, { flex: "1", minW: 0, children: [
3635
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3636
- 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,
3637
4488
  {
3638
4489
  fontSize: "15px",
3639
4490
  fontWeight: "700",
@@ -3645,8 +4496,8 @@ var QuickActionsHeaderCard = import_react28.default.memo(
3645
4496
  children: label
3646
4497
  }
3647
4498
  ),
3648
- meta && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3649
- import_react29.Text,
4499
+ meta && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4500
+ import_react36.Text,
3650
4501
  {
3651
4502
  fontSize: "12px",
3652
4503
  color: SUBTITLE_COLOR,
@@ -3667,11 +4518,11 @@ var QuickActionsHeaderCard = import_react28.default.memo(
3667
4518
  var ITEM_TRANSITION = {
3668
4519
  transition: "background 0.15s ease, transform 0.1s ease"
3669
4520
  };
3670
- var ActionItem = import_react28.default.memo(({ action }) => {
4521
+ var ActionItem = import_react35.default.memo(({ action }) => {
3671
4522
  const iconBg = action.iconBg ?? DEFAULT_ICON_BG;
3672
4523
  const iconColor = action.iconColor ?? DEFAULT_ICON_COLOR;
3673
- const inner = /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
3674
- import_react29.HStack,
4524
+ const inner = /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4525
+ import_react36.HStack,
3675
4526
  {
3676
4527
  gap: STANDARD_SPACING.sm,
3677
4528
  px: STANDARD_SPACING.sm,
@@ -3693,8 +4544,8 @@ var ActionItem = import_react28.default.memo(({ action }) => {
3693
4544
  _active: { bg: ITEM_ACTIVE_BG, transform: "scale(0.99)" },
3694
4545
  style: ITEM_TRANSITION,
3695
4546
  children: [
3696
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3697
- import_react29.Flex,
4547
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4548
+ import_react36.Flex,
3698
4549
  {
3699
4550
  w: "40px",
3700
4551
  h: "40px",
@@ -3703,12 +4554,12 @@ var ActionItem = import_react28.default.memo(({ action }) => {
3703
4554
  align: "center",
3704
4555
  justify: "center",
3705
4556
  flexShrink: 0,
3706
- 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 })
3707
4558
  }
3708
4559
  ),
3709
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_react29.Box, { flex: "1", minW: 0, children: [
3710
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3711
- 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,
3712
4563
  {
3713
4564
  fontSize: "15px",
3714
4565
  fontWeight: "600",
@@ -3717,8 +4568,8 @@ var ActionItem = import_react28.default.memo(({ action }) => {
3717
4568
  children: action.label
3718
4569
  }
3719
4570
  ),
3720
- action.description && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3721
- import_react29.Text,
4571
+ action.description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4572
+ import_react36.Text,
3722
4573
  {
3723
4574
  fontSize: "12px",
3724
4575
  color: DESC_COLOR,
@@ -3731,10 +4582,10 @@ var ActionItem = import_react28.default.memo(({ action }) => {
3731
4582
  }
3732
4583
  )
3733
4584
  ] }),
3734
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3735
- import_react29.Icon,
4585
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4586
+ import_react36.Icon,
3736
4587
  {
3737
- as: import_lu6.LuChevronRight,
4588
+ as: import_lu8.LuChevronRight,
3738
4589
  boxSize: "18px",
3739
4590
  color: CHEVRON_COLOR,
3740
4591
  flexShrink: 0
@@ -3744,7 +4595,7 @@ var ActionItem = import_react28.default.memo(({ action }) => {
3744
4595
  }
3745
4596
  );
3746
4597
  if (action.href) {
3747
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
4598
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3748
4599
  import_link.default,
3749
4600
  {
3750
4601
  href: action.href,
@@ -3763,16 +4614,16 @@ var BottomQuickActions = ({
3763
4614
  headerSlot,
3764
4615
  actions
3765
4616
  }) => {
3766
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3767
- import_react29.Drawer.Root,
4617
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4618
+ import_react36.Drawer.Root,
3768
4619
  {
3769
4620
  open,
3770
4621
  onOpenChange: (e) => onOpenChange(e.open),
3771
4622
  placement: "bottom",
3772
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_react29.Portal, { children: [
3773
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react29.Drawer.Backdrop, {}),
3774
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react29.Drawer.Positioner, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
3775
- 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,
3776
4627
  {
3777
4628
  borderTopRadius: "l3",
3778
4629
  borderBottomRadius: "0",
@@ -3782,8 +4633,8 @@ var BottomQuickActions = ({
3782
4633
  pb: `calc(${STANDARD_SPACING.sm} + env(safe-area-inset-bottom))`,
3783
4634
  boxShadow: STANDARD_SHADOWS.level4,
3784
4635
  children: [
3785
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react29.Flex, { justify: "center", pt: "10px", pb: "4px", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3786
- 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,
3787
4638
  {
3788
4639
  w: "36px",
3789
4640
  h: "4px",
@@ -3791,17 +4642,17 @@ var BottomQuickActions = ({
3791
4642
  bg: DRAG_COLOR
3792
4643
  }
3793
4644
  ) }),
3794
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3795
- import_react29.Drawer.Header,
4645
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4646
+ import_react36.Drawer.Header,
3796
4647
  {
3797
4648
  px: STANDARD_SPACING.sm,
3798
4649
  pt: "12px",
3799
4650
  pb: "0",
3800
4651
  borderBottomWidth: "0",
3801
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_react29.Flex, { align: "flex-start", justify: "space-between", gap: "12px", children: [
3802
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_react29.Box, { flex: "1", minW: 0, children: [
3803
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3804
- 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,
3805
4656
  {
3806
4657
  fontSize: "18px",
3807
4658
  fontWeight: "700",
@@ -3811,8 +4662,8 @@ var BottomQuickActions = ({
3811
4662
  children: title
3812
4663
  }
3813
4664
  ),
3814
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3815
- import_react29.Text,
4665
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
4666
+ import_react36.Text,
3816
4667
  {
3817
4668
  fontSize: "13px",
3818
4669
  color: SUBTITLE_COLOR,
@@ -3823,8 +4674,8 @@ var BottomQuickActions = ({
3823
4674
  }
3824
4675
  )
3825
4676
  ] }),
3826
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react29.Drawer.CloseTrigger, { asChild: true, mt: "2px", flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3827
- 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,
3828
4679
  {
3829
4680
  size: "sm",
3830
4681
  color: BRAND_COLORS.neutralText,
@@ -3835,15 +4686,15 @@ var BottomQuickActions = ({
3835
4686
  ] })
3836
4687
  }
3837
4688
  ),
3838
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
3839
- import_react29.Drawer.Body,
4689
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
4690
+ import_react36.Drawer.Body,
3840
4691
  {
3841
4692
  px: STANDARD_SPACING.sm,
3842
4693
  pt: STANDARD_SPACING.sm,
3843
4694
  pb: "4px",
3844
4695
  children: [
3845
- headerSlot && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react29.Box, { mb: STANDARD_SPACING.xs, children: headerSlot }),
3846
- /* @__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)) })
3847
4698
  ]
3848
4699
  }
3849
4700
  )
@@ -3857,18 +4708,18 @@ var BottomQuickActions = ({
3857
4708
  var BottomQuickActions_default = BottomQuickActions;
3858
4709
 
3859
4710
  // src/Generic/NotifyInstall.tsx
3860
- var import_react31 = require("react");
3861
- var import_react32 = require("@chakra-ui/react");
3862
- 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");
3863
4714
  var import_fi2 = require("react-icons/fi");
3864
4715
 
3865
4716
  // src/hooks/useNotifyInstall.ts
3866
- var import_react30 = require("react");
4717
+ var import_react37 = require("react");
3867
4718
  function useNotifyInstall() {
3868
- const [isInstalled, setIsInstalled] = (0, import_react30.useState)(false);
3869
- const [isMobile, setIsMobile] = (0, import_react30.useState)(false);
3870
- const [installPrompt, setInstallPrompt] = (0, import_react30.useState)(null);
3871
- (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)(() => {
3872
4723
  const mobile = /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
3873
4724
  setIsMobile(mobile);
3874
4725
  const installed = window.matchMedia("(display-mode: standalone)").matches || window.navigator.standalone === true;
@@ -3900,7 +4751,7 @@ function useNotifyInstall() {
3900
4751
  }
3901
4752
 
3902
4753
  // src/Generic/NotifyInstall.tsx
3903
- var import_jsx_runtime19 = require("react/jsx-runtime");
4754
+ var import_jsx_runtime22 = require("react/jsx-runtime");
3904
4755
  var STEPS = [
3905
4756
  { icon: import_fi2.FiShare, label: "Tap the browser menu or Share button" },
3906
4757
  { icon: import_fi2.FiPlusSquare, label: 'Choose "Add to Home Screen"' }
@@ -3911,8 +4762,8 @@ function NotifyInstall({
3911
4762
  appName
3912
4763
  }) {
3913
4764
  const { isInstalled, isMobile, canInstall, install } = useNotifyInstall();
3914
- const [isDismissed, setIsDismissed] = (0, import_react31.useState)(true);
3915
- (0, import_react31.useEffect)(() => {
4765
+ const [isDismissed, setIsDismissed] = (0, import_react38.useState)(true);
4766
+ (0, import_react38.useEffect)(() => {
3916
4767
  if (localStorage.getItem(DISMISSED_KEY) !== "true") {
3917
4768
  setIsDismissed(false);
3918
4769
  }
@@ -3922,11 +4773,11 @@ function NotifyInstall({
3922
4773
  setIsDismissed(true);
3923
4774
  };
3924
4775
  const showPrompt = isMobile && !isInstalled && !isDismissed;
3925
- 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: [
3926
4777
  children,
3927
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react33.AnimatePresence, { children: showPrompt && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
3928
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3929
- 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,
3930
4781
  {
3931
4782
  initial: { opacity: 0 },
3932
4783
  animate: { opacity: 1 },
@@ -3944,8 +4795,8 @@ function NotifyInstall({
3944
4795
  },
3945
4796
  "install-backdrop"
3946
4797
  ),
3947
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
3948
- import_react33.motion.div,
4798
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
4799
+ import_react40.motion.div,
3949
4800
  {
3950
4801
  initial: { y: "100%" },
3951
4802
  animate: { y: 0 },
@@ -3963,7 +4814,7 @@ function NotifyInstall({
3963
4814
  paddingBottom: "env(safe-area-inset-bottom)"
3964
4815
  },
3965
4816
  children: [
3966
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4817
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3967
4818
  "button",
3968
4819
  {
3969
4820
  "aria-label": "Dismiss install prompt",
@@ -3982,12 +4833,12 @@ function NotifyInstall({
3982
4833
  justifyContent: "center",
3983
4834
  color: "#9ca3af"
3984
4835
  },
3985
- 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 })
3986
4837
  }
3987
4838
  ),
3988
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.VStack, { gap: 6, textAlign: "center", px: 6, py: 8, children: [
3989
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3990
- 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,
3991
4842
  {
3992
4843
  boxSize: 16,
3993
4844
  align: "center",
@@ -3996,12 +4847,12 @@ function NotifyInstall({
3996
4847
  bg: "green.50",
3997
4848
  color: "green.600",
3998
4849
  shadow: "sm",
3999
- 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 })
4000
4851
  }
4001
4852
  ),
4002
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.VStack, { gap: 2, children: [
4003
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4004
- 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,
4005
4856
  {
4006
4857
  fontSize: "lg",
4007
4858
  fontWeight: "bold",
@@ -4013,10 +4864,10 @@ function NotifyInstall({
4013
4864
  ]
4014
4865
  }
4015
4866
  ),
4016
- /* @__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." })
4017
4868
  ] }),
4018
- canInstall ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4019
- import_react32.Button,
4869
+ canInstall ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
4870
+ import_react39.Button,
4020
4871
  {
4021
4872
  onClick: install,
4022
4873
  colorPalette: "green",
@@ -4024,12 +4875,12 @@ function NotifyInstall({
4024
4875
  w: "full",
4025
4876
  rounded: "xl",
4026
4877
  children: [
4027
- /* @__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 }),
4028
4879
  "Add to Home Screen"
4029
4880
  ]
4030
4881
  }
4031
- ) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4032
- import_react32.VStack,
4882
+ ) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
4883
+ import_react39.VStack,
4033
4884
  {
4034
4885
  w: "full",
4035
4886
  bg: "gray.50",
@@ -4039,9 +4890,9 @@ function NotifyInstall({
4039
4890
  p: 4,
4040
4891
  gap: 4,
4041
4892
  align: "stretch",
4042
- children: STEPS.map((step, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_react32.HStack, { gap: 3, align: "center", children: [
4043
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4044
- 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,
4045
4896
  {
4046
4897
  boxSize: 9,
4047
4898
  flexShrink: 0,
@@ -4052,10 +4903,10 @@ function NotifyInstall({
4052
4903
  borderWidth: "1px",
4053
4904
  borderColor: "gray.200",
4054
4905
  color: "green.600",
4055
- 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 })
4056
4907
  }
4057
4908
  ),
4058
- /* @__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 })
4059
4910
  ] }, i))
4060
4911
  }
4061
4912
  )
@@ -4069,17 +4920,17 @@ function NotifyInstall({
4069
4920
  }
4070
4921
 
4071
4922
  // src/UserProfile/UserProfile.tsx
4072
- var import_react34 = require("react");
4073
- var import_react35 = require("@chakra-ui/react");
4923
+ var import_react41 = require("react");
4924
+ var import_react42 = require("@chakra-ui/react");
4074
4925
  var import_ri = require("react-icons/ri");
4075
- var import_lu7 = require("react-icons/lu");
4926
+ var import_lu9 = require("react-icons/lu");
4076
4927
  var import_hi2 = require("react-icons/hi2");
4077
4928
  var import_bs = require("react-icons/bs");
4078
4929
  var import_lia = require("react-icons/lia");
4079
4930
  var import_fa5 = require("react-icons/fa");
4080
4931
  var import_md = require("react-icons/md");
4081
4932
  var import_io5 = require("react-icons/io5");
4082
- var import_jsx_runtime20 = require("react/jsx-runtime");
4933
+ var import_jsx_runtime23 = require("react/jsx-runtime");
4083
4934
  var NAVBAR_STORAGE_KEY = "profile-navbar-quick-items";
4084
4935
  var FONT_SIZE_STORAGE_KEY = "profile-font-size-pref";
4085
4936
  var DEFAULT_NAV_HREFS = ["/", "/plans", "/pay-my-plan", "/claims"];
@@ -4095,8 +4946,8 @@ var ALL_NAV_OPTIONS = [
4095
4946
  key: "/",
4096
4947
  title: "Home",
4097
4948
  href: "/",
4098
- Icon: import_lu7.LuHouse,
4099
- activeIcon: import_lu7.LuHouse,
4949
+ Icon: import_lu9.LuHouse,
4950
+ activeIcon: import_lu9.LuHouse,
4100
4951
  match: (p) => p === "/",
4101
4952
  roles: ["branch", "bmstl", "sales-agent"]
4102
4953
  },
@@ -4113,8 +4964,8 @@ var ALL_NAV_OPTIONS = [
4113
4964
  key: "/pay-my-plan",
4114
4965
  title: "Pay",
4115
4966
  href: "/pay-my-plan",
4116
- Icon: import_lu7.LuCreditCard,
4117
- activeIcon: import_lu7.LuCreditCard,
4967
+ Icon: import_lu9.LuCreditCard,
4968
+ activeIcon: import_lu9.LuCreditCard,
4118
4969
  match: (p) => p.startsWith("/pay-my-plan") || p.startsWith("/account/pay-my-plan") || p.startsWith("/order-summary"),
4119
4970
  roles: ["branch", "bmstl", "sales-agent"]
4120
4971
  },
@@ -4122,8 +4973,8 @@ var ALL_NAV_OPTIONS = [
4122
4973
  key: "/claims",
4123
4974
  title: "Claim",
4124
4975
  href: "/claims",
4125
- Icon: import_lu7.LuFileText,
4126
- activeIcon: import_lu7.LuFileText,
4976
+ Icon: import_lu9.LuFileText,
4977
+ activeIcon: import_lu9.LuFileText,
4127
4978
  match: (p) => p.startsWith("/claims"),
4128
4979
  roles: ["branch", "bmstl", "sales-agent"]
4129
4980
  },
@@ -4377,28 +5228,28 @@ function ReusableProfile({
4377
5228
  onTwoFactorChange,
4378
5229
  onToast = noopToast
4379
5230
  }) {
4380
- const [profileView, setProfileView] = (0, import_react34.useState)("main");
4381
- 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");
4382
5233
  const colorMode = controlledColorMode ?? fallbackColorMode;
4383
- const [fontSize, setFontSizeLocal] = (0, import_react34.useState)("md");
4384
- const [quickNavHrefs, setQuickNavHrefs] = (0, import_react34.useState)(initialQuickNavHrefs);
4385
- const [replacingIdx, setReplacingIdx] = (0, import_react34.useState)(null);
4386
- const [editName, setEditName] = (0, import_react34.useState)(user.displayName);
4387
- const [editLoading, setEditLoading] = (0, import_react34.useState)(false);
4388
- const [currentPw, setCurrentPw] = (0, import_react34.useState)("");
4389
- const [newPw, setNewPw] = (0, import_react34.useState)("");
4390
- const [confirmPw, setConfirmPw] = (0, import_react34.useState)("");
4391
- const [showCurrentPw, setShowCurrentPw] = (0, import_react34.useState)(false);
4392
- const [showNewPw, setShowNewPw] = (0, import_react34.useState)(false);
4393
- const [showConfirmPw, setShowConfirmPw] = (0, import_react34.useState)(false);
4394
- const [pwLoading, setPwLoading] = (0, import_react34.useState)(false);
4395
- 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)(
4396
5247
  initialTwoFactorEnabled
4397
5248
  );
4398
- const [isMounted, setIsMounted] = (0, import_react34.useState)(false);
4399
- 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 });
4400
5251
  const isDesktop = isMounted ? isDesktopRaw ?? false : false;
4401
- (0, import_react34.useEffect)(() => {
5252
+ (0, import_react41.useEffect)(() => {
4402
5253
  setIsMounted(true);
4403
5254
  if (!enableLocalStorage || typeof window === "undefined") return;
4404
5255
  setFontSizeLocal(localStorage.getItem(FONT_SIZE_STORAGE_KEY) ?? "md");
@@ -4409,10 +5260,10 @@ function ReusableProfile({
4409
5260
  setQuickNavHrefs(initialQuickNavHrefs);
4410
5261
  }
4411
5262
  }, [enableLocalStorage, initialQuickNavHrefs, storageKey]);
4412
- (0, import_react34.useEffect)(() => {
5263
+ (0, import_react41.useEffect)(() => {
4413
5264
  setEditName(user.displayName);
4414
5265
  }, [user.displayName]);
4415
- const availableOptions = (0, import_react34.useMemo)(
5266
+ const availableOptions = (0, import_react41.useMemo)(
4416
5267
  () => availableNavOptions.filter(
4417
5268
  (option) => !user.role || option.roles.includes(user.role)
4418
5269
  ),
@@ -4540,9 +5391,9 @@ function ReusableProfile({
4540
5391
  }
4541
5392
  };
4542
5393
  const roleLabel = user.role ? ROLE_LABELS[user.role] ?? user.role : "";
4543
- const mainContent = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
4544
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4545
- 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,
4546
5397
  {
4547
5398
  bg: "var(--chakra-colors-primary)",
4548
5399
  pt: 12,
@@ -4550,21 +5401,21 @@ function ReusableProfile({
4550
5401
  px: 4,
4551
5402
  textAlign: "center",
4552
5403
  children: [
4553
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4554
- import_react35.Avatar.Root,
5404
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
5405
+ import_react42.Avatar.Root,
4555
5406
  {
4556
5407
  size: "2xl",
4557
5408
  mx: "auto",
4558
5409
  mb: 4,
4559
5410
  colorPalette: pickPalette(user.displayName || "U"),
4560
5411
  children: [
4561
- user.avatarSrc && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Avatar.Image, { src: user.avatarSrc, alt: user.displayName }),
4562
- /* @__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 })
4563
5414
  ]
4564
5415
  }
4565
5416
  ),
4566
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4567
- import_react35.Text,
5417
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5418
+ import_react42.Text,
4568
5419
  {
4569
5420
  color: "white",
4570
5421
  fontWeight: "bold",
@@ -4574,9 +5425,9 @@ function ReusableProfile({
4574
5425
  children: user.displayName
4575
5426
  }
4576
5427
  ),
4577
- 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 }),
4578
- roleLabel && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Box, { display: "inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4579
- 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,
4580
5431
  {
4581
5432
  bg: "rgba(255,255,255,0.15)",
4582
5433
  color: "white",
@@ -4592,9 +5443,9 @@ function ReusableProfile({
4592
5443
  ]
4593
5444
  }
4594
5445
  ),
4595
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { px: 4, pt: 5, pb: 1, children: [
4596
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4597
- 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,
4598
5449
  {
4599
5450
  fontSize: "xs",
4600
5451
  fontWeight: "bold",
@@ -4605,8 +5456,8 @@ function ReusableProfile({
4605
5456
  children: "Account"
4606
5457
  }
4607
5458
  ),
4608
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4609
- import_react35.Box,
5459
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5460
+ import_react42.Box,
4610
5461
  {
4611
5462
  as: "button",
4612
5463
  w: "full",
@@ -4614,8 +5465,8 @@ function ReusableProfile({
4614
5465
  _hover: { opacity: 0.7 },
4615
5466
  transition: "opacity 0.15s",
4616
5467
  onClick: () => setProfileView("edit-account"),
4617
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4618
- import_react35.Flex,
5468
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
5469
+ import_react42.Flex,
4619
5470
  {
4620
5471
  justify: "space-between",
4621
5472
  align: "center",
@@ -4624,9 +5475,9 @@ function ReusableProfile({
4624
5475
  borderRadius: "lg",
4625
5476
  bg: isDesktop && profileView === "edit-account" ? "gray.100" : void 0,
4626
5477
  children: [
4627
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4628
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4629
- 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,
4630
5481
  {
4631
5482
  w: "38px",
4632
5483
  h: "38px",
@@ -4637,23 +5488,23 @@ function ReusableProfile({
4637
5488
  justifyContent: "center",
4638
5489
  color: "gray.600",
4639
5490
  flexShrink: 0,
4640
- 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 })
4641
5492
  }
4642
5493
  ),
4643
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4644
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Edit Account" }),
4645
- /* @__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" })
4646
5497
  ] })
4647
5498
  ] }),
4648
- /* @__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)" })
4649
5500
  ]
4650
5501
  }
4651
5502
  )
4652
5503
  }
4653
5504
  ),
4654
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, {}),
4655
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4656
- import_react35.Box,
5505
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {}),
5506
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5507
+ import_react42.Box,
4657
5508
  {
4658
5509
  as: "button",
4659
5510
  w: "full",
@@ -4664,8 +5515,8 @@ function ReusableProfile({
4664
5515
  resetPasswordForm();
4665
5516
  setProfileView("change-password");
4666
5517
  },
4667
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4668
- import_react35.Flex,
5518
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
5519
+ import_react42.Flex,
4669
5520
  {
4670
5521
  justify: "space-between",
4671
5522
  align: "center",
@@ -4674,9 +5525,9 @@ function ReusableProfile({
4674
5525
  borderRadius: "lg",
4675
5526
  bg: isDesktop && profileView === "change-password" ? "gray.100" : void 0,
4676
5527
  children: [
4677
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4678
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4679
- 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,
4680
5531
  {
4681
5532
  w: "38px",
4682
5533
  h: "38px",
@@ -4687,25 +5538,25 @@ function ReusableProfile({
4687
5538
  justifyContent: "center",
4688
5539
  color: "gray.600",
4689
5540
  flexShrink: 0,
4690
- 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 })
4691
5542
  }
4692
5543
  ),
4693
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4694
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Change Password" }),
4695
- /* @__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" })
4696
5547
  ] })
4697
5548
  ] }),
4698
- /* @__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)" })
4699
5550
  ]
4700
5551
  }
4701
5552
  )
4702
5553
  }
4703
5554
  ),
4704
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, {}),
4705
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 3, children: [
4706
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4707
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4708
- 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,
4709
5560
  {
4710
5561
  w: "38px",
4711
5562
  h: "38px",
@@ -4716,16 +5567,16 @@ function ReusableProfile({
4716
5567
  justifyContent: "center",
4717
5568
  color: "gray.600",
4718
5569
  flexShrink: 0,
4719
- 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 })
4720
5571
  }
4721
5572
  ),
4722
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4723
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Two Factor Authentication" }),
4724
- /* @__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" })
4725
5576
  ] })
4726
5577
  ] }),
4727
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4728
- import_react35.Box,
5578
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5579
+ import_react42.Box,
4729
5580
  {
4730
5581
  role: "switch",
4731
5582
  "aria-checked": twoFactorEnabled,
@@ -4747,8 +5598,8 @@ function ReusableProfile({
4747
5598
  cursor: "pointer",
4748
5599
  flexShrink: 0,
4749
5600
  outline: "none",
4750
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4751
- import_react35.Box,
5601
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5602
+ import_react42.Box,
4752
5603
  {
4753
5604
  position: "absolute",
4754
5605
  top: "3px",
@@ -4765,9 +5616,9 @@ function ReusableProfile({
4765
5616
  )
4766
5617
  ] })
4767
5618
  ] }),
4768
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { px: 4, pt: 4, pb: 2, children: [
4769
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4770
- 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,
4771
5622
  {
4772
5623
  fontSize: "xs",
4773
5624
  fontWeight: "bold",
@@ -4778,10 +5629,10 @@ function ReusableProfile({
4778
5629
  children: "Preferences"
4779
5630
  }
4780
5631
  ),
4781
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 3, children: [
4782
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4783
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4784
- 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,
4785
5636
  {
4786
5637
  w: "38px",
4787
5638
  h: "38px",
@@ -4792,18 +5643,18 @@ function ReusableProfile({
4792
5643
  justifyContent: "center",
4793
5644
  color: "gray.600",
4794
5645
  flexShrink: 0,
4795
- 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 })
4796
5647
  }
4797
5648
  ),
4798
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4799
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Appearance" }),
4800
- /* @__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" })
4801
5652
  ] })
4802
5653
  ] }),
4803
- /* @__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) => {
4804
5655
  const isActive = colorMode === mode;
4805
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
4806
- import_react35.Button,
5656
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
5657
+ import_react42.Button,
4807
5658
  {
4808
5659
  size: "sm",
4809
5660
  variant: "outline",
@@ -4818,9 +5669,9 @@ function ReusableProfile({
4818
5669
  },
4819
5670
  onClick: () => handleColorMode(mode),
4820
5671
  children: [
4821
- mode === "light" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuSun, { size: 13 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuMoon, { size: 13 }),
4822
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4823
- 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,
4824
5675
  {
4825
5676
  fontSize: "xs",
4826
5677
  textTransform: "capitalize",
@@ -4834,11 +5685,11 @@ function ReusableProfile({
4834
5685
  );
4835
5686
  }) })
4836
5687
  ] }),
4837
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, {}),
4838
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 3, children: [
4839
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4840
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4841
- 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,
4842
5693
  {
4843
5694
  w: "38px",
4844
5695
  h: "38px",
@@ -4854,15 +5705,15 @@ function ReusableProfile({
4854
5705
  children: "A"
4855
5706
  }
4856
5707
  ),
4857
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4858
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Text Size" }),
4859
- /* @__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 })
4860
5711
  ] })
4861
5712
  ] }),
4862
- /* @__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) => {
4863
5714
  const isActive = fontSize === option.value;
4864
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4865
- import_react35.Button,
5715
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5716
+ import_react42.Button,
4866
5717
  {
4867
5718
  size: "sm",
4868
5719
  variant: "outline",
@@ -4877,8 +5728,8 @@ function ReusableProfile({
4877
5728
  },
4878
5729
  onClick: () => handleFontSize(option.value),
4879
5730
  title: option.title,
4880
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4881
- import_react35.Text,
5731
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5732
+ import_react42.Text,
4882
5733
  {
4883
5734
  fontWeight: isActive ? "bold" : "normal",
4884
5735
  style: { fontSize: `${option.scale * 13}px` },
@@ -4890,9 +5741,9 @@ function ReusableProfile({
4890
5741
  );
4891
5742
  }) })
4892
5743
  ] }),
4893
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, {}),
4894
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4895
- import_react35.Box,
5744
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {}),
5745
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5746
+ import_react42.Box,
4896
5747
  {
4897
5748
  as: "button",
4898
5749
  w: "full",
@@ -4900,10 +5751,10 @@ function ReusableProfile({
4900
5751
  _hover: { opacity: 0.7 },
4901
5752
  transition: "opacity 0.15s",
4902
5753
  onClick: () => setProfileView("navbar-customize"),
4903
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 3, children: [
4904
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
4905
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4906
- 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,
4907
5758
  {
4908
5759
  w: "38px",
4909
5760
  h: "38px",
@@ -4914,12 +5765,12 @@ function ReusableProfile({
4914
5765
  justifyContent: "center",
4915
5766
  color: "gray.600",
4916
5767
  flexShrink: 0,
4917
- 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 })
4918
5769
  }
4919
5770
  ),
4920
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
4921
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "semibold", children: "Quick Navigation" }),
4922
- /* @__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: [
4923
5774
  quickNavHrefs.length,
4924
5775
  " of ",
4925
5776
  maxQuickNavItems,
@@ -4927,13 +5778,13 @@ function ReusableProfile({
4927
5778
  ] })
4928
5779
  ] })
4929
5780
  ] }),
4930
- /* @__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)" })
4931
5782
  ] })
4932
5783
  }
4933
5784
  )
4934
5785
  ] }),
4935
- /* @__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)(
4936
- 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,
4937
5788
  {
4938
5789
  w: "full",
4939
5790
  variant: "outline",
@@ -4945,30 +5796,30 @@ function ReusableProfile({
4945
5796
  }
4946
5797
  ) }) })
4947
5798
  ] });
4948
- const editAccountContent = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
4949
- /* @__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: [
4950
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4951
- 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,
4952
5803
  {
4953
5804
  size: "sm",
4954
5805
  variant: "ghost",
4955
5806
  "aria-label": "Back",
4956
5807
  color: "gray.600",
4957
5808
  onClick: () => setProfileView("main"),
4958
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuChevronLeft, {})
5809
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
4959
5810
  }
4960
5811
  ),
4961
- /* @__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" })
4962
5813
  ] }) }),
4963
- /* @__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: [
4964
- user.avatarSrc && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Avatar.Image, { src: user.avatarSrc, alt: editName }),
4965
- /* @__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 })
4966
5817
  ] }) }),
4967
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.VStack, { gap: 4, px: 4, pb: 10, align: "stretch", children: [
4968
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
4969
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Display Name" }),
4970
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4971
- 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,
4972
5823
  {
4973
5824
  value: editName,
4974
5825
  onChange: (event) => setEditName(event.target.value),
@@ -4977,10 +5828,10 @@ function ReusableProfile({
4977
5828
  }
4978
5829
  )
4979
5830
  ] }),
4980
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
4981
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Email" }),
4982
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4983
- 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,
4984
5835
  {
4985
5836
  value: user.email ?? "",
4986
5837
  readOnly: true,
@@ -4990,10 +5841,10 @@ function ReusableProfile({
4990
5841
  }
4991
5842
  )
4992
5843
  ] }),
4993
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
4994
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Mobile Number" }),
4995
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
4996
- 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,
4997
5848
  {
4998
5849
  value: user.mobileNumber ?? "",
4999
5850
  readOnly: true,
@@ -5003,8 +5854,8 @@ function ReusableProfile({
5003
5854
  }
5004
5855
  )
5005
5856
  ] }),
5006
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5007
- import_react35.Button,
5857
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5858
+ import_react42.Button,
5008
5859
  {
5009
5860
  w: "full",
5010
5861
  mt: 2,
@@ -5018,40 +5869,40 @@ function ReusableProfile({
5018
5869
  )
5019
5870
  ] })
5020
5871
  ] });
5021
- const changePasswordContent = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
5022
- /* @__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: [
5023
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5024
- 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,
5025
5876
  {
5026
5877
  size: "sm",
5027
5878
  variant: "ghost",
5028
5879
  "aria-label": "Back",
5029
5880
  color: "gray.600",
5030
5881
  onClick: () => setProfileView("main"),
5031
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuChevronLeft, {})
5882
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
5032
5883
  }
5033
5884
  ),
5034
- /* @__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" })
5035
5886
  ] }) }),
5036
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.VStack, { gap: 5, px: 4, pt: 6, pb: 10, children: [
5037
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5038
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Current Password" }),
5039
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5040
- 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,
5041
5892
  {
5042
- endElement: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5043
- import_react35.IconButton,
5893
+ endElement: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5894
+ import_react42.IconButton,
5044
5895
  {
5045
5896
  size: "xs",
5046
5897
  variant: "ghost",
5047
5898
  color: "gray.500",
5048
5899
  "aria-label": "Toggle current password visibility",
5049
5900
  onClick: () => setShowCurrentPw(!showCurrentPw),
5050
- 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 })
5051
5902
  }
5052
5903
  ),
5053
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5054
- import_react35.Input,
5904
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5905
+ import_react42.Input,
5055
5906
  {
5056
5907
  type: showCurrentPw ? "text" : "password",
5057
5908
  value: currentPw,
@@ -5063,24 +5914,24 @@ function ReusableProfile({
5063
5914
  }
5064
5915
  )
5065
5916
  ] }),
5066
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5067
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "New Password" }),
5068
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5069
- 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,
5070
5921
  {
5071
- endElement: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5072
- import_react35.IconButton,
5922
+ endElement: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5923
+ import_react42.IconButton,
5073
5924
  {
5074
5925
  size: "xs",
5075
5926
  variant: "ghost",
5076
5927
  color: "gray.500",
5077
5928
  "aria-label": "Toggle new password visibility",
5078
5929
  onClick: () => setShowNewPw(!showNewPw),
5079
- 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 })
5080
5931
  }
5081
5932
  ),
5082
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5083
- import_react35.Input,
5933
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5934
+ import_react42.Input,
5084
5935
  {
5085
5936
  type: showNewPw ? "text" : "password",
5086
5937
  value: newPw,
@@ -5091,9 +5942,9 @@ function ReusableProfile({
5091
5942
  )
5092
5943
  }
5093
5944
  ),
5094
- newPw && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { mt: 2, children: [
5095
- /* @__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)(
5096
- 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,
5097
5948
  {
5098
5949
  flex: 1,
5099
5950
  h: "3px",
@@ -5103,27 +5954,27 @@ function ReusableProfile({
5103
5954
  },
5104
5955
  i
5105
5956
  )) }),
5106
- /* @__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 })
5107
5958
  ] })
5108
5959
  ] }),
5109
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5110
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "xs", fontWeight: "semibold", color: "gray.500", mb: 1.5, children: "Confirm New Password" }),
5111
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5112
- 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,
5113
5964
  {
5114
- endElement: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5115
- import_react35.IconButton,
5965
+ endElement: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5966
+ import_react42.IconButton,
5116
5967
  {
5117
5968
  size: "xs",
5118
5969
  variant: "ghost",
5119
5970
  color: "gray.500",
5120
5971
  "aria-label": "Toggle confirm password visibility",
5121
5972
  onClick: () => setShowConfirmPw(!showConfirmPw),
5122
- 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 })
5123
5974
  }
5124
5975
  ),
5125
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5126
- import_react35.Input,
5976
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5977
+ import_react42.Input,
5127
5978
  {
5128
5979
  type: showConfirmPw ? "text" : "password",
5129
5980
  value: confirmPw,
@@ -5134,10 +5985,10 @@ function ReusableProfile({
5134
5985
  )
5135
5986
  }
5136
5987
  ),
5137
- 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" })
5138
5989
  ] }),
5139
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5140
- import_react35.Button,
5990
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
5991
+ import_react42.Button,
5141
5992
  {
5142
5993
  w: "full",
5143
5994
  mt: 1,
@@ -5152,9 +6003,9 @@ function ReusableProfile({
5152
6003
  )
5153
6004
  ] })
5154
6005
  ] });
5155
- const navbarCustomizeContent = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
5156
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5157
- 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,
5158
6009
  {
5159
6010
  px: 4,
5160
6011
  pt: 4,
@@ -5165,9 +6016,9 @@ function ReusableProfile({
5165
6016
  top: 0,
5166
6017
  bg: "bg",
5167
6018
  zIndex: 1,
5168
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 2, pr: 10, children: [
5169
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5170
- 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,
5171
6022
  {
5172
6023
  size: "sm",
5173
6024
  variant: "ghost",
@@ -5177,12 +6028,12 @@ function ReusableProfile({
5177
6028
  setReplacingIdx(null);
5178
6029
  setProfileView("main");
5179
6030
  },
5180
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lu7.LuChevronLeft, {})
6031
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lu9.LuChevronLeft, {})
5181
6032
  }
5182
6033
  ),
5183
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
5184
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontWeight: "bold", fontSize: "md", children: "Quick Navigation" }),
5185
- /* @__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: [
5186
6037
  "Choose up to ",
5187
6038
  maxQuickNavItems,
5188
6039
  " shortcuts for the bottom bar"
@@ -5191,10 +6042,10 @@ function ReusableProfile({
5191
6042
  ] })
5192
6043
  }
5193
6044
  ),
5194
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { px: 4, pt: 5, pb: 2, children: [
5195
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", justify: "space-between", mb: 3, children: [
5196
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5197
- 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,
5198
6049
  {
5199
6050
  fontSize: "xs",
5200
6051
  fontWeight: "bold",
@@ -5204,8 +6055,8 @@ function ReusableProfile({
5204
6055
  children: "Pinned"
5205
6056
  }
5206
6057
  ),
5207
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
5208
- import_react35.Text,
6058
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
6059
+ import_react42.Text,
5209
6060
  {
5210
6061
  fontSize: "xs",
5211
6062
  color: quickNavHrefs.length >= maxQuickNavItems ? "orange.500" : "gray.400",
@@ -5218,8 +6069,8 @@ function ReusableProfile({
5218
6069
  }
5219
6070
  )
5220
6071
  ] }),
5221
- quickNavHrefs.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5222
- import_react35.Flex,
6072
+ quickNavHrefs.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6073
+ import_react42.Flex,
5223
6074
  {
5224
6075
  align: "center",
5225
6076
  justify: "center",
@@ -5228,18 +6079,18 @@ function ReusableProfile({
5228
6079
  borderWidth: "1px",
5229
6080
  borderStyle: "dashed",
5230
6081
  borderColor: "gray.200",
5231
- 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" })
5232
6083
  }
5233
- ) : /* @__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) => {
5234
6085
  const option = availableOptions.find((item) => item.key === href);
5235
6086
  if (!option) return null;
5236
6087
  const ItemIcon = option.Icon;
5237
6088
  const isFirst = idx === 0;
5238
6089
  const isLast = idx === quickNavHrefs.length - 1;
5239
6090
  const isReplacing = replacingIdx === idx;
5240
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5241
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
5242
- 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,
5243
6094
  {
5244
6095
  justify: "space-between",
5245
6096
  align: "center",
@@ -5251,9 +6102,9 @@ function ReusableProfile({
5251
6102
  borderColor: isReplacing ? "orange.200" : void 0,
5252
6103
  transition: "all 0.15s",
5253
6104
  children: [
5254
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
5255
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5256
- 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,
5257
6108
  {
5258
6109
  w: "36px",
5259
6110
  h: "36px",
@@ -5264,13 +6115,13 @@ function ReusableProfile({
5264
6115
  justifyContent: "center",
5265
6116
  color: "white",
5266
6117
  flexShrink: 0,
5267
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ItemIcon, { size: 15 })
6118
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ItemIcon, { size: 15 })
5268
6119
  }
5269
6120
  ),
5270
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
5271
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Text, { fontSize: "sm", fontWeight: "medium", children: option.title }),
5272
- isReplacing && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5273
- 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,
5274
6125
  {
5275
6126
  fontSize: "xs",
5276
6127
  color: "orange.500",
@@ -5280,9 +6131,9 @@ function ReusableProfile({
5280
6131
  )
5281
6132
  ] })
5282
6133
  ] }),
5283
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.HStack, { gap: 0.5, children: [
5284
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5285
- 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,
5286
6137
  {
5287
6138
  size: "xs",
5288
6139
  variant: "ghost",
@@ -5290,11 +6141,11 @@ function ReusableProfile({
5290
6141
  color: "gray.500",
5291
6142
  disabled: isFirst || isReplacing,
5292
6143
  onClick: () => moveNavItem(idx, -1),
5293
- 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 })
5294
6145
  }
5295
6146
  ),
5296
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5297
- import_react35.IconButton,
6147
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6148
+ import_react42.IconButton,
5298
6149
  {
5299
6150
  size: "xs",
5300
6151
  variant: "ghost",
@@ -5302,11 +6153,11 @@ function ReusableProfile({
5302
6153
  color: "gray.500",
5303
6154
  disabled: isLast || isReplacing,
5304
6155
  onClick: () => moveNavItem(idx, 1),
5305
- 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 })
5306
6157
  }
5307
6158
  ),
5308
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5309
- import_react35.IconButton,
6159
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6160
+ import_react42.IconButton,
5310
6161
  {
5311
6162
  size: "xs",
5312
6163
  variant: isReplacing ? "solid" : "ghost",
@@ -5315,11 +6166,11 @@ function ReusableProfile({
5315
6166
  color: isReplacing ? "white" : "gray.500",
5316
6167
  _hover: { bg: isReplacing ? "orange.500" : "gray.100" },
5317
6168
  onClick: () => setReplacingIdx(isReplacing ? null : idx),
5318
- 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 })
5319
6170
  }
5320
6171
  ),
5321
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5322
- import_react35.IconButton,
6172
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6173
+ import_react42.IconButton,
5323
6174
  {
5324
6175
  size: "xs",
5325
6176
  variant: "ghost",
@@ -5328,23 +6179,23 @@ function ReusableProfile({
5328
6179
  _hover: { bg: "red.50" },
5329
6180
  disabled: isReplacing,
5330
6181
  onClick: () => removeNavItem(href),
5331
- 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 })
5332
6183
  }
5333
6184
  )
5334
6185
  ] })
5335
6186
  ]
5336
6187
  }
5337
6188
  ),
5338
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, {})
6189
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {})
5339
6190
  ] }, href);
5340
6191
  }) })
5341
6192
  ] }),
5342
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, { mx: 4, my: 1 }),
5343
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { px: 4, pt: 4, pb: 10, children: [
5344
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", justify: "space-between", mb: 3, children: [
5345
- replacingIdx !== null ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { children: [
5346
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5347
- 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,
5348
6199
  {
5349
6200
  fontSize: "xs",
5350
6201
  fontWeight: "bold",
@@ -5354,15 +6205,15 @@ function ReusableProfile({
5354
6205
  children: "Select Replacement"
5355
6206
  }
5356
6207
  ),
5357
- /* @__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: [
5358
6209
  'for "',
5359
6210
  availableOptions.find(
5360
6211
  (item) => item.key === quickNavHrefs[replacingIdx]
5361
6212
  )?.title,
5362
6213
  '"'
5363
6214
  ] })
5364
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5365
- import_react35.Text,
6215
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6216
+ import_react42.Text,
5366
6217
  {
5367
6218
  fontSize: "xs",
5368
6219
  fontWeight: "bold",
@@ -5372,8 +6223,8 @@ function ReusableProfile({
5372
6223
  children: "Available"
5373
6224
  }
5374
6225
  ),
5375
- replacingIdx !== null && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5376
- import_react35.Button,
6226
+ replacingIdx !== null && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6227
+ import_react42.Button,
5377
6228
  {
5378
6229
  size: "xs",
5379
6230
  variant: "ghost",
@@ -5383,17 +6234,17 @@ function ReusableProfile({
5383
6234
  }
5384
6235
  )
5385
6236
  ] }),
5386
- 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) => {
5387
6238
  const ItemIcon = option.Icon;
5388
6239
  const isLast = idx === unpinnedOptions.length - 1;
5389
6240
  const isReplacingMode = replacingIdx !== null;
5390
6241
  const canAdd = quickNavHrefs.length < maxQuickNavItems;
5391
6242
  const actionEnabled = isReplacingMode || canAdd;
5392
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Box, { w: "full", children: [
5393
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { justify: "space-between", align: "center", py: 2.5, children: [
5394
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react35.Flex, { align: "center", gap: 3, children: [
5395
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5396
- 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,
5397
6248
  {
5398
6249
  w: "36px",
5399
6250
  h: "36px",
@@ -5404,11 +6255,11 @@ function ReusableProfile({
5404
6255
  justifyContent: "center",
5405
6256
  color: isReplacingMode ? "orange.500" : "gray.500",
5406
6257
  flexShrink: 0,
5407
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ItemIcon, { size: 15 })
6258
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ItemIcon, { size: 15 })
5408
6259
  }
5409
6260
  ),
5410
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5411
- import_react35.Text,
6261
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6262
+ import_react42.Text,
5412
6263
  {
5413
6264
  fontSize: "sm",
5414
6265
  fontWeight: "medium",
@@ -5417,8 +6268,8 @@ function ReusableProfile({
5417
6268
  }
5418
6269
  )
5419
6270
  ] }),
5420
- isReplacingMode ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5421
- import_react35.IconButton,
6271
+ isReplacingMode ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6272
+ import_react42.IconButton,
5422
6273
  {
5423
6274
  size: "xs",
5424
6275
  variant: "outline",
@@ -5427,10 +6278,10 @@ function ReusableProfile({
5427
6278
  color: "orange.500",
5428
6279
  _hover: { bg: "orange.50" },
5429
6280
  onClick: () => replaceNavItem(replacingIdx, option.key),
5430
- 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 })
5431
6282
  }
5432
- ) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5433
- import_react35.IconButton,
6283
+ ) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6284
+ import_react42.IconButton,
5434
6285
  {
5435
6286
  size: "xs",
5436
6287
  variant: "outline",
@@ -5440,19 +6291,19 @@ function ReusableProfile({
5440
6291
  color: canAdd ? "var(--chakra-colors-primary)" : "gray.300",
5441
6292
  _hover: { bg: canAdd ? "blue.50" : "transparent" },
5442
6293
  onClick: () => addNavItem(option.key),
5443
- 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 })
5444
6295
  }
5445
6296
  )
5446
6297
  ] }),
5447
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react35.Separator, {})
6298
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react42.Separator, {})
5448
6299
  ] }, option.key);
5449
6300
  }) })
5450
6301
  ] })
5451
6302
  ] });
5452
6303
  const subViewContent = profileView === "edit-account" ? editAccountContent : profileView === "change-password" ? changePasswordContent : profileView === "navbar-customize" ? navbarCustomizeContent : null;
5453
6304
  if (isDesktop) {
5454
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
5455
- import_react35.Flex,
6305
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
6306
+ import_react42.Flex,
5456
6307
  {
5457
6308
  maxW: "6xl",
5458
6309
  mx: "auto",
@@ -5462,8 +6313,8 @@ function ReusableProfile({
5462
6313
  p: { md: 6, lg: 8 },
5463
6314
  align: "start",
5464
6315
  children: [
5465
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5466
- import_react35.Box,
6316
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6317
+ import_react42.Box,
5467
6318
  {
5468
6319
  w: { md: "300px", lg: "340px" },
5469
6320
  flexShrink: 0,
@@ -5477,8 +6328,8 @@ function ReusableProfile({
5477
6328
  children: mainContent
5478
6329
  }
5479
6330
  ),
5480
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5481
- import_react35.Box,
6331
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6332
+ import_react42.Box,
5482
6333
  {
5483
6334
  flex: "1",
5484
6335
  minW: 0,
@@ -5488,8 +6339,8 @@ function ReusableProfile({
5488
6339
  overflow: "hidden",
5489
6340
  bg: "bg",
5490
6341
  minH: "540px",
5491
- children: subViewContent ?? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
5492
- import_react35.Flex,
6342
+ children: subViewContent ?? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
6343
+ import_react42.Flex,
5493
6344
  {
5494
6345
  direction: "column",
5495
6346
  align: "center",
@@ -5499,8 +6350,8 @@ function ReusableProfile({
5499
6350
  textAlign: "center",
5500
6351
  color: "gray.400",
5501
6352
  children: [
5502
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5503
- import_react35.Box,
6353
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
6354
+ import_react42.Box,
5504
6355
  {
5505
6356
  w: "56px",
5506
6357
  h: "56px",
@@ -5510,10 +6361,10 @@ function ReusableProfile({
5510
6361
  alignItems: "center",
5511
6362
  justifyContent: "center",
5512
6363
  mb: 4,
5513
- 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 })
5514
6365
  }
5515
6366
  ),
5516
- /* @__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." })
5517
6368
  ]
5518
6369
  }
5519
6370
  )
@@ -5523,13 +6374,15 @@ function ReusableProfile({
5523
6374
  }
5524
6375
  );
5525
6376
  }
5526
- 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 });
5527
6378
  }
5528
6379
  var UserProfile_default = ReusableProfile;
5529
6380
  // Annotate the CommonJS export names for ESM import in node:
5530
6381
  0 && (module.exports = {
5531
6382
  Beneficiary,
5532
6383
  BottomQuickActions,
6384
+ DocumentUploadCard,
6385
+ GetStarted,
5533
6386
  HealthDeclaration,
5534
6387
  LifePlanApplication1,
5535
6388
  LifePlanApplication2,
@@ -5540,10 +6393,13 @@ var UserProfile_default = ReusableProfile;
5540
6393
  OCR_STORAGE_KEY,
5541
6394
  SharedLifePlanApplication,
5542
6395
  UserProfile,
6396
+ clearOcrResult,
5543
6397
  createEmptyApplicationData,
5544
6398
  loadApplicationDataFromLocalStorage,
5545
6399
  markOcrApplied,
5546
6400
  readOcrResult,
5547
- saveApplicationDataToLocalStorage
6401
+ saveApplicationDataToLocalStorage,
6402
+ saveOcrResult,
6403
+ useOcr
5548
6404
  });
5549
6405
  //# sourceMappingURL=index.js.map