@dnanpm/ui-components 0.9.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 +5 -1
- package/dist/components/AccordionItem/AccordionItem.cjs +4 -4
- package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.css +4 -1
- 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 +16 -16
- 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 +78 -31
- 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 +63 -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 +8 -7
- package/dist/components/ContentCard/ContentCard.cjs.map +1 -1
- package/dist/components/ContentCard/ContentCard.css +39 -34
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
- package/dist/components/ContentCard/ContentCard.js +3 -2
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.module.css.cjs +18 -18
- package/dist/components/ContentCard/ContentCard.module.css.js +18 -18
- package/dist/components/ContentCard/ContentCard.types.d.ts +2 -1
- package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.cjs +15 -7
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.css +48 -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 +87 -83
- 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 -1
- package/dist/components/FunctionButton/FunctionButton.js +1 -1
- package/dist/components/FunctionButton/FunctionButton.js.map +1 -1
- package/dist/components/Hero/Hero.cjs +30 -27
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +49 -44
- 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 -27
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +18 -18
- package/dist/components/Hero/Hero.module.css.js +18 -18
- 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 -1
- 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 -1
- package/dist/components/MainNavigation/MainNavigation.cjs +216 -162
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.css +206 -183
- 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 +177 -123
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +80 -78
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.js +80 -78
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +0 -13
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +8 -4
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.js +8 -4
- package/dist/components/MainNavigation/MainNavigation.utils.js.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 +44 -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 +16 -11
- 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 +5 -1
- package/dist/components/Pictograph/PictographItem.css +5 -1
- package/dist/components/Quote/Quote.css +5 -1
- package/dist/components/Spinner/Spinner.css +5 -1
- 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 +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utilities.css +6 -0
- package/dist/styles/utils/elevation.css +35 -26
- package/dist/styles/utils/focus.css +63 -68
- 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 -27
- package/dist/styles/utils/text-decoration.css +20 -12
- package/dist/styles.css +27 -3
- 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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* so focus-soft sits outside at 10.49:1.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
.
|
|
12
|
+
._footer_1iwfy_8 {
|
|
13
13
|
container-name: footer;
|
|
14
14
|
container-type: inline-size;
|
|
15
15
|
color: var(--color-semantic-foreground-inverse);
|
|
@@ -17,59 +17,59 @@
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/* Zero specificity so modifier classes can still set their own colour. */
|
|
20
|
-
:where(.
|
|
20
|
+
:where(._footer_1iwfy_8 a) {
|
|
21
21
|
color: inherit;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
/* Resets the base list styles from styles/typography.css (li carries margin). */
|
|
25
|
-
.
|
|
25
|
+
._footer_1iwfy_8 ul {
|
|
26
26
|
margin: 0;
|
|
27
27
|
padding: 0;
|
|
28
28
|
list-style: none;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
.
|
|
31
|
+
._footer_1iwfy_8 li {
|
|
32
32
|
margin: 0;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
.
|
|
36
|
-
max-width:
|
|
35
|
+
._footer__inner_1iwfy_31 {
|
|
36
|
+
max-width: var(--layout-semantic-container-wide);
|
|
37
37
|
margin-inline: auto;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
.
|
|
41
|
-
.
|
|
40
|
+
._footer__top_1iwfy_36,
|
|
41
|
+
._footer__bottom_1iwfy_37 {
|
|
42
42
|
padding: var(--spacing-space-32) var(--spacing-space-16);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
@container footer (min-width: 768px) {
|
|
46
|
-
.
|
|
47
|
-
.
|
|
46
|
+
._footer__top_1iwfy_36,
|
|
47
|
+
._footer__bottom_1iwfy_37 {
|
|
48
48
|
padding: var(--spacing-space-40) var(--spacing-space-32);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
@container footer (min-width: 1024px) {
|
|
53
|
-
.
|
|
54
|
-
.
|
|
53
|
+
._footer__top_1iwfy_36,
|
|
54
|
+
._footer__bottom_1iwfy_37 {
|
|
55
55
|
padding: var(--spacing-space-40) var(--spacing-space-40);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/* === Top section === */
|
|
60
60
|
|
|
61
|
-
.
|
|
61
|
+
._footer__top_1iwfy_36 {
|
|
62
62
|
background: var(--color-semantic-surface-secondary-mid);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
._footer__top-
|
|
65
|
+
._footer__top-row_1iwfy_61 {
|
|
66
66
|
display: flex;
|
|
67
67
|
flex-direction: column;
|
|
68
68
|
gap: var(--spacing-space-32);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
@container footer (min-width: 768px) {
|
|
72
|
-
._footer__top-
|
|
72
|
+
._footer__top-row_1iwfy_61 {
|
|
73
73
|
flex-direction: row;
|
|
74
74
|
align-items: flex-start;
|
|
75
75
|
justify-content: space-between;
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
._footer__top-
|
|
80
|
+
._footer__top-column_1iwfy_76 {
|
|
81
81
|
display: flex;
|
|
82
82
|
flex: 1 0 0;
|
|
83
83
|
flex-direction: column;
|
|
@@ -85,25 +85,25 @@
|
|
|
85
85
|
min-width: 0;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
._footer__top-
|
|
88
|
+
._footer__top-heading_1iwfy_84 {
|
|
89
89
|
display: flex;
|
|
90
90
|
flex-direction: column;
|
|
91
91
|
gap: var(--spacing-space-20);
|
|
92
92
|
align-items: flex-start;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
._footer__top-
|
|
95
|
+
._footer__top-icon_1iwfy_91 {
|
|
96
96
|
width: 48px;
|
|
97
97
|
height: 48px;
|
|
98
98
|
fill: currentColor;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
._footer__top-
|
|
101
|
+
._footer__top-title_1iwfy_97 {
|
|
102
102
|
margin: 0;
|
|
103
103
|
font: var(--typography-heading-xs);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
._footer__top-
|
|
106
|
+
._footer__top-links_1iwfy_102 {
|
|
107
107
|
display: flex;
|
|
108
108
|
flex-direction: column;
|
|
109
109
|
gap: var(--spacing-space-8);
|
|
@@ -111,19 +111,19 @@
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
/* Removes the line box around the inline-flex child so the gap is exactly space/8. */
|
|
114
|
-
._footer__top-
|
|
115
|
-
._footer__link-
|
|
114
|
+
._footer__top-links_1iwfy_102 li,
|
|
115
|
+
._footer__link-list_1iwfy_111 li {
|
|
116
116
|
display: flex;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
/* IconButton owns its own label typography and underline behaviour. */
|
|
120
|
-
._footer__top-
|
|
120
|
+
._footer__top-link_1iwfy_102 {
|
|
121
121
|
max-width: 100%;
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
/* === Bottom section === */
|
|
125
125
|
|
|
126
|
-
.
|
|
126
|
+
._footer__container_1iwfy_122 {
|
|
127
127
|
display: flex;
|
|
128
128
|
flex-direction: column;
|
|
129
129
|
gap: var(--spacing-space-40);
|
|
@@ -136,20 +136,20 @@
|
|
|
136
136
|
* button, which is wrong when the content is permanently visible. display:none
|
|
137
137
|
* removes the inactive branch from both the tab order and the a11y tree.
|
|
138
138
|
*/
|
|
139
|
-
._footer__nav-
|
|
139
|
+
._footer__nav-accordions_1iwfy_135 {
|
|
140
140
|
display: block;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
._footer__nav-
|
|
143
|
+
._footer__nav-columns_1iwfy_139 {
|
|
144
144
|
display: none;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
@container footer (min-width: 768px) {
|
|
148
|
-
._footer__nav-
|
|
148
|
+
._footer__nav-accordions_1iwfy_135 {
|
|
149
149
|
display: none;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
._footer__nav-
|
|
152
|
+
._footer__nav-columns_1iwfy_139 {
|
|
153
153
|
display: flex;
|
|
154
154
|
align-items: flex-start;
|
|
155
155
|
justify-content: space-between;
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
.
|
|
160
|
+
._footer__column_1iwfy_156 {
|
|
161
161
|
display: flex;
|
|
162
162
|
flex: 1 0 0;
|
|
163
163
|
flex-direction: column;
|
|
@@ -165,12 +165,12 @@
|
|
|
165
165
|
min-width: 0;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
._footer__column-
|
|
168
|
+
._footer__column-heading_1iwfy_164 {
|
|
169
169
|
margin: 0;
|
|
170
170
|
font: var(--typography-heading-xs);
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
._footer__link-
|
|
173
|
+
._footer__link-list_1iwfy_111 {
|
|
174
174
|
display: flex;
|
|
175
175
|
flex-direction: column;
|
|
176
176
|
gap: var(--spacing-space-8);
|
|
@@ -182,8 +182,8 @@
|
|
|
182
182
|
* left-aligned) but it stops narrow labels sitting between wider neighbours,
|
|
183
183
|
* which leaves overlapping target regions under SC 2.5.8.
|
|
184
184
|
*/
|
|
185
|
-
._footer__link-
|
|
186
|
-
._footer__link-
|
|
185
|
+
._footer__link-list_1iwfy_111 a,
|
|
186
|
+
._footer__link-list_1iwfy_111 button {
|
|
187
187
|
flex: 1 1 auto;
|
|
188
188
|
}
|
|
189
189
|
|
|
@@ -191,8 +191,8 @@
|
|
|
191
191
|
* Underline styling comes from the shared text-decoration utility; only its
|
|
192
192
|
* visibility is toggled here, matching how IconButton handles the same case.
|
|
193
193
|
*/
|
|
194
|
-
.
|
|
195
|
-
.
|
|
194
|
+
._footer__link_1iwfy_111,
|
|
195
|
+
._footer__action_1iwfy_191 {
|
|
196
196
|
display: inline-block;
|
|
197
197
|
max-width: 100%;
|
|
198
198
|
/* Keeps short labels such as "5G" at the 24px minimum target size (SC 2.5.8). */
|
|
@@ -202,15 +202,15 @@
|
|
|
202
202
|
text-decoration-color: transparent;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
.
|
|
206
|
-
.
|
|
207
|
-
.
|
|
208
|
-
.
|
|
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 {
|
|
209
209
|
color: var(--color-semantic-foreground-link-inverse-hover);
|
|
210
210
|
text-decoration-color: currentColor;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
.
|
|
213
|
+
._footer__action_1iwfy_191 {
|
|
214
214
|
padding: 0;
|
|
215
215
|
color: inherit;
|
|
216
216
|
background: none;
|
|
@@ -225,32 +225,32 @@
|
|
|
225
225
|
* is adjusted so link text aligns with the footer gutter. The block-start
|
|
226
226
|
* padding also keeps the first link off the ::details-content clip edge.
|
|
227
227
|
*/
|
|
228
|
-
.
|
|
228
|
+
._footer__accordion_1iwfy_224 > summary {
|
|
229
229
|
padding-inline: 0;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
.
|
|
232
|
+
._footer__accordion_1iwfy_224 > summary + div {
|
|
233
233
|
padding-block: var(--spacing-space-8) var(--spacing-space-16);
|
|
234
234
|
padding-inline: 0;
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
/* === Divider === */
|
|
238
238
|
|
|
239
|
-
.
|
|
239
|
+
._footer__divider_1iwfy_235 {
|
|
240
240
|
height: 1px;
|
|
241
241
|
background: var(--color-semantic-border-neutral-mid);
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
/* The accordion branch already ends with a rule, so avoid doubling it. */
|
|
245
245
|
@container footer (max-width: 767px) {
|
|
246
|
-
._footer__divider--after-
|
|
246
|
+
._footer__divider--after-nav_1iwfy_242 {
|
|
247
247
|
display: none;
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
/* === Meta row === */
|
|
252
252
|
|
|
253
|
-
.
|
|
253
|
+
._footer__meta_1iwfy_249 {
|
|
254
254
|
display: flex;
|
|
255
255
|
flex-direction: column;
|
|
256
256
|
gap: var(--spacing-space-32);
|
|
@@ -258,7 +258,7 @@
|
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
@container footer (min-width: 768px) {
|
|
261
|
-
.
|
|
261
|
+
._footer__meta_1iwfy_249 {
|
|
262
262
|
flex-direction: row;
|
|
263
263
|
align-items: flex-start;
|
|
264
264
|
justify-content: center;
|
|
@@ -266,7 +266,7 @@
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
-
._footer__meta-
|
|
269
|
+
._footer__meta-center_1iwfy_265 {
|
|
270
270
|
display: flex;
|
|
271
271
|
flex-direction: column;
|
|
272
272
|
gap: var(--spacing-space-32);
|
|
@@ -277,14 +277,14 @@
|
|
|
277
277
|
|
|
278
278
|
/* === Language selector === */
|
|
279
279
|
|
|
280
|
-
._footer__language-
|
|
280
|
+
._footer__language-list_1iwfy_276 {
|
|
281
281
|
display: flex;
|
|
282
282
|
gap: var(--spacing-space-4);
|
|
283
283
|
align-items: center;
|
|
284
284
|
flex: 0 0 auto;
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
-
.
|
|
287
|
+
._footer__language_1iwfy_276 {
|
|
288
288
|
display: inline-flex;
|
|
289
289
|
align-items: center;
|
|
290
290
|
justify-content: center;
|
|
@@ -295,8 +295,8 @@
|
|
|
295
295
|
border-radius: var(--radius-semantic-full);
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
-
.
|
|
299
|
-
.
|
|
298
|
+
._footer__language_1iwfy_276:hover,
|
|
299
|
+
._footer__language_1iwfy_276:focus-visible {
|
|
300
300
|
background: var(--color-semantic-surface-secondary-soft);
|
|
301
301
|
}
|
|
302
302
|
|
|
@@ -304,19 +304,19 @@
|
|
|
304
304
|
* The active entry is marked with aria-current plus a filled pill, so selection
|
|
305
305
|
* is never conveyed by colour alone.
|
|
306
306
|
*/
|
|
307
|
-
._footer__language--
|
|
307
|
+
._footer__language--current_1iwfy_303 {
|
|
308
308
|
color: var(--color-semantic-foreground-default);
|
|
309
309
|
background: var(--color-semantic-surface-base);
|
|
310
310
|
}
|
|
311
311
|
|
|
312
|
-
._footer__language--
|
|
313
|
-
._footer__language--
|
|
312
|
+
._footer__language--current_1iwfy_303:hover,
|
|
313
|
+
._footer__language--current_1iwfy_303:focus-visible {
|
|
314
314
|
background: var(--color-semantic-surface-base);
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
/* === Social media === */
|
|
318
318
|
|
|
319
|
-
._footer__social-
|
|
319
|
+
._footer__social-list_1iwfy_315 {
|
|
320
320
|
display: flex;
|
|
321
321
|
flex-wrap: wrap;
|
|
322
322
|
gap: var(--spacing-space-16);
|
|
@@ -324,7 +324,7 @@
|
|
|
324
324
|
justify-content: center;
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
-
._footer__social-
|
|
327
|
+
._footer__social-link_1iwfy_323 {
|
|
328
328
|
display: inline-flex;
|
|
329
329
|
align-items: center;
|
|
330
330
|
justify-content: center;
|
|
@@ -334,12 +334,12 @@
|
|
|
334
334
|
border-radius: var(--radius-semantic-full);
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
-
._footer__social-
|
|
338
|
-
._footer__social-
|
|
337
|
+
._footer__social-link_1iwfy_323:hover,
|
|
338
|
+
._footer__social-link_1iwfy_323:focus-visible {
|
|
339
339
|
background: var(--color-semantic-surface-secondary-soft);
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
._footer__social-
|
|
342
|
+
._footer__social-icon_1iwfy_338 {
|
|
343
343
|
width: 24px;
|
|
344
344
|
height: 24px;
|
|
345
345
|
fill: currentColor;
|
|
@@ -347,7 +347,7 @@
|
|
|
347
347
|
|
|
348
348
|
/* === Organization selector === */
|
|
349
349
|
|
|
350
|
-
._footer__organization-
|
|
350
|
+
._footer__organization-list_1iwfy_346 {
|
|
351
351
|
display: flex;
|
|
352
352
|
flex-wrap: wrap;
|
|
353
353
|
gap: var(--spacing-space-8);
|
|
@@ -355,7 +355,7 @@
|
|
|
355
355
|
justify-content: center;
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
.
|
|
358
|
+
._footer__organization_1iwfy_346 {
|
|
359
359
|
display: inline-flex;
|
|
360
360
|
align-items: center;
|
|
361
361
|
justify-content: center;
|
|
@@ -366,25 +366,25 @@
|
|
|
366
366
|
border-radius: var(--radius-semantic-full);
|
|
367
367
|
}
|
|
368
368
|
|
|
369
|
-
.
|
|
370
|
-
.
|
|
369
|
+
._footer__organization_1iwfy_346:hover,
|
|
370
|
+
._footer__organization_1iwfy_346:focus-visible {
|
|
371
371
|
background: var(--color-semantic-surface-secondary-soft);
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
._footer__organization--
|
|
374
|
+
._footer__organization--current_1iwfy_370 {
|
|
375
375
|
font: var(--typography-body-sm-medium);
|
|
376
376
|
color: var(--color-semantic-foreground-default);
|
|
377
377
|
background: var(--color-semantic-surface-base);
|
|
378
378
|
}
|
|
379
379
|
|
|
380
|
-
._footer__organization--
|
|
381
|
-
._footer__organization--
|
|
380
|
+
._footer__organization--current_1iwfy_370:hover,
|
|
381
|
+
._footer__organization--current_1iwfy_370:focus-visible {
|
|
382
382
|
background: var(--color-semantic-surface-base);
|
|
383
383
|
}
|
|
384
384
|
|
|
385
385
|
/* === Legal links === */
|
|
386
386
|
|
|
387
|
-
._footer__legal-
|
|
387
|
+
._footer__legal-list_1iwfy_383 {
|
|
388
388
|
display: flex;
|
|
389
389
|
flex-wrap: wrap;
|
|
390
390
|
gap: var(--spacing-space-8) var(--spacing-space-16);
|
|
@@ -392,29 +392,29 @@
|
|
|
392
392
|
justify-content: center;
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
-
._footer__legal-
|
|
395
|
+
._footer__legal-list_1iwfy_383 li {
|
|
396
396
|
display: flex;
|
|
397
397
|
gap: var(--spacing-space-16);
|
|
398
398
|
align-items: center;
|
|
399
399
|
}
|
|
400
400
|
|
|
401
401
|
/* Decorative; kept out of the accessibility tree by using ::before rather than a real element. */
|
|
402
|
-
._footer__legal-
|
|
402
|
+
._footer__legal-list_1iwfy_383 li + li::before {
|
|
403
403
|
content: '';
|
|
404
404
|
width: 1px;
|
|
405
405
|
height: 12px;
|
|
406
406
|
background: var(--color-semantic-foreground-inverse);
|
|
407
407
|
}
|
|
408
408
|
|
|
409
|
-
._footer__legal-
|
|
410
|
-
._footer__legal-
|
|
411
|
-
.
|
|
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 {
|
|
412
412
|
font: var(--typography-body-sm);
|
|
413
413
|
}
|
|
414
414
|
|
|
415
415
|
/* === App badges === */
|
|
416
416
|
|
|
417
|
-
.
|
|
417
|
+
._footer__apps_1iwfy_413 {
|
|
418
418
|
display: flex;
|
|
419
419
|
flex-direction: column;
|
|
420
420
|
gap: var(--spacing-space-8);
|
|
@@ -423,16 +423,16 @@
|
|
|
423
423
|
}
|
|
424
424
|
|
|
425
425
|
@container footer (min-width: 768px) {
|
|
426
|
-
.
|
|
426
|
+
._footer__apps_1iwfy_413 {
|
|
427
427
|
align-items: flex-start;
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
-
._footer__apps-
|
|
431
|
+
._footer__apps-title_1iwfy_427 {
|
|
432
432
|
font: var(--typography-body-md-medium);
|
|
433
433
|
}
|
|
434
434
|
|
|
435
|
-
.
|
|
435
|
+
._footer__badges_1iwfy_431 {
|
|
436
436
|
display: flex;
|
|
437
437
|
flex-wrap: wrap;
|
|
438
438
|
gap: var(--spacing-space-8);
|
|
@@ -440,18 +440,18 @@
|
|
|
440
440
|
}
|
|
441
441
|
|
|
442
442
|
@container footer (min-width: 768px) {
|
|
443
|
-
.
|
|
443
|
+
._footer__badges_1iwfy_431 {
|
|
444
444
|
flex-direction: column;
|
|
445
445
|
align-items: flex-start;
|
|
446
446
|
}
|
|
447
447
|
}
|
|
448
448
|
|
|
449
|
-
.
|
|
449
|
+
._footer__badge_1iwfy_431 {
|
|
450
450
|
display: inline-flex;
|
|
451
451
|
border-radius: var(--radius-semantic-md);
|
|
452
452
|
}
|
|
453
453
|
|
|
454
|
-
.
|
|
454
|
+
._footer__badge_1iwfy_431 img {
|
|
455
455
|
display: block;
|
|
456
456
|
width: 140px;
|
|
457
457
|
height: 40px;
|
|
@@ -465,12 +465,16 @@
|
|
|
465
465
|
}
|
|
466
466
|
|
|
467
467
|
@media (forced-colors: active) {
|
|
468
|
-
.
|
|
468
|
+
._footer__divider_1iwfy_235 {
|
|
469
469
|
background: CanvasText;
|
|
470
470
|
}
|
|
471
471
|
|
|
472
|
-
._footer__language--
|
|
473
|
-
._footer__organization--
|
|
472
|
+
._footer__language--current_1iwfy_303,
|
|
473
|
+
._footer__organization--current_1iwfy_370 {
|
|
474
474
|
outline: 2px solid Highlight;
|
|
475
475
|
}
|
|
476
|
-
}
|
|
476
|
+
}
|
|
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";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.js","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":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Footer.js","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":[],"mappings":"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"}
|