@devslab/site-kit 0.12.0 → 0.13.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.ko.md +45 -0
- package/README.md +45 -0
- package/dist/chrome.d.ts +20 -1
- package/dist/chrome.d.ts.map +1 -1
- package/dist/layouts.d.ts +1 -1
- package/dist/layouts.d.ts.map +1 -1
- package/dist/locale-menu.d.ts.map +1 -1
- package/dist/solid.js +213 -151
- package/dist/solid.js.map +1 -1
- package/dist/solid.server.js +105 -36
- package/dist/solid.server.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/site-sections.css +7 -1
- package/styles.css +28 -6
package/dist/solid.server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createComponent, escape, mergeProps, ssr, ssrAttribute, ssrElement, ssrHydrationKey } from "solid-js/web";
|
|
2
|
-
import { For, Show, createSignal, createUniqueId, onMount } from "solid-js";
|
|
2
|
+
import { For, Show, createMemo, createSignal, createUniqueId, onMount } from "solid-js";
|
|
3
3
|
import { Button, Field, Icon, IconButton } from "@devslab/dds-solid";
|
|
4
4
|
//#region src/core/locales.mjs
|
|
5
5
|
var LOCALES = Object.freeze([
|
|
@@ -420,6 +420,12 @@ function spriteMarkup(countries, bodies, uid) {
|
|
|
420
420
|
* the bodies through loadFlagBodies, which the browser build emits as its
|
|
421
421
|
* own chunk. Zero-sized rather than display:none so the referenced clip
|
|
422
422
|
* paths and gradients still resolve.
|
|
423
|
+
*
|
|
424
|
+
* "No server HTML" is decided by looking at the element, not at whether
|
|
425
|
+
* hydration is running: a hydration that drifted upstream recreates this
|
|
426
|
+
* element from the template, empty, while the hydration context is still
|
|
427
|
+
* set. Trusting the context left the first consumer with a blank flag
|
|
428
|
+
* box; an empty sprite loads its bodies whatever the reason it is empty.
|
|
423
429
|
*/
|
|
424
430
|
function FlagSprite(props) {
|
|
425
431
|
const bodies = flagBodiesNow();
|
|
@@ -514,32 +520,59 @@ var _tmpl$3$2 = [
|
|
|
514
520
|
"</ul></details></nav>"
|
|
515
521
|
];
|
|
516
522
|
var _tmpl$4$2 = [
|
|
517
|
-
"<
|
|
518
|
-
" class=\"site-
|
|
519
|
-
"
|
|
520
|
-
"
|
|
521
|
-
"
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
"
|
|
525
|
-
"
|
|
523
|
+
"<p",
|
|
524
|
+
" class=\"site-footer__brand\"><!--$-->",
|
|
525
|
+
"<!--/--><!--$-->",
|
|
526
|
+
"<!--/--><!--$-->",
|
|
527
|
+
"<!--/--></p>"
|
|
528
|
+
];
|
|
529
|
+
var _tmpl$5$2 = [
|
|
530
|
+
"<strong",
|
|
531
|
+
">",
|
|
532
|
+
"</strong>"
|
|
526
533
|
];
|
|
527
|
-
var _tmpl$
|
|
528
|
-
var _tmpl$
|
|
534
|
+
var _tmpl$6$2 = ["<span", " aria-hidden=\"true\">·</span>"];
|
|
535
|
+
var _tmpl$7$2 = [
|
|
529
536
|
"<a",
|
|
530
537
|
">",
|
|
531
538
|
"</a>"
|
|
532
539
|
];
|
|
533
|
-
var _tmpl$
|
|
540
|
+
var _tmpl$8$1 = [
|
|
541
|
+
"<ul",
|
|
542
|
+
" class=\"site-footer__links\"><!--$-->",
|
|
543
|
+
"<!--/--><li>",
|
|
544
|
+
"</li></ul>"
|
|
545
|
+
];
|
|
546
|
+
var _tmpl$9$1 = [
|
|
534
547
|
"<bdi",
|
|
535
548
|
">",
|
|
536
549
|
"</bdi>"
|
|
537
550
|
];
|
|
538
|
-
var _tmpl$
|
|
551
|
+
var _tmpl$0$1 = [
|
|
539
552
|
"<a",
|
|
540
553
|
"><bdi>",
|
|
541
554
|
"</bdi></a>"
|
|
542
555
|
];
|
|
556
|
+
var _tmpl$1$1 = [
|
|
557
|
+
"<footer",
|
|
558
|
+
" class=\"site-footer\"",
|
|
559
|
+
"><div class=\"site-footer__inner\"><!--$-->",
|
|
560
|
+
"<!--/--><div class=\"site-footer__row\"><!--$-->",
|
|
561
|
+
"<!--/--><!--$-->",
|
|
562
|
+
"<!--/--></div></div></footer>"
|
|
563
|
+
];
|
|
564
|
+
var _tmpl$10 = [
|
|
565
|
+
"<div",
|
|
566
|
+
" class=\"site-footer__identity\"><!--$-->",
|
|
567
|
+
"<!--/--><div class=\"site-footer__details\">",
|
|
568
|
+
"</div></div>"
|
|
569
|
+
];
|
|
570
|
+
var _tmpl$11 = [
|
|
571
|
+
"<nav",
|
|
572
|
+
" class=\"site-footer__nav\"",
|
|
573
|
+
">",
|
|
574
|
+
"</nav>"
|
|
575
|
+
];
|
|
543
576
|
function ThemeToggle(props) {
|
|
544
577
|
const order = [
|
|
545
578
|
"system",
|
|
@@ -591,9 +624,12 @@ function ThemeToggle(props) {
|
|
|
591
624
|
}
|
|
592
625
|
});
|
|
593
626
|
}
|
|
627
|
+
/** The emphasis class a `SiteLink` asks for, or none. */
|
|
628
|
+
var linkClass = (item) => item.emphasis ? "site-link--emphasis" : void 0;
|
|
594
629
|
function SiteHeader(props) {
|
|
595
630
|
const [menuOpen, setMenuOpen] = createSignal(false);
|
|
596
|
-
|
|
631
|
+
const brand = createMemo(() => props.brand);
|
|
632
|
+
return ssr(_tmpl$$4, ssrHydrationKey(), escape(props.messages.skipToContent), ssrAttribute("href", escape(brand().href, true), false) + ssrAttribute("aria-label", escape(brand().label, true), false), escape(brand().logo), escape(brand().name), escape(createComponent(Button, {
|
|
597
633
|
"class": "site-menu-button",
|
|
598
634
|
tone: "ghost",
|
|
599
635
|
get ["aria-expanded"]() {
|
|
@@ -608,15 +644,20 @@ function SiteHeader(props) {
|
|
|
608
644
|
get each() {
|
|
609
645
|
return props.navigation;
|
|
610
646
|
},
|
|
611
|
-
children: (item) => ssr(_tmpl$2$2, ssrHydrationKey(), ssrAttribute("href", escape(item.href, true), false) + ssrAttribute("target", item.external ? "_blank" : escape(void 0, true), false) + ssrAttribute("rel", item.external ? "noreferrer" : escape(void 0, true), false), escape(item.label))
|
|
612
|
-
})), ssrAttribute("data-open", escape(String(menuOpen()), true), false), escape(createComponent(
|
|
613
|
-
get
|
|
647
|
+
children: (item) => ssr(_tmpl$2$2, ssrHydrationKey(), ssrAttribute("class", escape(linkClass(item), true), false) + ssrAttribute("href", escape(item.href, true), false) + ssrAttribute("target", item.external ? "_blank" : escape(void 0, true), false) + ssrAttribute("rel", item.external ? "noreferrer" : escape(void 0, true), false), escape(item.label))
|
|
648
|
+
})), ssrAttribute("data-open", escape(String(menuOpen()), true), false), escape(createComponent(Show, {
|
|
649
|
+
get when() {
|
|
614
650
|
return props.locale;
|
|
615
651
|
},
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
652
|
+
children: (locale) => createComponent(LocaleMenu, mergeProps({
|
|
653
|
+
get state() {
|
|
654
|
+
return locale();
|
|
655
|
+
},
|
|
656
|
+
get messages() {
|
|
657
|
+
return props.messages;
|
|
658
|
+
}
|
|
659
|
+
}, () => props.localeVariant ? { variant: props.localeVariant } : {}, () => props.localeRegistry ? { registry: props.localeRegistry } : {}, () => props.onLocaleChange ? { onLocaleChange: props.onLocaleChange } : {}))
|
|
660
|
+
})), props.theme && escape(createComponent(ThemeToggle, mergeProps(() => props.theme, { get messages() {
|
|
620
661
|
return props.messages;
|
|
621
662
|
} }))), escape(props.actions));
|
|
622
663
|
}
|
|
@@ -659,7 +700,34 @@ function FooterLocaleMenu(props) {
|
|
|
659
700
|
*/
|
|
660
701
|
function SiteFooter(props) {
|
|
661
702
|
const registry = () => props.localeRegistry ?? FAMILY_LOCALES;
|
|
662
|
-
|
|
703
|
+
const brand = createMemo(() => props.brand);
|
|
704
|
+
const details = createMemo(() => props.details);
|
|
705
|
+
const brandLine = () => ssr(_tmpl$4$2, ssrHydrationKey(), escape(brand().logo), escape(createComponent(Show, {
|
|
706
|
+
get when() {
|
|
707
|
+
return brand().name;
|
|
708
|
+
},
|
|
709
|
+
children: (name) => ssr(_tmpl$5$2, ssrHydrationKey(), escape(name()))
|
|
710
|
+
})), escape(createComponent(For, {
|
|
711
|
+
get each() {
|
|
712
|
+
return props.family ?? [];
|
|
713
|
+
},
|
|
714
|
+
children: (item) => [ssr(_tmpl$6$2, ssrHydrationKey()), ssr(_tmpl$7$2, ssrHydrationKey() + ssrAttribute("class", escape(linkClass(item), true), false) + ssrAttribute("href", escape(item.href, true), false), escape(item.label))]
|
|
715
|
+
})));
|
|
716
|
+
const linkList = () => ssr(_tmpl$8$1, ssrHydrationKey(), escape(createComponent(For, {
|
|
717
|
+
get each() {
|
|
718
|
+
return props.links;
|
|
719
|
+
},
|
|
720
|
+
children: (item) => ssr(_tmpl$2$2, ssrHydrationKey(), ssrAttribute("class", escape(linkClass(item), true), false) + ssrAttribute("href", escape(item.href, true), false), escape(item.label))
|
|
721
|
+
})), escape(createComponent(Show, {
|
|
722
|
+
get when() {
|
|
723
|
+
return props.copyrightHref;
|
|
724
|
+
},
|
|
725
|
+
get fallback() {
|
|
726
|
+
return ssr(_tmpl$9$1, ssrHydrationKey(), escape(props.copyright));
|
|
727
|
+
},
|
|
728
|
+
children: (href) => ssr(_tmpl$0$1, ssrHydrationKey() + ssrAttribute("href", escape(href(), true), false), escape(props.copyright))
|
|
729
|
+
})));
|
|
730
|
+
return ssr(_tmpl$1$1, ssrHydrationKey(), ssrAttribute("aria-label", escape(props.messages.footerLabel, true), false), escape(createComponent(Show, {
|
|
663
731
|
get when() {
|
|
664
732
|
return props.locale;
|
|
665
733
|
},
|
|
@@ -677,24 +745,22 @@ function SiteFooter(props) {
|
|
|
677
745
|
return props.onLocaleSelect;
|
|
678
746
|
}
|
|
679
747
|
})
|
|
680
|
-
})), escape(
|
|
681
|
-
get
|
|
682
|
-
return
|
|
748
|
+
})), escape(createComponent(Show, {
|
|
749
|
+
get when() {
|
|
750
|
+
return details();
|
|
683
751
|
},
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
get each() {
|
|
687
|
-
return props.links;
|
|
752
|
+
get fallback() {
|
|
753
|
+
return brandLine();
|
|
688
754
|
},
|
|
689
|
-
children: (
|
|
755
|
+
children: (content) => ssr(_tmpl$10, ssrHydrationKey(), escape(brandLine()), escape(content()))
|
|
690
756
|
})), escape(createComponent(Show, {
|
|
691
757
|
get when() {
|
|
692
|
-
return props.
|
|
758
|
+
return props.linksLabel;
|
|
693
759
|
},
|
|
694
760
|
get fallback() {
|
|
695
|
-
return
|
|
761
|
+
return linkList();
|
|
696
762
|
},
|
|
697
|
-
children: (
|
|
763
|
+
children: (label) => ssr(_tmpl$11, ssrHydrationKey(), ssrAttribute("aria-label", escape(label(), true), false), escape(linkList()))
|
|
698
764
|
})));
|
|
699
765
|
}
|
|
700
766
|
//#endregion
|
|
@@ -755,13 +821,16 @@ var _tmpl$7$1 = [
|
|
|
755
821
|
];
|
|
756
822
|
function MarketingShell(props) {
|
|
757
823
|
const mainClass = () => props.mainWidth === "bleed" ? "site-main site-main--bleed" : "site-main";
|
|
758
|
-
|
|
824
|
+
const header = createMemo(() => props.header);
|
|
825
|
+
const footer = createMemo(() => props.footer);
|
|
826
|
+
return ssr(_tmpl$$3, ssrHydrationKey(), escape(createComponent(SiteHeader, mergeProps(header))), ssrAttribute("class", escape(mainClass(), true), false), escape(props.children), escape(createComponent(SiteFooter, mergeProps(footer))));
|
|
759
827
|
}
|
|
760
828
|
function LegalLayout(props) {
|
|
761
829
|
return ssr(_tmpl$2$1, ssrHydrationKey(), escape(props.title), escape(props.messages.updatedLabel), ssrAttribute("datetime", escape(props.updatedAt, true), false), escape(props.updatedAt), escape(props.children));
|
|
762
830
|
}
|
|
763
831
|
function StatusBanner(props) {
|
|
764
|
-
|
|
832
|
+
const children = createMemo(() => props.children);
|
|
833
|
+
return ssr(_tmpl$3$1, ssrHydrationKey(), `site-status site-status--${escape(props.tone, true)}`, ssrAttribute("role", props.tone === "danger" ? "alert" : "status", false) + ssrAttribute("aria-live", props.tone === "danger" ? "assertive" : "polite", false), escape(props.title), children() && ssr(_tmpl$4$1, ssrHydrationKey(), escape(children())), props.action && escape(createComponent(Button, {
|
|
765
834
|
get tone() {
|
|
766
835
|
return props.action.tone ?? "secondary";
|
|
767
836
|
},
|