@splpi/estore-shared-components 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +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/floating-label-input.tsx","../src/NewSaleForm/LifePlanApplication2.tsx","../src/NewSaleForm/LifePlanApplication3.tsx","../src/NewSaleForm/beneficiary.tsx","../src/NewSaleForm/ui/row-item.tsx","../src/NewSaleForm/HealthDeclaration.tsx","../src/NewSaleForm/LifePlanApplicationFormWrapper.tsx","../src/lib/applicationData.ts","../src/NewSaleForm/ui/info-card.tsx","../src/NewSaleForm/ui/input-card-accordion.tsx","../src/NewSaleForm/SharedLifePlanApplication.tsx","../src/NewSaleForm/data/lifePlanSteps.tsx","../src/NewSaleForm/confirmation.tsx","../src/NewSaleForm/data/checkBoxList.tsx","../src/NewSaleForm/ui/info-card-accordion.tsx","../src/NewSaleForm/ui/horizontal-stepper.tsx","../src/NewSaleForm/LifePlanApplicationStepWrapper.tsx","../src/BottomQuickActions/BottomQuickActions.tsx","../src/lib/theme/brand-colors.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 { useState, useEffect } from \"react\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\nimport type { IPersonalInfo } from \"../types/planholder\";\nimport FloatingLabelInput from \"./ui/floating-label-input\";\n\ninterface LifePlanApplication1Props {\n initialData?: IPersonalInfo;\n onUpdate?: (personalInfo: IPersonalInfo, address?: any) => void;\n}\n\nconst idCollection = createListCollection({\n items: [\n { label: \"Passport\", value: \"passport\" },\n { label: \"Driver's License\", value: \"driver_license\" },\n { label: \"Philippine Identification Card\", value: \"national_id\" },\n ],\n});\n\nconst genderCollection = createListCollection({\n items: [\n { label: \"Male\", value: \"male\" },\n { label: \"Female\", value: \"female\" },\n ],\n});\n\nconst civilStatusCollection = createListCollection({\n items: [\n { label: \"Single\", value: \"single\" },\n { label: \"Married\", value: \"married\" },\n { label: \"Widowed\", value: \"widowed\" },\n { label: \"Divorced\", value: \"divorced\" },\n { label: \"Separated\", value: \"separated\" },\n { label: \"Annulled\", value: \"annulled\" },\n ],\n});\n\nconst LifePlanApplication1 = ({\n initialData,\n onUpdate,\n}: LifePlanApplication1Props) => {\n // const { runOCR } = useOcr();\n\n const [formData, setFormData] = useState<IPersonalInfo>({\n firstName: initialData?.firstName ?? \"Juan\",\n middleName: initialData?.middleName ?? \"Santos\",\n lastName: initialData?.lastName ?? \"Dela Cruz\",\n suffix: initialData?.suffix ?? \"\",\n birthDate: initialData?.birthDate ?? \"1990-05-15\",\n idType: initialData?.idType ?? \"national_id\",\n idNumber: initialData?.idNumber ?? \"1234-5678-9012\",\n height: initialData?.height ?? 5.7,\n weight: initialData?.weight ?? 154,\n gender: initialData?.gender ?? \"male\",\n civilStatus: initialData?.civilStatus ?? \"married\",\n nationality: initialData?.nationality ?? \"Filipino\",\n mobileNumber: initialData?.mobileNumber ?? \"0917-123-4567\",\n emailAddress: initialData?.emailAddress ?? \"juan.delacruz@example.com\",\n mailingAddress:\n initialData?.mailingAddress ??\n \"123 Mabini Street, Barangay San Antonio, Makati City\",\n landLineNumber: initialData?.landLineNumber ?? \"02-8123-4567\",\n });\n\n const updateFormData = (nextData: IPersonalInfo) => {\n setFormData(nextData);\n onUpdate?.(nextData);\n };\n\n // useEffect(() => {\n // runOCR();\n // }, []);\n\n useEffect(() => {\n const OCRValue =\n typeof window === \"undefined\" ? null : localStorage.getItem(\"ocrResult\");\n\n if (OCRValue != null) {\n try {\n const ocrData = JSON.parse(OCRValue);\n\n const [month, day, year] = ocrData.birthDate\n .split(\"/\")\n .map((part: string) => part.trim());\n const formattedBirthDate = `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}`;\n\n let mappedIdType = \"\";\n if (ocrData?.idType) {\n const normalizedIdType = ocrData.idType\n .toLowerCase()\n .replace(/\\s+/g, \"_\")\n .replace(/'/g, \"\");\n if (normalizedIdType.includes(\"passport\")) {\n mappedIdType = \"passport\";\n } else if (normalizedIdType.includes(\"driver\")) {\n mappedIdType = \"driver_license\";\n } else if (\n normalizedIdType.includes(\"national\") ||\n normalizedIdType.includes(\"id\")\n ) {\n mappedIdType = \"national_id\";\n }\n }\n\n const updatedData = {\n ...formData,\n firstName: ocrData?.firstName || \"\",\n lastName: ocrData?.lastName || \"\",\n middleName: ocrData?.middleName || \"\",\n birthDate: formattedBirthDate || \"\",\n idType: mappedIdType || \"\",\n };\n updateFormData(updatedData);\n } catch (e) {\n console.error(\"Failed to parse OCR value:\", e);\n localStorage.removeItem(\"ocrResult\");\n }\n }\n }, []);\n\n return (\n <Grid\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\n gap={STANDARD_SPACING.sm}\n w=\"full\"\n >\n <Field.Root>\n <Select.Root\n collection={idCollection}\n value={formData.idType ? [formData.idType] : []}\n onValueChange={(details) =>\n updateFormData({\n ...formData,\n idType: details.value[0] ?? \"\",\n })\n }\n >\n <Select.HiddenSelect />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Select ID Type\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {idCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"idNumber\"\n type=\"text\"\n label=\"ID Number\"\n value={formData.idNumber || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, idNumber: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"lastName\"\n type=\"text\"\n label=\"Last Name\"\n value={formData.lastName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, lastName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"firstName\"\n type=\"text\"\n label=\"First Name\"\n value={formData.firstName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, firstName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"middleName\"\n type=\"text\"\n label=\"Middle Name\"\n value={formData.middleName || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, middleName: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"suffix\"\n type=\"text\"\n label=\"Suffix (Optional)\"\n value={formData.suffix || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, suffix: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Date of Birth</Field.Label>\n <Input\n id=\"dateOfBirth\"\n type=\"date\"\n value={formData.birthDate || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, birthDate: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Field.Label>Date of Naturalization</Field.Label>\n <Input id=\"dateOfNeutralization\" type=\"date\" />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"height\"\n label=\"Height (ft)\"\n value={formData.height ? String(formData.height) : \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n height: parseFloat(e.target.value),\n })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"weight\"\n label=\"Weight (lbs)\"\n value={formData.weight ? String(formData.weight) : \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n weight: parseFloat(e.target.value),\n })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n collection={genderCollection}\n value={formData.gender ? [formData.gender] : []}\n onValueChange={(details) =>\n updateFormData(\n details.value[0]\n ? { ...formData, gender: details.value[0] }\n : formData,\n )\n }\n >\n <Select.HiddenSelect id=\"gender\" />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Gender\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {genderCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <Select.Root\n collection={civilStatusCollection}\n value={formData.civilStatus ? [formData.civilStatus] : []}\n onValueChange={(details) =>\n updateFormData({\n ...formData,\n ...(details.value[0] ? { civilStatus: details.value[0] } : {}),\n })\n }\n >\n <Select.HiddenSelect id=\"civilStatus\" />\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder=\"Civil Status\" />\n </Select.Trigger>\n <Select.IndicatorGroup>\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Select.Positioner>\n <Select.Content>\n {civilStatusCollection.items.map((item) => (\n <Select.Item key={item.value} item={item}>\n {item.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Select.Root>\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"nationality\"\n type=\"text\"\n label=\"Nationality\"\n value={formData.nationality || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, nationality: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"mobileNumber\"\n type=\"text\"\n label=\"Mobile Number\"\n value={formData.mobileNumber || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, mobileNumber: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"landlineNumber\"\n type=\"text\"\n label=\"Landline Number\"\n value={formData.landLineNumber || \"\"}\n onChange={(e) =>\n updateFormData({\n ...formData,\n landLineNumber: e.target.value,\n })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"email\"\n type=\"email\"\n label=\"Email Address\"\n value={formData.emailAddress || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, emailAddress: e.target.value })\n }\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"mailingAddress\"\n type=\"text\"\n label=\"Mailing Address\"\n value={formData.mailingAddress || \"\"}\n onChange={(e) =>\n updateFormData({ ...formData, mailingAddress: e.target.value })\n }\n />\n </Field.Root>\n\n <Field.Root>\n <FloatingLabelInput\n id=\"insurability\"\n type=\"text\"\n label=\"Insurability\"\n value=\"Insurable\"\n readOnly\n />\n </Field.Root>\n </Grid>\n );\n};\n\nexport default LifePlanApplication1;\n","export const RESPONSIVE_LAYOUT_TOKENS = {\n grid: {\n mobile: {\n columns: 4,\n gutter: \"16px\",\n marginMin: \"16px\",\n marginMax: \"32px\",\n minWidth: \"320px\",\n maxWidth: \"768px\",\n },\n tablet: {\n columns: 8,\n gutterMin: \"16px\",\n gutterMax: \"24px\",\n marginMin: \"40px\",\n marginMax: \"80px\",\n contentMinWidth: \"600px\",\n contentMaxWidth: \"940px\",\n },\n desktop: {\n columns: 12,\n gutterMin: \"16px\",\n gutterMax: \"32px\",\n marginMin: \"80px\",\n marginMax: \"120px\",\n contentMinWidth: \"1200px\",\n contentMaxWidth: \"1440px\",\n },\n },\n pagePadding: {\n base: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"64px\",\n },\n navigationOffset: {\n base: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"48px\",\n },\n sectionGap: {\n base: \"32px\",\n md: \"48px\",\n lg: \"64px\",\n },\n card: {\n gap: {\n base: \"16px\",\n md: \"24px\",\n },\n padding: {\n base: \"16px\",\n md: \"24px\",\n },\n mobilePadding: {\n base: \"16px\",\n md: \"20px\",\n },\n },\n form: {\n fieldGap: \"16px\",\n labelValueGapMin: \"8px\",\n labelValueGapMax: \"12px\",\n containerMinWidth: \"480px\",\n containerMaxWidth: \"720px\",\n },\n search: {\n width: {\n base: \"100%\",\n mdMin: \"240px\",\n mdMax: \"320px\",\n },\n heightMin: \"40px\",\n heightMax: \"48px\",\n },\n} as const;\n\nexport const PAGE_PADDING = RESPONSIVE_LAYOUT_TOKENS.pagePadding;\nexport const SECTION_GAP = RESPONSIVE_LAYOUT_TOKENS.sectionGap;\nexport const CARD_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.card;\nexport const FORM_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.form;\nexport const SEARCH_LAYOUT = RESPONSIVE_LAYOUT_TOKENS.search;\n","import { RESPONSIVE_LAYOUT_TOKENS } from \"./layout-tokens\";\n\nexport const STANDARD_SPACING = {\n xs: \"8px\",\n sm: \"16px\",\n md: \"24px\",\n lg: \"32px\",\n xl: \"48px\",\n section: \"64px\",\n pageMobile: RESPONSIVE_LAYOUT_TOKENS.pagePadding.base,\n pageTablet: RESPONSIVE_LAYOUT_TOKENS.pagePadding.md,\n pageDesktop: RESPONSIVE_LAYOUT_TOKENS.pagePadding.lg,\n pageDesktopMax: RESPONSIVE_LAYOUT_TOKENS.pagePadding.xl,\n cardGap: RESPONSIVE_LAYOUT_TOKENS.card.gap.base,\n formFieldGap: RESPONSIVE_LAYOUT_TOKENS.form.fieldGap,\n labelValueGap: RESPONSIVE_LAYOUT_TOKENS.form.labelValueGapMin,\n} as const;\n\nexport const STANDARD_RADIUS = {\n sm: \"4px\",\n md: \"8px\",\n lg: \"12px\",\n xl: \"16px\",\n full: \"9999px\",\n circle: \"50%\",\n} as const;\n\nexport const STANDARD_SHADOWS = {\n level1: \"0px 2px 8px rgba(0,0,0,0.06)\",\n level2: \"0px 4px 12px rgba(0,0,0,0.08)\",\n level3: \"0px 8px 24px rgba(0,0,0,0.10)\",\n level4: \"0px 12px 32px rgba(0,0,0,0.12)\",\n} as const;\n\nexport const STANDARD_SIZES = {\n iconButton: {\n sm: \"32px\",\n md: \"40px\",\n lg: \"48px\",\n },\n button: {\n sm: {\n height: \"32px\",\n minWidth: \"72px\",\n fontSize: \"12px\",\n fontWeight: \"600\",\n lineHeight: \"20px\",\n letterSpacing: \"0.5px\",\n },\n md: {\n height: \"40px\",\n minWidth: \"96px\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n lineHeight: \"20px\",\n letterSpacing: \"0.5px\",\n },\n lg: {\n height: \"48px\",\n minWidth: \"112px\",\n fontSize: \"16px\",\n fontWeight: \"600\",\n lineHeight: \"24px\",\n letterSpacing: \"1px\",\n },\n xl: {\n height: \"56px\",\n minWidth: \"128px\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n lineHeight: \"28px\",\n letterSpacing: \"1px\",\n },\n },\n searchInput: {\n height: \"40px\",\n maxHeight: \"48px\",\n desktopMinWidth: \"240px\",\n desktopMaxWidth: \"320px\",\n iconSize: \"16px\",\n },\n table: {\n dragColumnWidth: \"32px\",\n selectionColumnWidth: \"40px\",\n actionsColumnWidth: \"44px\",\n rowActionWidth: \"32px\",\n headerHeight: \"40px\",\n },\n card: {\n sm: \"320px\",\n md: \"480px\",\n lg: \"800px\",\n mobilePadding: RESPONSIVE_LAYOUT_TOKENS.card.padding.base,\n desktopPadding: RESPONSIVE_LAYOUT_TOKENS.card.padding.md,\n },\n modal: {\n minWidth: \"320px\",\n maxWidth: \"480px\",\n minHeight: \"120px\",\n maxHeight: \"280px\",\n },\n reportImage: {\n logoWidth: \"250px\",\n logoHeight: \"150px\",\n },\n} as const;\n\nexport const STANDARD_BUTTON_STYLES = {\n sm: {\n h: STANDARD_SIZES.button.sm.height,\n minW: STANDARD_SIZES.button.sm.minWidth,\n px: STANDARD_SPACING.sm,\n borderRadius: STANDARD_RADIUS.md,\n fontSize: STANDARD_SIZES.button.sm.fontSize,\n fontWeight: STANDARD_SIZES.button.sm.fontWeight,\n lineHeight: STANDARD_SIZES.button.sm.lineHeight,\n },\n md: {\n h: STANDARD_SIZES.button.md.height,\n minW: STANDARD_SIZES.button.md.minWidth,\n px: STANDARD_SPACING.sm,\n borderRadius: STANDARD_RADIUS.md,\n fontSize: STANDARD_SIZES.button.md.fontSize,\n fontWeight: STANDARD_SIZES.button.md.fontWeight,\n lineHeight: STANDARD_SIZES.button.md.lineHeight,\n },\n} as const;\n\nexport const STANDARD_ICON_BUTTON_STYLES = {\n sm: {\n boxSize: STANDARD_SIZES.iconButton.sm,\n minW: STANDARD_SIZES.iconButton.sm,\n borderRadius: STANDARD_RADIUS.md,\n },\n md: {\n boxSize: STANDARD_SIZES.iconButton.md,\n minW: STANDARD_SIZES.iconButton.md,\n borderRadius: STANDARD_RADIUS.md,\n },\n} as const;\n","\"use client\";\r\nimport React, { useState } from \"react\";\r\nimport {\r\n Box,\r\n Field,\r\n Input,\r\n defineStyle,\r\n useControllableState,\r\n type InputProps,\r\n} from \"@chakra-ui/react\";\r\n\r\ninterface FloatingLabelInputProps extends InputProps {\r\n label: React.ReactNode;\r\n value?: string;\r\n defaultValue?: string;\r\n onValueChange?: (value: string) => void;\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 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 <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 pos: \"absolute\",\r\n bg: \"bg\",\r\n px: \"0.5\",\r\n top: \"2.5\",\r\n insetStart: \"3\",\r\n fontWeight: \"normal\",\r\n pointerEvents: \"none\",\r\n transition: \"position\",\r\n color: \"fg.muted\",\r\n \"&[data-float]\": {\r\n top: \"-3\",\r\n insetStart: \"2\",\r\n color: \"fg\",\r\n },\r\n});\r\n\r\nexport default FloatingLabelInput;\r\n","\"use client\";\r\nimport {\r\n VStack,\r\n SimpleGrid,\r\n Box,\r\n Text,\r\n Select,\r\n createListCollection,\r\n Portal,\r\n Field,\r\n} from \"@chakra-ui/react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\r\nimport type { IAddress } from \"../types/planholder\";\r\nimport FloatingLabelInput from \"./ui/floating-label-input\";\r\n\r\nconst provinceOptions = [\r\n \"Abra\",\r\n \"Agusan del Norte\",\r\n \"Agusan del Sur\",\r\n \"Aklan\",\r\n \"Albay\",\r\n \"Antique\",\r\n \"Apayao\",\r\n \"Aurora\",\r\n \"Basilan\",\r\n \"Bataan\",\r\n \"Batanes\",\r\n \"Batangas\",\r\n \"Benguet\",\r\n \"Biliran\",\r\n \"Bohol\",\r\n \"Bukidnon\",\r\n \"Bulacan\",\r\n \"Cagayan\",\r\n \"Camarines Norte\",\r\n \"Camarines Sur\",\r\n \"Camiguin\",\r\n \"Capiz\",\r\n \"Catanduanes\",\r\n \"Cavite\",\r\n \"Cebu\",\r\n \"Cotabato\",\r\n \"Davao de Oro\",\r\n \"Davao del Norte\",\r\n \"Davao del Sur\",\r\n \"Davao Occidental\",\r\n \"Davao Oriental\",\r\n \"Dinagat Islands\",\r\n \"Eastern Samar\",\r\n \"Guimaras\",\r\n \"Ifugao\",\r\n \"Ilocos Norte\",\r\n \"Ilocos Sur\",\r\n \"Iloilo\",\r\n \"Isabela\",\r\n \"Kalinga\",\r\n \"La Union\",\r\n \"Laguna\",\r\n \"Lanao del Norte\",\r\n \"Lanao del Sur\",\r\n \"Leyte\",\r\n \"Maguindanao del Norte\",\r\n \"Maguindanao del Sur\",\r\n \"Marinduque\",\r\n \"Masbate\",\r\n \"Metro Manila\",\r\n \"Misamis Occidental\",\r\n \"Misamis Oriental\",\r\n \"Mountain Province\",\r\n \"Negros Occidental\",\r\n \"Negros Oriental\",\r\n \"Northern Samar\",\r\n \"Nueva Ecija\",\r\n \"Nueva Vizcaya\",\r\n \"Occidental Mindoro\",\r\n \"Oriental Mindoro\",\r\n \"Palawan\",\r\n \"Pampanga\",\r\n \"Pangasinan\",\r\n \"Quezon\",\r\n \"Quirino\",\r\n \"Rizal\",\r\n \"Romblon\",\r\n \"Samar\",\r\n \"Sarangani\",\r\n \"Siquijor\",\r\n \"Sorsogon\",\r\n \"South Cotabato\",\r\n \"Southern Leyte\",\r\n \"Sultan Kudarat\",\r\n \"Sulu\",\r\n \"Surigao del Norte\",\r\n \"Surigao del Sur\",\r\n \"Tarlac\",\r\n \"Tawi-Tawi\",\r\n \"Zambales\",\r\n \"Zamboanga del Norte\",\r\n \"Zamboanga del Sur\",\r\n \"Zamboanga Sibugay\",\r\n].map((prov) => ({ label: prov, value: prov }));\r\n\r\nconst cityOptions = [\r\n \"Quezon City\",\r\n \"Manila\",\r\n \"Davao City\",\r\n \"Caloocan\",\r\n \"Cebu City\",\r\n \"Zamboanga City\",\r\n \"Taguig\",\r\n \"Antipolo\",\r\n \"Pasig\",\r\n \"Valenzuela\",\r\n \"Las Piñas\",\r\n \"Makati\",\r\n \"San Jose del Monte\",\r\n \"Bacolod\",\r\n \"Muntinlupa\",\r\n \"Cagayan de Oro\",\r\n \"Dasmariñas\",\r\n \"Pasay\",\r\n \"General Santos\",\r\n \"Santa Rosa\",\r\n \"Iloilo City\",\r\n \"Parañaque\",\r\n \"Bacoor\",\r\n \"Mandaluyong\",\r\n \"Angeles\",\r\n \"Imus\",\r\n \"Lapu-Lapu\",\r\n \"Mandaue\",\r\n \"Baguio\",\r\n \"San Fernando\",\r\n \"Biñan\",\r\n \"Butuan\",\r\n \"San Pedro\",\r\n \"Navotas\",\r\n \"Tanauan\",\r\n \"Malabon\",\r\n \"Ormoc\",\r\n \"Legazpi\",\r\n \"Olongapo\",\r\n \"Cabuyao\",\r\n \"Tacloban\",\r\n \"Naga\",\r\n \"San Pablo\",\r\n \"Valencia\",\r\n \"Roxas\",\r\n \"Tarlac City\",\r\n \"Lucena\",\r\n \"Tagum\",\r\n \"Calamba\",\r\n \"Puerto Princesa\",\r\n \"Gapan\",\r\n \"Cotabato City\",\r\n \"Santiago\",\r\n \"Tuguegarao\",\r\n \"Bayawan\",\r\n \"Dipolog\",\r\n \"Pagadian\",\r\n \"Kidapawan\",\r\n \"Koronadal\",\r\n \"Surigao\",\r\n \"Dagupan\",\r\n \"Digos\",\r\n \"Candon\",\r\n \"Tabaco\",\r\n \"Baybay\",\r\n \"San Carlos\",\r\n \"Gingoog\",\r\n \"Sorsogon City\",\r\n \"Cauayan\",\r\n \"Science City of Muñoz\",\r\n \"Calapan\",\r\n \"San Jose\",\r\n \"Urdaneta\",\r\n \"Bayugan\",\r\n \"San Fernando (La Union)\",\r\n \"Bais\",\r\n \"Talisay\",\r\n \"Polomolok\",\r\n \"Panabo\",\r\n \"Danao\",\r\n \"Santa Maria\",\r\n \"Silay\",\r\n \"Cavite City\",\r\n \"Bogo\",\r\n \"Tabuk\",\r\n \"Trece Martires\",\r\n \"Ligao\",\r\n \"Canlaon\",\r\n \"Dumaguete\",\r\n \"Malaybalay\",\r\n \"Baclayon\",\r\n \"San Juan\",\r\n \"Laoag\",\r\n \"Mati\",\r\n \"Bangued\",\r\n \"Baler\",\r\n \"Vigan\",\r\n \"Puerto Galera\",\r\n \"Marawi\",\r\n \"Basilan City\",\r\n \"Isabela City\",\r\n \"Lamitan\",\r\n \"Jolo\",\r\n \"Bongao\",\r\n \"Ipil\",\r\n].map((city) => ({ label: city, value: city }));\r\n\r\nconst districtOptions = cityOptions;\r\nconst barangayOptions = cityOptions;\r\n\r\nconst provinceCollection = createListCollection({ items: provinceOptions });\r\nconst cityCollection = createListCollection({ items: cityOptions });\r\nconst districtCollection = createListCollection({ items: districtOptions });\r\nconst barangayCollection = createListCollection({ items: barangayOptions });\r\n\r\ninterface LifePlanApplication2Props {\r\n onAddressUpdate?: (address: IAddress) => void;\r\n}\r\n\r\nconst LifePlanApplication2 = ({\r\n onAddressUpdate,\r\n}: LifePlanApplication2Props) => {\r\n const OCRValue =\r\n typeof window === \"undefined\" ? null : localStorage.getItem(\"ocrResult\");\r\n // const { runOCR, data } = useOcr();\r\n const [lot, setLot] = useState(\"123\");\r\n const [street, setStreet] = useState(\"Mabini Street\");\r\n const [city, setCity] = useState(\"Makati\");\r\n const [province, setProvince] = useState(\"Metro Manila\");\r\n const [district, setDistrict] = useState(\"Taguig\");\r\n const [barangay, setBarangay] = useState(\"San Juan\");\r\n\r\n // const parseAddress = async (address: string) => {\r\n // if (!address) return;\r\n\r\n // try {\r\n // const result = await GeoApifyService.autocompleteAddress(address);\r\n\r\n // setLot(result.houseNumber ?? \"\");\r\n // setStreet(result.street ?? \"\");\r\n // setCity(result.city ?? \"\");\r\n // setDistrict(result.suburb ?? \"\");\r\n // setProvince(result.province ?? \"\");\r\n // } catch (error) {\r\n // console.error(\"Error parsing address:\", error);\r\n // }\r\n // };\r\n\r\n // useEffect(() => {\r\n // if (OCRValue != null) {\r\n // const ocrData = JSON.parse(OCRValue);\r\n // const address = ocrData.addressLine || \"\";\r\n // parseAddress(address);\r\n // } else if (data?.response) {\r\n // const address = data.response.addressLine || \"\";\r\n // parseAddress(address);\r\n // }\r\n // }, [OCRValue, data]);\r\n\r\n // useEffect(() => {\r\n // onAddressUpdate?.({\r\n // lot,\r\n // street,\r\n // barangay,\r\n // district,\r\n // city,\r\n // province,\r\n // });\r\n // }, [lot, street, barangay, city, province, district]);\r\n\r\n // useEffect(() => {\r\n // runOCR();\r\n // }, []);\r\n\r\n return (\r\n <Box\r\n // bg={BRAND_COLORS.white}\r\n // borderWidth=\"1px\"\r\n // borderColor={BRAND_COLORS.neutralBorder}\r\n // borderRadius={STANDARD_RADIUS.lg}\r\n // boxShadow={STANDARD_SHADOWS.level1}\r\n p={{ base: STANDARD_SPACING.sm, md: STANDARD_SPACING.md }}\r\n >\r\n <VStack align=\"stretch\" gap={STANDARD_SPACING.md}>\r\n {/* <Box>\r\n <Text\r\n color={BRAND_COLORS.neutralText}\r\n fontSize={{ base: \"18px\", md: \"20px\" }}\r\n fontWeight=\"700\"\r\n lineHeight=\"1.3\"\r\n >\r\n Residential Address\r\n </Text>\r\n </Box> */}\r\n\r\n <SimpleGrid columns={{ base: 1, md: 2 }} gap={STANDARD_SPACING.sm}>\r\n <Field.Root>\r\n <Select.Root\r\n value={[province]}\r\n onValueChange={(e) => setProvince(e.value[0] ?? \"\")}\r\n collection={provinceCollection}\r\n width=\"100%\"\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select Province\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {provinceOptions.map((item) => (\r\n <Select.Item item={item} key={item.value}>\r\n {item.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Select.Root\r\n value={[city]}\r\n onValueChange={(e) => setCity(e.value[0] ?? \"\")}\r\n collection={cityCollection}\r\n width=\"100%\"\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select City\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {cityOptions.map((item) => (\r\n <Select.Item item={item} key={item.value}>\r\n {item.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Select.Root\r\n value={[district]}\r\n onValueChange={(e) => setDistrict(e.value[0] ?? \"\")}\r\n collection={districtCollection}\r\n width=\"100%\"\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select District\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {districtOptions.map((item) => (\r\n <Select.Item item={item} key={item.value}>\r\n {item.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Select.Root\r\n value={[barangay]}\r\n onValueChange={(e) => setBarangay(e.value[0] ?? \"\")}\r\n collection={barangayCollection}\r\n width=\"100%\"\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select Barangay\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {barangayOptions.map((item) => (\r\n <Select.Item item={item} key={item.value}>\r\n {item.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"street\"\r\n label=\"Street\"\r\n value={street}\r\n onChange={(e) => setStreet(e.target.value)}\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"lotNumber\"\r\n label=\"Lot #\"\r\n value={lot}\r\n onChange={(e) => setLot(e.target.value)}\r\n />\r\n </Field.Root>\r\n </SimpleGrid>\r\n </VStack>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default LifePlanApplication2;\r\n","\"use client\";\n\nimport { Box, Field, SimpleGrid, Text, VStack } from \"@chakra-ui/react\";\n\nimport React from \"react\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\nimport type { IEmployment } from \"../types/planholder\";\nimport { FloatingLabelInput } from \"./ui/floating-label-input\";\n\ninterface LifePlanApplication3Props {\n initialData?: IEmployment;\n onUpdate?: (employment: IEmployment) => void;\n}\n\nconst LifePlanApplication3 = ({\n initialData,\n onUpdate,\n}: LifePlanApplication3Props) => {\n const [formData, setFormData] = React.useState<IEmployment>({\n occupation: initialData?.occupation ?? \"Software Engineer\",\n employerName: initialData?.employerName ?? \"ABC Technologies Inc.\",\n employmentStatus: initialData?.employmentStatus ?? \"Regular\",\n officeAddress:\n initialData?.officeAddress ?? \"456 Ayala Avenue, Bel-Air, Makati City\",\n TIN: initialData?.TIN ?? \"123-456-789-000\",\n SSS: initialData?.SSS ?? \"34-1234567-8\",\n sourceOfIncome: initialData?.sourceOfIncome ?? \"Salary\",\n });\n\n const updateFormData = (nextData: IEmployment) => {\n setFormData(nextData);\n onUpdate?.(nextData);\n };\n\n return (\n <Box\n // bg={BRAND_COLORS.white}\n // borderWidth=\"1px\"\n // borderColor={BRAND_COLORS.neutralBorder}\n // borderRadius={STANDARD_RADIUS.lg}\n // boxShadow={STANDARD_SHADOWS.level1}\n p={{ base: STANDARD_SPACING.sm, md: STANDARD_SPACING.md }}\n >\n <VStack align=\"stretch\" gap={STANDARD_SPACING.md}>\n {/* <Box>\n <Text\n color={BRAND_COLORS.neutralText}\n fontSize={{ base: \"18px\", md: \"20px\" }}\n fontWeight=\"700\"\n lineHeight=\"1.3\"\n >\n Employment\n </Text>\n </Box> */}\n\n <SimpleGrid columns={{ base: 1, md: 2 }} gap={STANDARD_SPACING.sm}>\n <Field.Root>\n <FloatingLabelInput\n id=\"occupation\"\n label=\"Occupation\"\n value={formData.occupation ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, occupation: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"employerName\"\n label=\"Employer Name\"\n value={formData.employerName ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, employerName: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"employmentStatus\"\n label=\"Employment Status\"\n value={formData.employmentStatus ?? \"\"}\n onChange={(e) => {\n updateFormData({\n ...formData,\n employmentStatus: e.target.value,\n });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"officeAddress\"\n label=\"Office Address\"\n value={formData.officeAddress ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, officeAddress: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"tin\"\n label=\"TIN\"\n value={formData.TIN ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, TIN: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"sssGsis\"\n label=\"SSS\"\n value={formData.SSS ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, SSS: e.target.value });\n }}\n />\n </Field.Root>\n <Field.Root>\n <FloatingLabelInput\n id=\"otherSourceOfFund\"\n label=\"Other Source of Fund\"\n value={formData.sourceOfIncome ?? \"\"}\n onChange={(e) => {\n updateFormData({ ...formData, sourceOfIncome: e.target.value });\n }}\n />\n </Field.Root>\n </SimpleGrid>\n </VStack>\n </Box>\n );\n};\n\nexport default LifePlanApplication3;\n","import {\r\n VStack,\r\n Box,\r\n Grid,\r\n CloseButton,\r\n Dialog,\r\n HStack,\r\n Portal,\r\n createListCollection,\r\n Select,\r\n Field,\r\n Flex,\r\n Input,\r\n Stack,\r\n IconButton,\r\n useBreakpointValue,\r\n Button,\r\n} from \"@chakra-ui/react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { FaRegTrashAlt } from \"react-icons/fa\";\r\nimport { LuPencil } from \"react-icons/lu\";\r\nimport {\r\n Body,\r\n H4,\r\n DeleteSolidButton,\r\n SecondaryMdButton,\r\n PrimaryMdButton,\r\n} from \"st-peter-ui\";\r\nimport RowItem from \"./ui/row-item\";\r\nimport type { IBeneficiary } from \"../types/planholder\";\r\nimport FloatingLabelInput from \"./ui/floating-label-input\";\r\n\r\n// import {\r\n// createEmptyApplicationData,\r\n// loadApplicationDataFromLocalStorage,\r\n// saveApplicationDataToLocalStorage,\r\n// } from \"@/lib/utils/applicationDataFactory\";\r\n\r\nconst beneficiaryTypes = createListCollection({\r\n items: [\r\n { label: \"Principal\", value: \"principal\" },\r\n { label: \"Contingent\", value: \"contingent\" },\r\n ],\r\n});\r\nconst relationshipTypes = createListCollection({\r\n items: [\r\n { label: \"Spouse\", value: \"Spouse\" },\r\n { label: \"Child\", value: \"Child\" },\r\n { label: \"Parent\", value: \"Parent\" },\r\n { label: \"Sibling\", value: \"Sibling\" },\r\n { label: \"Friend\", value: \"Friend\" },\r\n ],\r\n});\r\n\r\ntype SelectedBeneficiary = {\r\n type: \"principal\" | \"contingent\";\r\n index: number;\r\n};\r\n\r\nconst ReviewRows = ({\r\n rows,\r\n}: {\r\n rows: { label: string; value?: React.ReactNode }[];\r\n}) => (\r\n <VStack align=\"stretch\" gap={1}>\r\n {rows.map((row) => (\r\n <RowItem key={row.label} label={row.label} value={row.value} />\r\n ))}\r\n </VStack>\r\n);\r\n\r\ninterface BeneficiaryProps {\r\n onUpdate?: (\r\n principal: IBeneficiary | undefined,\r\n contingent: IBeneficiary | undefined,\r\n all: IBeneficiary[],\r\n ) => void;\r\n}\r\n\r\nconst Beneficiary = ({ onUpdate }: BeneficiaryProps) => {\r\n const isMobile = useBreakpointValue({ base: true, md: false });\r\n\r\n const [principalBeneficiaries, setPrincipalBeneficiaries] = useState<\r\n IBeneficiary[]\r\n >([]);\r\n\r\n const [contingentBeneficiaries, setContingentBeneficiaries] = useState<\r\n IBeneficiary[]\r\n >([]);\r\n\r\n const [editDialogOpen, setEditDialogOpen] = useState(false);\r\n const [selectedBeneficiary, setSelectedBeneficiary] =\r\n useState<SelectedBeneficiary | null>(null);\r\n\r\n const [formBeneficiary, setFormBeneficiary] = useState<IBeneficiary>({\r\n firstName: \"\",\r\n middleInitial: \"\",\r\n lastName: \"\",\r\n birthDate: \"\",\r\n address: \"\",\r\n relationship: \"\",\r\n beneficiaryClass: \"principal\",\r\n });\r\n\r\n const [addDialogOpen, setAddDialogOpen] = useState(false);\r\n const [addFormBeneficiary, setAddFormBeneficiary] = useState<IBeneficiary>({\r\n firstName: \"\",\r\n middleInitial: \"\",\r\n lastName: \"\",\r\n birthDate: \"\",\r\n address: \"\",\r\n relationship: \"\",\r\n beneficiaryClass: \"principal\",\r\n });\r\n\r\n // const syncBeneficiaries = (\r\n // principal: IBeneficiary[],\r\n // contingent: IBeneficiary[],\r\n // ) => {\r\n // const allBeneficiaries = [...principal, ...contingent];\r\n\r\n // onUpdate?.(\r\n // principal.length > 0 ? principal[0] : undefined,\r\n // contingent.length > 0 ? contingent[0] : undefined,\r\n // allBeneficiaries,\r\n // );\r\n\r\n // const currentData =\r\n // loadApplicationDataFromLocalStorage() ?? createEmptyApplicationData();\r\n\r\n // saveApplicationDataToLocalStorage({\r\n // ...currentData,\r\n // beneficiaries: allBeneficiaries,\r\n // principalBeneficiary: principal.length > 0 ? principal[0] : undefined,\r\n // contingentBeneficiary: contingent.length > 0 ? contingent[0] : undefined,\r\n // });\r\n // };\r\n\r\n // useEffect(() => {\r\n // const timeoutId = window.setTimeout(() => {\r\n // const currentData = loadApplicationDataFromLocalStorage();\r\n // if (!currentData) return;\r\n\r\n // const storedBeneficiaries = currentData.beneficiaries ?? [];\r\n\r\n // let principalFromStorage = storedBeneficiaries.filter(\r\n // (beneficiary) => beneficiary.beneficiaryClass === \"principal\",\r\n // );\r\n // let contingentFromStorage = storedBeneficiaries.filter(\r\n // (beneficiary) => beneficiary.beneficiaryClass === \"contingent\",\r\n // );\r\n\r\n // if (storedBeneficiaries.length === 0) {\r\n // if (currentData.principalBeneficiary) {\r\n // principalFromStorage = [\r\n // {\r\n // ...currentData.principalBeneficiary,\r\n // beneficiaryClass:\r\n // currentData.principalBeneficiary.beneficiaryClass ||\r\n // \"principal\",\r\n // },\r\n // ];\r\n // }\r\n\r\n // if (currentData.contingentBeneficiary) {\r\n // contingentFromStorage = [\r\n // {\r\n // ...currentData.contingentBeneficiary,\r\n // beneficiaryClass:\r\n // currentData.contingentBeneficiary.beneficiaryClass ||\r\n // \"contingent\",\r\n // },\r\n // ];\r\n // }\r\n // }\r\n\r\n // setPrincipalBeneficiaries(principalFromStorage);\r\n // setContingentBeneficiaries(contingentFromStorage);\r\n\r\n // onUpdate?.(\r\n // principalFromStorage.length > 0 ? principalFromStorage[0] : undefined,\r\n // contingentFromStorage.length > 0 ? contingentFromStorage[0] : undefined,\r\n // [...principalFromStorage, ...contingentFromStorage],\r\n // );\r\n // }, 0);\r\n\r\n // return () => window.clearTimeout(timeoutId);\r\n // }, [onUpdate]);\r\n\r\n const handleSaveAddBeneficiary = () => {\r\n if (\r\n !addFormBeneficiary.firstName ||\r\n !addFormBeneficiary.lastName ||\r\n !addFormBeneficiary.birthDate ||\r\n !addFormBeneficiary.relationship ||\r\n !addFormBeneficiary.address\r\n ) {\r\n alert(\"Please fill in all required fields\");\r\n return;\r\n }\r\n\r\n let newPrincipal = principalBeneficiaries;\r\n let newContingent = contingentBeneficiaries;\r\n\r\n if (addFormBeneficiary.beneficiaryClass === \"principal\") {\r\n newPrincipal = [...principalBeneficiaries, addFormBeneficiary];\r\n setPrincipalBeneficiaries(newPrincipal);\r\n } else {\r\n newContingent = [...contingentBeneficiaries, addFormBeneficiary];\r\n setContingentBeneficiaries(newContingent);\r\n }\r\n\r\n setAddFormBeneficiary({\r\n firstName: \"\",\r\n middleInitial: \"\",\r\n lastName: \"\",\r\n birthDate: \"\",\r\n relationship: \"\",\r\n address: \"\",\r\n beneficiaryClass: \"principal\",\r\n });\r\n setAddDialogOpen(false);\r\n console.log(\"Beneficiary added:\", addFormBeneficiary);\r\n\r\n // syncBeneficiaries(newPrincipal, newContingent);\r\n };\r\n\r\n const formatFullName = (beneficiary: IBeneficiary) => {\r\n return [\r\n beneficiary.firstName,\r\n beneficiary.middleInitial,\r\n beneficiary.lastName,\r\n ]\r\n .filter((namePart) => namePart.trim().length > 0)\r\n .join(\" \");\r\n };\r\n\r\n const formatDateDisplay = (rawDate: string) => {\r\n if (!rawDate) return \"N/A\";\r\n const date = new Date(rawDate);\r\n if (Number.isNaN(date.getTime())) return rawDate;\r\n return date.toLocaleDateString(\"en-US\", {\r\n month: \"short\",\r\n day: \"2-digit\",\r\n year: \"numeric\",\r\n });\r\n };\r\n\r\n const handleOpenEdit = (\r\n type: \"principal\" | \"contingent\",\r\n index: number,\r\n beneficiary: IBeneficiary,\r\n ) => {\r\n setSelectedBeneficiary({ type, index });\r\n setFormBeneficiary({ ...beneficiary });\r\n setEditDialogOpen(true);\r\n };\r\n\r\n function handleDeleteBeneficiary(arg0: string, idx: number): void {\r\n throw new Error(\"Function not implemented.\");\r\n }\r\n\r\n const handleSaveEdit = () => {\r\n if (!selectedBeneficiary) return;\r\n\r\n let updatedPrincipal = principalBeneficiaries;\r\n let updatedContingent = contingentBeneficiaries;\r\n\r\n if (selectedBeneficiary.type === \"principal\") {\r\n updatedPrincipal = principalBeneficiaries.map((beneficiary, index) =>\r\n index === selectedBeneficiary.index\r\n ? { ...formBeneficiary }\r\n : beneficiary,\r\n );\r\n setPrincipalBeneficiaries(updatedPrincipal);\r\n } else {\r\n updatedContingent = contingentBeneficiaries.map((beneficiary, index) =>\r\n index === selectedBeneficiary.index\r\n ? { ...formBeneficiary }\r\n : beneficiary,\r\n );\r\n setContingentBeneficiaries(updatedContingent);\r\n }\r\n\r\n // syncBeneficiaries(updatedPrincipal, updatedContingent);\r\n\r\n setEditDialogOpen(false);\r\n setSelectedBeneficiary(null);\r\n };\r\n\r\n // const handleDeleteBeneficiary = (\r\n // type: \"principal\" | \"contingent\",\r\n // index: number,\r\n // ) => {\r\n // let updatedPrincipal = principalBeneficiaries;\r\n // let updatedContingent = contingentBeneficiaries;\r\n\r\n // if (type === \"principal\") {\r\n // updatedPrincipal = principalBeneficiaries.filter(\r\n // (_, beneficiaryIndex) => beneficiaryIndex !== index,\r\n // );\r\n // setPrincipalBeneficiaries(updatedPrincipal);\r\n // } else {\r\n // updatedContingent = contingentBeneficiaries.filter(\r\n // (_, beneficiaryIndex) => beneficiaryIndex !== index,\r\n // );\r\n // setContingentBeneficiaries(updatedContingent);\r\n // }\r\n\r\n // // syncBeneficiaries(updatedPrincipal, updatedContingent);\r\n // };\r\n\r\n return (\r\n <>\r\n <Flex\r\n justify=\"space-between\"\r\n align={{ base: \"flex-start\", md: \"center\" }}\r\n direction={{ base: \"column\", md: \"row\" }}\r\n gap={4}\r\n mb={5}\r\n >\r\n <Box>\r\n <H4>Add Your Beneficiaries</H4>\r\n <Body color=\"gray.600\">\r\n Protect your loved ones by adding beneficiaries to your plan.\r\n </Body>\r\n </Box>\r\n <Dialog.Root\r\n placement=\"center\"\r\n motionPreset=\"slide-in-bottom\"\r\n size={{ mdDown: \"full\", md: \"lg\" }}\r\n open={addDialogOpen}\r\n onOpenChange={(details) => setAddDialogOpen(details.open)}\r\n >\r\n <Dialog.Trigger asChild>\r\n <Button w={{ base: \"full\", md: \"auto\" }}>Add Beneficiary</Button>\r\n </Dialog.Trigger>\r\n <Portal>\r\n <Dialog.Backdrop />\r\n <Dialog.Positioner>\r\n <Dialog.Content mx={{ base: 3, md: 0 }}>\r\n <Dialog.Header>\r\n <Dialog.Title>Add Beneficiary</Dialog.Title>\r\n </Dialog.Header>\r\n <Dialog.Body>\r\n <VStack gap={5} w=\"full\" align=\"stretch\">\r\n {/* Row 1: Selects */}\r\n <Grid\r\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\r\n gap={4}\r\n w=\"full\"\r\n >\r\n <Select.Root\r\n collection={beneficiaryTypes}\r\n size=\"md\"\r\n value={\r\n addFormBeneficiary.beneficiaryClass\r\n ? [addFormBeneficiary.beneficiaryClass]\r\n : []\r\n }\r\n onValueChange={(details) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n beneficiaryClass:\r\n (details.value?.[0] as\r\n | \"principal\"\r\n | \"contingent\") ?? \"principal\",\r\n }))\r\n }\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select beneficiary type\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {beneficiaryTypes.items.map((beneficiaryType) => (\r\n <Select.Item\r\n item={beneficiaryType}\r\n key={beneficiaryType.value}\r\n >\r\n {beneficiaryType.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Select.Root>\r\n\r\n <Select.Root\r\n collection={relationshipTypes}\r\n size=\"md\"\r\n value={\r\n addFormBeneficiary.relationship\r\n ? [addFormBeneficiary.relationship]\r\n : []\r\n }\r\n onValueChange={(details) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n relationship: details.value?.[0] ?? \"\",\r\n }))\r\n }\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select relationship\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {relationshipTypes.items.map((relationshipType) => (\r\n <Select.Item\r\n item={relationshipType}\r\n key={relationshipType.value}\r\n >\r\n {relationshipType.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Select.Root>\r\n </Grid>\r\n\r\n {/* Row 2: Name Fields */}\r\n <Grid\r\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\r\n gap={4}\r\n w=\"full\"\r\n >\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"firstName\"\r\n type=\"text\"\r\n label=\"First Name\"\r\n value={addFormBeneficiary.firstName}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n firstName: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>\r\n This field is required\r\n </Field.ErrorText>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"lastName\"\r\n type=\"text\"\r\n label=\"Last Name\"\r\n value={addFormBeneficiary.lastName}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n lastName: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>\r\n This field is required\r\n </Field.ErrorText>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"middleInitial\"\r\n type=\"text\"\r\n label=\"Middle Initial\"\r\n value={addFormBeneficiary.middleInitial}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n middleInitial: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>\r\n This field is required\r\n </Field.ErrorText>\r\n </Field.Root>\r\n </Grid>\r\n\r\n <Field.Root>\r\n <FloatingLabelInput\r\n id=\"address\"\r\n type=\"text\"\r\n label=\"Address\"\r\n value={addFormBeneficiary.address}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n address: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>This field is required</Field.ErrorText>\r\n </Field.Root>\r\n\r\n {/* Row 3: DOB */}\r\n <Field.Root w={{ base: \"full\", md: \"300px\" }}>\r\n <Field.Label>Date of Birth</Field.Label>\r\n <Input\r\n id=\"dateOfBirth\"\r\n type=\"date\"\r\n value={addFormBeneficiary.birthDate}\r\n onChange={(e) =>\r\n setAddFormBeneficiary((prev) => ({\r\n ...prev,\r\n birthDate: e.target.value,\r\n }))\r\n }\r\n />\r\n <Field.ErrorText>This field is required</Field.ErrorText>\r\n </Field.Root>\r\n </VStack>\r\n </Dialog.Body>\r\n <Dialog.Footer>\r\n <Stack\r\n display=\"flex\"\r\n justifyContent=\"flex-end\"\r\n direction={{ base: \"row\", sm: \"row\" }}\r\n w={{ base: \"full\", sm: \"auto\" }}\r\n gap={3}\r\n >\r\n <Dialog.ActionTrigger asChild>\r\n <SecondaryMdButton>Cancel</SecondaryMdButton>\r\n </Dialog.ActionTrigger>\r\n <PrimaryMdButton onClick={handleSaveAddBeneficiary}>\r\n Save\r\n </PrimaryMdButton>\r\n </Stack>\r\n </Dialog.Footer>\r\n <Dialog.CloseTrigger asChild>\r\n <CloseButton size=\"sm\" />\r\n </Dialog.CloseTrigger>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n </Flex>\r\n\r\n <HStack justify=\"space-between\" align=\"center\" w=\"full\" mb={4}>\r\n <Body fontWeight=\"bold\">Principal Beneficiaries</Body>\r\n </HStack>\r\n\r\n {principalBeneficiaries.length === 0 ? (\r\n <Box\r\n bg=\"gray.50\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n rounded=\"xl\"\r\n px={4}\r\n py={8}\r\n textAlign=\"center\"\r\n mb={4}\r\n >\r\n <Body color=\"gray.500\">No principal beneficiaries added yet</Body>\r\n </Box>\r\n ) : (\r\n <VStack align=\"stretch\" gap={3} mb={4}>\r\n {principalBeneficiaries.map((beneficiary, idx) => (\r\n <Box\r\n key={idx}\r\n bg=\"white\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n rounded=\"xl\"\r\n px={{ base: 3, md: 4 }}\r\n py={{ base: 3, md: 4 }}\r\n >\r\n <Flex justify=\"space-between\" align=\"start\" gap={3}>\r\n <Box\r\n flex=\"1\"\r\n cursor=\"pointer\"\r\n onClick={() => handleOpenEdit(\"principal\", idx, beneficiary)}\r\n >\r\n <Body fontWeight=\"semibold\" mb={1}>\r\n {formatFullName(beneficiary)}\r\n </Body>\r\n <ReviewRows\r\n rows={[\r\n {\r\n label: \"Relationship\",\r\n value: beneficiary.relationship,\r\n },\r\n {\r\n label: \"Date of Birth\",\r\n value: formatDateDisplay(beneficiary.birthDate),\r\n },\r\n {\r\n label: \"Address\",\r\n value: beneficiary.address,\r\n },\r\n ]}\r\n />\r\n </Box>\r\n\r\n <HStack gap={2} mt={{ base: 1, md: \"auto\" }}>\r\n <IconButton\r\n aria-label=\"Edit beneficiary\"\r\n variant=\"ghost\"\r\n color=\"green.600\"\r\n onClick={() =>\r\n handleOpenEdit(\"principal\", idx, beneficiary)\r\n }\r\n >\r\n <LuPencil />\r\n </IconButton>\r\n {isMobile ? (\r\n <IconButton\r\n aria-label=\"Delete beneficiary\"\r\n variant=\"ghost\"\r\n color=\"red.500\"\r\n onClick={() => handleDeleteBeneficiary(\"principal\", idx)}\r\n >\r\n <FaRegTrashAlt />\r\n </IconButton>\r\n ) : (\r\n <DeleteSolidButton\r\n onClick={() => handleDeleteBeneficiary(\"principal\", idx)}\r\n />\r\n )}\r\n </HStack>\r\n </Flex>\r\n </Box>\r\n ))}\r\n </VStack>\r\n )}\r\n <HStack justify=\"space-between\" align=\"center\" w=\"full\" mb={4}>\r\n <Body fontWeight=\"bold\">Contingent Beneficiaries</Body>\r\n </HStack>\r\n {contingentBeneficiaries.length === 0 ? (\r\n <Box\r\n bg=\"gray.50\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n rounded=\"xl\"\r\n px={4}\r\n py={8}\r\n textAlign=\"center\"\r\n mb={4}\r\n >\r\n <Body color=\"gray.500\">No contingent beneficiaries added yet</Body>\r\n </Box>\r\n ) : (\r\n <VStack align=\"stretch\" gap={3} mb={4}>\r\n {contingentBeneficiaries.map((beneficiary, idx) => (\r\n <Box\r\n key={idx}\r\n bg=\"white\"\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n rounded=\"xl\"\r\n px={{ base: 3, md: 4 }}\r\n py={{ base: 3, md: 4 }}\r\n >\r\n <Flex justify=\"space-between\" align=\"start\" gap={3}>\r\n <Box\r\n flex=\"1\"\r\n cursor=\"pointer\"\r\n onClick={() => handleOpenEdit(\"contingent\", idx, beneficiary)}\r\n >\r\n <Body fontWeight=\"semibold\" mb={1}>\r\n {formatFullName(beneficiary)}\r\n </Body>\r\n <ReviewRows\r\n rows={[\r\n {\r\n label: \"Relationship\",\r\n value: beneficiary.relationship,\r\n },\r\n {\r\n label: \"Date of Birth\",\r\n value: formatDateDisplay(beneficiary.birthDate),\r\n },\r\n {\r\n label: \"Address\",\r\n value: beneficiary.address,\r\n },\r\n ]}\r\n />\r\n </Box>\r\n\r\n <HStack gap={2} mt={{ base: 1, md: \"auto\" }}>\r\n <IconButton\r\n aria-label=\"Edit beneficiary\"\r\n variant=\"ghost\"\r\n color=\"green.600\"\r\n onClick={() =>\r\n handleOpenEdit(\"contingent\", idx, beneficiary)\r\n }\r\n >\r\n <LuPencil />\r\n </IconButton>\r\n {isMobile ? (\r\n <IconButton\r\n aria-label=\"Delete beneficiary\"\r\n variant=\"ghost\"\r\n color=\"red.500\"\r\n onClick={() => handleDeleteBeneficiary(\"contingent\", idx)}\r\n >\r\n <FaRegTrashAlt />\r\n </IconButton>\r\n ) : (\r\n <DeleteSolidButton\r\n onClick={() => handleDeleteBeneficiary(\"contingent\", idx)}\r\n />\r\n )}\r\n </HStack>\r\n </Flex>\r\n </Box>\r\n ))}\r\n </VStack>\r\n )}\r\n\r\n <Dialog.Root\r\n placement=\"center\"\r\n open={editDialogOpen}\r\n onOpenChange={(details) => setEditDialogOpen(details.open)}\r\n size={{ mdDown: \"full\", md: \"xl\" }}\r\n >\r\n <Portal>\r\n <Dialog.Backdrop />\r\n <Dialog.Positioner>\r\n <Dialog.Content>\r\n <Dialog.Header>\r\n <Dialog.Title>Edit Beneficiary</Dialog.Title>\r\n </Dialog.Header>\r\n <Dialog.Body>\r\n <VStack align=\"stretch\" gap={4}>\r\n <Grid\r\n templateColumns={{ base: \"1fr\", md: \"repeat(2, 1fr)\" }}\r\n gap={4}\r\n >\r\n <Field.Root>\r\n <Field.Label>First Name</Field.Label>\r\n <Input\r\n value={formBeneficiary.firstName}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n firstName: e.target.value,\r\n }))\r\n }\r\n placeholder=\"Enter first name\"\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Middle Initial</Field.Label>\r\n <Input\r\n value={formBeneficiary.middleInitial}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n middleInitial: e.target.value,\r\n }))\r\n }\r\n placeholder=\"Enter middle initial\"\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Last Name</Field.Label>\r\n <Input\r\n value={formBeneficiary.lastName}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n lastName: e.target.value,\r\n }))\r\n }\r\n placeholder=\"Enter last name\"\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Birthdate</Field.Label>\r\n <Input\r\n type=\"date\"\r\n value={formBeneficiary.birthDate}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n birthDate: e.target.value,\r\n }))\r\n }\r\n />\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Relationship</Field.Label>\r\n <Select.Root\r\n collection={relationshipTypes}\r\n value={\r\n formBeneficiary.relationship\r\n ? [formBeneficiary.relationship]\r\n : []\r\n }\r\n onValueChange={(details) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n relationship: details.value?.[0] ?? \"\",\r\n }))\r\n }\r\n >\r\n <Select.HiddenSelect />\r\n <Select.Control>\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Select relationship\" />\r\n </Select.Trigger>\r\n <Select.IndicatorGroup>\r\n <Select.Indicator />\r\n </Select.IndicatorGroup>\r\n </Select.Control>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {relationshipTypes.items.map((relationshipType) => (\r\n <Select.Item\r\n item={relationshipType}\r\n key={relationshipType.value}\r\n >\r\n {relationshipType.label}\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Select.Root>\r\n </Field.Root>\r\n\r\n <Field.Root>\r\n <Field.Label>Address</Field.Label>\r\n <Input\r\n value={formBeneficiary.address}\r\n onChange={(e) =>\r\n setFormBeneficiary((prev) => ({\r\n ...prev,\r\n address: e.target.value,\r\n }))\r\n }\r\n placeholder=\"Enter address\"\r\n />\r\n </Field.Root>\r\n </Grid>\r\n </VStack>\r\n </Dialog.Body>\r\n <Dialog.Footer>\r\n <Dialog.ActionTrigger asChild>\r\n <SecondaryMdButton>Cancel</SecondaryMdButton>\r\n </Dialog.ActionTrigger>\r\n <PrimaryMdButton onClick={handleSaveEdit}>Save</PrimaryMdButton>\r\n </Dialog.Footer>\r\n <Dialog.CloseTrigger asChild>\r\n <CloseButton size=\"sm\" />\r\n </Dialog.CloseTrigger>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n </>\r\n );\r\n};\r\n\r\nexport default Beneficiary;\r\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\n\nexport const RowItem = ({\n label,\n value,\n}: {\n label: string;\n value?: React.ReactNode;\n}) => (\n <Flex align=\"center\" py={1.5} fontSize=\"sm\">\n <Text color=\"gray.500\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n <Box\n flex=\"1\"\n mx={3}\n borderBottom=\"1px dashed\"\n borderColor=\"gray.300\"\n transform=\"translateY(2px)\"\n />\n <Text fontWeight=\"medium\" textAlign=\"right\" whiteSpace=\"nowrap\">\n {value ?? \"-\"}\n </Text>\n </Flex>\n);\n\nexport default RowItem;\n","import { useState, useEffect } from \"react\";\r\nimport {\r\n VStack,\r\n Box,\r\n Accordion,\r\n Span,\r\n Checkbox,\r\n Separator,\r\n} from \"@chakra-ui/react\";\r\nimport { Body, H4 } from \"st-peter-ui\";\r\nimport { UploadFile } from \"osp-chakra-reusable-components\";\r\n// import {\r\n// loadApplicationDataFromLocalStorage,\r\n// saveApplicationDataToLocalStorage,\r\n// createEmptyApplicationData,\r\n// } from \"@/lib/utils/applicationDataFactory\";\r\n\r\nconst HealthDeclaration = () => {\r\n const [value, setValue] = useState([\"\"]);\r\n const [healthDeclarationValues, setHealthDeclarationValues] = useState({\r\n healthDeclaration1: false,\r\n healthDeclaration2: false,\r\n healthDeclaration3: false,\r\n healthDeclaration4: false,\r\n });\r\n\r\n // Load health declaration values from localStorage on mount\r\n // useEffect(() => {\r\n // let appData = loadApplicationDataFromLocalStorage();\r\n\r\n // // If no data exists, create empty application data\r\n // if (!appData) {\r\n // appData = createEmptyApplicationData();\r\n // saveApplicationDataToLocalStorage(appData);\r\n // }\r\n\r\n // if (appData && appData.healthDeclaration) {\r\n // setHealthDeclarationValues(appData.healthDeclaration);\r\n // }\r\n // }, []);\r\n\r\n // Save health declaration values to localStorage only when component unmounts\r\n // This ensures data is saved once when user navigates away from this step\r\n // useEffect(() => {\r\n // return () => {\r\n // const appData = loadApplicationDataFromLocalStorage();\r\n // if (appData) {\r\n // appData.healthDeclaration = healthDeclarationValues;\r\n // saveApplicationDataToLocalStorage(appData);\r\n // console.log(\r\n // \"Health Declaration saved to localStorage\",\r\n // healthDeclarationValues,\r\n // );\r\n // }\r\n // };\r\n // }, [healthDeclarationValues]);\r\n const items = [\r\n {\r\n value: \"first-item\",\r\n title:\r\n \"Authorization to Physician, Clinics, Hospitals, Pre-need plan and insurance companies\",\r\n text: \"ST. PETER LIFE PLAN, INC. is considering an application for coverage on my life and this serves as my authorization and request to the concerned doctor, physician or hospital, or any physician in its employ or connected/associated with it in any way, to give to ST. PETER LIFE PLAN, INC., or its authorized representative, any information which it/he may desire and which you have acquired in attending to me in a professional capacity. A photocopy of this authorization shall be as valid as the original. This authorization is in connection with my application for insurance coverage only.\",\r\n },\r\n {\r\n value: \"second-item\",\r\n title: \"Data Privacy\",\r\n text: (\r\n <>\r\n By entering into and agreeing to this valid and binding electronic and\r\n digital Life Plan Contract, the Planholder effectively consents to the\r\n collection, processing, transmission, handling and storage by St.\r\n Peter Life Plan, Inc. (including any of its subsidiaries, affiliates\r\n or its authorized third parties), of his/her Personal Data in any form\r\n whatsoever, which is necessary for the purpose of administering and\r\n servicing the Planholder’s Life Plan, and also consents and agrees to\r\n and accepts the Company’s Data Privacy Policy, all in compliance with\r\n the Data Privacy Act.\r\n <br />\r\n <br />\r\n Please read the Company’s Data Privacy Policy at{\" \"}\r\n <a\r\n href=\"https://stpeter.com.ph/privacy-policy\"\r\n target=\"_blank\"\r\n className=\"text-blue-600 underline\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n www.stpeter.com.ph/privacy-policy\r\n </a>\r\n .\r\n </>\r\n ),\r\n },\r\n {\r\n value: \"third-item\",\r\n title: \"Online Purchase Authentication\",\r\n text: (\r\n <>\r\n <Body className=\"text-start\">\r\n I fully understand that in my purchase of the Life Plan product\r\n which I have chosen, I am required to upload a clear specimen of my\r\n current and valid government issued ID and three (3) specimens of my\r\n electronic signature in order to authenticate and verify my identity\r\n before I can click the “CONTINUE” button. I am solely responsible\r\n and accountable for any misrepresentation and all other consequences\r\n arising from my uploading of the specimen signatures of my valid ID\r\n and/or electronic signature.\r\n </Body>\r\n <Body>\r\n However, I fully understand that by clicking the “CONTINUE” button,\r\n for all intents and purposes, this ultimately means that I give my\r\n express, final, irrevocable and unconditional consent to\r\n electronically and digitally purchase the Life Plan product which I\r\n have chosen and finalize my application, and that I have expressly\r\n agreed to enter into a valid and binding electronic and digital\r\n contract with St. Peter Life Plan, Inc. and its Terms and\r\n Conditions, even if I do not upload my genuine valid ID and/or\r\n electronic signature. I also hereby agree to accept and comply with\r\n the applicable and currently prescribed electronic and digital\r\n payment methods in this platform.\r\n </Body>\r\n <Body>\r\n I understand that I am solely responsible for maintaining the\r\n confidentiality of my account and password and for restricting\r\n access to my account and I accept all responsibility for all\r\n activities that occur under my account and password.\r\n </Body>\r\n </>\r\n ),\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <VStack align=\"stretch\" gap={4} mb={4}>\r\n <H4>Health Declaration</H4>\r\n <Body>\r\n Please check all the boxes that apply to you and skip the boxes that\r\n do not apply.\r\n </Body>\r\n <Body>\r\n I hereby represent and declare to the best of my knowledge that at the\r\n time of purchase of my Life Plan:\r\n </Body>\r\n </VStack>\r\n\r\n <VStack align=\"stretch\" gap={4} mb={4}>\r\n <Checkbox.Root\r\n checked={healthDeclarationValues.healthDeclaration1}\r\n onCheckedChange={(details) =>\r\n setHealthDeclarationValues((prev) => ({\r\n ...prev,\r\n healthDeclaration1: details.checked === true,\r\n }))\r\n }\r\n >\r\n <Checkbox.HiddenInput />\r\n <Checkbox.Control />\r\n <Checkbox.Label>\r\n I am between 18 years and 60 years old (not beyond my 60th\r\n birthday).\r\n </Checkbox.Label>\r\n </Checkbox.Root>\r\n <Checkbox.Root\r\n checked={healthDeclarationValues.healthDeclaration2}\r\n onCheckedChange={(details) =>\r\n setHealthDeclarationValues((prev) => ({\r\n ...prev,\r\n healthDeclaration2: details.checked === true,\r\n }))\r\n }\r\n >\r\n <Checkbox.HiddenInput />\r\n <Checkbox.Control />\r\n <Checkbox.Label>\r\n I possess sound health and am able to perform the normal activities\r\n in pursuit of my livelihood.\r\n </Checkbox.Label>\r\n </Checkbox.Root>\r\n <Checkbox.Root\r\n checked={healthDeclarationValues.healthDeclaration3}\r\n onCheckedChange={(details) =>\r\n setHealthDeclarationValues((prev) => ({\r\n ...prev,\r\n healthDeclaration3: details.checked === true,\r\n }))\r\n }\r\n >\r\n <Checkbox.HiddenInput />\r\n <Checkbox.Control />\r\n <Checkbox.Label>\r\n I have not consulted any physician for heart condition,\r\n hypertension, cancer, diabetes, lungs, kidneys or intestinal\r\n disorder, tuberculosis, or any other physical impairment nor have I\r\n been confined in a hospital/clinic and received any medical or\r\n surgical attention.\r\n </Checkbox.Label>\r\n </Checkbox.Root>\r\n <Checkbox.Root\r\n checked={healthDeclarationValues.healthDeclaration4}\r\n onCheckedChange={(details) =>\r\n setHealthDeclarationValues((prev) => ({\r\n ...prev,\r\n healthDeclaration4: details.checked === true,\r\n }))\r\n }\r\n >\r\n <Checkbox.HiddenInput />\r\n <Checkbox.Control />\r\n <Checkbox.Label>\r\n I understand and agree that I am INSURABLE based on the above-stated\r\n representations.\r\n </Checkbox.Label>\r\n </Checkbox.Root>\r\n <Box mt={4}>\r\n <Body>Please attach medical results here:</Body>\r\n </Box>\r\n\r\n <UploadFile />\r\n <VStack align=\"stretch\" gap={2} mt={6}>\r\n <Body>\r\n I also understand and agree that the issuance of the Life Plan and\r\n the corresponding benefits are based on the truth of my above-stated\r\n representations.\r\n </Body>\r\n <Body>\r\n Any false statements as regards my age or health as above-stated may\r\n render the Life Plan Contract rescissible.\r\n </Body>\r\n <Body>\r\n I further agree that this contract and the declarations I have given\r\n above shall be the basis of the Life Plan Contract between the\r\n company and me and shall be deemed to be an integral part of the\r\n Life Plan Contract, subject to the terms and conditions stated in\r\n the Life Plan Contract.\r\n </Body>\r\n </VStack>\r\n <Separator />\r\n <Box textAlign=\"start\">\r\n <H4>Terms and Conditions</H4>\r\n </Box>\r\n <Box textAlign=\"start\">\r\n <Body>\r\n Please read the terms and conditions of St .Peter Life Plan and\r\n upload the necessary documents to proceed with the purchase.\r\n </Body>\r\n </Box>\r\n <Accordion.Root\r\n value={value}\r\n onValueChange={(e) => setValue(e.value)}\r\n collapsible\r\n >\r\n {items.map((item, index) => (\r\n <Accordion.Item key={index} value={item.value}>\r\n <Accordion.ItemTrigger>\r\n <Body>\r\n <Span fontWeight=\"semibold\">{item.title}</Span>\r\n </Body>\r\n <Accordion.ItemIndicator />\r\n </Accordion.ItemTrigger>\r\n <Accordion.ItemContent>\r\n <Accordion.ItemBody>{item.text}</Accordion.ItemBody>\r\n </Accordion.ItemContent>\r\n </Accordion.Item>\r\n ))}\r\n </Accordion.Root>\r\n </VStack>\r\n </>\r\n );\r\n};\r\n\r\nexport default HealthDeclaration;\r\n","\"use client\";\n\nimport LifePlanApplication1 from \"./LifePlanApplication1\";\nimport LifePlanApplication2 from \"./LifePlanApplication2\";\nimport LifePlanApplication3 from \"./LifePlanApplication3\";\nimport { Box, Flex, Icon, VStack } from \"@chakra-ui/react\";\nimport { FaRegAddressCard, FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport { LuChevronsDown, LuChevronsUp } from \"react-icons/lu\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nimport { TertiarySmButton } from \"st-peter-ui\";\nimport type {\n IAddress,\n IApplicationData,\n IEmployment,\n IPersonalInfo,\n} from \"../types/planholder\";\nimport {\n createEmptyApplicationData,\n loadApplicationDataFromLocalStorage,\n saveApplicationDataToLocalStorage,\n} from \"../lib/applicationData\";\nimport InfoCard from \"./ui/info-card\";\nimport { InputCardAccordion } from \"./ui/input-card-accordion\";\nimport { STANDARD_SPACING } from \"../lib/theme/standard-design-tokens\";\n\nconst hasText = (value: unknown) => String(value ?? \"\").trim() !== \"\";\n\nconst isPersonalComplete = (p?: IPersonalInfo) =>\n !!p &&\n [\n p.idType,\n p.idNumber,\n p.lastName,\n p.firstName,\n p.birthDate,\n p.gender,\n p.civilStatus,\n p.nationality,\n p.mobileNumber,\n p.emailAddress,\n p.mailingAddress,\n ].every(hasText) &&\n Number(p.height) > 0 &&\n Number(p.weight) > 0;\n\nconst isAddressComplete = (a?: IAddress) =>\n !!a &&\n [a.province, a.city, a.district, a.barangay, a.street, a.lot].every(hasText);\n\nconst isEmploymentComplete = (e?: IEmployment) =>\n !!e &&\n [\n e.occupation,\n e.employerName,\n e.employmentStatus,\n e.officeAddress,\n e.TIN,\n e.SSS,\n e.sourceOfIncome,\n ].every(hasText);\n\nconst LifePlanApplicationFormWrapper = ({\n openSection,\n openSectionKey,\n onValidChange,\n}: {\n openSection?: string;\n openSectionKey?: number;\n onValidChange?: (valid: boolean) => void;\n}) => {\n const [applicationData, setApplicationData] = useState<IApplicationData>(\n createEmptyApplicationData,\n );\n const [hydrated, setHydrated] = useState(false);\n const [openSections, setOpenSections] = useState<string[]>([\"personal\"]);\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => {\n const saved = loadApplicationDataFromLocalStorage();\n if (saved) setApplicationData(saved);\n setHydrated(true);\n }, 0);\n\n return () => window.clearTimeout(timeoutId);\n }, []);\n\n useEffect(() => {\n if (!hydrated) return;\n saveApplicationDataToLocalStorage(applicationData);\n }, [applicationData, hydrated]);\n\n const isComplete =\n isPersonalComplete(applicationData.personalInfo) &&\n isAddressComplete(applicationData.address);\n\n useEffect(() => {\n onValidChange?.(isComplete);\n }, [isComplete, onValidChange]);\n\n useEffect(() => {\n if (!openSection) return;\n\n const timer = window.setTimeout(() => {\n setOpenSections((prev) =>\n prev.includes(openSection) ? prev : [...prev, openSection],\n );\n document\n .getElementById(`app-section-${openSection}`)\n ?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n }, 80);\n\n return () => window.clearTimeout(timer);\n }, [openSection, openSectionKey]);\n\n const handlePersonalInfoUpdate = useCallback(\n (personalInfo: IPersonalInfo) => {\n setApplicationData((prev) => ({\n ...prev,\n personalInfo,\n }));\n },\n [],\n );\n\n const handleAddressUpdate = useCallback((address: IAddress) => {\n setApplicationData((prev) => ({\n ...prev,\n address,\n }));\n }, []);\n\n const handleEmploymentUpdate = useCallback((employment: IEmployment) => {\n setApplicationData((prev) => ({\n ...prev,\n employment,\n }));\n }, []);\n\n const sections = [\n {\n icon: FaRegUser,\n label: \"Personal Info\",\n description: \"Identification and full name\",\n value: \"personal\",\n complete: isPersonalComplete(applicationData.personalInfo),\n page: (\n <LifePlanApplication1\n initialData={applicationData.personalInfo}\n onUpdate={handlePersonalInfoUpdate}\n />\n ),\n },\n {\n icon: FaRegAddressCard,\n label: \"Address\",\n description: \"Where you currently live\",\n value: \"address\",\n complete: isAddressComplete(applicationData.address),\n page: <LifePlanApplication2 onAddressUpdate={handleAddressUpdate} />,\n },\n {\n icon: IoIosInformationCircleOutline,\n label: \"Employment\",\n description: \"Work and income details\",\n value: \"employment\",\n complete: isEmploymentComplete(applicationData.employment),\n page: (\n <LifePlanApplication3\n initialData={applicationData.employment}\n onUpdate={handleEmploymentUpdate}\n />\n ),\n },\n ];\n\n const expandAll = () => setOpenSections(sections.map((s) => s.value));\n const collapseAll = () => setOpenSections([]);\n const toggleSection = (value: string) => {\n setOpenSections((prev) =>\n prev.includes(value)\n ? prev.filter((sectionValue) => sectionValue !== value)\n : [...prev, value],\n );\n };\n\n return (\n <Box w=\"full\">\n <Flex\n direction={{ base: \"column\", sm: \"row\" }}\n align={{ base: \"stretch\", sm: \"center\" }}\n justify=\"space-between\"\n gap={STANDARD_SPACING.sm}\n mb={STANDARD_SPACING.sm}\n >\n <Flex direction=\"column\" gap={STANDARD_SPACING.xs}>\n <InfoCard>\n Sections below are expandable and collapsible. Use them to focus\n only on relevant details.\n </InfoCard>\n <Flex gap={STANDARD_SPACING.xs} justify=\"flex-end\">\n <TertiarySmButton onClick={expandAll}>\n <LuChevronsDown size={14} />\n Expand All\n </TertiarySmButton>\n <TertiarySmButton onClick={collapseAll}>\n <LuChevronsUp size={14} />\n Collapse All\n </TertiarySmButton>\n </Flex>\n </Flex>\n </Flex>\n\n <VStack align=\"stretch\" gap={2}>\n {sections.map((section) => (\n <Box\n key={section.value}\n id={`app-section-${section.value}`}\n scrollMarginTop=\"80px\"\n >\n <InputCardAccordion\n icon={<Icon as={section.icon} boxSize=\"18px\" />}\n title={section.label}\n subtitle={section.description}\n isOpen={openSections.includes(section.value)}\n onToggle={() => toggleSection(section.value)}\n isComplete={section.complete}\n >\n {hydrated ? section.page : null}\n </InputCardAccordion>\n </Box>\n ))}\n </VStack>\n </Box>\n );\n};\n\nexport default LifePlanApplicationFormWrapper;\n","import type { IApplicationData } from \"../types/planholder\";\n\nconst LIFE_PLAN_APPLICATION_KEY = \"LifePlanApplication\";\n\nexport const createEmptyApplicationData = (): IApplicationData => ({\n personalInfo: {\n firstName: \"\",\n middleName: \"\",\n lastName: \"\",\n suffix: \"\",\n birthDate: \"\",\n idType: \"\",\n idNumber: \"\",\n height: 0,\n weight: 0,\n gender: \"\",\n civilStatus: \"\",\n nationality: \"\",\n mobileNumber: \"\",\n emailAddress: \"\",\n mailingAddress: \"\",\n landLineNumber: \"\",\n },\n address: {\n lot: \"\",\n street: \"\",\n barangay: \"\",\n district: \"\",\n city: \"\",\n province: \"\",\n },\n employment: {\n occupation: \"\",\n employerName: \"\",\n employmentStatus: \"\",\n officeAddress: \"\",\n TIN: \"\",\n SSS: \"\",\n sourceOfIncome: \"\",\n },\n beneficiaries: [],\n healthDeclaration: {\n healthDeclaration1: false,\n healthDeclaration2: false,\n healthDeclaration3: false,\n healthDeclaration4: false,\n },\n});\n\nexport const loadApplicationDataFromLocalStorage = (\n storageKey = LIFE_PLAN_APPLICATION_KEY,\n): IApplicationData | null => {\n if (typeof window === \"undefined\") return null;\n\n try {\n const stored = window.localStorage.getItem(storageKey);\n return stored ? (JSON.parse(stored) as IApplicationData) : null;\n } catch {\n return null;\n }\n};\n\nexport const saveApplicationDataToLocalStorage = (\n data: IApplicationData,\n storageKey = LIFE_PLAN_APPLICATION_KEY,\n) => {\n if (typeof window === \"undefined\") return;\n window.localStorage.setItem(storageKey, JSON.stringify(data));\n};\n","\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { Box, HStack, Text } from \"@chakra-ui/react\";\nimport { HiInformationCircle } from \"react-icons/hi\";\nimport type { IconType } from \"react-icons\";\n\ninterface InfoCardProps {\n children: ReactNode;\n icon?: IconType;\n}\n\nexport const InfoCard = ({\n children,\n icon = HiInformationCircle,\n}: InfoCardProps) => {\n return (\n <HStack\n gap={3}\n align=\"center\"\n p=\"8px\"\n borderRadius=\"md\"\n bg=\"#ebf4fb\"\n borderWidth=\"1px\"\n borderColor=\"#1976d2\"\n color=\"#0b3d2e\"\n >\n <Box as={icon} boxSize=\"20px\" color=\"#1976d2\" flexShrink={0} />\n <Text color=\"#1976d2\" fontSize=\"xs\">\n {children}\n </Text>\n </HStack>\n );\n};\n\nexport default InfoCard;\n","\"use client\";\r\n\r\nimport { Box, Flex, Text } from \"@chakra-ui/react\";\r\nimport React, { useState } from \"react\";\r\nimport { LuCheck, LuChevronDown, LuChevronUp, LuHash } from \"react-icons/lu\";\r\n\r\ninterface InputCardAccordionProps {\r\n icon: React.ReactNode;\r\n openedIcon?: React.ReactNode;\r\n title: string;\r\n subtitle?: string;\r\n children?: React.ReactNode;\r\n defaultOpen?: boolean;\r\n isOpen?: boolean;\r\n onToggle?: () => void;\r\n isComplete?: boolean;\r\n}\r\n\r\nexport function InputCardAccordion({\r\n icon,\r\n openedIcon,\r\n title,\r\n subtitle,\r\n children,\r\n defaultOpen = false,\r\n isOpen: controlledOpen,\r\n onToggle,\r\n isComplete,\r\n}: InputCardAccordionProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : internalOpen;\r\n\r\n const toggle = () => {\r\n if (isControlled) {\r\n onToggle?.();\r\n } else {\r\n setInternalOpen((prev: boolean) => !prev);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n toggle();\r\n }\r\n };\r\n\r\n const activeIcon = isOpen && openedIcon ? openedIcon : icon;\r\n\r\n return (\r\n <Box\r\n w=\"full\"\r\n position=\"relative\"\r\n p={1}\r\n borderRadius=\"2xl\"\r\n bg=\"white\"\r\n shadow=\"sm\"\r\n transition=\"all 0.25s ease\"\r\n _hover={{ transform: \"translateY(-3px)\", shadow: \"lg\" }}\r\n overflow=\"hidden\"\r\n cursor=\"pointer\"\r\n >\r\n <Flex\n align=\"center\"\r\n justify=\"space-between\"\r\n px={4}\r\n py={3}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n aria-expanded={isOpen}\r\n onClick={toggle}\r\n onKeyDown={handleKeyDown}\r\n _hover={{ bg: \"gray.50\" }}\r\n transition=\"background 0.15s ease\"\r\n >\r\n <Flex align=\"center\" gap={2}>\r\n <Box\r\n p={2}\r\n borderRadius=\"full\"\r\n bg={\"gray.100\"}\r\n color={\"inherit\"}\r\n transition=\"background 0.2s ease, color 0.2s ease\"\r\n >\r\n {activeIcon}\r\n </Box>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\" lineHeight=\"1.2\">\r\n {title}\r\n </Text>\r\n <Flex align=\"center\" gap={1} fontSize=\"xs\" color=\"gray.500\">\r\n <LuHash size={12} />\r\n <Text>{subtitle}</Text>\r\n </Flex>\r\n </Box>\r\n </Flex>\r\n\r\n <Flex align=\"center\" gap={1.5} flexShrink={0}>\n {isComplete && (\r\n <Box color=\"green.500\">\r\n <LuCheck size={16} />\r\n </Box>\r\n )}\r\n <Box color=\"gray.400\">\r\n {isOpen ? <LuChevronUp size={16} /> : <LuChevronDown size={16} />}\r\n </Box>\r\n </Flex>\r\n </Flex>\r\n\r\n {isOpen && children && (\n <Box p={4} borderTopWidth={1} borderColor=\"gray.100\">\r\n {children}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n","\"use client\";\n\nimport { Box } from \"@chakra-ui/react\";\n\nimport { useState } from \"react\";\nimport { createLifePlanSteps } from \"./data/lifePlanSteps\";\nimport HorizontalStepper from \"./ui/horizontal-stepper\";\n// import { CartItem } from \"@/types/cartItem\";\n// // import {\n// TransactionService,\n// PayMongoService,\n// } from \"@/services/API/PayMongoService\";\n// import {\n// createEmptyApplicationData,\n// loadApplicationDataFromLocalStorage,\n// } from \"@/lib/utils/applicationDataFactory\";\n// import Page from \"@/components/layout/page/Page\";\n\ntype SharedLifePlanApplicationProps = {\n title?: string;\n description?: string;\n onPaymentError?: (error: unknown) => void;\n};\n\nconst safeParse = <T,>(value: string | null): T | null => {\n if (!value) return null;\n\n try {\n return JSON.parse(value) as T;\n } catch {\n return null;\n }\n};\n\nconst SharedLifePlanApplication = ({\n title = \"Life Plan Application\",\n description = \"Please fill out the form below to apply for a life plan.\",\n onPaymentError,\n}: SharedLifePlanApplicationProps) => {\n const [currentStep, setCurrentStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [allAgreementsAccepted, setAllAgreementsAccepted] = useState(false);\n const [applicationSection, setApplicationSection] = useState<string>();\n const [applicationSectionKey, setApplicationSectionKey] = useState(0);\n const [applicationValid, setApplicationValid] = useState(false);\n\n const steps = createLifePlanSteps({\n onAllAcceptedChange: setAllAgreementsAccepted,\n ...(applicationSection ? { applicationSection } : {}),\n applicationSectionKey,\n onApplicationValidChange: setApplicationValid,\n onEdit: (section?: string) => {\n setApplicationSection(section ?? \"personal\");\n setApplicationSectionKey((key) => key + 1);\n setCurrentStep(0);\n },\n });\n\n const nextDisabled = currentStep === 0 && !applicationValid;\n\n const handleCheckout = async () => {\n if (!allAgreementsAccepted) return;\n setLoading(true);\n\n // try {\n // const checkoutRaw = sessionStorage.getItem(\"CheckoutCart\");\n // const cartRaw = sessionStorage.getItem(\"Cart\");\n\n // const parsed =\n // safeParse<CartItem | CartItem[]>(checkoutRaw) ??\n // safeParse<CartItem | CartItem[]>(cartRaw);\n\n // const items: CartItem[] = Array.isArray(parsed)\n // ? parsed\n // : parsed\n // ? [parsed]\n // : [];\n\n // if (items.length === 0) {\n // throw new Error(\"No items to checkout\");\n // }\n\n // const applicationData =\n // loadApplicationDataFromLocalStorage() ?? createEmptyApplicationData();\n\n // await TransactionService.insert(applicationData);\n\n // const checkoutPayload = items.map((item) => ({\n // planDesc: item.planDesc,\n // ipInstAmt: Number(item.price),\n // planTerm: item.planTerm,\n // quantity: item.quantity ?? 1,\n // }));\n // const { checkoutUrl } =\n // await PayMongoService.createCheckout(checkoutPayload);\n\n // if (!checkoutUrl) throw new Error(\"Checkout URL not found\");\n\n // window.location.href = checkoutUrl;\n // } catch (error) {\n // console.error(error);\n // onPaymentError?.(error);\n // alert(\"Failed to proceed to payment\");\n // } finally {\n // setLoading(false);\n // }\n };\n\n return (\n <Box w=\"full\" overflowX=\"hidden\">\n <HorizontalStepper\n steps={steps}\n activeStep={currentStep}\n onStepChange={setCurrentStep}\n onSubmit={handleCheckout}\n submitDisabled={!allAgreementsAccepted || loading}\n nextDisabled={nextDisabled}\n />\n </Box>\n );\n};\n\nexport default SharedLifePlanApplication;\n","import { FaClipboardCheck, FaFileSignature, FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport type { ConfirmationProps } from \"../confirmation\";\nimport LifePlanApplicationFormWrapper from \"../LifePlanApplicationFormWrapper\";\nimport HealthDeclaration from \"../HealthDeclaration\";\nimport Confirmation from \"../confirmation\";\nimport Beneficiary from \"../beneficiary\";\n\nexport const createLifePlanSteps = (\n confirmationProps?: ConfirmationProps & {\n onEdit?: (section?: string) => void;\n applicationSection?: string;\n applicationSectionKey?: number;\n onApplicationValidChange?: (valid: boolean) => void;\n },\n) => [\n {\n id: \"1\",\n header: \"Life Plan Application\",\n title: \"Application\",\n description: \"Complete the application form\",\n icon: FaFileSignature,\n component: (() => {\n const applicationFormWrapperProps: {\n openSection?: string;\n openSectionKey?: number;\n onValidChange?: (valid: boolean) => void;\n } = {};\n\n if (confirmationProps?.applicationSection !== undefined) {\n applicationFormWrapperProps.openSection =\n confirmationProps.applicationSection;\n }\n\n if (confirmationProps?.applicationSectionKey !== undefined) {\n applicationFormWrapperProps.openSectionKey =\n confirmationProps.applicationSectionKey;\n }\n\n if (confirmationProps?.onApplicationValidChange !== undefined) {\n applicationFormWrapperProps.onValidChange =\n confirmationProps.onApplicationValidChange;\n }\n\n return (\n <LifePlanApplicationFormWrapper {...applicationFormWrapperProps} />\n );\n })(),\n },\n\n {\n id: \"2\",\n header: \"Beneficiary Details\",\n title: \"Beneficiary\",\n description: \"Add Beneficiary Details\",\n icon: FaRegUser,\n component: <Beneficiary />,\n },\n {\n id: \"3\",\n header: \"Health Declaration & Terms and Conditions\",\n title: \"Terms\",\n description: \"Health Declaration & Terms and Conditions\",\n icon: FaClipboardCheck,\n component: <HealthDeclaration />,\n },\n // {\n // id: \"4\",\n // header: \"Upload Requirements\",\n // title: \"Requirements\",\n // description: \"Upload Requirements\",\n // component: <Requirements />,\n // },\n {\n id: \"4\",\n header: \"Review Summary\",\n title: \"Summary\",\n description: \"Review and confirm your application\",\n icon: IoIosInformationCircleOutline,\n component: <Confirmation {...confirmationProps} />,\n },\n // {\n // id: \"5\",\n // header: \"Payment\",\n // title: \"Payment\",\n // description: \"Review and confirm your application\",\n // component: <Payment />,\n // },\n];\n","\"use client\";\n\nimport {\n Badge,\n Box,\n CloseButton,\n Dialog,\n Flex,\n HStack,\n Icon,\n Portal,\n Text,\n VStack,\n} from \"@chakra-ui/react\";\nimport { CancelButton, ConfirmButton, H3 } from \"st-peter-ui\";\nimport { FaRegAddressCard } from \"react-icons/fa6\";\nimport { FaRegUser } from \"react-icons/fa\";\nimport { IoIosInformationCircleOutline } from \"react-icons/io\";\nimport { useEffect, useState } from \"react\";\nimport type { IconType } from \"react-icons\";\nimport type { CartItem } from \"../types/cartItem\";\nimport type { ITransactionData } from \"../types/planholder\";\nimport { checkboxList } from \"./data/checkBoxList\";\nimport { InfoCardAccordion } from \"./ui/info-card-accordion\";\nimport RowItem from \"./ui/row-item\";\n\nexport type ConfirmationProps = {\n onAllAcceptedChange?: (allAccepted: boolean) => void;\n onEdit?: (section?: string) => void;\n};\n\nconst modeLabel = (mode?: string) => {\n switch (mode) {\n case \"M\":\n return \"Monthly\";\n case \"Q\":\n return \"Quarterly\";\n case \"S\":\n return \"Semi-Annual\";\n case \"A\":\n return \"Annual\";\n case \"C\":\n return \"Cash\";\n default:\n return mode || \"-\";\n }\n};\n\ntype TabItem = {\n icon: IconType;\n label: string;\n subtitle?: string;\n value: string;\n page: React.ReactNode;\n};\n\nconst ApplicationAccordion = ({\n items,\n onEdit,\n}: {\n items: TabItem[];\n onEdit?: (section?: string) => void;\n}) => {\n return (\n <VStack align=\"stretch\" gap={3}>\n {items.map((item, index) => (\n <InfoCardAccordion\n key={item.value}\n icon={<Icon as={item.icon} boxSize=\"18px\" />}\n title={item.label}\n {...(item.subtitle !== undefined ? { subtitle: item.subtitle } : {})}\n defaultOpen={index === 0}\n onEdit={() => onEdit?.(item.value)}\n >\n {item.page}\n </InfoCardAccordion>\n ))}\n </VStack>\n );\n};\n\nconst ReviewRows = ({\n rows,\n}: {\n rows: { label: string; value?: React.ReactNode }[];\n}) => (\n <VStack align=\"stretch\" gap={1}>\n {rows.map((row) => (\n <RowItem key={row.label} label={row.label} value={row.value} />\n ))}\n </VStack>\n);\n\nconst Confirmation = ({ onAllAcceptedChange, onEdit }: ConfirmationProps) => {\n const [cartItems, setCartItems] = useState<CartItem[] | null>(null);\n const [lifePlanApplication, setLifePlanApplication] =\n useState<ITransactionData | null>(null);\n const [openDialog, setOpenDialog] = useState(false);\n const [pendingCheck, setPendingCheck] = useState<number | null>(null);\n const [acceptedAgreements, setAcceptedAgreements] = useState<boolean[]>(() =>\n checkboxList.map(() => false),\n );\n\n useEffect(() => {\n const loadStoredData = () => {\n try {\n const checkoutStored = sessionStorage.getItem(\"CheckoutCart\");\n const cartStored = sessionStorage.getItem(\"Cart\");\n const lifePlanApplicationStored = localStorage.getItem(\n \"LifePlanApplication\",\n );\n\n const parsedApplicationData = lifePlanApplicationStored\n ? (JSON.parse(lifePlanApplicationStored) as ITransactionData)\n : null;\n\n setLifePlanApplication(parsedApplicationData);\n\n if (checkoutStored) {\n const parsedCheckout = JSON.parse(checkoutStored);\n setCartItems(\n Array.isArray(parsedCheckout) ? parsedCheckout : [parsedCheckout],\n );\n return;\n }\n\n if (cartStored) {\n const parsedCart = JSON.parse(cartStored);\n setCartItems(Array.isArray(parsedCart) ? parsedCart : []);\n } else {\n setCartItems([]);\n }\n } catch (e) {\n console.error(\"Failed to read Cart from sessionStorage\", e);\n setCartItems([]);\n }\n };\n\n const timeoutId = window.setTimeout(loadStoredData, 0);\n\n return () => window.clearTimeout(timeoutId);\n }, []);\n\n const selectedPlan = cartItems && cartItems.length > 0 ? cartItems[0] : null;\n\n const acceptedCount = acceptedAgreements.filter(Boolean).length;\n const allAccepted =\n checkboxList.length > 0 && acceptedCount === checkboxList.length;\n\n const pendingAgreement =\n pendingCheck !== null ? checkboxList[pendingCheck] : null;\n\n useEffect(() => {\n onAllAcceptedChange?.(allAccepted);\n }, [allAccepted, onAllAcceptedChange]);\n\n const beneficiaries = [\n {\n name: \"John Doe\",\n relationship: \"Relative\",\n dob: \"1990-11-02\",\n address: \"Sample Street, Sample Barangay, Sample City\",\n },\n {\n name: \"Jane Smith\",\n relationship: \"Relative\",\n dob: \"1992-04-15\",\n address: \"Sample Avenue, Sample District, Sample City\",\n },\n ];\n\n const confirmAgreement = () => {\n if (pendingCheck === null) return;\n setAcceptedAgreements((prev) => {\n const copy = [...prev];\n copy[pendingCheck] = true;\n return copy;\n });\n setOpenDialog(false);\n setPendingCheck(null);\n };\n\n return (\n <Box minH=\"100vh\">\n <Box px={{ base: 0, md: 8 }} pb={{ base: 4, md: 8 }}>\n <VStack align=\"stretch\" gap={3}>\n <InfoCardAccordion\n icon={<Icon as={IoIosInformationCircleOutline} boxSize=\"18px\" />}\n title=\"Order Summary\"\n subtitle={modeLabel(selectedPlan?.mode)}\n defaultOpen\n >\n <ReviewRows\n rows={[\n {\n label: \"Selected Plan\",\n value: selectedPlan?.planDesc,\n },\n {\n label: \"Quantity\",\n value: selectedPlan?.quantity,\n },\n {\n label: \"Total Amount Payable\",\n value: selectedPlan\n ? `\\u20b1 ${selectedPlan.total}`\n : undefined,\n },\n ]}\n />\n </InfoCardAccordion>\n\n <ApplicationAccordion\n onEdit={onEdit ?? (() => {})}\n items={[\n {\n icon: FaRegUser,\n label: \"Personal Info\",\n subtitle: \"Identification and full name\",\n value: \"personal\",\n page: (\n <ReviewRows\n rows={[\n {\n label: \"Uploaded ID\",\n value: lifePlanApplication?.personalInfo.idType,\n },\n {\n label: \"Last Name\",\n value: lifePlanApplication?.personalInfo.lastName,\n },\n {\n label: \"First Name\",\n value: lifePlanApplication?.personalInfo.firstName,\n },\n {\n label: \"Middle Name\",\n value: lifePlanApplication?.personalInfo.middleName,\n },\n {\n label: \"Suffix\",\n value: lifePlanApplication?.personalInfo.suffix,\n },\n {\n label: \"Date of Birth\",\n value: lifePlanApplication?.personalInfo.birthDate,\n },\n {\n label: \"Gender\",\n value: lifePlanApplication?.personalInfo.gender,\n },\n {\n label: \"Contact Number\",\n value: lifePlanApplication?.personalInfo.mobileNumber,\n },\n {\n label: \"Email\",\n value: lifePlanApplication?.personalInfo.emailAddress,\n },\n {\n label: \"Landline Number\",\n value: lifePlanApplication?.personalInfo.landLineNumber,\n },\n {\n label: \"Mailing Address\",\n value: lifePlanApplication?.personalInfo.mailingAddress,\n },\n {\n label: \"Civil Status\",\n value: lifePlanApplication?.personalInfo.civilStatus,\n },\n ]}\n />\n ),\n },\n {\n icon: FaRegAddressCard,\n label: \"Address\",\n subtitle: \"Where you currently live\",\n value: \"address\",\n page: (\n <ReviewRows\n rows={[\n {\n label: \"Lot #\",\n value: lifePlanApplication?.address.lot,\n },\n {\n label: \"Street\",\n value: lifePlanApplication?.address.street,\n },\n {\n label: \"Barangay\",\n value: lifePlanApplication?.address.barangay,\n },\n {\n label: \"City\",\n value: lifePlanApplication?.address.city,\n },\n {\n label: \"Province\",\n value: lifePlanApplication?.address.province,\n },\n ]}\n />\n ),\n },\n {\n icon: IoIosInformationCircleOutline,\n label: \"Employment\",\n subtitle: \"Work and income details\",\n value: \"employment\",\n page: (\n <ReviewRows\n rows={[\n {\n label: \"Occupation\",\n value: lifePlanApplication?.employment.occupation,\n },\n {\n label: \"Employer Name\",\n value: lifePlanApplication?.employment.employerName,\n },\n {\n label: \"Employment Status\",\n value: lifePlanApplication?.employment.employmentStatus,\n },\n {\n label: \"Office Address\",\n value: lifePlanApplication?.employment.officeAddress,\n },\n {\n label: \"TIN\",\n value: lifePlanApplication?.employment.TIN,\n },\n {\n label: \"SSS/GSIS\",\n value: lifePlanApplication?.employment.SSS,\n },\n {\n label: \"Source of Income\",\n value: lifePlanApplication?.employment.sourceOfIncome,\n },\n ]}\n />\n ),\n },\n ]}\n />\n\n <InfoCardAccordion\n icon={<Icon as={FaRegUser} boxSize=\"18px\" />}\n title=\"Beneficiaries\"\n subtitle={`${beneficiaries.length} listed`}\n >\n <VStack align=\"stretch\" gap={4}>\n {beneficiaries.map((beneficiary, index) => (\n <Box key={`${beneficiary.name}-${index}`}>\n <Text fontWeight=\"semibold\" fontSize=\"sm\" mb={1}>\n {beneficiary.name}\n </Text>\n <ReviewRows\n rows={[\n {\n label: \"Relationship\",\n value: beneficiary.relationship,\n },\n {\n label: \"Date of Birth\",\n value: beneficiary.dob,\n },\n {\n label: \"Address\",\n value: beneficiary.address,\n },\n ]}\n />\n </Box>\n ))}\n </VStack>\n </InfoCardAccordion>\n\n <InfoCardAccordion\n icon={<Icon as={IoIosInformationCircleOutline} boxSize=\"18px\" />}\n title=\"Agreements\"\n subtitle={`${acceptedCount}/${checkboxList.length} accepted`}\n >\n <VStack align=\"stretch\" gap={3}>\n {checkboxList.map((item, index) => {\n const isAccepted = acceptedAgreements[index];\n\n return (\n <Box\n key={index}\n role=\"button\"\n tabIndex={0}\n p={4}\n borderWidth=\"1px\"\n rounded=\"xl\"\n bg={isAccepted ? \"green.50\" : \"gray.50\"}\n transition=\"all 0.15s ease\"\n _hover={{ bg: isAccepted ? \"green.100\" : \"gray.100\" }}\n onClick={() => {\n setPendingCheck(index);\n setOpenDialog(true);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setPendingCheck(index);\n setOpenDialog(true);\n }\n }}\n >\n <Flex justify=\"space-between\" align=\"start\" gap={4}>\n <Box flex=\"1\" minW={0}>\n <Text fontWeight=\"semibold\" lineClamp={2}>\n {item.checkBoxTitle}.\n </Text>\n\n <Text\n fontSize=\"sm\"\n color=\"gray.600\"\n mt={1}\n lineClamp={1}\n >\n Tap to review details.\n </Text>\n </Box>\n\n <Badge\n variant=\"subtle\"\n colorPalette={isAccepted ? \"green\" : \"gray\"}\n >\n {isAccepted ? \"Accepted\" : \"Review\"}\n </Badge>\n </Flex>\n </Box>\n );\n })}\n </VStack>\n </InfoCardAccordion>\n\n <Dialog.Root\n open={openDialog}\n onOpenChange={(details) => setOpenDialog(details.open)}\n size={{ mdDown: \"full\", md: \"xl\" }}\n scrollBehavior=\"inside\"\n >\n <Portal>\n <Dialog.Backdrop backdropFilter=\"blur(6px)\" />\n <Dialog.Positioner>\n <Dialog.Content\n bg=\"white\"\n rounded=\"xl\"\n shadow=\"lg\"\n overflow=\"hidden\"\n >\n <Dialog.CloseTrigger asChild>\n <CloseButton position=\"absolute\" top={3} right={3} />\n </Dialog.CloseTrigger>\n\n <Dialog.Header\n px={{ base: 4, md: 6 }}\n pt={{ base: 5, md: 6 }}\n >\n <H3>\n {pendingCheck !== null\n ? pendingAgreement?.title || \"Agreement\"\n : \"Agreement\"}\n </H3>\n <Text fontSize=\"sm\" color=\"gray.600\" mt={2}>\n Please read carefully. Confirm to accept this agreement.\n </Text>\n </Dialog.Header>\n\n <Dialog.Body px={{ base: 4, md: 6 }} pb={{ base: 5, md: 6 }}>\n <Box p={4} borderWidth=\"0px\" rounded=\"lg\" bg=\"gray.50\">\n <Text\n whiteSpace=\"pre-wrap\"\n fontSize=\"sm\"\n color=\"gray.800\"\n >\n {pendingCheck !== null\n ? pendingAgreement?.description ||\n \"Please review and confirm before proceeding.\"\n : \"Please review and confirm before proceeding.\"}\n </Text>\n </Box>\n </Dialog.Body>\n\n <Dialog.Footer\n px={{ base: 4, md: 6 }}\n pb={{ base: 5, md: 6 }}\n >\n <HStack justify=\"flex-end\" gap={3} w=\"full\">\n <CancelButton\n onClick={() => {\n setOpenDialog(false);\n setPendingCheck(null);\n }}\n />\n <ConfirmButton onClick={confirmAgreement} />\n </HStack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n </VStack>\n </Box>\n </Box>\n );\n};\n\nexport default Confirmation;\n","import { Box, Separator } from \"@chakra-ui/react\";\nimport { Body, Small } from \"st-peter-ui\";\n\nexport const checkboxList = [\n {\n title: \"TERMS OF USE\",\n checkBoxTitle:\n \"I hereby confirm that the information that I provided is correct and that I accept the TERMS AND CONDITIONS AND DATA PRIVACY AGREEMENT.\",\n description: (\n <Box>\n <Body>\n Please read these Terms and Conditions of Use carefully before using\n this website. Using this website means you have read, understood,\n agreed to and accepted these Terms and Conditions of Use. If you do\n not accept these Terms and Conditions of Use, do not use this website.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n CHANGES TO THIS TERMS AND USE\n </Body>\n <Body>\n St. Peter Group reserves the right to change these Terms and\n Conditions of Use from time to time, in whole or in part, without\n prior notice. Your continued use of this Website after changes to the\n Terms and Conditions of Use have been published constitutes your\n binding agreement and acceptance of the updated Terms and Conditions\n of Use.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n TRADEMARKS\n </Body>\n <Body>\n The trademarks, logos, and service marks displayed on this Website\n are the properties of the St. Peter Group. You are not permitted to\n use these items without prior written consent.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n INTELLECTUAL PROPERTY RIGHTS\n </Body>\n <Body>\n The St. Peter Group owns the intellectual property rights in the\n content made available on this Website, or has obtained permission\n from the proper owners to make such content available.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n LINKS TO OTHER SITES\n </Body>\n <Body>\n This website contains links to other websites for convenience only.\n St. Peter Group is not responsible for the content or availability of\n linked websites.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n RULES OF CONDUCT\n </Body>\n <Body>\n Your use of this Website is subject to all applicable laws. Do not\n post threatening, abusive, defamatory, obscene, hateful, or illegal\n content. Do not upload harmful software or attempt to disrupt the\n Website.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n DISCLAIMER\n </Body>\n <Body>\n The Website is provided as is. St. Peter Group makes no warranties and\n is not liable for any damages, including loss of data, viruses,\n errors, or reliance on content.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n PRIVACY POLICY\n </Body>\n <Body>Please read our Privacy Policy.</Body>\n <Separator my={8} />\n <Body fontWeight=\"semibold\" mt={4}>\n HOW TO CONTACT US\n </Body>\n <Body>If you have any concern regarding these Terms of Use, contact us:</Body>\n <Body mt={2} fontWeight=\"semibold\">\n For website concerns: ronagl@stpeter.com.ph\n </Body>\n <Body mt={2} fontWeight=\"semibold\">\n For data privacy concerns: joycemb@stpeter.com.ph\n </Body>\n <Small textAlign=\"center\" mt={8}>\n This Terms of Use was amended on August 30, 2018\n </Small>\n </Box>\n ),\n },\n {\n title: \"TERMS OF LIFE PLAN CONTRACT\",\n checkBoxTitle:\n \"I hereby confirm that the information that I provided is correct and that I accept the TERMS OF LIFE PLAN CONTRACT.\",\n description: (\n <Box>\n <Body fontWeight=\"semibold\" mt={4}>\n ARTICLE I. DEFINITION OF TERMS\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n ST. PETER\n </Body>\n <Body>ST. PETER LIFE PLAN, INC.</Body>\n <Body fontWeight=\"semibold\" mt={4}>\n PLANHOLDER\n </Body>\n <Body>\n Refers to the person who purchases and owns the plan for whom or for\n whose beneficiaries benefits are to be delivered, as stipulated and\n guaranteed by ST. PETER.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Contract\n </Body>\n <Body>\n Refers to the Life Plan Contract between ST. PETER and the PLANHOLDER\n providing the terms and conditions thereof.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Contract Price\n </Body>\n <Body>\n Refers to the stipulated price of the Life Plan which may be paid\n either in lump sum or in installments, net of handling fees and other\n charges, if any.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Gross Contract Price\n </Body>\n <Body>\n Refers to the stipulated price of the Life Plan which includes\n handling fees and other charges.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Plan Installment\n </Body>\n <Body>\n Refers to the monthly, quarterly, semi-annual or annual installment\n amounts paid by the PLANHOLDER.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Paying Period\n </Body>\n <Body>\n Refers to the period of time within which the PLANHOLDER has to pay\n for the Gross Contract Price of the plan in monthly, quarterly,\n semi-annual, annual installments or lump sum.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Due Date\n </Body>\n <Body>\n Refers to the date when the PLANHOLDER installment should be paid.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Beneficiary\n </Body>\n <Body>\n Refers to the person designated by the PLANHOLDER, in accordance with\n law, to receive the plan insurance proceeds and/or pre-need benefits\n in case of unrendered service.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Grace Period\n </Body>\n <Body>\n Refers to the sixty-day period given to the PLANHOLDER within which\n to pay accrued installments due, counted from the due date of the\n first unpaid installment in default.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Lapsed Plan\n </Body>\n <Body>\n Refers to a delinquent plan which has remained unpaid beyond the\n grace period. A Lapsed Plan has no force and effect.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Reinstatement\n </Body>\n <Body>Refers to the process of reactivating a lapsed plan.</Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Certificate of Full Payment\n </Body>\n <Body>\n Refers to ST. PETER duly signed certification stating that a plan has\n been fully paid.\n </Body>\n </Box>\n ),\n },\n {\n title: \"OUR CUSTOMER SERVICE CHARTER\",\n checkBoxTitle: \"I have read and understood the CUSTOMER SERVICE CHARTER.\",\n description: (\n <Box>\n <Body>\n We at ST. PETER LIFE PLAN, INC. hold ourselves as DeathCare Experts\n who aspire to be the most trusted and reliable provider in your\n Pre-Need Life Plan needs. We also aim to deliver world-class\n DeathCare services to our planholders.\n </Body>\n <Body fontWeight=\"semibold\" mt={4}>\n Our customer service charter reflects our commitment to:\n </Body>\n <Box as=\"ul\" listStyleType=\"circle\" listStylePosition=\"inside\">\n <li>Safe and Secure Operations</li>\n <li>Maintenance of Customer Privacy</li>\n <li>Quality Services</li>\n <li>Transparent Product Information</li>\n <li>Prompt Response to Inquiries and Complaints</li>\n </Box>\n <Body mt={4} fontWeight=\"semibold\">\n OUR CUSTOMER SERVICE STANDARDS AND COMMITMENTS\n </Body>\n </Box>\n ),\n },\n];\n\nexport type AgreementItem = (typeof checkboxList)[number];\n","\"use client\";\r\n\r\nimport { Box, Button, Flex, Icon, Text } from \"@chakra-ui/react\";\r\nimport React, { useState } from \"react\";\r\nimport { LuChevronDown, LuChevronUp, LuHash, LuPencil } from \"react-icons/lu\";\r\n\r\ninterface InfoCardAccordionProps {\r\n icon: React.ReactNode;\r\n openedIcon?: React.ReactNode;\r\n title: string;\r\n subtitle?: string;\r\n children?: React.ReactNode;\r\n defaultOpen?: boolean;\r\n isOpen?: boolean;\r\n onToggle?: () => void;\r\n onEdit?: () => void;\n}\r\n\r\nexport function InfoCardAccordion({\r\n icon,\r\n openedIcon,\r\n title,\r\n subtitle,\r\n children,\r\n defaultOpen = false,\r\n isOpen: controlledOpen,\r\n onToggle,\r\n onEdit,\r\n}: InfoCardAccordionProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : internalOpen;\r\n\r\n const toggle = () => {\r\n if (isControlled) {\r\n onToggle?.();\r\n } else {\r\n setInternalOpen((prev: boolean) => !prev);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n toggle();\r\n }\r\n };\r\n\r\n const activeIcon = isOpen && openedIcon ? openedIcon : icon;\r\n\r\n return (\r\n <Box\r\n w=\"full\"\r\n position=\"relative\"\r\n p={1}\r\n borderRadius=\"2xl\"\r\n bg=\"white\"\r\n shadow=\"sm\"\r\n transition=\"all 0.25s ease\"\r\n _hover={{ transform: \"translateY(-3px)\", shadow: \"lg\" }}\r\n overflow=\"hidden\"\r\n cursor=\"pointer\"\r\n >\r\n <Flex\n align=\"center\"\r\n justify=\"space-between\"\r\n px={4}\r\n py={3}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n aria-expanded={isOpen}\r\n onClick={toggle}\r\n onKeyDown={handleKeyDown}\r\n _hover={{ bg: \"gray.50\" }}\r\n transition=\"background 0.15s ease\"\r\n >\r\n <Flex align=\"center\" gap={2}>\r\n <Box\r\n p={2}\r\n borderRadius=\"full\"\r\n bg={\"gray.100\"}\r\n color={\"inherit\"}\r\n transition=\"background 0.2s ease, color 0.2s ease\"\r\n >\r\n {activeIcon}\r\n </Box>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\" lineHeight=\"1.2\">\r\n {title}\r\n </Text>\r\n {subtitle && (\r\n <Flex align=\"center\" gap={1} fontSize=\"xs\" color=\"gray.500\">\r\n <LuHash size={12} />\r\n <Text>{subtitle}</Text>\r\n </Flex>\r\n )}\r\n </Box>\r\n </Flex>\r\n\r\n <Flex align=\"center\" gap={1} flexShrink={0}>\n {onEdit && (\r\n <Button\r\n variant=\"ghost\"\r\n p={0}\r\n minW=\"32px\"\r\n h=\"32px\"\r\n borderRadius=\"md\"\r\n aria-label={`Edit ${title}`}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onEdit();\r\n }}\r\n >\r\n <Icon as={LuPencil} boxSize={4} />\r\n </Button>\r\n )}\r\n <Box color=\"gray.400\">\r\n {isOpen ? <LuChevronUp size={16} /> : <LuChevronDown size={16} />}\r\n </Box>\r\n </Flex>\r\n </Flex>\r\n\r\n {isOpen && children && (\n <Box p={4} borderTopWidth={1} borderColor=\"gray.100\">\r\n {children}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n","import React, { useState } from \"react\";\nimport {\n Box,\n ButtonGroup,\n Flex,\n IconButton,\n Separator,\n Steps,\n} from \"@chakra-ui/react\";\nimport { NextButton, PrimaryMdButton, SecondaryMdButton } from \"st-peter-ui\";\nimport { LuChevronLeft, LuChevronRight } from \"react-icons/lu\";\n\ninterface HorizontalStepperProps {\n steps: {\n title: string;\n description: React.ReactNode;\n component?: React.ReactNode;\n icon?: React.ElementType;\n }[];\n onStepChange?: (index: number) => void;\r\n onSubmit?: () => void;\r\n submitDisabled?: boolean;\r\n activeStep?: number;\r\n nextDisabled?: boolean;\r\n}\r\n\r\nconst HorizontalStepper = ({\r\n steps,\r\n onStepChange,\r\n onSubmit,\r\n submitDisabled,\r\n activeStep: controlledActiveStep,\r\n nextDisabled,\r\n}: HorizontalStepperProps) => {\r\n const [localActiveStep, setLocalActiveStep] = useState(0);\r\n const activeStep =\r\n controlledActiveStep !== undefined ? controlledActiveStep : localActiveStep;\r\n\r\n const handleStepChange = (index: number) => {\n if (controlledActiveStep === undefined) {\n setLocalActiveStep(index);\n }\n onStepChange?.(index);\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 <Box w=\"full\" colorPalette=\"green\" rounded=\"2xl\" p={1}>\n <Steps.Root\n step={activeStep}\n onStepChange={(index) => {\n handleStepChange(index.step);\n }}\n defaultStep={0}\n count={steps.length}\n colorPalette=\"green\"\n >\n <Steps.List\n flexDirection=\"row\"\n w=\"full\"\n py={2}\n alignItems=\"flex-start\"\n >\n {steps.map((step, index) => (\n <Steps.Item\n key={index}\n index={index}\n title={step.title}\n minW={{ base: \"0px\", md: \"auto\" }}\n >\n <Steps.Trigger\n flexDirection=\"column\"\n alignItems=\"center\"\n gap={1}\n >\n <Steps.Indicator>\n {step.icon ? <Box as={step.icon} w={4} h={4} /> : null}\n </Steps.Indicator>\n <Steps.Title\n fontSize={{ base: \"xs\", md: \"sm\" }}\n textAlign=\"center\"\n whiteSpace=\"normal\"\n wordBreak=\"break-word\"\n >\n {step.title}\n </Steps.Title>\n </Steps.Trigger>\n <Steps.Separator display={{ base: \"none\", md: \"block\" }} />\n </Steps.Item>\n ))}\n </Steps.List>\n\n <Separator variant=\"solid\" mb={3} />\n\n {steps.map((step, index) => (\n <Steps.Content key={index} index={index}>\n {step.component ?? step.description}\n </Steps.Content>\n ))}\n\n <Flex\n w=\"full\"\n justify=\"space-between\"\n align=\"center\"\n mb={1}\n display={{ base: \"flex\", md: \"none\" }}\n >\n <Steps.PrevTrigger asChild>\n <IconButton\n aria-label=\"Previous step\"\n size=\"sm\"\n variant=\"outline\"\n >\n <LuChevronLeft />\n </IconButton>\n </Steps.PrevTrigger>\n {activeStep < steps.length - 1 ? (\n <IconButton\n aria-label=\"Next step\"\n size=\"sm\"\n variant=\"outline\"\n disabled={!!nextDisabled}\n onClick={handleNext}\n >\n <LuChevronRight />\n </IconButton>\n ) : (\n <PrimaryMdButton disabled={!!submitDisabled} onClick={onSubmit}>\n Proceed To Payment\n </PrimaryMdButton>\n )}\n </Flex>\n\n <ButtonGroup\n size=\"sm\"\n variant=\"outline\"\n display={{ base: \"none\", md: \"flex\" }}\n >\n <Flex mt={4} w=\"full\" align=\"center\" justify=\"space-between\">\n <Steps.PrevTrigger asChild>\n <SecondaryMdButton>Previous</SecondaryMdButton>\n </Steps.PrevTrigger>\n {activeStep < steps.length - 1 ? (\n <NextButton disabled={!!nextDisabled} onClick={handleNext} />\n ) : (\n <PrimaryMdButton disabled={!!submitDisabled} onClick={onSubmit}>\n Proceed To Payment\n </PrimaryMdButton>\n )}\n </Flex>\n </ButtonGroup>\n </Steps.Root>\n </Box>\n </Flex>\n );\n};\n\r\nexport default HorizontalStepper;\r\n","\"use client\";\n\nimport SharedLifePlanApplication from \"./SharedLifePlanApplication\";\n\nconst LifePlanApplicationStepWrapper = () => {\n return <SharedLifePlanApplication />;\n};\n\nexport default LifePlanApplicationStepWrapper;\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport {\r\n Box,\r\n Drawer,\r\n Portal,\r\n HStack,\r\n VStack,\r\n Flex,\r\n Icon,\r\n CloseButton,\r\n Text,\r\n} from \"@chakra-ui/react\";\r\nimport { LuChevronRight } from \"react-icons/lu\";\r\nimport type { IconType } from \"react-icons\";\r\nimport Link from \"next/link\";\r\nimport { BRAND_COLORS } from \"../lib/theme/brand-colors\";\r\nimport {\r\n STANDARD_RADIUS,\r\n STANDARD_SHADOWS,\r\n STANDARD_SPACING,\r\n} from \"../lib/theme/standard-design-tokens\";\r\n\r\n// ─── Types ────────────────────────────────────────────────────────────────────\r\n\r\nexport type QuickAction = {\r\n /** React Icons icon component */\r\n icon: IconType;\r\n /** Primary action label */\r\n label: string;\r\n /** Optional supporting text below the label */\r\n description?: string;\r\n /** Called when the item is tapped (can be combined with href) */\r\n onClick?: () => void;\r\n /** Wrap the item in a Next.js Link */\r\n href?: string;\r\n /** Icon bubble background — defaults to brand muted gray */\r\n iconBg?: string;\r\n /** Icon fill color — defaults to brand neutral text */\r\n iconColor?: string;\r\n};\r\n\r\nexport type QuickActionsHeaderCardProps = {\r\n /** Short initials shown in the avatar circle (1–3 chars) */\r\n initials?: string;\r\n /** Avatar circle background — defaults to brand dark green */\r\n avatarBg?: string;\r\n /** Bold primary label (e.g. a name or record title) */\r\n label: string;\r\n /** Dimmer supporting line (e.g. \"ID #SP-10293 · Life Plan\") */\r\n meta?: string;\r\n /** Optional trailing slot (e.g. a badge or icon) */\r\n trailing?: React.ReactNode;\r\n};\r\n\r\nexport type BottomQuickActionsProps = {\r\n /** Controls open state */\r\n open: boolean;\r\n /** Called on close or backdrop tap */\r\n onOpenChange: (open: boolean) => void;\r\n /** Sheet heading — defaults to \"Quick actions\" */\r\n title?: string;\r\n /** Muted subtext below the title */\r\n subtitle?: string;\r\n /**\r\n * Optional context card rendered between the title bar and the action list.\r\n * Use `QuickActionsHeaderCard` for the standard \"acting on which record\" pattern,\r\n * or pass any ReactNode.\r\n */\r\n headerSlot?: React.ReactNode;\r\n /** The ordered list of actions */\r\n actions: QuickAction[];\r\n};\r\n\r\n// ─── Design tokens ────────────────────────────────────────────────────────────\r\n\r\nconst SHEET_BG = BRAND_COLORS.white;\r\nconst DRAG_COLOR = BRAND_COLORS.neutralBorder;\r\nconst ITEM_BG = BRAND_COLORS.white;\r\nconst ITEM_HOVER_BG = BRAND_COLORS.subtleBg;\r\nconst ITEM_ACTIVE_BG = BRAND_COLORS.mutedBg;\r\nconst ITEM_BORDER = BRAND_COLORS.neutralBorder;\r\nconst DEFAULT_ICON_BG = BRAND_COLORS.mutedBg;\r\nconst DEFAULT_ICON_COLOR = BRAND_COLORS.neutralText;\r\nconst AVATAR_DEFAULT_BG = BRAND_COLORS.darkGreen;\r\nconst HEADER_CARD_BG = BRAND_COLORS.subtleBg;\r\nconst HEADER_CARD_BORDER = BRAND_COLORS.neutralBorder;\r\nconst TITLE_COLOR = BRAND_COLORS.neutralText;\r\nconst SUBTITLE_COLOR = BRAND_COLORS.grey;\r\nconst LABEL_COLOR = BRAND_COLORS.neutralText;\r\nconst DESC_COLOR = BRAND_COLORS.grey;\r\nconst CHEVRON_COLOR = BRAND_COLORS.ashWhite;\r\n\r\n// ─── QuickActionsHeaderCard ───────────────────────────────────────────────────\r\n\r\n/**\r\n * Convenience header card for showing which record the actions apply to.\r\n * Pass this to `BottomQuickActions` via the `headerSlot` prop.\r\n */\r\nexport const QuickActionsHeaderCard = React.memo(\r\n ({\r\n initials,\r\n avatarBg = AVATAR_DEFAULT_BG,\r\n label,\r\n meta,\r\n trailing,\r\n }: QuickActionsHeaderCardProps) => (\r\n <HStack\r\n gap={STANDARD_SPACING.sm}\r\n px={STANDARD_SPACING.sm}\r\n py=\"13px\"\r\n bg={HEADER_CARD_BG}\r\n borderRadius={STANDARD_RADIUS.lg}\r\n borderWidth=\"1px\"\r\n borderColor={HEADER_CARD_BORDER}\r\n >\r\n {initials && (\r\n <Flex\r\n w=\"40px\"\r\n h=\"40px\"\r\n borderRadius={STANDARD_RADIUS.full}\r\n bg={avatarBg}\r\n align=\"center\"\r\n justify=\"center\"\r\n flexShrink={0}\r\n >\r\n <Text\r\n fontSize=\"14px\"\r\n fontWeight=\"700\"\r\n color={BRAND_COLORS.white}\r\n lineHeight=\"1\"\r\n >\r\n {initials}\r\n </Text>\r\n </Flex>\r\n )}\r\n <Box flex=\"1\" minW={0}>\r\n <Text\r\n fontSize=\"15px\"\r\n fontWeight=\"700\"\r\n color={TITLE_COLOR}\r\n lineHeight=\"1.25\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {label}\r\n </Text>\r\n {meta && (\r\n <Text\r\n fontSize=\"12px\"\r\n color={SUBTITLE_COLOR}\r\n mt=\"2px\"\r\n lineHeight=\"1.4\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {meta}\r\n </Text>\r\n )}\r\n </Box>\r\n {trailing}\r\n </HStack>\r\n ),\r\n);\r\n\r\n// ─── Action item ──────────────────────────────────────────────────────────────\r\n\r\nconst ITEM_TRANSITION = {\r\n transition: \"background 0.15s ease, transform 0.1s ease\",\r\n};\r\n\r\nconst ActionItem = React.memo(({ action }: { action: QuickAction }) => {\r\n const iconBg = action.iconBg ?? DEFAULT_ICON_BG;\r\n const iconColor = action.iconColor ?? DEFAULT_ICON_COLOR;\r\n\r\n const inner = (\r\n <HStack\r\n gap={STANDARD_SPACING.sm}\r\n px={STANDARD_SPACING.sm}\r\n py=\"14px\"\r\n bg={ITEM_BG}\r\n borderRadius={STANDARD_RADIUS.lg}\r\n borderWidth=\"1px\"\r\n borderColor={ITEM_BORDER}\r\n cursor=\"pointer\"\r\n role=\"button\"\r\n tabIndex={0}\r\n userSelect=\"none\"\r\n boxShadow={STANDARD_SHADOWS.level1}\r\n onClick={action.onClick}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") action.onClick?.();\r\n }}\r\n _hover={{ bg: ITEM_HOVER_BG }}\r\n _active={{ bg: ITEM_ACTIVE_BG, transform: \"scale(0.99)\" }}\r\n style={ITEM_TRANSITION}\r\n >\r\n <Flex\r\n w=\"40px\"\r\n h=\"40px\"\r\n borderRadius={STANDARD_RADIUS.md}\r\n bg={iconBg}\r\n align=\"center\"\r\n justify=\"center\"\r\n flexShrink={0}\r\n >\r\n <Icon as={action.icon} boxSize=\"20px\" color={iconColor} />\r\n </Flex>\r\n\r\n <Box flex=\"1\" minW={0}>\r\n <Text\r\n fontSize=\"15px\"\r\n fontWeight=\"600\"\r\n color={LABEL_COLOR}\r\n lineHeight=\"1.25\"\r\n >\r\n {action.label}\r\n </Text>\r\n {action.description && (\r\n <Text\r\n fontSize=\"12px\"\r\n color={DESC_COLOR}\r\n mt=\"2px\"\r\n lineHeight=\"1.4\"\r\n overflow=\"hidden\"\r\n whiteSpace=\"nowrap\"\r\n textOverflow=\"ellipsis\"\r\n >\r\n {action.description}\r\n </Text>\r\n )}\r\n </Box>\r\n\r\n <Icon\r\n as={LuChevronRight}\r\n boxSize=\"18px\"\r\n color={CHEVRON_COLOR}\r\n flexShrink={0}\r\n />\r\n </HStack>\r\n );\r\n\r\n if (action.href) {\r\n return (\r\n <Link\r\n href={action.href}\r\n style={{ textDecoration: \"none\", display: \"block\" }}\r\n >\r\n {inner}\r\n </Link>\r\n );\r\n }\r\n return inner;\r\n});\r\n\r\n// ─── BottomQuickActions ───────────────────────────────────────────────────────\r\n\r\nexport const BottomQuickActions = ({\r\n open,\r\n onOpenChange,\r\n title = \"Quick actions\",\r\n subtitle,\r\n headerSlot,\r\n actions,\r\n}: BottomQuickActionsProps) => {\r\n return (\r\n <Drawer.Root\r\n open={open}\r\n onOpenChange={(e) => onOpenChange(e.open)}\r\n placement=\"bottom\"\r\n >\r\n <Portal>\r\n <Drawer.Backdrop />\r\n <Drawer.Positioner>\r\n <Drawer.Content\r\n borderTopRadius=\"l3\"\r\n borderBottomRadius=\"0\"\r\n bg={SHEET_BG}\r\n maxW=\"480px\"\r\n mx=\"auto\"\r\n pb={`calc(${STANDARD_SPACING.sm} + env(safe-area-inset-bottom))`}\r\n boxShadow={STANDARD_SHADOWS.level4}\r\n >\r\n {/* Drag handle */}\r\n <Flex justify=\"center\" pt=\"10px\" pb=\"4px\">\r\n <Box\r\n w=\"36px\"\r\n h=\"4px\"\r\n borderRadius={STANDARD_RADIUS.full}\r\n bg={DRAG_COLOR}\r\n />\r\n </Flex>\r\n\r\n {/* Header: title + subtitle + close button */}\r\n <Drawer.Header\r\n px={STANDARD_SPACING.sm}\r\n pt=\"12px\"\r\n pb=\"0\"\r\n borderBottomWidth=\"0\"\r\n >\r\n <Flex align=\"flex-start\" justify=\"space-between\" gap=\"12px\">\r\n <Box flex=\"1\" minW={0}>\r\n <Drawer.Title\r\n fontSize=\"18px\"\r\n fontWeight=\"700\"\r\n color={TITLE_COLOR}\r\n lineHeight=\"1.25\"\r\n letterSpacing=\"-0.02em\"\r\n >\r\n {title}\r\n </Drawer.Title>\r\n {subtitle && (\r\n <Text\r\n fontSize=\"13px\"\r\n color={SUBTITLE_COLOR}\r\n mt=\"3px\"\r\n fontWeight=\"400\"\r\n lineHeight=\"1.4\"\r\n >\r\n {subtitle}\r\n </Text>\r\n )}\r\n </Box>\r\n <Drawer.CloseTrigger asChild mt=\"2px\" flexShrink={0}>\r\n <CloseButton\r\n size=\"sm\"\r\n color={BRAND_COLORS.neutralText}\r\n borderRadius={STANDARD_RADIUS.full}\r\n _hover={{ bg: BRAND_COLORS.mutedBg }}\r\n />\r\n </Drawer.CloseTrigger>\r\n </Flex>\r\n </Drawer.Header>\r\n\r\n {/* Body: optional header card + action list */}\r\n <Drawer.Body\r\n px={STANDARD_SPACING.sm}\r\n pt={STANDARD_SPACING.sm}\r\n pb=\"4px\"\r\n >\r\n {headerSlot && <Box mb={STANDARD_SPACING.xs}>{headerSlot}</Box>}\r\n\r\n <VStack gap={STANDARD_SPACING.xs} align=\"stretch\">\r\n {actions.map((action, i) => (\r\n <ActionItem key={i} action={action} />\r\n ))}\r\n </VStack>\r\n </Drawer.Body>\r\n </Drawer.Content>\r\n </Drawer.Positioner>\r\n </Portal>\r\n </Drawer.Root>\r\n );\r\n};\r\n\r\nexport default BottomQuickActions;\r\n","export const BRAND_COLORS = {\n primaryGreen: \"#109448\",\n darkGreen: \"#006838\",\n softGreen: \"#92DDBF\",\n pastelPeaGreen: \"#ACD6A6\",\n seafoamGreen: \"#92DDBF\",\n lightCyan: \"#D3EDEE\",\n successBg: \"#F0FDF4\",\n warningBg: \"#FFF7ED\",\n warningText: \"#F1592B\",\n warningBorder: \"#F4845F\",\n errorBg: \"#FEF2F2\",\n destructiveRed: \"#BF1F2F\",\n errorRed: \"#EF4444\",\n neutralText: \"#22223B\",\n neutralBorder: \"#E5E7EB\",\n mutedBg: \"#F3F4F6\",\n subtleBg: \"#F9FAFB\",\n white: \"#FFFFFF\",\n black: \"#000000\",\n grey: \"#808080\",\n ashWhite: \"#ECECEC\",\n gold: \"#CBA135\",\n brightGold: \"#FFD026\",\n paleGold: \"#FFF48E\",\n} as const;\n","\"use client\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport {\r\n Avatar,\r\n Badge,\r\n Box,\r\n Button,\r\n Flex,\r\n HStack,\r\n IconButton,\r\n Input,\r\n InputGroup,\r\n Separator,\r\n Text,\r\n useBreakpointValue,\r\n VStack,\r\n} from \"@chakra-ui/react\";\r\nimport {\r\n RiDashboardFill,\r\n RiDashboardLine,\r\n RiBookShelfFill,\r\n RiBookShelfLine,\r\n RiCheckboxCircleFill,\r\n RiCheckboxCircleLine,\r\n RiMoneyDollarCircleFill,\r\n RiMoneyDollarCircleLine,\r\n RiUser2Fill,\r\n RiUser2Line,\r\n} from \"react-icons/ri\";\r\nimport {\r\n LuArrowLeftRight,\r\n LuChevronDown,\r\n LuChevronLeft,\r\n LuChevronRight,\r\n LuChevronUp,\r\n LuCreditCard,\r\n LuEye,\r\n LuEyeOff,\r\n LuFileText,\r\n LuHouse,\r\n LuLock,\r\n LuMoon,\r\n LuPlus,\r\n LuShield,\r\n LuSun,\r\n LuUser,\r\n LuX,\r\n} from \"react-icons/lu\";\r\nimport { HiOutlineUsers, HiUsers } from \"react-icons/hi2\";\r\nimport {\r\n BsFileEarmarkExcel,\r\n BsFileEarmarkExcelFill,\r\n BsFileEarmarkSpreadsheet,\r\n BsFileEarmarkSpreadsheetFill,\r\n} from \"react-icons/bs\";\r\nimport { LiaHandHoldingUsdSolid } from \"react-icons/lia\";\r\nimport { FaHandHoldingUsd } from \"react-icons/fa\";\r\nimport { MdManageAccounts, MdOutlineManageAccounts } from \"react-icons/md\";\r\nimport { IoLeaf, IoLeafOutline } from \"react-icons/io5\";\r\nimport type { IconType } from \"react-icons\";\r\n\r\ntype ProfileView =\r\n | \"main\"\r\n | \"edit-account\"\r\n | \"change-password\"\r\n | \"navbar-customize\";\r\ntype ColorModeValue = \"light\" | \"dark\";\r\n\r\ntype ToastType = \"success\" | \"error\";\r\n\r\nexport interface ProfileUser {\r\n displayName: string;\r\n email?: string;\r\n mobileNumber?: string;\r\n role?: string;\r\n avatarSrc?: string;\r\n}\r\n\r\nexport interface NavOptionDef {\r\n key: string;\r\n title: string;\r\n href: string;\r\n Icon: IconType;\r\n activeIcon: IconType;\r\n match: (pathname: string) => boolean;\r\n roles: string[];\r\n}\r\n\r\nexport interface ReusableProfileProps {\r\n user?: ProfileUser;\r\n colorMode?: ColorModeValue;\r\n onColorModeChange?: (mode: ColorModeValue) => void;\r\n initialTwoFactorEnabled?: boolean;\r\n initialQuickNavHrefs?: string[];\r\n availableNavOptions?: NavOptionDef[];\r\n maxQuickNavItems?: number;\r\n enableLocalStorage?: boolean;\r\n storageKey?: string;\r\n onSaveAccount?: (payload: { displayName: string }) => void | Promise<void>;\r\n onChangePassword?: (payload: {\r\n currentPassword: string;\r\n newPassword: string;\r\n }) => void | Promise<void>;\r\n onSignOut?: () => void | Promise<void>;\r\n onTwoFactorChange?: (enabled: boolean) => void | Promise<void>;\r\n onToast?: (type: ToastType, message: string) => void;\r\n}\r\n\r\nconst NAVBAR_STORAGE_KEY = \"profile-navbar-quick-items\";\r\nconst FONT_SIZE_STORAGE_KEY = \"profile-font-size-pref\";\r\nconst DEFAULT_NAV_HREFS = [\"/\", \"/plans\", \"/pay-my-plan\", \"/claims\"];\r\n\r\nconst DEFAULT_USER: ProfileUser = {\r\n displayName: \"Joyce Basilio-Ramos\",\r\n email: \"joyce.basilio@example.com\",\r\n mobileNumber: \"0917 000 0000\",\r\n role: \"branch\",\r\n avatarSrc: \"/images/profile.jpg\",\r\n};\r\n\r\nconst ALL_NAV_OPTIONS: NavOptionDef[] = [\r\n {\r\n key: \"/\",\r\n title: \"Home\",\r\n href: \"/\",\r\n Icon: LuHouse,\r\n activeIcon: LuHouse,\r\n match: (p) => p === \"/\",\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plans\",\r\n title: \"Products\",\r\n href: \"/plans\",\r\n Icon: IoLeafOutline,\r\n activeIcon: IoLeaf,\r\n match: (p) =>\r\n p.startsWith(\"/plans\") ||\r\n p.startsWith(\"/plan-details\") ||\r\n p.startsWith(\"/plan-comparison\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/pay-my-plan\",\r\n title: \"Pay\",\r\n href: \"/pay-my-plan\",\r\n Icon: LuCreditCard,\r\n activeIcon: LuCreditCard,\r\n match: (p) =>\r\n p.startsWith(\"/pay-my-plan\") ||\r\n p.startsWith(\"/account/pay-my-plan\") ||\r\n p.startsWith(\"/order-summary\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/claims\",\r\n title: \"Claim\",\r\n href: \"/claims\",\r\n Icon: LuFileText,\r\n activeIcon: LuFileText,\r\n match: (p) => p.startsWith(\"/claims\"),\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/dashboard\",\r\n title: \"Dashboard\",\r\n href: \"/dashboard\",\r\n Icon: RiDashboardLine,\r\n activeIcon: RiDashboardFill,\r\n match: (p) => p === \"/dashboard\" || p === \"/\",\r\n roles: [\"branch\", \"bmstl\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/approvals\",\r\n title: \"Approvals\",\r\n href: \"/approvals\",\r\n Icon: RiCheckboxCircleLine,\r\n activeIcon: RiCheckboxCircleFill,\r\n match: (p) => p.startsWith(\"/approvals\"),\r\n roles: [\"branch\", \"bmstl\"],\r\n },\r\n {\r\n key: \"/document-management\",\r\n title: \"Documents\",\r\n href: \"/document-management\",\r\n Icon: RiBookShelfLine,\r\n activeIcon: RiBookShelfFill,\r\n match: (p) => p.startsWith(\"/document-management\"),\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/payment/encode-payment\",\r\n title: \"Encode Payment\",\r\n href: \"/payment/encode-payment\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/encode-payment\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/view-drs\",\r\n title: \"View DRS\",\r\n href: \"/payment/view-drs\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/view-drs\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/encodevalidated-deposit\",\r\n title: \"Encode Deposit Slip\",\r\n href: \"/payment/encodevalidated-deposit\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/encodevalidated-deposit\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/viewvalidated-deposit\",\r\n title: \"View Deposit Slips\",\r\n href: \"/payment/viewvalidated-deposit\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/viewvalidated-deposit\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/payment/credit-memo\",\r\n title: \"Credit Memo\",\r\n href: \"/payment/credit-memo\",\r\n Icon: RiMoneyDollarCircleLine,\r\n activeIcon: RiMoneyDollarCircleFill,\r\n match: (p) => p === \"/payment/credit-memo\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/sales-force/profile\",\r\n title: \"Agent Profile\",\r\n href: \"/sales-force/profile\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/profile\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/sales-force/re-assign\",\r\n title: \"Re-Organization\",\r\n href: \"/sales-force/re-assign\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/re-assign\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/sales-force/new\",\r\n title: \"Add New Agent\",\r\n href: \"/sales-force/new\",\r\n Icon: RiUser2Line,\r\n activeIcon: RiUser2Fill,\r\n match: (p) => p === \"/sales-force/new\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/plan-management/new\",\r\n title: \"Add New Sale\",\r\n href: \"/plan-management/new\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p === \"/plan-management/new\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plan-management/planholder\",\r\n title: \"Account Summary\",\r\n href: \"/plan-management/planholder\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p.startsWith(\"/plan-management/planholder\"),\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/plan-management/change-of-mode\",\r\n title: \"Change of Mode\",\r\n href: \"/plan-management/change-of-mode\",\r\n Icon: HiOutlineUsers,\r\n activeIcon: HiUsers,\r\n match: (p) => p === \"/plan-management/change-of-mode\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/disbursement/comte\",\r\n title: \"COM/TE\",\r\n href: \"/disbursement/comte\",\r\n Icon: BsFileEarmarkSpreadsheet,\r\n activeIcon: BsFileEarmarkSpreadsheetFill,\r\n match: (p) => p === \"/disbursement/comte\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/disbursement/rfexpense\",\r\n title: \"Revolving Fund\",\r\n href: \"/disbursement/rfexpense\",\r\n Icon: BsFileEarmarkSpreadsheet,\r\n activeIcon: BsFileEarmarkSpreadsheetFill,\r\n match: (p) => p === \"/disbursement/rfexpense\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/loan\",\r\n title: \"Loan\",\r\n href: \"/loan\",\r\n Icon: LiaHandHoldingUsdSolid,\r\n activeIcon: FaHandHoldingUsd,\r\n match: (p) => p.startsWith(\"/loan\"),\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/mcpr\",\r\n title: \"MCPR\",\r\n href: \"/accounts-maintenance/mcpr\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/mcpr\",\r\n roles: [\"branch\", \"sales-agent\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/next-month-loading\",\r\n title: \"Next Month Loading\",\r\n href: \"/accounts-maintenance/next-month-loading\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/next-month-loading\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/floating-accounts\",\r\n title: \"Floating Accounts\",\r\n href: \"/accounts-maintenance/floating-accounts\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/floating-accounts\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/accounts-maintenance/accounts-transfer\",\r\n title: \"Transfer of Accounts\",\r\n href: \"/accounts-maintenance/accounts-transfer\",\r\n Icon: MdOutlineManageAccounts,\r\n activeIcon: MdManageAccounts,\r\n match: (p) => p === \"/accounts-maintenance/accounts-transfer\",\r\n roles: [\"branch\"],\r\n },\r\n {\r\n key: \"/dc\",\r\n title: \"Doc Cancellation\",\r\n href: \"/dc\",\r\n Icon: BsFileEarmarkExcel,\r\n activeIcon: BsFileEarmarkExcelFill,\r\n match: (p) => p === \"/dc\",\r\n roles: [\"sales-agent\"],\r\n },\r\n];\r\n\r\nconst FONT_SIZES = [\r\n { value: \"sm\", px: \"14px\", title: \"Small\", scale: 0.82 },\r\n { value: \"md\", px: \"16px\", title: \"Normal\", scale: 1 },\r\n { value: \"lg\", px: \"18px\", title: \"Large\", scale: 1.18 },\r\n];\r\n\r\nconst ROLE_LABELS: Record<string, string> = {\r\n branch: \"Branch\",\r\n bmstl: \"BM / STL\",\r\n \"sales-agent\": \"Sales Agent\",\r\n};\r\n\r\nconst PW_STRENGTH_META = [\r\n { label: \"\", color: \"gray.300\" },\r\n { label: \"Very Weak\", color: \"red.500\" },\r\n { label: \"Weak\", color: \"orange.400\" },\r\n { label: \"Fair\", color: \"yellow.500\" },\r\n { label: \"Strong\", color: \"green.400\" },\r\n { label: \"Very Strong\", color: \"green.600\" },\r\n] as const;\r\n\r\nfunction calcPwStrength(pw: string): number {\r\n if (!pw) return 0;\r\n\r\n let score = 0;\r\n if (pw.length >= 8) score++;\r\n if (/[A-Z]/.test(pw)) score++;\r\n if (/[a-z]/.test(pw)) score++;\r\n if (/[0-9]/.test(pw)) score++;\r\n if (/[^A-Za-z0-9]/.test(pw)) score++;\r\n\r\n return score;\r\n}\r\n\r\nfunction pickPalette(name: string) {\r\n const colorPalette = [\"red\", \"blue\", \"green\", \"yellow\", \"purple\", \"orange\"];\r\n return colorPalette[name.charCodeAt(0) % colorPalette.length];\r\n}\r\n\r\nfunction noopToast(_type: ToastType, _message: string) {\r\n return undefined;\r\n}\r\n\r\nexport function ReusableProfile({\r\n user = DEFAULT_USER,\r\n colorMode: controlledColorMode,\r\n onColorModeChange,\r\n initialTwoFactorEnabled = false,\r\n initialQuickNavHrefs = DEFAULT_NAV_HREFS,\r\n availableNavOptions = ALL_NAV_OPTIONS,\r\n maxQuickNavItems = 4,\r\n enableLocalStorage = true,\r\n storageKey = NAVBAR_STORAGE_KEY,\r\n onSaveAccount,\r\n onChangePassword,\r\n onSignOut,\r\n onTwoFactorChange,\r\n onToast = noopToast,\r\n}: ReusableProfileProps) {\r\n const [profileView, setProfileView] = useState<ProfileView>(\"main\");\r\n const [fallbackColorMode, setFallbackColorMode] =\r\n useState<ColorModeValue>(\"light\");\r\n const colorMode = controlledColorMode ?? fallbackColorMode;\r\n\r\n const [fontSize, setFontSizeLocal] = useState(\"md\");\r\n const [quickNavHrefs, setQuickNavHrefs] =\r\n useState<string[]>(initialQuickNavHrefs);\r\n const [replacingIdx, setReplacingIdx] = useState<number | null>(null);\r\n\r\n const [editName, setEditName] = useState(user.displayName);\r\n const [editLoading, setEditLoading] = useState(false);\r\n\r\n const [currentPw, setCurrentPw] = useState(\"\");\r\n const [newPw, setNewPw] = useState(\"\");\r\n const [confirmPw, setConfirmPw] = useState(\"\");\r\n const [showCurrentPw, setShowCurrentPw] = useState(false);\r\n const [showNewPw, setShowNewPw] = useState(false);\r\n const [showConfirmPw, setShowConfirmPw] = useState(false);\r\n const [pwLoading, setPwLoading] = useState(false);\r\n\r\n const [twoFactorEnabled, setTwoFactorEnabled] = useState(\r\n initialTwoFactorEnabled,\r\n );\r\n\r\n const [isMounted, setIsMounted] = useState(false);\r\n const isDesktopRaw = useBreakpointValue({ base: false, md: true });\r\n const isDesktop = isMounted ? (isDesktopRaw ?? false) : false;\r\n\r\n useEffect(() => {\r\n setIsMounted(true);\r\n\r\n if (!enableLocalStorage || typeof window === \"undefined\") return;\r\n\r\n setFontSizeLocal(localStorage.getItem(FONT_SIZE_STORAGE_KEY) ?? \"md\");\r\n\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n if (stored) setQuickNavHrefs(JSON.parse(stored) as string[]);\r\n } catch {\r\n setQuickNavHrefs(initialQuickNavHrefs);\r\n }\r\n }, [enableLocalStorage, initialQuickNavHrefs, storageKey]);\r\n\r\n useEffect(() => {\r\n setEditName(user.displayName);\r\n }, [user.displayName]);\r\n\r\n const availableOptions = useMemo(\r\n () =>\r\n availableNavOptions.filter(\r\n (option) => !user.role || option.roles.includes(user.role),\r\n ),\r\n [availableNavOptions, user.role],\r\n );\r\n\r\n const unpinnedOptions = availableOptions.filter(\r\n (option) => !quickNavHrefs.includes(option.key),\r\n );\r\n\r\n const pwStrength = calcPwStrength(newPw);\r\n const pwMeta = PW_STRENGTH_META[pwStrength] ?? PW_STRENGTH_META[0];\r\n const fontSizeLabel =\r\n fontSize === \"sm\" ? \"Small\" : fontSize === \"lg\" ? \"Large\" : \"Normal\";\r\n\r\n const resetPasswordForm = () => {\r\n setCurrentPw(\"\");\r\n setNewPw(\"\");\r\n setConfirmPw(\"\");\r\n setShowCurrentPw(false);\r\n setShowNewPw(false);\r\n setShowConfirmPw(false);\r\n };\r\n\r\n const handleColorMode = (mode: ColorModeValue) => {\r\n setFallbackColorMode(mode);\r\n onColorModeChange?.(mode);\r\n };\r\n\r\n const handleFontSize = (size: string) => {\r\n const sizeMap: Record<string, string> = {\r\n sm: \"14px\",\r\n md: \"16px\",\r\n lg: \"18px\",\r\n };\r\n\r\n if (enableLocalStorage && typeof window !== \"undefined\") {\r\n localStorage.setItem(FONT_SIZE_STORAGE_KEY, size);\r\n document.documentElement.style.fontSize = sizeMap[size] || \"16px\";\r\n }\r\n\r\n setFontSizeLocal(size);\r\n };\r\n\r\n const saveQuickNav = (hrefs: string[]) => {\r\n setQuickNavHrefs(hrefs);\r\n\r\n if (enableLocalStorage && typeof window !== \"undefined\") {\r\n localStorage.setItem(storageKey, JSON.stringify(hrefs));\r\n }\r\n };\r\n\r\n const addNavItem = (href: string) => {\r\n if (\r\n quickNavHrefs.length >= maxQuickNavItems ||\r\n quickNavHrefs.includes(href)\r\n ) {\r\n return;\r\n }\r\n\r\n saveQuickNav([...quickNavHrefs, href]);\r\n };\r\n\r\n const removeNavItem = (href: string) => {\r\n saveQuickNav(quickNavHrefs.filter((item) => item !== href));\r\n };\r\n\r\n const moveNavItem = (idx: number, dir: -1 | 1) => {\r\n const newIdx = idx + dir;\r\n if (newIdx < 0 || newIdx >= quickNavHrefs.length) return;\r\n\r\n const updated = [...quickNavHrefs];\r\n [updated[idx], updated[newIdx]] = [updated[newIdx]!, updated[idx]!];\r\n saveQuickNav(updated);\r\n };\r\n\r\n const replaceNavItem = (idx: number, newHref: string) => {\r\n const updated = [...quickNavHrefs];\r\n updated[idx] = newHref;\r\n saveQuickNav(updated);\r\n setReplacingIdx(null);\r\n };\r\n\r\n const handleSaveAccount = async () => {\r\n const trimmed = editName.trim();\r\n\r\n if (!trimmed) {\r\n onToast(\"error\", \"Display name cannot be empty\");\r\n return;\r\n }\r\n\r\n setEditLoading(true);\r\n\r\n try {\r\n await onSaveAccount?.({ displayName: trimmed });\r\n onToast(\"success\", \"Account updated\");\r\n setProfileView(\"main\");\r\n } catch {\r\n onToast(\"error\", \"Failed to update account\");\r\n } finally {\r\n setEditLoading(false);\r\n }\r\n };\r\n\r\n const handleChangePassword = async () => {\r\n if (!currentPw || !newPw || !confirmPw) {\r\n onToast(\"error\", \"Please fill in all fields\");\r\n return;\r\n }\r\n\r\n if (newPw !== confirmPw) {\r\n onToast(\"error\", \"New passwords do not match\");\r\n return;\r\n }\r\n\r\n if (pwStrength < 2) {\r\n onToast(\"error\", \"Password is too weak\");\r\n return;\r\n }\r\n\r\n setPwLoading(true);\r\n\r\n try {\r\n await onChangePassword?.({\r\n currentPassword: currentPw,\r\n newPassword: newPw,\r\n });\r\n onToast(\"success\", \"Password changed successfully\");\r\n resetPasswordForm();\r\n setProfileView(\"main\");\r\n } catch {\r\n onToast(\"error\", \"Failed to change password\");\r\n } finally {\r\n setPwLoading(false);\r\n }\r\n };\r\n\r\n const handleSignOut = async () => {\r\n try {\r\n await onSignOut?.();\r\n onToast(\"success\", \"Signed out\");\r\n } catch {\r\n onToast(\"error\", \"Failed to sign out\");\r\n }\r\n };\r\n\r\n const handleToggleTwoFactor = async () => {\r\n const nextValue = !twoFactorEnabled;\r\n setTwoFactorEnabled(nextValue);\r\n\r\n try {\r\n await onTwoFactorChange?.(nextValue);\r\n } catch {\r\n setTwoFactorEnabled(!nextValue);\r\n onToast(\"error\", \"Failed to update two factor authentication\");\r\n }\r\n };\r\n\r\n const roleLabel = user.role ? (ROLE_LABELS[user.role] ?? user.role) : \"\";\r\n\r\n const mainContent = (\r\n <>\r\n <Box\r\n bg=\"var(--chakra-colors-primary)\"\r\n pt={12}\r\n pb={8}\r\n px={4}\r\n textAlign=\"center\"\r\n >\r\n <Avatar.Root\r\n size=\"2xl\"\r\n mx=\"auto\"\r\n mb={4}\r\n colorPalette={pickPalette(user.displayName || \"U\")}\r\n >\r\n {user.avatarSrc && (\r\n <Avatar.Image src={user.avatarSrc} alt={user.displayName} />\r\n )}\r\n <Avatar.Fallback name={user.displayName} />\r\n </Avatar.Root>\r\n\r\n <Text\r\n color=\"white\"\r\n fontWeight=\"bold\"\r\n fontSize=\"xl\"\r\n lineHeight=\"1.2\"\r\n mb={1}\r\n >\r\n {user.displayName}\r\n </Text>\r\n\r\n {user.email && (\r\n <Text color=\"rgba(255,255,255,0.75)\" fontSize=\"sm\" mb={2}>\r\n {user.email}\r\n </Text>\r\n )}\r\n\r\n {roleLabel && (\r\n <Box display=\"inline-flex\">\r\n <Badge\r\n bg=\"rgba(255,255,255,0.15)\"\r\n color=\"white\"\r\n borderRadius=\"full\"\r\n px={3}\r\n py={0.5}\r\n fontSize=\"xs\"\r\n fontWeight=\"medium\"\r\n border=\"1px solid rgba(255,255,255,0.3)\"\r\n >\r\n {roleLabel}\r\n </Badge>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n <Box px={4} pt={5} pb={1}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n mb={3}\r\n >\r\n Account\r\n </Text>\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => setProfileView(\"edit-account\")}\r\n >\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={3}\r\n px={isDesktop ? 2 : 0}\r\n borderRadius=\"lg\"\r\n bg={\r\n isDesktop && profileView === \"edit-account\"\r\n ? \"gray.100\"\r\n : undefined\r\n }\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuUser size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Edit Account\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Update your display name and contact details\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n\r\n <Separator />\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => {\r\n resetPasswordForm();\r\n setProfileView(\"change-password\");\r\n }}\r\n >\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={3}\r\n px={isDesktop ? 2 : 0}\r\n borderRadius=\"lg\"\r\n bg={\r\n isDesktop && profileView === \"change-password\"\r\n ? \"gray.100\"\r\n : undefined\r\n }\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuLock size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Change Password\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Test locally through the callback prop\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n\r\n <Separator />\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuShield size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Two Factor Authentication\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {twoFactorEnabled ? \"Enabled\" : \"Disabled\"}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <Box\r\n role=\"switch\"\r\n aria-checked={twoFactorEnabled}\r\n aria-label=\"Toggle two factor authentication\"\r\n tabIndex={0}\r\n onClick={handleToggleTwoFactor}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\" || event.key === \" \") {\r\n event.preventDefault();\r\n void handleToggleTwoFactor();\r\n }\r\n }}\r\n w=\"44px\"\r\n h=\"26px\"\r\n borderRadius=\"full\"\r\n bg={twoFactorEnabled ? \"var(--chakra-colors-primary)\" : \"gray.300\"}\r\n position=\"relative\"\r\n transition=\"background 0.15s\"\r\n cursor=\"pointer\"\r\n flexShrink={0}\r\n outline=\"none\"\r\n >\r\n <Box\r\n position=\"absolute\"\r\n top=\"3px\"\r\n left={twoFactorEnabled ? \"21px\" : \"3px\"}\r\n w=\"20px\"\r\n h=\"20px\"\r\n borderRadius=\"full\"\r\n bg=\"white\"\r\n boxShadow=\"sm\"\r\n transition=\"left 0.15s\"\r\n />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n\r\n <Box px={4} pt={4} pb={2}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n mb={3}\r\n >\r\n Preferences\r\n </Text>\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n {colorMode === \"dark\" ? (\r\n <LuMoon size={16} />\r\n ) : (\r\n <LuSun size={16} />\r\n )}\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Appearance\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {colorMode === \"light\" ? \"Light mode\" : \"Dark mode\"}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={1.5}>\r\n {([\"light\", \"dark\"] as const).map((mode) => {\r\n const isActive = colorMode === mode;\r\n\r\n return (\r\n <Button\r\n key={mode}\r\n size=\"sm\"\r\n variant=\"outline\"\r\n px={3}\r\n h=\"34px\"\r\n gap={1.5}\r\n bg={isActive ? \"var(--chakra-colors-primary)\" : \"transparent\"}\r\n color={isActive ? \"white\" : \"gray.600\"}\r\n borderColor={\r\n isActive ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n _hover={{\r\n bg: isActive ? \"var(--chakra-colors-primary)\" : \"gray.50\",\r\n }}\r\n onClick={() => handleColorMode(mode)}\r\n >\r\n {mode === \"light\" ? (\r\n <LuSun size={13} />\r\n ) : (\r\n <LuMoon size={13} />\r\n )}\r\n <Text\r\n fontSize=\"xs\"\r\n textTransform=\"capitalize\"\r\n fontWeight=\"medium\"\r\n >\r\n {mode}\r\n </Text>\r\n </Button>\r\n );\r\n })}\r\n </HStack>\r\n </Flex>\r\n\r\n <Separator />\r\n\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n fontWeight=\"bold\"\r\n fontSize=\"15px\"\r\n flexShrink={0}\r\n >\r\n A\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Text Size\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {fontSizeLabel}\r\n </Text>\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={1}>\r\n {FONT_SIZES.map((option) => {\r\n const isActive = fontSize === option.value;\r\n\r\n return (\r\n <Button\r\n key={option.value}\r\n size=\"sm\"\r\n variant=\"outline\"\r\n w=\"40px\"\r\n h=\"34px\"\r\n p={0}\r\n bg={isActive ? \"var(--chakra-colors-primary)\" : \"transparent\"}\r\n color={isActive ? \"white\" : \"gray.600\"}\r\n borderColor={\r\n isActive ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n _hover={{\r\n bg: isActive ? \"var(--chakra-colors-primary)\" : \"gray.50\",\r\n }}\r\n onClick={() => handleFontSize(option.value)}\r\n title={option.title}\r\n >\r\n <Text\r\n fontWeight={isActive ? \"bold\" : \"normal\"}\r\n style={{ fontSize: `${option.scale * 13}px` }}\r\n >\r\n A\r\n </Text>\r\n </Button>\r\n );\r\n })}\r\n </HStack>\r\n </Flex>\r\n\r\n <Separator />\r\n\r\n <Box\r\n as=\"button\"\r\n w=\"full\"\r\n textAlign=\"left\"\r\n _hover={{ opacity: 0.7 }}\r\n transition=\"opacity 0.15s\"\r\n onClick={() => setProfileView(\"navbar-customize\")}\r\n >\r\n <Flex justify=\"space-between\" align=\"center\" py={3}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"38px\"\r\n h=\"38px\"\r\n borderRadius=\"xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"gray.600\"\r\n flexShrink={0}\r\n >\r\n <LuArrowLeftRight size={16} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"semibold\">\r\n Quick Navigation\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n {quickNavHrefs.length} of {maxQuickNavItems} items pinned\r\n </Text>\r\n </Box>\r\n </Flex>\r\n <LuChevronRight size={16} color=\"var(--chakra-colors-gray-400)\" />\r\n </Flex>\r\n </Box>\r\n </Box>\r\n\r\n <Box px={4} pt={4} pb={10}>\r\n <VStack gap={2.5}>\r\n <Button\r\n w=\"full\"\r\n variant=\"outline\"\r\n color=\"red.600\"\r\n borderColor=\"red.200\"\r\n _hover={{ bg: \"red.50\" }}\r\n onClick={handleSignOut}\r\n >\r\n Sign Out\r\n </Button>\r\n </VStack>\r\n </Box>\r\n </>\r\n );\r\n\r\n const editAccountContent = (\r\n <>\r\n <Box px={4} pt={4} pb={3} borderBottomWidth=\"1px\" borderColor=\"gray.200\">\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => setProfileView(\"main\")}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Edit Account\r\n </Text>\r\n </Flex>\r\n </Box>\r\n\r\n <Box textAlign=\"center\" pt={5} pb={4}>\r\n <Avatar.Root size=\"xl\" mx=\"auto\" mb={1}>\r\n {user.avatarSrc && (\r\n <Avatar.Image src={user.avatarSrc} alt={editName} />\r\n )}\r\n <Avatar.Fallback name={editName} />\r\n </Avatar.Root>\r\n </Box>\r\n\r\n <VStack gap={4} px={4} pb={10} align=\"stretch\">\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Display Name\r\n </Text>\r\n <Input\r\n value={editName}\r\n onChange={(event) => setEditName(event.target.value)}\r\n placeholder=\"Display name\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Email\r\n </Text>\r\n <Input\r\n value={user.email ?? \"\"}\r\n readOnly\r\n opacity={0.55}\r\n cursor=\"not-allowed\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Mobile Number\r\n </Text>\r\n <Input\r\n value={user.mobileNumber ?? \"\"}\r\n readOnly\r\n opacity={0.55}\r\n cursor=\"not-allowed\"\r\n size=\"md\"\r\n />\r\n </Box>\r\n\r\n <Button\r\n w=\"full\"\r\n mt={2}\r\n bg=\"var(--chakra-colors-primary)\"\r\n color=\"white\"\r\n _hover={{ opacity: 0.9 }}\r\n loading={editLoading}\r\n onClick={handleSaveAccount}\r\n >\r\n Save Changes\r\n </Button>\r\n </VStack>\r\n </>\r\n );\r\n\r\n const changePasswordContent = (\r\n <>\r\n <Box px={4} pt={4} pb={3} borderBottomWidth=\"1px\" borderColor=\"gray.200\">\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => setProfileView(\"main\")}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Change Password\r\n </Text>\r\n </Flex>\r\n </Box>\r\n\r\n <VStack gap={5} px={4} pt={6} pb={10}>\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Current Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle current password visibility\"\r\n onClick={() => setShowCurrentPw(!showCurrentPw)}\r\n >\r\n {showCurrentPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showCurrentPw ? \"text\" : \"password\"}\r\n value={currentPw}\r\n onChange={(event) => setCurrentPw(event.target.value)}\r\n placeholder=\"Enter current password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n New Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle new password visibility\"\r\n onClick={() => setShowNewPw(!showNewPw)}\r\n >\r\n {showNewPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showNewPw ? \"text\" : \"password\"}\r\n value={newPw}\r\n onChange={(event) => setNewPw(event.target.value)}\r\n placeholder=\"Enter new password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n\r\n {newPw && (\r\n <Box mt={2}>\r\n <Flex gap={1} mb={1}>\r\n {[1, 2, 3, 4, 5].map((i) => (\r\n <Box\r\n key={i}\r\n flex={1}\r\n h=\"3px\"\r\n borderRadius=\"full\"\r\n bg={i <= pwStrength ? pwMeta.color : \"gray.200\"}\r\n transition=\"background 0.2s\"\r\n />\r\n ))}\r\n </Flex>\r\n <Text fontSize=\"xs\" color={pwMeta.color} fontWeight=\"medium\">\r\n {pwMeta.label}\r\n </Text>\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n <Box w=\"full\">\r\n <Text fontSize=\"xs\" fontWeight=\"semibold\" color=\"gray.500\" mb={1.5}>\r\n Confirm New Password\r\n </Text>\r\n <InputGroup\r\n endElement={\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n aria-label=\"Toggle confirm password visibility\"\r\n onClick={() => setShowConfirmPw(!showConfirmPw)}\r\n >\r\n {showConfirmPw ? <LuEyeOff size={15} /> : <LuEye size={15} />}\r\n </IconButton>\r\n }\r\n >\r\n <Input\r\n type={showConfirmPw ? \"text\" : \"password\"}\r\n value={confirmPw}\r\n onChange={(event) => setConfirmPw(event.target.value)}\r\n placeholder=\"Confirm new password\"\r\n size=\"md\"\r\n />\r\n </InputGroup>\r\n {confirmPw && confirmPw !== newPw && (\r\n <Text fontSize=\"xs\" color=\"red.500\" mt={1}>\r\n Passwords do not match\r\n </Text>\r\n )}\r\n </Box>\r\n\r\n <Button\r\n w=\"full\"\r\n mt={1}\r\n bg=\"var(--chakra-colors-primary)\"\r\n color=\"white\"\r\n _hover={{ opacity: 0.9 }}\r\n disabled={\r\n !currentPw ||\r\n !newPw ||\r\n !confirmPw ||\r\n newPw !== confirmPw ||\r\n pwStrength < 2\r\n }\r\n loading={pwLoading}\r\n onClick={handleChangePassword}\r\n >\r\n Update Password\r\n </Button>\r\n </VStack>\r\n </>\r\n );\r\n\r\n const navbarCustomizeContent = (\r\n <>\r\n <Box\r\n px={4}\r\n pt={4}\r\n pb={3}\r\n borderBottomWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n position=\"sticky\"\r\n top={0}\r\n bg=\"bg\"\r\n zIndex={1}\r\n >\r\n <Flex align=\"center\" gap={2} pr={10}>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n aria-label=\"Back\"\r\n color=\"gray.600\"\r\n onClick={() => {\r\n setReplacingIdx(null);\r\n setProfileView(\"main\");\r\n }}\r\n >\r\n <LuChevronLeft />\r\n </IconButton>\r\n <Box>\r\n <Text fontWeight=\"bold\" fontSize=\"md\">\r\n Quick Navigation\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\">\r\n Choose up to {maxQuickNavItems} shortcuts for the bottom bar\r\n </Text>\r\n </Box>\r\n </Flex>\r\n </Box>\r\n\r\n <Box px={4} pt={5} pb={2}>\r\n <Flex align=\"center\" justify=\"space-between\" mb={3}>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Pinned\r\n </Text>\r\n <Text\r\n fontSize=\"xs\"\r\n color={\r\n quickNavHrefs.length >= maxQuickNavItems\r\n ? \"orange.500\"\r\n : \"gray.400\"\r\n }\r\n fontWeight=\"medium\"\r\n >\r\n {quickNavHrefs.length} / {maxQuickNavItems}\r\n </Text>\r\n </Flex>\r\n\r\n {quickNavHrefs.length === 0 ? (\r\n <Flex\r\n align=\"center\"\r\n justify=\"center\"\r\n py={6}\r\n borderRadius=\"xl\"\r\n borderWidth=\"1px\"\r\n borderStyle=\"dashed\"\r\n borderColor=\"gray.200\"\r\n >\r\n <Text fontSize=\"sm\" color=\"gray.400\">\r\n No items pinned — add from below\r\n </Text>\r\n </Flex>\r\n ) : (\r\n <VStack gap={0}>\r\n {quickNavHrefs.map((href, idx) => {\r\n const option = availableOptions.find((item) => item.key === href);\r\n if (!option) return null;\r\n\r\n const ItemIcon = option.Icon;\r\n const isFirst = idx === 0;\r\n const isLast = idx === quickNavHrefs.length - 1;\r\n const isReplacing = replacingIdx === idx;\r\n\r\n return (\r\n <Box key={href} w=\"full\">\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n py={2.5}\r\n px={isReplacing ? 2 : 0}\r\n borderRadius={isReplacing ? \"lg\" : undefined}\r\n bg={isReplacing ? \"orange.50\" : undefined}\r\n borderWidth={isReplacing ? \"1px\" : undefined}\r\n borderColor={isReplacing ? \"orange.200\" : undefined}\r\n transition=\"all 0.15s\"\r\n >\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"36px\"\r\n h=\"36px\"\r\n borderRadius=\"lg\"\r\n bg={\r\n isReplacing\r\n ? \"orange.400\"\r\n : \"var(--chakra-colors-primary)\"\r\n }\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color=\"white\"\r\n flexShrink={0}\r\n >\r\n <ItemIcon size={15} />\r\n </Box>\r\n <Box>\r\n <Text fontSize=\"sm\" fontWeight=\"medium\">\r\n {option.title}\r\n </Text>\r\n {isReplacing && (\r\n <Text\r\n fontSize=\"xs\"\r\n color=\"orange.500\"\r\n fontWeight=\"medium\"\r\n >\r\n Select replacement below\r\n </Text>\r\n )}\r\n </Box>\r\n </Flex>\r\n\r\n <HStack gap={0.5}>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Move up\"\r\n color=\"gray.500\"\r\n disabled={isFirst || isReplacing}\r\n onClick={() => moveNavItem(idx, -1)}\r\n >\r\n <LuChevronUp size={14} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Move down\"\r\n color=\"gray.500\"\r\n disabled={isLast || isReplacing}\r\n onClick={() => moveNavItem(idx, 1)}\r\n >\r\n <LuChevronDown size={14} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant={isReplacing ? \"solid\" : \"ghost\"}\r\n aria-label={\r\n isReplacing ? \"Cancel replace\" : \"Replace item\"\r\n }\r\n bg={isReplacing ? \"orange.400\" : undefined}\r\n color={isReplacing ? \"white\" : \"gray.500\"}\r\n _hover={{ bg: isReplacing ? \"orange.500\" : \"gray.100\" }}\r\n onClick={() =>\r\n setReplacingIdx(isReplacing ? null : idx)\r\n }\r\n >\r\n <LuArrowLeftRight size={13} />\r\n </IconButton>\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n aria-label=\"Remove\"\r\n color=\"red.400\"\r\n _hover={{ bg: \"red.50\" }}\r\n disabled={isReplacing}\r\n onClick={() => removeNavItem(href)}\r\n >\r\n <LuX size={14} />\r\n </IconButton>\r\n </HStack>\r\n </Flex>\r\n {!isLast && <Separator />}\r\n </Box>\r\n );\r\n })}\r\n </VStack>\r\n )}\r\n </Box>\r\n\r\n <Separator mx={4} my={1} />\r\n\r\n <Box px={4} pt={4} pb={10}>\r\n <Flex align=\"center\" justify=\"space-between\" mb={3}>\r\n {replacingIdx !== null ? (\r\n <Box>\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"orange.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Select Replacement\r\n </Text>\r\n <Text fontSize=\"xs\" color=\"gray.500\" mt={0.5}>\r\n for &quot;\r\n {\r\n availableOptions.find(\r\n (item) => item.key === quickNavHrefs[replacingIdx],\r\n )?.title\r\n }\r\n &quot;\r\n </Text>\r\n </Box>\r\n ) : (\r\n <Text\r\n fontSize=\"xs\"\r\n fontWeight=\"bold\"\r\n color=\"gray.500\"\r\n textTransform=\"uppercase\"\r\n letterSpacing=\"widest\"\r\n >\r\n Available\r\n </Text>\r\n )}\r\n\r\n {replacingIdx !== null && (\r\n <Button\r\n size=\"xs\"\r\n variant=\"ghost\"\r\n color=\"gray.500\"\r\n onClick={() => setReplacingIdx(null)}\r\n >\r\n Cancel\r\n </Button>\r\n )}\r\n </Flex>\r\n\r\n {unpinnedOptions.length === 0 ? (\r\n <Text fontSize=\"sm\" color=\"gray.400\" py={3} textAlign=\"center\">\r\n All available items are pinned\r\n </Text>\r\n ) : (\r\n <VStack gap={0}>\r\n {unpinnedOptions.map((option, idx) => {\r\n const ItemIcon = option.Icon;\r\n const isLast = idx === unpinnedOptions.length - 1;\r\n const isReplacingMode = replacingIdx !== null;\r\n const canAdd = quickNavHrefs.length < maxQuickNavItems;\r\n const actionEnabled = isReplacingMode || canAdd;\r\n\r\n return (\r\n <Box key={option.key} w=\"full\">\r\n <Flex justify=\"space-between\" align=\"center\" py={2.5}>\r\n <Flex align=\"center\" gap={3}>\r\n <Box\r\n w=\"36px\"\r\n h=\"36px\"\r\n borderRadius=\"lg\"\r\n bg={isReplacingMode ? \"orange.50\" : \"gray.100\"}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n color={isReplacingMode ? \"orange.500\" : \"gray.500\"}\r\n flexShrink={0}\r\n >\r\n <ItemIcon size={15} />\r\n </Box>\r\n <Text\r\n fontSize=\"sm\"\r\n fontWeight=\"medium\"\r\n color={actionEnabled ? \"inherit\" : \"gray.400\"}\r\n >\r\n {option.title}\r\n </Text>\r\n </Flex>\r\n\r\n {isReplacingMode ? (\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"outline\"\r\n aria-label=\"Use as replacement\"\r\n borderColor=\"orange.300\"\r\n color=\"orange.500\"\r\n _hover={{ bg: \"orange.50\" }}\r\n onClick={() => replaceNavItem(replacingIdx, option.key)}\r\n >\r\n <LuArrowLeftRight size={13} />\r\n </IconButton>\r\n ) : (\r\n <IconButton\r\n size=\"xs\"\r\n variant=\"outline\"\r\n aria-label=\"Pin item\"\r\n disabled={!canAdd}\r\n borderColor={\r\n canAdd ? \"var(--chakra-colors-primary)\" : \"gray.200\"\r\n }\r\n color={\r\n canAdd ? \"var(--chakra-colors-primary)\" : \"gray.300\"\r\n }\r\n _hover={{ bg: canAdd ? \"blue.50\" : \"transparent\" }}\r\n onClick={() => addNavItem(option.key)}\r\n >\r\n <LuPlus size={13} />\r\n </IconButton>\r\n )}\r\n </Flex>\r\n {!isLast && <Separator />}\r\n </Box>\r\n );\r\n })}\r\n </VStack>\r\n )}\r\n </Box>\r\n </>\r\n );\r\n\r\n const subViewContent =\r\n profileView === \"edit-account\"\r\n ? editAccountContent\r\n : profileView === \"change-password\"\r\n ? changePasswordContent\r\n : profileView === \"navbar-customize\"\r\n ? navbarCustomizeContent\r\n : null;\r\n\r\n if (isDesktop) {\r\n return (\r\n <Flex\r\n maxW=\"6xl\"\r\n mx=\"auto\"\r\n w=\"full\"\r\n minH=\"100%\"\r\n gap={6}\r\n p={{ md: 6, lg: 8 }}\r\n align=\"start\"\r\n >\r\n <Box\r\n w={{ md: \"300px\", lg: \"340px\" }}\r\n flexShrink={0}\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n borderRadius=\"2xl\"\r\n overflow=\"hidden\"\r\n bg=\"bg\"\r\n position=\"sticky\"\r\n top={6}\r\n >\r\n {mainContent}\r\n </Box>\r\n\r\n <Box\r\n flex=\"1\"\r\n minW={0}\r\n borderWidth=\"1px\"\r\n borderColor=\"gray.200\"\r\n borderRadius=\"2xl\"\r\n overflow=\"hidden\"\r\n bg=\"bg\"\r\n minH=\"540px\"\r\n >\r\n {subViewContent ?? (\r\n <Flex\r\n direction=\"column\"\r\n align=\"center\"\r\n justify=\"center\"\r\n minH=\"540px\"\r\n px={6}\r\n textAlign=\"center\"\r\n color=\"gray.400\"\r\n >\r\n <Box\r\n w=\"56px\"\r\n h=\"56px\"\r\n borderRadius=\"2xl\"\r\n bg=\"gray.100\"\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"center\"\r\n mb={4}\r\n >\r\n <LuUser size={24} />\r\n </Box>\r\n <Text fontSize=\"sm\" mt={1} maxW=\"280px\">\r\n Choose Edit Account, Change Password, or Quick Navigation from\r\n the menu to update your details here.\r\n </Text>\r\n </Flex>\r\n )}\r\n </Box>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Box maxW=\"480px\" mx=\"auto\" w=\"full\" minH=\"100%\" bg=\"bg\">\r\n {profileView === \"main\" ? mainContent : subViewContent}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ReusableProfile;\r\n"],"mappings":"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EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,MAAM,OAAO,KAAK,EAAE;AAE9C,IAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,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;AAA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","names":["Field","Input","useState","jsx","jsxs","useState","Field","Input","Box","Select","createListCollection","Field","useState","jsx","jsxs","createListCollection","useState","Box","Field","Select","Box","Field","SimpleGrid","VStack","React","jsx","jsxs","React","Box","VStack","SimpleGrid","Field","VStack","Box","Grid","Portal","createListCollection","Select","Field","Flex","Input","useState","Box","Text","jsx","jsxs","jsx","jsxs","createListCollection","VStack","useState","Flex","Box","Portal","Grid","Select","Field","Input","useState","VStack","Box","Body","H4","Fragment","jsx","jsxs","Box","Flex","VStack","useEffect","useState","Box","HStack","Text","jsx","jsxs","Box","Flex","Text","useState","jsx","jsxs","jsx","jsxs","useState","useEffect","Box","Flex","VStack","Box","useState","FaRegUser","IoIosInformationCircleOutline","Box","CloseButton","Dialog","Flex","HStack","Icon","Portal","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","useState","useEffect","Box","IoIosInformationCircleOutline","FaRegUser","FaRegAddressCard","Text","Flex","Dialog","Portal","CloseButton","HStack","jsx","FaRegUser","IoIosInformationCircleOutline","useState","Box","Flex","IconButton","Separator","PrimaryMdButton","SecondaryMdButton","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","Badge","Box","Button","Flex","HStack","IconButton","Input","Separator","Text","useBreakpointValue","VStack","LuChevronDown","LuChevronLeft","LuChevronRight","LuChevronUp","Fragment","jsx","jsxs"]}