@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.
Files changed (249) hide show
  1. package/README.md +13 -0
  2. package/dist/components/Accordion/Accordion.css +9 -2
  3. package/dist/components/AccordionItem/AccordionItem.cjs +4 -4
  4. package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
  5. package/dist/components/AccordionItem/AccordionItem.css +8 -2
  6. package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -1
  7. package/dist/components/AccordionItem/AccordionItem.js +2 -2
  8. package/dist/components/AccordionItem/AccordionItem.js.map +1 -1
  9. package/dist/components/Avatar/Avatar.cjs +83 -0
  10. package/dist/components/Avatar/Avatar.cjs.map +1 -0
  11. package/dist/components/Avatar/Avatar.css +188 -0
  12. package/dist/components/Avatar/Avatar.d.ts +3 -0
  13. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  14. package/dist/components/Avatar/Avatar.js +83 -0
  15. package/dist/components/Avatar/Avatar.js.map +1 -0
  16. package/dist/components/Avatar/Avatar.module.css.cjs +40 -0
  17. package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
  18. package/dist/components/Avatar/Avatar.module.css.js +40 -0
  19. package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
  20. package/dist/components/Avatar/Avatar.types.d.ts +66 -0
  21. package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
  22. package/dist/components/Avatar/Avatar.utils.cjs +17 -0
  23. package/dist/components/Avatar/Avatar.utils.cjs.map +1 -0
  24. package/dist/components/Avatar/Avatar.utils.d.ts +6 -0
  25. package/dist/components/Avatar/Avatar.utils.d.ts.map +1 -0
  26. package/dist/components/Avatar/Avatar.utils.js +17 -0
  27. package/dist/components/Avatar/Avatar.utils.js.map +1 -0
  28. package/dist/components/Avatar/index.d.ts +3 -0
  29. package/dist/components/Avatar/index.d.ts.map +1 -0
  30. package/dist/components/Breadcrumb/Breadcrumb.cjs +9 -12
  31. package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
  32. package/dist/components/Breadcrumb/Breadcrumb.css +20 -17
  33. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  34. package/dist/components/Breadcrumb/Breadcrumb.js +2 -5
  35. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  36. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +5 -8
  37. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -1
  38. package/dist/components/Breadcrumb/Breadcrumb.module.css.js +5 -8
  39. package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +1 -1
  40. package/dist/components/Button/Button.cjs +29 -3
  41. package/dist/components/Button/Button.cjs.map +1 -1
  42. package/dist/components/Button/Button.css +76 -30
  43. package/dist/components/Button/Button.d.ts +1 -1
  44. package/dist/components/Button/Button.d.ts.map +1 -1
  45. package/dist/components/Button/Button.js +28 -2
  46. package/dist/components/Button/Button.js.map +1 -1
  47. package/dist/components/Button/Button.module.css.cjs +19 -11
  48. package/dist/components/Button/Button.module.css.cjs.map +1 -1
  49. package/dist/components/Button/Button.module.css.js +19 -11
  50. package/dist/components/Button/Button.module.css.js.map +1 -1
  51. package/dist/components/Button/Button.types.d.ts +20 -3
  52. package/dist/components/Button/Button.types.d.ts.map +1 -1
  53. package/dist/components/Button/index.d.ts +1 -1
  54. package/dist/components/Button/index.d.ts.map +1 -1
  55. package/dist/components/ButtonCard/ButtonCard.cjs +19 -14
  56. package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -1
  57. package/dist/components/ButtonCard/ButtonCard.css +62 -20
  58. package/dist/components/ButtonCard/ButtonCard.d.ts +2 -1
  59. package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -1
  60. package/dist/components/ButtonCard/ButtonCard.js +17 -12
  61. package/dist/components/ButtonCard/ButtonCard.js.map +1 -1
  62. package/dist/components/ButtonCard/ButtonCard.module.css.cjs +14 -12
  63. package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -1
  64. package/dist/components/ButtonCard/ButtonCard.module.css.js +14 -12
  65. package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -1
  66. package/dist/components/ButtonCard/ButtonCard.types.d.ts +3 -2
  67. package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -1
  68. package/dist/components/Checkbox/Checkbox.cjs +105 -0
  69. package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
  70. package/dist/components/Checkbox/Checkbox.css +323 -0
  71. package/dist/components/Checkbox/Checkbox.d.ts +3 -0
  72. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  73. package/dist/components/Checkbox/Checkbox.js +105 -0
  74. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  75. package/dist/components/Checkbox/Checkbox.module.css.cjs +35 -0
  76. package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
  77. package/dist/components/Checkbox/Checkbox.module.css.js +35 -0
  78. package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
  79. package/dist/components/Checkbox/Checkbox.types.d.ts +47 -0
  80. package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
  81. package/dist/components/Checkbox/index.d.ts +3 -0
  82. package/dist/components/Checkbox/index.d.ts.map +1 -0
  83. package/dist/components/ContentCard/ContentCard.cjs +97 -0
  84. package/dist/components/ContentCard/ContentCard.cjs.map +1 -0
  85. package/dist/components/ContentCard/ContentCard.css +254 -0
  86. package/dist/components/ContentCard/ContentCard.d.ts +3 -0
  87. package/dist/components/ContentCard/ContentCard.d.ts.map +1 -0
  88. package/dist/components/ContentCard/ContentCard.js +97 -0
  89. package/dist/components/ContentCard/ContentCard.js.map +1 -0
  90. package/dist/components/ContentCard/ContentCard.module.css.cjs +24 -0
  91. package/dist/components/ContentCard/ContentCard.module.css.cjs.map +1 -0
  92. package/dist/components/ContentCard/ContentCard.module.css.js +25 -0
  93. package/dist/components/ContentCard/ContentCard.module.css.js.map +1 -0
  94. package/dist/components/ContentCard/ContentCard.types.d.ts +100 -0
  95. package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -0
  96. package/dist/components/ContentCard/index.d.ts +3 -0
  97. package/dist/components/ContentCard/index.d.ts.map +1 -0
  98. package/dist/components/Drawer/Drawer.cjs +15 -7
  99. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  100. package/dist/components/Drawer/Drawer.css +47 -45
  101. package/dist/components/Drawer/Drawer.d.ts.map +1 -1
  102. package/dist/components/Drawer/Drawer.js +12 -4
  103. package/dist/components/Drawer/Drawer.js.map +1 -1
  104. package/dist/components/Drawer/Drawer.module.css.cjs +16 -16
  105. package/dist/components/Drawer/Drawer.module.css.js +16 -16
  106. package/dist/components/Footer/Footer.cjs +8 -9
  107. package/dist/components/Footer/Footer.cjs.map +1 -1
  108. package/dist/components/Footer/Footer.css +91 -84
  109. package/dist/components/Footer/Footer.d.ts.map +1 -1
  110. package/dist/components/Footer/Footer.js +1 -2
  111. package/dist/components/Footer/Footer.js.map +1 -1
  112. package/dist/components/Footer/Footer.module.css.cjs +39 -39
  113. package/dist/components/Footer/Footer.module.css.js +39 -39
  114. package/dist/components/FunctionButton/FunctionButton.cjs +2 -2
  115. package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -1
  116. package/dist/components/FunctionButton/FunctionButton.css +5 -2
  117. package/dist/components/FunctionButton/FunctionButton.js +1 -1
  118. package/dist/components/FunctionButton/FunctionButton.js.map +1 -1
  119. package/dist/components/Hero/Hero.cjs +30 -29
  120. package/dist/components/Hero/Hero.cjs.map +1 -1
  121. package/dist/components/Hero/Hero.css +86 -74
  122. package/dist/components/Hero/Hero.d.ts +1 -1
  123. package/dist/components/Hero/Hero.d.ts.map +1 -1
  124. package/dist/components/Hero/Hero.js +30 -29
  125. package/dist/components/Hero/Hero.js.map +1 -1
  126. package/dist/components/Hero/Hero.module.css.cjs +20 -17
  127. package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
  128. package/dist/components/Hero/Hero.module.css.js +20 -17
  129. package/dist/components/Hero/Hero.module.css.js.map +1 -1
  130. package/dist/components/Hero/Hero.types.d.ts +2 -6
  131. package/dist/components/Hero/Hero.types.d.ts.map +1 -1
  132. package/dist/components/IconButton/IconButton.cjs +3 -4
  133. package/dist/components/IconButton/IconButton.cjs.map +1 -1
  134. package/dist/components/IconButton/IconButton.css +5 -2
  135. package/dist/components/IconButton/IconButton.d.ts.map +1 -1
  136. package/dist/components/IconButton/IconButton.js +1 -2
  137. package/dist/components/IconButton/IconButton.js.map +1 -1
  138. package/dist/components/Label/Label.css +5 -2
  139. package/dist/components/MainNavigation/MainNavigation.cjs +556 -191
  140. package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
  141. package/dist/components/MainNavigation/MainNavigation.css +297 -170
  142. package/dist/components/MainNavigation/MainNavigation.d.ts +1 -1
  143. package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -1
  144. package/dist/components/MainNavigation/MainNavigation.js +526 -161
  145. package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
  146. package/dist/components/MainNavigation/MainNavigation.module.css.cjs +80 -68
  147. package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
  148. package/dist/components/MainNavigation/MainNavigation.module.css.js +80 -68
  149. package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
  150. package/dist/components/MainNavigation/MainNavigation.types.d.ts +55 -21
  151. package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
  152. package/dist/components/MainNavigation/MainNavigation.utils.cjs +28 -4
  153. package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
  154. package/dist/components/MainNavigation/MainNavigation.utils.d.ts +11 -1
  155. package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
  156. package/dist/components/MainNavigation/MainNavigation.utils.js +28 -4
  157. package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -1
  158. package/dist/components/MainNavigation/index.d.ts +1 -1
  159. package/dist/components/MainNavigation/index.d.ts.map +1 -1
  160. package/dist/components/Modal/Modal.cjs +14 -6
  161. package/dist/components/Modal/Modal.cjs.map +1 -1
  162. package/dist/components/Modal/Modal.css +43 -40
  163. package/dist/components/Modal/Modal.d.ts.map +1 -1
  164. package/dist/components/Modal/Modal.js +12 -4
  165. package/dist/components/Modal/Modal.js.map +1 -1
  166. package/dist/components/Modal/Modal.module.css.cjs +18 -18
  167. package/dist/components/Modal/Modal.module.css.js +18 -18
  168. package/dist/components/Notification/Notification.cjs +3 -2
  169. package/dist/components/Notification/Notification.cjs.map +1 -1
  170. package/dist/components/Notification/Notification.css +20 -12
  171. package/dist/components/Notification/Notification.d.ts.map +1 -1
  172. package/dist/components/Notification/Notification.js +2 -1
  173. package/dist/components/Notification/Notification.js.map +1 -1
  174. package/dist/components/Notification/Notification.module.css.cjs +9 -9
  175. package/dist/components/Notification/Notification.module.css.js +9 -9
  176. package/dist/components/Pagination/Pagination.cjs +142 -0
  177. package/dist/components/Pagination/Pagination.cjs.map +1 -0
  178. package/dist/components/Pagination/Pagination.css +256 -0
  179. package/dist/components/Pagination/Pagination.d.ts +3 -0
  180. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  181. package/dist/components/Pagination/Pagination.js +142 -0
  182. package/dist/components/Pagination/Pagination.js.map +1 -0
  183. package/dist/components/Pagination/Pagination.module.css.cjs +34 -0
  184. package/dist/components/Pagination/Pagination.module.css.cjs.map +1 -0
  185. package/dist/components/Pagination/Pagination.module.css.js +34 -0
  186. package/dist/components/Pagination/Pagination.module.css.js.map +1 -0
  187. package/dist/components/Pagination/Pagination.types.d.ts +20 -0
  188. package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
  189. package/dist/components/Pagination/Pagination.utils.cjs +76 -0
  190. package/dist/components/Pagination/Pagination.utils.cjs.map +1 -0
  191. package/dist/components/Pagination/Pagination.utils.d.ts +21 -0
  192. package/dist/components/Pagination/Pagination.utils.d.ts.map +1 -0
  193. package/dist/components/Pagination/Pagination.utils.js +76 -0
  194. package/dist/components/Pagination/Pagination.utils.js.map +1 -0
  195. package/dist/components/Pagination/index.d.ts +3 -0
  196. package/dist/components/Pagination/index.d.ts.map +1 -0
  197. package/dist/components/Pictograph/Pictograph.css +9 -2
  198. package/dist/components/Pictograph/PictographItem.css +9 -2
  199. package/dist/components/Quote/Quote.css +5 -2
  200. package/dist/components/Spinner/Spinner.css +9 -2
  201. package/dist/design-tokens/dist/tokens.cjs +5 -0
  202. package/dist/design-tokens/dist/tokens.cjs.map +1 -0
  203. package/dist/design-tokens/dist/tokens.js +5 -0
  204. package/dist/design-tokens/dist/tokens.js.map +1 -0
  205. package/dist/index.cjs +8 -0
  206. package/dist/index.cjs.map +1 -1
  207. package/dist/index.d.ts +10 -2
  208. package/dist/index.d.ts.map +1 -1
  209. package/dist/index.js +8 -0
  210. package/dist/index.js.map +1 -1
  211. package/dist/styles/utilities.css +6 -0
  212. package/dist/styles/utils/elevation.css +34 -26
  213. package/dist/styles/utils/focus.css +63 -65
  214. package/dist/styles/utils/index.cjs +33 -0
  215. package/dist/styles/utils/index.cjs.map +1 -0
  216. package/dist/styles/utils/index.d.ts +20 -0
  217. package/dist/styles/utils/index.d.ts.map +1 -0
  218. package/dist/styles/utils/index.js +33 -0
  219. package/dist/styles/utils/index.js.map +1 -0
  220. package/dist/styles/utils/overlay.css +35 -28
  221. package/dist/styles/utils/text-decoration.css +19 -12
  222. package/dist/styles.css +46 -12
  223. package/dist/utils/index.d.ts +1 -0
  224. package/dist/utils/index.d.ts.map +1 -1
  225. package/dist/utils/isRenderable/index.d.ts +2 -0
  226. package/dist/utils/isRenderable/index.d.ts.map +1 -0
  227. package/dist/utils/isRenderable/isRenderable.cjs +5 -0
  228. package/dist/utils/isRenderable/isRenderable.cjs.map +1 -0
  229. package/dist/utils/isRenderable/isRenderable.d.ts +4 -0
  230. package/dist/utils/isRenderable/isRenderable.d.ts.map +1 -0
  231. package/dist/utils/isRenderable/isRenderable.js +5 -0
  232. package/dist/utils/isRenderable/isRenderable.js.map +1 -0
  233. package/package.json +12 -4
  234. package/dist/styles/utils/elevation.module.css.cjs +0 -16
  235. package/dist/styles/utils/elevation.module.css.cjs.map +0 -1
  236. package/dist/styles/utils/elevation.module.css.js +0 -16
  237. package/dist/styles/utils/elevation.module.css.js.map +0 -1
  238. package/dist/styles/utils/focus.module.css.cjs +0 -16
  239. package/dist/styles/utils/focus.module.css.cjs.map +0 -1
  240. package/dist/styles/utils/focus.module.css.js +0 -16
  241. package/dist/styles/utils/focus.module.css.js.map +0 -1
  242. package/dist/styles/utils/overlay.module.css.cjs +0 -13
  243. package/dist/styles/utils/overlay.module.css.cjs.map +0 -1
  244. package/dist/styles/utils/overlay.module.css.js +0 -13
  245. package/dist/styles/utils/overlay.module.css.js.map +0 -1
  246. package/dist/styles/utils/text-decoration.module.css.cjs +0 -13
  247. package/dist/styles/utils/text-decoration.module.css.cjs.map +0 -1
  248. package/dist/styles/utils/text-decoration.module.css.js +0 -13
  249. 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
- ._footer_1lum3_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(._footer_1lum3_8 a) {
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
- ._footer_1lum3_8 ul {
25
+ ._footer_1iwfy_8 ul {
22
26
  margin: 0;
23
27
  padding: 0;
24
28
  list-style: none;
25
29
  }
26
30
 
27
- ._footer_1lum3_8 li {
31
+ ._footer_1iwfy_8 li {
28
32
  margin: 0;
29
33
  }
30
34
 
31
- ._footer__inner_1lum3_31 {
32
- max-width: 1280px;
35
+ ._footer__inner_1iwfy_31 {
36
+ max-width: var(--layout-semantic-container-wide);
33
37
  margin-inline: auto;
34
38
  }
35
39
 
36
- ._footer__top_1lum3_36,
37
- ._footer__bottom_1lum3_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
- ._footer__top_1lum3_36,
43
- ._footer__bottom_1lum3_37 {
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
- ._footer__top_1lum3_36,
50
- ._footer__bottom_1lum3_37 {
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
- ._footer__top_1lum3_36 {
61
+ ._footer__top_1iwfy_36 {
58
62
  background: var(--color-semantic-surface-secondary-mid);
59
63
  }
60
64
 
61
- ._footer__top-row_1lum3_61 {
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-row_1lum3_61 {
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-column_1lum3_76 {
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-heading_1lum3_84 {
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-icon_1lum3_91 {
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-title_1lum3_97 {
101
+ ._footer__top-title_1iwfy_97 {
98
102
  margin: 0;
99
103
  font: var(--typography-heading-xs);
100
104
  }
101
105
 
102
- ._footer__top-links_1lum3_102 {
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-links_1lum3_102 li,
111
- ._footer__link-list_1lum3_111 li {
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-link_1lum3_102 {
120
+ ._footer__top-link_1iwfy_102 {
117
121
  max-width: 100%;
118
122
  }
119
123
 
120
124
  /* === Bottom section === */
121
125
 
122
- ._footer__container_1lum3_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-accordions_1lum3_135 {
139
+ ._footer__nav-accordions_1iwfy_135 {
136
140
  display: block;
137
141
  }
138
142
 
139
- ._footer__nav-columns_1lum3_139 {
143
+ ._footer__nav-columns_1iwfy_139 {
140
144
  display: none;
141
145
  }
142
146
 
143
147
  @container footer (min-width: 768px) {
144
- ._footer__nav-accordions_1lum3_135 {
148
+ ._footer__nav-accordions_1iwfy_135 {
145
149
  display: none;
146
150
  }
147
151
 
148
- ._footer__nav-columns_1lum3_139 {
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
- ._footer__column_1lum3_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-heading_1lum3_164 {
168
+ ._footer__column-heading_1iwfy_164 {
165
169
  margin: 0;
166
170
  font: var(--typography-heading-xs);
167
171
  }
168
172
 
169
- ._footer__link-list_1lum3_111 {
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-list_1lum3_111 a,
182
- ._footer__link-list_1lum3_111 button {
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
- ._footer__link_1lum3_111,
191
- ._footer__action_1lum3_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
- ._footer__link_1lum3_111:hover,
202
- ._footer__link_1lum3_111:focus-visible,
203
- ._footer__action_1lum3_191:hover,
204
- ._footer__action_1lum3_191:focus-visible {
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
- ._footer__action_1lum3_191 {
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
- ._footer__accordion_1lum3_224 > summary {
228
+ ._footer__accordion_1iwfy_224 > summary {
225
229
  padding-inline: 0;
226
230
  }
227
231
 
228
- ._footer__accordion_1lum3_224 > summary + div {
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
- ._footer__divider_1lum3_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-nav_1lum3_242 {
246
+ ._footer__divider--after-nav_1iwfy_242 {
243
247
  display: none;
244
248
  }
245
249
  }
246
250
 
247
251
  /* === Meta row === */
248
252
 
249
- ._footer__meta_1lum3_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
- ._footer__meta_1lum3_249 {
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-center_1lum3_265 {
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-list_1lum3_276 {
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
- ._footer__language_1lum3_276 {
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
- ._footer__language_1lum3_276:hover,
295
- ._footer__language_1lum3_276:focus-visible {
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--current_1lum3_303 {
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--current_1lum3_303:hover,
309
- ._footer__language--current_1lum3_303:focus-visible {
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-list_1lum3_315 {
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-link_1lum3_323 {
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-link_1lum3_323:hover,
334
- ._footer__social-link_1lum3_323:focus-visible {
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-icon_1lum3_338 {
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-list_1lum3_346 {
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
- ._footer__organization_1lum3_346 {
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
- ._footer__organization_1lum3_346:hover,
366
- ._footer__organization_1lum3_346:focus-visible {
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--current_1lum3_370 {
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--current_1lum3_370:hover,
377
- ._footer__organization--current_1lum3_370:focus-visible {
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-list_1lum3_383 {
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-list_1lum3_383 li {
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-list_1lum3_383 li + li::before {
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-list_1lum3_383 ._footer__link_1lum3_111,
406
- ._footer__legal-list_1lum3_383 ._footer__action_1lum3_191,
407
- ._footer__copyright_1lum3_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
- ._footer__apps_1lum3_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
- ._footer__apps_1lum3_413 {
426
+ ._footer__apps_1iwfy_413 {
423
427
  align-items: flex-start;
424
428
  }
425
429
  }
426
430
 
427
- ._footer__apps-title_1lum3_427 {
431
+ ._footer__apps-title_1iwfy_427 {
428
432
  font: var(--typography-body-md-medium);
429
433
  }
430
434
 
431
- ._footer__badges_1lum3_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
- ._footer__badges_1lum3_431 {
443
+ ._footer__badges_1iwfy_431 {
440
444
  flex-direction: column;
441
445
  align-items: flex-start;
442
446
  }
443
447
  }
444
448
 
445
- ._footer__badge_1lum3_431 {
449
+ ._footer__badge_1iwfy_431 {
446
450
  display: inline-flex;
447
451
  border-radius: var(--radius-semantic-md);
448
452
  }
449
453
 
450
- ._footer__badge_1lum3_431 img {
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
- ._footer__divider_1lum3_235 {
468
+ ._footer__divider_1iwfy_235 {
465
469
  background: CanvasText;
466
470
  }
467
471
 
468
- ._footer__language--current_1lum3_303,
469
- ._footer__organization--current_1lum3_370 {
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":"AAmBA,OAAO,KAAK,EAIR,WAAW,EAEd,MAAM,gBAAgB,CAAC;AAgCxB,eAAO,MAAM,MAAM,GAAI,yTAsBpB,WAAW,4CA2Sb,CAAC"}
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/focus.module.css.js";
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";