@dnanpm/ui-components 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/components/Accordion/Accordion.css +9 -2
- package/dist/components/AccordionItem/AccordionItem.cjs +4 -4
- package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.css +8 -2
- package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.js +2 -2
- package/dist/components/AccordionItem/AccordionItem.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs +83 -0
- package/dist/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.css +188 -0
- package/dist/components/Avatar/Avatar.d.ts +3 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.js +83 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.cjs +40 -0
- package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.js +40 -0
- package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
- package/dist/components/Avatar/Avatar.types.d.ts +66 -0
- package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.cjs +17 -0
- package/dist/components/Avatar/Avatar.utils.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.utils.d.ts +6 -0
- package/dist/components/Avatar/Avatar.utils.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.js +17 -0
- package/dist/components/Avatar/Avatar.utils.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +3 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.cjs +9 -12
- package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.css +20 -17
- package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.js +2 -5
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +1 -1
- package/dist/components/Button/Button.cjs +29 -3
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.css +76 -30
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +28 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.css.cjs +19 -11
- package/dist/components/Button/Button.module.css.cjs.map +1 -1
- package/dist/components/Button/Button.module.css.js +19 -11
- package/dist/components/Button/Button.module.css.js.map +1 -1
- package/dist/components/Button/Button.types.d.ts +20 -3
- package/dist/components/Button/Button.types.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.cjs +19 -14
- package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.css +62 -20
- package/dist/components/ButtonCard/ButtonCard.d.ts +2 -1
- package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.js +17 -12
- package/dist/components/ButtonCard/ButtonCard.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.js +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.types.d.ts +3 -2
- package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +105 -0
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.css +323 -0
- package/dist/components/Checkbox/Checkbox.d.ts +3 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +105 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.js +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +47 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/ContentCard/ContentCard.cjs +97 -0
- package/dist/components/ContentCard/ContentCard.cjs.map +1 -0
- package/dist/components/ContentCard/ContentCard.css +254 -0
- package/dist/components/ContentCard/ContentCard.d.ts +3 -0
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -0
- package/dist/components/ContentCard/ContentCard.js +97 -0
- package/dist/components/ContentCard/ContentCard.js.map +1 -0
- package/dist/components/ContentCard/ContentCard.module.css.cjs +24 -0
- package/dist/components/ContentCard/ContentCard.module.css.cjs.map +1 -0
- package/dist/components/ContentCard/ContentCard.module.css.js +25 -0
- package/dist/components/ContentCard/ContentCard.module.css.js.map +1 -0
- package/dist/components/ContentCard/ContentCard.types.d.ts +100 -0
- package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -0
- package/dist/components/ContentCard/index.d.ts +3 -0
- package/dist/components/ContentCard/index.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.cjs +15 -7
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.css +47 -45
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +12 -4
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.css.cjs +16 -16
- package/dist/components/Drawer/Drawer.module.css.js +16 -16
- package/dist/components/Footer/Footer.cjs +8 -9
- package/dist/components/Footer/Footer.cjs.map +1 -1
- package/dist/components/Footer/Footer.css +91 -84
- package/dist/components/Footer/Footer.d.ts.map +1 -1
- package/dist/components/Footer/Footer.js +1 -2
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/Footer/Footer.module.css.cjs +39 -39
- package/dist/components/Footer/Footer.module.css.js +39 -39
- package/dist/components/FunctionButton/FunctionButton.cjs +2 -2
- package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -1
- package/dist/components/FunctionButton/FunctionButton.css +5 -2
- package/dist/components/FunctionButton/FunctionButton.js +1 -1
- package/dist/components/FunctionButton/FunctionButton.js.map +1 -1
- package/dist/components/Hero/Hero.cjs +30 -29
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +86 -74
- package/dist/components/Hero/Hero.d.ts +1 -1
- package/dist/components/Hero/Hero.d.ts.map +1 -1
- package/dist/components/Hero/Hero.js +30 -29
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +20 -17
- package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
- package/dist/components/Hero/Hero.module.css.js +20 -17
- package/dist/components/Hero/Hero.module.css.js.map +1 -1
- package/dist/components/Hero/Hero.types.d.ts +2 -6
- package/dist/components/Hero/Hero.types.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.cjs +3 -4
- package/dist/components/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/IconButton/IconButton.css +5 -2
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js +1 -2
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Label/Label.css +5 -2
- package/dist/components/MainNavigation/MainNavigation.cjs +556 -191
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.css +297 -170
- package/dist/components/MainNavigation/MainNavigation.d.ts +1 -1
- package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.js +526 -161
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +80 -68
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.js +80 -68
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +55 -21
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +28 -4
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +11 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.js +28 -4
- package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -1
- package/dist/components/MainNavigation/index.d.ts +1 -1
- package/dist/components/MainNavigation/index.d.ts.map +1 -1
- package/dist/components/Modal/Modal.cjs +14 -6
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.css +43 -40
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +12 -4
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.css.cjs +18 -18
- package/dist/components/Modal/Modal.module.css.js +18 -18
- package/dist/components/Notification/Notification.cjs +3 -2
- package/dist/components/Notification/Notification.cjs.map +1 -1
- package/dist/components/Notification/Notification.css +20 -12
- package/dist/components/Notification/Notification.d.ts.map +1 -1
- package/dist/components/Notification/Notification.js +2 -1
- package/dist/components/Notification/Notification.js.map +1 -1
- package/dist/components/Notification/Notification.module.css.cjs +9 -9
- package/dist/components/Notification/Notification.module.css.js +9 -9
- package/dist/components/Pagination/Pagination.cjs +142 -0
- package/dist/components/Pagination/Pagination.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.css +256 -0
- package/dist/components/Pagination/Pagination.d.ts +3 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.js +142 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.cjs +34 -0
- package/dist/components/Pagination/Pagination.module.css.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.js +34 -0
- package/dist/components/Pagination/Pagination.module.css.js.map +1 -0
- package/dist/components/Pagination/Pagination.types.d.ts +20 -0
- package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.cjs +76 -0
- package/dist/components/Pagination/Pagination.utils.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.utils.d.ts +21 -0
- package/dist/components/Pagination/Pagination.utils.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.js +76 -0
- package/dist/components/Pagination/Pagination.utils.js.map +1 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pictograph/Pictograph.css +9 -2
- package/dist/components/Pictograph/PictographItem.css +9 -2
- package/dist/components/Quote/Quote.css +5 -2
- package/dist/components/Spinner/Spinner.css +9 -2
- package/dist/design-tokens/dist/tokens.cjs +5 -0
- package/dist/design-tokens/dist/tokens.cjs.map +1 -0
- package/dist/design-tokens/dist/tokens.js +5 -0
- package/dist/design-tokens/dist/tokens.js.map +1 -0
- package/dist/index.cjs +8 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utilities.css +6 -0
- package/dist/styles/utils/elevation.css +34 -26
- package/dist/styles/utils/focus.css +63 -65
- package/dist/styles/utils/index.cjs +33 -0
- package/dist/styles/utils/index.cjs.map +1 -0
- package/dist/styles/utils/index.d.ts +20 -0
- package/dist/styles/utils/index.d.ts.map +1 -0
- package/dist/styles/utils/index.js +33 -0
- package/dist/styles/utils/index.js.map +1 -0
- package/dist/styles/utils/overlay.css +35 -28
- package/dist/styles/utils/text-decoration.css +19 -12
- package/dist/styles.css +46 -12
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isRenderable/index.d.ts +2 -0
- package/dist/utils/isRenderable/index.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.cjs +5 -0
- package/dist/utils/isRenderable/isRenderable.cjs.map +1 -0
- package/dist/utils/isRenderable/isRenderable.d.ts +4 -0
- package/dist/utils/isRenderable/isRenderable.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.js +5 -0
- package/dist/utils/isRenderable/isRenderable.js.map +1 -0
- package/package.json +12 -4
- package/dist/styles/utils/elevation.module.css.cjs +0 -16
- package/dist/styles/utils/elevation.module.css.cjs.map +0 -1
- package/dist/styles/utils/elevation.module.css.js +0 -16
- package/dist/styles/utils/elevation.module.css.js.map +0 -1
- package/dist/styles/utils/focus.module.css.cjs +0 -16
- package/dist/styles/utils/focus.module.css.cjs.map +0 -1
- package/dist/styles/utils/focus.module.css.js +0 -16
- package/dist/styles/utils/focus.module.css.js.map +0 -1
- package/dist/styles/utils/overlay.module.css.cjs +0 -13
- package/dist/styles/utils/overlay.module.css.cjs.map +0 -1
- package/dist/styles/utils/overlay.module.css.js +0 -13
- package/dist/styles/utils/overlay.module.css.js.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.cjs +0 -13
- package/dist/styles/utils/text-decoration.module.css.cjs.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.js +0 -13
- package/dist/styles/utils/text-decoration.module.css.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.cjs","sources":["../../../src/components/Footer/Footer.tsx"],"sourcesContent":["import { useId } from 'react';\nimport { ArrowRight } from '@dnanpm/icons';\nimport { AccordionItem } from '../AccordionItem';\nimport { IconButton } from '../IconButton';\nimport { cn } from '../../utils/cn';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport textDecorationStyles from '../../styles/utils/text-decoration.module.css';\nimport appStoreBadge from './assets/app-store-badge.svg';\nimport googlePlayBadge from './assets/google-play-badge.svg';\nimport styles from './Footer.module.css';\nimport {\n defaultAppStoreAriaLabel,\n defaultCopyrightLabel,\n defaultGooglePlayAriaLabel,\n defaultRenderLink,\n defaultSocialAriaLabel,\n resolveSocialIcon,\n resolveTopSectionIcon,\n} from './Footer.utils';\nimport type {\n FooterAppLink,\n FooterLink,\n FooterLinkProps,\n FooterProps,\n FooterRenderLink,\n} from './Footer.types';\n\nconst linkClasses = (extra?: string) =>\n cn(styles.footer__link, textDecorationStyles.underlineLink, focusStyles.focusable, extra);\n\nconst renderNavLink = (link: FooterLink, renderLink: FooterRenderLink) =>\n renderLink(\n {\n href: link.href,\n className: linkClasses(),\n 'aria-label': link.ariaLabel,\n children: link.label,\n },\n { external: link.external ?? false },\n );\n\nconst renderBadge = (\n link: FooterAppLink,\n src: string,\n renderLink: FooterRenderLink,\n fallbackAriaLabel: string,\n) =>\n renderLink(\n {\n href: link.href,\n className: cn(styles.footer__badge, focusStyles.focusable),\n 'aria-label': link.ariaLabel ?? fallbackAriaLabel,\n children: <img src={src} alt=\"\" aria-hidden=\"true\" />,\n },\n { external: true },\n );\n\nexport const Footer = ({\n topSection,\n navigation,\n socialLinks,\n organizations,\n currentOrganizationId,\n languages,\n currentLanguageCode,\n appLinks,\n mandatoryLinks,\n copyrightLabel,\n renderLink = defaultRenderLink,\n onChatOpen,\n onCookieSettingsClick,\n navigationLabel = 'Footer linkit',\n socialLabel = 'DNA sosiaalisessa mediassa',\n organizationsLabel = 'Valitse sivusto',\n languagesLabel = 'Valitse kieli',\n mandatoryLinksLabel = 'Lakisääteiset linkit',\n className,\n ref,\n ...props\n}: FooterProps) => {\n const visibleMandatoryLinks = (mandatoryLinks ?? []).filter(\n (link) => !link.opensCookieSettings || onCookieSettingsClick,\n );\n\n const hasBadges = Boolean(appLinks?.appStore || appLinks?.googlePlay);\n const topSectionHeadingId = useId();\n\n return (\n <footer\n ref={ref}\n data-color-scheme=\"dark\"\n className={cn(styles.footer, className)}\n {...props}\n >\n {topSection && topSection.length > 0 && (\n <div className={styles.footer__top}>\n <div className={cn(styles.footer__inner, styles['footer__top-row'])}>\n {topSection.map((group, index) => {\n const Icon = resolveTopSectionIcon(group.icon);\n const links = group.links.filter(\n (link) => !link.opensChat || onChatOpen,\n );\n // Names the section as a landmark so it is discoverable alongside the main nav.\n const headingId = `${topSectionHeadingId}-${index}`;\n\n return (\n <section\n key={group.title}\n aria-labelledby={headingId}\n className={styles['footer__top-column']}\n >\n <div className={styles['footer__top-heading']}>\n {Icon && (\n <Icon\n className={styles['footer__top-icon']}\n aria-hidden=\"true\"\n />\n )}\n <h2 id={headingId} className={styles['footer__top-title']}>\n {group.title}\n </h2>\n </div>\n {links.length > 0 && (\n <ul className={styles['footer__top-links']}>\n {links.map((link) => (\n <li key={link.label}>\n {link.opensChat ? (\n <IconButton\n icon={ArrowRight}\n onClick={onChatOpen}\n className={styles['footer__top-link']}\n labelBehavior=\"wrap\"\n >\n {link.label}\n </IconButton>\n ) : (\n <IconButton\n icon={ArrowRight}\n href={link.href}\n aria-label={link.ariaLabel}\n className={styles['footer__top-link']}\n labelBehavior=\"wrap\"\n renderLink={(linkProps) =>\n renderLink(\n linkProps as FooterLinkProps,\n {\n external:\n link.external ?? false,\n },\n )\n }\n >\n {link.label}\n </IconButton>\n )}\n </li>\n ))}\n </ul>\n )}\n </section>\n );\n })}\n </div>\n </div>\n )}\n\n <div className={styles.footer__bottom}>\n <div className={cn(styles.footer__inner, styles.footer__container)}>\n {navigation && navigation.length > 0 && (\n <nav aria-label={navigationLabel}>\n {/* Accordions below 768px; the columns branch is display:none here. */}\n <div className={styles['footer__nav-accordions']}>\n {navigation.map((group) => (\n <AccordionItem\n key={group.heading}\n variant=\"panel\"\n label={group.heading}\n className={styles.footer__accordion}\n >\n <ul className={styles['footer__link-list']}>\n {group.links.map((link) => (\n <li key={link.label}>\n {renderNavLink(link, renderLink)}\n </li>\n ))}\n </ul>\n </AccordionItem>\n ))}\n </div>\n\n <div className={styles['footer__nav-columns']}>\n {navigation.map((group) => (\n <div key={group.heading} className={styles.footer__column}>\n <h2 className={styles['footer__column-heading']}>\n {group.heading}\n </h2>\n <ul className={styles['footer__link-list']}>\n {group.links.map((link) => (\n <li key={link.label}>\n {renderNavLink(link, renderLink)}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </nav>\n )}\n\n {/* The bottom bar always renders: it carries the copyright. */}\n <div\n className={cn(\n styles.footer__divider,\n Boolean(navigation?.length) && styles['footer__divider--after-nav'],\n )}\n />\n\n <div className={styles.footer__meta}>\n {languages && languages.length > 0 && (\n <ul\n className={styles['footer__language-list']}\n aria-label={languagesLabel}\n >\n {languages.map((language) => {\n const isCurrent = language.code === currentLanguageCode;\n\n return (\n <li key={language.code}>\n {renderLink(\n {\n href: language.href,\n className: cn(\n styles.footer__language,\n isCurrent &&\n styles['footer__language--current'],\n focusStyles.focusable,\n ),\n 'aria-label': language.ariaLabel,\n 'aria-current': isCurrent ? 'true' : undefined,\n children: language.label,\n },\n { external: language.external ?? false },\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n <div className={styles['footer__meta-center']}>\n {socialLinks && socialLinks.length > 0 && (\n <ul\n className={styles['footer__social-list']}\n aria-label={socialLabel}\n >\n {socialLinks.map((social) => {\n const Icon = resolveSocialIcon(social.platform);\n\n return (\n <li key={social.platform}>\n {renderLink(\n {\n href: social.href,\n className: cn(\n styles['footer__social-link'],\n focusStyles.focusable,\n ),\n 'aria-label':\n social.ariaLabel ??\n defaultSocialAriaLabel(social.platform),\n children: Icon ? (\n <Icon\n className={\n styles['footer__social-icon']\n }\n aria-hidden=\"true\"\n />\n ) : null,\n },\n { external: true },\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n {organizations && organizations.length > 0 && (\n <ul\n className={styles['footer__organization-list']}\n aria-label={organizationsLabel}\n >\n {organizations.map((organization) => {\n const isCurrent = organization.id === currentOrganizationId;\n\n return (\n <li key={organization.id}>\n {renderLink(\n {\n href: organization.href,\n className: cn(\n styles.footer__organization,\n isCurrent &&\n styles[\n 'footer__organization--current'\n ],\n focusStyles.focusable,\n ),\n 'aria-current': isCurrent\n ? 'true'\n : undefined,\n children: organization.label,\n },\n {\n external: organization.external ?? false,\n },\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n <ul\n className={styles['footer__legal-list']}\n aria-label={mandatoryLinksLabel}\n >\n {visibleMandatoryLinks.map((link) => (\n <li key={link.label}>\n {link.opensCookieSettings ? (\n <button\n type=\"button\"\n onClick={onCookieSettingsClick}\n className={linkClasses(styles.footer__action)}\n >\n {link.label}\n </button>\n ) : (\n renderNavLink(link, renderLink)\n )}\n </li>\n ))}\n <li className={styles.footer__copyright}>\n {copyrightLabel ?? defaultCopyrightLabel()}\n </li>\n </ul>\n </div>\n\n {hasBadges && (\n <div className={styles.footer__apps}>\n {appLinks?.title && (\n <span className={styles['footer__apps-title']}>\n {appLinks.title}\n </span>\n )}\n <div className={styles.footer__badges}>\n {appLinks?.appStore &&\n renderBadge(\n appLinks.appStore,\n appStoreBadge,\n renderLink,\n defaultAppStoreAriaLabel,\n )}\n {appLinks?.googlePlay &&\n renderBadge(\n appLinks.googlePlay,\n googlePlayBadge,\n renderLink,\n defaultGooglePlayAriaLabel,\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </footer>\n );\n};\n"],"names":["cn","styles","textDecorationStyles","focusStyles","jsx","defaultRenderLink","useId","jsxs","resolveTopSectionIcon","IconButton","ArrowRight","AccordionItem","resolveSocialIcon","defaultSocialAriaLabel","defaultCopyrightLabel","defaultAppStoreAriaLabel","defaultGooglePlayAriaLabel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Footer.cjs","sources":["../../../src/components/Footer/Footer.tsx"],"sourcesContent":["import { useId } from 'react';\nimport { ArrowRight } from '@dnanpm/icons';\nimport { AccordionItem } from '../AccordionItem';\nimport { IconButton } from '../IconButton';\nimport { cn } from '../../utils/cn';\nimport { focusStyles, textDecorationStyles } from '../../styles/utils';\nimport appStoreBadge from './assets/app-store-badge.svg';\nimport googlePlayBadge from './assets/google-play-badge.svg';\nimport styles from './Footer.module.css';\nimport {\n defaultAppStoreAriaLabel,\n defaultCopyrightLabel,\n defaultGooglePlayAriaLabel,\n defaultRenderLink,\n defaultSocialAriaLabel,\n resolveSocialIcon,\n resolveTopSectionIcon,\n} from './Footer.utils';\nimport type {\n FooterAppLink,\n FooterLink,\n FooterLinkProps,\n FooterProps,\n FooterRenderLink,\n} from './Footer.types';\n\nconst linkClasses = (extra?: string) =>\n cn(styles.footer__link, textDecorationStyles.underlineLink, focusStyles.focusable, extra);\n\nconst renderNavLink = (link: FooterLink, renderLink: FooterRenderLink) =>\n renderLink(\n {\n href: link.href,\n className: linkClasses(),\n 'aria-label': link.ariaLabel,\n children: link.label,\n },\n { external: link.external ?? false },\n );\n\nconst renderBadge = (\n link: FooterAppLink,\n src: string,\n renderLink: FooterRenderLink,\n fallbackAriaLabel: string,\n) =>\n renderLink(\n {\n href: link.href,\n className: cn(styles.footer__badge, focusStyles.focusable),\n 'aria-label': link.ariaLabel ?? fallbackAriaLabel,\n children: <img src={src} alt=\"\" aria-hidden=\"true\" />,\n },\n { external: true },\n );\n\nexport const Footer = ({\n topSection,\n navigation,\n socialLinks,\n organizations,\n currentOrganizationId,\n languages,\n currentLanguageCode,\n appLinks,\n mandatoryLinks,\n copyrightLabel,\n renderLink = defaultRenderLink,\n onChatOpen,\n onCookieSettingsClick,\n navigationLabel = 'Footer linkit',\n socialLabel = 'DNA sosiaalisessa mediassa',\n organizationsLabel = 'Valitse sivusto',\n languagesLabel = 'Valitse kieli',\n mandatoryLinksLabel = 'Lakisääteiset linkit',\n className,\n ref,\n ...props\n}: FooterProps) => {\n const visibleMandatoryLinks = (mandatoryLinks ?? []).filter(\n (link) => !link.opensCookieSettings || onCookieSettingsClick,\n );\n\n const hasBadges = Boolean(appLinks?.appStore || appLinks?.googlePlay);\n const topSectionHeadingId = useId();\n\n return (\n <footer\n ref={ref}\n data-color-scheme=\"dark\"\n className={cn(styles.footer, className)}\n {...props}\n >\n {topSection && topSection.length > 0 && (\n <div className={styles.footer__top}>\n <div className={cn(styles.footer__inner, styles['footer__top-row'])}>\n {topSection.map((group, index) => {\n const Icon = resolveTopSectionIcon(group.icon);\n const links = group.links.filter(\n (link) => !link.opensChat || onChatOpen,\n );\n // Names the section as a landmark so it is discoverable alongside the main nav.\n const headingId = `${topSectionHeadingId}-${index}`;\n\n return (\n <section\n key={group.title}\n aria-labelledby={headingId}\n className={styles['footer__top-column']}\n >\n <div className={styles['footer__top-heading']}>\n {Icon && (\n <Icon\n className={styles['footer__top-icon']}\n aria-hidden=\"true\"\n />\n )}\n <h2 id={headingId} className={styles['footer__top-title']}>\n {group.title}\n </h2>\n </div>\n {links.length > 0 && (\n <ul className={styles['footer__top-links']}>\n {links.map((link) => (\n <li key={link.label}>\n {link.opensChat ? (\n <IconButton\n icon={ArrowRight}\n onClick={onChatOpen}\n className={styles['footer__top-link']}\n labelBehavior=\"wrap\"\n >\n {link.label}\n </IconButton>\n ) : (\n <IconButton\n icon={ArrowRight}\n href={link.href}\n aria-label={link.ariaLabel}\n className={styles['footer__top-link']}\n labelBehavior=\"wrap\"\n renderLink={(linkProps) =>\n renderLink(\n linkProps as FooterLinkProps,\n {\n external:\n link.external ?? false,\n },\n )\n }\n >\n {link.label}\n </IconButton>\n )}\n </li>\n ))}\n </ul>\n )}\n </section>\n );\n })}\n </div>\n </div>\n )}\n\n <div className={styles.footer__bottom}>\n <div className={cn(styles.footer__inner, styles.footer__container)}>\n {navigation && navigation.length > 0 && (\n <nav aria-label={navigationLabel}>\n {/* Accordions below 768px; the columns branch is display:none here. */}\n <div className={styles['footer__nav-accordions']}>\n {navigation.map((group) => (\n <AccordionItem\n key={group.heading}\n variant=\"panel\"\n label={group.heading}\n className={styles.footer__accordion}\n >\n <ul className={styles['footer__link-list']}>\n {group.links.map((link) => (\n <li key={link.label}>\n {renderNavLink(link, renderLink)}\n </li>\n ))}\n </ul>\n </AccordionItem>\n ))}\n </div>\n\n <div className={styles['footer__nav-columns']}>\n {navigation.map((group) => (\n <div key={group.heading} className={styles.footer__column}>\n <h2 className={styles['footer__column-heading']}>\n {group.heading}\n </h2>\n <ul className={styles['footer__link-list']}>\n {group.links.map((link) => (\n <li key={link.label}>\n {renderNavLink(link, renderLink)}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </nav>\n )}\n\n {/* The bottom bar always renders: it carries the copyright. */}\n <div\n className={cn(\n styles.footer__divider,\n Boolean(navigation?.length) && styles['footer__divider--after-nav'],\n )}\n />\n\n <div className={styles.footer__meta}>\n {languages && languages.length > 0 && (\n <ul\n className={styles['footer__language-list']}\n aria-label={languagesLabel}\n >\n {languages.map((language) => {\n const isCurrent = language.code === currentLanguageCode;\n\n return (\n <li key={language.code}>\n {renderLink(\n {\n href: language.href,\n className: cn(\n styles.footer__language,\n isCurrent &&\n styles['footer__language--current'],\n focusStyles.focusable,\n ),\n 'aria-label': language.ariaLabel,\n 'aria-current': isCurrent ? 'true' : undefined,\n children: language.label,\n },\n { external: language.external ?? false },\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n <div className={styles['footer__meta-center']}>\n {socialLinks && socialLinks.length > 0 && (\n <ul\n className={styles['footer__social-list']}\n aria-label={socialLabel}\n >\n {socialLinks.map((social) => {\n const Icon = resolveSocialIcon(social.platform);\n\n return (\n <li key={social.platform}>\n {renderLink(\n {\n href: social.href,\n className: cn(\n styles['footer__social-link'],\n focusStyles.focusable,\n ),\n 'aria-label':\n social.ariaLabel ??\n defaultSocialAriaLabel(social.platform),\n children: Icon ? (\n <Icon\n className={\n styles['footer__social-icon']\n }\n aria-hidden=\"true\"\n />\n ) : null,\n },\n { external: true },\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n {organizations && organizations.length > 0 && (\n <ul\n className={styles['footer__organization-list']}\n aria-label={organizationsLabel}\n >\n {organizations.map((organization) => {\n const isCurrent = organization.id === currentOrganizationId;\n\n return (\n <li key={organization.id}>\n {renderLink(\n {\n href: organization.href,\n className: cn(\n styles.footer__organization,\n isCurrent &&\n styles[\n 'footer__organization--current'\n ],\n focusStyles.focusable,\n ),\n 'aria-current': isCurrent\n ? 'true'\n : undefined,\n children: organization.label,\n },\n {\n external: organization.external ?? false,\n },\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n <ul\n className={styles['footer__legal-list']}\n aria-label={mandatoryLinksLabel}\n >\n {visibleMandatoryLinks.map((link) => (\n <li key={link.label}>\n {link.opensCookieSettings ? (\n <button\n type=\"button\"\n onClick={onCookieSettingsClick}\n className={linkClasses(styles.footer__action)}\n >\n {link.label}\n </button>\n ) : (\n renderNavLink(link, renderLink)\n )}\n </li>\n ))}\n <li className={styles.footer__copyright}>\n {copyrightLabel ?? defaultCopyrightLabel()}\n </li>\n </ul>\n </div>\n\n {hasBadges && (\n <div className={styles.footer__apps}>\n {appLinks?.title && (\n <span className={styles['footer__apps-title']}>\n {appLinks.title}\n </span>\n )}\n <div className={styles.footer__badges}>\n {appLinks?.appStore &&\n renderBadge(\n appLinks.appStore,\n appStoreBadge,\n renderLink,\n defaultAppStoreAriaLabel,\n )}\n {appLinks?.googlePlay &&\n renderBadge(\n appLinks.googlePlay,\n googlePlayBadge,\n renderLink,\n defaultGooglePlayAriaLabel,\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </footer>\n );\n};\n"],"names":["cn","styles","textDecorationStyles","focusStyles","jsx","defaultRenderLink","useId","jsxs","index","resolveTopSectionIcon","IconButton","ArrowRight","AccordionItem","resolveSocialIcon","defaultSocialAriaLabel","defaultCopyrightLabel","defaultAppStoreAriaLabel","defaultGooglePlayAriaLabel"],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
@layer dds-components
|
|
1
|
+
@layer dds-base, dds-components;
|
|
2
|
+
|
|
3
|
+
@layer dds-components { @layer fallback, components; }
|
|
4
|
+
|
|
5
|
+
@layer dds-components.components{/**
|
|
2
6
|
* The root carries data-color-scheme="dark" because the light-scheme focus
|
|
3
7
|
* ring puts focus-strong on the outer edge, which only reaches 2.42:1 against
|
|
4
8
|
* the plum surface and fails SC 1.4.11. The dark scope swaps the ring order
|
|
5
9
|
* so focus-soft sits outside at 10.49:1.
|
|
6
10
|
*/
|
|
7
11
|
|
|
8
|
-
.
|
|
12
|
+
._footer_1iwfy_8 {
|
|
9
13
|
container-name: footer;
|
|
10
14
|
container-type: inline-size;
|
|
11
15
|
color: var(--color-semantic-foreground-inverse);
|
|
@@ -13,59 +17,59 @@
|
|
|
13
17
|
}
|
|
14
18
|
|
|
15
19
|
/* Zero specificity so modifier classes can still set their own colour. */
|
|
16
|
-
:where(.
|
|
20
|
+
:where(._footer_1iwfy_8 a) {
|
|
17
21
|
color: inherit;
|
|
18
22
|
}
|
|
19
23
|
|
|
20
24
|
/* Resets the base list styles from styles/typography.css (li carries margin). */
|
|
21
|
-
.
|
|
25
|
+
._footer_1iwfy_8 ul {
|
|
22
26
|
margin: 0;
|
|
23
27
|
padding: 0;
|
|
24
28
|
list-style: none;
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
.
|
|
31
|
+
._footer_1iwfy_8 li {
|
|
28
32
|
margin: 0;
|
|
29
33
|
}
|
|
30
34
|
|
|
31
|
-
.
|
|
32
|
-
max-width:
|
|
35
|
+
._footer__inner_1iwfy_31 {
|
|
36
|
+
max-width: var(--layout-semantic-container-wide);
|
|
33
37
|
margin-inline: auto;
|
|
34
38
|
}
|
|
35
39
|
|
|
36
|
-
.
|
|
37
|
-
.
|
|
40
|
+
._footer__top_1iwfy_36,
|
|
41
|
+
._footer__bottom_1iwfy_37 {
|
|
38
42
|
padding: var(--spacing-space-32) var(--spacing-space-16);
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
@container footer (min-width: 768px) {
|
|
42
|
-
.
|
|
43
|
-
.
|
|
46
|
+
._footer__top_1iwfy_36,
|
|
47
|
+
._footer__bottom_1iwfy_37 {
|
|
44
48
|
padding: var(--spacing-space-40) var(--spacing-space-32);
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
|
|
48
52
|
@container footer (min-width: 1024px) {
|
|
49
|
-
.
|
|
50
|
-
.
|
|
53
|
+
._footer__top_1iwfy_36,
|
|
54
|
+
._footer__bottom_1iwfy_37 {
|
|
51
55
|
padding: var(--spacing-space-40) var(--spacing-space-40);
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
|
|
55
59
|
/* === Top section === */
|
|
56
60
|
|
|
57
|
-
.
|
|
61
|
+
._footer__top_1iwfy_36 {
|
|
58
62
|
background: var(--color-semantic-surface-secondary-mid);
|
|
59
63
|
}
|
|
60
64
|
|
|
61
|
-
._footer__top-
|
|
65
|
+
._footer__top-row_1iwfy_61 {
|
|
62
66
|
display: flex;
|
|
63
67
|
flex-direction: column;
|
|
64
68
|
gap: var(--spacing-space-32);
|
|
65
69
|
}
|
|
66
70
|
|
|
67
71
|
@container footer (min-width: 768px) {
|
|
68
|
-
._footer__top-
|
|
72
|
+
._footer__top-row_1iwfy_61 {
|
|
69
73
|
flex-direction: row;
|
|
70
74
|
align-items: flex-start;
|
|
71
75
|
justify-content: space-between;
|
|
@@ -73,7 +77,7 @@
|
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
79
|
|
|
76
|
-
._footer__top-
|
|
80
|
+
._footer__top-column_1iwfy_76 {
|
|
77
81
|
display: flex;
|
|
78
82
|
flex: 1 0 0;
|
|
79
83
|
flex-direction: column;
|
|
@@ -81,25 +85,25 @@
|
|
|
81
85
|
min-width: 0;
|
|
82
86
|
}
|
|
83
87
|
|
|
84
|
-
._footer__top-
|
|
88
|
+
._footer__top-heading_1iwfy_84 {
|
|
85
89
|
display: flex;
|
|
86
90
|
flex-direction: column;
|
|
87
91
|
gap: var(--spacing-space-20);
|
|
88
92
|
align-items: flex-start;
|
|
89
93
|
}
|
|
90
94
|
|
|
91
|
-
._footer__top-
|
|
95
|
+
._footer__top-icon_1iwfy_91 {
|
|
92
96
|
width: 48px;
|
|
93
97
|
height: 48px;
|
|
94
98
|
fill: currentColor;
|
|
95
99
|
}
|
|
96
100
|
|
|
97
|
-
._footer__top-
|
|
101
|
+
._footer__top-title_1iwfy_97 {
|
|
98
102
|
margin: 0;
|
|
99
103
|
font: var(--typography-heading-xs);
|
|
100
104
|
}
|
|
101
105
|
|
|
102
|
-
._footer__top-
|
|
106
|
+
._footer__top-links_1iwfy_102 {
|
|
103
107
|
display: flex;
|
|
104
108
|
flex-direction: column;
|
|
105
109
|
gap: var(--spacing-space-8);
|
|
@@ -107,19 +111,19 @@
|
|
|
107
111
|
}
|
|
108
112
|
|
|
109
113
|
/* Removes the line box around the inline-flex child so the gap is exactly space/8. */
|
|
110
|
-
._footer__top-
|
|
111
|
-
._footer__link-
|
|
114
|
+
._footer__top-links_1iwfy_102 li,
|
|
115
|
+
._footer__link-list_1iwfy_111 li {
|
|
112
116
|
display: flex;
|
|
113
117
|
}
|
|
114
118
|
|
|
115
119
|
/* IconButton owns its own label typography and underline behaviour. */
|
|
116
|
-
._footer__top-
|
|
120
|
+
._footer__top-link_1iwfy_102 {
|
|
117
121
|
max-width: 100%;
|
|
118
122
|
}
|
|
119
123
|
|
|
120
124
|
/* === Bottom section === */
|
|
121
125
|
|
|
122
|
-
.
|
|
126
|
+
._footer__container_1iwfy_122 {
|
|
123
127
|
display: flex;
|
|
124
128
|
flex-direction: column;
|
|
125
129
|
gap: var(--spacing-space-40);
|
|
@@ -132,20 +136,20 @@
|
|
|
132
136
|
* button, which is wrong when the content is permanently visible. display:none
|
|
133
137
|
* removes the inactive branch from both the tab order and the a11y tree.
|
|
134
138
|
*/
|
|
135
|
-
._footer__nav-
|
|
139
|
+
._footer__nav-accordions_1iwfy_135 {
|
|
136
140
|
display: block;
|
|
137
141
|
}
|
|
138
142
|
|
|
139
|
-
._footer__nav-
|
|
143
|
+
._footer__nav-columns_1iwfy_139 {
|
|
140
144
|
display: none;
|
|
141
145
|
}
|
|
142
146
|
|
|
143
147
|
@container footer (min-width: 768px) {
|
|
144
|
-
._footer__nav-
|
|
148
|
+
._footer__nav-accordions_1iwfy_135 {
|
|
145
149
|
display: none;
|
|
146
150
|
}
|
|
147
151
|
|
|
148
|
-
._footer__nav-
|
|
152
|
+
._footer__nav-columns_1iwfy_139 {
|
|
149
153
|
display: flex;
|
|
150
154
|
align-items: flex-start;
|
|
151
155
|
justify-content: space-between;
|
|
@@ -153,7 +157,7 @@
|
|
|
153
157
|
}
|
|
154
158
|
}
|
|
155
159
|
|
|
156
|
-
.
|
|
160
|
+
._footer__column_1iwfy_156 {
|
|
157
161
|
display: flex;
|
|
158
162
|
flex: 1 0 0;
|
|
159
163
|
flex-direction: column;
|
|
@@ -161,12 +165,12 @@
|
|
|
161
165
|
min-width: 0;
|
|
162
166
|
}
|
|
163
167
|
|
|
164
|
-
._footer__column-
|
|
168
|
+
._footer__column-heading_1iwfy_164 {
|
|
165
169
|
margin: 0;
|
|
166
170
|
font: var(--typography-heading-xs);
|
|
167
171
|
}
|
|
168
172
|
|
|
169
|
-
._footer__link-
|
|
173
|
+
._footer__link-list_1iwfy_111 {
|
|
170
174
|
display: flex;
|
|
171
175
|
flex-direction: column;
|
|
172
176
|
gap: var(--spacing-space-8);
|
|
@@ -178,8 +182,8 @@
|
|
|
178
182
|
* left-aligned) but it stops narrow labels sitting between wider neighbours,
|
|
179
183
|
* which leaves overlapping target regions under SC 2.5.8.
|
|
180
184
|
*/
|
|
181
|
-
._footer__link-
|
|
182
|
-
._footer__link-
|
|
185
|
+
._footer__link-list_1iwfy_111 a,
|
|
186
|
+
._footer__link-list_1iwfy_111 button {
|
|
183
187
|
flex: 1 1 auto;
|
|
184
188
|
}
|
|
185
189
|
|
|
@@ -187,8 +191,8 @@
|
|
|
187
191
|
* Underline styling comes from the shared text-decoration utility; only its
|
|
188
192
|
* visibility is toggled here, matching how IconButton handles the same case.
|
|
189
193
|
*/
|
|
190
|
-
.
|
|
191
|
-
.
|
|
194
|
+
._footer__link_1iwfy_111,
|
|
195
|
+
._footer__action_1iwfy_191 {
|
|
192
196
|
display: inline-block;
|
|
193
197
|
max-width: 100%;
|
|
194
198
|
/* Keeps short labels such as "5G" at the 24px minimum target size (SC 2.5.8). */
|
|
@@ -198,15 +202,15 @@
|
|
|
198
202
|
text-decoration-color: transparent;
|
|
199
203
|
}
|
|
200
204
|
|
|
201
|
-
.
|
|
202
|
-
.
|
|
203
|
-
.
|
|
204
|
-
.
|
|
205
|
+
._footer__link_1iwfy_111:hover,
|
|
206
|
+
._footer__link_1iwfy_111:focus-visible,
|
|
207
|
+
._footer__action_1iwfy_191:hover,
|
|
208
|
+
._footer__action_1iwfy_191:focus-visible {
|
|
205
209
|
color: var(--color-semantic-foreground-link-inverse-hover);
|
|
206
210
|
text-decoration-color: currentColor;
|
|
207
211
|
}
|
|
208
212
|
|
|
209
|
-
.
|
|
213
|
+
._footer__action_1iwfy_191 {
|
|
210
214
|
padding: 0;
|
|
211
215
|
color: inherit;
|
|
212
216
|
background: none;
|
|
@@ -221,32 +225,32 @@
|
|
|
221
225
|
* is adjusted so link text aligns with the footer gutter. The block-start
|
|
222
226
|
* padding also keeps the first link off the ::details-content clip edge.
|
|
223
227
|
*/
|
|
224
|
-
.
|
|
228
|
+
._footer__accordion_1iwfy_224 > summary {
|
|
225
229
|
padding-inline: 0;
|
|
226
230
|
}
|
|
227
231
|
|
|
228
|
-
.
|
|
232
|
+
._footer__accordion_1iwfy_224 > summary + div {
|
|
229
233
|
padding-block: var(--spacing-space-8) var(--spacing-space-16);
|
|
230
234
|
padding-inline: 0;
|
|
231
235
|
}
|
|
232
236
|
|
|
233
237
|
/* === Divider === */
|
|
234
238
|
|
|
235
|
-
.
|
|
239
|
+
._footer__divider_1iwfy_235 {
|
|
236
240
|
height: 1px;
|
|
237
241
|
background: var(--color-semantic-border-neutral-mid);
|
|
238
242
|
}
|
|
239
243
|
|
|
240
244
|
/* The accordion branch already ends with a rule, so avoid doubling it. */
|
|
241
245
|
@container footer (max-width: 767px) {
|
|
242
|
-
._footer__divider--after-
|
|
246
|
+
._footer__divider--after-nav_1iwfy_242 {
|
|
243
247
|
display: none;
|
|
244
248
|
}
|
|
245
249
|
}
|
|
246
250
|
|
|
247
251
|
/* === Meta row === */
|
|
248
252
|
|
|
249
|
-
.
|
|
253
|
+
._footer__meta_1iwfy_249 {
|
|
250
254
|
display: flex;
|
|
251
255
|
flex-direction: column;
|
|
252
256
|
gap: var(--spacing-space-32);
|
|
@@ -254,7 +258,7 @@
|
|
|
254
258
|
}
|
|
255
259
|
|
|
256
260
|
@container footer (min-width: 768px) {
|
|
257
|
-
.
|
|
261
|
+
._footer__meta_1iwfy_249 {
|
|
258
262
|
flex-direction: row;
|
|
259
263
|
align-items: flex-start;
|
|
260
264
|
justify-content: center;
|
|
@@ -262,7 +266,7 @@
|
|
|
262
266
|
}
|
|
263
267
|
}
|
|
264
268
|
|
|
265
|
-
._footer__meta-
|
|
269
|
+
._footer__meta-center_1iwfy_265 {
|
|
266
270
|
display: flex;
|
|
267
271
|
flex-direction: column;
|
|
268
272
|
gap: var(--spacing-space-32);
|
|
@@ -273,14 +277,14 @@
|
|
|
273
277
|
|
|
274
278
|
/* === Language selector === */
|
|
275
279
|
|
|
276
|
-
._footer__language-
|
|
280
|
+
._footer__language-list_1iwfy_276 {
|
|
277
281
|
display: flex;
|
|
278
282
|
gap: var(--spacing-space-4);
|
|
279
283
|
align-items: center;
|
|
280
284
|
flex: 0 0 auto;
|
|
281
285
|
}
|
|
282
286
|
|
|
283
|
-
.
|
|
287
|
+
._footer__language_1iwfy_276 {
|
|
284
288
|
display: inline-flex;
|
|
285
289
|
align-items: center;
|
|
286
290
|
justify-content: center;
|
|
@@ -291,8 +295,8 @@
|
|
|
291
295
|
border-radius: var(--radius-semantic-full);
|
|
292
296
|
}
|
|
293
297
|
|
|
294
|
-
.
|
|
295
|
-
.
|
|
298
|
+
._footer__language_1iwfy_276:hover,
|
|
299
|
+
._footer__language_1iwfy_276:focus-visible {
|
|
296
300
|
background: var(--color-semantic-surface-secondary-soft);
|
|
297
301
|
}
|
|
298
302
|
|
|
@@ -300,19 +304,19 @@
|
|
|
300
304
|
* The active entry is marked with aria-current plus a filled pill, so selection
|
|
301
305
|
* is never conveyed by colour alone.
|
|
302
306
|
*/
|
|
303
|
-
._footer__language--
|
|
307
|
+
._footer__language--current_1iwfy_303 {
|
|
304
308
|
color: var(--color-semantic-foreground-default);
|
|
305
309
|
background: var(--color-semantic-surface-base);
|
|
306
310
|
}
|
|
307
311
|
|
|
308
|
-
._footer__language--
|
|
309
|
-
._footer__language--
|
|
312
|
+
._footer__language--current_1iwfy_303:hover,
|
|
313
|
+
._footer__language--current_1iwfy_303:focus-visible {
|
|
310
314
|
background: var(--color-semantic-surface-base);
|
|
311
315
|
}
|
|
312
316
|
|
|
313
317
|
/* === Social media === */
|
|
314
318
|
|
|
315
|
-
._footer__social-
|
|
319
|
+
._footer__social-list_1iwfy_315 {
|
|
316
320
|
display: flex;
|
|
317
321
|
flex-wrap: wrap;
|
|
318
322
|
gap: var(--spacing-space-16);
|
|
@@ -320,7 +324,7 @@
|
|
|
320
324
|
justify-content: center;
|
|
321
325
|
}
|
|
322
326
|
|
|
323
|
-
._footer__social-
|
|
327
|
+
._footer__social-link_1iwfy_323 {
|
|
324
328
|
display: inline-flex;
|
|
325
329
|
align-items: center;
|
|
326
330
|
justify-content: center;
|
|
@@ -330,12 +334,12 @@
|
|
|
330
334
|
border-radius: var(--radius-semantic-full);
|
|
331
335
|
}
|
|
332
336
|
|
|
333
|
-
._footer__social-
|
|
334
|
-
._footer__social-
|
|
337
|
+
._footer__social-link_1iwfy_323:hover,
|
|
338
|
+
._footer__social-link_1iwfy_323:focus-visible {
|
|
335
339
|
background: var(--color-semantic-surface-secondary-soft);
|
|
336
340
|
}
|
|
337
341
|
|
|
338
|
-
._footer__social-
|
|
342
|
+
._footer__social-icon_1iwfy_338 {
|
|
339
343
|
width: 24px;
|
|
340
344
|
height: 24px;
|
|
341
345
|
fill: currentColor;
|
|
@@ -343,7 +347,7 @@
|
|
|
343
347
|
|
|
344
348
|
/* === Organization selector === */
|
|
345
349
|
|
|
346
|
-
._footer__organization-
|
|
350
|
+
._footer__organization-list_1iwfy_346 {
|
|
347
351
|
display: flex;
|
|
348
352
|
flex-wrap: wrap;
|
|
349
353
|
gap: var(--spacing-space-8);
|
|
@@ -351,7 +355,7 @@
|
|
|
351
355
|
justify-content: center;
|
|
352
356
|
}
|
|
353
357
|
|
|
354
|
-
.
|
|
358
|
+
._footer__organization_1iwfy_346 {
|
|
355
359
|
display: inline-flex;
|
|
356
360
|
align-items: center;
|
|
357
361
|
justify-content: center;
|
|
@@ -362,25 +366,25 @@
|
|
|
362
366
|
border-radius: var(--radius-semantic-full);
|
|
363
367
|
}
|
|
364
368
|
|
|
365
|
-
.
|
|
366
|
-
.
|
|
369
|
+
._footer__organization_1iwfy_346:hover,
|
|
370
|
+
._footer__organization_1iwfy_346:focus-visible {
|
|
367
371
|
background: var(--color-semantic-surface-secondary-soft);
|
|
368
372
|
}
|
|
369
373
|
|
|
370
|
-
._footer__organization--
|
|
374
|
+
._footer__organization--current_1iwfy_370 {
|
|
371
375
|
font: var(--typography-body-sm-medium);
|
|
372
376
|
color: var(--color-semantic-foreground-default);
|
|
373
377
|
background: var(--color-semantic-surface-base);
|
|
374
378
|
}
|
|
375
379
|
|
|
376
|
-
._footer__organization--
|
|
377
|
-
._footer__organization--
|
|
380
|
+
._footer__organization--current_1iwfy_370:hover,
|
|
381
|
+
._footer__organization--current_1iwfy_370:focus-visible {
|
|
378
382
|
background: var(--color-semantic-surface-base);
|
|
379
383
|
}
|
|
380
384
|
|
|
381
385
|
/* === Legal links === */
|
|
382
386
|
|
|
383
|
-
._footer__legal-
|
|
387
|
+
._footer__legal-list_1iwfy_383 {
|
|
384
388
|
display: flex;
|
|
385
389
|
flex-wrap: wrap;
|
|
386
390
|
gap: var(--spacing-space-8) var(--spacing-space-16);
|
|
@@ -388,29 +392,29 @@
|
|
|
388
392
|
justify-content: center;
|
|
389
393
|
}
|
|
390
394
|
|
|
391
|
-
._footer__legal-
|
|
395
|
+
._footer__legal-list_1iwfy_383 li {
|
|
392
396
|
display: flex;
|
|
393
397
|
gap: var(--spacing-space-16);
|
|
394
398
|
align-items: center;
|
|
395
399
|
}
|
|
396
400
|
|
|
397
401
|
/* Decorative; kept out of the accessibility tree by using ::before rather than a real element. */
|
|
398
|
-
._footer__legal-
|
|
402
|
+
._footer__legal-list_1iwfy_383 li + li::before {
|
|
399
403
|
content: '';
|
|
400
404
|
width: 1px;
|
|
401
405
|
height: 12px;
|
|
402
406
|
background: var(--color-semantic-foreground-inverse);
|
|
403
407
|
}
|
|
404
408
|
|
|
405
|
-
._footer__legal-
|
|
406
|
-
._footer__legal-
|
|
407
|
-
.
|
|
409
|
+
._footer__legal-list_1iwfy_383 ._footer__link_1iwfy_111,
|
|
410
|
+
._footer__legal-list_1iwfy_383 ._footer__action_1iwfy_191,
|
|
411
|
+
._footer__copyright_1iwfy_407 {
|
|
408
412
|
font: var(--typography-body-sm);
|
|
409
413
|
}
|
|
410
414
|
|
|
411
415
|
/* === App badges === */
|
|
412
416
|
|
|
413
|
-
.
|
|
417
|
+
._footer__apps_1iwfy_413 {
|
|
414
418
|
display: flex;
|
|
415
419
|
flex-direction: column;
|
|
416
420
|
gap: var(--spacing-space-8);
|
|
@@ -419,16 +423,16 @@
|
|
|
419
423
|
}
|
|
420
424
|
|
|
421
425
|
@container footer (min-width: 768px) {
|
|
422
|
-
.
|
|
426
|
+
._footer__apps_1iwfy_413 {
|
|
423
427
|
align-items: flex-start;
|
|
424
428
|
}
|
|
425
429
|
}
|
|
426
430
|
|
|
427
|
-
._footer__apps-
|
|
431
|
+
._footer__apps-title_1iwfy_427 {
|
|
428
432
|
font: var(--typography-body-md-medium);
|
|
429
433
|
}
|
|
430
434
|
|
|
431
|
-
.
|
|
435
|
+
._footer__badges_1iwfy_431 {
|
|
432
436
|
display: flex;
|
|
433
437
|
flex-wrap: wrap;
|
|
434
438
|
gap: var(--spacing-space-8);
|
|
@@ -436,18 +440,18 @@
|
|
|
436
440
|
}
|
|
437
441
|
|
|
438
442
|
@container footer (min-width: 768px) {
|
|
439
|
-
.
|
|
443
|
+
._footer__badges_1iwfy_431 {
|
|
440
444
|
flex-direction: column;
|
|
441
445
|
align-items: flex-start;
|
|
442
446
|
}
|
|
443
447
|
}
|
|
444
448
|
|
|
445
|
-
.
|
|
449
|
+
._footer__badge_1iwfy_431 {
|
|
446
450
|
display: inline-flex;
|
|
447
451
|
border-radius: var(--radius-semantic-md);
|
|
448
452
|
}
|
|
449
453
|
|
|
450
|
-
.
|
|
454
|
+
._footer__badge_1iwfy_431 img {
|
|
451
455
|
display: block;
|
|
452
456
|
width: 140px;
|
|
453
457
|
height: 40px;
|
|
@@ -461,13 +465,16 @@
|
|
|
461
465
|
}
|
|
462
466
|
|
|
463
467
|
@media (forced-colors: active) {
|
|
464
|
-
.
|
|
468
|
+
._footer__divider_1iwfy_235 {
|
|
465
469
|
background: CanvasText;
|
|
466
470
|
}
|
|
467
471
|
|
|
468
|
-
._footer__language--
|
|
469
|
-
._footer__organization--
|
|
472
|
+
._footer__language--current_1iwfy_303,
|
|
473
|
+
._footer__organization--current_1iwfy_370 {
|
|
470
474
|
outline: 2px solid Highlight;
|
|
471
475
|
}
|
|
472
476
|
}
|
|
473
|
-
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Do not edit directly, this file was auto-generated.
|
|
480
|
+
*/ }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/Footer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/Footer.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAIR,WAAW,EAEd,MAAM,gBAAgB,CAAC;AAgCxB,eAAO,MAAM,MAAM,GAAI,yTAsBpB,WAAW,4CA2Sb,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useId } from "react";
|
|
3
3
|
import { ArrowRight } from "@dnanpm/icons";
|
|
4
|
-
import focusStyles from "../../styles/utils/
|
|
5
|
-
import textDecorationStyles from "../../styles/utils/text-decoration.module.css.js";
|
|
4
|
+
import { focusStyles, textDecorationStyles } from "../../styles/utils/index.js";
|
|
6
5
|
import appStoreBadge from "./assets/app-store-badge.svg.js";
|
|
7
6
|
import googlePlayBadge from "./assets/google-play-badge.svg.js";
|
|
8
7
|
import styles from "./Footer.module.css.js";
|