igloo-d2c-components 1.0.28 → 1.0.30

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/esm/index.js CHANGED
@@ -331,7 +331,7 @@ const ammetlifeTypography = Object.assign(Object.assign({}, iglooTypography), {
331
331
  fontWeight: 700,
332
332
  lineHeight: '38px',
333
333
  letterSpacing: 0,
334
- wordSpacing: '-5px',
334
+ wordSpacing: '-10px',
335
335
  },
336
336
  // Title Medium (H2) - MetLife Circular Bold 16/24
337
337
  titleMedium: {
@@ -870,11 +870,12 @@ function Banner(_a) {
870
870
  * Design Specifications:
871
871
  * - Header height: 80px
872
872
  * - Background: white (#ffffff)
873
- * - Content max-width: 1128px (equivalent to 156px padding on 1440px width)
874
- * - Logo width: 126px
875
- * - Gap between logo and menu items: 32px
876
- * - Menu text: MetLife Circular Bold, 18px, #13131B
877
- * - Login button: Text style, #0090da (teal/cyan)
873
+ * - Content padding: 156px horizontal on 1440px viewport
874
+ * - Logo dimensions: 126px × 16px
875
+ * - Gap between menu items: 32px
876
+ * - Menu text: MetLife Circular Bold, 18px, #13131B, line-height 24px
877
+ * - CTA Button: Filled, #0090da, border-radius 24px, height 48px
878
+ * - CTA text: MetLife Circular Medium, 16px, white, line-height 20px
878
879
  */
879
880
  /**
880
881
  * Design System Colors (from Figma node 1581-22604)
@@ -892,7 +893,7 @@ const designColors = {
892
893
  * Main AppBar container
893
894
  * Height: 80px, white background, centered content
894
895
  */
895
- const StyledAppBar$2 = styled(AppBar)(({ theme }) => ({
896
+ const StyledAppBar$2 = styled(AppBar)(() => ({
896
897
  backgroundColor: designColors.natural.light00,
897
898
  boxShadow: 'none',
898
899
  position: 'fixed',
@@ -922,13 +923,12 @@ const HeaderContainer$1 = styled(Box)(({ theme }) => ({
922
923
  },
923
924
  }));
924
925
  /**
925
- * Left section containing logo and menu items
926
- * Gap: 32px between all children (logo and menu items)
926
+ * Left section containing logo only
927
+ * Per Figma: Logo on left side of header
927
928
  */
928
929
  const LeftSection = styled(Box)({
929
930
  display: 'flex',
930
931
  alignItems: 'center',
931
- gap: '32px',
932
932
  height: '100%',
933
933
  });
934
934
  /**
@@ -943,11 +943,11 @@ const LogoContainer$2 = styled(Box)({
943
943
  });
944
944
  /**
945
945
  * Logo image
946
- * Width: 126px, height: 16px (per Figma)
946
+ * Width: 126px, height: 16px (per Figma node 1328:28463)
947
947
  */
948
948
  const LogoImage$1 = styled('img')({
949
- width: '94px',
950
- height: '32px',
949
+ width: '126px',
950
+ height: '16px',
951
951
  objectFit: 'contain',
952
952
  });
953
953
  /**
@@ -965,7 +965,7 @@ styled(Box)({
965
965
  * Font: MetLife Circular Bold, 18px, color: #13131B
966
966
  * Padding: 10px horizontal (creates visual spacing between items)
967
967
  */
968
- const MenuItemButton = styled(Button$1)(({ theme }) => ({
968
+ const MenuItemButton = styled(Button$1)(() => ({
969
969
  display: 'flex',
970
970
  alignItems: 'center',
971
971
  gap: '8px',
@@ -979,6 +979,7 @@ const MenuItemButton = styled(Button$1)(({ theme }) => ({
979
979
  fontSize: '18px',
980
980
  lineHeight: '24px',
981
981
  letterSpacing: '0px',
982
+ wordSpacing: '-5px',
982
983
  borderRadius: 0,
983
984
  '&:hover': {
984
985
  backgroundColor: 'transparent',
@@ -995,6 +996,7 @@ const MenuItemText = styled(Typography)({
995
996
  fontSize: '18px',
996
997
  lineHeight: '24px',
997
998
  letterSpacing: '0px',
999
+ wordSpacing: '-5px',
998
1000
  color: 'inherit',
999
1001
  });
1000
1002
  /**
@@ -1007,19 +1009,22 @@ const DropdownIcon = styled(ArrowDropDownIcon)({
1007
1009
  color: designColors.natural.dim100,
1008
1010
  });
1009
1011
  /**
1010
- * Right section containing login button
1012
+ * Right section containing menu items and CTA button
1013
+ * Gap: 32px between menu items (per Figma node 3506:35611)
1011
1014
  */
1012
1015
  const RightSection = styled(Box)({
1013
1016
  display: 'flex',
1014
1017
  alignItems: 'center',
1018
+ gap: '32px',
1015
1019
  height: '100%',
1016
1020
  });
1017
1021
  /**
1018
- * Login button (text style)
1022
+ * Login button (text style) - DEPRECATED
1023
+ * @deprecated Use PurchaseButton instead
1019
1024
  * Based on Figma: Style=Text, State=enabled, Show Icon=False
1020
1025
  * Color: #0090da (primary blue/teal)
1021
1026
  */
1022
- const LoginButton = styled(Button$1)(({ theme }) => ({
1027
+ styled(Button$1)(() => ({
1023
1028
  display: 'flex',
1024
1029
  alignItems: 'center',
1025
1030
  padding: '0 10px',
@@ -1032,6 +1037,7 @@ const LoginButton = styled(Button$1)(({ theme }) => ({
1032
1037
  fontSize: '18px',
1033
1038
  lineHeight: '24px',
1034
1039
  letterSpacing: '0px',
1040
+ wordSpacing: '-5px',
1035
1041
  borderRadius: 0,
1036
1042
  backgroundColor: 'transparent',
1037
1043
  '&:hover': {
@@ -1039,10 +1045,41 @@ const LoginButton = styled(Button$1)(({ theme }) => ({
1039
1045
  textDecoration: 'underline',
1040
1046
  },
1041
1047
  }));
1048
+ /**
1049
+ * Purchase Now CTA Button (filled style)
1050
+ * Based on Figma: Style=Filled, State=Enabled (node 3506:36976)
1051
+ * Background: #0090da, border-radius: 24px, height: 48px
1052
+ * Text: MetLife Circular Medium, 16px, white, line-height 20px
1053
+ */
1054
+ const PurchaseButton = styled(Button$1)(() => ({
1055
+ display: 'flex',
1056
+ alignItems: 'center',
1057
+ justifyContent: 'center',
1058
+ padding: '10px 24px',
1059
+ height: '48px',
1060
+ minWidth: 'auto',
1061
+ textTransform: 'none',
1062
+ color: designColors.natural.light00,
1063
+ backgroundColor: designColors.primary.main60,
1064
+ fontFamily: '"MetLifeCircular", "Montserrat", "Roboto", "Helvetica", "Arial", sans-serif',
1065
+ fontWeight: 500,
1066
+ fontSize: '16px',
1067
+ lineHeight: '20px',
1068
+ letterSpacing: '0px',
1069
+ wordSpacing: '-5px',
1070
+ borderRadius: '24px',
1071
+ whiteSpace: 'nowrap',
1072
+ '&:hover': {
1073
+ backgroundColor: '#007bb8',
1074
+ },
1075
+ '&:active': {
1076
+ backgroundColor: '#006a9e',
1077
+ },
1078
+ }));
1042
1079
  /**
1043
1080
  * Dropdown menu container
1044
1081
  */
1045
- const StyledMenu$1 = styled(Menu)(({ theme }) => ({
1082
+ const StyledMenu$1 = styled(Menu)(() => ({
1046
1083
  '& .MuiPaper-root': {
1047
1084
  borderRadius: '16px',
1048
1085
  marginTop: '8px',
@@ -1053,7 +1090,7 @@ const StyledMenu$1 = styled(Menu)(({ theme }) => ({
1053
1090
  /**
1054
1091
  * Dropdown menu item
1055
1092
  */
1056
- const StyledMenuItem$1 = styled(MenuItem)(({ theme }) => ({
1093
+ const StyledMenuItem$1 = styled(MenuItem)(() => ({
1057
1094
  display: 'flex',
1058
1095
  alignItems: 'center',
1059
1096
  gap: '12px',
@@ -1062,6 +1099,7 @@ const StyledMenuItem$1 = styled(MenuItem)(({ theme }) => ({
1062
1099
  fontWeight: 500,
1063
1100
  fontSize: '16px',
1064
1101
  lineHeight: '24px',
1102
+ wordSpacing: '-5px',
1065
1103
  color: designColors.natural.dim100,
1066
1104
  '&:hover': {
1067
1105
  backgroundColor: 'rgba(0, 144, 218, 0.08)',
@@ -1076,28 +1114,65 @@ const MenuItemIcon = styled('img')({
1076
1114
  objectFit: 'contain',
1077
1115
  });
1078
1116
 
1117
+ /**
1118
+ * Smooth scroll utility function
1119
+ * Scrolls to a target element by ID with smooth behavior
1120
+ */
1121
+ const scrollToElement = (targetId, offset = 80) => {
1122
+ const element = document.getElementById(targetId);
1123
+ if (element) {
1124
+ const elementPosition = element.getBoundingClientRect().top;
1125
+ const offsetPosition = elementPosition + window.pageYOffset - offset;
1126
+ window.scrollTo({
1127
+ top: offsetPosition,
1128
+ behavior: 'smooth',
1129
+ });
1130
+ }
1131
+ };
1079
1132
  /**
1080
1133
  * DesktopHeaderMenuBar Component
1081
1134
  *
1082
- * A responsive desktop header with navigation menu items and dropdown support.
1135
+ * A desktop header with logo on left, navigation menu items and CTA button on right.
1136
+ * Supports scroll-to-section interactions for menu items.
1083
1137
  *
1084
1138
  * @param logo - Logo image source URL
1085
1139
  * @param logoAlt - Alt text for the logo image
1086
1140
  * @param menuItems - Array of menu items to display
1087
- * @param showLoginButton - Whether to show the login button (default: true)
1088
- * @param loginButtonText - Text for the login button (default: 'Log in')
1141
+ * @param showCtaButton - Whether to show the CTA button (default: true)
1142
+ * @param ctaButtonText - Text for the CTA button (default: 'Purchase Now')
1143
+ * @param onCtaClick - Handler for CTA button click
1144
+ * @param ctaScrollTargetId - Target element ID for CTA scroll action
1145
+ * @param onScrollToSection - Callback when menu item triggers scroll
1089
1146
  * @param onLogoClick - Handler for logo click
1090
- * @param onLoginClick - Handler for login button click
1091
1147
  * @param formatMessage - i18n function for translations
1092
1148
  */
1093
- function DesktopHeaderMenuBar({ logo, logoAlt = 'Logo', menuItems, showLoginButton = true, loginButtonText = 'Log in', onLogoClick, onLoginClick, formatMessage = (descriptor) => descriptor.id, className, }) {
1094
- // Track which dropdown is currently open
1149
+ function DesktopHeaderMenuBar({ logo, logoAlt = 'Logo', menuItems,
1150
+ // Legacy props (deprecated)
1151
+ showLoginButton, loginButtonText, onLoginClick,
1152
+ // New CTA props
1153
+ showCtaButton = true, ctaButtonText = 'Purchase Now', onCtaClick, ctaScrollTargetId, onScrollToSection, onLogoClick, formatMessage = (descriptor) => descriptor.id, className, }) {
1154
+ var _a;
1155
+ // Track which dropdown is currently open (for backward compatibility)
1095
1156
  const [openMenuKey, setOpenMenuKey] = React.useState(null);
1096
1157
  const [anchorEl, setAnchorEl] = React.useState(null);
1158
+ // Determine which button props to use (support legacy props)
1159
+ const shouldShowCtaButton = (_a = showCtaButton !== null && showCtaButton !== void 0 ? showCtaButton : showLoginButton) !== null && _a !== void 0 ? _a : true;
1160
+ const ctaText = ctaButtonText || loginButtonText || 'Purchase Now';
1161
+ const handleCtaClick = onCtaClick || onLoginClick;
1097
1162
  const handleMenuClick = (event, item) => {
1098
1163
  var _a;
1164
+ // Handle scroll-to-section behavior
1165
+ if (item.scrollTargetId) {
1166
+ if (onScrollToSection) {
1167
+ onScrollToSection(item.scrollTargetId, item.scrollTargetProductCode);
1168
+ }
1169
+ else {
1170
+ scrollToElement(item.scrollTargetId);
1171
+ }
1172
+ return;
1173
+ }
1174
+ // Handle dropdown behavior (backward compatibility)
1099
1175
  if (item.hasDropdown && item.subItems && item.subItems.length > 0) {
1100
- // Toggle dropdown
1101
1176
  if (openMenuKey === item.key) {
1102
1177
  handleCloseMenu();
1103
1178
  }
@@ -1127,7 +1202,18 @@ function DesktopHeaderMenuBar({ logo, logoAlt = 'Logo', menuItems, showLoginButt
1127
1202
  e.preventDefault();
1128
1203
  onLogoClick === null || onLogoClick === void 0 ? void 0 : onLogoClick();
1129
1204
  };
1130
- 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 }) })), 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: {
1205
+ const handleCtaButtonClick = () => {
1206
+ if (ctaScrollTargetId) {
1207
+ if (onScrollToSection) {
1208
+ onScrollToSection(ctaScrollTargetId);
1209
+ }
1210
+ else {
1211
+ scrollToElement(ctaScrollTargetId);
1212
+ }
1213
+ }
1214
+ handleCtaClick === null || handleCtaClick === void 0 ? void 0 : handleCtaClick();
1215
+ };
1216
+ return (jsx(StyledAppBar$2, Object.assign({ className: className }, { children: jsxs(HeaderContainer$1, { children: [jsx(LeftSection, { children: jsx(LogoContainer$2, Object.assign({ onClick: handleLogoClick }, { children: jsx(LogoImage$1, { src: logo, alt: logoAlt }) })) }), jsxs(RightSection, { 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: {
1131
1217
  vertical: 'bottom',
1132
1218
  horizontal: 'left',
1133
1219
  }, transformOrigin: {
@@ -1135,7 +1221,7 @@ function DesktopHeaderMenuBar({ logo, logoAlt = 'Logo', menuItems, showLoginButt
1135
1221
  horizontal: 'left',
1136
1222
  }, MenuListProps: {
1137
1223
  'aria-labelledby': `menu-button-${item.key}`,
1138
- } }, { 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 }) }))) })] }) })));
1224
+ } }, { 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))), shouldShowCtaButton && (jsx(PurchaseButton, Object.assign({ onClick: handleCtaButtonClick, "data-testid": "header-cta-button" }, { children: formatMessage({ id: ctaText }) })))] })] }) })));
1139
1225
  }
1140
1226
 
1141
1227
  const StyledAppBar$1 = styled(AppBar)(({ theme, ispartnershippagemobileview, scrolled }) => {
@@ -1501,7 +1587,7 @@ const TypographyBtnText = styled(Typography)(({ theme }) => {
1501
1587
  * />
1502
1588
  * ```
1503
1589
  */
1504
- 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 = [], }) {
1590
+ 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 = [], showCtaButton = true, ctaButtonText = 'Purchase Now', onCtaClick, ctaScrollTargetId, onScrollToSection, }) {
1505
1591
  var _a, _b, _c;
1506
1592
  const tenantTheme = useTenantTheme();
1507
1593
  tenantTheme === null || tenantTheme === void 0 ? void 0 : tenantTheme.theme;
@@ -1548,12 +1634,14 @@ function Header$1({ logo, alternateLogo, showAlternateLogo = false, navigationLi
1548
1634
  onClick: subItem.onClick,
1549
1635
  })),
1550
1636
  onClick: item.onClick,
1637
+ scrollTargetId: item.scrollTargetId,
1638
+ scrollTargetProductCode: item.scrollTargetProductCode,
1551
1639
  });
1552
1640
  });
1553
1641
  // Render new desktop layout when enabled and on actual desktop viewport
1554
1642
  // Uses isActuallyDesktop to avoid SSR/prop issues with isMobile detection
1555
1643
  if (useNewDesktopLayout && isActuallyDesktop) {
1556
- return (jsx(DesktopHeaderMenuBar, { logo: logo, logoAlt: "Logo", menuItems: convertedDesktopMenuItems, showLoginButton: !userToken, loginButtonText: "Log in", onLogoClick: onLogoClick, onLoginClick: onLoginClick, formatMessage: formatMessage }));
1644
+ return (jsx(DesktopHeaderMenuBar, { logo: logo, logoAlt: "Logo", menuItems: convertedDesktopMenuItems, showCtaButton: showCtaButton, ctaButtonText: ctaButtonText, onCtaClick: onCtaClick, ctaScrollTargetId: ctaScrollTargetId, onScrollToSection: onScrollToSection, onLogoClick: onLogoClick, formatMessage: formatMessage }));
1557
1645
  }
1558
1646
  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) => {
1559
1647
  e === null || e === void 0 ? void 0 : e.preventDefault();
@@ -2032,6 +2120,7 @@ const TitleText = styled(Typography)(({ theme }) => ({
2032
2120
  fontWeight: 700,
2033
2121
  fontSize: '28px',
2034
2122
  lineHeight: '28px',
2123
+ wordSpacing: '-5px',
2035
2124
  color: '#13131B',
2036
2125
  [theme.breakpoints.down('md')]: {
2037
2126
  fontSize: '20px',
@@ -2042,6 +2131,7 @@ const SubtitleText = styled(Typography)(({ theme }) => ({
2042
2131
  fontWeight: 400,
2043
2132
  fontSize: '14px',
2044
2133
  lineHeight: '18px',
2134
+ wordSpacing: '-5px',
2045
2135
  color: '#5F5E62',
2046
2136
  }));
2047
2137
  const FooterButtons = styled(Box)(({ theme }) => ({
@@ -2059,6 +2149,7 @@ const PrimaryButton = styled(Button$1)(({ theme }) => ({
2059
2149
  fontWeight: 500,
2060
2150
  fontSize: '14px',
2061
2151
  lineHeight: '18px',
2152
+ wordSpacing: '-5px',
2062
2153
  '&:disabled': {
2063
2154
  backgroundColor: '#C8C5CA',
2064
2155
  color: '#FFFFFF',
@@ -2071,6 +2162,7 @@ const SecondaryButton = styled(Button$1)(({ theme }) => ({
2071
2162
  fontWeight: 500,
2072
2163
  fontSize: '14px',
2073
2164
  lineHeight: '18px',
2165
+ wordSpacing: '-5px',
2074
2166
  }));
2075
2167
 
2076
2168
  /**
@@ -2179,6 +2271,7 @@ const HeaderTitle = styled$1(Typography)({
2179
2271
  fontSize: '20px',
2180
2272
  fontWeight: 700,
2181
2273
  lineHeight: '28px',
2274
+ wordSpacing: '-5px',
2182
2275
  color: '#13131b',
2183
2276
  });
2184
2277
  const HeaderSubtitle = styled$1(Typography)({
@@ -2186,6 +2279,7 @@ const HeaderSubtitle = styled$1(Typography)({
2186
2279
  fontSize: '14px',
2187
2280
  fontWeight: 400,
2188
2281
  lineHeight: '18px',
2282
+ wordSpacing: '-5px',
2189
2283
  color: 'rgba(0, 0, 0, 0.6)',
2190
2284
  });
2191
2285
  const ProductsContainer = styled$1(Box)({
@@ -2226,6 +2320,7 @@ const ProductName$1 = styled$1(Typography)({
2226
2320
  fontSize: '14px',
2227
2321
  fontWeight: 700,
2228
2322
  lineHeight: '22px',
2323
+ wordSpacing: '-5px',
2229
2324
  color: '#13131b',
2230
2325
  textAlign: 'center',
2231
2326
  });
@@ -2234,6 +2329,7 @@ const ProductType = styled$1(Typography)({
2234
2329
  fontSize: '12px',
2235
2330
  fontWeight: 400,
2236
2331
  lineHeight: '16px',
2332
+ wordSpacing: '-5px',
2237
2333
  color: '#13131b',
2238
2334
  textAlign: 'center',
2239
2335
  });
@@ -2247,6 +2343,7 @@ const ViewPlansButton = styled$1(Button$1)({
2247
2343
  fontSize: '14px',
2248
2344
  fontWeight: 500,
2249
2345
  lineHeight: '18px',
2346
+ wordSpacing: '-5px',
2250
2347
  });
2251
2348
 
2252
2349
  function ProductSelectionDrawer({ open, onClose, products, onProductSelect, title = 'Select your product', subtitle = 'Pick the product that suits your protection goals to view available plans', viewPlansButtonText = 'View plans', }) {
@@ -2289,6 +2386,7 @@ const QuestionTitle = styled(Typography)(({ theme }) => ({
2289
2386
  fontWeight: 700,
2290
2387
  fontSize: '18px',
2291
2388
  lineHeight: '24px',
2389
+ wordSpacing: '-5px',
2292
2390
  color: '#13131B',
2293
2391
  [theme.breakpoints.down('md')]: {
2294
2392
  fontSize: '14px',
@@ -2299,6 +2397,7 @@ const QuestionSubtext = styled(Typography)(({ theme }) => ({
2299
2397
  fontWeight: 400,
2300
2398
  fontSize: '16px',
2301
2399
  lineHeight: '20px',
2400
+ wordSpacing: '-5px',
2302
2401
  color: '#5F5E62',
2303
2402
  [theme.breakpoints.down('md')]: {
2304
2403
  fontSize: '12px',
@@ -2427,6 +2526,7 @@ const OptionLabel = styled(Typography)(({ theme, selected, colorVariant = 'defau
2427
2526
  fontWeight: selected ? 700 : 500,
2428
2527
  fontSize: '14px',
2429
2528
  lineHeight: '20px',
2529
+ wordSpacing: '0px',
2430
2530
  color: selected ? '#0090DA' : colors.unselectedText,
2431
2531
  textAlign: 'center',
2432
2532
  fontFamily: '"MetLifeCircular", "Montserrat", sans-serif',
@@ -2506,6 +2606,7 @@ const ToggleLabel = styled(Typography)(({ theme, selected }) => ({
2506
2606
  fontWeight: 600,
2507
2607
  fontSize: '14px',
2508
2608
  lineHeight: '20px',
2609
+ wordSpacing: '-5px',
2509
2610
  color: selected ? '#FEFBFF' : '#5F5E62',
2510
2611
  whiteSpace: 'nowrap',
2511
2612
  }));
@@ -2654,6 +2755,7 @@ const ToggleText = styled(Typography)(({ theme }) => {
2654
2755
  fontWeight: ((_d = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _d === void 0 ? void 0 : _d.fontWeightSemiBold) || 600,
2655
2756
  lineHeight: ((_f = (_e = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _e === void 0 ? void 0 : _e.bodyMedium) === null || _f === void 0 ? void 0 : _f.lineHeight) || '20px',
2656
2757
  whiteSpace: 'nowrap',
2758
+ wordSpacing: '-5px',
2657
2759
  });
2658
2760
  });
2659
2761
 
@@ -2732,6 +2834,7 @@ const CalloutTitle = styled(Typography)(({ theme }) => {
2732
2834
  fontSize: ((_c = (_b = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _b === void 0 ? void 0 : _b.bodyMedium) === null || _c === void 0 ? void 0 : _c.fontSize) || '16px',
2733
2835
  fontWeight: ((_d = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _d === void 0 ? void 0 : _d.fontWeightSemiBold) || 700,
2734
2836
  lineHeight: ((_f = (_e = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _e === void 0 ? void 0 : _e.bodyMedium) === null || _f === void 0 ? void 0 : _f.lineHeight) || '20px',
2837
+ wordSpacing: '-5px',
2735
2838
  color: ((_h = (_g = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _g === void 0 ? void 0 : _g.natural) === null || _h === void 0 ? void 0 : _h.dim) || '#13131b',
2736
2839
  [theme.breakpoints.down('md')]: {
2737
2840
  fontSize: '14px',
@@ -2747,6 +2850,7 @@ const CalloutText = styled(Typography)(({ theme }) => {
2747
2850
  fontSize: ((_c = (_b = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _b === void 0 ? void 0 : _b.bodySmall) === null || _c === void 0 ? void 0 : _c.fontSize) || '14px',
2748
2851
  fontWeight: ((_e = (_d = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _d === void 0 ? void 0 : _d.bodySmall) === null || _e === void 0 ? void 0 : _e.fontWeight) || 400,
2749
2852
  lineHeight: ((_g = (_f = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _f === void 0 ? void 0 : _f.bodySmall) === null || _g === void 0 ? void 0 : _g.lineHeight) || '16px',
2853
+ wordSpacing: '-5px',
2750
2854
  color: ((_j = (_h = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _h === void 0 ? void 0 : _h.natural) === null || _j === void 0 ? void 0 : _j.dark) || '#5f5e62',
2751
2855
  [theme.breakpoints.down('md')]: {
2752
2856
  fontSize: '12px',
@@ -2809,6 +2913,7 @@ const InputLabel = styled(Typography)(({ theme }) => {
2809
2913
  fontSize: ((_c = (_b = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _b === void 0 ? void 0 : _b.bodySmall) === null || _c === void 0 ? void 0 : _c.fontSize) || '12px',
2810
2914
  fontWeight: ((_e = (_d = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _d === void 0 ? void 0 : _d.bodySmall) === null || _e === void 0 ? void 0 : _e.fontWeight) || 400,
2811
2915
  lineHeight: ((_g = (_f = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _f === void 0 ? void 0 : _f.bodySmall) === null || _g === void 0 ? void 0 : _g.lineHeight) || '16px',
2916
+ wordSpacing: '-5px',
2812
2917
  color: ((_j = (_h = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _h === void 0 ? void 0 : _h.natural) === null || _j === void 0 ? void 0 : _j.dim) || '#13131b',
2813
2918
  });
2814
2919
  });
@@ -2836,6 +2941,7 @@ const InputValue = styled(Typography)(({ theme }) => {
2836
2941
  fontSize: ((_c = (_b = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _b === void 0 ? void 0 : _b.bodyMedium) === null || _c === void 0 ? void 0 : _c.fontSize) || '14px',
2837
2942
  fontWeight: ((_e = (_d = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _d === void 0 ? void 0 : _d.bodyMedium) === null || _e === void 0 ? void 0 : _e.fontWeight) || 400,
2838
2943
  lineHeight: ((_g = (_f = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _f === void 0 ? void 0 : _f.bodyMedium) === null || _g === void 0 ? void 0 : _g.lineHeight) || '18px',
2944
+ wordSpacing: '-5px',
2839
2945
  color: ((_j = (_h = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _h === void 0 ? void 0 : _h.natural) === null || _j === void 0 ? void 0 : _j.dim) || '#13131b',
2840
2946
  textAlign: 'center',
2841
2947
  flex: 1,
@@ -2924,6 +3030,7 @@ const RangeLabel = styled(Typography)(({ theme }) => {
2924
3030
  fontSize: ((_c = (_b = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _b === void 0 ? void 0 : _b.smallText) === null || _c === void 0 ? void 0 : _c.fontSize) || '8px',
2925
3031
  fontWeight: ((_e = (_d = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _d === void 0 ? void 0 : _d.smallText) === null || _e === void 0 ? void 0 : _e.fontWeight) || 500,
2926
3032
  lineHeight: ((_g = (_f = theme === null || theme === void 0 ? void 0 : theme.typography) === null || _f === void 0 ? void 0 : _f.smallText) === null || _g === void 0 ? void 0 : _g.lineHeight) || '16px',
3033
+ wordSpacing: '-5px',
2927
3034
  color: ((_j = (_h = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _h === void 0 ? void 0 : _h.natural) === null || _j === void 0 ? void 0 : _j.main) || '#929094',
2928
3035
  });
2929
3036
  });
@@ -3139,6 +3246,7 @@ const ProgressText = styled(Typography)({
3139
3246
  color: '#5F5E62',
3140
3247
  fontWeight: 400,
3141
3248
  lineHeight: '16px',
3249
+ wordSpacing: '-5px',
3142
3250
  });
3143
3251
 
3144
3252
  const CheckoutProgress = ({ currentStep, totalSteps, onBack, showBackButton = true, progressBarTheme, sx, }) => {
@@ -3181,12 +3289,14 @@ const ProductName = styled(Typography)({
3181
3289
  fontWeight: 600,
3182
3290
  color: '#13131B',
3183
3291
  lineHeight: '20px',
3292
+ wordSpacing: '-5px',
3184
3293
  });
3185
3294
  const PlanName = styled(Typography)({
3186
3295
  fontSize: '12px',
3187
3296
  fontWeight: 400,
3188
3297
  color: '#13131B',
3189
3298
  lineHeight: '16px',
3299
+ wordSpacing: '-5px',
3190
3300
  });
3191
3301
  const PriceContainer = styled(Box)({
3192
3302
  display: 'flex',
@@ -3198,12 +3308,14 @@ const Price = styled(Typography)({
3198
3308
  fontWeight: 600,
3199
3309
  color: '#13131B',
3200
3310
  lineHeight: '20px',
3311
+ wordSpacing: '-5px',
3201
3312
  });
3202
3313
  const PricePeriod = styled(Typography)({
3203
3314
  fontSize: '12px',
3204
3315
  fontWeight: 400,
3205
3316
  color: '#13131B',
3206
3317
  lineHeight: '16px',
3318
+ wordSpacing: '-5px',
3207
3319
  });
3208
3320
 
3209
3321
  const ProductCard = ({ productName, planName, logoUrl, price, currency = 'RM', period = '/month', sx, showIndicator = true, }) => {
@@ -3223,6 +3335,7 @@ const SectionTitle$2 = styled(Typography)({
3223
3335
  fontWeight: 700,
3224
3336
  color: '#13131B',
3225
3337
  lineHeight: '28px',
3338
+ wordSpacing: '-5px',
3226
3339
  marginBottom: '8px',
3227
3340
  });
3228
3341
  const SectionDescription = styled(Typography)({
@@ -3230,6 +3343,7 @@ const SectionDescription = styled(Typography)({
3230
3343
  fontWeight: 400,
3231
3344
  color: '#5F5E62',
3232
3345
  lineHeight: '18px',
3346
+ wordSpacing: '-5px',
3233
3347
  });
3234
3348
 
3235
3349
  const CheckoutHeader = ({ progress, product, sectionTitle, sectionDescription, sticky = true, progressBarTheme, sx, }) => {
@@ -3271,6 +3385,7 @@ const StyledButton = styled('button')(({ isDisabled, desktopWidth }) => ({
3271
3385
  fontSize: '14px',
3272
3386
  fontWeight: 500,
3273
3387
  lineHeight: '18px',
3388
+ wordSpacing: '-5px',
3274
3389
  cursor: isDisabled ? 'not-allowed' : 'pointer',
3275
3390
  transition: 'all 0.2s ease',
3276
3391
  '&:hover': {
@@ -3301,6 +3416,7 @@ const QuestionText = styled(Typography)({
3301
3416
  fontWeight: 400,
3302
3417
  color: '#13131B',
3303
3418
  lineHeight: '24px',
3419
+ wordSpacing: '-5px',
3304
3420
  fontFamily: '"MetLifeCircular", "Montserrat", sans-serif',
3305
3421
  });
3306
3422
  const OptionsContainer = styled(Box)({
@@ -3331,6 +3447,7 @@ styled(Typography)(({ selected }) => ({
3331
3447
  fontWeight: 600,
3332
3448
  color: selected ? '#13131B' : '#5F5E62',
3333
3449
  lineHeight: '20px',
3450
+ wordSpacing: '-5px',
3334
3451
  }));
3335
3452
 
3336
3453
  const HealthQuestionGroup = ({ question, questionNumber, value, onChange, error, labels = { yes: 'Yes', no: 'No' }, sx, }) => {
@@ -3382,7 +3499,7 @@ const FullWidthField$1 = styled(Box)({
3382
3499
  const CheckboxContainer$1 = styled(Box)({
3383
3500
  marginTop: '12px',
3384
3501
  '& .MuiFormControlLabel-root': {
3385
- alignItems: 'flex-start',
3502
+ alignItems: 'center',
3386
3503
  marginLeft: 0,
3387
3504
  },
3388
3505
  '& .MuiCheckbox-root': {
@@ -3394,6 +3511,7 @@ const CheckboxLabel$1 = styled(Typography)({
3394
3511
  fontWeight: 400,
3395
3512
  color: '#5F5E62',
3396
3513
  lineHeight: '18px',
3514
+ wordSpacing: '-5px',
3397
3515
  });
3398
3516
 
3399
3517
  const PersonalInformationForm = ({ renderField, fields, consents, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
@@ -3481,12 +3599,14 @@ const CheckboxLabel = styled(Typography)({
3481
3599
  fontWeight: 400,
3482
3600
  color: '#5F5E62',
3483
3601
  lineHeight: '18px',
3602
+ wordSpacing: '-5px',
3484
3603
  });
3485
3604
  const SectionTitle$1 = styled(Typography)({
3486
3605
  fontSize: '16px',
3487
3606
  fontWeight: 600,
3488
3607
  color: '#13131B',
3489
3608
  lineHeight: '24px',
3609
+ wordSpacing: '-5px',
3490
3610
  });
3491
3611
 
3492
3612
  const ContactDetailsForm = ({ renderField, fields, mailingFields, mailingAddressSame, onSubmit, formRef, sx, desktopGridLayout = false, }) => {
@@ -3659,7 +3779,7 @@ const FAQContainer = styled$1(Box)(({ theme }) => ({
3659
3779
  width: '100%',
3660
3780
  backgroundColor: '#ffffff',
3661
3781
  [theme.breakpoints.up('md')]: {
3662
- padding: '64px 32px',
3782
+ padding: '70px 0',
3663
3783
  gap: '32px',
3664
3784
  },
3665
3785
  }));
@@ -3667,6 +3787,7 @@ const FAQTitle = styled$1(Typography)(({ theme }) => ({
3667
3787
  fontWeight: 700,
3668
3788
  fontSize: '20px',
3669
3789
  lineHeight: '28px',
3790
+ wordSpacing: '-5px',
3670
3791
  textAlign: 'center',
3671
3792
  width: '100%',
3672
3793
  margin: 0,
@@ -3688,6 +3809,14 @@ const StyledAccordion = styled$1(Accordion)(({ theme }) => ({
3688
3809
  '&.Mui-expanded': {
3689
3810
  margin: 0,
3690
3811
  },
3812
+ [theme.breakpoints.up('md')]: {
3813
+ marginTop: '12px',
3814
+ marginBottom: '12px',
3815
+ '&.Mui-expanded': {
3816
+ marginTop: '12px',
3817
+ marginBottom: '12px',
3818
+ },
3819
+ },
3691
3820
  }));
3692
3821
  const StyledAccordionSummary = styled$1(AccordionSummary)(({ theme }) => ({
3693
3822
  minHeight: '48px',
@@ -3710,6 +3839,7 @@ const FAQQuestion = styled$1(Typography)(({ theme }) => ({
3710
3839
  fontWeight: 700,
3711
3840
  fontSize: '14px',
3712
3841
  lineHeight: '20px',
3842
+ wordSpacing: '-5px',
3713
3843
  flex: 1,
3714
3844
  [theme.breakpoints.up('md')]: {
3715
3845
  fontSize: '15px',
@@ -3720,6 +3850,7 @@ const StyledAccordionDetails = styled$1(AccordionDetails)(({ theme }) => ({
3720
3850
  fontWeight: 400,
3721
3851
  fontSize: '14px',
3722
3852
  lineHeight: '20px',
3853
+ wordSpacing: '-5px',
3723
3854
  padding: '0 0 16px 0',
3724
3855
  [theme.breakpoints.up('md')]: {
3725
3856
  fontSize: '15px',
@@ -3780,13 +3911,14 @@ const SectionContainer = styled$1(Box)(({ theme }) => ({
3780
3911
  width: '100%',
3781
3912
  backgroundColor: '#ffffff',
3782
3913
  [theme.breakpoints.up('md')]: {
3783
- padding: '64px 32px',
3914
+ padding: '70px 0',
3784
3915
  gap: '40px',
3785
3916
  },
3786
3917
  }));
3787
3918
  const SectionTitle = styled$1(Typography)(({ theme }) => ({
3788
3919
  fontWeight: 700,
3789
3920
  fontSize: '20px',
3921
+ wordSpacing: '-5px',
3790
3922
  lineHeight: '28px',
3791
3923
  textAlign: 'center',
3792
3924
  width: '100%',
@@ -3802,7 +3934,7 @@ const BenefitsList = styled$1(Box)(({ theme }) => ({
3802
3934
  gap: '16px',
3803
3935
  width: '100%',
3804
3936
  [theme.breakpoints.up('md')]: {
3805
- gap: '24px',
3937
+ gap: '16px',
3806
3938
  },
3807
3939
  }));
3808
3940
  const BenefitItemContainer = styled$1(Box)(({ theme }) => ({
@@ -3811,7 +3943,7 @@ const BenefitItemContainer = styled$1(Box)(({ theme }) => ({
3811
3943
  alignItems: 'flex-start',
3812
3944
  width: '100%',
3813
3945
  [theme.breakpoints.up('md')]: {
3814
- gap: '16px',
3946
+ gap: '6px',
3815
3947
  },
3816
3948
  }));
3817
3949
  const BenefitIcon = styled$1(Box)({
@@ -3830,6 +3962,7 @@ const BenefitTitle = styled$1(Typography)(({ theme }) => ({
3830
3962
  fontWeight: 700,
3831
3963
  fontSize: '14px',
3832
3964
  lineHeight: '20px',
3965
+ wordSpacing: '-5px',
3833
3966
  margin: 0,
3834
3967
  [theme.breakpoints.up('md')]: {
3835
3968
  fontSize: '18px',
@@ -3840,6 +3973,7 @@ const BenefitDescription = styled$1(Typography)(({ theme }) => ({
3840
3973
  fontWeight: 400,
3841
3974
  fontSize: '14px',
3842
3975
  lineHeight: '18px',
3976
+ wordSpacing: '-5px',
3843
3977
  margin: 0,
3844
3978
  [theme.breakpoints.up('md')]: {
3845
3979
  fontSize: '16px',