@splpi/estore-shared-components 7.0.1 → 7.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +131 -17
- package/dist/index.d.ts +131 -17
- package/dist/index.js +1380 -459
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1373 -434
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../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":["\"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 "\r\n {\r\n availableOptions.find(\r\n (item) => item.key === quickNavHrefs[replacingIdx],\r\n )?.title\r\n }\r\n "\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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aADA;AAlSd,IAAM,kBAAkB;AAAA,EACtB;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,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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","names":["Field","Input","useState","jsx","jsxs","useState","Field","Input","Box","Select","createListCollection","Field","useEffect","useState","jsx","jsxs","createListCollection","useState","useEffect","Box","Field","Select","Box","Field","SimpleGrid","VStack","jsx","jsxs","Box","VStack","SimpleGrid","Field","VStack","Box","Grid","Portal","createListCollection","Select","Field","Flex","Input","useEffect","useState","Box","Text","jsx","jsxs","jsx","jsxs","createListCollection","VStack","useState","useEffect","Flex","Box","Portal","Grid","Select","Field","Input","useState","useEffect","VStack","Box","Body","H4","Fragment","jsx","jsxs","useState","useEffect","Body","VStack","H4","Box","Box","Flex","VStack","useEffect","useState","Box","HStack","Text","jsx","jsxs","HStack","Box","Text","Box","Flex","Text","useState","jsx","jsxs","jsx","jsxs","useState","useEffect","Box","Flex","VStack","Box","useState","FaRegUser","IoIosInformationCircleOutline","Box","CloseButton","Dialog","Flex","HStack","Heading","Icon","IconButton","Portal","SimpleGrid","Text","VStack","FaRegAddressCard","FaRegUser","IoIosInformationCircleOutline","useEffect","useState","Box","Separator","Body","jsx","jsxs","Box","Button","Flex","Icon","Text","useState","LuChevronDown","LuChevronUp","LuHash","LuPencil","jsx","jsxs","jsx","jsxs","VStack","Icon","ReviewRows","SimpleGrid","Box","Text","Flex","Heading","IconButton","useState","useEffect","IoIosInformationCircleOutline","FaRegUser","FaRegAddressCard","Dialog","Portal","CloseButton","HStack","jsx","FaRegUser","IoIosInformationCircleOutline","useState","Box","Flex","Text","PrimaryMdButton","SecondaryMdButton","LuCheck","jsx","jsxs","jsx","useState","jsx","Box","jsx","React","Box","Portal","HStack","VStack","Flex","Icon","CloseButton","Text","LuChevronRight","jsx","jsxs","React","HStack","Flex","Text","Box","Icon","LuChevronRight","Portal","CloseButton","VStack","useEffect","useState","Button","Flex","HStack","Icon","Text","VStack","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","VStack","Flex","Icon","Text","Button","HStack","useEffect","useState","Badge","Box","Button","Flex","HStack","IconButton","Input","Separator","Text","useBreakpointValue","VStack","LuChevronDown","LuChevronLeft","LuChevronRight","LuChevronUp","Fragment","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../src/NewSaleForm/LifePlanApplication1.tsx","../src/lib/theme/layout-tokens.ts","../src/lib/theme/standard-design-tokens.ts","../src/hooks/ocrStorage.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/hooks/useOcr.ts","../src/GetStarted/GetStarted.tsx","../src/GetStarted/Container.tsx","../src/GetStarted/DocumentUploadCard.tsx","../src/Generic/BottomQuickActions.tsx","../src/Generic/NotifyInstall.tsx","../src/hooks/useNotifyInstall.ts","../src/UserProfile/UserProfile.tsx"],"sourcesContent":["\"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\";\nimport { markOcrApplied, readOcrResult } from \"../hooks/ocrStorage\";\nimport type { IOcrValue } from \"../types/ocrResponse\";\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 applyOcr = (data: IPersonalInfo, ocr: IOcrValue | null): IPersonalInfo =>\n ocr\n ? {\n ...data,\n firstName: ocr.firstName || data.firstName || \"\",\n middleName: ocr.middleName || data.middleName || \"\",\n lastName: ocr.lastName || data.lastName || \"\",\n birthDate: ocr.birthDate || data.birthDate || \"\",\n idType: ocr.idType || data.idType || \"\",\n idNumber: ocr.idNumber || data.idNumber || \"\",\n }\n : data;\n\nconst LifePlanApplication1 = ({\n initialData,\n onUpdate,\n}: LifePlanApplication1Props) => {\n const [formData, setFormData] = useState<IPersonalInfo>(() => applyOcr({\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 }, readOcrResult(\"personal\")));\n\n const updateFormData = (nextData: IPersonalInfo) => {\n setFormData(nextData);\n onUpdate?.(nextData);\n };\n\n useEffect(() => {\n if (markOcrApplied(\"personal\")) onUpdate?.(formData);\n }, [formData, onUpdate]);\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","import type { IOcrValue } from \"../types/ocrResponse\";\n\nexport const OCR_STORAGE_KEY = \"ocrResult\";\n\nexport type OcrSection = \"personal\" | \"address\";\n\ntype StoredOcrResult = IOcrValue & {\n applied?: Partial<Record<OcrSection, boolean>>;\n};\n\nconst readStored = (): StoredOcrResult | null => {\n try {\n const raw = localStorage.getItem(OCR_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as StoredOcrResult) : null;\n } catch {\n return null;\n }\n};\n\n/** Returns the saved OCR result if it has not been applied to this section yet. */\nexport const readOcrResult = (section: OcrSection): IOcrValue | null => {\n if (typeof window === \"undefined\") return null;\n const stored = readStored();\n if (!stored || stored.applied?.[section]) return null;\n return stored;\n};\n\n/** Marks the OCR result as used for this section. Returns true the first time only. */\nexport const markOcrApplied = (section: OcrSection): boolean => {\n if (typeof window === \"undefined\") return false;\n const stored = readStored();\n if (!stored || stored.applied?.[section]) return false;\n\n try {\n localStorage.setItem(\n OCR_STORAGE_KEY,\n JSON.stringify({ ...stored, applied: { ...stored.applied, [section]: true } }),\n );\n } catch {\n return false;\n }\n\n return true;\n};\n\n/** Saves a fresh OCR result (clears any \"applied\" flags from a previous scan). */\nexport const saveOcrResult = (value: IOcrValue): void => {\n if (typeof window === \"undefined\") return;\n try {\n localStorage.setItem(OCR_STORAGE_KEY, JSON.stringify(value));\n } catch {\n // Storage can be blocked (private mode, quota). Autofill is skipped then.\n }\n};\n\n/** Removes the saved OCR result. */\nexport const clearOcrResult = (): void => {\n if (typeof window === \"undefined\") return;\n try {\n localStorage.removeItem(OCR_STORAGE_KEY);\n } catch {\n // ignore\n }\n};\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\";\nimport { markOcrApplied, readOcrResult } from \"../hooks/ocrStorage\";\nimport type { IParsedAddress } from \"../types/ocrResponse\";\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 provinceCollection = createListCollection({ items: provinceOptions });\nconst cityCollection = createListCollection({ items: cityOptions });\n\nconst normalizePlace = (value: string) =>\n value\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase()\n .trim()\n .replace(/^city of\\s+/, \"\")\n .replace(/\\s+city$/, \"\")\n .replace(/[^a-z0-9]/g, \"\");\n\nconst matchOption = (\n candidates: string[] | undefined,\n options: { value: string }[],\n) => {\n for (const candidate of candidates ?? []) {\n const key = normalizePlace(candidate);\n const match = options.find(\n (option) => normalizePlace(option.value) === key,\n );\n if (match) return match.value;\n }\n return \"\";\n};\n\ninterface LifePlanApplication2Props {\n onAddressUpdate?: (address: IAddress) => void;\n /**\n * Optional address parser from the host app (e.g. GeoApifyService.parseAddress).\n * When provided, the scanned ID address (OCR) is split into the form fields.\n */\n parseAddress?: (addressLine: string) => Promise<IParsedAddress>;\n}\n\nconst LifePlanApplication2 = ({\n onAddressUpdate,\n parseAddress,\n}: LifePlanApplication2Props) => {\n const [lot, setLot] = useState(\"\");\n const [street, setStreet] = useState(\"\");\n const [city, setCity] = useState(\"\");\n const [province, setProvince] = useState(\"\");\n const [district, setDistrict] = useState(\"\");\n const [barangay, setBarangay] = useState(\"\");\n\n useEffect(() => {\n if (!parseAddress) return;\n const ocr = readOcrResult(\"address\");\n if (!ocr?.addressLine) return;\n\n markOcrApplied(\"address\");\n parseAddress(ocr.addressLine)\n .then((result) => {\n setLot(result.lot ?? \"\");\n setStreet(result.street ?? \"\");\n setProvince(matchOption(result.provinceCandidates, provinceOptions));\n setCity(matchOption(result.cityCandidates, cityOptions));\n setDistrict(result.district ?? \"\");\n setBarangay(result.barangay ?? \"\");\n })\n .catch((error) => {\n console.error(\"Error parsing address:\", error);\n });\n }, [parseAddress]);\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 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 <FloatingLabelInput\n id=\"district\"\n label=\"District\"\n value={district}\n onChange={(e) => setDistrict(e.target.value)}\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"barangay\"\n label=\"Barangay\"\n value={barangay}\n onChange={(e) => setBarangay(e.target.value)}\n />\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 type { IParsedAddress } from \"../types/ocrResponse\";\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 parseAddress,\n}: {\n openSection?: string;\n openSectionKey?: number;\n onValidChange?: (valid: boolean) => void;\n parseAddress?: (addressLine: string) => Promise<IParsedAddress>;\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: (\n <LifePlanApplication2\n onAddressUpdate={handleAddressUpdate}\n {...(parseAddress ? { parseAddress } : {})}\n />\n ),\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\";\nimport type { CartItem } from \"../types/cartItem\";\nimport type { IApplicationData } from \"../types/planholder\";\nimport type { IParsedAddress } from \"../types/ocrResponse\";\nimport {\n createEmptyApplicationData,\n loadApplicationDataFromLocalStorage,\n} from \"../lib/applicationData\";\n\nexport type NewSalesCheckoutItem = {\n planDesc: CartItem[\"planDesc\"];\n mode: CartItem[\"mode\"];\n ipInstAmt: number;\n planTerm: CartItem[\"planTerm\"];\n quantity: number;\n};\n\nexport type NewSalesCheckoutRequest = {\n items: NewSalesCheckoutItem[];\n application: IApplicationData;\n};\n\nexport type SharedLifePlanApplicationProps = {\n title?: string;\n description?: string;\n onPaymentError?: (error: unknown) => void;\n /**\n * Called on the payment step with the cart items and application data.\n * Must return the checkout URL (e.g. from PayMongoService.createNewSalesCheckout).\n */\n onCheckout?: (request: NewSalesCheckoutRequest) => Promise<string | undefined>;\n /** Optional address parser used to fill the address form from the scanned ID. */\n parseAddress?: (addressLine: string) => Promise<IParsedAddress>;\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 onCheckout,\n parseAddress,\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 ...(parseAddress ? { parseAddress } : {}),\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 if (!onCheckout) {\n throw new Error(\"onCheckout prop is not provided\");\n }\n\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 const checkoutPayload: NewSalesCheckoutItem[] = items.map((item) => ({\n planDesc: item.planDesc,\n mode: item.mode,\n ipInstAmt: Number(item.price),\n planTerm: item.planTerm,\n quantity: item.quantity ?? 1,\n }));\n\n const checkoutUrl = await onCheckout({\n items: checkoutPayload,\n application: applicationData,\n });\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\";\nimport type { IParsedAddress } from \"../../types/ocrResponse\";\n\nexport const createLifePlanSteps = (\n confirmationProps?: ConfirmationProps & {\n onEdit?: (section?: string) => void;\n applicationSection?: string;\n applicationSectionKey?: number;\n onApplicationValidChange?: (valid: boolean) => void;\n parseAddress?: (addressLine: string) => Promise<IParsedAddress>;\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 parseAddress?: (addressLine: string) => Promise<IParsedAddress>;\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 if (confirmationProps?.parseAddress !== undefined) {\n applicationFormWrapperProps.parseAddress =\n confirmationProps.parseAddress;\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, {\n type SharedLifePlanApplicationProps,\n} from \"./SharedLifePlanApplication\";\n\nconst LifePlanApplicationStepWrapper = (\n props: SharedLifePlanApplicationProps,\n) => {\n return <SharedLifePlanApplication {...props} />;\n};\n\nexport default LifePlanApplicationStepWrapper;\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport type { IOcrValue } from \"../types/ocrResponse\";\nimport { clearOcrResult, saveOcrResult } from \"./ocrStorage\";\n\n/** The host app's ID scanner, e.g. `OcrService.scanId`. */\nexport type ScanIdFn = (file: File) => Promise<IOcrValue>;\n\n/**\n * Wraps the host app's ID scanner and saves the result so the\n * Life Plan Application form (Step 1 and Step 2) can autofill from it.\n */\nexport function useOcr(scanIdFn: ScanIdFn) {\n const [data, setData] = useState<IOcrValue | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const scanId = useCallback(\n async (file: File) => {\n setLoading(true);\n setError(null);\n\n try {\n clearOcrResult();\n const result = await scanIdFn(file);\n saveOcrResult(result);\n setData(result);\n return result;\n } catch (err) {\n setError(err instanceof Error ? err.message : \"OCR failed\");\n throw err;\n } finally {\n setLoading(false);\n }\n },\n [scanIdFn],\n );\n\n return { data, loading, error, scanId };\n}\n","\"use client\";\nimport {\n BaseText,\n Body,\n CancelButton,\n H3,\n NextButton,\n PrimaryMdButton,\n} from \"st-peter-ui\";\nimport {\n Box,\n VStack,\n Dialog,\n Button,\n Portal,\n CloseButton,\n Input,\n} from \"@chakra-ui/react\";\nimport { useState } from \"react\";\nimport { LuIdCard, LuSignature } from \"react-icons/lu\";\nimport Container from \"./Container\";\nimport InfoCard from \"../NewSaleForm/ui/info-card\";\nimport {\n DocumentUploadCard,\n type DocumentStatus,\n type DocumentTypeConfig,\n} from \"./DocumentUploadCard\";\nimport { useOcr, type ScanIdFn } from \"../hooks/useOcr\";\n\nexport type GetStartedNotifyType = \"info\" | \"error\";\n\nexport type GetStartedProps = {\n /** Host app's ID scanner, e.g. `OcrService.scanId`. The result is saved for form autofill. */\n scanId: ScanIdFn;\n /** Called on Skip / Continue in the Referral Agent dialog, e.g. `() => router.push(\"/lifeplan-application\")`. */\n onContinue?: () => void;\n /** Shows a message to the user, e.g. `(type, msg) => toast[type](msg)`. Defaults to console. */\n notify?: (type: GetStartedNotifyType, message: string) => void;\n};\n\nconst defaultNotify = (type: GetStartedNotifyType, message: string) => {\n if (type === \"error\") console.error(message);\n else console.info(message);\n};\n\nconst GOVERNMENT_ID_CONFIG: DocumentTypeConfig = {\n id: \"government-id\",\n label: \"Government-issued ID\",\n description: \"Current and valid ID\",\n accept: \"image/*\",\n maxSizeMB: 5,\n required: true,\n hint: \"Any image · up to 5MB\",\n processor: \"extraction\",\n icon: LuIdCard,\n};\n\nconst SIGNATURE_CONFIG: DocumentTypeConfig = {\n id: \"specimen-signature\",\n label: \"Specimen Signature\",\n description: \"Signature on plain white paper\",\n accept: \"image/png,image/jpeg,application/pdf\",\n maxSizeMB: 5,\n required: true,\n hint: \"JPG, PNG or PDF · up to 5MB\",\n processor: \"signature\",\n icon: LuSignature,\n};\n\nconst GetStarted = ({\n scanId: scanIdFn,\n onContinue,\n notify = defaultNotify,\n}: GetStartedProps) => {\n const [uploadDialogOpen, setUploadDialogOpen] = useState(false);\n const [referralDialogOpen, setReferralDialogOpen] = useState(false);\n const [governmentIdStatus, setGovernmentIdStatus] =\n useState<DocumentStatus>(\"idle\");\n\n const { scanId } = useOcr(scanIdFn);\n\n return (\n <Container>\n {/* <Box display={{ base: \"block\", md: \"none\" }} mb={{ base: 4, md: 4 }}>\n <Button variant=\"ghost\" onClick={() => router.back()} px={0}>\n <FaArrowLeft color=\"#177D54\" />\n Back\n </Button>\n </Box> */}\n\n <Box\n p={{ base: 0, md: 8 }}\n rounded=\"lg\"\n shadow={{ base: \"none\", md: \"md\" }}\n bg=\"white\"\n maxW=\"3xl\"\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n mx=\"auto\"\n >\n <VStack gap={4} align=\"stretch\">\n <Box textAlign=\"center\">\n <H3>Let's Get Started</H3>\n </Box>\n <BaseText textAlign={{ base: \"center\", md: \"start\" }}>\n We'll be needing some documents and information to proceed with the\n purchase, please prepare the following in advance to smooth out the\n next steps\n </BaseText>\n <Box bg=\"gray.50\" p={8} rounded=\"md\">\n <VStack align=\"start\" gap={2}>\n <Box mb={4} display=\"flex\" flexDirection=\"column\" gap={2}>\n <BaseText fontWeight=\"bold\">Required Information</BaseText>\n <BaseText>1. Full Name</BaseText>\n <BaseText>2. Nationality</BaseText>\n <BaseText>3. Mobile Number</BaseText>\n <BaseText>4. Email Address</BaseText>\n <BaseText>5. Date of Birth</BaseText>\n <BaseText>6. Complete Address</BaseText>\n <BaseText>7. Beneficiary/ies</BaseText>\n <BaseText fontWeight=\"bold\">Required Documents</BaseText>\n <BaseText>1. Current and Valid Government-issued ID</BaseText>\n <BaseText>2. Specimen Signature</BaseText>\n </Box>\n {/* <Box p=\"4\" borderWidth=\"1px\" borderRadius=\"lg\" bg=\"green.50\">\n <Text fontSize=\"sm\" color=\"green.700\" fontWeight=\"medium\">\n To continue, please upload a valid ID. The system will use it\n to populate your information automatically.\n </Text>\n </Box> */}\n {/* <Body fontWeight=\"bold\">Upload Goverment-issued ID</Body>\n <Box w=\"full\">\n <FileUpload.Root\n maxW=\"full\"\n alignItems=\"stretch\"\n maxFiles={MAX_FILES}\n >\n <FileUpload.HiddenInput />\n <ConditionalDropzone />\n <FileUpload.List clearable />\n </FileUpload.Root>{\" \"}\n </Box>\n <Body fontWeight=\"bold\">Upload Beneficiaries ID</Body>\n <Box w=\"full\">\n <UploadFile />\n </Box> */}\n </VStack>\n </Box>\n </VStack>\n <Box textAlign=\"end\">\n {/* <ContinueButton\n onClick={() => {\n onContinue?.();\n }}\n /> */}\n <Dialog.Root\n size={{ mdDown: \"full\", md: \"md\" }}\n open={uploadDialogOpen}\n onOpenChange={(details) => setUploadDialogOpen(details.open)}\n >\n <Dialog.Trigger asChild>\n <Button\n w={{ base: \"sm\", md: \"2xl\" }}\n mt={{ base: 4, md: 8 }}\n onClick={() => setUploadDialogOpen(true)}\n >\n CONTINUE\n </Button>\n </Dialog.Trigger>\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Upload Requirements</Dialog.Title>\n </Dialog.Header>\n\n <Dialog.Body>\n <VStack gap={6} align=\"stretch\">\n <InfoCard>\n To continue, please upload a valid ID. The system will\n use it to populate your information automatically.\n </InfoCard>\n <DocumentUploadCard\n config={GOVERNMENT_ID_CONFIG}\n onStatusChange={setGovernmentIdStatus}\n onProcess={scanId}\n onError={(message) => notify(\"error\", message)}\n />\n\n <DocumentUploadCard\n config={SIGNATURE_CONFIG}\n onError={(message) => notify(\"error\", message)}\n />\n </VStack>\n </Dialog.Body>\n\n {/* <NextButton\n onClick={async () => {\n if (uploadRef.current) {\n const result = await uploadRef.current();\n if (!result.success) return;\n }\n setUploadDialogOpen(false);\n setReferralDialogOpen(true);\n }}\n /> */}\n\n <Dialog.Footer display=\"flex\" justifyContent=\"space-between\">\n <Dialog.ActionTrigger asChild>\n <CancelButton />\n </Dialog.ActionTrigger>\n <NextButton\n onClick={() => {\n if (\n governmentIdStatus === \"uploading\" ||\n governmentIdStatus === \"processing\"\n ) {\n notify(\"info\", \"Please wait while we read your ID.\");\n return;\n }\n\n if (governmentIdStatus !== \"completed\") {\n notify(\"error\", \"Please upload a government-issued ID.\");\n return;\n }\n\n setUploadDialogOpen(false);\n setReferralDialogOpen(true);\n }}\n />\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 <Dialog.Root\n placement=\"center\"\n open={referralDialogOpen}\n onOpenChange={(details) => setReferralDialogOpen(details.open)}\n size={{ mdDown: \"full\", md: \"md\" }}\n >\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Referral Agent</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <VStack align=\"stretch\" gap={4}>\n <Body>Do you have an referral agent? (optional)</Body>\n <Input placeholder=\"Enter agent name\" />\n </VStack>\n </Dialog.Body>\n <Dialog.Footer display=\"flex\" justifyContent=\"space-between\">\n <Button\n variant=\"outline\"\n onClick={() => {\n setReferralDialogOpen(false);\n onContinue?.();\n }}\n >\n Skip\n </Button>\n <PrimaryMdButton\n onClick={() => {\n setReferralDialogOpen(false);\n onContinue?.();\n }}\n >\n Continue\n </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 </Box>\n </Box>\n </Container>\n );\n};\n\nexport default GetStarted;\n","import React from \"react\";\r\nimport { Box } from \"@chakra-ui/react\";\r\ninterface ContainerProps {\r\n children: React.ReactNode;\r\n}\r\nconst Container = ({ children }: ContainerProps) => {\r\n return (\r\n <Box\r\n px={{ base: 8, md: 8 }}\r\n mt={{ base: 16, md: 32 }}\r\n mb={{ base: 32, md: 16 }}\r\n maxW={\"7xl\"}\r\n mx={\"auto\"}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default Container;\r\n","\"use client\";\n\n/**\n * DocumentUploadCard — a fully self-contained, reusable upload slot.\n *\n * Drop it anywhere with a `DocumentTypeConfig` and it renders the complete\n * lifecycle: drag-and-drop, browse, camera capture, client-side validation,\n * upload progress, a SEPARATE AI-processing state, preview, replace, remove,\n * and retry.\n *\n * This variant keeps its own local state (no external ApplicationProvider is\n * required), so it can be dropped into the e-store without wiring up a\n * context. Swap the local `useDocumentSlot` hook for a shared provider later\n * if you need cross-component state.\n */\n\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { Box, Flex, Spinner, Text, useBreakpointValue } from \"@chakra-ui/react\";\nimport {\n LuUpload,\n LuCamera,\n LuFolderOpen,\n LuFileText,\n LuCheck,\n LuTriangleAlert,\n LuRefreshCw,\n LuTrash2,\n LuReplace,\n LuSparkles,\n} from \"react-icons/lu\";\n// Shared-package note: the host app's toaster is not available here, so errors\n// are reported through the optional `onError` prop (falls back to console).\n\nconst PRIMARY = \"var(--chakra-colors-primary)\";\nconst PRIMARY_SOFT = \"var(--chakra-colors-primary-disabled)\";\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n// The shared `DocumentTypeConfig` type lives in the sales-force feature and is\n// not available here, so it is declared locally instead.\n// import type { DocumentTypeConfig } from \"../types\";\nexport interface DocumentTypeConfig {\n /** Unique id for this document slot. */\n id: string;\n /** Human-readable label shown in the card header. */\n label: string;\n /** Optional supporting description under the label. */\n description?: string;\n /** Comma-separated accept string, e.g. \"image/png,image/jpeg,.pdf\". */\n accept: string;\n /** Maximum allowed file size in megabytes. */\n maxSizeMB: number;\n /** Whether the document is required for submission. */\n required?: boolean;\n /** Short hint shown inside the dropzone. */\n hint?: string;\n /** Which AI processor handles this doc — affects completed-state copy. */\n processor?: \"signature\" | \"extraction\" | string;\n /** Icon component (from react-icons) rendered in the header. */\n icon: React.ElementType;\n}\n\nexport type DocumentStatus =\n | \"idle\"\n | \"uploading\"\n | \"processing\"\n | \"completed\"\n | \"failed\";\n\ninterface DocumentSlot {\n status: DocumentStatus;\n file?: File;\n fileName?: string;\n fileType?: string;\n fileSize?: number;\n previewUrl?: string;\n cleanedImageUrl?: string | undefined;\n progress?: number;\n error?: string;\n extraction?: Record<string, unknown> | undefined;\n}\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nconst defaultNotifyError = (message: string) => {\n console.error(message);\n};\n\nconst formatBytes = (bytes?: number) => {\n if (!bytes) return \"\";\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\nconst validate = (file: File, config: DocumentTypeConfig): string | null => {\n const accepted = config.accept.split(\",\").map((s) => s.trim());\n const okType =\n accepted.includes(file.type) ||\n accepted.some(\n (a) => a.endsWith(\"/*\") && file.type.startsWith(a.slice(0, -1)),\n ) ||\n accepted.some(\n (a) => a.startsWith(\".\") && file.name.toLowerCase().endsWith(a),\n );\n if (!okType) return \"Unsupported file type. Please upload a JPG, PNG or PDF.\";\n if (file.size > config.maxSizeMB * 1024 * 1024)\n return `File is too large. Maximum size is ${config.maxSizeMB}MB.`;\n return null;\n};\n\n/* ------------------------------------------------------------------ */\n/* Local slot hook (replaces the ApplicationProvider context) */\n/* ------------------------------------------------------------------ */\n\nconst useDocumentSlot = (\n config: DocumentTypeConfig,\n onProcess?: (file: File) => Promise<unknown>,\n notifyError: (message: string) => void = defaultNotifyError,\n) => {\n const [slot, setSlot] = useState<DocumentSlot>({ status: \"idle\" });\n const timers = useRef<ReturnType<typeof setTimeout>[]>([]);\n const runId = useRef(0);\n\n const clearTimers = () => {\n timers.current.forEach(clearTimeout);\n timers.current = [];\n };\n\n const processFile = (file: File, currentRun: number, isSignature: boolean) => {\n if (!onProcess) return false;\n\n onProcess(file)\n .then((result) => {\n if (runId.current !== currentRun) return;\n setSlot((prev) => ({\n ...prev,\n status: \"completed\",\n cleanedImageUrl: isSignature ? prev.previewUrl : undefined,\n extraction:\n !isSignature && result && typeof result === \"object\"\n ? (result as Record<string, unknown>)\n : undefined,\n }));\n })\n .catch((err: unknown) => {\n if (runId.current !== currentRun) return;\n const message =\n err instanceof Error && err.message\n ? err.message\n : \"We couldn't process this document. Please try again.\";\n setSlot((prev) => ({ ...prev, status: \"failed\", error: message }));\n notifyError(message);\n });\n\n return true;\n };\n\n const runLifecycle = (file: File) => {\n clearTimers();\n const currentRun = ++runId.current;\n const previewUrl = URL.createObjectURL(file);\n const isSignature = config.processor === \"signature\";\n\n setSlot({\n status: \"uploading\",\n file,\n fileName: file.name,\n fileType: file.type,\n fileSize: file.size,\n previewUrl,\n progress: 0,\n });\n\n // Simulated upload progress.\n let progress = 0;\n const tick = () => {\n progress = Math.min(100, progress + 20);\n setSlot((prev) => ({ ...prev, progress }));\n if (progress < 100) {\n timers.current.push(setTimeout(tick, 180));\n } else {\n // Move into a separate AI-processing state.\n timers.current.push(\n setTimeout(() => {\n setSlot((prev) => ({ ...prev, status: \"processing\" }));\n if (processFile(file, currentRun, isSignature)) return;\n // Then complete.\n timers.current.push(\n setTimeout(() => {\n setSlot((prev) => ({\n ...prev,\n status: \"completed\",\n cleanedImageUrl: isSignature ? prev.previewUrl : undefined,\n extraction: isSignature\n ? undefined\n : { name: \"Sample\", date: \"2026-07-16\", id: \"0001\" },\n }));\n }, 1600),\n );\n }, 200),\n );\n }\n };\n timers.current.push(setTimeout(tick, 180));\n };\n\n const uploadDocument = (file: File) => runLifecycle(file);\n\n const retryDocument = () => {\n if (slot.file) runLifecycle(slot.file);\n };\n\n const removeDocument = () => {\n clearTimers();\n runId.current++;\n if (slot.previewUrl) URL.revokeObjectURL(slot.previewUrl);\n setSlot({ status: \"idle\" });\n };\n\n return { slot, uploadDocument, retryDocument, removeDocument };\n};\n\n/* ------------------------------------------------------------------ */\n/* Inline Card wrapper (matches the project card style) */\n/* ------------------------------------------------------------------ */\n\nconst Card = ({\n activeIcon,\n title,\n subtitle,\n headerAction,\n children,\n}: {\n activeIcon: React.ReactNode;\n title: string;\n subtitle?: string | undefined;\n headerAction?: React.ReactNode;\n children: React.ReactNode;\n}) => (\n <Box\n w=\"full\"\n borderRadius=\"2xl\"\n bg=\"white\"\n borderWidth=\"1px\"\n borderColor=\"gray.200\"\n shadow=\"sm\"\n overflow=\"hidden\"\n >\n <Flex align=\"center\" justify=\"space-between\" px={4} py={3} gap={2}>\n <Flex align=\"center\" gap={2} minW={0}>\n <Box\n p={2}\n borderRadius=\"full\"\n bg=\"gray.100\"\n color={PRIMARY}\n flexShrink={0}\n >\n {activeIcon}\n </Box>\n <Box minW={0}>\n <Text fontWeight=\"bold\" fontSize=\"md\" lineHeight=\"1.2\" truncate>\n {title}\n </Text>\n {subtitle && (\n <Text fontSize=\"xs\" color=\"gray.500\" truncate>\n {subtitle}\n </Text>\n )}\n </Box>\n </Flex>\n {headerAction}\n </Flex>\n <Box px={4} pb={4} pt={1} borderTopWidth=\"1px\" borderColor=\"gray.100\">\n {children}\n </Box>\n </Box>\n);\n\n/* ------------------------------------------------------------------ */\n/* Small pieces */\n/* ------------------------------------------------------------------ */\n\nconst StatusPill = ({ status }: { status: DocumentStatus }) => {\n const map = {\n idle: null,\n uploading: { label: \"Uploading\", fg: \"#1D4ED8\", bg: \"#EFF6FF\" },\n processing: { label: \"Analyzing\", fg: \"#7C3AED\", bg: \"#F5F3FF\" },\n completed: { label: \"Completed\", fg: \"#15803D\", bg: \"#F0FDF4\" },\n failed: { label: \"Failed\", fg: \"#B91C1C\", bg: \"#FEF2F2\" },\n } as const;\n const meta = map[status];\n if (!meta) return null;\n return (\n <Flex\n align=\"center\"\n gap={1.5}\n px={2.5}\n py={1}\n borderRadius=\"full\"\n fontSize=\"xs\"\n fontWeight={600}\n style={{ color: meta.fg, background: meta.bg }}\n flexShrink={0}\n >\n {status === \"processing\" || status === \"uploading\" ? (\n <Spinner size=\"xs\" borderWidth=\"2px\" />\n ) : status === \"completed\" ? (\n <LuCheck size={12} />\n ) : (\n <LuTriangleAlert size={12} />\n )}\n {meta.label}\n </Flex>\n );\n};\n\nconst ProgressBar = ({ value, color }: { value: number; color: string }) => (\n <Box w=\"full\" h=\"6px\" bg=\"gray.100\" borderRadius=\"full\" overflow=\"hidden\">\n <Box\n h=\"full\"\n borderRadius=\"full\"\n style={{\n width: `${value}%`,\n background: color,\n transition: \"width 0.2s ease\",\n }}\n />\n </Box>\n);\n\nconst Thumb = ({\n url,\n isPdf,\n fileName,\n transparent,\n}: {\n url?: string | undefined;\n isPdf?: boolean | undefined;\n fileName?: string | undefined;\n transparent?: boolean | undefined;\n}) => (\n <Flex\n align=\"center\"\n justify=\"center\"\n boxSize={{ base: \"56px\", md: \"64px\" }}\n borderRadius=\"lg\"\n borderWidth=\"1px\"\n borderColor=\"gray.200\"\n overflow=\"hidden\"\n flexShrink={0}\n bg={transparent ? \"transparent\" : \"gray.50\"}\n style={\n transparent\n ? {\n backgroundImage:\n \"linear-gradient(45deg,#eee 25%,transparent 25%),linear-gradient(-45deg,#eee 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eee 75%),linear-gradient(-45deg,transparent 75%,#eee 75%)\",\n backgroundSize: \"10px 10px\",\n backgroundPosition: \"0 0,0 5px,5px -5px,-5px 0\",\n }\n : undefined\n }\n >\n {isPdf || !url ? (\n <Flex direction=\"column\" align=\"center\" color=\"gray.400\" gap={0.5}>\n <LuFileText size={22} />\n <Text fontSize=\"9px\" fontWeight={600}>\n {isPdf ? \"PDF\" : \"FILE\"}\n </Text>\n </Flex>\n ) : (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={url}\n alt={fileName ?? \"preview\"}\n style={{ width: \"100%\", height: \"100%\", objectFit: \"contain\" }}\n />\n )}\n </Flex>\n);\n\nconst GhostBtn = ({\n icon,\n label,\n onClick,\n tone = \"gray\",\n}: {\n icon: React.ReactNode;\n label: string;\n onClick: () => void;\n tone?: \"gray\" | \"danger\" | \"primary\";\n}) => {\n const tones = {\n gray: { c: \"gray.600\", h: \"gray.50\", b: \"gray.200\" },\n danger: { c: \"#B91C1C\", h: \"#FEF2F2\", b: \"#FECACA\" },\n primary: { c: PRIMARY, h: PRIMARY_SOFT, b: PRIMARY },\n } as const;\n const t = tones[tone];\n return (\n <Flex\n as=\"button\"\n align=\"center\"\n gap={1.5}\n px={2.5}\n py={1.5}\n borderRadius=\"lg\"\n borderWidth=\"1px\"\n borderColor={t.b}\n color={t.c}\n bg=\"white\"\n fontSize=\"xs\"\n fontWeight={600}\n cursor=\"pointer\"\n _hover={{ bg: t.h }}\n transition=\"all 0.15s\"\n onClick={onClick}\n >\n {icon}\n {label}\n </Flex>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Card */\n/* ------------------------------------------------------------------ */\n\nexport function DocumentUploadCard({\n config,\n onStatusChange,\n onProcess,\n onError,\n}: {\n config: DocumentTypeConfig;\n /** Tells the parent when this slot's upload status changes. */\n onStatusChange?: (status: DocumentStatus) => void;\n onProcess?: (file: File) => Promise<unknown>;\n /** Shows an error message (e.g. the host app's toast). Defaults to console.error. */\n onError?: (message: string) => void;\n}) {\n const notifyError = onError ?? defaultNotifyError;\n const { slot, uploadDocument, retryDocument, removeDocument } =\n useDocumentSlot(config, onProcess, notifyError);\n const status = slot?.status ?? \"idle\";\n\n useEffect(() => {\n onStatusChange?.(status);\n }, [status, onStatusChange]);\n\n const browseRef = useRef<HTMLInputElement>(null);\n const cameraRef = useRef<HTMLInputElement>(null);\n const [dragging, setDragging] = useState(false);\n\n const Icon = config.icon;\n const isPdf = slot?.fileType === \"application/pdf\";\n\n const handleFiles = (files: FileList | null) => {\n const file = files?.[0];\n if (!file) return;\n const error = validate(file, config);\n if (error) {\n notifyError(error);\n return;\n }\n void uploadDocument(file);\n };\n\n const onDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragging(false);\n handleFiles(e.dataTransfer.files);\n };\n\n /* --------------------------- IDLE ----------------------------- */\n const renderDropzone = () => (\n <Flex\n direction=\"column\"\n align=\"center\"\n justify=\"center\"\n gap={2}\n py={{ base: 6, md: 7 }}\n px={4}\n borderWidth=\"2px\"\n borderStyle=\"dashed\"\n borderColor={dragging ? PRIMARY : \"gray.200\"}\n borderRadius=\"xl\"\n bg={dragging ? PRIMARY_SOFT : \"gray.50\"}\n transition=\"all 0.15s\"\n textAlign=\"center\"\n onDragOver={(e) => {\n e.preventDefault();\n setDragging(true);\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={onDrop}\n role=\"button\"\n tabIndex={0}\n onClick={() => browseRef.current?.click()}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") browseRef.current?.click();\n }}\n cursor=\"pointer\"\n _hover={{ borderColor: PRIMARY, bg: PRIMARY_SOFT }}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n boxSize={11}\n borderRadius=\"full\"\n bg=\"white\"\n borderWidth=\"1px\"\n borderColor=\"gray.200\"\n color={PRIMARY}\n >\n <LuUpload size={18} />\n </Flex>\n <Box>\n <Text fontSize=\"sm\" fontWeight={600} color=\"gray.800\">\n Drag & drop or tap to upload\n </Text>\n <Text fontSize=\"xs\" color=\"gray.500\" mt={0.5}>\n {config.hint ?? \"JPG, PNG or PDF\"}\n </Text>\n </Box>\n <Flex gap={2} mt={1} onClick={(e) => e.stopPropagation()}>\n <GhostBtn\n icon={<LuFolderOpen size={13} />}\n label=\"Browse\"\n tone=\"primary\"\n onClick={() => browseRef.current?.click()}\n />\n <GhostBtn\n icon={<LuCamera size={13} />}\n label=\"Take photo\"\n onClick={() => cameraRef.current?.click()}\n />\n </Flex>\n </Flex>\n );\n\n /* ----------------------- UPLOAD / PROCESS --------------------- */\n const renderBusy = () => (\n <Flex gap={3} align=\"center\">\n <Thumb url={slot?.previewUrl} isPdf={isPdf} fileName={slot?.fileName} />\n <Box flex=\"1\" minW={0}>\n <Text fontSize=\"sm\" fontWeight={600} color=\"gray.800\" truncate>\n {slot?.fileName}\n </Text>\n {status === \"uploading\" ? (\n <>\n <Flex\n justify=\"space-between\"\n fontSize=\"xs\"\n color=\"gray.500\"\n mt={1}\n mb={1}\n >\n <Text>Uploading…</Text>\n <Text fontWeight={600}>{slot?.progress ?? 0}%</Text>\n </Flex>\n <ProgressBar value={slot?.progress ?? 0} color=\"#2563EB\" />\n </>\n ) : (\n <Flex align=\"center\" gap={2} mt={1.5}>\n <Flex\n align=\"center\"\n gap={1.5}\n px={2}\n py={1}\n borderRadius=\"md\"\n bg=\"#F5F3FF\"\n color=\"#7C3AED\"\n fontSize=\"xs\"\n fontWeight={600}\n >\n <LuSparkles size={12} />\n {config.processor === \"signature\"\n ? \"Cleaning signature…\"\n : \"Reading with AI…\"}\n </Flex>\n <Spinner size=\"xs\" color=\"#7C3AED\" borderWidth=\"2px\" />\n </Flex>\n )}\n {status === \"processing\" && (\n <Text fontSize=\"11px\" color=\"gray.400\" mt={1.5}>\n This can take a few seconds. Your upload is already saved.\n </Text>\n )}\n </Box>\n </Flex>\n );\n\n /* --------------------------- FAILED --------------------------- */\n const renderFailed = () => (\n <Box>\n <Flex gap={3} align=\"flex-start\">\n <Thumb url={slot?.previewUrl} isPdf={isPdf} fileName={slot?.fileName} />\n <Box flex=\"1\" minW={0}>\n <Text fontSize=\"sm\" fontWeight={600} color=\"gray.800\" truncate>\n {slot?.fileName ?? config.label}\n </Text>\n <Flex align=\"flex-start\" gap={1.5} mt={1} color=\"#B91C1C\">\n <Box mt=\"1px\">\n <LuTriangleAlert size={13} />\n </Box>\n <Text fontSize=\"xs\" lineHeight=\"1.4\">\n {slot?.error ?? \"We couldn't process this document.\"}\n </Text>\n </Flex>\n </Box>\n </Flex>\n <Flex gap={2} mt={3} wrap=\"wrap\">\n {slot?.file ? (\n <GhostBtn\n icon={<LuRefreshCw size={13} />}\n label=\"Retry\"\n tone=\"primary\"\n onClick={() => void retryDocument()}\n />\n ) : (\n <GhostBtn\n icon={<LuUpload size={13} />}\n label=\"Re-upload\"\n tone=\"primary\"\n onClick={() => browseRef.current?.click()}\n />\n )}\n <GhostBtn\n icon={<LuReplace size={13} />}\n label=\"Choose another\"\n onClick={() => browseRef.current?.click()}\n />\n <GhostBtn\n icon={<LuTrash2 size={13} />}\n label=\"Remove\"\n tone=\"danger\"\n onClick={() => removeDocument()}\n />\n </Flex>\n </Box>\n );\n\n /* -------------------------- COMPLETED ------------------------- */\n const renderCompleted = () => {\n const isSignature = config.processor === \"signature\";\n const fieldCount = slot?.extraction\n ? Object.values(slot.extraction).filter(Boolean).length\n : 0;\n const displayUrl = isSignature\n ? (slot?.cleanedImageUrl ?? slot?.previewUrl)\n : slot?.previewUrl;\n\n return (\n <Box>\n <Flex gap={3} align=\"center\">\n <Thumb\n url={displayUrl}\n isPdf={isPdf && !isSignature}\n fileName={slot?.fileName}\n transparent={isSignature && !!slot?.cleanedImageUrl}\n />\n <Box flex=\"1\" minW={0}>\n <Text fontSize=\"sm\" fontWeight={600} color=\"gray.800\" truncate>\n {slot?.fileName}\n </Text>\n <Text fontSize=\"xs\" color=\"gray.500\">\n {formatBytes(slot?.fileSize)}\n </Text>\n <Flex\n align=\"center\"\n gap={1.5}\n mt={1.5}\n color={PRIMARY}\n fontSize=\"xs\"\n fontWeight={600}\n >\n <LuSparkles size={12} />\n {isSignature\n ? \"Signature detected & cleaned\"\n : `${fieldCount} field${fieldCount === 1 ? \"\" : \"s\"} extracted`}\n </Flex>\n </Box>\n </Flex>\n <Flex gap={2} mt={3} wrap=\"wrap\">\n <GhostBtn\n icon={<LuReplace size={13} />}\n label=\"Replace\"\n onClick={() => browseRef.current?.click()}\n />\n <GhostBtn\n icon={<LuTrash2 size={13} />}\n label=\"Remove\"\n tone=\"danger\"\n onClick={() => removeDocument()}\n />\n </Flex>\n </Box>\n );\n };\n\n const requiredTag = (\n <Text\n fontSize=\"10px\"\n fontWeight={700}\n px={1.5}\n py={0.5}\n borderRadius=\"full\"\n color={config.required ? \"#B45309\" : \"gray.500\"}\n bg={config.required ? \"#FEF3C7\" : \"gray.100\"}\n flexShrink={0}\n >\n {config.required ? \"REQUIRED\" : \"OPTIONAL\"}\n </Text>\n );\n const isMobile = useBreakpointValue({ base: true, lg: false });\n return (\n <Card\n activeIcon={<Icon size={18} />}\n title={config.label}\n subtitle={config.description}\n headerAction={\n !isMobile ? (\n <Flex align=\"center\" gap={2} flexShrink={0}>\n {requiredTag}\n <StatusPill status={status} />\n </Flex>\n ) : (\n <></>\n )\n }\n >\n {isMobile ? (\n <Flex\n align=\"center\"\n justifySelf={\"flex-end\"}\n gap={2}\n mb={1}\n flexShrink={0}\n >\n {requiredTag}\n <StatusPill status={status} />\n </Flex>\n ) : (\n <></>\n )}\n\n {/* Body by state */}\n {status === \"idle\" && renderDropzone()}\n {(status === \"uploading\" || status === \"processing\") && renderBusy()}\n {status === \"failed\" && renderFailed()}\n {status === \"completed\" && renderCompleted()}\n\n {/* Hidden inputs */}\n <input\n ref={browseRef}\n type=\"file\"\n accept={config.accept}\n hidden\n onChange={(e) => {\n handleFiles(e.target.files);\n e.target.value = \"\";\n }}\n />\n <input\n ref={cameraRef}\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n hidden\n onChange={(e) => {\n handleFiles(e.target.files);\n e.target.value = \"\";\n }}\n />\n </Card>\n );\n}\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 "\r\n {\r\n availableOptions.find(\r\n (item) => item.key === quickNavHrefs[replacingIdx],\r\n )?.title\r\n }\r\n "\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":["Field","Input","useState","jsx","jsxs","useState","Field","Input","Box","Select","createListCollection","Field","useEffect","useState","jsx","jsxs","createListCollection","useState","useEffect","Box","Field","Select","Box","Field","SimpleGrid","VStack","jsx","jsxs","Box","VStack","SimpleGrid","Field","VStack","Box","Grid","Portal","createListCollection","Select","Field","Flex","Input","useEffect","useState","Box","Text","jsx","jsxs","jsx","jsxs","createListCollection","VStack","useState","useEffect","Flex","Box","Portal","Grid","Select","Field","Input","useState","useEffect","VStack","Box","Body","H4","Fragment","jsx","jsxs","useState","useEffect","Body","VStack","H4","Box","Box","Flex","VStack","useEffect","useState","Box","HStack","Text","jsx","jsxs","HStack","Box","Text","Box","Flex","Text","useState","jsx","jsxs","jsx","jsxs","useState","useEffect","Box","Flex","VStack","Box","useState","FaRegUser","IoIosInformationCircleOutline","Box","CloseButton","Dialog","Flex","HStack","Heading","Icon","IconButton","Portal","SimpleGrid","Text","VStack","FaRegAddressCard","FaRegUser","IoIosInformationCircleOutline","useEffect","useState","Box","Separator","Body","jsx","jsxs","Box","Button","Flex","Icon","Text","useState","LuChevronDown","LuChevronUp","LuHash","LuPencil","jsx","jsxs","jsx","jsxs","VStack","Icon","ReviewRows","SimpleGrid","Box","Text","Flex","Heading","IconButton","useState","useEffect","IoIosInformationCircleOutline","FaRegUser","FaRegAddressCard","Dialog","Portal","CloseButton","HStack","jsx","FaRegUser","IoIosInformationCircleOutline","useState","Box","Flex","Text","PrimaryMdButton","SecondaryMdButton","LuCheck","jsx","jsxs","jsx","useState","Box","jsx","useCallback","useState","useState","useCallback","Body","CancelButton","H3","PrimaryMdButton","Box","VStack","Dialog","Button","Portal","CloseButton","Input","useState","Box","jsx","useEffect","useRef","useState","Box","Flex","Text","useBreakpointValue","LuCheck","Fragment","jsx","jsxs","PRIMARY","Icon","jsx","jsxs","useState","Box","VStack","H3","Dialog","Button","Portal","CancelButton","CloseButton","Body","Input","PrimaryMdButton","React","Box","Portal","HStack","VStack","Flex","Icon","CloseButton","Text","LuChevronRight","jsx","jsxs","React","HStack","Flex","Text","Box","Icon","LuChevronRight","Portal","CloseButton","VStack","useEffect","useState","Button","Flex","HStack","Icon","Text","VStack","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","VStack","Flex","Icon","Text","Button","HStack","useEffect","useState","Badge","Box","Button","Flex","HStack","IconButton","Input","Separator","Text","useBreakpointValue","VStack","LuChevronDown","LuChevronLeft","LuChevronRight","LuChevronUp","LuFileText","Fragment","jsx","jsxs"]}
|