igloo-d2c-components 1.0.21 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +556 -47
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +557 -49
- package/dist/esm/index.js.map +1 -1
- package/dist/types/components/CheckoutFormButton/CheckoutFormButton.d.ts +9 -0
- package/dist/types/components/CheckoutFormButton/styled.d.ts +2 -0
- package/dist/types/components/ChildInformationForm/ChildInformationForm.d.ts +4 -0
- package/dist/types/components/ChildInformationForm/styled.d.ts +18 -0
- package/dist/types/components/ContactDetailsForm/ContactDetailsForm.d.ts +4 -0
- package/dist/types/components/ContactDetailsForm/styled.d.ts +18 -0
- package/dist/types/components/CoverageAmountSlider/styled.d.ts +1 -1
- package/dist/types/components/DesktopHeaderMenuBar/DesktopHeaderMenuBar.d.ts +38 -0
- package/dist/types/components/DesktopHeaderMenuBar/index.d.ts +6 -0
- package/dist/types/components/DesktopHeaderMenuBar/styled.d.ts +89 -0
- package/dist/types/components/DesktopHeaderMenuBar/types.d.ts +92 -0
- package/dist/types/components/FAQAccordion/styled.d.ts +1 -1
- package/dist/types/components/Header/Header.d.ts +27 -1
- package/dist/types/components/Header/index.d.ts +1 -1
- package/dist/types/components/Header/styled.d.ts +2 -2
- package/dist/types/components/HealthInformationForm/HealthInformationForm.d.ts +4 -0
- package/dist/types/components/HealthInformationForm/styled.d.ts +12 -0
- package/dist/types/components/PersonalInformationForm/PersonalInformationForm.d.ts +4 -0
- package/dist/types/components/PersonalInformationForm/styled.d.ts +18 -0
- package/dist/types/index.d.ts +3 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { createContext, useMemo, useContext, useState, useEffect } from 'react';
|
|
5
|
-
import { Button as Button$1, Card as Card$1, CardHeader, CardContent, CardActions, Box, Typography,
|
|
5
|
+
import { Button as Button$1, Card as Card$1, CardHeader, CardContent, CardActions, Box, Typography, Menu, MenuItem, Avatar, Drawer, IconButton, FormControlLabel, useTheme, useMediaQuery, Toolbar, Icon, RadioGroup, Radio, AppBar as AppBar$1, Divider, List, ListItem, ListItemButton, ListItemText, styled as styled$1, ButtonBase, Slider, Checkbox, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
|
6
6
|
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
|
|
7
7
|
import CloseIcon from '@mui/icons-material/Close';
|
|
8
|
-
import MenuIcon from '@mui/icons-material/Menu';
|
|
9
8
|
import AppBar from '@mui/material/AppBar';
|
|
10
|
-
import Container from '@mui/material/Container';
|
|
11
9
|
import { styled } from '@mui/material/styles';
|
|
10
|
+
import MenuIcon from '@mui/icons-material/Menu';
|
|
11
|
+
import Container from '@mui/material/Container';
|
|
12
12
|
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
|
|
13
13
|
import InfoIcon from '@mui/icons-material/Info';
|
|
14
14
|
import AddIcon from '@mui/icons-material/Add';
|
|
@@ -295,12 +295,18 @@ const ammetlifeTypography = Object.assign(Object.assign({}, iglooTypography), {
|
|
|
295
295
|
* For mobile headings
|
|
296
296
|
* Font: MetLife Circular Bold
|
|
297
297
|
* ======================================== */
|
|
298
|
-
// Title Large (H1) - MetLife Circular Bold 20/28
|
|
298
|
+
// Title Large (H1) - MetLife Circular Bold 28/38 (desktop), 20/28 (mobile)
|
|
299
|
+
/* ========================================
|
|
300
|
+
* TITLE VARIANTS (Mobile)
|
|
301
|
+
* For mobile headings
|
|
302
|
+
* Font: MetLife Circular Bold
|
|
303
|
+
* ======================================== */
|
|
304
|
+
// Title Large (H1) - MetLife Circular Bold 28/38 (desktop), 20/28 (mobile)
|
|
299
305
|
titleLarge: {
|
|
300
|
-
fontSize: '
|
|
306
|
+
fontSize: '28px',
|
|
301
307
|
fontStyle: 'normal',
|
|
302
308
|
fontWeight: 700,
|
|
303
|
-
lineHeight: '
|
|
309
|
+
lineHeight: '38px',
|
|
304
310
|
letterSpacing: 0,
|
|
305
311
|
},
|
|
306
312
|
// Title Medium (H2) - MetLife Circular Bold 16/24
|
|
@@ -318,6 +324,12 @@ const ammetlifeTypography = Object.assign(Object.assign({}, iglooTypography), {
|
|
|
318
324
|
fontWeight: 700,
|
|
319
325
|
lineHeight: '20px',
|
|
320
326
|
letterSpacing: 0,
|
|
327
|
+
}, titleTiny: {
|
|
328
|
+
fontSize: '10px',
|
|
329
|
+
fontStyle: 'normal',
|
|
330
|
+
fontWeight: 700,
|
|
331
|
+
lineHeight: '20px',
|
|
332
|
+
letterSpacing: 0,
|
|
321
333
|
},
|
|
322
334
|
/* ========================================
|
|
323
335
|
* BODY STRONG VARIANTS
|
|
@@ -382,6 +394,21 @@ const ammetlifeTypography = Object.assign(Object.assign({}, iglooTypography), {
|
|
|
382
394
|
fontWeight: 400,
|
|
383
395
|
lineHeight: 'normal',
|
|
384
396
|
letterSpacing: 0,
|
|
397
|
+
}, textFieldMedium: {
|
|
398
|
+
fontSize: '14px',
|
|
399
|
+
fontStyle: 'normal',
|
|
400
|
+
fontWeight: 500,
|
|
401
|
+
lineHeight: '18px',
|
|
402
|
+
}, textFieldNormal: {
|
|
403
|
+
fontSize: '12px',
|
|
404
|
+
fontStyle: 'normal',
|
|
405
|
+
fontWeight: 400,
|
|
406
|
+
lineHeight: '16px',
|
|
407
|
+
}, optionButton: {
|
|
408
|
+
fontSize: '14px',
|
|
409
|
+
fontStyle: 'normal',
|
|
410
|
+
fontWeight: 700,
|
|
411
|
+
lineHeight: '20px',
|
|
385
412
|
} });
|
|
386
413
|
/**
|
|
387
414
|
* Typography Registry
|
|
@@ -799,6 +826,263 @@ function Banner(_a) {
|
|
|
799
826
|
return (jsxs(Box, Object.assign({ sx: Object.assign({ background, color: 'white', padding: '32px', borderRadius: '12px', textAlign: 'center' }, sx) }, props, { children: [jsx(Typography, Object.assign({ variant: "h4", component: "h2", gutterBottom: true, fontWeight: "bold" }, { children: title })), description && (jsx(Typography, Object.assign({ variant: "body1", sx: { opacity: 0.95, mb: action ? 2 : 0 } }, { children: description }))), action && jsx(Box, Object.assign({ sx: { mt: 2 } }, { children: action }))] })));
|
|
800
827
|
}
|
|
801
828
|
|
|
829
|
+
/**
|
|
830
|
+
* Styled components for Desktop Header Menu Bar
|
|
831
|
+
* Based on Figma Design: Tech-Solution-V1.0 (node 1581-22604)
|
|
832
|
+
*/
|
|
833
|
+
/**
|
|
834
|
+
* Main AppBar container
|
|
835
|
+
* Height: 80px, white background, centered content
|
|
836
|
+
*/
|
|
837
|
+
const StyledAppBar$2 = styled(AppBar)(({ theme }) => {
|
|
838
|
+
var _a;
|
|
839
|
+
return ({
|
|
840
|
+
backgroundColor: ((_a = theme.palette.background) === null || _a === void 0 ? void 0 : _a.paper) || '#ffffff',
|
|
841
|
+
boxShadow: 'none',
|
|
842
|
+
position: 'fixed',
|
|
843
|
+
top: 0,
|
|
844
|
+
left: 0,
|
|
845
|
+
right: 0,
|
|
846
|
+
zIndex: 1000,
|
|
847
|
+
height: '80px',
|
|
848
|
+
display: 'flex',
|
|
849
|
+
justifyContent: 'center',
|
|
850
|
+
});
|
|
851
|
+
});
|
|
852
|
+
/**
|
|
853
|
+
* Inner container with max-width constraint
|
|
854
|
+
* Max-width: 1128px, centered
|
|
855
|
+
*/
|
|
856
|
+
const HeaderContainer$1 = styled(Box)(({ theme }) => ({
|
|
857
|
+
display: 'flex',
|
|
858
|
+
alignItems: 'center',
|
|
859
|
+
justifyContent: 'space-between',
|
|
860
|
+
width: '100%',
|
|
861
|
+
maxWidth: '1128px',
|
|
862
|
+
margin: '0 auto',
|
|
863
|
+
padding: '0 16px',
|
|
864
|
+
height: '80px',
|
|
865
|
+
[theme.breakpoints.up('lg')]: {
|
|
866
|
+
padding: '0',
|
|
867
|
+
},
|
|
868
|
+
}));
|
|
869
|
+
/**
|
|
870
|
+
* Left section containing logo and menu items
|
|
871
|
+
*/
|
|
872
|
+
const LeftSection = styled(Box)({
|
|
873
|
+
display: 'flex',
|
|
874
|
+
alignItems: 'center',
|
|
875
|
+
gap: '32px',
|
|
876
|
+
height: '100%',
|
|
877
|
+
});
|
|
878
|
+
/**
|
|
879
|
+
* Logo container
|
|
880
|
+
*/
|
|
881
|
+
const LogoContainer$2 = styled(Box)({
|
|
882
|
+
display: 'flex',
|
|
883
|
+
alignItems: 'center',
|
|
884
|
+
cursor: 'pointer',
|
|
885
|
+
height: '100%',
|
|
886
|
+
});
|
|
887
|
+
/**
|
|
888
|
+
* Logo image
|
|
889
|
+
* Width: 126px, height: auto
|
|
890
|
+
*/
|
|
891
|
+
const LogoImage$1 = styled('img')({
|
|
892
|
+
width: '126px',
|
|
893
|
+
height: 'auto',
|
|
894
|
+
objectFit: 'contain',
|
|
895
|
+
});
|
|
896
|
+
/**
|
|
897
|
+
* Navigation menu container
|
|
898
|
+
*/
|
|
899
|
+
const NavMenu = styled(Box)({
|
|
900
|
+
display: 'flex',
|
|
901
|
+
alignItems: 'center',
|
|
902
|
+
height: '100%',
|
|
903
|
+
gap: '32px',
|
|
904
|
+
});
|
|
905
|
+
/**
|
|
906
|
+
* Individual menu item button
|
|
907
|
+
* Font: MetLife Circular Bold, 18px
|
|
908
|
+
*/
|
|
909
|
+
const MenuItemButton = styled(Button$1)(({ theme }) => {
|
|
910
|
+
var _a;
|
|
911
|
+
return ({
|
|
912
|
+
display: 'flex',
|
|
913
|
+
alignItems: 'center',
|
|
914
|
+
gap: '8px',
|
|
915
|
+
padding: '0 10px',
|
|
916
|
+
height: '100%',
|
|
917
|
+
minWidth: 'auto',
|
|
918
|
+
textTransform: 'none',
|
|
919
|
+
color: '#13131B',
|
|
920
|
+
fontFamily: '"Montserrat", "MetLife_Circular", sans-serif',
|
|
921
|
+
fontWeight: 700,
|
|
922
|
+
fontSize: '18px',
|
|
923
|
+
lineHeight: '24px',
|
|
924
|
+
letterSpacing: '0px',
|
|
925
|
+
borderRadius: 0,
|
|
926
|
+
'&:hover': {
|
|
927
|
+
backgroundColor: 'transparent',
|
|
928
|
+
color: ((_a = theme.palette.primary) === null || _a === void 0 ? void 0 : _a.main) || '#0090DA',
|
|
929
|
+
},
|
|
930
|
+
});
|
|
931
|
+
});
|
|
932
|
+
/**
|
|
933
|
+
* Menu item text
|
|
934
|
+
*/
|
|
935
|
+
const MenuItemText = styled(Typography)({
|
|
936
|
+
fontFamily: '"Montserrat", "MetLife_Circular", sans-serif',
|
|
937
|
+
fontWeight: 700,
|
|
938
|
+
fontSize: '18px',
|
|
939
|
+
lineHeight: '24px',
|
|
940
|
+
letterSpacing: '0px',
|
|
941
|
+
color: 'inherit',
|
|
942
|
+
});
|
|
943
|
+
/**
|
|
944
|
+
* Dropdown arrow icon
|
|
945
|
+
* Size: 24px
|
|
946
|
+
*/
|
|
947
|
+
const DropdownIcon = styled(ArrowDropDownIcon)({
|
|
948
|
+
width: '24px',
|
|
949
|
+
height: '24px',
|
|
950
|
+
color: '#13131B',
|
|
951
|
+
});
|
|
952
|
+
/**
|
|
953
|
+
* Right section containing login button
|
|
954
|
+
*/
|
|
955
|
+
const RightSection = styled(Box)({
|
|
956
|
+
display: 'flex',
|
|
957
|
+
alignItems: 'center',
|
|
958
|
+
height: '100%',
|
|
959
|
+
});
|
|
960
|
+
/**
|
|
961
|
+
* Login button (text style)
|
|
962
|
+
* Based on Figma: Style=Text, State=enabled, Show Icon=False
|
|
963
|
+
*/
|
|
964
|
+
const LoginButton = styled(Button$1)(({ theme }) => {
|
|
965
|
+
var _a;
|
|
966
|
+
return ({
|
|
967
|
+
display: 'flex',
|
|
968
|
+
alignItems: 'center',
|
|
969
|
+
padding: '0 10px',
|
|
970
|
+
height: '100%',
|
|
971
|
+
minWidth: 'auto',
|
|
972
|
+
textTransform: 'none',
|
|
973
|
+
color: ((_a = theme.palette.primary) === null || _a === void 0 ? void 0 : _a.main) || '#E11931',
|
|
974
|
+
fontFamily: '"Montserrat", "MetLife_Circular", sans-serif',
|
|
975
|
+
fontWeight: 700,
|
|
976
|
+
fontSize: '18px',
|
|
977
|
+
lineHeight: '24px',
|
|
978
|
+
letterSpacing: '0px',
|
|
979
|
+
borderRadius: 0,
|
|
980
|
+
backgroundColor: 'transparent',
|
|
981
|
+
'&:hover': {
|
|
982
|
+
backgroundColor: 'transparent',
|
|
983
|
+
textDecoration: 'underline',
|
|
984
|
+
},
|
|
985
|
+
});
|
|
986
|
+
});
|
|
987
|
+
/**
|
|
988
|
+
* Dropdown menu container
|
|
989
|
+
*/
|
|
990
|
+
const StyledMenu$1 = styled(Menu)(({ theme }) => ({
|
|
991
|
+
'& .MuiPaper-root': {
|
|
992
|
+
borderRadius: '16px',
|
|
993
|
+
marginTop: '8px',
|
|
994
|
+
minWidth: '200px',
|
|
995
|
+
boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.1)',
|
|
996
|
+
},
|
|
997
|
+
}));
|
|
998
|
+
/**
|
|
999
|
+
* Dropdown menu item
|
|
1000
|
+
*/
|
|
1001
|
+
const StyledMenuItem$1 = styled(MenuItem)(({ theme }) => ({
|
|
1002
|
+
display: 'flex',
|
|
1003
|
+
alignItems: 'center',
|
|
1004
|
+
gap: '12px',
|
|
1005
|
+
padding: '16px 20px',
|
|
1006
|
+
fontFamily: '"Montserrat", "MetLife_Circular", sans-serif',
|
|
1007
|
+
fontWeight: 500,
|
|
1008
|
+
fontSize: '16px',
|
|
1009
|
+
lineHeight: '24px',
|
|
1010
|
+
color: '#13131B',
|
|
1011
|
+
'&:hover': {
|
|
1012
|
+
backgroundColor: 'rgba(0, 144, 218, 0.08)',
|
|
1013
|
+
},
|
|
1014
|
+
}));
|
|
1015
|
+
/**
|
|
1016
|
+
* Menu item icon
|
|
1017
|
+
*/
|
|
1018
|
+
const MenuItemIcon = styled('img')({
|
|
1019
|
+
width: '24px',
|
|
1020
|
+
height: '24px',
|
|
1021
|
+
objectFit: 'contain',
|
|
1022
|
+
});
|
|
1023
|
+
|
|
1024
|
+
/**
|
|
1025
|
+
* DesktopHeaderMenuBar Component
|
|
1026
|
+
*
|
|
1027
|
+
* A responsive desktop header with navigation menu items and dropdown support.
|
|
1028
|
+
*
|
|
1029
|
+
* @param logo - Logo image source URL
|
|
1030
|
+
* @param logoAlt - Alt text for the logo image
|
|
1031
|
+
* @param menuItems - Array of menu items to display
|
|
1032
|
+
* @param showLoginButton - Whether to show the login button (default: true)
|
|
1033
|
+
* @param loginButtonText - Text for the login button (default: 'Log in')
|
|
1034
|
+
* @param onLogoClick - Handler for logo click
|
|
1035
|
+
* @param onLoginClick - Handler for login button click
|
|
1036
|
+
* @param formatMessage - i18n function for translations
|
|
1037
|
+
*/
|
|
1038
|
+
function DesktopHeaderMenuBar({ logo, logoAlt = 'Logo', menuItems, showLoginButton = true, loginButtonText = 'Log in', onLogoClick, onLoginClick, formatMessage = (descriptor) => descriptor.id, className, }) {
|
|
1039
|
+
// Track which dropdown is currently open
|
|
1040
|
+
const [openMenuKey, setOpenMenuKey] = React.useState(null);
|
|
1041
|
+
const [anchorEl, setAnchorEl] = React.useState(null);
|
|
1042
|
+
const handleMenuClick = (event, item) => {
|
|
1043
|
+
var _a;
|
|
1044
|
+
if (item.hasDropdown && item.subItems && item.subItems.length > 0) {
|
|
1045
|
+
// Toggle dropdown
|
|
1046
|
+
if (openMenuKey === item.key) {
|
|
1047
|
+
handleCloseMenu();
|
|
1048
|
+
}
|
|
1049
|
+
else {
|
|
1050
|
+
setAnchorEl(event.currentTarget);
|
|
1051
|
+
setOpenMenuKey(item.key);
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
else {
|
|
1055
|
+
// Direct navigation
|
|
1056
|
+
(_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);
|
|
1057
|
+
}
|
|
1058
|
+
};
|
|
1059
|
+
const handleCloseMenu = () => {
|
|
1060
|
+
setAnchorEl(null);
|
|
1061
|
+
setOpenMenuKey(null);
|
|
1062
|
+
};
|
|
1063
|
+
const handleSubItemClick = (item, subItemKey) => {
|
|
1064
|
+
var _a;
|
|
1065
|
+
const subItem = (_a = item.subItems) === null || _a === void 0 ? void 0 : _a.find((si) => si.key === subItemKey);
|
|
1066
|
+
if (subItem === null || subItem === void 0 ? void 0 : subItem.onClick) {
|
|
1067
|
+
subItem.onClick();
|
|
1068
|
+
}
|
|
1069
|
+
handleCloseMenu();
|
|
1070
|
+
};
|
|
1071
|
+
const handleLogoClick = (e) => {
|
|
1072
|
+
e.preventDefault();
|
|
1073
|
+
onLogoClick === null || onLogoClick === void 0 ? void 0 : onLogoClick();
|
|
1074
|
+
};
|
|
1075
|
+
return (jsx(StyledAppBar$2, Object.assign({ className: className }, { children: jsxs(HeaderContainer$1, { children: [jsxs(LeftSection, { children: [jsx(LogoContainer$2, Object.assign({ onClick: handleLogoClick }, { children: jsx(LogoImage$1, { src: logo, alt: logoAlt }) })), jsx(NavMenu, { children: menuItems.map((item) => (jsxs(React.Fragment, { children: [jsxs(MenuItemButton, Object.assign({ onClick: (e) => handleMenuClick(e, item), "aria-haspopup": item.hasDropdown ? 'true' : undefined, "aria-expanded": item.hasDropdown ? openMenuKey === item.key : undefined, "data-testid": `menu-item-${item.key}` }, { children: [jsx(MenuItemText, { children: formatMessage({ id: item.label }) }), item.hasDropdown && jsx(DropdownIcon, {})] })), item.hasDropdown && item.subItems && (jsx(StyledMenu$1, Object.assign({ id: `menu-${item.key}`, anchorEl: anchorEl, open: openMenuKey === item.key, onClose: handleCloseMenu, anchorOrigin: {
|
|
1076
|
+
vertical: 'bottom',
|
|
1077
|
+
horizontal: 'left',
|
|
1078
|
+
}, transformOrigin: {
|
|
1079
|
+
vertical: 'top',
|
|
1080
|
+
horizontal: 'left',
|
|
1081
|
+
}, MenuListProps: {
|
|
1082
|
+
'aria-labelledby': `menu-button-${item.key}`,
|
|
1083
|
+
} }, { children: item.subItems.map((subItem) => (jsxs(StyledMenuItem$1, Object.assign({ onClick: () => handleSubItemClick(item, subItem.key), "data-testid": `submenu-item-${subItem.key}` }, { children: [subItem.icon && (jsx(MenuItemIcon, { src: subItem.icon, alt: subItem.label })), formatMessage({ id: subItem.label })] }), subItem.key))) })))] }, item.key))) })] }), jsx(RightSection, { children: showLoginButton && (jsx(LoginButton, Object.assign({ onClick: onLoginClick, "data-testid": "header-login-button" }, { children: formatMessage({ id: loginButtonText }) }))) })] }) })));
|
|
1084
|
+
}
|
|
1085
|
+
|
|
802
1086
|
const StyledAppBar$1 = styled(AppBar)(({ theme, ispartnershippagemobileview, scrolled }) => {
|
|
803
1087
|
var _a, _b;
|
|
804
1088
|
return ({
|
|
@@ -1162,19 +1446,21 @@ const TypographyBtnText = styled(Typography)(({ theme }) => {
|
|
|
1162
1446
|
* />
|
|
1163
1447
|
* ```
|
|
1164
1448
|
*/
|
|
1165
|
-
function Header$1({ logo, alternateLogo, showAlternateLogo = false, navigationLinks, languages, currentLocale, currentLang, userToken, userFirstName, isMobile: propIsMobile, scrolled = false, isPartnershipPageMobileView = false, isPartnershipPagePCView = false, isSeoPageView = false, showGetQuoteButton = false, bannerData, ctaData, host = '', welcomeMessage, formatMessage = (descriptor) => descriptor.id, menuItems, userProfileComponent, onLogoClick, onProductMenuClick, onLanguageChange, onLoginClick, onSignupClick, onLogoutClick, onPartnershipClick, onAboutUsClick, onBlogClick, onMyProfileClick, onGetQuoteClick, onPartnershipCTAClick, }) {
|
|
1166
|
-
var _a, _b;
|
|
1449
|
+
function Header$1({ logo, alternateLogo, showAlternateLogo = false, navigationLinks, languages, currentLocale, currentLang, userToken, userFirstName, isMobile: propIsMobile, scrolled = false, isPartnershipPageMobileView = false, isPartnershipPagePCView = false, isSeoPageView = false, showGetQuoteButton = false, bannerData, ctaData, host = '', welcomeMessage, formatMessage = (descriptor) => descriptor.id, menuItems, userProfileComponent, onLogoClick, onProductMenuClick, onLanguageChange, onLoginClick, onSignupClick, onLogoutClick, onPartnershipClick, onAboutUsClick, onBlogClick, onMyProfileClick, onGetQuoteClick, onPartnershipCTAClick, useNewDesktopLayout = false, desktopMenuItems = [], }) {
|
|
1450
|
+
var _a, _b, _c;
|
|
1167
1451
|
const tenantTheme = useTenantTheme();
|
|
1168
1452
|
tenantTheme === null || tenantTheme === void 0 ? void 0 : tenantTheme.theme;
|
|
1169
1453
|
const muiTheme = useTheme();
|
|
1170
1454
|
const themeBreakpoint = useMediaQuery((_a = muiTheme === null || muiTheme === void 0 ? void 0 : muiTheme.breakpoints) === null || _a === void 0 ? void 0 : _a.down('md'));
|
|
1171
1455
|
const isMobile = propIsMobile !== undefined ? propIsMobile : themeBreakpoint;
|
|
1456
|
+
// For new desktop layout, always use actual viewport detection (ignore SSR/prop value)
|
|
1457
|
+
const isActuallyDesktop = useMediaQuery((_b = muiTheme === null || muiTheme === void 0 ? void 0 : muiTheme.breakpoints) === null || _b === void 0 ? void 0 : _b.up('md'));
|
|
1172
1458
|
const [anchorElNav, setAnchorElNav] = React.useState(null);
|
|
1173
1459
|
const [anchorElLanguage, setAnchorElLanguage] = React.useState(null);
|
|
1174
1460
|
const [anchorElUserMenu, setAnchorElUserMenu] = React.useState(null);
|
|
1175
1461
|
const shouldShowContent = (!isPartnershipPagePCView || (isPartnershipPagePCView && !scrolled)) &&
|
|
1176
1462
|
(!isSeoPageView || (isSeoPageView && !scrolled));
|
|
1177
|
-
const firstName1stLetter = ((
|
|
1463
|
+
const firstName1stLetter = ((_c = userFirstName === null || userFirstName === void 0 ? void 0 : userFirstName.trim()) === null || _c === void 0 ? void 0 : _c.slice(0, 1)) || '';
|
|
1178
1464
|
const handleOpenNavMenu = (event) => {
|
|
1179
1465
|
setAnchorElNav(event.currentTarget);
|
|
1180
1466
|
};
|
|
@@ -1193,6 +1479,27 @@ function Header$1({ logo, alternateLogo, showAlternateLogo = false, navigationLi
|
|
|
1193
1479
|
const handleCloseUserMenu = () => {
|
|
1194
1480
|
setAnchorElUserMenu(null);
|
|
1195
1481
|
};
|
|
1482
|
+
// Convert desktopMenuItems to MenuItemWithDropdown format for DesktopHeaderMenuBar
|
|
1483
|
+
const convertedDesktopMenuItems = desktopMenuItems.map((item) => {
|
|
1484
|
+
var _a;
|
|
1485
|
+
return ({
|
|
1486
|
+
key: item.key,
|
|
1487
|
+
label: item.label,
|
|
1488
|
+
hasDropdown: item.hasDropdown,
|
|
1489
|
+
subItems: (_a = item.subItems) === null || _a === void 0 ? void 0 : _a.map((subItem) => ({
|
|
1490
|
+
key: subItem.key,
|
|
1491
|
+
label: subItem.label,
|
|
1492
|
+
icon: subItem.icon,
|
|
1493
|
+
onClick: subItem.onClick,
|
|
1494
|
+
})),
|
|
1495
|
+
onClick: item.onClick,
|
|
1496
|
+
});
|
|
1497
|
+
});
|
|
1498
|
+
// Render new desktop layout when enabled and on actual desktop viewport
|
|
1499
|
+
// Uses isActuallyDesktop to avoid SSR/prop issues with isMobile detection
|
|
1500
|
+
if (useNewDesktopLayout && isActuallyDesktop) {
|
|
1501
|
+
return (jsx(DesktopHeaderMenuBar, { logo: logo, logoAlt: "Logo", menuItems: convertedDesktopMenuItems, showLoginButton: !userToken, loginButtonText: "Log in", onLogoClick: onLogoClick, onLoginClick: onLoginClick, formatMessage: formatMessage }));
|
|
1502
|
+
}
|
|
1196
1503
|
return (jsx(StyledAppBar$1, Object.assign({ ispartnershippagemobileview: isPartnershipPageMobileView, scrolled: scrolled }, { children: jsx(ResponsiveB2CLayout, { children: jsx(StyledContainer, Object.assign({ ispartnershippagemobileview: isPartnershipPageMobileView, scrolled: scrolled, maxWidth: "xl" }, { children: jsxs(Toolbar, Object.assign({ disableGutters: true }, { children: [jsx("a", Object.assign({ href: host || '#', onClick: (e) => {
|
|
1197
1504
|
e === null || e === void 0 ? void 0 : e.preventDefault();
|
|
1198
1505
|
onLogoClick === null || onLogoClick === void 0 ? void 0 : onLogoClick();
|
|
@@ -2852,7 +3159,7 @@ const CheckoutHeader = ({ progress, product, sectionTitle, sectionDescription, s
|
|
|
2852
3159
|
return (jsxs(HeaderContainer, Object.assign({ sticky: sticky, sx: sx }, { children: [jsx(CheckoutProgress, Object.assign({}, progress, { progressBarTheme: progressBarTheme })), product && (jsx(Box, Object.assign({ sx: { padding: '0 16px 24px' } }, { children: jsx(ProductCard, Object.assign({}, product)) }))), jsxs(SectionHeader, { children: [jsx(SectionTitle$2, { children: sectionTitle }), jsx(SectionDescription, { children: sectionDescription })] })] })));
|
|
2853
3160
|
};
|
|
2854
3161
|
|
|
2855
|
-
const ButtonContainer = styled(Box)(({ isFixed }) => ({
|
|
3162
|
+
const ButtonContainer = styled(Box)(({ isFixed, desktopRightAligned }) => ({
|
|
2856
3163
|
position: isFixed ? 'fixed' : 'relative',
|
|
2857
3164
|
bottom: 0,
|
|
2858
3165
|
left: 0,
|
|
@@ -2861,34 +3168,51 @@ const ButtonContainer = styled(Box)(({ isFixed }) => ({
|
|
|
2861
3168
|
padding: '16px',
|
|
2862
3169
|
boxShadow: isFixed ? '0px 2px 10px 0px rgba(0, 0, 0, 0.12)' : 'none',
|
|
2863
3170
|
zIndex: 999,
|
|
3171
|
+
// Desktop styles for right-aligned button
|
|
3172
|
+
'@media (min-width: 900px)': desktopRightAligned
|
|
3173
|
+
? {
|
|
3174
|
+
display: 'flex',
|
|
3175
|
+
justifyContent: 'flex-end',
|
|
3176
|
+
maxWidth: '938px',
|
|
3177
|
+
margin: '0 auto',
|
|
3178
|
+
padding: '24px 24px',
|
|
3179
|
+
backgroundColor: 'transparent',
|
|
3180
|
+
boxShadow: 'none',
|
|
3181
|
+
position: 'relative',
|
|
3182
|
+
}
|
|
3183
|
+
: {},
|
|
2864
3184
|
}));
|
|
2865
|
-
const StyledButton = styled('button')(({
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
3185
|
+
const StyledButton = styled('button')(({ isDisabled, desktopWidth }) => ({
|
|
3186
|
+
width: '100%',
|
|
3187
|
+
height: '48px',
|
|
3188
|
+
borderRadius: '24px',
|
|
3189
|
+
border: 'none',
|
|
3190
|
+
backgroundColor: isDisabled
|
|
3191
|
+
? '#E1E2EB'
|
|
3192
|
+
: '#0090DA',
|
|
3193
|
+
color: isDisabled ? '#929094' : '#fff',
|
|
3194
|
+
fontFamily: 'Montserrat',
|
|
3195
|
+
fontSize: '14px',
|
|
3196
|
+
fontWeight: 500,
|
|
3197
|
+
lineHeight: '18px',
|
|
3198
|
+
cursor: isDisabled ? 'not-allowed' : 'pointer',
|
|
3199
|
+
transition: 'all 0.2s ease',
|
|
3200
|
+
'&:hover': {
|
|
2872
3201
|
backgroundColor: isDisabled
|
|
2873
3202
|
? '#E1E2EB'
|
|
2874
|
-
: '#
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
? '#E1E2EB'
|
|
2885
|
-
: ((_b = (_a = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _a === void 0 ? void 0 : _a.primary) === null || _b === void 0 ? void 0 : _b.dark) || '#2a2a33',
|
|
2886
|
-
},
|
|
2887
|
-
});
|
|
2888
|
-
});
|
|
3203
|
+
: '#007bb8',
|
|
3204
|
+
},
|
|
3205
|
+
// Desktop styles for fixed width button
|
|
3206
|
+
'@media (min-width: 900px)': desktopWidth
|
|
3207
|
+
? {
|
|
3208
|
+
width: desktopWidth,
|
|
3209
|
+
minWidth: desktopWidth,
|
|
3210
|
+
}
|
|
3211
|
+
: {},
|
|
3212
|
+
}));
|
|
2889
3213
|
|
|
2890
|
-
const CheckoutFormButton = ({ text = 'Next', disabled = false, onClick, fixed = true, type = 'button', sx, loading = false, }) => {
|
|
2891
|
-
return (jsx(ButtonContainer, Object.assign({ isFixed: fixed, sx: sx }, { children: jsx(StyledButton, Object.assign({ type: type, disabled: disabled || loading, isDisabled: disabled || loading, onClick: onClick }, { children: loading ? 'Processing...' : text })) })));
|
|
3214
|
+
const CheckoutFormButton = ({ text = 'Next', disabled = false, onClick, fixed = true, type = 'button', sx, loading = false, desktopRightAligned = false, desktopWidth = '180px', }) => {
|
|
3215
|
+
return (jsx(ButtonContainer, Object.assign({ isFixed: fixed, desktopRightAligned: desktopRightAligned, sx: sx }, { children: jsx(StyledButton, Object.assign({ type: type, disabled: disabled || loading, isDisabled: disabled || loading, desktopWidth: desktopRightAligned ? desktopWidth : undefined, onClick: onClick }, { children: loading ? 'Processing...' : text })) })));
|
|
2892
3216
|
};
|
|
2893
3217
|
|
|
2894
3218
|
const QuestionContainer = styled(Box)({
|
|
@@ -2941,6 +3265,41 @@ const HealthQuestionGroup = ({ question, questionNumber, value, onChange, error,
|
|
|
2941
3265
|
const FormContainer$3 = styled(Box)({
|
|
2942
3266
|
padding: '0 16px 24px',
|
|
2943
3267
|
});
|
|
3268
|
+
/**
|
|
3269
|
+
* Desktop form container - constrains content to 938px max-width and centers it
|
|
3270
|
+
*/
|
|
3271
|
+
const DesktopFormContainer$3 = styled(Box)({
|
|
3272
|
+
padding: '0 16px 24px',
|
|
3273
|
+
'@media (min-width: 900px)': {
|
|
3274
|
+
maxWidth: '938px',
|
|
3275
|
+
margin: '0 auto',
|
|
3276
|
+
padding: '0 0 24px',
|
|
3277
|
+
},
|
|
3278
|
+
});
|
|
3279
|
+
/**
|
|
3280
|
+
* Fields grid container - displays fields in 2-column grid on desktop
|
|
3281
|
+
*/
|
|
3282
|
+
const FieldsGridContainer$2 = styled(Box)({
|
|
3283
|
+
display: 'flex',
|
|
3284
|
+
flexDirection: 'column',
|
|
3285
|
+
gap: '24px',
|
|
3286
|
+
'@media (min-width: 900px)': {
|
|
3287
|
+
display: 'grid',
|
|
3288
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
3289
|
+
gap: '24px',
|
|
3290
|
+
'& > *': {
|
|
3291
|
+
minWidth: 0,
|
|
3292
|
+
},
|
|
3293
|
+
},
|
|
3294
|
+
});
|
|
3295
|
+
/**
|
|
3296
|
+
* Full width field - spans both columns on desktop grid
|
|
3297
|
+
*/
|
|
3298
|
+
const FullWidthField$2 = styled(Box)({
|
|
3299
|
+
'@media (min-width: 900px)': {
|
|
3300
|
+
gridColumn: '1 / -1',
|
|
3301
|
+
},
|
|
3302
|
+
});
|
|
2944
3303
|
const CheckboxContainer$1 = styled(Box)({
|
|
2945
3304
|
marginTop: '12px',
|
|
2946
3305
|
'& .MuiFormControlLabel-root': {
|
|
@@ -2959,33 +3318,82 @@ const CheckboxLabel$1 = styled(Typography)({
|
|
|
2959
3318
|
lineHeight: '18px',
|
|
2960
3319
|
});
|
|
2961
3320
|
|
|
2962
|
-
const PersonalInformationForm = ({ renderField, fields, consents, onSubmit, formRef, sx, }) => {
|
|
3321
|
+
const PersonalInformationForm = ({ renderField, fields, consents, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
|
|
2963
3322
|
const defaultBankConfirmationLabel = 'I confirm this bank account is mine and consent to AmMetLife crediting payouts to it';
|
|
2964
3323
|
const defaultMarketingLabel = 'I/We consent to AmMetLife Insurance Berhad using my personal data for marketing and communication via digital platforms such as email, WhatsApp, and mobile';
|
|
2965
|
-
|
|
3324
|
+
const Container = desktopGridLayout ? DesktopFormContainer$3 : FormContainer$3;
|
|
3325
|
+
const FieldsWrapper = desktopGridLayout ? FieldsGridContainer$2 : Box;
|
|
3326
|
+
const fieldsWrapperProps = desktopGridLayout
|
|
3327
|
+
? {}
|
|
3328
|
+
: { sx: { display: 'flex', flexDirection: 'column', gap: '24px' } };
|
|
3329
|
+
return (jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxs(FieldsWrapper, Object.assign({}, fieldsWrapperProps, { children: [jsxs(Box, { children: [renderField(fields.full_name), fields.full_name.helperText && (jsx(Typography, Object.assign({ variant: "caption", sx: {
|
|
2966
3330
|
display: 'block',
|
|
2967
3331
|
mt: 0.5,
|
|
2968
3332
|
ml: 2,
|
|
2969
3333
|
color: '#5F5E62',
|
|
2970
3334
|
fontSize: '12px',
|
|
2971
3335
|
fontFamily: 'Montserrat',
|
|
2972
|
-
} }, { children: fields.full_name.helperText })))] }), renderField(fields.nric), renderField(fields.date_of_birth), renderField(fields.gender), renderField(fields.salutation), renderField(fields.nationality), renderField(fields.occupation), renderField(fields.industry), renderField(fields.crediting_bank_name), renderField(fields.crediting_bank_account_number), jsxs(CheckboxContainer$1, { children: [jsx(FormControlLabel, { control: jsx(Checkbox, { checked: consents.bank_account_confirmation.checked, onChange: (e) => consents.bank_account_confirmation.onChange(e.target.checked), name: "bank_account_confirmation" }), label: jsx(CheckboxLabel$1, { children: consents.bank_account_confirmation.label ||
|
|
3336
|
+
} }, { children: fields.full_name.helperText })))] }), renderField(fields.nric), renderField(fields.date_of_birth), renderField(fields.gender), renderField(fields.salutation), renderField(fields.nationality), renderField(fields.occupation), renderField(fields.industry), renderField(fields.crediting_bank_name), renderField(fields.crediting_bank_account_number), desktopGridLayout ? (jsx(FullWidthField$2, { children: jsxs(CheckboxContainer$1, { children: [jsx(FormControlLabel, { control: jsx(Checkbox, { checked: consents.bank_account_confirmation.checked, onChange: (e) => consents.bank_account_confirmation.onChange(e.target.checked), name: "bank_account_confirmation" }), label: jsx(CheckboxLabel$1, { children: consents.bank_account_confirmation.label ||
|
|
3337
|
+
defaultBankConfirmationLabel }) }), consents.bank_account_confirmation.error && (jsx(Typography, Object.assign({ sx: {
|
|
3338
|
+
color: 'error.main',
|
|
3339
|
+
fontSize: '12px',
|
|
3340
|
+
mt: 0.5,
|
|
3341
|
+
ml: 4,
|
|
3342
|
+
} }, { children: consents.bank_account_confirmation.error })))] }) })) : (jsxs(CheckboxContainer$1, { children: [jsx(FormControlLabel, { control: jsx(Checkbox, { checked: consents.bank_account_confirmation.checked, onChange: (e) => consents.bank_account_confirmation.onChange(e.target.checked), name: "bank_account_confirmation" }), label: jsx(CheckboxLabel$1, { children: consents.bank_account_confirmation.label ||
|
|
2973
3343
|
defaultBankConfirmationLabel }) }), consents.bank_account_confirmation.error && (jsx(Typography, Object.assign({ sx: {
|
|
2974
3344
|
color: 'error.main',
|
|
2975
3345
|
fontSize: '12px',
|
|
2976
3346
|
mt: 0.5,
|
|
2977
3347
|
ml: 4,
|
|
2978
|
-
} }, { children: consents.bank_account_confirmation.error })))] }), jsx(CheckboxContainer$1, { children: jsx(FormControlLabel, { control: jsx(Checkbox, { checked: consents.marketing_consent.checked, onChange: (e) => consents.marketing_consent.onChange(e.target.checked), name: "marketing_consent" }), label: jsx(CheckboxLabel$1, { children: consents.marketing_consent.label || defaultMarketingLabel }) }) })] })) })));
|
|
3348
|
+
} }, { children: consents.bank_account_confirmation.error })))] })), desktopGridLayout ? (jsx(FullWidthField$2, { children: jsx(CheckboxContainer$1, { children: jsx(FormControlLabel, { control: jsx(Checkbox, { checked: consents.marketing_consent.checked, onChange: (e) => consents.marketing_consent.onChange(e.target.checked), name: "marketing_consent" }), label: jsx(CheckboxLabel$1, { children: consents.marketing_consent.label || defaultMarketingLabel }) }) }) })) : (jsx(CheckboxContainer$1, { children: jsx(FormControlLabel, { control: jsx(Checkbox, { checked: consents.marketing_consent.checked, onChange: (e) => consents.marketing_consent.onChange(e.target.checked), name: "marketing_consent" }), label: jsx(CheckboxLabel$1, { children: consents.marketing_consent.label || defaultMarketingLabel }) }) }))] })) })));
|
|
2979
3349
|
};
|
|
2980
3350
|
|
|
2981
3351
|
const FormContainer$2 = styled(Box)({
|
|
2982
3352
|
padding: '0 16px 24px',
|
|
2983
3353
|
});
|
|
3354
|
+
/**
|
|
3355
|
+
* Desktop form container - constrains content to 938px max-width and centers it
|
|
3356
|
+
*/
|
|
3357
|
+
const DesktopFormContainer$2 = styled(Box)({
|
|
3358
|
+
padding: '0 16px 24px',
|
|
3359
|
+
'@media (min-width: 900px)': {
|
|
3360
|
+
maxWidth: '938px',
|
|
3361
|
+
margin: '0 auto',
|
|
3362
|
+
padding: '0 0 24px',
|
|
3363
|
+
},
|
|
3364
|
+
});
|
|
3365
|
+
/**
|
|
3366
|
+
* Fields grid container - displays fields in 2-column grid on desktop
|
|
3367
|
+
*/
|
|
3368
|
+
const FieldsGridContainer$1 = styled(Box)({
|
|
3369
|
+
display: 'flex',
|
|
3370
|
+
flexDirection: 'column',
|
|
3371
|
+
gap: '24px',
|
|
3372
|
+
'@media (min-width: 900px)': {
|
|
3373
|
+
display: 'grid',
|
|
3374
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
3375
|
+
gap: '24px',
|
|
3376
|
+
'& > *': {
|
|
3377
|
+
minWidth: 0,
|
|
3378
|
+
},
|
|
3379
|
+
},
|
|
3380
|
+
});
|
|
3381
|
+
/**
|
|
3382
|
+
* Full width field - spans both columns on desktop grid
|
|
3383
|
+
*/
|
|
3384
|
+
const FullWidthField$1 = styled(Box)({
|
|
3385
|
+
'@media (min-width: 900px)': {
|
|
3386
|
+
gridColumn: '1 / -1',
|
|
3387
|
+
},
|
|
3388
|
+
});
|
|
2984
3389
|
const CheckboxContainer = styled(Box)({
|
|
2985
3390
|
marginTop: '12px',
|
|
2986
3391
|
'& .MuiFormControlLabel-root': {
|
|
2987
3392
|
alignItems: 'flex-start',
|
|
2988
3393
|
marginLeft: 0,
|
|
3394
|
+
'@media (min-width: 900px)': {
|
|
3395
|
+
alignItems: 'center',
|
|
3396
|
+
},
|
|
2989
3397
|
},
|
|
2990
3398
|
'& .MuiCheckbox-root': {
|
|
2991
3399
|
padding: '4px 8px 4px 0',
|
|
@@ -3006,9 +3414,36 @@ const SectionTitle$1 = styled(Typography)({
|
|
|
3006
3414
|
lineHeight: '24px',
|
|
3007
3415
|
});
|
|
3008
3416
|
|
|
3009
|
-
const ContactDetailsForm = ({ renderField, fields, mailingFields, mailingAddressSame, onSubmit, formRef, sx, }) => {
|
|
3417
|
+
const ContactDetailsForm = ({ renderField, fields, mailingFields, mailingAddressSame, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
|
|
3010
3418
|
const defaultMailingLabel = 'My mailing address is not the same as residential';
|
|
3011
|
-
|
|
3419
|
+
const Container = desktopGridLayout ? DesktopFormContainer$2 : FormContainer$2;
|
|
3420
|
+
// Helper to render field with or without full width wrapper
|
|
3421
|
+
const renderFieldWithLayout = (field, fullWidth = false) => {
|
|
3422
|
+
if (desktopGridLayout && fullWidth) {
|
|
3423
|
+
return jsx(FullWidthField$1, { children: renderField(field) });
|
|
3424
|
+
}
|
|
3425
|
+
return renderField(field);
|
|
3426
|
+
};
|
|
3427
|
+
// Helper to render field with helper text
|
|
3428
|
+
const renderFieldWithHelperText = (field, fullWidth = false) => {
|
|
3429
|
+
const content = (jsxs(Box, { children: [renderField(field), field.helperText && (jsx(Box, Object.assign({ component: "span", sx: {
|
|
3430
|
+
display: 'block',
|
|
3431
|
+
mt: 0.5,
|
|
3432
|
+
color: '#5F5E62',
|
|
3433
|
+
fontSize: '12px',
|
|
3434
|
+
fontFamily: 'Montserrat',
|
|
3435
|
+
} }, { children: field.helperText })))] }));
|
|
3436
|
+
if (desktopGridLayout && fullWidth) {
|
|
3437
|
+
return jsx(FullWidthField$1, { children: content });
|
|
3438
|
+
}
|
|
3439
|
+
return content;
|
|
3440
|
+
};
|
|
3441
|
+
return (jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: desktopGridLayout ? (jsxs(FieldsGridContainer$1, { children: [renderFieldWithHelperText(fields.phone_number, false), renderFieldWithLayout(fields.email_address, false), jsx(FullWidthField$1, { children: jsx(Divider, { sx: { borderColor: 'rgba(0,0,0,0.1)' } }) }), jsx(FullWidthField$1, { children: jsx(SectionTitle$1, { children: "Residential address" }) }), renderFieldWithHelperText(fields.residential_address_line1, false), renderFieldWithHelperText(fields.residential_address_line2, false), renderField(fields.postal_code), renderField(fields.city), renderField(fields.state), jsx(FullWidthField$1, { children: jsx(Divider, { sx: { borderColor: 'rgba(0,0,0,0.1)' } }) }), (mailingAddressSame === null || mailingAddressSame === void 0 ? void 0 : mailingAddressSame.checked) && mailingFields && (jsxs(Fragment, { children: [jsx(FullWidthField$1, { children: jsx(SectionTitle$1, { children: "Mailing address" }) }), renderFieldWithHelperText(mailingFields.mailing_address_line1, false), renderFieldWithHelperText(mailingFields.mailing_address_line2, false), renderField(mailingFields.mailing_postal_code), renderField(mailingFields.mailing_city), renderField(mailingFields.mailing_state)] })), mailingAddressSame && (jsx(FullWidthField$1, { children: jsx(CheckboxContainer, { children: jsx(FormControlLabel, { control: jsx(Checkbox, { checked: mailingAddressSame.checked, onChange: (e) => mailingAddressSame.onChange(e.target.checked), name: "mailing_not_same_as_residential", sx: {
|
|
3442
|
+
color: '#929094',
|
|
3443
|
+
'&.Mui-checked': {
|
|
3444
|
+
color: '#317abc',
|
|
3445
|
+
},
|
|
3446
|
+
} }), label: jsx(CheckboxLabel, { children: mailingAddressSame.label || defaultMailingLabel }) }) }) }))] })) : (jsxs(Box, Object.assign({ sx: { display: 'flex', flexDirection: 'column', gap: '24px' } }, { children: [jsxs(Box, { children: [renderField(fields.phone_number), fields.phone_number.helperText && (jsx(Box, Object.assign({ component: "span", sx: {
|
|
3012
3447
|
display: 'block',
|
|
3013
3448
|
mt: 0.5,
|
|
3014
3449
|
ml: 2,
|
|
@@ -3044,23 +3479,96 @@ const ContactDetailsForm = ({ renderField, fields, mailingFields, mailingAddress
|
|
|
3044
3479
|
'&.Mui-checked': {
|
|
3045
3480
|
color: '#317abc',
|
|
3046
3481
|
},
|
|
3047
|
-
} }), label: jsx(CheckboxLabel, { children: mailingAddressSame.label || defaultMailingLabel }) }) }))] })) })));
|
|
3482
|
+
} }), label: jsx(CheckboxLabel, { children: mailingAddressSame.label || defaultMailingLabel }) }) }))] }))) })));
|
|
3048
3483
|
};
|
|
3049
3484
|
|
|
3050
3485
|
const FormContainer$1 = styled(Box)({
|
|
3051
3486
|
padding: '0 16px 24px',
|
|
3052
3487
|
});
|
|
3488
|
+
/**
|
|
3489
|
+
* Desktop form container - constrains content to 938px max-width and centers it
|
|
3490
|
+
*/
|
|
3491
|
+
const DesktopFormContainer$1 = styled(Box)({
|
|
3492
|
+
padding: '0 16px 24px',
|
|
3493
|
+
'@media (min-width: 900px)': {
|
|
3494
|
+
maxWidth: '938px',
|
|
3495
|
+
margin: '0 auto',
|
|
3496
|
+
padding: '0 0 24px',
|
|
3497
|
+
},
|
|
3498
|
+
});
|
|
3499
|
+
/**
|
|
3500
|
+
* Measurement fields grid - displays weight and height side by side on desktop
|
|
3501
|
+
*/
|
|
3502
|
+
const MeasurementFieldsGrid = styled(Box)({
|
|
3503
|
+
display: 'flex',
|
|
3504
|
+
flexDirection: 'column',
|
|
3505
|
+
gap: '24px',
|
|
3506
|
+
'@media (min-width: 900px)': {
|
|
3507
|
+
display: 'grid',
|
|
3508
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
3509
|
+
gap: '24px',
|
|
3510
|
+
},
|
|
3511
|
+
});
|
|
3053
3512
|
|
|
3054
|
-
const HealthInformationForm = ({ renderField, measurementFields, healthQuestions, onSubmit, formRef, sx, }) => {
|
|
3055
|
-
|
|
3513
|
+
const HealthInformationForm = ({ renderField, measurementFields, healthQuestions, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
|
|
3514
|
+
const Container = desktopGridLayout ? DesktopFormContainer$1 : FormContainer$1;
|
|
3515
|
+
return (jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxs(Box, Object.assign({ sx: { display: 'flex', flexDirection: 'column', gap: '24px' } }, { children: [desktopGridLayout ? (jsxs(MeasurementFieldsGrid, { children: [renderField(measurementFields.weight), renderField(measurementFields.height)] })) : (jsxs(Fragment, { children: [renderField(measurementFields.weight), renderField(measurementFields.height)] })), healthQuestions.map((question, index) => (jsx(HealthQuestionGroup, { question: question.question, questionNumber: question.questionNumber, value: question.value, onChange: question.onChange, error: question.error, labels: question.labels }, question.name || index)))] })) })));
|
|
3056
3516
|
};
|
|
3057
3517
|
|
|
3058
3518
|
const FormContainer = styled(Box)({
|
|
3059
3519
|
padding: '0 16px 24px',
|
|
3060
3520
|
});
|
|
3521
|
+
/**
|
|
3522
|
+
* Desktop form container - constrains content to 938px max-width and centers it
|
|
3523
|
+
*/
|
|
3524
|
+
const DesktopFormContainer = styled(Box)({
|
|
3525
|
+
padding: '0 16px 24px',
|
|
3526
|
+
'@media (min-width: 900px)': {
|
|
3527
|
+
maxWidth: '938px',
|
|
3528
|
+
margin: '0 auto',
|
|
3529
|
+
padding: '0 0 24px',
|
|
3530
|
+
},
|
|
3531
|
+
});
|
|
3532
|
+
/**
|
|
3533
|
+
* Fields grid container - displays fields in 2-column grid on desktop
|
|
3534
|
+
*/
|
|
3535
|
+
const FieldsGridContainer = styled(Box)({
|
|
3536
|
+
display: 'flex',
|
|
3537
|
+
flexDirection: 'column',
|
|
3538
|
+
gap: '24px',
|
|
3539
|
+
'@media (min-width: 900px)': {
|
|
3540
|
+
display: 'grid',
|
|
3541
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
3542
|
+
gap: '24px',
|
|
3543
|
+
'& > *': {
|
|
3544
|
+
minWidth: 0,
|
|
3545
|
+
},
|
|
3546
|
+
},
|
|
3547
|
+
});
|
|
3548
|
+
/**
|
|
3549
|
+
* Full width field - spans both columns on desktop grid
|
|
3550
|
+
*/
|
|
3551
|
+
const FullWidthField = styled(Box)({
|
|
3552
|
+
'@media (min-width: 900px)': {
|
|
3553
|
+
gridColumn: '1 / -1',
|
|
3554
|
+
},
|
|
3555
|
+
});
|
|
3061
3556
|
|
|
3062
|
-
const ChildInformationForm = ({ renderField, fields, onSubmit, formRef, sx, }) => {
|
|
3063
|
-
|
|
3557
|
+
const ChildInformationForm = ({ renderField, fields, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
|
|
3558
|
+
const Container = desktopGridLayout ? DesktopFormContainer : FormContainer;
|
|
3559
|
+
// Desktop layout with 2-column grid
|
|
3560
|
+
if (desktopGridLayout) {
|
|
3561
|
+
return (jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxs(FieldsGridContainer, { children: [jsxs(FullWidthField, { children: [renderField(fields.full_name), fields.full_name.helperText && (jsx(Box, Object.assign({ component: "span", sx: {
|
|
3562
|
+
display: 'block',
|
|
3563
|
+
mt: 0.5,
|
|
3564
|
+
ml: 2,
|
|
3565
|
+
color: '#5F5E62',
|
|
3566
|
+
fontSize: '12px',
|
|
3567
|
+
fontFamily: 'Montserrat',
|
|
3568
|
+
} }, { children: fields.full_name.helperText })))] }), fields.nric && (jsx(FullWidthField, { children: renderField(fields.nric) })), renderField(fields.date_of_birth), renderField(fields.gender), renderField(fields.nationality)] }) })));
|
|
3569
|
+
}
|
|
3570
|
+
// Mobile layout - single column
|
|
3571
|
+
return (jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxs(Box, Object.assign({ sx: { display: 'flex', flexDirection: 'column', gap: '24px' } }, { children: [jsxs(Box, { children: [renderField(fields.full_name), fields.full_name.helperText && (jsx(Box, Object.assign({ component: "span", sx: {
|
|
3064
3572
|
display: 'block',
|
|
3065
3573
|
mt: 0.5,
|
|
3066
3574
|
ml: 2,
|
|
@@ -3257,8 +3765,8 @@ const BenefitTitle = styled$1(Typography)(({ theme }) => ({
|
|
|
3257
3765
|
lineHeight: '20px',
|
|
3258
3766
|
margin: 0,
|
|
3259
3767
|
[theme.breakpoints.up('md')]: {
|
|
3260
|
-
fontSize: '
|
|
3261
|
-
lineHeight: '
|
|
3768
|
+
fontSize: '18px',
|
|
3769
|
+
lineHeight: '24px',
|
|
3262
3770
|
},
|
|
3263
3771
|
}));
|
|
3264
3772
|
const BenefitDescription = styled$1(Typography)(({ theme }) => ({
|
|
@@ -3267,7 +3775,7 @@ const BenefitDescription = styled$1(Typography)(({ theme }) => ({
|
|
|
3267
3775
|
lineHeight: '18px',
|
|
3268
3776
|
margin: 0,
|
|
3269
3777
|
[theme.breakpoints.up('md')]: {
|
|
3270
|
-
fontSize: '
|
|
3778
|
+
fontSize: '16px',
|
|
3271
3779
|
lineHeight: '20px',
|
|
3272
3780
|
},
|
|
3273
3781
|
}));
|
|
@@ -3434,5 +3942,5 @@ function getIconPath(iconName) {
|
|
|
3434
3942
|
return ICON_PATHS[iconName];
|
|
3435
3943
|
}
|
|
3436
3944
|
|
|
3437
|
-
export { Banner, BenefitsSummary, BillingToggle, Button, Card, CheckoutFormButton, CheckoutHeader, CheckoutProgress, ChildInformationForm, ContactDetailsForm, CoverageAmountSlider, FAQAccordion, Footer, Header$1 as Header, HealthInformationForm, HealthQuestionGroup, ICON_PATHS, InfoCallout, NewHeader, OptionButton, PersonalInformationForm, ProductCard, ProductSelectionDrawer, QuestionSection, RecommendationsDrawer, TenantThemeProvider, ToggleGroup, ammetlifeTheme, ammetlifeTypography, cimbTheme, cimbTypography, createThemeCSSVariables, getAvailableTenants, getIconPath, getTenantAssetPath, getTenantLogoPath, getTenantTheme, getTenantTypography, getThemeColor, iglooTheme, iglooTypography, isValidTenantId, mergeTenantTheme, tenantThemes, tenantTypography, useIsTenant, useTenantAsset, useTenantFavicon, useTenantId, useTenantLogo, useTenantTheme };
|
|
3945
|
+
export { Banner, BenefitsSummary, BillingToggle, Button, Card, CheckoutFormButton, CheckoutHeader, CheckoutProgress, ChildInformationForm, ContactDetailsForm, CoverageAmountSlider, DesktopHeaderMenuBar, FAQAccordion, Footer, Header$1 as Header, HealthInformationForm, HealthQuestionGroup, ICON_PATHS, InfoCallout, NewHeader, OptionButton, PersonalInformationForm, ProductCard, ProductSelectionDrawer, QuestionSection, RecommendationsDrawer, TenantThemeProvider, ToggleGroup, ammetlifeTheme, ammetlifeTypography, cimbTheme, cimbTypography, createThemeCSSVariables, getAvailableTenants, getIconPath, getTenantAssetPath, getTenantLogoPath, getTenantTheme, getTenantTypography, getThemeColor, iglooTheme, iglooTypography, isValidTenantId, mergeTenantTheme, tenantThemes, tenantTypography, useIsTenant, useTenantAsset, useTenantFavicon, useTenantId, useTenantLogo, useTenantTheme };
|
|
3438
3946
|
//# sourceMappingURL=index.js.map
|