@splpi/estore-shared-components 0.0.6 → 7.0.1

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/NewSaleForm/LifePlanApplication1.tsx","../src/lib/theme/layout-tokens.ts","../src/lib/theme/standard-design-tokens.ts","../src/NewSaleForm/ui/FloatingLabelInput.tsx","../src/NewSaleForm/LifePlanApplication2.tsx","../src/NewSaleForm/LifePlanApplication3.tsx","../src/NewSaleForm/beneficiary.tsx","../src/NewSaleForm/ui/row-item.tsx","../src/NewSaleForm/HealthDeclaration.tsx","../src/NewSaleForm/LifePlanApplicationFormWrapper.tsx","../src/lib/applicationData.ts","../src/NewSaleForm/ui/info-card.tsx","../src/NewSaleForm/ui/input-card-accordion.tsx","../src/NewSaleForm/SharedLifePlanApplication.tsx","../src/NewSaleForm/data/lifePlanSteps.tsx","../src/NewSaleForm/confirmation.tsx","../src/NewSaleForm/data/checkBoxList.tsx","../src/NewSaleForm/ui/info-card-accordion.tsx","../src/NewSaleForm/ui/horizontal-stepper.tsx","../src/NewSaleForm/LifePlanApplicationStepWrapper.tsx","../src/Generic/BottomQuickActions.tsx","../src/lib/theme/brand-colors.ts","../src/Generic/NotifyInstall.tsx","../src/hooks/useNotifyInstall.ts","../src/UserProfile/UserProfile.tsx"],"sourcesContent":["export { default as LifePlanApplication1 } from \"./NewSaleForm/LifePlanApplication1\";\nexport { default as LifePlanApplication2 } from \"./NewSaleForm/LifePlanApplication2\";\nexport { default as LifePlanApplication3 } from \"./NewSaleForm/LifePlanApplication3\";\n\n// Note: the file in the repo uses a lowercase filename 'beneficiary.tsx'.\nexport { default as Beneficiary } from \"./NewSaleForm/beneficiary\";\nexport { default as HealthDeclaration } from \"./NewSaleForm/HealthDeclaration\";\nexport { default as LifePlanApplicationFormWrapper } from \"./NewSaleForm/LifePlanApplicationFormWrapper\";\nexport { default as LifePlanApplicationStepWrapper } from \"./NewSaleForm/LifePlanApplicationStepWrapper\";\nexport { default as SharedLifePlanApplication } from \"./NewSaleForm/SharedLifePlanApplication\";\nexport { default as BottomQuickActions } from \"./Generic/BottomQuickActions\";\n// export type { QuickAction, BottomQuickActionsProps } from \"./Generic/BottomQuickActions\";\nexport { default as NotifyInstall } from \"./Generic/NotifyInstall\";\n// export type { NotifyInstallProps } from \"./Generic/NotifyInstall\";\n\nexport { default as UserProfile } from \"./UserProfile/UserProfile\";\nexport type {\n ProfileUser,\n NavOptionDef,\n ReusableProfileProps,\n} from \"./UserProfile/UserProfile\";\n// export { default as FloatingLabelInput } from \"./NewSaleForm/ui/floating-label-input\";\nexport type {\n IPersonalInfo,\n IAddress,\n IEmployment,\n IBeneficiary,\n BeneficiaryClass,\n IHealthDeclaration,\n IApplicationData,\n ITransactionData,\n} from \"./types/planholder\";\nexport type { CartItem } from \"./types/cartItem\";\nexport {\n createEmptyApplicationData,\n loadApplicationDataFromLocalStorage,\n saveApplicationDataToLocalStorage,\n} from \"./lib/applicationData\";\n","\"use client\";\n\nimport {\n Field,\n Grid,\n Input,\n Select,\n createListCollection,\n} from \"@chakra-ui/react\";\nimport { useState, useEffect } from \"react\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\nimport type { IPersonalInfo } from \"../types/planholder\";\nimport { FloatingLabelInput } from \"./ui/FloatingLabelInput\";\n\ninterface LifePlanApplication1Props {\n initialData?: IPersonalInfo;\n onUpdate?: (personalInfo: IPersonalInfo, address?: any) => void;\n}\n\nconst idCollection = createListCollection({\n items: [\n { label: \"Passport\", value: \"passport\" },\n { label: \"Driver's License\", value: \"driver_license\" },\n { label: \"Philippine Identification Card\", value: \"national_id\" },\n ],\n});\n\nconst genderCollection = createListCollection({\n items: [\n { label: \"Male\", value: \"male\" },\n { label: \"Female\", value: \"female\" },\n ],\n});\n\nconst civilStatusCollection = createListCollection({\n items: [\n { label: \"Single\", value: \"single\" },\n { label: \"Married\", value: \"married\" },\n { label: \"Widowed\", value: \"widowed\" },\n { label: \"Divorced\", value: \"divorced\" },\n { label: \"Separated\", value: \"separated\" },\n { label: \"Annulled\", value: \"annulled\" },\n ],\n});\n\nconst LifePlanApplication1 = ({\n initialData,\n onUpdate,\n}: LifePlanApplication1Props) => {\n // const { runOCR } = useOcr();\n\n const [formData, setFormData] = useState<IPersonalInfo>({\n firstName: initialData?.firstName ?? \"Juan\",\n middleName: initialData?.middleName ?? \"Santos\",\n lastName: initialData?.lastName ?? \"Dela Cruz\",\n suffix: initialData?.suffix ?? \"\",\n birthDate: initialData?.birthDate ?? \"1990-05-15\",\n idType: initialData?.idType ?? \"national_id\",\n idNumber: initialData?.idNumber ?? \"1234-5678-9012\",\n height: initialData?.height ?? 5.7,\n weight: initialData?.weight ?? 154,\n gender: initialData?.gender ?? \"male\",\n civilStatus: initialData?.civilStatus ?? \"married\",\n nationality: initialData?.nationality ?? \"Filipino\",\n mobileNumber: initialData?.mobileNumber ?? \"0917-123-4567\",\n emailAddress: initialData?.emailAddress ?? \"juan.delacruz@example.com\",\n mailingAddress:\n initialData?.mailingAddress ??\n \"123 Mabini Street, Barangay San Antonio, Makati City\",\n landLineNumber: initialData?.landLineNumber ?? \"02-8123-4567\",\n });\n\n const updateFormData = (nextData: IPersonalInfo) => {\n setFormData(nextData);\n onUpdate?.(nextData);\n };\n\n // useEffect(() => {\n // runOCR();\n // }, []);\n\n useEffect(() => {\n const OCRValue =\n typeof window === \"undefined\" ? null : localStorage.getItem(\"ocrResult\");\n\n if (OCRValue != null) {\n try {\n const ocrData = JSON.parse(OCRValue);\n\n const [month, day, year] = ocrData.birthDate\n .split(\"/\")\n .map((part: string) => part.trim());\n const formattedBirthDate = `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}`;\n\n let mappedIdType = \"\";\n if (ocrData?.idType) {\n const normalizedIdType = ocrData.idType\n .toLowerCase()\n .replace(/\\s+/g, \"_\")\n .replace(/'/g, \"\");\n if (normalizedIdType.includes(\"passport\")) {\n mappedIdType = \"passport\";\n } else if (normalizedIdType.includes(\"driver\")) {\n mappedIdType = \"driver_license\";\n } else if (\n normalizedIdType.includes(\"national\") ||\n normalizedIdType.includes(\"id\")\n ) {\n mappedIdType = \"national_id\";\n }\n }\n\n const updatedData = {\n ...formData,\n firstName: ocrData?.firstName || \"\",\n lastName: ocrData?.lastName || \"\",\n middleName: ocrData?.middleName || \"\",\n birthDate: formattedBirthDate || \"\",\n idType: mappedIdType || \"\",\n };\n updateFormData(updatedData);\n } catch (e) {\n console.error(\"Failed to parse OCR value:\", e);\n localStorage.removeItem(\"ocrResult\");\n }\n }\n }, []);\n\n return (\n <Grid\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\n gap={STANDARD_SPACING.sm}\n w=\"full\"\n >\n <Field.Root>\n <Select.Root\n collection={idCollection}\n value={formData.idType ? [formData.idType] : []}\n onValueChange={(details) =>\n updateFormData({\n ...formData,\n idType: details.value[0] ?? \"\",\n })\n }\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select ID Type\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {idCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"idNumber\"\n type=\"text\"\n label=\"ID Number\"\n value={formData.idNumber || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, idNumber: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"lastName\"\n type=\"text\"\n label=\"Last Name\"\n value={formData.lastName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, lastName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"firstName\"\n type=\"text\"\n label=\"First Name\"\n value={formData.firstName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, firstName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"middleName\"\n type=\"text\"\n label=\"Middle Name\"\n value={formData.middleName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, middleName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"suffix\"\n type=\"text\"\n label=\"Suffix (Optional)\"\n value={formData.suffix || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, suffix: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Date of Birth</Field.Label>\n <Input\n id=\"dateOfBirth\"\n type=\"date\"\n value={formData.birthDate || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, birthDate: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Date of Naturalization</Field.Label>\n <Input id=\"dateOfNeutralization\" type=\"date\" />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"height\"\n label=\"Height (ft)\"\n value={formData.height ? String(formData.height) : \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n height: parseFloat(e.target.value),\n })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"weight\"\n label=\"Weight (lbs)\"\n value={formData.weight ? String(formData.weight) : \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n weight: parseFloat(e.target.value),\n })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n collection={genderCollection}\n value={formData.gender ? [formData.gender] : []}\n onValueChange={(details) =>\n updateFormData(\n details.value[0]\n ? { ...formData, gender: details.value[0] }\n : formData,\n )\n }\n >\n <Select.HiddenSelect id=\"gender\" />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Gender\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {genderCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n collection={civilStatusCollection}\n value={formData.civilStatus ? [formData.civilStatus] : []}\n onValueChange={(details) =>\n updateFormData({\n ...formData,\n ...(details.value[0] ? { civilStatus: details.value[0] } : {}),\n })\n }\n >\n <Select.HiddenSelect id=\"civilStatus\" />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Civil Status\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {civilStatusCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"nationality\"\n type=\"text\"\n label=\"Nationality\"\n value={formData.nationality || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, nationality: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"mobileNumber\"\n type=\"text\"\n label=\"Mobile Number\"\n value={formData.mobileNumber || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, mobileNumber: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"landlineNumber\"\n type=\"text\"\n label=\"Landline Number\"\n value={formData.landLineNumber || \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n landLineNumber: e.target.value,\n })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"email\"\n type=\"email\"\n label=\"Email Address\"\n value={formData.emailAddress || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, emailAddress: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"mailingAddress\"\n type=\"text\"\n label=\"Mailing Address\"\n value={formData.mailingAddress || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, mailingAddress: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"insurability\"\n type=\"text\"\n label=\"Insurability\"\n value=\"Insurable\"\n readOnly\n />\n </Field.Root>\n </Grid>\n );\n};\n\nexport default LifePlanApplication1;\n","export const RESPONSIVE_LAYOUT_TOKENS = {\n grid: {\n mobile: {\n columns: 4,\n gutter: \"16px\",\n marginMin: \"16px\",\n marginMax: \"32px\",\n minWidth: \"320px\",\n maxWidth: \"768px\",\n },\n tablet: {\n columns: 8,\n gutterMin: \"16px\",\n gutterMax: \"24px\",\n marginMin: \"40px\",\n marginMax: \"80px\",\n contentMinWidth: \"600px\",\n contentMaxWidth: \"940px\",\n },\n desktop: {\n columns: 12,\n gutterMin: \"16px\",\n gutterMax: \"32px\",\n marginMin: \"80px\",\n marginMax: \"120px\",\n contentMinWidth: \"1200px\",\n contentMaxWidth: \"1440px\",\n },\n },\n pagePadding: {\n base: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"64px\",\n },\n navigationOffset: {\n base: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"48px\",\n },\n sectionGap: {\n base: \"32px\",\n md: \"48px\",\n lg: \"64px\",\n },\n card: {\n gap: {\n base: \"16px\",\n md: \"24px\",\n },\n padding: {\n base: \"16px\",\n md: \"24px\",\n },\n mobilePadding: {\n base: \"16px\",\n md: \"20px\",\n },\n },\n form: {\n fieldGap: \"16px\",\n labelValueGapMin: \"8px\",\n labelValueGapMax: \"12px\",\n containerMinWidth: \"480px\",\n containerMaxWidth: \"720px\",\n },\n search: {\n width: {\n base: \"100%\",\n mdMin: \"240px\",\n mdMax: \"320px\",\n },\n heightMin: \"40px\",\n heightMax: \"48px\",\n },\n} as const;\n\nexport const PAGE_PADDING = RESPONSIVE_LAYOUT_TOKENS.pagePadding;\nexport const SECTION_GAP = RESPONSIVE_LAYOUT_TOKENS.sectionGap;\nexport const CARD_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.card;\nexport const FORM_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.form;\nexport const SEARCH_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.search;\n","import { RESPONSIVE_LAYOUT_TOKENS } from \"./layout-tokens\";\n\nexport const STANDARD_SPACING = {\n xs: \"8px\",\n sm: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"48px\",\n section: \"64px\",\n pageMobile: RESPONSIVE_LAYOUT_TOKENS.pagePadding.base,\n pageTablet: RESPONSIVE_LAYOUT_TOKENS.pagePadding.md,\n pageDesktop: RESPONSIVE_LAYOUT_TOKENS.pagePadding.lg,\n pageDesktopMax: RESPONSIVE_LAYOUT_TOKENS.pagePadding.xl,\n cardGap: RESPONSIVE_LAYOUT_TOKENS.card.gap.base,\n formFieldGap: RESPONSIVE_LAYOUT_TOKENS.form.fieldGap,\n labelValueGap: RESPONSIVE_LAYOUT_TOKENS.form.labelValueGapMin,\n} as const;\n\nexport const STANDARD_RADIUS = {\n sm: \"4px\",\n md: \"8px\",\n lg: \"12px\",\n xl: \"16px\",\n full: \"9999px\",\n circle: \"50%\",\n} as const;\n\nexport const STANDARD_SHADOWS = {\n level1: \"0px 2px 8px rgba(0,0,0,0.06)\",\n level2: \"0px 4px 12px rgba(0,0,0,0.08)\",\n level3: \"0px 8px 24px rgba(0,0,0,0.10)\",\n level4: \"0px 12px 32px rgba(0,0,0,0.12)\",\n} as const;\n\nexport const STANDARD_SIZES = {\n iconButton: {\n sm: \"32px\",\n md: \"40px\",\n lg: \"48px\",\n },\n button: {\n sm: {\n height: \"32px\",\n minWidth: \"72px\",\n fontSize: \"12px\",\n fontWeight: \"600\",\n lineHeight: \"20px\",\n letterSpacing: \"0.5px\",\n },\n md: {\n height: \"40px\",\n minWidth: \"96px\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n lineHeight: \"20px\",\n letterSpacing: \"0.5px\",\n },\n lg: {\n height: \"48px\",\n minWidth: \"112px\",\n fontSize: \"16px\",\n fontWeight: \"600\",\n lineHeight: \"24px\",\n letterSpacing: \"1px\",\n },\n xl: {\n height: \"56px\",\n minWidth: \"128px\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n lineHeight: \"28px\",\n letterSpacing: \"1px\",\n },\n },\n searchInput: {\n height: \"40px\",\n maxHeight: \"48px\",\n desktopMinWidth: \"240px\",\n desktopMaxWidth: \"320px\",\n iconSize: \"16px\",\n },\n table: {\n dragColumnWidth: \"32px\",\n selectionColumnWidth: \"40px\",\n actionsColumnWidth: \"44px\",\n rowActionWidth: \"32px\",\n headerHeight: \"40px\",\n },\n card: {\n sm: \"320px\",\n md: \"480px\",\n lg: \"800px\",\n mobilePadding: RESPONSIVE_LAYOUT_TOKENS.card.padding.base,\n desktopPadding: RESPONSIVE_LAYOUT_TOKENS.card.padding.md,\n },\n modal: {\n minWidth: \"320px\",\n maxWidth: \"480px\",\n minHeight: \"120px\",\n maxHeight: \"280px\",\n },\n reportImage: {\n logoWidth: \"250px\",\n logoHeight: \"150px\",\n },\n} as const;\n\nexport const STANDARD_BUTTON_STYLES = {\n sm: {\n h: STANDARD_SIZES.button.sm.height,\n minW: STANDARD_SIZES.button.sm.minWidth,\n px: STANDARD_SPACING.sm,\n borderRadius: STANDARD_RADIUS.md,\n fontSize: STANDARD_SIZES.button.sm.fontSize,\n fontWeight: STANDARD_SIZES.button.sm.fontWeight,\n lineHeight: STANDARD_SIZES.button.sm.lineHeight,\n },\n md: {\n h: STANDARD_SIZES.button.md.height,\n minW: STANDARD_SIZES.button.md.minWidth,\n px: STANDARD_SPACING.sm,\n borderRadius: STANDARD_RADIUS.md,\n fontSize: STANDARD_SIZES.button.md.fontSize,\n fontWeight: STANDARD_SIZES.button.md.fontWeight,\n lineHeight: STANDARD_SIZES.button.md.lineHeight,\n },\n} as const;\n\nexport const STANDARD_ICON_BUTTON_STYLES = {\n sm: {\n boxSize: STANDARD_SIZES.iconButton.sm,\n minW: STANDARD_SIZES.iconButton.sm,\n borderRadius: STANDARD_RADIUS.md,\n },\n md: {\n boxSize: STANDARD_SIZES.iconButton.md,\n minW: STANDARD_SIZES.iconButton.md,\n borderRadius: STANDARD_RADIUS.md,\n },\n} as const;\n","\"use client\";\r\n\r\nimport type { InputProps } from \"@chakra-ui/react\";\r\nimport {\r\n Box,\r\n Field,\r\n Input,\r\n defineStyle,\r\n useControllableState,\r\n} from \"@chakra-ui/react\";\r\nimport { useState } from \"react\";\r\n\r\nexport interface FloatingLabelInputProps extends InputProps {\r\n label: React.ReactNode;\r\n value?: string | undefined;\r\n defaultValue?: string | undefined;\r\n onValueChange?: ((value: string) => void) | undefined;\r\n}\r\n\r\nexport const FloatingLabelInput = (props: FloatingLabelInputProps) => {\r\n const { label, onValueChange, value, defaultValue = \"\", ...rest } = props;\r\n\r\n const [inputState, setInputState] = useControllableState({\r\n defaultValue,\r\n onChange: onValueChange,\r\n value,\r\n });\r\n\r\n const [focused, setFocused] = useState(false);\r\n const shouldFloat = inputState.length > 0 || focused;\r\n\r\n return (\r\n <Box pos=\"relative\" w=\"full\">\r\n <Input\r\n {...rest}\r\n h=\"12\"\r\n pt={shouldFloat ? \"5\" : \"2\"}\r\n pb=\"1\"\r\n fontSize=\"sm\"\r\n fontWeight=\"semibold\"\r\n borderWidth=\"1.5px\"\r\n borderRadius=\"lg\"\r\n /* hide native placeholder — the label acts as one */\r\n _placeholder={{ color: \"transparent\" }}\r\n onFocus={(e) => {\r\n props.onFocus?.(e);\r\n setFocused(true);\r\n }}\r\n onBlur={(e) => {\r\n props.onBlur?.(e);\r\n setFocused(false);\r\n }}\r\n onChange={(e) => {\r\n props.onChange?.(e);\r\n setInputState(e.target.value);\r\n }}\r\n value={inputState}\r\n data-float={shouldFloat || undefined}\r\n />\r\n\r\n <Field.Label css={floatingStyles} data-float={shouldFloat || undefined}>\r\n {label}\r\n </Field.Label>\r\n </Box>\r\n );\r\n};\r\n\r\nconst floatingStyles = defineStyle({\r\n /* placeholder state — vertically centred inside the input */\r\n pos: \"absolute\",\r\n top: \"50%\",\r\n transform: \"translateY(-50%)\",\r\n insetStart: \"3\",\r\n fontSize: \"sm\",\r\n fontWeight: \"normal\",\r\n color: \"gray.400\",\r\n bg: \"bg\",\r\n px: \"0.5\",\r\n pointerEvents: \"none\",\r\n transition:\r\n \"top 0.15s ease, font-size 0.15s ease, color 0.15s ease, transform 0.15s ease\",\r\n\r\n /* floated state — sits above the border, clearly a label */\r\n \"&[data-float]\": {\r\n top: \"-2\",\r\n transform: \"translateY(0)\",\r\n fontSize: \"xs\",\r\n fontWeight: \"medium\",\r\n color: \"gray.400\",\r\n insetStart: \"2.5\",\r\n },\r\n});\r\n","\"use client\";\r\nimport {\r\n VStack,\r\n SimpleGrid,\r\n Box,\r\n Text,\r\n Select,\r\n createListCollection,\r\n Portal,\r\n Field,\r\n} from \"@chakra-ui/react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\r\nimport type { IAddress } from \"../types/planholder\";\r\nimport { FloatingLabelInput } from \"./ui/FloatingLabelInput\";\r\n\r\nconst provinceOptions = [\r\n \"Abra\",\r\n \"Agusan del Norte\",\r\n \"Agusan del Sur\",\r\n \"Aklan\",\r\n \"Albay\",\r\n \"Antique\",\r\n \"Apayao\",\r\n \"Aurora\",\r\n \"Basilan\",\r\n \"Bataan\",\r\n \"Batanes\",\r\n \"Batangas\",\r\n \"Benguet\",\r\n \"Biliran\",\r\n \"Bohol\",\r\n \"Bukidnon\",\r\n \"Bulacan\",\r\n \"Cagayan\",\r\n \"Camarines Norte\",\r\n \"Camarines Sur\",\r\n \"Camiguin\",\r\n \"Capiz\",\r\n \"Catanduanes\",\r\n \"Cavite\",\r\n \"Cebu\",\r\n \"Cotabato\",\r\n \"Davao de Oro\",\r\n \"Davao del Norte\",\r\n \"Davao del Sur\",\r\n \"Davao Occidental\",\r\n \"Davao Oriental\",\r\n \"Dinagat Islands\",\r\n \"Eastern Samar\",\r\n \"Guimaras\",\r\n \"Ifugao\",\r\n \"Ilocos Norte\",\r\n \"Ilocos Sur\",\r\n \"Iloilo\",\r\n \"Isabela\",\r\n \"Kalinga\",\r\n \"La Union\",\r\n \"Laguna\",\r\n \"Lanao del Norte\",\r\n \"Lanao del Sur\",\r\n \"Leyte\",\r\n \"Maguindanao del Norte\",\r\n \"Maguindanao del Sur\",\r\n \"Marinduque\",\r\n \"Masbate\",\r\n \"Metro Manila\",\r\n \"Misamis Occidental\",\r\n \"Misamis Oriental\",\r\n \"Mountain Province\",\r\n \"Negros Occidental\",\r\n \"Negros Oriental\",\r\n \"Northern Samar\",\r\n \"Nueva Ecija\",\r\n \"Nueva Vizcaya\",\r\n \"Occidental Mindoro\",\r\n \"Oriental Mindoro\",\r\n \"Palawan\",\r\n \"Pampanga\",\r\n \"Pangasinan\",\r\n \"Quezon\",\r\n \"Quirino\",\r\n \"Rizal\",\r\n \"Romblon\",\r\n \"Samar\",\r\n \"Sarangani\",\r\n \"Siquijor\",\r\n \"Sorsogon\",\r\n \"South Cotabato\",\r\n \"Southern Leyte\",\r\n \"Sultan Kudarat\",\r\n \"Sulu\",\r\n \"Surigao del Norte\",\r\n \"Surigao del Sur\",\r\n \"Tarlac\",\r\n \"Tawi-Tawi\",\r\n \"Zambales\",\r\n \"Zamboanga del Norte\",\r\n \"Zamboanga del Sur\",\r\n \"Zamboanga Sibugay\",\r\n].map((prov) => ({ label: prov, value: prov }));\r\n\r\nconst cityOptions = [\r\n \"Quezon City\",\r\n \"Manila\",\r\n \"Davao City\",\r\n \"Caloocan\",\r\n \"Cebu City\",\r\n \"Zamboanga City\",\r\n \"Taguig\",\r\n \"Antipolo\",\r\n \"Pasig\",\r\n \"Valenzuela\",\r\n \"Las Piñas\",\r\n \"Makati\",\r\n \"San Jose del Monte\",\r\n \"Bacolod\",\r\n \"Muntinlupa\",\r\n \"Cagayan de Oro\",\r\n \"Dasmariñas\",\r\n \"Pasay\",\r\n \"General Santos\",\r\n \"Santa Rosa\",\r\n \"Iloilo City\",\r\n \"Parañaque\",\r\n \"Bacoor\",\r\n \"Mandaluyong\",\r\n \"Angeles\",\r\n \"Imus\",\r\n \"Lapu-Lapu\",\r\n \"Mandaue\",\r\n \"Baguio\",\r\n \"San Fernando\",\r\n \"Biñan\",\r\n \"Butuan\",\r\n \"San Pedro\",\r\n \"Navotas\",\r\n \"Tanauan\",\r\n \"Malabon\",\r\n \"Ormoc\",\r\n \"Legazpi\",\r\n \"Olongapo\",\r\n \"Cabuyao\",\r\n \"Tacloban\",\r\n \"Naga\",\r\n \"San Pablo\",\r\n \"Valencia\",\r\n \"Roxas\",\r\n \"Tarlac City\",\r\n \"Lucena\",\r\n \"Tagum\",\r\n \"Calamba\",\r\n \"Puerto Princesa\",\r\n \"Gapan\",\r\n \"Cotabato City\",\r\n \"Santiago\",\r\n \"Tuguegarao\",\r\n \"Bayawan\",\r\n \"Dipolog\",\r\n \"Pagadian\",\r\n \"Kidapawan\",\r\n \"Koronadal\",\r\n \"Surigao\",\r\n \"Dagupan\",\r\n \"Digos\",\r\n \"Candon\",\r\n \"Tabaco\",\r\n \"Baybay\",\r\n \"San Carlos\",\r\n \"Gingoog\",\r\n \"Sorsogon City\",\r\n \"Cauayan\",\r\n \"Science City of Muñoz\",\r\n \"Calapan\",\r\n \"San Jose\",\r\n \"Urdaneta\",\r\n \"Bayugan\",\r\n \"San Fernando (La Union)\",\r\n \"Bais\",\r\n \"Talisay\",\r\n \"Polomolok\",\r\n \"Panabo\",\r\n \"Danao\",\r\n \"Santa Maria\",\r\n \"Silay\",\r\n \"Cavite City\",\r\n \"Bogo\",\r\n \"Tabuk\",\r\n \"Trece Martires\",\r\n \"Ligao\",\r\n \"Canlaon\",\r\n \"Dumaguete\",\r\n \"Malaybalay\",\r\n \"Baclayon\",\r\n \"San Juan\",\r\n \"Laoag\",\r\n \"Mati\",\r\n \"Bangued\",\r\n \"Baler\",\r\n \"Vigan\",\r\n \"Puerto Galera\",\r\n \"Marawi\",\r\n \"Basilan City\",\r\n \"Isabela City\",\r\n \"Lamitan\",\r\n \"Jolo\",\r\n \"Bongao\",\r\n \"Ipil\",\r\n].map((city) => ({ label: city, value: city }));\r\n\r\nconst districtOptions = cityOptions;\r\nconst barangayOptions = cityOptions;\r\n\r\nconst provinceCollection = createListCollection({ items: provinceOptions });\r\nconst cityCollection = createListCollection({ items: cityOptions });\r\nconst districtCollection = createListCollection({ items: districtOptions });\r\nconst barangayCollection = createListCollection({ items: barangayOptions });\r\n\r\ninterface LifePlanApplication2Props {\r\n onAddressUpdate?: (address: IAddress) => void;\r\n}\r\n\r\nconst LifePlanApplication2 = ({\r\n onAddressUpdate,\r\n}: LifePlanApplication2Props) => {\r\n const OCRValue =\r\n typeof window === \"undefined\" ? null : localStorage.getItem(\"ocrResult\");\r\n // const { runOCR, data } = useOcr();\r\n const [lot, setLot] = useState(\"123\");\r\n const [street, setStreet] = useState(\"Mabini Street\");\r\n const [city, setCity] = useState(\"Makati\");\r\n const [province, setProvince] = useState(\"Metro Manila\");\r\n const [district, setDistrict] = useState(\"Taguig\");\r\n const [barangay, setBarangay] = useState(\"San Juan\");\r\n\r\n // const parseAddress = async (address: string) => {\r\n // if (!address) return;\r\n\r\n // try {\r\n // const result = await GeoApifyService.autocompleteAddress(address);\r\n\r\n // setLot(result.houseNumber ?? \"\");\r\n // setStreet(result.street ?? \"\");\r\n // setCity(result.city ?? \"\");\r\n // setDistrict(result.suburb ?? \"\");\r\n // setProvince(result.province ?? \"\");\r\n // } catch (error) {\r\n // console.error(\"Error parsing address:\", error);\r\n // }\r\n // };\r\n\r\n // useEffect(() => {\r\n // if (OCRValue != null) {\r\n // const ocrData = JSON.parse(OCRValue);\r\n // const address = ocrData.addressLine || \"\";\r\n // parseAddress(address);\r\n // } else if (data?.response) {\r\n // const address = data.response.addressLine || \"\";\r\n // parseAddress(address);\r\n // }\r\n // }, [OCRValue, data]);\r\n\r\n // useEffect(() => {\r\n // onAddressUpdate?.({\r\n // lot,\r\n // street,\r\n // barangay,\r\n // district,\r\n // city,\r\n // province,\r\n // });\r\n // }, [lot, street, barangay, city, province, district]);\r\n\r\n // useEffect(() => {\r\n // runOCR();\r\n // }, []);\r\n\r\n return (\r\n <Box\r\n // bg={BRAND_COLORS.white}\r\n // borderWidth=\"1px\"\r\n // borderColor={BRAND_COLORS.neutralBorder}\r\n // borderRadius={STANDARD_RADIUS.lg}\r\n // boxShadow={STANDARD_SHADOWS.level1}\r\n p={{ base: STANDARD_SPACING.sm, md: STANDARD_SPACING.md }}\r\n >\r\n <VStack align=\"stretch\" gap={STANDARD_SPACING.md}>\r\n {/* <Box>\r\n <Text\r\n color={BRAND_COLORS.neutralText}\r\n fontSize={{ base: \"18px\", md: \"20px\" }}\r\n fontWeight=\"700\"\r\n lineHeight=\"1.3\"\r\n >\r\n Residential Address\r\n </Text>\r\n </Box> */}\r\n\r\n <SimpleGrid columns={{ base: 1, md: 2 }} gap={STANDARD_SPACING.sm}>\r\n <Field.Root>\r\n <Select.Root\r\n value={[province]}\r\n onValueChange={(e) => setProvince(e.value[0] ?? \"\")}\r\n collection={provinceCollection}\r\n width=\"100%\"\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select Province\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {provinceOptions.map((item) => (\r\n <Select.Item item={item} key={item.value}>\r\n {item.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Select.Root\r\n value={[city]}\r\n onValueChange={(e) => setCity(e.value[0] ?? \"\")}\r\n collection={cityCollection}\r\n width=\"100%\"\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select City\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {cityOptions.map((item) => (\r\n <Select.Item item={item} key={item.value}>\r\n {item.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Select.Root\r\n value={[district]}\r\n onValueChange={(e) => setDistrict(e.value[0] ?? \"\")}\r\n collection={districtCollection}\r\n width=\"100%\"\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select District\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {districtOptions.map((item) => (\r\n <Select.Item item={item} key={item.value}>\r\n {item.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Select.Root\r\n value={[barangay]}\r\n onValueChange={(e) => setBarangay(e.value[0] ?? \"\")}\r\n collection={barangayCollection}\r\n width=\"100%\"\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select Barangay\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {barangayOptions.map((item) => (\r\n <Select.Item item={item} key={item.value}>\r\n {item.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"street\"\r\n label=\"Street\"\r\n value={street}\r\n onChange={(e) => setStreet(e.target.value)}\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"lotNumber\"\r\n label=\"Lot #\"\r\n value={lot}\r\n onChange={(e) => setLot(e.target.value)}\r\n />\r\n </Field.Root>\r\n </SimpleGrid>\r\n </VStack>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default LifePlanApplication2;\r\n","\"use client\";\n\nimport { Box, Field, SimpleGrid, Text, VStack } from \"@chakra-ui/react\";\n\nimport React from \"react\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\nimport type { IEmployment } from \"../types/planholder\";\nimport { FloatingLabelInput } from \"./ui/FloatingLabelInput\";\n\ninterface LifePlanApplication3Props {\n initialData?: IEmployment;\n onUpdate?: (employment: IEmployment) => void;\n}\n\nconst LifePlanApplication3 = ({\n initialData,\n onUpdate,\n}: LifePlanApplication3Props) => {\n const [formData, setFormData] = React.useState<IEmployment>({\n occupation: initialData?.occupation ?? \"Software Engineer\",\n employerName: initialData?.employerName ?? \"ABC Technologies Inc.\",\n employmentStatus: initialData?.employmentStatus ?? \"Regular\",\n officeAddress:\n initialData?.officeAddress ?? \"456 Ayala Avenue, Bel-Air, Makati City\",\n TIN: initialData?.TIN ?? \"123-456-789-000\",\n SSS: initialData?.SSS ?? \"34-1234567-8\",\n sourceOfIncome: initialData?.sourceOfIncome ?? \"Salary\",\n });\n\n const updateFormData = (nextData: IEmployment) => {\n setFormData(nextData);\n onUpdate?.(nextData);\n };\n\n return (\n <Box\n // bg={BRAND_COLORS.white}\n // borderWidth=\"1px\"\n // borderColor={BRAND_COLORS.neutralBorder}\n // borderRadius={STANDARD_RADIUS.lg}\n // boxShadow={STANDARD_SHADOWS.level1}\n p={{ base: STANDARD_SPACING.sm, md: STANDARD_SPACING.md }}\n >\n <VStack align=\"stretch\" gap={STANDARD_SPACING.md}>\n {/* <Box>\n <Text\n color={BRAND_COLORS.neutralText}\n fontSize={{ base: \"18px\", md: \"20px\" }}\n fontWeight=\"700\"\n lineHeight=\"1.3\"\n >\n Employment\n </Text>\n </Box> */}\n\n <SimpleGrid columns={{ base: 1, md: 2 }} gap={STANDARD_SPACING.sm}>\n <Field.Root>\n <FloatingLabelInput\n id=\"occupation\"\n label=\"Occupation\"\n value={formData.occupation ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, occupation: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"employerName\"\n label=\"Employer Name\"\n value={formData.employerName ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, employerName: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"employmentStatus\"\n label=\"Employment Status\"\n value={formData.employmentStatus ?? \"\"}\n onChange={(e) => {\n updateFormData({\n ...formData,\n employmentStatus: e.target.value,\n });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"officeAddress\"\n label=\"Office Address\"\n value={formData.officeAddress ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, officeAddress: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"tin\"\n label=\"TIN\"\n value={formData.TIN ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, TIN: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"sssGsis\"\n label=\"SSS\"\n value={formData.SSS ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, SSS: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"otherSourceOfFund\"\n label=\"Other Source of Fund\"\n value={formData.sourceOfIncome ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, sourceOfIncome: e.target.value });\n }}\n />\n </Field.Root>\n </SimpleGrid>\n </VStack>\n </Box>\n );\n};\n\nexport default LifePlanApplication3;\n","import {\r\n VStack,\r\n Box,\r\n Grid,\r\n CloseButton,\r\n Dialog,\r\n HStack,\r\n Portal,\r\n createListCollection,\r\n Select,\r\n Field,\r\n Flex,\r\n Input,\r\n Stack,\r\n IconButton,\r\n useBreakpointValue,\r\n Button,\r\n} from \"@chakra-ui/react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { FaRegTrashAlt } from \"react-icons/fa\";\r\nimport { LuPencil } from \"react-icons/lu\";\r\nimport {\r\n Body,\r\n H4,\r\n DeleteSolidButton,\r\n SecondaryMdButton,\r\n PrimaryMdButton,\r\n} from \"st-peter-ui\";\r\nimport RowItem from \"./ui/row-item\";\r\nimport type { IBeneficiary } from \"../types/planholder\";\r\nimport { FloatingLabelInput } from \"./ui/FloatingLabelInput\";\r\n\r\n// import {\r\n// createEmptyApplicationData,\r\n// loadApplicationDataFromLocalStorage,\r\n// saveApplicationDataToLocalStorage,\r\n// } from \"@/lib/utils/applicationDataFactory\";\r\n\r\nconst beneficiaryTypes = createListCollection({\r\n items: [\r\n { label: \"Principal\", value: \"principal\" },\r\n { label: \"Contingent\", value: \"contingent\" },\r\n ],\r\n});\r\nconst relationshipTypes = createListCollection({\r\n items: [\r\n { label: \"Spouse\", value: \"Spouse\" },\r\n { label: \"Child\", value: \"Child\" },\r\n { label: \"Parent\", value: \"Parent\" },\r\n { label: \"Sibling\", value: \"Sibling\" },\r\n { label: \"Friend\", value: \"Friend\" },\r\n ],\r\n});\r\n\r\ntype SelectedBeneficiary = {\r\n type: \"principal\" | \"contingent\";\r\n index: number;\r\n};\r\n\r\nconst ReviewRows = ({\r\n rows,\r\n}: {\r\n rows: { label: string; value?: React.ReactNode }[];\r\n}) => (\r\n <VStack align=\"stretch\" gap={1}>\r\n {rows.map((row) => (\r\n <RowItem key={row.label} label={row.label} value={row.value} />\r\n ))}\r\n </VStack>\r\n);\r\n\r\ninterface BeneficiaryProps {\r\n onUpdate?: (\r\n principal: IBeneficiary | undefined,\r\n contingent: IBeneficiary | undefined,\r\n all: IBeneficiary[],\r\n ) => void;\r\n}\r\n\r\nconst Beneficiary = ({ onUpdate }: BeneficiaryProps) => {\r\n const isMobile = useBreakpointValue({ base: true, md: false });\r\n\r\n const [principalBeneficiaries, setPrincipalBeneficiaries] = useState<\r\n IBeneficiary[]\r\n >([]);\r\n\r\n const [contingentBeneficiaries, setContingentBeneficiaries] = useState<\r\n IBeneficiary[]\r\n >([]);\r\n\r\n const [editDialogOpen, setEditDialogOpen] = useState(false);\r\n const [selectedBeneficiary, setSelectedBeneficiary] =\r\n useState<SelectedBeneficiary | null>(null);\r\n\r\n const [formBeneficiary, setFormBeneficiary] = useState<IBeneficiary>({\r\n firstName: \"\",\r\n middleInitial: \"\",\r\n lastName: \"\",\r\n birthDate: \"\",\r\n address: \"\",\r\n relationship: \"\",\r\n beneficiaryClass: \"principal\",\r\n });\r\n\r\n const [addDialogOpen, setAddDialogOpen] = useState(false);\r\n const [addFormBeneficiary, setAddFormBeneficiary] = useState<IBeneficiary>({\r\n firstName: \"\",\r\n middleInitial: \"\",\r\n lastName: \"\",\r\n birthDate: \"\",\r\n address: \"\",\r\n relationship: \"\",\r\n beneficiaryClass: \"principal\",\r\n });\r\n\r\n // const syncBeneficiaries = (\r\n // principal: IBeneficiary[],\r\n // contingent: IBeneficiary[],\r\n // ) => {\r\n // const allBeneficiaries = [...principal, ...contingent];\r\n\r\n // onUpdate?.(\r\n // principal.length > 0 ? principal[0] : undefined,\r\n // contingent.length > 0 ? contingent[0] : undefined,\r\n // allBeneficiaries,\r\n // );\r\n\r\n // const currentData =\r\n // loadApplicationDataFromLocalStorage() ?? createEmptyApplicationData();\r\n\r\n // saveApplicationDataToLocalStorage({\r\n // ...currentData,\r\n // beneficiaries: allBeneficiaries,\r\n // principalBeneficiary: principal.length > 0 ? principal[0] : undefined,\r\n // contingentBeneficiary: contingent.length > 0 ? contingent[0] : undefined,\r\n // });\r\n // };\r\n\r\n // useEffect(() => {\r\n // const timeoutId = window.setTimeout(() => {\r\n // const currentData = loadApplicationDataFromLocalStorage();\r\n // if (!currentData) return;\r\n\r\n // const storedBeneficiaries = currentData.beneficiaries ?? [];\r\n\r\n // let principalFromStorage = storedBeneficiaries.filter(\r\n // (beneficiary) => beneficiary.beneficiaryClass === \"principal\",\r\n // );\r\n // let contingentFromStorage = storedBeneficiaries.filter(\r\n // (beneficiary) => beneficiary.beneficiaryClass === \"contingent\",\r\n // );\r\n\r\n // if (storedBeneficiaries.length === 0) {\r\n // if (currentData.principalBeneficiary) {\r\n // principalFromStorage = [\r\n // {\r\n // ...currentData.principalBeneficiary,\r\n // beneficiaryClass:\r\n // currentData.principalBeneficiary.beneficiaryClass ||\r\n // \"principal\",\r\n // },\r\n // ];\r\n // }\r\n\r\n // if (currentData.contingentBeneficiary) {\r\n // contingentFromStorage = [\r\n // {\r\n // ...currentData.contingentBeneficiary,\r\n // beneficiaryClass:\r\n // currentData.contingentBeneficiary.beneficiaryClass ||\r\n // \"contingent\",\r\n // },\r\n // ];\r\n // }\r\n // }\r\n\r\n // setPrincipalBeneficiaries(principalFromStorage);\r\n // setContingentBeneficiaries(contingentFromStorage);\r\n\r\n // onUpdate?.(\r\n // principalFromStorage.length > 0 ? principalFromStorage[0] : undefined,\r\n // contingentFromStorage.length > 0 ? contingentFromStorage[0] : undefined,\r\n // [...principalFromStorage, ...contingentFromStorage],\r\n // );\r\n // }, 0);\r\n\r\n // return () => window.clearTimeout(timeoutId);\r\n // }, [onUpdate]);\r\n\r\n const handleSaveAddBeneficiary = () => {\r\n if (\r\n !addFormBeneficiary.firstName ||\r\n !addFormBeneficiary.lastName ||\r\n !addFormBeneficiary.birthDate ||\r\n !addFormBeneficiary.relationship ||\r\n !addFormBeneficiary.address\r\n ) {\r\n alert(\"Please fill in all required fields\");\r\n return;\r\n }\r\n\r\n let newPrincipal = principalBeneficiaries;\r\n let newContingent = contingentBeneficiaries;\r\n\r\n if (addFormBeneficiary.beneficiaryClass === \"principal\") {\r\n newPrincipal = [...principalBeneficiaries, addFormBeneficiary];\r\n setPrincipalBeneficiaries(newPrincipal);\r\n } else {\r\n newContingent = [...contingentBeneficiaries, addFormBeneficiary];\r\n setContingentBeneficiaries(newContingent);\r\n }\r\n\r\n setAddFormBeneficiary({\r\n firstName: \"\",\r\n middleInitial: \"\",\r\n lastName: \"\",\r\n birthDate: \"\",\r\n relationship: \"\",\r\n address: \"\",\r\n beneficiaryClass: \"principal\",\r\n });\r\n setAddDialogOpen(false);\r\n console.log(\"Beneficiary added:\", addFormBeneficiary);\r\n\r\n // syncBeneficiaries(newPrincipal, newContingent);\r\n };\r\n\r\n const formatFullName = (beneficiary: IBeneficiary) => {\r\n return [\r\n beneficiary.firstName,\r\n beneficiary.middleInitial,\r\n beneficiary.lastName,\r\n ]\r\n .filter((namePart) => namePart.trim().length > 0)\r\n .join(\" \");\r\n };\r\n\r\n const formatDateDisplay = (rawDate: string) => {\r\n if (!rawDate) return \"N/A\";\r\n const date = new Date(rawDate);\r\n if (Number.isNaN(date.getTime())) return rawDate;\r\n return date.toLocaleDateString(\"en-US\", {\r\n month: \"short\",\r\n day: \"2-digit\",\r\n year: \"numeric\",\r\n });\r\n };\r\n\r\n const handleOpenEdit = (\r\n type: \"principal\" | \"contingent\",\r\n index: number,\r\n beneficiary: IBeneficiary,\r\n ) => {\r\n setSelectedBeneficiary({ type, index });\r\n setFormBeneficiary({ ...beneficiary });\r\n setEditDialogOpen(true);\r\n };\r\n\r\n function handleDeleteBeneficiary(arg0: string, idx: number): void {\r\n throw new Error(\"Function not implemented.\");\r\n }\r\n\r\n const handleSaveEdit = () => {\r\n if (!selectedBeneficiary) return;\r\n\r\n let updatedPrincipal = principalBeneficiaries;\r\n let updatedContingent = contingentBeneficiaries;\r\n\r\n if (selectedBeneficiary.type === \"principal\") {\r\n updatedPrincipal = principalBeneficiaries.map((beneficiary, index) =>\r\n index === selectedBeneficiary.index\r\n ? { ...formBeneficiary }\r\n : beneficiary,\r\n );\r\n setPrincipalBeneficiaries(updatedPrincipal);\r\n } else {\r\n updatedContingent = contingentBeneficiaries.map((beneficiary, index) =>\r\n index === selectedBeneficiary.index\r\n ? { ...formBeneficiary }\r\n : beneficiary,\r\n );\r\n setContingentBeneficiaries(updatedContingent);\r\n }\r\n\r\n // syncBeneficiaries(updatedPrincipal, updatedContingent);\r\n\r\n setEditDialogOpen(false);\r\n setSelectedBeneficiary(null);\r\n };\r\n\r\n // const handleDeleteBeneficiary = (\r\n // type: \"principal\" | \"contingent\",\r\n // index: number,\r\n // ) => {\r\n // let updatedPrincipal = principalBeneficiaries;\r\n // let updatedContingent = contingentBeneficiaries;\r\n\r\n // if (type === \"principal\") {\r\n // updatedPrincipal = principalBeneficiaries.filter(\r\n // (_, beneficiaryIndex) => beneficiaryIndex !== index,\r\n // );\r\n // setPrincipalBeneficiaries(updatedPrincipal);\r\n // } else {\r\n // updatedContingent = contingentBeneficiaries.filter(\r\n // (_, beneficiaryIndex) => beneficiaryIndex !== index,\r\n // );\r\n // setContingentBeneficiaries(updatedContingent);\r\n // }\r\n\r\n // // syncBeneficiaries(updatedPrincipal, updatedContingent);\r\n // };\r\n\r\n return (\r\n <>\r\n <Flex\r\n justify=\"space-between\"\r\n align={{ base: \"flex-start\", md: \"center\" }}\r\n direction={{ base: \"column\", md: \"row\" }}\r\n gap={4}\r\n mb={5}\r\n >\r\n <Box>\r\n <H4>Add Your Beneficiaries</H4>\r\n <Body color=\"gray.600\">\r\n Protect your loved ones by adding beneficiaries to your plan.\r\n </Body>\r\n </Box>\r\n <Dialog.Root\r\n placement=\"center\"\r\n motionPreset=\"slide-in-bottom\"\r\n size={{ mdDown: \"full\", md: \"lg\" }}\r\n open={addDialogOpen}\r\n onOpenChange={(details) => setAddDialogOpen(details.open)}\r\n >\r\n <Dialog.Trigger asChild>\r\n <Button w={{ base: \"full\", md: \"auto\" }}>Add Beneficiary</Button>\r\n </Dialog.Trigger>\r\n <Portal>\r\n <Dialog.Backdrop />\r\n <Dialog.Positioner>\r\n <Dialog.Content mx={{ base: 3, md: 0 }}>\r\n <Dialog.Header>\r\n <Dialog.Title>Add Beneficiary</Dialog.Title>\r\n </Dialog.Header>\r\n <Dialog.Body>\r\n <VStack gap={5} w=\"full\" align=\"stretch\">\r\n {/* Row 1: Selects */}\r\n <Grid\r\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\r\n gap={4}\r\n w=\"full\"\r\n >\r\n <Select.Root\r\n collection={beneficiaryTypes}\r\n size=\"md\"\r\n value={\r\n addFormBeneficiary.beneficiaryClass\r\n ? [addFormBeneficiary.beneficiaryClass]\r\n : []\r\n }\r\n onValueChange={(details) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n beneficiaryClass:\r\n (details.value?.[0] as\r\n | \"principal\"\r\n | \"contingent\") ?? \"principal\",\r\n }))\r\n }\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select beneficiary type\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {beneficiaryTypes.items.map((beneficiaryType) => (\r\n <Select.Item\r\n item={beneficiaryType}\r\n key={beneficiaryType.value}\r\n >\r\n {beneficiaryType.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Select.Root>\r\n\r\n <Select.Root\r\n collection={relationshipTypes}\r\n size=\"md\"\r\n value={\r\n addFormBeneficiary.relationship\r\n ? [addFormBeneficiary.relationship]\r\n : []\r\n }\r\n onValueChange={(details) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n relationship: details.value?.[0] ?? \"\",\r\n }))\r\n }\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select relationship\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {relationshipTypes.items.map((relationshipType) => (\r\n <Select.Item\r\n item={relationshipType}\r\n key={relationshipType.value}\r\n >\r\n {relationshipType.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Select.Root>\r\n </Grid>\r\n\r\n {/* Row 2: Name Fields */}\r\n <Grid\r\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\r\n gap={4}\r\n w=\"full\"\r\n >\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"firstName\"\r\n type=\"text\"\r\n label=\"First Name\"\r\n value={addFormBeneficiary.firstName}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n firstName: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>\r\n This field is required\r\n </Field.ErrorText>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"lastName\"\r\n type=\"text\"\r\n label=\"Last Name\"\r\n value={addFormBeneficiary.lastName}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n lastName: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>\r\n This field is required\r\n </Field.ErrorText>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"middleInitial\"\r\n type=\"text\"\r\n label=\"Middle Initial\"\r\n value={addFormBeneficiary.middleInitial}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n middleInitial: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>\r\n This field is required\r\n </Field.ErrorText>\r\n </Field.Root>\r\n </Grid>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"address\"\r\n type=\"text\"\r\n label=\"Address\"\r\n value={addFormBeneficiary.address}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n address: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>This field is required</Field.ErrorText>\r\n </Field.Root>\r\n\r\n {/* Row 3: DOB */}\r\n <Field.Root w={{ base: \"full\", md: \"300px\" }}>\r\n <Field.Label>Date of Birth</Field.Label>\r\n <Input\r\n id=\"dateOfBirth\"\r\n type=\"date\"\r\n value={addFormBeneficiary.birthDate}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n birthDate: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>This field is required</Field.ErrorText>\r\n </Field.Root>\r\n </VStack>\r\n </Dialog.Body>\r\n <Dialog.Footer>\r\n <Stack\r\n display=\"flex\"\r\n justifyContent=\"flex-end\"\r\n direction={{ base: \"row\", sm: \"row\" }}\r\n w={{ base: \"full\", sm: \"auto\" }}\r\n gap={3}\r\n >\r\n <Dialog.ActionTrigger asChild>\r\n <SecondaryMdButton>Cancel</SecondaryMdButton>\r\n </Dialog.ActionTrigger>\r\n <PrimaryMdButton onClick={handleSaveAddBeneficiary}>\r\n Save\r\n </PrimaryMdButton>\r\n </Stack>\r\n </Dialog.Footer>\r\n <Dialog.CloseTrigger asChild>\r\n <CloseButton size=\"sm\" />\r\n </Dialog.CloseTrigger>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n </Flex>\r\n\r\n <HStack justify=\"space-between\" align=\"center\" w=\"full\" mb={4}>\r\n <Body fontWeight=\"bold\">Principal Beneficiaries</Body>\r\n </HStack>\r\n\r\n {principalBeneficiaries.length === 0 ? (\r\n <Box\r\n bg=\"gray.50\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n rounded=\"xl\"\r\n px={4}\r\n py={8}\r\n textAlign=\"center\"\r\n mb={4}\r\n >\r\n <Body color=\"gray.500\">No principal beneficiaries added yet</Body>\r\n </Box>\r\n ) : (\r\n <VStack align=\"stretch\" gap={3} mb={4}>\r\n {principalBeneficiaries.map((beneficiary, idx) => (\r\n <Box\r\n key={idx}\r\n bg=\"white\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n rounded=\"xl\"\r\n px={{ base: 3, md: 4 }}\r\n py={{ base: 3, md: 4 }}\r\n >\r\n <Flex justify=\"space-between\" align=\"start\" gap={3}>\r\n <Box\r\n flex=\"1\"\r\n cursor=\"pointer\"\r\n onClick={() => handleOpenEdit(\"principal\", idx, beneficiary)}\r\n >\r\n <Body fontWeight=\"semibold\" mb={1}>\r\n {formatFullName(beneficiary)}\r\n </Body>\r\n <ReviewRows\r\n rows={[\r\n {\r\n label: \"Relationship\",\r\n value: beneficiary.relationship,\r\n },\r\n {\r\n label: \"Date of Birth\",\r\n value: formatDateDisplay(beneficiary.birthDate),\r\n },\r\n {\r\n label: \"Address\",\r\n value: beneficiary.address,\r\n },\r\n ]}\r\n />\r\n </Box>\r\n\r\n <HStack gap={2} mt={{ base: 1, md: \"auto\" }}>\r\n <IconButton\r\n aria-label=\"Edit beneficiary\"\r\n variant=\"ghost\"\r\n color=\"green.600\"\r\n onClick={() =>\r\n handleOpenEdit(\"principal\", idx, beneficiary)\r\n }\r\n >\r\n <LuPencil />\r\n </IconButton>\r\n {isMobile ? (\r\n <IconButton\r\n aria-label=\"Delete beneficiary\"\r\n variant=\"ghost\"\r\n color=\"red.500\"\r\n onClick={() => handleDeleteBeneficiary(\"principal\", idx)}\r\n >\r\n <FaRegTrashAlt />\r\n </IconButton>\r\n ) : (\r\n <DeleteSolidButton\r\n onClick={() => handleDeleteBeneficiary(\"principal\", idx)}\r\n />\r\n )}\r\n </HStack>\r\n </Flex>\r\n </Box>\r\n ))}\r\n </VStack>\r\n )}\r\n <HStack justify=\"space-between\" align=\"center\" w=\"full\" mb={4}>\r\n <Body fontWeight=\"bold\">Contingent Beneficiaries</Body>\r\n </HStack>\r\n {contingentBeneficiaries.length === 0 ? (\r\n <Box\r\n bg=\"gray.50\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n rounded=\"xl\"\r\n px={4}\r\n py={8}\r\n textAlign=\"center\"\r\n mb={4}\r\n >\r\n <Body color=\"gray.500\">No contingent beneficiaries added yet</Body>\r\n </Box>\r\n ) : (\r\n <VStack align=\"stretch\" gap={3} mb={4}>\r\n {contingentBeneficiaries.map((beneficiary, idx) => (\r\n <Box\r\n key={idx}\r\n bg=\"white\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n rounded=\"xl\"\r\n px={{ base: 3, md: 4 }}\r\n py={{ base: 3, md: 4 }}\r\n >\r\n <Flex justify=\"space-between\" align=\"start\" gap={3}>\r\n <Box\r\n flex=\"1\"\r\n cursor=\"pointer\"\r\n onClick={() => handleOpenEdit(\"contingent\", idx, beneficiary)}\r\n >\r\n <Body fontWeight=\"semibold\" mb={1}>\r\n {formatFullName(beneficiary)}\r\n </Body>\r\n <ReviewRows\r\n rows={[\r\n {\r\n label: \"Relationship\",\r\n value: beneficiary.relationship,\r\n },\r\n {\r\n label: \"Date of Birth\",\r\n value: formatDateDisplay(beneficiary.birthDate),\r\n },\r\n {\r\n label: \"Address\",\r\n value: beneficiary.address,\r\n },\r\n ]}\r\n />\r\n </Box>\r\n\r\n <HStack gap={2} mt={{ base: 1, md: \"auto\" }}>\r\n <IconButton\r\n aria-label=\"Edit beneficiary\"\r\n variant=\"ghost\"\r\n color=\"green.600\"\r\n onClick={() =>\r\n handleOpenEdit(\"contingent\", idx, beneficiary)\r\n }\r\n >\r\n <LuPencil />\r\n </IconButton>\r\n {isMobile ? (\r\n <IconButton\r\n aria-label=\"Delete beneficiary\"\r\n variant=\"ghost\"\r\n color=\"red.500\"\r\n onClick={() => handleDeleteBeneficiary(\"contingent\", idx)}\r\n >\r\n <FaRegTrashAlt />\r\n </IconButton>\r\n ) : (\r\n <DeleteSolidButton\r\n onClick={() => handleDeleteBeneficiary(\"contingent\", idx)}\r\n />\r\n )}\r\n </HStack>\r\n </Flex>\r\n </Box>\r\n ))}\r\n </VStack>\r\n )}\r\n\r\n <Dialog.Root\r\n placement=\"center\"\r\n open={editDialogOpen}\r\n onOpenChange={(details) => setEditDialogOpen(details.open)}\r\n size={{ mdDown: \"full\", md: \"xl\" }}\r\n >\r\n <Portal>\r\n <Dialog.Backdrop />\r\n <Dialog.Positioner>\r\n <Dialog.Content>\r\n <Dialog.Header>\r\n <Dialog.Title>Edit Beneficiary</Dialog.Title>\r\n </Dialog.Header>\r\n <Dialog.Body>\r\n <VStack align=\"stretch\" gap={4}>\r\n <Grid\r\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\r\n gap={4}\r\n >\r\n <Field.Root>\r\n <Field.Label>First Name</Field.Label>\r\n <Input\r\n value={formBeneficiary.firstName}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n firstName: e.target.value,\r\n }))\r\n }\r\n placeholder=\"Enter first name\"\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Middle Initial</Field.Label>\r\n <Input\r\n value={formBeneficiary.middleInitial}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n middleInitial: e.target.value,\r\n }))\r\n }\r\n placeholder=\"Enter middle initial\"\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Last Name</Field.Label>\r\n <Input\r\n value={formBeneficiary.lastName}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n lastName: e.target.value,\r\n }))\r\n }\r\n placeholder=\"Enter last name\"\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Birthdate</Field.Label>\r\n <Input\r\n type=\"date\"\r\n value={formBeneficiary.birthDate}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n birthDate: e.target.value,\r\n }))\r\n }\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Relationship</Field.Label>\r\n <Select.Root\r\n collection={relationshipTypes}\r\n value={\r\n formBeneficiary.relationship\r\n ? [formBeneficiary.relationship]\r\n : []\r\n }\r\n onValueChange={(details) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n relationship: details.value?.[0] ?? \"\",\r\n }))\r\n }\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select relationship\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {relationshipTypes.items.map((relationshipType) => (\r\n <Select.Item\r\n item={relationshipType}\r\n key={relationshipType.value}\r\n >\r\n {relationshipType.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Address</Field.Label>\r\n <Input\r\n value={formBeneficiary.address}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n address: e.target.value,\r\n }))\r\n }\r\n placeholder=\"Enter address\"\r\n />\r\n </Field.Root>\r\n </Grid>\r\n </VStack>\r\n </Dialog.Body>\r\n <Dialog.Footer>\r\n <Dialog.ActionTrigger asChild>\r\n <SecondaryMdButton>Cancel</SecondaryMdButton>\r\n </Dialog.ActionTrigger>\r\n <PrimaryMdButton onClick={handleSaveEdit}>Save</PrimaryMdButton>\r\n </Dialog.Footer>\r\n <Dialog.CloseTrigger asChild>\r\n <CloseButton size=\"sm\" />\r\n </Dialog.CloseTrigger>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n </>\r\n );\r\n};\r\n\r\nexport default Beneficiary;\r\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\n\nexport const RowItem = ({\n label,\n value,\n}: {\n label: string;\n value?: React.ReactNode;\n}) => (\n <Flex align=\"center\" py={1.5} fontSize=\"sm\">\n <Text color=\"gray.500\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n <Box\n flex=\"1\"\n mx={3}\n borderBottom=\"1px dashed\"\n borderColor=\"gray.300\"\n transform=\"translateY(2px)\"\n />\n <Text fontWeight=\"medium\" textAlign=\"right\" whiteSpace=\"nowrap\">\n {value ?? \"-\"}\n </Text>\n </Flex>\n);\n\nexport default RowItem;\n","import { useState, useEffect } from \"react\";\r\nimport {\r\n VStack,\r\n Box,\r\n Accordion,\r\n Span,\r\n Checkbox,\r\n Separator,\r\n} from \"@chakra-ui/react\";\r\nimport { Body, H4 } from \"st-peter-ui\";\r\nimport { UploadFile } from \"osp-chakra-reusable-components\";\r\n// import {\r\n// loadApplicationDataFromLocalStorage,\r\n// saveApplicationDataToLocalStorage,\r\n// createEmptyApplicationData,\r\n// } from \"@/lib/utils/applicationDataFactory\";\r\n\r\nconst HealthDeclaration = () => {\r\n const [value, setValue] = useState([\"\"]);\r\n const [healthDeclarationValues, setHealthDeclarationValues] = useState({\r\n healthDeclaration1: false,\r\n healthDeclaration2: false,\r\n healthDeclaration3: false,\r\n healthDeclaration4: false,\r\n });\r\n\r\n // Load health declaration values from localStorage on mount\r\n // useEffect(() => {\r\n // let appData = loadApplicationDataFromLocalStorage();\r\n\r\n // // If no data exists, create empty application data\r\n // if (!appData) {\r\n // appData = createEmptyApplicationData();\r\n // saveApplicationDataToLocalStorage(appData);\r\n // }\r\n\r\n // if (appData && appData.healthDeclaration) {\r\n // setHealthDeclarationValues(appData.healthDeclaration);\r\n // }\r\n // }, []);\r\n\r\n // Save health declaration values to localStorage only when component unmounts\r\n // This ensures data is saved once when user navigates away from this step\r\n // useEffect(() => {\r\n // return () => {\r\n // const appData = loadApplicationDataFromLocalStorage();\r\n // if (appData) {\r\n // appData.healthDeclaration = healthDeclarationValues;\r\n // saveApplicationDataToLocalStorage(appData);\r\n // console.log(\r\n // \"Health Declaration saved to localStorage\",\r\n // healthDeclarationValues,\r\n // );\r\n // }\r\n // };\r\n // }, [healthDeclarationValues]);\r\n const items = [\r\n {\r\n value: \"first-item\",\r\n title:\r\n \"Authorization to Physician, Clinics, Hospitals, Pre-need plan and insurance companies\",\r\n text: \"ST. PETER LIFE PLAN, INC. is considering an application for coverage on my life and this serves as my authorization and request to the concerned doctor, physician or hospital, or any physician in its employ or connected/associated with it in any way, to give to ST. PETER LIFE PLAN, INC., or its authorized representative, any information which it/he may desire and which you have acquired in attending to me in a professional capacity. A photocopy of this authorization shall be as valid as the original. This authorization is in connection with my application for insurance coverage only.\",\r\n },\r\n {\r\n value: \"second-item\",\r\n title: \"Data Privacy\",\r\n text: (\r\n <>\r\n By entering into and agreeing to this valid and binding electronic and\r\n digital Life Plan Contract, the Planholder effectively consents to the\r\n collection, processing, transmission, handling and storage by St.\r\n Peter Life Plan, Inc. (including any of its subsidiaries, affiliates\r\n or its authorized third parties), of his/her Personal Data in any form\r\n whatsoever, which is necessary for the purpose of administering and\r\n servicing the Planholder’s Life Plan, and also consents and agrees to\r\n and accepts the Company’s Data Privacy Policy, all in compliance with\r\n the Data Privacy Act.\r\n <br />\r\n <br />\r\n Please read the Company’s Data Privacy Policy at{\" \"}\r\n <a\r\n href=\"https://stpeter.com.ph/privacy-policy\"\r\n target=\"_blank\"\r\n className=\"text-blue-600 underline\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n www.stpeter.com.ph/privacy-policy\r\n </a>\r\n .\r\n </>\r\n ),\r\n },\r\n {\r\n value: \"third-item\",\r\n title: \"Online Purchase Authentication\",\r\n text: (\r\n <>\r\n <Body className=\"text-start\">\r\n I fully understand that in my purchase of the Life Plan product\r\n which I have chosen, I am required to upload a clear specimen of my\r\n current and valid government issued ID and three (3) specimens of my\r\n electronic signature in order to authenticate and verify my identity\r\n before I can click the “CONTINUE” button. I am solely responsible\r\n and accountable for any misrepresentation and all other consequences\r\n arising from my uploading of the specimen signatures of my valid ID\r\n and/or electronic signature.\r\n </Body>\r\n <Body>\r\n However, I fully understand that by clicking the “CONTINUE” button,\r\n for all intents and purposes, this ultimately means that I give my\r\n express, final, irrevocable and unconditional consent to\r\n electronically and digitally purchase the Life Plan product which I\r\n have chosen and finalize my application, and that I have expressly\r\n agreed to enter into a valid and binding electronic and digital\r\n contract with St. Peter Life Plan, Inc. and its Terms and\r\n Conditions, even if I do not upload my genuine valid ID and/or\r\n electronic signature. I also hereby agree to accept and comply with\r\n the applicable and currently prescribed electronic and digital\r\n payment methods in this platform.\r\n </Body>\r\n <Body>\r\n I understand that I am solely responsible for maintaining the\r\n confidentiality of my account and password and for restricting\r\n access to my account and I accept all responsibility for all\r\n activities that occur under my account and password.\r\n </Body>\r\n </>\r\n ),\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <VStack align=\"stretch\" gap={4} mb={4}>\r\n <H4>Health Declaration</H4>\r\n <Body>\r\n Please check all the boxes that apply to you and skip the boxes that\r\n do not apply.\r\n </Body>\r\n <Body>\r\n I hereby represent and declare to the best of my knowledge that at the\r\n time of purchase of my Life Plan:\r\n </Body>\r\n </VStack>\r\n\r\n <VStack align=\"stretch\" gap={4} mb={4}>\r\n <Checkbox.Root\r\n checked={healthDeclarationValues.healthDeclaration1}\r\n onCheckedChange={(details) =>\r\n setHealthDeclarationValues((prev) => ({\r\n ...prev,\r\n healthDeclaration1: details.checked === true,\r\n }))\r\n }\r\n >\r\n <Checkbox.HiddenInput />\r\n <Checkbox.Control />\r\n <Checkbox.Label>\r\n I am between 18 years and 60 years old (not beyond my 60th\r\n birthday).\r\n </Checkbox.Label>\r\n </Checkbox.Root>\r\n <Checkbox.Root\r\n checked={healthDeclarationValues.healthDeclaration2}\r\n onCheckedChange={(details) =>\r\n setHealthDeclarationValues((prev) => ({\r\n ...prev,\r\n healthDeclaration2: details.checked === true,\r\n }))\r\n }\r\n >\r\n <Checkbox.HiddenInput />\r\n <Checkbox.Control />\r\n <Checkbox.Label>\r\n I possess sound health and am able to perform the normal activities\r\n in pursuit of my livelihood.\r\n </Checkbox.Label>\r\n </Checkbox.Root>\r\n <Checkbox.Root\r\n checked={healthDeclarationValues.healthDeclaration3}\r\n onCheckedChange={(details) =>\r\n setHealthDeclarationValues((prev) => ({\r\n ...prev,\r\n healthDeclaration3: details.checked === true,\r\n }))\r\n }\r\n >\r\n <Checkbox.HiddenInput />\r\n <Checkbox.Control />\r\n <Checkbox.Label>\r\n I have not consulted any physician for heart condition,\r\n hypertension, cancer, diabetes, lungs, kidneys or intestinal\r\n disorder, tuberculosis, or any other physical impairment nor have I\r\n been confined in a hospital/clinic and received any medical or\r\n surgical attention.\r\n </Checkbox.Label>\r\n </Checkbox.Root>\r\n <Checkbox.Root\r\n checked={healthDeclarationValues.healthDeclaration4}\r\n onCheckedChange={(details) =>\r\n setHealthDeclarationValues((prev) => ({\r\n ...prev,\r\n healthDeclaration4: details.checked === true,\r\n }))\r\n }\r\n >\r\n <Checkbox.HiddenInput />\r\n <Checkbox.Control />\r\n <Checkbox.Label>\r\n I understand and agree that I am INSURABLE based on the above-stated\r\n representations.\r\n </Checkbox.Label>\r\n </Checkbox.Root>\r\n <Box mt={4}>\r\n <Body>Please attach medical results here:</Body>\r\n </Box>\r\n\r\n <UploadFile />\r\n <VStack align=\"stretch\" gap={2} mt={6}>\r\n <Body>\r\n I also understand and agree that the issuance of the Life Plan and\r\n the corresponding benefits are based on the truth of my above-stated\r\n representations.\r\n </Body>\r\n <Body>\r\n Any false statements as regards my age or health as above-stated may\r\n render the Life Plan Contract rescissible.\r\n </Body>\r\n <Body>\r\n I further agree that this contract and the declarations I have given\r\n above shall be the basis of the Life Plan Contract between the\r\n company and me and shall be deemed to be an integral part of the\r\n Life Plan Contract, subject to the terms and conditions stated in\r\n the Life Plan Contract.\r\n </Body>\r\n </VStack>\r\n <Separator />\r\n <Box textAlign=\"start\">\r\n <H4>Terms and Conditions</H4>\r\n </Box>\r\n <Box textAlign=\"start\">\r\n <Body>\r\n Please read the terms and conditions of St .Peter Life Plan and\r\n upload the necessary documents to proceed with the purchase.\r\n </Body>\r\n </Box>\r\n <Accordion.Root\r\n value={value}\r\n onValueChange={(e) => setValue(e.value)}\r\n collapsible\r\n >\r\n {items.map((item, index) => (\r\n <Accordion.Item key={index} value={item.value}>\r\n <Accordion.ItemTrigger>\r\n <Body>\r\n <Span fontWeight=\"semibold\">{item.title}</Span>\r\n </Body>\r\n <Accordion.ItemIndicator />\r\n </Accordion.ItemTrigger>\r\n <Accordion.ItemContent>\r\n <Accordion.ItemBody>{item.text}</Accordion.ItemBody>\r\n </Accordion.ItemContent>\r\n </Accordion.Item>\r\n ))}\r\n </Accordion.Root>\r\n </VStack>\r\n </>\r\n );\r\n};\r\n\r\nexport default HealthDeclaration;\r\n","\"use client\";\n\nimport LifePlanApplication1 from \"./LifePlanApplication1\";\nimport LifePlanApplication2 from \"./LifePlanApplication2\";\nimport LifePlanApplication3 from \"./LifePlanApplication3\";\nimport { Box, Flex, Icon, VStack } from \"@chakra-ui/react\";\nimport { FaRegAddressCard, FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport { LuChevronsDown, LuChevronsUp } from \"react-icons/lu\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nimport { TertiarySmButton } from \"st-peter-ui\";\nimport type {\n IAddress,\n IApplicationData,\n IEmployment,\n IPersonalInfo,\n} from \"../types/planholder\";\nimport {\n createEmptyApplicationData,\n loadApplicationDataFromLocalStorage,\n saveApplicationDataToLocalStorage,\n} from \"../lib/applicationData\";\nimport InfoCard from \"./ui/info-card\";\nimport { InputCardAccordion } from \"./ui/input-card-accordion\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\n\nconst hasText = (value: unknown) => String(value ?? \"\").trim() !== \"\";\n\nconst isPersonalComplete = (p?: IPersonalInfo) =>\n !!p &&\n [\n p.idType,\n p.idNumber,\n p.lastName,\n p.firstName,\n p.birthDate,\n p.gender,\n p.civilStatus,\n p.nationality,\n p.mobileNumber,\n p.emailAddress,\n p.mailingAddress,\n ].every(hasText) &&\n Number(p.height) > 0 &&\n Number(p.weight) > 0;\n\nconst isAddressComplete = (a?: IAddress) =>\n !!a &&\n [a.province, a.city, a.district, a.barangay, a.street, a.lot].every(hasText);\n\nconst isEmploymentComplete = (e?: IEmployment) =>\n !!e &&\n [\n e.occupation,\n e.employerName,\n e.employmentStatus,\n e.officeAddress,\n e.TIN,\n e.SSS,\n e.sourceOfIncome,\n ].every(hasText);\n\nconst LifePlanApplicationFormWrapper = ({\n openSection,\n openSectionKey,\n onValidChange,\n}: {\n openSection?: string;\n openSectionKey?: number;\n onValidChange?: (valid: boolean) => void;\n}) => {\n const [applicationData, setApplicationData] = useState<IApplicationData>(\n createEmptyApplicationData,\n );\n const [hydrated, setHydrated] = useState(false);\n const [openSections, setOpenSections] = useState<string[]>([\"personal\"]);\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => {\n const saved = loadApplicationDataFromLocalStorage();\n if (saved) setApplicationData(saved);\n setHydrated(true);\n }, 0);\n\n return () => window.clearTimeout(timeoutId);\n }, []);\n\n useEffect(() => {\n if (!hydrated) return;\n saveApplicationDataToLocalStorage(applicationData);\n }, [applicationData, hydrated]);\n\n const isComplete =\n isPersonalComplete(applicationData.personalInfo) &&\n isAddressComplete(applicationData.address);\n\n useEffect(() => {\n onValidChange?.(isComplete);\n }, [isComplete, onValidChange]);\n\n useEffect(() => {\n if (!openSection) return;\n\n const timer = window.setTimeout(() => {\n setOpenSections((prev) =>\n prev.includes(openSection) ? prev : [...prev, openSection],\n );\n document\n .getElementById(`app-section-${openSection}`)\n ?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n }, 80);\n\n return () => window.clearTimeout(timer);\n }, [openSection, openSectionKey]);\n\n const handlePersonalInfoUpdate = useCallback(\n (personalInfo: IPersonalInfo) => {\n setApplicationData((prev) => ({\n ...prev,\n personalInfo,\n }));\n },\n [],\n );\n\n const handleAddressUpdate = useCallback((address: IAddress) => {\n setApplicationData((prev) => ({\n ...prev,\n address,\n }));\n }, []);\n\n const handleEmploymentUpdate = useCallback((employment: IEmployment) => {\n setApplicationData((prev) => ({\n ...prev,\n employment,\n }));\n }, []);\n\n const sections = [\n {\n icon: FaRegUser,\n label: \"Personal Info\",\n description: \"Identification and full name\",\n value: \"personal\",\n complete: isPersonalComplete(applicationData.personalInfo),\n page: (\n <LifePlanApplication1\n initialData={applicationData.personalInfo}\n onUpdate={handlePersonalInfoUpdate}\n />\n ),\n },\n {\n icon: FaRegAddressCard,\n label: \"Address\",\n description: \"Where you currently live\",\n value: \"address\",\n complete: isAddressComplete(applicationData.address),\n page: <LifePlanApplication2 onAddressUpdate={handleAddressUpdate} />,\n },\n {\n icon: IoIosInformationCircleOutline,\n label: \"Employment\",\n description: \"Work and income details\",\n value: \"employment\",\n complete: isEmploymentComplete(applicationData.employment),\n page: (\n <LifePlanApplication3\n initialData={applicationData.employment}\n onUpdate={handleEmploymentUpdate}\n />\n ),\n },\n ];\n\n const expandAll = () => setOpenSections(sections.map((s) => s.value));\n const collapseAll = () => setOpenSections([]);\n const toggleSection = (value: string) => {\n setOpenSections((prev) =>\n prev.includes(value)\n ? prev.filter((sectionValue) => sectionValue !== value)\n : [...prev, value],\n );\n };\n\n return (\n <Box w=\"full\">\n <Flex\n direction={{ base: \"column\", sm: \"row\" }}\n align={{ base: \"stretch\", sm: \"center\" }}\n justify=\"space-between\"\n gap={STANDARD_SPACING.sm}\n mb={STANDARD_SPACING.sm}\n >\n <Flex direction=\"column\" gap={STANDARD_SPACING.xs}>\n <InfoCard>\n Sections below are expandable and collapsible. Use them to focus\n only on relevant details.\n </InfoCard>\n <Flex gap={STANDARD_SPACING.xs} justify=\"flex-end\">\n <TertiarySmButton onClick={expandAll}>\n <LuChevronsDown size={14} />\n Expand All\n </TertiarySmButton>\n <TertiarySmButton onClick={collapseAll}>\n <LuChevronsUp size={14} />\n Collapse All\n </TertiarySmButton>\n </Flex>\n </Flex>\n </Flex>\n\n <VStack align=\"stretch\" gap={2}>\n {sections.map((section) => (\n <Box\n key={section.value}\n id={`app-section-${section.value}`}\n scrollMarginTop=\"80px\"\n >\n <InputCardAccordion\n icon={<Icon as={section.icon} boxSize=\"18px\" />}\n title={section.label}\n subtitle={section.description}\n isOpen={openSections.includes(section.value)}\n onToggle={() => toggleSection(section.value)}\n isComplete={section.complete}\n >\n {hydrated ? section.page : null}\n </InputCardAccordion>\n </Box>\n ))}\n </VStack>\n </Box>\n );\n};\n\nexport default LifePlanApplicationFormWrapper;\n","import type { IApplicationData } from \"../types/planholder\";\n\nconst LIFE_PLAN_APPLICATION_KEY = \"LifePlanApplication\";\n\nexport const createEmptyApplicationData = (): IApplicationData => ({\n personalInfo: {\n firstName: \"\",\n middleName: \"\",\n lastName: \"\",\n suffix: \"\",\n birthDate: \"\",\n idType: \"\",\n idNumber: \"\",\n height: 0,\n weight: 0,\n gender: \"\",\n civilStatus: \"\",\n nationality: \"\",\n mobileNumber: \"\",\n emailAddress: \"\",\n mailingAddress: \"\",\n landLineNumber: \"\",\n },\n address: {\n lot: \"\",\n street: \"\",\n barangay: \"\",\n district: \"\",\n city: \"\",\n province: \"\",\n },\n employment: {\n occupation: \"\",\n employerName: \"\",\n employmentStatus: \"\",\n officeAddress: \"\",\n TIN: \"\",\n SSS: \"\",\n sourceOfIncome: \"\",\n },\n beneficiaries: [],\n healthDeclaration: {\n healthDeclaration1: false,\n healthDeclaration2: false,\n healthDeclaration3: false,\n healthDeclaration4: false,\n },\n});\n\nexport const loadApplicationDataFromLocalStorage = (\n storageKey = LIFE_PLAN_APPLICATION_KEY,\n): IApplicationData | null => {\n if (typeof window === \"undefined\") return null;\n\n try {\n const stored = window.localStorage.getItem(storageKey);\n return stored ? (JSON.parse(stored) as IApplicationData) : null;\n } catch {\n return null;\n }\n};\n\nexport const saveApplicationDataToLocalStorage = (\n data: IApplicationData,\n storageKey = LIFE_PLAN_APPLICATION_KEY,\n) => {\n if (typeof window === \"undefined\") return;\n window.localStorage.setItem(storageKey, JSON.stringify(data));\n};\n","\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { Box, HStack, Text } from \"@chakra-ui/react\";\nimport { HiInformationCircle } from \"react-icons/hi\";\nimport type { IconType } from \"react-icons\";\n\ninterface InfoCardProps {\n children: ReactNode;\n icon?: IconType;\n}\n\nexport const InfoCard = ({\n children,\n icon = HiInformationCircle,\n}: InfoCardProps) => {\n return (\n <HStack\n gap={3}\n align=\"center\"\n p=\"8px\"\n borderRadius=\"md\"\n bg=\"#ebf4fb\"\n borderWidth=\"1px\"\n borderColor=\"#1976d2\"\n color=\"#0b3d2e\"\n >\n <Box as={icon} boxSize=\"20px\" color=\"#1976d2\" flexShrink={0} />\n <Text color=\"#1976d2\" fontSize=\"xs\">\n {children}\n </Text>\n </HStack>\n );\n};\n\nexport default InfoCard;\n","\"use client\";\r\n\r\nimport { Box, Flex, Text } from \"@chakra-ui/react\";\r\nimport React, { useState } from \"react\";\r\nimport { LuCheck, LuChevronDown, LuChevronUp, LuHash } from \"react-icons/lu\";\r\n\r\ninterface InputCardAccordionProps {\r\n icon: React.ReactNode;\r\n openedIcon?: React.ReactNode;\r\n title: string;\r\n subtitle?: string;\r\n children?: React.ReactNode;\r\n defaultOpen?: boolean;\r\n isOpen?: boolean;\r\n onToggle?: () => void;\r\n isComplete?: boolean;\r\n}\r\n\r\nexport function InputCardAccordion({\r\n icon,\r\n openedIcon,\r\n title,\r\n subtitle,\r\n children,\r\n defaultOpen = false,\r\n isOpen: controlledOpen,\r\n onToggle,\r\n isComplete,\r\n}: InputCardAccordionProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : internalOpen;\r\n\r\n const toggle = () => {\r\n if (isControlled) {\r\n onToggle?.();\r\n } else {\r\n setInternalOpen((prev: boolean) => !prev);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n toggle();\r\n }\r\n };\r\n\r\n const activeIcon = isOpen && openedIcon ? openedIcon : icon;\r\n\r\n return (\r\n <Box\r\n w=\"full\"\r\n position=\"relative\"\r\n p={1}\r\n borderRadius=\"2xl\"\r\n bg=\"white\"\r\n shadow=\"sm\"\r\n transition=\"all 0.25s ease\"\r\n _hover={{ transform: \"translateY(-3px)\", shadow: \"lg\" }}\r\n overflow=\"hidden\"\r\n cursor=\"pointer\"\r\n >\r\n <Flex\n align=\"center\"\r\n justify=\"space-between\"\r\n px={4}\r\n py={3}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n aria-expanded={isOpen}\r\n onClick={toggle}\r\n onKeyDown={handleKeyDown}\r\n _hover={{ bg: \"gray.50\" }}\r\n transition=\"background 0.15s ease\"\r\n >\r\n <Flex align=\"center\" gap={2}>\r\n <Box\r\n p={2}\r\n borderRadius=\"full\"\r\n bg={\"gray.100\"}\r\n color={\"inherit\"}\r\n transition=\"background 0.2s ease, color 0.2s ease\"\r\n >\r\n {activeIcon}\r\n </Box>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\" lineHeight=\"1.2\">\r\n {title}\r\n </Text>\r\n <Flex align=\"center\" gap={1} fontSize=\"xs\" color=\"gray.500\">\r\n <LuHash size={12} />\r\n <Text>{subtitle}</Text>\r\n </Flex>\r\n </Box>\r\n </Flex>\r\n\r\n <Flex align=\"center\" gap={1.5} flexShrink={0}>\n {isComplete && (\r\n <Box color=\"green.500\">\r\n <LuCheck size={16} />\r\n </Box>\r\n )}\r\n <Box color=\"gray.400\">\r\n {isOpen ? <LuChevronUp size={16} /> : <LuChevronDown size={16} />}\r\n </Box>\r\n </Flex>\r\n </Flex>\r\n\r\n {isOpen && children && (\n <Box p={4} borderTopWidth={1} borderColor=\"gray.100\">\r\n {children}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n","\"use client\";\n\nimport { Box } from \"@chakra-ui/react\";\n\nimport { useState } from \"react\";\nimport { createLifePlanSteps } from \"./data/lifePlanSteps\";\nimport HorizontalStepper from \"./ui/horizontal-stepper\";\n// import { CartItem } from \"@/types/cartItem\";\n// // import {\n// TransactionService,\n// PayMongoService,\n// } from \"@/services/API/PayMongoService\";\n// import {\n// createEmptyApplicationData,\n// loadApplicationDataFromLocalStorage,\n// } from \"@/lib/utils/applicationDataFactory\";\n// import Page from \"@/components/layout/page/Page\";\n\ntype SharedLifePlanApplicationProps = {\n title?: string;\n description?: string;\n onPaymentError?: (error: unknown) => void;\n};\n\nconst safeParse = <T,>(value: string | null): T | null => {\n if (!value) return null;\n\n try {\n return JSON.parse(value) as T;\n } catch {\n return null;\n }\n};\n\nconst SharedLifePlanApplication = ({\n title = \"Life Plan Application\",\n description = \"Please fill out the form below to apply for a life plan.\",\n onPaymentError,\n}: SharedLifePlanApplicationProps) => {\n const [currentStep, setCurrentStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [allAgreementsAccepted, setAllAgreementsAccepted] = useState(false);\n const [applicationSection, setApplicationSection] = useState<string>();\n const [applicationSectionKey, setApplicationSectionKey] = useState(0);\n const [applicationValid, setApplicationValid] = useState(false);\n\n const steps = createLifePlanSteps({\n onAllAcceptedChange: setAllAgreementsAccepted,\n ...(applicationSection ? { applicationSection } : {}),\n applicationSectionKey,\n onApplicationValidChange: setApplicationValid,\n onEdit: (section?: string) => {\n setApplicationSection(section ?? \"personal\");\n setApplicationSectionKey((key) => key + 1);\n setCurrentStep(0);\n },\n });\n\n const nextDisabled = currentStep === 0 && !applicationValid;\n\n const handleCheckout = async () => {\n if (!allAgreementsAccepted) return;\n setLoading(true);\n\n // try {\n // const checkoutRaw = sessionStorage.getItem(\"CheckoutCart\");\n // const cartRaw = sessionStorage.getItem(\"Cart\");\n\n // const parsed =\n // safeParse<CartItem | CartItem[]>(checkoutRaw) ??\n // safeParse<CartItem | CartItem[]>(cartRaw);\n\n // const items: CartItem[] = Array.isArray(parsed)\n // ? parsed\n // : parsed\n // ? [parsed]\n // : [];\n\n // if (items.length === 0) {\n // throw new Error(\"No items to checkout\");\n // }\n\n // const applicationData =\n // loadApplicationDataFromLocalStorage() ?? createEmptyApplicationData();\n\n // await TransactionService.insert(applicationData);\n\n // const checkoutPayload = items.map((item) => ({\n // planDesc: item.planDesc,\n // ipInstAmt: Number(item.price),\n // planTerm: item.planTerm,\n // quantity: item.quantity ?? 1,\n // }));\n // const { checkoutUrl } =\n // await PayMongoService.createCheckout(checkoutPayload);\n\n // if (!checkoutUrl) throw new Error(\"Checkout URL not found\");\n\n // window.location.href = checkoutUrl;\n // } catch (error) {\n // console.error(error);\n // onPaymentError?.(error);\n // alert(\"Failed to proceed to payment\");\n // } finally {\n // setLoading(false);\n // }\n };\n\n return (\n <Box w=\"full\" overflowX=\"hidden\">\n <HorizontalStepper\n steps={steps}\n activeStep={currentStep}\n onStepChange={setCurrentStep}\n onSubmit={handleCheckout}\n submitDisabled={!allAgreementsAccepted || loading}\n nextDisabled={nextDisabled}\n />\n </Box>\n );\n};\n\nexport default SharedLifePlanApplication;\n","import { FaClipboardCheck, FaFileSignature, FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport type { ConfirmationProps } from \"../confirmation\";\nimport LifePlanApplicationFormWrapper from \"../LifePlanApplicationFormWrapper\";\nimport HealthDeclaration from \"../HealthDeclaration\";\nimport Confirmation from \"../confirmation\";\nimport Beneficiary from \"../beneficiary\";\n\nexport const createLifePlanSteps = (\n confirmationProps?: ConfirmationProps & {\n onEdit?: (section?: string) => void;\n applicationSection?: string;\n applicationSectionKey?: number;\n onApplicationValidChange?: (valid: boolean) => void;\n },\n) => [\n {\n id: \"1\",\n header: \"Life Plan Application\",\n title: \"Application\",\n description: \"Complete the application form\",\n icon: FaFileSignature,\n component: (() => {\n const applicationFormWrapperProps: {\n openSection?: string;\n openSectionKey?: number;\n onValidChange?: (valid: boolean) => void;\n } = {};\n\n if (confirmationProps?.applicationSection !== undefined) {\n applicationFormWrapperProps.openSection =\n confirmationProps.applicationSection;\n }\n\n if (confirmationProps?.applicationSectionKey !== undefined) {\n applicationFormWrapperProps.openSectionKey =\n confirmationProps.applicationSectionKey;\n }\n\n if (confirmationProps?.onApplicationValidChange !== undefined) {\n applicationFormWrapperProps.onValidChange =\n confirmationProps.onApplicationValidChange;\n }\n\n return (\n <LifePlanApplicationFormWrapper {...applicationFormWrapperProps} />\n );\n })(),\n },\n\n {\n id: \"2\",\n header: \"Beneficiary Details\",\n title: \"Beneficiary\",\n description: \"Add Beneficiary Details\",\n icon: FaRegUser,\n component: <Beneficiary />,\n },\n {\n id: \"3\",\n header: \"Health Declaration & Terms and Conditions\",\n title: \"Terms\",\n description: \"Health Declaration & Terms and Conditions\",\n icon: FaClipboardCheck,\n component: <HealthDeclaration />,\n },\n // {\n // id: \"4\",\n // header: \"Upload Requirements\",\n // title: \"Requirements\",\n // description: \"Upload Requirements\",\n // component: <Requirements />,\n // },\n {\n id: \"4\",\n header: \"Review Summary\",\n title: \"Summary\",\n description: \"Review and confirm your application\",\n icon: IoIosInformationCircleOutline,\n component: <Confirmation {...confirmationProps} />,\n },\n // {\n // id: \"5\",\n // header: \"Payment\",\n // title: \"Payment\",\n // description: \"Review and confirm your application\",\n // component: <Payment />,\n // },\n];\n","\"use client\";\n\nimport {\n Badge,\n Box,\n CloseButton,\n Dialog,\n Flex,\n HStack,\n Icon,\n Portal,\n Text,\n VStack,\n} from \"@chakra-ui/react\";\nimport { CancelButton, ConfirmButton, H3 } from \"st-peter-ui\";\nimport { FaRegAddressCard } from \"react-icons/fa6\";\nimport { FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport { useEffect, useState } from \"react\";\nimport type { IconType } from \"react-icons\";\nimport type { CartItem } from \"../types/cartItem\";\nimport type { ITransactionData } from \"../types/planholder\";\nimport { checkboxList } from \"./data/checkBoxList\";\nimport { InfoCardAccordion } from \"./ui/info-card-accordion\";\nimport RowItem from \"./ui/row-item\";\n\nexport type ConfirmationProps = {\n onAllAcceptedChange?: (allAccepted: boolean) => void;\n onEdit?: (section?: string) => void;\n};\n\nconst modeLabel = (mode?: string) => {\n switch (mode) {\n case \"M\":\n return \"Monthly\";\n case \"Q\":\n return \"Quarterly\";\n case \"S\":\n return \"Semi-Annual\";\n case \"A\":\n return \"Annual\";\n case \"C\":\n return \"Cash\";\n default:\n return mode || \"-\";\n }\n};\n\ntype TabItem = {\n icon: IconType;\n label: string;\n subtitle?: string;\n value: string;\n page: React.ReactNode;\n};\n\nconst ApplicationAccordion = ({\n items,\n onEdit,\n}: {\n items: TabItem[];\n onEdit?: (section?: string) => void;\n}) => {\n return (\n <VStack align=\"stretch\" gap={3}>\n {items.map((item, index) => (\n <InfoCardAccordion\n key={item.value}\n icon={<Icon as={item.icon} boxSize=\"18px\" />}\n title={item.label}\n {...(item.subtitle !== undefined ? { subtitle: item.subtitle } : {})}\n defaultOpen={index === 0}\n onEdit={() => onEdit?.(item.value)}\n >\n {item.page}\n </InfoCardAccordion>\n ))}\n </VStack>\n );\n};\n\nconst ReviewRows = ({\n rows,\n}: {\n rows: { label: string; value?: React.ReactNode }[];\n}) => (\n <VStack align=\"stretch\" gap={1}>\n {rows.map((row) => (\n <RowItem key={row.label} label={row.label} value={row.value} />\n ))}\n </VStack>\n);\n\nconst Confirmation = ({ onAllAcceptedChange, onEdit }: ConfirmationProps) => {\n const [cartItems, setCartItems] = useState<CartItem[] | null>(null);\n const [lifePlanApplication, setLifePlanApplication] =\n useState<ITransactionData | null>(null);\n const [openDialog, setOpenDialog] = useState(false);\n const [pendingCheck, setPendingCheck] = useState<number | null>(null);\n const [acceptedAgreements, setAcceptedAgreements] = useState<boolean[]>(() =>\n checkboxList.map(() => false),\n );\n\n useEffect(() => {\n const loadStoredData = () => {\n try {\n const checkoutStored = sessionStorage.getItem(\"CheckoutCart\");\n const cartStored = sessionStorage.getItem(\"Cart\");\n const lifePlanApplicationStored = localStorage.getItem(\n \"LifePlanApplication\",\n );\n\n const parsedApplicationData = lifePlanApplicationStored\n ? (JSON.parse(lifePlanApplicationStored) as ITransactionData)\n : null;\n\n setLifePlanApplication(parsedApplicationData);\n\n if (checkoutStored) {\n const parsedCheckout = JSON.parse(checkoutStored);\n setCartItems(\n Array.isArray(parsedCheckout) ? parsedCheckout : [parsedCheckout],\n );\n return;\n }\n\n if (cartStored) {\n const parsedCart = JSON.parse(cartStored);\n setCartItems(Array.isArray(parsedCart) ? parsedCart : []);\n } else {\n setCartItems([]);\n }\n } catch (e) {\n console.error(\"Failed to read Cart from sessionStorage\", e);\n setCartItems([]);\n }\n };\n\n const timeoutId = window.setTimeout(loadStoredData, 0);\n\n return () => window.clearTimeout(timeoutId);\n }, []);\n\n const selectedPlan = cartItems && cartItems.length > 0 ? cartItems[0] : null;\n\n const acceptedCount = acceptedAgreements.filter(Boolean).length;\n const allAccepted =\n checkboxList.length > 0 && acceptedCount === checkboxList.length;\n\n const pendingAgreement =\n pendingCheck !== null ? checkboxList[pendingCheck] : null;\n\n useEffect(() => {\n onAllAcceptedChange?.(allAccepted);\n }, [allAccepted, onAllAcceptedChange]);\n\n const beneficiaries = [\n {\n name: \"John Doe\",\n relationship: \"Relative\",\n dob: \"1990-11-02\",\n address: \"Sample Street, Sample Barangay, Sample City\",\n },\n {\n name: \"Jane Smith\",\n relationship: \"Relative\",\n dob: \"1992-04-15\",\n address: \"Sample Avenue, Sample District, Sample City\",\n },\n ];\n\n const confirmAgreement = () => {\n if (pendingCheck === null) return;\n setAcceptedAgreements((prev) => {\n const copy = [...prev];\n copy[pendingCheck] = true;\n return copy;\n });\n setOpenDialog(false);\n setPendingCheck(null);\n };\n\n return (\n <Box minH=\"100vh\">\n <Box px={{ base: 0, md: 8 }} pb={{ base: 4, md: 8 }}>\n <VStack align=\"stretch\" gap={3}>\n <InfoCardAccordion\n icon={<Icon as={IoIosInformationCircleOutline} boxSize=\"18px\" />}\n title=\"Order Summary\"\n subtitle={modeLabel(selectedPlan?.mode)}\n defaultOpen\n >\n <ReviewRows\n rows={[\n {\n label: \"Selected Plan\",\n value: selectedPlan?.planDesc,\n },\n {\n label: \"Quantity\",\n value: selectedPlan?.quantity,\n },\n {\n label: \"Total Amount Payable\",\n value: selectedPlan\n ? `\\u20b1 ${selectedPlan.total}`\n : undefined,\n },\n ]}\n />\n </InfoCardAccordion>\n\n <ApplicationAccordion\n onEdit={onEdit ?? (() => {})}\n items={[\n {\n icon: FaRegUser,\n label: \"Personal Info\",\n subtitle: \"Identification and full name\",\n value: \"personal\",\n page: (\n <ReviewRows\n rows={[\n {\n label: \"Uploaded ID\",\n value: lifePlanApplication?.personalInfo.idType,\n },\n {\n label: \"Last Name\",\n value: lifePlanApplication?.personalInfo.lastName,\n },\n {\n label: \"First Name\",\n value: lifePlanApplication?.personalInfo.firstName,\n },\n {\n label: \"Middle Name\",\n value: lifePlanApplication?.personalInfo.middleName,\n },\n {\n label: \"Suffix\",\n value: lifePlanApplication?.personalInfo.suffix,\n },\n {\n label: \"Date of Birth\",\n value: lifePlanApplication?.personalInfo.birthDate,\n },\n {\n label: \"Gender\",\n value: lifePlanApplication?.personalInfo.gender,\n },\n {\n label: \"Contact Number\",\n value: lifePlanApplication?.personalInfo.mobileNumber,\n },\n {\n label: \"Email\",\n value: lifePlanApplication?.personalInfo.emailAddress,\n },\n {\n label: \"Landline Number\",\n value: lifePlanApplication?.personalInfo.landLineNumber,\n },\n {\n label: \"Mailing Address\",\n value: lifePlanApplication?.personalInfo.mailingAddress,\n },\n {\n label: \"Civil Status\",\n value: lifePlanApplication?.personalInfo.civilStatus,\n },\n ]}\n />\n ),\n },\n {\n icon: FaRegAddressCard,\n label: \"Address\",\n subtitle: \"Where you currently live\",\n value: \"address\",\n page: (\n <ReviewRows\n rows={[\n {\n label: \"Lot #\",\n value: lifePlanApplication?.address.lot,\n },\n {\n label: \"Street\",\n value: lifePlanApplication?.address.street,\n },\n {\n label: \"Barangay\",\n value: lifePlanApplication?.address.barangay,\n },\n {\n label: \"City\",\n value: lifePlanApplication?.address.city,\n },\n {\n label: \"Province\",\n value: lifePlanApplication?.address.province,\n },\n ]}\n />\n ),\n },\n {\n icon: IoIosInformationCircleOutline,\n label: \"Employment\",\n subtitle: \"Work and income details\",\n value: \"employment\",\n page: (\n <ReviewRows\n rows={[\n {\n label: \"Occupation\",\n value: lifePlanApplication?.employment.occupation,\n },\n {\n label: \"Employer Name\",\n value: lifePlanApplication?.employment.employerName,\n },\n {\n label: \"Employment Status\",\n value: lifePlanApplication?.employment.employmentStatus,\n },\n {\n label: \"Office Address\",\n value: lifePlanApplication?.employment.officeAddress,\n },\n {\n label: \"TIN\",\n value: lifePlanApplication?.employment.TIN,\n },\n {\n label: \"SSS/GSIS\",\n value: lifePlanApplication?.employment.SSS,\n },\n {\n label: \"Source of Income\",\n value: lifePlanApplication?.employment.sourceOfIncome,\n },\n ]}\n />\n ),\n },\n ]}\n />\n\n <InfoCardAccordion\n icon={<Icon as={FaRegUser} boxSize=\"18px\" />}\n title=\"Beneficiaries\"\n subtitle={`${beneficiaries.length} listed`}\n >\n <VStack align=\"stretch\" gap={4}>\n {beneficiaries.map((beneficiary, index) => (\n <Box key={`${beneficiary.name}-${index}`}>\n <Text fontWeight=\"semibold\" fontSize=\"sm\" mb={1}>\n {beneficiary.name}\n </Text>\n <ReviewRows\n rows={[\n {\n label: \"Relationship\",\n value: beneficiary.relationship,\n },\n {\n label: \"Date of Birth\",\n value: beneficiary.dob,\n },\n {\n label: \"Address\",\n value: beneficiary.address,\n },\n ]}\n />\n </Box>\n ))}\n </VStack>\n </InfoCardAccordion>\n\n <InfoCardAccordion\n icon={<Icon as={IoIosInformationCircleOutline} boxSize=\"18px\" />}\n title=\"Agreements\"\n subtitle={`${acceptedCount}/${checkboxList.length} accepted`}\n >\n <VStack align=\"stretch\" gap={3}>\n {checkboxList.map((item, index) => {\n const isAccepted = acceptedAgreements[index];\n\n return (\n <Box\n key={index}\n role=\"button\"\n tabIndex={0}\n p={4}\n borderWidth=\"1px\"\n rounded=\"xl\"\n bg={isAccepted ? \"green.50\" : \"gray.50\"}\n transition=\"all 0.15s ease\"\n _hover={{ bg: isAccepted ? \"green.100\" : \"gray.100\" }}\n onClick={() => {\n setPendingCheck(index);\n setOpenDialog(true);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setPendingCheck(index);\n setOpenDialog(true);\n }\n }}\n >\n <Flex justify=\"space-between\" align=\"start\" gap={4}>\n <Box flex=\"1\" minW={0}>\n <Text fontWeight=\"semibold\" lineClamp={2}>\n {item.checkBoxTitle}.\n </Text>\n\n <Text\n fontSize=\"sm\"\n color=\"gray.600\"\n mt={1}\n lineClamp={1}\n >\n Tap to review details.\n </Text>\n </Box>\n\n <Badge\n variant=\"subtle\"\n colorPalette={isAccepted ? \"green\" : \"gray\"}\n >\n {isAccepted ? \"Accepted\" : \"Review\"}\n </Badge>\n </Flex>\n </Box>\n );\n })}\n </VStack>\n </InfoCardAccordion>\n\n <Dialog.Root\n open={openDialog}\n onOpenChange={(details) => setOpenDialog(details.open)}\n size={{ mdDown: \"full\", md: \"xl\" }}\n scrollBehavior=\"inside\"\n >\n <Portal>\n <Dialog.Backdrop backdropFilter=\"blur(6px)\" />\n <Dialog.Positioner>\n <Dialog.Content\n bg=\"white\"\n rounded=\"xl\"\n shadow=\"lg\"\n overflow=\"hidden\"\n >\n <Dialog.CloseTrigger asChild>\n <CloseButton position=\"absolute\" top={3} right={3} />\n </Dialog.CloseTrigger>\n\n <Dialog.Header\n px={{ base: 4, md: 6 }}\n pt={{ base: 5, md: 6 }}\n >\n <H3>\n {pendingCheck !== null\n ? pendingAgreement?.title || \"Agreement\"\n : \"Agreement\"}\n </H3>\n <Text fontSize=\"sm\" color=\"gray.600\" mt={2}>\n Please read carefully. Confirm to accept this agreement.\n </Text>\n </Dialog.Header>\n\n <Dialog.Body px={{ base: 4, md: 6 }} pb={{ base: 5, md: 6 }}>\n <Box p={4} borderWidth=\"0px\" rounded=\"lg\" bg=\"gray.50\">\n <Text\n whiteSpace=\"pre-wrap\"\n fontSize=\"sm\"\n color=\"gray.800\"\n >\n {pendingCheck !== null\n ? pendingAgreement?.description ||\n \"Please review and confirm before proceeding.\"\n : \"Please review and confirm before proceeding.\"}\n </Text>\n </Box>\n </Dialog.Body>\n\n <Dialog.Footer\n px={{ base: 4, md: 6 }}\n pb={{ base: 5, md: 6 }}\n >\n <HStack justify=\"flex-end\" gap={3} w=\"full\">\n <CancelButton\n onClick={() => {\n setOpenDialog(false);\n setPendingCheck(null);\n }}\n />\n <ConfirmButton onClick={confirmAgreement} />\n </HStack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n </VStack>\n </Box>\n </Box>\n );\n};\n\nexport default Confirmation;\n","import { Box, Separator } from \"@chakra-ui/react\";\nimport { Body, Small } from \"st-peter-ui\";\n\nexport const checkboxList = [\n {\n title: \"TERMS OF USE\",\n checkBoxTitle:\n \"I hereby confirm that the information that I provided is correct and that I accept the TERMS AND CONDITIONS AND DATA PRIVACY AGREEMENT.\",\n description: (\n <Box>\n <Body>\n Please read these Terms and Conditions of Use carefully before using\n this website. Using this website means you have read, understood,\n agreed to and accepted these Terms and Conditions of Use. If you do\n not accept these Terms and Conditions of Use, do not use this website.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n CHANGES TO THIS TERMS AND USE\n </Body>\n <Body>\n St. Peter Group reserves the right to change these Terms and\n Conditions of Use from time to time, in whole or in part, without\n prior notice. Your continued use of this Website after changes to the\n Terms and Conditions of Use have been published constitutes your\n binding agreement and acceptance of the updated Terms and Conditions\n of Use.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n TRADEMARKS\n </Body>\n <Body>\n The trademarks, logos, and service marks displayed on this Website\n are the properties of the St. Peter Group. You are not permitted to\n use these items without prior written consent.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n INTELLECTUAL PROPERTY RIGHTS\n </Body>\n <Body>\n The St. Peter Group owns the intellectual property rights in the\n content made available on this Website, or has obtained permission\n from the proper owners to make such content available.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n LINKS TO OTHER SITES\n </Body>\n <Body>\n This website contains links to other websites for convenience only.\n St. Peter Group is not responsible for the content or availability of\n linked websites.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n RULES OF CONDUCT\n </Body>\n <Body>\n Your use of this Website is subject to all applicable laws. Do not\n post threatening, abusive, defamatory, obscene, hateful, or illegal\n content. Do not upload harmful software or attempt to disrupt the\n Website.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n DISCLAIMER\n </Body>\n <Body>\n The Website is provided as is. St. Peter Group makes no warranties and\n is not liable for any damages, including loss of data, viruses,\n errors, or reliance on content.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n PRIVACY POLICY\n </Body>\n <Body>Please read our Privacy Policy.</Body>\n <Separator my={8} />\n <Body fontWeight=\"semibold\" mt={4}>\n HOW TO CONTACT US\n </Body>\n <Body>If you have any concern regarding these Terms of Use, contact us:</Body>\n <Body mt={2} fontWeight=\"semibold\">\n For website concerns: ronagl@stpeter.com.ph\n </Body>\n <Body mt={2} fontWeight=\"semibold\">\n For data privacy concerns: joycemb@stpeter.com.ph\n </Body>\n <Small textAlign=\"center\" mt={8}>\n This Terms of Use was amended on August 30, 2018\n </Small>\n </Box>\n ),\n },\n {\n title: \"TERMS OF LIFE PLAN CONTRACT\",\n checkBoxTitle:\n \"I hereby confirm that the information that I provided is correct and that I accept the TERMS OF LIFE PLAN CONTRACT.\",\n description: (\n <Box>\n <Body fontWeight=\"semibold\" mt={4}>\n ARTICLE I. DEFINITION OF TERMS\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n ST. PETER\n </Body>\n <Body>ST. PETER LIFE PLAN, INC.</Body>\n <Body fontWeight=\"semibold\" mt={4}>\n PLANHOLDER\n </Body>\n <Body>\n Refers to the person who purchases and owns the plan for whom or for\n whose beneficiaries benefits are to be delivered, as stipulated and\n guaranteed by ST. PETER.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Contract\n </Body>\n <Body>\n Refers to the Life Plan Contract between ST. PETER and the PLANHOLDER\n providing the terms and conditions thereof.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Contract Price\n </Body>\n <Body>\n Refers to the stipulated price of the Life Plan which may be paid\n either in lump sum or in installments, net of handling fees and other\n charges, if any.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Gross Contract Price\n </Body>\n <Body>\n Refers to the stipulated price of the Life Plan which includes\n handling fees and other charges.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Plan Installment\n </Body>\n <Body>\n Refers to the monthly, quarterly, semi-annual or annual installment\n amounts paid by the PLANHOLDER.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Paying Period\n </Body>\n <Body>\n Refers to the period of time within which the PLANHOLDER has to pay\n for the Gross Contract Price of the plan in monthly, quarterly,\n semi-annual, annual installments or lump sum.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Due Date\n </Body>\n <Body>\n Refers to the date when the PLANHOLDER installment should be paid.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Beneficiary\n </Body>\n <Body>\n Refers to the person designated by the PLANHOLDER, in accordance with\n law, to receive the plan insurance proceeds and/or pre-need benefits\n in case of unrendered service.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Grace Period\n </Body>\n <Body>\n Refers to the sixty-day period given to the PLANHOLDER within which\n to pay accrued installments due, counted from the due date of the\n first unpaid installment in default.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Lapsed Plan\n </Body>\n <Body>\n Refers to a delinquent plan which has remained unpaid beyond the\n grace period. A Lapsed Plan has no force and effect.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Reinstatement\n </Body>\n <Body>Refers to the process of reactivating a lapsed plan.</Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Certificate of Full Payment\n </Body>\n <Body>\n Refers to ST. PETER duly signed certification stating that a plan has\n been fully paid.\n </Body>\n </Box>\n ),\n },\n {\n title: \"OUR CUSTOMER SERVICE CHARTER\",\n checkBoxTitle: \"I have read and understood the CUSTOMER SERVICE CHARTER.\",\n description: (\n <Box>\n <Body>\n We at ST. PETER LIFE PLAN, INC. hold ourselves as DeathCare Experts\n who aspire to be the most trusted and reliable provider in your\n Pre-Need Life Plan needs. We also aim to deliver world-class\n DeathCare services to our planholders.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Our customer service charter reflects our commitment to:\n </Body>\n <Box as=\"ul\" listStyleType=\"circle\" listStylePosition=\"inside\">\n <li>Safe and Secure Operations</li>\n <li>Maintenance of Customer Privacy</li>\n <li>Quality Services</li>\n <li>Transparent Product Information</li>\n <li>Prompt Response to Inquiries and Complaints</li>\n </Box>\n <Body mt={4} fontWeight=\"semibold\">\n OUR CUSTOMER SERVICE STANDARDS AND COMMITMENTS\n </Body>\n </Box>\n ),\n },\n];\n\nexport type AgreementItem = (typeof checkboxList)[number];\n","\"use client\";\r\n\r\nimport { Box, Button, Flex, Icon, Text } from \"@chakra-ui/react\";\r\nimport React, { useState } from \"react\";\r\nimport { LuChevronDown, LuChevronUp, LuHash, LuPencil } from \"react-icons/lu\";\r\n\r\ninterface InfoCardAccordionProps {\r\n icon: React.ReactNode;\r\n openedIcon?: React.ReactNode;\r\n title: string;\r\n subtitle?: string;\r\n children?: React.ReactNode;\r\n defaultOpen?: boolean;\r\n isOpen?: boolean;\r\n onToggle?: () => void;\r\n onEdit?: () => void;\n}\r\n\r\nexport function InfoCardAccordion({\r\n icon,\r\n openedIcon,\r\n title,\r\n subtitle,\r\n children,\r\n defaultOpen = false,\r\n isOpen: controlledOpen,\r\n onToggle,\r\n onEdit,\r\n}: InfoCardAccordionProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : internalOpen;\r\n\r\n const toggle = () => {\r\n if (isControlled) {\r\n onToggle?.();\r\n } else {\r\n setInternalOpen((prev: boolean) => !prev);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n toggle();\r\n }\r\n };\r\n\r\n const activeIcon = isOpen && openedIcon ? openedIcon : icon;\r\n\r\n return (\r\n <Box\r\n w=\"full\"\r\n position=\"relative\"\r\n p={1}\r\n borderRadius=\"2xl\"\r\n bg=\"white\"\r\n shadow=\"sm\"\r\n transition=\"all 0.25s ease\"\r\n _hover={{ transform: \"translateY(-3px)\", shadow: \"lg\" }}\r\n overflow=\"hidden\"\r\n cursor=\"pointer\"\r\n >\r\n <Flex\n align=\"center\"\r\n justify=\"space-between\"\r\n px={4}\r\n py={3}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n aria-expanded={isOpen}\r\n onClick={toggle}\r\n onKeyDown={handleKeyDown}\r\n _hover={{ bg: \"gray.50\" }}\r\n transition=\"background 0.15s ease\"\r\n >\r\n <Flex align=\"center\" gap={2}>\r\n <Box\r\n p={2}\r\n borderRadius=\"full\"\r\n bg={\"gray.100\"}\r\n color={\"inherit\"}\r\n transition=\"background 0.2s ease, color 0.2s ease\"\r\n >\r\n {activeIcon}\r\n </Box>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\" lineHeight=\"1.2\">\r\n {title}\r\n </Text>\r\n {subtitle && (\r\n <Flex align=\"center\" gap={1} fontSize=\"xs\" color=\"gray.500\">\r\n <LuHash size={12} />\r\n <Text>{subtitle}</Text>\r\n </Flex>\r\n )}\r\n </Box>\r\n </Flex>\r\n\r\n <Flex align=\"center\" gap={1} flexShrink={0}>\n {onEdit && (\r\n <Button\r\n variant=\"ghost\"\r\n p={0}\r\n minW=\"32px\"\r\n h=\"32px\"\r\n borderRadius=\"md\"\r\n aria-label={`Edit ${title}`}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onEdit();\r\n }}\r\n >\r\n <Icon as={LuPencil} boxSize={4} />\r\n </Button>\r\n )}\r\n <Box color=\"gray.400\">\r\n {isOpen ? <LuChevronUp size={16} /> : <LuChevronDown size={16} />}\r\n </Box>\r\n </Flex>\r\n </Flex>\r\n\r\n {isOpen && children && (\n <Box p={4} borderTopWidth={1} borderColor=\"gray.100\">\r\n {children}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n","\"use client\";\n\nimport React, { useRef, useState } from \"react\";\nimport { Box, ButtonGroup, Flex, Steps, Text } from \"@chakra-ui/react\";\nimport { PrimaryMdButton, SecondaryMdButton } from \"st-peter-ui\";\nimport { LuChevronLeft, LuChevronRight, LuCheck } from \"react-icons/lu\";\n\nconst PRIMARY = \"var(--chakra-colors-primary)\";\nconst PRIMARY_HOVER = \"var(--chakra-colors-primary-hover)\";\nconst PRIMARY_DISABLED = \"var(--chakra-colors-primary-disabled)\";\n\ninterface HorizontalStepperProps {\n steps: {\n title: string;\n description: React.ReactNode;\n component?: React.ReactNode;\n icon?: React.ElementType;\n }[];\n title?: string;\n description?: string;\n onStepChange?: (index: number) => void;\n onSubmit?: () => void;\n submitDisabled?: boolean;\n activeStep?: number;\n nextDisabled?: boolean;\n submitButtonText?: string;\n}\n\nconst HorizontalStepper = ({\n steps,\n title,\n description,\n onStepChange,\n onSubmit,\n submitDisabled,\n activeStep: controlledActiveStep,\n nextDisabled,\n submitButtonText = \"Proceed To Payment\",\n}: HorizontalStepperProps) => {\n const [localActiveStep, setLocalActiveStep] = useState(0);\n const activeStep =\n controlledActiveStep !== undefined ? controlledActiveStep : localActiveStep;\n\n const formTopRef = useRef<HTMLDivElement | null>(null);\n const isCompact = steps.length < 3;\n const isLastStep = activeStep === steps.length - 1;\n const nextStepTitle = steps[activeStep + 1]?.title;\n\n const scrollToTop = () => {\n requestAnimationFrame(() => {\n formTopRef.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n });\n };\n\n const handleStepChange = (index: number) => {\n if (controlledActiveStep === undefined) {\n setLocalActiveStep(index);\n }\n onStepChange?.(index);\n scrollToTop();\n };\n\n const handleNext = () => {\n if (nextDisabled) return;\n handleStepChange(Math.min(activeStep + 1, steps.length - 1));\n };\n\n return (\n <Flex\n direction=\"column\"\n align=\"start\"\n minH={{ base: \"100dvh\", md: \"100vh\" }}\n w=\"full\"\n overflow=\"visible\"\n pb={{ base: \"12px\", md: \"0px\" }}\n >\n {/* Header */}\n {(title || description) && (\n <Box mb={4} ref={formTopRef}>\n {title && (\n <Box\n as=\"h1\"\n m=\"0\"\n fontFamily=\"var(--font-dm-sans), system-ui, sans-serif\"\n fontWeight={description ? 600 : 500}\n color=\"gray.900\"\n lineHeight=\"1.1\"\n letterSpacing={description ? \"-0.025em\" : \"-0.015em\"}\n fontSize={{\n base: description ? \"22px\" : \"24px\",\n lg: description ? \"28px\" : \"32px\",\n }}\n >\n {title}\n </Box>\n )}\n\n {description && (\n <Text fontSize=\"sm\" color=\"gray.500\" mt={1}>\n {description}\n </Text>\n )}\n </Box>\n )}\n\n <Box w=\"full\" rounded=\"2xl\">\n <Steps.Root\n step={activeStep}\n onStepChange={(index) => handleStepChange(index.step)}\n defaultStep={0}\n count={steps.length}\n colorPalette=\"green\"\n >\n {/* Sticky step header */}\n <Box\n position=\"sticky\"\n top={0}\n zIndex={10}\n bg=\"white\"\n pt={2}\n pb={3}\n mx={-1}\n px={1}\n borderBottomWidth=\"1px\"\n borderColor=\"gray.100\"\n boxShadow=\"0 2px 8px -2px rgba(0,0,0,0.06)\"\n >\n <Steps.List\n py={0}\n flexDirection=\"row\"\n alignItems=\"center\"\n w=\"full\"\n justifyContent=\"space-evenly\"\n >\n {steps.map((step, index) => {\n const isCompleted = index < activeStep;\n const isActive = index === activeStep;\n\n return (\n <Steps.Item\n key={index}\n index={index}\n title={step.title}\n minW={{ base: \"0px\", md: \"auto\" }}\n flex={isCompact ? \"0 0 auto\" : \"1\"}\n >\n <Steps.Trigger\n flexDirection={isCompact ? \"row\" : \"column\"}\n alignItems=\"center\"\n gap={isCompact ? 2 : 1}\n px={isCompact ? 3 : 2}\n py={isCompact ? 2 : 1}\n borderRadius=\"lg\"\n transition=\"background 0.2s\"\n _hover={{ bg: \"gray.50\" }}\n >\n <Steps.Indicator\n borderWidth=\"2px\"\n transition=\"all 0.25s\"\n style={{\n borderColor:\n isCompleted || isActive ? PRIMARY : undefined,\n background: isCompleted ? PRIMARY : undefined,\n color: isCompleted\n ? \"white\"\n : isActive\n ? PRIMARY\n : undefined,\n boxShadow: isActive\n ? `0 0 0 3px ${PRIMARY_DISABLED}`\n : \"none\",\n }}\n >\n {isCompleted ? (\n <LuCheck size={14} />\n ) : step.icon ? (\n <Box as={step.icon} w={4} h={4} />\n ) : null}\n </Steps.Indicator>\n\n <Steps.Title\n fontSize={{ base: \"xs\", md: \"sm\" }}\n textAlign={isCompact ? \"left\" : \"center\"}\n whiteSpace=\"normal\"\n wordBreak=\"break-word\"\n fontWeight={isActive ? 600 : 400}\n color={\n isActive\n ? \"gray.900\"\n : isCompleted\n ? \"gray.600\"\n : \"gray.400\"\n }\n transition=\"color 0.2s\"\n >\n {step.title}\n </Steps.Title>\n </Steps.Trigger>\n\n {!isCompact && (\n <Steps.Separator\n display={{ base: \"none\", md: \"block\" }}\n />\n )}\n </Steps.Item>\n );\n })}\n </Steps.List>\n\n {/* Progress bar */}\n <Box\n w=\"full\"\n h=\"3px\"\n bg=\"gray.100\"\n borderRadius=\"full\"\n overflow=\"hidden\"\n mt={1}\n >\n <Box\n h=\"full\"\n bg={PRIMARY}\n transition=\"width 0.4s ease\"\n w={`${((activeStep + 1) / steps.length) * 100}%`}\n />\n </Box>\n </Box>\n\n {/* Step content */}\n {steps.map((step, index) => (\n <Steps.Content key={index} index={index}>\n {step.component ?? step.description}\n </Steps.Content>\n ))}\n\n {/* Mobile nav */}\n <Flex\n w=\"full\"\n justify=\"space-between\"\n align=\"center\"\n mt={4}\n gap={2}\n display={{ base: \"flex\", md: \"none\" }}\n >\n <Steps.PrevTrigger asChild>\n <Box\n as=\"button\"\n display=\"flex\"\n alignItems=\"center\"\n gap={1}\n px={3}\n py={2}\n borderRadius=\"lg\"\n border=\"1.5px solid\"\n borderColor=\"gray.200\"\n bg=\"white\"\n color=\"gray.700\"\n fontSize=\"sm\"\n fontWeight={500}\n cursor=\"pointer\"\n _hover={{ bg: \"gray.50\" }}\n _disabled={{ opacity: 0.4, cursor: \"not-allowed\" }}\n transition=\"all 0.15s\"\n >\n <LuChevronLeft size={14} />\n Back\n </Box>\n </Steps.PrevTrigger>\n\n {!isLastStep ? (\n <Box\n as=\"button\"\n display=\"flex\"\n alignItems=\"center\"\n gap={1}\n px={3}\n py={2}\n borderRadius=\"lg\"\n color=\"white\"\n fontSize=\"sm\"\n fontWeight={500}\n cursor={nextDisabled ? \"not-allowed\" : \"pointer\"}\n opacity={nextDisabled ? 0.5 : 1}\n pointerEvents={nextDisabled ? \"none\" : \"auto\"}\n transition=\"all 0.15s\"\n onClick={handleNext}\n bg={PRIMARY}\n _hover={{ bg: PRIMARY_HOVER }}\n >\n {nextStepTitle ? `Next: ${nextStepTitle}` : \"Next\"}\n <LuChevronRight size={14} />\n </Box>\n ) : (\n <Box\n as=\"button\"\n display=\"flex\"\n alignItems=\"center\"\n gap={1}\n px={3}\n py={2}\n borderRadius=\"lg\"\n color=\"white\"\n fontSize=\"sm\"\n fontWeight={500}\n cursor={submitDisabled ? \"not-allowed\" : \"pointer\"}\n opacity={submitDisabled ? 0.5 : 1}\n pointerEvents={submitDisabled ? \"none\" : \"auto\"}\n transition=\"all 0.15s\"\n onClick={onSubmit}\n bg={PRIMARY}\n _hover={{ bg: PRIMARY_HOVER }}\n >\n {submitButtonText}\n <LuCheck size={14} />\n </Box>\n )}\n </Flex>\n\n {/* Desktop nav */}\n <ButtonGroup\n size=\"sm\"\n variant=\"outline\"\n display={{ base: \"none\", md: \"flex\" }}\n >\n <Flex mt={5} w=\"full\" align=\"center\" justify=\"space-between\">\n <Steps.PrevTrigger asChild>\n <SecondaryMdButton>\n <LuChevronLeft />\n Previous\n </SecondaryMdButton>\n </Steps.PrevTrigger>\n\n {!isLastStep ? (\n <Box\n as=\"button\"\n display=\"flex\"\n alignItems=\"center\"\n gap={1.5}\n px={4}\n py={2}\n borderRadius=\"lg\"\n color=\"white\"\n fontSize=\"sm\"\n fontWeight={600}\n cursor={nextDisabled ? \"not-allowed\" : \"pointer\"}\n opacity={nextDisabled ? 0.5 : 1}\n pointerEvents={nextDisabled ? \"none\" : \"auto\"}\n transition=\"all 0.15s\"\n onClick={handleNext}\n boxShadow=\"0 1px 3px 0 rgba(0,0,0,0.12)\"\n bg={PRIMARY}\n _hover={{ bg: PRIMARY_HOVER }}\n >\n {nextStepTitle ? `Next: ${nextStepTitle}` : \"Next\"}\n <LuChevronRight size={15} />\n </Box>\n ) : (\n <PrimaryMdButton disabled={!!submitDisabled} onClick={onSubmit}>\n {submitButtonText}\n </PrimaryMdButton>\n )}\n </Flex>\n </ButtonGroup>\n </Steps.Root>\n </Box>\n </Flex>\n );\n};\n\nexport default HorizontalStepper;\n","\"use client\";\n\nimport SharedLifePlanApplication from \"./SharedLifePlanApplication\";\n\nconst LifePlanApplicationStepWrapper = () => {\n return <SharedLifePlanApplication />;\n};\n\nexport default LifePlanApplicationStepWrapper;\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport {\r\n Box,\r\n Drawer,\r\n Portal,\r\n HStack,\r\n VStack,\r\n Flex,\r\n Icon,\r\n CloseButton,\r\n Text,\r\n} from \"@chakra-ui/react\";\r\nimport { LuChevronRight } from \"react-icons/lu\";\r\nimport type { IconType } from \"react-icons\";\r\nimport Link from \"next/link\";\r\nimport { BRAND_COLORS } from \"../lib/theme/brand-colors\";\r\nimport {\r\n STANDARD_RADIUS,\r\n STANDARD_SHADOWS,\r\n STANDARD_SPACING,\r\n} from \"../lib/theme/standard-design-tokens\";\r\n\r\n// ─── Types ────────────────────────────────────────────────────────────────────\r\n\r\nexport type QuickAction = {\r\n /** React Icons icon component */\r\n icon: IconType;\r\n /** Primary action label */\r\n label: string;\r\n /** Optional supporting text below the label */\r\n description?: string;\r\n /** Called when the item is tapped (can be combined with href) */\r\n onClick?: () => void;\r\n /** Wrap the item in a Next.js Link */\r\n href?: string;\r\n /** Icon bubble background — defaults to brand muted gray */\r\n iconBg?: string;\r\n /** Icon fill color — defaults to brand neutral text */\r\n iconColor?: string;\r\n};\r\n\r\nexport type QuickActionsHeaderCardProps = {\r\n /** Short initials shown in the avatar circle (1–3 chars) */\r\n initials?: string;\r\n /** Avatar circle background — defaults to brand dark green */\r\n avatarBg?: string;\r\n /** Bold primary label (e.g. a name or record title) */\r\n label: string;\r\n /** Dimmer supporting line (e.g. \"ID #SP-10293 · Life Plan\") */\r\n meta?: string;\r\n /** Optional trailing slot (e.g. a badge or icon) */\r\n trailing?: React.ReactNode;\r\n};\r\n\r\nexport type BottomQuickActionsProps = {\r\n /** Controls open state */\r\n open: boolean;\r\n /** Called on close or backdrop tap */\r\n onOpenChange: (open: boolean) => void;\r\n /** Sheet heading — defaults to \"Quick actions\" */\r\n title?: string;\r\n /** Muted subtext below the title */\r\n subtitle?: string;\r\n /**\r\n * Optional context card rendered between the title bar and the action list.\r\n * Use `QuickActionsHeaderCard` for the standard \"acting on which record\" pattern,\r\n * or pass any ReactNode.\r\n */\r\n headerSlot?: React.ReactNode;\r\n /** The ordered list of actions */\r\n actions: QuickAction[];\r\n};\r\n\r\n// ─── Design tokens ────────────────────────────────────────────────────────────\r\n\r\nconst SHEET_BG = BRAND_COLORS.white;\r\nconst DRAG_COLOR = BRAND_COLORS.neutralBorder;\r\nconst ITEM_BG = BRAND_COLORS.white;\r\nconst ITEM_HOVER_BG = BRAND_COLORS.subtleBg;\r\nconst ITEM_ACTIVE_BG = BRAND_COLORS.mutedBg;\r\nconst ITEM_BORDER = BRAND_COLORS.neutralBorder;\r\nconst DEFAULT_ICON_BG = BRAND_COLORS.mutedBg;\r\nconst DEFAULT_ICON_COLOR = BRAND_COLORS.neutralText;\r\nconst AVATAR_DEFAULT_BG = BRAND_COLORS.darkGreen;\r\nconst HEADER_CARD_BG = BRAND_COLORS.subtleBg;\r\nconst HEADER_CARD_BORDER = BRAND_COLORS.neutralBorder;\r\nconst TITLE_COLOR = BRAND_COLORS.neutralText;\r\nconst SUBTITLE_COLOR = BRAND_COLORS.grey;\r\nconst LABEL_COLOR = BRAND_COLORS.neutralText;\r\nconst DESC_COLOR = BRAND_COLORS.grey;\r\nconst CHEVRON_COLOR = BRAND_COLORS.ashWhite;\r\n\r\n// ─── QuickActionsHeaderCard ───────────────────────────────────────────────────\r\n\r\n/**\r\n * Convenience header card for showing which record the actions apply to.\r\n * Pass this to `BottomQuickActions` via the `headerSlot` prop.\r\n */\r\nexport const QuickActionsHeaderCard = React.memo(\r\n ({\r\n initials,\r\n avatarBg = AVATAR_DEFAULT_BG,\r\n label,\r\n meta,\r\n trailing,\r\n }: QuickActionsHeaderCardProps) => (\r\n <HStack\r\n gap={STANDARD_SPACING.sm}\r\n px={STANDARD_SPACING.sm}\r\n py=\"13px\"\r\n bg={HEADER_CARD_BG}\r\n borderRadius={STANDARD_RADIUS.lg}\r\n borderWidth=\"1px\"\r\n borderColor={HEADER_CARD_BORDER}\r\n >\r\n {initials && (\r\n <Flex\r\n w=\"40px\"\r\n h=\"40px\"\r\n borderRadius={STANDARD_RADIUS.full}\r\n bg={avatarBg}\r\n align=\"center\"\r\n justify=\"center\"\r\n flexShrink={0}\r\n >\r\n <Text\r\n fontSize=\"14px\"\r\n fontWeight=\"700\"\r\n color={BRAND_COLORS.white}\r\n lineHeight=\"1\"\r\n >\r\n {initials}\r\n </Text>\r\n </Flex>\r\n )}\r\n <Box flex=\"1\" minW={0}>\r\n <Text\r\n fontSize=\"15px\"\r\n fontWeight=\"700\"\r\n color={TITLE_COLOR}\r\n lineHeight=\"1.25\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {label}\r\n </Text>\r\n {meta && (\r\n <Text\r\n fontSize=\"12px\"\r\n color={SUBTITLE_COLOR}\r\n mt=\"2px\"\r\n lineHeight=\"1.4\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {meta}\r\n </Text>\r\n )}\r\n </Box>\r\n {trailing}\r\n </HStack>\r\n ),\r\n);\r\n\r\n// ─── Action item ──────────────────────────────────────────────────────────────\r\n\r\nconst ITEM_TRANSITION = {\r\n transition: \"background 0.15s ease, transform 0.1s ease\",\r\n};\r\n\r\nconst ActionItem = React.memo(({ action }: { action: QuickAction }) => {\r\n const iconBg = action.iconBg ?? DEFAULT_ICON_BG;\r\n const iconColor = action.iconColor ?? DEFAULT_ICON_COLOR;\r\n\r\n const inner = (\r\n <HStack\r\n gap={STANDARD_SPACING.sm}\r\n px={STANDARD_SPACING.sm}\r\n py=\"14px\"\r\n bg={ITEM_BG}\r\n borderRadius={STANDARD_RADIUS.lg}\r\n borderWidth=\"1px\"\r\n borderColor={ITEM_BORDER}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n userSelect=\"none\"\r\n boxShadow={STANDARD_SHADOWS.level1}\r\n onClick={action.onClick}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") action.onClick?.();\r\n }}\r\n _hover={{ bg: ITEM_HOVER_BG }}\r\n _active={{ bg: ITEM_ACTIVE_BG, transform: \"scale(0.99)\" }}\r\n style={ITEM_TRANSITION}\r\n >\r\n <Flex\r\n w=\"40px\"\r\n h=\"40px\"\r\n borderRadius={STANDARD_RADIUS.md}\r\n bg={iconBg}\r\n align=\"center\"\r\n justify=\"center\"\r\n flexShrink={0}\r\n >\r\n <Icon as={action.icon} boxSize=\"20px\" color={iconColor} />\r\n </Flex>\r\n\r\n <Box flex=\"1\" minW={0}>\r\n <Text\r\n fontSize=\"15px\"\r\n fontWeight=\"600\"\r\n color={LABEL_COLOR}\r\n lineHeight=\"1.25\"\r\n >\r\n {action.label}\r\n </Text>\r\n {action.description && (\r\n <Text\r\n fontSize=\"12px\"\r\n color={DESC_COLOR}\r\n mt=\"2px\"\r\n lineHeight=\"1.4\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {action.description}\r\n </Text>\r\n )}\r\n </Box>\r\n\r\n <Icon\r\n as={LuChevronRight}\r\n boxSize=\"18px\"\r\n color={CHEVRON_COLOR}\r\n flexShrink={0}\r\n />\r\n </HStack>\r\n );\r\n\r\n if (action.href) {\r\n return (\r\n <Link\r\n href={action.href}\r\n style={{ textDecoration: \"none\", display: \"block\" }}\r\n >\r\n {inner}\r\n </Link>\r\n );\r\n }\r\n return inner;\r\n});\r\n\r\n// ─── BottomQuickActions ───────────────────────────────────────────────────────\r\n\r\nexport const BottomQuickActions = ({\r\n open,\r\n onOpenChange,\r\n title = \"Quick actions\",\r\n subtitle,\r\n headerSlot,\r\n actions,\r\n}: BottomQuickActionsProps) => {\r\n return (\r\n <Drawer.Root\r\n open={open}\r\n onOpenChange={(e) => onOpenChange(e.open)}\r\n placement=\"bottom\"\r\n >\r\n <Portal>\r\n <Drawer.Backdrop />\r\n <Drawer.Positioner>\r\n <Drawer.Content\r\n borderTopRadius=\"l3\"\r\n borderBottomRadius=\"0\"\r\n bg={SHEET_BG}\r\n maxW=\"480px\"\r\n mx=\"auto\"\r\n pb={`calc(${STANDARD_SPACING.sm} + env(safe-area-inset-bottom))`}\r\n boxShadow={STANDARD_SHADOWS.level4}\r\n >\r\n {/* Drag handle */}\r\n <Flex justify=\"center\" pt=\"10px\" pb=\"4px\">\r\n <Box\r\n w=\"36px\"\r\n h=\"4px\"\r\n borderRadius={STANDARD_RADIUS.full}\r\n bg={DRAG_COLOR}\r\n />\r\n </Flex>\r\n\r\n {/* Header: title + subtitle + close button */}\r\n <Drawer.Header\r\n px={STANDARD_SPACING.sm}\r\n pt=\"12px\"\r\n pb=\"0\"\r\n borderBottomWidth=\"0\"\r\n >\r\n <Flex align=\"flex-start\" justify=\"space-between\" gap=\"12px\">\r\n <Box flex=\"1\" minW={0}>\r\n <Drawer.Title\r\n fontSize=\"18px\"\r\n fontWeight=\"700\"\r\n color={TITLE_COLOR}\r\n lineHeight=\"1.25\"\r\n letterSpacing=\"-0.02em\"\r\n >\r\n {title}\r\n </Drawer.Title>\r\n {subtitle && (\r\n <Text\r\n fontSize=\"13px\"\r\n color={SUBTITLE_COLOR}\r\n mt=\"3px\"\r\n fontWeight=\"400\"\r\n lineHeight=\"1.4\"\r\n >\r\n {subtitle}\r\n </Text>\r\n )}\r\n </Box>\r\n <Drawer.CloseTrigger asChild mt=\"2px\" flexShrink={0}>\r\n <CloseButton\r\n size=\"sm\"\r\n color={BRAND_COLORS.neutralText}\r\n borderRadius={STANDARD_RADIUS.full}\r\n _hover={{ bg: BRAND_COLORS.mutedBg }}\r\n />\r\n </Drawer.CloseTrigger>\r\n </Flex>\r\n </Drawer.Header>\r\n\r\n {/* Body: optional header card + action list */}\r\n <Drawer.Body\r\n px={STANDARD_SPACING.sm}\r\n pt={STANDARD_SPACING.sm}\r\n pb=\"4px\"\r\n >\r\n {headerSlot && <Box mb={STANDARD_SPACING.xs}>{headerSlot}</Box>}\r\n\r\n <VStack gap={STANDARD_SPACING.xs} align=\"stretch\">\r\n {actions.map((action, i) => (\r\n <ActionItem key={i} action={action} />\r\n ))}\r\n </VStack>\r\n </Drawer.Body>\r\n </Drawer.Content>\r\n </Drawer.Positioner>\r\n </Portal>\r\n </Drawer.Root>\r\n );\r\n};\r\n\r\nexport default BottomQuickActions;\r\n","export const BRAND_COLORS = {\n primaryGreen: \"#109448\",\n darkGreen: \"#006838\",\n softGreen: \"#92DDBF\",\n pastelPeaGreen: \"#ACD6A6\",\n seafoamGreen: \"#92DDBF\",\n lightCyan: \"#D3EDEE\",\n successBg: \"#F0FDF4\",\n warningBg: \"#FFF7ED\",\n warningText: \"#F1592B\",\n warningBorder: \"#F4845F\",\n errorBg: \"#FEF2F2\",\n destructiveRed: \"#BF1F2F\",\n errorRed: \"#EF4444\",\n neutralText: \"#22223B\",\n neutralBorder: \"#E5E7EB\",\n mutedBg: \"#F3F4F6\",\n subtleBg: \"#F9FAFB\",\n white: \"#FFFFFF\",\n black: \"#000000\",\n grey: \"#808080\",\n ashWhite: \"#ECECEC\",\n gold: \"#CBA135\",\n brightGold: \"#FFD026\",\n paleGold: \"#FFF48E\",\n} as const;\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { Button, Flex, HStack, Icon, Text, VStack } from \"@chakra-ui/react\";\r\nimport { AnimatePresence, motion } from \"motion/react\";\r\nimport { FiDownload, FiPlusSquare, FiShare, FiX } from \"react-icons/fi\";\r\nimport { useNotifyInstall } from \"../hooks/useNotifyInstall\";\r\n\r\nconst STEPS = [\r\n { icon: FiShare, label: \"Tap the browser menu or Share button\" },\r\n { icon: FiPlusSquare, label: 'Choose \"Add to Home Screen\"' },\r\n];\r\n\r\nconst DISMISSED_KEY = \"estore-install-dialog-dismissed\";\r\n\r\ninterface NotifyInstallProps {\r\n children: React.ReactNode;\r\n appName: string;\r\n}\r\n\r\nexport default function NotifyInstall({\r\n children,\r\n appName,\r\n}: {\r\n children: React.ReactNode;\r\n appName: string;\r\n}) {\r\n const { isInstalled, isMobile, canInstall, install } = useNotifyInstall();\r\n\r\n // Start as true so the sheet never flashes before we know the stored state\r\n const [isDismissed, setIsDismissed] = useState(true);\r\n\r\n useEffect(() => {\r\n if (localStorage.getItem(DISMISSED_KEY) !== \"true\") {\r\n setIsDismissed(false);\r\n }\r\n }, []);\r\n\r\n const handleDismiss = () => {\r\n localStorage.setItem(DISMISSED_KEY, \"true\");\r\n setIsDismissed(true);\r\n };\r\n\r\n const showPrompt = isMobile && !isInstalled && !isDismissed;\r\n\r\n return (\r\n <>\r\n {children}\r\n\r\n <AnimatePresence>\r\n {showPrompt && (\r\n <>\r\n {/* ── Backdrop ─────────────────────────────────────────────── */}\r\n <motion.div\r\n key=\"install-backdrop\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n onClick={handleDismiss}\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex: 1300,\r\n background: \"rgba(0,0,0,0.55)\",\r\n backdropFilter: \"blur(3px)\",\r\n WebkitBackdropFilter: \"blur(3px)\",\r\n }}\r\n />\r\n\r\n {/* ── Bottom sheet ─────────────────────────────────────────── */}\r\n <motion.div\r\n key=\"install-sheet\"\r\n initial={{ y: \"100%\" }}\r\n animate={{ y: 0 }}\r\n exit={{ y: \"100%\" }}\r\n transition={{ type: \"spring\", damping: 28, stiffness: 280 }}\r\n style={{\r\n position: \"fixed\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n zIndex: 1400,\r\n background: \"white\",\r\n borderRadius: \"24px 24px 0 0\",\r\n boxShadow: \"0 -8px 40px rgba(0,0,0,0.14)\",\r\n paddingBottom: \"env(safe-area-inset-bottom)\",\r\n }}\r\n >\r\n {/* Close button */}\r\n <button\r\n aria-label=\"Dismiss install prompt\"\r\n onClick={handleDismiss}\r\n style={{\r\n position: \"absolute\",\r\n top: 12,\r\n right: 12,\r\n background: \"none\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: 8,\r\n borderRadius: \"50%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: \"#9ca3af\",\r\n }}\r\n >\r\n <FiX size={18} />\r\n </button>\r\n\r\n {/* Content */}\r\n <VStack gap={6} textAlign=\"center\" px={6} py={8}>\r\n {/* Icon badge */}\r\n <Flex\r\n boxSize={16}\r\n align=\"center\"\r\n justify=\"center\"\r\n rounded=\"2xl\"\r\n bg=\"green.50\"\r\n color=\"green.600\"\r\n shadow=\"sm\"\r\n >\r\n <Icon as={FiDownload} boxSize={8} />\r\n </Flex>\r\n\r\n <VStack gap={2}>\r\n <Text\r\n fontSize=\"lg\"\r\n fontWeight=\"bold\"\r\n color=\"gray.900\"\r\n lineHeight=\"short\"\r\n >\r\n Install {appName}\r\n </Text>\r\n <Text fontSize=\"sm\" color=\"gray.500\" lineHeight=\"tall\">\r\n Add the app to your home screen for a faster, app-like\r\n experience before continuing.\r\n </Text>\r\n </VStack>\r\n\r\n {canInstall ? (\r\n <Button\r\n onClick={install}\r\n colorPalette=\"green\"\r\n size=\"lg\"\r\n w=\"full\"\r\n rounded=\"xl\"\r\n >\r\n <Icon as={FiDownload} />\r\n Add to Home Screen\r\n </Button>\r\n ) : (\r\n <VStack\r\n w=\"full\"\r\n bg=\"gray.50\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.100\"\r\n rounded=\"xl\"\r\n p={4}\r\n gap={4}\r\n align=\"stretch\"\r\n >\r\n {STEPS.map((step, i) => (\r\n <HStack key={i} gap={3} align=\"center\">\r\n <Flex\r\n boxSize={9}\r\n flexShrink={0}\r\n align=\"center\"\r\n justify=\"center\"\r\n rounded=\"lg\"\r\n bg=\"white\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n color=\"green.600\"\r\n >\r\n <Icon as={step.icon} boxSize={4} />\r\n </Flex>\r\n <Text fontSize=\"sm\" color=\"gray.700\" textAlign=\"left\">\r\n {step.label}\r\n </Text>\r\n </HStack>\r\n ))}\r\n </VStack>\r\n )}\r\n </VStack>\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n </>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport function useNotifyInstall() {\r\n const [isInstalled, setIsInstalled] = useState(false);\r\n const [isMobile, setIsMobile] = useState(false);\r\n const [installPrompt, setInstallPrompt] = useState<any>(null);\r\n\r\n useEffect(() => {\r\n // Detect mobile\r\n const mobile =\r\n /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);\r\n\r\n setIsMobile(mobile);\r\n\r\n // Check if already installed\r\n const installed =\r\n window.matchMedia(\"(display-mode: standalone)\").matches ||\r\n (window.navigator as any).standalone === true;\r\n\r\n setIsInstalled(installed);\r\n\r\n const handler = (event: any) => {\r\n event.preventDefault();\r\n setInstallPrompt(event);\r\n };\r\n\r\n window.addEventListener(\"beforeinstallprompt\", handler);\r\n\r\n return () => {\r\n window.removeEventListener(\"beforeinstallprompt\", handler);\r\n };\r\n }, []);\r\n\r\n const install = async () => {\r\n if (!installPrompt) return;\r\n\r\n installPrompt.prompt();\r\n\r\n const result = await installPrompt.userChoice;\r\n\r\n if (result.outcome === \"accepted\") {\r\n setIsInstalled(true);\r\n }\r\n\r\n setInstallPrompt(null);\r\n };\r\n\r\n return {\r\n isInstalled,\r\n isMobile,\r\n canInstall: !!installPrompt,\r\n install,\r\n };\r\n}","\"use client\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport {\r\n Avatar,\r\n Badge,\r\n Box,\r\n Button,\r\n Flex,\r\n HStack,\r\n IconButton,\r\n Input,\r\n InputGroup,\r\n Separator,\r\n Text,\r\n useBreakpointValue,\r\n VStack,\r\n} from \"@chakra-ui/react\";\r\nimport {\r\n RiDashboardFill,\r\n RiDashboardLine,\r\n RiBookShelfFill,\r\n RiBookShelfLine,\r\n RiCheckboxCircleFill,\r\n RiCheckboxCircleLine,\r\n RiMoneyDollarCircleFill,\r\n RiMoneyDollarCircleLine,\r\n RiUser2Fill,\r\n RiUser2Line,\r\n} from \"react-icons/ri\";\r\nimport {\r\n LuArrowLeftRight,\r\n LuChevronDown,\r\n LuChevronLeft,\r\n LuChevronRight,\r\n LuChevronUp,\r\n LuCreditCard,\r\n LuEye,\r\n LuEyeOff,\r\n LuFileText,\r\n LuHouse,\r\n LuLock,\r\n LuMoon,\r\n LuPlus,\r\n LuShield,\r\n LuSun,\r\n LuUser,\r\n LuX,\r\n} from \"react-icons/lu\";\r\nimport { HiOutlineUsers, HiUsers } from \"react-icons/hi2\";\r\nimport {\r\n BsFileEarmarkExcel,\r\n BsFileEarmarkExcelFill,\r\n BsFileEarmarkSpreadsheet,\r\n BsFileEarmarkSpreadsheetFill,\r\n} from \"react-icons/bs\";\r\nimport { LiaHandHoldingUsdSolid } from \"react-icons/lia\";\r\nimport { FaHandHoldingUsd } from \"react-icons/fa\";\r\nimport { MdManageAccounts, MdOutlineManageAccounts } from \"react-icons/md\";\r\nimport { IoLeaf, IoLeafOutline } from \"react-icons/io5\";\r\nimport type { IconType } from \"react-icons\";\r\n\r\ntype ProfileView =\r\n | \"main\"\r\n | \"edit-account\"\r\n | \"change-password\"\r\n | \"navbar-customize\";\r\ntype ColorModeValue = \"light\" | \"dark\";\r\n\r\ntype ToastType = \"success\" | \"error\";\r\n\r\nexport interface ProfileUser {\r\n displayName: string;\r\n email?: string;\r\n mobileNumber?: string;\r\n role?: string;\r\n avatarSrc?: string;\r\n}\r\n\r\nexport interface NavOptionDef {\r\n key: string;\r\n title: string;\r\n href: string;\r\n Icon: IconType;\r\n activeIcon: IconType;\r\n match: (pathname: string) => boolean;\r\n roles: string[];\r\n}\r\n\r\nexport interface ReusableProfileProps {\r\n user?: ProfileUser;\r\n colorMode?: ColorModeValue;\r\n onColorModeChange?: (mode: ColorModeValue) => void;\r\n initialTwoFactorEnabled?: boolean;\r\n initialQuickNavHrefs?: string[];\r\n availableNavOptions?: NavOptionDef[];\r\n maxQuickNavItems?: number;\r\n enableLocalStorage?: boolean;\r\n storageKey?: string;\r\n onSaveAccount?: (payload: { displayName: string }) => void | Promise<void>;\r\n onChangePassword?: (payload: {\r\n currentPassword: string;\r\n newPassword: string;\r\n }) => void | Promise<void>;\r\n onSignOut?: () => void | Promise<void>;\r\n onTwoFactorChange?: (enabled: boolean) => void | Promise<void>;\r\n onToast?: (type: ToastType, message: string) => void;\r\n}\r\n\r\nconst NAVBAR_STORAGE_KEY = \"profile-navbar-quick-items\";\r\nconst FONT_SIZE_STORAGE_KEY = \"profile-font-size-pref\";\r\nconst DEFAULT_NAV_HREFS = [\"/\", \"/plans\", \"/pay-my-plan\", \"/claims\"];\r\n\r\nconst DEFAULT_USER: ProfileUser = {\r\n displayName: \"Joyce Basilio-Ramos\",\r\n email: \"joyce.basilio@example.com\",\r\n mobileNumber: \"0917 000 0000\",\r\n role: \"branch\",\r\n avatarSrc: \"/images/profile.jpg\",\r\n};\r\n\r\nconst ALL_NAV_OPTIONS: NavOptionDef[] = [\r\n {\r\n key: \"/\",\r\n title: \"Home\",\r\n href: \"/\",\r\n Icon: LuHouse,\r\n activeIcon: LuHouse,\r\n match: (p) => p === \"/\",\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plans\",\r\n title: \"Products\",\r\n href: \"/plans\",\r\n Icon: IoLeafOutline,\r\n activeIcon: IoLeaf,\r\n match: (p) =>\r\n p.startsWith(\"/plans\") ||\r\n p.startsWith(\"/plan-details\") ||\r\n p.startsWith(\"/plan-comparison\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/pay-my-plan\",\r\n title: \"Pay\",\r\n href: \"/pay-my-plan\",\r\n Icon: LuCreditCard,\r\n activeIcon: LuCreditCard,\r\n match: (p) =>\r\n p.startsWith(\"/pay-my-plan\") ||\r\n p.startsWith(\"/account/pay-my-plan\") ||\r\n p.startsWith(\"/order-summary\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/claims\",\r\n title: \"Claim\",\r\n href: \"/claims\",\r\n Icon: LuFileText,\r\n activeIcon: LuFileText,\r\n match: (p) => p.startsWith(\"/claims\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/dashboard\",\r\n title: \"Dashboard\",\r\n href: \"/dashboard\",\r\n Icon: RiDashboardLine,\r\n activeIcon: RiDashboardFill,\r\n match: (p) => p === \"/dashboard\" || p === \"/\",\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/approvals\",\r\n title: \"Approvals\",\r\n href: \"/approvals\",\r\n Icon: RiCheckboxCircleLine,\r\n activeIcon: RiCheckboxCircleFill,\r\n match: (p) => p.startsWith(\"/approvals\"),\r\n roles: [\"branch\", \"bmstl\"],\r\n },\r\n {\r\n key: \"/document-management\",\r\n title: \"Documents\",\r\n href: \"/document-management\",\r\n Icon: RiBookShelfLine,\r\n activeIcon: RiBookShelfFill,\r\n match: (p) => p.startsWith(\"/document-management\"),\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/payment/encode-payment\",\r\n title: \"Encode Payment\",\r\n href: \"/payment/encode-payment\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/encode-payment\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/view-drs\",\r\n title: \"View DRS\",\r\n href: \"/payment/view-drs\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/view-drs\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/encodevalidated-deposit\",\r\n title: \"Encode Deposit Slip\",\r\n href: \"/payment/encodevalidated-deposit\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/encodevalidated-deposit\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/viewvalidated-deposit\",\r\n title: \"View Deposit Slips\",\r\n href: \"/payment/viewvalidated-deposit\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/viewvalidated-deposit\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/credit-memo\",\r\n title: \"Credit Memo\",\r\n href: \"/payment/credit-memo\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/credit-memo\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/sales-force/profile\",\r\n title: \"Agent Profile\",\r\n href: \"/sales-force/profile\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/profile\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/sales-force/re-assign\",\r\n title: \"Re-Organization\",\r\n href: \"/sales-force/re-assign\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/re-assign\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/sales-force/new\",\r\n title: \"Add New Agent\",\r\n href: \"/sales-force/new\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/new\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/plan-management/new\",\r\n title: \"Add New Sale\",\r\n href: \"/plan-management/new\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p === \"/plan-management/new\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plan-management/planholder\",\r\n title: \"Account Summary\",\r\n href: \"/plan-management/planholder\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p.startsWith(\"/plan-management/planholder\"),\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plan-management/change-of-mode\",\r\n title: \"Change of Mode\",\r\n href: \"/plan-management/change-of-mode\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p === \"/plan-management/change-of-mode\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/disbursement/comte\",\r\n title: \"COM/TE\",\r\n href: \"/disbursement/comte\",\r\n Icon: BsFileEarmarkSpreadsheet,\r\n activeIcon: BsFileEarmarkSpreadsheetFill,\r\n match: (p) => p === \"/disbursement/comte\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/disbursement/rfexpense\",\r\n title: \"Revolving Fund\",\r\n href: \"/disbursement/rfexpense\",\r\n Icon: BsFileEarmarkSpreadsheet,\r\n activeIcon: BsFileEarmarkSpreadsheetFill,\r\n match: (p) => p === \"/disbursement/rfexpense\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/loan\",\r\n title: \"Loan\",\r\n href: \"/loan\",\r\n Icon: LiaHandHoldingUsdSolid,\r\n activeIcon: FaHandHoldingUsd,\r\n match: (p) => p.startsWith(\"/loan\"),\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/mcpr\",\r\n title: \"MCPR\",\r\n href: \"/accounts-maintenance/mcpr\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/mcpr\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/next-month-loading\",\r\n title: \"Next Month Loading\",\r\n href: \"/accounts-maintenance/next-month-loading\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/next-month-loading\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/floating-accounts\",\r\n title: \"Floating Accounts\",\r\n href: \"/accounts-maintenance/floating-accounts\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/floating-accounts\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/accounts-transfer\",\r\n title: \"Transfer of Accounts\",\r\n href: \"/accounts-maintenance/accounts-transfer\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/accounts-transfer\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/dc\",\r\n title: \"Doc Cancellation\",\r\n href: \"/dc\",\r\n Icon: BsFileEarmarkExcel,\r\n activeIcon: BsFileEarmarkExcelFill,\r\n match: (p) => p === \"/dc\",\r\n roles: [\"sales-agent\"],\r\n },\r\n];\r\n\r\nconst FONT_SIZES = [\r\n { value: \"sm\", px: \"14px\", title: \"Small\", scale: 0.82 },\r\n { value: \"md\", px: \"16px\", title: \"Normal\", scale: 1 },\r\n { value: \"lg\", px: \"18px\", title: \"Large\", scale: 1.18 },\r\n];\r\n\r\nconst ROLE_LABELS: Record<string, string> = {\r\n branch: \"Branch\",\r\n bmstl: \"BM / STL\",\r\n \"sales-agent\": \"Sales Agent\",\r\n};\r\n\r\nconst PW_STRENGTH_META = [\r\n { label: \"\", color: \"gray.300\" },\r\n { label: \"Very Weak\", color: \"red.500\" },\r\n { label: \"Weak\", color: \"orange.400\" },\r\n { label: \"Fair\", color: \"yellow.500\" },\r\n { label: \"Strong\", color: \"green.400\" },\r\n { label: \"Very Strong\", color: \"green.600\" },\r\n] as const;\r\n\r\nfunction calcPwStrength(pw: string): number {\r\n if (!pw) return 0;\r\n\r\n let score = 0;\r\n if (pw.length >= 8) score++;\r\n if (/[A-Z]/.test(pw)) score++;\r\n if (/[a-z]/.test(pw)) score++;\r\n if (/[0-9]/.test(pw)) score++;\r\n if (/[^A-Za-z0-9]/.test(pw)) score++;\r\n\r\n return score;\r\n}\r\n\r\nfunction pickPalette(name: string) {\r\n const colorPalette = [\"red\", \"blue\", \"green\", \"yellow\", \"purple\", \"orange\"];\r\n return colorPalette[name.charCodeAt(0) % colorPalette.length];\r\n}\r\n\r\nfunction noopToast(_type: ToastType, _message: string) {\r\n return undefined;\r\n}\r\n\r\nexport function ReusableProfile({\r\n user = DEFAULT_USER,\r\n colorMode: controlledColorMode,\r\n onColorModeChange,\r\n initialTwoFactorEnabled = false,\r\n initialQuickNavHrefs = DEFAULT_NAV_HREFS,\r\n availableNavOptions = ALL_NAV_OPTIONS,\r\n maxQuickNavItems = 4,\r\n enableLocalStorage = true,\r\n storageKey = NAVBAR_STORAGE_KEY,\r\n onSaveAccount,\r\n onChangePassword,\r\n onSignOut,\r\n onTwoFactorChange,\r\n onToast = noopToast,\r\n}: ReusableProfileProps) {\r\n const [profileView, setProfileView] = useState<ProfileView>(\"main\");\r\n const [fallbackColorMode, setFallbackColorMode] =\r\n useState<ColorModeValue>(\"light\");\r\n const colorMode = controlledColorMode ?? fallbackColorMode;\r\n\r\n const [fontSize, setFontSizeLocal] = useState(\"md\");\r\n const [quickNavHrefs, setQuickNavHrefs] =\r\n useState<string[]>(initialQuickNavHrefs);\r\n const [replacingIdx, setReplacingIdx] = useState<number | null>(null);\r\n\r\n const [editName, setEditName] = useState(user.displayName);\r\n const [editLoading, setEditLoading] = useState(false);\r\n\r\n const [currentPw, setCurrentPw] = useState(\"\");\r\n const [newPw, setNewPw] = useState(\"\");\r\n const [confirmPw, setConfirmPw] = useState(\"\");\r\n const [showCurrentPw, setShowCurrentPw] = useState(false);\r\n const [showNewPw, setShowNewPw] = useState(false);\r\n const [showConfirmPw, setShowConfirmPw] = useState(false);\r\n const [pwLoading, setPwLoading] = useState(false);\r\n\r\n const [twoFactorEnabled, setTwoFactorEnabled] = useState(\r\n initialTwoFactorEnabled,\r\n );\r\n\r\n const [isMounted, setIsMounted] = useState(false);\r\n const isDesktopRaw = useBreakpointValue({ base: false, md: true });\r\n const isDesktop = isMounted ? (isDesktopRaw ?? false) : false;\r\n\r\n useEffect(() => {\r\n setIsMounted(true);\r\n\r\n if (!enableLocalStorage || typeof window === \"undefined\") return;\r\n\r\n setFontSizeLocal(localStorage.getItem(FONT_SIZE_STORAGE_KEY) ?? \"md\");\r\n\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n if (stored) setQuickNavHrefs(JSON.parse(stored) as string[]);\r\n } catch {\r\n setQuickNavHrefs(initialQuickNavHrefs);\r\n }\r\n }, [enableLocalStorage, initialQuickNavHrefs, storageKey]);\r\n\r\n useEffect(() => {\r\n setEditName(user.displayName);\r\n }, [user.displayName]);\r\n\r\n const availableOptions = useMemo(\r\n () =>\r\n availableNavOptions.filter(\r\n (option) => !user.role || option.roles.includes(user.role),\r\n ),\r\n [availableNavOptions, user.role],\r\n );\r\n\r\n const unpinnedOptions = availableOptions.filter(\r\n (option) => !quickNavHrefs.includes(option.key),\r\n );\r\n\r\n const pwStrength = calcPwStrength(newPw);\r\n const pwMeta = PW_STRENGTH_META[pwStrength] ?? PW_STRENGTH_META[0];\r\n const fontSizeLabel =\r\n fontSize === \"sm\" ? \"Small\" : fontSize === \"lg\" ? \"Large\" : \"Normal\";\r\n\r\n const resetPasswordForm = () => {\r\n setCurrentPw(\"\");\r\n setNewPw(\"\");\r\n setConfirmPw(\"\");\r\n setShowCurrentPw(false);\r\n setShowNewPw(false);\r\n setShowConfirmPw(false);\r\n };\r\n\r\n const handleColorMode = (mode: ColorModeValue) => {\r\n setFallbackColorMode(mode);\r\n onColorModeChange?.(mode);\r\n };\r\n\r\n const handleFontSize = (size: string) => {\r\n const sizeMap: Record<string, string> = {\r\n sm: \"14px\",\r\n md: \"16px\",\r\n lg: \"18px\",\r\n };\r\n\r\n if (enableLocalStorage && typeof window !== \"undefined\") {\r\n localStorage.setItem(FONT_SIZE_STORAGE_KEY, size);\r\n document.documentElement.style.fontSize = sizeMap[size] || \"16px\";\r\n }\r\n\r\n setFontSizeLocal(size);\r\n };\r\n\r\n const saveQuickNav = (hrefs: string[]) => {\r\n setQuickNavHrefs(hrefs);\r\n\r\n if (enableLocalStorage && typeof window !== \"undefined\") {\r\n localStorage.setItem(storageKey, JSON.stringify(hrefs));\r\n }\r\n };\r\n\r\n const addNavItem = (href: string) => {\r\n if (\r\n quickNavHrefs.length >= maxQuickNavItems ||\r\n quickNavHrefs.includes(href)\r\n ) {\r\n return;\r\n }\r\n\r\n saveQuickNav([...quickNavHrefs, href]);\r\n };\r\n\r\n const removeNavItem = (href: string) => {\r\n saveQuickNav(quickNavHrefs.filter((item) => item !== href));\r\n };\r\n\r\n const moveNavItem = (idx: number, dir: -1 | 1) => {\r\n const newIdx = idx + dir;\r\n if (newIdx < 0 || newIdx >= quickNavHrefs.length) return;\r\n\r\n const updated = [...quickNavHrefs];\r\n [updated[idx], updated[newIdx]] = [updated[newIdx]!, updated[idx]!];\r\n saveQuickNav(updated);\r\n };\r\n\r\n const replaceNavItem = (idx: number, newHref: string) => {\r\n const updated = [...quickNavHrefs];\r\n updated[idx] = newHref;\r\n saveQuickNav(updated);\r\n setReplacingIdx(null);\r\n };\r\n\r\n const handleSaveAccount = async () => {\r\n const trimmed = editName.trim();\r\n\r\n if (!trimmed) {\r\n onToast(\"error\", \"Display name cannot be empty\");\r\n return;\r\n }\r\n\r\n setEditLoading(true);\r\n\r\n try {\r\n await onSaveAccount?.({ displayName: trimmed });\r\n onToast(\"success\", \"Account updated\");\r\n setProfileView(\"main\");\r\n } catch {\r\n onToast(\"error\", \"Failed to update account\");\r\n } finally {\r\n setEditLoading(false);\r\n }\r\n };\r\n\r\n const handleChangePassword = async () => {\r\n if (!currentPw || !newPw || !confirmPw) {\r\n onToast(\"error\", \"Please fill in all fields\");\r\n return;\r\n }\r\n\r\n if (newPw !== confirmPw) {\r\n onToast(\"error\", \"New passwords do not match\");\r\n return;\r\n }\r\n\r\n if (pwStrength < 2) {\r\n onToast(\"error\", \"Password is too weak\");\r\n return;\r\n }\r\n\r\n setPwLoading(true);\r\n\r\n try {\r\n await onChangePassword?.({\r\n currentPassword: currentPw,\r\n newPassword: newPw,\r\n });\r\n onToast(\"success\", \"Password changed successfully\");\r\n resetPasswordForm();\r\n setProfileView(\"main\");\r\n } catch {\r\n onToast(\"error\", \"Failed to change password\");\r\n } finally {\r\n setPwLoading(false);\r\n }\r\n };\r\n\r\n const handleSignOut = async () => {\r\n try {\r\n await onSignOut?.();\r\n onToast(\"success\", \"Signed out\");\r\n } catch {\r\n onToast(\"error\", \"Failed to sign out\");\r\n }\r\n };\r\n\r\n const handleToggleTwoFactor = async () => {\r\n const nextValue = !twoFactorEnabled;\r\n setTwoFactorEnabled(nextValue);\r\n\r\n try {\r\n await onTwoFactorChange?.(nextValue);\r\n } catch {\r\n setTwoFactorEnabled(!nextValue);\r\n onToast(\"error\", \"Failed to update two factor authentication\");\r\n }\r\n };\r\n\r\n const roleLabel = user.role ? (ROLE_LABELS[user.role] ?? user.role) : \"\";\r\n\r\n const mainContent = (\r\n <>\r\n <Box\r\n bg=\"var(--chakra-colors-primary)\"\r\n pt={12}\r\n pb={8}\r\n px={4}\r\n textAlign=\"center\"\r\n >\r\n <Avatar.Root\r\n size=\"2xl\"\r\n mx=\"auto\"\r\n mb={4}\r\n colorPalette={pickPalette(user.displayName || \"U\")}\r\n >\r\n {user.avatarSrc && (\r\n <Avatar.Image src={user.avatarSrc} alt={user.displayName} />\r\n )}\r\n <Avatar.Fallback name={user.displayName} />\r\n </Avatar.Root>\r\n\r\n <Text\r\n color=\"white\"\r\n fontWeight=\"bold\"\r\n fontSize=\"xl\"\r\n lineHeight=\"1.2\"\r\n mb={1}\r\n >\r\n {user.displayName}\r\n </Text>\r\n\r\n {user.email && (\r\n <Text color=\"rgba(255,255,255,0.75)\" fontSize=\"sm\" mb={2}>\r\n {user.email}\r\n </Text>\r\n )}\r\n\r\n {roleLabel && (\r\n <Box display=\"inline-flex\">\r\n <Badge\r\n bg=\"rgba(255,255,255,0.15)\"\r\n color=\"white\"\r\n borderRadius=\"full\"\r\n px={3}\r\n py={0.5}\r\n fontSize=\"xs\"\r\n fontWeight=\"medium\"\r\n border=\"1px solid rgba(255,255,255,0.3)\"\r\n >\r\n {roleLabel}\r\n </Badge>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n <Box px={4} pt={5} pb={1}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n mb={3}\r\n >\r\n Account\r\n </Text>\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => setProfileView(\"edit-account\")}\r\n >\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={3}\r\n px={isDesktop ? 2 : 0}\r\n borderRadius=\"lg\"\r\n bg={\r\n isDesktop && profileView === \"edit-account\"\r\n ? \"gray.100\"\r\n : undefined\r\n }\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuUser size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Edit Account\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Update your display name and contact details\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n\r\n <Separator />\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => {\r\n resetPasswordForm();\r\n setProfileView(\"change-password\");\r\n }}\r\n >\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={3}\r\n px={isDesktop ? 2 : 0}\r\n borderRadius=\"lg\"\r\n bg={\r\n isDesktop && profileView === \"change-password\"\r\n ? \"gray.100\"\r\n : undefined\r\n }\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuLock size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Change Password\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Test locally through the callback prop\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n\r\n <Separator />\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuShield size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Two Factor Authentication\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {twoFactorEnabled ? \"Enabled\" : \"Disabled\"}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <Box\r\n role=\"switch\"\r\n aria-checked={twoFactorEnabled}\r\n aria-label=\"Toggle two factor authentication\"\r\n tabIndex={0}\r\n onClick={handleToggleTwoFactor}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\" || event.key === \" \") {\r\n event.preventDefault();\r\n void handleToggleTwoFactor();\r\n }\r\n }}\r\n w=\"44px\"\r\n h=\"26px\"\r\n borderRadius=\"full\"\r\n bg={twoFactorEnabled ? \"var(--chakra-colors-primary)\" : \"gray.300\"}\r\n position=\"relative\"\r\n transition=\"background 0.15s\"\r\n cursor=\"pointer\"\r\n flexShrink={0}\r\n outline=\"none\"\r\n >\r\n <Box\r\n position=\"absolute\"\r\n top=\"3px\"\r\n left={twoFactorEnabled ? \"21px\" : \"3px\"}\r\n w=\"20px\"\r\n h=\"20px\"\r\n borderRadius=\"full\"\r\n bg=\"white\"\r\n boxShadow=\"sm\"\r\n transition=\"left 0.15s\"\r\n />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n\r\n <Box px={4} pt={4} pb={2}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n mb={3}\r\n >\r\n Preferences\r\n </Text>\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n {colorMode === \"dark\" ? (\r\n <LuMoon size={16} />\r\n ) : (\r\n <LuSun size={16} />\r\n )}\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Appearance\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {colorMode === \"light\" ? \"Light mode\" : \"Dark mode\"}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={1.5}>\r\n {([\"light\", \"dark\"] as const).map((mode) => {\r\n const isActive = colorMode === mode;\r\n\r\n return (\r\n <Button\r\n key={mode}\r\n size=\"sm\"\r\n variant=\"outline\"\r\n px={3}\r\n h=\"34px\"\r\n gap={1.5}\r\n bg={isActive ? \"var(--chakra-colors-primary)\" : \"transparent\"}\r\n color={isActive ? \"white\" : \"gray.600\"}\r\n borderColor={\r\n isActive ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n _hover={{\r\n bg: isActive ? \"var(--chakra-colors-primary)\" : \"gray.50\",\r\n }}\r\n onClick={() => handleColorMode(mode)}\r\n >\r\n {mode === \"light\" ? (\r\n <LuSun size={13} />\r\n ) : (\r\n <LuMoon size={13} />\r\n )}\r\n <Text\r\n fontSize=\"xs\"\r\n textTransform=\"capitalize\"\r\n fontWeight=\"medium\"\r\n >\r\n {mode}\r\n </Text>\r\n </Button>\r\n );\r\n })}\r\n </HStack>\r\n </Flex>\r\n\r\n <Separator />\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n fontWeight=\"bold\"\r\n fontSize=\"15px\"\r\n flexShrink={0}\r\n >\r\n A\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Text Size\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {fontSizeLabel}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={1}>\r\n {FONT_SIZES.map((option) => {\r\n const isActive = fontSize === option.value;\r\n\r\n return (\r\n <Button\r\n key={option.value}\r\n size=\"sm\"\r\n variant=\"outline\"\r\n w=\"40px\"\r\n h=\"34px\"\r\n p={0}\r\n bg={isActive ? \"var(--chakra-colors-primary)\" : \"transparent\"}\r\n color={isActive ? \"white\" : \"gray.600\"}\r\n borderColor={\r\n isActive ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n _hover={{\r\n bg: isActive ? \"var(--chakra-colors-primary)\" : \"gray.50\",\r\n }}\r\n onClick={() => handleFontSize(option.value)}\r\n title={option.title}\r\n >\r\n <Text\r\n fontWeight={isActive ? \"bold\" : \"normal\"}\r\n style={{ fontSize: `${option.scale * 13}px` }}\r\n >\r\n A\r\n </Text>\r\n </Button>\r\n );\r\n })}\r\n </HStack>\r\n </Flex>\r\n\r\n <Separator />\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => setProfileView(\"navbar-customize\")}\r\n >\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuArrowLeftRight size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Quick Navigation\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {quickNavHrefs.length} of {maxQuickNavItems} items pinned\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n </Box>\r\n\r\n <Box px={4} pt={4} pb={10}>\r\n <VStack gap={2.5}>\r\n <Button\r\n w=\"full\"\r\n variant=\"outline\"\r\n color=\"red.600\"\r\n borderColor=\"red.200\"\r\n _hover={{ bg: \"red.50\" }}\r\n onClick={handleSignOut}\r\n >\r\n Sign Out\r\n </Button>\r\n </VStack>\r\n </Box>\r\n </>\r\n );\r\n\r\n const editAccountContent = (\r\n <>\r\n <Box px={4} pt={4} pb={3} borderBottomWidth=\"1px\" borderColor=\"gray.200\">\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => setProfileView(\"main\")}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Edit Account\r\n </Text>\r\n </Flex>\r\n </Box>\r\n\r\n <Box textAlign=\"center\" pt={5} pb={4}>\r\n <Avatar.Root size=\"xl\" mx=\"auto\" mb={1}>\r\n {user.avatarSrc && (\r\n <Avatar.Image src={user.avatarSrc} alt={editName} />\r\n )}\r\n <Avatar.Fallback name={editName} />\r\n </Avatar.Root>\r\n </Box>\r\n\r\n <VStack gap={4} px={4} pb={10} align=\"stretch\">\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Display Name\r\n </Text>\r\n <Input\r\n value={editName}\r\n onChange={(event) => setEditName(event.target.value)}\r\n placeholder=\"Display name\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Email\r\n </Text>\r\n <Input\r\n value={user.email ?? \"\"}\r\n readOnly\r\n opacity={0.55}\r\n cursor=\"not-allowed\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Mobile Number\r\n </Text>\r\n <Input\r\n value={user.mobileNumber ?? \"\"}\r\n readOnly\r\n opacity={0.55}\r\n cursor=\"not-allowed\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Button\r\n w=\"full\"\r\n mt={2}\r\n bg=\"var(--chakra-colors-primary)\"\r\n color=\"white\"\r\n _hover={{ opacity: 0.9 }}\r\n loading={editLoading}\r\n onClick={handleSaveAccount}\r\n >\r\n Save Changes\r\n </Button>\r\n </VStack>\r\n </>\r\n );\r\n\r\n const changePasswordContent = (\r\n <>\r\n <Box px={4} pt={4} pb={3} borderBottomWidth=\"1px\" borderColor=\"gray.200\">\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => setProfileView(\"main\")}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Change Password\r\n </Text>\r\n </Flex>\r\n </Box>\r\n\r\n <VStack gap={5} px={4} pt={6} pb={10}>\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Current Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle current password visibility\"\r\n onClick={() => setShowCurrentPw(!showCurrentPw)}\r\n >\r\n {showCurrentPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showCurrentPw ? \"text\" : \"password\"}\r\n value={currentPw}\r\n onChange={(event) => setCurrentPw(event.target.value)}\r\n placeholder=\"Enter current password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n New Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle new password visibility\"\r\n onClick={() => setShowNewPw(!showNewPw)}\r\n >\r\n {showNewPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showNewPw ? \"text\" : \"password\"}\r\n value={newPw}\r\n onChange={(event) => setNewPw(event.target.value)}\r\n placeholder=\"Enter new password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n\r\n {newPw && (\r\n <Box mt={2}>\r\n <Flex gap={1} mb={1}>\r\n {[1, 2, 3, 4, 5].map((i) => (\r\n <Box\r\n key={i}\r\n flex={1}\r\n h=\"3px\"\r\n borderRadius=\"full\"\r\n bg={i <= pwStrength ? pwMeta.color : \"gray.200\"}\r\n transition=\"background 0.2s\"\r\n />\r\n ))}\r\n </Flex>\r\n <Text fontSize=\"xs\" color={pwMeta.color} fontWeight=\"medium\">\r\n {pwMeta.label}\r\n </Text>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Confirm New Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle confirm password visibility\"\r\n onClick={() => setShowConfirmPw(!showConfirmPw)}\r\n >\r\n {showConfirmPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showConfirmPw ? \"text\" : \"password\"}\r\n value={confirmPw}\r\n onChange={(event) => setConfirmPw(event.target.value)}\r\n placeholder=\"Confirm new password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n {confirmPw && confirmPw !== newPw && (\r\n <Text fontSize=\"xs\" color=\"red.500\" mt={1}>\r\n Passwords do not match\r\n </Text>\r\n )}\r\n </Box>\r\n\r\n <Button\r\n w=\"full\"\r\n mt={1}\r\n bg=\"var(--chakra-colors-primary)\"\r\n color=\"white\"\r\n _hover={{ opacity: 0.9 }}\r\n disabled={\r\n !currentPw ||\r\n !newPw ||\r\n !confirmPw ||\r\n newPw !== confirmPw ||\r\n pwStrength < 2\r\n }\r\n loading={pwLoading}\r\n onClick={handleChangePassword}\r\n >\r\n Update Password\r\n </Button>\r\n </VStack>\r\n </>\r\n );\r\n\r\n const navbarCustomizeContent = (\r\n <>\r\n <Box\r\n px={4}\r\n pt={4}\r\n pb={3}\r\n borderBottomWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n position=\"sticky\"\r\n top={0}\r\n bg=\"bg\"\r\n zIndex={1}\r\n >\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => {\r\n setReplacingIdx(null);\r\n setProfileView(\"main\");\r\n }}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Quick Navigation\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Choose up to {maxQuickNavItems} shortcuts for the bottom bar\r\n </Text>\r\n </Box>\r\n </Flex>\r\n </Box>\r\n\r\n <Box px={4} pt={5} pb={2}>\r\n <Flex align=\"center\" justify=\"space-between\" mb={3}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Pinned\r\n </Text>\r\n <Text\r\n fontSize=\"xs\"\r\n color={\r\n quickNavHrefs.length >= maxQuickNavItems\r\n ? \"orange.500\"\r\n : \"gray.400\"\r\n }\r\n fontWeight=\"medium\"\r\n >\r\n {quickNavHrefs.length} / {maxQuickNavItems}\r\n </Text>\r\n </Flex>\r\n\r\n {quickNavHrefs.length === 0 ? (\r\n <Flex\r\n align=\"center\"\r\n justify=\"center\"\r\n py={6}\r\n borderRadius=\"xl\"\r\n borderWidth=\"1px\"\r\n borderStyle=\"dashed\"\r\n borderColor=\"gray.200\"\r\n >\r\n <Text fontSize=\"sm\" color=\"gray.400\">\r\n No items pinned — add from below\r\n </Text>\r\n </Flex>\r\n ) : (\r\n <VStack gap={0}>\r\n {quickNavHrefs.map((href, idx) => {\r\n const option = availableOptions.find((item) => item.key === href);\r\n if (!option) return null;\r\n\r\n const ItemIcon = option.Icon;\r\n const isFirst = idx === 0;\r\n const isLast = idx === quickNavHrefs.length - 1;\r\n const isReplacing = replacingIdx === idx;\r\n\r\n return (\r\n <Box key={href} w=\"full\">\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={2.5}\r\n px={isReplacing ? 2 : 0}\r\n borderRadius={isReplacing ? \"lg\" : undefined}\r\n bg={isReplacing ? \"orange.50\" : undefined}\r\n borderWidth={isReplacing ? \"1px\" : undefined}\r\n borderColor={isReplacing ? \"orange.200\" : undefined}\r\n transition=\"all 0.15s\"\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"36px\"\r\n h=\"36px\"\r\n borderRadius=\"lg\"\r\n bg={\r\n isReplacing\r\n ? \"orange.400\"\r\n : \"var(--chakra-colors-primary)\"\r\n }\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"white\"\r\n flexShrink={0}\r\n >\r\n <ItemIcon size={15} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"medium\">\r\n {option.title}\r\n </Text>\r\n {isReplacing && (\r\n <Text\r\n fontSize=\"xs\"\r\n color=\"orange.500\"\r\n fontWeight=\"medium\"\r\n >\r\n Select replacement below\r\n </Text>\r\n )}\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={0.5}>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Move up\"\r\n color=\"gray.500\"\r\n disabled={isFirst || isReplacing}\r\n onClick={() => moveNavItem(idx, -1)}\r\n >\r\n <LuChevronUp size={14} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Move down\"\r\n color=\"gray.500\"\r\n disabled={isLast || isReplacing}\r\n onClick={() => moveNavItem(idx, 1)}\r\n >\r\n <LuChevronDown size={14} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant={isReplacing ? \"solid\" : \"ghost\"}\r\n aria-label={\r\n isReplacing ? \"Cancel replace\" : \"Replace item\"\r\n }\r\n bg={isReplacing ? \"orange.400\" : undefined}\r\n color={isReplacing ? \"white\" : \"gray.500\"}\r\n _hover={{ bg: isReplacing ? \"orange.500\" : \"gray.100\" }}\r\n onClick={() =>\r\n setReplacingIdx(isReplacing ? null : idx)\r\n }\r\n >\r\n <LuArrowLeftRight size={13} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Remove\"\r\n color=\"red.400\"\r\n _hover={{ bg: \"red.50\" }}\r\n disabled={isReplacing}\r\n onClick={() => removeNavItem(href)}\r\n >\r\n <LuX size={14} />\r\n </IconButton>\r\n </HStack>\r\n </Flex>\r\n {!isLast && <Separator />}\r\n </Box>\r\n );\r\n })}\r\n </VStack>\r\n )}\r\n </Box>\r\n\r\n <Separator mx={4} my={1} />\r\n\r\n <Box px={4} pt={4} pb={10}>\r\n <Flex align=\"center\" justify=\"space-between\" mb={3}>\r\n {replacingIdx !== null ? (\r\n <Box>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"orange.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Select Replacement\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\" mt={0.5}>\r\n for &quot;\r\n {\r\n availableOptions.find(\r\n (item) => item.key === quickNavHrefs[replacingIdx],\r\n )?.title\r\n }\r\n &quot;\r\n </Text>\r\n </Box>\r\n ) : (\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Available\r\n </Text>\r\n )}\r\n\r\n {replacingIdx !== null && (\r\n <Button\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n onClick={() => setReplacingIdx(null)}\r\n >\r\n Cancel\r\n </Button>\r\n )}\r\n </Flex>\r\n\r\n {unpinnedOptions.length === 0 ? (\r\n <Text fontSize=\"sm\" color=\"gray.400\" py={3} textAlign=\"center\">\r\n All available items are pinned\r\n </Text>\r\n ) : (\r\n <VStack gap={0}>\r\n {unpinnedOptions.map((option, idx) => {\r\n const ItemIcon = option.Icon;\r\n const isLast = idx === unpinnedOptions.length - 1;\r\n const isReplacingMode = replacingIdx !== null;\r\n const canAdd = quickNavHrefs.length < maxQuickNavItems;\r\n const actionEnabled = isReplacingMode || canAdd;\r\n\r\n return (\r\n <Box key={option.key} w=\"full\">\r\n <Flex justify=\"space-between\" align=\"center\" py={2.5}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"36px\"\r\n h=\"36px\"\r\n borderRadius=\"lg\"\r\n bg={isReplacingMode ? \"orange.50\" : \"gray.100\"}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color={isReplacingMode ? \"orange.500\" : \"gray.500\"}\r\n flexShrink={0}\r\n >\r\n <ItemIcon size={15} />\r\n </Box>\r\n <Text\r\n fontSize=\"sm\"\r\n fontWeight=\"medium\"\r\n color={actionEnabled ? \"inherit\" : \"gray.400\"}\r\n >\r\n {option.title}\r\n </Text>\r\n </Flex>\r\n\r\n {isReplacingMode ? (\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"outline\"\r\n aria-label=\"Use as replacement\"\r\n borderColor=\"orange.300\"\r\n color=\"orange.500\"\r\n _hover={{ bg: \"orange.50\" }}\r\n onClick={() => replaceNavItem(replacingIdx, option.key)}\r\n >\r\n <LuArrowLeftRight size={13} />\r\n </IconButton>\r\n ) : (\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"outline\"\r\n aria-label=\"Pin item\"\r\n disabled={!canAdd}\r\n borderColor={\r\n canAdd ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n color={\r\n canAdd ? \"var(--chakra-colors-primary)\" : \"gray.300\"\r\n }\r\n _hover={{ bg: canAdd ? \"blue.50\" : \"transparent\" }}\r\n onClick={() => addNavItem(option.key)}\r\n >\r\n <LuPlus size={13} />\r\n </IconButton>\r\n )}\r\n </Flex>\r\n {!isLast && <Separator />}\r\n </Box>\r\n );\r\n })}\r\n </VStack>\r\n )}\r\n </Box>\r\n </>\r\n );\r\n\r\n const subViewContent =\r\n profileView === \"edit-account\"\r\n ? editAccountContent\r\n : profileView === \"change-password\"\r\n ? changePasswordContent\r\n : profileView === \"navbar-customize\"\r\n ? navbarCustomizeContent\r\n : null;\r\n\r\n if (isDesktop) {\r\n return (\r\n <Flex\r\n maxW=\"6xl\"\r\n mx=\"auto\"\r\n w=\"full\"\r\n minH=\"100%\"\r\n gap={6}\r\n p={{ md: 6, lg: 8 }}\r\n align=\"start\"\r\n >\r\n <Box\r\n w={{ md: \"300px\", lg: \"340px\" }}\r\n flexShrink={0}\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n borderRadius=\"2xl\"\r\n overflow=\"hidden\"\r\n bg=\"bg\"\r\n position=\"sticky\"\r\n top={6}\r\n >\r\n {mainContent}\r\n </Box>\r\n\r\n <Box\r\n flex=\"1\"\r\n minW={0}\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n borderRadius=\"2xl\"\r\n overflow=\"hidden\"\r\n bg=\"bg\"\r\n minH=\"540px\"\r\n >\r\n {subViewContent ?? (\r\n <Flex\r\n direction=\"column\"\r\n align=\"center\"\r\n justify=\"center\"\r\n minH=\"540px\"\r\n px={6}\r\n textAlign=\"center\"\r\n color=\"gray.400\"\r\n >\r\n <Box\r\n w=\"56px\"\r\n h=\"56px\"\r\n borderRadius=\"2xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n mb={4}\r\n >\r\n <LuUser size={24} />\r\n </Box>\r\n <Text fontSize=\"sm\" mt={1} maxW=\"280px\">\r\n Choose Edit Account, Change Password, or Quick Navigation from\r\n the menu to update your details here.\r\n </Text>\r\n </Flex>\r\n )}\r\n </Box>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Box maxW=\"480px\" mx=\"auto\" w=\"full\" minH=\"100%\" bg=\"bg\">\r\n {profileView === \"main\" ? mainContent : subViewContent}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ReusableProfile;\r\n"],"mappings":"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","names":["import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","React","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_st_peter_ui","import_jsx_runtime","import_react","import_fa","import_lu","import_st_peter_ui","import_react","import_jsx_runtime","import_react","import_lu","import_jsx_runtime","import_jsx_runtime","import_react","import_fa","import_io","import_react","import_st_peter_ui","import_fa","import_io","import_react","import_st_peter_ui","import_jsx_runtime","import_react","import_lu","import_jsx_runtime","import_jsx_runtime","ReviewRows","import_jsx_runtime","import_react","import_st_peter_ui","import_lu","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_lu","import_jsx_runtime","React","Link","import_react","import_react","import_jsx_runtime","import_react","import_lu","import_fa","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/NewSaleForm/LifePlanApplication1.tsx","../src/lib/theme/layout-tokens.ts","../src/lib/theme/standard-design-tokens.ts","../src/NewSaleForm/ui/FloatingLabelInput.tsx","../src/NewSaleForm/LifePlanApplication2.tsx","../src/lib/theme/brand-colors.ts","../src/NewSaleForm/LifePlanApplication3.tsx","../src/NewSaleForm/beneficiary.tsx","../src/NewSaleForm/ui/row-item.tsx","../src/lib/applicationData.ts","../src/NewSaleForm/HealthDeclaration.tsx","../src/NewSaleForm/LifePlanApplicationFormWrapper.tsx","../src/NewSaleForm/ui/info-card.tsx","../src/NewSaleForm/ui/input-card-accordion.tsx","../src/NewSaleForm/SharedLifePlanApplication.tsx","../src/NewSaleForm/data/lifePlanSteps.tsx","../src/NewSaleForm/confirmation.tsx","../src/NewSaleForm/data/checkBoxList.tsx","../src/NewSaleForm/ui/info-card-accordion.tsx","../src/NewSaleForm/ui/horizontal-stepper.tsx","../src/NewSaleForm/LifePlanApplicationStepWrapper.tsx","../src/Generic/BottomQuickActions.tsx","../src/Generic/NotifyInstall.tsx","../src/hooks/useNotifyInstall.ts","../src/UserProfile/UserProfile.tsx"],"sourcesContent":["export { default as LifePlanApplication1 } from \"./NewSaleForm/LifePlanApplication1\";\nexport { default as LifePlanApplication2 } from \"./NewSaleForm/LifePlanApplication2\";\nexport { default as LifePlanApplication3 } from \"./NewSaleForm/LifePlanApplication3\";\n\n// Note: the file in the repo uses a lowercase filename 'beneficiary.tsx'.\nexport { default as Beneficiary } from \"./NewSaleForm/beneficiary\";\nexport { default as HealthDeclaration } from \"./NewSaleForm/HealthDeclaration\";\nexport { default as LifePlanApplicationFormWrapper } from \"./NewSaleForm/LifePlanApplicationFormWrapper\";\nexport { default as LifePlanApplicationStepWrapper } from \"./NewSaleForm/LifePlanApplicationStepWrapper\";\nexport { default as SharedLifePlanApplication } from \"./NewSaleForm/SharedLifePlanApplication\";\nexport { default as BottomQuickActions } from \"./Generic/BottomQuickActions\";\n// export type { QuickAction, BottomQuickActionsProps } from \"./Generic/BottomQuickActions\";\nexport { default as NotifyInstall } from \"./Generic/NotifyInstall\";\n// export type { NotifyInstallProps } from \"./Generic/NotifyInstall\";\n\nexport { default as UserProfile } from \"./UserProfile/UserProfile\";\nexport type {\n ProfileUser,\n NavOptionDef,\n ReusableProfileProps,\n} from \"./UserProfile/UserProfile\";\n// export { default as FloatingLabelInput } from \"./NewSaleForm/ui/floating-label-input\";\nexport type {\n IPersonalInfo,\n IAddress,\n IEmployment,\n IBeneficiary,\n BeneficiaryClass,\n IHealthDeclaration,\n IApplicationData,\n ITransactionData,\n} from \"./types/planholder\";\nexport type { CartItem } from \"./types/cartItem\";\nexport {\n createEmptyApplicationData,\n loadApplicationDataFromLocalStorage,\n saveApplicationDataToLocalStorage,\n} from \"./lib/applicationData\";\n","\"use client\";\n\nimport {\n Field,\n Grid,\n Input,\n Select,\n createListCollection,\n} from \"@chakra-ui/react\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\n// import { useOcr } from \"@/hooks/useOCR\";\nimport { useEffect, useState } from \"react\";\nimport type { IPersonalInfo } from \"../types/planholder\";\nimport { FloatingLabelInput } from \"./ui/FloatingLabelInput\";\n\ninterface LifePlanApplication1Props {\n initialData?: IPersonalInfo;\n onUpdate?: (personalInfo: IPersonalInfo, address?: any) => void;\n}\n\nconst idCollection = createListCollection({\n items: [\n { label: \"Passport\", value: \"passport\" },\n { label: \"Driver's License\", value: \"driver_license\" },\n { label: \"Philippine Identification Card\", value: \"national_id\" },\n ],\n});\n\nconst genderCollection = createListCollection({\n items: [\n { label: \"Male\", value: \"male\" },\n { label: \"Female\", value: \"female\" },\n ],\n});\n\nconst civilStatusCollection = createListCollection({\n items: [\n { label: \"Single\", value: \"single\" },\n { label: \"Married\", value: \"married\" },\n { label: \"Widowed\", value: \"widowed\" },\n { label: \"Divorced\", value: \"divorced\" },\n { label: \"Separated\", value: \"separated\" },\n { label: \"Annulled\", value: \"annulled\" },\n ],\n});\n\nconst LifePlanApplication1 = ({\n initialData,\n onUpdate,\n}: LifePlanApplication1Props) => {\n //const { runOCR } = useOcr();\n\n const [formData, setFormData] = useState<IPersonalInfo>({\n firstName: initialData?.firstName ?? \"Juan\",\n middleName: initialData?.middleName ?? \"Santos\",\n lastName: initialData?.lastName ?? \"Dela Cruz\",\n suffix: initialData?.suffix ?? \"\",\n birthDate: initialData?.birthDate ?? \"1990-05-15\",\n idType: initialData?.idType ?? \"national_id\",\n idNumber: initialData?.idNumber ?? \"1234-5678-9012\",\n height: initialData?.height ?? 5.7,\n weight: initialData?.weight ?? 154,\n gender: initialData?.gender ?? \"male\",\n civilStatus: initialData?.civilStatus ?? \"married\",\n nationality: initialData?.nationality ?? \"Filipino\",\n mobileNumber: initialData?.mobileNumber ?? \"0917-123-4567\",\n emailAddress: initialData?.emailAddress ?? \"juan.delacruz@example.com\",\n mailingAddress:\n initialData?.mailingAddress ??\n \"123 Mabini Street, Barangay San Antonio, Makati City\",\n landLineNumber: initialData?.landLineNumber ?? \"02-8123-4567\",\n });\n\n const updateFormData = (nextData: IPersonalInfo) => {\n setFormData(nextData);\n onUpdate?.(nextData);\n };\n\n // useEffect(() => {\n // runOCR();\n // }, []);\n\n useEffect(() => {\n const OCRValue =\n typeof window === \"undefined\" ? null : localStorage.getItem(\"ocrResult\");\n\n if (OCRValue != null) {\n try {\n const ocrData = JSON.parse(OCRValue);\n\n let formattedBirthDate = \"\";\n if (typeof ocrData?.birthDate === \"string\") {\n const [month, day, year] = ocrData.birthDate\n .split(\"/\")\n .map((part: string) => part.trim());\n\n if (month && day && year) {\n formattedBirthDate = `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}`;\n }\n }\n\n let mappedIdType = \"\";\n if (ocrData?.idType) {\n const normalizedIdType = ocrData.idType\n .toLowerCase()\n .replace(/\\s+/g, \"_\")\n .replace(/'/g, \"\");\n if (normalizedIdType.includes(\"passport\")) {\n mappedIdType = \"passport\";\n } else if (normalizedIdType.includes(\"driver\")) {\n mappedIdType = \"driver_license\";\n } else if (\n normalizedIdType.includes(\"national\") ||\n normalizedIdType.includes(\"id\")\n ) {\n mappedIdType = \"national_id\";\n }\n }\n\n const updatedData = {\n ...formData,\n firstName: ocrData?.firstName || \"\",\n lastName: ocrData?.lastName || \"\",\n middleName: ocrData?.middleName || \"\",\n birthDate: formattedBirthDate || \"\",\n idType: mappedIdType || \"\",\n };\n updateFormData(updatedData);\n } catch (e) {\n console.error(\"Failed to parse OCR value:\", e);\n localStorage.removeItem(\"ocrResult\");\n }\n }\n }, []);\n\n return (\n <Grid\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\n gap={STANDARD_SPACING.sm}\n w=\"full\"\n >\n <Field.Root>\n <Select.Root\n collection={idCollection}\n value={formData.idType ? [formData.idType] : []}\n onValueChange={(details) =>\n updateFormData({\n ...formData,\n idType: details.value[0] ?? \"\",\n })\n }\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select ID Type\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {idCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"idNumber\"\n type=\"text\"\n label=\"ID Number\"\n value={formData.idNumber || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, idNumber: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"lastName\"\n type=\"text\"\n label=\"Last Name\"\n value={formData.lastName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, lastName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"firstName\"\n type=\"text\"\n label=\"First Name\"\n value={formData.firstName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, firstName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"middleName\"\n type=\"text\"\n label=\"Middle Name\"\n value={formData.middleName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, middleName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"suffix\"\n type=\"text\"\n label=\"Suffix (Optional)\"\n value={formData.suffix || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, suffix: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Date of Birth</Field.Label>\n <Input\n id=\"dateOfBirth\"\n type=\"date\"\n value={formData.birthDate || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, birthDate: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Date of Naturalization</Field.Label>\n <Input id=\"dateOfNeutralization\" type=\"date\" />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"height\"\n label=\"Height (ft)\"\n value={formData.height ? String(formData.height) : \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n height: parseFloat(e.target.value),\n })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"weight\"\n label=\"Weight (lbs)\"\n value={formData.weight ? String(formData.weight) : \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n weight: parseFloat(e.target.value),\n })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n collection={genderCollection}\n value={formData.gender ? [formData.gender] : []}\n onValueChange={(details) =>\n updateFormData(\n details.value[0]\n ? { ...formData, gender: details.value[0] }\n : formData,\n )\n }\n >\n <Select.HiddenSelect id=\"gender\" />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Gender\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {genderCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n collection={civilStatusCollection}\n value={formData.civilStatus ? [formData.civilStatus] : []}\n onValueChange={(details) =>\n updateFormData({\n ...formData,\n ...(details.value[0] ? { civilStatus: details.value[0] } : {}),\n })\n }\n >\n <Select.HiddenSelect id=\"civilStatus\" />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Civil Status\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {civilStatusCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"nationality\"\n type=\"text\"\n label=\"Nationality\"\n value={formData.nationality || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, nationality: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"mobileNumber\"\n type=\"text\"\n label=\"Mobile Number\"\n value={formData.mobileNumber || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, mobileNumber: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"landlineNumber\"\n type=\"text\"\n label=\"Landline Number\"\n value={formData.landLineNumber || \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n landLineNumber: e.target.value,\n })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"email\"\n type=\"email\"\n label=\"Email Address\"\n value={formData.emailAddress || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, emailAddress: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"mailingAddress\"\n type=\"text\"\n label=\"Mailing Address\"\n value={formData.mailingAddress || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, mailingAddress: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"insurability\"\n type=\"text\"\n label=\"Insurability\"\n value=\"Insurable\"\n readOnly\n />\n </Field.Root>\n </Grid>\n );\n};\n\nexport default LifePlanApplication1;\n","export const RESPONSIVE_LAYOUT_TOKENS = {\n grid: {\n mobile: {\n columns: 4,\n gutter: \"16px\",\n marginMin: \"16px\",\n marginMax: \"32px\",\n minWidth: \"320px\",\n maxWidth: \"768px\",\n },\n tablet: {\n columns: 8,\n gutterMin: \"16px\",\n gutterMax: \"24px\",\n marginMin: \"40px\",\n marginMax: \"80px\",\n contentMinWidth: \"600px\",\n contentMaxWidth: \"940px\",\n },\n desktop: {\n columns: 12,\n gutterMin: \"16px\",\n gutterMax: \"32px\",\n marginMin: \"80px\",\n marginMax: \"120px\",\n contentMinWidth: \"1200px\",\n contentMaxWidth: \"1440px\",\n },\n },\n pagePadding: {\n base: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"64px\",\n },\n navigationOffset: {\n base: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"48px\",\n },\n sectionGap: {\n base: \"32px\",\n md: \"48px\",\n lg: \"64px\",\n },\n card: {\n gap: {\n base: \"16px\",\n md: \"24px\",\n },\n padding: {\n base: \"16px\",\n md: \"24px\",\n },\n mobilePadding: {\n base: \"16px\",\n md: \"20px\",\n },\n },\n form: {\n fieldGap: \"16px\",\n labelValueGapMin: \"8px\",\n labelValueGapMax: \"12px\",\n containerMinWidth: \"480px\",\n containerMaxWidth: \"720px\",\n },\n search: {\n width: {\n base: \"100%\",\n mdMin: \"240px\",\n mdMax: \"320px\",\n },\n heightMin: \"40px\",\n heightMax: \"48px\",\n },\n} as const;\n\nexport const PAGE_PADDING = RESPONSIVE_LAYOUT_TOKENS.pagePadding;\nexport const SECTION_GAP = RESPONSIVE_LAYOUT_TOKENS.sectionGap;\nexport const CARD_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.card;\nexport const FORM_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.form;\nexport const SEARCH_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.search;\n","import { RESPONSIVE_LAYOUT_TOKENS } from \"./layout-tokens\";\n\nexport const STANDARD_SPACING = {\n xs: \"8px\",\n sm: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"48px\",\n section: \"64px\",\n pageMobile: RESPONSIVE_LAYOUT_TOKENS.pagePadding.base,\n pageTablet: RESPONSIVE_LAYOUT_TOKENS.pagePadding.md,\n pageDesktop: RESPONSIVE_LAYOUT_TOKENS.pagePadding.lg,\n pageDesktopMax: RESPONSIVE_LAYOUT_TOKENS.pagePadding.xl,\n cardGap: RESPONSIVE_LAYOUT_TOKENS.card.gap.base,\n formFieldGap: RESPONSIVE_LAYOUT_TOKENS.form.fieldGap,\n labelValueGap: RESPONSIVE_LAYOUT_TOKENS.form.labelValueGapMin,\n} as const;\n\nexport const STANDARD_RADIUS = {\n sm: \"4px\",\n md: \"8px\",\n lg: \"12px\",\n xl: \"16px\",\n full: \"9999px\",\n circle: \"50%\",\n} as const;\n\nexport const STANDARD_SHADOWS = {\n level1: \"0px 2px 8px rgba(0,0,0,0.06)\",\n level2: \"0px 4px 12px rgba(0,0,0,0.08)\",\n level3: \"0px 8px 24px rgba(0,0,0,0.10)\",\n level4: \"0px 12px 32px rgba(0,0,0,0.12)\",\n} as const;\n\nexport const STANDARD_SIZES = {\n iconButton: {\n sm: \"32px\",\n md: \"40px\",\n lg: \"48px\",\n },\n button: {\n sm: {\n height: \"32px\",\n minWidth: \"72px\",\n fontSize: \"12px\",\n fontWeight: \"600\",\n lineHeight: \"20px\",\n letterSpacing: \"0.5px\",\n },\n md: {\n height: \"40px\",\n minWidth: \"96px\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n lineHeight: \"20px\",\n letterSpacing: \"0.5px\",\n },\n lg: {\n height: \"48px\",\n minWidth: \"112px\",\n fontSize: \"16px\",\n fontWeight: \"600\",\n lineHeight: \"24px\",\n letterSpacing: \"1px\",\n },\n xl: {\n height: \"56px\",\n minWidth: \"128px\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n lineHeight: \"28px\",\n letterSpacing: \"1px\",\n },\n },\n searchInput: {\n height: \"40px\",\n maxHeight: \"48px\",\n desktopMinWidth: \"240px\",\n desktopMaxWidth: \"320px\",\n iconSize: \"16px\",\n },\n table: {\n dragColumnWidth: \"32px\",\n selectionColumnWidth: \"40px\",\n actionsColumnWidth: \"44px\",\n rowActionWidth: \"32px\",\n headerHeight: \"40px\",\n },\n card: {\n sm: \"320px\",\n md: \"480px\",\n lg: \"800px\",\n mobilePadding: RESPONSIVE_LAYOUT_TOKENS.card.padding.base,\n desktopPadding: RESPONSIVE_LAYOUT_TOKENS.card.padding.md,\n },\n modal: {\n minWidth: \"320px\",\n maxWidth: \"480px\",\n minHeight: \"120px\",\n maxHeight: \"280px\",\n },\n reportImage: {\n logoWidth: \"250px\",\n logoHeight: \"150px\",\n },\n} as const;\n\nexport const STANDARD_BUTTON_STYLES = {\n sm: {\n h: STANDARD_SIZES.button.sm.height,\n minW: STANDARD_SIZES.button.sm.minWidth,\n px: STANDARD_SPACING.sm,\n borderRadius: STANDARD_RADIUS.md,\n fontSize: STANDARD_SIZES.button.sm.fontSize,\n fontWeight: STANDARD_SIZES.button.sm.fontWeight,\n lineHeight: STANDARD_SIZES.button.sm.lineHeight,\n },\n md: {\n h: STANDARD_SIZES.button.md.height,\n minW: STANDARD_SIZES.button.md.minWidth,\n px: STANDARD_SPACING.sm,\n borderRadius: STANDARD_RADIUS.md,\n fontSize: STANDARD_SIZES.button.md.fontSize,\n fontWeight: STANDARD_SIZES.button.md.fontWeight,\n lineHeight: STANDARD_SIZES.button.md.lineHeight,\n },\n} as const;\n\nexport const STANDARD_ICON_BUTTON_STYLES = {\n sm: {\n boxSize: STANDARD_SIZES.iconButton.sm,\n minW: STANDARD_SIZES.iconButton.sm,\n borderRadius: STANDARD_RADIUS.md,\n },\n md: {\n boxSize: STANDARD_SIZES.iconButton.md,\n minW: STANDARD_SIZES.iconButton.md,\n borderRadius: STANDARD_RADIUS.md,\n },\n} as const;\n","\"use client\";\r\n\r\nimport type { InputProps } from \"@chakra-ui/react\";\r\nimport {\r\n Box,\r\n Field,\r\n Input,\r\n defineStyle,\r\n useControllableState,\r\n} from \"@chakra-ui/react\";\r\nimport { useState } from \"react\";\r\n\r\nexport interface FloatingLabelInputProps extends InputProps {\r\n label: React.ReactNode;\r\n value?: string | undefined;\r\n defaultValue?: string | undefined;\r\n onValueChange?: ((value: string) => void) | undefined;\r\n}\r\n\r\nexport const FloatingLabelInput = (props: FloatingLabelInputProps) => {\r\n const { label, onValueChange, value, defaultValue = \"\", ...rest } = props;\r\n\r\n const [inputState, setInputState] = useControllableState({\r\n defaultValue,\r\n onChange: onValueChange,\r\n value,\r\n });\r\n\r\n const [focused, setFocused] = useState(false);\r\n const shouldFloat = inputState.length > 0 || focused;\r\n\r\n return (\r\n <Box pos=\"relative\" w=\"full\">\r\n <Input\r\n {...rest}\r\n h=\"12\"\r\n pt={shouldFloat ? \"5\" : \"2\"}\r\n pb=\"1\"\r\n fontSize=\"sm\"\r\n fontWeight=\"semibold\"\r\n borderWidth=\"1.5px\"\r\n borderRadius=\"lg\"\r\n /* hide native placeholder — the label acts as one */\r\n _placeholder={{ color: \"transparent\" }}\r\n onFocus={(e) => {\r\n props.onFocus?.(e);\r\n setFocused(true);\r\n }}\r\n onBlur={(e) => {\r\n props.onBlur?.(e);\r\n setFocused(false);\r\n }}\r\n onChange={(e) => {\r\n props.onChange?.(e);\r\n setInputState(e.target.value);\r\n }}\r\n value={inputState}\r\n data-float={shouldFloat || undefined}\r\n />\r\n\r\n <Field.Label css={floatingStyles} data-float={shouldFloat || undefined}>\r\n {label}\r\n </Field.Label>\r\n </Box>\r\n );\r\n};\r\n\r\nconst floatingStyles = defineStyle({\r\n /* placeholder state — vertically centred inside the input */\r\n pos: \"absolute\",\r\n top: \"50%\",\r\n transform: \"translateY(-50%)\",\r\n insetStart: \"3\",\r\n fontSize: \"sm\",\r\n fontWeight: \"normal\",\r\n color: \"gray.400\",\r\n bg: \"bg\",\r\n px: \"0.5\",\r\n pointerEvents: \"none\",\r\n transition:\r\n \"top 0.15s ease, font-size 0.15s ease, color 0.15s ease, transform 0.15s ease\",\r\n\r\n /* floated state — sits above the border, clearly a label */\r\n \"&[data-float]\": {\r\n top: \"-2\",\r\n transform: \"translateY(0)\",\r\n fontSize: \"xs\",\r\n fontWeight: \"medium\",\r\n color: \"gray.400\",\r\n insetStart: \"2.5\",\r\n },\r\n});\r\n","\"use client\";\nimport {\n VStack,\n SimpleGrid,\n Box,\n Text,\n Select,\n createListCollection,\n Portal,\n Field,\n} from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\n// import { useOcr } from \"@/hooks/useOCR\";\n// import { GeoApifyService } from \"@/services/API/GeoApifyService\";\nimport type { IAddress } from \"../types/planholder\";\nimport { BRAND_COLORS } from \"../lib/theme/brand-colors\";\nimport {\n STANDARD_RADIUS,\n STANDARD_SHADOWS,\n STANDARD_SPACING,\n} from \"../lib/theme/standard-design-tokens\";\nimport { FloatingLabelInput } from \"./ui/FloatingLabelInput\";\n\nconst provinceOptions = [\n \"Abra\",\n \"Agusan del Norte\",\n \"Agusan del Sur\",\n \"Aklan\",\n \"Albay\",\n \"Antique\",\n \"Apayao\",\n \"Aurora\",\n \"Basilan\",\n \"Bataan\",\n \"Batanes\",\n \"Batangas\",\n \"Benguet\",\n \"Biliran\",\n \"Bohol\",\n \"Bukidnon\",\n \"Bulacan\",\n \"Cagayan\",\n \"Camarines Norte\",\n \"Camarines Sur\",\n \"Camiguin\",\n \"Capiz\",\n \"Catanduanes\",\n \"Cavite\",\n \"Cebu\",\n \"Cotabato\",\n \"Davao de Oro\",\n \"Davao del Norte\",\n \"Davao del Sur\",\n \"Davao Occidental\",\n \"Davao Oriental\",\n \"Dinagat Islands\",\n \"Eastern Samar\",\n \"Guimaras\",\n \"Ifugao\",\n \"Ilocos Norte\",\n \"Ilocos Sur\",\n \"Iloilo\",\n \"Isabela\",\n \"Kalinga\",\n \"La Union\",\n \"Laguna\",\n \"Lanao del Norte\",\n \"Lanao del Sur\",\n \"Leyte\",\n \"Maguindanao del Norte\",\n \"Maguindanao del Sur\",\n \"Marinduque\",\n \"Masbate\",\n \"Metro Manila\",\n \"Misamis Occidental\",\n \"Misamis Oriental\",\n \"Mountain Province\",\n \"Negros Occidental\",\n \"Negros Oriental\",\n \"Northern Samar\",\n \"Nueva Ecija\",\n \"Nueva Vizcaya\",\n \"Occidental Mindoro\",\n \"Oriental Mindoro\",\n \"Palawan\",\n \"Pampanga\",\n \"Pangasinan\",\n \"Quezon\",\n \"Quirino\",\n \"Rizal\",\n \"Romblon\",\n \"Samar\",\n \"Sarangani\",\n \"Siquijor\",\n \"Sorsogon\",\n \"South Cotabato\",\n \"Southern Leyte\",\n \"Sultan Kudarat\",\n \"Sulu\",\n \"Surigao del Norte\",\n \"Surigao del Sur\",\n \"Tarlac\",\n \"Tawi-Tawi\",\n \"Zambales\",\n \"Zamboanga del Norte\",\n \"Zamboanga del Sur\",\n \"Zamboanga Sibugay\",\n].map((prov) => ({ label: prov, value: prov }));\n\nconst cityOptions = [\n \"Quezon City\",\n \"Manila\",\n \"Davao City\",\n \"Caloocan\",\n \"Cebu City\",\n \"Zamboanga City\",\n \"Taguig\",\n \"Antipolo\",\n \"Pasig\",\n \"Valenzuela\",\n \"Las Piñas\",\n \"Makati\",\n \"San Jose del Monte\",\n \"Bacolod\",\n \"Muntinlupa\",\n \"Cagayan de Oro\",\n \"Dasmariñas\",\n \"Pasay\",\n \"General Santos\",\n \"Santa Rosa\",\n \"Iloilo City\",\n \"Parañaque\",\n \"Bacoor\",\n \"Mandaluyong\",\n \"Angeles\",\n \"Imus\",\n \"Lapu-Lapu\",\n \"Mandaue\",\n \"Baguio\",\n \"San Fernando\",\n \"Biñan\",\n \"Butuan\",\n \"San Pedro\",\n \"Navotas\",\n \"Tanauan\",\n \"Malabon\",\n \"Ormoc\",\n \"Legazpi\",\n \"Olongapo\",\n \"Cabuyao\",\n \"Tacloban\",\n \"Naga\",\n \"San Pablo\",\n \"Valencia\",\n \"Roxas\",\n \"Tarlac City\",\n \"Lucena\",\n \"Tagum\",\n \"Calamba\",\n \"Puerto Princesa\",\n \"Gapan\",\n \"Cotabato City\",\n \"Santiago\",\n \"Tuguegarao\",\n \"Bayawan\",\n \"Dipolog\",\n \"Pagadian\",\n \"Kidapawan\",\n \"Koronadal\",\n \"Surigao\",\n \"Dagupan\",\n \"Digos\",\n \"Candon\",\n \"Tabaco\",\n \"Baybay\",\n \"San Carlos\",\n \"Gingoog\",\n \"Sorsogon City\",\n \"Cauayan\",\n \"Science City of Muñoz\",\n \"Calapan\",\n \"San Jose\",\n \"Urdaneta\",\n \"Bayugan\",\n \"San Fernando (La Union)\",\n \"Bais\",\n \"Talisay\",\n \"Polomolok\",\n \"Panabo\",\n \"Danao\",\n \"Santa Maria\",\n \"Silay\",\n \"Cavite City\",\n \"Bogo\",\n \"Tabuk\",\n \"Trece Martires\",\n \"Ligao\",\n \"Canlaon\",\n \"Dumaguete\",\n \"Malaybalay\",\n \"Baclayon\",\n \"San Juan\",\n \"Laoag\",\n \"Mati\",\n \"Bangued\",\n \"Baler\",\n \"Vigan\",\n \"Puerto Galera\",\n \"Marawi\",\n \"Basilan City\",\n \"Isabela City\",\n \"Lamitan\",\n \"Jolo\",\n \"Bongao\",\n \"Ipil\",\n].map((city) => ({ label: city, value: city }));\n\nconst districtOptions = cityOptions;\nconst barangayOptions = cityOptions;\n\nconst provinceCollection = createListCollection({ items: provinceOptions });\nconst cityCollection = createListCollection({ items: cityOptions });\nconst districtCollection = createListCollection({ items: districtOptions });\nconst barangayCollection = createListCollection({ items: barangayOptions });\n\ninterface LifePlanApplication2Props {\n onAddressUpdate?: (address: IAddress) => void;\n}\n\nconst LifePlanApplication2 = ({\n onAddressUpdate,\n}: LifePlanApplication2Props) => {\n const OCRValue =\n typeof window === \"undefined\" ? null : localStorage.getItem(\"ocrResult\");\n // const { runOCR, data } = useOcr();\n const [lot, setLot] = useState(\"123\");\n const [street, setStreet] = useState(\"Mabini Street\");\n const [city, setCity] = useState(\"Makati\");\n const [province, setProvince] = useState(\"Metro Manila\");\n const [district, setDistrict] = useState(\"Taguig\");\n const [barangay, setBarangay] = useState(\"San Juan\");\n\n // const parseAddress = async (address: string) => {\n // if (!address) return;\n //\n // try {\n // const result = await GeoApifyService.autocompleteAddress(address);\n //\n // setLot(result.houseNumber ?? \"\");\n // setStreet(result.street ?? \"\");\n // setCity(result.city ?? \"\");\n // setDistrict(result.suburb ?? \"\");\n // setProvince(result.province ?? \"\");\n // } catch (error) {\n // console.error(\"Error parsing address:\", error);\n // }\n // };\n\n // useEffect(() => {\n // if (OCRValue != null) {\n // const ocrData = JSON.parse(OCRValue);\n // const address = ocrData.addressLine || \"\";\n // parseAddress(address);\n // } else if (data?.response) {\n // const address = data.response.addressLine || \"\";\n // parseAddress(address);\n // }\n // }, [OCRValue, data]);\n\n useEffect(() => {\n onAddressUpdate?.({\n lot,\n street,\n barangay,\n district,\n city,\n province,\n });\n }, [lot, street, barangay, city, province, district]);\n\n // useEffect(() => {\n // runOCR();\n // }, []);\n\n return (\n <Box\n // bg={BRAND_COLORS.white}\n // borderWidth=\"1px\"\n // borderColor={BRAND_COLORS.neutralBorder}\n // borderRadius={STANDARD_RADIUS.lg}\n // boxShadow={STANDARD_SHADOWS.level1}\n p={{ base: STANDARD_SPACING.sm, md: STANDARD_SPACING.md }}\n >\n <VStack align=\"stretch\" gap={STANDARD_SPACING.md}>\n {/* <Box>\n <Text\n color={BRAND_COLORS.neutralText}\n fontSize={{ base: \"18px\", md: \"20px\" }}\n fontWeight=\"700\"\n lineHeight=\"1.3\"\n >\n Residential Address\n </Text>\n </Box> */}\n\n <SimpleGrid columns={{ base: 1, md: 2 }} gap={STANDARD_SPACING.sm}>\n <Field.Root>\n <Select.Root\n value={[province]}\n onValueChange={(e) => setProvince(e.value[0] ?? \"\")}\n collection={provinceCollection}\n width=\"100%\"\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select Province\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Portal>\n <Select.Positioner>\n <Select.Content>\n {provinceOptions.map((item) => (\n <Select.Item item={item} key={item.value}>\n {item.label}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Portal>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n value={[city]}\n onValueChange={(e) => setCity(e.value[0] ?? \"\")}\n collection={cityCollection}\n width=\"100%\"\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select City\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Portal>\n <Select.Positioner>\n <Select.Content>\n {cityOptions.map((item) => (\n <Select.Item item={item} key={item.value}>\n {item.label}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Portal>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n value={[district]}\n onValueChange={(e) => setDistrict(e.value[0] ?? \"\")}\n collection={districtCollection}\n width=\"100%\"\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select District\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Portal>\n <Select.Positioner>\n <Select.Content>\n {districtOptions.map((item) => (\n <Select.Item item={item} key={item.value}>\n {item.label}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Portal>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n value={[barangay]}\n onValueChange={(e) => setBarangay(e.value[0] ?? \"\")}\n collection={barangayCollection}\n width=\"100%\"\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select Barangay\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Portal>\n <Select.Positioner>\n <Select.Content>\n {barangayOptions.map((item) => (\n <Select.Item item={item} key={item.value}>\n {item.label}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Portal>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"street\"\n label=\"Street\"\n value={street}\n onChange={(e) => setStreet(e.target.value)}\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"lotNumber\"\n label=\"Lot #\"\n value={lot}\n onChange={(e) => setLot(e.target.value)}\n />\n </Field.Root>\n </SimpleGrid>\n </VStack>\n </Box>\n );\n};\n\nexport default LifePlanApplication2;\n","export const BRAND_COLORS = {\n primaryGreen: \"#109448\",\n darkGreen: \"#006838\",\n softGreen: \"#92DDBF\",\n pastelPeaGreen: \"#ACD6A6\",\n seafoamGreen: \"#92DDBF\",\n lightCyan: \"#D3EDEE\",\n successBg: \"#F0FDF4\",\n warningBg: \"#FFF7ED\",\n warningText: \"#F1592B\",\n warningBorder: \"#F4845F\",\n errorBg: \"#FEF2F2\",\n destructiveRed: \"#BF1F2F\",\n errorRed: \"#EF4444\",\n neutralText: \"#22223B\",\n neutralBorder: \"#E5E7EB\",\n mutedBg: \"#F3F4F6\",\n subtleBg: \"#F9FAFB\",\n white: \"#FFFFFF\",\n black: \"#000000\",\n grey: \"#808080\",\n ashWhite: \"#ECECEC\",\n gold: \"#CBA135\",\n brightGold: \"#FFD026\",\n paleGold: \"#FFF48E\",\n} as const;\n","\"use client\";\n\nimport { Box, Field, SimpleGrid, Text, VStack } from \"@chakra-ui/react\";\n\nimport React from \"react\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\nimport type { IEmployment } from \"../types/planholder\";\nimport { FloatingLabelInput } from \"./ui/FloatingLabelInput\";\n\ninterface LifePlanApplication3Props {\n initialData?: IEmployment;\n onUpdate?: (employment: IEmployment) => void;\n}\n\nconst LifePlanApplication3 = ({\n initialData,\n onUpdate,\n}: LifePlanApplication3Props) => {\n const [formData, setFormData] = React.useState<IEmployment>({\n occupation: initialData?.occupation ?? \"Software Engineer\",\n employerName: initialData?.employerName ?? \"ABC Technologies Inc.\",\n employmentStatus: initialData?.employmentStatus ?? \"Regular\",\n officeAddress:\n initialData?.officeAddress ?? \"456 Ayala Avenue, Bel-Air, Makati City\",\n TIN: initialData?.TIN ?? \"123-456-789-000\",\n SSS: initialData?.SSS ?? \"34-1234567-8\",\n sourceOfIncome: initialData?.sourceOfIncome ?? \"Salary\",\n });\n\n const updateFormData = (nextData: IEmployment) => {\n setFormData(nextData);\n onUpdate?.(nextData);\n };\n\n return (\n <Box\n // bg={BRAND_COLORS.white}\n // borderWidth=\"1px\"\n // borderColor={BRAND_COLORS.neutralBorder}\n // borderRadius={STANDARD_RADIUS.lg}\n // boxShadow={STANDARD_SHADOWS.level1}\n p={{ base: STANDARD_SPACING.sm, md: STANDARD_SPACING.md }}\n >\n <VStack align=\"stretch\" gap={STANDARD_SPACING.md}>\n {/* <Box>\n <Text\n color={BRAND_COLORS.neutralText}\n fontSize={{ base: \"18px\", md: \"20px\" }}\n fontWeight=\"700\"\n lineHeight=\"1.3\"\n >\n Employment\n </Text>\n </Box> */}\n\n <SimpleGrid columns={{ base: 1, md: 2 }} gap={STANDARD_SPACING.sm}>\n <Field.Root>\n <FloatingLabelInput\n id=\"occupation\"\n label=\"Occupation\"\n value={formData.occupation ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, occupation: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"employerName\"\n label=\"Employer Name\"\n value={formData.employerName ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, employerName: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"employmentStatus\"\n label=\"Employment Status\"\n value={formData.employmentStatus ?? \"\"}\n onChange={(e) => {\n updateFormData({\n ...formData,\n employmentStatus: e.target.value,\n });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"officeAddress\"\n label=\"Office Address\"\n value={formData.officeAddress ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, officeAddress: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"tin\"\n label=\"TIN\"\n value={formData.TIN ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, TIN: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"sssGsis\"\n label=\"SSS\"\n value={formData.SSS ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, SSS: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"otherSourceOfFund\"\n label=\"Other Source of Fund\"\n value={formData.sourceOfIncome ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, sourceOfIncome: e.target.value });\n }}\n />\n </Field.Root>\n </SimpleGrid>\n </VStack>\n </Box>\n );\n};\n\nexport default LifePlanApplication3;\n","import {\n VStack,\n Box,\n Grid,\n CloseButton,\n Dialog,\n HStack,\n Portal,\n createListCollection,\n Select,\n Field,\n Flex,\n Input,\n Stack,\n IconButton,\n useBreakpointValue,\n Button,\n} from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { FaRegTrashAlt } from \"react-icons/fa\";\nimport { LuPencil } from \"react-icons/lu\";\nimport {\n Body,\n H4,\n DeleteSolidButton,\n SecondaryMdButton,\n PrimaryMdButton,\n} from \"st-peter-ui\";\n\nimport { RowItem } from \"./ui/row-item\";\nimport type { IBeneficiary } from \"../types/planholder\";\nimport {\n createEmptyApplicationData,\n loadApplicationDataFromLocalStorage,\n saveApplicationDataToLocalStorage,\n} from \"../lib/applicationData\";\nimport { FloatingLabelInput } from \"./ui/FloatingLabelInput\";\n\nconst beneficiaryTypes = createListCollection({\n items: [\n { label: \"Principal\", value: \"principal\" },\n { label: \"Contingent\", value: \"contingent\" },\n ],\n});\nconst relationshipTypes = createListCollection({\n items: [\n { label: \"Spouse\", value: \"Spouse\" },\n { label: \"Child\", value: \"Child\" },\n { label: \"Parent\", value: \"Parent\" },\n { label: \"Sibling\", value: \"Sibling\" },\n { label: \"Friend\", value: \"Friend\" },\n ],\n});\n\ntype SelectedBeneficiary = {\n type: \"principal\" | \"contingent\";\n index: number;\n};\n\nconst ReviewRows = ({\n rows,\n}: {\n rows: { label: string; value?: React.ReactNode }[];\n}) => (\n <VStack align=\"stretch\" gap={1}>\n {rows.map((row) => (\n <RowItem key={row.label} label={row.label} value={row.value} />\n ))}\n </VStack>\n);\n\ninterface BeneficiaryProps {\n onUpdate?: (\n principal: IBeneficiary | undefined,\n contingent: IBeneficiary | undefined,\n all: IBeneficiary[],\n ) => void;\n}\n\nconst Beneficiary = ({ onUpdate }: BeneficiaryProps) => {\n const isMobile = useBreakpointValue({ base: true, md: false });\n\n const [principalBeneficiaries, setPrincipalBeneficiaries] = useState<\n IBeneficiary[]\n >([]);\n\n const [contingentBeneficiaries, setContingentBeneficiaries] = useState<\n IBeneficiary[]\n >([]);\n\n const [editDialogOpen, setEditDialogOpen] = useState(false);\n const [selectedBeneficiary, setSelectedBeneficiary] =\n useState<SelectedBeneficiary | null>(null);\n\n const [formBeneficiary, setFormBeneficiary] = useState<IBeneficiary>({\n firstName: \"\",\n middleInitial: \"\",\n lastName: \"\",\n birthDate: \"\",\n address: \"\",\n relationship: \"\",\n beneficiaryClass: \"principal\",\n });\n\n const [addDialogOpen, setAddDialogOpen] = useState(false);\n const [addFormBeneficiary, setAddFormBeneficiary] = useState<IBeneficiary>({\n firstName: \"\",\n middleInitial: \"\",\n lastName: \"\",\n birthDate: \"\",\n address: \"\",\n relationship: \"\",\n beneficiaryClass: \"principal\",\n });\n\n const syncBeneficiaries = (\n principal: IBeneficiary[],\n contingent: IBeneficiary[],\n ) => {\n const allBeneficiaries = [...principal, ...contingent];\n\n onUpdate?.(\n principal.length > 0 ? principal[0] : undefined,\n contingent.length > 0 ? contingent[0] : undefined,\n allBeneficiaries,\n );\n\n const currentData =\n loadApplicationDataFromLocalStorage() ?? createEmptyApplicationData();\n\n // Drop the old single-beneficiary fields first so an emptied list clears them.\n const {\n principalBeneficiary: _oldPrincipal,\n contingentBeneficiary: _oldContingent,\n ...restData\n } = currentData;\n\n saveApplicationDataToLocalStorage({\n ...restData,\n beneficiaries: allBeneficiaries,\n ...(principal[0] ? { principalBeneficiary: principal[0] } : {}),\n ...(contingent[0] ? { contingentBeneficiary: contingent[0] } : {}),\n });\n };\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => {\n const currentData = loadApplicationDataFromLocalStorage();\n if (!currentData) return;\n\n const storedBeneficiaries = currentData.beneficiaries ?? [];\n\n let principalFromStorage = storedBeneficiaries.filter(\n (beneficiary) => beneficiary.beneficiaryClass === \"principal\",\n );\n let contingentFromStorage = storedBeneficiaries.filter(\n (beneficiary) => beneficiary.beneficiaryClass === \"contingent\",\n );\n\n if (storedBeneficiaries.length === 0) {\n if (currentData.principalBeneficiary) {\n principalFromStorage = [\n {\n ...currentData.principalBeneficiary,\n beneficiaryClass:\n currentData.principalBeneficiary.beneficiaryClass ||\n \"principal\",\n },\n ];\n }\n\n if (currentData.contingentBeneficiary) {\n contingentFromStorage = [\n {\n ...currentData.contingentBeneficiary,\n beneficiaryClass:\n currentData.contingentBeneficiary.beneficiaryClass ||\n \"contingent\",\n },\n ];\n }\n }\n\n setPrincipalBeneficiaries(principalFromStorage);\n setContingentBeneficiaries(contingentFromStorage);\n\n onUpdate?.(\n principalFromStorage.length > 0 ? principalFromStorage[0] : undefined,\n contingentFromStorage.length > 0 ? contingentFromStorage[0] : undefined,\n [...principalFromStorage, ...contingentFromStorage],\n );\n }, 0);\n\n return () => window.clearTimeout(timeoutId);\n }, [onUpdate]);\n\n const handleSaveAddBeneficiary = () => {\n if (\n !addFormBeneficiary.firstName ||\n !addFormBeneficiary.lastName ||\n !addFormBeneficiary.birthDate ||\n !addFormBeneficiary.relationship ||\n !addFormBeneficiary.address\n ) {\n alert(\"Please fill in all required fields\");\n return;\n }\n\n let newPrincipal = principalBeneficiaries;\n let newContingent = contingentBeneficiaries;\n\n if (addFormBeneficiary.beneficiaryClass === \"principal\") {\n newPrincipal = [...principalBeneficiaries, addFormBeneficiary];\n setPrincipalBeneficiaries(newPrincipal);\n } else {\n newContingent = [...contingentBeneficiaries, addFormBeneficiary];\n setContingentBeneficiaries(newContingent);\n }\n\n setAddFormBeneficiary({\n firstName: \"\",\n middleInitial: \"\",\n lastName: \"\",\n birthDate: \"\",\n relationship: \"\",\n address: \"\",\n beneficiaryClass: \"principal\",\n });\n setAddDialogOpen(false);\n console.log(\"Beneficiary added:\", addFormBeneficiary);\n\n syncBeneficiaries(newPrincipal, newContingent);\n };\n\n const formatFullName = (beneficiary: IBeneficiary) => {\n return [\n beneficiary.firstName,\n beneficiary.middleInitial,\n beneficiary.lastName,\n ]\n .filter((namePart) => namePart.trim().length > 0)\n .join(\" \");\n };\n\n const formatDateDisplay = (rawDate: string) => {\n if (!rawDate) return \"N/A\";\n const date = new Date(rawDate);\n if (Number.isNaN(date.getTime())) return rawDate;\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"2-digit\",\n year: \"numeric\",\n });\n };\n\n const handleOpenEdit = (\n type: \"principal\" | \"contingent\",\n index: number,\n beneficiary: IBeneficiary,\n ) => {\n setSelectedBeneficiary({ type, index });\n setFormBeneficiary({ ...beneficiary });\n setEditDialogOpen(true);\n };\n\n const handleSaveEdit = () => {\n if (!selectedBeneficiary) return;\n\n let updatedPrincipal = principalBeneficiaries;\n let updatedContingent = contingentBeneficiaries;\n\n if (selectedBeneficiary.type === \"principal\") {\n updatedPrincipal = principalBeneficiaries.map((beneficiary, index) =>\n index === selectedBeneficiary.index\n ? { ...formBeneficiary }\n : beneficiary,\n );\n setPrincipalBeneficiaries(updatedPrincipal);\n } else {\n updatedContingent = contingentBeneficiaries.map((beneficiary, index) =>\n index === selectedBeneficiary.index\n ? { ...formBeneficiary }\n : beneficiary,\n );\n setContingentBeneficiaries(updatedContingent);\n }\n\n syncBeneficiaries(updatedPrincipal, updatedContingent);\n\n setEditDialogOpen(false);\n setSelectedBeneficiary(null);\n };\n\n const handleDeleteBeneficiary = (\n type: \"principal\" | \"contingent\",\n index: number,\n ) => {\n let updatedPrincipal = principalBeneficiaries;\n let updatedContingent = contingentBeneficiaries;\n\n if (type === \"principal\") {\n updatedPrincipal = principalBeneficiaries.filter(\n (_, beneficiaryIndex) => beneficiaryIndex !== index,\n );\n setPrincipalBeneficiaries(updatedPrincipal);\n } else {\n updatedContingent = contingentBeneficiaries.filter(\n (_, beneficiaryIndex) => beneficiaryIndex !== index,\n );\n setContingentBeneficiaries(updatedContingent);\n }\n\n syncBeneficiaries(updatedPrincipal, updatedContingent);\n };\n\n return (\n <>\n <Flex\n justify=\"space-between\"\n align={{ base: \"flex-start\", md: \"center\" }}\n direction={{ base: \"column\", md: \"row\" }}\n gap={4}\n mb={5}\n >\n <Box>\n <H4>Add Your Beneficiaries</H4>\n <Body color=\"gray.600\">\n Protect your loved ones by adding beneficiaries to your plan.\n </Body>\n </Box>\n <Dialog.Root\n placement=\"center\"\n motionPreset=\"slide-in-bottom\"\n size={{ mdDown: \"full\", md: \"xl\" }}\n open={addDialogOpen}\n onOpenChange={(details) => setAddDialogOpen(details.open)}\n >\n <Dialog.Trigger asChild>\n <Button w={{ base: \"full\", md: \"auto\" }}>Add Beneficiary</Button>\n </Dialog.Trigger>\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Add Beneficiary</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <VStack gap={5} w=\"full\" align=\"stretch\">\n {/* Row 1: Selects */}\n <Grid\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\n gap={4}\n w=\"full\"\n >\n <Select.Root\n collection={beneficiaryTypes}\n size=\"md\"\n value={\n addFormBeneficiary.beneficiaryClass\n ? [addFormBeneficiary.beneficiaryClass]\n : []\n }\n onValueChange={(details) =>\n setAddFormBeneficiary((prev) => ({\n ...prev,\n beneficiaryClass:\n (details.value?.[0] as\n | \"principal\"\n | \"contingent\") ?? \"principal\",\n }))\n }\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select beneficiary type\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {beneficiaryTypes.items.map((beneficiaryType) => (\n <Select.Item\n item={beneficiaryType}\n key={beneficiaryType.value}\n >\n {beneficiaryType.label}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n\n <Select.Root\n collection={relationshipTypes}\n size=\"md\"\n value={\n addFormBeneficiary.relationship\n ? [addFormBeneficiary.relationship]\n : []\n }\n onValueChange={(details) =>\n setAddFormBeneficiary((prev) => ({\n ...prev,\n relationship: details.value?.[0] ?? \"\",\n }))\n }\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select relationship\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {relationshipTypes.items.map((relationshipType) => (\n <Select.Item\n item={relationshipType}\n key={relationshipType.value}\n >\n {relationshipType.label}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Grid>\n\n {/* Row 2: Name Fields */}\n <Grid\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\n gap={4}\n w=\"full\"\n >\n <Field.Root>\n <FloatingLabelInput\n id=\"firstName\"\n type=\"text\"\n label=\"First Name\"\n value={addFormBeneficiary.firstName}\n onChange={(e) =>\n setAddFormBeneficiary((prev) => ({\n ...prev,\n firstName: e.target.value,\n }))\n }\n />\n <Field.ErrorText>\n This field is required\n </Field.ErrorText>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"lastName\"\n type=\"text\"\n label=\"Last Name\"\n value={addFormBeneficiary.lastName}\n onChange={(e) =>\n setAddFormBeneficiary((prev) => ({\n ...prev,\n lastName: e.target.value,\n }))\n }\n />\n <Field.ErrorText>\n This field is required\n </Field.ErrorText>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"middleInitial\"\n type=\"text\"\n label=\"Middle Initial\"\n value={addFormBeneficiary.middleInitial}\n onChange={(e) =>\n setAddFormBeneficiary((prev) => ({\n ...prev,\n middleInitial: e.target.value,\n }))\n }\n />\n <Field.ErrorText>\n This field is required\n </Field.ErrorText>\n </Field.Root>\n </Grid>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"address\"\n type=\"text\"\n label=\"Address\"\n value={addFormBeneficiary.address}\n onChange={(e) =>\n setAddFormBeneficiary((prev) => ({\n ...prev,\n address: e.target.value,\n }))\n }\n />\n <Field.ErrorText>This field is required</Field.ErrorText>\n </Field.Root>\n\n {/* Row 3: DOB */}\n <Field.Root w={{ base: \"full\", md: \"300px\" }}>\n <Field.Label>Date of Birth</Field.Label>\n <Input\n id=\"dateOfBirth\"\n type=\"date\"\n value={addFormBeneficiary.birthDate}\n onChange={(e) =>\n setAddFormBeneficiary((prev) => ({\n ...prev,\n birthDate: e.target.value,\n }))\n }\n />\n <Field.ErrorText>This field is required</Field.ErrorText>\n </Field.Root>\n </VStack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack\n display=\"flex\"\n justifyContent=\"flex-end\"\n direction={{ base: \"row\", sm: \"row\" }}\n w={{ base: \"full\", sm: \"auto\" }}\n gap={3}\n >\n <Dialog.ActionTrigger asChild>\n <SecondaryMdButton>Cancel</SecondaryMdButton>\n </Dialog.ActionTrigger>\n <PrimaryMdButton onClick={handleSaveAddBeneficiary}>\n Save\n </PrimaryMdButton>\n </Stack>\n </Dialog.Footer>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" />\n </Dialog.CloseTrigger>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n </Flex>\n\n <HStack justify=\"space-between\" align=\"center\" w=\"full\" mb={4}>\n <Body fontWeight=\"bold\">Principal Beneficiaries</Body>\n </HStack>\n\n {principalBeneficiaries.length === 0 ? (\n <Box\n bg=\"gray.50\"\n borderWidth=\"1px\"\n borderColor=\"gray.200\"\n rounded=\"xl\"\n px={4}\n py={8}\n textAlign=\"center\"\n mb={4}\n >\n <Body color=\"gray.500\">No principal beneficiaries added yet</Body>\n </Box>\n ) : (\n <VStack align=\"stretch\" gap={3} mb={4}>\n {principalBeneficiaries.map((beneficiary, idx) => (\n <Box\n key={idx}\n bg=\"white\"\n borderWidth=\"1px\"\n borderColor=\"gray.200\"\n rounded=\"xl\"\n px={{ base: 3, md: 4 }}\n py={{ base: 3, md: 4 }}\n >\n <Flex justify=\"space-between\" align=\"start\" gap={3}>\n <Box\n flex=\"1\"\n cursor=\"pointer\"\n onClick={() => handleOpenEdit(\"principal\", idx, beneficiary)}\n >\n <Body fontWeight=\"semibold\" mb={1}>\n {formatFullName(beneficiary)}\n </Body>\n <ReviewRows\n rows={[\n {\n label: \"Relationship\",\n value: beneficiary.relationship,\n },\n {\n label: \"Date of Birth\",\n value: formatDateDisplay(beneficiary.birthDate),\n },\n {\n label: \"Address\",\n value: beneficiary.address,\n },\n ]}\n />\n </Box>\n\n <HStack gap={2} mt={{ base: 1, md: \"auto\" }}>\n <IconButton\n aria-label=\"Edit beneficiary\"\n variant=\"ghost\"\n color=\"green.600\"\n onClick={() =>\n handleOpenEdit(\"principal\", idx, beneficiary)\n }\n >\n <LuPencil />\n </IconButton>\n {isMobile ? (\n <IconButton\n aria-label=\"Delete beneficiary\"\n variant=\"ghost\"\n color=\"red.500\"\n onClick={() => handleDeleteBeneficiary(\"principal\", idx)}\n >\n <FaRegTrashAlt />\n </IconButton>\n ) : (\n <DeleteSolidButton\n onClick={() => handleDeleteBeneficiary(\"principal\", idx)}\n />\n )}\n </HStack>\n </Flex>\n </Box>\n ))}\n </VStack>\n )}\n <HStack justify=\"space-between\" align=\"center\" w=\"full\" mb={4}>\n <Body fontWeight=\"bold\">Contingent Beneficiaries</Body>\n </HStack>\n {contingentBeneficiaries.length === 0 ? (\n <Box\n bg=\"gray.50\"\n borderWidth=\"1px\"\n borderColor=\"gray.200\"\n rounded=\"xl\"\n px={4}\n py={8}\n textAlign=\"center\"\n mb={4}\n >\n <Body color=\"gray.500\">No contingent beneficiaries added yet</Body>\n </Box>\n ) : (\n <VStack align=\"stretch\" gap={3} mb={4}>\n {contingentBeneficiaries.map((beneficiary, idx) => (\n <Box\n key={idx}\n bg=\"white\"\n borderWidth=\"1px\"\n borderColor=\"gray.200\"\n rounded=\"xl\"\n px={{ base: 3, md: 4 }}\n py={{ base: 3, md: 4 }}\n >\n <Flex justify=\"space-between\" align=\"start\" gap={3}>\n <Box\n flex=\"1\"\n cursor=\"pointer\"\n onClick={() => handleOpenEdit(\"contingent\", idx, beneficiary)}\n >\n <Body fontWeight=\"semibold\" mb={1}>\n {formatFullName(beneficiary)}\n </Body>\n <ReviewRows\n rows={[\n {\n label: \"Relationship\",\n value: beneficiary.relationship,\n },\n {\n label: \"Date of Birth\",\n value: formatDateDisplay(beneficiary.birthDate),\n },\n {\n label: \"Address\",\n value: beneficiary.address,\n },\n ]}\n />\n </Box>\n\n <HStack gap={2} mt={{ base: 1, md: \"auto\" }}>\n <IconButton\n aria-label=\"Edit beneficiary\"\n variant=\"ghost\"\n color=\"green.600\"\n onClick={() =>\n handleOpenEdit(\"contingent\", idx, beneficiary)\n }\n >\n <LuPencil />\n </IconButton>\n {isMobile ? (\n <IconButton\n aria-label=\"Delete beneficiary\"\n variant=\"ghost\"\n color=\"red.500\"\n onClick={() => handleDeleteBeneficiary(\"contingent\", idx)}\n >\n <FaRegTrashAlt />\n </IconButton>\n ) : (\n <DeleteSolidButton\n onClick={() => handleDeleteBeneficiary(\"contingent\", idx)}\n />\n )}\n </HStack>\n </Flex>\n </Box>\n ))}\n </VStack>\n )}\n\n <Dialog.Root\n placement=\"center\"\n open={editDialogOpen}\n onOpenChange={(details) => setEditDialogOpen(details.open)}\n size={{ mdDown: \"full\", md: \"xl\" }}\n >\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Edit Beneficiary</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <VStack align=\"stretch\" gap={4}>\n <Grid\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\n gap={4}\n >\n <Field.Root>\n <Field.Label>First Name</Field.Label>\n <Input\n value={formBeneficiary.firstName}\n onChange={(e) =>\n setFormBeneficiary((prev) => ({\n ...prev,\n firstName: e.target.value,\n }))\n }\n placeholder=\"Enter first name\"\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Middle Initial</Field.Label>\n <Input\n value={formBeneficiary.middleInitial}\n onChange={(e) =>\n setFormBeneficiary((prev) => ({\n ...prev,\n middleInitial: e.target.value,\n }))\n }\n placeholder=\"Enter middle initial\"\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Last Name</Field.Label>\n <Input\n value={formBeneficiary.lastName}\n onChange={(e) =>\n setFormBeneficiary((prev) => ({\n ...prev,\n lastName: e.target.value,\n }))\n }\n placeholder=\"Enter last name\"\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Birthdate</Field.Label>\n <Input\n type=\"date\"\n value={formBeneficiary.birthDate}\n onChange={(e) =>\n setFormBeneficiary((prev) => ({\n ...prev,\n birthDate: e.target.value,\n }))\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Relationship</Field.Label>\n <Select.Root\n collection={relationshipTypes}\n value={\n formBeneficiary.relationship\n ? [formBeneficiary.relationship]\n : []\n }\n onValueChange={(details) =>\n setFormBeneficiary((prev) => ({\n ...prev,\n relationship: details.value?.[0] ?? \"\",\n }))\n }\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select relationship\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {relationshipTypes.items.map((relationshipType) => (\n <Select.Item\n item={relationshipType}\n key={relationshipType.value}\n >\n {relationshipType.label}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Address</Field.Label>\n <Input\n value={formBeneficiary.address}\n onChange={(e) =>\n setFormBeneficiary((prev) => ({\n ...prev,\n address: e.target.value,\n }))\n }\n placeholder=\"Enter address\"\n />\n </Field.Root>\n </Grid>\n </VStack>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.ActionTrigger asChild>\n <SecondaryMdButton>Cancel</SecondaryMdButton>\n </Dialog.ActionTrigger>\n <PrimaryMdButton onClick={handleSaveEdit}>Save</PrimaryMdButton>\n </Dialog.Footer>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" />\n </Dialog.CloseTrigger>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n </>\n );\n};\n\nexport default Beneficiary;\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\n\nexport const RowItem = ({\n label,\n value,\n}: {\n label: string;\n value?: React.ReactNode;\n}) => (\n <Flex align=\"center\" py={1.5} fontSize=\"sm\">\n <Text color=\"gray.500\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n <Box\n flex=\"1\"\n mx={3}\n borderBottom=\"1px dashed\"\n borderColor=\"gray.300\"\n transform=\"translateY(2px)\"\n />\n <Text fontWeight=\"medium\" textAlign=\"right\" whiteSpace=\"nowrap\">\n {value ?? \"-\"}\n </Text>\n </Flex>\n);\n\nexport default RowItem;\n","import type { IApplicationData } from \"../types/planholder\";\n\nconst LIFE_PLAN_APPLICATION_KEY = \"LifePlanApplication\";\n\nexport const createEmptyApplicationData = (): IApplicationData => ({\n personalInfo: {\n firstName: \"\",\n middleName: \"\",\n lastName: \"\",\n suffix: \"\",\n birthDate: \"\",\n idType: \"\",\n idNumber: \"\",\n height: 0,\n weight: 0,\n gender: \"\",\n civilStatus: \"\",\n nationality: \"\",\n mobileNumber: \"\",\n emailAddress: \"\",\n mailingAddress: \"\",\n landLineNumber: \"\",\n },\n address: {\n lot: \"\",\n street: \"\",\n barangay: \"\",\n district: \"\",\n city: \"\",\n province: \"\",\n },\n employment: {\n occupation: \"\",\n employerName: \"\",\n employmentStatus: \"\",\n officeAddress: \"\",\n TIN: \"\",\n SSS: \"\",\n sourceOfIncome: \"\",\n },\n beneficiaries: [],\n healthDeclaration: {\n healthDeclaration1: false,\n healthDeclaration2: false,\n healthDeclaration3: false,\n healthDeclaration4: false,\n },\n});\n\nexport const loadApplicationDataFromLocalStorage = (\n storageKey = LIFE_PLAN_APPLICATION_KEY,\n): IApplicationData | null => {\n if (typeof window === \"undefined\") return null;\n\n try {\n const stored = window.localStorage.getItem(storageKey);\n return stored ? (JSON.parse(stored) as IApplicationData) : null;\n } catch {\n return null;\n }\n};\n\nexport const saveApplicationDataToLocalStorage = (\n data: IApplicationData,\n storageKey = LIFE_PLAN_APPLICATION_KEY,\n) => {\n if (typeof window === \"undefined\") return;\n window.localStorage.setItem(storageKey, JSON.stringify(data));\n};\n","import { useState, useEffect } from \"react\";\nimport {\n VStack,\n Box,\n Accordion,\n Span,\n Checkbox,\n Separator,\n} from \"@chakra-ui/react\";\nimport { Body, H4 } from \"st-peter-ui\";\nimport { UploadFile } from \"osp-chakra-reusable-components\";\nimport {\n loadApplicationDataFromLocalStorage,\n saveApplicationDataToLocalStorage,\n createEmptyApplicationData,\n} from \"../lib/applicationData\";\n\nconst HealthDeclaration = () => {\n const [value, setValue] = useState([\"\"]);\n const [healthDeclarationValues, setHealthDeclarationValues] = useState({\n healthDeclaration1: false,\n healthDeclaration2: false,\n healthDeclaration3: false,\n healthDeclaration4: false,\n });\n\n // Load health declaration values from localStorage on mount\n useEffect(() => {\n let appData = loadApplicationDataFromLocalStorage();\n\n // If no data exists, create empty application data\n if (!appData) {\n appData = createEmptyApplicationData();\n saveApplicationDataToLocalStorage(appData);\n }\n\n if (appData && appData.healthDeclaration) {\n setHealthDeclarationValues(appData.healthDeclaration);\n }\n }, []);\n\n // Save health declaration values to localStorage only when component unmounts\n // This ensures data is saved once when user navigates away from this step\n useEffect(() => {\n return () => {\n const appData = loadApplicationDataFromLocalStorage();\n if (appData) {\n appData.healthDeclaration = healthDeclarationValues;\n saveApplicationDataToLocalStorage(appData);\n console.log(\n \"Health Declaration saved to localStorage\",\n healthDeclarationValues,\n );\n }\n };\n }, [healthDeclarationValues]);\n const items = [\n {\n value: \"first-item\",\n title:\n \"Authorization to Physician, Clinics, Hospitals, Pre-need plan and insurance companies\",\n text: \"ST. PETER LIFE PLAN, INC. is considering an application for coverage on my life and this serves as my authorization and request to the concerned doctor, physician or hospital, or any physician in its employ or connected/associated with it in any way, to give to ST. PETER LIFE PLAN, INC., or its authorized representative, any information which it/he may desire and which you have acquired in attending to me in a professional capacity. A photocopy of this authorization shall be as valid as the original. This authorization is in connection with my application for insurance coverage only.\",\n },\n {\n value: \"second-item\",\n title: \"Data Privacy\",\n text: (\n <>\n By entering into and agreeing to this valid and binding electronic and\n digital Life Plan Contract, the Planholder effectively consents to the\n collection, processing, transmission, handling and storage by St.\n Peter Life Plan, Inc. (including any of its subsidiaries, affiliates\n or its authorized third parties), of his/her Personal Data in any form\n whatsoever, which is necessary for the purpose of administering and\n servicing the Planholder’s Life Plan, and also consents and agrees to\n and accepts the Company’s Data Privacy Policy, all in compliance with\n the Data Privacy Act.\n <br />\n <br />\n Please read the Company’s Data Privacy Policy at{\" \"}\n <a\n href=\"https://stpeter.com.ph/privacy-policy\"\n target=\"_blank\"\n className=\"text-blue-600 underline\"\n rel=\"noopener noreferrer\"\n >\n www.stpeter.com.ph/privacy-policy\n </a>\n .\n </>\n ),\n },\n {\n value: \"third-item\",\n title: \"Online Purchase Authentication\",\n text: (\n <>\n <Body className=\"text-start\">\n I fully understand that in my purchase of the Life Plan product\n which I have chosen, I am required to upload a clear specimen of my\n current and valid government issued ID and three (3) specimens of my\n electronic signature in order to authenticate and verify my identity\n before I can click the “CONTINUE” button. I am solely responsible\n and accountable for any misrepresentation and all other consequences\n arising from my uploading of the specimen signatures of my valid ID\n and/or electronic signature.\n </Body>\n <Body>\n However, I fully understand that by clicking the “CONTINUE” button,\n for all intents and purposes, this ultimately means that I give my\n express, final, irrevocable and unconditional consent to\n electronically and digitally purchase the Life Plan product which I\n have chosen and finalize my application, and that I have expressly\n agreed to enter into a valid and binding electronic and digital\n contract with St. Peter Life Plan, Inc. and its Terms and\n Conditions, even if I do not upload my genuine valid ID and/or\n electronic signature. I also hereby agree to accept and comply with\n the applicable and currently prescribed electronic and digital\n payment methods in this platform.\n </Body>\n <Body>\n I understand that I am solely responsible for maintaining the\n confidentiality of my account and password and for restricting\n access to my account and I accept all responsibility for all\n activities that occur under my account and password.\n </Body>\n </>\n ),\n },\n ];\n\n return (\n <>\n <VStack align=\"stretch\" gap={4} mb={4}>\n <H4>Health Declaration</H4>\n <Body>\n Please check all the boxes that apply to you and skip the boxes that\n do not apply.\n </Body>\n <Body>\n I hereby represent and declare to the best of my knowledge that at the\n time of purchase of my Life Plan:\n </Body>\n </VStack>\n\n <VStack align=\"stretch\" gap={4} mb={4}>\n <Checkbox.Root\n checked={healthDeclarationValues.healthDeclaration1}\n onCheckedChange={(details) =>\n setHealthDeclarationValues((prev) => ({\n ...prev,\n healthDeclaration1: details.checked === true,\n }))\n }\n >\n <Checkbox.HiddenInput />\n <Checkbox.Control />\n <Checkbox.Label>\n I am between 18 years and 60 years old (not beyond my 60th\n birthday).\n </Checkbox.Label>\n </Checkbox.Root>\n <Checkbox.Root\n checked={healthDeclarationValues.healthDeclaration2}\n onCheckedChange={(details) =>\n setHealthDeclarationValues((prev) => ({\n ...prev,\n healthDeclaration2: details.checked === true,\n }))\n }\n >\n <Checkbox.HiddenInput />\n <Checkbox.Control />\n <Checkbox.Label>\n I possess sound health and am able to perform the normal activities\n in pursuit of my livelihood.\n </Checkbox.Label>\n </Checkbox.Root>\n <Checkbox.Root\n checked={healthDeclarationValues.healthDeclaration3}\n onCheckedChange={(details) =>\n setHealthDeclarationValues((prev) => ({\n ...prev,\n healthDeclaration3: details.checked === true,\n }))\n }\n >\n <Checkbox.HiddenInput />\n <Checkbox.Control />\n <Checkbox.Label>\n I have not consulted any physician for heart condition,\n hypertension, cancer, diabetes, lungs, kidneys or intestinal\n disorder, tuberculosis, or any other physical impairment nor have I\n been confined in a hospital/clinic and received any medical or\n surgical attention.\n </Checkbox.Label>\n </Checkbox.Root>\n <Checkbox.Root\n checked={healthDeclarationValues.healthDeclaration4}\n onCheckedChange={(details) =>\n setHealthDeclarationValues((prev) => ({\n ...prev,\n healthDeclaration4: details.checked === true,\n }))\n }\n >\n <Checkbox.HiddenInput />\n <Checkbox.Control />\n <Checkbox.Label>\n I understand and agree that I am INSURABLE based on the above-stated\n representations.\n </Checkbox.Label>\n </Checkbox.Root>\n <Box mt={4}>\n <Body>Please attach medical results here:</Body>\n </Box>\n\n <UploadFile />\n <VStack align=\"stretch\" gap={2} mt={6}>\n <Body>\n I also understand and agree that the issuance of the Life Plan and\n the corresponding benefits are based on the truth of my above-stated\n representations.\n </Body>\n <Body>\n Any false statements as regards my age or health as above-stated may\n render the Life Plan Contract rescissible.\n </Body>\n <Body>\n I further agree that this contract and the declarations I have given\n above shall be the basis of the Life Plan Contract between the\n company and me and shall be deemed to be an integral part of the\n Life Plan Contract, subject to the terms and conditions stated in\n the Life Plan Contract.\n </Body>\n </VStack>\n <Separator />\n <Box textAlign=\"start\">\n <H4>Terms and Conditions</H4>\n </Box>\n <Box textAlign=\"start\">\n <Body>\n Please read the terms and conditions of St .Peter Life Plan and\n upload the necessary documents to proceed with the purchase.\n </Body>\n </Box>\n <Accordion.Root\n value={value}\n onValueChange={(e) => setValue(e.value)}\n collapsible\n >\n {items.map((item, index) => (\n <Accordion.Item key={index} value={item.value}>\n <Accordion.ItemTrigger>\n <Body>\n <Span fontWeight=\"semibold\">{item.title}</Span>\n </Body>\n <Accordion.ItemIndicator />\n </Accordion.ItemTrigger>\n <Accordion.ItemContent>\n <Accordion.ItemBody>{item.text}</Accordion.ItemBody>\n </Accordion.ItemContent>\n </Accordion.Item>\n ))}\n </Accordion.Root>\n </VStack>\n </>\n );\n};\n\nexport default HealthDeclaration;\n","\"use client\";\n\nimport LifePlanApplication1 from \"./LifePlanApplication1\";\nimport LifePlanApplication2 from \"./LifePlanApplication2\";\nimport LifePlanApplication3 from \"./LifePlanApplication3\";\nimport { Box, Flex, Icon, VStack } from \"@chakra-ui/react\";\nimport { FaRegAddressCard, FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport { LuChevronsDown, LuChevronsUp } from \"react-icons/lu\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport type {\n IAddress,\n IApplicationData,\n IEmployment,\n IPersonalInfo,\n} from \"../types/planholder\";\nimport {\n createEmptyApplicationData,\n loadApplicationDataFromLocalStorage,\n saveApplicationDataToLocalStorage,\n} from \"../lib/applicationData\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\nimport { InfoCard } from \"./ui/info-card\";\nimport { InputCardAccordion } from \"./ui/input-card-accordion\";\nimport { TertiarySmButton } from \"st-peter-ui\";\n\nconst hasText = (value: unknown) => String(value ?? \"\").trim() !== \"\";\n\nconst isPersonalComplete = (p?: IPersonalInfo) =>\n !!p &&\n [\n p.idType,\n p.idNumber,\n p.lastName,\n p.firstName,\n p.birthDate,\n p.gender,\n p.civilStatus,\n p.nationality,\n p.mobileNumber,\n p.emailAddress,\n p.mailingAddress,\n ].every(hasText) &&\n Number(p.height) > 0 &&\n Number(p.weight) > 0;\n\nconst isAddressComplete = (a?: IAddress) =>\n !!a &&\n [a.province, a.city, a.district, a.barangay, a.street, a.lot].every(hasText);\n\nconst isEmploymentComplete = (e?: IEmployment) =>\n !!e &&\n [\n e.occupation,\n e.employerName,\n e.employmentStatus,\n e.officeAddress,\n e.TIN,\n e.SSS,\n e.sourceOfIncome,\n ].every(hasText);\n\nconst LifePlanApplicationFormWrapper = ({\n openSection,\n openSectionKey,\n onValidChange,\n}: {\n openSection?: string;\n openSectionKey?: number;\n onValidChange?: (valid: boolean) => void;\n}) => {\n const [applicationData, setApplicationData] = useState<IApplicationData>(\n createEmptyApplicationData,\n );\n const [hydrated, setHydrated] = useState(false);\n const [openSections, setOpenSections] = useState<string[]>([\"personal\"]);\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => {\n const saved = loadApplicationDataFromLocalStorage();\n if (saved) setApplicationData(saved);\n setHydrated(true);\n }, 0);\n\n return () => window.clearTimeout(timeoutId);\n }, []);\n\n useEffect(() => {\n if (!hydrated) return;\n saveApplicationDataToLocalStorage(applicationData);\n }, [applicationData, hydrated]);\n\n const isComplete =\n isPersonalComplete(applicationData.personalInfo) &&\n isAddressComplete(applicationData.address);\n\n useEffect(() => {\n onValidChange?.(isComplete);\n }, [isComplete, onValidChange]);\n\n useEffect(() => {\n if (!openSection) return;\n\n const timer = window.setTimeout(() => {\n setOpenSections((prev) =>\n prev.includes(openSection) ? prev : [...prev, openSection],\n );\n document\n .getElementById(`app-section-${openSection}`)\n ?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n }, 80);\n\n return () => window.clearTimeout(timer);\n }, [openSection, openSectionKey]);\n\n const handlePersonalInfoUpdate = useCallback(\n (personalInfo: IPersonalInfo) => {\n setApplicationData((prev) => ({\n ...prev,\n personalInfo,\n }));\n },\n [],\n );\n\n const handleAddressUpdate = useCallback((address: IAddress) => {\n setApplicationData((prev) => ({\n ...prev,\n address,\n }));\n }, []);\n\n const handleEmploymentUpdate = useCallback((employment: IEmployment) => {\n setApplicationData((prev) => ({\n ...prev,\n employment,\n }));\n }, []);\n\n const sections = [\n {\n icon: FaRegUser,\n label: \"Personal Info\",\n description: \"Identification and full name\",\n value: \"personal\",\n complete: isPersonalComplete(applicationData.personalInfo),\n page: (\n <LifePlanApplication1\n initialData={applicationData.personalInfo}\n onUpdate={handlePersonalInfoUpdate}\n />\n ),\n },\n {\n icon: FaRegAddressCard,\n label: \"Address\",\n description: \"Where you currently live\",\n value: \"address\",\n complete: isAddressComplete(applicationData.address),\n page: <LifePlanApplication2 onAddressUpdate={handleAddressUpdate} />,\n },\n {\n icon: IoIosInformationCircleOutline,\n label: \"Employment\",\n description: \"Work and income details\",\n value: \"employment\",\n complete: isEmploymentComplete(applicationData.employment),\n page: (\n <LifePlanApplication3\n initialData={applicationData.employment}\n onUpdate={handleEmploymentUpdate}\n />\n ),\n },\n ];\n\n const expandAll = () => setOpenSections(sections.map((s) => s.value));\n const collapseAll = () => setOpenSections([]);\n const toggleSection = (value: string) => {\n setOpenSections((prev) =>\n prev.includes(value)\n ? prev.filter((sectionValue) => sectionValue !== value)\n : [...prev, value],\n );\n };\n\n return (\n <Box w=\"full\">\n <Flex\n direction={{ base: \"column\", sm: \"row\" }}\n align={{ base: \"stretch\", sm: \"center\" }}\n justify=\"space-between\"\n gap={STANDARD_SPACING.sm}\n mb={STANDARD_SPACING.sm}\n >\n <Flex direction=\"column\" gap={STANDARD_SPACING.xs} w=\"full\">\n <InfoCard>\n Sections below are expandable and collapsible. Use them to focus\n only on relevant details.\n </InfoCard>\n <Flex gap={STANDARD_SPACING.xs} justify=\"flex-end\">\n <TertiarySmButton onClick={expandAll}>\n <LuChevronsDown size={14} />\n Expand All\n </TertiarySmButton>\n <TertiarySmButton onClick={collapseAll}>\n <LuChevronsUp size={14} />\n Collapse All\n </TertiarySmButton>\n </Flex>\n </Flex>\n </Flex>\n\n <VStack align=\"stretch\" gap={2}>\n {sections.map((section) => (\n <Box\n key={section.value}\n id={`app-section-${section.value}`}\n scrollMarginTop=\"80px\"\n >\n <InputCardAccordion\n icon={<Icon as={section.icon} boxSize=\"18px\" />}\n title={section.label}\n subtitle={section.description}\n isOpen={openSections.includes(section.value)}\n onToggle={() => toggleSection(section.value)}\n isComplete={section.complete}\n >\n {hydrated ? section.page : null}\n </InputCardAccordion>\n </Box>\n ))}\n </VStack>\n </Box>\n );\n};\n\nexport default LifePlanApplicationFormWrapper;\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { Box, HStack, Text } from \"@chakra-ui/react\";\n\nimport { Body } from \"st-peter-ui\";\nimport { HiInformationCircle } from \"react-icons/hi\";\nimport type { IconType } from \"react-icons\";\nimport { BRAND_COLORS } from \"../../lib/theme/brand-colors\";\nimport {\n STANDARD_RADIUS,\n STANDARD_SIZES,\n STANDARD_SPACING,\n} from \"../../lib/theme/standard-design-tokens\";\n\ninterface InfoCardProps {\n children: ReactNode;\n /** Leading icon. Defaults to an information circle. */\n icon?: IconType;\n}\n\n/**\n * Inline informational banner — soft green background with a leading icon\n * and a short helper message. Pass the message as children.\n */\nexport const InfoCard = ({\n children,\n icon = HiInformationCircle,\n}: InfoCardProps) => {\n return (\n <HStack\n gap={STANDARD_SPACING.sm}\n align=\"center\"\n p=\"8px\"\n borderRadius={STANDARD_RADIUS.md}\n bg=\"#ebf4fb\"\n borderWidth=\"1px\"\n borderColor=\"#1976d2\"\n color={BRAND_COLORS.darkGreen}\n >\n <Box\n as={icon}\n boxSize={STANDARD_SIZES.iconButton.sm}\n color=\"#1976d2\"\n flexShrink={0}\n />\n <Text color=\"#1976d2\" fontSize=\"xs\">\n {children}\n </Text>\n </HStack>\n );\n};\n\nexport default InfoCard;\n","\"use client\";\r\n\r\nimport { Box, Flex, Text } from \"@chakra-ui/react\";\r\nimport React, { useState } from \"react\";\r\nimport { LuCheck, LuChevronDown, LuChevronUp, LuHash } from \"react-icons/lu\";\r\n\r\ninterface InputCardAccordionProps {\r\n icon: React.ReactNode;\r\n openedIcon?: React.ReactNode;\r\n title: string;\r\n subtitle?: string;\r\n children?: React.ReactNode;\r\n defaultOpen?: boolean;\r\n isOpen?: boolean;\r\n onToggle?: () => void;\r\n isComplete?: boolean;\r\n}\r\n\r\nexport function InputCardAccordion({\r\n icon,\r\n openedIcon,\r\n title,\r\n subtitle,\r\n children,\r\n defaultOpen = false,\r\n isOpen: controlledOpen,\r\n onToggle,\r\n isComplete,\r\n}: InputCardAccordionProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : internalOpen;\r\n\r\n const toggle = () => {\r\n if (isControlled) {\r\n onToggle?.();\r\n } else {\r\n setInternalOpen((prev: boolean) => !prev);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n toggle();\r\n }\r\n };\r\n\r\n const activeIcon = isOpen && openedIcon ? openedIcon : icon;\r\n\r\n return (\r\n <Box\r\n w=\"full\"\r\n position=\"relative\"\r\n p={1}\r\n borderRadius=\"2xl\"\r\n bg=\"white\"\r\n shadow=\"sm\"\r\n transition=\"all 0.25s ease\"\r\n _hover={{ transform: \"translateY(-3px)\", shadow: \"lg\" }}\r\n overflow=\"hidden\"\r\n cursor=\"pointer\"\r\n >\r\n <Flex\n align=\"center\"\r\n justify=\"space-between\"\r\n px={4}\r\n py={3}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n aria-expanded={isOpen}\r\n onClick={toggle}\r\n onKeyDown={handleKeyDown}\r\n _hover={{ bg: \"gray.50\" }}\r\n transition=\"background 0.15s ease\"\r\n >\r\n <Flex align=\"center\" gap={2}>\r\n <Box\r\n p={2}\r\n borderRadius=\"full\"\r\n bg={\"gray.100\"}\r\n color={\"inherit\"}\r\n transition=\"background 0.2s ease, color 0.2s ease\"\r\n >\r\n {activeIcon}\r\n </Box>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\" lineHeight=\"1.2\">\r\n {title}\r\n </Text>\r\n <Flex align=\"center\" gap={1} fontSize=\"xs\" color=\"gray.500\">\r\n <LuHash size={12} />\r\n <Text>{subtitle}</Text>\r\n </Flex>\r\n </Box>\r\n </Flex>\r\n\r\n <Flex align=\"center\" gap={1.5} flexShrink={0}>\n {isComplete && (\r\n <Box color=\"green.500\">\r\n <LuCheck size={16} />\r\n </Box>\r\n )}\r\n <Box color=\"gray.400\">\r\n {isOpen ? <LuChevronUp size={16} /> : <LuChevronDown size={16} />}\r\n </Box>\r\n </Flex>\r\n </Flex>\r\n\r\n {isOpen && children && (\n <Box p={4} borderTopWidth={1} borderColor=\"gray.100\">\r\n {children}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n","\"use client\";\n\nimport { Box } from \"@chakra-ui/react\";\n\nimport { useState } from \"react\";\nimport { createLifePlanSteps } from \"./data/lifePlanSteps\";\nimport HorizontalStepper from \"./ui/horizontal-stepper\";\n// import { CartItem } from \"@/types/cartItem\";\n// // import {\n// TransactionService,\n// PayMongoService,\n// } from \"@/services/API/PayMongoService\";\n// import {\n// createEmptyApplicationData,\n// loadApplicationDataFromLocalStorage,\n// } from \"@/lib/utils/applicationDataFactory\";\n// import Page from \"@/components/layout/page/Page\";\n\ntype SharedLifePlanApplicationProps = {\n title?: string;\n description?: string;\n onPaymentError?: (error: unknown) => void;\n};\n\nconst safeParse = <T,>(value: string | null): T | null => {\n if (!value) return null;\n\n try {\n return JSON.parse(value) as T;\n } catch {\n return null;\n }\n};\n\nconst SharedLifePlanApplication = ({\n title = \"Life Plan Application\",\n description = \"Please fill out the form below to apply for a life plan.\",\n onPaymentError,\n}: SharedLifePlanApplicationProps) => {\n const [currentStep, setCurrentStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [allAgreementsAccepted, setAllAgreementsAccepted] = useState(false);\n const [applicationSection, setApplicationSection] = useState<string>();\n const [applicationSectionKey, setApplicationSectionKey] = useState(0);\n const [applicationValid, setApplicationValid] = useState(false);\n\n const steps = createLifePlanSteps({\n onAllAcceptedChange: setAllAgreementsAccepted,\n ...(applicationSection ? { applicationSection } : {}),\n applicationSectionKey,\n onApplicationValidChange: setApplicationValid,\n onEdit: (section?: string) => {\n setApplicationSection(section ?? \"personal\");\n setApplicationSectionKey((key) => key + 1);\n setCurrentStep(0);\n },\n });\n\n const nextDisabled = currentStep === 0 && !applicationValid;\n\n const handleCheckout = async () => {\n if (!allAgreementsAccepted) return;\n setLoading(true);\n\n // try {\n // const checkoutRaw = sessionStorage.getItem(\"CheckoutCart\");\n // const cartRaw = sessionStorage.getItem(\"Cart\");\n\n // const parsed =\n // safeParse<CartItem | CartItem[]>(checkoutRaw) ??\n // safeParse<CartItem | CartItem[]>(cartRaw);\n\n // const items: CartItem[] = Array.isArray(parsed)\n // ? parsed\n // : parsed\n // ? [parsed]\n // : [];\n\n // if (items.length === 0) {\n // throw new Error(\"No items to checkout\");\n // }\n\n // const applicationData =\n // loadApplicationDataFromLocalStorage() ?? createEmptyApplicationData();\n\n // await TransactionService.insert(applicationData);\n\n // const checkoutPayload = items.map((item) => ({\n // planDesc: item.planDesc,\n // ipInstAmt: Number(item.price),\n // planTerm: item.planTerm,\n // quantity: item.quantity ?? 1,\n // }));\n // const { checkoutUrl } =\n // await PayMongoService.createCheckout(checkoutPayload);\n\n // if (!checkoutUrl) throw new Error(\"Checkout URL not found\");\n\n // window.location.href = checkoutUrl;\n // } catch (error) {\n // console.error(error);\n // onPaymentError?.(error);\n // alert(\"Failed to proceed to payment\");\n // } finally {\n // setLoading(false);\n // }\n };\n\n return (\n <Box w=\"full\" overflowX=\"hidden\">\n <HorizontalStepper\n steps={steps}\n activeStep={currentStep}\n onStepChange={setCurrentStep}\n onSubmit={handleCheckout}\n submitDisabled={!allAgreementsAccepted || loading}\n nextDisabled={nextDisabled}\n />\n </Box>\n );\n};\n\nexport default SharedLifePlanApplication;\n","import { FaClipboardCheck, FaFileSignature, FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport type { ConfirmationProps } from \"../confirmation\";\nimport LifePlanApplicationFormWrapper from \"../LifePlanApplicationFormWrapper\";\nimport HealthDeclaration from \"../HealthDeclaration\";\nimport Confirmation from \"../confirmation\";\nimport Beneficiary from \"../beneficiary\";\n\nexport const createLifePlanSteps = (\n confirmationProps?: ConfirmationProps & {\n onEdit?: (section?: string) => void;\n applicationSection?: string;\n applicationSectionKey?: number;\n onApplicationValidChange?: (valid: boolean) => void;\n },\n) => [\n {\n id: \"1\",\n header: \"Life Plan Application\",\n title: \"Application\",\n description: \"Complete the application form\",\n icon: FaFileSignature,\n component: (() => {\n const applicationFormWrapperProps: {\n openSection?: string;\n openSectionKey?: number;\n onValidChange?: (valid: boolean) => void;\n } = {};\n\n if (confirmationProps?.applicationSection !== undefined) {\n applicationFormWrapperProps.openSection =\n confirmationProps.applicationSection;\n }\n\n if (confirmationProps?.applicationSectionKey !== undefined) {\n applicationFormWrapperProps.openSectionKey =\n confirmationProps.applicationSectionKey;\n }\n\n if (confirmationProps?.onApplicationValidChange !== undefined) {\n applicationFormWrapperProps.onValidChange =\n confirmationProps.onApplicationValidChange;\n }\n\n return (\n <LifePlanApplicationFormWrapper {...applicationFormWrapperProps} />\n );\n })(),\n },\n\n {\n id: \"2\",\n header: \"Beneficiary Details\",\n title: \"Beneficiary\",\n description: \"Add Beneficiary Details\",\n icon: FaRegUser,\n component: <Beneficiary />,\n },\n {\n id: \"3\",\n header: \"Health Declaration & Terms and Conditions\",\n title: \"Terms\",\n description: \"Health Declaration & Terms and Conditions\",\n icon: FaClipboardCheck,\n component: <HealthDeclaration />,\n },\n // {\n // id: \"4\",\n // header: \"Upload Requirements\",\n // title: \"Requirements\",\n // description: \"Upload Requirements\",\n // component: <Requirements />,\n // },\n {\n id: \"4\",\n header: \"Review Summary\",\n title: \"Summary\",\n description: \"Review and confirm your application\",\n icon: IoIosInformationCircleOutline,\n component: <Confirmation {...confirmationProps} />,\n },\n // {\n // id: \"5\",\n // header: \"Payment\",\n // title: \"Payment\",\n // description: \"Review and confirm your application\",\n // component: <Payment />,\n // },\n];\n","\"use client\";\n\nimport {\n Badge,\n Box,\n CloseButton,\n Dialog,\n Flex,\n HStack,\n Heading,\n Icon,\n IconButton,\n Portal,\n SimpleGrid,\n Text,\n VStack,\n} from \"@chakra-ui/react\";\nimport { CancelButton, ConfirmButton, H3 } from \"st-peter-ui\";\nimport { FaRegAddressCard } from \"react-icons/fa6\";\nimport { FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport { FiEdit2 } from \"react-icons/fi\";\nimport { useEffect, useState } from \"react\";\nimport { checkboxList } from \"./data/checkBoxList\";\nimport type { CartItem } from \"../types/cartItem\";\nimport type { ITransactionData } from \"../types/planholder\";\nimport type { IconType } from \"react-icons\";\nimport { InfoCardAccordion } from \"./ui/info-card-accordion\";\nimport { RowItem } from \"./ui/row-item\";\n\nexport type ConfirmationProps = {\n onAllAcceptedChange?: (allAccepted: boolean) => void;\n onEdit?: (section?: string) => void;\n};\n\nconst modeLabel = (mode?: string) => {\n switch (mode) {\n case \"M\":\n return \"Monthly\";\n case \"Q\":\n return \"Quarterly\";\n case \"S\":\n return \"Semi-Annual\";\n case \"A\":\n return \"Annual\";\n case \"C\":\n return \"Cash\";\n default:\n return mode || \"-\";\n }\n};\n\ntype TabItem = {\n icon: IconType;\n label: string;\n subtitle?: string;\n value: string;\n page: React.ReactNode;\n};\n\nconst ApplicationAccordion = ({\n items,\n onEdit,\n}: {\n items: TabItem[];\n onEdit?: (section?: string) => void;\n}) => {\n return (\n <VStack align=\"stretch\" gap={3}>\n {items.map((item, index) => (\n <InfoCardAccordion\n key={item.value}\n icon={<Icon as={item.icon} boxSize=\"18px\" />}\n title={item.label}\n {...(item.subtitle !== undefined ? { subtitle: item.subtitle } : {})}\n defaultOpen={index === 0}\n onEdit={() => onEdit?.(item.value)}\n >\n {item.page}\n </InfoCardAccordion>\n ))}\n </VStack>\n );\n};\n\nconst ReviewRows = ({\n rows,\n}: {\n rows: { label: string; value?: React.ReactNode }[];\n}) => (\n <VStack align=\"stretch\" gap={1}>\n {rows.map((row) => (\n <RowItem key={row.label} label={row.label} value={row.value} />\n ))}\n </VStack>\n);\n\n/* -----------------------------------------------------------------------------\n * Desktop presentation — a card with a title + edit pencil, and fields laid out\n * as a two-column label-above-value grid (matches the reference layout).\n * -------------------------------------------------------------------------- */\nconst FieldGrid = ({\n rows,\n}: {\n rows: { label: string; value?: React.ReactNode }[];\n}) => (\n <SimpleGrid columns={{ base: 1, sm: 2 }} columnGap={6} rowGap={5}>\n {rows.map((row) => (\n <Box key={row.label} minW={0}>\n <Text fontSize=\"xs\" color=\"gray.500\" mb={1}>\n {row.label}\n </Text>\n <Text\n fontSize=\"sm\"\n fontWeight=\"600\"\n color=\"gray.900\"\n wordBreak=\"break-word\"\n >\n {row.value ?? \"-\"}\n </Text>\n </Box>\n ))}\n </SimpleGrid>\n);\n\nconst SectionCard = ({\n title,\n onEdit,\n children,\n}: {\n title: string;\n onEdit?: () => void;\n children: React.ReactNode;\n}) => (\n <Box\n css={{ breakInside: \"avoid\" }}\n mb={6}\n bg=\"white\"\n borderWidth=\"1px\"\n borderColor=\"gray.200\"\n borderRadius=\"xl\"\n boxShadow=\"sm\"\n p={6}\n >\n <Flex justify=\"space-between\" align=\"center\" mb={5}>\n <Heading as=\"h3\" fontSize=\"lg\" fontWeight=\"bold\" color=\"gray.900\">\n {title}\n </Heading>\n {onEdit ? (\n <IconButton\n aria-label={`Edit ${title}`}\n size=\"sm\"\n variant=\"ghost\"\n color=\"gray.400\"\n _hover={{ color: \"green.600\", bg: \"green.50\" }}\n onClick={onEdit}\n >\n <FiEdit2 />\n </IconButton>\n ) : null}\n </Flex>\n {children}\n </Box>\n);\n\nconst Confirmation = ({ onAllAcceptedChange, onEdit }: ConfirmationProps) => {\n const [cartItems, setCartItems] = useState<CartItem[] | null>(null);\n const [lifePlanApplication, setLifePlanApplication] =\n useState<ITransactionData | null>(null);\n const [openDialog, setOpenDialog] = useState(false);\n const [pendingCheck, setPendingCheck] = useState<number | null>(null);\n const [acceptedAgreements, setAcceptedAgreements] = useState<boolean[]>(() =>\n checkboxList.map(() => false),\n );\n\n useEffect(() => {\n const loadStoredData = () => {\n try {\n const checkoutStored = sessionStorage.getItem(\"CheckoutCart\");\n const cartStored = sessionStorage.getItem(\"Cart\");\n const lifePlanApplicationStored = localStorage.getItem(\n \"LifePlanApplication\",\n );\n\n const parsedApplicationData = lifePlanApplicationStored\n ? (JSON.parse(lifePlanApplicationStored) as ITransactionData)\n : null;\n\n setLifePlanApplication(parsedApplicationData);\n\n if (checkoutStored) {\n const parsedCheckout = JSON.parse(checkoutStored);\n setCartItems(\n Array.isArray(parsedCheckout) ? parsedCheckout : [parsedCheckout],\n );\n return;\n }\n\n if (cartStored) {\n const parsedCart = JSON.parse(cartStored);\n setCartItems(Array.isArray(parsedCart) ? parsedCart : []);\n } else {\n setCartItems([]);\n }\n } catch (e) {\n console.error(\"Failed to read Cart from sessionStorage\", e);\n setCartItems([]);\n }\n };\n\n const timeoutId = window.setTimeout(loadStoredData, 0);\n\n return () => window.clearTimeout(timeoutId);\n }, []);\n\n const selectedPlan = cartItems && cartItems.length > 0 ? cartItems[0] : null;\n\n const acceptedCount = acceptedAgreements.filter(Boolean).length;\n const allAccepted =\n checkboxList.length > 0 && acceptedCount === checkboxList.length;\n\n const pendingAgreement =\n pendingCheck !== null ? checkboxList[pendingCheck] : null;\n\n useEffect(() => {\n onAllAcceptedChange?.(allAccepted);\n }, [allAccepted, onAllAcceptedChange]);\n\n const beneficiaries = [\n {\n name: \"John Doe\",\n relationship: \"Relative\",\n dob: \"1990-11-02\",\n address: \"Sample Street, Sample Barangay, Sample City\",\n },\n {\n name: \"Jane Smith\",\n relationship: \"Relative\",\n dob: \"1992-04-15\",\n address: \"Sample Avenue, Sample District, Sample City\",\n },\n ];\n\n const confirmAgreement = () => {\n if (pendingCheck === null) return;\n setAcceptedAgreements((prev) => {\n const copy = [...prev];\n copy[pendingCheck] = true;\n return copy;\n });\n setOpenDialog(false);\n setPendingCheck(null);\n };\n\n /* ── Shared row data (single source for both the mobile accordions and the\n desktop cards) ─────────────────────────────────────────────────── */\n const orderRows = [\n { label: \"Selected Plan\", value: selectedPlan?.planDesc },\n { label: \"Quantity\", value: selectedPlan?.quantity },\n {\n label: \"Total Amount Payable\",\n value: selectedPlan ? `₱ ${selectedPlan.total}` : undefined,\n },\n ];\n\n const personalRows = [\n { label: \"Uploaded ID\", value: lifePlanApplication?.personalInfo.idType },\n { label: \"Last Name\", value: lifePlanApplication?.personalInfo.lastName },\n { label: \"First Name\", value: lifePlanApplication?.personalInfo.firstName },\n {\n label: \"Middle Name\",\n value: lifePlanApplication?.personalInfo.middleName,\n },\n { label: \"Suffix\", value: lifePlanApplication?.personalInfo.suffix },\n {\n label: \"Date of Birth\",\n value: lifePlanApplication?.personalInfo.birthDate,\n },\n { label: \"Gender\", value: lifePlanApplication?.personalInfo.gender },\n {\n label: \"Contact Number\",\n value: lifePlanApplication?.personalInfo.mobileNumber,\n },\n { label: \"Email\", value: lifePlanApplication?.personalInfo.emailAddress },\n {\n label: \"Landline Number\",\n value: lifePlanApplication?.personalInfo.landLineNumber,\n },\n {\n label: \"Mailing Address\",\n value: lifePlanApplication?.personalInfo.mailingAddress,\n },\n {\n label: \"Civil Status\",\n value: lifePlanApplication?.personalInfo.civilStatus,\n },\n ];\n\n const addressRows = [\n { label: \"Lot #\", value: lifePlanApplication?.address.lot },\n { label: \"Street\", value: lifePlanApplication?.address.street },\n { label: \"Barangay\", value: lifePlanApplication?.address.barangay },\n { label: \"City\", value: lifePlanApplication?.address.city },\n { label: \"Province\", value: lifePlanApplication?.address.province },\n ];\n\n const employmentRows = [\n { label: \"Occupation\", value: lifePlanApplication?.employment.occupation },\n {\n label: \"Employer Name\",\n value: lifePlanApplication?.employment.employerName,\n },\n {\n label: \"Employment Status\",\n value: lifePlanApplication?.employment.employmentStatus,\n },\n {\n label: \"Office Address\",\n value: lifePlanApplication?.employment.officeAddress,\n },\n { label: \"TIN\", value: lifePlanApplication?.employment.TIN },\n { label: \"SSS/GSIS\", value: lifePlanApplication?.employment.SSS },\n {\n label: \"Source of Income\",\n value: lifePlanApplication?.employment.sourceOfIncome,\n },\n ];\n\n /* ── Shared custom blocks reused by both layouts ──────────────────────── */\n const beneficiaryItems = (\n <VStack align=\"stretch\" gap={4}>\n {beneficiaries.map((beneficiary, index) => (\n <Box key={`${beneficiary.name}-${index}`}>\n <Text fontWeight=\"semibold\" fontSize=\"sm\" mb={1}>\n {beneficiary.name}\n </Text>\n <ReviewRows\n rows={[\n { label: \"Relationship\", value: beneficiary.relationship },\n { label: \"Date of Birth\", value: beneficiary.dob },\n { label: \"Address\", value: beneficiary.address },\n ]}\n />\n </Box>\n ))}\n </VStack>\n );\n\n const agreementItems = (\n <VStack align=\"stretch\" gap={3}>\n {checkboxList.map((item, index) => {\n const isAccepted = acceptedAgreements[index];\n\n return (\n <Box\n key={index}\n role=\"button\"\n tabIndex={0}\n p={4}\n borderWidth=\"1px\"\n rounded=\"xl\"\n bg={isAccepted ? \"green.50\" : \"gray.50\"}\n transition=\"all 0.15s ease\"\n _hover={{ bg: isAccepted ? \"green.100\" : \"gray.100\" }}\n onClick={() => {\n setPendingCheck(index);\n setOpenDialog(true);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setPendingCheck(index);\n setOpenDialog(true);\n }\n }}\n >\n <Flex justify=\"space-between\" align=\"start\" gap={4}>\n <Box flex=\"1\" minW={0}>\n <Text fontWeight=\"semibold\" lineClamp={2}>\n {item.checkBoxTitle}.\n </Text>\n <Text fontSize=\"sm\" color=\"gray.600\" mt={1} lineClamp={1}>\n Tap to review details.\n </Text>\n </Box>\n\n <Badge\n variant=\"subtle\"\n colorPalette={isAccepted ? \"green\" : \"gray\"}\n >\n {isAccepted ? \"Accepted\" : \"Review\"}\n </Badge>\n </Flex>\n </Box>\n );\n })}\n </VStack>\n );\n\n return (\n <Box minH=\"100vh\">\n <Box px={{ base: 0, md: 8 }} pb={{ base: 4, md: 8 }}>\n {/* ── Mobile / tablet: accordion layout ─────────────────────────── */}\n <Box display={{ base: \"block\", lg: \"none\" }}>\n <VStack align=\"stretch\" gap={3}>\n <InfoCardAccordion\n icon={<Icon as={IoIosInformationCircleOutline} boxSize=\"18px\" />}\n title=\"Order Summary\"\n subtitle={modeLabel(selectedPlan?.mode)}\n defaultOpen\n >\n <ReviewRows rows={orderRows} />\n </InfoCardAccordion>\n\n <ApplicationAccordion\n onEdit={onEdit ?? (() => {})}\n items={[\n {\n icon: FaRegUser,\n label: \"Personal Info\",\n subtitle: \"Identification and full name\",\n value: \"personal\",\n page: <ReviewRows rows={personalRows} />,\n },\n {\n icon: FaRegAddressCard,\n label: \"Address\",\n subtitle: \"Where you currently live\",\n value: \"address\",\n page: <ReviewRows rows={addressRows} />,\n },\n {\n icon: IoIosInformationCircleOutline,\n label: \"Employment\",\n subtitle: \"Work and income details\",\n value: \"employment\",\n page: <ReviewRows rows={employmentRows} />,\n },\n ]}\n />\n\n <InfoCardAccordion\n icon={<Icon as={FaRegUser} boxSize=\"18px\" />}\n title=\"Beneficiaries\"\n subtitle={`${beneficiaries.length} listed`}\n >\n {beneficiaryItems}\n </InfoCardAccordion>\n\n <InfoCardAccordion\n icon={<Icon as={IoIosInformationCircleOutline} boxSize=\"18px\" />}\n title=\"Agreements\"\n subtitle={`${acceptedCount}/${checkboxList.length} accepted`}\n >\n {agreementItems}\n </InfoCardAccordion>\n </VStack>\n </Box>\n\n {/* ── Desktop: two-column card masonry ──────────────────────────── */}\n <Box\n display={{ base: \"none\", lg: \"block\" }}\n css={{ columnCount: 2, columnGap: \"24px\" }}\n >\n <SectionCard\n title=\"Personal Information\"\n onEdit={() => onEdit?.(\"personal\")}\n >\n <FieldGrid rows={personalRows} />\n </SectionCard>\n\n <SectionCard title=\"Order Summary\">\n <FieldGrid rows={orderRows} />\n </SectionCard>\n\n <SectionCard title=\"Address\" onEdit={() => onEdit?.(\"address\")}>\n <FieldGrid rows={addressRows} />\n </SectionCard>\n\n <SectionCard title=\"Employment\" onEdit={() => onEdit?.(\"employment\")}>\n <FieldGrid rows={employmentRows} />\n </SectionCard>\n\n <SectionCard title=\"Beneficiaries\">{beneficiaryItems}</SectionCard>\n\n <SectionCard title=\"Agreements\">\n <Text fontSize=\"xs\" color=\"gray.500\" mb={4}>\n {acceptedCount}/{checkboxList.length} accepted\n </Text>\n {agreementItems}\n </SectionCard>\n </Box>\n\n {/* ── Shared agreement dialog (used by both layouts) ────────────── */}\n <Dialog.Root\n open={openDialog}\n onOpenChange={(details) => setOpenDialog(details.open)}\n size={{ mdDown: \"full\", md: \"xl\" }}\n scrollBehavior=\"inside\"\n >\n <Portal>\n <Dialog.Backdrop backdropFilter=\"blur(6px)\" />\n <Dialog.Positioner>\n <Dialog.Content\n bg=\"white\"\n rounded=\"xl\"\n shadow=\"lg\"\n overflow=\"hidden\"\n >\n <Dialog.CloseTrigger asChild>\n <CloseButton position=\"absolute\" top={3} right={3} />\n </Dialog.CloseTrigger>\n\n <Dialog.Header px={{ base: 4, md: 6 }} pt={{ base: 5, md: 6 }}>\n <H3>\n {pendingCheck !== null\n ? pendingAgreement?.title || \"Agreement\"\n : \"Agreement\"}\n </H3>\n <Text fontSize=\"sm\" color=\"gray.600\" mt={2}>\n Please read carefully. Confirm to accept this agreement.\n </Text>\n </Dialog.Header>\n\n <Dialog.Body px={{ base: 4, md: 6 }} pb={{ base: 5, md: 6 }}>\n <Box p={4} borderWidth=\"0px\" rounded=\"lg\" bg=\"gray.50\">\n <Text whiteSpace=\"pre-wrap\" fontSize=\"sm\" color=\"gray.800\">\n {pendingCheck !== null\n ? pendingAgreement?.description ||\n \"Please review and confirm before proceeding.\"\n : \"Please review and confirm before proceeding.\"}\n </Text>\n </Box>\n </Dialog.Body>\n\n <Dialog.Footer px={{ base: 4, md: 6 }} pb={{ base: 5, md: 6 }}>\n <HStack justify=\"flex-end\" gap={3} w=\"full\">\n <CancelButton\n onClick={() => {\n setOpenDialog(false);\n setPendingCheck(null);\n }}\n />\n <ConfirmButton onClick={confirmAgreement} />\n </HStack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n </Box>\n </Box>\n );\n};\n\nexport default Confirmation;\n","import { Box, Heading, Separator } from \"@chakra-ui/react\";\nimport { Body, Small } from \"st-peter-ui\";\n\nexport const checkboxList = [\n {\n title: \"TERMS OF USE\",\n checkBoxTitle:\n \"I hereby confirm that the information that I provided is correct and that I accept the TERMS AND CONDITIONS AND DATA PRIVACY AGREEMENT.\",\n description: (\n <Box>\n <Body>\n Please read these Terms and Conditions of Use carefully before using\n this website. Using this website means you have read, understood,\n agreed to and accepted these Terms and Conditions of Use. If you do\n not accept these Terms and Conditions of Use, do not use this website.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n CHANGES TO THIS TERMS AND USE\n </Body>\n <Body>\n St. Peter Group reserves the right to change these Terms and\n Conditions of Use from time to time, in whole or in part, without\n prior notice. Your continued use of this Website after changes to the\n Terms and Conditions of Use have been published constitutes your\n binding agreement and acceptance of the updated Terms and Conditions\n of Use. If at any time the Terms and Conditions of Use are not\n acceptable to you, you should immediately cease use of this website.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n TRADEMARKS\n </Body>\n <Body>\n The trademarks, logos, and service marks displayed on this Website are\n the properties of the St. Peter Group or the St. Peter Group. You are\n not permitted to use these items without the prior written consent of\n St. Peter Group or the St. Peter Group.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n INTELLECTUAL PROPERTY RIGHTS\n </Body>\n <Body>\n The St. Peter Group owns the intellectual property rights in the\n content that is made available on this Website, or has obtained the\n permission of the proper owner/s to make such content available. The\n St. Peter Group strictly prohibits the redistribution or copying of\n this Website, in whole or in part, without written permission.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n LINKS TO OTHER SITES\n </Body>\n <Body>\n This website contains links to other websites and are provided for\n convenience only. St. Peter Group has not reviewed the linked websites\n and is not responsible for the content or availability of any linked\n websites. Inclusion of any link does not imply endorsement.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n SUBMISSION OF UNOFFICIAL IDEAS\n </Body>\n <Body>\n St. Peter Group does not accept unsolicited unofficial ideas. Do not\n send original creative artwork, samples, demos, or other works. Any\n submissions will not be treated as confidential or proprietary.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n RULES OF CONDUCT\n </Body>\n <Body>\n Your use of this Website is subject to all applicable laws. Do not\n post threatening, abusive, defamatory, obscene, hateful, or illegal\n content. Do not upload harmful software or attempt to disrupt the\n Website.\n </Body>\n <Body mt={2}>\n You may not post advertisements, political materials, chain letters,\n spam, or use robots or scraping tools. You may not harvest data\n without consent.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n GLOBAL AVAILABILITY\n </Body>\n <Body>\n St. Peter Group manages this site from the Philippines. You are\n responsible for complying with local laws if used from other\n locations. Some products may not be available worldwide.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n ACCURACY, COMPLETENESS AND TIMELINESS OF INFORMATION\n </Body>\n <Body>\n St. Peter Group is not responsible if information on this Website is\n inaccurate or incomplete for very specific needs. You are responsible\n for monitoring changes.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n DISCLAIMER\n </Body>\n <Body>\n The Website is provided “as is”. St. Peter Group makes no warranties\n and is not liable for any damages, including loss of data, viruses,\n errors, or reliance on content.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n LIMITATION OF LIABILITY\n </Body>\n <Body>\n St. Peter Group is not liable for any direct, indirect, punitive,\n special, incidental, or consequential damages, including loss of\n business or data.\n </Body>\n <Body mt={2}>\n Some jurisdictions may not allow the exclusion of certain damages.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n JURISDICTION\n </Body>\n <Body>\n These Terms are governed by Philippine law. If any provision is held\n invalid, the remainder stays effective.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n PRIVACY POLICY\n </Body>\n <Body>Please read our Privacy Policy.</Body>\n <Separator my={8} />\n <Body fontWeight=\"semibold\" mt={4}>\n HOW TO CONTACT US\n </Body>\n <Body>\n If you have any concern regarding these Terms of Use, contact us:\n </Body>\n <Body mt={2} fontWeight=\"semibold\">\n For website concerns: ronagl@stpeter.com.ph\n </Body>\n <Body mt={2} fontWeight=\"semibold\">\n For data privacy concerns: joycemb@stpeter.com.ph\n </Body>\n <Small textAlign=\"center\" mt={8}>\n This Terms of Use was amended on August 30, 2018\n </Small>\n </Box>\n ),\n },\n\n {\n title: \"TERMS OF LIFE PLAN CONTRACT\",\n checkBoxTitle:\n \"I hereby confirm that the information that I provided is correct and that I accept the TERMS OF LIFE PLAN CONTRACT.\",\n description: (\n <Box>\n <Body fontWeight=\"semibold\" mt={4}>\n ARTICLE I. DEFINITION OF TERMS\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n ST. PETER\n </Body>\n <Body>ST. PETER LIFE PLAN, INC.</Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n PLANHOLDER\n </Body>\n <Body>\n Refers to the person who purchases and owns the plan for whom or for\n whose beneficiaries benefits are to be delivered, as stipulated and\n guaranteed by ST. PETER. The term includes the assignee, transferee,\n and any successor-in-interest of the PLANHOLDER.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Contract\n </Body>\n <Body>\n Refers to the Life Plan Contract between ST. PETER and the PLANHOLDER\n providing the terms and conditions thereof.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Contract Price\n </Body>\n <Body>\n Refers to the stipulated price of the Life Plan which may be paid\n either in lump sum or in installments, net of handling fees and other\n charges, if any.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Gross Contract Price\n </Body>\n <Body>\n Refers to the stipulated price of the Life Plan which includes\n handling fees and other charges.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Plan Installment\n </Body>\n <Body>\n Refers to the monthly, quarterly, semi-annual or annual installment\n amounts paid by the PLANHOLDER.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Paying Period\n </Body>\n <Body>\n Refers to the period of time within which the PLANHOLDER has to pay\n for the Gross Contract Price of the plan in monthly, quarterly,\n semi-annual, annual installments or lump sum.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Due Date\n </Body>\n <Body>\n Refers to the date when the PLANHOLDER’s installment should be paid.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Beneficiary\n </Body>\n <Body>\n Refers to the person designated by the PLANHOLDER, in accordance with\n law, to receive the plan’s insurance proceeds and/or pre-need benefits\n in case of unrendered service. The PLANHOLDER has the right to change\n the beneficiary/ies designated in the application subject to the\n submission of the standard form and approval.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Grace Period\n </Body>\n <Body>\n Refers to the sixty-day period given to the PLANHOLDER within which to\n pay accrued installments due, counted from the due date of the first\n unpaid installment in default, as stipulated in this Life Plan\n Contract.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Lapsed Plan\n </Body>\n <Body>\n Refers to a delinquent plan which has remained unpaid beyond the grace\n period. A Lapsed Plan has no force and effect.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Reinstatement\n </Body>\n <Body>Refers to the process of reactivating a lapsed plan.</Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Certificate of Full Payment\n </Body>\n <Body>\n Refers to ST. PETER’s duly signed certification stating that a plan\n has been fully paid.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n In Force Plan or Active Plan\n </Body>\n <Body>\n Refers to a pre-need plan for which ST. PETER has an outstanding\n obligation, either for (1) delivery of benefits or services or (2)\n payment of termination value.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Mortuary Tie-Up\n </Body>\n <Body>\n Refers to the memorial servicing tie-up or mortuary accredited with\n ST. PETER which renders the memorial services stipulated hereunder.\n </Body>\n\n <Body fontWeight=\"semibold\" mt={4}>\n Effective Date\n </Body>\n <Body>\n Refers to the date when the payment of at least one (1) modal\n installment has been accepted and the purchase has been approved by\n ST. PETER with the issuance of this Contract and as indicated herein.\n </Body>\n </Box>\n ),\n },\n\n {\n title: \"OUR CUSTOMER SERVICE CHARTER\",\n checkBoxTitle: \"I have read and understood the CUSTOMER SERVICE CHARTER.\",\n description: (\n <Box>\n <Body>\n We at ST. PETER LIFE PLAN, INC. hold ourselves as DeathCare Experts\n who aspire to be the most trusted and reliable provider in your\n Pre-Need Life Plan needs. We also aim to deliver world-class DeathCare\n services to our planholders. At the core of our corporate values is\n customer satisfaction. We believe that every filipino family should\n have a St. Peter Life Plan. These are the pillars of our company’s\n customer service commitment especially in our online facility and in\n social media.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Our customer service charter reflects our commitment to:\n </Body>\n <Box as=\"ul\" listStyleType=\"circle\" listStylePosition=\"inside\">\n <li>Safe and Secure Operations</li>\n <li>Maintenance of Customer Privacy</li>\n <li>Quality Services</li>\n <li>Transparent Product Information</li>\n <li>Prompt Response to Inquiries and Complaints</li>\n </Box>\n <Body mt={4} fontWeight=\"semibold\">\n OUR CUSTOMER SERVICE STANDARDS AND COMMITMENTS\n </Body>\n </Box>\n ),\n },\n];\n","\"use client\";\r\n\r\nimport { Box, Button, Flex, Icon, Text } from \"@chakra-ui/react\";\r\nimport React, { useState } from \"react\";\r\nimport { LuChevronDown, LuChevronUp, LuHash, LuPencil } from \"react-icons/lu\";\r\n\r\ninterface InfoCardAccordionProps {\r\n icon: React.ReactNode;\r\n openedIcon?: React.ReactNode;\r\n title: string;\r\n subtitle?: string;\r\n children?: React.ReactNode;\r\n defaultOpen?: boolean;\r\n isOpen?: boolean;\r\n onToggle?: () => void;\r\n onEdit?: () => void;\n}\r\n\r\nexport function InfoCardAccordion({\r\n icon,\r\n openedIcon,\r\n title,\r\n subtitle,\r\n children,\r\n defaultOpen = false,\r\n isOpen: controlledOpen,\r\n onToggle,\r\n onEdit,\r\n}: InfoCardAccordionProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : internalOpen;\r\n\r\n const toggle = () => {\r\n if (isControlled) {\r\n onToggle?.();\r\n } else {\r\n setInternalOpen((prev: boolean) => !prev);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n toggle();\r\n }\r\n };\r\n\r\n const activeIcon = isOpen && openedIcon ? openedIcon : icon;\r\n\r\n return (\r\n <Box\r\n w=\"full\"\r\n position=\"relative\"\r\n p={1}\r\n borderRadius=\"2xl\"\r\n bg=\"white\"\r\n shadow=\"sm\"\r\n transition=\"all 0.25s ease\"\r\n _hover={{ transform: \"translateY(-3px)\", shadow: \"lg\" }}\r\n overflow=\"hidden\"\r\n cursor=\"pointer\"\r\n >\r\n <Flex\n align=\"center\"\r\n justify=\"space-between\"\r\n px={4}\r\n py={3}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n aria-expanded={isOpen}\r\n onClick={toggle}\r\n onKeyDown={handleKeyDown}\r\n _hover={{ bg: \"gray.50\" }}\r\n transition=\"background 0.15s ease\"\r\n >\r\n <Flex align=\"center\" gap={2}>\r\n <Box\r\n p={2}\r\n borderRadius=\"full\"\r\n bg={\"gray.100\"}\r\n color={\"inherit\"}\r\n transition=\"background 0.2s ease, color 0.2s ease\"\r\n >\r\n {activeIcon}\r\n </Box>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\" lineHeight=\"1.2\">\r\n {title}\r\n </Text>\r\n {subtitle && (\r\n <Flex align=\"center\" gap={1} fontSize=\"xs\" color=\"gray.500\">\r\n <LuHash size={12} />\r\n <Text>{subtitle}</Text>\r\n </Flex>\r\n )}\r\n </Box>\r\n </Flex>\r\n\r\n <Flex align=\"center\" gap={1} flexShrink={0}>\n {onEdit && (\r\n <Button\r\n variant=\"ghost\"\r\n p={0}\r\n minW=\"32px\"\r\n h=\"32px\"\r\n borderRadius=\"md\"\r\n aria-label={`Edit ${title}`}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onEdit();\r\n }}\r\n >\r\n <Icon as={LuPencil} boxSize={4} />\r\n </Button>\r\n )}\r\n <Box color=\"gray.400\">\r\n {isOpen ? <LuChevronUp size={16} /> : <LuChevronDown size={16} />}\r\n </Box>\r\n </Flex>\r\n </Flex>\r\n\r\n {isOpen && children && (\n <Box p={4} borderTopWidth={1} borderColor=\"gray.100\">\r\n {children}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n","\"use client\";\n\nimport React, { useRef, useState } from \"react\";\nimport { Box, ButtonGroup, Flex, Steps, Text } from \"@chakra-ui/react\";\nimport { PrimaryMdButton, SecondaryMdButton } from \"st-peter-ui\";\nimport { LuChevronLeft, LuChevronRight, LuCheck } from \"react-icons/lu\";\n\nconst PRIMARY = \"var(--chakra-colors-primary)\";\nconst PRIMARY_HOVER = \"var(--chakra-colors-primary-hover)\";\nconst PRIMARY_DISABLED = \"var(--chakra-colors-primary-disabled)\";\n\ninterface HorizontalStepperProps {\n steps: {\n title: string;\n description: React.ReactNode;\n component?: React.ReactNode;\n icon?: React.ElementType;\n }[];\n title?: string;\n description?: string;\n onStepChange?: (index: number) => void;\n onSubmit?: () => void;\n submitDisabled?: boolean;\n activeStep?: number;\n nextDisabled?: boolean;\n submitButtonText?: string;\n}\n\nconst HorizontalStepper = ({\n steps,\n title,\n description,\n onStepChange,\n onSubmit,\n submitDisabled,\n activeStep: controlledActiveStep,\n nextDisabled,\n submitButtonText = \"Proceed To Payment\",\n}: HorizontalStepperProps) => {\n const [localActiveStep, setLocalActiveStep] = useState(0);\n const activeStep =\n controlledActiveStep !== undefined ? controlledActiveStep : localActiveStep;\n\n const formTopRef = useRef<HTMLDivElement | null>(null);\n const isCompact = steps.length < 3;\n const isLastStep = activeStep === steps.length - 1;\n const nextStepTitle = steps[activeStep + 1]?.title;\n\n const scrollToTop = () => {\n requestAnimationFrame(() => {\n formTopRef.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n });\n };\n\n const handleStepChange = (index: number) => {\n if (controlledActiveStep === undefined) {\n setLocalActiveStep(index);\n }\n onStepChange?.(index);\n scrollToTop();\n };\n\n const handleNext = () => {\n if (nextDisabled) return;\n handleStepChange(Math.min(activeStep + 1, steps.length - 1));\n };\n\n return (\n <Flex\n direction=\"column\"\n align=\"start\"\n minH={{ base: \"100dvh\", md: \"100vh\" }}\n w=\"full\"\n overflow=\"visible\"\n pb={{ base: \"12px\", md: \"0px\" }}\n >\n {/* Scroll anchor — always rendered so \"Next\"/\"Back\" can reset the\n viewport to the top of the stepper even without a title/description. */}\n <Box ref={formTopRef} h=\"0\" w=\"full\" scrollMarginTop={{ base: 4, md: 6 }} />\n\n {/* Header */}\n {(title || description) && (\n <Box mb={4}>\n {title && (\n <Box\n as=\"h1\"\n m=\"0\"\n fontFamily=\"var(--font-dm-sans), system-ui, sans-serif\"\n fontWeight={description ? 600 : 500}\n color=\"gray.900\"\n lineHeight=\"1.1\"\n letterSpacing={description ? \"-0.025em\" : \"-0.015em\"}\n fontSize={{\n base: description ? \"22px\" : \"24px\",\n lg: description ? \"28px\" : \"32px\",\n }}\n >\n {title}\n </Box>\n )}\n\n {description && (\n <Text fontSize=\"sm\" color=\"gray.500\" mt={1}>\n {description}\n </Text>\n )}\n </Box>\n )}\n\n <Box w=\"full\" rounded=\"2xl\">\n <Steps.Root\n step={activeStep}\n onStepChange={(index) => handleStepChange(index.step)}\n defaultStep={0}\n count={steps.length}\n colorPalette=\"green\"\n >\n {/* Sticky step header */}\n <Box\n position=\"sticky\"\n top={0}\n zIndex={10}\n bg=\"white\"\n pt={2}\n pb={3}\n mx={-1}\n px={1}\n borderBottomWidth=\"1px\"\n borderColor=\"gray.100\"\n boxShadow=\"0 2px 8px -2px rgba(0,0,0,0.06)\"\n >\n <Steps.List\n py={0}\n flexDirection=\"row\"\n alignItems=\"center\"\n w=\"full\"\n justifyContent=\"space-evenly\"\n >\n {steps.map((step, index) => {\n const isCompleted = index < activeStep;\n const isActive = index === activeStep;\n\n return (\n <Steps.Item\n key={index}\n index={index}\n title={step.title}\n minW={{ base: \"0px\", md: \"auto\" }}\n flex={isCompact ? \"0 0 auto\" : \"1\"}\n >\n <Steps.Trigger\n flexDirection={isCompact ? \"row\" : \"column\"}\n alignItems=\"center\"\n gap={isCompact ? 2 : 1}\n px={isCompact ? 3 : 2}\n py={isCompact ? 2 : 1}\n borderRadius=\"lg\"\n transition=\"background 0.2s\"\n _hover={{ bg: \"gray.50\" }}\n >\n <Steps.Indicator\n borderWidth=\"2px\"\n transition=\"all 0.25s\"\n style={{\n borderColor:\n isCompleted || isActive ? PRIMARY : undefined,\n background: isCompleted ? PRIMARY : undefined,\n color: isCompleted\n ? \"white\"\n : isActive\n ? PRIMARY\n : undefined,\n boxShadow: isActive\n ? `0 0 0 3px ${PRIMARY_DISABLED}`\n : \"none\",\n }}\n >\n {isCompleted ? (\n <LuCheck size={14} />\n ) : step.icon ? (\n <Box as={step.icon} w={4} h={4} />\n ) : null}\n </Steps.Indicator>\n\n <Steps.Title\n fontSize={{ base: \"xs\", md: \"sm\" }}\n textAlign={isCompact ? \"left\" : \"center\"}\n whiteSpace=\"normal\"\n wordBreak=\"break-word\"\n fontWeight={isActive ? 600 : 400}\n color={\n isActive\n ? \"gray.900\"\n : isCompleted\n ? \"gray.600\"\n : \"gray.400\"\n }\n transition=\"color 0.2s\"\n >\n {step.title}\n </Steps.Title>\n </Steps.Trigger>\n\n {!isCompact && (\n <Steps.Separator\n display={{ base: \"none\", md: \"block\" }}\n />\n )}\n </Steps.Item>\n );\n })}\n </Steps.List>\n\n {/* Progress bar */}\n <Box\n w=\"full\"\n h=\"3px\"\n bg=\"gray.100\"\n borderRadius=\"full\"\n overflow=\"hidden\"\n mt={1}\n >\n <Box\n h=\"full\"\n bg={PRIMARY}\n transition=\"width 0.4s ease\"\n w={`${((activeStep + 1) / steps.length) * 100}%`}\n />\n </Box>\n </Box>\n\n {/* Step content */}\n {steps.map((step, index) => (\n <Steps.Content key={index} index={index}>\n {step.component ?? step.description}\n </Steps.Content>\n ))}\n\n {/* Mobile nav */}\n <Flex\n w=\"full\"\n justify=\"space-between\"\n align=\"center\"\n mt={4}\n gap={2}\n display={{ base: \"flex\", md: \"none\" }}\n >\n <Steps.PrevTrigger asChild>\n <Box\n as=\"button\"\n display=\"flex\"\n alignItems=\"center\"\n gap={1}\n px={3}\n py={2}\n borderRadius=\"lg\"\n border=\"1.5px solid\"\n borderColor=\"gray.200\"\n bg=\"white\"\n color=\"gray.700\"\n fontSize=\"sm\"\n fontWeight={500}\n cursor=\"pointer\"\n _hover={{ bg: \"gray.50\" }}\n _disabled={{ opacity: 0.4, cursor: \"not-allowed\" }}\n transition=\"all 0.15s\"\n >\n <LuChevronLeft size={14} />\n Back\n </Box>\n </Steps.PrevTrigger>\n\n {!isLastStep ? (\n <Box\n as=\"button\"\n display=\"flex\"\n alignItems=\"center\"\n gap={1}\n px={3}\n py={2}\n borderRadius=\"lg\"\n color=\"white\"\n fontSize=\"sm\"\n fontWeight={500}\n cursor={nextDisabled ? \"not-allowed\" : \"pointer\"}\n opacity={nextDisabled ? 0.5 : 1}\n pointerEvents={nextDisabled ? \"none\" : \"auto\"}\n transition=\"all 0.15s\"\n onClick={handleNext}\n bg={PRIMARY}\n _hover={{ bg: PRIMARY_HOVER }}\n >\n {nextStepTitle ? `Next: ${nextStepTitle}` : \"Next\"}\n <LuChevronRight size={14} />\n </Box>\n ) : (\n <Box\n as=\"button\"\n display=\"flex\"\n alignItems=\"center\"\n gap={1}\n px={3}\n py={2}\n borderRadius=\"lg\"\n color=\"white\"\n fontSize=\"sm\"\n fontWeight={500}\n cursor={submitDisabled ? \"not-allowed\" : \"pointer\"}\n opacity={submitDisabled ? 0.5 : 1}\n pointerEvents={submitDisabled ? \"none\" : \"auto\"}\n transition=\"all 0.15s\"\n onClick={onSubmit}\n bg={PRIMARY}\n _hover={{ bg: PRIMARY_HOVER }}\n >\n {submitButtonText}\n <LuCheck size={14} />\n </Box>\n )}\n </Flex>\n\n {/* Desktop nav */}\n <ButtonGroup\n size=\"sm\"\n variant=\"outline\"\n display={{ base: \"none\", md: \"flex\" }}\n >\n <Flex mt={5} w=\"full\" align=\"center\" justify=\"space-between\">\n <Steps.PrevTrigger asChild>\n <SecondaryMdButton>\n <LuChevronLeft />\n Previous\n </SecondaryMdButton>\n </Steps.PrevTrigger>\n\n {!isLastStep ? (\n <Box\n as=\"button\"\n display=\"flex\"\n alignItems=\"center\"\n gap={1.5}\n px={4}\n py={2}\n borderRadius=\"lg\"\n color=\"white\"\n fontSize=\"sm\"\n fontWeight={600}\n cursor={nextDisabled ? \"not-allowed\" : \"pointer\"}\n opacity={nextDisabled ? 0.5 : 1}\n pointerEvents={nextDisabled ? \"none\" : \"auto\"}\n transition=\"all 0.15s\"\n onClick={handleNext}\n boxShadow=\"0 1px 3px 0 rgba(0,0,0,0.12)\"\n bg={PRIMARY}\n _hover={{ bg: PRIMARY_HOVER }}\n >\n {nextStepTitle ? `Next: ${nextStepTitle}` : \"Next\"}\n <LuChevronRight size={15} />\n </Box>\n ) : (\n <PrimaryMdButton disabled={!!submitDisabled} onClick={onSubmit}>\n {submitButtonText}\n </PrimaryMdButton>\n )}\n </Flex>\n </ButtonGroup>\n </Steps.Root>\n </Box>\n </Flex>\n );\n};\n\nexport default HorizontalStepper;\n","\"use client\";\n\nimport SharedLifePlanApplication from \"./SharedLifePlanApplication\";\n\nconst LifePlanApplicationStepWrapper = () => {\n return <SharedLifePlanApplication />;\n};\n\nexport default LifePlanApplicationStepWrapper;\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport {\r\n Box,\r\n Drawer,\r\n Portal,\r\n HStack,\r\n VStack,\r\n Flex,\r\n Icon,\r\n CloseButton,\r\n Text,\r\n} from \"@chakra-ui/react\";\r\nimport { LuChevronRight } from \"react-icons/lu\";\r\nimport type { IconType } from \"react-icons\";\r\nimport Link from \"next/link\";\r\nimport { BRAND_COLORS } from \"../lib/theme/brand-colors\";\r\nimport {\r\n STANDARD_RADIUS,\r\n STANDARD_SHADOWS,\r\n STANDARD_SPACING,\r\n} from \"../lib/theme/standard-design-tokens\";\r\n\r\n// ─── Types ────────────────────────────────────────────────────────────────────\r\n\r\nexport type QuickAction = {\r\n /** React Icons icon component */\r\n icon: IconType;\r\n /** Primary action label */\r\n label: string;\r\n /** Optional supporting text below the label */\r\n description?: string;\r\n /** Called when the item is tapped (can be combined with href) */\r\n onClick?: () => void;\r\n /** Wrap the item in a Next.js Link */\r\n href?: string;\r\n /** Icon bubble background — defaults to brand muted gray */\r\n iconBg?: string;\r\n /** Icon fill color — defaults to brand neutral text */\r\n iconColor?: string;\r\n};\r\n\r\nexport type QuickActionsHeaderCardProps = {\r\n /** Short initials shown in the avatar circle (1–3 chars) */\r\n initials?: string;\r\n /** Avatar circle background — defaults to brand dark green */\r\n avatarBg?: string;\r\n /** Bold primary label (e.g. a name or record title) */\r\n label: string;\r\n /** Dimmer supporting line (e.g. \"ID #SP-10293 · Life Plan\") */\r\n meta?: string;\r\n /** Optional trailing slot (e.g. a badge or icon) */\r\n trailing?: React.ReactNode;\r\n};\r\n\r\nexport type BottomQuickActionsProps = {\r\n /** Controls open state */\r\n open: boolean;\r\n /** Called on close or backdrop tap */\r\n onOpenChange: (open: boolean) => void;\r\n /** Sheet heading — defaults to \"Quick actions\" */\r\n title?: string;\r\n /** Muted subtext below the title */\r\n subtitle?: string;\r\n /**\r\n * Optional context card rendered between the title bar and the action list.\r\n * Use `QuickActionsHeaderCard` for the standard \"acting on which record\" pattern,\r\n * or pass any ReactNode.\r\n */\r\n headerSlot?: React.ReactNode;\r\n /** The ordered list of actions */\r\n actions: QuickAction[];\r\n};\r\n\r\n// ─── Design tokens ────────────────────────────────────────────────────────────\r\n\r\nconst SHEET_BG = BRAND_COLORS.white;\r\nconst DRAG_COLOR = BRAND_COLORS.neutralBorder;\r\nconst ITEM_BG = BRAND_COLORS.white;\r\nconst ITEM_HOVER_BG = BRAND_COLORS.subtleBg;\r\nconst ITEM_ACTIVE_BG = BRAND_COLORS.mutedBg;\r\nconst ITEM_BORDER = BRAND_COLORS.neutralBorder;\r\nconst DEFAULT_ICON_BG = BRAND_COLORS.mutedBg;\r\nconst DEFAULT_ICON_COLOR = BRAND_COLORS.neutralText;\r\nconst AVATAR_DEFAULT_BG = BRAND_COLORS.darkGreen;\r\nconst HEADER_CARD_BG = BRAND_COLORS.subtleBg;\r\nconst HEADER_CARD_BORDER = BRAND_COLORS.neutralBorder;\r\nconst TITLE_COLOR = BRAND_COLORS.neutralText;\r\nconst SUBTITLE_COLOR = BRAND_COLORS.grey;\r\nconst LABEL_COLOR = BRAND_COLORS.neutralText;\r\nconst DESC_COLOR = BRAND_COLORS.grey;\r\nconst CHEVRON_COLOR = BRAND_COLORS.ashWhite;\r\n\r\n// ─── QuickActionsHeaderCard ───────────────────────────────────────────────────\r\n\r\n/**\r\n * Convenience header card for showing which record the actions apply to.\r\n * Pass this to `BottomQuickActions` via the `headerSlot` prop.\r\n */\r\nexport const QuickActionsHeaderCard = React.memo(\r\n ({\r\n initials,\r\n avatarBg = AVATAR_DEFAULT_BG,\r\n label,\r\n meta,\r\n trailing,\r\n }: QuickActionsHeaderCardProps) => (\r\n <HStack\r\n gap={STANDARD_SPACING.sm}\r\n px={STANDARD_SPACING.sm}\r\n py=\"13px\"\r\n bg={HEADER_CARD_BG}\r\n borderRadius={STANDARD_RADIUS.lg}\r\n borderWidth=\"1px\"\r\n borderColor={HEADER_CARD_BORDER}\r\n >\r\n {initials && (\r\n <Flex\r\n w=\"40px\"\r\n h=\"40px\"\r\n borderRadius={STANDARD_RADIUS.full}\r\n bg={avatarBg}\r\n align=\"center\"\r\n justify=\"center\"\r\n flexShrink={0}\r\n >\r\n <Text\r\n fontSize=\"14px\"\r\n fontWeight=\"700\"\r\n color={BRAND_COLORS.white}\r\n lineHeight=\"1\"\r\n >\r\n {initials}\r\n </Text>\r\n </Flex>\r\n )}\r\n <Box flex=\"1\" minW={0}>\r\n <Text\r\n fontSize=\"15px\"\r\n fontWeight=\"700\"\r\n color={TITLE_COLOR}\r\n lineHeight=\"1.25\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {label}\r\n </Text>\r\n {meta && (\r\n <Text\r\n fontSize=\"12px\"\r\n color={SUBTITLE_COLOR}\r\n mt=\"2px\"\r\n lineHeight=\"1.4\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {meta}\r\n </Text>\r\n )}\r\n </Box>\r\n {trailing}\r\n </HStack>\r\n ),\r\n);\r\n\r\n// ─── Action item ──────────────────────────────────────────────────────────────\r\n\r\nconst ITEM_TRANSITION = {\r\n transition: \"background 0.15s ease, transform 0.1s ease\",\r\n};\r\n\r\nconst ActionItem = React.memo(({ action }: { action: QuickAction }) => {\r\n const iconBg = action.iconBg ?? DEFAULT_ICON_BG;\r\n const iconColor = action.iconColor ?? DEFAULT_ICON_COLOR;\r\n\r\n const inner = (\r\n <HStack\r\n gap={STANDARD_SPACING.sm}\r\n px={STANDARD_SPACING.sm}\r\n py=\"14px\"\r\n bg={ITEM_BG}\r\n borderRadius={STANDARD_RADIUS.lg}\r\n borderWidth=\"1px\"\r\n borderColor={ITEM_BORDER}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n userSelect=\"none\"\r\n boxShadow={STANDARD_SHADOWS.level1}\r\n onClick={action.onClick}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") action.onClick?.();\r\n }}\r\n _hover={{ bg: ITEM_HOVER_BG }}\r\n _active={{ bg: ITEM_ACTIVE_BG, transform: \"scale(0.99)\" }}\r\n style={ITEM_TRANSITION}\r\n >\r\n <Flex\r\n w=\"40px\"\r\n h=\"40px\"\r\n borderRadius={STANDARD_RADIUS.md}\r\n bg={iconBg}\r\n align=\"center\"\r\n justify=\"center\"\r\n flexShrink={0}\r\n >\r\n <Icon as={action.icon} boxSize=\"20px\" color={iconColor} />\r\n </Flex>\r\n\r\n <Box flex=\"1\" minW={0}>\r\n <Text\r\n fontSize=\"15px\"\r\n fontWeight=\"600\"\r\n color={LABEL_COLOR}\r\n lineHeight=\"1.25\"\r\n >\r\n {action.label}\r\n </Text>\r\n {action.description && (\r\n <Text\r\n fontSize=\"12px\"\r\n color={DESC_COLOR}\r\n mt=\"2px\"\r\n lineHeight=\"1.4\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {action.description}\r\n </Text>\r\n )}\r\n </Box>\r\n\r\n <Icon\r\n as={LuChevronRight}\r\n boxSize=\"18px\"\r\n color={CHEVRON_COLOR}\r\n flexShrink={0}\r\n />\r\n </HStack>\r\n );\r\n\r\n if (action.href) {\r\n return (\r\n <Link\r\n href={action.href}\r\n style={{ textDecoration: \"none\", display: \"block\" }}\r\n >\r\n {inner}\r\n </Link>\r\n );\r\n }\r\n return inner;\r\n});\r\n\r\n// ─── BottomQuickActions ───────────────────────────────────────────────────────\r\n\r\nexport const BottomQuickActions = ({\r\n open,\r\n onOpenChange,\r\n title = \"Quick actions\",\r\n subtitle,\r\n headerSlot,\r\n actions,\r\n}: BottomQuickActionsProps) => {\r\n return (\r\n <Drawer.Root\r\n open={open}\r\n onOpenChange={(e) => onOpenChange(e.open)}\r\n placement=\"bottom\"\r\n >\r\n <Portal>\r\n <Drawer.Backdrop />\r\n <Drawer.Positioner>\r\n <Drawer.Content\r\n borderTopRadius=\"l3\"\r\n borderBottomRadius=\"0\"\r\n bg={SHEET_BG}\r\n maxW=\"480px\"\r\n mx=\"auto\"\r\n pb={`calc(${STANDARD_SPACING.sm} + env(safe-area-inset-bottom))`}\r\n boxShadow={STANDARD_SHADOWS.level4}\r\n >\r\n {/* Drag handle */}\r\n <Flex justify=\"center\" pt=\"10px\" pb=\"4px\">\r\n <Box\r\n w=\"36px\"\r\n h=\"4px\"\r\n borderRadius={STANDARD_RADIUS.full}\r\n bg={DRAG_COLOR}\r\n />\r\n </Flex>\r\n\r\n {/* Header: title + subtitle + close button */}\r\n <Drawer.Header\r\n px={STANDARD_SPACING.sm}\r\n pt=\"12px\"\r\n pb=\"0\"\r\n borderBottomWidth=\"0\"\r\n >\r\n <Flex align=\"flex-start\" justify=\"space-between\" gap=\"12px\">\r\n <Box flex=\"1\" minW={0}>\r\n <Drawer.Title\r\n fontSize=\"18px\"\r\n fontWeight=\"700\"\r\n color={TITLE_COLOR}\r\n lineHeight=\"1.25\"\r\n letterSpacing=\"-0.02em\"\r\n >\r\n {title}\r\n </Drawer.Title>\r\n {subtitle && (\r\n <Text\r\n fontSize=\"13px\"\r\n color={SUBTITLE_COLOR}\r\n mt=\"3px\"\r\n fontWeight=\"400\"\r\n lineHeight=\"1.4\"\r\n >\r\n {subtitle}\r\n </Text>\r\n )}\r\n </Box>\r\n <Drawer.CloseTrigger asChild mt=\"2px\" flexShrink={0}>\r\n <CloseButton\r\n size=\"sm\"\r\n color={BRAND_COLORS.neutralText}\r\n borderRadius={STANDARD_RADIUS.full}\r\n _hover={{ bg: BRAND_COLORS.mutedBg }}\r\n />\r\n </Drawer.CloseTrigger>\r\n </Flex>\r\n </Drawer.Header>\r\n\r\n {/* Body: optional header card + action list */}\r\n <Drawer.Body\r\n px={STANDARD_SPACING.sm}\r\n pt={STANDARD_SPACING.sm}\r\n pb=\"4px\"\r\n >\r\n {headerSlot && <Box mb={STANDARD_SPACING.xs}>{headerSlot}</Box>}\r\n\r\n <VStack gap={STANDARD_SPACING.xs} align=\"stretch\">\r\n {actions.map((action, i) => (\r\n <ActionItem key={i} action={action} />\r\n ))}\r\n </VStack>\r\n </Drawer.Body>\r\n </Drawer.Content>\r\n </Drawer.Positioner>\r\n </Portal>\r\n </Drawer.Root>\r\n );\r\n};\r\n\r\nexport default BottomQuickActions;\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { Button, Flex, HStack, Icon, Text, VStack } from \"@chakra-ui/react\";\r\nimport { AnimatePresence, motion } from \"motion/react\";\r\nimport { FiDownload, FiPlusSquare, FiShare, FiX } from \"react-icons/fi\";\r\nimport { useNotifyInstall } from \"../hooks/useNotifyInstall\";\r\n\r\nconst STEPS = [\r\n { icon: FiShare, label: \"Tap the browser menu or Share button\" },\r\n { icon: FiPlusSquare, label: 'Choose \"Add to Home Screen\"' },\r\n];\r\n\r\nconst DISMISSED_KEY = \"estore-install-dialog-dismissed\";\r\n\r\ninterface NotifyInstallProps {\r\n children: React.ReactNode;\r\n appName: string;\r\n}\r\n\r\nexport default function NotifyInstall({\r\n children,\r\n appName,\r\n}: {\r\n children: React.ReactNode;\r\n appName: string;\r\n}) {\r\n const { isInstalled, isMobile, canInstall, install } = useNotifyInstall();\r\n\r\n // Start as true so the sheet never flashes before we know the stored state\r\n const [isDismissed, setIsDismissed] = useState(true);\r\n\r\n useEffect(() => {\r\n if (localStorage.getItem(DISMISSED_KEY) !== \"true\") {\r\n setIsDismissed(false);\r\n }\r\n }, []);\r\n\r\n const handleDismiss = () => {\r\n localStorage.setItem(DISMISSED_KEY, \"true\");\r\n setIsDismissed(true);\r\n };\r\n\r\n const showPrompt = isMobile && !isInstalled && !isDismissed;\r\n\r\n return (\r\n <>\r\n {children}\r\n\r\n <AnimatePresence>\r\n {showPrompt && (\r\n <>\r\n {/* ── Backdrop ─────────────────────────────────────────────── */}\r\n <motion.div\r\n key=\"install-backdrop\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n onClick={handleDismiss}\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex: 1300,\r\n background: \"rgba(0,0,0,0.55)\",\r\n backdropFilter: \"blur(3px)\",\r\n WebkitBackdropFilter: \"blur(3px)\",\r\n }}\r\n />\r\n\r\n {/* ── Bottom sheet ─────────────────────────────────────────── */}\r\n <motion.div\r\n key=\"install-sheet\"\r\n initial={{ y: \"100%\" }}\r\n animate={{ y: 0 }}\r\n exit={{ y: \"100%\" }}\r\n transition={{ type: \"spring\", damping: 28, stiffness: 280 }}\r\n style={{\r\n position: \"fixed\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n zIndex: 1400,\r\n background: \"white\",\r\n borderRadius: \"24px 24px 0 0\",\r\n boxShadow: \"0 -8px 40px rgba(0,0,0,0.14)\",\r\n paddingBottom: \"env(safe-area-inset-bottom)\",\r\n }}\r\n >\r\n {/* Close button */}\r\n <button\r\n aria-label=\"Dismiss install prompt\"\r\n onClick={handleDismiss}\r\n style={{\r\n position: \"absolute\",\r\n top: 12,\r\n right: 12,\r\n background: \"none\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: 8,\r\n borderRadius: \"50%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: \"#9ca3af\",\r\n }}\r\n >\r\n <FiX size={18} />\r\n </button>\r\n\r\n {/* Content */}\r\n <VStack gap={6} textAlign=\"center\" px={6} py={8}>\r\n {/* Icon badge */}\r\n <Flex\r\n boxSize={16}\r\n align=\"center\"\r\n justify=\"center\"\r\n rounded=\"2xl\"\r\n bg=\"green.50\"\r\n color=\"green.600\"\r\n shadow=\"sm\"\r\n >\r\n <Icon as={FiDownload} boxSize={8} />\r\n </Flex>\r\n\r\n <VStack gap={2}>\r\n <Text\r\n fontSize=\"lg\"\r\n fontWeight=\"bold\"\r\n color=\"gray.900\"\r\n lineHeight=\"short\"\r\n >\r\n Install {appName}\r\n </Text>\r\n <Text fontSize=\"sm\" color=\"gray.500\" lineHeight=\"tall\">\r\n Add the app to your home screen for a faster, app-like\r\n experience before continuing.\r\n </Text>\r\n </VStack>\r\n\r\n {canInstall ? (\r\n <Button\r\n onClick={install}\r\n colorPalette=\"green\"\r\n size=\"lg\"\r\n w=\"full\"\r\n rounded=\"xl\"\r\n >\r\n <Icon as={FiDownload} />\r\n Add to Home Screen\r\n </Button>\r\n ) : (\r\n <VStack\r\n w=\"full\"\r\n bg=\"gray.50\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.100\"\r\n rounded=\"xl\"\r\n p={4}\r\n gap={4}\r\n align=\"stretch\"\r\n >\r\n {STEPS.map((step, i) => (\r\n <HStack key={i} gap={3} align=\"center\">\r\n <Flex\r\n boxSize={9}\r\n flexShrink={0}\r\n align=\"center\"\r\n justify=\"center\"\r\n rounded=\"lg\"\r\n bg=\"white\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n color=\"green.600\"\r\n >\r\n <Icon as={step.icon} boxSize={4} />\r\n </Flex>\r\n <Text fontSize=\"sm\" color=\"gray.700\" textAlign=\"left\">\r\n {step.label}\r\n </Text>\r\n </HStack>\r\n ))}\r\n </VStack>\r\n )}\r\n </VStack>\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n </>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport function useNotifyInstall() {\r\n const [isInstalled, setIsInstalled] = useState(false);\r\n const [isMobile, setIsMobile] = useState(false);\r\n const [installPrompt, setInstallPrompt] = useState<any>(null);\r\n\r\n useEffect(() => {\r\n // Detect mobile\r\n const mobile =\r\n /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);\r\n\r\n setIsMobile(mobile);\r\n\r\n // Check if already installed\r\n const installed =\r\n window.matchMedia(\"(display-mode: standalone)\").matches ||\r\n (window.navigator as any).standalone === true;\r\n\r\n setIsInstalled(installed);\r\n\r\n const handler = (event: any) => {\r\n event.preventDefault();\r\n setInstallPrompt(event);\r\n };\r\n\r\n window.addEventListener(\"beforeinstallprompt\", handler);\r\n\r\n return () => {\r\n window.removeEventListener(\"beforeinstallprompt\", handler);\r\n };\r\n }, []);\r\n\r\n const install = async () => {\r\n if (!installPrompt) return;\r\n\r\n installPrompt.prompt();\r\n\r\n const result = await installPrompt.userChoice;\r\n\r\n if (result.outcome === \"accepted\") {\r\n setIsInstalled(true);\r\n }\r\n\r\n setInstallPrompt(null);\r\n };\r\n\r\n return {\r\n isInstalled,\r\n isMobile,\r\n canInstall: !!installPrompt,\r\n install,\r\n };\r\n}","\"use client\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport {\r\n Avatar,\r\n Badge,\r\n Box,\r\n Button,\r\n Flex,\r\n HStack,\r\n IconButton,\r\n Input,\r\n InputGroup,\r\n Separator,\r\n Text,\r\n useBreakpointValue,\r\n VStack,\r\n} from \"@chakra-ui/react\";\r\nimport {\r\n RiDashboardFill,\r\n RiDashboardLine,\r\n RiBookShelfFill,\r\n RiBookShelfLine,\r\n RiCheckboxCircleFill,\r\n RiCheckboxCircleLine,\r\n RiMoneyDollarCircleFill,\r\n RiMoneyDollarCircleLine,\r\n RiUser2Fill,\r\n RiUser2Line,\r\n} from \"react-icons/ri\";\r\nimport {\r\n LuArrowLeftRight,\r\n LuChevronDown,\r\n LuChevronLeft,\r\n LuChevronRight,\r\n LuChevronUp,\r\n LuCreditCard,\r\n LuEye,\r\n LuEyeOff,\r\n LuFileText,\r\n LuHouse,\r\n LuLock,\r\n LuMoon,\r\n LuPlus,\r\n LuShield,\r\n LuSun,\r\n LuUser,\r\n LuX,\r\n} from \"react-icons/lu\";\r\nimport { HiOutlineUsers, HiUsers } from \"react-icons/hi2\";\r\nimport {\r\n BsFileEarmarkExcel,\r\n BsFileEarmarkExcelFill,\r\n BsFileEarmarkSpreadsheet,\r\n BsFileEarmarkSpreadsheetFill,\r\n} from \"react-icons/bs\";\r\nimport { LiaHandHoldingUsdSolid } from \"react-icons/lia\";\r\nimport { FaHandHoldingUsd } from \"react-icons/fa\";\r\nimport { MdManageAccounts, MdOutlineManageAccounts } from \"react-icons/md\";\r\nimport { IoLeaf, IoLeafOutline } from \"react-icons/io5\";\r\nimport type { IconType } from \"react-icons\";\r\n\r\ntype ProfileView =\r\n | \"main\"\r\n | \"edit-account\"\r\n | \"change-password\"\r\n | \"navbar-customize\";\r\ntype ColorModeValue = \"light\" | \"dark\";\r\n\r\ntype ToastType = \"success\" | \"error\";\r\n\r\nexport interface ProfileUser {\r\n displayName: string;\r\n email?: string;\r\n mobileNumber?: string;\r\n role?: string;\r\n avatarSrc?: string;\r\n}\r\n\r\nexport interface NavOptionDef {\r\n key: string;\r\n title: string;\r\n href: string;\r\n Icon: IconType;\r\n activeIcon: IconType;\r\n match: (pathname: string) => boolean;\r\n roles: string[];\r\n}\r\n\r\nexport interface ReusableProfileProps {\r\n user?: ProfileUser;\r\n colorMode?: ColorModeValue;\r\n onColorModeChange?: (mode: ColorModeValue) => void;\r\n initialTwoFactorEnabled?: boolean;\r\n initialQuickNavHrefs?: string[];\r\n availableNavOptions?: NavOptionDef[];\r\n maxQuickNavItems?: number;\r\n enableLocalStorage?: boolean;\r\n storageKey?: string;\r\n onSaveAccount?: (payload: { displayName: string }) => void | Promise<void>;\r\n onChangePassword?: (payload: {\r\n currentPassword: string;\r\n newPassword: string;\r\n }) => void | Promise<void>;\r\n onSignOut?: () => void | Promise<void>;\r\n onTwoFactorChange?: (enabled: boolean) => void | Promise<void>;\r\n onToast?: (type: ToastType, message: string) => void;\r\n}\r\n\r\nconst NAVBAR_STORAGE_KEY = \"profile-navbar-quick-items\";\r\nconst FONT_SIZE_STORAGE_KEY = \"profile-font-size-pref\";\r\nconst DEFAULT_NAV_HREFS = [\"/\", \"/plans\", \"/pay-my-plan\", \"/claims\"];\r\n\r\nconst DEFAULT_USER: ProfileUser = {\r\n displayName: \"Joyce Basilio-Ramos\",\r\n email: \"joyce.basilio@example.com\",\r\n mobileNumber: \"0917 000 0000\",\r\n role: \"branch\",\r\n avatarSrc: \"/images/profile.jpg\",\r\n};\r\n\r\nconst ALL_NAV_OPTIONS: NavOptionDef[] = [\r\n {\r\n key: \"/\",\r\n title: \"Home\",\r\n href: \"/\",\r\n Icon: LuHouse,\r\n activeIcon: LuHouse,\r\n match: (p) => p === \"/\",\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plans\",\r\n title: \"Products\",\r\n href: \"/plans\",\r\n Icon: IoLeafOutline,\r\n activeIcon: IoLeaf,\r\n match: (p) =>\r\n p.startsWith(\"/plans\") ||\r\n p.startsWith(\"/plan-details\") ||\r\n p.startsWith(\"/plan-comparison\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/pay-my-plan\",\r\n title: \"Pay\",\r\n href: \"/pay-my-plan\",\r\n Icon: LuCreditCard,\r\n activeIcon: LuCreditCard,\r\n match: (p) =>\r\n p.startsWith(\"/pay-my-plan\") ||\r\n p.startsWith(\"/account/pay-my-plan\") ||\r\n p.startsWith(\"/order-summary\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/claims\",\r\n title: \"Claim\",\r\n href: \"/claims\",\r\n Icon: LuFileText,\r\n activeIcon: LuFileText,\r\n match: (p) => p.startsWith(\"/claims\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/dashboard\",\r\n title: \"Dashboard\",\r\n href: \"/dashboard\",\r\n Icon: RiDashboardLine,\r\n activeIcon: RiDashboardFill,\r\n match: (p) => p === \"/dashboard\" || p === \"/\",\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/approvals\",\r\n title: \"Approvals\",\r\n href: \"/approvals\",\r\n Icon: RiCheckboxCircleLine,\r\n activeIcon: RiCheckboxCircleFill,\r\n match: (p) => p.startsWith(\"/approvals\"),\r\n roles: [\"branch\", \"bmstl\"],\r\n },\r\n {\r\n key: \"/document-management\",\r\n title: \"Documents\",\r\n href: \"/document-management\",\r\n Icon: RiBookShelfLine,\r\n activeIcon: RiBookShelfFill,\r\n match: (p) => p.startsWith(\"/document-management\"),\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/payment/encode-payment\",\r\n title: \"Encode Payment\",\r\n href: \"/payment/encode-payment\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/encode-payment\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/view-drs\",\r\n title: \"View DRS\",\r\n href: \"/payment/view-drs\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/view-drs\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/encodevalidated-deposit\",\r\n title: \"Encode Deposit Slip\",\r\n href: \"/payment/encodevalidated-deposit\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/encodevalidated-deposit\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/viewvalidated-deposit\",\r\n title: \"View Deposit Slips\",\r\n href: \"/payment/viewvalidated-deposit\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/viewvalidated-deposit\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/credit-memo\",\r\n title: \"Credit Memo\",\r\n href: \"/payment/credit-memo\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/credit-memo\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/sales-force/profile\",\r\n title: \"Agent Profile\",\r\n href: \"/sales-force/profile\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/profile\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/sales-force/re-assign\",\r\n title: \"Re-Organization\",\r\n href: \"/sales-force/re-assign\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/re-assign\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/sales-force/new\",\r\n title: \"Add New Agent\",\r\n href: \"/sales-force/new\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/new\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/plan-management/new\",\r\n title: \"Add New Sale\",\r\n href: \"/plan-management/new\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p === \"/plan-management/new\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plan-management/planholder\",\r\n title: \"Account Summary\",\r\n href: \"/plan-management/planholder\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p.startsWith(\"/plan-management/planholder\"),\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plan-management/change-of-mode\",\r\n title: \"Change of Mode\",\r\n href: \"/plan-management/change-of-mode\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p === \"/plan-management/change-of-mode\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/disbursement/comte\",\r\n title: \"COM/TE\",\r\n href: \"/disbursement/comte\",\r\n Icon: BsFileEarmarkSpreadsheet,\r\n activeIcon: BsFileEarmarkSpreadsheetFill,\r\n match: (p) => p === \"/disbursement/comte\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/disbursement/rfexpense\",\r\n title: \"Revolving Fund\",\r\n href: \"/disbursement/rfexpense\",\r\n Icon: BsFileEarmarkSpreadsheet,\r\n activeIcon: BsFileEarmarkSpreadsheetFill,\r\n match: (p) => p === \"/disbursement/rfexpense\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/loan\",\r\n title: \"Loan\",\r\n href: \"/loan\",\r\n Icon: LiaHandHoldingUsdSolid,\r\n activeIcon: FaHandHoldingUsd,\r\n match: (p) => p.startsWith(\"/loan\"),\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/mcpr\",\r\n title: \"MCPR\",\r\n href: \"/accounts-maintenance/mcpr\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/mcpr\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/next-month-loading\",\r\n title: \"Next Month Loading\",\r\n href: \"/accounts-maintenance/next-month-loading\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/next-month-loading\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/floating-accounts\",\r\n title: \"Floating Accounts\",\r\n href: \"/accounts-maintenance/floating-accounts\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/floating-accounts\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/accounts-transfer\",\r\n title: \"Transfer of Accounts\",\r\n href: \"/accounts-maintenance/accounts-transfer\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/accounts-transfer\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/dc\",\r\n title: \"Doc Cancellation\",\r\n href: \"/dc\",\r\n Icon: BsFileEarmarkExcel,\r\n activeIcon: BsFileEarmarkExcelFill,\r\n match: (p) => p === \"/dc\",\r\n roles: [\"sales-agent\"],\r\n },\r\n];\r\n\r\nconst FONT_SIZES = [\r\n { value: \"sm\", px: \"14px\", title: \"Small\", scale: 0.82 },\r\n { value: \"md\", px: \"16px\", title: \"Normal\", scale: 1 },\r\n { value: \"lg\", px: \"18px\", title: \"Large\", scale: 1.18 },\r\n];\r\n\r\nconst ROLE_LABELS: Record<string, string> = {\r\n branch: \"Branch\",\r\n bmstl: \"BM / STL\",\r\n \"sales-agent\": \"Sales Agent\",\r\n};\r\n\r\nconst PW_STRENGTH_META = [\r\n { label: \"\", color: \"gray.300\" },\r\n { label: \"Very Weak\", color: \"red.500\" },\r\n { label: \"Weak\", color: \"orange.400\" },\r\n { label: \"Fair\", color: \"yellow.500\" },\r\n { label: \"Strong\", color: \"green.400\" },\r\n { label: \"Very Strong\", color: \"green.600\" },\r\n] as const;\r\n\r\nfunction calcPwStrength(pw: string): number {\r\n if (!pw) return 0;\r\n\r\n let score = 0;\r\n if (pw.length >= 8) score++;\r\n if (/[A-Z]/.test(pw)) score++;\r\n if (/[a-z]/.test(pw)) score++;\r\n if (/[0-9]/.test(pw)) score++;\r\n if (/[^A-Za-z0-9]/.test(pw)) score++;\r\n\r\n return score;\r\n}\r\n\r\nfunction pickPalette(name: string) {\r\n const colorPalette = [\"red\", \"blue\", \"green\", \"yellow\", \"purple\", \"orange\"];\r\n return colorPalette[name.charCodeAt(0) % colorPalette.length];\r\n}\r\n\r\nfunction noopToast(_type: ToastType, _message: string) {\r\n return undefined;\r\n}\r\n\r\nexport function ReusableProfile({\r\n user = DEFAULT_USER,\r\n colorMode: controlledColorMode,\r\n onColorModeChange,\r\n initialTwoFactorEnabled = false,\r\n initialQuickNavHrefs = DEFAULT_NAV_HREFS,\r\n availableNavOptions = ALL_NAV_OPTIONS,\r\n maxQuickNavItems = 4,\r\n enableLocalStorage = true,\r\n storageKey = NAVBAR_STORAGE_KEY,\r\n onSaveAccount,\r\n onChangePassword,\r\n onSignOut,\r\n onTwoFactorChange,\r\n onToast = noopToast,\r\n}: ReusableProfileProps) {\r\n const [profileView, setProfileView] = useState<ProfileView>(\"main\");\r\n const [fallbackColorMode, setFallbackColorMode] =\r\n useState<ColorModeValue>(\"light\");\r\n const colorMode = controlledColorMode ?? fallbackColorMode;\r\n\r\n const [fontSize, setFontSizeLocal] = useState(\"md\");\r\n const [quickNavHrefs, setQuickNavHrefs] =\r\n useState<string[]>(initialQuickNavHrefs);\r\n const [replacingIdx, setReplacingIdx] = useState<number | null>(null);\r\n\r\n const [editName, setEditName] = useState(user.displayName);\r\n const [editLoading, setEditLoading] = useState(false);\r\n\r\n const [currentPw, setCurrentPw] = useState(\"\");\r\n const [newPw, setNewPw] = useState(\"\");\r\n const [confirmPw, setConfirmPw] = useState(\"\");\r\n const [showCurrentPw, setShowCurrentPw] = useState(false);\r\n const [showNewPw, setShowNewPw] = useState(false);\r\n const [showConfirmPw, setShowConfirmPw] = useState(false);\r\n const [pwLoading, setPwLoading] = useState(false);\r\n\r\n const [twoFactorEnabled, setTwoFactorEnabled] = useState(\r\n initialTwoFactorEnabled,\r\n );\r\n\r\n const [isMounted, setIsMounted] = useState(false);\r\n const isDesktopRaw = useBreakpointValue({ base: false, md: true });\r\n const isDesktop = isMounted ? (isDesktopRaw ?? false) : false;\r\n\r\n useEffect(() => {\r\n setIsMounted(true);\r\n\r\n if (!enableLocalStorage || typeof window === \"undefined\") return;\r\n\r\n setFontSizeLocal(localStorage.getItem(FONT_SIZE_STORAGE_KEY) ?? \"md\");\r\n\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n if (stored) setQuickNavHrefs(JSON.parse(stored) as string[]);\r\n } catch {\r\n setQuickNavHrefs(initialQuickNavHrefs);\r\n }\r\n }, [enableLocalStorage, initialQuickNavHrefs, storageKey]);\r\n\r\n useEffect(() => {\r\n setEditName(user.displayName);\r\n }, [user.displayName]);\r\n\r\n const availableOptions = useMemo(\r\n () =>\r\n availableNavOptions.filter(\r\n (option) => !user.role || option.roles.includes(user.role),\r\n ),\r\n [availableNavOptions, user.role],\r\n );\r\n\r\n const unpinnedOptions = availableOptions.filter(\r\n (option) => !quickNavHrefs.includes(option.key),\r\n );\r\n\r\n const pwStrength = calcPwStrength(newPw);\r\n const pwMeta = PW_STRENGTH_META[pwStrength] ?? PW_STRENGTH_META[0];\r\n const fontSizeLabel =\r\n fontSize === \"sm\" ? \"Small\" : fontSize === \"lg\" ? \"Large\" : \"Normal\";\r\n\r\n const resetPasswordForm = () => {\r\n setCurrentPw(\"\");\r\n setNewPw(\"\");\r\n setConfirmPw(\"\");\r\n setShowCurrentPw(false);\r\n setShowNewPw(false);\r\n setShowConfirmPw(false);\r\n };\r\n\r\n const handleColorMode = (mode: ColorModeValue) => {\r\n setFallbackColorMode(mode);\r\n onColorModeChange?.(mode);\r\n };\r\n\r\n const handleFontSize = (size: string) => {\r\n const sizeMap: Record<string, string> = {\r\n sm: \"14px\",\r\n md: \"16px\",\r\n lg: \"18px\",\r\n };\r\n\r\n if (enableLocalStorage && typeof window !== \"undefined\") {\r\n localStorage.setItem(FONT_SIZE_STORAGE_KEY, size);\r\n document.documentElement.style.fontSize = sizeMap[size] || \"16px\";\r\n }\r\n\r\n setFontSizeLocal(size);\r\n };\r\n\r\n const saveQuickNav = (hrefs: string[]) => {\r\n setQuickNavHrefs(hrefs);\r\n\r\n if (enableLocalStorage && typeof window !== \"undefined\") {\r\n localStorage.setItem(storageKey, JSON.stringify(hrefs));\r\n }\r\n };\r\n\r\n const addNavItem = (href: string) => {\r\n if (\r\n quickNavHrefs.length >= maxQuickNavItems ||\r\n quickNavHrefs.includes(href)\r\n ) {\r\n return;\r\n }\r\n\r\n saveQuickNav([...quickNavHrefs, href]);\r\n };\r\n\r\n const removeNavItem = (href: string) => {\r\n saveQuickNav(quickNavHrefs.filter((item) => item !== href));\r\n };\r\n\r\n const moveNavItem = (idx: number, dir: -1 | 1) => {\r\n const newIdx = idx + dir;\r\n if (newIdx < 0 || newIdx >= quickNavHrefs.length) return;\r\n\r\n const updated = [...quickNavHrefs];\r\n [updated[idx], updated[newIdx]] = [updated[newIdx]!, updated[idx]!];\r\n saveQuickNav(updated);\r\n };\r\n\r\n const replaceNavItem = (idx: number, newHref: string) => {\r\n const updated = [...quickNavHrefs];\r\n updated[idx] = newHref;\r\n saveQuickNav(updated);\r\n setReplacingIdx(null);\r\n };\r\n\r\n const handleSaveAccount = async () => {\r\n const trimmed = editName.trim();\r\n\r\n if (!trimmed) {\r\n onToast(\"error\", \"Display name cannot be empty\");\r\n return;\r\n }\r\n\r\n setEditLoading(true);\r\n\r\n try {\r\n await onSaveAccount?.({ displayName: trimmed });\r\n onToast(\"success\", \"Account updated\");\r\n setProfileView(\"main\");\r\n } catch {\r\n onToast(\"error\", \"Failed to update account\");\r\n } finally {\r\n setEditLoading(false);\r\n }\r\n };\r\n\r\n const handleChangePassword = async () => {\r\n if (!currentPw || !newPw || !confirmPw) {\r\n onToast(\"error\", \"Please fill in all fields\");\r\n return;\r\n }\r\n\r\n if (newPw !== confirmPw) {\r\n onToast(\"error\", \"New passwords do not match\");\r\n return;\r\n }\r\n\r\n if (pwStrength < 2) {\r\n onToast(\"error\", \"Password is too weak\");\r\n return;\r\n }\r\n\r\n setPwLoading(true);\r\n\r\n try {\r\n await onChangePassword?.({\r\n currentPassword: currentPw,\r\n newPassword: newPw,\r\n });\r\n onToast(\"success\", \"Password changed successfully\");\r\n resetPasswordForm();\r\n setProfileView(\"main\");\r\n } catch {\r\n onToast(\"error\", \"Failed to change password\");\r\n } finally {\r\n setPwLoading(false);\r\n }\r\n };\r\n\r\n const handleSignOut = async () => {\r\n try {\r\n await onSignOut?.();\r\n onToast(\"success\", \"Signed out\");\r\n } catch {\r\n onToast(\"error\", \"Failed to sign out\");\r\n }\r\n };\r\n\r\n const handleToggleTwoFactor = async () => {\r\n const nextValue = !twoFactorEnabled;\r\n setTwoFactorEnabled(nextValue);\r\n\r\n try {\r\n await onTwoFactorChange?.(nextValue);\r\n } catch {\r\n setTwoFactorEnabled(!nextValue);\r\n onToast(\"error\", \"Failed to update two factor authentication\");\r\n }\r\n };\r\n\r\n const roleLabel = user.role ? (ROLE_LABELS[user.role] ?? user.role) : \"\";\r\n\r\n const mainContent = (\r\n <>\r\n <Box\r\n bg=\"var(--chakra-colors-primary)\"\r\n pt={12}\r\n pb={8}\r\n px={4}\r\n textAlign=\"center\"\r\n >\r\n <Avatar.Root\r\n size=\"2xl\"\r\n mx=\"auto\"\r\n mb={4}\r\n colorPalette={pickPalette(user.displayName || \"U\")}\r\n >\r\n {user.avatarSrc && (\r\n <Avatar.Image src={user.avatarSrc} alt={user.displayName} />\r\n )}\r\n <Avatar.Fallback name={user.displayName} />\r\n </Avatar.Root>\r\n\r\n <Text\r\n color=\"white\"\r\n fontWeight=\"bold\"\r\n fontSize=\"xl\"\r\n lineHeight=\"1.2\"\r\n mb={1}\r\n >\r\n {user.displayName}\r\n </Text>\r\n\r\n {user.email && (\r\n <Text color=\"rgba(255,255,255,0.75)\" fontSize=\"sm\" mb={2}>\r\n {user.email}\r\n </Text>\r\n )}\r\n\r\n {roleLabel && (\r\n <Box display=\"inline-flex\">\r\n <Badge\r\n bg=\"rgba(255,255,255,0.15)\"\r\n color=\"white\"\r\n borderRadius=\"full\"\r\n px={3}\r\n py={0.5}\r\n fontSize=\"xs\"\r\n fontWeight=\"medium\"\r\n border=\"1px solid rgba(255,255,255,0.3)\"\r\n >\r\n {roleLabel}\r\n </Badge>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n <Box px={4} pt={5} pb={1}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n mb={3}\r\n >\r\n Account\r\n </Text>\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => setProfileView(\"edit-account\")}\r\n >\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={3}\r\n px={isDesktop ? 2 : 0}\r\n borderRadius=\"lg\"\r\n bg={\r\n isDesktop && profileView === \"edit-account\"\r\n ? \"gray.100\"\r\n : undefined\r\n }\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuUser size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Edit Account\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Update your display name and contact details\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n\r\n <Separator />\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => {\r\n resetPasswordForm();\r\n setProfileView(\"change-password\");\r\n }}\r\n >\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={3}\r\n px={isDesktop ? 2 : 0}\r\n borderRadius=\"lg\"\r\n bg={\r\n isDesktop && profileView === \"change-password\"\r\n ? \"gray.100\"\r\n : undefined\r\n }\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuLock size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Change Password\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Test locally through the callback prop\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n\r\n <Separator />\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuShield size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Two Factor Authentication\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {twoFactorEnabled ? \"Enabled\" : \"Disabled\"}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <Box\r\n role=\"switch\"\r\n aria-checked={twoFactorEnabled}\r\n aria-label=\"Toggle two factor authentication\"\r\n tabIndex={0}\r\n onClick={handleToggleTwoFactor}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\" || event.key === \" \") {\r\n event.preventDefault();\r\n void handleToggleTwoFactor();\r\n }\r\n }}\r\n w=\"44px\"\r\n h=\"26px\"\r\n borderRadius=\"full\"\r\n bg={twoFactorEnabled ? \"var(--chakra-colors-primary)\" : \"gray.300\"}\r\n position=\"relative\"\r\n transition=\"background 0.15s\"\r\n cursor=\"pointer\"\r\n flexShrink={0}\r\n outline=\"none\"\r\n >\r\n <Box\r\n position=\"absolute\"\r\n top=\"3px\"\r\n left={twoFactorEnabled ? \"21px\" : \"3px\"}\r\n w=\"20px\"\r\n h=\"20px\"\r\n borderRadius=\"full\"\r\n bg=\"white\"\r\n boxShadow=\"sm\"\r\n transition=\"left 0.15s\"\r\n />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n\r\n <Box px={4} pt={4} pb={2}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n mb={3}\r\n >\r\n Preferences\r\n </Text>\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n {colorMode === \"dark\" ? (\r\n <LuMoon size={16} />\r\n ) : (\r\n <LuSun size={16} />\r\n )}\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Appearance\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {colorMode === \"light\" ? \"Light mode\" : \"Dark mode\"}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={1.5}>\r\n {([\"light\", \"dark\"] as const).map((mode) => {\r\n const isActive = colorMode === mode;\r\n\r\n return (\r\n <Button\r\n key={mode}\r\n size=\"sm\"\r\n variant=\"outline\"\r\n px={3}\r\n h=\"34px\"\r\n gap={1.5}\r\n bg={isActive ? \"var(--chakra-colors-primary)\" : \"transparent\"}\r\n color={isActive ? \"white\" : \"gray.600\"}\r\n borderColor={\r\n isActive ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n _hover={{\r\n bg: isActive ? \"var(--chakra-colors-primary)\" : \"gray.50\",\r\n }}\r\n onClick={() => handleColorMode(mode)}\r\n >\r\n {mode === \"light\" ? (\r\n <LuSun size={13} />\r\n ) : (\r\n <LuMoon size={13} />\r\n )}\r\n <Text\r\n fontSize=\"xs\"\r\n textTransform=\"capitalize\"\r\n fontWeight=\"medium\"\r\n >\r\n {mode}\r\n </Text>\r\n </Button>\r\n );\r\n })}\r\n </HStack>\r\n </Flex>\r\n\r\n <Separator />\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n fontWeight=\"bold\"\r\n fontSize=\"15px\"\r\n flexShrink={0}\r\n >\r\n A\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Text Size\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {fontSizeLabel}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={1}>\r\n {FONT_SIZES.map((option) => {\r\n const isActive = fontSize === option.value;\r\n\r\n return (\r\n <Button\r\n key={option.value}\r\n size=\"sm\"\r\n variant=\"outline\"\r\n w=\"40px\"\r\n h=\"34px\"\r\n p={0}\r\n bg={isActive ? \"var(--chakra-colors-primary)\" : \"transparent\"}\r\n color={isActive ? \"white\" : \"gray.600\"}\r\n borderColor={\r\n isActive ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n _hover={{\r\n bg: isActive ? \"var(--chakra-colors-primary)\" : \"gray.50\",\r\n }}\r\n onClick={() => handleFontSize(option.value)}\r\n title={option.title}\r\n >\r\n <Text\r\n fontWeight={isActive ? \"bold\" : \"normal\"}\r\n style={{ fontSize: `${option.scale * 13}px` }}\r\n >\r\n A\r\n </Text>\r\n </Button>\r\n );\r\n })}\r\n </HStack>\r\n </Flex>\r\n\r\n <Separator />\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => setProfileView(\"navbar-customize\")}\r\n >\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuArrowLeftRight size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Quick Navigation\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {quickNavHrefs.length} of {maxQuickNavItems} items pinned\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n </Box>\r\n\r\n <Box px={4} pt={4} pb={10}>\r\n <VStack gap={2.5}>\r\n <Button\r\n w=\"full\"\r\n variant=\"outline\"\r\n color=\"red.600\"\r\n borderColor=\"red.200\"\r\n _hover={{ bg: \"red.50\" }}\r\n onClick={handleSignOut}\r\n >\r\n Sign Out\r\n </Button>\r\n </VStack>\r\n </Box>\r\n </>\r\n );\r\n\r\n const editAccountContent = (\r\n <>\r\n <Box px={4} pt={4} pb={3} borderBottomWidth=\"1px\" borderColor=\"gray.200\">\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => setProfileView(\"main\")}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Edit Account\r\n </Text>\r\n </Flex>\r\n </Box>\r\n\r\n <Box textAlign=\"center\" pt={5} pb={4}>\r\n <Avatar.Root size=\"xl\" mx=\"auto\" mb={1}>\r\n {user.avatarSrc && (\r\n <Avatar.Image src={user.avatarSrc} alt={editName} />\r\n )}\r\n <Avatar.Fallback name={editName} />\r\n </Avatar.Root>\r\n </Box>\r\n\r\n <VStack gap={4} px={4} pb={10} align=\"stretch\">\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Display Name\r\n </Text>\r\n <Input\r\n value={editName}\r\n onChange={(event) => setEditName(event.target.value)}\r\n placeholder=\"Display name\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Email\r\n </Text>\r\n <Input\r\n value={user.email ?? \"\"}\r\n readOnly\r\n opacity={0.55}\r\n cursor=\"not-allowed\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Mobile Number\r\n </Text>\r\n <Input\r\n value={user.mobileNumber ?? \"\"}\r\n readOnly\r\n opacity={0.55}\r\n cursor=\"not-allowed\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Button\r\n w=\"full\"\r\n mt={2}\r\n bg=\"var(--chakra-colors-primary)\"\r\n color=\"white\"\r\n _hover={{ opacity: 0.9 }}\r\n loading={editLoading}\r\n onClick={handleSaveAccount}\r\n >\r\n Save Changes\r\n </Button>\r\n </VStack>\r\n </>\r\n );\r\n\r\n const changePasswordContent = (\r\n <>\r\n <Box px={4} pt={4} pb={3} borderBottomWidth=\"1px\" borderColor=\"gray.200\">\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => setProfileView(\"main\")}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Change Password\r\n </Text>\r\n </Flex>\r\n </Box>\r\n\r\n <VStack gap={5} px={4} pt={6} pb={10}>\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Current Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle current password visibility\"\r\n onClick={() => setShowCurrentPw(!showCurrentPw)}\r\n >\r\n {showCurrentPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showCurrentPw ? \"text\" : \"password\"}\r\n value={currentPw}\r\n onChange={(event) => setCurrentPw(event.target.value)}\r\n placeholder=\"Enter current password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n New Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle new password visibility\"\r\n onClick={() => setShowNewPw(!showNewPw)}\r\n >\r\n {showNewPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showNewPw ? \"text\" : \"password\"}\r\n value={newPw}\r\n onChange={(event) => setNewPw(event.target.value)}\r\n placeholder=\"Enter new password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n\r\n {newPw && (\r\n <Box mt={2}>\r\n <Flex gap={1} mb={1}>\r\n {[1, 2, 3, 4, 5].map((i) => (\r\n <Box\r\n key={i}\r\n flex={1}\r\n h=\"3px\"\r\n borderRadius=\"full\"\r\n bg={i <= pwStrength ? pwMeta.color : \"gray.200\"}\r\n transition=\"background 0.2s\"\r\n />\r\n ))}\r\n </Flex>\r\n <Text fontSize=\"xs\" color={pwMeta.color} fontWeight=\"medium\">\r\n {pwMeta.label}\r\n </Text>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Confirm New Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle confirm password visibility\"\r\n onClick={() => setShowConfirmPw(!showConfirmPw)}\r\n >\r\n {showConfirmPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showConfirmPw ? \"text\" : \"password\"}\r\n value={confirmPw}\r\n onChange={(event) => setConfirmPw(event.target.value)}\r\n placeholder=\"Confirm new password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n {confirmPw && confirmPw !== newPw && (\r\n <Text fontSize=\"xs\" color=\"red.500\" mt={1}>\r\n Passwords do not match\r\n </Text>\r\n )}\r\n </Box>\r\n\r\n <Button\r\n w=\"full\"\r\n mt={1}\r\n bg=\"var(--chakra-colors-primary)\"\r\n color=\"white\"\r\n _hover={{ opacity: 0.9 }}\r\n disabled={\r\n !currentPw ||\r\n !newPw ||\r\n !confirmPw ||\r\n newPw !== confirmPw ||\r\n pwStrength < 2\r\n }\r\n loading={pwLoading}\r\n onClick={handleChangePassword}\r\n >\r\n Update Password\r\n </Button>\r\n </VStack>\r\n </>\r\n );\r\n\r\n const navbarCustomizeContent = (\r\n <>\r\n <Box\r\n px={4}\r\n pt={4}\r\n pb={3}\r\n borderBottomWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n position=\"sticky\"\r\n top={0}\r\n bg=\"bg\"\r\n zIndex={1}\r\n >\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => {\r\n setReplacingIdx(null);\r\n setProfileView(\"main\");\r\n }}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Quick Navigation\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Choose up to {maxQuickNavItems} shortcuts for the bottom bar\r\n </Text>\r\n </Box>\r\n </Flex>\r\n </Box>\r\n\r\n <Box px={4} pt={5} pb={2}>\r\n <Flex align=\"center\" justify=\"space-between\" mb={3}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Pinned\r\n </Text>\r\n <Text\r\n fontSize=\"xs\"\r\n color={\r\n quickNavHrefs.length >= maxQuickNavItems\r\n ? \"orange.500\"\r\n : \"gray.400\"\r\n }\r\n fontWeight=\"medium\"\r\n >\r\n {quickNavHrefs.length} / {maxQuickNavItems}\r\n </Text>\r\n </Flex>\r\n\r\n {quickNavHrefs.length === 0 ? (\r\n <Flex\r\n align=\"center\"\r\n justify=\"center\"\r\n py={6}\r\n borderRadius=\"xl\"\r\n borderWidth=\"1px\"\r\n borderStyle=\"dashed\"\r\n borderColor=\"gray.200\"\r\n >\r\n <Text fontSize=\"sm\" color=\"gray.400\">\r\n No items pinned — add from below\r\n </Text>\r\n </Flex>\r\n ) : (\r\n <VStack gap={0}>\r\n {quickNavHrefs.map((href, idx) => {\r\n const option = availableOptions.find((item) => item.key === href);\r\n if (!option) return null;\r\n\r\n const ItemIcon = option.Icon;\r\n const isFirst = idx === 0;\r\n const isLast = idx === quickNavHrefs.length - 1;\r\n const isReplacing = replacingIdx === idx;\r\n\r\n return (\r\n <Box key={href} w=\"full\">\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={2.5}\r\n px={isReplacing ? 2 : 0}\r\n borderRadius={isReplacing ? \"lg\" : undefined}\r\n bg={isReplacing ? \"orange.50\" : undefined}\r\n borderWidth={isReplacing ? \"1px\" : undefined}\r\n borderColor={isReplacing ? \"orange.200\" : undefined}\r\n transition=\"all 0.15s\"\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"36px\"\r\n h=\"36px\"\r\n borderRadius=\"lg\"\r\n bg={\r\n isReplacing\r\n ? \"orange.400\"\r\n : \"var(--chakra-colors-primary)\"\r\n }\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"white\"\r\n flexShrink={0}\r\n >\r\n <ItemIcon size={15} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"medium\">\r\n {option.title}\r\n </Text>\r\n {isReplacing && (\r\n <Text\r\n fontSize=\"xs\"\r\n color=\"orange.500\"\r\n fontWeight=\"medium\"\r\n >\r\n Select replacement below\r\n </Text>\r\n )}\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={0.5}>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Move up\"\r\n color=\"gray.500\"\r\n disabled={isFirst || isReplacing}\r\n onClick={() => moveNavItem(idx, -1)}\r\n >\r\n <LuChevronUp size={14} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Move down\"\r\n color=\"gray.500\"\r\n disabled={isLast || isReplacing}\r\n onClick={() => moveNavItem(idx, 1)}\r\n >\r\n <LuChevronDown size={14} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant={isReplacing ? \"solid\" : \"ghost\"}\r\n aria-label={\r\n isReplacing ? \"Cancel replace\" : \"Replace item\"\r\n }\r\n bg={isReplacing ? \"orange.400\" : undefined}\r\n color={isReplacing ? \"white\" : \"gray.500\"}\r\n _hover={{ bg: isReplacing ? \"orange.500\" : \"gray.100\" }}\r\n onClick={() =>\r\n setReplacingIdx(isReplacing ? null : idx)\r\n }\r\n >\r\n <LuArrowLeftRight size={13} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Remove\"\r\n color=\"red.400\"\r\n _hover={{ bg: \"red.50\" }}\r\n disabled={isReplacing}\r\n onClick={() => removeNavItem(href)}\r\n >\r\n <LuX size={14} />\r\n </IconButton>\r\n </HStack>\r\n </Flex>\r\n {!isLast && <Separator />}\r\n </Box>\r\n );\r\n })}\r\n </VStack>\r\n )}\r\n </Box>\r\n\r\n <Separator mx={4} my={1} />\r\n\r\n <Box px={4} pt={4} pb={10}>\r\n <Flex align=\"center\" justify=\"space-between\" mb={3}>\r\n {replacingIdx !== null ? (\r\n <Box>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"orange.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Select Replacement\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\" mt={0.5}>\r\n for &quot;\r\n {\r\n availableOptions.find(\r\n (item) => item.key === quickNavHrefs[replacingIdx],\r\n )?.title\r\n }\r\n &quot;\r\n </Text>\r\n </Box>\r\n ) : (\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Available\r\n </Text>\r\n )}\r\n\r\n {replacingIdx !== null && (\r\n <Button\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n onClick={() => setReplacingIdx(null)}\r\n >\r\n Cancel\r\n </Button>\r\n )}\r\n </Flex>\r\n\r\n {unpinnedOptions.length === 0 ? (\r\n <Text fontSize=\"sm\" color=\"gray.400\" py={3} textAlign=\"center\">\r\n All available items are pinned\r\n </Text>\r\n ) : (\r\n <VStack gap={0}>\r\n {unpinnedOptions.map((option, idx) => {\r\n const ItemIcon = option.Icon;\r\n const isLast = idx === unpinnedOptions.length - 1;\r\n const isReplacingMode = replacingIdx !== null;\r\n const canAdd = quickNavHrefs.length < maxQuickNavItems;\r\n const actionEnabled = isReplacingMode || canAdd;\r\n\r\n return (\r\n <Box key={option.key} w=\"full\">\r\n <Flex justify=\"space-between\" align=\"center\" py={2.5}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"36px\"\r\n h=\"36px\"\r\n borderRadius=\"lg\"\r\n bg={isReplacingMode ? \"orange.50\" : \"gray.100\"}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color={isReplacingMode ? \"orange.500\" : \"gray.500\"}\r\n flexShrink={0}\r\n >\r\n <ItemIcon size={15} />\r\n </Box>\r\n <Text\r\n fontSize=\"sm\"\r\n fontWeight=\"medium\"\r\n color={actionEnabled ? \"inherit\" : \"gray.400\"}\r\n >\r\n {option.title}\r\n </Text>\r\n </Flex>\r\n\r\n {isReplacingMode ? (\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"outline\"\r\n aria-label=\"Use as replacement\"\r\n borderColor=\"orange.300\"\r\n color=\"orange.500\"\r\n _hover={{ bg: \"orange.50\" }}\r\n onClick={() => replaceNavItem(replacingIdx, option.key)}\r\n >\r\n <LuArrowLeftRight size={13} />\r\n </IconButton>\r\n ) : (\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"outline\"\r\n aria-label=\"Pin item\"\r\n disabled={!canAdd}\r\n borderColor={\r\n canAdd ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n color={\r\n canAdd ? \"var(--chakra-colors-primary)\" : \"gray.300\"\r\n }\r\n _hover={{ bg: canAdd ? \"blue.50\" : \"transparent\" }}\r\n onClick={() => addNavItem(option.key)}\r\n >\r\n <LuPlus size={13} />\r\n </IconButton>\r\n )}\r\n </Flex>\r\n {!isLast && <Separator />}\r\n </Box>\r\n );\r\n })}\r\n </VStack>\r\n )}\r\n </Box>\r\n </>\r\n );\r\n\r\n const subViewContent =\r\n profileView === \"edit-account\"\r\n ? editAccountContent\r\n : profileView === \"change-password\"\r\n ? changePasswordContent\r\n : profileView === \"navbar-customize\"\r\n ? navbarCustomizeContent\r\n : null;\r\n\r\n if (isDesktop) {\r\n return (\r\n <Flex\r\n maxW=\"6xl\"\r\n mx=\"auto\"\r\n w=\"full\"\r\n minH=\"100%\"\r\n gap={6}\r\n p={{ md: 6, lg: 8 }}\r\n align=\"start\"\r\n >\r\n <Box\r\n w={{ md: \"300px\", lg: \"340px\" }}\r\n flexShrink={0}\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n borderRadius=\"2xl\"\r\n overflow=\"hidden\"\r\n bg=\"bg\"\r\n position=\"sticky\"\r\n top={6}\r\n >\r\n {mainContent}\r\n </Box>\r\n\r\n <Box\r\n flex=\"1\"\r\n minW={0}\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n borderRadius=\"2xl\"\r\n overflow=\"hidden\"\r\n bg=\"bg\"\r\n minH=\"540px\"\r\n >\r\n {subViewContent ?? (\r\n <Flex\r\n direction=\"column\"\r\n align=\"center\"\r\n justify=\"center\"\r\n minH=\"540px\"\r\n px={6}\r\n textAlign=\"center\"\r\n color=\"gray.400\"\r\n >\r\n <Box\r\n w=\"56px\"\r\n h=\"56px\"\r\n borderRadius=\"2xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n mb={4}\r\n >\r\n <LuUser size={24} />\r\n </Box>\r\n <Text fontSize=\"sm\" mt={1} maxW=\"280px\">\r\n Choose Edit Account, Change Password, or Quick Navigation from\r\n the menu to update your details here.\r\n </Text>\r\n </Flex>\r\n )}\r\n </Box>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Box maxW=\"480px\" mx=\"auto\" w=\"full\" minH=\"100%\" bg=\"bg\">\r\n {profileView === \"main\" ? mainContent : subViewContent}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ReusableProfile;\r\n"],"mappings":"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A;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,MAAM,OAAO,KAAK,EAAE;AAE9C,IAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,E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","names":["import_react","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","React","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_st_peter_ui","import_jsx_runtime","import_react","import_fa","import_lu","import_react","import_st_peter_ui","import_jsx_runtime","import_react","import_lu","import_jsx_runtime","import_st_peter_ui","import_jsx_runtime","import_react","import_fa","import_io","import_react","import_st_peter_ui","import_fa","import_io","import_react","import_st_peter_ui","import_jsx_runtime","import_react","import_lu","import_jsx_runtime","import_jsx_runtime","ReviewRows","import_jsx_runtime","import_react","import_st_peter_ui","import_lu","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_lu","import_jsx_runtime","React","Link","import_react","import_fi","import_react","import_jsx_runtime","import_react","import_lu","import_fa","import_jsx_runtime"]}