@devslab/site-kit 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ko.md CHANGED
@@ -72,7 +72,41 @@ export const locales = defineLocaleRegistry({
72
72
  메타데이터를 레지스트리 없이 만들면, 페이지는 타밀어로 렌더되면서 검색
73
73
  엔진에는 타밀어가 없다고 말한다.
74
74
 
75
- ## 로케일 메뉴 variant
75
+ ## 제작사 표시
76
+
77
+ 루트 entry는 프레임워크 중립 `definePublisher`, `buildPublisher`,
78
+ `serializeJsonLd`, `renderPublisherHtml`을 제공한다. DevsLab 제품과 OSS는
79
+ 별도 entry `@devslab/site-kit/devslab`의 공통 설정을 사용한다.
80
+
81
+ ```js
82
+ import { buildPublisher, renderPublisherHtml } from "@devslab/site-kit";
83
+ import { DEVSLAB_PUBLISHER } from "@devslab/site-kit/devslab";
84
+
85
+ const publisher = buildPublisher(DEVSLAB_PUBLISHER, { locale: "ko" });
86
+ // footer에는 publisher.link.href / .label을 사용한다.
87
+ // JSON-LD graph에는 publisher.organization을 넣고,
88
+ // 제품/WebSite publisher에는 publisher.reference를 사용한다.
89
+ const html = renderPublisherHtml(DEVSLAB_PUBLISHER);
90
+ // 정적 페이지 빌드에서 삽입: 보이는 링크 + Organization.
91
+ ```
92
+
93
+ `PublisherIdentity`의 필수 필드는 `id`, `name`, `url`이다. 선택 필드
94
+ `alternateName`, `sameAs`, `labels`, `defaultLabel`은 정체성만 표현하며
95
+ 제품 기능 주장을 추가하지 않는다. URL은 사용자 정보 없는 절대 HTTP(S)만
96
+ 허용한다. 설정은 복사 후 동결한다. 라벨은 정확한 locale, 소문자/기본 언어,
97
+ `defaultLabel`(없으면 `name`) 순서다. DevsLab 기본 라벨은
98
+ `데브스랩(DevsLab)`이고 `en`은 `DevsLab`이다. 공식 홈페이지·한국어 이름·
99
+ 공식 `sameAs` 링크는 이 설정이 소유한다.
100
+
101
+ `renderPublisherHtml`은 링크와 JSON-LD를 escape하며 CSP용 `nonce`를
102
+ 선택적으로 받는다. DOM이나 Solid 없이 문자열을 반환하므로 Node 빌드,
103
+ MkDocs 준비 작업, SSR에서 공통으로 쓴다. 기존 graph를 script에 넣을 때는
104
+ `serializeJsonLd`를 사용한다. Organization은 페이지마다 한 번 출력한다.
105
+ 다른 제작사는 자체 설정으로 `definePublisher`를 호출한다. 기능 주장은
106
+ 계속 `VerifiedFactRegistry`로 검증한다. robots·동의·분석·학습 정책은
107
+ 이 API가 변경하지 않는다.
108
+
109
+ ## 로케일 메뉴 렌더링
76
110
 
77
111
  `LocaleMenu`는 기본으로 네이티브 `<select>`를 렌더링한다. `variant="flag"`는
78
112
  트리거가 현재 로케일의 국기이고 행마다 국기 + 자국어 이름 링크인 `<details>`
package/README.md CHANGED
@@ -41,7 +41,40 @@ Six stateless primitives for a family landing page, extracted from VisionLinq. I
41
41
 
42
42
  `defineLocaleRegistry({ only: ["ko", "en", "ja"] })` keeps only those family locales (family order, before any `extra`). Pass the registry to `SiteHeader localeRegistry` and to `validateCatalogs(…, { registry })`; a visitor asking for a locale outside the subset resolves to your `defaultLocale`. `defaultLocale` must itself be inside `only`; an alias whose target falls outside the subset (e.g. `zh` → `zh-TW` when only `zh-HK` is kept) resolves to `undefined` and so falls through to `defaultLocale`, never to another script.
43
43
 
44
- ## Product locales
44
+ ## Publisher attribution
45
+
46
+ The root entry provides framework-neutral `definePublisher`, `buildPublisher`,
47
+ `serializeJsonLd`, and `renderPublisherHtml`. DevsLab products and OSS sites use
48
+ one identity preset from the separate `@devslab/site-kit/devslab` entry:
49
+
50
+ ```js
51
+ import { buildPublisher, renderPublisherHtml } from "@devslab/site-kit";
52
+ import { DEVSLAB_PUBLISHER } from "@devslab/site-kit/devslab";
53
+
54
+ const publisher = buildPublisher(DEVSLAB_PUBLISHER, { locale: "ko" });
55
+ // Render publisher.link.href / .label in the footer.
56
+ // Put publisher.organization in the JSON-LD graph and use
57
+ // publisher.reference as the product/WebSite publisher.
58
+ const html = renderPublisherHtml(DEVSLAB_PUBLISHER);
59
+ // Insert html into a static page during its build: visible link + Organization.
60
+ ```
61
+
62
+ `PublisherIdentity` requires `id`, `name`, and `url`; optional `alternateName`,
63
+ `sameAs`, `labels`, and `defaultLabel` describe identity, not product capabilities.
64
+ URLs must be absolute HTTP(S) without credentials. Configuration is copied and
65
+ frozen. Labels use exact locale, lowercase/base language, then `defaultLabel`
66
+ (or `name`). The DevsLab default is `데브스랩(DevsLab)`; `en` uses `DevsLab`.
67
+ The preset owns the official homepage, Korean alias and official `sameAs` links.
68
+
69
+ `renderPublisherHtml` escapes the anchor and JSON-LD and accepts an optional
70
+ `nonce` for CSP. It returns a string without reading the DOM or importing Solid;
71
+ Node build scripts, MkDocs preparation, and SSR can use the same output.
72
+ For an existing graph, use `serializeJsonLd` when inserting JSON into a script.
73
+ Render the Organization once per page. Other publishers call `definePublisher`
74
+ with their own configuration. Capability claims still use `VerifiedFactRegistry`;
75
+ this API does not change robots rules, consent, analytics or training policy.
76
+
77
+ ## Product locale registries
45
78
 
46
79
  `LOCALES` is the family list — the fourteen languages devslab.kr markets in,
47
80
  and the floor every product gets. It is not every product's list. A product
package/dist/chrome.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type JSX } from "solid-js";
2
2
  import { type LocaleMenuProps, type LocaleMenuVariant } from "./locale-menu";
3
- import type { LocaleRegistry } from "../core/locales.mjs";
3
+ import { type LocaleRegistry } from "../core/locales.mjs";
4
4
  import type { LocaleState, SiteBrand, SiteLink, SiteMessages, ThemePreference } from "./types";
5
5
  export type { LocaleMenuProps };
6
6
  export interface ThemeToggleProps {
@@ -32,7 +32,36 @@ export interface SiteFooterProps {
32
32
  brand: SiteBrand;
33
33
  links: SiteLink[];
34
34
  copyright: string;
35
+ /** Wraps the copyright in a link — the family site, usually. */
36
+ copyrightHref?: string;
35
37
  messages: SiteMessages;
38
+ /**
39
+ * The language row. Omit it and no row is rendered: a product whose header
40
+ * already offers every language may not want a second copy of the list.
41
+ */
42
+ locale?: LocaleState;
43
+ /** The languages the row lists. Defaults to the family's fourteen. */
44
+ localeRegistry?: LocaleRegistry<string>;
45
+ /**
46
+ * Called with the code the reader picked, before the browser follows the
47
+ * link — for a product that remembers the choice in a cookie.
48
+ */
49
+ onLocaleSelect?: (locale: string) => void;
50
+ /** Links after the brand name, middot-separated: the family line, the operator. */
51
+ family?: SiteLink[];
36
52
  }
53
+ /**
54
+ * The family footer: a language row, then the brand beside its family links,
55
+ * then the page's links and the copyright.
56
+ *
57
+ * Every product wrote this by hand. VisionLinq, BookLinq and TraceLinq each
58
+ * carried their own copy with a comment saying the kit's footer "takes only a
59
+ * flat link list; extending it is a dds release this page would then wait on" —
60
+ * three copies and three notes naming the same missing release. Their CSS had
61
+ * already converged byte-for-byte. This is that release.
62
+ *
63
+ * Additive: a caller that passes only brand/links/copyright/messages gets the
64
+ * same single row it got before, plus its brand mark if it set one.
65
+ */
37
66
  export declare function SiteFooter(props: SiteFooterProps): JSX.Element;
38
67
  //# sourceMappingURL=chrome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/solid/chrome.tsx"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/F,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eA0ClD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACnD,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eA2BhD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eAUhD"}
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/solid/chrome.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAkB,KAAK,cAAc,EAAmB,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/F,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eA0ClD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACnD,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eA2BhD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sEAAsE;IACtE,cAAc,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,mFAAmF;IACnF,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eA4ChD"}
package/dist/solid.js CHANGED
@@ -297,8 +297,8 @@ function F(e, t) {
297
297
  }
298
298
  //#endregion
299
299
  //#region src/solid/locale-menu.tsx
300
- var I = /*#__PURE__*/ p("<svg aria-hidden=true>"), L = /*#__PURE__*/ p("<label><span class=dds-sr-only></span><span class=\"dds-select site-locale\"><select class=dds-select__input>"), R = /*#__PURE__*/ p("<option>"), z = /*#__PURE__*/ p("<details class=site-locale-flag><summary class=site-locale-flag__trigger></summary><ul class=site-locale-flag__list role=list>"), ee = /*#__PURE__*/ p("<li><a class=site-locale-flag__option><!$><!/><span>");
301
- function B(e, t) {
300
+ var I = /*#__PURE__*/ p("<svg aria-hidden=true>"), L = /*#__PURE__*/ p("<label><span class=dds-sr-only></span><span class=\"dds-select site-locale\"><select class=dds-select__input>"), ee = /*#__PURE__*/ p("<option>"), te = /*#__PURE__*/ p("<details class=site-locale-flag><summary class=site-locale-flag__trigger></summary><ul class=site-locale-flag__list role=list>"), ne = /*#__PURE__*/ p("<li><a class=site-locale-flag__option><!$><!/><span>");
301
+ function R(e, t) {
302
302
  let n = [...e.matchAll(/\bid="([^"]+)"/g)].map((e) => e[1]);
303
303
  if (n.length === 0) return e;
304
304
  let r = e;
@@ -308,13 +308,13 @@ function B(e, t) {
308
308
  }
309
309
  return r;
310
310
  }
311
- var V = (e) => e.registry ?? k;
312
- function H(e) {
311
+ var z = (e) => e.registry ?? k;
312
+ function B(e) {
313
313
  let t = v(), n = () => F(e.locale, e.registry);
314
314
  return (() => {
315
315
  var a = i(I);
316
316
  return r((r) => {
317
- var i = e.class, o = n().viewBox, s = B(n().body, t);
317
+ var i = e.class, o = n().viewBox, s = R(n().body, t);
318
318
  return i !== r.e && u(a, "class", r.e = i), o !== r.t && u(a, "viewBox", r.t = o), s !== r.a && d(a, "innerHTML", r.a = s), r;
319
319
  }, {
320
320
  e: void 0,
@@ -323,8 +323,8 @@ function H(e) {
323
323
  }), a;
324
324
  })();
325
325
  }
326
- function te(e) {
327
- let n = () => V(e);
326
+ function re(e) {
327
+ let n = () => z(e);
328
328
  return (() => {
329
329
  var a = i(L), s = a.firstChild, c = s.nextSibling.firstChild;
330
330
  return o(s, () => e.messages.localeLabel), c.addEventListener("change", (t) => {
@@ -335,7 +335,7 @@ function te(e) {
335
335
  return n().LOCALES;
336
336
  },
337
337
  children: (t) => (() => {
338
- var n = i(R);
338
+ var n = i(ee);
339
339
  return o(n, () => t.nativeName), r((r) => {
340
340
  var i = t.code, a = t.dir, o = t.code === e.state.locale;
341
341
  return i !== r.e && u(n, "lang", r.e = i), a !== r.t && u(n, "dir", r.t = a), o !== r.a && d(n, "selected", r.a = o), r;
@@ -348,8 +348,8 @@ function te(e) {
348
348
  })), r(() => u(c, "aria-label", e.messages.localeLabel)), a;
349
349
  })();
350
350
  }
351
- function ne(e) {
352
- let n, s, c = () => V(e), d = () => c().LOCALES.find((t) => t.code === e.state.locale), f = () => {
351
+ function ie(e) {
352
+ let n, s, c = () => z(e), d = () => c().LOCALES.find((t) => t.code === e.state.locale), f = () => {
353
353
  n && (n.open = !1);
354
354
  }, p = (e) => {
355
355
  e.key !== "Escape" || !n?.open || (e.preventDefault(), f(), s?.focus());
@@ -358,12 +358,12 @@ function ne(e) {
358
358
  return t ? `${e.messages.localeLabel}: ${t}` : e.messages.localeLabel;
359
359
  };
360
360
  return (() => {
361
- var d = i(z), _ = d.firstChild, v = _.nextSibling;
361
+ var d = i(te), _ = d.firstChild, v = _.nextSibling;
362
362
  d.$$keydown = p;
363
363
  var y = n;
364
364
  typeof y == "function" ? m(y, d) : n = d;
365
365
  var b = s;
366
- return typeof b == "function" ? m(b, _) : s = _, o(_, t(H, {
366
+ return typeof b == "function" ? m(b, _) : s = _, o(_, t(B, {
367
367
  get locale() {
368
368
  return e.state.locale;
369
369
  },
@@ -376,10 +376,10 @@ function ne(e) {
376
376
  return c().LOCALES;
377
377
  },
378
378
  children: (n) => (() => {
379
- var s = i(ee), d = s.firstChild, p = d.firstChild, [m, h] = a(p.nextSibling), g = m.nextSibling;
379
+ var s = i(ne), d = s.firstChild, p = d.firstChild, [m, h] = a(p.nextSibling), g = m.nextSibling;
380
380
  return d.$$click = (t) => {
381
381
  e.onLocaleChange && (t.preventDefault(), f(), e.onLocaleChange(n.code, e.state.hrefForLocale(n.code)));
382
- }, o(d, t(H, {
382
+ }, o(d, t(B, {
383
383
  get locale() {
384
384
  return n.code;
385
385
  },
@@ -407,14 +407,14 @@ function ne(e) {
407
407
  }), l(), d;
408
408
  })();
409
409
  }
410
- function U(e) {
411
- return e.variant === "flag" ? t(ne, e) : t(te, e);
410
+ function V(e) {
411
+ return e.variant === "flag" ? t(ie, e) : t(re, e);
412
412
  }
413
413
  n(["keydown", "click"]);
414
414
  //#endregion
415
415
  //#region src/solid/chrome.tsx
416
- var W = /*#__PURE__*/ p("<header class=site-header><a class=dds-sr-only href=#main-content></a><div class=site-header__inner><a class=site-brand><!$><!/><!$><!/></a><!$><!/><nav id=site-navigation class=site-nav><ul class=site-nav__list></ul></nav><div class=site-header__controls><!$><!/><!$><!/><!$><!/>"), G = /*#__PURE__*/ p("<li><a>"), K = /*#__PURE__*/ p("<footer class=site-footer><div class=site-footer__inner><strong></strong><ul class=site-footer__links></ul><small>");
417
- function q(e) {
416
+ var ae = /*#__PURE__*/ p("<header class=site-header><a class=dds-sr-only href=#main-content></a><div class=site-header__inner><a class=site-brand><!$><!/><!$><!/></a><!$><!/><nav id=site-navigation class=site-nav><ul class=site-nav__list></ul></nav><div class=site-header__controls><!$><!/><!$><!/><!$><!/>"), H = /*#__PURE__*/ p("<li><a>"), U = /*#__PURE__*/ p("<footer class=site-footer><div class=site-footer__inner><!$><!/><div class=site-footer__row><p class=site-footer__brand><!$><!/><strong></strong><!$><!/></p><ul class=site-footer__links><!$><!/><li>"), W = /*#__PURE__*/ p("<nav class=site-footer__langs>"), G = /*#__PURE__*/ p("<a>"), K = /*#__PURE__*/ p("<span aria-hidden=true>·"), q = /*#__PURE__*/ p("<bdi>"), J = /*#__PURE__*/ p("<a><bdi>");
417
+ function Y(e) {
418
418
  let n = [
419
419
  "system",
420
420
  "light",
@@ -452,10 +452,10 @@ function q(e) {
452
452
  }
453
453
  });
454
454
  }
455
- function J(e) {
455
+ function X(e) {
456
456
  let [n, l] = _(!1);
457
457
  return (() => {
458
- var d = i(W), f = d.firstChild, p = f.nextSibling, m = p.firstChild, g = m.firstChild, [_, v] = a(g.nextSibling), y = _.nextSibling, [x, S] = a(y.nextSibling), C = m.nextSibling, [w, T] = a(C.nextSibling), E = w.nextSibling, D = E.firstChild, O = E.nextSibling, k = O.firstChild, [A, j] = a(k.nextSibling), M = A.nextSibling, [N, P] = a(M.nextSibling), F = N.nextSibling, [I, L] = a(F.nextSibling);
458
+ var d = i(ae), f = d.firstChild, p = f.nextSibling, m = p.firstChild, g = m.firstChild, [_, v] = a(g.nextSibling), y = _.nextSibling, [x, S] = a(y.nextSibling), C = m.nextSibling, [w, T] = a(C.nextSibling), E = w.nextSibling, D = E.firstChild, O = E.nextSibling, k = O.firstChild, [A, j] = a(k.nextSibling), M = A.nextSibling, [N, P] = a(M.nextSibling), F = N.nextSibling, [I, L] = a(F.nextSibling);
459
459
  return o(f, () => e.messages.skipToContent), o(m, () => e.brand.logo, _, v), o(m, () => e.brand.name, x, S), o(p, t(b, {
460
460
  class: "site-menu-button",
461
461
  tone: "ghost",
@@ -472,7 +472,7 @@ function J(e) {
472
472
  return e.navigation;
473
473
  },
474
474
  children: (e) => (() => {
475
- var t = i(G), n = t.firstChild;
475
+ var t = i(H), n = t.firstChild;
476
476
  return o(n, () => e.label), r((t) => {
477
477
  var r = e.href, i = e.external ? "_blank" : void 0, a = e.external ? "noreferrer" : void 0;
478
478
  return r !== t.e && u(n, "href", t.e = r), i !== t.t && u(n, "target", t.t = i), a !== t.a && u(n, "rel", t.a = a), t;
@@ -482,7 +482,7 @@ function J(e) {
482
482
  a: void 0
483
483
  }), t;
484
484
  })()
485
- })), o(O, t(U, c({
485
+ })), o(O, t(V, c({
486
486
  get state() {
487
487
  return e.locale;
488
488
  },
@@ -491,7 +491,7 @@ function J(e) {
491
491
  }
492
492
  }, () => e.localeVariant ? { variant: e.localeVariant } : {}, () => e.localeRegistry ? { registry: e.localeRegistry } : {}, () => e.onLocaleChange ? { onLocaleChange: e.onLocaleChange } : {})), A, j), o(O, (() => {
493
493
  var n = s(() => !!e.theme);
494
- return () => n() && t(q, c(() => e.theme, { get messages() {
494
+ return () => n() && t(Y, c(() => e.theme, { get messages() {
495
495
  return e.messages;
496
496
  } }));
497
497
  })(), N, P), o(O, () => e.actions, I, L), r((t) => {
@@ -505,43 +505,92 @@ function J(e) {
505
505
  }), d;
506
506
  })();
507
507
  }
508
- function Y(e) {
508
+ function Z(e) {
509
+ let n = () => e.localeRegistry ?? k;
509
510
  return (() => {
510
- var n = i(K), a = n.firstChild.firstChild, s = a.nextSibling, c = s.nextSibling;
511
- return o(a, () => e.brand.name), o(s, t(h, {
511
+ var s = i(U), c = s.firstChild, d = c.firstChild, [f, p] = a(d.nextSibling), m = f.nextSibling.firstChild, _ = m.firstChild, [v, y] = a(_.nextSibling), b = v.nextSibling, x = b.nextSibling, [S, C] = a(x.nextSibling), w = m.nextSibling, T = w.firstChild, [E, D] = a(T.nextSibling), O = E.nextSibling;
512
+ return o(c, t(g, {
513
+ get when() {
514
+ return e.locale;
515
+ },
516
+ children: (a) => (() => {
517
+ var s = i(W);
518
+ return o(s, t(h, {
519
+ get each() {
520
+ return n().LOCALES;
521
+ },
522
+ children: (t) => (() => {
523
+ var n = i(G);
524
+ return n.$$click = () => e.onLocaleSelect?.(t.code), o(n, () => t.nativeName), r((e) => {
525
+ var r = a().hrefForLocale(t.code), i = t.code, o = t.code, s = t.dir, c = t.code === a().locale ? "page" : void 0;
526
+ return r !== e.e && u(n, "href", e.e = r), i !== e.t && u(n, "hreflang", e.t = i), o !== e.a && u(n, "lang", e.a = o), s !== e.o && u(n, "dir", e.o = s), c !== e.i && u(n, "aria-current", e.i = c), e;
527
+ }, {
528
+ e: void 0,
529
+ t: void 0,
530
+ a: void 0,
531
+ o: void 0,
532
+ i: void 0
533
+ }), l(), n;
534
+ })()
535
+ })), r(() => u(s, "aria-label", e.messages.localeLabel)), s;
536
+ })()
537
+ }), f, p), o(m, () => e.brand.logo, v, y), o(b, () => e.brand.name), o(m, t(h, {
538
+ get each() {
539
+ return e.family ?? [];
540
+ },
541
+ children: (e) => [i(K), (() => {
542
+ var t = i(G);
543
+ return o(t, () => e.label), r(() => u(t, "href", e.href)), t;
544
+ })()]
545
+ }), S, C), o(w, t(h, {
512
546
  get each() {
513
547
  return e.links;
514
548
  },
515
549
  children: (e) => (() => {
516
- var t = i(G), n = t.firstChild;
550
+ var t = i(H), n = t.firstChild;
517
551
  return o(n, () => e.label), r(() => u(n, "href", e.href)), t;
518
552
  })()
519
- })), o(c, () => e.copyright), r(() => u(n, "aria-label", e.messages.footerLabel)), n;
553
+ }), E, D), o(O, t(g, {
554
+ get when() {
555
+ return e.copyrightHref;
556
+ },
557
+ get fallback() {
558
+ return (() => {
559
+ var t = i(q);
560
+ return o(t, () => e.copyright), t;
561
+ })();
562
+ },
563
+ children: (t) => (() => {
564
+ var n = i(J), a = n.firstChild;
565
+ return o(a, () => e.copyright), r(() => u(n, "href", t())), n;
566
+ })()
567
+ })), r(() => u(s, "aria-label", e.messages.footerLabel)), s;
520
568
  })();
521
569
  }
570
+ n(["click"]);
522
571
  //#endregion
523
572
  //#region src/solid/layouts.tsx
524
- var X = /*#__PURE__*/ p("<div class=site-shell><!$><!/><main id=main-content tabindex=-1></main><!$><!/>"), Z = /*#__PURE__*/ p("<article class=site-legal><header><h1></h1><p><!$><!/>: <time></time></p></header><!$><!/>"), re = /*#__PURE__*/ p("<section><strong></strong><!$><!/><!$><!/>"), ie = /*#__PURE__*/ p("<div>"), ae = /*#__PURE__*/ p("<main class=\"site-main site-centered-layout\"><h1></h1><p></p><!$><!/><a class=\"dds-btn dds-btn--primary\">"), oe = /*#__PURE__*/ p("<main class=\"site-main site-centered-layout\"><h1></h1><p></p><!$><!/><!$><!/><!$><!/>"), se = /*#__PURE__*/ p("<code>");
525
- function ce(n) {
573
+ var oe = /*#__PURE__*/ p("<div class=site-shell><!$><!/><main id=main-content tabindex=-1></main><!$><!/>"), se = /*#__PURE__*/ p("<article class=site-legal><header><h1></h1><p><!$><!/>: <time></time></p></header><!$><!/>"), ce = /*#__PURE__*/ p("<section><strong></strong><!$><!/><!$><!/>"), le = /*#__PURE__*/ p("<div>"), ue = /*#__PURE__*/ p("<main class=\"site-main site-centered-layout\"><h1></h1><p></p><!$><!/><a class=\"dds-btn dds-btn--primary\">"), de = /*#__PURE__*/ p("<main class=\"site-main site-centered-layout\"><h1></h1><p></p><!$><!/><!$><!/><!$><!/>"), fe = /*#__PURE__*/ p("<code>");
574
+ function pe(n) {
526
575
  let s = () => n.mainWidth === "bleed" ? "site-main site-main--bleed" : "site-main";
527
576
  return (() => {
528
- var l = i(X), u = l.firstChild, [d, f] = a(u.nextSibling), p = d.nextSibling, m = p.nextSibling, [h, g] = a(m.nextSibling);
529
- return o(l, t(J, c(() => n.header)), d, f), o(p, () => n.children), o(l, t(Y, c(() => n.footer)), h, g), r(() => e(p, s())), l;
577
+ var l = i(oe), u = l.firstChild, [d, f] = a(u.nextSibling), p = d.nextSibling, m = p.nextSibling, [h, g] = a(m.nextSibling);
578
+ return o(l, t(X, c(() => n.header)), d, f), o(p, () => n.children), o(l, t(Z, c(() => n.footer)), h, g), r(() => e(p, s())), l;
530
579
  })();
531
580
  }
532
- function le(e) {
581
+ function me(e) {
533
582
  return (() => {
534
- var t = i(Z), n = t.firstChild, s = n.firstChild, c = s.nextSibling, l = c.firstChild, [d, f] = a(l.nextSibling), p = d.nextSibling.nextSibling, m = n.nextSibling, [h, g] = a(m.nextSibling);
583
+ var t = i(se), n = t.firstChild, s = n.firstChild, c = s.nextSibling, l = c.firstChild, [d, f] = a(l.nextSibling), p = d.nextSibling.nextSibling, m = n.nextSibling, [h, g] = a(m.nextSibling);
535
584
  return o(s, () => e.title), o(c, () => e.messages.updatedLabel, d, f), o(p, () => e.updatedAt), o(t, () => e.children, h, g), r(() => u(p, "datetime", e.updatedAt)), t;
536
585
  })();
537
586
  }
538
- function ue(n) {
587
+ function he(n) {
539
588
  return (() => {
540
- var c = i(re), l = c.firstChild, d = l.nextSibling, [f, p] = a(d.nextSibling), m = f.nextSibling, [h, g] = a(m.nextSibling);
589
+ var c = i(ce), l = c.firstChild, d = l.nextSibling, [f, p] = a(d.nextSibling), m = f.nextSibling, [h, g] = a(m.nextSibling);
541
590
  return o(l, () => n.title), o(c, (() => {
542
591
  var e = s(() => !!n.children);
543
592
  return () => e() && (() => {
544
- var e = i(ie);
593
+ var e = i(le);
545
594
  return o(e, () => n.children), e;
546
595
  })();
547
596
  })(), f, p), o(c, (() => {
@@ -567,19 +616,19 @@ function ue(n) {
567
616
  }), c;
568
617
  })();
569
618
  }
570
- function de(e) {
619
+ function ge(e) {
571
620
  return (() => {
572
- var t = i(ae), n = t.firstChild, s = n.nextSibling, c = s.nextSibling, [l, d] = a(c.nextSibling), f = l.nextSibling;
621
+ var t = i(ue), n = t.firstChild, s = n.nextSibling, c = s.nextSibling, [l, d] = a(c.nextSibling), f = l.nextSibling;
573
622
  return o(n, () => e.messages.notFoundTitle), o(s, () => e.messages.notFoundDescription), o(t, () => e.children, l, d), o(f, () => e.messages.backHome), r(() => u(f, "href", e.homeHref)), t;
574
623
  })();
575
624
  }
576
- function fe(e) {
625
+ function _e(e) {
577
626
  return (() => {
578
- var n = i(oe), r = n.firstChild, c = r.nextSibling, l = c.nextSibling, [u, d] = a(l.nextSibling), f = u.nextSibling, [p, m] = a(f.nextSibling), h = p.nextSibling, [g, _] = a(h.nextSibling);
627
+ var n = i(de), r = n.firstChild, c = r.nextSibling, l = c.nextSibling, [u, d] = a(l.nextSibling), f = u.nextSibling, [p, m] = a(f.nextSibling), h = p.nextSibling, [g, _] = a(h.nextSibling);
579
628
  return o(r, () => e.messages.errorTitle), o(c, () => e.messages.errorDescription), o(n, (() => {
580
629
  var t = s(() => !!e.errorId);
581
630
  return () => t() && (() => {
582
- var t = i(se);
631
+ var t = i(fe);
583
632
  return o(t, () => e.errorId), t;
584
633
  })();
585
634
  })(), u, d), o(n, () => e.children, p, m), o(n, t(b, {
@@ -595,8 +644,8 @@ function fe(e) {
595
644
  }
596
645
  //#endregion
597
646
  //#region src/solid/request-access.tsx
598
- var pe = /*#__PURE__*/ p("<form><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><div aria-live=polite aria-atomic=true>"), Q = /*#__PURE__*/ p("<input>"), me = /*#__PURE__*/ p("<textarea>");
599
- function he(n) {
647
+ var ve = /*#__PURE__*/ p("<form><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/><div aria-live=polite aria-atomic=true>"), Q = /*#__PURE__*/ p("<input>"), ye = /*#__PURE__*/ p("<textarea>");
648
+ function be(n) {
600
649
  let [u, d] = _("idle"), p = async (e) => {
601
650
  if (e.preventDefault(), u() !== "submitting") {
602
651
  d("submitting");
@@ -608,7 +657,7 @@ function he(n) {
608
657
  }
609
658
  };
610
659
  return (() => {
611
- var d = i(pe), m = d.firstChild, [h, g] = a(m.nextSibling), _ = h.nextSibling, [v, y] = a(_.nextSibling), S = v.nextSibling, [C, w] = a(S.nextSibling), T = C.nextSibling, [E, D] = a(T.nextSibling), O = E.nextSibling, [k, A] = a(O.nextSibling), j = k.nextSibling;
660
+ var d = i(ve), m = d.firstChild, [h, g] = a(m.nextSibling), _ = h.nextSibling, [v, y] = a(_.nextSibling), S = v.nextSibling, [C, w] = a(S.nextSibling), T = C.nextSibling, [E, D] = a(T.nextSibling), O = E.nextSibling, [k, A] = a(O.nextSibling), j = k.nextSibling;
612
661
  return d.addEventListener("submit", p), o(d, t(x, {
613
662
  get label() {
614
663
  return n.messages.nameLabel;
@@ -655,7 +704,7 @@ function he(n) {
655
704
  return n.messages.useCaseLabel;
656
705
  },
657
706
  children: (e) => (() => {
658
- var t = i(me);
707
+ var t = i(ye);
659
708
  return f(t, c(e, {
660
709
  class: "dds-textarea",
661
710
  name: "useCase",
@@ -678,15 +727,15 @@ function he(n) {
678
727
  }
679
728
  //#endregion
680
729
  //#region src/solid/oss-product-mark.tsx
681
- var ge = /*#__PURE__*/ p("<img decoding=async>"), _e = {
730
+ var xe = /*#__PURE__*/ p("<img decoding=async>"), Se = {
682
731
  sm: 24,
683
732
  md: 32,
684
733
  lg: 48
685
734
  };
686
- function ve(t) {
687
- let n = () => t.size ?? "md", a = () => _e[n()];
735
+ function Ce(t) {
736
+ let n = () => t.size ?? "md", a = () => Se[n()];
688
737
  return (() => {
689
- var o = i(ge);
738
+ var o = i(xe);
690
739
  return r((r) => {
691
740
  var i = `oss-product-mark oss-product-mark--${n()}${t.class ? ` ${t.class}` : ""}`, s = t.src, c = t.decorative ? "" : t.name, l = t.decorative ? "true" : void 0, d = a(), f = a();
692
741
  return i !== r.e && e(o, r.e = i), s !== r.t && u(o, "src", r.t = s), c !== r.a && u(o, "alt", r.a = c), l !== r.o && u(o, "aria-hidden", r.o = l), d !== r.i && u(o, "width", r.i = d), f !== r.n && u(o, "height", r.n = f), r;
@@ -702,10 +751,10 @@ function ve(t) {
702
751
  }
703
752
  //#endregion
704
753
  //#region src/solid/sections.tsx
705
- var ye = /*#__PURE__*/ p("<section class=site-section><div class=site-section__shell>"), be = /*#__PURE__*/ p("<header class=site-section__head><p class=site-section__index aria-hidden=true></p><h2></h2><!$><!/>"), xe = /*#__PURE__*/ p("<p class=site-section__lede>"), Se = /*#__PURE__*/ p("<section class=site-hero><div class=site-hero__shell><div class=site-hero__copy><!$><!/><h1></h1><p class=site-hero__lede></p><div class=site-hero__actions></div></div><figure class=site-hero__aside>"), $ = /*#__PURE__*/ p("<p class=site-hero__eyebrow>"), Ce = /*#__PURE__*/ p("<ol class=site-steps>"), we = /*#__PURE__*/ p("<li class=site-steps__step><span class=site-steps__marker aria-hidden=true></span><h3></h3><p>"), Te = /*#__PURE__*/ p("<ul class=site-rows>"), Ee = /*#__PURE__*/ p("<li class=site-rows__row><div class=site-rows__title><h3></h3><!$><!/></div><p class=site-rows__body>"), De = /*#__PURE__*/ p("<span class=\"dds-badge dds-badge--brand\">"), Oe = /*#__PURE__*/ p("<div class=site-pricing><div class=site-pricing__note></div><div class=site-pricing__action>");
706
- function ke(e) {
754
+ var we = /*#__PURE__*/ p("<section class=site-section><div class=site-section__shell>"), Te = /*#__PURE__*/ p("<header class=site-section__head><p class=site-section__index aria-hidden=true></p><h2></h2><!$><!/>"), Ee = /*#__PURE__*/ p("<p class=site-section__lede>"), De = /*#__PURE__*/ p("<section class=site-hero><div class=site-hero__shell><div class=site-hero__copy><!$><!/><h1></h1><p class=site-hero__lede></p><div class=site-hero__actions></div></div><figure class=site-hero__aside>"), Oe = /*#__PURE__*/ p("<p class=site-hero__eyebrow>"), ke = /*#__PURE__*/ p("<ol class=site-steps>"), $ = /*#__PURE__*/ p("<li class=site-steps__step><span class=site-steps__marker aria-hidden=true></span><h3></h3><p>"), Ae = /*#__PURE__*/ p("<ul class=site-rows>"), je = /*#__PURE__*/ p("<li class=site-rows__row><div class=site-rows__title><h3></h3><!$><!/></div><p class=site-rows__body>"), Me = /*#__PURE__*/ p("<span class=\"dds-badge dds-badge--brand\">"), Ne = /*#__PURE__*/ p("<div class=site-pricing><div class=site-pricing__note></div><div class=site-pricing__action>");
755
+ function Pe(e) {
707
756
  return (() => {
708
- var t = i(ye), n = t.firstChild;
757
+ var t = i(we), n = t.firstChild;
709
758
  return o(n, () => e.children), r((n) => {
710
759
  var r = e.id, i = e.tone ?? "default", a = e.labelledBy;
711
760
  return r !== n.e && u(t, "id", n.e = r), i !== n.t && u(t, "data-tone", n.t = i), a !== n.a && u(t, "aria-labelledby", n.a = a), n;
@@ -716,29 +765,29 @@ function ke(e) {
716
765
  }), t;
717
766
  })();
718
767
  }
719
- function Ae(e) {
768
+ function Fe(e) {
720
769
  return (() => {
721
- var n = i(be), s = n.firstChild, c = s.nextSibling, l = c.nextSibling, [d, f] = a(l.nextSibling);
770
+ var n = i(Te), s = n.firstChild, c = s.nextSibling, l = c.nextSibling, [d, f] = a(l.nextSibling);
722
771
  return o(s, () => e.index), o(c, () => e.title), o(n, t(g, {
723
772
  get when() {
724
773
  return e.lede;
725
774
  },
726
775
  children: (e) => (() => {
727
- var t = i(xe);
776
+ var t = i(Ee);
728
777
  return o(t, e), t;
729
778
  })()
730
779
  }), d, f), r(() => u(c, "id", e.titleId)), n;
731
780
  })();
732
781
  }
733
- function je(e) {
782
+ function Ie(e) {
734
783
  return (() => {
735
- var n = i(Se), s = n.firstChild.firstChild, c = s.firstChild, [l, d] = a(c.nextSibling), f = l.nextSibling, p = f.nextSibling, m = p.nextSibling, h = s.nextSibling;
784
+ var n = i(De), s = n.firstChild.firstChild, c = s.firstChild, [l, d] = a(c.nextSibling), f = l.nextSibling, p = f.nextSibling, m = p.nextSibling, h = s.nextSibling;
736
785
  return o(s, t(g, {
737
786
  get when() {
738
787
  return e.eyebrow;
739
788
  },
740
789
  children: (e) => (() => {
741
- var t = i($);
790
+ var t = i(Oe);
742
791
  return o(t, e), t;
743
792
  })()
744
793
  }), l, d), o(f, () => e.title), o(p, () => e.lede), o(m, () => e.actions), o(h, () => e.aside), r((t) => {
@@ -752,35 +801,35 @@ function je(e) {
752
801
  }), n;
753
802
  })();
754
803
  }
755
- function Me(e) {
804
+ function Le(e) {
756
805
  return (() => {
757
- var n = i(Ce);
806
+ var n = i(ke);
758
807
  return o(n, t(h, {
759
808
  get each() {
760
809
  return e.steps;
761
810
  },
762
811
  children: (e, t) => (() => {
763
- var n = i(we), r = n.firstChild, a = r.nextSibling, s = a.nextSibling;
812
+ var n = i($), r = n.firstChild, a = r.nextSibling, s = a.nextSibling;
764
813
  return o(r, () => t() + 1), o(a, () => e.title), o(s, () => e.body), n;
765
814
  })()
766
815
  })), r(() => u(n, "aria-label", e.label)), n;
767
816
  })();
768
817
  }
769
- function Ne(e) {
818
+ function Re(e) {
770
819
  return (() => {
771
- var n = i(Te);
820
+ var n = i(Ae);
772
821
  return o(n, t(h, {
773
822
  get each() {
774
823
  return e.rows;
775
824
  },
776
825
  children: (e) => (() => {
777
- var n = i(Ee), r = n.firstChild, s = r.firstChild, c = s.nextSibling, [l, u] = a(c.nextSibling), d = r.nextSibling;
826
+ var n = i(je), r = n.firstChild, s = r.firstChild, c = s.nextSibling, [l, u] = a(c.nextSibling), d = r.nextSibling;
778
827
  return o(s, () => e.title), o(r, t(g, {
779
828
  get when() {
780
829
  return e.badge;
781
830
  },
782
831
  children: (e) => (() => {
783
- var t = i(De);
832
+ var t = i(Me);
784
833
  return o(t, e), t;
785
834
  })()
786
835
  }), l, u), o(d, () => e.body), n;
@@ -788,13 +837,13 @@ function Ne(e) {
788
837
  })), r(() => u(n, "aria-label", e.label)), n;
789
838
  })();
790
839
  }
791
- function Pe(e) {
840
+ function ze(e) {
792
841
  return (() => {
793
- var t = i(Oe), n = t.firstChild, r = n.nextSibling;
842
+ var t = i(Ne), n = t.firstChild, r = n.nextSibling;
794
843
  return o(n, () => e.children), o(r, () => e.action), t;
795
844
  })();
796
845
  }
797
846
  //#endregion
798
- export { fe as ErrorLayout, Ne as FeatureRows, je as HeroSplit, le as LegalLayout, U as LocaleMenu, ce as MarketingShell, de as NotFoundLayout, ve as OssProductMark, Pe as PricingNote, he as RequestAccessForm, ke as SectionBlock, Ae as SectionHead, Y as SiteFooter, J as SiteHeader, ue as StatusBanner, Me as StepFlow, q as ThemeToggle };
847
+ export { _e as ErrorLayout, Re as FeatureRows, Ie as HeroSplit, me as LegalLayout, V as LocaleMenu, pe as MarketingShell, ge as NotFoundLayout, Ce as OssProductMark, ze as PricingNote, be as RequestAccessForm, Pe as SectionBlock, Fe as SectionHead, Z as SiteFooter, X as SiteHeader, he as StatusBanner, Le as StepFlow, Y as ThemeToggle };
799
848
 
800
849
  //# sourceMappingURL=solid.js.map