@devslab/site-kit 0.3.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/LICENSE +74 -0
- package/README.ko.md +18 -0
- package/README.md +18 -0
- package/dist/chrome.d.ts +35 -0
- package/dist/chrome.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/layouts.d.ts +43 -0
- package/dist/layouts.d.ts.map +1 -0
- package/dist/oss-product-mark.d.ts +9 -0
- package/dist/oss-product-mark.d.ts.map +1 -0
- package/dist/request-access.d.ts +17 -0
- package/dist/request-access.d.ts.map +1 -0
- package/dist/solid.js +404 -0
- package/dist/solid.js.map +1 -0
- package/dist/solid.server.js +404 -0
- package/dist/solid.server.js.map +1 -0
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +87 -0
- package/src/core/catalog.d.mts +5 -0
- package/src/core/catalog.mjs +45 -0
- package/src/core/geo.d.mts +10 -0
- package/src/core/geo.mjs +69 -0
- package/src/core/index.d.mts +4 -0
- package/src/core/index.mjs +4 -0
- package/src/core/locales.d.mts +7 -0
- package/src/core/locales.mjs +66 -0
- package/src/core/seo.d.mts +17 -0
- package/src/core/seo.mjs +88 -0
- package/src/tanstack-start.d.mts +3 -0
- package/src/tanstack-start.mjs +25 -0
- package/styles.css +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solid.js","names":["Button","Icon","IconButton","For","createSignal","onMount","JSX","LOCALES","SiteLocale","LocaleState","SiteBrand","SiteLink","SiteMessages","ThemePreference","LocaleMenuProps","state","messages","onLocaleChange","locale","href","LocaleMenu","props","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_$insert","localeLabel","addEventListener","event","currentTarget","value","hrefForLocale","window","location","assign","_$createComponent","each","children","_el$5","_tmpl$2","nativeName","_$effect","_p$","_v$","code","_v$2","dir","e","_$setAttribute","t","undefined","_$setProperty","ThemeToggleProps","defaultValue","onValueChange","theme","storageKey","ThemeToggle","order","internal","setInternal","resolved","setResolved","nextTheme","nextLabel","themeDark","themeLight","apply","matchMedia","matches","document","documentElement","dataset","themePreference","update","localStorage","setItem","stored","getItem","includes","tone","aria-label","themeLabel","title","onClick","name","data-icon","size","SiteHeaderProps","brand","navigation","Omit","actions","Element","SiteHeader","menuOpen","setMenuOpen","_el$6","_tmpl$3","_el$7","_el$8","_el$9","_el$0","_el$1","_co$","_$getNextMarker","_el$10","_el$11","_co$2","_el$21","_el$22","_co$6","_el$12","_el$13","_el$14","_el$15","_el$16","_co$3","_el$17","_el$18","_co$4","_el$19","_el$20","_co$5","skipToContent","logo","aria-expanded","open","_$memo","menuClose","item","_el$23","_tmpl$4","_el$24","label","_v$7","_v$8","external","_v$9","a","_$mergeProps","_c$","_v$3","_v$4","String","_v$5","navigationLabel","_v$6","o","SiteFooterProps","links","copyright","SiteFooter","_el$25","_tmpl$5","_el$26","_el$27","_el$28","_el$29","_el$30","_el$31","footerLabel","Button","ButtonTone","JSX","SiteFooter","SiteHeader","SiteFooterProps","SiteHeaderProps","SiteMessages","MarketingShellProps","header","footer","messages","children","Element","MarketingShell","props","_el$","_$getNextElement","_tmpl$","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$2","_el$5","_el$6","_co$2","_$insert","_$createComponent","_$mergeProps","LegalLayoutProps","title","updatedAt","LegalLayout","_el$7","_tmpl$2","_el$8","_el$9","_el$0","_el$11","_el$12","_co$3","_el$1","_el$10","_el$13","_el$14","_co$4","updatedLabel","_$effect","_$setAttribute","StatusBannerProps","tone","action","label","onClick","StatusBanner","_el$15","_tmpl$3","_el$16","_el$17","_el$18","_co$5","_el$19","_el$20","_co$6","_c$","_$memo","_el$21","_tmpl$4","_c$2","_p$","_v$","_v$2","_v$3","e","_$className","t","a","undefined","NotFoundLayoutProps","homeHref","NotFoundLayout","_el$22","_tmpl$5","_el$23","_el$24","_el$26","_el$27","_co$7","_el$25","notFoundTitle","notFoundDescription","backHome","ErrorLayoutProps","onRetry","errorId","ErrorLayout","_el$28","_tmpl$6","_el$29","_el$30","_el$31","_el$32","_co$8","_el$33","_el$34","_co$9","_el$35","_el$36","_co$0","errorTitle","errorDescription","_c$3","_el$37","_tmpl$7","retry","Button","Field","createSignal","RequestAccessMessages","nameLabel","emailLabel","organizationLabel","useCaseLabel","submit","submitting","success","error","RequestAccessFormProps","messages","onSubmit","data","FormData","Promise","class","RequestAccessForm","props","state","setState","event","SubmitEvent","preventDefault","currentTarget","HTMLFormElement","_el$","_$getNextElement","_tmpl$","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$5","_el$6","_co$2","_el$7","_el$8","_co$3","_el$9","_el$0","_co$4","_el$1","_el$10","_co$5","_el$2","addEventListener","_$insert","_$createComponent","label","required","children","control","_el$11","_tmpl$2","_$spread","_$mergeProps","_$runHydrationEvents","_el$12","_el$13","_el$14","_tmpl$3","type","loading","_$memo","_c$","_$effect","_$className","OssProductMarkProps","name","src","size","decorative","class","MARK_SIZE","sm","md","lg","const","OssProductMark","props","pixels","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","_v$2","_v$3","_v$4","undefined","_v$5","_v$6","e","_$className","t","_$setAttribute","a","o","i","n"],"sources":["../src/core/locales.mjs","../src/solid/chrome.tsx","../src/solid/layouts.tsx","../src/solid/request-access.tsx","../src/solid/oss-product-mark.tsx"],"sourcesContent":["export const LOCALES = Object.freeze([\n { code: \"ko\", language: \"Korean\", nativeName: \"한국어\", dir: \"ltr\" },\n { code: \"en\", language: \"English\", nativeName: \"English\", dir: \"ltr\" },\n { code: \"ja\", language: \"Japanese\", nativeName: \"日本語\", dir: \"ltr\" },\n { code: \"zh-HK\", language: \"Chinese (Hong Kong)\", nativeName: \"繁體中文(香港)\", dir: \"ltr\" },\n { code: \"zh-TW\", language: \"Chinese (Taiwan)\", nativeName: \"繁體中文(台灣)\", dir: \"ltr\" },\n { code: \"hi\", language: \"Hindi\", nativeName: \"हिन्दी\", dir: \"ltr\" },\n { code: \"vi\", language: \"Vietnamese\", nativeName: \"Tiếng Việt\", dir: \"ltr\" },\n { code: \"id\", language: \"Indonesian\", nativeName: \"Bahasa Indonesia\", dir: \"ltr\" },\n { code: \"th\", language: \"Thai\", nativeName: \"ไทย\", dir: \"ltr\" },\n { code: \"pt-BR\", language: \"Portuguese (Brazil)\", nativeName: \"Português (Brasil)\", dir: \"ltr\" },\n { code: \"fr\", language: \"French\", nativeName: \"Français\", dir: \"ltr\" },\n { code: \"de\", language: \"German\", nativeName: \"Deutsch\", dir: \"ltr\" },\n { code: \"es\", language: \"Spanish\", nativeName: \"Español\", dir: \"ltr\" },\n { code: \"ar\", language: \"Arabic\", nativeName: \"العربية\", dir: \"rtl\" },\n]);\n\nconst byLower = new Map(LOCALES.map((locale) => [locale.code.toLowerCase(), locale]));\nconst aliases = new Map([[\"zh\", \"zh-TW\"], [\"pt\", \"pt-BR\"]]);\n\nexport function canonicalLocale(candidate) {\n if (!candidate) return undefined;\n const exact = byLower.get(String(candidate).trim().toLowerCase());\n if (exact) return exact.code;\n const base = String(candidate).trim().toLowerCase().split(\"-\")[0];\n if (aliases.has(base)) return aliases.get(base);\n return byLower.get(base)?.code;\n}\n\nexport function localeAttributes(locale) {\n const canonical = canonicalLocale(locale);\n if (!canonical) throw new RangeError(`Unsupported locale: ${locale}`);\n return { lang: canonical, dir: canonical === \"ar\" ? \"rtl\" : \"ltr\" };\n}\n\nfunction cookieValue(header, name) {\n for (const part of String(header ?? \"\").split(\";\")) {\n const separator = part.indexOf(\"=\");\n if (separator < 0) continue;\n if (part.slice(0, separator).trim() === name) {\n try { return decodeURIComponent(part.slice(separator + 1).trim()); }\n catch { return undefined; }\n }\n }\n return undefined;\n}\n\nfunction acceptedLocales(header) {\n return String(header ?? \"\").split(\",\").map((part, order) => {\n const [tag, ...parameters] = part.trim().split(\";\");\n const q = Number(parameters.find((parameter) => parameter.trim().startsWith(\"q=\"))?.split(\"=\")[1] ?? 1);\n return { locale: canonicalLocale(tag), q: Number.isFinite(q) ? q : 0, order };\n }).filter(({ locale, q }) => locale && q > 0).sort((a, b) => b.q - a.q || a.order - b.order);\n}\n\nexport function resolveLocale({ pathname = \"/\", cookie = \"\", acceptLanguage = \"\", defaultLocale }) {\n const routeLocale = canonicalLocale(pathname.split(\"/\").filter(Boolean)[0]);\n if (routeLocale) return { locale: routeLocale, source: \"route\" };\n const storedLocale = canonicalLocale(cookieValue(cookie, \"locale\"));\n if (storedLocale) return { locale: storedLocale, source: \"cookie\" };\n const accepted = acceptedLocales(acceptLanguage)[0]?.locale;\n if (accepted) return { locale: accepted, source: \"accept-language\" };\n const fallback = canonicalLocale(defaultLocale);\n if (!fallback) throw new RangeError(`Unsupported default locale: ${defaultLocale}`);\n return { locale: fallback, source: \"default\" };\n}\n","import { Button, Icon, IconButton } from \"@devslab/dds-solid\";\nimport { For, createSignal, onMount, type JSX } from \"solid-js\";\n\nimport { LOCALES, type SiteLocale } from \"../core/locales.mjs\";\nimport type { LocaleState, SiteBrand, SiteLink, SiteMessages, ThemePreference } from \"./types\";\n\nexport interface LocaleMenuProps {\n state: LocaleState;\n messages: SiteMessages;\n onLocaleChange?: (locale: SiteLocale, href: string) => void;\n}\n\nexport function LocaleMenu(props: LocaleMenuProps) {\n return (\n <label>\n <span class=\"dds-sr-only\">{props.messages.localeLabel}</span>\n <span class=\"dds-select site-locale\">\n <select\n class=\"dds-select__input\"\n value={props.state.locale}\n aria-label={props.messages.localeLabel}\n onChange={(event) => {\n const locale = event.currentTarget.value as SiteLocale;\n const href = props.state.hrefForLocale(locale);\n if (props.onLocaleChange) props.onLocaleChange(locale, href);\n else window.location.assign(href);\n }}\n >\n <For each={LOCALES}>{(locale) => <option value={locale.code} lang={locale.code} dir={locale.dir}>{locale.nativeName}</option>}</For>\n </select>\n </span>\n </label>\n );\n}\n\nexport interface ThemeToggleProps {\n messages: SiteMessages;\n value?: ThemePreference;\n defaultValue?: ThemePreference;\n onValueChange?: (theme: ThemePreference) => void;\n storageKey?: string;\n}\n\nexport function ThemeToggle(props: ThemeToggleProps) {\n const order: ThemePreference[] = [\"system\", \"light\", \"dark\"];\n const [internal, setInternal] = createSignal<ThemePreference>(props.defaultValue ?? \"system\");\n const [resolved, setResolved] = createSignal<\"light\" | \"dark\">(\"light\");\n const value = () => props.value ?? internal();\n const nextTheme = () => resolved() === \"dark\" ? \"light\" : \"dark\";\n const nextLabel = () => nextTheme() === \"dark\" ? props.messages.themeDark : props.messages.themeLight;\n const apply = (theme: ThemePreference) => {\n const resolved = theme === \"system\"\n ? (matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\")\n : theme;\n setResolved(resolved);\n document.documentElement.dataset.theme = resolved;\n document.documentElement.dataset.themePreference = theme;\n };\n const update = (theme: ThemePreference) => {\n if (props.value === undefined) setInternal(theme);\n props.onValueChange?.(theme);\n apply(theme);\n localStorage.setItem(props.storageKey ?? \"site-theme\", theme);\n };\n onMount(() => {\n const stored = localStorage.getItem(props.storageKey ?? \"site-theme\") as ThemePreference | null;\n if (props.value === undefined && stored && order.includes(stored)) setInternal(stored);\n apply(props.value ?? stored ?? internal());\n });\n return (\n <IconButton\n class=\"site-theme-toggle\"\n tone=\"ghost\"\n aria-label={`${props.messages.themeLabel}: ${nextLabel()}`}\n title={`${props.messages.themeLabel}: ${nextLabel()}`}\n onClick={() => update(nextTheme())}\n >\n <Icon\n class=\"site-theme-toggle__icon\"\n name={nextTheme() === \"dark\" ? \"site-moon\" : \"site-sun\"}\n data-icon={nextTheme() === \"dark\" ? \"site-moon\" : \"site-sun\"}\n size={20}\n />\n </IconButton>\n );\n}\n\nexport interface SiteHeaderProps {\n brand: SiteBrand;\n navigation: SiteLink[];\n locale: LocaleState;\n messages: SiteMessages;\n theme?: Omit<ThemeToggleProps, \"messages\">;\n onLocaleChange?: LocaleMenuProps[\"onLocaleChange\"];\n actions?: JSX.Element;\n}\n\nexport function SiteHeader(props: SiteHeaderProps) {\n const [menuOpen, setMenuOpen] = createSignal(false);\n return (\n <header class=\"site-header\">\n <a class=\"dds-sr-only\" href=\"#main-content\">{props.messages.skipToContent}</a>\n <div class=\"site-header__inner\">\n <a class=\"site-brand\" href={props.brand.href}>{props.brand.logo}{props.brand.name}</a>\n <Button class=\"site-menu-button\" tone=\"ghost\" aria-expanded={menuOpen()} aria-controls=\"site-navigation\" onClick={() => setMenuOpen((open) => !open)}>\n {menuOpen() ? props.messages.menuClose : props.messages.menuOpen}\n </Button>\n <nav id=\"site-navigation\" class=\"site-nav\" data-open={String(menuOpen())} aria-label={props.messages.navigationLabel}>\n <ul class=\"site-nav__list\"><For each={props.navigation}>{(item) => <li><a href={item.href} target={item.external ? \"_blank\" : undefined} rel={item.external ? \"noreferrer\" : undefined}>{item.label}</a></li>}</For></ul>\n </nav>\n <div class=\"site-header__controls\" data-open={String(menuOpen())}>\n <LocaleMenu\n state={props.locale}\n messages={props.messages}\n {...(props.onLocaleChange ? { onLocaleChange: props.onLocaleChange } : {})}\n />\n {props.theme && <ThemeToggle {...props.theme} messages={props.messages} />}\n {props.actions}\n </div>\n </div>\n </header>\n );\n}\n\nexport interface SiteFooterProps {\n brand: SiteBrand;\n links: SiteLink[];\n copyright: string;\n messages: SiteMessages;\n}\n\nexport function SiteFooter(props: SiteFooterProps) {\n return (\n <footer class=\"site-footer\" aria-label={props.messages.footerLabel}>\n <div class=\"site-footer__inner\">\n <strong>{props.brand.name}</strong>\n <ul class=\"site-footer__links\"><For each={props.links}>{(item) => <li><a href={item.href}>{item.label}</a></li>}</For></ul>\n <small>{props.copyright}</small>\n </div>\n </footer>\n );\n}\n","import { Button, type ButtonTone } from \"@devslab/dds-solid\";\nimport type { JSX } from \"solid-js\";\n\nimport { SiteFooter, SiteHeader, type SiteFooterProps, type SiteHeaderProps } from \"./chrome\";\nimport type { SiteMessages } from \"./types\";\n\nexport interface MarketingShellProps {\n header: SiteHeaderProps;\n footer: SiteFooterProps;\n messages: SiteMessages;\n children: JSX.Element;\n}\n\nexport function MarketingShell(props: MarketingShellProps) {\n return <div class=\"site-shell\"><SiteHeader {...props.header} /><main id=\"main-content\" class=\"site-main\" tabIndex={-1}>{props.children}</main><SiteFooter {...props.footer} /></div>;\n}\n\nexport interface LegalLayoutProps {\n title: string;\n updatedAt: string;\n messages: SiteMessages;\n children: JSX.Element;\n}\n\nexport function LegalLayout(props: LegalLayoutProps) {\n return <article class=\"site-legal\"><header><h1>{props.title}</h1><p>{props.messages.updatedLabel}: <time datetime={props.updatedAt}>{props.updatedAt}</time></p></header>{props.children}</article>;\n}\n\nexport interface StatusBannerProps {\n tone: \"success\" | \"warning\" | \"danger\" | \"info\";\n title: string;\n children?: JSX.Element;\n action?: { label: string; onClick: () => void; tone?: ButtonTone };\n}\n\nexport function StatusBanner(props: StatusBannerProps) {\n return <section class={`site-status site-status--${props.tone}`} role={props.tone === \"danger\" ? \"alert\" : \"status\"} aria-live={props.tone === \"danger\" ? \"assertive\" : \"polite\"}>\n <strong>{props.title}</strong>{props.children && <div>{props.children}</div>}{props.action && <Button tone={props.action.tone ?? \"secondary\"} onClick={props.action.onClick}>{props.action.label}</Button>}\n </section>;\n}\n\nexport interface NotFoundLayoutProps { messages: SiteMessages; homeHref: string; children?: JSX.Element }\nexport function NotFoundLayout(props: NotFoundLayoutProps) {\n return <main class=\"site-main site-centered-layout\"><h1>{props.messages.notFoundTitle}</h1><p>{props.messages.notFoundDescription}</p>{props.children}<a class=\"dds-btn dds-btn--primary\" href={props.homeHref}>{props.messages.backHome}</a></main>;\n}\n\nexport interface ErrorLayoutProps { messages: SiteMessages; onRetry: () => void; errorId?: string; children?: JSX.Element }\nexport function ErrorLayout(props: ErrorLayoutProps) {\n return <main class=\"site-main site-centered-layout\"><h1>{props.messages.errorTitle}</h1><p>{props.messages.errorDescription}</p>{props.errorId && <code>{props.errorId}</code>}{props.children}<Button tone=\"primary\" onClick={props.onRetry}>{props.messages.retry}</Button></main>;\n}\n","import { Button, Field } from \"@devslab/dds-solid\";\nimport { createSignal } from \"solid-js\";\n\nexport interface RequestAccessMessages {\n nameLabel: string;\n emailLabel: string;\n organizationLabel: string;\n useCaseLabel: string;\n submit: string;\n submitting: string;\n success: string;\n error: string;\n}\n\nexport interface RequestAccessFormProps {\n messages: RequestAccessMessages;\n onSubmit: (data: FormData) => void | Promise<void>;\n class?: string;\n}\n\nexport function RequestAccessForm(props: RequestAccessFormProps) {\n const [state, setState] = createSignal<\"idle\" | \"submitting\" | \"success\" | \"error\">(\"idle\");\n const submit = async (event: SubmitEvent) => {\n event.preventDefault();\n if (state() === \"submitting\") return;\n setState(\"submitting\");\n try {\n await props.onSubmit(new FormData(event.currentTarget as HTMLFormElement));\n setState(\"success\");\n } catch {\n setState(\"error\");\n }\n };\n return (\n <form class={`site-request-form${props.class ? ` ${props.class}` : \"\"}`} onSubmit={submit}>\n <Field label={props.messages.nameLabel} required>{(control) => <input {...control} class=\"dds-input\" name=\"name\" autocomplete=\"name\" required />}</Field>\n <Field label={props.messages.emailLabel} required>{(control) => <input {...control} class=\"dds-input\" type=\"email\" name=\"email\" autocomplete=\"email\" required />}</Field>\n <Field label={props.messages.organizationLabel}>{(control) => <input {...control} class=\"dds-input\" name=\"organization\" autocomplete=\"organization\" />}</Field>\n <Field label={props.messages.useCaseLabel}>{(control) => <textarea {...control} class=\"dds-textarea\" name=\"useCase\" rows=\"5\" />}</Field>\n <Button type=\"submit\" loading={state() === \"submitting\"}>{state() === \"submitting\" ? props.messages.submitting : props.messages.submit}</Button>\n <div aria-live=\"polite\" aria-atomic=\"true\">{state() === \"success\" ? props.messages.success : state() === \"error\" ? props.messages.error : \"\"}</div>\n </form>\n );\n}\n","export interface OssProductMarkProps {\n name: string;\n src: string;\n size?: \"sm\" | \"md\" | \"lg\";\n decorative?: boolean;\n class?: string;\n}\n\nconst MARK_SIZE = { sm: 24, md: 32, lg: 48 } as const;\n\nexport function OssProductMark(props: OssProductMarkProps) {\n const size = () => props.size ?? \"md\";\n const pixels = () => MARK_SIZE[size()];\n\n return (\n <img\n class={`oss-product-mark oss-product-mark--${size()}${props.class ? ` ${props.class}` : \"\"}`}\n src={props.src}\n alt={props.decorative ? \"\" : props.name}\n aria-hidden={props.decorative ? \"true\" : undefined}\n width={pixels()}\n height={pixels()}\n decoding=\"async\"\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
import { createComponent, escape, mergeProps, ssr, ssrAttribute, ssrElement, ssrHydrationKey } from "solid-js/web";
|
|
2
|
+
import { Button, Field, Icon, IconButton } from "@devslab/dds-solid";
|
|
3
|
+
import { For, createSignal, onMount } from "solid-js";
|
|
4
|
+
//#region src/core/locales.mjs
|
|
5
|
+
var LOCALES = Object.freeze([
|
|
6
|
+
{
|
|
7
|
+
code: "ko",
|
|
8
|
+
language: "Korean",
|
|
9
|
+
nativeName: "한국어",
|
|
10
|
+
dir: "ltr"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
code: "en",
|
|
14
|
+
language: "English",
|
|
15
|
+
nativeName: "English",
|
|
16
|
+
dir: "ltr"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
code: "ja",
|
|
20
|
+
language: "Japanese",
|
|
21
|
+
nativeName: "日本語",
|
|
22
|
+
dir: "ltr"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
code: "zh-HK",
|
|
26
|
+
language: "Chinese (Hong Kong)",
|
|
27
|
+
nativeName: "繁體中文(香港)",
|
|
28
|
+
dir: "ltr"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
code: "zh-TW",
|
|
32
|
+
language: "Chinese (Taiwan)",
|
|
33
|
+
nativeName: "繁體中文(台灣)",
|
|
34
|
+
dir: "ltr"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
code: "hi",
|
|
38
|
+
language: "Hindi",
|
|
39
|
+
nativeName: "हिन्दी",
|
|
40
|
+
dir: "ltr"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
code: "vi",
|
|
44
|
+
language: "Vietnamese",
|
|
45
|
+
nativeName: "Tiếng Việt",
|
|
46
|
+
dir: "ltr"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
code: "id",
|
|
50
|
+
language: "Indonesian",
|
|
51
|
+
nativeName: "Bahasa Indonesia",
|
|
52
|
+
dir: "ltr"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
code: "th",
|
|
56
|
+
language: "Thai",
|
|
57
|
+
nativeName: "ไทย",
|
|
58
|
+
dir: "ltr"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
code: "pt-BR",
|
|
62
|
+
language: "Portuguese (Brazil)",
|
|
63
|
+
nativeName: "Português (Brasil)",
|
|
64
|
+
dir: "ltr"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
code: "fr",
|
|
68
|
+
language: "French",
|
|
69
|
+
nativeName: "Français",
|
|
70
|
+
dir: "ltr"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
code: "de",
|
|
74
|
+
language: "German",
|
|
75
|
+
nativeName: "Deutsch",
|
|
76
|
+
dir: "ltr"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
code: "es",
|
|
80
|
+
language: "Spanish",
|
|
81
|
+
nativeName: "Español",
|
|
82
|
+
dir: "ltr"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
code: "ar",
|
|
86
|
+
language: "Arabic",
|
|
87
|
+
nativeName: "العربية",
|
|
88
|
+
dir: "rtl"
|
|
89
|
+
}
|
|
90
|
+
]);
|
|
91
|
+
new Map(LOCALES.map((locale) => [locale.code.toLowerCase(), locale]));
|
|
92
|
+
//#endregion
|
|
93
|
+
//#region src/solid/chrome.tsx
|
|
94
|
+
var _tmpl$$3 = [
|
|
95
|
+
"<label",
|
|
96
|
+
"><span class=\"dds-sr-only\">",
|
|
97
|
+
"</span><span class=\"dds-select site-locale\"><select class=\"dds-select__input\"",
|
|
98
|
+
">",
|
|
99
|
+
"</select></span></label>"
|
|
100
|
+
];
|
|
101
|
+
var _tmpl$2$1 = [
|
|
102
|
+
"<option",
|
|
103
|
+
">",
|
|
104
|
+
"</option>"
|
|
105
|
+
];
|
|
106
|
+
var _tmpl$3$1 = [
|
|
107
|
+
"<header",
|
|
108
|
+
" class=\"site-header\"><a class=\"dds-sr-only\" href=\"#main-content\">",
|
|
109
|
+
"</a><div class=\"site-header__inner\"><a class=\"site-brand\"",
|
|
110
|
+
"><!--$-->",
|
|
111
|
+
"<!--/--><!--$-->",
|
|
112
|
+
"<!--/--></a><!--$-->",
|
|
113
|
+
"<!--/--><nav id=\"site-navigation\" class=\"site-nav\"",
|
|
114
|
+
"><ul class=\"site-nav__list\">",
|
|
115
|
+
"</ul></nav><div class=\"site-header__controls\"",
|
|
116
|
+
"><!--$-->",
|
|
117
|
+
"<!--/--><!--$-->",
|
|
118
|
+
"<!--/--><!--$-->",
|
|
119
|
+
"<!--/--></div></div></header>"
|
|
120
|
+
];
|
|
121
|
+
var _tmpl$4$1 = [
|
|
122
|
+
"<li",
|
|
123
|
+
"><a",
|
|
124
|
+
">",
|
|
125
|
+
"</a></li>"
|
|
126
|
+
];
|
|
127
|
+
var _tmpl$5$1 = [
|
|
128
|
+
"<footer",
|
|
129
|
+
" class=\"site-footer\"",
|
|
130
|
+
"><div class=\"site-footer__inner\"><strong>",
|
|
131
|
+
"</strong><ul class=\"site-footer__links\">",
|
|
132
|
+
"</ul><small>",
|
|
133
|
+
"</small></div></footer>"
|
|
134
|
+
];
|
|
135
|
+
function LocaleMenu(props) {
|
|
136
|
+
return ssr(_tmpl$$3, ssrHydrationKey(), escape(props.messages.localeLabel), ssrAttribute("value", escape(props.state.locale, true), false) + ssrAttribute("aria-label", escape(props.messages.localeLabel, true), false), escape(createComponent(For, {
|
|
137
|
+
each: LOCALES,
|
|
138
|
+
children: (locale) => ssr(_tmpl$2$1, ssrHydrationKey() + ssrAttribute("value", escape(locale.code, true), false) + ssrAttribute("lang", escape(locale.code, true), false) + ssrAttribute("dir", escape(locale.dir, true), false), escape(locale.nativeName))
|
|
139
|
+
})));
|
|
140
|
+
}
|
|
141
|
+
function ThemeToggle(props) {
|
|
142
|
+
const order = [
|
|
143
|
+
"system",
|
|
144
|
+
"light",
|
|
145
|
+
"dark"
|
|
146
|
+
];
|
|
147
|
+
const [internal, setInternal] = createSignal(props.defaultValue ?? "system");
|
|
148
|
+
const [resolved, setResolved] = createSignal("light");
|
|
149
|
+
const nextTheme = () => resolved() === "dark" ? "light" : "dark";
|
|
150
|
+
const nextLabel = () => nextTheme() === "dark" ? props.messages.themeDark : props.messages.themeLight;
|
|
151
|
+
const apply = (theme) => {
|
|
152
|
+
const resolved = theme === "system" ? matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : theme;
|
|
153
|
+
setResolved(resolved);
|
|
154
|
+
document.documentElement.dataset.theme = resolved;
|
|
155
|
+
document.documentElement.dataset.themePreference = theme;
|
|
156
|
+
};
|
|
157
|
+
const update = (theme) => {
|
|
158
|
+
if (props.value === void 0) setInternal(theme);
|
|
159
|
+
props.onValueChange?.(theme);
|
|
160
|
+
apply(theme);
|
|
161
|
+
localStorage.setItem(props.storageKey ?? "site-theme", theme);
|
|
162
|
+
};
|
|
163
|
+
onMount(() => {
|
|
164
|
+
const stored = localStorage.getItem(props.storageKey ?? "site-theme");
|
|
165
|
+
if (props.value === void 0 && stored && order.includes(stored)) setInternal(stored);
|
|
166
|
+
apply(props.value ?? stored ?? internal());
|
|
167
|
+
});
|
|
168
|
+
return createComponent(IconButton, {
|
|
169
|
+
"class": "site-theme-toggle",
|
|
170
|
+
tone: "ghost",
|
|
171
|
+
get ["aria-label"]() {
|
|
172
|
+
return `${props.messages.themeLabel}: ${nextLabel()}`;
|
|
173
|
+
},
|
|
174
|
+
get title() {
|
|
175
|
+
return `${props.messages.themeLabel}: ${nextLabel()}`;
|
|
176
|
+
},
|
|
177
|
+
onClick: () => update(nextTheme()),
|
|
178
|
+
get children() {
|
|
179
|
+
return createComponent(Icon, {
|
|
180
|
+
"class": "site-theme-toggle__icon",
|
|
181
|
+
get name() {
|
|
182
|
+
return nextTheme() === "dark" ? "site-moon" : "site-sun";
|
|
183
|
+
},
|
|
184
|
+
get ["data-icon"]() {
|
|
185
|
+
return nextTheme() === "dark" ? "site-moon" : "site-sun";
|
|
186
|
+
},
|
|
187
|
+
size: 20
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
function SiteHeader(props) {
|
|
193
|
+
const [menuOpen, setMenuOpen] = createSignal(false);
|
|
194
|
+
return ssr(_tmpl$3$1, ssrHydrationKey(), escape(props.messages.skipToContent), ssrAttribute("href", escape(props.brand.href, true), false), escape(props.brand.logo), escape(props.brand.name), escape(createComponent(Button, {
|
|
195
|
+
"class": "site-menu-button",
|
|
196
|
+
tone: "ghost",
|
|
197
|
+
get ["aria-expanded"]() {
|
|
198
|
+
return menuOpen();
|
|
199
|
+
},
|
|
200
|
+
"aria-controls": "site-navigation",
|
|
201
|
+
onClick: () => setMenuOpen((open) => !open),
|
|
202
|
+
get children() {
|
|
203
|
+
return menuOpen() ? props.messages.menuClose : props.messages.menuOpen;
|
|
204
|
+
}
|
|
205
|
+
})), ssrAttribute("data-open", escape(String(menuOpen()), true), false) + ssrAttribute("aria-label", escape(props.messages.navigationLabel, true), false), escape(createComponent(For, {
|
|
206
|
+
get each() {
|
|
207
|
+
return props.navigation;
|
|
208
|
+
},
|
|
209
|
+
children: (item) => ssr(_tmpl$4$1, 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))
|
|
210
|
+
})), ssrAttribute("data-open", escape(String(menuOpen()), true), false), escape(createComponent(LocaleMenu, mergeProps({
|
|
211
|
+
get state() {
|
|
212
|
+
return props.locale;
|
|
213
|
+
},
|
|
214
|
+
get messages() {
|
|
215
|
+
return props.messages;
|
|
216
|
+
}
|
|
217
|
+
}, () => props.onLocaleChange ? { onLocaleChange: props.onLocaleChange } : {}))), props.theme && escape(createComponent(ThemeToggle, mergeProps(() => props.theme, { get messages() {
|
|
218
|
+
return props.messages;
|
|
219
|
+
} }))), escape(props.actions));
|
|
220
|
+
}
|
|
221
|
+
function SiteFooter(props) {
|
|
222
|
+
return ssr(_tmpl$5$1, ssrHydrationKey(), ssrAttribute("aria-label", escape(props.messages.footerLabel, true), false), escape(props.brand.name), escape(createComponent(For, {
|
|
223
|
+
get each() {
|
|
224
|
+
return props.links;
|
|
225
|
+
},
|
|
226
|
+
children: (item) => ssr(_tmpl$4$1, ssrHydrationKey(), ssrAttribute("href", escape(item.href, true), false), escape(item.label))
|
|
227
|
+
})), escape(props.copyright));
|
|
228
|
+
}
|
|
229
|
+
//#endregion
|
|
230
|
+
//#region src/solid/layouts.tsx
|
|
231
|
+
var _tmpl$$2 = [
|
|
232
|
+
"<div",
|
|
233
|
+
" class=\"site-shell\"><!--$-->",
|
|
234
|
+
"<!--/--><main id=\"main-content\" class=\"site-main\" tabindex=\"-1\">",
|
|
235
|
+
"</main><!--$-->",
|
|
236
|
+
"<!--/--></div>"
|
|
237
|
+
];
|
|
238
|
+
var _tmpl$2 = [
|
|
239
|
+
"<article",
|
|
240
|
+
" class=\"site-legal\"><header><h1>",
|
|
241
|
+
"</h1><p><!--$-->",
|
|
242
|
+
"<!--/-->: <time",
|
|
243
|
+
">",
|
|
244
|
+
"</time></p></header><!--$-->",
|
|
245
|
+
"<!--/--></article>"
|
|
246
|
+
];
|
|
247
|
+
var _tmpl$3 = [
|
|
248
|
+
"<section",
|
|
249
|
+
" class=\"",
|
|
250
|
+
"\"",
|
|
251
|
+
"><strong>",
|
|
252
|
+
"</strong><!--$-->",
|
|
253
|
+
"<!--/--><!--$-->",
|
|
254
|
+
"<!--/--></section>"
|
|
255
|
+
];
|
|
256
|
+
var _tmpl$4 = [
|
|
257
|
+
"<div",
|
|
258
|
+
">",
|
|
259
|
+
"</div>"
|
|
260
|
+
];
|
|
261
|
+
var _tmpl$5 = [
|
|
262
|
+
"<main",
|
|
263
|
+
" class=\"site-main site-centered-layout\"><h1>",
|
|
264
|
+
"</h1><p>",
|
|
265
|
+
"</p><!--$-->",
|
|
266
|
+
"<!--/--><a class=\"dds-btn dds-btn--primary\"",
|
|
267
|
+
">",
|
|
268
|
+
"</a></main>"
|
|
269
|
+
];
|
|
270
|
+
var _tmpl$6 = [
|
|
271
|
+
"<main",
|
|
272
|
+
" class=\"site-main site-centered-layout\"><h1>",
|
|
273
|
+
"</h1><p>",
|
|
274
|
+
"</p><!--$-->",
|
|
275
|
+
"<!--/--><!--$-->",
|
|
276
|
+
"<!--/--><!--$-->",
|
|
277
|
+
"<!--/--></main>"
|
|
278
|
+
];
|
|
279
|
+
var _tmpl$7 = [
|
|
280
|
+
"<code",
|
|
281
|
+
">",
|
|
282
|
+
"</code>"
|
|
283
|
+
];
|
|
284
|
+
function MarketingShell(props) {
|
|
285
|
+
return ssr(_tmpl$$2, ssrHydrationKey(), escape(createComponent(SiteHeader, mergeProps(() => props.header))), escape(props.children), escape(createComponent(SiteFooter, mergeProps(() => props.footer))));
|
|
286
|
+
}
|
|
287
|
+
function LegalLayout(props) {
|
|
288
|
+
return ssr(_tmpl$2, ssrHydrationKey(), escape(props.title), escape(props.messages.updatedLabel), ssrAttribute("datetime", escape(props.updatedAt, true), false), escape(props.updatedAt), escape(props.children));
|
|
289
|
+
}
|
|
290
|
+
function StatusBanner(props) {
|
|
291
|
+
return ssr(_tmpl$3, 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), props.children && ssr(_tmpl$4, ssrHydrationKey(), escape(props.children)), props.action && escape(createComponent(Button, {
|
|
292
|
+
get tone() {
|
|
293
|
+
return props.action.tone ?? "secondary";
|
|
294
|
+
},
|
|
295
|
+
get onClick() {
|
|
296
|
+
return props.action.onClick;
|
|
297
|
+
},
|
|
298
|
+
get children() {
|
|
299
|
+
return props.action.label;
|
|
300
|
+
}
|
|
301
|
+
})));
|
|
302
|
+
}
|
|
303
|
+
function NotFoundLayout(props) {
|
|
304
|
+
return ssr(_tmpl$5, ssrHydrationKey(), escape(props.messages.notFoundTitle), escape(props.messages.notFoundDescription), escape(props.children), ssrAttribute("href", escape(props.homeHref, true), false), escape(props.messages.backHome));
|
|
305
|
+
}
|
|
306
|
+
function ErrorLayout(props) {
|
|
307
|
+
return ssr(_tmpl$6, ssrHydrationKey(), escape(props.messages.errorTitle), escape(props.messages.errorDescription), props.errorId && ssr(_tmpl$7, ssrHydrationKey(), escape(props.errorId)), escape(props.children), escape(createComponent(Button, {
|
|
308
|
+
tone: "primary",
|
|
309
|
+
get onClick() {
|
|
310
|
+
return props.onRetry;
|
|
311
|
+
},
|
|
312
|
+
get children() {
|
|
313
|
+
return props.messages.retry;
|
|
314
|
+
}
|
|
315
|
+
})));
|
|
316
|
+
}
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region src/solid/request-access.tsx
|
|
319
|
+
var _tmpl$$1 = [
|
|
320
|
+
"<form",
|
|
321
|
+
" class=\"",
|
|
322
|
+
"\"><!--$-->",
|
|
323
|
+
"<!--/--><!--$-->",
|
|
324
|
+
"<!--/--><!--$-->",
|
|
325
|
+
"<!--/--><!--$-->",
|
|
326
|
+
"<!--/--><!--$-->",
|
|
327
|
+
"<!--/--><div aria-live=\"polite\" aria-atomic=\"true\">",
|
|
328
|
+
"</div></form>"
|
|
329
|
+
];
|
|
330
|
+
function RequestAccessForm(props) {
|
|
331
|
+
const [state, setState] = createSignal("idle");
|
|
332
|
+
return ssr(_tmpl$$1, ssrHydrationKey(), `site-request-form${props.class ? ` ${escape(props.class, true)}` : ""}`, escape(createComponent(Field, {
|
|
333
|
+
get label() {
|
|
334
|
+
return props.messages.nameLabel;
|
|
335
|
+
},
|
|
336
|
+
required: true,
|
|
337
|
+
children: (control) => ssrElement("input", mergeProps(control, {
|
|
338
|
+
"class": "dds-input",
|
|
339
|
+
name: "name",
|
|
340
|
+
autocomplete: "name",
|
|
341
|
+
required: true
|
|
342
|
+
}), void 0, true)
|
|
343
|
+
})), escape(createComponent(Field, {
|
|
344
|
+
get label() {
|
|
345
|
+
return props.messages.emailLabel;
|
|
346
|
+
},
|
|
347
|
+
required: true,
|
|
348
|
+
children: (control) => ssrElement("input", mergeProps(control, {
|
|
349
|
+
"class": "dds-input",
|
|
350
|
+
type: "email",
|
|
351
|
+
name: "email",
|
|
352
|
+
autocomplete: "email",
|
|
353
|
+
required: true
|
|
354
|
+
}), void 0, true)
|
|
355
|
+
})), escape(createComponent(Field, {
|
|
356
|
+
get label() {
|
|
357
|
+
return props.messages.organizationLabel;
|
|
358
|
+
},
|
|
359
|
+
children: (control) => ssrElement("input", mergeProps(control, {
|
|
360
|
+
"class": "dds-input",
|
|
361
|
+
name: "organization",
|
|
362
|
+
autocomplete: "organization"
|
|
363
|
+
}), void 0, true)
|
|
364
|
+
})), escape(createComponent(Field, {
|
|
365
|
+
get label() {
|
|
366
|
+
return props.messages.useCaseLabel;
|
|
367
|
+
},
|
|
368
|
+
children: (control) => ssrElement("textarea", mergeProps(control, {
|
|
369
|
+
"class": "dds-textarea",
|
|
370
|
+
name: "useCase",
|
|
371
|
+
rows: "5"
|
|
372
|
+
}), void 0, true)
|
|
373
|
+
})), escape(createComponent(Button, {
|
|
374
|
+
type: "submit",
|
|
375
|
+
get loading() {
|
|
376
|
+
return state() === "submitting";
|
|
377
|
+
},
|
|
378
|
+
get children() {
|
|
379
|
+
return state() === "submitting" ? props.messages.submitting : props.messages.submit;
|
|
380
|
+
}
|
|
381
|
+
})), state() === "success" ? escape(props.messages.success) : state() === "error" ? escape(props.messages.error) : "");
|
|
382
|
+
}
|
|
383
|
+
//#endregion
|
|
384
|
+
//#region src/solid/oss-product-mark.tsx
|
|
385
|
+
var _tmpl$ = [
|
|
386
|
+
"<img",
|
|
387
|
+
" class=\"",
|
|
388
|
+
"\"",
|
|
389
|
+
" decoding=\"async\">"
|
|
390
|
+
];
|
|
391
|
+
var MARK_SIZE = {
|
|
392
|
+
sm: 24,
|
|
393
|
+
md: 32,
|
|
394
|
+
lg: 48
|
|
395
|
+
};
|
|
396
|
+
function OssProductMark(props) {
|
|
397
|
+
const size = () => props.size ?? "md";
|
|
398
|
+
const pixels = () => MARK_SIZE[size()];
|
|
399
|
+
return ssr(_tmpl$, ssrHydrationKey(), `oss-product-mark oss-product-mark--${escape(size(), true)}${props.class ? ` ${escape(props.class, true)}` : ""}`, ssrAttribute("src", escape(props.src, true), false) + ssrAttribute("alt", props.decorative ? "" : escape(props.name, true), false) + ssrAttribute("aria-hidden", props.decorative ? "true" : escape(void 0, true), false) + ssrAttribute("width", escape(pixels(), true), false) + ssrAttribute("height", escape(pixels(), true), false));
|
|
400
|
+
}
|
|
401
|
+
//#endregion
|
|
402
|
+
export { ErrorLayout, LegalLayout, LocaleMenu, MarketingShell, NotFoundLayout, OssProductMark, RequestAccessForm, SiteFooter, SiteHeader, StatusBanner, ThemeToggle };
|
|
403
|
+
|
|
404
|
+
//# sourceMappingURL=solid.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solid.server.js","names":["Button","Icon","IconButton","For","createSignal","onMount","JSX","LOCALES","SiteLocale","LocaleState","SiteBrand","SiteLink","SiteMessages","ThemePreference","LocaleMenuProps","state","messages","onLocaleChange","locale","href","LocaleMenu","props","_$ssr","_tmpl$","_$ssrHydrationKey","_$escape","localeLabel","_$ssrAttribute","_$createComponent","each","children","_tmpl$2","code","dir","nativeName","ThemeToggleProps","value","defaultValue","onValueChange","theme","storageKey","ThemeToggle","order","internal","setInternal","resolved","setResolved","nextTheme","nextLabel","themeDark","themeLight","apply","matchMedia","matches","document","documentElement","dataset","themePreference","update","undefined","localStorage","setItem","stored","getItem","includes","tone","aria-label","themeLabel","title","onClick","name","data-icon","size","SiteHeaderProps","brand","navigation","Omit","actions","Element","SiteHeader","menuOpen","setMenuOpen","_tmpl$3","skipToContent","logo","aria-expanded","open","menuClose","String","navigationLabel","item","_tmpl$4","external","label","_$mergeProps","SiteFooterProps","links","copyright","SiteFooter","_tmpl$5","footerLabel","Button","ButtonTone","JSX","SiteFooter","SiteHeader","SiteFooterProps","SiteHeaderProps","SiteMessages","MarketingShellProps","header","footer","messages","children","Element","MarketingShell","props","_$ssr","_tmpl$","_$ssrHydrationKey","_$escape","_$createComponent","_$mergeProps","LegalLayoutProps","title","updatedAt","LegalLayout","_tmpl$2","updatedLabel","_$ssrAttribute","StatusBannerProps","tone","action","label","onClick","StatusBanner","_tmpl$3","_tmpl$4","NotFoundLayoutProps","homeHref","NotFoundLayout","_tmpl$5","notFoundTitle","notFoundDescription","backHome","ErrorLayoutProps","onRetry","errorId","ErrorLayout","_tmpl$6","errorTitle","errorDescription","_tmpl$7","retry","Button","Field","createSignal","RequestAccessMessages","nameLabel","emailLabel","organizationLabel","useCaseLabel","submit","submitting","success","error","RequestAccessFormProps","messages","onSubmit","data","FormData","Promise","class","RequestAccessForm","props","state","setState","event","SubmitEvent","preventDefault","currentTarget","HTMLFormElement","_$ssr","_tmpl$","_$ssrHydrationKey","_$escape","_$createComponent","label","required","children","control","_$ssrElement","_$mergeProps","name","autocomplete","undefined","type","rows","loading","OssProductMarkProps","name","src","size","decorative","class","MARK_SIZE","sm","md","lg","const","OssProductMark","props","pixels","_$ssr","_tmpl$","_$ssrHydrationKey","_$escape","_$ssrAttribute","undefined"],"sources":["../src/core/locales.mjs","../src/solid/chrome.tsx","../src/solid/layouts.tsx","../src/solid/request-access.tsx","../src/solid/oss-product-mark.tsx"],"sourcesContent":["export const LOCALES = Object.freeze([\n { code: \"ko\", language: \"Korean\", nativeName: \"한국어\", dir: \"ltr\" },\n { code: \"en\", language: \"English\", nativeName: \"English\", dir: \"ltr\" },\n { code: \"ja\", language: \"Japanese\", nativeName: \"日本語\", dir: \"ltr\" },\n { code: \"zh-HK\", language: \"Chinese (Hong Kong)\", nativeName: \"繁體中文(香港)\", dir: \"ltr\" },\n { code: \"zh-TW\", language: \"Chinese (Taiwan)\", nativeName: \"繁體中文(台灣)\", dir: \"ltr\" },\n { code: \"hi\", language: \"Hindi\", nativeName: \"हिन्दी\", dir: \"ltr\" },\n { code: \"vi\", language: \"Vietnamese\", nativeName: \"Tiếng Việt\", dir: \"ltr\" },\n { code: \"id\", language: \"Indonesian\", nativeName: \"Bahasa Indonesia\", dir: \"ltr\" },\n { code: \"th\", language: \"Thai\", nativeName: \"ไทย\", dir: \"ltr\" },\n { code: \"pt-BR\", language: \"Portuguese (Brazil)\", nativeName: \"Português (Brasil)\", dir: \"ltr\" },\n { code: \"fr\", language: \"French\", nativeName: \"Français\", dir: \"ltr\" },\n { code: \"de\", language: \"German\", nativeName: \"Deutsch\", dir: \"ltr\" },\n { code: \"es\", language: \"Spanish\", nativeName: \"Español\", dir: \"ltr\" },\n { code: \"ar\", language: \"Arabic\", nativeName: \"العربية\", dir: \"rtl\" },\n]);\n\nconst byLower = new Map(LOCALES.map((locale) => [locale.code.toLowerCase(), locale]));\nconst aliases = new Map([[\"zh\", \"zh-TW\"], [\"pt\", \"pt-BR\"]]);\n\nexport function canonicalLocale(candidate) {\n if (!candidate) return undefined;\n const exact = byLower.get(String(candidate).trim().toLowerCase());\n if (exact) return exact.code;\n const base = String(candidate).trim().toLowerCase().split(\"-\")[0];\n if (aliases.has(base)) return aliases.get(base);\n return byLower.get(base)?.code;\n}\n\nexport function localeAttributes(locale) {\n const canonical = canonicalLocale(locale);\n if (!canonical) throw new RangeError(`Unsupported locale: ${locale}`);\n return { lang: canonical, dir: canonical === \"ar\" ? \"rtl\" : \"ltr\" };\n}\n\nfunction cookieValue(header, name) {\n for (const part of String(header ?? \"\").split(\";\")) {\n const separator = part.indexOf(\"=\");\n if (separator < 0) continue;\n if (part.slice(0, separator).trim() === name) {\n try { return decodeURIComponent(part.slice(separator + 1).trim()); }\n catch { return undefined; }\n }\n }\n return undefined;\n}\n\nfunction acceptedLocales(header) {\n return String(header ?? \"\").split(\",\").map((part, order) => {\n const [tag, ...parameters] = part.trim().split(\";\");\n const q = Number(parameters.find((parameter) => parameter.trim().startsWith(\"q=\"))?.split(\"=\")[1] ?? 1);\n return { locale: canonicalLocale(tag), q: Number.isFinite(q) ? q : 0, order };\n }).filter(({ locale, q }) => locale && q > 0).sort((a, b) => b.q - a.q || a.order - b.order);\n}\n\nexport function resolveLocale({ pathname = \"/\", cookie = \"\", acceptLanguage = \"\", defaultLocale }) {\n const routeLocale = canonicalLocale(pathname.split(\"/\").filter(Boolean)[0]);\n if (routeLocale) return { locale: routeLocale, source: \"route\" };\n const storedLocale = canonicalLocale(cookieValue(cookie, \"locale\"));\n if (storedLocale) return { locale: storedLocale, source: \"cookie\" };\n const accepted = acceptedLocales(acceptLanguage)[0]?.locale;\n if (accepted) return { locale: accepted, source: \"accept-language\" };\n const fallback = canonicalLocale(defaultLocale);\n if (!fallback) throw new RangeError(`Unsupported default locale: ${defaultLocale}`);\n return { locale: fallback, source: \"default\" };\n}\n","import { Button, Icon, IconButton } from \"@devslab/dds-solid\";\nimport { For, createSignal, onMount, type JSX } from \"solid-js\";\n\nimport { LOCALES, type SiteLocale } from \"../core/locales.mjs\";\nimport type { LocaleState, SiteBrand, SiteLink, SiteMessages, ThemePreference } from \"./types\";\n\nexport interface LocaleMenuProps {\n state: LocaleState;\n messages: SiteMessages;\n onLocaleChange?: (locale: SiteLocale, href: string) => void;\n}\n\nexport function LocaleMenu(props: LocaleMenuProps) {\n return (\n <label>\n <span class=\"dds-sr-only\">{props.messages.localeLabel}</span>\n <span class=\"dds-select site-locale\">\n <select\n class=\"dds-select__input\"\n value={props.state.locale}\n aria-label={props.messages.localeLabel}\n onChange={(event) => {\n const locale = event.currentTarget.value as SiteLocale;\n const href = props.state.hrefForLocale(locale);\n if (props.onLocaleChange) props.onLocaleChange(locale, href);\n else window.location.assign(href);\n }}\n >\n <For each={LOCALES}>{(locale) => <option value={locale.code} lang={locale.code} dir={locale.dir}>{locale.nativeName}</option>}</For>\n </select>\n </span>\n </label>\n );\n}\n\nexport interface ThemeToggleProps {\n messages: SiteMessages;\n value?: ThemePreference;\n defaultValue?: ThemePreference;\n onValueChange?: (theme: ThemePreference) => void;\n storageKey?: string;\n}\n\nexport function ThemeToggle(props: ThemeToggleProps) {\n const order: ThemePreference[] = [\"system\", \"light\", \"dark\"];\n const [internal, setInternal] = createSignal<ThemePreference>(props.defaultValue ?? \"system\");\n const [resolved, setResolved] = createSignal<\"light\" | \"dark\">(\"light\");\n const value = () => props.value ?? internal();\n const nextTheme = () => resolved() === \"dark\" ? \"light\" : \"dark\";\n const nextLabel = () => nextTheme() === \"dark\" ? props.messages.themeDark : props.messages.themeLight;\n const apply = (theme: ThemePreference) => {\n const resolved = theme === \"system\"\n ? (matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\")\n : theme;\n setResolved(resolved);\n document.documentElement.dataset.theme = resolved;\n document.documentElement.dataset.themePreference = theme;\n };\n const update = (theme: ThemePreference) => {\n if (props.value === undefined) setInternal(theme);\n props.onValueChange?.(theme);\n apply(theme);\n localStorage.setItem(props.storageKey ?? \"site-theme\", theme);\n };\n onMount(() => {\n const stored = localStorage.getItem(props.storageKey ?? \"site-theme\") as ThemePreference | null;\n if (props.value === undefined && stored && order.includes(stored)) setInternal(stored);\n apply(props.value ?? stored ?? internal());\n });\n return (\n <IconButton\n class=\"site-theme-toggle\"\n tone=\"ghost\"\n aria-label={`${props.messages.themeLabel}: ${nextLabel()}`}\n title={`${props.messages.themeLabel}: ${nextLabel()}`}\n onClick={() => update(nextTheme())}\n >\n <Icon\n class=\"site-theme-toggle__icon\"\n name={nextTheme() === \"dark\" ? \"site-moon\" : \"site-sun\"}\n data-icon={nextTheme() === \"dark\" ? \"site-moon\" : \"site-sun\"}\n size={20}\n />\n </IconButton>\n );\n}\n\nexport interface SiteHeaderProps {\n brand: SiteBrand;\n navigation: SiteLink[];\n locale: LocaleState;\n messages: SiteMessages;\n theme?: Omit<ThemeToggleProps, \"messages\">;\n onLocaleChange?: LocaleMenuProps[\"onLocaleChange\"];\n actions?: JSX.Element;\n}\n\nexport function SiteHeader(props: SiteHeaderProps) {\n const [menuOpen, setMenuOpen] = createSignal(false);\n return (\n <header class=\"site-header\">\n <a class=\"dds-sr-only\" href=\"#main-content\">{props.messages.skipToContent}</a>\n <div class=\"site-header__inner\">\n <a class=\"site-brand\" href={props.brand.href}>{props.brand.logo}{props.brand.name}</a>\n <Button class=\"site-menu-button\" tone=\"ghost\" aria-expanded={menuOpen()} aria-controls=\"site-navigation\" onClick={() => setMenuOpen((open) => !open)}>\n {menuOpen() ? props.messages.menuClose : props.messages.menuOpen}\n </Button>\n <nav id=\"site-navigation\" class=\"site-nav\" data-open={String(menuOpen())} aria-label={props.messages.navigationLabel}>\n <ul class=\"site-nav__list\"><For each={props.navigation}>{(item) => <li><a href={item.href} target={item.external ? \"_blank\" : undefined} rel={item.external ? \"noreferrer\" : undefined}>{item.label}</a></li>}</For></ul>\n </nav>\n <div class=\"site-header__controls\" data-open={String(menuOpen())}>\n <LocaleMenu\n state={props.locale}\n messages={props.messages}\n {...(props.onLocaleChange ? { onLocaleChange: props.onLocaleChange } : {})}\n />\n {props.theme && <ThemeToggle {...props.theme} messages={props.messages} />}\n {props.actions}\n </div>\n </div>\n </header>\n );\n}\n\nexport interface SiteFooterProps {\n brand: SiteBrand;\n links: SiteLink[];\n copyright: string;\n messages: SiteMessages;\n}\n\nexport function SiteFooter(props: SiteFooterProps) {\n return (\n <footer class=\"site-footer\" aria-label={props.messages.footerLabel}>\n <div class=\"site-footer__inner\">\n <strong>{props.brand.name}</strong>\n <ul class=\"site-footer__links\"><For each={props.links}>{(item) => <li><a href={item.href}>{item.label}</a></li>}</For></ul>\n <small>{props.copyright}</small>\n </div>\n </footer>\n );\n}\n","import { Button, type ButtonTone } from \"@devslab/dds-solid\";\nimport type { JSX } from \"solid-js\";\n\nimport { SiteFooter, SiteHeader, type SiteFooterProps, type SiteHeaderProps } from \"./chrome\";\nimport type { SiteMessages } from \"./types\";\n\nexport interface MarketingShellProps {\n header: SiteHeaderProps;\n footer: SiteFooterProps;\n messages: SiteMessages;\n children: JSX.Element;\n}\n\nexport function MarketingShell(props: MarketingShellProps) {\n return <div class=\"site-shell\"><SiteHeader {...props.header} /><main id=\"main-content\" class=\"site-main\" tabIndex={-1}>{props.children}</main><SiteFooter {...props.footer} /></div>;\n}\n\nexport interface LegalLayoutProps {\n title: string;\n updatedAt: string;\n messages: SiteMessages;\n children: JSX.Element;\n}\n\nexport function LegalLayout(props: LegalLayoutProps) {\n return <article class=\"site-legal\"><header><h1>{props.title}</h1><p>{props.messages.updatedLabel}: <time datetime={props.updatedAt}>{props.updatedAt}</time></p></header>{props.children}</article>;\n}\n\nexport interface StatusBannerProps {\n tone: \"success\" | \"warning\" | \"danger\" | \"info\";\n title: string;\n children?: JSX.Element;\n action?: { label: string; onClick: () => void; tone?: ButtonTone };\n}\n\nexport function StatusBanner(props: StatusBannerProps) {\n return <section class={`site-status site-status--${props.tone}`} role={props.tone === \"danger\" ? \"alert\" : \"status\"} aria-live={props.tone === \"danger\" ? \"assertive\" : \"polite\"}>\n <strong>{props.title}</strong>{props.children && <div>{props.children}</div>}{props.action && <Button tone={props.action.tone ?? \"secondary\"} onClick={props.action.onClick}>{props.action.label}</Button>}\n </section>;\n}\n\nexport interface NotFoundLayoutProps { messages: SiteMessages; homeHref: string; children?: JSX.Element }\nexport function NotFoundLayout(props: NotFoundLayoutProps) {\n return <main class=\"site-main site-centered-layout\"><h1>{props.messages.notFoundTitle}</h1><p>{props.messages.notFoundDescription}</p>{props.children}<a class=\"dds-btn dds-btn--primary\" href={props.homeHref}>{props.messages.backHome}</a></main>;\n}\n\nexport interface ErrorLayoutProps { messages: SiteMessages; onRetry: () => void; errorId?: string; children?: JSX.Element }\nexport function ErrorLayout(props: ErrorLayoutProps) {\n return <main class=\"site-main site-centered-layout\"><h1>{props.messages.errorTitle}</h1><p>{props.messages.errorDescription}</p>{props.errorId && <code>{props.errorId}</code>}{props.children}<Button tone=\"primary\" onClick={props.onRetry}>{props.messages.retry}</Button></main>;\n}\n","import { Button, Field } from \"@devslab/dds-solid\";\nimport { createSignal } from \"solid-js\";\n\nexport interface RequestAccessMessages {\n nameLabel: string;\n emailLabel: string;\n organizationLabel: string;\n useCaseLabel: string;\n submit: string;\n submitting: string;\n success: string;\n error: string;\n}\n\nexport interface RequestAccessFormProps {\n messages: RequestAccessMessages;\n onSubmit: (data: FormData) => void | Promise<void>;\n class?: string;\n}\n\nexport function RequestAccessForm(props: RequestAccessFormProps) {\n const [state, setState] = createSignal<\"idle\" | \"submitting\" | \"success\" | \"error\">(\"idle\");\n const submit = async (event: SubmitEvent) => {\n event.preventDefault();\n if (state() === \"submitting\") return;\n setState(\"submitting\");\n try {\n await props.onSubmit(new FormData(event.currentTarget as HTMLFormElement));\n setState(\"success\");\n } catch {\n setState(\"error\");\n }\n };\n return (\n <form class={`site-request-form${props.class ? ` ${props.class}` : \"\"}`} onSubmit={submit}>\n <Field label={props.messages.nameLabel} required>{(control) => <input {...control} class=\"dds-input\" name=\"name\" autocomplete=\"name\" required />}</Field>\n <Field label={props.messages.emailLabel} required>{(control) => <input {...control} class=\"dds-input\" type=\"email\" name=\"email\" autocomplete=\"email\" required />}</Field>\n <Field label={props.messages.organizationLabel}>{(control) => <input {...control} class=\"dds-input\" name=\"organization\" autocomplete=\"organization\" />}</Field>\n <Field label={props.messages.useCaseLabel}>{(control) => <textarea {...control} class=\"dds-textarea\" name=\"useCase\" rows=\"5\" />}</Field>\n <Button type=\"submit\" loading={state() === \"submitting\"}>{state() === \"submitting\" ? props.messages.submitting : props.messages.submit}</Button>\n <div aria-live=\"polite\" aria-atomic=\"true\">{state() === \"success\" ? props.messages.success : state() === \"error\" ? props.messages.error : \"\"}</div>\n </form>\n );\n}\n","export interface OssProductMarkProps {\n name: string;\n src: string;\n size?: \"sm\" | \"md\" | \"lg\";\n decorative?: boolean;\n class?: string;\n}\n\nconst MARK_SIZE = { sm: 24, md: 32, lg: 48 } as const;\n\nexport function OssProductMark(props: OssProductMarkProps) {\n const size = () => props.size ?? \"md\";\n const pixels = () => MARK_SIZE[size()];\n\n return (\n <img\n class={`oss-product-mark oss-product-mark--${size()}${props.class ? ` ${props.class}` : \"\"}`}\n src={props.src}\n alt={props.decorative ? \"\" : props.name}\n aria-hidden={props.decorative ? \"true\" : undefined}\n width={pixels()}\n height={pixels()}\n decoding=\"async\"\n />\n );\n}\n"],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { JSX } from "solid-js";
|
|
2
|
+
import type { SiteLocale } from "../core/locales.mjs";
|
|
3
|
+
export interface SiteMessages {
|
|
4
|
+
navigationLabel: string;
|
|
5
|
+
localeLabel: string;
|
|
6
|
+
themeLabel: string;
|
|
7
|
+
themeSystem: string;
|
|
8
|
+
themeLight: string;
|
|
9
|
+
themeDark: string;
|
|
10
|
+
menuOpen: string;
|
|
11
|
+
menuClose: string;
|
|
12
|
+
footerLabel: string;
|
|
13
|
+
skipToContent: string;
|
|
14
|
+
updatedLabel: string;
|
|
15
|
+
notFoundTitle: string;
|
|
16
|
+
notFoundDescription: string;
|
|
17
|
+
backHome: string;
|
|
18
|
+
errorTitle: string;
|
|
19
|
+
errorDescription: string;
|
|
20
|
+
retry: string;
|
|
21
|
+
}
|
|
22
|
+
export interface SiteLink {
|
|
23
|
+
href: string;
|
|
24
|
+
label: string;
|
|
25
|
+
external?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface SiteBrand {
|
|
28
|
+
name: string;
|
|
29
|
+
href: string;
|
|
30
|
+
logo?: JSX.Element;
|
|
31
|
+
}
|
|
32
|
+
export interface LocaleState {
|
|
33
|
+
locale: SiteLocale;
|
|
34
|
+
hrefForLocale: (locale: SiteLocale) => string;
|
|
35
|
+
}
|
|
36
|
+
export type ThemePreference = "system" | "light" | "dark";
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/solid/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;AAC7E,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE;AAC7E,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,UAAU,CAAC;IAAC,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,CAAA;CAAE;AAClG,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC"}
|