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/cjs/index.js
CHANGED
|
@@ -6,10 +6,10 @@ var React = require('react');
|
|
|
6
6
|
var material = require('@mui/material');
|
|
7
7
|
var ArrowDropDownIcon = require('@mui/icons-material/ArrowDropDown');
|
|
8
8
|
var CloseIcon = require('@mui/icons-material/Close');
|
|
9
|
-
var MenuIcon = require('@mui/icons-material/Menu');
|
|
10
9
|
var AppBar = require('@mui/material/AppBar');
|
|
11
|
-
var Container = require('@mui/material/Container');
|
|
12
10
|
var styles = require('@mui/material/styles');
|
|
11
|
+
var MenuIcon = require('@mui/icons-material/Menu');
|
|
12
|
+
var Container = require('@mui/material/Container');
|
|
13
13
|
var ArrowBackIcon = require('@mui/icons-material/ArrowBack');
|
|
14
14
|
var InfoIcon = require('@mui/icons-material/Info');
|
|
15
15
|
var AddIcon = require('@mui/icons-material/Add');
|
|
@@ -315,12 +315,18 @@ const ammetlifeTypography = Object.assign(Object.assign({}, iglooTypography), {
|
|
|
315
315
|
* For mobile headings
|
|
316
316
|
* Font: MetLife Circular Bold
|
|
317
317
|
* ======================================== */
|
|
318
|
-
// Title Large (H1) - MetLife Circular Bold 20/28
|
|
318
|
+
// Title Large (H1) - MetLife Circular Bold 28/38 (desktop), 20/28 (mobile)
|
|
319
|
+
/* ========================================
|
|
320
|
+
* TITLE VARIANTS (Mobile)
|
|
321
|
+
* For mobile headings
|
|
322
|
+
* Font: MetLife Circular Bold
|
|
323
|
+
* ======================================== */
|
|
324
|
+
// Title Large (H1) - MetLife Circular Bold 28/38 (desktop), 20/28 (mobile)
|
|
319
325
|
titleLarge: {
|
|
320
|
-
fontSize: '
|
|
326
|
+
fontSize: '28px',
|
|
321
327
|
fontStyle: 'normal',
|
|
322
328
|
fontWeight: 700,
|
|
323
|
-
lineHeight: '
|
|
329
|
+
lineHeight: '38px',
|
|
324
330
|
letterSpacing: 0,
|
|
325
331
|
},
|
|
326
332
|
// Title Medium (H2) - MetLife Circular Bold 16/24
|
|
@@ -338,6 +344,12 @@ const ammetlifeTypography = Object.assign(Object.assign({}, iglooTypography), {
|
|
|
338
344
|
fontWeight: 700,
|
|
339
345
|
lineHeight: '20px',
|
|
340
346
|
letterSpacing: 0,
|
|
347
|
+
}, titleTiny: {
|
|
348
|
+
fontSize: '10px',
|
|
349
|
+
fontStyle: 'normal',
|
|
350
|
+
fontWeight: 700,
|
|
351
|
+
lineHeight: '20px',
|
|
352
|
+
letterSpacing: 0,
|
|
341
353
|
},
|
|
342
354
|
/* ========================================
|
|
343
355
|
* BODY STRONG VARIANTS
|
|
@@ -402,6 +414,21 @@ const ammetlifeTypography = Object.assign(Object.assign({}, iglooTypography), {
|
|
|
402
414
|
fontWeight: 400,
|
|
403
415
|
lineHeight: 'normal',
|
|
404
416
|
letterSpacing: 0,
|
|
417
|
+
}, textFieldMedium: {
|
|
418
|
+
fontSize: '14px',
|
|
419
|
+
fontStyle: 'normal',
|
|
420
|
+
fontWeight: 500,
|
|
421
|
+
lineHeight: '18px',
|
|
422
|
+
}, textFieldNormal: {
|
|
423
|
+
fontSize: '12px',
|
|
424
|
+
fontStyle: 'normal',
|
|
425
|
+
fontWeight: 400,
|
|
426
|
+
lineHeight: '16px',
|
|
427
|
+
}, optionButton: {
|
|
428
|
+
fontSize: '14px',
|
|
429
|
+
fontStyle: 'normal',
|
|
430
|
+
fontWeight: 700,
|
|
431
|
+
lineHeight: '20px',
|
|
405
432
|
} });
|
|
406
433
|
/**
|
|
407
434
|
* Typography Registry
|
|
@@ -819,6 +846,263 @@ function Banner(_a) {
|
|
|
819
846
|
return (jsxRuntime.jsxs(material.Box, Object.assign({ sx: Object.assign({ background, color: 'white', padding: '32px', borderRadius: '12px', textAlign: 'center' }, sx) }, props, { children: [jsxRuntime.jsx(material.Typography, Object.assign({ variant: "h4", component: "h2", gutterBottom: true, fontWeight: "bold" }, { children: title })), description && (jsxRuntime.jsx(material.Typography, Object.assign({ variant: "body1", sx: { opacity: 0.95, mb: action ? 2 : 0 } }, { children: description }))), action && jsxRuntime.jsx(material.Box, Object.assign({ sx: { mt: 2 } }, { children: action }))] })));
|
|
820
847
|
}
|
|
821
848
|
|
|
849
|
+
/**
|
|
850
|
+
* Styled components for Desktop Header Menu Bar
|
|
851
|
+
* Based on Figma Design: Tech-Solution-V1.0 (node 1581-22604)
|
|
852
|
+
*/
|
|
853
|
+
/**
|
|
854
|
+
* Main AppBar container
|
|
855
|
+
* Height: 80px, white background, centered content
|
|
856
|
+
*/
|
|
857
|
+
const StyledAppBar$2 = styles.styled(AppBar)(({ theme }) => {
|
|
858
|
+
var _a;
|
|
859
|
+
return ({
|
|
860
|
+
backgroundColor: ((_a = theme.palette.background) === null || _a === void 0 ? void 0 : _a.paper) || '#ffffff',
|
|
861
|
+
boxShadow: 'none',
|
|
862
|
+
position: 'fixed',
|
|
863
|
+
top: 0,
|
|
864
|
+
left: 0,
|
|
865
|
+
right: 0,
|
|
866
|
+
zIndex: 1000,
|
|
867
|
+
height: '80px',
|
|
868
|
+
display: 'flex',
|
|
869
|
+
justifyContent: 'center',
|
|
870
|
+
});
|
|
871
|
+
});
|
|
872
|
+
/**
|
|
873
|
+
* Inner container with max-width constraint
|
|
874
|
+
* Max-width: 1128px, centered
|
|
875
|
+
*/
|
|
876
|
+
const HeaderContainer$1 = styles.styled(material.Box)(({ theme }) => ({
|
|
877
|
+
display: 'flex',
|
|
878
|
+
alignItems: 'center',
|
|
879
|
+
justifyContent: 'space-between',
|
|
880
|
+
width: '100%',
|
|
881
|
+
maxWidth: '1128px',
|
|
882
|
+
margin: '0 auto',
|
|
883
|
+
padding: '0 16px',
|
|
884
|
+
height: '80px',
|
|
885
|
+
[theme.breakpoints.up('lg')]: {
|
|
886
|
+
padding: '0',
|
|
887
|
+
},
|
|
888
|
+
}));
|
|
889
|
+
/**
|
|
890
|
+
* Left section containing logo and menu items
|
|
891
|
+
*/
|
|
892
|
+
const LeftSection = styles.styled(material.Box)({
|
|
893
|
+
display: 'flex',
|
|
894
|
+
alignItems: 'center',
|
|
895
|
+
gap: '32px',
|
|
896
|
+
height: '100%',
|
|
897
|
+
});
|
|
898
|
+
/**
|
|
899
|
+
* Logo container
|
|
900
|
+
*/
|
|
901
|
+
const LogoContainer$2 = styles.styled(material.Box)({
|
|
902
|
+
display: 'flex',
|
|
903
|
+
alignItems: 'center',
|
|
904
|
+
cursor: 'pointer',
|
|
905
|
+
height: '100%',
|
|
906
|
+
});
|
|
907
|
+
/**
|
|
908
|
+
* Logo image
|
|
909
|
+
* Width: 126px, height: auto
|
|
910
|
+
*/
|
|
911
|
+
const LogoImage$1 = styles.styled('img')({
|
|
912
|
+
width: '126px',
|
|
913
|
+
height: 'auto',
|
|
914
|
+
objectFit: 'contain',
|
|
915
|
+
});
|
|
916
|
+
/**
|
|
917
|
+
* Navigation menu container
|
|
918
|
+
*/
|
|
919
|
+
const NavMenu = styles.styled(material.Box)({
|
|
920
|
+
display: 'flex',
|
|
921
|
+
alignItems: 'center',
|
|
922
|
+
height: '100%',
|
|
923
|
+
gap: '32px',
|
|
924
|
+
});
|
|
925
|
+
/**
|
|
926
|
+
* Individual menu item button
|
|
927
|
+
* Font: MetLife Circular Bold, 18px
|
|
928
|
+
*/
|
|
929
|
+
const MenuItemButton = styles.styled(material.Button)(({ theme }) => {
|
|
930
|
+
var _a;
|
|
931
|
+
return ({
|
|
932
|
+
display: 'flex',
|
|
933
|
+
alignItems: 'center',
|
|
934
|
+
gap: '8px',
|
|
935
|
+
padding: '0 10px',
|
|
936
|
+
height: '100%',
|
|
937
|
+
minWidth: 'auto',
|
|
938
|
+
textTransform: 'none',
|
|
939
|
+
color: '#13131B',
|
|
940
|
+
fontFamily: '"Montserrat", "MetLife_Circular", sans-serif',
|
|
941
|
+
fontWeight: 700,
|
|
942
|
+
fontSize: '18px',
|
|
943
|
+
lineHeight: '24px',
|
|
944
|
+
letterSpacing: '0px',
|
|
945
|
+
borderRadius: 0,
|
|
946
|
+
'&:hover': {
|
|
947
|
+
backgroundColor: 'transparent',
|
|
948
|
+
color: ((_a = theme.palette.primary) === null || _a === void 0 ? void 0 : _a.main) || '#0090DA',
|
|
949
|
+
},
|
|
950
|
+
});
|
|
951
|
+
});
|
|
952
|
+
/**
|
|
953
|
+
* Menu item text
|
|
954
|
+
*/
|
|
955
|
+
const MenuItemText = styles.styled(material.Typography)({
|
|
956
|
+
fontFamily: '"Montserrat", "MetLife_Circular", sans-serif',
|
|
957
|
+
fontWeight: 700,
|
|
958
|
+
fontSize: '18px',
|
|
959
|
+
lineHeight: '24px',
|
|
960
|
+
letterSpacing: '0px',
|
|
961
|
+
color: 'inherit',
|
|
962
|
+
});
|
|
963
|
+
/**
|
|
964
|
+
* Dropdown arrow icon
|
|
965
|
+
* Size: 24px
|
|
966
|
+
*/
|
|
967
|
+
const DropdownIcon = styles.styled(ArrowDropDownIcon)({
|
|
968
|
+
width: '24px',
|
|
969
|
+
height: '24px',
|
|
970
|
+
color: '#13131B',
|
|
971
|
+
});
|
|
972
|
+
/**
|
|
973
|
+
* Right section containing login button
|
|
974
|
+
*/
|
|
975
|
+
const RightSection = styles.styled(material.Box)({
|
|
976
|
+
display: 'flex',
|
|
977
|
+
alignItems: 'center',
|
|
978
|
+
height: '100%',
|
|
979
|
+
});
|
|
980
|
+
/**
|
|
981
|
+
* Login button (text style)
|
|
982
|
+
* Based on Figma: Style=Text, State=enabled, Show Icon=False
|
|
983
|
+
*/
|
|
984
|
+
const LoginButton = styles.styled(material.Button)(({ theme }) => {
|
|
985
|
+
var _a;
|
|
986
|
+
return ({
|
|
987
|
+
display: 'flex',
|
|
988
|
+
alignItems: 'center',
|
|
989
|
+
padding: '0 10px',
|
|
990
|
+
height: '100%',
|
|
991
|
+
minWidth: 'auto',
|
|
992
|
+
textTransform: 'none',
|
|
993
|
+
color: ((_a = theme.palette.primary) === null || _a === void 0 ? void 0 : _a.main) || '#E11931',
|
|
994
|
+
fontFamily: '"Montserrat", "MetLife_Circular", sans-serif',
|
|
995
|
+
fontWeight: 700,
|
|
996
|
+
fontSize: '18px',
|
|
997
|
+
lineHeight: '24px',
|
|
998
|
+
letterSpacing: '0px',
|
|
999
|
+
borderRadius: 0,
|
|
1000
|
+
backgroundColor: 'transparent',
|
|
1001
|
+
'&:hover': {
|
|
1002
|
+
backgroundColor: 'transparent',
|
|
1003
|
+
textDecoration: 'underline',
|
|
1004
|
+
},
|
|
1005
|
+
});
|
|
1006
|
+
});
|
|
1007
|
+
/**
|
|
1008
|
+
* Dropdown menu container
|
|
1009
|
+
*/
|
|
1010
|
+
const StyledMenu$1 = styles.styled(material.Menu)(({ theme }) => ({
|
|
1011
|
+
'& .MuiPaper-root': {
|
|
1012
|
+
borderRadius: '16px',
|
|
1013
|
+
marginTop: '8px',
|
|
1014
|
+
minWidth: '200px',
|
|
1015
|
+
boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.1)',
|
|
1016
|
+
},
|
|
1017
|
+
}));
|
|
1018
|
+
/**
|
|
1019
|
+
* Dropdown menu item
|
|
1020
|
+
*/
|
|
1021
|
+
const StyledMenuItem$1 = styles.styled(material.MenuItem)(({ theme }) => ({
|
|
1022
|
+
display: 'flex',
|
|
1023
|
+
alignItems: 'center',
|
|
1024
|
+
gap: '12px',
|
|
1025
|
+
padding: '16px 20px',
|
|
1026
|
+
fontFamily: '"Montserrat", "MetLife_Circular", sans-serif',
|
|
1027
|
+
fontWeight: 500,
|
|
1028
|
+
fontSize: '16px',
|
|
1029
|
+
lineHeight: '24px',
|
|
1030
|
+
color: '#13131B',
|
|
1031
|
+
'&:hover': {
|
|
1032
|
+
backgroundColor: 'rgba(0, 144, 218, 0.08)',
|
|
1033
|
+
},
|
|
1034
|
+
}));
|
|
1035
|
+
/**
|
|
1036
|
+
* Menu item icon
|
|
1037
|
+
*/
|
|
1038
|
+
const MenuItemIcon = styles.styled('img')({
|
|
1039
|
+
width: '24px',
|
|
1040
|
+
height: '24px',
|
|
1041
|
+
objectFit: 'contain',
|
|
1042
|
+
});
|
|
1043
|
+
|
|
1044
|
+
/**
|
|
1045
|
+
* DesktopHeaderMenuBar Component
|
|
1046
|
+
*
|
|
1047
|
+
* A responsive desktop header with navigation menu items and dropdown support.
|
|
1048
|
+
*
|
|
1049
|
+
* @param logo - Logo image source URL
|
|
1050
|
+
* @param logoAlt - Alt text for the logo image
|
|
1051
|
+
* @param menuItems - Array of menu items to display
|
|
1052
|
+
* @param showLoginButton - Whether to show the login button (default: true)
|
|
1053
|
+
* @param loginButtonText - Text for the login button (default: 'Log in')
|
|
1054
|
+
* @param onLogoClick - Handler for logo click
|
|
1055
|
+
* @param onLoginClick - Handler for login button click
|
|
1056
|
+
* @param formatMessage - i18n function for translations
|
|
1057
|
+
*/
|
|
1058
|
+
function DesktopHeaderMenuBar({ logo, logoAlt = 'Logo', menuItems, showLoginButton = true, loginButtonText = 'Log in', onLogoClick, onLoginClick, formatMessage = (descriptor) => descriptor.id, className, }) {
|
|
1059
|
+
// Track which dropdown is currently open
|
|
1060
|
+
const [openMenuKey, setOpenMenuKey] = React__namespace.useState(null);
|
|
1061
|
+
const [anchorEl, setAnchorEl] = React__namespace.useState(null);
|
|
1062
|
+
const handleMenuClick = (event, item) => {
|
|
1063
|
+
var _a;
|
|
1064
|
+
if (item.hasDropdown && item.subItems && item.subItems.length > 0) {
|
|
1065
|
+
// Toggle dropdown
|
|
1066
|
+
if (openMenuKey === item.key) {
|
|
1067
|
+
handleCloseMenu();
|
|
1068
|
+
}
|
|
1069
|
+
else {
|
|
1070
|
+
setAnchorEl(event.currentTarget);
|
|
1071
|
+
setOpenMenuKey(item.key);
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
else {
|
|
1075
|
+
// Direct navigation
|
|
1076
|
+
(_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);
|
|
1077
|
+
}
|
|
1078
|
+
};
|
|
1079
|
+
const handleCloseMenu = () => {
|
|
1080
|
+
setAnchorEl(null);
|
|
1081
|
+
setOpenMenuKey(null);
|
|
1082
|
+
};
|
|
1083
|
+
const handleSubItemClick = (item, subItemKey) => {
|
|
1084
|
+
var _a;
|
|
1085
|
+
const subItem = (_a = item.subItems) === null || _a === void 0 ? void 0 : _a.find((si) => si.key === subItemKey);
|
|
1086
|
+
if (subItem === null || subItem === void 0 ? void 0 : subItem.onClick) {
|
|
1087
|
+
subItem.onClick();
|
|
1088
|
+
}
|
|
1089
|
+
handleCloseMenu();
|
|
1090
|
+
};
|
|
1091
|
+
const handleLogoClick = (e) => {
|
|
1092
|
+
e.preventDefault();
|
|
1093
|
+
onLogoClick === null || onLogoClick === void 0 ? void 0 : onLogoClick();
|
|
1094
|
+
};
|
|
1095
|
+
return (jsxRuntime.jsx(StyledAppBar$2, Object.assign({ className: className }, { children: jsxRuntime.jsxs(HeaderContainer$1, { children: [jsxRuntime.jsxs(LeftSection, { children: [jsxRuntime.jsx(LogoContainer$2, Object.assign({ onClick: handleLogoClick }, { children: jsxRuntime.jsx(LogoImage$1, { src: logo, alt: logoAlt }) })), jsxRuntime.jsx(NavMenu, { children: menuItems.map((item) => (jsxRuntime.jsxs(React__namespace.Fragment, { children: [jsxRuntime.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: [jsxRuntime.jsx(MenuItemText, { children: formatMessage({ id: item.label }) }), item.hasDropdown && jsxRuntime.jsx(DropdownIcon, {})] })), item.hasDropdown && item.subItems && (jsxRuntime.jsx(StyledMenu$1, Object.assign({ id: `menu-${item.key}`, anchorEl: anchorEl, open: openMenuKey === item.key, onClose: handleCloseMenu, anchorOrigin: {
|
|
1096
|
+
vertical: 'bottom',
|
|
1097
|
+
horizontal: 'left',
|
|
1098
|
+
}, transformOrigin: {
|
|
1099
|
+
vertical: 'top',
|
|
1100
|
+
horizontal: 'left',
|
|
1101
|
+
}, MenuListProps: {
|
|
1102
|
+
'aria-labelledby': `menu-button-${item.key}`,
|
|
1103
|
+
} }, { children: item.subItems.map((subItem) => (jsxRuntime.jsxs(StyledMenuItem$1, Object.assign({ onClick: () => handleSubItemClick(item, subItem.key), "data-testid": `submenu-item-${subItem.key}` }, { children: [subItem.icon && (jsxRuntime.jsx(MenuItemIcon, { src: subItem.icon, alt: subItem.label })), formatMessage({ id: subItem.label })] }), subItem.key))) })))] }, item.key))) })] }), jsxRuntime.jsx(RightSection, { children: showLoginButton && (jsxRuntime.jsx(LoginButton, Object.assign({ onClick: onLoginClick, "data-testid": "header-login-button" }, { children: formatMessage({ id: loginButtonText }) }))) })] }) })));
|
|
1104
|
+
}
|
|
1105
|
+
|
|
822
1106
|
const StyledAppBar$1 = styles.styled(AppBar)(({ theme, ispartnershippagemobileview, scrolled }) => {
|
|
823
1107
|
var _a, _b;
|
|
824
1108
|
return ({
|
|
@@ -1182,19 +1466,21 @@ const TypographyBtnText = styles.styled(material.Typography)(({ theme }) => {
|
|
|
1182
1466
|
* />
|
|
1183
1467
|
* ```
|
|
1184
1468
|
*/
|
|
1185
|
-
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, }) {
|
|
1186
|
-
var _a, _b;
|
|
1469
|
+
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 = [], }) {
|
|
1470
|
+
var _a, _b, _c;
|
|
1187
1471
|
const tenantTheme = useTenantTheme();
|
|
1188
1472
|
tenantTheme === null || tenantTheme === void 0 ? void 0 : tenantTheme.theme;
|
|
1189
1473
|
const muiTheme = material.useTheme();
|
|
1190
1474
|
const themeBreakpoint = material.useMediaQuery((_a = muiTheme === null || muiTheme === void 0 ? void 0 : muiTheme.breakpoints) === null || _a === void 0 ? void 0 : _a.down('md'));
|
|
1191
1475
|
const isMobile = propIsMobile !== undefined ? propIsMobile : themeBreakpoint;
|
|
1476
|
+
// For new desktop layout, always use actual viewport detection (ignore SSR/prop value)
|
|
1477
|
+
const isActuallyDesktop = material.useMediaQuery((_b = muiTheme === null || muiTheme === void 0 ? void 0 : muiTheme.breakpoints) === null || _b === void 0 ? void 0 : _b.up('md'));
|
|
1192
1478
|
const [anchorElNav, setAnchorElNav] = React__namespace.useState(null);
|
|
1193
1479
|
const [anchorElLanguage, setAnchorElLanguage] = React__namespace.useState(null);
|
|
1194
1480
|
const [anchorElUserMenu, setAnchorElUserMenu] = React__namespace.useState(null);
|
|
1195
1481
|
const shouldShowContent = (!isPartnershipPagePCView || (isPartnershipPagePCView && !scrolled)) &&
|
|
1196
1482
|
(!isSeoPageView || (isSeoPageView && !scrolled));
|
|
1197
|
-
const firstName1stLetter = ((
|
|
1483
|
+
const firstName1stLetter = ((_c = userFirstName === null || userFirstName === void 0 ? void 0 : userFirstName.trim()) === null || _c === void 0 ? void 0 : _c.slice(0, 1)) || '';
|
|
1198
1484
|
const handleOpenNavMenu = (event) => {
|
|
1199
1485
|
setAnchorElNav(event.currentTarget);
|
|
1200
1486
|
};
|
|
@@ -1213,6 +1499,27 @@ function Header$1({ logo, alternateLogo, showAlternateLogo = false, navigationLi
|
|
|
1213
1499
|
const handleCloseUserMenu = () => {
|
|
1214
1500
|
setAnchorElUserMenu(null);
|
|
1215
1501
|
};
|
|
1502
|
+
// Convert desktopMenuItems to MenuItemWithDropdown format for DesktopHeaderMenuBar
|
|
1503
|
+
const convertedDesktopMenuItems = desktopMenuItems.map((item) => {
|
|
1504
|
+
var _a;
|
|
1505
|
+
return ({
|
|
1506
|
+
key: item.key,
|
|
1507
|
+
label: item.label,
|
|
1508
|
+
hasDropdown: item.hasDropdown,
|
|
1509
|
+
subItems: (_a = item.subItems) === null || _a === void 0 ? void 0 : _a.map((subItem) => ({
|
|
1510
|
+
key: subItem.key,
|
|
1511
|
+
label: subItem.label,
|
|
1512
|
+
icon: subItem.icon,
|
|
1513
|
+
onClick: subItem.onClick,
|
|
1514
|
+
})),
|
|
1515
|
+
onClick: item.onClick,
|
|
1516
|
+
});
|
|
1517
|
+
});
|
|
1518
|
+
// Render new desktop layout when enabled and on actual desktop viewport
|
|
1519
|
+
// Uses isActuallyDesktop to avoid SSR/prop issues with isMobile detection
|
|
1520
|
+
if (useNewDesktopLayout && isActuallyDesktop) {
|
|
1521
|
+
return (jsxRuntime.jsx(DesktopHeaderMenuBar, { logo: logo, logoAlt: "Logo", menuItems: convertedDesktopMenuItems, showLoginButton: !userToken, loginButtonText: "Log in", onLogoClick: onLogoClick, onLoginClick: onLoginClick, formatMessage: formatMessage }));
|
|
1522
|
+
}
|
|
1216
1523
|
return (jsxRuntime.jsx(StyledAppBar$1, Object.assign({ ispartnershippagemobileview: isPartnershipPageMobileView, scrolled: scrolled }, { children: jsxRuntime.jsx(ResponsiveB2CLayout, { children: jsxRuntime.jsx(StyledContainer, Object.assign({ ispartnershippagemobileview: isPartnershipPageMobileView, scrolled: scrolled, maxWidth: "xl" }, { children: jsxRuntime.jsxs(material.Toolbar, Object.assign({ disableGutters: true }, { children: [jsxRuntime.jsx("a", Object.assign({ href: host || '#', onClick: (e) => {
|
|
1217
1524
|
e === null || e === void 0 ? void 0 : e.preventDefault();
|
|
1218
1525
|
onLogoClick === null || onLogoClick === void 0 ? void 0 : onLogoClick();
|
|
@@ -2872,7 +3179,7 @@ const CheckoutHeader = ({ progress, product, sectionTitle, sectionDescription, s
|
|
|
2872
3179
|
return (jsxRuntime.jsxs(HeaderContainer, Object.assign({ sticky: sticky, sx: sx }, { children: [jsxRuntime.jsx(CheckoutProgress, Object.assign({}, progress, { progressBarTheme: progressBarTheme })), product && (jsxRuntime.jsx(material.Box, Object.assign({ sx: { padding: '0 16px 24px' } }, { children: jsxRuntime.jsx(ProductCard, Object.assign({}, product)) }))), jsxRuntime.jsxs(SectionHeader, { children: [jsxRuntime.jsx(SectionTitle$2, { children: sectionTitle }), jsxRuntime.jsx(SectionDescription, { children: sectionDescription })] })] })));
|
|
2873
3180
|
};
|
|
2874
3181
|
|
|
2875
|
-
const ButtonContainer = styles.styled(material.Box)(({ isFixed }) => ({
|
|
3182
|
+
const ButtonContainer = styles.styled(material.Box)(({ isFixed, desktopRightAligned }) => ({
|
|
2876
3183
|
position: isFixed ? 'fixed' : 'relative',
|
|
2877
3184
|
bottom: 0,
|
|
2878
3185
|
left: 0,
|
|
@@ -2881,34 +3188,51 @@ const ButtonContainer = styles.styled(material.Box)(({ isFixed }) => ({
|
|
|
2881
3188
|
padding: '16px',
|
|
2882
3189
|
boxShadow: isFixed ? '0px 2px 10px 0px rgba(0, 0, 0, 0.12)' : 'none',
|
|
2883
3190
|
zIndex: 999,
|
|
3191
|
+
// Desktop styles for right-aligned button
|
|
3192
|
+
'@media (min-width: 900px)': desktopRightAligned
|
|
3193
|
+
? {
|
|
3194
|
+
display: 'flex',
|
|
3195
|
+
justifyContent: 'flex-end',
|
|
3196
|
+
maxWidth: '938px',
|
|
3197
|
+
margin: '0 auto',
|
|
3198
|
+
padding: '24px 24px',
|
|
3199
|
+
backgroundColor: 'transparent',
|
|
3200
|
+
boxShadow: 'none',
|
|
3201
|
+
position: 'relative',
|
|
3202
|
+
}
|
|
3203
|
+
: {},
|
|
2884
3204
|
}));
|
|
2885
|
-
const StyledButton = styles.styled('button')(({
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
3205
|
+
const StyledButton = styles.styled('button')(({ isDisabled, desktopWidth }) => ({
|
|
3206
|
+
width: '100%',
|
|
3207
|
+
height: '48px',
|
|
3208
|
+
borderRadius: '24px',
|
|
3209
|
+
border: 'none',
|
|
3210
|
+
backgroundColor: isDisabled
|
|
3211
|
+
? '#E1E2EB'
|
|
3212
|
+
: '#0090DA',
|
|
3213
|
+
color: isDisabled ? '#929094' : '#fff',
|
|
3214
|
+
fontFamily: 'Montserrat',
|
|
3215
|
+
fontSize: '14px',
|
|
3216
|
+
fontWeight: 500,
|
|
3217
|
+
lineHeight: '18px',
|
|
3218
|
+
cursor: isDisabled ? 'not-allowed' : 'pointer',
|
|
3219
|
+
transition: 'all 0.2s ease',
|
|
3220
|
+
'&:hover': {
|
|
2892
3221
|
backgroundColor: isDisabled
|
|
2893
3222
|
? '#E1E2EB'
|
|
2894
|
-
: '#
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
? '#E1E2EB'
|
|
2905
|
-
: ((_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',
|
|
2906
|
-
},
|
|
2907
|
-
});
|
|
2908
|
-
});
|
|
3223
|
+
: '#007bb8',
|
|
3224
|
+
},
|
|
3225
|
+
// Desktop styles for fixed width button
|
|
3226
|
+
'@media (min-width: 900px)': desktopWidth
|
|
3227
|
+
? {
|
|
3228
|
+
width: desktopWidth,
|
|
3229
|
+
minWidth: desktopWidth,
|
|
3230
|
+
}
|
|
3231
|
+
: {},
|
|
3232
|
+
}));
|
|
2909
3233
|
|
|
2910
|
-
const CheckoutFormButton = ({ text = 'Next', disabled = false, onClick, fixed = true, type = 'button', sx, loading = false, }) => {
|
|
2911
|
-
return (jsxRuntime.jsx(ButtonContainer, Object.assign({ isFixed: fixed, sx: sx }, { children: jsxRuntime.jsx(StyledButton, Object.assign({ type: type, disabled: disabled || loading, isDisabled: disabled || loading, onClick: onClick }, { children: loading ? 'Processing...' : text })) })));
|
|
3234
|
+
const CheckoutFormButton = ({ text = 'Next', disabled = false, onClick, fixed = true, type = 'button', sx, loading = false, desktopRightAligned = false, desktopWidth = '180px', }) => {
|
|
3235
|
+
return (jsxRuntime.jsx(ButtonContainer, Object.assign({ isFixed: fixed, desktopRightAligned: desktopRightAligned, sx: sx }, { children: jsxRuntime.jsx(StyledButton, Object.assign({ type: type, disabled: disabled || loading, isDisabled: disabled || loading, desktopWidth: desktopRightAligned ? desktopWidth : undefined, onClick: onClick }, { children: loading ? 'Processing...' : text })) })));
|
|
2912
3236
|
};
|
|
2913
3237
|
|
|
2914
3238
|
const QuestionContainer = styles.styled(material.Box)({
|
|
@@ -2961,6 +3285,41 @@ const HealthQuestionGroup = ({ question, questionNumber, value, onChange, error,
|
|
|
2961
3285
|
const FormContainer$3 = styles.styled(material.Box)({
|
|
2962
3286
|
padding: '0 16px 24px',
|
|
2963
3287
|
});
|
|
3288
|
+
/**
|
|
3289
|
+
* Desktop form container - constrains content to 938px max-width and centers it
|
|
3290
|
+
*/
|
|
3291
|
+
const DesktopFormContainer$3 = styles.styled(material.Box)({
|
|
3292
|
+
padding: '0 16px 24px',
|
|
3293
|
+
'@media (min-width: 900px)': {
|
|
3294
|
+
maxWidth: '938px',
|
|
3295
|
+
margin: '0 auto',
|
|
3296
|
+
padding: '0 0 24px',
|
|
3297
|
+
},
|
|
3298
|
+
});
|
|
3299
|
+
/**
|
|
3300
|
+
* Fields grid container - displays fields in 2-column grid on desktop
|
|
3301
|
+
*/
|
|
3302
|
+
const FieldsGridContainer$2 = styles.styled(material.Box)({
|
|
3303
|
+
display: 'flex',
|
|
3304
|
+
flexDirection: 'column',
|
|
3305
|
+
gap: '24px',
|
|
3306
|
+
'@media (min-width: 900px)': {
|
|
3307
|
+
display: 'grid',
|
|
3308
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
3309
|
+
gap: '24px',
|
|
3310
|
+
'& > *': {
|
|
3311
|
+
minWidth: 0,
|
|
3312
|
+
},
|
|
3313
|
+
},
|
|
3314
|
+
});
|
|
3315
|
+
/**
|
|
3316
|
+
* Full width field - spans both columns on desktop grid
|
|
3317
|
+
*/
|
|
3318
|
+
const FullWidthField$2 = styles.styled(material.Box)({
|
|
3319
|
+
'@media (min-width: 900px)': {
|
|
3320
|
+
gridColumn: '1 / -1',
|
|
3321
|
+
},
|
|
3322
|
+
});
|
|
2964
3323
|
const CheckboxContainer$1 = styles.styled(material.Box)({
|
|
2965
3324
|
marginTop: '12px',
|
|
2966
3325
|
'& .MuiFormControlLabel-root': {
|
|
@@ -2979,33 +3338,82 @@ const CheckboxLabel$1 = styles.styled(material.Typography)({
|
|
|
2979
3338
|
lineHeight: '18px',
|
|
2980
3339
|
});
|
|
2981
3340
|
|
|
2982
|
-
const PersonalInformationForm = ({ renderField, fields, consents, onSubmit, formRef, sx, }) => {
|
|
3341
|
+
const PersonalInformationForm = ({ renderField, fields, consents, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
|
|
2983
3342
|
const defaultBankConfirmationLabel = 'I confirm this bank account is mine and consent to AmMetLife crediting payouts to it';
|
|
2984
3343
|
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';
|
|
2985
|
-
|
|
3344
|
+
const Container = desktopGridLayout ? DesktopFormContainer$3 : FormContainer$3;
|
|
3345
|
+
const FieldsWrapper = desktopGridLayout ? FieldsGridContainer$2 : material.Box;
|
|
3346
|
+
const fieldsWrapperProps = desktopGridLayout
|
|
3347
|
+
? {}
|
|
3348
|
+
: { sx: { display: 'flex', flexDirection: 'column', gap: '24px' } };
|
|
3349
|
+
return (jsxRuntime.jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxRuntime.jsxs(FieldsWrapper, Object.assign({}, fieldsWrapperProps, { children: [jsxRuntime.jsxs(material.Box, { children: [renderField(fields.full_name), fields.full_name.helperText && (jsxRuntime.jsx(material.Typography, Object.assign({ variant: "caption", sx: {
|
|
2986
3350
|
display: 'block',
|
|
2987
3351
|
mt: 0.5,
|
|
2988
3352
|
ml: 2,
|
|
2989
3353
|
color: '#5F5E62',
|
|
2990
3354
|
fontSize: '12px',
|
|
2991
3355
|
fontFamily: 'Montserrat',
|
|
2992
|
-
} }, { 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), jsxRuntime.jsxs(CheckboxContainer$1, { children: [jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: consents.bank_account_confirmation.checked, onChange: (e) => consents.bank_account_confirmation.onChange(e.target.checked), name: "bank_account_confirmation" }), label: jsxRuntime.jsx(CheckboxLabel$1, { children: consents.bank_account_confirmation.label ||
|
|
3356
|
+
} }, { 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 ? (jsxRuntime.jsx(FullWidthField$2, { children: jsxRuntime.jsxs(CheckboxContainer$1, { children: [jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: consents.bank_account_confirmation.checked, onChange: (e) => consents.bank_account_confirmation.onChange(e.target.checked), name: "bank_account_confirmation" }), label: jsxRuntime.jsx(CheckboxLabel$1, { children: consents.bank_account_confirmation.label ||
|
|
3357
|
+
defaultBankConfirmationLabel }) }), consents.bank_account_confirmation.error && (jsxRuntime.jsx(material.Typography, Object.assign({ sx: {
|
|
3358
|
+
color: 'error.main',
|
|
3359
|
+
fontSize: '12px',
|
|
3360
|
+
mt: 0.5,
|
|
3361
|
+
ml: 4,
|
|
3362
|
+
} }, { children: consents.bank_account_confirmation.error })))] }) })) : (jsxRuntime.jsxs(CheckboxContainer$1, { children: [jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: consents.bank_account_confirmation.checked, onChange: (e) => consents.bank_account_confirmation.onChange(e.target.checked), name: "bank_account_confirmation" }), label: jsxRuntime.jsx(CheckboxLabel$1, { children: consents.bank_account_confirmation.label ||
|
|
2993
3363
|
defaultBankConfirmationLabel }) }), consents.bank_account_confirmation.error && (jsxRuntime.jsx(material.Typography, Object.assign({ sx: {
|
|
2994
3364
|
color: 'error.main',
|
|
2995
3365
|
fontSize: '12px',
|
|
2996
3366
|
mt: 0.5,
|
|
2997
3367
|
ml: 4,
|
|
2998
|
-
} }, { children: consents.bank_account_confirmation.error })))] }), jsxRuntime.jsx(CheckboxContainer$1, { children: jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: consents.marketing_consent.checked, onChange: (e) => consents.marketing_consent.onChange(e.target.checked), name: "marketing_consent" }), label: jsxRuntime.jsx(CheckboxLabel$1, { children: consents.marketing_consent.label || defaultMarketingLabel }) }) })] })) })));
|
|
3368
|
+
} }, { children: consents.bank_account_confirmation.error })))] })), desktopGridLayout ? (jsxRuntime.jsx(FullWidthField$2, { children: jsxRuntime.jsx(CheckboxContainer$1, { children: jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: consents.marketing_consent.checked, onChange: (e) => consents.marketing_consent.onChange(e.target.checked), name: "marketing_consent" }), label: jsxRuntime.jsx(CheckboxLabel$1, { children: consents.marketing_consent.label || defaultMarketingLabel }) }) }) })) : (jsxRuntime.jsx(CheckboxContainer$1, { children: jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: consents.marketing_consent.checked, onChange: (e) => consents.marketing_consent.onChange(e.target.checked), name: "marketing_consent" }), label: jsxRuntime.jsx(CheckboxLabel$1, { children: consents.marketing_consent.label || defaultMarketingLabel }) }) }))] })) })));
|
|
2999
3369
|
};
|
|
3000
3370
|
|
|
3001
3371
|
const FormContainer$2 = styles.styled(material.Box)({
|
|
3002
3372
|
padding: '0 16px 24px',
|
|
3003
3373
|
});
|
|
3374
|
+
/**
|
|
3375
|
+
* Desktop form container - constrains content to 938px max-width and centers it
|
|
3376
|
+
*/
|
|
3377
|
+
const DesktopFormContainer$2 = styles.styled(material.Box)({
|
|
3378
|
+
padding: '0 16px 24px',
|
|
3379
|
+
'@media (min-width: 900px)': {
|
|
3380
|
+
maxWidth: '938px',
|
|
3381
|
+
margin: '0 auto',
|
|
3382
|
+
padding: '0 0 24px',
|
|
3383
|
+
},
|
|
3384
|
+
});
|
|
3385
|
+
/**
|
|
3386
|
+
* Fields grid container - displays fields in 2-column grid on desktop
|
|
3387
|
+
*/
|
|
3388
|
+
const FieldsGridContainer$1 = styles.styled(material.Box)({
|
|
3389
|
+
display: 'flex',
|
|
3390
|
+
flexDirection: 'column',
|
|
3391
|
+
gap: '24px',
|
|
3392
|
+
'@media (min-width: 900px)': {
|
|
3393
|
+
display: 'grid',
|
|
3394
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
3395
|
+
gap: '24px',
|
|
3396
|
+
'& > *': {
|
|
3397
|
+
minWidth: 0,
|
|
3398
|
+
},
|
|
3399
|
+
},
|
|
3400
|
+
});
|
|
3401
|
+
/**
|
|
3402
|
+
* Full width field - spans both columns on desktop grid
|
|
3403
|
+
*/
|
|
3404
|
+
const FullWidthField$1 = styles.styled(material.Box)({
|
|
3405
|
+
'@media (min-width: 900px)': {
|
|
3406
|
+
gridColumn: '1 / -1',
|
|
3407
|
+
},
|
|
3408
|
+
});
|
|
3004
3409
|
const CheckboxContainer = styles.styled(material.Box)({
|
|
3005
3410
|
marginTop: '12px',
|
|
3006
3411
|
'& .MuiFormControlLabel-root': {
|
|
3007
3412
|
alignItems: 'flex-start',
|
|
3008
3413
|
marginLeft: 0,
|
|
3414
|
+
'@media (min-width: 900px)': {
|
|
3415
|
+
alignItems: 'center',
|
|
3416
|
+
},
|
|
3009
3417
|
},
|
|
3010
3418
|
'& .MuiCheckbox-root': {
|
|
3011
3419
|
padding: '4px 8px 4px 0',
|
|
@@ -3026,9 +3434,36 @@ const SectionTitle$1 = styles.styled(material.Typography)({
|
|
|
3026
3434
|
lineHeight: '24px',
|
|
3027
3435
|
});
|
|
3028
3436
|
|
|
3029
|
-
const ContactDetailsForm = ({ renderField, fields, mailingFields, mailingAddressSame, onSubmit, formRef, sx, }) => {
|
|
3437
|
+
const ContactDetailsForm = ({ renderField, fields, mailingFields, mailingAddressSame, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
|
|
3030
3438
|
const defaultMailingLabel = 'My mailing address is not the same as residential';
|
|
3031
|
-
|
|
3439
|
+
const Container = desktopGridLayout ? DesktopFormContainer$2 : FormContainer$2;
|
|
3440
|
+
// Helper to render field with or without full width wrapper
|
|
3441
|
+
const renderFieldWithLayout = (field, fullWidth = false) => {
|
|
3442
|
+
if (desktopGridLayout && fullWidth) {
|
|
3443
|
+
return jsxRuntime.jsx(FullWidthField$1, { children: renderField(field) });
|
|
3444
|
+
}
|
|
3445
|
+
return renderField(field);
|
|
3446
|
+
};
|
|
3447
|
+
// Helper to render field with helper text
|
|
3448
|
+
const renderFieldWithHelperText = (field, fullWidth = false) => {
|
|
3449
|
+
const content = (jsxRuntime.jsxs(material.Box, { children: [renderField(field), field.helperText && (jsxRuntime.jsx(material.Box, Object.assign({ component: "span", sx: {
|
|
3450
|
+
display: 'block',
|
|
3451
|
+
mt: 0.5,
|
|
3452
|
+
color: '#5F5E62',
|
|
3453
|
+
fontSize: '12px',
|
|
3454
|
+
fontFamily: 'Montserrat',
|
|
3455
|
+
} }, { children: field.helperText })))] }));
|
|
3456
|
+
if (desktopGridLayout && fullWidth) {
|
|
3457
|
+
return jsxRuntime.jsx(FullWidthField$1, { children: content });
|
|
3458
|
+
}
|
|
3459
|
+
return content;
|
|
3460
|
+
};
|
|
3461
|
+
return (jsxRuntime.jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: desktopGridLayout ? (jsxRuntime.jsxs(FieldsGridContainer$1, { children: [renderFieldWithHelperText(fields.phone_number, false), renderFieldWithLayout(fields.email_address, false), jsxRuntime.jsx(FullWidthField$1, { children: jsxRuntime.jsx(material.Divider, { sx: { borderColor: 'rgba(0,0,0,0.1)' } }) }), jsxRuntime.jsx(FullWidthField$1, { children: jsxRuntime.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), jsxRuntime.jsx(FullWidthField$1, { children: jsxRuntime.jsx(material.Divider, { sx: { borderColor: 'rgba(0,0,0,0.1)' } }) }), (mailingAddressSame === null || mailingAddressSame === void 0 ? void 0 : mailingAddressSame.checked) && mailingFields && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(FullWidthField$1, { children: jsxRuntime.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 && (jsxRuntime.jsx(FullWidthField$1, { children: jsxRuntime.jsx(CheckboxContainer, { children: jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: mailingAddressSame.checked, onChange: (e) => mailingAddressSame.onChange(e.target.checked), name: "mailing_not_same_as_residential", sx: {
|
|
3462
|
+
color: '#929094',
|
|
3463
|
+
'&.Mui-checked': {
|
|
3464
|
+
color: '#317abc',
|
|
3465
|
+
},
|
|
3466
|
+
} }), label: jsxRuntime.jsx(CheckboxLabel, { children: mailingAddressSame.label || defaultMailingLabel }) }) }) }))] })) : (jsxRuntime.jsxs(material.Box, Object.assign({ sx: { display: 'flex', flexDirection: 'column', gap: '24px' } }, { children: [jsxRuntime.jsxs(material.Box, { children: [renderField(fields.phone_number), fields.phone_number.helperText && (jsxRuntime.jsx(material.Box, Object.assign({ component: "span", sx: {
|
|
3032
3467
|
display: 'block',
|
|
3033
3468
|
mt: 0.5,
|
|
3034
3469
|
ml: 2,
|
|
@@ -3064,23 +3499,96 @@ const ContactDetailsForm = ({ renderField, fields, mailingFields, mailingAddress
|
|
|
3064
3499
|
'&.Mui-checked': {
|
|
3065
3500
|
color: '#317abc',
|
|
3066
3501
|
},
|
|
3067
|
-
} }), label: jsxRuntime.jsx(CheckboxLabel, { children: mailingAddressSame.label || defaultMailingLabel }) }) }))] })) })));
|
|
3502
|
+
} }), label: jsxRuntime.jsx(CheckboxLabel, { children: mailingAddressSame.label || defaultMailingLabel }) }) }))] }))) })));
|
|
3068
3503
|
};
|
|
3069
3504
|
|
|
3070
3505
|
const FormContainer$1 = styles.styled(material.Box)({
|
|
3071
3506
|
padding: '0 16px 24px',
|
|
3072
3507
|
});
|
|
3508
|
+
/**
|
|
3509
|
+
* Desktop form container - constrains content to 938px max-width and centers it
|
|
3510
|
+
*/
|
|
3511
|
+
const DesktopFormContainer$1 = styles.styled(material.Box)({
|
|
3512
|
+
padding: '0 16px 24px',
|
|
3513
|
+
'@media (min-width: 900px)': {
|
|
3514
|
+
maxWidth: '938px',
|
|
3515
|
+
margin: '0 auto',
|
|
3516
|
+
padding: '0 0 24px',
|
|
3517
|
+
},
|
|
3518
|
+
});
|
|
3519
|
+
/**
|
|
3520
|
+
* Measurement fields grid - displays weight and height side by side on desktop
|
|
3521
|
+
*/
|
|
3522
|
+
const MeasurementFieldsGrid = styles.styled(material.Box)({
|
|
3523
|
+
display: 'flex',
|
|
3524
|
+
flexDirection: 'column',
|
|
3525
|
+
gap: '24px',
|
|
3526
|
+
'@media (min-width: 900px)': {
|
|
3527
|
+
display: 'grid',
|
|
3528
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
3529
|
+
gap: '24px',
|
|
3530
|
+
},
|
|
3531
|
+
});
|
|
3073
3532
|
|
|
3074
|
-
const HealthInformationForm = ({ renderField, measurementFields, healthQuestions, onSubmit, formRef, sx, }) => {
|
|
3075
|
-
|
|
3533
|
+
const HealthInformationForm = ({ renderField, measurementFields, healthQuestions, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
|
|
3534
|
+
const Container = desktopGridLayout ? DesktopFormContainer$1 : FormContainer$1;
|
|
3535
|
+
return (jsxRuntime.jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxRuntime.jsxs(material.Box, Object.assign({ sx: { display: 'flex', flexDirection: 'column', gap: '24px' } }, { children: [desktopGridLayout ? (jsxRuntime.jsxs(MeasurementFieldsGrid, { children: [renderField(measurementFields.weight), renderField(measurementFields.height)] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [renderField(measurementFields.weight), renderField(measurementFields.height)] })), healthQuestions.map((question, index) => (jsxRuntime.jsx(HealthQuestionGroup, { question: question.question, questionNumber: question.questionNumber, value: question.value, onChange: question.onChange, error: question.error, labels: question.labels }, question.name || index)))] })) })));
|
|
3076
3536
|
};
|
|
3077
3537
|
|
|
3078
3538
|
const FormContainer = styles.styled(material.Box)({
|
|
3079
3539
|
padding: '0 16px 24px',
|
|
3080
3540
|
});
|
|
3541
|
+
/**
|
|
3542
|
+
* Desktop form container - constrains content to 938px max-width and centers it
|
|
3543
|
+
*/
|
|
3544
|
+
const DesktopFormContainer = styles.styled(material.Box)({
|
|
3545
|
+
padding: '0 16px 24px',
|
|
3546
|
+
'@media (min-width: 900px)': {
|
|
3547
|
+
maxWidth: '938px',
|
|
3548
|
+
margin: '0 auto',
|
|
3549
|
+
padding: '0 0 24px',
|
|
3550
|
+
},
|
|
3551
|
+
});
|
|
3552
|
+
/**
|
|
3553
|
+
* Fields grid container - displays fields in 2-column grid on desktop
|
|
3554
|
+
*/
|
|
3555
|
+
const FieldsGridContainer = styles.styled(material.Box)({
|
|
3556
|
+
display: 'flex',
|
|
3557
|
+
flexDirection: 'column',
|
|
3558
|
+
gap: '24px',
|
|
3559
|
+
'@media (min-width: 900px)': {
|
|
3560
|
+
display: 'grid',
|
|
3561
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
3562
|
+
gap: '24px',
|
|
3563
|
+
'& > *': {
|
|
3564
|
+
minWidth: 0,
|
|
3565
|
+
},
|
|
3566
|
+
},
|
|
3567
|
+
});
|
|
3568
|
+
/**
|
|
3569
|
+
* Full width field - spans both columns on desktop grid
|
|
3570
|
+
*/
|
|
3571
|
+
const FullWidthField = styles.styled(material.Box)({
|
|
3572
|
+
'@media (min-width: 900px)': {
|
|
3573
|
+
gridColumn: '1 / -1',
|
|
3574
|
+
},
|
|
3575
|
+
});
|
|
3081
3576
|
|
|
3082
|
-
const ChildInformationForm = ({ renderField, fields, onSubmit, formRef, sx, }) => {
|
|
3083
|
-
|
|
3577
|
+
const ChildInformationForm = ({ renderField, fields, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
|
|
3578
|
+
const Container = desktopGridLayout ? DesktopFormContainer : FormContainer;
|
|
3579
|
+
// Desktop layout with 2-column grid
|
|
3580
|
+
if (desktopGridLayout) {
|
|
3581
|
+
return (jsxRuntime.jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxRuntime.jsxs(FieldsGridContainer, { children: [jsxRuntime.jsxs(FullWidthField, { children: [renderField(fields.full_name), fields.full_name.helperText && (jsxRuntime.jsx(material.Box, Object.assign({ component: "span", sx: {
|
|
3582
|
+
display: 'block',
|
|
3583
|
+
mt: 0.5,
|
|
3584
|
+
ml: 2,
|
|
3585
|
+
color: '#5F5E62',
|
|
3586
|
+
fontSize: '12px',
|
|
3587
|
+
fontFamily: 'Montserrat',
|
|
3588
|
+
} }, { children: fields.full_name.helperText })))] }), fields.nric && (jsxRuntime.jsx(FullWidthField, { children: renderField(fields.nric) })), renderField(fields.date_of_birth), renderField(fields.gender), renderField(fields.nationality)] }) })));
|
|
3589
|
+
}
|
|
3590
|
+
// Mobile layout - single column
|
|
3591
|
+
return (jsxRuntime.jsx(Container, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxRuntime.jsxs(material.Box, Object.assign({ sx: { display: 'flex', flexDirection: 'column', gap: '24px' } }, { children: [jsxRuntime.jsxs(material.Box, { children: [renderField(fields.full_name), fields.full_name.helperText && (jsxRuntime.jsx(material.Box, Object.assign({ component: "span", sx: {
|
|
3084
3592
|
display: 'block',
|
|
3085
3593
|
mt: 0.5,
|
|
3086
3594
|
ml: 2,
|
|
@@ -3277,8 +3785,8 @@ const BenefitTitle = material.styled(material.Typography)(({ theme }) => ({
|
|
|
3277
3785
|
lineHeight: '20px',
|
|
3278
3786
|
margin: 0,
|
|
3279
3787
|
[theme.breakpoints.up('md')]: {
|
|
3280
|
-
fontSize: '
|
|
3281
|
-
lineHeight: '
|
|
3788
|
+
fontSize: '18px',
|
|
3789
|
+
lineHeight: '24px',
|
|
3282
3790
|
},
|
|
3283
3791
|
}));
|
|
3284
3792
|
const BenefitDescription = material.styled(material.Typography)(({ theme }) => ({
|
|
@@ -3287,7 +3795,7 @@ const BenefitDescription = material.styled(material.Typography)(({ theme }) => (
|
|
|
3287
3795
|
lineHeight: '18px',
|
|
3288
3796
|
margin: 0,
|
|
3289
3797
|
[theme.breakpoints.up('md')]: {
|
|
3290
|
-
fontSize: '
|
|
3798
|
+
fontSize: '16px',
|
|
3291
3799
|
lineHeight: '20px',
|
|
3292
3800
|
},
|
|
3293
3801
|
}));
|
|
@@ -3465,6 +3973,7 @@ exports.CheckoutProgress = CheckoutProgress;
|
|
|
3465
3973
|
exports.ChildInformationForm = ChildInformationForm;
|
|
3466
3974
|
exports.ContactDetailsForm = ContactDetailsForm;
|
|
3467
3975
|
exports.CoverageAmountSlider = CoverageAmountSlider;
|
|
3976
|
+
exports.DesktopHeaderMenuBar = DesktopHeaderMenuBar;
|
|
3468
3977
|
exports.FAQAccordion = FAQAccordion;
|
|
3469
3978
|
exports.Footer = Footer;
|
|
3470
3979
|
exports.Header = Header$1;
|