From cf796328650123ac61c32fd2a28d493e46140605 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso Date: Thu, 23 Oct 2025 20:10:22 +0200 Subject: [PATCH 01/41] First approach to the new footer component --- packages/lib/src/footer/Footer.stories.tsx | 5 +- packages/lib/src/footer/Footer.tsx | 129 +++++++++++++-------- packages/lib/src/footer/Icons.tsx | 44 +++---- 3 files changed, 108 insertions(+), 70 deletions(-) diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index ea1e2bfb37..462412ae94 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -131,7 +131,10 @@ const Footer = () => ( <> - <DxcFooter /> + <DxcFooter> + <DxcFooter.LeftContent>Holaaa</DxcFooter.LeftContent> + <DxcFooter.RightContent>Hellooo</DxcFooter.RightContent> + </DxcFooter> </ExampleContainer> <ExampleContainer> <Title title="With children, copyright, bottom links and social links" theme="light" level={4} /> diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 42019cc088..e33b69158e 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -1,4 +1,4 @@ -import { useContext } from "react"; +import { ElementType, ReactNode, useContext, Children, isValidElement } from "react"; import styled from "@emotion/styled"; import { responsiveSizes, spaces } from "../common/variables"; import DxcFlex from "../flex/Flex"; @@ -12,19 +12,12 @@ const FooterContainer = styled.footer<{ margin: FooterPropsType["margin"]; mode?: FooterPropsType["mode"]; }>` - background-color: var(--color-bg-neutral-strongest); box-sizing: border-box; display: flex; flex-direction: ${(props) => (props?.mode === "default" ? "column" : "row")}; justify-content: space-between; margin-top: ${(props) => (props.margin ? spaces[props.margin] : "var(--spacing-padding-none)")}; - min-height: ${(props) => (props?.mode === "default" ? "124px" : "40px")}; width: 100%; - gap: var(--spacing-gap-m); - padding: ${(props) => - props?.mode === "default" - ? "var(--spacing-padding-m) var(--spacing-padding-xl)" - : "var(--spacing-padding-s) var(--spacing-padding-xl)"}; @media (max-width: ${responsiveSizes.medium}rem) { padding: var(--spacing-padding-l) var(--spacing-padding-ml); } @@ -33,10 +26,18 @@ const FooterContainer = styled.footer<{ } `; +const MainContainer = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + min-height: 80px; +`; + const BottomContainer = styled.div` display: flex; justify-content: space-between; - align-items: flex-end; + align-items: center; @media (min-width: ${responsiveSizes.small}rem) { flex-direction: row; @@ -45,18 +46,33 @@ const BottomContainer = styled.div` flex-direction: column; align-items: center; } + width: 100%; + height: var(--height-xl); + background-color: var(--color-bg-primary-strong); + padding: var(--spacing-padding-none) var(--spacing-padding-xl); + box-sizing: border-box; +`; - border-top: var(--border-width-s) var(--border-style-default) var(--border-color-primary-medium); - margin-top: var(--spacing-gap-m); +const LeftContainer = styled.div` + display: flex; + flex-direction: column; + gap: var(--spacing-gap-ml); + max-width: 33.3%; + height: 100%; + color: var(--color-fg-neutral-dark); + padding: var(--spacing-padding-l) var(--spacing-padding-xl); `; -const ChildComponents = styled.div` - min-height: var(--height-xxs); - color: var(--color-fg-neutral-bright); +const RightContainer = styled.div` + display: flex; + justify-content: flex-end; + gap: var(--spacing-gap-xl); + max-width: 66.66%; + height: 100%; + padding: var(--spacing-padding-l) var(--spacing-padding-xl); `; const Copyright = styled.div` - margin-top: var(--spacing-padding-xs); font-family: var(--typography-font-family); font-size: var(--typography-label-s); font-weight: var(--typography-label-regular); @@ -96,7 +112,7 @@ const SocialAnchor = styled.a<{ index: number }>` const SocialIconContainer = styled.div` display: flex; align-items: center; - color: var(--color-fg-neutral-bright); + color: var(--color-fg-primary-strong); overflow: hidden; font-size: var(--height-s); @@ -110,8 +126,7 @@ const BottomLinks = styled.div` display: inline-flex; flex-wrap: wrap; align-self: center; - margin-top: var(--spacing-padding-xs); - color: var(--color-fg-neutral-bright); + color: var(--color-fg-neutral-dark); @media (min-width: ${responsiveSizes.small}rem) { max-width: 60%; @@ -148,10 +163,13 @@ const getLogoElement = (mode: FooterPropsType["mode"], logo?: FooterPropsType["l } }; +const findChildType = (children: FooterPropsType["children"], childType: ElementType) => + Children.toArray(children).find((child) => isValidElement(child) && child.type === childType); + const DxcFooter = ({ bottomLinks, - children, copyright, + children, logo, margin, mode = "default", @@ -159,36 +177,46 @@ const DxcFooter = ({ tabIndex = 0, }: FooterPropsType): JSX.Element => { const translatedLabels = useContext(HalstackLanguageContext); - const footerLogo = getLogoElement(mode, logo); + const leftContentChild = findChildType(children, LeftContent); + const rightContentChild = findChildType(children, RightContent); return ( <FooterContainer margin={margin} mode={mode}> - <DxcFlex justifyContent="space-between" alignItems="center" wrap="wrap"> - <LogoContainer mode={mode}>{footerLogo}</LogoContainer> - {mode === "default" && ( - <DxcFlex gap="var(--spacing-gap-ml)"> - {socialLinks?.map((link, index) => ( - <Tooltip label={link.title} key={`social${index}${link.href}`}> - <SocialAnchor - href={link.href} - tabIndex={tabIndex} - aria-label={link.title} - key={`social${index}${link.href}`} - index={index} - > - <SocialIconContainer> - {typeof link.logo === "string" ? <DxcIcon icon={link.logo} /> : link.logo} - </SocialIconContainer> - </SocialAnchor> - </Tooltip> - ))} - </DxcFlex> - )} - </DxcFlex> - <ChildComponents>{children}</ChildComponents> {mode === "default" && ( - <BottomContainer> + <MainContainer> + <LeftContainer> + <LogoContainer mode={mode}>{footerLogo}</LogoContainer> + {leftContentChild} + </LeftContainer> + {(socialLinks || rightContentChild) && ( + <RightContainer> + {rightContentChild} + {socialLinks && ( + <DxcFlex gap="var(--spacing-gap-ml)"> + {socialLinks?.map((link, index) => ( + <Tooltip label={link.title} key={`social${index}${link.href}`}> + <SocialAnchor + href={link.href} + tabIndex={tabIndex} + aria-label={link.title} + key={`social${index}${link.href}`} + index={index} + > + <SocialIconContainer> + {typeof link.logo === "string" ? <DxcIcon icon={link.logo} /> : link.logo} + </SocialIconContainer> + </SocialAnchor> + </Tooltip> + ))} + </DxcFlex> + )} + </RightContainer> + )} + </MainContainer> + )} + <BottomContainer> + {mode === "default" ? ( <BottomLinks> {bottomLinks?.map((link, index) => ( <span key={`bottom${index}${link.text}`}> @@ -198,11 +226,18 @@ const DxcFooter = ({ </span> ))} </BottomLinks> - <Copyright>{copyright ?? translatedLabels.footer.copyrightText(new Date().getFullYear())}</Copyright> - </BottomContainer> - )} + ) : ( + <LogoContainer mode={mode}>{footerLogo}</LogoContainer> + )} + <Copyright>{copyright ?? translatedLabels.footer.copyrightText(new Date().getFullYear())}</Copyright> + </BottomContainer> </FooterContainer> ); }; +const LeftContent = ({ children }: { children: ReactNode }) => <>{children}</>; +const RightContent = ({ children }: { children: ReactNode }) => <>{children}</>; + +DxcFooter.LeftContent = LeftContent; +DxcFooter.RightContent = RightContent; export default DxcFooter; diff --git a/packages/lib/src/footer/Icons.tsx b/packages/lib/src/footer/Icons.tsx index 6eb3b1bf42..88562bef81 100644 --- a/packages/lib/src/footer/Icons.tsx +++ b/packages/lib/src/footer/Icons.tsx @@ -5,57 +5,57 @@ export const dxcLogo = ( <path d="M171.5-54.124v12.539h-3.6V-54.124h-4.973v-3.191h13.54v3.191H171.5" transform="translate(-68.528 65.45)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M189.96-41.585V-57.315h12.326v3.079h-8.753v3.191h7.7v3.078h-7.7v3.3h8.87v3.078H189.96" transform="translate(-77.56 65.45)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M223.558-41.438a8.1,8.1,0,0,1-8.382-8.1v-.045a8.161,8.161,0,0,1,8.522-8.146,8.6,8.6,0,0,1,6.444,2.431l-2.289,2.543a6.133,6.133,0,0,0-4.178-1.778,4.743,4.743,0,0,0-4.738,4.905v.045a4.752,4.752,0,0,0,4.738,4.95,6,6,0,0,0,4.295-1.845l2.288,2.228a8.491,8.491,0,0,1-6.7,2.813" transform="translate(-86.019 65.583)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M254.988-41.585V-47.9h-6.63v6.315h-3.6V-57.315h3.6v6.225h6.63v-6.225h3.594v15.731h-3.594" transform="translate(-95.903 65.45)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M285.991-41.585l-7.914-10v10h-3.549V-57.315h3.316l7.657,9.685v-9.685h3.549v15.731h-3.058" transform="translate(-105.869 65.45)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M317.2-49.583a4.869,4.869,0,0,0-4.949-4.95,4.793,4.793,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.793,4.793,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.661-3.623-8.661-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.66,3.623,8.66,8.1v.045c0,4.477-3.664,8.145-8.708,8.145" transform="translate(-115.631 65.583)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M336.786-41.585V-57.315h3.6v12.584h8.148v3.146H336.786" transform="translate(-126.654 65.45)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M372.78-49.583a4.87,4.87,0,0,0-4.949-4.95,4.794,4.794,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.794,4.794,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.662-3.623-8.662-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.661,3.623,8.661,8.1v.045c0,4.477-3.666,8.145-8.708,8.145" transform="translate(-135.016 65.583)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M399.735-41.438c-5.09,0-8.592-3.443-8.592-8.1v-.045a8.243,8.243,0,0,1,8.568-8.146,9.18,9.18,0,0,1,6.42,2.16l-2.265,2.634a6.141,6.141,0,0,0-4.272-1.6,4.807,4.807,0,0,0-4.692,4.905v.045a4.8,4.8,0,0,0,4.949,4.995,5.89,5.89,0,0,0,3.384-.945v-2.25h-3.618v-2.992h7.1v6.841a10.837,10.837,0,0,1-6.98,2.5" transform="translate(-145.284 65.583)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M428.664-47.855v6.27h-3.6v-6.2l-6.28-9.528h4.2L426.89-51l3.968-6.315h4.085l-6.28,9.46" transform="translate(-154.162 65.45)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> <path d="M84.218-55.737a10.063,10.063,0,0,1,2.589-4.4,9.792,9.792,0,0,1,6.985-2.77h11.328V-69.3H93.792a17.041,17.041,0,0,0-11.8,4.759,16.344,16.344,0,0,0-3.547,5.115,13.247,13.247,0,0,0-1.122,3.688Zm0,4.877a10.065,10.065,0,0,0,2.589,4.4,9.793,9.793,0,0,0,6.985,2.77h11.328V-37.3H93.792a17.042,17.042,0,0,1-11.8-4.759,16.339,16.339,0,0,1-3.547-5.114,13.251,13.251,0,0,1-1.122-3.688ZM63.1-47.98,54.45-37.3H45.873l12.957-16-12.957-16H54.45L63.1-58.619l8.65-10.68h8.578l-12.957,16,12.957,16H71.749ZM48.875-55.737a13.212,13.212,0,0,0-1.122-3.688,16.359,16.359,0,0,0-3.546-5.115,17.043,17.043,0,0,0-11.8-4.759H21.08v6.393H32.408a9.79,9.79,0,0,1,6.985,2.77,10.072,10.072,0,0,1,2.59,4.4Zm0,4.877a13.215,13.215,0,0,1-1.122,3.688,16.353,16.353,0,0,1-3.546,5.114,17.044,17.044,0,0,1-11.8,4.759H21.08v-6.393H32.408a9.791,9.791,0,0,0,6.985-2.77,10.074,10.074,0,0,0,2.59-4.4h6.892" transform="translate(-21.08 69.298)" - fill="#fff" + fill="var(--color-fg-primary-strong)" /> </g> </svg> @@ -68,57 +68,57 @@ export const dxcSmallLogo = ( <path d="M171.5-54.124v12.539h-3.6V-54.124h-4.973v-3.191h13.54v3.191H171.5" transform="translate(-68.528 65.45)" - fill="#fff" + fill="white" /> <path d="M189.96-41.585V-57.315h12.326v3.079h-8.753v3.191h7.7v3.078h-7.7v3.3h8.87v3.078H189.96" transform="translate(-77.56 65.45)" - fill="#fff" + fill="white" /> <path d="M223.558-41.438a8.1,8.1,0,0,1-8.382-8.1v-.045a8.161,8.161,0,0,1,8.522-8.146,8.6,8.6,0,0,1,6.444,2.431l-2.289,2.543a6.133,6.133,0,0,0-4.178-1.778,4.743,4.743,0,0,0-4.738,4.905v.045a4.752,4.752,0,0,0,4.738,4.95,6,6,0,0,0,4.295-1.845l2.288,2.228a8.491,8.491,0,0,1-6.7,2.813" transform="translate(-86.019 65.583)" - fill="#fff" + fill="white" /> <path d="M254.988-41.585V-47.9h-6.63v6.315h-3.6V-57.315h3.6v6.225h6.63v-6.225h3.594v15.731h-3.594" transform="translate(-95.903 65.45)" - fill="#fff" + fill="white" /> <path d="M285.991-41.585l-7.914-10v10h-3.549V-57.315h3.316l7.657,9.685v-9.685h3.549v15.731h-3.058" transform="translate(-105.869 65.45)" - fill="#fff" + fill="white" /> <path d="M317.2-49.583a4.869,4.869,0,0,0-4.949-4.95,4.793,4.793,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.793,4.793,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.661-3.623-8.661-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.66,3.623,8.66,8.1v.045c0,4.477-3.664,8.145-8.708,8.145" transform="translate(-115.631 65.583)" - fill="#fff" + fill="white" /> <path d="M336.786-41.585V-57.315h3.6v12.584h8.148v3.146H336.786" transform="translate(-126.654 65.45)" - fill="#fff" + fill="white" /> <path d="M372.78-49.583a4.87,4.87,0,0,0-4.949-4.95,4.794,4.794,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.794,4.794,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.662-3.623-8.662-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.661,3.623,8.661,8.1v.045c0,4.477-3.666,8.145-8.708,8.145" transform="translate(-135.016 65.583)" - fill="#fff" + fill="white" /> <path d="M399.735-41.438c-5.09,0-8.592-3.443-8.592-8.1v-.045a8.243,8.243,0,0,1,8.568-8.146,9.18,9.18,0,0,1,6.42,2.16l-2.265,2.634a6.141,6.141,0,0,0-4.272-1.6,4.807,4.807,0,0,0-4.692,4.905v.045a4.8,4.8,0,0,0,4.949,4.995,5.89,5.89,0,0,0,3.384-.945v-2.25h-3.618v-2.992h7.1v6.841a10.837,10.837,0,0,1-6.98,2.5" transform="translate(-145.284 65.583)" - fill="#fff" + fill="white" /> <path d="M428.664-47.855v6.27h-3.6v-6.2l-6.28-9.528h4.2L426.89-51l3.968-6.315h4.085l-6.28,9.46" transform="translate(-154.162 65.45)" - fill="#fff" + fill="white" /> <path d="M84.218-55.737a10.063,10.063,0,0,1,2.589-4.4,9.792,9.792,0,0,1,6.985-2.77h11.328V-69.3H93.792a17.041,17.041,0,0,0-11.8,4.759,16.344,16.344,0,0,0-3.547,5.115,13.247,13.247,0,0,0-1.122,3.688Zm0,4.877a10.065,10.065,0,0,0,2.589,4.4,9.793,9.793,0,0,0,6.985,2.77h11.328V-37.3H93.792a17.042,17.042,0,0,1-11.8-4.759,16.339,16.339,0,0,1-3.547-5.114,13.251,13.251,0,0,1-1.122-3.688ZM63.1-47.98,54.45-37.3H45.873l12.957-16-12.957-16H54.45L63.1-58.619l8.65-10.68h8.578l-12.957,16,12.957,16H71.749ZM48.875-55.737a13.212,13.212,0,0,0-1.122-3.688,16.359,16.359,0,0,0-3.546-5.115,17.043,17.043,0,0,0-11.8-4.759H21.08v6.393H32.408a9.79,9.79,0,0,1,6.985,2.77,10.072,10.072,0,0,1,2.59,4.4Zm0,4.877a13.215,13.215,0,0,1-1.122,3.688,16.353,16.353,0,0,1-3.546,5.114,17.044,17.044,0,0,1-11.8,4.759H21.08v-6.393H32.408a9.791,9.791,0,0,0,6.985-2.77,10.074,10.074,0,0,0,2.59-4.4h6.892" transform="translate(-21.08 69.298)" - fill="#fff" + fill="white" /> </g> </svg> From f6c2365cce8f8b054670698fd4e0b58f3f3f78aa Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 31 Oct 2025 11:40:43 +0100 Subject: [PATCH 02/41] Update footer styles: change social icon fill color and adjust link colors for better visibility --- packages/lib/src/footer/Footer.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index e33b69158e..fcf8f49bf1 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -119,6 +119,7 @@ const SocialIconContainer = styled.div` svg { height: var(--height-s); width: 24px; + fill: var(--color-fg-primary-strong); } `; @@ -126,7 +127,7 @@ const BottomLinks = styled.div` display: inline-flex; flex-wrap: wrap; align-self: center; - color: var(--color-fg-neutral-dark); + color: var(--color-fg-neutral-bright); @media (min-width: ${responsiveSizes.small}rem) { max-width: 60%; @@ -148,7 +149,7 @@ const BottomLink = styled.a` font-family: var(--typography-font-family); font-size: var(--typography-label-m); font-weight: var(--typography-label-regular); - color: var(--color-fg-neutral-bright); + color: inherit; &:focus { outline: var(--border-width-m) var(--border-style-default) var(--border-color-secondary-medium); From 26f72ae45b4951f41c41ac95526e4cc96e05a57b Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 31 Oct 2025 11:48:26 +0100 Subject: [PATCH 03/41] Remove unnecesary change --- packages/lib/src/footer/Icons.tsx | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/lib/src/footer/Icons.tsx b/packages/lib/src/footer/Icons.tsx index 88562bef81..a9c5714d44 100644 --- a/packages/lib/src/footer/Icons.tsx +++ b/packages/lib/src/footer/Icons.tsx @@ -68,57 +68,57 @@ export const dxcSmallLogo = ( <path d="M171.5-54.124v12.539h-3.6V-54.124h-4.973v-3.191h13.54v3.191H171.5" transform="translate(-68.528 65.45)" - fill="white" + fill="#fff" /> <path d="M189.96-41.585V-57.315h12.326v3.079h-8.753v3.191h7.7v3.078h-7.7v3.3h8.87v3.078H189.96" transform="translate(-77.56 65.45)" - fill="white" + fill="#fff" /> <path d="M223.558-41.438a8.1,8.1,0,0,1-8.382-8.1v-.045a8.161,8.161,0,0,1,8.522-8.146,8.6,8.6,0,0,1,6.444,2.431l-2.289,2.543a6.133,6.133,0,0,0-4.178-1.778,4.743,4.743,0,0,0-4.738,4.905v.045a4.752,4.752,0,0,0,4.738,4.95,6,6,0,0,0,4.295-1.845l2.288,2.228a8.491,8.491,0,0,1-6.7,2.813" transform="translate(-86.019 65.583)" - fill="white" + fill="#fff" /> <path d="M254.988-41.585V-47.9h-6.63v6.315h-3.6V-57.315h3.6v6.225h6.63v-6.225h3.594v15.731h-3.594" transform="translate(-95.903 65.45)" - fill="white" + fill="#fff" /> <path d="M285.991-41.585l-7.914-10v10h-3.549V-57.315h3.316l7.657,9.685v-9.685h3.549v15.731h-3.058" transform="translate(-105.869 65.45)" - fill="white" + fill="#fff" /> <path d="M317.2-49.583a4.869,4.869,0,0,0-4.949-4.95,4.793,4.793,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.793,4.793,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.661-3.623-8.661-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.66,3.623,8.66,8.1v.045c0,4.477-3.664,8.145-8.708,8.145" transform="translate(-115.631 65.583)" - fill="white" + fill="#fff" /> <path d="M336.786-41.585V-57.315h3.6v12.584h8.148v3.146H336.786" transform="translate(-126.654 65.45)" - fill="white" + fill="#fff" /> <path d="M372.78-49.583a4.87,4.87,0,0,0-4.949-4.95,4.794,4.794,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.794,4.794,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.662-3.623-8.662-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.661,3.623,8.661,8.1v.045c0,4.477-3.666,8.145-8.708,8.145" transform="translate(-135.016 65.583)" - fill="white" + fill="#fff" /> <path d="M399.735-41.438c-5.09,0-8.592-3.443-8.592-8.1v-.045a8.243,8.243,0,0,1,8.568-8.146,9.18,9.18,0,0,1,6.42,2.16l-2.265,2.634a6.141,6.141,0,0,0-4.272-1.6,4.807,4.807,0,0,0-4.692,4.905v.045a4.8,4.8,0,0,0,4.949,4.995,5.89,5.89,0,0,0,3.384-.945v-2.25h-3.618v-2.992h7.1v6.841a10.837,10.837,0,0,1-6.98,2.5" transform="translate(-145.284 65.583)" - fill="white" + fill="#fff" /> <path d="M428.664-47.855v6.27h-3.6v-6.2l-6.28-9.528h4.2L426.89-51l3.968-6.315h4.085l-6.28,9.46" transform="translate(-154.162 65.45)" - fill="white" + fill="#fff" /> <path d="M84.218-55.737a10.063,10.063,0,0,1,2.589-4.4,9.792,9.792,0,0,1,6.985-2.77h11.328V-69.3H93.792a17.041,17.041,0,0,0-11.8,4.759,16.344,16.344,0,0,0-3.547,5.115,13.247,13.247,0,0,0-1.122,3.688Zm0,4.877a10.065,10.065,0,0,0,2.589,4.4,9.793,9.793,0,0,0,6.985,2.77h11.328V-37.3H93.792a17.042,17.042,0,0,1-11.8-4.759,16.339,16.339,0,0,1-3.547-5.114,13.251,13.251,0,0,1-1.122-3.688ZM63.1-47.98,54.45-37.3H45.873l12.957-16-12.957-16H54.45L63.1-58.619l8.65-10.68h8.578l-12.957,16,12.957,16H71.749ZM48.875-55.737a13.212,13.212,0,0,0-1.122-3.688,16.359,16.359,0,0,0-3.546-5.115,17.043,17.043,0,0,0-11.8-4.759H21.08v6.393H32.408a9.79,9.79,0,0,1,6.985,2.77,10.072,10.072,0,0,1,2.59,4.4Zm0,4.877a13.215,13.215,0,0,1-1.122,3.688,16.353,16.353,0,0,1-3.546,5.114,17.044,17.044,0,0,1-11.8,4.759H21.08v-6.393H32.408a9.791,9.791,0,0,0,6.985-2.77,10.074,10.074,0,0,0,2.59-4.4h6.892" transform="translate(-21.08 69.298)" - fill="white" + fill="#fff" /> </g> </svg> From 1c43b590ca3f3ae7d082f8ed365b65ba813a7053 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 31 Oct 2025 12:40:02 +0100 Subject: [PATCH 04/41] Refactor footer component styles for improved responsiveness and layout consistency --- packages/lib/src/footer/Footer.tsx | 54 ++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index fcf8f49bf1..2605d2c3be 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -32,25 +32,35 @@ const MainContainer = styled.div` align-items: center; flex-wrap: wrap; min-height: 80px; + + @media (max-width: ${responsiveSizes.small}rem) { + flex-direction: column; + align-items: flex-start; + gap: var(--spacing-gap-ml); + padding: var(--spacing-padding-m) var(--spacing-gap-ml); + } `; const BottomContainer = styled.div` + width: 100%; display: flex; justify-content: space-between; align-items: center; + background-color: var(--color-bg-primary-strong); + padding: var(--spacing-padding-none) var(--spacing-padding-xl); + box-sizing: border-box; @media (min-width: ${responsiveSizes.small}rem) { + height: var(--height-xl); flex-direction: row; } + @media (max-width: ${responsiveSizes.small}rem) { flex-direction: column; align-items: center; + gap: var(--spacing-gap-ml); + padding: var(--spacing-padding-m); } - width: 100%; - height: var(--height-xl); - background-color: var(--color-bg-primary-strong); - padding: var(--spacing-padding-none) var(--spacing-padding-xl); - box-sizing: border-box; `; const LeftContainer = styled.div` @@ -60,7 +70,10 @@ const LeftContainer = styled.div` max-width: 33.3%; height: 100%; color: var(--color-fg-neutral-dark); - padding: var(--spacing-padding-l) var(--spacing-padding-xl); + + @media (min-width: ${responsiveSizes.small}rem) { + padding: var(--spacing-padding-l) var(--spacing-padding-xl); + } `; const RightContainer = styled.div` @@ -69,7 +82,10 @@ const RightContainer = styled.div` gap: var(--spacing-gap-xl); max-width: 66.66%; height: 100%; - padding: var(--spacing-padding-l) var(--spacing-padding-xl); + + @media (min-width: ${responsiveSizes.small}rem) { + padding: var(--spacing-padding-l) var(--spacing-padding-xl); + } `; const Copyright = styled.div` @@ -117,8 +133,8 @@ const SocialIconContainer = styled.div` font-size: var(--height-s); svg { - height: var(--height-s); - width: 24px; + height: var(--height-xs); + width: var(--height-xs); fill: var(--color-fg-primary-strong); } `; @@ -218,15 +234,17 @@ const DxcFooter = ({ )} <BottomContainer> {mode === "default" ? ( - <BottomLinks> - {bottomLinks?.map((link, index) => ( - <span key={`bottom${index}${link.text}`}> - <BottomLink href={link.href} tabIndex={tabIndex}> - {link.text} - </BottomLink> - </span> - ))} - </BottomLinks> + bottomLinks && ( + <BottomLinks> + {bottomLinks?.map((link, index) => ( + <span key={`bottom${index}${link.text}`}> + <BottomLink href={link.href} tabIndex={tabIndex}> + {link.text} + </BottomLink> + </span> + ))} + </BottomLinks> + ) ) : ( <LogoContainer mode={mode}>{footerLogo}</LogoContainer> )} From 1acbd0a2a6103dce3ca34d87782b4225ac010406 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Mon, 3 Nov 2025 08:48:40 +0100 Subject: [PATCH 05/41] Remove href from Logo type, add changes to types in FooterCodePage and add Compound components. Also improve responsive styles for Left and Right Contianers. --- .../components/footer/code/FooterCodePage.tsx | 22 +++++++-- packages/lib/src/footer/Footer.tsx | 46 ++++++++++--------- packages/lib/src/footer/types.ts | 4 -- 3 files changed, 44 insertions(+), 28 deletions(-) diff --git a/apps/website/screens/components/footer/code/FooterCodePage.tsx b/apps/website/screens/components/footer/code/FooterCodePage.tsx index 0de8bdbb3d..8b09ac2439 100644 --- a/apps/website/screens/components/footer/code/FooterCodePage.tsx +++ b/apps/website/screens/components/footer/code/FooterCodePage.tsx @@ -1,11 +1,10 @@ -import { DxcFlex, DxcTable, DxcLink } from "@dxc-technology/halstack-react"; +import { DxcFlex, DxcTable, DxcLink, DxcParagraph } from "@dxc-technology/halstack-react"; import QuickNavContainer from "@/common/QuickNavContainer"; import DocFooter from "@/common/DocFooter"; import StatusBadge from "@/common/StatusBadge"; import Code, { ExtendedTableCode, TableCode } from "@/common/Code"; const logoTypeString = `{ - href?: string; src: string; title?: string; }`; @@ -75,7 +74,7 @@ const sections = [ <ExtendedTableCode>{logoTypeString}</ExtendedTableCode> </td> </td> - <td>Logo to be displayed inside the header.</td> + <td>Logo to be displayed inside the footer.</td> <td>-</td> </tr> <tr> @@ -158,6 +157,23 @@ const sections = [ </DxcTable> ), }, + { + title: "DxcFooter.LeftContent", + content: ( + <DxcParagraph> + This compound will be used to display the content on the Left Container under the Logo. + </DxcParagraph> + ), + }, + { + title: "DxcFooter.RigthContent", + content: ( + <DxcParagraph> + This compound will be used to display the content on the Right Container of the footer, if socialLinks are + provided they will always display at the end of the container. + </DxcParagraph> + ), + }, { title: "Examples", subSections: [ diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 2605d2c3be..3c0932b163 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -18,9 +18,7 @@ const FooterContainer = styled.footer<{ justify-content: space-between; margin-top: ${(props) => (props.margin ? spaces[props.margin] : "var(--spacing-padding-none)")}; width: 100%; - @media (max-width: ${responsiveSizes.medium}rem) { - padding: var(--spacing-padding-l) var(--spacing-padding-ml); - } + @media (max-width: ${responsiveSizes.small}rem) { flex-direction: column; } @@ -31,13 +29,16 @@ const MainContainer = styled.div` justify-content: space-between; align-items: center; flex-wrap: wrap; - min-height: 80px; + + @media (min-width: ${responsiveSizes.small}rem) { + min-height: 80px; + } @media (max-width: ${responsiveSizes.small}rem) { flex-direction: column; align-items: flex-start; gap: var(--spacing-gap-ml); - padding: var(--spacing-padding-m) var(--spacing-gap-ml); + padding: var(--spacing-padding-l) var(--spacing-padding-m); } `; @@ -57,7 +58,7 @@ const BottomContainer = styled.div` @media (max-width: ${responsiveSizes.small}rem) { flex-direction: column; - align-items: center; + align-items: flex-start; gap: var(--spacing-gap-ml); padding: var(--spacing-padding-m); } @@ -65,25 +66,29 @@ const BottomContainer = styled.div` const LeftContainer = styled.div` display: flex; - flex-direction: column; gap: var(--spacing-gap-ml); - max-width: 33.3%; height: 100%; color: var(--color-fg-neutral-dark); @media (min-width: ${responsiveSizes.small}rem) { + max-width: 33.3%; padding: var(--spacing-padding-l) var(--spacing-padding-xl); } + + @media (max-width: ${responsiveSizes.small}rem) { + flex-direction: column; + align-items: flex-start; + } `; const RightContainer = styled.div` display: flex; justify-content: flex-end; gap: var(--spacing-gap-xl); - max-width: 66.66%; height: 100%; @media (min-width: ${responsiveSizes.small}rem) { + max-width: 66.66%; padding: var(--spacing-padding-l) var(--spacing-padding-xl); } `; @@ -139,7 +144,7 @@ const SocialIconContainer = styled.div` } `; -const BottomLinks = styled.div` +const BottomLinks = styled.div<{ hasContent: boolean }>` display: inline-flex; flex-wrap: wrap; align-self: center; @@ -151,6 +156,7 @@ const BottomLinks = styled.div` @media (max-width: ${responsiveSizes.small}rem) { max-width: 100%; width: 100%; + display: ${(props) => (props.hasContent ? "inline-flex" : "none")}; } & > span:not(:first-child):before { @@ -234,17 +240,15 @@ const DxcFooter = ({ )} <BottomContainer> {mode === "default" ? ( - bottomLinks && ( - <BottomLinks> - {bottomLinks?.map((link, index) => ( - <span key={`bottom${index}${link.text}`}> - <BottomLink href={link.href} tabIndex={tabIndex}> - {link.text} - </BottomLink> - </span> - ))} - </BottomLinks> - ) + <BottomLinks hasContent={bottomLinks ? true : false}> + {bottomLinks?.map((link, index) => ( + <span key={`bottom${index}${link.text}`}> + <BottomLink href={link.href} tabIndex={tabIndex}> + {link.text} + </BottomLink> + </span> + ))} + </BottomLinks> ) : ( <LogoContainer mode={mode}>{footerLogo}</LogoContainer> )} diff --git a/packages/lib/src/footer/types.ts b/packages/lib/src/footer/types.ts index 881324c5d8..cac55d7f72 100644 --- a/packages/lib/src/footer/types.ts +++ b/packages/lib/src/footer/types.ts @@ -28,10 +28,6 @@ type BottomLink = { }; type Logo = { - /** - * URL to navigate when the logo is clicked. - */ - href?: string; /** * Source of the logo image. */ From b78964845e82fab6f8f29cc85bc0d9579bf18f28 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Mon, 3 Nov 2025 16:48:12 +0100 Subject: [PATCH 06/41] Fix Left and Right container responsive styles --- packages/lib/src/footer/Footer.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 3c0932b163..efdffb4511 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -66,6 +66,8 @@ const BottomContainer = styled.div` const LeftContainer = styled.div` display: flex; + flex-direction: column; + align-items: flex-start; gap: var(--spacing-gap-ml); height: 100%; color: var(--color-fg-neutral-dark); @@ -74,17 +76,13 @@ const LeftContainer = styled.div` max-width: 33.3%; padding: var(--spacing-padding-l) var(--spacing-padding-xl); } - - @media (max-width: ${responsiveSizes.small}rem) { - flex-direction: column; - align-items: flex-start; - } `; const RightContainer = styled.div` display: flex; justify-content: flex-end; gap: var(--spacing-gap-xl); + flex-wrap: wrap; height: 100%; @media (min-width: ${responsiveSizes.small}rem) { From 9963ffcd0707e8b3c9eb0afc2343669845dc6d94 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Tue, 4 Nov 2025 09:43:39 +0100 Subject: [PATCH 07/41] Add responsive styles and fix stories with new footer version --- packages/lib/src/footer/Footer.stories.tsx | 103 ++++++++++++++++++--- packages/lib/src/footer/Footer.tsx | 22 ++++- 2 files changed, 109 insertions(+), 16 deletions(-) diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 462412ae94..010c28b66e 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -8,6 +8,8 @@ import DxcFooter from "./Footer"; import DxcLink from "../link/Link"; import { Meta, StoryObj } from "@storybook/react-vite"; import { userEvent, within } from "storybook/internal/test"; +import DxcParagraph from "../paragraph/Paragraph"; +import DxcHeading from "../heading/Heading"; export default { title: "Footer", @@ -131,33 +133,108 @@ const Footer = () => ( <> <ExampleContainer> <Title title="Default" theme="light" level={4} /> - <DxcFooter> - <DxcFooter.LeftContent>Holaaa</DxcFooter.LeftContent> - <DxcFooter.RightContent>Hellooo</DxcFooter.RightContent> - </DxcFooter> + <DxcFooter /> </ExampleContainer> <ExampleContainer> <Title title="With children, copyright, bottom links and social links" theme="light" level={4} /> <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom}> - <DxcLink href="https://www.linkedin.com/company/dxctechnology" inheritColor> - Linkedin - </DxcLink> + <DxcFooter.LeftContent> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </DxcFooter.LeftContent> + + <DxcFooter.RightContent> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </DxcFooter.RightContent> </DxcFooter> </ExampleContainer> <ExampleContainer> <Title title="With children, copyright, bottom links and social links from material" theme="light" level={4} /> <DxcFooter copyright="Copyright" socialLinks={socialMaterialIcons} bottomLinks={bottom}> - <DxcLink href="https://www.linkedin.com/company/dxctechnology" inheritColor> - Linkedin - </DxcLink> + <DxcFooter.LeftContent> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </DxcFooter.LeftContent> + + <DxcFooter.RightContent> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </DxcFooter.RightContent> </DxcFooter> </ExampleContainer> <ExampleContainer pseudoState="pseudo-focus"> <Title title="Focused bottom and social links" theme="light" level={4} /> <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom}> - <DxcLink href="https://www.linkedin.com/company/dxctechnology" inheritColor> - Linkedin - </DxcLink> + <DxcFooter.LeftContent> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </DxcFooter.LeftContent> + + <DxcFooter.RightContent> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </DxcFooter.RightContent> </DxcFooter> </ExampleContainer> <ExampleContainer> diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index efdffb4511..54889f88d5 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -27,13 +27,16 @@ const FooterContainer = styled.footer<{ const MainContainer = styled.div` display: flex; justify-content: space-between; - align-items: center; - flex-wrap: wrap; + align-items: flex; @media (min-width: ${responsiveSizes.small}rem) { min-height: 80px; } + @media (max-width: ${responsiveSizes.medium}rem) { + flex-wrap: wrap; + } + @media (max-width: ${responsiveSizes.small}rem) { flex-direction: column; align-items: flex-start; @@ -76,19 +79,31 @@ const LeftContainer = styled.div` max-width: 33.3%; padding: var(--spacing-padding-l) var(--spacing-padding-xl); } + + @media (max-width: ${responsiveSizes.medium}rem) { + max-width: 100%; + } `; const RightContainer = styled.div` display: flex; justify-content: flex-end; gap: var(--spacing-gap-xl); - flex-wrap: wrap; height: 100%; @media (min-width: ${responsiveSizes.small}rem) { max-width: 66.66%; padding: var(--spacing-padding-l) var(--spacing-padding-xl); } + + @media (max-width: ${responsiveSizes.large}rem) { + flex-wrap: wrap; + } + + @media (max-width: ${responsiveSizes.medium}rem) { + max-width: 100%; + justify-content: flex-start; + } `; const Copyright = styled.div` @@ -120,6 +135,7 @@ const LogoImg = styled.img<{ mode?: FooterPropsType["mode"] }>` `; const SocialAnchor = styled.a<{ index: number }>` + height: fit-content; border-radius: var(--border-radius-s); &:focus { From d7b5c5f294fbd15fb653a0648c049ceed1f8e57b Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Tue, 4 Nov 2025 09:51:54 +0100 Subject: [PATCH 08/41] Update tests of footer component --- packages/lib/src/footer/Footer.test.tsx | 54 ++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/packages/lib/src/footer/Footer.test.tsx b/packages/lib/src/footer/Footer.test.tsx index e0a615d68f..78f2293ff2 100644 --- a/packages/lib/src/footer/Footer.test.tsx +++ b/packages/lib/src/footer/Footer.test.tsx @@ -34,7 +34,7 @@ describe("Footer component tests", () => { const { getByText } = render(<DxcFooter copyright="test-copyright" />); expect(getByText("test-copyright")).toBeTruthy(); }); - test("Footer renders with correct children", () => { + test("Footer renders LeftContent correctly", () => { // We need to force the offsetWidth value Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, @@ -42,12 +42,29 @@ describe("Footer component tests", () => { }); const { getByText } = render( <DxcFooter> - <p>footer-child-text</p> + <DxcFooter.LeftContent> + <p>footer-child-text</p> + </DxcFooter.LeftContent> </DxcFooter> ); expect(getByText("footer-child-text")).toBeTruthy(); }); - test("Footer renders with children in mobile", () => { + test("Footer renders RightContent correctly", () => { + // We need to force the offsetWidth value + Object.defineProperty(HTMLElement.prototype, "offsetWidth", { + configurable: true, + value: 1024, + }); + const { getByText } = render( + <DxcFooter> + <DxcFooter.RightContent> + <p>footer-child-text</p> + </DxcFooter.RightContent> + </DxcFooter> + ); + expect(getByText("footer-child-text")).toBeTruthy(); + }); + test("Footer renders LeftContent in mobile", () => { // 425 is mobile width Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, @@ -56,7 +73,26 @@ describe("Footer component tests", () => { const { queryByText } = render( <DxcFooter> - <p>footer-child-text</p> + <DxcFooter.LeftContent> + <p>footer-child-text</p> + </DxcFooter.LeftContent> + </DxcFooter> + ); + + expect(queryByText("footer-child-text")).toBeTruthy(); + }); + test("Footer renders RightContent in mobile", () => { + // 425 is mobile width + Object.defineProperty(HTMLElement.prototype, "offsetWidth", { + configurable: true, + value: 425, + }); + + const { queryByText } = render( + <DxcFooter> + <DxcFooter.RightContent> + <p>footer-child-text</p> + </DxcFooter.RightContent> </DxcFooter> ); @@ -70,7 +106,12 @@ describe("Footer component tests", () => { const { getAllByRole, getByText } = render( <DxcFooter socialLinks={social} bottomLinks={bottom} copyright="test-copyright"> - <p>footer-child-text</p> + <DxcFooter.LeftContent> + <p>footer-left-text</p> + </DxcFooter.LeftContent> + <DxcFooter.RightContent> + <p>footer-right-text</p> + </DxcFooter.RightContent> </DxcFooter> ); const socialIcon = getAllByRole("link")[0]; @@ -79,6 +120,7 @@ describe("Footer component tests", () => { const bottomLink = getByText("bottom-link-text"); expect(bottomLink.getAttribute("href")).toBe("https://www.test.com/bottom"); expect(getByText("test-copyright")).toBeTruthy(); - expect(getByText("footer-child-text")).toBeTruthy(); + expect(getByText("footer-left-text")).toBeTruthy(); + expect(getByText("footer-right-text")).toBeTruthy(); }); }); From 0437b2df5061df79870a975a003efcaaaddd1ae9 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 5 Nov 2025 08:20:35 +0100 Subject: [PATCH 09/41] Fix accessibility tests for footer --- .../src/footer/Footer.accessibility.test.tsx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/lib/src/footer/Footer.accessibility.test.tsx b/packages/lib/src/footer/Footer.accessibility.test.tsx index e4fce10117..8da2135cc8 100644 --- a/packages/lib/src/footer/Footer.accessibility.test.tsx +++ b/packages/lib/src/footer/Footer.accessibility.test.tsx @@ -91,9 +91,16 @@ describe("Footer component accessibility tests", () => { it("Should not have basic accessibility issues", async () => { const { container } = render( <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom} margin="small" mode="default"> - <div> - <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a> - </div> + <DxcFooter.LeftContent> + <div> + <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a> + </div> + </DxcFooter.LeftContent> + <DxcFooter.RightContent> + <div> + <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a> + </div> + </DxcFooter.RightContent> </DxcFooter> ); const results = await axe(container, disabledRules); @@ -101,11 +108,7 @@ describe("Footer component accessibility tests", () => { }); it("Should not have basic accessibility issues for reduced mode", async () => { const { container } = render( - <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom} margin="small" mode="reduced"> - <div> - <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a> - </div> - </DxcFooter> + <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom} margin="small" mode="reduced" /> ); const results = await axe(container, disabledRules); expect(results.violations).toHaveLength(0); From 7e4f6e89b02add80f26b1668010f14dce0eabcc8 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 5 Nov 2025 11:21:20 +0100 Subject: [PATCH 10/41] Add getContrastColor funcionality to the footer and its correspondig tests --- packages/lib/src/footer/Footer.test.tsx | 17 +++++++++++ packages/lib/src/footer/Footer.tsx | 23 +++++++++------ packages/lib/src/footer/utils.ts | 38 +++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 packages/lib/src/footer/utils.ts diff --git a/packages/lib/src/footer/Footer.test.tsx b/packages/lib/src/footer/Footer.test.tsx index 78f2293ff2..6414df5a3e 100644 --- a/packages/lib/src/footer/Footer.test.tsx +++ b/packages/lib/src/footer/Footer.test.tsx @@ -1,5 +1,6 @@ import { render } from "@testing-library/react"; import DxcFooter from "./Footer"; +import { getContrastColor } from "./utils"; const social = [ { @@ -124,3 +125,19 @@ describe("Footer component tests", () => { expect(getByText("footer-right-text")).toBeTruthy(); }); }); + +describe("getContrastColor function", () => { + test("should return black color for light backgrounds", () => { + expect(getContrastColor("#FFFFFF")).toBe("#000000"); + expect(getContrastColor("#F5F5F5")).toBe("#000000"); + expect(getContrastColor("rgb(255, 255, 255)")).toBe("#000000"); + expect(getContrastColor("rgb(245, 245, 245)")).toBe("#000000"); + }); + + test("should return white color for dark backgrounds", () => { + expect(getContrastColor("#000000")).toBe("#FFFFFF"); + expect(getContrastColor("#333333")).toBe("#FFFFFF"); + expect(getContrastColor("rgb(0, 0, 0)")).toBe("#FFFFFF"); + expect(getContrastColor("rgb(51, 51, 51)")).toBe("#FFFFFF"); + }); +}); diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 54889f88d5..7b6af5ffd9 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -1,4 +1,4 @@ -import { ElementType, ReactNode, useContext, Children, isValidElement } from "react"; +import { ReactNode, useContext, useEffect, useRef, useState } from "react"; import styled from "@emotion/styled"; import { responsiveSizes, spaces } from "../common/variables"; import DxcFlex from "../flex/Flex"; @@ -7,6 +7,7 @@ import { Tooltip } from "../tooltip/Tooltip"; import { dxcLogo, dxcSmallLogo } from "./Icons"; import FooterPropsType from "./types"; import { HalstackLanguageContext } from "../HalstackContext"; +import { findChildType, getContrastColor } from "./utils"; const FooterContainer = styled.footer<{ margin: FooterPropsType["margin"]; @@ -45,12 +46,13 @@ const MainContainer = styled.div` } `; -const BottomContainer = styled.div` +const BottomContainer = styled.div<{ textColor: string }>` width: 100%; display: flex; justify-content: space-between; align-items: center; background-color: var(--color-bg-primary-strong); + color: ${({ textColor }) => textColor}; padding: var(--spacing-padding-none) var(--spacing-padding-xl); box-sizing: border-box; @@ -110,7 +112,6 @@ const Copyright = styled.div` font-family: var(--typography-font-family); font-size: var(--typography-label-s); font-weight: var(--typography-label-regular); - color: var(--color-fg-neutral-bright); @media (min-width: ${responsiveSizes.small}rem) { max-width: 40%; @@ -162,7 +163,6 @@ const BottomLinks = styled.div<{ hasContent: boolean }>` display: inline-flex; flex-wrap: wrap; align-self: center; - color: var(--color-fg-neutral-bright); @media (min-width: ${responsiveSizes.small}rem) { max-width: 60%; @@ -200,9 +200,6 @@ const getLogoElement = (mode: FooterPropsType["mode"], logo?: FooterPropsType["l } }; -const findChildType = (children: FooterPropsType["children"], childType: ElementType) => - Children.toArray(children).find((child) => isValidElement(child) && child.type === childType); - const DxcFooter = ({ bottomLinks, copyright, @@ -218,6 +215,16 @@ const DxcFooter = ({ const leftContentChild = findChildType(children, LeftContent); const rightContentChild = findChildType(children, RightContent); + const ref = useRef<HTMLDivElement>(null); + const [textColor, setTextColor] = useState("#fff"); + + useEffect(() => { + if (ref.current) { + const bg = window.getComputedStyle(ref.current).getPropertyValue("background-color").trim(); + setTextColor(getContrastColor(bg)); + } + }, []); + return ( <FooterContainer margin={margin} mode={mode}> {mode === "default" && ( @@ -252,7 +259,7 @@ const DxcFooter = ({ )} </MainContainer> )} - <BottomContainer> + <BottomContainer ref={ref} textColor={textColor}> {mode === "default" ? ( <BottomLinks hasContent={bottomLinks ? true : false}> {bottomLinks?.map((link, index) => ( diff --git a/packages/lib/src/footer/utils.ts b/packages/lib/src/footer/utils.ts new file mode 100644 index 0000000000..7c65e66484 --- /dev/null +++ b/packages/lib/src/footer/utils.ts @@ -0,0 +1,38 @@ +import { Children, ElementType, isValidElement } from "react"; +import FooterPropsType from "./types"; + +export const findChildType = (children: FooterPropsType["children"], childType: ElementType) => + Children.toArray(children).find((child) => isValidElement(child) && child.type === childType); + +const rgbToHex = (color: string): string => { + const rgbMatch = color.match(/\d+/g); + if (!rgbMatch || rgbMatch.length < 3) return "#000000"; + const [r, g, b] = rgbMatch.map(Number); + return ( + "#" + + [r, g, b] + .map((x) => x!.toString(16).padStart(2, "0")) + .join("") + .toUpperCase() + ); +}; + +function getLuminance(color: string): number { + const hex = color.startsWith("rgb") ? rgbToHex(color) : color; + const match = hex.replace("#", "").match(/.{2}/g); + if (!match || match.length < 3) return 0; + + const rgb = match + .map((x) => parseInt(x, 16) / 255) + .map((v) => (v <= 0.03928 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4)); + + const [r, g, b] = rgb; + if (r == null || g == null || b == null) return 0; + + return 0.2126 * r + 0.7152 * g + 0.0722 * b; +} + +export const getContrastColor = (bgColor: string) => { + const luminance = getLuminance(bgColor); + return luminance > 0.179 ? "#000000" : "#FFFFFF"; +}; From a31108549187d32b5332b8c5d728287f849844ee Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 5 Nov 2025 15:58:39 +0100 Subject: [PATCH 11/41] Add same doc updates --- .../components/footer/code/FooterCodePage.tsx | 72 ++++++++++++++++-- .../footer/overview/FooterOverviewPage.tsx | 67 ++++++++++++++++ .../footer/overview/images/footer_anatomy.png | Bin 37163 -> 18280 bytes .../overview/images/footer_variants.png | Bin 78867 -> 43593 bytes 4 files changed, 131 insertions(+), 8 deletions(-) diff --git a/apps/website/screens/components/footer/code/FooterCodePage.tsx b/apps/website/screens/components/footer/code/FooterCodePage.tsx index 8b09ac2439..0696c262a5 100644 --- a/apps/website/screens/components/footer/code/FooterCodePage.tsx +++ b/apps/website/screens/components/footer/code/FooterCodePage.tsx @@ -42,14 +42,6 @@ const sections = [ </td> <td>-</td> </tr> - <tr> - <td>children</td> - <td> - <TableCode>React.ReactNode</TableCode> - </td> - <td>The center section of the footer. Can be used to render custom content in this area.</td> - <td>-</td> - </tr> <tr> <td>copyright</td> <td> @@ -164,6 +156,38 @@ const sections = [ This compound will be used to display the content on the Left Container under the Logo. </DxcParagraph> ), + subSections: [ + { + title: "Props", + content: ( + <DxcTable> + <thead> + <tr> + <th>Name</th> + <th>Type</th> + <th>Description</th> + <th>Default</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <DxcFlex direction="column" gap="var(--spacing-gap-xs)" alignItems="baseline"> + <StatusBadge status="required" /> + children + </DxcFlex> + </td> + <td> + <TableCode>React.ReactNode</TableCode> + </td> + <td>The expanded panel of the accordion. This area can be used to render custom content.</td> + <td>-</td> + </tr> + </tbody> + </DxcTable> + ), + }, + ], }, { title: "DxcFooter.RigthContent", @@ -173,6 +197,38 @@ const sections = [ provided they will always display at the end of the container. </DxcParagraph> ), + subSections: [ + { + title: "Props", + content: ( + <DxcTable> + <thead> + <tr> + <th>Name</th> + <th>Type</th> + <th>Description</th> + <th>Default</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <DxcFlex direction="column" gap="var(--spacing-gap-xs)" alignItems="baseline"> + <StatusBadge status="required" /> + children + </DxcFlex> + </td> + <td> + <TableCode>React.ReactNode</TableCode> + </td> + <td>The expanded panel of the accordion. This area can be used to render custom content.</td> + <td>-</td> + </tr> + </tbody> + </DxcTable> + ), + }, + ], }, { title: "Examples", diff --git a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx index 4b901c89e5..9509b7dd2b 100644 --- a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx +++ b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx @@ -81,6 +81,73 @@ const sections = [ </> ), }, + { + title: "Usage", + content: ( + <> + <DxcBulletedList> + <DxcBulletedList.Item> + The footer frame should be docked at the bottom of the page and should not scroll with any of the data + within working section of the screen. + </DxcBulletedList.Item> + <DxcBulletedList.Item>The footer frame should span the entire screen width.</DxcBulletedList.Item> + <DxcBulletedList.Item> + The footer frame should display the copyright information at the right margin. + </DxcBulletedList.Item> + <DxcBulletedList.Item> + We recommend uploading either an alternative version or smaller brand image than the used in the header. If + the company has an alternate version of the logo, isotype, imagotype or isologo available, we encourage to + use it. In the opposite case a smaller version of the main brand image can be used. + </DxcBulletedList.Item> + </DxcBulletedList> + </> + ), + }, + { + title: "Content", + content: ( + <> + <DxcParagraph> + The footer component has a custom area where many kinds of content can be placed, some of them are + contemplated in the following list: + </DxcParagraph> + <DxcBulletedList> + <DxcBulletedList.Item> + Plain text or content + <DxcBulletedList> + <DxcBulletedList.Item>Informational</DxcBulletedList.Item> + <DxcBulletedList.Item>Legal / Branding</DxcBulletedList.Item> + <DxcBulletedList.Item>Version</DxcBulletedList.Item> + </DxcBulletedList> + </DxcBulletedList.Item> + <DxcBulletedList.Item> + Menu links + <DxcBulletedList> + <DxcBulletedList.Item>Global navigation</DxcBulletedList.Item> + <DxcBulletedList.Item>Sitemap</DxcBulletedList.Item> + <DxcBulletedList.Item>Useful links or resources</DxcBulletedList.Item> + </DxcBulletedList> + </DxcBulletedList.Item> + <DxcBulletedList.Item> + Forms + <DxcBulletedList> + <DxcBulletedList.Item>Select language</DxcBulletedList.Item> + <DxcBulletedList.Item>Login / Sign-up</DxcBulletedList.Item> + <DxcBulletedList.Item>Contact information: email address / Subscribe</DxcBulletedList.Item> + </DxcBulletedList> + </DxcBulletedList.Item> + <DxcBulletedList.Item> + Actions + <DxcBulletedList> + <DxcBulletedList.Item>Ask for help / Support</DxcBulletedList.Item> + <DxcBulletedList.Item>Business related actions / Call to action</DxcBulletedList.Item> + <DxcBulletedList.Item>Search</DxcBulletedList.Item> + </DxcBulletedList> + </DxcBulletedList.Item> + </DxcBulletedList> + </> + ), + }, { title: "Best practices", content: ( diff --git a/apps/website/screens/components/footer/overview/images/footer_anatomy.png b/apps/website/screens/components/footer/overview/images/footer_anatomy.png index ff389c8552e6ff440808948b5fe7d849c108368f..d08e42c69dbf303abced65c4ac194716c59dd014 100644 GIT binary patch literal 18280 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 j{kZU41AovxPg&<SKgWVBRu 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 UobGJ^;X!G7$@0&N3vLhp3(86Y{r~^~ literal 37163 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 S)vsm1-(K4THl@E{F8l`%M5zD( diff --git a/apps/website/screens/components/footer/overview/images/footer_variants.png b/apps/website/screens/components/footer/overview/images/footer_variants.png index 91dcef94b97805756ae69803d13fe71a8274f841..af8ef919550e1e5402291757a97e7b0c2abba305 100644 GIT binary patch literal 43593 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 QSgv+RQ1~IrfrP7n1HO+_`v3p{ literal 78867 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 D-3;2z From 32485413471459793dab43f154dbfc8c899f76a8 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 5 Nov 2025 17:15:30 +0100 Subject: [PATCH 12/41] Remove styled component for BottomLink and add DxcLink instead --- packages/lib/src/footer/Footer.tsx | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 7b6af5ffd9..2588e5a1a4 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -8,6 +8,7 @@ import { dxcLogo, dxcSmallLogo } from "./Icons"; import FooterPropsType from "./types"; import { HalstackLanguageContext } from "../HalstackContext"; import { findChildType, getContrastColor } from "./utils"; +import DxcLink from "../link/Link"; const FooterContainer = styled.footer<{ margin: FooterPropsType["margin"]; @@ -179,19 +180,6 @@ const BottomLinks = styled.div<{ hasContent: boolean }>` } `; -const BottomLink = styled.a` - text-decoration: none; - border-radius: var(--border-radius-xs); - font-family: var(--typography-font-family); - font-size: var(--typography-label-m); - font-weight: var(--typography-label-regular); - color: inherit; - - &:focus { - outline: var(--border-width-m) var(--border-style-default) var(--border-color-secondary-medium); - } -`; - const getLogoElement = (mode: FooterPropsType["mode"], logo?: FooterPropsType["logo"]) => { if (logo) { return <LogoImg alt={logo.title} src={logo.src} title={logo.title} />; @@ -264,9 +252,9 @@ const DxcFooter = ({ <BottomLinks hasContent={bottomLinks ? true : false}> {bottomLinks?.map((link, index) => ( <span key={`bottom${index}${link.text}`}> - <BottomLink href={link.href} tabIndex={tabIndex}> + <DxcLink inheritColor href={link.href} tabIndex={tabIndex} newWindow> {link.text} - </BottomLink> + </DxcLink> </span> ))} </BottomLinks> From 1bebb0ca8350e9659a6d4cc25fadfa04b859e307 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Thu, 6 Nov 2025 09:47:03 +0100 Subject: [PATCH 13/41] Update documentation and bottomLink states --- .../footer/overview/FooterOverviewPage.tsx | 74 +------------------ packages/lib/src/footer/Footer.test.tsx | 8 +- packages/lib/src/footer/Footer.tsx | 9 ++- packages/lib/src/link/Link.tsx | 2 +- 4 files changed, 16 insertions(+), 77 deletions(-) diff --git a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx index 9509b7dd2b..9e47387bdf 100644 --- a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx +++ b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx @@ -61,9 +61,10 @@ const sections = [ clean, uncluttered appearance suitable for most standard applications. </DxcBulletedList.Item> <DxcBulletedList.Item> - <strong>With Navigation:</strong> includes additional navigational sections, enabling users to quickly - access key areas of the site. This layout is ideal for content-heavy pages or enterprise-level applications - requiring enhanced footer functionality. + <strong>With Navigation:</strong> includes several additional content sections, enabling users to + inmediately see various forms of helpful content such form elements, buttons, and more navigational links. + This layout is ideal for content-heavy pages or enterprise-level applications requiring enhanced footer + functionality. </DxcBulletedList.Item> <DxcBulletedList.Item> <strong>Small:</strong> offers a compact version of the footer, typically limited to branding and minimal @@ -81,73 +82,6 @@ const sections = [ </> ), }, - { - title: "Usage", - content: ( - <> - <DxcBulletedList> - <DxcBulletedList.Item> - The footer frame should be docked at the bottom of the page and should not scroll with any of the data - within working section of the screen. - </DxcBulletedList.Item> - <DxcBulletedList.Item>The footer frame should span the entire screen width.</DxcBulletedList.Item> - <DxcBulletedList.Item> - The footer frame should display the copyright information at the right margin. - </DxcBulletedList.Item> - <DxcBulletedList.Item> - We recommend uploading either an alternative version or smaller brand image than the used in the header. If - the company has an alternate version of the logo, isotype, imagotype or isologo available, we encourage to - use it. In the opposite case a smaller version of the main brand image can be used. - </DxcBulletedList.Item> - </DxcBulletedList> - </> - ), - }, - { - title: "Content", - content: ( - <> - <DxcParagraph> - The footer component has a custom area where many kinds of content can be placed, some of them are - contemplated in the following list: - </DxcParagraph> - <DxcBulletedList> - <DxcBulletedList.Item> - Plain text or content - <DxcBulletedList> - <DxcBulletedList.Item>Informational</DxcBulletedList.Item> - <DxcBulletedList.Item>Legal / Branding</DxcBulletedList.Item> - <DxcBulletedList.Item>Version</DxcBulletedList.Item> - </DxcBulletedList> - </DxcBulletedList.Item> - <DxcBulletedList.Item> - Menu links - <DxcBulletedList> - <DxcBulletedList.Item>Global navigation</DxcBulletedList.Item> - <DxcBulletedList.Item>Sitemap</DxcBulletedList.Item> - <DxcBulletedList.Item>Useful links or resources</DxcBulletedList.Item> - </DxcBulletedList> - </DxcBulletedList.Item> - <DxcBulletedList.Item> - Forms - <DxcBulletedList> - <DxcBulletedList.Item>Select language</DxcBulletedList.Item> - <DxcBulletedList.Item>Login / Sign-up</DxcBulletedList.Item> - <DxcBulletedList.Item>Contact information: email address / Subscribe</DxcBulletedList.Item> - </DxcBulletedList> - </DxcBulletedList.Item> - <DxcBulletedList.Item> - Actions - <DxcBulletedList> - <DxcBulletedList.Item>Ask for help / Support</DxcBulletedList.Item> - <DxcBulletedList.Item>Business related actions / Call to action</DxcBulletedList.Item> - <DxcBulletedList.Item>Search</DxcBulletedList.Item> - </DxcBulletedList> - </DxcBulletedList.Item> - </DxcBulletedList> - </> - ), - }, { title: "Best practices", content: ( diff --git a/packages/lib/src/footer/Footer.test.tsx b/packages/lib/src/footer/Footer.test.tsx index 6414df5a3e..7f2a75fb29 100644 --- a/packages/lib/src/footer/Footer.test.tsx +++ b/packages/lib/src/footer/Footer.test.tsx @@ -28,8 +28,8 @@ describe("Footer component tests", () => { }); test("Footer renders with bottom links", () => { const { getByText } = render(<DxcFooter bottomLinks={bottom} />); - const link = getByText("bottom-link-text"); - expect(link.getAttribute("href")).toBe("https://www.test.com/bottom"); + const link = getByText("bottom-link-text").closest("a"); + expect(link?.getAttribute("href")).toBe("https://www.test.com/bottom"); }); test("Footer renders with copyright text", () => { const { getByText } = render(<DxcFooter copyright="test-copyright" />); @@ -118,8 +118,8 @@ describe("Footer component tests", () => { const socialIcon = getAllByRole("link")[0]; expect(socialIcon?.getAttribute("href")).toBe("https://www.test.com/social"); expect(socialIcon?.getAttribute("aria-label")).toBe("test"); - const bottomLink = getByText("bottom-link-text"); - expect(bottomLink.getAttribute("href")).toBe("https://www.test.com/bottom"); + const bottomLink = getByText("bottom-link-text").closest("a"); + expect(bottomLink?.getAttribute("href")).toBe("https://www.test.com/bottom"); expect(getByText("test-copyright")).toBeTruthy(); expect(getByText("footer-left-text")).toBeTruthy(); expect(getByText("footer-right-text")).toBeTruthy(); diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 2588e5a1a4..d64923d7ae 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -160,7 +160,7 @@ const SocialIconContainer = styled.div` } `; -const BottomLinks = styled.div<{ hasContent: boolean }>` +const BottomLinks = styled.div<{ hasContent: boolean; textColor: string }>` display: inline-flex; flex-wrap: wrap; align-self: center; @@ -178,6 +178,11 @@ const BottomLinks = styled.div<{ hasContent: boolean }>` content: "·"; padding: var(--spacing-padding-none) var(--spacing-padding-xs); } + + & > span > a > span:hover, + & > span > a > span:active { + color: ${({ textColor }) => textColor}; + } `; const getLogoElement = (mode: FooterPropsType["mode"], logo?: FooterPropsType["logo"]) => { @@ -249,7 +254,7 @@ const DxcFooter = ({ )} <BottomContainer ref={ref} textColor={textColor}> {mode === "default" ? ( - <BottomLinks hasContent={bottomLinks ? true : false}> + <BottomLinks hasContent={bottomLinks ? true : false} textColor={textColor}> {bottomLinks?.map((link, index) => ( <span key={`bottom${index}${link.text}`}> <DxcLink inheritColor href={link.href} tabIndex={tabIndex} newWindow> diff --git a/packages/lib/src/link/Link.tsx b/packages/lib/src/link/Link.tsx index dbbdab9568..7af89b74f5 100644 --- a/packages/lib/src/link/Link.tsx +++ b/packages/lib/src/link/Link.tsx @@ -56,7 +56,7 @@ const LinkContent = styled.span<{ cursor: pointer; } &:active { - color: var(--color-fg-neutral-dark) !important; + color: var(--color-fg-neutral-dark); } `; From 97e1c0650da46d178e2be1ee3d3b1f991db1c3cc Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Thu, 6 Nov 2025 16:32:08 +0100 Subject: [PATCH 14/41] Fix some minor ActionIcon issues found and removed unused prop to SocialAnchor styled component in footer --- packages/lib/src/action-icon/ActionIcon.tsx | 9 ++++++--- packages/lib/src/action-icon/types.ts | 4 ++++ packages/lib/src/footer/Footer.tsx | 3 +-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/lib/src/action-icon/ActionIcon.tsx b/packages/lib/src/action-icon/ActionIcon.tsx index b4b521dcee..4e6ec37409 100644 --- a/packages/lib/src/action-icon/ActionIcon.tsx +++ b/packages/lib/src/action-icon/ActionIcon.tsx @@ -29,6 +29,7 @@ const ActionIconContainer = styled.div< height: ${({ size }) => getSize(size)}; aspect-ratio: 1 / 1; text-decoration: none; + color: inherit; /* Reset button default styles when rendered as button */ &[type="button"] { @@ -49,14 +50,14 @@ const ActionIconContainer = styled.div< &:active > div:first-child > div:first-child { display: block; } - &:focus:enabled > div:first-child, - &:active:enabled > div:first-child { + &:focus > div:first-child, + &:active > div:first-child { outline-style: solid; outline-width: ${getOutlineWidth(size)}; outline-color: var(--border-color-secondary-medium); outline-offset: -2px; } - &:focus-visible:enabled { + &:focus-visible { outline: none; } `} @@ -132,6 +133,7 @@ const ForwardedActionIcon = forwardRef<RefType, ActionIconPropTypes>( disabled = false, icon, linkHref, + newWindow, onClick, shape = "square", size = "medium", @@ -152,6 +154,7 @@ const ForwardedActionIcon = forwardRef<RefType, ActionIconPropTypes>( as={linkHref ? "a" : onClick ? "button" : "div"} type={onClick && !linkHref ? "button" : undefined} href={!disabled ? linkHref : undefined} + target={linkHref ? (newWindow ? "_blank" : "_self") : undefined} aria-label={(onClick || linkHref) && (ariaLabel || title || "Action Icon")} disabled={disabled} ref={ref} diff --git a/packages/lib/src/action-icon/types.ts b/packages/lib/src/action-icon/types.ts index f323bac03b..d247bd5fa5 100644 --- a/packages/lib/src/action-icon/types.ts +++ b/packages/lib/src/action-icon/types.ts @@ -41,6 +41,10 @@ type CommonProps = { * Page to be opened when the user clicks on the link. */ linkHref?: string; + /** + * If true, the page is opened in a new browser tab. + */ + newWindow?: boolean; /** * This function will be called when the user clicks the Action Icon. Makes it behave as a button. */ diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index d64923d7ae..9830c741ee 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -136,7 +136,7 @@ const LogoImg = styled.img<{ mode?: FooterPropsType["mode"] }>` width: auto; `; -const SocialAnchor = styled.a<{ index: number }>` +const SocialAnchor = styled.a` height: fit-content; border-radius: var(--border-radius-s); @@ -238,7 +238,6 @@ const DxcFooter = ({ tabIndex={tabIndex} aria-label={link.title} key={`social${index}${link.href}`} - index={index} > <SocialIconContainer> {typeof link.logo === "string" ? <DxcIcon icon={link.logo} /> : link.logo} From 364585f6cb683b62100d577be939b47459582058 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 7 Nov 2025 12:35:18 +0100 Subject: [PATCH 15/41] Hide bottomLinks and Copyright when overflow on desktop version --- packages/lib/src/footer/Footer.stories.tsx | 2 +- packages/lib/src/footer/Footer.tsx | 114 ++++++++++++--------- 2 files changed, 65 insertions(+), 51 deletions(-) diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 010c28b66e..e347f7b266 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -137,7 +137,7 @@ const Footer = () => ( </ExampleContainer> <ExampleContainer> <Title title="With children, copyright, bottom links and social links" theme="light" level={4} /> - <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom}> + <DxcFooter socialLinks={social} bottomLinks={bottom}> <DxcFooter.LeftContent> <DxcParagraph> Application description, version, notes, and contact details can go here for additional information diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 9830c741ee..922fe3cd03 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -47,29 +47,6 @@ const MainContainer = styled.div` } `; -const BottomContainer = styled.div<{ textColor: string }>` - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - background-color: var(--color-bg-primary-strong); - color: ${({ textColor }) => textColor}; - padding: var(--spacing-padding-none) var(--spacing-padding-xl); - box-sizing: border-box; - - @media (min-width: ${responsiveSizes.small}rem) { - height: var(--height-xl); - flex-direction: row; - } - - @media (max-width: ${responsiveSizes.small}rem) { - flex-direction: column; - align-items: flex-start; - gap: var(--spacing-gap-ml); - padding: var(--spacing-padding-m); - } -`; - const LeftContainer = styled.div` display: flex; flex-direction: column; @@ -88,6 +65,17 @@ const LeftContainer = styled.div` } `; +const LogoContainer = styled.span<{ mode?: FooterPropsType["mode"] }>` + max-height: ${(props) => (props?.mode === "default" ? "var(--height-m)" : "var(--height-xxs)")}; + padding-left: ${(props) => (props?.mode === "default" ? "var(--spacing-padding-none)" : "var(--spacing-padding-xl)")}; + width: auto; +`; + +const LogoImg = styled.img<{ mode?: FooterPropsType["mode"] }>` + max-height: ${(props) => (props?.mode === "default" ? "var(--height-m)" : "var(--height-xxs)")}; + width: auto; +`; + const RightContainer = styled.div` display: flex; justify-content: flex-end; @@ -109,33 +97,6 @@ const RightContainer = styled.div` } `; -const Copyright = styled.div` - font-family: var(--typography-font-family); - font-size: var(--typography-label-s); - font-weight: var(--typography-label-regular); - - @media (min-width: ${responsiveSizes.small}rem) { - max-width: 40%; - text-align: right; - } - - @media (max-width: ${responsiveSizes.small}rem) { - max-width: 100%; - width: 100%; - text-align: left; - } -`; - -const LogoContainer = styled.span<{ mode?: FooterPropsType["mode"] }>` - max-height: ${(props) => (props?.mode === "default" ? "var(--height-m)" : "var(--height-xxs)")}; - width: auto; -`; - -const LogoImg = styled.img<{ mode?: FooterPropsType["mode"] }>` - max-height: ${(props) => (props?.mode === "default" ? "var(--height-m)" : "var(--height-xxs)")}; - width: auto; -`; - const SocialAnchor = styled.a` height: fit-content; border-radius: var(--border-radius-s); @@ -160,20 +121,55 @@ const SocialIconContainer = styled.div` } `; +const BottomContainer = styled.div<{ textColor: string }>` + width: 100%; + display: flex; + justify-content: space-between; + gap: var(--spacing-padding-m); + align-items: center; + background-color: var(--color-bg-primary-strong); + color: ${({ textColor }) => textColor}; + padding-right: var(--spacing-padding-xl); + box-sizing: border-box; + + @media (min-width: ${responsiveSizes.small}rem) { + height: var(--height-xl); + flex-direction: row; + } + + @media (max-width: ${responsiveSizes.small}rem) { + flex-direction: column; + align-items: flex-start; + gap: var(--spacing-gap-ml); + padding: var(--spacing-padding-m); + } +`; + const BottomLinks = styled.div<{ hasContent: boolean; textColor: string }>` + height: 100%; display: inline-flex; + align-items: center; flex-wrap: wrap; align-self: center; + padding-left: var(--spacing-padding-xl); + padding-right: var(--spacing-padding-xxxs); @media (min-width: ${responsiveSizes.small}rem) { max-width: 60%; + flex-wrap: nowrap; + overflow: hidden; } + @media (max-width: ${responsiveSizes.small}rem) { max-width: 100%; width: 100%; display: ${(props) => (props.hasContent ? "inline-flex" : "none")}; } + & > span { + white-space: nowrap; + } + & > span:not(:first-child):before { content: "·"; padding: var(--spacing-padding-none) var(--spacing-padding-xs); @@ -185,6 +181,24 @@ const BottomLinks = styled.div<{ hasContent: boolean; textColor: string }>` } `; +const Copyright = styled.div` + font-family: var(--typography-font-family); + font-size: var(--typography-label-s); + font-weight: var(--typography-label-regular); + white-space: nowrap; + + @media (min-width: ${responsiveSizes.small}rem) { + max-width: 40%; + overflow: hidden; + } + + @media (max-width: ${responsiveSizes.small}rem) { + max-width: 100%; + width: 100%; + text-align: left; + } +`; + const getLogoElement = (mode: FooterPropsType["mode"], logo?: FooterPropsType["logo"]) => { if (logo) { return <LogoImg alt={logo.title} src={logo.src} title={logo.title} />; From a90564fcacffac052fbc1579eee769ecb1360ae6 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Mon, 10 Nov 2025 10:27:21 +0100 Subject: [PATCH 16/41] Removed ActionIcon unnecesary changes --- packages/lib/src/action-icon/ActionIcon.tsx | 9 +++------ packages/lib/src/action-icon/types.ts | 4 ---- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/packages/lib/src/action-icon/ActionIcon.tsx b/packages/lib/src/action-icon/ActionIcon.tsx index 4e6ec37409..b4b521dcee 100644 --- a/packages/lib/src/action-icon/ActionIcon.tsx +++ b/packages/lib/src/action-icon/ActionIcon.tsx @@ -29,7 +29,6 @@ const ActionIconContainer = styled.div< height: ${({ size }) => getSize(size)}; aspect-ratio: 1 / 1; text-decoration: none; - color: inherit; /* Reset button default styles when rendered as button */ &[type="button"] { @@ -50,14 +49,14 @@ const ActionIconContainer = styled.div< &:active > div:first-child > div:first-child { display: block; } - &:focus > div:first-child, - &:active > div:first-child { + &:focus:enabled > div:first-child, + &:active:enabled > div:first-child { outline-style: solid; outline-width: ${getOutlineWidth(size)}; outline-color: var(--border-color-secondary-medium); outline-offset: -2px; } - &:focus-visible { + &:focus-visible:enabled { outline: none; } `} @@ -133,7 +132,6 @@ const ForwardedActionIcon = forwardRef<RefType, ActionIconPropTypes>( disabled = false, icon, linkHref, - newWindow, onClick, shape = "square", size = "medium", @@ -154,7 +152,6 @@ const ForwardedActionIcon = forwardRef<RefType, ActionIconPropTypes>( as={linkHref ? "a" : onClick ? "button" : "div"} type={onClick && !linkHref ? "button" : undefined} href={!disabled ? linkHref : undefined} - target={linkHref ? (newWindow ? "_blank" : "_self") : undefined} aria-label={(onClick || linkHref) && (ariaLabel || title || "Action Icon")} disabled={disabled} ref={ref} diff --git a/packages/lib/src/action-icon/types.ts b/packages/lib/src/action-icon/types.ts index d247bd5fa5..f323bac03b 100644 --- a/packages/lib/src/action-icon/types.ts +++ b/packages/lib/src/action-icon/types.ts @@ -41,10 +41,6 @@ type CommonProps = { * Page to be opened when the user clicks on the link. */ linkHref?: string; - /** - * If true, the page is opened in a new browser tab. - */ - newWindow?: boolean; /** * This function will be called when the user clicks the Action Icon. Makes it behave as a button. */ From 07eabd0b53fa907a8cc62e7b1fb5c0784ca18c3c Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 11:36:09 +0100 Subject: [PATCH 17/41] Fix css based on feedback --- packages/lib/src/footer/Footer.stories.tsx | 146 +++++++++++++ packages/lib/src/footer/Footer.tsx | 233 ++++++++++++--------- packages/lib/src/footer/utils.ts | 12 ++ 3 files changed, 288 insertions(+), 103 deletions(-) diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index e347f7b266..6e5ae8a01b 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -124,6 +124,61 @@ const bottom = [ }, ]; +const bottomLong = [ + { + href: "https://www.linkedin.com/company/dxctechnology", + text: "Linkedin", + }, + { + href: "https://x.com/dxctechnology", + text: "X", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, + { + href: "https://www.facebook.com/DXCTechnology/", + text: "Facebook", + }, +]; + const info = [ { label: "Example Label", text: "Example" }, { label: "Example Label", text: "Example" }, @@ -169,6 +224,97 @@ const Footer = () => ( </DxcFooter.RightContent> </DxcFooter> </ExampleContainer> + <ExampleContainer> + <Title title="With long content" theme="light" level={4} /> + <DxcFooter + socialLinks={social} + bottomLinks={bottomLong} + copyright="This is a long copyright text, this is a long copyright text, this is a long copyright text, this is a long copyright text, this is a long copyright text, this is a long copyright text, this is a long copyright text." + > + <DxcFooter.LeftContent> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information. + Application description, version, notes, and contact details can go here for additional information + Application description, version, notes, and contact details can go here for additional information + Application description, version, notes, and contact details can go here for additional information + Application description, version, notes, and contact details can go here for additional information + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </DxcFooter.LeftContent> + + <DxcFooter.RightContent> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </DxcFooter.RightContent> + </DxcFooter> + </ExampleContainer> <ExampleContainer> <Title title="With children, copyright, bottom links and social links from material" theme="light" level={4} /> <DxcFooter copyright="Copyright" socialLinks={socialMaterialIcons} bottomLinks={bottom}> diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 922fe3cd03..24735e278f 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -1,18 +1,21 @@ import { ReactNode, useContext, useEffect, useRef, useState } from "react"; import styled from "@emotion/styled"; -import { responsiveSizes, spaces } from "../common/variables"; +import { spaces } from "../common/variables"; import DxcFlex from "../flex/Flex"; import DxcIcon from "../icon/Icon"; import { Tooltip } from "../tooltip/Tooltip"; import { dxcLogo, dxcSmallLogo } from "./Icons"; import FooterPropsType from "./types"; import { HalstackLanguageContext } from "../HalstackContext"; -import { findChildType, getContrastColor } from "./utils"; +import { findChildType, getContrastColor, getResponsiveStyles } from "./utils"; import DxcLink from "../link/Link"; +import useWidth from "../utils/useWidth"; +import { css } from "@emotion/react"; const FooterContainer = styled.footer<{ margin: FooterPropsType["margin"]; mode?: FooterPropsType["mode"]; + width: number; }>` box-sizing: border-box; display: flex; @@ -21,54 +24,61 @@ const FooterContainer = styled.footer<{ margin-top: ${(props) => (props.margin ? spaces[props.margin] : "var(--spacing-padding-none)")}; width: 100%; - @media (max-width: ${responsiveSizes.small}rem) { - flex-direction: column; - } + ${(props) => + getResponsiveStyles.isSmallScreen(props.width) && + css` + flex-direction: column; + `} `; -const MainContainer = styled.div` - display: flex; - justify-content: space-between; - align-items: flex; - - @media (min-width: ${responsiveSizes.small}rem) { - min-height: 80px; - } - - @media (max-width: ${responsiveSizes.medium}rem) { - flex-wrap: wrap; - } - - @media (max-width: ${responsiveSizes.small}rem) { - flex-direction: column; - align-items: flex-start; - gap: var(--spacing-gap-ml); - padding: var(--spacing-padding-l) var(--spacing-padding-m); - } +const MainContainer = styled.div<{ width: number }>` + display: grid; + grid-template-columns: 1fr 2fr; + + ${(props) => + getResponsiveStyles.isLargeScreen(props.width) && + css` + min-height: 80px; + `} + + ${(props) => + getResponsiveStyles.isMediumScreen(props.width) && + css` + grid-template-columns: 1fr; + grid-template-rows: auto auto; + gap: var(--spacing-gap-ml); + padding: var(--spacing-padding-l) var(--spacing-padding-m); + `} `; -const LeftContainer = styled.div` +const LeftContainer = styled.div<{ width: number }>` display: flex; flex-direction: column; align-items: flex-start; gap: var(--spacing-gap-ml); height: 100%; color: var(--color-fg-neutral-dark); + box-sizing: border-box; - @media (min-width: ${responsiveSizes.small}rem) { - max-width: 33.3%; - padding: var(--spacing-padding-l) var(--spacing-padding-xl); - } - - @media (max-width: ${responsiveSizes.medium}rem) { - max-width: 100%; - } + ${(props) => + getResponsiveStyles.isLargeScreen(props.width) && + css` + padding: var(--spacing-padding-l) var(--spacing-padding-xl); + `} `; const LogoContainer = styled.span<{ mode?: FooterPropsType["mode"] }>` max-height: ${(props) => (props?.mode === "default" ? "var(--height-m)" : "var(--height-xxs)")}; - padding-left: ${(props) => (props?.mode === "default" ? "var(--spacing-padding-none)" : "var(--spacing-padding-xl)")}; - width: auto; + width: fit-content; + text-align: center; + + ${(props) => + props.mode === "reduced" && + css` + display: flex; + justify-content: flex-start; + align-items: center; + `} `; const LogoImg = styled.img<{ mode?: FooterPropsType["mode"] }>` @@ -76,25 +86,25 @@ const LogoImg = styled.img<{ mode?: FooterPropsType["mode"] }>` width: auto; `; -const RightContainer = styled.div` +const RightContainer = styled.div<{ width: number }>` display: flex; justify-content: flex-end; + flex-wrap: wrap; gap: var(--spacing-gap-xl); height: 100%; + box-sizing: border-box; - @media (min-width: ${responsiveSizes.small}rem) { - max-width: 66.66%; - padding: var(--spacing-padding-l) var(--spacing-padding-xl); - } - - @media (max-width: ${responsiveSizes.large}rem) { - flex-wrap: wrap; - } - - @media (max-width: ${responsiveSizes.medium}rem) { - max-width: 100%; - justify-content: flex-start; - } + ${(props) => + getResponsiveStyles.isLargeScreen(props.width) && + css` + padding: var(--spacing-padding-l) var(--spacing-padding-xl); + `} + + ${(props) => + getResponsiveStyles.isMediumScreen(props.width) && + css` + justify-content: flex-start; + `} `; const SocialAnchor = styled.a` @@ -121,50 +131,56 @@ const SocialIconContainer = styled.div` } `; -const BottomContainer = styled.div<{ textColor: string }>` +const BottomContainer = styled.div<{ textColor: string; width: number }>` width: 100%; - display: flex; - justify-content: space-between; + min-height: var(--height-xl); + display: grid; + grid-template-columns: 60% 40%; gap: var(--spacing-padding-m); align-items: center; background-color: var(--color-bg-primary-strong); color: ${({ textColor }) => textColor}; - padding-right: var(--spacing-padding-xl); + padding: var(--spacing-padding-none) var(--spacing-padding-xl); box-sizing: border-box; - @media (min-width: ${responsiveSizes.small}rem) { - height: var(--height-xl); - flex-direction: row; - } - - @media (max-width: ${responsiveSizes.small}rem) { - flex-direction: column; - align-items: flex-start; - gap: var(--spacing-gap-ml); - padding: var(--spacing-padding-m); - } + ${(props) => + getResponsiveStyles.isMediumScreen(props.width) && + css` + grid-template-columns: 1fr; + grid-template-rows: auto auto; + gap: var(--spacing-gap-ml); + padding: var(--spacing-padding-m); + `} + + ${(props) => + getResponsiveStyles.isSmallScreen(props.width) && + css` + padding: var(--spacing-padding-m); + `} `; -const BottomLinks = styled.div<{ hasContent: boolean; textColor: string }>` +const BottomLinks = styled.div<{ textColor: string; width: number }>` height: 100%; - display: inline-flex; + display: flex; align-items: center; flex-wrap: wrap; align-self: center; - padding-left: var(--spacing-padding-xl); - padding-right: var(--spacing-padding-xxxs); - - @media (min-width: ${responsiveSizes.small}rem) { - max-width: 60%; - flex-wrap: nowrap; - overflow: hidden; - } + box-sizing: border-box; - @media (max-width: ${responsiveSizes.small}rem) { - max-width: 100%; - width: 100%; - display: ${(props) => (props.hasContent ? "inline-flex" : "none")}; - } + ${(props) => + getResponsiveStyles.isLargeScreen(props.width) && + css` + flex-wrap: nowrap; + overflow: hidden; + padding-left: var(--spacing-padding-xxxs); + `} + + ${(props) => + getResponsiveStyles.isSmallScreen(props.width) && + css` + max-width: 100%; + width: 100%; + `} & > span { white-space: nowrap; @@ -181,22 +197,29 @@ const BottomLinks = styled.div<{ hasContent: boolean; textColor: string }>` } `; -const Copyright = styled.div` +const Copyright = styled.div<{ width: number }>` font-family: var(--typography-font-family); font-size: var(--typography-label-s); font-weight: var(--typography-label-regular); white-space: nowrap; + display: flex; + justify-content: flex-end; + width: 100%; + box-sizing: border-box; + overflow: hidden; - @media (min-width: ${responsiveSizes.small}rem) { - max-width: 40%; - overflow: hidden; - } - - @media (max-width: ${responsiveSizes.small}rem) { - max-width: 100%; - width: 100%; - text-align: left; - } + ${(props) => + getResponsiveStyles.isLargeScreen(props.width) && + css` + grid-column-start: 2; + `} + + ${(props) => + getResponsiveStyles.isMediumScreen(props.width) && + css` + justify-content: flex-start; + white-space: wrap; + `} `; const getLogoElement = (mode: FooterPropsType["mode"], logo?: FooterPropsType["logo"]) => { @@ -222,26 +245,29 @@ const DxcFooter = ({ const leftContentChild = findChildType(children, LeftContent); const rightContentChild = findChildType(children, RightContent); - const ref = useRef<HTMLDivElement>(null); + const footerRef = useRef<HTMLDivElement>(null); + const width = useWidth(footerRef); + + const bottomContainerRef = useRef<HTMLDivElement>(null); const [textColor, setTextColor] = useState("#fff"); useEffect(() => { - if (ref.current) { - const bg = window.getComputedStyle(ref.current).getPropertyValue("background-color").trim(); + if (bottomContainerRef.current) { + const bg = window.getComputedStyle(bottomContainerRef.current).getPropertyValue("background-color").trim(); setTextColor(getContrastColor(bg)); } }, []); return ( - <FooterContainer margin={margin} mode={mode}> + <FooterContainer ref={footerRef} margin={margin} mode={mode} width={width}> {mode === "default" && ( - <MainContainer> - <LeftContainer> + <MainContainer width={width}> + <LeftContainer width={width}> <LogoContainer mode={mode}>{footerLogo}</LogoContainer> {leftContentChild} </LeftContainer> {(socialLinks || rightContentChild) && ( - <RightContainer> + <RightContainer width={width}> {rightContentChild} {socialLinks && ( <DxcFlex gap="var(--spacing-gap-ml)"> @@ -265,9 +291,9 @@ const DxcFooter = ({ )} </MainContainer> )} - <BottomContainer ref={ref} textColor={textColor}> - {mode === "default" ? ( - <BottomLinks hasContent={bottomLinks ? true : false} textColor={textColor}> + <BottomContainer ref={bottomContainerRef} textColor={textColor} width={width}> + {mode === "default" && bottomLinks && ( + <BottomLinks textColor={textColor} width={width}> {bottomLinks?.map((link, index) => ( <span key={`bottom${index}${link.text}`}> <DxcLink inheritColor href={link.href} tabIndex={tabIndex} newWindow> @@ -276,10 +302,11 @@ const DxcFooter = ({ </span> ))} </BottomLinks> - ) : ( - <LogoContainer mode={mode}>{footerLogo}</LogoContainer> )} - <Copyright>{copyright ?? translatedLabels.footer.copyrightText(new Date().getFullYear())}</Copyright> + {mode === "reduced" && <LogoContainer mode={mode}>{footerLogo}</LogoContainer>} + <Copyright width={width}> + {copyright ?? translatedLabels.footer.copyrightText(new Date().getFullYear())} + </Copyright> </BottomContainer> </FooterContainer> ); diff --git a/packages/lib/src/footer/utils.ts b/packages/lib/src/footer/utils.ts index 7c65e66484..a30918748e 100644 --- a/packages/lib/src/footer/utils.ts +++ b/packages/lib/src/footer/utils.ts @@ -36,3 +36,15 @@ export const getContrastColor = (bgColor: string) => { const luminance = getLuminance(bgColor); return luminance > 0.179 ? "#000000" : "#FFFFFF"; }; + +const BREAKPOINTS = { + small: 480, + medium: 720, + large: 1056, +}; + +export const getResponsiveStyles = { + isSmallScreen: (width: number) => width <= BREAKPOINTS.small, + isMediumScreen: (width: number) => width <= BREAKPOINTS.medium, + isLargeScreen: (width: number) => width >= BREAKPOINTS.medium, +}; From 2ecbb3f050c22c316b354e4f84d03a71529b8fe8 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 11:46:48 +0100 Subject: [PATCH 18/41] Add ResizeObserver to tests --- packages/lib/src/footer/Footer.test.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/lib/src/footer/Footer.test.tsx b/packages/lib/src/footer/Footer.test.tsx index 7f2a75fb29..2f3b1e1260 100644 --- a/packages/lib/src/footer/Footer.test.tsx +++ b/packages/lib/src/footer/Footer.test.tsx @@ -2,6 +2,13 @@ import { render } from "@testing-library/react"; import DxcFooter from "./Footer"; import { getContrastColor } from "./utils"; +// Mock ResizeObserver +global.ResizeObserver = jest.fn().mockImplementation(() => ({ + observe: jest.fn(), + unobserve: jest.fn(), + disconnect: jest.fn(), +})); + const social = [ { href: "https://www.test.com/social", From 7f58ab3757aad6af902c5e0ba78f19402429ed40 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 11:53:14 +0100 Subject: [PATCH 19/41] Add ResizeObserver to accesibility tests --- packages/lib/src/footer/Footer.accessibility.test.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/lib/src/footer/Footer.accessibility.test.tsx b/packages/lib/src/footer/Footer.accessibility.test.tsx index 8da2135cc8..789597caa7 100644 --- a/packages/lib/src/footer/Footer.accessibility.test.tsx +++ b/packages/lib/src/footer/Footer.accessibility.test.tsx @@ -2,6 +2,13 @@ import { render } from "@testing-library/react"; import { axe, formatRules } from "../../test/accessibility/axe-helper"; import DxcFooter from "./Footer"; import rules from "../../test/accessibility/rules/specific/footer/disabledRules"; +import { vi } from "vitest"; + +global.ResizeObserver = vi.fn().mockImplementation(() => ({ + observe: vi.fn(), + unobserve: vi.fn(), + disconnect: vi.fn(), +})); const disabledRules = { rules: formatRules(rules), From 0c23a7a2e623d9d556d235c47eddfbcf2820f282 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 12:43:15 +0100 Subject: [PATCH 20/41] Fix logo function --- packages/lib/src/footer/Footer.stories.tsx | 24 ++++++++-------------- packages/lib/src/footer/Footer.tsx | 24 +++++++++++----------- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 6e5ae8a01b..1a21a8b59d 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -3,7 +3,6 @@ import Title from "../../.storybook/components/Title"; import preview from "../../.storybook/preview"; import disabledRules from "../../test/accessibility/rules/specific/footer/disabledRules"; import DxcFlex from "../flex/Flex"; -import DxcTypography from "../typography/Typography"; import DxcFooter from "./Footer"; import DxcLink from "../link/Link"; import { Meta, StoryObj } from "@storybook/react-vite"; @@ -179,17 +178,16 @@ const bottomLong = [ }, ]; -const info = [ - { label: "Example Label", text: "Example" }, - { label: "Example Label", text: "Example" }, -]; - const Footer = () => ( <> <ExampleContainer> <Title title="Default" theme="light" level={4} /> <DxcFooter /> </ExampleContainer> + <ExampleContainer> + <Title title="With custom logo" theme="light" level={4} /> + <DxcFooter logo={{ src: "https://picsum.photos/id/1000/104/34" }} /> + </ExampleContainer> <ExampleContainer> <Title title="With children, copyright, bottom links and social links" theme="light" level={4} /> <DxcFooter socialLinks={social} bottomLinks={bottom}> @@ -385,15 +383,11 @@ const Footer = () => ( </ExampleContainer> <ExampleContainer> <Title title="Reduced" theme="light" level={4} /> - <DxcFooter mode="reduced"> - <DxcFlex justifyContent="center" alignItems="center" gap="1rem"> - {info.map((tag, index) => ( - <DxcTypography color="white" key={`tag${index}${tag.label}${tag.text}`}> - {tag.label}: {tag.text} - </DxcTypography> - ))} - </DxcFlex> - </DxcFooter> + <DxcFooter mode="reduced" /> + </ExampleContainer> + <ExampleContainer> + <Title title="Reduced with custom logo" theme="light" level={4} /> + <DxcFooter mode="reduced" logo={{ src: "https://picsum.photos/id/1000/104/34" }} /> </ExampleContainer> <Title title="Margins" theme="light" level={2} /> <ExampleContainer> diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 24735e278f..8bec63f9cb 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useContext, useEffect, useRef, useState } from "react"; +import { ReactNode, useContext, useEffect, useMemo, useRef, useState } from "react"; import styled from "@emotion/styled"; import { spaces } from "../common/variables"; import DxcFlex from "../flex/Flex"; @@ -81,8 +81,8 @@ const LogoContainer = styled.span<{ mode?: FooterPropsType["mode"] }>` `} `; -const LogoImg = styled.img<{ mode?: FooterPropsType["mode"] }>` - max-height: ${(props) => (props?.mode === "default" ? "var(--height-m)" : "var(--height-xxs)")}; +const LogoImg = styled.img<{ mode: FooterPropsType["mode"] }>` + max-height: ${(props) => (props.mode === "default" ? "var(--height-m)" : "var(--height-xxs)")}; width: auto; `; @@ -222,14 +222,6 @@ const Copyright = styled.div<{ width: number }>` `} `; -const getLogoElement = (mode: FooterPropsType["mode"], logo?: FooterPropsType["logo"]) => { - if (logo) { - return <LogoImg alt={logo.title} src={logo.src} title={logo.title} />; - } else { - return mode === "default" ? dxcLogo : dxcSmallLogo; - } -}; - const DxcFooter = ({ bottomLinks, copyright, @@ -241,7 +233,15 @@ const DxcFooter = ({ tabIndex = 0, }: FooterPropsType): JSX.Element => { const translatedLabels = useContext(HalstackLanguageContext); - const footerLogo = getLogoElement(mode, logo); + + const footerLogo = useMemo(() => { + if (logo) { + return <LogoImg mode={mode} alt={logo.title} src={logo.src} title={logo.title} />; + } else { + return mode === "default" ? dxcLogo : dxcSmallLogo; + } + }, [mode, logo]); + const leftContentChild = findChildType(children, LeftContent); const rightContentChild = findChildType(children, RightContent); From 7426be014962533b99d0c75a7efd60cca1a8db3d Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 13:05:38 +0100 Subject: [PATCH 21/41] Fix based on comments --- packages/lib/src/footer/Footer.stories.tsx | 4 ++-- packages/lib/src/footer/Footer.tsx | 16 ++++------------ packages/lib/src/footer/types.ts | 2 +- packages/lib/src/footer/utils.ts | 2 +- 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 1a21a8b59d..01a89acd26 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -186,7 +186,7 @@ const Footer = () => ( </ExampleContainer> <ExampleContainer> <Title title="With custom logo" theme="light" level={4} /> - <DxcFooter logo={{ src: "https://picsum.photos/id/1000/104/34" }} /> + <DxcFooter logo={{ src: "https://picsum.photos/id/1000/104/34", alt: "Custom logo" }} /> </ExampleContainer> <ExampleContainer> <Title title="With children, copyright, bottom links and social links" theme="light" level={4} /> @@ -387,7 +387,7 @@ const Footer = () => ( </ExampleContainer> <ExampleContainer> <Title title="Reduced with custom logo" theme="light" level={4} /> - <DxcFooter mode="reduced" logo={{ src: "https://picsum.photos/id/1000/104/34" }} /> + <DxcFooter mode="reduced" logo={{ src: "https://picsum.photos/id/1000/104/34", alt: "Custom logo" }} /> </ExampleContainer> <Title title="Margins" theme="light" level={2} /> <ExampleContainer> diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 8bec63f9cb..1d0f2c02f6 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -23,12 +23,6 @@ const FooterContainer = styled.footer<{ justify-content: space-between; margin-top: ${(props) => (props.margin ? spaces[props.margin] : "var(--spacing-padding-none)")}; width: 100%; - - ${(props) => - getResponsiveStyles.isSmallScreen(props.width) && - css` - flex-direction: column; - `} `; const MainContainer = styled.div<{ width: number }>` @@ -56,7 +50,6 @@ const LeftContainer = styled.div<{ width: number }>` flex-direction: column; align-items: flex-start; gap: var(--spacing-gap-ml); - height: 100%; color: var(--color-fg-neutral-dark); box-sizing: border-box; @@ -135,8 +128,7 @@ const BottomContainer = styled.div<{ textColor: string; width: number }>` width: 100%; min-height: var(--height-xl); display: grid; - grid-template-columns: 60% 40%; - gap: var(--spacing-padding-m); + grid-template-columns: 60% var(--spacing-gap-ml) 1fr; align-items: center; background-color: var(--color-bg-primary-strong); color: ${({ textColor }) => textColor}; @@ -147,7 +139,7 @@ const BottomContainer = styled.div<{ textColor: string; width: number }>` getResponsiveStyles.isMediumScreen(props.width) && css` grid-template-columns: 1fr; - grid-template-rows: auto auto; + grid-template-rows: auto; gap: var(--spacing-gap-ml); padding: var(--spacing-padding-m); `} @@ -236,7 +228,7 @@ const DxcFooter = ({ const footerLogo = useMemo(() => { if (logo) { - return <LogoImg mode={mode} alt={logo.title} src={logo.src} title={logo.title} />; + return <LogoImg mode={mode} alt={logo.alt} src={logo.src} title={logo.alt} />; } else { return mode === "default" ? dxcLogo : dxcSmallLogo; } @@ -249,7 +241,7 @@ const DxcFooter = ({ const width = useWidth(footerRef); const bottomContainerRef = useRef<HTMLDivElement>(null); - const [textColor, setTextColor] = useState("#fff"); + const [textColor, setTextColor] = useState("var(--color-fg-neutral-bright)"); useEffect(() => { if (bottomContainerRef.current) { diff --git a/packages/lib/src/footer/types.ts b/packages/lib/src/footer/types.ts index cac55d7f72..355b1a4a9c 100644 --- a/packages/lib/src/footer/types.ts +++ b/packages/lib/src/footer/types.ts @@ -35,7 +35,7 @@ type Logo = { /** * Alternative text for the logo image. */ - title?: string; + alt: string; }; type FooterPropsType = { diff --git a/packages/lib/src/footer/utils.ts b/packages/lib/src/footer/utils.ts index a30918748e..638224807d 100644 --- a/packages/lib/src/footer/utils.ts +++ b/packages/lib/src/footer/utils.ts @@ -34,7 +34,7 @@ function getLuminance(color: string): number { export const getContrastColor = (bgColor: string) => { const luminance = getLuminance(bgColor); - return luminance > 0.179 ? "#000000" : "#FFFFFF"; + return luminance > 0.179 ? "var(--color-fg-neutral-dark)" : "var(--color-fg-neutral-bright)"; }; const BREAKPOINTS = { From b4dd8153936b20cbd9898a42a47ac02e58f687ba Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 14:55:32 +0100 Subject: [PATCH 22/41] Fix latest comments --- packages/lib/src/footer/Footer.test.tsx | 16 ++++++++-------- packages/lib/src/footer/Footer.tsx | 15 ++++++++++----- packages/lib/src/footer/Icons.tsx | 22 +++++++++++----------- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/packages/lib/src/footer/Footer.test.tsx b/packages/lib/src/footer/Footer.test.tsx index 2f3b1e1260..5367fbdd5d 100644 --- a/packages/lib/src/footer/Footer.test.tsx +++ b/packages/lib/src/footer/Footer.test.tsx @@ -135,16 +135,16 @@ describe("Footer component tests", () => { describe("getContrastColor function", () => { test("should return black color for light backgrounds", () => { - expect(getContrastColor("#FFFFFF")).toBe("#000000"); - expect(getContrastColor("#F5F5F5")).toBe("#000000"); - expect(getContrastColor("rgb(255, 255, 255)")).toBe("#000000"); - expect(getContrastColor("rgb(245, 245, 245)")).toBe("#000000"); + expect(getContrastColor("#FFFFFF")).toBe("var(--color-fg-neutral-dark)"); + expect(getContrastColor("#F5F5F5")).toBe("var(--color-fg-neutral-dark)"); + expect(getContrastColor("rgb(255, 255, 255)")).toBe("var(--color-fg-neutral-dark)"); + expect(getContrastColor("rgb(245, 245, 245)")).toBe("var(--color-fg-neutral-dark)"); }); test("should return white color for dark backgrounds", () => { - expect(getContrastColor("#000000")).toBe("#FFFFFF"); - expect(getContrastColor("#333333")).toBe("#FFFFFF"); - expect(getContrastColor("rgb(0, 0, 0)")).toBe("#FFFFFF"); - expect(getContrastColor("rgb(51, 51, 51)")).toBe("#FFFFFF"); + expect(getContrastColor("#000000")).toBe("var(--color-fg-neutral-bright)"); + expect(getContrastColor("#333333")).toBe("var(--color-fg-neutral-bright)"); + expect(getContrastColor("rgb(0, 0, 0)")).toBe("var(--color-fg-neutral-bright)"); + expect(getContrastColor("rgb(51, 51, 51)")).toBe("var(--color-fg-neutral-bright)"); }); }); diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 1d0f2c02f6..0540e8c304 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -101,12 +101,17 @@ const RightContainer = styled.div<{ width: number }>` `; const SocialAnchor = styled.a` - height: fit-content; + height: var(--dimensions-28); + aspect-ratio: 1 / 1; border-radius: var(--border-radius-s); + display: flex; + justify-content: center; + align-items: center; + border: 2px solid transparent; + box-sizing: border-box; &:focus { - outline: var(--border-width-m) var(--border-style-default) var(--border-color-secondary-medium); - outline-offset: var(--border-width-m); + border-color: var(--border-color-secondary-medium); } `; @@ -115,7 +120,7 @@ const SocialIconContainer = styled.div` align-items: center; color: var(--color-fg-primary-strong); overflow: hidden; - font-size: var(--height-s); + font-size: var(--height-xs); svg { height: var(--height-xs); @@ -203,7 +208,7 @@ const Copyright = styled.div<{ width: number }>` ${(props) => getResponsiveStyles.isLargeScreen(props.width) && css` - grid-column-start: 2; + grid-column-start: 3; `} ${(props) => diff --git a/packages/lib/src/footer/Icons.tsx b/packages/lib/src/footer/Icons.tsx index a9c5714d44..718c39d8b1 100644 --- a/packages/lib/src/footer/Icons.tsx +++ b/packages/lib/src/footer/Icons.tsx @@ -5,57 +5,57 @@ export const dxcLogo = ( <path d="M171.5-54.124v12.539h-3.6V-54.124h-4.973v-3.191h13.54v3.191H171.5" transform="translate(-68.528 65.45)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M189.96-41.585V-57.315h12.326v3.079h-8.753v3.191h7.7v3.078h-7.7v3.3h8.87v3.078H189.96" transform="translate(-77.56 65.45)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M223.558-41.438a8.1,8.1,0,0,1-8.382-8.1v-.045a8.161,8.161,0,0,1,8.522-8.146,8.6,8.6,0,0,1,6.444,2.431l-2.289,2.543a6.133,6.133,0,0,0-4.178-1.778,4.743,4.743,0,0,0-4.738,4.905v.045a4.752,4.752,0,0,0,4.738,4.95,6,6,0,0,0,4.295-1.845l2.288,2.228a8.491,8.491,0,0,1-6.7,2.813" transform="translate(-86.019 65.583)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M254.988-41.585V-47.9h-6.63v6.315h-3.6V-57.315h3.6v6.225h6.63v-6.225h3.594v15.731h-3.594" transform="translate(-95.903 65.45)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M285.991-41.585l-7.914-10v10h-3.549V-57.315h3.316l7.657,9.685v-9.685h3.549v15.731h-3.058" transform="translate(-105.869 65.45)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M317.2-49.583a4.869,4.869,0,0,0-4.949-4.95,4.793,4.793,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.793,4.793,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.661-3.623-8.661-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.66,3.623,8.66,8.1v.045c0,4.477-3.664,8.145-8.708,8.145" transform="translate(-115.631 65.583)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M336.786-41.585V-57.315h3.6v12.584h8.148v3.146H336.786" transform="translate(-126.654 65.45)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M372.78-49.583a4.87,4.87,0,0,0-4.949-4.95,4.794,4.794,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.794,4.794,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.662-3.623-8.662-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.661,3.623,8.661,8.1v.045c0,4.477-3.666,8.145-8.708,8.145" transform="translate(-135.016 65.583)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M399.735-41.438c-5.09,0-8.592-3.443-8.592-8.1v-.045a8.243,8.243,0,0,1,8.568-8.146,9.18,9.18,0,0,1,6.42,2.16l-2.265,2.634a6.141,6.141,0,0,0-4.272-1.6,4.807,4.807,0,0,0-4.692,4.905v.045a4.8,4.8,0,0,0,4.949,4.995,5.89,5.89,0,0,0,3.384-.945v-2.25h-3.618v-2.992h7.1v6.841a10.837,10.837,0,0,1-6.98,2.5" transform="translate(-145.284 65.583)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M428.664-47.855v6.27h-3.6v-6.2l-6.28-9.528h4.2L426.89-51l3.968-6.315h4.085l-6.28,9.46" transform="translate(-154.162 65.45)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> <path d="M84.218-55.737a10.063,10.063,0,0,1,2.589-4.4,9.792,9.792,0,0,1,6.985-2.77h11.328V-69.3H93.792a17.041,17.041,0,0,0-11.8,4.759,16.344,16.344,0,0,0-3.547,5.115,13.247,13.247,0,0,0-1.122,3.688Zm0,4.877a10.065,10.065,0,0,0,2.589,4.4,9.793,9.793,0,0,0,6.985,2.77h11.328V-37.3H93.792a17.042,17.042,0,0,1-11.8-4.759,16.339,16.339,0,0,1-3.547-5.114,13.251,13.251,0,0,1-1.122-3.688ZM63.1-47.98,54.45-37.3H45.873l12.957-16-12.957-16H54.45L63.1-58.619l8.65-10.68h8.578l-12.957,16,12.957,16H71.749ZM48.875-55.737a13.212,13.212,0,0,0-1.122-3.688,16.359,16.359,0,0,0-3.546-5.115,17.043,17.043,0,0,0-11.8-4.759H21.08v6.393H32.408a9.79,9.79,0,0,1,6.985,2.77,10.072,10.072,0,0,1,2.59,4.4Zm0,4.877a13.215,13.215,0,0,1-1.122,3.688,16.353,16.353,0,0,1-3.546,5.114,17.044,17.044,0,0,1-11.8,4.759H21.08v-6.393H32.408a9.791,9.791,0,0,0,6.985-2.77,10.074,10.074,0,0,0,2.59-4.4h6.892" transform="translate(-21.08 69.298)" - fill="var(--color-fg-primary-strong)" + fill="#6f4b97" /> </g> </svg> From a5318d6dfeb9087c26ab4bb6ea23a3289b50fc41 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 15:08:48 +0100 Subject: [PATCH 23/41] Fix SocialLinks container height --- packages/lib/src/footer/Footer.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 0540e8c304..ec6456a268 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -1,7 +1,6 @@ import { ReactNode, useContext, useEffect, useMemo, useRef, useState } from "react"; import styled from "@emotion/styled"; import { spaces } from "../common/variables"; -import DxcFlex from "../flex/Flex"; import DxcIcon from "../icon/Icon"; import { Tooltip } from "../tooltip/Tooltip"; import { dxcLogo, dxcSmallLogo } from "./Icons"; @@ -99,6 +98,12 @@ const RightContainer = styled.div<{ width: number }>` justify-content: flex-start; `} `; +const SocialLinks = styled.div` + height: var(--height-m); + display: flex; + align-items: center; + gap: var(--spacing-gap-ml); +`; const SocialAnchor = styled.a` height: var(--dimensions-28); @@ -267,7 +272,7 @@ const DxcFooter = ({ <RightContainer width={width}> {rightContentChild} {socialLinks && ( - <DxcFlex gap="var(--spacing-gap-ml)"> + <SocialLinks> {socialLinks?.map((link, index) => ( <Tooltip label={link.title} key={`social${index}${link.href}`}> <SocialAnchor @@ -282,7 +287,7 @@ const DxcFooter = ({ </SocialAnchor> </Tooltip> ))} - </DxcFlex> + </SocialLinks> )} </RightContainer> )} From 546c8a19259883f485da1e3c878cb6c73819c5c7 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 15:17:05 +0100 Subject: [PATCH 24/41] Remove unnecesary fill --- packages/lib/src/footer/Footer.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index ec6456a268..27a920cec9 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -130,7 +130,6 @@ const SocialIconContainer = styled.div` svg { height: var(--height-xs); width: var(--height-xs); - fill: var(--color-fg-primary-strong); } `; From ae85140243f1cf4c8bac20954646a754ae2a531e Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Wed, 19 Nov 2025 16:45:58 +0100 Subject: [PATCH 25/41] Fix outline for socialLinks --- packages/lib/src/footer/Footer.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 27a920cec9..1449623bcd 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -112,11 +112,11 @@ const SocialAnchor = styled.a` display: flex; justify-content: center; align-items: center; - border: 2px solid transparent; - box-sizing: border-box; - &:focus { - border-color: var(--border-color-secondary-medium); + &:focus, + &:focus-visible { + outline: var(--border-width-m) solid var(--border-color-secondary-medium); + outline-offset: calc(-1 * var(--border-width-m)); } `; From a56d6cf4c7575fda5ab9c0db6ecb0e9185a0ba1a Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Thu, 20 Nov 2025 08:45:36 +0100 Subject: [PATCH 26/41] Fix dimensions-28 variable to height-s --- packages/lib/src/footer/Footer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 1449623bcd..e98c127674 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -106,7 +106,7 @@ const SocialLinks = styled.div` `; const SocialAnchor = styled.a` - height: var(--dimensions-28); + height: var(--height-s); aspect-ratio: 1 / 1; border-radius: var(--border-radius-s); display: flex; @@ -116,7 +116,7 @@ const SocialAnchor = styled.a` &:focus, &:focus-visible { outline: var(--border-width-m) solid var(--border-color-secondary-medium); - outline-offset: calc(-1 * var(--border-width-m)); + outline-offset: 0px; } `; From 1e905aeb87c1c967eb09e22dafa15f2b69e12f00 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Thu, 20 Nov 2025 11:10:46 +0100 Subject: [PATCH 27/41] Fix svg colors and add stories --- packages/lib/src/footer/Footer.stories.tsx | 139 ++++++++++++++++++++- packages/lib/src/layout/Icons.tsx | 8 +- 2 files changed, 141 insertions(+), 6 deletions(-) diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 01a89acd26..1c57295426 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -9,6 +9,11 @@ import { Meta, StoryObj } from "@storybook/react-vite"; import { userEvent, within } from "storybook/internal/test"; import DxcParagraph from "../paragraph/Paragraph"; import DxcHeading from "../heading/Heading"; +import DxcApplicationLayout from "../layout/ApplicationLayout"; +import DxcHeader from "../header/Header"; +import DxcBadge from "../badge/Badge"; +import DxcButton from "../button/Button"; +import { dxcLogo } from "../header/Icons"; export default { title: "Footer", @@ -53,10 +58,10 @@ const social = [ href: "https://x.com/dxctechnology", logo: ( <svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg"> - <rect width="256" height="256" rx="40" fill="white" /> + <rect width="256" height="256" rx="40" fill="currentColor" /> <path d="M140.192 118.205L187.848 64H176.556L135.158 111.056L102.117 64H64L113.975 135.163L64 192H75.2914L118.982 142.296L153.883 192H192L140.192 118.205ZM124.722 135.787L119.65 128.697L79.3634 72.3294H96.7094L129.232 117.837L134.282 124.927L176.551 184.076H159.205L124.722 135.787Z" - fill="#0F1419" + fill="white" /> </svg> ), @@ -409,6 +414,122 @@ const Footer = () => ( </> ); +const dxcBrandedLogo = { + logo: { + src: dxcLogo, + alt: "DXC Logo", + }, +}; + +const items = [ + { + label: "Grouped Item 1", + icon: "favorite", + items: [ + { label: "Item 1", icon: "person", selected: true }, + { + label: "Grouped Item 2", + items: [ + { + label: "Item 2", + icon: "bookmark", + badge: <DxcBadge color="primary" label="Experimental" />, + }, + { label: "Selected Item 3" }, + ], + }, + ], + badge: <DxcBadge color="success" label="New" />, + }, + { label: "Item 4", icon: "key" }, + { label: "Item 5", icon: "person" }, + { label: "Grouped Item 6", items: [{ label: "Item 7", icon: "person" }, { label: "Item 8" }] }, + { label: "Item 9" }, +]; + +const FooterInLayout = () => ( + <DxcApplicationLayout + header={ + <DxcHeader + branding={dxcBrandedLogo} + navItems={items} + sideContent={(isResponsive) => + isResponsive ? ( + <> + <DxcButton icon="settings" title="Settings" mode="tertiary" size={{ height: "medium" }} /> + </> + ) : ( + <> + <DxcButton icon="settings" title="Settings" mode="tertiary" size={{ height: "medium" }} /> + <DxcButton label="Side button" mode="secondary" size={{ height: "medium" }} /> + <DxcButton label="Another button" mode="primary" size={{ height: "medium" }} /> + </> + ) + } + responsiveBottomContent={ + <> + <DxcButton label="Bottom content button" mode="secondary" size={{ width: "fillParent" }} /> + <DxcButton label="Another button" mode="primary" size={{ width: "fillParent" }} /> + </> + } + /> + } + sidenav={ + <DxcApplicationLayout.Sidenav + branding={{ appTitle: "Footer in application layout with header and sidenav" }} + navItems={items} + /> + } + > + <DxcApplicationLayout.Main> + <DxcParagraph> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultrices fermentum ante et pharetra. Integer + ullamcorper ante non laoreet suscipit. Integer pharetra viverra nunc, quis fermentum urna eleifend eget. + Maecenas dolor justo, ullamcorper ac posuere tincidunt, dictum id urna. Suspendisse est metus, euismod et felis + eget, condimentum elementum eros. Curabitur ut lorem ut odio volutpat lacinia. Interdum et malesuada fames ac + ante ipsum primis in faucibus. Sed leo quam, lobortis in ultricies ac, interdum in sem. Suspendisse magna enim, + rhoncus eget lectus vitae, rutrum interdum ligula. Nunc efficitur neque ac orci pretium lacinia. Proin sagittis + condimentum mi, eu dapibus quam faucibus eget. Aenean fermentum nisl ut mauris convallis, in imperdiet neque + porttitor. Aliquam erat volutpat. Fusce tincidunt arcu id arcu dignissim viverra. Sed imperdiet vitae odio eget + consequat. Vivamus eu dictum orci. + </DxcParagraph> + <DxcParagraph> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultrices fermentum ante et pharetra. Integer + ullamcorper ante non laoreet suscipit. Integer pharetra viverra nunc, quis fermentum urna eleifend eget. + Maecenas dolor justo, ullamcorper ac posuere tincidunt, dictum id urna. Suspendisse est metus, euismod et felis + eget, condimentum elementum eros. Curabitur ut lorem ut odio volutpat lacinia. Interdum et malesuada fames ac + ante ipsum primis in faucibus. Sed leo quam, lobortis in ultricies ac, interdum in sem. Suspendisse magna enim, + rhoncus eget lectus vitae, rutrum interdum ligula. Nunc efficitur neque ac orci pretium lacinia. Proin sagittis + condimentum mi, eu dapibus quam faucibus eget. Aenean fermentum nisl ut mauris convallis, in imperdiet neque + porttitor. Aliquam erat volutpat. Fusce tincidunt arcu id arcu dignissim viverra. Sed imperdiet vitae odio eget + consequat. Vivamus eu dictum orci. + </DxcParagraph> + <DxcParagraph> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultrices fermentum ante et pharetra. Integer + ullamcorper ante non laoreet suscipit. Integer pharetra viverra nunc, quis fermentum urna eleifend eget. + Maecenas dolor justo, ullamcorper ac posuere tincidunt, dictum id urna. Suspendisse est metus, euismod et felis + eget, condimentum elementum eros. Curabitur ut lorem ut odio volutpat lacinia. Interdum et malesuada fames ac + ante ipsum primis in faucibus. Sed leo quam, lobortis in ultricies ac, interdum in sem. Suspendisse magna enim, + rhoncus eget lectus vitae, rutrum interdum ligula. Nunc efficitur neque ac orci pretium lacinia. Proin sagittis + condimentum mi, eu dapibus quam faucibus eget. Aenean fermentum nisl ut mauris convallis, in imperdiet neque + porttitor. Aliquam erat volutpat. Fusce tincidunt arcu id arcu dignissim viverra. Sed imperdiet vitae odio eget + consequat. Vivamus eu dictum orci. + </DxcParagraph> + <DxcParagraph> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultrices fermentum ante et pharetra. Integer + ullamcorper ante non laoreet suscipit. Integer pharetra viverra nunc, quis fermentum urna eleifend eget. + Maecenas dolor justo, ullamcorper ac posuere tincidunt, dictum id urna. Suspendisse est metus, euismod et felis + eget, condimentum elementum eros. Curabitur ut lorem ut odio volutpat lacinia. Interdum et malesuada fames ac + ante ipsum primis in faucibus. Sed leo quam, lobortis in ultricies ac, interdum in sem. Suspendisse magna enim, + rhoncus eget lectus vitae, rutrum interdum ligula. Nunc efficitur neque ac orci pretium lacinia. Proin sagittis + condimentum mi, eu dapibus quam faucibus eget. Aenean fermentum nisl ut mauris convallis, in imperdiet neque + porttitor. Aliquam erat volutpat. Fusce tincidunt arcu id arcu dignissim viverra. Sed imperdiet vitae odio eget + consequat. Vivamus eu dictum orci. + </DxcParagraph> + </DxcApplicationLayout.Main> + </DxcApplicationLayout> +); + const Tooltip = () => { return ( <ExampleContainer> @@ -424,6 +545,20 @@ export const Chromatic: Story = { render: Footer, }; +export const Responsive: Story = { + render: Footer, + parameters: { + chromatic: { viewports: [375] }, + }, + globals: { + viewport: { value: "iphonex", isRotated: false }, + }, +}; + +export const InLayout: Story = { + render: FooterInLayout, +}; + export const FooterTooltipFirst: Story = { render: Tooltip, play: async ({ canvasElement }) => { diff --git a/packages/lib/src/layout/Icons.tsx b/packages/lib/src/layout/Icons.tsx index 93c6c2c2a6..b9ff60f7ad 100644 --- a/packages/lib/src/layout/Icons.tsx +++ b/packages/lib/src/layout/Icons.tsx @@ -7,7 +7,7 @@ const layoutIcons = { width="438.536px" height="438.536px" viewBox="0 0 438.536 438.536" - fill="#FFFFFF" + fill="currentColor" > <g> <path @@ -23,10 +23,10 @@ const layoutIcons = { ), xLogo: ( <svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg"> - <rect width="256" height="256" rx="40" fill="white" /> + <rect width="256" height="256" rx="40" fill="currentColor" /> <path d="M140.192 118.205L187.848 64H176.556L135.158 111.056L102.117 64H64L113.975 135.163L64 192H75.2914L118.982 142.296L153.883 192H192L140.192 118.205ZM124.722 135.787L119.65 128.697L79.3634 72.3294H96.7094L129.232 117.837L134.282 124.927L176.551 184.076H159.205L124.722 135.787Z" - fill="#0F1419" + fill="white" /> </svg> ), @@ -38,7 +38,7 @@ const layoutIcons = { width="438.536px" height="438.536px" viewBox="0 0 438.536 438.536" - fill="#FFFFFF" + fill="currentColor" > <g> <path From 146e134a9a89ee63e0c3976b1c40d3f902a025ca Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Thu, 20 Nov 2025 11:13:29 +0100 Subject: [PATCH 28/41] Fix logo in header of stories --- packages/lib/src/footer/Footer.stories.tsx | 29 +++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 1c57295426..cd96463997 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -13,7 +13,6 @@ import DxcApplicationLayout from "../layout/ApplicationLayout"; import DxcHeader from "../header/Header"; import DxcBadge from "../badge/Badge"; import DxcButton from "../button/Button"; -import { dxcLogo } from "../header/Icons"; export default { title: "Footer", @@ -414,11 +413,29 @@ const Footer = () => ( </> ); +const dxcLogo = ( + <svg xmlns="http://www.w3.org/2000/svg" width="73" height="40" viewBox="0 0 73 40"> + <title>DXC Logo + + + + + + + +); + const dxcBrandedLogo = { - logo: { - src: dxcLogo, - alt: "DXC Logo", - }, + src: dxcLogo, + alt: "DXC Logo", }; const items = [ @@ -451,7 +468,7 @@ const FooterInLayout = () => ( isResponsive ? ( From fb77e17870d365d5f24060b69406371412fa5236 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso Date: Thu, 20 Nov 2025 12:47:23 +0100 Subject: [PATCH 29/41] Fix based on comments --- .../components/footer/code/FooterCodePage.tsx | 41 +++++++++++++------ packages/lib/src/footer/Footer.tsx | 5 +-- packages/lib/src/footer/types.ts | 4 +- packages/lib/src/footer/utils.ts | 13 ++---- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/apps/website/screens/components/footer/code/FooterCodePage.tsx b/apps/website/screens/components/footer/code/FooterCodePage.tsx index 0696c262a5..15bb239dd5 100644 --- a/apps/website/screens/components/footer/code/FooterCodePage.tsx +++ b/apps/website/screens/components/footer/code/FooterCodePage.tsx @@ -4,11 +4,22 @@ import DocFooter from "@/common/DocFooter"; import StatusBadge from "@/common/StatusBadge"; import Code, { ExtendedTableCode, TableCode } from "@/common/Code"; +const bottomLinksTypeString = `{ + href: string; + text: string; +}[]`; + const logoTypeString = `{ src: string; - title?: string; + alt: string; }`; +const socialLinkTypeString = `{ + href: string; + title: string; + logo: string | SVG; +}[]`; + const sections = [ { title: "Props", @@ -26,7 +37,7 @@ const sections = [ bottomLinks - {"{ href: string; text: string; }[]"} + {bottomLinksTypeString} An array of objects representing the links that will be rendered at the bottom part of the footer. Each @@ -42,6 +53,17 @@ const sections = [ - + + children + + ReactNode + + + Contains DxcFooter.LeftContent and DxcFooter.RightContent components to customize the left and right + content of the footer respectively. + + - + copyright @@ -59,10 +81,6 @@ const sections = [ - {"Logo"} -

- being Logo an object with the following properties: -

{logoTypeString} @@ -80,7 +98,6 @@ const sections = [ - mode @@ -105,9 +122,7 @@ const sections = [ socialLinks - - {`{ href: string; title: string; logo: string | (React.ReactNode & React.SVGProps ); }[]`} - + {socialLinkTypeString} An array of objects representing the links that will be rendered as icons at the top-right side of the @@ -180,7 +195,7 @@ const sections = [ React.ReactNode - The expanded panel of the accordion. This area can be used to render custom content. + Custom content displayed at the left container of the footer under the logo. - @@ -221,7 +236,9 @@ const sections = [ React.ReactNode - The expanded panel of the accordion. This area can be used to render custom content. + + Custom content displayed at the right container of the footer before the socialLinks if provided. + - diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index e98c127674..42359256aa 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -14,7 +14,6 @@ import { css } from "@emotion/react"; const FooterContainer = styled.footer<{ margin: FooterPropsType["margin"]; mode?: FooterPropsType["mode"]; - width: number; }>` box-sizing: border-box; display: flex; @@ -83,7 +82,6 @@ const RightContainer = styled.div<{ width: number }>` justify-content: flex-end; flex-wrap: wrap; gap: var(--spacing-gap-xl); - height: 100%; box-sizing: border-box; ${(props) => @@ -148,7 +146,6 @@ const BottomContainer = styled.div<{ textColor: string; width: number }>` getResponsiveStyles.isMediumScreen(props.width) && css` grid-template-columns: 1fr; - grid-template-rows: auto; gap: var(--spacing-gap-ml); padding: var(--spacing-padding-m); `} @@ -260,7 +257,7 @@ const DxcFooter = ({ }, []); return ( - + {mode === "default" && ( diff --git a/packages/lib/src/footer/types.ts b/packages/lib/src/footer/types.ts index 355b1a4a9c..cd8ed771df 100644 --- a/packages/lib/src/footer/types.ts +++ b/packages/lib/src/footer/types.ts @@ -45,8 +45,8 @@ type FooterPropsType = { */ bottomLinks?: BottomLink[]; /** - * The center section of the footer. Can be used to render custom - * content in this area. + * Contains DxcFooter.LeftContent and DxcFooter.RightContent components to + * customize the left and right content of the footer respectively. */ children?: ReactNode; /** diff --git a/packages/lib/src/footer/utils.ts b/packages/lib/src/footer/utils.ts index 638224807d..6d9929373b 100644 --- a/packages/lib/src/footer/utils.ts +++ b/packages/lib/src/footer/utils.ts @@ -1,5 +1,6 @@ import { Children, ElementType, isValidElement } from "react"; import FooterPropsType from "./types"; +import { responsiveSizes } from "../common/variables"; export const findChildType = (children: FooterPropsType["children"], childType: ElementType) => Children.toArray(children).find((child) => isValidElement(child) && child.type === childType); @@ -37,14 +38,8 @@ export const getContrastColor = (bgColor: string) => { return luminance > 0.179 ? "var(--color-fg-neutral-dark)" : "var(--color-fg-neutral-bright)"; }; -const BREAKPOINTS = { - small: 480, - medium: 720, - large: 1056, -}; - export const getResponsiveStyles = { - isSmallScreen: (width: number) => width <= BREAKPOINTS.small, - isMediumScreen: (width: number) => width <= BREAKPOINTS.medium, - isLargeScreen: (width: number) => width >= BREAKPOINTS.medium, + isSmallScreen: (width: number) => width <= Number(responsiveSizes.small) * 16, + isMediumScreen: (width: number) => width <= Number(responsiveSizes.medium) * 16, + isLargeScreen: (width: number) => width >= Number(responsiveSizes.medium) * 16, }; From e51368d16bae355c5accf0378150e14fc67a56a2 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso Date: Thu, 20 Nov 2025 12:48:35 +0100 Subject: [PATCH 30/41] Fix overview removing incorrect statements --- .../footer/overview/FooterOverviewPage.tsx | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx index 9e47387bdf..f49898fd8e 100644 --- a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx +++ b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx @@ -60,12 +60,6 @@ const sections = [ Default: provides a balanced layout with branding and essential legal links. It offers a clean, uncluttered appearance suitable for most standard applications. - - With Navigation: includes several additional content sections, enabling users to - inmediately see various forms of helpful content such form elements, buttons, and more navigational links. - This layout is ideal for content-heavy pages or enterprise-level applications requiring enhanced footer - functionality. - Small: offers a compact version of the footer, typically limited to branding and minimal legal text. It's best suited for lightweight experiences, login pages, or environments with constrained @@ -87,15 +81,6 @@ const sections = [ content: ( <> - - Dock the footer to the bottom of the page: the footer should remain fixed at the bottom - edge of the viewport and not scroll with the page content to maintain visibility and separation from dynamic - areas. - - - Ensure full-width alignment: the footer container should always span the full width of the - screen to create a clean, structured boundary and support responsive behavior across breakpoints. - Display copyright information on the right: consistently place legal disclaimers or copyright text aligned to the right edge of the footer to support predictable user expectations. From e63d07e6ce6ead6dc477c5ca3f1762a5c16cea22 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso Date: Thu, 20 Nov 2025 12:51:43 +0100 Subject: [PATCH 31/41] Remove margin from footer --- .../components/footer/code/FooterCodePage.tsx | 8 -------- packages/lib/src/footer/Footer.stories.tsx | 17 ----------------- packages/lib/src/footer/Footer.tsx | 6 +----- packages/lib/src/footer/types.ts | 6 +----- 4 files changed, 2 insertions(+), 35 deletions(-) diff --git a/apps/website/screens/components/footer/code/FooterCodePage.tsx b/apps/website/screens/components/footer/code/FooterCodePage.tsx index 15bb239dd5..adf7db0393 100644 --- a/apps/website/screens/components/footer/code/FooterCodePage.tsx +++ b/apps/website/screens/components/footer/code/FooterCodePage.tsx @@ -87,14 +87,6 @@ const sections = [ Logo to be displayed inside the footer. - - - margin - - 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' - - Size of the top margin to be applied to the footer. - - - diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index cd96463997..ebeb286da1 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -393,23 +393,6 @@ const Footer = () => ( <DxcFooter mode="reduced" logo={{ src: "https://picsum.photos/id/1000/104/34", alt: "Custom logo" }} /> </ExampleContainer> - <Title title="Margins" theme="light" level={2} /> - <ExampleContainer> - <Title title="Xxsmall margin" theme="light" level={4} /> - <DxcFooter margin="xxsmall" /> - <Title title="Xsmall margin" theme="light" level={4} /> - <DxcFooter margin="xsmall" /> - <Title title="Small margin" theme="light" level={4} /> - <DxcFooter margin="small" /> - <Title title="Medium margin" theme="light" level={4} /> - <DxcFooter margin="medium" /> - <Title title="Large margin" theme="light" level={4} /> - <DxcFooter margin="large" /> - <Title title="Xlarge margin" theme="light" level={4} /> - <DxcFooter margin="xlarge" /> - <Title title="Xxlarge margin" theme="light" level={4} /> - <DxcFooter margin="xxlarge" /> - </ExampleContainer> </> ); diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 42359256aa..42a4ace0ea 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -1,6 +1,5 @@ import { ReactNode, useContext, useEffect, useMemo, useRef, useState } from "react"; import styled from "@emotion/styled"; -import { spaces } from "../common/variables"; import DxcIcon from "../icon/Icon"; import { Tooltip } from "../tooltip/Tooltip"; import { dxcLogo, dxcSmallLogo } from "./Icons"; @@ -12,14 +11,12 @@ import useWidth from "../utils/useWidth"; import { css } from "@emotion/react"; const FooterContainer = styled.footer<{ - margin: FooterPropsType["margin"]; mode?: FooterPropsType["mode"]; }>` box-sizing: border-box; display: flex; flex-direction: ${(props) => (props?.mode === "default" ? "column" : "row")}; justify-content: space-between; - margin-top: ${(props) => (props.margin ? spaces[props.margin] : "var(--spacing-padding-none)")}; width: 100%; `; @@ -225,7 +222,6 @@ const DxcFooter = ({ copyright, children, logo, - margin, mode = "default", socialLinks, tabIndex = 0, @@ -257,7 +253,7 @@ const DxcFooter = ({ }, []); return ( - <FooterContainer ref={footerRef} margin={margin} mode={mode}> + <FooterContainer ref={footerRef} mode={mode}> {mode === "default" && ( <MainContainer width={width}> <LeftContainer width={width}> diff --git a/packages/lib/src/footer/types.ts b/packages/lib/src/footer/types.ts index cd8ed771df..ad27dcd74f 100644 --- a/packages/lib/src/footer/types.ts +++ b/packages/lib/src/footer/types.ts @@ -1,5 +1,5 @@ import { ReactNode } from "react"; -import { SVG, Space } from "../common/utils"; +import { SVG } from "../common/utils"; type SocialLink = { /** @@ -57,10 +57,6 @@ type FooterPropsType = { * Logo to be displayed inside the footer */ logo?: Logo; - /** - * Size of the top margin to be applied to the footer. - */ - margin?: Space; /** * Determines the visual style and layout * - "default": The default mode with full content and styling. From 778a251afda2ce47fbf9c930baf077fea948b062 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Thu, 20 Nov 2025 13:06:41 +0100 Subject: [PATCH 32/41] Add target blank to socialLinks --- packages/lib/src/footer/Footer.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 42a4ace0ea..dd6524d42a 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -269,6 +269,7 @@ const DxcFooter = ({ <Tooltip label={link.title} key={`social${index}${link.href}`}> <SocialAnchor href={link.href} + target="_blank" tabIndex={tabIndex} aria-label={link.title} key={`social${index}${link.href}`} From dfbcdf0d8a93b6e57be23fed639ff722109f5ec0 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Thu, 20 Nov 2025 13:26:28 +0100 Subject: [PATCH 33/41] Add stories and remove margin from accessibility test --- .../src/footer/Footer.accessibility.test.tsx | 4 +- packages/lib/src/footer/Footer.stories.tsx | 40 ++++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/packages/lib/src/footer/Footer.accessibility.test.tsx b/packages/lib/src/footer/Footer.accessibility.test.tsx index 789597caa7..b99fed16fb 100644 --- a/packages/lib/src/footer/Footer.accessibility.test.tsx +++ b/packages/lib/src/footer/Footer.accessibility.test.tsx @@ -97,7 +97,7 @@ const bottom = [ describe("Footer component accessibility tests", () => { it("Should not have basic accessibility issues", async () => { const { container } = render( - <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom} margin="small" mode="default"> + <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom} mode="default"> <DxcFooter.LeftContent> <div> <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a> @@ -115,7 +115,7 @@ describe("Footer component accessibility tests", () => { }); it("Should not have basic accessibility issues for reduced mode", async () => { const { container } = render( - <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom} margin="small" mode="reduced" /> + <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom} mode="reduced" /> ); const results = await axe(container, disabledRules); expect(results.violations).toHaveLength(0); diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index ebeb286da1..6aabf5e5d5 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -193,7 +193,45 @@ const Footer = () => ( <DxcFooter logo={{ src: "https://picsum.photos/id/1000/104/34", alt: "Custom logo" }} /> </ExampleContainer> <ExampleContainer> - <Title title="With children, copyright, bottom links and social links" theme="light" level={4} /> + <Title title="With left content" theme="light" level={4} /> + <DxcFooter> + <DxcFooter.LeftContent> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </DxcFooter.LeftContent> + </DxcFooter> + </ExampleContainer> + <ExampleContainer> + <Title title="With right content" theme="light" level={4} /> + <DxcFooter> + <DxcFooter.RightContent> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </DxcFooter.RightContent> + </DxcFooter> + </ExampleContainer> + <ExampleContainer> + <Title title="With left and right content, copyright, bottom links and social links" theme="light" level={4} /> <DxcFooter socialLinks={social} bottomLinks={bottom}> <DxcFooter.LeftContent> <DxcParagraph> From fdb31a32b3dc636d6ea7a9120f0cffaf60ec8ce0 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 21 Nov 2025 09:15:37 +0100 Subject: [PATCH 34/41] Update documentation statements --- .../components/footer/overview/FooterOverviewPage.tsx | 10 ++++++++++ packages/lib/src/footer/Footer.stories.tsx | 7 +------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx index f49898fd8e..a0554eec2b 100644 --- a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx +++ b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx @@ -81,6 +81,16 @@ const sections = [ content: ( <> <DxcBulletedList> + <DxcBulletedList.Item> + <strong>The footer should be docked at the bottom of the page at all times.</strong> If the page content + exceeds the current view and the user needs to scroll to reach the bottom of the content, the footer should + always be found at the end of the page. + </DxcBulletedList.Item> + <DxcBulletedList.Item> + By default, <strong>the footer spans the entire width of the page excluding the sidenav.</strong> For cases + when the left sidenav is not used, the footer container should always span the full width of the screen to + create a clean, structured boundary and support responsive behavior across breakpoints. + </DxcBulletedList.Item> <DxcBulletedList.Item> <strong>Display copyright information on the right:</strong> consistently place legal disclaimers or copyright text aligned to the right edge of the footer to support predictable user expectations. diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 6aabf5e5d5..04f063b492 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -512,12 +512,7 @@ const FooterInLayout = () => ( } /> } - sidenav={ - <DxcApplicationLayout.Sidenav - branding={{ appTitle: "Footer in application layout with header and sidenav" }} - navItems={items} - /> - } + sidenav={<DxcApplicationLayout.Sidenav navItems={items} />} > <DxcApplicationLayout.Main> <DxcParagraph> From 4c99805e141505ed94c7cdb47f45c663786cfd10 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 21 Nov 2025 09:23:55 +0100 Subject: [PATCH 35/41] Change compound component for props --- .../components/footer/code/FooterCodePage.tsx | 134 ++---- .../src/footer/Footer.accessibility.test.tsx | 25 +- packages/lib/src/footer/Footer.stories.tsx | 413 +++++++++--------- packages/lib/src/footer/Footer.test.tsx | 55 +-- packages/lib/src/footer/Footer.tsx | 14 +- packages/lib/src/footer/types.ts | 13 +- packages/lib/src/footer/utils.ts | 5 - 7 files changed, 269 insertions(+), 390 deletions(-) diff --git a/apps/website/screens/components/footer/code/FooterCodePage.tsx b/apps/website/screens/components/footer/code/FooterCodePage.tsx index adf7db0393..4b9d070bbc 100644 --- a/apps/website/screens/components/footer/code/FooterCodePage.tsx +++ b/apps/website/screens/components/footer/code/FooterCodePage.tsx @@ -1,4 +1,4 @@ -import { DxcFlex, DxcTable, DxcLink, DxcParagraph } from "@dxc-technology/halstack-react"; +import { DxcFlex, DxcTable, DxcLink } from "@dxc-technology/halstack-react"; import QuickNavContainer from "@/common/QuickNavContainer"; import DocFooter from "@/common/DocFooter"; import StatusBadge from "@/common/StatusBadge"; @@ -72,6 +72,19 @@ const sections = [ <td>The text that will be displayed as copyright disclaimer.</td> <td>-</td> </tr> + <tr> + <td> + <DxcFlex direction="column" gap="var(--spacing-gap-xs)" alignItems="baseline"> + <StatusBadge status="new" /> + leftContent + </DxcFlex> + </td> + <td> + <TableCode>ReactNode</TableCode> + </td> + <td>Content to be displayed on the left side of the footer under the logo.</td> + <td>-</td> + </tr> <tr> <td> <DxcFlex direction="column" gap="var(--spacing-gap-xs)" alignItems="baseline"> @@ -111,6 +124,19 @@ const sections = [ <TableCode>'default'</TableCode> </td> </tr> + <tr> + <td> + <DxcFlex direction="column" gap="var(--spacing-gap-xs)" alignItems="baseline"> + <StatusBadge status="new" /> + rightContent + </DxcFlex> + </td> + <td> + <TableCode>ReactNode</TableCode> + </td> + <td>Content to be displayed on the right side of the footer before the socialLinks if provided.</td> + <td>-</td> + </tr> <tr> <td>socialLinks</td> <td> @@ -156,112 +182,6 @@ const sections = [ </DxcTable> ), }, - { - title: "DxcFooter.LeftContent", - content: ( - <DxcParagraph> - This compound will be used to display the content on the Left Container under the Logo. - </DxcParagraph> - ), - subSections: [ - { - title: "Props", - content: ( - <DxcTable> - <thead> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - <th>Default</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <DxcFlex direction="column" gap="var(--spacing-gap-xs)" alignItems="baseline"> - <StatusBadge status="required" /> - children - </DxcFlex> - </td> - <td> - <TableCode>React.ReactNode</TableCode> - </td> - <td>Custom content displayed at the left container of the footer under the logo.</td> - <td>-</td> - </tr> - </tbody> - </DxcTable> - ), - }, - ], - }, - { - title: "DxcFooter.RigthContent", - content: ( - <DxcParagraph> - This compound will be used to display the content on the Right Container of the footer, if socialLinks are - provided they will always display at the end of the container. - </DxcParagraph> - ), - subSections: [ - { - title: "Props", - content: ( - <DxcTable> - <thead> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - <th>Default</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <DxcFlex direction="column" gap="var(--spacing-gap-xs)" alignItems="baseline"> - <StatusBadge status="required" /> - children - </DxcFlex> - </td> - <td> - <TableCode>React.ReactNode</TableCode> - </td> - <td> - Custom content displayed at the right container of the footer before the socialLinks if provided. - </td> - <td>-</td> - </tr> - </tbody> - </DxcTable> - ), - }, - ], - }, - { - title: "Examples", - subSections: [ - { - title: "Footer in application layout", - content: ( - <iframe - src="https://codesandbox.io/embed/rough-https-9oduyh?fontsize=14&hidenavigation=1&theme=dark" - style={{ - width: "100%", - minHeight: "500px", - border: "0", - borderRadius: "4px", - overflow: "hidden", - }} - title="Footer and header" - allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" - sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" - /> - ), - }, - ], - }, ]; const FooterCodePage = () => { diff --git a/packages/lib/src/footer/Footer.accessibility.test.tsx b/packages/lib/src/footer/Footer.accessibility.test.tsx index b99fed16fb..9af9804209 100644 --- a/packages/lib/src/footer/Footer.accessibility.test.tsx +++ b/packages/lib/src/footer/Footer.accessibility.test.tsx @@ -97,18 +97,25 @@ const bottom = [ describe("Footer component accessibility tests", () => { it("Should not have basic accessibility issues", async () => { const { container } = render( - <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom} mode="default"> - <DxcFooter.LeftContent> + <DxcFooter + copyright="Copyright" + socialLinks={social} + bottomLinks={bottom} + margin="small" + mode="default" + leftContent={ + <> + <div> + <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a> + </div> + </> + } + rightContent={ <div> <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a> </div> - </DxcFooter.LeftContent> - <DxcFooter.RightContent> - <div> - <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a> - </div> - </DxcFooter.RightContent> - </DxcFooter> + } + /> ); const results = await axe(container, disabledRules); expect(results.violations).toHaveLength(0); diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 04f063b492..648ccf55bd 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -193,76 +193,43 @@ const Footer = () => ( <DxcFooter logo={{ src: "https://picsum.photos/id/1000/104/34", alt: "Custom logo" }} /> </ExampleContainer> <ExampleContainer> - <Title title="With left content" theme="light" level={4} /> - <DxcFooter> - <DxcFooter.LeftContent> - <DxcParagraph> - Application description, version, notes, and contact details can go here for additional information - </DxcParagraph> - <DxcParagraph> - <strong>Contact Us:</strong> email@dxc.com - </DxcParagraph> - </DxcFooter.LeftContent> - </DxcFooter> - </ExampleContainer> - <ExampleContainer> - <Title title="With right content" theme="light" level={4} /> - <DxcFooter> - <DxcFooter.RightContent> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - </DxcFooter.RightContent> - </DxcFooter> - </ExampleContainer> - <ExampleContainer> - <Title title="With left and right content, copyright, bottom links and social links" theme="light" level={4} /> - <DxcFooter socialLinks={social} bottomLinks={bottom}> - <DxcFooter.LeftContent> - <DxcParagraph> - Application description, version, notes, and contact details can go here for additional information - </DxcParagraph> - <DxcParagraph> - <strong>Contact Us:</strong> email@dxc.com - </DxcParagraph> - </DxcFooter.LeftContent> - - <DxcFooter.RightContent> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - </DxcFooter.RightContent> - </DxcFooter> + <Title title="With children, copyright, bottom links and social links" theme="light" level={4} /> + <DxcFooter + socialLinks={social} + bottomLinks={bottom} + leftContent={ + <> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </> + } + rightContent={ + <> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </> + } + /> </ExampleContainer> <ExampleContainer> <Title title="With long content" theme="light" level={4} /> @@ -270,158 +237,172 @@ const Footer = () => ( socialLinks={social} bottomLinks={bottomLong} copyright="This is a long copyright text, this is a long copyright text, this is a long copyright text, this is a long copyright text, this is a long copyright text, this is a long copyright text, this is a long copyright text." - > - <DxcFooter.LeftContent> - <DxcParagraph> - Application description, version, notes, and contact details can go here for additional information. - Application description, version, notes, and contact details can go here for additional information - Application description, version, notes, and contact details can go here for additional information - Application description, version, notes, and contact details can go here for additional information - Application description, version, notes, and contact details can go here for additional information - Application description, version, notes, and contact details can go here for additional information - </DxcParagraph> - <DxcParagraph> - <strong>Contact Us:</strong> email@dxc.com - </DxcParagraph> - </DxcFooter.LeftContent> - - <DxcFooter.RightContent> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - </DxcFooter.RightContent> - </DxcFooter> + leftContent={ + <> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information. + Application description, version, notes, and contact details can go here for additional information + Application description, version, notes, and contact details can go here for additional information + Application description, version, notes, and contact details can go here for additional information + Application description, version, notes, and contact details can go here for additional information + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </> + } + rightContent={ + <> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </> + } + /> </ExampleContainer> <ExampleContainer> <Title title="With children, copyright, bottom links and social links from material" theme="light" level={4} /> - <DxcFooter copyright="Copyright" socialLinks={socialMaterialIcons} bottomLinks={bottom}> - <DxcFooter.LeftContent> - <DxcParagraph> - Application description, version, notes, and contact details can go here for additional information - </DxcParagraph> - <DxcParagraph> - <strong>Contact Us:</strong> email@dxc.com - </DxcParagraph> - </DxcFooter.LeftContent> - - <DxcFooter.RightContent> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - </DxcFooter.RightContent> - </DxcFooter> + <DxcFooter + copyright="Copyright" + socialLinks={socialMaterialIcons} + bottomLinks={bottom} + leftContent={ + <> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </> + } + rightContent={ + <> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </> + } + /> </ExampleContainer> <ExampleContainer pseudoState="pseudo-focus"> <Title title="Focused bottom and social links" theme="light" level={4} /> - <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom}> - <DxcFooter.LeftContent> - <DxcParagraph> - Application description, version, notes, and contact details can go here for additional information - </DxcParagraph> - <DxcParagraph> - <strong>Contact Us:</strong> email@dxc.com - </DxcParagraph> - </DxcFooter.LeftContent> - - <DxcFooter.RightContent> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - <DxcFlex direction="column"> - <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> - <DxcLink>Login / Sign-up</DxcLink> - <DxcLink>Subscribe</DxcLink> - <DxcLink>Unsubsicribe</DxcLink> - </DxcFlex> - </DxcFooter.RightContent> - </DxcFooter> + <DxcFooter + copyright="Copyright" + socialLinks={social} + bottomLinks={bottom} + leftContent={ + <> + <DxcParagraph> + Application description, version, notes, and contact details can go here for additional information + </DxcParagraph> + <DxcParagraph> + <strong>Contact Us:</strong> email@dxc.com + </DxcParagraph> + </> + } + rightContent={ + <> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + <DxcFlex direction="column"> + <DxcHeading text="Forms" level={5} margin={{ bottom: "small" }} /> + <DxcLink>Login / Sign-up</DxcLink> + <DxcLink>Subscribe</DxcLink> + <DxcLink>Unsubsicribe</DxcLink> + </DxcFlex> + </> + } + /> </ExampleContainer> <ExampleContainer> <Title title="Reduced" theme="light" level={4} /> diff --git a/packages/lib/src/footer/Footer.test.tsx b/packages/lib/src/footer/Footer.test.tsx index 5367fbdd5d..2cb34a346f 100644 --- a/packages/lib/src/footer/Footer.test.tsx +++ b/packages/lib/src/footer/Footer.test.tsx @@ -48,14 +48,8 @@ describe("Footer component tests", () => { configurable: true, value: 1024, }); - const { getByText } = render( - <DxcFooter> - <DxcFooter.LeftContent> - <p>footer-child-text</p> - </DxcFooter.LeftContent> - </DxcFooter> - ); - expect(getByText("footer-child-text")).toBeTruthy(); + const { getByText } = render(<DxcFooter leftContent={<p>footer-left-text</p>} />); + expect(getByText("footer-left-text")).toBeTruthy(); }); test("Footer renders RightContent correctly", () => { // We need to force the offsetWidth value @@ -63,14 +57,8 @@ describe("Footer component tests", () => { configurable: true, value: 1024, }); - const { getByText } = render( - <DxcFooter> - <DxcFooter.RightContent> - <p>footer-child-text</p> - </DxcFooter.RightContent> - </DxcFooter> - ); - expect(getByText("footer-child-text")).toBeTruthy(); + const { getByText } = render(<DxcFooter rightContent={<p>footer-right-text</p>} />); + expect(getByText("footer-right-text")).toBeTruthy(); }); test("Footer renders LeftContent in mobile", () => { // 425 is mobile width @@ -79,15 +67,9 @@ describe("Footer component tests", () => { value: 425, }); - const { queryByText } = render( - <DxcFooter> - <DxcFooter.LeftContent> - <p>footer-child-text</p> - </DxcFooter.LeftContent> - </DxcFooter> - ); + const { queryByText } = render(<DxcFooter leftContent={<p>footer-left-text</p>} />); - expect(queryByText("footer-child-text")).toBeTruthy(); + expect(queryByText("footer-left-text")).toBeTruthy(); }); test("Footer renders RightContent in mobile", () => { // 425 is mobile width @@ -96,15 +78,9 @@ describe("Footer component tests", () => { value: 425, }); - const { queryByText } = render( - <DxcFooter> - <DxcFooter.RightContent> - <p>footer-child-text</p> - </DxcFooter.RightContent> - </DxcFooter> - ); + const { queryByText } = render(<DxcFooter rightContent={<p>footer-right-text</p>} />); - expect(queryByText("footer-child-text")).toBeTruthy(); + expect(queryByText("footer-right-text")).toBeTruthy(); }); test("Footer is fully rendered", () => { Object.defineProperty(HTMLElement.prototype, "offsetWidth", { @@ -113,14 +89,13 @@ describe("Footer component tests", () => { }); const { getAllByRole, getByText } = render( - <DxcFooter socialLinks={social} bottomLinks={bottom} copyright="test-copyright"> - <DxcFooter.LeftContent> - <p>footer-left-text</p> - </DxcFooter.LeftContent> - <DxcFooter.RightContent> - <p>footer-right-text</p> - </DxcFooter.RightContent> - </DxcFooter> + <DxcFooter + socialLinks={social} + bottomLinks={bottom} + copyright="test-copyright" + leftContent={<p>footer-left-text</p>} + rightContent={<p>footer-right-text</p>} + /> ); const socialIcon = getAllByRole("link")[0]; expect(socialIcon?.getAttribute("href")).toBe("https://www.test.com/social"); diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index dd6524d42a..5216e7e24e 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -5,7 +5,7 @@ import { Tooltip } from "../tooltip/Tooltip"; import { dxcLogo, dxcSmallLogo } from "./Icons"; import FooterPropsType from "./types"; import { HalstackLanguageContext } from "../HalstackContext"; -import { findChildType, getContrastColor, getResponsiveStyles } from "./utils"; +import { getContrastColor, getResponsiveStyles } from "./utils"; import DxcLink from "../link/Link"; import useWidth from "../utils/useWidth"; import { css } from "@emotion/react"; @@ -220,9 +220,10 @@ const Copyright = styled.div<{ width: number }>` const DxcFooter = ({ bottomLinks, copyright, - children, + leftContent, logo, mode = "default", + rightContent, socialLinks, tabIndex = 0, }: FooterPropsType): JSX.Element => { @@ -236,9 +237,6 @@ const DxcFooter = ({ } }, [mode, logo]); - const leftContentChild = findChildType(children, LeftContent); - const rightContentChild = findChildType(children, RightContent); - const footerRef = useRef<HTMLDivElement>(null); const width = useWidth(footerRef); @@ -258,11 +256,11 @@ const DxcFooter = ({ <MainContainer width={width}> <LeftContainer width={width}> <LogoContainer mode={mode}>{footerLogo}</LogoContainer> - {leftContentChild} + {leftContent} </LeftContainer> - {(socialLinks || rightContentChild) && ( + {(socialLinks || rightContent) && ( <RightContainer width={width}> - {rightContentChild} + {rightContent} {socialLinks && ( <SocialLinks> {socialLinks?.map((link, index) => ( diff --git a/packages/lib/src/footer/types.ts b/packages/lib/src/footer/types.ts index ad27dcd74f..2d14596c15 100644 --- a/packages/lib/src/footer/types.ts +++ b/packages/lib/src/footer/types.ts @@ -44,15 +44,14 @@ type FooterPropsType = { * the bottom part of the footer. */ bottomLinks?: BottomLink[]; - /** - * Contains DxcFooter.LeftContent and DxcFooter.RightContent components to - * customize the left and right content of the footer respectively. - */ - children?: ReactNode; /** * The text that will be displayed as copyright disclaimer. */ copyright?: string; + /** + * Content to be displayed on the left side of the footer under the logo. + */ + leftContent?: ReactNode; /** * Logo to be displayed inside the footer */ @@ -63,6 +62,10 @@ type FooterPropsType = { * - "reduced": A reduced mode with minimal content and styling. */ mode?: "default" | "reduced"; + /** + * Content to be displayed on the right side of the footer before the socialLinks if provided. + */ + rightContent?: ReactNode; /** * An array of objects representing the links that will be rendered as * icons at the top-right side of the footer. diff --git a/packages/lib/src/footer/utils.ts b/packages/lib/src/footer/utils.ts index 6d9929373b..56c9f6d6e9 100644 --- a/packages/lib/src/footer/utils.ts +++ b/packages/lib/src/footer/utils.ts @@ -1,10 +1,5 @@ -import { Children, ElementType, isValidElement } from "react"; -import FooterPropsType from "./types"; import { responsiveSizes } from "../common/variables"; -export const findChildType = (children: FooterPropsType["children"], childType: ElementType) => - Children.toArray(children).find((child) => isValidElement(child) && child.type === childType); - const rgbToHex = (color: string): string => { const rgbMatch = color.match(/\d+/g); if (!rgbMatch || rgbMatch.length < 3) return "#000000"; From 1d21871b5b0b72a91f3b919128c7472d6422c2da Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 21 Nov 2025 10:18:16 +0100 Subject: [PATCH 36/41] Normalize media querys --- packages/lib/src/footer/Footer.tsx | 53 +++++++++--------------------- 1 file changed, 16 insertions(+), 37 deletions(-) diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 5216e7e24e..7e0232151e 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -23,16 +23,12 @@ const FooterContainer = styled.footer<{ const MainContainer = styled.div<{ width: number }>` display: grid; grid-template-columns: 1fr 2fr; - - ${(props) => - getResponsiveStyles.isLargeScreen(props.width) && - css` - min-height: 80px; - `} + min-height: 80px; ${(props) => getResponsiveStyles.isMediumScreen(props.width) && css` + min-height: auto; grid-template-columns: 1fr; grid-template-rows: auto auto; gap: var(--spacing-gap-ml); @@ -47,11 +43,12 @@ const LeftContainer = styled.div<{ width: number }>` gap: var(--spacing-gap-ml); color: var(--color-fg-neutral-dark); box-sizing: border-box; + padding: var(--spacing-padding-l) var(--spacing-padding-xl); ${(props) => - getResponsiveStyles.isLargeScreen(props.width) && + getResponsiveStyles.isMediumScreen(props.width) && css` - padding: var(--spacing-padding-l) var(--spacing-padding-xl); + padding: var(--spacing-padding-none); `} `; @@ -80,17 +77,13 @@ const RightContainer = styled.div<{ width: number }>` flex-wrap: wrap; gap: var(--spacing-gap-xl); box-sizing: border-box; - - ${(props) => - getResponsiveStyles.isLargeScreen(props.width) && - css` - padding: var(--spacing-padding-l) var(--spacing-padding-xl); - `} + padding: var(--spacing-padding-l) var(--spacing-padding-xl); ${(props) => getResponsiveStyles.isMediumScreen(props.width) && css` justify-content: flex-start; + padding: var(--spacing-padding-none); `} `; const SocialLinks = styled.div` @@ -146,35 +139,25 @@ const BottomContainer = styled.div<{ textColor: string; width: number }>` gap: var(--spacing-gap-ml); padding: var(--spacing-padding-m); `} - - ${(props) => - getResponsiveStyles.isSmallScreen(props.width) && - css` - padding: var(--spacing-padding-m); - `} `; const BottomLinks = styled.div<{ textColor: string; width: number }>` height: 100%; display: flex; align-items: center; - flex-wrap: wrap; - align-self: center; + flex-wrap: nowrap; + overflow: hidden; box-sizing: border-box; + padding-left: var(--spacing-padding-xxxs); ${(props) => - getResponsiveStyles.isLargeScreen(props.width) && - css` - flex-wrap: nowrap; - overflow: hidden; - padding-left: var(--spacing-padding-xxxs); - `} - - ${(props) => - getResponsiveStyles.isSmallScreen(props.width) && + getResponsiveStyles.isMediumScreen(props.width) && css` max-width: 100%; width: 100%; + flex-wrap: wrap; + overflow: visible; + padding-left: var(--spacing-padding-none); `} & > span { @@ -202,18 +185,14 @@ const Copyright = styled.div<{ width: number }>` width: 100%; box-sizing: border-box; overflow: hidden; - - ${(props) => - getResponsiveStyles.isLargeScreen(props.width) && - css` - grid-column-start: 3; - `} + grid-column-start: 3; ${(props) => getResponsiveStyles.isMediumScreen(props.width) && css` justify-content: flex-start; white-space: wrap; + grid-column-start: 1; `} `; From d40ce064817076a5a5be478972cbd58a1da9a4af Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 21 Nov 2025 11:40:13 +0100 Subject: [PATCH 37/41] Remove margin from test and add reduced mode story in layout --- .../src/footer/Footer.accessibility.test.tsx | 1 - packages/lib/src/footer/Footer.stories.tsx | 83 +++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/packages/lib/src/footer/Footer.accessibility.test.tsx b/packages/lib/src/footer/Footer.accessibility.test.tsx index 9af9804209..a6b04829c4 100644 --- a/packages/lib/src/footer/Footer.accessibility.test.tsx +++ b/packages/lib/src/footer/Footer.accessibility.test.tsx @@ -101,7 +101,6 @@ describe("Footer component accessibility tests", () => { copyright="Copyright" socialLinks={social} bottomLinks={bottom} - margin="small" mode="default" leftContent={ <> diff --git a/packages/lib/src/footer/Footer.stories.tsx b/packages/lib/src/footer/Footer.stories.tsx index 648ccf55bd..003a178fb6 100644 --- a/packages/lib/src/footer/Footer.stories.tsx +++ b/packages/lib/src/footer/Footer.stories.tsx @@ -544,6 +544,85 @@ const FooterInLayout = () => ( </DxcApplicationLayout> ); +const ReducedFooterInLayout = () => ( + <DxcApplicationLayout + header={ + <DxcHeader + logo={dxcBrandedLogo} + navItems={items} + sideContent={(isResponsive) => + isResponsive ? ( + <> + <DxcButton icon="settings" title="Settings" mode="tertiary" size={{ height: "medium" }} /> + </> + ) : ( + <> + <DxcButton icon="settings" title="Settings" mode="tertiary" size={{ height: "medium" }} /> + <DxcButton label="Side button" mode="secondary" size={{ height: "medium" }} /> + <DxcButton label="Another button" mode="primary" size={{ height: "medium" }} /> + </> + ) + } + responsiveBottomContent={ + <> + <DxcButton label="Bottom content button" mode="secondary" size={{ width: "fillParent" }} /> + <DxcButton label="Another button" mode="primary" size={{ width: "fillParent" }} /> + </> + } + /> + } + sidenav={<DxcApplicationLayout.Sidenav navItems={items} />} + footer={<DxcFooter mode="reduced" />} + > + <DxcApplicationLayout.Main> + <DxcParagraph> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultrices fermentum ante et pharetra. Integer + ullamcorper ante non laoreet suscipit. Integer pharetra viverra nunc, quis fermentum urna eleifend eget. + Maecenas dolor justo, ullamcorper ac posuere tincidunt, dictum id urna. Suspendisse est metus, euismod et felis + eget, condimentum elementum eros. Curabitur ut lorem ut odio volutpat lacinia. Interdum et malesuada fames ac + ante ipsum primis in faucibus. Sed leo quam, lobortis in ultricies ac, interdum in sem. Suspendisse magna enim, + rhoncus eget lectus vitae, rutrum interdum ligula. Nunc efficitur neque ac orci pretium lacinia. Proin sagittis + condimentum mi, eu dapibus quam faucibus eget. Aenean fermentum nisl ut mauris convallis, in imperdiet neque + porttitor. Aliquam erat volutpat. Fusce tincidunt arcu id arcu dignissim viverra. Sed imperdiet vitae odio eget + consequat. Vivamus eu dictum orci. + </DxcParagraph> + <DxcParagraph> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultrices fermentum ante et pharetra. Integer + ullamcorper ante non laoreet suscipit. Integer pharetra viverra nunc, quis fermentum urna eleifend eget. + Maecenas dolor justo, ullamcorper ac posuere tincidunt, dictum id urna. Suspendisse est metus, euismod et felis + eget, condimentum elementum eros. Curabitur ut lorem ut odio volutpat lacinia. Interdum et malesuada fames ac + ante ipsum primis in faucibus. Sed leo quam, lobortis in ultricies ac, interdum in sem. Suspendisse magna enim, + rhoncus eget lectus vitae, rutrum interdum ligula. Nunc efficitur neque ac orci pretium lacinia. Proin sagittis + condimentum mi, eu dapibus quam faucibus eget. Aenean fermentum nisl ut mauris convallis, in imperdiet neque + porttitor. Aliquam erat volutpat. Fusce tincidunt arcu id arcu dignissim viverra. Sed imperdiet vitae odio eget + consequat. Vivamus eu dictum orci. + </DxcParagraph> + <DxcParagraph> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultrices fermentum ante et pharetra. Integer + ullamcorper ante non laoreet suscipit. Integer pharetra viverra nunc, quis fermentum urna eleifend eget. + Maecenas dolor justo, ullamcorper ac posuere tincidunt, dictum id urna. Suspendisse est metus, euismod et felis + eget, condimentum elementum eros. Curabitur ut lorem ut odio volutpat lacinia. Interdum et malesuada fames ac + ante ipsum primis in faucibus. Sed leo quam, lobortis in ultricies ac, interdum in sem. Suspendisse magna enim, + rhoncus eget lectus vitae, rutrum interdum ligula. Nunc efficitur neque ac orci pretium lacinia. Proin sagittis + condimentum mi, eu dapibus quam faucibus eget. Aenean fermentum nisl ut mauris convallis, in imperdiet neque + porttitor. Aliquam erat volutpat. Fusce tincidunt arcu id arcu dignissim viverra. Sed imperdiet vitae odio eget + consequat. Vivamus eu dictum orci. + </DxcParagraph> + <DxcParagraph> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultrices fermentum ante et pharetra. Integer + ullamcorper ante non laoreet suscipit. Integer pharetra viverra nunc, quis fermentum urna eleifend eget. + Maecenas dolor justo, ullamcorper ac posuere tincidunt, dictum id urna. Suspendisse est metus, euismod et felis + eget, condimentum elementum eros. Curabitur ut lorem ut odio volutpat lacinia. Interdum et malesuada fames ac + ante ipsum primis in faucibus. Sed leo quam, lobortis in ultricies ac, interdum in sem. Suspendisse magna enim, + rhoncus eget lectus vitae, rutrum interdum ligula. Nunc efficitur neque ac orci pretium lacinia. Proin sagittis + condimentum mi, eu dapibus quam faucibus eget. Aenean fermentum nisl ut mauris convallis, in imperdiet neque + porttitor. Aliquam erat volutpat. Fusce tincidunt arcu id arcu dignissim viverra. Sed imperdiet vitae odio eget + consequat. Vivamus eu dictum orci. + </DxcParagraph> + </DxcApplicationLayout.Main> + </DxcApplicationLayout> +); + const Tooltip = () => { return ( <ExampleContainer> @@ -573,6 +652,10 @@ export const InLayout: Story = { render: FooterInLayout, }; +export const ReducedInLayout: Story = { + render: ReducedFooterInLayout, +}; + export const FooterTooltipFirst: Story = { render: Tooltip, play: async ({ canvasElement }) => { From ace7dac6b839fb1cfac329e914ea0ab086a7bafc Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 21 Nov 2025 12:02:27 +0100 Subject: [PATCH 38/41] Remove with navigation from overview page --- .../screens/components/footer/overview/FooterOverviewPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx index a0554eec2b..df971d41b7 100644 --- a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx +++ b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx @@ -52,8 +52,8 @@ const sections = [ content: ( <> <DxcParagraph> - To maintain consistency in layout flexibility and brand presentation, the footer offers three primary - variants: <strong>Default</strong>, <strong>With Navigation</strong>, and <strong>Small</strong>. + To maintain consistency in layout flexibility and brand presentation, the footer offers two primary variants:{" "} + <strong>Default</strong> and <strong>Small</strong>. </DxcParagraph> <DxcBulletedList> <DxcBulletedList.Item> From d22b63b2b3dc3f22e83326a6c53ec3c1b5397ef3 Mon Sep 17 00:00:00 2001 From: Pelayo Felgueroso <pfelguerosogalguera@gmail.com> Date: Fri, 21 Nov 2025 13:12:09 +0100 Subject: [PATCH 39/41] Change footer overview page --- .../footer/overview/FooterOverviewPage.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx index df971d41b7..f0cfcc90d2 100644 --- a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx +++ b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx @@ -82,14 +82,15 @@ const sections = [ <> <DxcBulletedList> <DxcBulletedList.Item> - <strong>The footer should be docked at the bottom of the page at all times.</strong> If the page content - exceeds the current view and the user needs to scroll to reach the bottom of the content, the footer should - always be found at the end of the page. + <strong>Dock the footer at the bottom of the page:</strong> The footer should appear after the content at + the bottom page at all times. If the page content exceeds the current view and the user needs to scroll to + reach the bottom of the content and see the footer. </DxcBulletedList.Item> <DxcBulletedList.Item> - By default, <strong>the footer spans the entire width of the page excluding the sidenav.</strong> For cases - when the left sidenav is not used, the footer container should always span the full width of the screen to - create a clean, structured boundary and support responsive behavior across breakpoints. + <strong>Ensure full-width alignment:</strong> By default, the footer spans the entire width of the page + excluding the Sidenav. For cases when the left Sidenav is not used, the footer container should always span + the full width of the screen to create a clean, structured boundary and support responsive behavior across + breakpoints. </DxcBulletedList.Item> <DxcBulletedList.Item> <strong>Display copyright information on the right:</strong> consistently place legal disclaimers or From ce01c9d29d522ba779a8be46c427a3c7b69cccd6 Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Mon, 24 Nov 2025 08:47:28 +0100 Subject: [PATCH 40/41] Add font tokens to BottomLinks and change tabIndex text --- .../screens/components/footer/code/FooterCodePage.tsx | 3 ++- packages/lib/src/footer/Footer.tsx | 6 +++++- packages/lib/src/footer/types.ts | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/website/screens/components/footer/code/FooterCodePage.tsx b/apps/website/screens/components/footer/code/FooterCodePage.tsx index 4b9d070bbc..4dee76a7b7 100644 --- a/apps/website/screens/components/footer/code/FooterCodePage.tsx +++ b/apps/website/screens/components/footer/code/FooterCodePage.tsx @@ -172,7 +172,8 @@ const sections = [ <TableCode>number</TableCode> </td> <td> - Value of the <Code>tabindex</Code> for all interactive elements, except those inside the custom area. + Value of the <Code>tabindex</Code> for all interactive elements, except those inside the leftContent and + rightContent. </td> <td> <TableCode>0</TableCode> diff --git a/packages/lib/src/footer/Footer.tsx b/packages/lib/src/footer/Footer.tsx index 7e0232151e..8029b93b22 100644 --- a/packages/lib/src/footer/Footer.tsx +++ b/packages/lib/src/footer/Footer.tsx @@ -24,6 +24,7 @@ const MainContainer = styled.div<{ width: number }>` display: grid; grid-template-columns: 1fr 2fr; min-height: 80px; + border-top: var(--border-width-s) var(--border-style-default) var(--border-color-neutral-lighter); ${(props) => getResponsiveStyles.isMediumScreen(props.width) && @@ -103,7 +104,7 @@ const SocialAnchor = styled.a` &:focus, &:focus-visible { - outline: var(--border-width-m) solid var(--border-color-secondary-medium); + outline: var(--border-width-m) var(--border-style-default) var(--border-color-secondary-medium); outline-offset: 0px; } `; @@ -149,6 +150,9 @@ const BottomLinks = styled.div<{ textColor: string; width: number }>` overflow: hidden; box-sizing: border-box; padding-left: var(--spacing-padding-xxxs); + font-family: var(--typography-font-family); + font-size: var(--typography-body-s); + font-weight: var(--typography-label-regular); ${(props) => getResponsiveStyles.isMediumScreen(props.width) && diff --git a/packages/lib/src/footer/types.ts b/packages/lib/src/footer/types.ts index 2d14596c15..2706fa8047 100644 --- a/packages/lib/src/footer/types.ts +++ b/packages/lib/src/footer/types.ts @@ -73,7 +73,7 @@ type FooterPropsType = { socialLinks?: SocialLink[]; /** * Value of the tabindex for all interactive elements, except those - * inside the custom area. + * inside the leftContent and rightContent. */ tabIndex?: number; }; From d2ad3d0ca14769daacab50f2e671ac8a86b881ab Mon Sep 17 00:00:00 2001 From: PelayoFelgueroso <pfelguerosogalguera@gmail.com> Date: Mon, 24 Nov 2025 13:58:40 +0100 Subject: [PATCH 41/41] Enhance footer overview with additional content and update variant terminology --- .../footer/overview/FooterOverviewPage.tsx | 20 ++++++++++++++++-- .../footer/overview/images/footer_anatomy.png | Bin 18280 -> 44838 bytes .../overview/images/footer_variants.png | Bin 43593 -> 37306 bytes 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx index f0cfcc90d2..24edbe6836 100644 --- a/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx +++ b/apps/website/screens/components/footer/overview/FooterOverviewPage.tsx @@ -31,6 +31,10 @@ const sections = [ <strong>Logo:</strong> Represents the brand identity visually. Positioned on the left side, it helps reinforce company recognition across all pages. </DxcBulletedList.Item> + <DxcBulletedList.Item> + <strong>Border:</strong> Marks the upper boundary of the header to visually separate it from the main + content. + </DxcBulletedList.Item> <DxcBulletedList.Item> <strong>Social icons:</strong> A set of clickable icons linking to the company's social media platforms (e.g., LinkedIn, Facebook). Placed on the right side for easy visibility and access. @@ -43,6 +47,12 @@ const sections = [ <strong>Company links:</strong> A horizontal list of navigational hyperlinks such as Privacy Policy, Terms & Conditions, etc. Offers users access to important legal or informational resources. </DxcBulletedList.Item> + <DxcBulletedList.Item> + <strong>Left slot:</strong> Commonly used for short informational paragraphs or contact details. + </DxcBulletedList.Item> + <DxcBulletedList.Item> + <strong>Right slot:</strong> Commonly used for additional links, buttons, forms, or call to action. + </DxcBulletedList.Item> </DxcBulletedList> </> ), @@ -53,15 +63,21 @@ const sections = [ <> <DxcParagraph> To maintain consistency in layout flexibility and brand presentation, the footer offers two primary variants:{" "} - <strong>Default</strong> and <strong>Small</strong>. + <strong>Default</strong> and <strong>Reduced</strong>. </DxcParagraph> <DxcBulletedList> <DxcBulletedList.Item> <strong>Default:</strong> provides a balanced layout with branding and essential legal links. It offers a clean, uncluttered appearance suitable for most standard applications. + <DxcBulletedList> + <DxcBulletedList.Item> + Users can add content to the Default view using custom code such as content sections, text, links, and + other components for increased customization based on their specific needs. + </DxcBulletedList.Item> + </DxcBulletedList> </DxcBulletedList.Item> <DxcBulletedList.Item> - <strong>Small:</strong> offers a compact version of the footer, typically limited to branding and minimal + <strong>Reduced:</strong> offers a compact version of the footer, typically limited to branding and minimal legal text. It's best suited for lightweight experiences, login pages, or environments with constrained vertical space. </DxcBulletedList.Item> diff --git a/apps/website/screens/components/footer/overview/images/footer_anatomy.png b/apps/website/screens/components/footer/overview/images/footer_anatomy.png index d08e42c69dbf303abced65c4ac194716c59dd014..ac635ef30dd00843df5fcc98fe30047981286195 100644 GIT binary patch literal 44838 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 literal 18280 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 j{kZU41AovxPg&<SKgWVBRu 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 UobGJ^;X!G7$@0&N3vLhp3(86Y{r~^~ diff --git a/apps/website/screens/components/footer/overview/images/footer_variants.png b/apps/website/screens/components/footer/overview/images/footer_variants.png index af8ef919550e1e5402291757a97e7b0c2abba305..59e8294f72967bedc16ba2179b97fd7a6c177281 100644 GIT binary patch literal 37306 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%0AqdXsKn5`$uvx??A#ThFv#Ez|r4lB9j z%AN*4#ekVeS~(WlpI!CG3^(fVuKjzlZ&i29ctto}Q8;(8dE~s@JHUCz<dDm!dIU=p zs=tgew*2%xJxt2QlHK`6;h&QQmLHvvhhx8CQ9p?C-e0pW3#`Q76bJIwlpsZ#9~Avv zL6P1VVc8&!)E{3Dp;_~tEJJ4xxlS&&zUrXQ?f(4-<`rIW(2>T<z-H%I4mxDp8=eLL zTrb2tLtKfWqxb$EW-FV@m}Mq8%Fce1LMajdQx~GfGj2Nucyn_3e)M)ar^?D0GwI)p zxT}+x9sMh{R%Zxz0+U?kH7L_YRWuJ`^dUfuD$6#v_UvZSi2BpItVL^#<dZcu85PbN zq73NbaTeo2JPU#1PrW;nZ#O1VgZIa>w-KXrL|`cczjH&betS2toWJqt7eri|c9sA> z?NS_7JA>%~9BZC)T-|Eua+}|ms?IiVVXQRFBCs)w<Wl-@9ovZ|IldU(TX}x?S)Ut; z+6=E$#EwQGLywf_T_649oz<W}5@d&HTzp?BsVI`U(S$V?zrhW8u07%tEnrQLc4iEJ zHY03r)WdH0P&iAQF!VS7YlrKH-&id4DhR(c*-h^<AqujFq>g|uan~YmI3mf?l5r>V zLV!oIwaz~YZnL{SWW~%00nta5K4qQS7>I@kNX~ir#0!fi+Wk9!`H(G<A)jzfJ|{j$ zWUicQs#WK;XdMyk#t3$(eazKf*}SYMGnb$<jwMZ0@hEHKsya<@l?tRM(Y<@6hNPaa zlN5t8AaJ(ugMyiUP4-twh5a{mqeKNvuTGMXwY5PaHTnW|Dg|2<)e@}1PN$4cmO~!k zAlb>crJ=+;NW5Uf%AOB~gsmFFD%x=kYcS>up&S*yclc4}e}abKy&eJ)>a7g+DFg7h zc|S~jMtg0cW-gBJn#i)jeZozs0%;%${bc-M(N;#++Dkz^vVshM@kSCVfy2Ph_*;)= z?jdhZ3@q4sUSBxwmt<9L*ECyeB&k?sko?-jowlALI`|39%)&O2HlRtCpXKygjdRI` zxWnd4x|g$S-43@*%AUw{pY`iyNp`(R3(?&uisR>GeJZqm^)rK`O^R#o68g)0%0e6V z=GBnUOg!*Po%nF1KD}TkQscv9$aDciSt4S(9Gj|E@x|hv>lGFkUb?2_yUEnw7;TtJ z$&Q74WSU#^)fNB=lC2=V@dE!4hnD*j^Il!ad1H^3OZ1Jc1S*j#(xiasp}3)a{Nh$f zg~B1%rBA0=V$+-X&x_xWIm(Ee#f3GGClvcE>*NJkS4EuFY9{C$3wF|EmS-TXV{#^& z;oYjcuF@i9MrY%dZ<Y&C3reYu-^7QiItTR2ywyDn%B=JrSHiT=*;QqRkDy3*o1p0u zH~#SLo=Em0fn7+a0M&;ONm-x;ajxsT@pk38wF;jHQ}bG+-R1ih1hlu_Ocf|@?6CQ6 zdbSYzm?A=KMJi0P8q3>y&2=<>$@b7pw+QoL*N$x7`}N}L(nnCJVczu{_&pOB5rLLR zdLZzbI={l}TB%8qf8-j(nP}h^8gcT&8Jz=zf&EAJn%@UZagWbm#2j~l{M7<g_s=-d zXO%@f4-HSub~l(TXcXMmt>Gj^bN$7Qi2j8yTVNYukI=iXrfclb6LonO1tn=u1z=P< zzdoyCBkXV%Y+dW@>J@Lmj~7vG(fcpykF1;adl9xJy&{p#8Fdc%8X||tyiWv#t>S}= z6GJOI!wt!8^Ums#VGVGk@!eO-{k3i=nG;DlmY>s)jtRX#c|tOrYkbroX0%+CkAX}p zFwDRm<O$k7(!^*Mtrl+`3|)+JT8Mn?q~=X$C+wS%h-u!|C(6=mR@4Nz`YvZFaX+*M zBy692F-Wy!XG_skG$5m`ewni@=A5DFMXg*^S{vj2?x3uYgj(lp;F8PvGc+MyKRo)0 zwsIQ)sx&u6iFaGHP>$V_Y5E`}-2d*StxWgX#Q~xYi3o2E#Z$TQso%h~SqiFD+z$th z@9nQ+AsT!hf_}&|_454d&IVjHD7UjC_maQ^wap}x8;xY1jjGRk=|^ovE)~F#VP87N z>3f4~YK6}b9=-Y2(p}B|*KDW7um*H;TYQY~$&Uw7b$SgJQF|QIH;uaMFgF}yx-lXg z(!4*d!z)=le_do*OrMiS8Hqup-}Z+ue5k?>ArsjNRlznMr&LO6_%j3#xsF?kYSb-< zTv)OCD&^P&mzOgdK<A_eVlr3+11TuM{gRNd^V-+<ow{MPJGCWhm(<CBlWx$CU<F>7 zYUi1W9n;iuXjW)*16|{KY&$39zWj;T#RrF7?6_@p_THfxRi*-Ia7L%&65sQ0JPo}^ z=VNC|R^uAZ>`%!>);TSEa$}>ZYkB^ELesrWvtv_RMY%~|za5S#dpqFJ?4P&&_xgsS zuf`CEvDN*>pIf8P0Di=qbb;H`n}w3CWqf*kWYxp)8iv(R)StC!qZ_Kq!>eBoCV#4C z_>2dSYy7e8j@ER4_Ttu^J-Ge!!bSgQ22Fb*c8}84YOr0a1@3KYDZXas(Y^9(s=3|h z`RZIflZf|G>#KWxf!uLvr>b4k^KDYfK>)TdhtF7ZT?V9IbbLzuewNkXL9Df-Z=BS? z+bU@KQQzI`pXL=;g`Z`8n&@?zvlZ3n$WMGcI{hTOd}Kp^J_PJ<U3uL?HaYxQzOVN$ zyl>xAN!@ZW!5xI&m}T;mONTRUxcubEeYy4#wFyx@-x;okwyyV<jwgO~c&SY0@f-}Y zq%UVU?3=YvZg^2VLA9{G;3-W5t}dh>3(W+a51q`{$pP|Kl)O<+sk$deF2UfN%Q@;7 zbB*FW1dvbclw*e<PPo&CX?eQi<CLM;4y{HvRtSO{G^NNMPPA@Y&V|ujLvZNkhg0;I zNSd+(JbEDUdO%$%!$}dS;eLP=@(eC>W}jum3eB$?@LXH1fX`3b$S3}Eh3JlJ@X7fQ zQ-n4g>^z?7P4r+P3z!HFs>h)oBk3)_JAK5E#F3>BSG_SFd+$P`pp{5alN^;q@Le}< zGCdQX!HuL>qTddkGry@R6VGhi+evrQ^pg5EA40QmIQ5-X7rWp!Y_3qy|9p>6wzd3U z4X{tQ^iMwqSb3LkVbDljc&H6|bEhYxZUEnZfAD+hx2Uls{K&0O+%gi1?w{^_$=#u% zo_tvF&7l>u^@6<HjL)nZpQk&+7OS)dErr+3rDvS6aIK46BRkWb*T1(^7afkL3@=iS z6U=`N>7~vjLPtkC&Fr&Urb2OM$r=+?+IE(1E-sEdHx<-jT0oOOAGiM?vAx{L$J9Xr zdHU=H`XeK0Z{R7&KH6gasqxrqZeMZcpOj_6)f>wA1Pg=B2fz!3rpm7B51$H`NBp=A znEV<3?)vnQJpMm1mq}eSnycS)ST+|L(!(V%v|%pJ+Uvb@q{kp)e>u<l+KD3-+A3P2 z;bA?F<Iw6!YV@PMf0t3PmY-S&eMXdeJ?vk<SHa5Kc|qaYt&_|IDzWdY`P-%awHwUr zMLz;d<iMBNKS{y|C_o#`D>k_yPN^hkT6k3RTc5X1!|<8rVqSnXuIzfr-};zCGw%UY zqpluOSaM&`gQH_%l?_Gj#&hP<zGzEtH!Orw8M-#8y<+Phq%mcC9l)<hi}I<#{^*Dr zxu@lIkLRO%QM5IRQ48b8Uie8UeE~X2cNw5hqr@KGyTz@IR3OjgWfLE9Zu)N2Acbj~ zG1E1y;kb{{#QkkEz>OZYWku*|vt=SVef|@RFu>mj@BncOFSm3W>_o37sm$3P9^-9U zQ^_&IG@SO=Wkp_zJ60c_((u8-Kuz5wq;)tM{HI7Iw9P6SG<M@L6i*D>U+5oYNiilK zVZ2G<C;HF#yTYT)%c-d!-}FDsi-o5A)b=o#+UUZSYK*($Nju}L;JyBW2x39{v7Lil z+tgjn!ei&&UdS-p+~BsusT(;S2dh`egbo{Iz8o_=OtSbI@nkrbT@l-oUOpsX)N!Hp z+Qr-=ZUlJGE;}kG<0f@&MgA%9FI(K6^TLjd_(RDUeSz<9;2P$SYRg1-n2H}_3G303 zwZ4XjA8)08oNFk)Ys_T3s(;9Zie9hqF(|8!jvQd+;9IO|!zU==!!tzTNA$9OUal*6 zV3&LmGqbrJ19xazwl*gEMe5BoNVP?@-jV^labX-XTkbDX8xBbtlm_*t`Zo59Ld-<# zYgQbyOWr6FvhaQEUcrBIjt^CZu8+`-{IZY#a^5W$)*P_(0GC@Ii+=B(kc}N*lpn1W zVk?&nR9L86BKl*Mkzp%eGT(0jH4C5hM)zu-ETcMING&<3d{8=6R-E<c+bRIn;_K3y ztH7QjP++P=20@cU<1U#_l>ngCPY7U`(3j#U^B!1R8l<zF(2((;JFjiq5wU<0F07Xq zm1Al$CfLJ>;Ka3P>Nxk-Cle6(1P1c-u9X6RO}|4GqtyP~HIK0+?v|$i?9#XdM4aHe zpX({rYaoKRz_f1(9ZC>QfkPAT&2n={2meBg=B^;!0-M3^$WbLIcZlCdB&5*wCj*B& z*VF71X~EIi(XUJSC*kbm?HutAUVy8X!{PHfm;bV_-KSPrp@3U=q0X7a`t$dXUfa2I zQRGw!Jb1vnzgr`eDBHd#_{Vvt=d!nL?o8y6%)SQ`B|v3F&wA+1MkRGRHF_l?Lx`_V z<!_5B_~D7gh*pMA4{3Q2fQU-Ip5V=FEHX$u6+czgrJ%_YO<Z%@xhWl#rR?-0tS`Fw zidNLh?A~S-vMRgxORjiJ70Tj5xLdsEh0oRtA(uy_ikBWD==za4&1T%X$X+!x0Y>l1 zqd>URyYY4ilo$$|*mKYKN7OV8uMb$Do49tty5~wv{V)xsE0v+djcPxt^xAsPnP-|I zzC52A>J~5=6YvjG-RK-{(ek2g6<70N9w2$USIez}AV7g%`59O0zn7U#DML7;k7wRJ z_EQK{r|DhcZMJz;4?i~X&*u7PYys~FH<NI!1n+gk=RE=8f~e-a%4#K_OvP*mvfxk; z1p0#<$Iowuw@5F{|H!IYiP)+4r*&1majO=$)y`7gN#W{GtMTX1FurcjTl*>OG{JK% zBrwd8h{St-q=l`+uq2}O)Fwj9KjaXgB9fbVB=@x{^890y`bk43yc@C0P%&3&n}nY{ zC`+MC#~>-irGy&`hrYa5a=P2Q;dtq@^1EwWi$AO1T#_Ch;Sozed6W(mm1(%j$Z&l0 z3w<@)NW0wn2NCMXth>rwmLFTh{}XNUBe0iluAOC_;H7?p8}z=Yzv4?1V#j+KB21h= z-Ci0y%*W*wo(Q?f%o{z7SCCj?Y)PsQ2i|Y)8x{b0#G489Pn^rU%kdk6K00xFrIj&! z%5G3bdR#9%66+Xq;mvB~{qI-vY$&Lw^UpmlAgS6KPnEkgM$f2$qj7ZW3-R~?-zEz( z=|=c!)VT*m=3Hw8U@Bq^HGU8kSe>am>CtO<2fg)NZvh13^4}M)sCj(o%J16;%I$w> zpt3qh&hBr3PW2DZmqhnp31#ERb{X{#ZzF`1ebqkp)u(m+!KRtsLigWNIq|_Pj`@z~ z8YN>iupiQLid#4uJ}B*p`RjT(Rc9(#x})^DpO$O;>QDC#AqLA1ln(i4e9>Z|m+fva z>tNA67G7v%_2oY*K&3o_qkq2da}*%+R$1$eRxeVD-Sgi$pRT#tss3YqSuU%{D7Z{f z<QTV>ZN{>9n-4(<U9xtUn*S=BJA~38d|=t$nSpaddf<A7Q+;=T0@cT!W-*;Wa6EOx z<k`~qlY{~moRTX>g!;086$2Ch;F}L}v%SiH*(A(7B&-6T#jRUogK64=X5El^v4k*M zZoWa7a@Dq_i56l7PHseP2Nq=NUp~A|s^PrwJLGEK7@N233<_EFf4WAjR6jecokemo zx`S&LwPU=(itOrSZjf5G>A9ZQ<>UwMju&I;yY#HmgY-Z-wO`OoyK9BI+ObpLmF4Z8 z`MiyC9q(BrTVbxfulh)@JoRikGZQ}7pu#K?9Pg%Ehz9D))(oKB=L0Wf3&5HVSUa@g z6x#FT*Xa{+DTCqbRiJfFH?G+1SvkL8hR*@={7P8<Qt?=3*&oZL<)$I=M^)?`T5^0V z^;fbV5u&pq);h2)o;IFQv{_jXLC5qYRW<ud($>+vtsgR|kW-6MP;L>q)bPRWp=d8D z+&<iG>AOpf1yg~ryJ`W0Y_Ox&t8PDH#P>`z_a3O%Dgr&d^ZGd=Z*sGIZz)^v``G1g zzP(EG*!>;;Vqo0|Xo~*dHjl|cME+)-h6E^xCM_2y+M01g;0oqJv03+OvFfaUbBgAf z-f8YRRcV=OqfKsBrsEukZx9%*1?=*ypS2HC-RsSlmkUkZq{P!>TMLLmwSWY3ZI#|t zm&G4}5}w&K>vkXyw|v^#_zl=lBE48{x=<3rw5XFws;9l=7U7$|y-LL#F;+ll+`4X% zehfCuV-VW8qT_wzoIprdvaxvqlbdu|*2XI=6jw_LJw#q%%BxpXn633Ilc~qK1*XWa zSyKneAV3^B?BColVe7y(l)lBB;NdDWrd85U{n$<Ti$(jq*mh0#{utj6_c3vM<00O{ zU%8Y{|1sK{6Fuzy7!??1!}TMPq{1@~1fEyBbZF8b3cd~f4s8m<pFT<)i2v@q#~Ofb z-V{rBtrl2Td2kI%j+<_vo;@-QON;*1)k2@I#C{uS?tMSOi(uNk4IE|$WC{&38%}A9 z^0tbX072?svG5RBHQ%oTPxoBn0H#AKR%hWH$T!-ajY&vSBdpuC)x+sO2N8M)9|W}O zKRk5dQ2=4eU+U}|kLyE+vm?Gc8r|s$X(xVPD^DL&{O~Dt#0@9hJS%~d4?D0XT$tzq zw{l?FK2mwSLGC)xbBbu?5djn^v7QLeRQm%Wp+Hf)cgR)xH=nxor!e5heE|#MPLDU_ z^A3?=nHyR{6Y;5Dx}CQE;r+MenMR{JRj97<+V`(p|CJ6fvH%EPf~S7x25QV)KTfw{ z0?vSZKRj(PG|`V+jgHWp4Y>@EL}vxK{5V)mNA-l?!#dA>&-C(k6NyR@mFUzzfOe~4 zxKAHLovJ;nvo;#qg2prk_B!3ZIn(|%rrxK2gKpR20p}y0jy-Q5>f4vN8KaT&to>)m zW%+)p->?J>LUnw(N^RLQ+i5M3(%+>Zji&V7OAWZ8yQ08vMn;7@*EI(GkOF~E+fQrO zI|tqQ8N%gl<>l91ed#kM;$oyX%y>sk4bJ9mm4eMQjV^0}fWHS^0XgLQ?0!9ox1w$e zIy@iZZB5h8S<=~R6!1*A(|e1!*H-t4%*DbCG8)GM1+x9Qc=Atg#s3a^!1T(ES)px@ ze18vC`Gsa#-pmWJDEH7+Oa8B1%-C1Y4U*|=v5|QVvVtOR#Cxw~OX;zZqyGZHvcE-C zNOEBjE0e3)2lyBl4|cp6+~3e5a2xjtu=jnet3Tq0z++r$6Bqb-9kIBr$P+<>Mf<S^ zol3e|m``^O3|gJ%>R$WrO>+)DfB<jEhBc9okD@Nme>f=St`u7%%YO9iD?gsg?^Tl9 zXCb9nofBmCG?hVrpsd|w%uQTUk7S$<w?<xi8T@L-6SjxhBMQW3vwFZzC*FXS{!Nj7 ze}HN7KV*EBqThXhlq3JckojNQ{{M0J6<i!EaqAH{5yjuzJr1viF-d2c7(v(H9she7 z0|5AczlE|nbZlGz89jBS*sg_rc9d(tLUy=pmPb4pe{j(hVllUx;JpGnKr71rT}t~* z(bkGfe&O6m5)`#KHF`j7IpSm9-qDEk+nw`P47F}2MzI$PFkC<B*>&pR9oNh1FYv|( zMmp|xE0D5xrz09u*{2HZfJ*H?-&wWb<UY|)qfk(4hxH8-bhl$Zh%?3fwSk;}xWpT` zH&Bdk*p$twTgzLk7VKPozJzFM+)m%*T)0XWmu3?J5Z5-~mKqYzay`_f`xhU+>jfv$ zQG?}#y0wKRxPDt`2Qp}2HAtqys<LuB;RW~=^iKevtLJ>X!HJmt%Qev5NrN#1@-t1{ z?1OUh+`=nO18vFr3O#O>Q=GTL!p3O%fG0pDa>Z9vjhN_^T#^_izX3z~xC|qV4o5Tp zQlpP)`5MC42#k(Hkw%d%RShd6-lwGK_-uC2NGow`*IL}&6Q<~pcQyItCi8URI)N5% zyQdH|ZK2(gMroO(EK3=vuk80gdl|YkJ;II)F|^R}PK7D~r`1D>Z)vQLes5;MHiiwA zfao_vU_%Y0C%{ju5;z+!`KC~kHFoMsH{&C<UAs-6d*R554l>yLFhC?>)C>fY*U@t& zXXPxIf3{o?4s!W+<|AkE3G0AR^C*eADDHH9<b5AGvGXyrDQ(U&Zj;iC(w977ti%xZ zx9)pddZHzFM}F*VR_k*;v=V~68yn~z3Y;+f<h^(QbvEy%l9~jeQur}F;LxM)kVw$o zf?<E{kP2V_H6PgZB=##Ga(%UkGBdKh;DBTF<r3R$$J?i*gda-p8DO3h$m`V?HBD+r zyhO4eXgeq{Re_Z#MHwwnN{-UwU~V)MfoBEjd%A|$$vaFt0ZCxu%<d%0Mvpwv>3i~5 z^V)j)3j39r;3To8s?o&-9nCv)Sr~A*LfwQxdjI80-Vc!vY?y=hNPbmYi9**U3Auyv zY8+YNRLF==%p8|0J$LzNuLkqU#RVcz^Cq&U^1y?XpPf{iIEHoJLR;y{w}D^bbweYs z`M;V~qFNQ}hn%2YZF4$QTE2FZ3pnn~jMP|cO$Zgc*Js;ADH5)Eh!)qVPgJL-pZ&;d zBxg4;yKM~L`bR(rbL;O6SSnA7<`zqeJ>f3B@oT@aNM8%gPNo~D8mECvr}C9e)suKO z+))9jONXmO+BPsNx9Yk%-29YMB!%=BqwJ2~B$Fn#>oe%jAPGq;zUa%8HLWam(+^f) zhCaJBvg7~}S?GS@CJpeQnHYagv05pFpHaNDl%H&@=>BPIvYuFN02#O-FZSr3dRMVX z^@3{eM73dOhG{?5qt7jL%71Co;`8;3CNWpKyzr_nAw>W725b|#3s!k@qh;g-TKt`R z8YL;$ML3T!X#|zzo`pb@`*3esP8HmJ(bog(A?sHvG=14;r2&+h>hx;qSzIH&Io1<D zEvV^RC(<i8SMJaY*^hNx2xOWxCRd>i2Vlz-6(-QbPj<XF`a+ssUt`kCL5Nf>^G_k= z#YxA$#wJ=7wXhMX2FQgFCy|1|SjbpZ!XgpUM`JkiqlrMl?g6k~)Oz+wP8LCBJq$8h zql+81*e{(<Zp_xy`wQJ@R1I}+?NC0Ea{p{4@FVLp`)#?y6u{^<pwDL~$=u=5%Co|M zOc5T8>`DDxXZ4|S@0w*D_hkF?ivH>~FjGdMTDx|a+$E*-g)IF&&r^~v_p`b1g@KY8 z@ZSBp1TQLMZy;UmNj-9Niax&3T>oPI%BkyN{Xgf|YEw;e6}*qTbLxnc{-7uIz{sZ5 zA<<8)2qOQ$iFM*4i^Az9iu3)w;M~V-y7GqvHQFEHf!^NXl={`oXE=sAY2}C~<X}67 zW=Cuzo-aYKUGCDa7XB(uQQjf7zsoC5Ps=0rLJ~Uz?K~~4MPFv(pd6#-M?8R5Wz#Qk z@@BcFDf^te#88c@y08{!KqF|vBK??uP*axonr^7a?a<eajIdXwvDONS>0e42IzbXy zG#fi+PEA-ca9Ap&#nkJtnJ*d{(PFzgq?w<owR2u#q51C|9sq=+w0F3?d0toPC5RYV zEEtT$Zgw*Cwk4Iw08%A2s-Jn{#B{gjbQD3V>3j61zi)6$lEc=*&Qp-MC!leK?6jbp z@imGTU%R~KfC4>&SeQ+9hD_HH#-&PpFet3>xGc}LY8##POClHR<spnDl@i>!eu{A6 zW%1{6ml(HHyj!nh%I7&GQ?zz&S@h&s9IW>p{7iX&(Cxg~hgml{W+|?k8^Qf^!u@Ve zy@aQnlVv}w;<ov_)K2_-mK@_Hl^8T>x|~(zXM&pJlE`Qq46ELS1KZjR9Y7So_MbMH zEwmfZu^j(|?mkV#CydOu;=0WaaIL<7G0~us)LZp);uF;79>PdF3qy0z5jJt1^t)A? zbez^v*|eMb)0tV!s9R*}k&Ja*_ay5w;uci5(yX;F(y!zMft}P_pFY!@uPVczGSWM& zL+P*TU!Wo(%B0#wO8;lu^oaGwgx-sPFP0J)eP+5N!vlS$M{ZiXZl<W*+&}5y$@1dX z-4xwh!BofZHQA<w`WoAyrgZPw4#%bh98_L(ztPysElCrMQ|hrg)*$!=i&9cyMTM{~ zY|$rSA~pP9lToaZxBPh$iTIyD`jxiu>M83}=eZDxj(>JlwKg9<zF|8c*TTC`GxWqG z<+VmzIn5f7;r!-aJG&dKVj|bF{27`QL^KodR{wIbPILu)C6UKUtx<c!)jCMuh}eLJ zG~rQ2IX+Xkz=kv>W|58jqz%zZ8xb_Q6)}XU{P3~fG(M0PsE^#zS0tY{0{?l7g{L>z z1=CK2X2z{q{e+$c^j?k+z1toYubBXWaNwl-*>|ZKzR}akZ;!046%oZG)CZX~jF<(; zmTpi>H${~|%C-3UG??`wwi4{3Fz5>H1+(fyLev~TV#grFY`SL+<7q{lBZUJqfGyws z2atWwu(ZYcH+#>lgqq0eU&vH2-qRHqo4J}Bwb-tI2B3b^-RwhDN*$(b{?)&1U|6_Z zg*QxkzBy0zXY+me+=&%SKmHa<!|7+y%XKYZs7EqBUwzm5oIchy&TrUNfdAhA+8hK) zuR3R`Y(4}4hDs;>?5;2L#kOBvsM?BxOgnei;%pW2ii8#y?&L#14Jp-)+Ua=rHQWV< z^mO=Rk2uty7gJ=7x~p!nJmYS!Jp?$Ta=q7zx0p0)a)1`e$xh*0&}~UZ<BhOI0z&tm zLL|^7Ora&?UfW=YAAZa?su|w3?r11S3PRP9!CJjc8BV|V#M8ow#*5g<2G)2#ey;zT z-r>-_v2)5FXcg;RdNEqL?HM0vF{19iljhoJsP<Cmed+=5K<FmO&qf5I=F)XM$%|nJ zd`$8!WtMtgKT+gWGI_h4htZW&@8?Z}PNcrmk7Ktj_t&~(SV61j4)=qGwNE!}gOe(* zpR2wtl4FU}slg}6xT=^cYVa?gG<*20ymC^b=n1}+smfIBb!DrCH&4a;(x~u?%0}9j zy?ZF*&-Z(EKV}M%X3lqzA%woTHixdw4>>$|{6L56n=7aMw8~HAQW$TXtCXhrh$?Y0 zc`cPo!p7(Zo5O@q5a|h{)Xv#z6e*bR&sVY5HgmV=WC~R#+aTmtbbw@X0Qk%^P;)Z` zPAxxa+QOXw1-alIU!XGo>z_}=B7ge6STuB3|M@A$zheKv`!7H($DqoT+RE&nyi*DW z%aj3cok<lHKks^=Xd`idvX{ZFA;)&VJ59so)~O=vA<cFCQb{cf+AA+r_$dt9f8GW; zQ?2>3lu#V*hJr=Ahj7_7_AqvBT#VA+L45^L=2~*AaNI|_w+ncWmd^Zxi@ByaDCEjt zx)d}4f-^o^7>~k*%RIwS9>WrRdi)})KoKK>C@!@D*NxJR1_^vE@_rUn6qIuo2pW)q zt4KpZbG7gyFVNt2&k;wvanQXh2yhNL$_d`QH!%C!0{!%U{rNR9QO9icEAYO|cZ;Rd z&F`iw7oyPD`9rop*!af(wYsOf>^*ti2u*6Qgc278x63WN+^>gy0$*mj1>R<+4Rk&g zJwdE3BR@ZRZ|PVyCbF6gJq>C3w&|eUNOk!B_EX!tosM%PW4m3ke!6qhy`gv6KfETl zkF+lAz&p7WkkzW8MR{C#y}5FWcbx)yPxai(k)jWEm(noZ!AXM;(D{82&1O=3&!?Sm z+_T!77&I#ClgD^JqpQF}Eg}OV^zQ4<_O-E>E*zaEDC>o1(OyvH+a6?<lo0=Xe7~v2 z)>|R7rvIGuptlNH#7XdxOKc0!+nC;jl9p**pRkir>h)a-2@~tm^hF7cY0_;SRO;Xo z$^`p~e(3F|E@2+Pt_D&>QS+#Huw~YzHxp>ALEWxX`#04jv`J)Cq5n6`tj|1`neS@? zcIri`n3!=$moi%`>}APXF_{0<Ch5N|H<oeFTu}4=ZaOeqPWOda%r{;k`LolrTf$i# z?u8Rw%7jGb)5r$CC#6=QH?mdmD$v8%duLdo299hXpVxJwK^`{GUktrh(0eP3*4zt* z>wmYZ{I#_f>C^;j(5GxcKVwUq+0*6prw$i#yqR(O1(?{(^5}ezQOj|Dl_J-BY3d_; z7X<SHhZ~`R_9sd8>qFK3Dz!nDT6ewn=l}E<nKxZihe0E`NO4o=O1T1PzW&7u8lZT| z+D-mxwwiT~3fBiQ2E&?xRq?)E6W@Mj_=byzF6-L&^*NWiIngkKM~Chf(MC;R8b(L* ze-ak9oz4*|OitSmbkIESsy~nrbJoHgUbzWM%gfh1>zI67BQN5%odW85uiFw>D=4F? z#Z-Z8_Dr8X?$D8U`_U^7YH?G$=P)<77?*O-x3!%3;r8R}-LAbw{^A18LIp6`Jxt03 z_=-BC>4p8)bZvx<wr>w-1l=Y)l9hV;`8FDsv#mX%?j+{Bsy3{#hAGG4aTY%_SQ9oA z?S^emc5jCxTvy-uW`=TXChWcBc8+X9xS5)0xWT<;?DB+N|FK91B+5&EL#5@)OF!{} zpy*0a&Q+2<#Ft!?in+K{uDS6zb%nHt{TaljHOWn=r5oh;mHV21#Lt&b3Pov1fq!Ck z)-vqv_8fxr&9vhMPF-4PLCYq=)fiCLle~S16O~K(>l)-{gq+MDr1c02G9sR~hFF9U z>^@2NUSx(dl0-1hVZLs-p}!Zj8)&u;LZu9GGYB^9b&KVmCwlLnG)%Y#GY}K`#arkh zW8Evet{=P1-S3FST|U|Ct(IK3bw#GM2f_Gg8#7+MCCw~#&VYZGLHqa|Mmf)KOAs37 zyJ8=bj1ml{m~~sPiMAIOfBEjI?5PW@uAK2y0D>RPk^{5&1v1kO1ioVaYF#Bd+n<m? zhM2;V-qn{M@9rpMl#pRaA>NZ^c{cDic{ezpAMSM!_?%xP@0LBDwC48dxj^32Ae=nD z__=0pws_S3;!L{PiC3u;m9~CPe#Bap^uurAFg}2*)Hl6B!HhI-<@mrqGV#{0KDj5T z(n5Sq1&+R%$OQ_YQs(<(*y9?#)~KuIHFLrXs%}wjGcX8NmZWxUg#6=53uHb&qb&2q zoAwS43wvD@C;gn<s7QEphm>zihgqjqiUX_5yW}Z#s+6}@YFY%{JkXyQVv<9O*j3K{ zuV~-8B#dipZrV(R321PTVZ&i}fQyloutL}u-9>oM9V~ku5!V(7x~OA2O)>PIxJM+* z9}YFqUS8BpPHn@$c|=*+H?iX8f=erhC3MOc#K~z79}b}Jz9orxj+3bK9YV8QI_^7y z%W8oWP1`aV9s|wcy<TnA{LJ*@&q#EZWvKf<j>NPt3&&+Ze?dW#?x9YH;upIsbxE=p zbkl8I4AGOT%8HkER;m=aDL6e8bMN8F5ACastiL{Wl*H@%#g}8Wan8dec~4165@ays zG4S5c(6TZDYW=RALrH##&u+@a3Pv<m+fhH}%`|1fxf~ahI`}had9Rj5Xi)k~Vo1ZZ z2|l}Wg%CCV*M&{T&c4Cyue$V+Hy{@auctu$T*mghI!M(azzgU{^6X-5RK2Fu&A*`O z(6f0Trg1LaJ7LS;ES$UwYXSsLu5|5th4`4Dk;;fDoLOdF{mRIKZ`M$B>O?$H;|upb z)pT8rUECg@30m3vi86TH!%1iY5fV83NNEjSkiCnaZTNyX@gM!srZGP+ExErU7zpL$ z5x-<*m)bJBF^j8hE5$6ixawGhc=}>Q?Exe7!WGg}1uD7+-{OuhYFrO;R&MypCT=G@ zC~BxHwxvM_3YM78&NTMqc57mUXq!rOLDnn~0XA47KLCyEsE@?)X~A(o*Z?icF9}P2 zM_PI!My+>7sbXZ4YwJ`Z<8iEkci7FeY0~%kddKX!80kpwd<Yd4C;X?f1BLA#heZ23 znSdOrH!CLnm(Gun+C9`F$GI1L<gD(r?$;RfrF*|x#7Kjl@7$rN43uAKyG1-=;}Dsr ztyl}+>ZYzuJRn3lL~mmyOF4Rot+NZ`>vxO`RnL))_h$mkGJ>S7$9~-S`{M2mY)mO` zD0qZimY?_-f8;6g$TJ83qGv5c%zcuXS2-x1nu}Mc@^R|whE{i455wnF^Hs0Af200k zE%pTZI6|Ln8rM~v*TDmrDa<2&#p529`*+a{=0gc7KjCEZJJuy^2)l{b`QQf9%13E} zm4_}WFVhxlE><79f`a4V0JmpSb^NUI3H=P6kI*URRp?|Ez7E*gyjZ2|M^zn`HC;+! z*KcQD{(iMu7(5+(RbbRdOADvvqR9+Q4c#T+RKDMsM%r)LtDOA%{0;rQDUf2|hqV#~ za$<h}&Cs5r%HD4&RX%nIwfoVlLS{xqcupeJ>D5?=PTjkm{H_Q88UMD;a8K|3@>*yQ zp|+X6dg%&J7@yyEzl}1q*pQIYT(KYQ>js%@G-4KuCzI^+K!w``#7+x_yyAEX4UBHF zV1gqah|+V{(Xk;%U!>+aua*VnSdW3_A3H}{(yJuR?Bwm5zvaHK@&;Z1X46}q<Tzb7 zqjd?ph*I`+pvsaS)SoUhDr_3x<<dq5|L6*lTy4K=jq@2?)TscTKywKy7cvsUG=)~) z;K;}#O$9<4>8d-Lnt?%u{9QYC`@+u(gVlZfMqu{Dry%2kRxZLbeqTO&mYjT!AMhd< z9(v~vV(8wp0eG*5zxsQHIt7!+CyDAu-VK>6xEm09zx35m!K}>aj03(gzwd0F9UVHe zr6EU68|p0P_g%l$a?7L5%nOOoxM%UXGA2Z&oD#K}LJIfnALL@y4a#1V(Uavee}An> z=W<WMFnnyhw9LL)p~fHVdwjC<`#u9t{jMNuDHN~VeC*>TjZm*QE$Qn<7aZx|yQ7~| z=)lC=l)C68U&Qw8IsBqo+@hO!c?>i(aMd(BxP45VV|F4`;jmT^+gwlIT}-`1KSnLt zcMi4ZhY2&TwkVClZtH>cjnrC?nk#Zscq@}@?-dM(<wQ*WulC+Okm>&a|5xdtL|0wq zLby60B|^x#Qj}xmoKr42&P-<HFiQuzE~k`3469^vnjF`LO_as3gpCbL4vU##Y?y7o zx%z(Izu$k~f4{%a_p?9EUa#lt`Fy^f&&T2ZxIHoMUGGXi|7_1YOTM%=s~vCq%F1K6 ze{l9#-SVfEGy6-8*d1OshNgXRs~sJw{T+2*_4c*KTo?CwnlKIZXM~RN%3qWBmY;C^ zFk+*gyk2MLfsejfk*HJAG*TXU^mTxSp<&>D=B<rbryVlgKj&P?B=h;-gR^&;gk4A& z;P01sAjmSfZ2TRBV`a{@X&#I^*<kZ5szXIomOA}HcH@FLH2Rk+QkNK^NZh8sy9-?^ zTl(0gv=vUdv1{7U*S2;Kw#KMVw;pQK44C_7kiyE#c;4CkW~FtiadoHTG$d0B+0FDi zlEBOH?(O-$vSa$F4IG^~u3jvkun^dcX*hhS8>Ra-#%9g4sk#CspU`T_*Jh{M?HVp! zG_>(F61=tK|H<w}?FBR+7c`5d_%I^VT{DFXGSRt&98-TuV&k5#IhFdF+`8oFGGc8> zbMF%Y_kRnKnQ=TyGavl0t$EyvF>&z3S$cHPVFzV}|%=hnwGO<ZtAN7lv4Q*zPk z%Qny8`^v87j|+AG#Jtj!i?O^kX6#$1?v07iR1KOzVTyZDy$T4p*Tul8=xojzx##_d zB@GnUF^ls9l<xq8hpry`(Ak&I&~9r*X96CxvN;Vc<8^onYyqYy7|o-{^lLn0|8tam ztIh<$A&YiO+@ZhSpPy6}5D{mLvc+4?60b>ol?ELNh^!fLZ~K~ku|me!gzR;;6hVwO zEPV@FctQDw>#Nz(@(4ezV7_hXo<{xGgWK)o({59>n@4MIZZsq})o!xH_KWw~f#O<9 zspjVw{xs>UhXz%py?Z2u{EqJ-c8gxr-hkY{1XMMdl_CWpnZzGcXNtHie4Wa20k&cn zO3YpA+CkeZuIK+$SNhxr{|Qw*8LMQpOEzI+qJyJ>aBOx}s`V%ecakCXN<XBx)p<>O z1&8~`f^z@)o%S^Wlt;=yeN>vR51NZi3wYHf4nhpY!%_O<er{3^@^ifAvu{>cp5J97 zaf7_<b(L<sw^z5?&Q0N1z{!d0H@fTRiE*9$szP7PwQ9vBz^)`qHZP&6!B)nRN|v)= zEU$$;&CN<7=wqACzo{oBE5y!vo!<Yz9tglJ`f^8!3y57eFffIyV2?ve;)1V|Y@+=G zXR3Ti{K;q6UuGk+KWYLIy5KV(smQ>R+zK11-fu<-=A7hN7L!>wf0Lq+7b40%aOPN~ z-j!hC*=_ffbY&$^()RvYr=<GRCgcYW7%aPXHt9Oms#1EF`QFmjeBgYXcfj>Gs5^LD zuy1KYjAzD84ff_2!^DUY`j4R+eo+^{awJ^q(Q#yhrJEG2q=83V_F)lvj69oaLd5BM zixGl2`*W0#?Wr<=cipfd^t{qytQqWRgJhf2AZjx9H&3@gSd1`RdXV+HK<&)VY_MJp zUtB#1iMVLRp|{f3Ht0qPqi>A9nv?p2itaR<T93m6W;<~omBiJMWgB=)`e7C+ciBBv z_>pK4)6H|sTR8(2EB|G1(HBB(F4l886Ew25;a=`D9cC&GA<~*c(X?F1`tk1FvBn#4 zU*~{qNAoZLhSRfbS*tb$6ZV`K)%$&Uj+CEd?9GUFa@@$<Kq<sgIBxZ1H})jW9UuH6 z@^y^3<~l$Ji<x|=B_|(nB-BWIq*!;O$>{!D?LA>QQFHh6>7%`$17cgWj4TFT_5eAt zIi0uprl->9P%>G!merIDvi1#5o<8PkoKt5O@)cpiX%9do1?(^RIXC6u!T}#6L4~Q> z&GX>bQI~Vxqsy~JeRPCH;~&AVM~$~MSuA39Pj!%_aOsWrsAe9V8@bD3d~E^1tiwt@ zZbrQze3>+~O!tZjGD6L~B0VOuMha4=!%&#Fk^oPRu>~t_hPBMkMmxASo!SlU^^=;9 zYoeqcrhY??lZ~^pfHrWm9gzb~fMoyPZ6A9hX{nG5yc2rcAzT0*o!PsUv#8BYL7|sY zQ<EfBM9c9^1E=z)yoi!;6Qy~EMtvs{cY5Ml#`O#s*E<n0nFH-dg${)Q0%45-bhC|W z5!qwEc+O;$17})NB4u(87!f`=W<WVd&rVZ_{&!7mr^}ab!x;hjvn|65zAD0IM`eqe z(keN{*y7i~9-&wxFRNni8-fTDY3}QU+m4?d@Pciom%%`c3P8ZKk8f0FfGPY}?%5B8 zln(ta!(#*^#7#)>8usc_ADaS3;TLfU-gu6X(W3n=$eRx9AUfrM^=QuBQHB=iW%+DQ zV+$UP%O#<4z%aasO6o84^Dg$E+n5E$%I2_BZslTaafkFg4QaQ`Nd-0NDhgCAXpgv$ z*lg9j`ixXGT6R=?m6r^5!Q&gUg|UJ&b9TqqA9wAX-@fgfiMGmD%jM~TmREf#@g605 zD&%#LR3yi*NViAzX*G<#c8m1HMyvDC+|;8Mkd=q>8M*zv+L(i;dHbl5+gxnyvu`F? z%H5SFexCbFat0u4t<PA?(GM*s{SadzA*|jQH8r&mYakvaZybLRnyVgSC_P-<f&e?@ z@SyZW?GrEM2yE&Gm&J?sXs)Q4a8-DkN_q!iB9{N?&3J*!!UqVb9r}RG^`qAb4oyb< z<Bz<TH?(tm*9EDn%d%R9hJx`P#$~N;&e2}dlT!#Ou_>tJ+3S!r&jwaQ#Y#nMRp2A9 zf!zEgR?<(*OfN7w7o$)T{>V_-Bs0eVXv`%VL}}>#nYZ())Nc#xoAGm$uhKRp>k5a| zqFnac#^0q~n%k00`wja9zBxRi;tfOuUZXF>+<rVv@ZDA=6D-U1-uQ5&hWP_<X4~c< zls4+tn_nAX0bx~+8oUk(A8_GfWR}Mlo3LXP<(EpOV_rT3zXu?L<!_k21^l?y$8K<h z6F#sT4R&WZdU!Uh3*p%GfVQ~VlsRaIoVrIgDP5=g0dEC7e@mi}^8BkIv?F!74Ud^; ztA3{qUQ7$5JIcR5IL+bx<u2qG@n}(^D@KOIpddaNpi?jUi+-IuFbE8@u#S~AV51k9 zrys3@WwiHo9Xg-KPDP15^lc|sKRtN_?Kcl!_ul0&tsfn*YrXKa{DZ|j?|WO)7p^P# zad)AnqBmtw=0U30DXs1~uf!$iOc~>!D<Be1GwELJ=*-SQ%=^&9iRpc;ZzB&<Q%9nA zRK_N4=Hqd#xVBIbIHYj8iRKOqlFOlt#z^xAKhm0OScNyewQOi|gH8zMJY5(opmTK= z;(7uIRm|G%r^LVuWM{3*(Pm$Ku5tveb3yL;W+uqr2Zk9$o%J4H*efCLCFdle271gh zgZ5+l@{^6FWb%ZD(oXO6#(@3II$0zRM*X(U$*Q-8KjNgoVS(d<??y{2m7H(yzW8dZ z46aX*<?lu|0a(O@+|7(#m<R395*LHKh<cWnpEjF%p>L#=_MGB&x#22-56Woaw1#zL z3tD6eNKCre0mr1zQ|fAxbA8XKW(^cOe4wqigq#U{c2Surt|R##fYtzZiQ~b{;Z7m# zv92vtj)EV{wIlzXUCQ>f#;$PgK8yENX+ND?w7Zv-Sz_wgX$}IvX&(fdq9_IpXLX|2 z2|5Tjd-;avtK*Cn+-U)IUVYnQF&rS#a(&vi=_kKU%XhhS@G5=x>YGB23G<Fo$s66} zGGHEVbf#+kb1R9DH3A!vJsuU5xV6(DeII8SgTn-kZ4nBpA%*kLU9>7PnHY{oB8f5X zBx=^aBYs7`|IFqt)EQ8}vI>}!3%B9<B`&)XW%qy0d>m6A+B6>>@qEt%9{k|f9v_Wz zox3{mVLC6^qaz~!bN9P;23UPjJ^#~_UJp7c57*BVc;(d|F=kcUXHUs<jD`lioKELR zNB7>t8J3yz(%C)<Ttf;@EEM~`_O@5iQni-p@%L_Y<?fqkYUH}7M{~3st><X94#P=Y ziSDurBVs8Md~rch#P$52JuRL{uL}}KQ|bbre~mO-Rj>eIutHuP#9u7ixS$XaQVa+2 zOZvLx0<3~6${TH0XSg2t3ou&~M|gf6iY2ZWa0)_%_vP1V-f5Lth(T0I%(O}0d3Pk> za%#4$Qo-Nq=Oi+m%pcVSg4U#OJ97O!h@YujM2_ZT_0f8dc%7c8Y8tTD#<4e`;h@kw zVL^ongU!@{YACl7w^D$#Sd1fCHo0fB7xOG>n}?h+!>U|3>_s<#?(jG<{A$}BEy=bU zXKfbMR(kieSFz!#gt)-5)cPc+<Hq%mIlQzZVw-mRjyp6P|C9Siq|Gr)V-zypagC`L zTp+#Jm1r0AQ7mRN))e>}Z^1$@BudS12_{wxsx*l3Ca)|ZwhX`2a|yoYtL4#tR_tT0 zud63|^F~yUD&PK*{zCQ9US-k3Aqd`PBZk<s{I4W!v`cfsUUO;Zdt21~iHo1dv0_@m zyWzCQEn7H^6g}p~)DIoGEUlACCC_e>wzPbzcw2vNlB0Z%v5U>)oW>WakMY~@h#Mm= zBpAU9IR6L&cAaZERkDv%)Oy2gIbCH?uR|BR7;%1Btc4Ns2Q0+lz|DBay@^RDI4g%p zgC}m<8ok*RaTTo7oXCQ|AOEyk6ARxZB*1rfEf(wT_yx9oV6VI5KECzszu$=EIY%Vh zw*E)_`R{?b{qg?=`<m(f52W{h=*0iGvC#fc9`Tljzg&gu2oXl8AqFQ4-)@Z21!MmZ z1w+1qp$U8qZewna1%k!@q6A9t|K&ILbgEmdcg-C_tbLjg;Ugv<-l->u`IYz9*z+ax zl`j^$)DczTcma0<KcXJgSE%#g-{nl=PUg#B*yeG(sw9yFp?JG_i+RXHVlJ>dNnv`b zOPc8kYF%9v1?55>eyi2xT(|_yY7;`)@xG1w%*D)3SGtgkX2OC@L|f2kET_-p%&#kR zA4z;TR<E3=G2wplLo;tY{)|KJ<2N_^@+3=*WIOw^1!7EUWEUp)qh#|Bx=29ZEfV2Q z@zK(wzkYr}!{=6Qon)KgSd`P}u3so#y3}<zQ%m;xxsjt+p6L>s&%ZFOhZ4C{_-0+b z*nj3HduB)^OIb7LUy|^`liR;5=TGPB`*Fa+&GosDyH#3F9zAn#rZh}T-PYuf-l}n( zf(g+1M^oO<IKnL~9!xoYzP42pJU&kN)d=;!B|cbpcLqiWCf0QV9%Ac*NaT;hTUfy^ zAYQmy<5s9CWd#oZ-Dr1bwr%+C&&|$4j7AN}*H%4q|KzV$%zRO3J97a%W7oO>klNIp zJSXxw@^U(wE)w#XksoUkrq5JvK{g>0!_o)yx;Q7pdi*zk$l>2T!fs)^Wy%TNP`KZ8 z9Rt+&u7`6Lez<_3Rnu7Y`F4|@o*iKnzphYUgTf0p;(YD%v#8^A4XFg;S+v)!ANPB( zBxoIph|>somBO7KTqaF(9nDq;1Nb^TC1ZL)KsmU%F8p2t&sH4%$D@fJ44!|ndS>3o z-=+(DNG~UcOy%HwEj(;0%UUb8M~9u$(llcp&gKLoI%2gMm^y9U5B@4aX20a`N8^$# zN0g=+e+DbG0EOc%f=f4s;%OWP2_JFbjdvt}hIHw>Gd(b0+<#nihuE}#S-N!J4-tN| zO|o6g&~dJK-d<q?#Z+$u1*Q^Ly>7JUXgphl<F$fjp($L*$P5<{W?@x)h95S+v_Koz zsi_QBfj|0Q%h9QqO=*Jl)PA|AjW*eHPgcc*Hk?>EW28H?sgY?BsF<fzGo$l`m8;Y| zDii~vo9FK>H|x*_#@Q?ioFEoCia*0aHWxu7|GqwCPmq$PY@x?LVo1;J_SnK6hxzzI zu}e4tx7HxR2J8)8cE6r_ck7EckEBTtn2y);)FbINs4VkdL+%j$t4s#!v!%3ibCSaG zO+8i%&u>lolWTi%TX@&Jaa50TAD|Ba@+=jTw18gGE!c3Al@HTvO(afBjH?IVu)dO( ziSMh5__t9HCXtdW{}gO<-rj&Zr<3G*8G9Uk{VDt)E~^eB_08scHomk6SnmazV)qh4 z%w4<5YM;8n)6tg4mJI^<)Yo1fmPX6y&AW>17EYfyOm?G2zGXTQ<1MAm*|2$VyM1Aw zoK{r0wMm<8`AnTsrWw~=Z~?xzn~<9no_E|~WE%BdA5Xm3%lz^$klp*1K{H0>IKvTR zj|ii%(DcMEfL6dWPP5Cy#jwe(R}SRQy;MI6_5tkD%$~f_M~r8;#w_Z95pRyx7t%*S zv8aQ`8F(oioPf{fI&}S<5q3>B@a$tnS1CH;qM2XA0ML$jr{J;OxHP8nw^A5<8pvUz zZhctyt`}!eIZedlDvxg$kzx*X@6Y9(HSpfPA?Dm~ywh#%U*$*3k3V{~_(Z3sMnI*~ zsJsmtKVf7^`J2{`v6wJw&AoS1Vn#>JN@N2GpS=qN$bEn^?)K%$dv3>$HnD4|gf}3O z0sVv}!-1m1j9cI`7f#oY4QlQzCRl)HdVXQ`B=~kxKb7+XUgoDvt4~AqQfsq~v~)e+ z0|Nc?vplEFz4i8SntOJgUH0mY#H`0OM=f5u<^t)8uDaD1<GuURcU6%^O(V!El){GB z=hj<L>x)vkiG5XHUyBd|s=i{(Pa|Y#UQ)OU{!Oejv1+6?bA()c$t>Cc%=OI}LiT0h zJbJRAqo!nkbS-<dYqF6yqGqEX#Mc9?{kaDvg6H@C+lS&-N{pUJa%mr5e(}6RDy1MG z;gC(KG|=rm%_p+~)Jh4?eVZQmen_V8Aa*t9o&C!p=@*&ZCo)YV*Vtj6HU~3Zy4B<? zKL+{u>KzSZPd;9;_bx@IYS2E|acY<2sF$LeH#s-fOgc|*TTruP*A@^$=doWkRLy3V zkft+#jFb^{?*Fox?+jFJYk4SnRZ8yA9^Mlx4>~#|7&zWz8b(Jy_GWoxSOQwDOzg&+ z!hH3fdNx6UtOw0iDzq{)6D%9VdjFxiiq`VC$6KkWdNp9IP)t}(ZfCuU3tKBB5V-*= z0`UUrerECLUNXgn91{+j9E9W&v7exI%D)PwBswJ9%&2<X4~6M>RKH$EPjl@n`*2&> zYOQq<Y;ia22J3nB1LNPnr(<9mnAU#+zh4M6U?2k%a-a7}B@&~j*769TTv(sb<4EVs zs=A~v#3Cv`&MUX;o{9K;1Oe4R|4_^TZO^|w9&u1(+t`VEYdt;mW}yX4xCoMJ+1h94 zE@<vMn`v@|R;G)EkCJh^Us=l}Vmn<DuVFMU10$wQ7v|9ldrhn^)0s7RT=CG>A2r9r zN}hNB8cA!C^!KcT!KG8+Kr^fDSjjt<%$_3w)!%EAAJ%izzBl=bw}~OOv+%KzaWW+6 zQLzy?a9TgI{w&-}F8UwI`d$Vp?vvD$vTRtN^p6?4rCXsbfHB4y)Q305GExm3^I%dk zi5a?k!26QHulvzdC5pd~$Fr*~u?G`Xt85pC4i7gGt!s?+(B8|j9&MPv^?_xkzWhc< zsF0g@y{&Z)7rN`c|HJS03zeoZ55LYxB)z;P#I!m@?b>hW?G#JXt;b+MoMQLJ7NcKx zfR}CYgx3$=KP=V0AYK#uXa<jPqv1pO&sY-Y^lVd1xx@ZLx~vC~Q+v*qrllxX%5P^t z9P*#g5~012gtCG<5~sjWDVM$lsWyXgRyE-xqb)!UUdw#6b+usBvS#)}p#QH8sqpUh z?|<JCHp!n4w2E;1IxM~81fUu9Ci{ri!M4?%dFul4l)q&^6oZhwPu$K3PJV!Kj8|hm z6Yp`t9^9z2`*<Og)}%S?b2Wa9HWRk=hm%%9+G`4AaHBg1-NByJ4OFyoukq5~dagwg zI>zEPxoEYu4PE;7T1lzS$%gztvSu87Uf-8;*<J1)yz8&uH06GLNj@V}@hR!iw;vZZ zmF_;fV{*WD?n_%~(%0{QKKx7Ryv8i#hY99Li0<{&gFA+<ojb%{N39C`V#gum+kDap zf764(Nh$&Ljl{Ep1S9b^jCFIEMD9h2mPgUQM<mQSA&m8@I)2~J4R5XyEX?J{T_Xy< zMx1&L=6|SV*$EPR#EWzk4HmSQUdsx=8;p!cc+<i_nv#76haSs{3`~nhGBMBe2z6#^ zK%?Ys^X`kqH{$2l`OiXL*(&O)7y1}BLioI+yxNPp1QaqKx2K~mX5Lgis<#pRTQcDS zBW^*VkG_Bx3By}|Y<f9ke%U_UtK#NKHUl5LJP@K8ytzTaCwkt=Jy+3=l(b*JKAcY% za6zJIbZ=FXNp@CA$IUiYbfSm{!}HmjiJ?~l&zy*+5gL!VH@7MXn#188lfSLA=bd%} z8Z)I*2<^)ggH)+ooWi3BV^<9~AXxMMQHOq|*jB285_1z~mPk(?xR__~N3m{#T~Vf& zr%~}b+qh4h3`lV8$YM#AIH8)-j2tmYt-l06CX9(1*4@sOo84rb+d%&-Gsljbv|n@9 zt+%FT`1-?615KL)xe-<S5eKaT?8hZ<uugpfmKE6FSRZ32qG=9_4*StBDDm8ppyp?Q zG43tl#Kvd;X`81-f8HO<?i%so))wi;!5cFV4O%JovFaQ^m%m6(u=f0@WxZ_?+rDC= ze1C(H$Vj$>qPVNf|KJLvAQWL@aNLw}GQeW+)Qr&xKCK}<lRdoB6>FCP+|K9Zf@!%y z_l1<|&s%{RaUE%n{I-^o+J0omMg4=j)LNiF{#FmP2F`$_BvJ-6^3srYFGqKYS(#Jp z*wJDC<b%p;n#BsG`M|fM@;L?HV~etn(QGdm87}M5iuPI_+8(4bvmJX|@4n_AXV*P5 z2*XPbBXz#9)%KT1yrr#|T~D<*>=ZarF2*~^xNz+Umy{GQ715_}ll+sJCWyS2KvYMq zf3a@kw6ZecD9tiW`j?$`K^w#$$~w#lyr59Ky&Q;K>HR`Yi>ziaFhNq)$pJRk;>ZW8 z&Q69BA~Vt>ly}`{zLnMwH74QTmA^pin<nNp&a;fLX#rs*(V+fIfW?VX7!#ey99;SN zzlJLPKW7LXv->Z^_xl6Cf<<C>z?1)+Hl+Fgo;GysKarh%|2e?Oeb0X?Aus=@67tA@ z9LE2nFZqMw<`t3&U8($EUf6J+I(|L>uv^}5ZNGX+;=jjp{%=O(Q%%kH?Plw}q_EXB zL)a2=h-s1Nzq;X=*o0mGai&sbY?D+16D2G!$tF%E4V^%U7U#LjqItb~nmZ$lVBQk9 zn5q17GroH*2DUUhs^-dWU1}a9LD{jCIUJwu(<<mQaRrHb>F&U}S#?}<+^mU(*RM4% zqE+ev=GMV~#(Bl`pAWw&!XjY2X1Hi$c`jZQRlo0ciufxC+r(AYV%b6+&11kgwL_DL zc;voE=p0tx6MT(mjp2R4WR)r_=t^G*g1`SS(Dj}NnB{|#3`QwP6tTKFAmR-Mk8h%^ zhBK~T+*}d~J`N2yCdM?Tx6C-dKPr{2w;U4|b?-9W)NS#X{n}>kvE$|EFV{xXW~#G3 zR+r&66ATq%7BFDHg|FVcmDfv!wdahJ*d?%4f;CC-Z1LA^AG98ls6Qp&3x5FlV+OaL zigtArta9oHOc_Q_C67Jzfl)pHn|8XLE!1-)<MO0-!t|k%ZU1hIVm0$4iI-PxUcy6i zJ!^ynM>kR;>&Xa1)zsleb2tq=0rFAb7IB8=C8zLf%Wm@!H*nwT${|{HGhAX7$7`un zEN>3qJ8f5Ac#dmrDB`Teh{50~)+9XN`GQwy6kFVFfl&>M?(avt&ky8>Z#a9H3qGc| z)7?aqjU~%M%G@eqGi-H65maq3v~c3r^rz%Wyxb=SjJj<Nd}GNymDu@?vi8v+k<d58 za!O~!hs=X+bkRCyO%unAKjsI<eOLf(pM(sU<5yTJC>(E87TZ?f)4tZc(8{^+lVs$z zywr7S37cDw01xCK@}POM*dizKt%hBws9P|cCQy>;)wmp)Sg}9)!h=#&KGF1jDYaAg zXVCBradoQT`)M)1JV4d7Z~tW^u<zZt&iXkA36sL-Mkg{E$h(Q+S?J!nu?!$E*Jd7> z`7IYp5<AYFA;tgnXTuX5!k;2GmeG9zD|P;J=&04N$(rBvf^*JP&hl_W=FXM%zwB=a zzoA9Y2HmVl!Drao)Dnzg>Il)jzYIrsc%rh8QLc9xDWh0kw`Q6iwfU<E=0c086zl|W z`hJ;zn_AIH+}faeX3cahry(7hQ=S7HGExfHV=T?2)<h9t_Xk$E^cMfsCpDY1K=!~q zZIG{u*a-|u#Sp|^fTs7HZ+Yg>Ew^%Tk$xf3z{yRq{<`J;oatWQmd2)|Kn$b%MMfuY z48~iE)~lqd6{S<oZZnuMRpjf{d(ZXzZq$Rk{=T?ckrU&D>D=I^nKWT>RGx2fo`=W) zlek=nEjEObGFmCJW6HOV4XaI8HZ}Trj+DUGBhcyg)UQohP2ZarVuL8;C^A5Y<q^U! z1o%(Ib*(;Qw(Ea%`BP%XhPdC}YHh~quh1(X+{z(pqwiX*j}>z!*2(EQ<@ayv9_U0+ zlf@C~zVsUou?KI+ZyO=Te)+=0T*Rmp30`YClWI-aKCVUxOwu^Ph{^R2G+y!|t#an+ z_z10>GRy3cKhk8UTNs6mpg%s9J<QHp1MWcp(|3;M|MqG>?2z+5*fxm=%u|<c%*71V z8Wxq8P}OhwDli{6|2-(rn7iNjJB25l-CaV%FD3Dtu_A0A(IwB$BSo(P!hbHqgDvAq zuv6^xCZ==HWGy2XBE}SOm7MRzPAd@g?@#Vvn?us4&Gac+IR^h|?lw&DK{3j?*>RwB zZ<5mvx#eL~Z43W^9>CZpCC@Eo@e9LZv{4qQJ3QGk&C#x7Q<EPs?Ie1R-yIv9xc2ee zZaaL;=~wopQ|o1Tx{E3D?iIh&(%{1ng~@ZiRw9GLHrC-8kMZh}Rg4U`N|g}-u4^*! z6ejnZ$-U6@pY}k#NaIZ69-gzNjQn<$H+IZ+`s-R7hwwpghtEVfD$DsTRXIA=hi@F~ z=+o3KwiVi9uN}x<JOL^1xnOX#$gSQyfLm2BX$VbOr-bvp=jKKdA2J#`?$SD%UP^Wt z3crtyO;&UWZ|np)L7E3;Rn|9Eq9GsWJuf%*{NRdTf2BOX7u+Y}HMqOHzh`x`rRn?6 zjc$FfM^+WyZ;WqEZP+${krQ$cRT3=tJ>>^J;LR;Yz2Q)rugJVS>n)}e88}P?FBiY- zZ`ZKib!p|}qLTM3&kc_O^L`+xA}s`9@@ZaNbV`m73!C|zn#<$HgEsq?mOfm|Z`6MD ztYO;@IdMhh@w;#Dgd0RY(pNJy_s{vq*>uCFWU@pV5cMN_Zplzsz%G`~;E%sIbd#Ho zCyklvUlkv+Q()7KM21)IQ(<I$?lKrx5D12|Nk)kBPec1bNPPKkLzoa__9EJ@`nT3{ z?1VN1?8_JH$0-gbaV_lDRz6_iHd4U|Z<`;QzTnzK;o_>!q2ZCxnZiJu9BpAo*Gm8F zRXBVdtCn(t6~pS1*|H%^!?U^Rm=F!X6wuhkEoIHS9X`nFEOt8qKJzrgk8j<bx2QR7 zU&i+nRL?#4hct&-ymke~g#JS*h>j7T^miUIIOqZ{lyTY3ShiKXit4?ch#Ep$w?F_> ztl5uJt2hO%^<2h~baF=qYdxkB*hB%#%`4}eVCS{C?y4K4bJm2hc+*v7B0#+8IX2hX z^}dZhvZ`#qUeWP6VD4O2(&fBM8Mf3)WFSKFLW8g8$IFBEq?fgg*0$k;(XH37%c9C( zl^111pZdtTYU9{G59SZJrhNlMukq~TDyH3g1a>an$(JT3#V0_}PRGTv3hCNr8|e!? zIp~SJw#e{`DUFW4T~fURo(*FZ6mPj77wsgaZ+4hd0MB?f?w0Rx`Y<go<h}#PToFg9 zxLnjN8Z}~_xkR@RvJ*eC`PM`{QQ@<A?RWErwA;5<&t1{?yk+%jT3xR!;H_UGBKmLB z=qgLD$J=l?)^{$pA2O^|)d(lN&7hp!xjHLbOwAnBFPn>QymDiEO-rA%$yaB^Pp?-1 zCqOF8^BXPRUP#@AI^lAxa^<!7&(86Fjm*;egv#ysP+P?cheI77)nexdSG|}LnXTi) zr}#~2BjaB1pQzC61QtmPc$eS66tW_f!cQQAXu~nFWTiasaVJ{tk|vvGc{J0zJMt$} zQl@Lqog=D;(-b~qS)3+se!$r8eVEwF8=$qTS;hBPI<16#V$`r$y=PzE*!#Oy2YdmO zRk1FJ5YR@&Vo~eqW8Kb&i=Y3)AAQQR-%g7zcz=yV39FAww6?Di!}21=P6h*+10gBz zqBBs?AE&CyXVdi{VRMf9CLWh3qCSk54RR_57KcxDRZNz064I5uELOo51Gj~V{Yp$* z!@Vp1Y!lQD3bg|aVb(SVa9RqR8ywTkY920C9HOkpa{=0E=H^MTzDwQxy&J1pyPHl= zMkvj`3#pAMf&f0qX0du9Qz!>%)@_moY?oHUH`lCwRBX>^op&tDi=D5VaDg*sK6vL@ zIV6U^?GN?W^T?v#v3+YMcdLvXpg$pmapNn4joBPBI<>WFRXBf|ae;6F;TEehWc;Zg zb!HsO9phy5Lkb9}jtS>}Cq0S5-#1wNH|Ewfun!v%m)_vrND1S|!b#6Ij)oBjS`DqN zUO6h|@y0*YDBjRB)zT23YDK~Jvw|-B)F6f?_%E1FXapE2j~81U4vpy<)%HaMO3=4K zF28hU9LvIBaNjbDmuDJhsB(I$8^b|u!wd$N)MiX!#dhg*2Wfe!ZWoWG@1EwzmFw?G z!Q(5*V^{3;&NHy-mlOC!F;Ry7P8(qG#;&!_-Qg-4MT%dbBfNJb6&G@VlpV?r^(_ku z<;o?EvgJon#a^tTW8LRXXF7m0ftrRL{uSR$kVvUYIDt#|n+p<)DvWK;6&S~QBKp2i z&y!`#9w{fECs_zU-XEf$YIr$W+a7qq%Ctup(udwn4ORnU5#<LO+8diX1Xn{Tz}{NN zi2fSbDEeyJ6Gs-cZdE+2j}6vo!wo}?VNOp<vsiAy=bL1J8U8!xN5Y4uIk!Fjs_ec% zM)sp>y^3}xlN4!aV1~<Gc%!Ta`+ZS0>(dQCe^xxO5_y2#@lIqclYykppI$KrFqS62 zhfQsEZa&BoVTbZ3`br2ua`E}qIPk%ZnOGwSegfXv<W~EKYw^DJ7O<ZV>ln4l6Sk=G z#QYBwEYF@c^AZpg_RO){qsR{X8%63%CaPnvA>b7u0?K*EMD4TnO(=yG1@<mIu5wA< zGCO!54Cx%=B(MMdz~z%C`|efpt~N{iv@#6Mw8S$d@tbQt)Yx1L-F-Wg7+)c(GFl() zUVWKiES1GSz|B+4)8UW$usiy!SwB}%lf?db^GmDmH)9j<^FH*Yx7s4d%tteGUvv*k z@R%ezbhPWupb>orY#dOvO}$Yz79WThI5MK_^kH7IEy5PRYjz(20I|!T`#Wx|+FN^F z-9lym1F&V>=1Ub(LXBam_W=ySBe<dr@T3i+bG<Zpz^8<DZPDIZ2Hk4ftoWt`IM4Z` zF+hQPf3(rA<2QB(w0bZ5<!G9Hb$vGFOS+Ge$Y7Hd|G;+?OBFAEa;oV=9UfoiVmf3n z9q+Z%C!l{qMB_WY@4bnft1Ca_s$>FTX8VPo4}Jo0Dmg=PN<T$3m)`MW?@`^oHQw=! zp7;wBJ^f2x5@l(*NUIw&kh-FY_3}GvHTtfZ4u3qyF6Rm7712ukhK`kEU&p*J(8;Cz z{zuR?lcwC2L0oUSMEtzFi+eU9in(CGFi3KK(#Wc<SdFY_v-FD@eLLGm*r-GNP{<6R z70FeS`Rknl3X`-QgzFcb_4}p<v^28PpI$bYHdjvH6uXJg5aO)>Qt&3!Q5Eli5_s+C z0K_}=*+0Q|e61mSpl){fNAAyT1u@OCm?#u|6P76498c_Jv=EXRTGL%%Z0WF-@n7@b zgn6XAqj}{r3L%_6MzH;B-(~jP+kPA@bfmFdmwSoj=%|!g%LDq9klRr5XB_g_mSgwi z`7K1=b@O_p@tO2ibwJ4D+GP^d!Oh^At}IPK3?Osy+kfXnZw=Y}uPQ?|ewK1*o_F{S zs$%-+4R#&*x?+Ow5e6o=54EAu>%jXo+VDe6Tzh|B|67Ig4Qz<}pkWmr&<F~#D9`A0 zS`~z=m6Z_QhPQ@$AYN#sY2&<+#%dO;(+tNa$462MX3(rZy-#=_x{=0WI0p}BBm#%d z4}(9_hV49z5)T)sJq}ZivZu8<AMgbp*Ppw0=x|S(QswQ?)5?ic0<-|AwOB)Ud8J4w zDa`D)aBcGPZv+L+x+B21Ph27dnx@wF7nh>w;@^iB%>#Fp44$8)nS+Y<;;2Aw(Y2;# zwZ7B9P)u=?QD)=aJ4lhTd5u+8Ovw#(a(wlrW0ovF6dv8!yZ~h^0UWCZEve;`-+a(c zdb(F=o$Fi^M<ho1%;dREps)YDd%*XhMg7~cq)c(`pkAUYA=wp`f;FJ!Ut*e_o4<c> zbxf}%oJN|hO;Q5`NF4#<(~vx=@DihSU4`-N$U5QNAj$c2y%L04V_Szmuzde)eiows zC$c28dkn?YVKn)m6j6p|38T0&OeitCo1jL3dFLnREcsbpc9EG2qA8YP{WOEBTf{*E zuYeFz@Q$+R-p}@h*8W`cxeeL^<+bz0bB2c@RxT8O;`NKQV|!-Gf9r=2J}S$-4p)fX z7+1vW@e2e7peHpaF7?c^fRR-j(Mgg~z%^Hq@;;|b%fXKjmw?Kzm`3IjXz1zm%YxRh zqBuNIY_@8Eoo0Z!1@S92%I3;XFqByYNQvU7=nJtLo+=nl@kS;gnv1b?Iu?nfGG~kj z2My5j^Gh3<u;`;l*}CuV+Kscp0BYx8qH{`7^hncb|8!}eGUK~;u!R;fuqN=y9|a~g zkn{lZL#LW}CYD)tAE)1Lj!;J<_aON5vnui5!Z8cr<Ajg_52Xp+b34zcKG!bsV}I6- z8E`U;fV*D%cA^ehQuG|&P(B-<d*Mk`cy#ng%}R@BwL^Fh4-@!hbns?SKB^?{UDLoH zpo0=++uhA%z`#NK&Fq5PjHz{gQ3jyOj+r4+3#bUmvpKzoH5thn${4QJxMQGSHUG=W z(uBM*Xm}U>)ZRo{CDP!X!t{m1x@8OQ=_}>%KKrv?A1|SM5mj1tPfW+6x-y~nS9HW) zY1|daPGws1?&e)9vExmoYHkvSn^N&2$i4>>il98<Hfn`Gd|5Gx7h9^Cl$~ac<ORVb zfQ3|gx6eNF;XAZQa2@Vt0$Fmt(CAQ&xczYs1w2nEc}yvUN4HYNb$*N?WTZX$Jf0s0 zo2Q&z=-4#YRv#w|K<yZX-{P+|ALV;F>a1cuEC?{{40Wl4;w0g|u|4c?V_s%!4WPr6 z_-D$9L8m8w4BF?A5I)3M?b4^_=^%(MomB!a07z_c#E-`^^~d$s70|8Z@8AT3yDDkt zK`NfW7IaMvjIfmGm{UqUPGh&ljgJ}y=XE|JI!N@qnMw_wOHH^C`aVay&i;&*s&4}8 zFRtZbWO{j4X5nZdB@bAguLJRF#^cwzpQI!j!QfT$V+y-UJlq&dqzv8_;?lLuUb2U^ z7U&idGwGXC1PKU@U%49osgqnR4hejpzXeldzH1J#rkO4rI8ku$U11s(>c7H19AUOP z4T1pmG>FbYvr(pOt1{q+=(*Q}=BjNkO*%(vyaTr@7Qh|W4v;*X$Nug|`x}fgZp)#^ z0<AVxqwMa#2yr_!O8)uD%h0Gv|MdH_G+VlmhXR&()9;V{BtViU*v{{%2zE@>2)Wwf zH$6rfIU2PZYPjDS0R7f5lxEL~Kce5QONbmcaE>fYX4?2338}1*&>=KEBqtWpaAro+ z=A>EZfJ3gXOWBjX0zknUv<d3kR+ORWbRq|AFH=MGlOIqnM%3z(qdCe&V%N>bKQF^N zw$&@XQ5eIb3@eOu%<{^lEy@h@JI5~mjykyQTx!<MWbi<g9W;rtFN~spT3J9$X;!SQ zl@-=PY-kj(9|fgOz6+{`KRP(i=+nC@k#rP%ZslBMxdl~mGdwiA<P~i01ES3Nysp_d zq|@kKSY6HG4`iGxsXy8mJTUG<@&^#px_Zf@tA&$v*K9)fia1Ua;)cY^qZHTtcBhu> zP8XVsR(PO&gv#Ue@uRNle_K}Ri$z5d-X}Hfi>d>U0jzCG`-YNrI`X?KmNpOQ<+zMB z7)!~z1T7AVoE+`$<ZJ{R+rnl^4(Q3d2;~-DQeyU;>d!lceX}&X9bSMmA9Z*}fvE?5 zeX7unATGy`o^;;5zSoLCeNs^pPYs=;))-`Zqd1|>*J+=<))YfPU8^G*ca<xkMH}%{ z!$a?TS(7gfHpd`wa~fc#a$e|UNG3nvh3c5Oa8_1ncXf4kEdBMmS_b7~Vx0v~!z}~S zPA(KdA<^X-ikL*SnT1PdT7_d-8YG}6Xye$fq`{c$)o3qKMmdGZxMuvvM~JFK;BVw= zx`}>dUEH93SGqm&RPo+5Y{*G9q<Z&$1{}ZkJvdXmiB!9}WPFwrO}wbj%*RUg_F7vE zk-D5e8KJ;6`i5r*W4n7N<#3U_&YTYngb=ND9tEw2<~tb*;9sK4;{LJ<Pe`UI<Z5(= zC!;l-+L!FQ1|1rUV2q&fR`|rmN3qS+Q#sPLwOtbG5v8aCtlz`8yT#FA2c)C0*TmH~ zZbgwms=k?=^0KsQF5BPF@?pl_%8Chd{xfb8&U{1Yq=#9(#M{9z=$+5rJJrPM@hY(- zAkX78PmA%U_B$OL>2OJ>Mg)^;heUe!e)*o((5LUb<LoyFLmpM1>4O$7nyC+rFVuz4 z8%%(5&JqiIS?tjzBL6t>N}k4M`rZ-Uz3~fwOtl&rTxADj8I*YejBt%AvA%(Oms2-P zLm*BUVT=?4Fmio!+>ORyTC98UL{7Hq;l~NVs5FQ`rQ(HyNxKE>i-t91;g2Q(C7VuL z0NI;aQ2s6fT09{xP+TKE4>@C;4BecV@m2fMPvoRK7tF+I&L9KB6uv8r7^|Ayrlh}Y zb%?BgKl?iY^LI}yMmn+>vB6}Z<2Up0jZ5hfrzKOASqblSOTX!Gm47NKIi%qEK8P)m zIrf_O>4BGO7ylWg+yW7wHtjVyDA52xB^HeCmidOk1~w`HUWCy6lOb(lt}?hzyJMsp zE5RlRG+m^gYTKk=w%zmIzS-e2ayaTpZR!obO)q&S$O5}Aj+0J2ZPhVKHp(6QGfnMx z`x|-Z8dRh<wFw^w)INgue|UHEpD`Q|Q$=o?0P(QexNic{;8Nw}IRmE&)C4HK)6{v* zv*x!B4RlJy{-1R|llt{{s7rHk-Hd^NJupv5HLHGXZH?NqF&yvCYehY2N?RSTlGl)V z4Fyqx2=0uGjrlI#R|7qmtMv=96A4<@@dvbY1gLIBHFrbD((J|5gT>UAVnbd)wl*#C zceW>hLc8|)ZdfZlLEgcvCj4YfQDR(3WFfeu;7-ixr&Zs1x^|+`?)`nE3Imodzmafu z_J@7U5GtZki((>9xx%jeZ9ubA$rxWhKD;>erFhof0qc8*Z-2WNa0^tq;hOku3B4Vs zfXRs)#?2LmFy5_R0&vSD&vwL#(R1WmX8J!kuC$9MuY}WpRD7uta$kPX_UD#64**j{ z;TPMl$R`6`4!`u8DSdYE_)J1+nm<2>PKks2KRTOC_0LH<V5$G^#8&j(L2z~f%P8_x zsi9_OHyU3J(>o5yTQrO`Lo<71(D{I-Zi=z3_-vk|lfZU*A;AufyAHo=_<ZB10Nb@^ z4%;a!FHw9o{XByC?7gG@tKj(yWtvV1rByz(X*ansU(k0EiII_K;nj)v*(RB2&(IZU zYiD-7ByCk87DTRk<Wyu*XX@Ppb(6O64E4k$6U<}g_y9X&^Ms{x$G!!VLPMvEVAUb) z!S#H8dwAJOFm!W3rLZVN)z5|Bl8|5e=DcBJI8GvzTB_T0B=k(c7X!|;uIrMKWAn-y zYdg)1r&XnVzwt<T7se|lVVOrT-xwNFGl=!-V<2fn`vq+AGs~b6imM5f;=!u4tHv6o za*;6<U^uu~Y*?aFQHM4Z@$=S_$~$dBf`ZG4_B-xd!OT`_d60oQWRX9mw7gExl$d8c z<;@$99kp^QF-R%VZ@#!dzWv7O^=*?UAS#qfa3L%{4ruJT(fB#4q;(;du(VQ?ayvzr zT3YoDHIVGzh>C1jT}>>Sl*1alc?>e*c7Qo+K?uy(rq`%6U#7{yyZJQ@ZmR=W?t~Th z3?UY7@YdM%aK=>O)FxwinrGx|bfiQ6Q^gL;Cpnfz(c+AbD80{=>~L6dBomkc7`MbE zpT6RQ9(0XQC$BIY)3f#1snNbPW}THWZ(2A_4QR*a@6F_vl2g-L`n=@%`SfCo#MUU` z)1wH;$NM{f!qZ-bQ&dQ|{NYgtFF4NL{Ysizdp+rYW25|)h;!e58Tuu*FUVO=VSFIv zr+#TH>hBgYKpfTnqec6mc{EAHO|-zzQSI_W3l_NGGl)z2OkZBJCyNXYIEoV`*Ysz+ zM^T2O1uL&xQs(%tk)_H5T8?grAeN9EHwIMn7y8)#HU(BEm2+GXNwI?3n+x8A{1X3M z8Jn&h(vcIo2PD9+=hXgkf*it!I9AsxeoJ^jvcLLVyMD_ebi&stV#`BHntf7X>x*+s zBr`B=cLFXf@`WL#5>?&M;QJ0v4N!VPM1{AY9uYs(q?{gr7?o`~-N*J%l*bHxY4c<7 z8Vsj&LK-Y=C!?BZ;U=^=PC6Q!EI8fqQehiL>!RJ$#V2^d6|^kyh62l6&F-DPwP*gw z+*j7g5K;O2R;xETM>A_5H1D4sFc@lbTs_A1tV|{EY_KM1U4r0!)%mX5Hk$}dX0E{I z+e&4%{y7As+1X5aI2W^Td7SfF>x(=*=Paf7p2TJmundNqB#T6y)SGo31}z1CXD@}v zXOwXpf%MTpU_V!Y2Fe5M7h8gYd?$YnyQZYuXZmrqx81q?p7^^&knh0_wJ*%F-QxT{ z{mgfon{`^#SqwF?#2n_>zD!qwj^k)w=crYrz6pk_MV;ua(~XRQCh-_`Ms)T>Kl_3@ z*d55nBvYPDNfj{pf6asAs&-sAyvF?LE=}@G%*${ZA=HK)LpbSMK3vQr{s7{Q>wa`& z=Ssd8Z_Wg{raUi3cE~Oj+zPNUFQh=bEH>O=riy<uYy;f0$~DRuR!WGg;W*i$%ERKm z|4<MbUA8wkj~r`S2Rr;`bw3+a6h9fC;|HHiINWFN*-3$IcKT!hlqxYEA1ee}6AtZT zwG?|#Ph+XOp0Fi6&K$exX(gD3aE-uJ1DSi9+}Bp+zMZQeS=AEKiGgp9)hCJ`Tu7RB zhcA0nHOo**nVc2}1L#<Eate@m|0dtSEq6G|wcXyl=JxDX^;X^r&iHO($AtX0p5y7z zn=xjs=4KYVVOByE{~SB+b>j3w*Eux8X6g}o)x2ulF-1CQD{+0B;ul?AevVO>H*vZU zZkc`Wg}=**1>J+7)7P$hdZvFMJ{_Bw3{{jf+Phj;JbAR4dH&g3vd#kXJOU$3jN%L> zrZ4afRsL@M8$$Vb6`Bm(zzR-nj&1KHF0Ok;Yl!)Un6QE3j+*K_mqL}E`>nx?jir1U z$n-w@X*B@-t$K)$KT6#ZX(aCe@;>%nBVwybcf5Ap`!t$8JofHW2?26q-|k0ZMQdmt zv4Q3Vf_phGjVtmXB44J@4lnT`??+Bd0FfZ&eePS?pT3NiUNC{InEzanm?l~LqQ4XJ zsNY=sScKJXP;;NQ_}b#+WV!=%EsK{aGxOzXUqJvU?7+3anabY~wuRh6*5CugZqZMk zL*tMYD!+<X(2pN8{-BMk+wQ(yyuMG{pEdTyUS$N4=X>S&^}ga*e6`)|GfFR)F!*kg zV8QDt?{A-l-sgPI<3E|QSbh*9#zTsqX9x{1ZLNa)vEQ+(ijwuW`81ZOZdPwof^lHx zL)E35Tod+B>eO;!bgTiYCT+8~@ma=JNf*Vcaj1z&L#AH<NHWh$Xg-m6c}CUulK{KJ zg0-Fg_&wN3M}4hmZ*U1RZG1J=%rM_WI`Q<KzWpIqD&i;(sA$8}M~_5ujMEBK9C3|5 z@vj_!a(#RAR_>#usV*jFU>Vt3_10{0h~eYey266ttL@L>9iQ@Mh|p%g_6dxEB`QxL z4J^(n;u^!FEb2DJdG&c$MGi5Swc`lm*SixpU-Dll_BNcUSa?zO0V_U?Vymmgk*EJF zL^v%hH*42l4=mvoYbEhZ)*$iUSZwsa5#jvzRayPdga7~Kl@_UdY48nXL4GuEy_wgq MI$S|rzVq<^0Rj0mb^rhX literal 43593 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 QSgv+RQ1~IrfrP7n1HO+_`v3p{