boreal-ui 0.0.882 → 0.0.883
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/core/{Footer-Cwi11hLk.cjs → Footer-Dz2WLlmG.cjs} +221 -92
- package/dist/core/Footer-Dz2WLlmG.cjs.map +1 -0
- package/dist/core/{Footer-Dwh-2P5I.js → Footer-GVH6PVkB.js} +221 -92
- package/dist/core/Footer-GVH6PVkB.js.map +1 -0
- package/dist/core/Footer.cjs.js +1 -1
- package/dist/core/Footer.css +4 -1
- package/dist/core/Footer.js +1 -1
- package/dist/core/index.cjs.js +1 -1
- package/dist/core/index.js +1 -1
- package/dist/next/{Footer-Dzwh3OnQ.js → Footer-DLnIK3R3.js} +271 -142
- package/dist/next/Footer-DLnIK3R3.js.map +1 -0
- package/dist/next/Footer.css +98 -96
- package/dist/next/Footer.js +1 -1
- package/dist/next/index.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/components/Footer/Footer.types.d.ts +92 -0
- package/dist/types/components/Footer/Footer.types.d.ts.map +1 -1
- package/dist/types/components/Footer/FooterBase.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/core/Footer-Cwi11hLk.cjs.map +0 -1
- package/dist/core/Footer-Dwh-2P5I.js.map +0 -1
- package/dist/next/Footer-Dzwh3OnQ.js.map +0 -1
|
@@ -9,49 +9,49 @@ import { I as IconButton } from "./IconButton-DQTmDwt_.js";
|
|
|
9
9
|
import "./globals.js";
|
|
10
10
|
import { S as Select } from "./Select-D4bH7djH.js";
|
|
11
11
|
import { a as ThemeContext } from "./ThemeContext-CVJwo33B.js";
|
|
12
|
-
import './Footer.css';const footer = "
|
|
13
|
-
const primary = "
|
|
14
|
-
const secondary = "
|
|
15
|
-
const tertiary = "
|
|
16
|
-
const quaternary = "
|
|
17
|
-
const clear = "
|
|
18
|
-
const roundNone = "
|
|
19
|
-
const roundSmall = "
|
|
20
|
-
const roundMedium = "
|
|
21
|
-
const roundLarge = "
|
|
22
|
-
const roundFull = "
|
|
23
|
-
const shadowNone = "
|
|
24
|
-
const shadowLight = "
|
|
25
|
-
const shadowMedium = "
|
|
26
|
-
const shadowStrong = "
|
|
27
|
-
const shadowIntense = "
|
|
28
|
-
const attachmentStatic = "
|
|
29
|
-
const attachmentSticky = "
|
|
30
|
-
const attachmentFixed = "
|
|
31
|
-
const content = "
|
|
32
|
-
const left = "
|
|
33
|
-
const links = "
|
|
34
|
-
const link = "
|
|
35
|
-
const logo = "
|
|
36
|
-
const social = "
|
|
37
|
-
const themeToggle = "
|
|
38
|
-
const copyright = "
|
|
39
|
-
const layoutColumns = "
|
|
40
|
-
const brand = "
|
|
41
|
-
const brandLink = "
|
|
42
|
-
const brandTitle = "
|
|
43
|
-
const brandDescription = "
|
|
44
|
-
const sections = "
|
|
45
|
-
const section = "
|
|
46
|
-
const actionGroup = "
|
|
47
|
-
const sectionTitle = "
|
|
48
|
-
const sectionList = "
|
|
49
|
-
const actions = "
|
|
50
|
-
const bottom = "
|
|
51
|
-
const bottomCopyright = "
|
|
52
|
-
const bottomEnd = "
|
|
53
|
-
const spin = "
|
|
54
|
-
const pulse = "
|
|
12
|
+
import './Footer.css';const footer = "_footer_apmcr_204";
|
|
13
|
+
const primary = "_primary_apmcr_214";
|
|
14
|
+
const secondary = "_secondary_apmcr_218";
|
|
15
|
+
const tertiary = "_tertiary_apmcr_222";
|
|
16
|
+
const quaternary = "_quaternary_apmcr_226";
|
|
17
|
+
const clear = "_clear_apmcr_230";
|
|
18
|
+
const roundNone = "_roundNone_apmcr_234";
|
|
19
|
+
const roundSmall = "_roundSmall_apmcr_238";
|
|
20
|
+
const roundMedium = "_roundMedium_apmcr_242";
|
|
21
|
+
const roundLarge = "_roundLarge_apmcr_246";
|
|
22
|
+
const roundFull = "_roundFull_apmcr_250";
|
|
23
|
+
const shadowNone = "_shadowNone_apmcr_254";
|
|
24
|
+
const shadowLight = "_shadowLight_apmcr_257";
|
|
25
|
+
const shadowMedium = "_shadowMedium_apmcr_260";
|
|
26
|
+
const shadowStrong = "_shadowStrong_apmcr_263";
|
|
27
|
+
const shadowIntense = "_shadowIntense_apmcr_266";
|
|
28
|
+
const attachmentStatic = "_attachmentStatic_apmcr_269";
|
|
29
|
+
const attachmentSticky = "_attachmentSticky_apmcr_272";
|
|
30
|
+
const attachmentFixed = "_attachmentFixed_apmcr_280";
|
|
31
|
+
const content = "_content_apmcr_289";
|
|
32
|
+
const left = "_left_apmcr_309";
|
|
33
|
+
const links = "_links_apmcr_337";
|
|
34
|
+
const link = "_link_apmcr_337";
|
|
35
|
+
const logo = "_logo_apmcr_385";
|
|
36
|
+
const social = "_social_apmcr_406";
|
|
37
|
+
const themeToggle = "_themeToggle_apmcr_419";
|
|
38
|
+
const copyright = "_copyright_apmcr_437";
|
|
39
|
+
const layoutColumns = "_layoutColumns_apmcr_441";
|
|
40
|
+
const brand = "_brand_apmcr_470";
|
|
41
|
+
const brandLink = "_brandLink_apmcr_480";
|
|
42
|
+
const brandTitle = "_brandTitle_apmcr_507";
|
|
43
|
+
const brandDescription = "_brandDescription_apmcr_516";
|
|
44
|
+
const sections = "_sections_apmcr_524";
|
|
45
|
+
const section = "_section_apmcr_524";
|
|
46
|
+
const actionGroup = "_actionGroup_apmcr_536";
|
|
47
|
+
const sectionTitle = "_sectionTitle_apmcr_543";
|
|
48
|
+
const sectionList = "_sectionList_apmcr_553";
|
|
49
|
+
const actions = "_actions_apmcr_562";
|
|
50
|
+
const bottom = "_bottom_apmcr_575";
|
|
51
|
+
const bottomCopyright = "_bottomCopyright_apmcr_594";
|
|
52
|
+
const bottomEnd = "_bottomEnd_apmcr_598";
|
|
53
|
+
const spin = "_spin_apmcr_1";
|
|
54
|
+
const pulse = "_pulse_apmcr_1";
|
|
55
55
|
const styles = {
|
|
56
56
|
footer,
|
|
57
57
|
primary,
|
|
@@ -94,15 +94,15 @@ const styles = {
|
|
|
94
94
|
bottom,
|
|
95
95
|
bottomCopyright,
|
|
96
96
|
bottomEnd,
|
|
97
|
-
"fade-in": "_fade-
|
|
98
|
-
"slide-up": "_slide-
|
|
99
|
-
"spin-3d": "_spin-
|
|
97
|
+
"fade-in": "_fade-in_apmcr_1",
|
|
98
|
+
"slide-up": "_slide-up_apmcr_1",
|
|
99
|
+
"spin-3d": "_spin-3d_apmcr_1",
|
|
100
100
|
spin,
|
|
101
101
|
pulse,
|
|
102
|
-
"fade-in-up": "_fade-in-
|
|
103
|
-
"progress-grow": "_progress-
|
|
104
|
-
"indeterminate-move": "_indeterminate-
|
|
105
|
-
"skeleton-loading": "_skeleton-
|
|
102
|
+
"fade-in-up": "_fade-in-up_apmcr_1",
|
|
103
|
+
"progress-grow": "_progress-grow_apmcr_1",
|
|
104
|
+
"indeterminate-move": "_indeterminate-move_apmcr_1",
|
|
105
|
+
"skeleton-loading": "_skeleton-loading_apmcr_1"
|
|
106
106
|
};
|
|
107
107
|
const slugify = (value) => value.toLowerCase().trim().replace(/\s+/g, "-");
|
|
108
108
|
const FooterBase = ({
|
|
@@ -124,6 +124,25 @@ const FooterBase = ({
|
|
|
124
124
|
socialLinks = [],
|
|
125
125
|
showThemeSelect = false,
|
|
126
126
|
bottomEnd: bottomEnd2,
|
|
127
|
+
contentClassName,
|
|
128
|
+
leftClassName,
|
|
129
|
+
linksClassName,
|
|
130
|
+
linkClassName,
|
|
131
|
+
logoClassName,
|
|
132
|
+
socialClassName,
|
|
133
|
+
themeToggleClassName,
|
|
134
|
+
brandClassName,
|
|
135
|
+
brandLinkClassName,
|
|
136
|
+
brandTitleClassName,
|
|
137
|
+
brandDescriptionClassName,
|
|
138
|
+
sectionsClassName,
|
|
139
|
+
sectionTitleClassName,
|
|
140
|
+
actionsClassName,
|
|
141
|
+
actionGroupClassName,
|
|
142
|
+
bottomClassName,
|
|
143
|
+
bottomCopyrightClassName,
|
|
144
|
+
bottomEndClassName,
|
|
145
|
+
copyrightClassName,
|
|
127
146
|
IconButton: IconButton2,
|
|
128
147
|
ImageComponent = "img",
|
|
129
148
|
ThemeSelect,
|
|
@@ -173,7 +192,7 @@ const FooterBase = ({
|
|
|
173
192
|
return /* @__PURE__ */ jsx(
|
|
174
193
|
"img",
|
|
175
194
|
{
|
|
176
|
-
className: classMap.logo,
|
|
195
|
+
className: combineClassNames(classMap.logo, logoClassName),
|
|
177
196
|
"data-testid": `${testId}-logo`,
|
|
178
197
|
loading: "lazy",
|
|
179
198
|
src: logoSrc,
|
|
@@ -187,7 +206,7 @@ const FooterBase = ({
|
|
|
187
206
|
return /* @__PURE__ */ jsx(
|
|
188
207
|
ImageComponent,
|
|
189
208
|
{
|
|
190
|
-
className: classMap.logo,
|
|
209
|
+
className: combineClassNames(classMap.logo, logoClassName),
|
|
191
210
|
"data-testid": `${testId}-logo`,
|
|
192
211
|
src: logoSrc,
|
|
193
212
|
alt: logoDecorative ? "" : logoAriaLabel,
|
|
@@ -203,7 +222,7 @@ const FooterBase = ({
|
|
|
203
222
|
return /* @__PURE__ */ jsx(
|
|
204
223
|
"span",
|
|
205
224
|
{
|
|
206
|
-
className: classMap.logo,
|
|
225
|
+
className: combineClassNames(classMap.logo, logoClassName),
|
|
207
226
|
role: logoDecorative ? void 0 : "img",
|
|
208
227
|
"aria-label": logoDecorative ? void 0 : logoAriaLabel,
|
|
209
228
|
"aria-hidden": logoDecorative ? true : void 0,
|
|
@@ -212,14 +231,18 @@ const FooterBase = ({
|
|
|
212
231
|
}
|
|
213
232
|
);
|
|
214
233
|
};
|
|
215
|
-
const renderFooterLink = (link2, index) => {
|
|
234
|
+
const renderFooterLink = (link2, index, customLinkClassName) => {
|
|
216
235
|
const slug = slugify(link2.label || link2.href || `link-${index}`);
|
|
217
236
|
const key = `${link2.href ?? slug}-${index}`;
|
|
237
|
+
const resolvedLinkClassName = combineClassNames(
|
|
238
|
+
classMap.link,
|
|
239
|
+
customLinkClassName
|
|
240
|
+
);
|
|
218
241
|
if (link2.disabled) {
|
|
219
242
|
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
220
243
|
"span",
|
|
221
244
|
{
|
|
222
|
-
className:
|
|
245
|
+
className: resolvedLinkClassName,
|
|
223
246
|
"data-testid": `${testId}-link-${slug}`,
|
|
224
247
|
"aria-disabled": "true",
|
|
225
248
|
title: link2.title,
|
|
@@ -231,7 +254,7 @@ const FooterBase = ({
|
|
|
231
254
|
LinkWrapper,
|
|
232
255
|
{
|
|
233
256
|
href: link2.href,
|
|
234
|
-
className:
|
|
257
|
+
className: resolvedLinkClassName,
|
|
235
258
|
"data-testid": `${testId}-link-${slug}`,
|
|
236
259
|
"aria-label": link2["aria-label"],
|
|
237
260
|
"aria-current": link2["aria-current"],
|
|
@@ -249,7 +272,7 @@ const FooterBase = ({
|
|
|
249
272
|
return /* @__PURE__ */ jsx(
|
|
250
273
|
"nav",
|
|
251
274
|
{
|
|
252
|
-
className: classMap.social,
|
|
275
|
+
className: combineClassNames(classMap.social, socialClassName),
|
|
253
276
|
"aria-label": socialNavAriaLabel,
|
|
254
277
|
"data-testid": `${testId}-social`,
|
|
255
278
|
children: socialLinks.map((social2, index) => /* @__PURE__ */ jsx(
|
|
@@ -279,7 +302,10 @@ const FooterBase = ({
|
|
|
279
302
|
return /* @__PURE__ */ jsx(
|
|
280
303
|
"div",
|
|
281
304
|
{
|
|
282
|
-
className:
|
|
305
|
+
className: combineClassNames(
|
|
306
|
+
classMap.themeToggle,
|
|
307
|
+
themeToggleClassName
|
|
308
|
+
),
|
|
283
309
|
"data-testid": `${testId}-theme-select`,
|
|
284
310
|
"aria-label": themeSelectAriaLabel,
|
|
285
311
|
children: /* @__PURE__ */ jsx(
|
|
@@ -300,61 +326,117 @@ const FooterBase = ({
|
|
|
300
326
|
brandTitle2 && /* @__PURE__ */ jsx(
|
|
301
327
|
"span",
|
|
302
328
|
{
|
|
303
|
-
className:
|
|
329
|
+
className: combineClassNames(
|
|
330
|
+
classMap.brandTitle,
|
|
331
|
+
brandTitleClassName
|
|
332
|
+
),
|
|
304
333
|
"data-testid": `${testId}-brand-title`,
|
|
305
334
|
children: brandTitle2
|
|
306
335
|
}
|
|
307
336
|
)
|
|
308
337
|
] });
|
|
309
|
-
return /* @__PURE__ */ jsxs(
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
338
|
+
return /* @__PURE__ */ jsxs(
|
|
339
|
+
"div",
|
|
340
|
+
{
|
|
341
|
+
className: combineClassNames(classMap.brand, brandClassName),
|
|
342
|
+
"data-testid": `${testId}-brand`,
|
|
343
|
+
children: [
|
|
344
|
+
brandHref ? /* @__PURE__ */ jsx(
|
|
345
|
+
LinkWrapper,
|
|
346
|
+
{
|
|
347
|
+
href: brandHref,
|
|
348
|
+
className: combineClassNames(
|
|
349
|
+
classMap.brandLink,
|
|
350
|
+
brandLinkClassName
|
|
351
|
+
),
|
|
352
|
+
"aria-label": typeof brandTitle2 === "string" ? brandTitle2 : logoAriaLabel,
|
|
353
|
+
children: brandContent
|
|
354
|
+
}
|
|
355
|
+
) : /* @__PURE__ */ jsx(
|
|
356
|
+
"div",
|
|
357
|
+
{
|
|
358
|
+
className: combineClassNames(
|
|
359
|
+
classMap.brandLink,
|
|
360
|
+
brandLinkClassName
|
|
361
|
+
),
|
|
362
|
+
children: brandContent
|
|
363
|
+
}
|
|
364
|
+
),
|
|
365
|
+
brandDescription2 && /* @__PURE__ */ jsx(
|
|
366
|
+
"p",
|
|
367
|
+
{
|
|
368
|
+
className: combineClassNames(
|
|
369
|
+
classMap.brandDescription,
|
|
370
|
+
brandDescriptionClassName
|
|
371
|
+
),
|
|
372
|
+
"data-testid": `${testId}-brand-description`,
|
|
373
|
+
children: brandDescription2
|
|
374
|
+
}
|
|
375
|
+
),
|
|
376
|
+
copyright2 && !shouldRenderCopyrightInBottom && /* @__PURE__ */ jsx(
|
|
377
|
+
"div",
|
|
378
|
+
{
|
|
379
|
+
className: combineClassNames(
|
|
380
|
+
classMap.copyright,
|
|
381
|
+
copyrightClassName
|
|
382
|
+
),
|
|
383
|
+
"data-testid": `${testId}-copyright`,
|
|
384
|
+
children: /* @__PURE__ */ jsx("p", { id: labelId, children: copyright2 })
|
|
385
|
+
}
|
|
386
|
+
)
|
|
387
|
+
]
|
|
388
|
+
}
|
|
389
|
+
);
|
|
336
390
|
};
|
|
337
391
|
const renderSections = () => {
|
|
338
392
|
if (normalizedSections.length === 0) {
|
|
339
393
|
return null;
|
|
340
394
|
}
|
|
341
|
-
return /* @__PURE__ */ jsx(
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
"
|
|
346
|
-
{
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
395
|
+
return /* @__PURE__ */ jsx(
|
|
396
|
+
"div",
|
|
397
|
+
{
|
|
398
|
+
className: combineClassNames(classMap.sections, sectionsClassName),
|
|
399
|
+
"data-testid": `${testId}-sections`,
|
|
400
|
+
children: normalizedSections.map((section2, sectionIndex) => {
|
|
401
|
+
const titleText = typeof section2.title === "string" ? section2.title : `section-${sectionIndex + 1}`;
|
|
402
|
+
const sectionSlug = section2.testId ?? slugify(titleText);
|
|
403
|
+
return /* @__PURE__ */ jsxs(
|
|
404
|
+
"nav",
|
|
405
|
+
{
|
|
406
|
+
className: combineClassNames(classMap.section, section2.className),
|
|
407
|
+
"aria-label": section2["aria-label"] ?? `${titleText} links`,
|
|
408
|
+
"data-testid": `${testId}-section-${sectionSlug}`,
|
|
409
|
+
children: [
|
|
410
|
+
/* @__PURE__ */ jsx(
|
|
411
|
+
"h2",
|
|
412
|
+
{
|
|
413
|
+
className: combineClassNames(
|
|
414
|
+
classMap.sectionTitle,
|
|
415
|
+
sectionTitleClassName,
|
|
416
|
+
section2.titleClassName
|
|
417
|
+
),
|
|
418
|
+
children: section2.title
|
|
419
|
+
}
|
|
420
|
+
),
|
|
421
|
+
/* @__PURE__ */ jsx(
|
|
422
|
+
"ul",
|
|
423
|
+
{
|
|
424
|
+
className: combineClassNames(
|
|
425
|
+
classMap.sectionList,
|
|
426
|
+
section2.listClassName
|
|
427
|
+
),
|
|
428
|
+
children: section2.links.map(
|
|
429
|
+
(link2, index) => renderFooterLink(link2, index, section2.linkClassName)
|
|
430
|
+
)
|
|
431
|
+
}
|
|
432
|
+
)
|
|
433
|
+
]
|
|
434
|
+
},
|
|
435
|
+
sectionSlug
|
|
436
|
+
);
|
|
437
|
+
})
|
|
438
|
+
}
|
|
439
|
+
);
|
|
358
440
|
};
|
|
359
441
|
if (layout === "columns") {
|
|
360
442
|
return /* @__PURE__ */ jsxs(
|
|
@@ -368,36 +450,74 @@ const FooterBase = ({
|
|
|
368
450
|
"aria-describedby": ariaDescribedBy,
|
|
369
451
|
...rest,
|
|
370
452
|
children: [
|
|
371
|
-
/* @__PURE__ */ jsxs("div", { className: classMap.content, children: [
|
|
453
|
+
/* @__PURE__ */ jsxs("div", { className: combineClassNames(classMap.content, contentClassName), children: [
|
|
372
454
|
renderBrand(),
|
|
373
455
|
renderSections(),
|
|
374
|
-
(socialLinks.length > 0 || showThemeSelect) && /* @__PURE__ */ jsxs(
|
|
375
|
-
socialLinks.length > 0 && /* @__PURE__ */ jsxs("div", { className: classMap.actionGroup, children: [
|
|
376
|
-
/* @__PURE__ */ jsx("h2", { className: classMap.sectionTitle, children: "Connect" }),
|
|
377
|
-
renderSocialLinks()
|
|
378
|
-
] }),
|
|
379
|
-
renderThemeSelect()
|
|
380
|
-
] })
|
|
381
|
-
] }),
|
|
382
|
-
(copyright2 || bottomEnd2) && /* @__PURE__ */ jsxs("div", { className: classMap.bottom, "data-testid": `${testId}-bottom`, children: [
|
|
383
|
-
copyright2 && shouldRenderCopyrightInBottom && /* @__PURE__ */ jsx(
|
|
384
|
-
"p",
|
|
385
|
-
{
|
|
386
|
-
id: labelId,
|
|
387
|
-
className: classMap.bottomCopyright,
|
|
388
|
-
"data-testid": `${testId}-copyright`,
|
|
389
|
-
children: copyright2
|
|
390
|
-
}
|
|
391
|
-
),
|
|
392
|
-
bottomEnd2 && /* @__PURE__ */ jsx(
|
|
456
|
+
(socialLinks.length > 0 || showThemeSelect) && /* @__PURE__ */ jsxs(
|
|
393
457
|
"div",
|
|
394
458
|
{
|
|
395
|
-
className: classMap.
|
|
396
|
-
"data-testid": `${testId}-
|
|
397
|
-
children:
|
|
459
|
+
className: combineClassNames(classMap.actions, actionsClassName),
|
|
460
|
+
"data-testid": `${testId}-actions`,
|
|
461
|
+
children: [
|
|
462
|
+
socialLinks.length > 0 && /* @__PURE__ */ jsxs(
|
|
463
|
+
"div",
|
|
464
|
+
{
|
|
465
|
+
className: combineClassNames(
|
|
466
|
+
classMap.actionGroup,
|
|
467
|
+
actionGroupClassName
|
|
468
|
+
),
|
|
469
|
+
children: [
|
|
470
|
+
/* @__PURE__ */ jsx(
|
|
471
|
+
"h2",
|
|
472
|
+
{
|
|
473
|
+
className: combineClassNames(
|
|
474
|
+
classMap.sectionTitle,
|
|
475
|
+
sectionTitleClassName
|
|
476
|
+
),
|
|
477
|
+
children: "Connect"
|
|
478
|
+
}
|
|
479
|
+
),
|
|
480
|
+
renderSocialLinks()
|
|
481
|
+
]
|
|
482
|
+
}
|
|
483
|
+
),
|
|
484
|
+
renderThemeSelect()
|
|
485
|
+
]
|
|
398
486
|
}
|
|
399
487
|
)
|
|
400
|
-
] })
|
|
488
|
+
] }),
|
|
489
|
+
(copyright2 || bottomEnd2) && /* @__PURE__ */ jsxs(
|
|
490
|
+
"div",
|
|
491
|
+
{
|
|
492
|
+
className: combineClassNames(classMap.bottom, bottomClassName),
|
|
493
|
+
"data-testid": `${testId}-bottom`,
|
|
494
|
+
children: [
|
|
495
|
+
copyright2 && shouldRenderCopyrightInBottom && /* @__PURE__ */ jsx(
|
|
496
|
+
"p",
|
|
497
|
+
{
|
|
498
|
+
id: labelId,
|
|
499
|
+
className: combineClassNames(
|
|
500
|
+
classMap.bottomCopyright,
|
|
501
|
+
bottomCopyrightClassName
|
|
502
|
+
),
|
|
503
|
+
"data-testid": `${testId}-copyright`,
|
|
504
|
+
children: copyright2
|
|
505
|
+
}
|
|
506
|
+
),
|
|
507
|
+
bottomEnd2 && /* @__PURE__ */ jsx(
|
|
508
|
+
"div",
|
|
509
|
+
{
|
|
510
|
+
className: combineClassNames(
|
|
511
|
+
classMap.bottomEnd,
|
|
512
|
+
bottomEndClassName
|
|
513
|
+
),
|
|
514
|
+
"data-testid": `${testId}-bottom-end`,
|
|
515
|
+
children: bottomEnd2
|
|
516
|
+
}
|
|
517
|
+
)
|
|
518
|
+
]
|
|
519
|
+
}
|
|
520
|
+
)
|
|
401
521
|
]
|
|
402
522
|
}
|
|
403
523
|
);
|
|
@@ -412,25 +532,34 @@ const FooterBase = ({
|
|
|
412
532
|
"aria-labelledby": ariaLabelledBy ?? labelId,
|
|
413
533
|
"aria-describedby": ariaDescribedBy,
|
|
414
534
|
...rest,
|
|
415
|
-
children: /* @__PURE__ */ jsxs("div", { className: classMap.content, children: [
|
|
416
|
-
/* @__PURE__ */ jsxs(
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
{
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
535
|
+
children: /* @__PURE__ */ jsxs("div", { className: combineClassNames(classMap.content, contentClassName), children: [
|
|
536
|
+
/* @__PURE__ */ jsxs(
|
|
537
|
+
"div",
|
|
538
|
+
{
|
|
539
|
+
className: combineClassNames(classMap.left, leftClassName),
|
|
540
|
+
"data-testid": `${testId}-left`,
|
|
541
|
+
children: [
|
|
542
|
+
renderLogo(),
|
|
543
|
+
copyright2 && /* @__PURE__ */ jsx(
|
|
544
|
+
"div",
|
|
545
|
+
{
|
|
546
|
+
className: combineClassNames(classMap.copyright, copyrightClassName) ?? combineClassNames(classMap.left, leftClassName),
|
|
547
|
+
"data-testid": `${testId}-copyright`,
|
|
548
|
+
children: /* @__PURE__ */ jsx("p", { id: labelId, children: copyright2 })
|
|
549
|
+
}
|
|
550
|
+
)
|
|
551
|
+
]
|
|
552
|
+
}
|
|
553
|
+
),
|
|
427
554
|
links2.length > 0 && /* @__PURE__ */ jsx(
|
|
428
555
|
"nav",
|
|
429
556
|
{
|
|
430
|
-
className: classMap.links,
|
|
557
|
+
className: combineClassNames(classMap.links, linksClassName),
|
|
431
558
|
"aria-label": navAriaLabel,
|
|
432
559
|
"data-testid": `${testId}-nav`,
|
|
433
|
-
children: /* @__PURE__ */ jsx("ul", { children: links2.map(
|
|
560
|
+
children: /* @__PURE__ */ jsx("ul", { children: links2.map(
|
|
561
|
+
(link2, index) => renderFooterLink(link2, index, linkClassName)
|
|
562
|
+
) })
|
|
434
563
|
}
|
|
435
564
|
),
|
|
436
565
|
renderThemeSelect(),
|
|
@@ -495,4 +624,4 @@ export {
|
|
|
495
624
|
Footer as F,
|
|
496
625
|
UserThemeSettings as U
|
|
497
626
|
};
|
|
498
|
-
//# sourceMappingURL=Footer-
|
|
627
|
+
//# sourceMappingURL=Footer-DLnIK3R3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer-DLnIK3R3.js","sources":["../../src/components/Footer/FooterBase.tsx","../../src/components/Select/ThemeSelect/next/ThemeSelect.tsx","../../src/components/Footer/next/Footer.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\r\nimport {\r\n BaseFooterProps,\r\n FooterLink,\r\n FooterSection,\r\n LogoSource,\r\n} from \"./Footer.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { getDefaultTheme } from \"../../config/boreal-style-config\";\r\nimport { capitalize } from \"@/utils/capitalize\";\r\n\r\nconst slugify = (value: string) =>\r\n value.toLowerCase().trim().replace(/\\s+/g, \"-\");\r\n\r\nconst FooterBase: React.FC<BaseFooterProps> = ({\r\n theme = getDefaultTheme(),\r\n attachment = \"static\",\r\n shadow = \"none\",\r\n rounding = \"none\",\r\n layout = \"inline\",\r\n className = \"\",\r\n \"data-testid\": testId = \"footer\",\r\n\r\n copyright,\r\n copyrightInBottom,\r\n links = [],\r\n sections,\r\n logo,\r\n brandTitle,\r\n brandDescription,\r\n brandHref,\r\n\r\n socialLinks = [],\r\n showThemeSelect = false,\r\n bottomEnd,\r\n\r\n contentClassName,\r\n leftClassName,\r\n linksClassName,\r\n linkClassName,\r\n logoClassName,\r\n socialClassName,\r\n themeToggleClassName,\r\n\r\n brandClassName,\r\n brandLinkClassName,\r\n brandTitleClassName,\r\n brandDescriptionClassName,\r\n\r\n sectionsClassName,\r\n sectionTitleClassName,\r\n actionsClassName,\r\n actionGroupClassName,\r\n\r\n bottomClassName,\r\n bottomCopyrightClassName,\r\n bottomEndClassName,\r\n copyrightClassName,\r\n\r\n IconButton,\r\n ImageComponent = \"img\",\r\n ThemeSelect,\r\n classMap,\r\n LinkWrapper = ({ href, children, ...rest }) => (\r\n <a href={href} {...rest}>\r\n {children}\r\n </a>\r\n ),\r\n\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n navAriaLabel = \"Footer site links\",\r\n socialNavAriaLabel = \"Social media\",\r\n themeSelectAriaLabel = \"Theme selector\",\r\n logoAriaLabel = \"Logo\",\r\n logoDecorative = false,\r\n labelId,\r\n ...rest\r\n}) => {\r\n const footerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.footer,\r\n classMap[theme],\r\n layout !== \"inline\" && classMap[`layout${capitalize(layout)}`],\r\n shadow !== \"none\" && classMap[`shadow${capitalize(shadow)}`],\r\n rounding !== \"none\" && classMap[`round${capitalize(rounding)}`],\r\n classMap[`attachment${capitalize(attachment)}`],\r\n className,\r\n ),\r\n [classMap, theme, layout, shadow, rounding, attachment, className],\r\n );\r\n\r\n const isLogoImage = (\r\n value: unknown,\r\n ): value is { src: string; width?: number; height?: number } =>\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n \"src\" in (value as Record<string, unknown>);\r\n\r\n const isImgLike = typeof logo === \"string\" || isLogoImage(logo);\r\n\r\n const imgLogo = isImgLike\r\n ? typeof logo === \"string\"\r\n ? { src: logo }\r\n : logo\r\n : undefined;\r\n\r\n const logoSrc = imgLogo?.src;\r\n const logoW = imgLogo?.width ?? 20;\r\n const logoH = imgLogo?.height ?? 20;\r\n\r\n const normalizedSections: FooterSection[] =\r\n sections && sections.length > 0\r\n ? sections\r\n : links.length > 0\r\n ? [\r\n {\r\n title: \"Links\",\r\n links,\r\n \"aria-label\": navAriaLabel,\r\n testId: \"links\",\r\n },\r\n ]\r\n : [];\r\n\r\n const shouldRenderCopyrightInBottom =\r\n copyrightInBottom ?? layout === \"columns\";\r\n\r\n const renderLogo = () => {\r\n if (isImgLike && logoSrc) {\r\n if (typeof ImageComponent === \"string\") {\r\n return (\r\n <img\r\n className={combineClassNames(classMap.logo, logoClassName)}\r\n data-testid={`${testId}-logo`}\r\n loading=\"lazy\"\r\n src={logoSrc}\r\n alt={logoDecorative ? \"\" : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n height={logoH}\r\n width={logoW}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <ImageComponent\r\n className={combineClassNames(classMap.logo, logoClassName)}\r\n data-testid={`${testId}-logo`}\r\n src={logoSrc}\r\n alt={logoDecorative ? \"\" : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n height={logoH}\r\n width={logoW}\r\n />\r\n );\r\n }\r\n\r\n if (!logo) {\r\n return null;\r\n }\r\n\r\n return (\r\n <span\r\n className={combineClassNames(classMap.logo, logoClassName)}\r\n role={logoDecorative ? undefined : \"img\"}\r\n aria-label={logoDecorative ? undefined : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n data-testid={`${testId}-logo`}\r\n >\r\n {\r\n logo as Exclude<\r\n LogoSource,\r\n string | { src: string; width?: number; height?: number }\r\n >\r\n }\r\n </span>\r\n );\r\n };\r\n\r\n const renderFooterLink = (\r\n link: FooterLink,\r\n index: number,\r\n customLinkClassName?: string,\r\n ) => {\r\n const slug = slugify(link.label || link.href || `link-${index}`);\r\n const key = `${link.href ?? slug}-${index}`;\r\n const resolvedLinkClassName = combineClassNames(\r\n classMap.link,\r\n customLinkClassName,\r\n );\r\n\r\n if (link.disabled) {\r\n return (\r\n <li key={key}>\r\n <span\r\n className={resolvedLinkClassName}\r\n data-testid={`${testId}-link-${slug}`}\r\n aria-disabled=\"true\"\r\n title={link.title}\r\n >\r\n {link.label}\r\n </span>\r\n </li>\r\n );\r\n }\r\n\r\n return (\r\n <li key={key}>\r\n <LinkWrapper\r\n href={link.href}\r\n className={resolvedLinkClassName}\r\n data-testid={`${testId}-link-${slug}`}\r\n aria-label={link[\"aria-label\"]}\r\n aria-current={link[\"aria-current\"]}\r\n title={link.title}\r\n rel={link.rel}\r\n target={link.target}\r\n >\r\n {link.label}\r\n </LinkWrapper>\r\n </li>\r\n );\r\n };\r\n\r\n const renderSocialLinks = () => {\r\n if (socialLinks.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n <nav\r\n className={combineClassNames(classMap.social, socialClassName)}\r\n aria-label={socialNavAriaLabel}\r\n data-testid={`${testId}-social`}\r\n >\r\n {socialLinks.map((social, index) => (\r\n <IconButton\r\n key={`${social.href ?? social.title}-${index}`}\r\n icon={social.icon}\r\n href={social.href}\r\n isExternal={social.isExternal ?? true}\r\n shadow=\"none\"\r\n aria-label={social[\"aria-label\"] ?? social.title}\r\n title={social.tooltip ?? social.title}\r\n theme=\"clear\"\r\n disabled={social.disabled}\r\n rel={social.rel}\r\n target={social.target}\r\n data-testid={`${testId}-social-${slugify(social.title)}`}\r\n />\r\n ))}\r\n </nav>\r\n );\r\n };\r\n\r\n const renderThemeSelect = () => {\r\n if (!showThemeSelect) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.themeToggle,\r\n themeToggleClassName,\r\n )}\r\n data-testid={`${testId}-theme-select`}\r\n aria-label={themeSelectAriaLabel}\r\n >\r\n <ThemeSelect\r\n theme=\"clear\"\r\n label={brandDescription}\r\n shadow=\"none\"\r\n aria-label={themeSelectAriaLabel}\r\n />\r\n </div>\r\n );\r\n };\r\n\r\n const renderBrand = () => {\r\n const brandContent = (\r\n <>\r\n {renderLogo()}\r\n\r\n {brandTitle && (\r\n <span\r\n className={combineClassNames(\r\n classMap.brandTitle,\r\n brandTitleClassName,\r\n )}\r\n data-testid={`${testId}-brand-title`}\r\n >\r\n {brandTitle}\r\n </span>\r\n )}\r\n </>\r\n );\r\n\r\n return (\r\n <div\r\n className={combineClassNames(classMap.brand, brandClassName)}\r\n data-testid={`${testId}-brand`}\r\n >\r\n {brandHref ? (\r\n <LinkWrapper\r\n href={brandHref}\r\n className={combineClassNames(\r\n classMap.brandLink,\r\n brandLinkClassName,\r\n )}\r\n aria-label={\r\n typeof brandTitle === \"string\" ? brandTitle : logoAriaLabel\r\n }\r\n >\r\n {brandContent}\r\n </LinkWrapper>\r\n ) : (\r\n <div\r\n className={combineClassNames(\r\n classMap.brandLink,\r\n brandLinkClassName,\r\n )}\r\n >\r\n {brandContent}\r\n </div>\r\n )}\r\n\r\n {brandDescription && (\r\n <p\r\n className={combineClassNames(\r\n classMap.brandDescription,\r\n brandDescriptionClassName,\r\n )}\r\n data-testid={`${testId}-brand-description`}\r\n >\r\n {brandDescription}\r\n </p>\r\n )}\r\n\r\n {copyright && !shouldRenderCopyrightInBottom && (\r\n <div\r\n className={combineClassNames(\r\n classMap.copyright,\r\n copyrightClassName,\r\n )}\r\n data-testid={`${testId}-copyright`}\r\n >\r\n <p id={labelId}>{copyright}</p>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n const renderSections = () => {\r\n if (normalizedSections.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n className={combineClassNames(classMap.sections, sectionsClassName)}\r\n data-testid={`${testId}-sections`}\r\n >\r\n {normalizedSections.map((section, sectionIndex) => {\r\n const titleText =\r\n typeof section.title === \"string\"\r\n ? section.title\r\n : `section-${sectionIndex + 1}`;\r\n\r\n const sectionSlug = section.testId ?? slugify(titleText);\r\n\r\n return (\r\n <nav\r\n key={sectionSlug}\r\n className={combineClassNames(classMap.section, section.className)}\r\n aria-label={section[\"aria-label\"] ?? `${titleText} links`}\r\n data-testid={`${testId}-section-${sectionSlug}`}\r\n >\r\n <h2\r\n className={combineClassNames(\r\n classMap.sectionTitle,\r\n sectionTitleClassName,\r\n section.titleClassName,\r\n )}\r\n >\r\n {section.title}\r\n </h2>\r\n\r\n <ul\r\n className={combineClassNames(\r\n classMap.sectionList,\r\n section.listClassName,\r\n )}\r\n >\r\n {section.links.map((link, index) =>\r\n renderFooterLink(link, index, section.linkClassName),\r\n )}\r\n </ul>\r\n </nav>\r\n );\r\n })}\r\n </div>\r\n );\r\n };\r\n\r\n if (layout === \"columns\") {\r\n return (\r\n <footer\r\n className={footerClass}\r\n data-testid={testId}\r\n role=\"contentinfo\"\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy ?? labelId}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n <div className={combineClassNames(classMap.content, contentClassName)}>\r\n {renderBrand()}\r\n\r\n {renderSections()}\r\n\r\n {(socialLinks.length > 0 || showThemeSelect) && (\r\n <div\r\n className={combineClassNames(classMap.actions, actionsClassName)}\r\n data-testid={`${testId}-actions`}\r\n >\r\n {socialLinks.length > 0 && (\r\n <div\r\n className={combineClassNames(\r\n classMap.actionGroup,\r\n actionGroupClassName,\r\n )}\r\n >\r\n <h2\r\n className={combineClassNames(\r\n classMap.sectionTitle,\r\n sectionTitleClassName,\r\n )}\r\n >\r\n Connect\r\n </h2>\r\n {renderSocialLinks()}\r\n </div>\r\n )}\r\n\r\n {renderThemeSelect()}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {(copyright || bottomEnd) && (\r\n <div\r\n className={combineClassNames(classMap.bottom, bottomClassName)}\r\n data-testid={`${testId}-bottom`}\r\n >\r\n {copyright && shouldRenderCopyrightInBottom && (\r\n <p\r\n id={labelId}\r\n className={combineClassNames(\r\n classMap.bottomCopyright,\r\n bottomCopyrightClassName,\r\n )}\r\n data-testid={`${testId}-copyright`}\r\n >\r\n {copyright}\r\n </p>\r\n )}\r\n\r\n {bottomEnd && (\r\n <div\r\n className={combineClassNames(\r\n classMap.bottomEnd,\r\n bottomEndClassName,\r\n )}\r\n data-testid={`${testId}-bottom-end`}\r\n >\r\n {bottomEnd}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </footer>\r\n );\r\n }\r\n\r\n return (\r\n <footer\r\n className={footerClass}\r\n data-testid={testId}\r\n role=\"contentinfo\"\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy ?? labelId}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n <div className={combineClassNames(classMap.content, contentClassName)}>\r\n <div\r\n className={combineClassNames(classMap.left, leftClassName)}\r\n data-testid={`${testId}-left`}\r\n >\r\n {renderLogo()}\r\n\r\n {copyright && (\r\n <div\r\n className={\r\n combineClassNames(classMap.copyright, copyrightClassName) ??\r\n combineClassNames(classMap.left, leftClassName)\r\n }\r\n data-testid={`${testId}-copyright`}\r\n >\r\n <p id={labelId}>{copyright}</p>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {links.length > 0 && (\r\n <nav\r\n className={combineClassNames(classMap.links, linksClassName)}\r\n aria-label={navAriaLabel}\r\n data-testid={`${testId}-nav`}\r\n >\r\n <ul>\r\n {links.map((link, index) =>\r\n renderFooterLink(link, index, linkClassName),\r\n )}\r\n </ul>\r\n </nav>\r\n )}\r\n\r\n {renderThemeSelect()}\r\n {renderSocialLinks()}\r\n </div>\r\n </footer>\r\n );\r\n};\r\n\r\nFooterBase.displayName = \"FooterBase\";\r\nexport default FooterBase;\r\n","\"use client\";\r\n\r\nimport { useContext, useMemo, forwardRef } from \"react\";\r\nimport { Select } from \"@/index.next\";\r\nimport { ThemeContext } from \"../../../../context/ThemeContext\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"@/config/boreal-style-config\";\r\nimport { ThemeSelectProps } from \"../../Select.types\";\r\n\r\nconst UserThemeSettings = forwardRef<HTMLSelectElement, ThemeSelectProps>(\r\n (\r\n {\r\n theme = getDefaultTheme(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n state = \"\",\r\n \"data-testid\": testId = \"theme-select\",\r\n },\r\n ref,\r\n ) => {\r\n const ctx = useContext(ThemeContext);\r\n if (!ctx)\r\n throw new Error(\"ThemeContext is undefined. Wrap with ThemeProvider.\");\r\n\r\n const { selectedScheme, setSelectedScheme, schemes } = ctx;\r\n\r\n const options = useMemo(\r\n () =>\r\n schemes.map((scheme, index) => ({\r\n value: String(index),\r\n label: scheme.name,\r\n })),\r\n [schemes],\r\n );\r\n\r\n return (\r\n <div className={`control-container`}>\r\n <Select\r\n ref={ref}\r\n theme={theme}\r\n state={state}\r\n shadow={shadow}\r\n rounding={rounding}\r\n options={options}\r\n data-testid={testId}\r\n value={String(selectedScheme)}\r\n aria-label=\"Select Theme\"\r\n onChange={(value: string | number) =>\r\n setSelectedScheme(parseInt(String(value), 10))\r\n }\r\n />\r\n </div>\r\n );\r\n },\r\n);\r\nUserThemeSettings.displayName = \"UserThemeSettings\";\r\nexport default UserThemeSettings;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport Image from \"next/image\";\r\n\r\nimport FooterBase from \"../FooterBase\";\r\nimport { FooterProps } from \"../Footer.types\";\r\nimport IconButton from \"../../IconButton/next/IconButton\";\r\nimport ThemeSelect from \"../../Select/ThemeSelect/next/ThemeSelect\";\r\n\r\nimport styles from \"./Footer.module.scss\";\r\n\r\nconst Footer: React.FC<FooterProps> = (props) => {\r\n return (\r\n <FooterBase\r\n {...props}\r\n IconButton={IconButton}\r\n ImageComponent={Image}\r\n ThemeSelect={ThemeSelect}\r\n LinkWrapper={({ href, children, className, ...rest }) => (\r\n <Link href={href} className={className} {...rest}>\r\n {children}\r\n </Link>\r\n )}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\n\r\nFooter.displayName = \"Footer\";\r\n\r\nexport default Footer;\r\n"],"names":["copyright","links","sections","logo","brandTitle","brandDescription","bottomEnd","IconButton","rest","link","social","section","ThemeSelect"],"mappings":"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"}
|