igloo-d2c-components 1.0.21 → 1.0.23

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.
Files changed (25) hide show
  1. package/dist/cjs/index.js +556 -47
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/esm/index.js +557 -49
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/types/components/CheckoutFormButton/CheckoutFormButton.d.ts +9 -0
  6. package/dist/types/components/CheckoutFormButton/styled.d.ts +2 -0
  7. package/dist/types/components/ChildInformationForm/ChildInformationForm.d.ts +4 -0
  8. package/dist/types/components/ChildInformationForm/styled.d.ts +18 -0
  9. package/dist/types/components/ContactDetailsForm/ContactDetailsForm.d.ts +4 -0
  10. package/dist/types/components/ContactDetailsForm/styled.d.ts +18 -0
  11. package/dist/types/components/CoverageAmountSlider/styled.d.ts +1 -1
  12. package/dist/types/components/DesktopHeaderMenuBar/DesktopHeaderMenuBar.d.ts +38 -0
  13. package/dist/types/components/DesktopHeaderMenuBar/index.d.ts +6 -0
  14. package/dist/types/components/DesktopHeaderMenuBar/styled.d.ts +89 -0
  15. package/dist/types/components/DesktopHeaderMenuBar/types.d.ts +92 -0
  16. package/dist/types/components/FAQAccordion/styled.d.ts +1 -1
  17. package/dist/types/components/Header/Header.d.ts +27 -1
  18. package/dist/types/components/Header/index.d.ts +1 -1
  19. package/dist/types/components/Header/styled.d.ts +2 -2
  20. package/dist/types/components/HealthInformationForm/HealthInformationForm.d.ts +4 -0
  21. package/dist/types/components/HealthInformationForm/styled.d.ts +12 -0
  22. package/dist/types/components/PersonalInformationForm/PersonalInformationForm.d.ts +4 -0
  23. package/dist/types/components/PersonalInformationForm/styled.d.ts +18 -0
  24. package/dist/types/index.d.ts +3 -1
  25. 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, Avatar, Menu, MenuItem, 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';
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: '20px',
306
+ fontSize: '28px',
301
307
  fontStyle: 'normal',
302
308
  fontWeight: 700,
303
- lineHeight: '28px',
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 = ((_b = userFirstName === null || userFirstName === void 0 ? void 0 : userFirstName.trim()) === null || _b === void 0 ? void 0 : _b.slice(0, 1)) || '';
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 0',
3179
+ backgroundColor: 'transparent',
3180
+ boxShadow: 'none',
3181
+ position: 'relative',
3182
+ }
3183
+ : {},
2864
3184
  }));
2865
- const StyledButton = styled('button')(({ theme, isDisabled }) => {
2866
- var _a, _b;
2867
- return ({
2868
- width: '100%',
2869
- height: '48px',
2870
- borderRadius: '24px',
2871
- border: 'none',
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
- : '#0090DA',
2875
- color: isDisabled ? '#929094' : '#fff',
2876
- fontFamily: 'Montserrat',
2877
- fontSize: '14px',
2878
- fontWeight: 500,
2879
- lineHeight: '18px',
2880
- cursor: isDisabled ? 'not-allowed' : 'pointer',
2881
- transition: 'all 0.2s ease',
2882
- '&:hover': {
2883
- backgroundColor: isDisabled
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
- return (jsx(FormContainer$3, 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(Typography, Object.assign({ variant: "caption", sx: {
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
- return (jsx(FormContainer$2, 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.phone_number), fields.phone_number.helperText && (jsx(Box, Object.assign({ component: "span", sx: {
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
- return (jsx(FormContainer$1, Object.assign({ ref: formRef, component: "form", onSubmit: onSubmit, sx: sx }, { children: jsxs(Box, Object.assign({ sx: { display: 'flex', flexDirection: 'column', gap: '24px' } }, { 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)))] })) })));
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
- return (jsx(FormContainer, 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: {
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: '16px',
3261
- lineHeight: '22px',
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: '15px',
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