@dnanpm/ui-components 0.6.0 → 0.8.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/dist/components/AccordionItem/AccordionItem.css +16 -16
- package/dist/components/AccordionItem/AccordionItem.module.css.cjs +11 -11
- package/dist/components/AccordionItem/AccordionItem.module.css.js +11 -11
- package/dist/components/Breadcrumb/Breadcrumb.css +9 -9
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +6 -6
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +6 -6
- package/dist/components/Button/Button.css +32 -30
- package/dist/components/Button/Button.module.css.cjs +11 -11
- package/dist/components/Button/Button.module.css.js +11 -11
- package/dist/components/ButtonCard/ButtonCard.cjs +105 -0
- package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.css +167 -0
- package/dist/components/ButtonCard/ButtonCard.d.ts +3 -0
- package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.js +105 -0
- package/dist/components/ButtonCard/ButtonCard.js.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs +18 -0
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.module.css.js +19 -0
- package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -0
- package/dist/components/ButtonCard/ButtonCard.types.d.ts +103 -0
- package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -0
- package/dist/components/ButtonCard/index.d.ts +3 -0
- package/dist/components/ButtonCard/index.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.cjs +101 -0
- package/dist/components/Drawer/Drawer.cjs.map +1 -0
- package/dist/components/Drawer/Drawer.css +219 -0
- package/dist/components/Drawer/Drawer.d.ts +3 -0
- package/dist/components/Drawer/Drawer.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.js +101 -0
- package/dist/components/Drawer/Drawer.js.map +1 -0
- package/dist/components/Drawer/Drawer.module.css.cjs +37 -0
- package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -0
- package/dist/components/Drawer/Drawer.module.css.js +37 -0
- package/dist/components/Drawer/Drawer.module.css.js.map +1 -0
- package/dist/components/Drawer/Drawer.types.d.ts +63 -0
- package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
- package/dist/components/Drawer/index.d.ts +3 -0
- package/dist/components/Drawer/index.d.ts.map +1 -0
- package/dist/components/Footer/Footer.cjs +272 -0
- package/dist/components/Footer/Footer.cjs.map +1 -0
- package/dist/components/Footer/Footer.css +473 -0
- package/dist/components/Footer/Footer.d.ts +3 -0
- package/dist/components/Footer/Footer.d.ts.map +1 -0
- package/dist/components/Footer/Footer.js +272 -0
- package/dist/components/Footer/Footer.js.map +1 -0
- package/dist/components/Footer/Footer.module.css.cjs +80 -0
- package/dist/components/Footer/Footer.module.css.cjs.map +1 -0
- package/dist/components/Footer/Footer.module.css.js +80 -0
- package/dist/components/Footer/Footer.module.css.js.map +1 -0
- package/dist/components/Footer/Footer.types.d.ts +128 -0
- package/dist/components/Footer/Footer.types.d.ts.map +1 -0
- package/dist/components/Footer/Footer.utils.cjs +41 -0
- package/dist/components/Footer/Footer.utils.cjs.map +1 -0
- package/dist/components/Footer/Footer.utils.d.ts +13 -0
- package/dist/components/Footer/Footer.utils.d.ts.map +1 -0
- package/dist/components/Footer/Footer.utils.js +41 -0
- package/dist/components/Footer/Footer.utils.js.map +1 -0
- package/dist/components/Footer/assets/app-store-badge.svg.cjs +4 -0
- package/dist/components/Footer/assets/app-store-badge.svg.cjs.map +1 -0
- package/dist/components/Footer/assets/app-store-badge.svg.js +5 -0
- package/dist/components/Footer/assets/app-store-badge.svg.js.map +1 -0
- package/dist/components/Footer/assets/google-play-badge.svg.cjs +4 -0
- package/dist/components/Footer/assets/google-play-badge.svg.cjs.map +1 -0
- package/dist/components/Footer/assets/google-play-badge.svg.js +5 -0
- package/dist/components/Footer/assets/google-play-badge.svg.js.map +1 -0
- package/dist/components/Footer/index.d.ts +3 -0
- package/dist/components/Footer/index.d.ts.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.cjs +34 -0
- package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.css +125 -0
- package/dist/components/FunctionButton/FunctionButton.d.ts +3 -0
- package/dist/components/FunctionButton/FunctionButton.d.ts.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.js +34 -0
- package/dist/components/FunctionButton/FunctionButton.js.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.module.css.cjs +11 -0
- package/dist/components/FunctionButton/FunctionButton.module.css.cjs.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.module.css.js +12 -0
- package/dist/components/FunctionButton/FunctionButton.module.css.js.map +1 -0
- package/dist/components/FunctionButton/FunctionButton.types.d.ts +21 -0
- package/dist/components/FunctionButton/FunctionButton.types.d.ts.map +1 -0
- package/dist/components/FunctionButton/index.d.ts +3 -0
- package/dist/components/FunctionButton/index.d.ts.map +1 -0
- package/dist/components/Hero/Hero.cjs +44 -30
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +89 -100
- 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 +45 -31
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +17 -20
- package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
- package/dist/components/Hero/Hero.module.css.js +17 -20
- package/dist/components/Hero/Hero.module.css.js.map +1 -1
- package/dist/components/Hero/Hero.types.d.ts +8 -3
- package/dist/components/Hero/Hero.types.d.ts.map +1 -1
- package/dist/components/Hero/Hero.utils.cjs +5 -8
- package/dist/components/Hero/Hero.utils.cjs.map +1 -1
- package/dist/components/Hero/Hero.utils.d.ts +2 -2
- package/dist/components/Hero/Hero.utils.d.ts.map +1 -1
- package/dist/components/Hero/Hero.utils.js +5 -8
- package/dist/components/Hero/Hero.utils.js.map +1 -1
- package/dist/components/IconButton/IconButton.css +31 -32
- package/dist/components/IconButton/IconButton.module.css.cjs +9 -9
- package/dist/components/IconButton/IconButton.module.css.js +9 -9
- package/dist/components/MainNavigation/MainNavigation.cjs +1094 -0
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.css +948 -0
- package/dist/components/MainNavigation/MainNavigation.d.ts +3 -0
- package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.js +1094 -0
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +74 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.js +75 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +149 -0
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +168 -0
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +29 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.js +168 -0
- package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -0
- package/dist/components/MainNavigation/index.d.ts +3 -0
- package/dist/components/MainNavigation/index.d.ts.map +1 -0
- package/dist/components/Modal/Modal.cjs +101 -0
- package/dist/components/Modal/Modal.cjs.map +1 -0
- package/dist/components/Modal/Modal.css +205 -0
- package/dist/components/Modal/Modal.d.ts +3 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -0
- package/dist/components/Modal/Modal.js +101 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/Modal.module.css.cjs +39 -0
- package/dist/components/Modal/Modal.module.css.cjs.map +1 -0
- package/dist/components/Modal/Modal.module.css.js +39 -0
- package/dist/components/Modal/Modal.module.css.js.map +1 -0
- package/dist/components/Modal/Modal.types.d.ts +62 -0
- package/dist/components/Modal/Modal.types.d.ts.map +1 -0
- package/dist/components/Modal/index.d.ts +3 -0
- package/dist/components/Modal/index.d.ts.map +1 -0
- package/dist/components/Modal/useDialogDismissal.cjs +41 -0
- package/dist/components/Modal/useDialogDismissal.cjs.map +1 -0
- package/dist/components/Modal/useDialogDismissal.d.ts +17 -0
- package/dist/components/Modal/useDialogDismissal.d.ts.map +1 -0
- package/dist/components/Modal/useDialogDismissal.js +41 -0
- package/dist/components/Modal/useDialogDismissal.js.map +1 -0
- package/dist/components/Modal/useNativeDialog.cjs +126 -0
- package/dist/components/Modal/useNativeDialog.cjs.map +1 -0
- package/dist/components/Modal/useNativeDialog.d.ts +14 -0
- package/dist/components/Modal/useNativeDialog.d.ts.map +1 -0
- package/dist/components/Modal/useNativeDialog.js +126 -0
- package/dist/components/Modal/useNativeDialog.js.map +1 -0
- package/dist/components/Pictograph/Pictograph.css +69 -57
- package/dist/components/Pictograph/Pictograph.module.css.cjs +11 -11
- package/dist/components/Pictograph/Pictograph.module.css.js +11 -11
- package/dist/components/Pictograph/Pictograph.types.d.ts +2 -2
- package/dist/components/Pictograph/PictographItem.cjs +15 -4
- package/dist/components/Pictograph/PictographItem.cjs.map +1 -1
- package/dist/components/Pictograph/PictographItem.css +26 -23
- package/dist/components/Pictograph/PictographItem.d.ts.map +1 -1
- package/dist/components/Pictograph/PictographItem.js +15 -4
- package/dist/components/Pictograph/PictographItem.js.map +1 -1
- package/dist/components/Pictograph/PictographItem.module.css.cjs +3 -3
- package/dist/components/Pictograph/PictographItem.module.css.js +3 -3
- package/dist/components/Quote/Quote.cjs +32 -0
- package/dist/components/Quote/Quote.cjs.map +1 -0
- package/dist/components/Quote/Quote.css +95 -0
- package/dist/components/Quote/Quote.d.ts +3 -0
- package/dist/components/Quote/Quote.d.ts.map +1 -0
- package/dist/components/Quote/Quote.js +32 -0
- package/dist/components/Quote/Quote.js.map +1 -0
- package/dist/components/Quote/Quote.module.css.cjs +22 -0
- package/dist/components/Quote/Quote.module.css.cjs.map +1 -0
- package/dist/components/Quote/Quote.module.css.js +22 -0
- package/dist/components/Quote/Quote.module.css.js.map +1 -0
- package/dist/components/Quote/Quote.types.d.ts +12 -0
- package/dist/components/Quote/Quote.types.d.ts.map +1 -0
- package/dist/components/Quote/index.d.ts +3 -0
- package/dist/components/Quote/index.d.ts.map +1 -0
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utils/elevation.module.css.cjs +3 -0
- package/dist/styles/utils/elevation.module.css.cjs.map +1 -1
- package/dist/styles/utils/elevation.module.css.js +4 -1
- package/dist/styles/utils/elevation.module.css.js.map +1 -1
- package/dist/styles/utils/focus.css +21 -13
- package/dist/styles/utils/focus.module.css.cjs +3 -3
- package/dist/styles/utils/focus.module.css.js +3 -3
- package/dist/styles/utils/overlay.css +37 -0
- package/dist/styles/utils/overlay.module.css.cjs +13 -0
- package/dist/styles/utils/overlay.module.css.cjs.map +1 -0
- package/dist/styles/utils/overlay.module.css.js +13 -0
- package/dist/styles/utils/overlay.module.css.js.map +1 -0
- package/dist/styles/utils/text-decoration.css +9 -1
- package/dist/styles/utils/text-decoration.module.css.cjs +5 -2
- package/dist/styles/utils/text-decoration.module.css.cjs.map +1 -1
- package/dist/styles/utils/text-decoration.module.css.js +6 -3
- package/dist/styles/utils/text-decoration.module.css.js.map +1 -1
- package/dist/styles.css +24 -7
- package/package.json +4 -3
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const icons = require("@dnanpm/icons");
|
|
6
|
+
const focus_module = require("../../styles/utils/focus.module.css.cjs");
|
|
7
|
+
const textDecoration_module = require("../../styles/utils/text-decoration.module.css.cjs");
|
|
8
|
+
const appStoreBadge = require("./assets/app-store-badge.svg.cjs");
|
|
9
|
+
const googlePlayBadge = require("./assets/google-play-badge.svg.cjs");
|
|
10
|
+
const Footer_module = require("./Footer.module.css.cjs");
|
|
11
|
+
const Footer_utils = require("./Footer.utils.cjs");
|
|
12
|
+
const IconButton = require("../IconButton/IconButton.cjs");
|
|
13
|
+
const cn = require("../../utils/cn/cn.cjs");
|
|
14
|
+
const AccordionItem = require("../AccordionItem/AccordionItem.cjs");
|
|
15
|
+
const linkClasses = (extra) => cn.cn(Footer_module.default.footer__link, textDecoration_module.default.underlineLink, focus_module.default.focusable, extra);
|
|
16
|
+
const renderNavLink = (link, renderLink) => renderLink(
|
|
17
|
+
{
|
|
18
|
+
href: link.href,
|
|
19
|
+
className: linkClasses(),
|
|
20
|
+
"aria-label": link.ariaLabel,
|
|
21
|
+
children: link.label
|
|
22
|
+
},
|
|
23
|
+
{ external: link.external ?? false }
|
|
24
|
+
);
|
|
25
|
+
const renderBadge = (link, src, renderLink, fallbackAriaLabel) => renderLink(
|
|
26
|
+
{
|
|
27
|
+
href: link.href,
|
|
28
|
+
className: cn.cn(Footer_module.default.footer__badge, focus_module.default.focusable),
|
|
29
|
+
"aria-label": link.ariaLabel ?? fallbackAriaLabel,
|
|
30
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("img", { src, alt: "", "aria-hidden": "true" })
|
|
31
|
+
},
|
|
32
|
+
{ external: true }
|
|
33
|
+
);
|
|
34
|
+
const Footer = ({
|
|
35
|
+
topSection,
|
|
36
|
+
navigation,
|
|
37
|
+
socialLinks,
|
|
38
|
+
organizations,
|
|
39
|
+
currentOrganizationId,
|
|
40
|
+
languages,
|
|
41
|
+
currentLanguageCode,
|
|
42
|
+
appLinks,
|
|
43
|
+
mandatoryLinks,
|
|
44
|
+
copyrightLabel,
|
|
45
|
+
renderLink = Footer_utils.defaultRenderLink,
|
|
46
|
+
onChatOpen,
|
|
47
|
+
onCookieSettingsClick,
|
|
48
|
+
navigationLabel = "Footer linkit",
|
|
49
|
+
socialLabel = "DNA sosiaalisessa mediassa",
|
|
50
|
+
organizationsLabel = "Valitse sivusto",
|
|
51
|
+
languagesLabel = "Valitse kieli",
|
|
52
|
+
mandatoryLinksLabel = "Lakisääteiset linkit",
|
|
53
|
+
className,
|
|
54
|
+
ref,
|
|
55
|
+
...props
|
|
56
|
+
}) => {
|
|
57
|
+
const visibleMandatoryLinks = (mandatoryLinks ?? []).filter(
|
|
58
|
+
(link) => !link.opensCookieSettings || onCookieSettingsClick
|
|
59
|
+
);
|
|
60
|
+
const hasBadges = Boolean(appLinks?.appStore || appLinks?.googlePlay);
|
|
61
|
+
const topSectionHeadingId = react.useId();
|
|
62
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
63
|
+
"footer",
|
|
64
|
+
{
|
|
65
|
+
ref,
|
|
66
|
+
"data-color-scheme": "dark",
|
|
67
|
+
className: cn.cn(Footer_module.default.footer, className),
|
|
68
|
+
...props,
|
|
69
|
+
children: [
|
|
70
|
+
topSection && topSection.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_module.default.footer__top, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn.cn(Footer_module.default.footer__inner, Footer_module.default["footer__top-row"]), children: topSection.map((group, index) => {
|
|
71
|
+
const Icon = Footer_utils.resolveTopSectionIcon(group.icon);
|
|
72
|
+
const links = group.links.filter(
|
|
73
|
+
(link) => !link.opensChat || onChatOpen
|
|
74
|
+
);
|
|
75
|
+
const headingId = `${topSectionHeadingId}-${index}`;
|
|
76
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
77
|
+
"section",
|
|
78
|
+
{
|
|
79
|
+
"aria-labelledby": headingId,
|
|
80
|
+
className: Footer_module.default["footer__top-column"],
|
|
81
|
+
children: [
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module.default["footer__top-heading"], children: [
|
|
83
|
+
Icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
84
|
+
Icon,
|
|
85
|
+
{
|
|
86
|
+
className: Footer_module.default["footer__top-icon"],
|
|
87
|
+
"aria-hidden": "true"
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { id: headingId, className: Footer_module.default["footer__top-title"], children: group.title })
|
|
91
|
+
] }),
|
|
92
|
+
links.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: Footer_module.default["footer__top-links"], children: links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: link.opensChat ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
IconButton.IconButton,
|
|
94
|
+
{
|
|
95
|
+
icon: icons.ArrowRight,
|
|
96
|
+
onClick: onChatOpen,
|
|
97
|
+
className: Footer_module.default["footer__top-link"],
|
|
98
|
+
labelBehavior: "wrap",
|
|
99
|
+
children: link.label
|
|
100
|
+
}
|
|
101
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
102
|
+
IconButton.IconButton,
|
|
103
|
+
{
|
|
104
|
+
icon: icons.ArrowRight,
|
|
105
|
+
href: link.href,
|
|
106
|
+
"aria-label": link.ariaLabel,
|
|
107
|
+
className: Footer_module.default["footer__top-link"],
|
|
108
|
+
labelBehavior: "wrap",
|
|
109
|
+
renderLink: (linkProps) => renderLink(
|
|
110
|
+
linkProps,
|
|
111
|
+
{
|
|
112
|
+
external: link.external ?? false
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
children: link.label
|
|
116
|
+
}
|
|
117
|
+
) }, link.label)) })
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
group.title
|
|
121
|
+
);
|
|
122
|
+
}) }) }),
|
|
123
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_module.default.footer__bottom, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn.cn(Footer_module.default.footer__inner, Footer_module.default.footer__container), children: [
|
|
124
|
+
navigation && navigation.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("nav", { "aria-label": navigationLabel, children: [
|
|
125
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_module.default["footer__nav-accordions"], children: navigation.map((group) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
126
|
+
AccordionItem.AccordionItem,
|
|
127
|
+
{
|
|
128
|
+
variant: "panel",
|
|
129
|
+
label: group.heading,
|
|
130
|
+
className: Footer_module.default.footer__accordion,
|
|
131
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: Footer_module.default["footer__link-list"], children: group.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: renderNavLink(link, renderLink) }, link.label)) })
|
|
132
|
+
},
|
|
133
|
+
group.heading
|
|
134
|
+
)) }),
|
|
135
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_module.default["footer__nav-columns"], children: navigation.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module.default.footer__column, children: [
|
|
136
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: Footer_module.default["footer__column-heading"], children: group.heading }),
|
|
137
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: Footer_module.default["footer__link-list"], children: group.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: renderNavLink(link, renderLink) }, link.label)) })
|
|
138
|
+
] }, group.heading)) })
|
|
139
|
+
] }),
|
|
140
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
141
|
+
"div",
|
|
142
|
+
{
|
|
143
|
+
className: cn.cn(
|
|
144
|
+
Footer_module.default.footer__divider,
|
|
145
|
+
Boolean(navigation?.length) && Footer_module.default["footer__divider--after-nav"]
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module.default.footer__meta, children: [
|
|
150
|
+
languages && languages.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
151
|
+
"ul",
|
|
152
|
+
{
|
|
153
|
+
className: Footer_module.default["footer__language-list"],
|
|
154
|
+
"aria-label": languagesLabel,
|
|
155
|
+
children: languages.map((language) => {
|
|
156
|
+
const isCurrent = language.code === currentLanguageCode;
|
|
157
|
+
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: renderLink(
|
|
158
|
+
{
|
|
159
|
+
href: language.href,
|
|
160
|
+
className: cn.cn(
|
|
161
|
+
Footer_module.default.footer__language,
|
|
162
|
+
isCurrent && Footer_module.default["footer__language--current"],
|
|
163
|
+
focus_module.default.focusable
|
|
164
|
+
),
|
|
165
|
+
"aria-label": language.ariaLabel,
|
|
166
|
+
"aria-current": isCurrent ? "true" : void 0,
|
|
167
|
+
children: language.label
|
|
168
|
+
},
|
|
169
|
+
{ external: language.external ?? false }
|
|
170
|
+
) }, language.code);
|
|
171
|
+
})
|
|
172
|
+
}
|
|
173
|
+
),
|
|
174
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module.default["footer__meta-center"], children: [
|
|
175
|
+
socialLinks && socialLinks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
176
|
+
"ul",
|
|
177
|
+
{
|
|
178
|
+
className: Footer_module.default["footer__social-list"],
|
|
179
|
+
"aria-label": socialLabel,
|
|
180
|
+
children: socialLinks.map((social) => {
|
|
181
|
+
const Icon = Footer_utils.resolveSocialIcon(social.platform);
|
|
182
|
+
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: renderLink(
|
|
183
|
+
{
|
|
184
|
+
href: social.href,
|
|
185
|
+
className: cn.cn(
|
|
186
|
+
Footer_module.default["footer__social-link"],
|
|
187
|
+
focus_module.default.focusable
|
|
188
|
+
),
|
|
189
|
+
"aria-label": social.ariaLabel ?? Footer_utils.defaultSocialAriaLabel(social.platform),
|
|
190
|
+
children: Icon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
191
|
+
Icon,
|
|
192
|
+
{
|
|
193
|
+
className: Footer_module.default["footer__social-icon"],
|
|
194
|
+
"aria-hidden": "true"
|
|
195
|
+
}
|
|
196
|
+
) : null
|
|
197
|
+
},
|
|
198
|
+
{ external: true }
|
|
199
|
+
) }, social.platform);
|
|
200
|
+
})
|
|
201
|
+
}
|
|
202
|
+
),
|
|
203
|
+
organizations && organizations.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
204
|
+
"ul",
|
|
205
|
+
{
|
|
206
|
+
className: Footer_module.default["footer__organization-list"],
|
|
207
|
+
"aria-label": organizationsLabel,
|
|
208
|
+
children: organizations.map((organization) => {
|
|
209
|
+
const isCurrent = organization.id === currentOrganizationId;
|
|
210
|
+
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: renderLink(
|
|
211
|
+
{
|
|
212
|
+
href: organization.href,
|
|
213
|
+
className: cn.cn(
|
|
214
|
+
Footer_module.default.footer__organization,
|
|
215
|
+
isCurrent && Footer_module.default["footer__organization--current"],
|
|
216
|
+
focus_module.default.focusable
|
|
217
|
+
),
|
|
218
|
+
"aria-current": isCurrent ? "true" : void 0,
|
|
219
|
+
children: organization.label
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
external: organization.external ?? false
|
|
223
|
+
}
|
|
224
|
+
) }, organization.id);
|
|
225
|
+
})
|
|
226
|
+
}
|
|
227
|
+
),
|
|
228
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
229
|
+
"ul",
|
|
230
|
+
{
|
|
231
|
+
className: Footer_module.default["footer__legal-list"],
|
|
232
|
+
"aria-label": mandatoryLinksLabel,
|
|
233
|
+
children: [
|
|
234
|
+
visibleMandatoryLinks.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: link.opensCookieSettings ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
235
|
+
"button",
|
|
236
|
+
{
|
|
237
|
+
type: "button",
|
|
238
|
+
onClick: onCookieSettingsClick,
|
|
239
|
+
className: linkClasses(Footer_module.default.footer__action),
|
|
240
|
+
children: link.label
|
|
241
|
+
}
|
|
242
|
+
) : renderNavLink(link, renderLink) }, link.label)),
|
|
243
|
+
/* @__PURE__ */ jsxRuntime.jsx("li", { className: Footer_module.default.footer__copyright, children: copyrightLabel ?? Footer_utils.defaultCopyrightLabel() })
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
)
|
|
247
|
+
] }),
|
|
248
|
+
hasBadges && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module.default.footer__apps, children: [
|
|
249
|
+
appLinks?.title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Footer_module.default["footer__apps-title"], children: appLinks.title }),
|
|
250
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module.default.footer__badges, children: [
|
|
251
|
+
appLinks?.appStore && renderBadge(
|
|
252
|
+
appLinks.appStore,
|
|
253
|
+
appStoreBadge,
|
|
254
|
+
renderLink,
|
|
255
|
+
Footer_utils.defaultAppStoreAriaLabel
|
|
256
|
+
),
|
|
257
|
+
appLinks?.googlePlay && renderBadge(
|
|
258
|
+
appLinks.googlePlay,
|
|
259
|
+
googlePlayBadge,
|
|
260
|
+
renderLink,
|
|
261
|
+
Footer_utils.defaultGooglePlayAriaLabel
|
|
262
|
+
)
|
|
263
|
+
] })
|
|
264
|
+
] })
|
|
265
|
+
] })
|
|
266
|
+
] }) })
|
|
267
|
+
]
|
|
268
|
+
}
|
|
269
|
+
);
|
|
270
|
+
};
|
|
271
|
+
exports.Footer = Footer;
|
|
272
|
+
//# sourceMappingURL=Footer.cjs.map
|
|
@@ -0,0 +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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"}
|