@devslab/site-kit 0.15.0 → 0.17.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/dist/solid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"solid.js","names":["For","createUniqueId","JSX","FAMILY_LOCALES","LocaleRegistry","SiteLocale","FLAG_VIEWBOX","flagCountryFor","flagBodiesNow","loadFlagBodies","FlagBodies","LocaleState","SiteMessages","LocaleMenuVariant","LocaleMenuProps","state","messages","variant","onLocaleChange","locale","href","registry","scopeFlagIds","body","uid","ids","matchAll","map","match","length","scoped","id","suffixed","replaceAll","registryOf","props","symbolId","country","spriteMarkup","countries","bodies","flag","RangeError","viewBox","join","FlagSprite","_el$","_$getNextElement","_tmpl$","_$effect","_$setProperty","_el$2","_$use","element","childElementCount","then","loaded","innerHTML","Flag","class","_el$3","_tmpl$2","_el$4","firstChild","_$setAttribute","_p$","_v$","_v$2","e","t","undefined","SelectLocaleMenu","_el$5","_tmpl$3","_el$6","_el$7","nextSibling","_el$8","_$insert","localeLabel","addEventListener","event","currentTarget","value","hrefForLocale","window","location","assign","_$createComponent","each","LOCALES","children","_el$9","_tmpl$4","nativeName","_v$3","code","_v$4","dir","_v$5","a","FlagLocaleMenu","details","HTMLDetailsElement","trigger","HTMLElement","Set","entry","current","find","close","open","onKeyDown","EventHandler","KeyboardEvent","key","preventDefault","focus","triggerLabel","name","_el$0","_tmpl$5","_el$1","_el$10","_el$11","_co$","_$getNextMarker","_el$12","_el$13","_co$2","_el$14","$$keydown","_ref$","_ref$2","_el$15","_tmpl$6","_el$16","_el$18","_el$19","_co$3","_el$17","$$click","_v$8","_v$9","_v$0","_v$1","_v$10","o","i","_$runHydrationEvents","_v$6","_v$7","LocaleMenu","_$delegateEvents","Button","Icon","IconButton","For","Show","createMemo","createSignal","onMount","JSX","LocaleMenu","LocaleMenuProps","LocaleMenuVariant","FAMILY_LOCALES","LocaleRegistry","SiteLocale","LocaleState","SiteBrand","SiteLink","SiteMessages","ThemePreference","ThemeToggleProps","messages","value","defaultValue","onValueChange","theme","storageKey","ThemeToggle","props","order","internal","setInternal","resolved","setResolved","nextTheme","nextLabel","themeDark","themeLight","apply","matchMedia","matches","document","documentElement","dataset","themePreference","update","undefined","localStorage","setItem","stored","getItem","includes","_$createComponent","tone","aria-label","themeLabel","title","onClick","children","name","data-icon","size","SiteHeaderProps","brand","navigation","locale","Omit","onLocaleChange","localeVariant","localeRegistry","actions","Element","linkClass","item","emphasis","SiteHeader","menuOpen","setMenuOpen","onKeyDown","EventHandler","HTMLElement","KeyboardEvent","event","key","defaultPrevented","target","closest","preventDefault","currentTarget","querySelector","HTMLButtonElement","focus","closeOnLink","MouseEvent","link","ctrlKey","metaKey","shiftKey","altKey","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_el$5","_el$6","_co$","_$getNextMarker","_el$7","_el$8","_co$2","_el$16","_el$17","_co$6","_el$9","_el$0","_el$1","_el$10","_el$11","_co$3","_el$12","_el$13","_co$4","_el$14","_el$15","_co$5","$$keydown","_$insert","skipToContent","logo","aria-expanded","open","_$memo","menuClose","$$click","each","_el$18","_tmpl$2","_el$19","label","_$effect","_p$","_v$6","_v$7","href","_v$8","external","_v$9","e","_$className","t","_$setAttribute","a","o","when","_$mergeProps","state","variant","registry","_c$","_v$","_v$2","_v$3","String","_v$4","navigationLabel","_v$5","i","_$runHydrationEvents","FooterLocaleMenu","onSelect","details","HTMLDetailsElement","trigger","current","LOCALES","find","entry","code","close","_el$20","_tmpl$3","_el$21","_el$22","_el$23","_el$24","_ref$","_$use","_ref$2","nativeName","_el$25","_el$26","_v$12","hrefForLocale","_v$13","_v$14","_v$15","dir","_v$16","_v$0","_v$1","_v$10","_v$11","SiteFooterProps","links","copyright","copyrightHref","onLocaleSelect","family","linksLabel","SiteFooter","brandLine","_el$27","_tmpl$4","_el$28","_el$29","_co$7","_el$30","_el$31","_co$8","_el$32","_el$33","_co$9","_el$34","_tmpl$5","_tmpl$6","_el$36","_tmpl$7","_v$17","_v$18","linkList","_el$37","_tmpl$8","_el$39","_el$40","_co$0","_el$38","_el$41","_el$42","_v$19","_v$20","fallback","_el$43","_tmpl$9","_el$44","_tmpl$0","_el$45","_el$46","_tmpl$1","_el$47","_el$53","_el$54","_co$11","_el$48","_el$49","_el$50","_co$1","_el$51","_el$52","_co$10","localeLabel","content","_el$55","_tmpl$10","_el$57","_el$58","_co$12","_el$56","_el$59","_tmpl$11","footerLabel","_$delegateEvents","Button","ButtonTone","createMemo","JSX","SiteFooter","SiteHeader","SiteFooterProps","SiteHeaderProps","SiteMessages","MarketingShellProps","header","footer","messages","children","Element","mainWidth","MarketingShell","props","mainClass","_el$","_$getNextElement","_tmpl$","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$2","_el$5","_el$6","_co$2","_$insert","_$createComponent","_$mergeProps","_$effect","_$className","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","_$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","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","For","Show","JSX","SectionBlockProps","id","labelledBy","tone","children","Element","SectionBlock","props","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$insert","_$effect","_p$","_v$","_v$2","_v$3","e","_$setAttribute","t","a","undefined","SectionHeadProps","index","title","titleId","lede","SectionHead","_el$3","_tmpl$2","_el$4","_el$5","nextSibling","_el$6","_el$7","_co$","_$getNextMarker","_$createComponent","when","_el$8","_tmpl$3","HeroSplitProps","eyebrow","actions","aside","asideLabel","HeroSplit","_el$9","_tmpl$4","_el$0","_el$1","_el$13","_el$14","_co$2","_el$10","_el$11","_el$12","_el$15","_el$16","_tmpl$5","_v$4","_v$5","_v$6","_v$7","o","StepFlowStep","body","StepFlowProps","steps","ReadonlyArray","label","StepFlow","_el$17","_tmpl$6","each","step","_el$18","_tmpl$7","_el$19","_el$20","_el$21","FeatureRow","badge","FeatureRowsProps","rows","FeatureRows","_el$22","_tmpl$8","row","_el$23","_tmpl$9","_el$24","_el$25","_el$26","_el$27","_co$3","_el$28","_el$29","_tmpl$0","PricingNoteProps","action","PricingNote","_el$30","_tmpl$1","_el$31","_el$32"],"sources":["../src/core/locales.mjs","../src/core/flag-countries.mjs","../src/solid/flag-bodies.ts","../src/solid/locale-menu.tsx","../src/solid/chrome.tsx","../src/solid/layouts.tsx","../src/solid/request-access.tsx","../src/solid/oss-product-mark.tsx","../src/solid/sections.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 FAMILY_ALIASES = Object.freeze([[\"zh\", \"zh-TW\"], [\"pt\", \"pt-BR\"]]);\n\n/**\n * The languages a site actually sells in.\n *\n * The list above is the family's — what devslab.kr markets in, and the\n * floor every product gets for free. It is not every product's list.\n * BookLinq sells to salons in India and its assistant already answers in\n * Tamil, Telugu, Bengali, Marathi, Gujarati and Kannada. Those are not\n * family languages and are not going to become family languages: putting\n * them in the list above would hand AskLinq and devslab.kr six entries\n * they have no copy for. But a BookLinq page that cannot render them is a\n * page that lies about what the product does.\n *\n * So the family owns the mechanism and the product names its own nouns. A\n * registry is the family list plus whatever a product adds, and every\n * locale-aware helper here can be bound to one. The bare exports at the\n * bottom are the family registry, so a consumer that never calls this\n * sees exactly what it saw before.\n *\n * An extra locale carries the same fields as a family one plus\n * `flagCountry`, naming a flag this package already vendors (`FLAG_COUNTRY`\n * lists them). Products do not ship SVG: flag data is licensed, generated\n * and security-scanned here, and seven Indian languages share one flag\n * anyway.\n *\n * @param {{ only?: ReadonlyArray<string>, extra?: ReadonlyArray<object>, aliases?: ReadonlyArray<[string, string]> }} [options]\n */\nexport function defineLocaleRegistry(options = {}) {\n const extra = options.extra ?? [];\n // `only` — the product sells in a subset of the family's languages. The\n // subset keeps the family's order (the picker order is a family decision)\n // and is applied before `extra`, so a product may still add its own.\n let family = LOCALES;\n if (options.only !== undefined) {\n if (options.only.length === 0) throw new RangeError(\"`only` needs at least one locale — a registry with none is a bug, not a choice\");\n const wanted = new Set(options.only);\n for (const code of wanted) {\n if (!LOCALES.some((locale) => locale.code === code)) throw new RangeError(`${code} is not a family locale — \\`only\\` selects from the family list; use \\`extra\\` for a product's own`);\n }\n family = Object.freeze(LOCALES.filter((locale) => wanted.has(locale.code)));\n }\n const seen = new Set(family.map(({ code }) => code));\n for (const locale of extra) {\n if (!locale?.code) throw new TypeError(\"every extra locale needs a code\");\n if (LOCALES.some((known) => known.code === locale.code)) {\n throw new RangeError(`${locale.code} is already a family locale — remove it from \\`extra\\``);\n }\n if (seen.has(locale.code)) {\n throw new RangeError(`${locale.code} appears twice in \\`extra\\``);\n }\n if (!locale.nativeName) throw new TypeError(`${locale.code} needs a nativeName — it is what the picker shows`);\n if (locale.dir !== \"ltr\" && locale.dir !== \"rtl\") throw new RangeError(`${locale.code} needs dir \"ltr\" or \"rtl\"`);\n seen.add(locale.code);\n }\n\n const locales = Object.freeze([...family, ...extra.map((locale) => Object.freeze({ ...locale }))]);\n const byLower = new Map(locales.map((locale) => [locale.code.toLowerCase(), locale]));\n const aliases = new Map([...FAMILY_ALIASES, ...(options.aliases ?? [])]);\n\n 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)) { const target = aliases.get(base); return byLower.has(target.toLowerCase()) ? target : undefined; }\n return byLower.get(base)?.code;\n }\n\n function definitionFor(locale) {\n const canonical = canonicalLocale(locale);\n if (!canonical) throw new RangeError(`Unsupported locale: ${locale}`);\n return byLower.get(canonical.toLowerCase());\n }\n\n function localeAttributes(locale) {\n const definition = definitionFor(locale);\n // `dir` comes off the definition rather than a test for Arabic. The\n // old form read `canonical === \"ar\" ? \"rtl\" : \"ltr\"`, which was right\n // only while Arabic stayed the family's one RTL language — a product\n // adding Urdu or Hebrew would have had it rendered left-to-right with\n // every test still green.\n return { lang: definition.code, dir: definition.dir };\n }\n\n 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, canonicalLocale)[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\n return Object.freeze({ LOCALES: locales, canonicalLocale, localeAttributes, resolveLocale, definitionFor });\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, canonicalLocale) {\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\n/** The family registry — what every helper in this package uses by default. */\nexport const FAMILY_LOCALES = defineLocaleRegistry();\n\nexport const { canonicalLocale, localeAttributes, resolveLocale } = FAMILY_LOCALES;\n","/* Generated by scripts/build-flags.mjs — do not edit. Source: flags/*.svg (flag-icons, MIT). Copyright (c) 2013 Panayiotis Lipiridis */\nexport const FLAG_COUNTRY = Object.freeze({\n \"ko\": \"kr\",\n \"en\": \"us\",\n \"ja\": \"jp\",\n \"zh-HK\": \"hk\",\n \"zh-TW\": \"tw\",\n \"hi\": \"in\",\n \"vi\": \"vn\",\n \"id\": \"id\",\n \"th\": \"th\",\n \"pt-BR\": \"br\",\n \"fr\": \"fr\",\n \"de\": \"de\",\n \"es\": \"es\",\n \"ar\": \"sa\"\n});\n\n/** Every vendored flag is 4:3 on this box, so any <use> can point at any symbol. */\nexport const FLAG_VIEWBOX = \"0 0 640 480\";\n\nconst VENDORED = new Set(Object.values(FLAG_COUNTRY));\n\n/**\n * The country whose flag stands for a locale — a family locale through\n * FLAG_COUNTRY, a product's own through its registry's `flagCountry`.\n * Same lookup order and errors as `flagFor`, without loading a body.\n *\n * @param {string} locale\n * @param {{ LOCALES?: ReadonlyArray<{ code: string, flagCountry?: string }> }} [registry]\n * @returns {string}\n */\nexport function flagCountryFor(locale, registry) {\n const country = FLAG_COUNTRY[locale];\n if (country) return country;\n const extra = registry?.LOCALES?.find((definition) => definition.code === locale);\n if (extra?.flagCountry) {\n if (VENDORED.has(extra.flagCountry)) return extra.flagCountry;\n throw new RangeError(`No vendored flag for country: ${extra.flagCountry} (locale ${locale})`);\n }\n throw new RangeError(`No flag for locale: ${locale}`);\n}\n","/**\n * How the Solid menu reaches the flag artwork — browser build.\n *\n * The fourteen vendored SVGs are ~115 KB. A page rendered on the server\n * already carries them in its HTML, and hydration adopts that markup, so the\n * browser bundle must not import them statically: it used to, and every\n * product's main client chunk grew by the whole set just to render a header.\n *\n * `flagBodiesNow` answers synchronously only in the build that has the bodies\n * at hand (flag-bodies.server.ts, aliased in by vite.server.config.ts and\n * vitest.ssr.config.ts). Here it answers undefined, and `loadFlagBodies` is a\n * dynamic import Vite emits as its own chunk — fetched only when a flag menu\n * renders without server HTML.\n */\nimport type { LocaleFlag } from \"../core/flag-bodies.mjs\";\n\nexport type FlagBodies = Readonly<Record<string, LocaleFlag>>;\n\nexport const flagBodiesNow = (): FlagBodies | undefined => undefined;\n\nexport const loadFlagBodies = (): Promise<FlagBodies> =>\n import(\"../core/flag-bodies.mjs\").then((module) => module.FLAGS_BY_COUNTRY);\n","import { For, createUniqueId, type JSX } from \"solid-js\";\n\nimport { FAMILY_LOCALES, type LocaleRegistry, type SiteLocale } from \"../core/locales.mjs\";\nimport { FLAG_VIEWBOX, flagCountryFor } from \"../core/flag-countries.mjs\";\nimport { flagBodiesNow, loadFlagBodies, type FlagBodies } from \"./flag-bodies\";\nimport type { LocaleState, SiteMessages } from \"./types\";\n\nexport type LocaleMenuVariant = \"select\" | \"flag\";\n\nexport interface LocaleMenuProps {\n state: LocaleState;\n messages: SiteMessages;\n variant?: LocaleMenuVariant;\n onLocaleChange?: (locale: SiteLocale, href: string) => void;\n /**\n * The languages to offer. Defaults to the family's fourteen; a product\n * that added its own passes the registry it built with\n * `defineLocaleRegistry`.\n */\n registry?: LocaleRegistry<string>;\n}\n\nfunction scopeFlagIds(body: string, uid: string): string {\n const ids = [...body.matchAll(/\\bid=\"([^\"]+)\"/g)].map((match) => match[1]!);\n if (ids.length === 0) return body;\n let scoped = body;\n for (const id of ids) {\n const suffixed = `${id}-${uid}`;\n scoped = scoped\n .replaceAll(`id=\"${id}\"`, `id=\"${suffixed}\"`)\n .replaceAll(`href=\"#${id}\"`, `href=\"#${suffixed}\"`)\n .replaceAll(`url(#${id})`, `url(#${suffixed})`);\n }\n return scoped;\n}\n\nconst registryOf = (props: LocaleMenuProps) => props.registry ?? (FAMILY_LOCALES as LocaleRegistry<string>);\n\nconst symbolId = (country: string, uid: string) => `site-flag-${country}-${uid}`;\n\nfunction spriteMarkup(countries: readonly string[], bodies: FlagBodies, uid: string): string {\n return countries.map((country) => {\n const flag = bodies[country];\n if (!flag) throw new RangeError(`No vendored flag for country: ${country}`);\n return `<symbol id=\"${symbolId(country, uid)}\" viewBox=\"${flag.viewBox}\">${scopeFlagIds(flag.body, uid)}</symbol>`;\n }).join(\"\");\n}\n\n/**\n * One copy of each flag the menu shows, as <symbol>s the flags <use>.\n *\n * The trigger and the current row used to inline the same body twice, and\n * the browser bundle carried every body so a client render could write\n * them. With a sprite, a locale change on the client only swaps an href,\n * so after hydration the browser never needs the artwork: the server build\n * writes it (flagBodiesNow), hydration adopts it untouched, and only a\n * render with no server HTML — a client-only app, a jsdom test — fetches\n * the bodies through loadFlagBodies, which the browser build emits as its\n * own chunk. Zero-sized rather than display:none so the referenced clip\n * paths and gradients still resolve.\n *\n * \"No server HTML\" is decided by looking at the element, not at whether\n * hydration is running: a hydration that drifted upstream recreates this\n * element from the template, empty, while the hydration context is still\n * set. Trusting the context left the first consumer with a blank flag\n * box; an empty sprite loads its bodies whatever the reason it is empty.\n */\nfunction FlagSprite(props: { countries: readonly string[]; uid: string }) {\n const bodies = flagBodiesNow();\n if (bodies) {\n return <svg class=\"site-flag-sprite\" aria-hidden=\"true\" innerHTML={spriteMarkup(props.countries, bodies, props.uid)} />;\n }\n return (\n <svg\n class=\"site-flag-sprite\"\n aria-hidden=\"true\"\n ref={(element) => {\n if (element.childElementCount > 0) return; // adopted from server HTML: the sprite is already drawn\n void loadFlagBodies().then((loaded) => { element.innerHTML = spriteMarkup(props.countries, loaded, props.uid); });\n }}\n />\n );\n}\n\nfunction Flag(props: { locale: string; class?: string; registry: LocaleRegistry<string>; uid: string }) {\n const country = () => flagCountryFor(props.locale, props.registry);\n return (\n <svg class={props.class} viewBox={FLAG_VIEWBOX} aria-hidden=\"true\">\n <use href={`#${symbolId(country(), props.uid)}`} />\n </svg>\n );\n}\n\nfunction SelectLocaleMenu(props: LocaleMenuProps) {\n const registry = () => registryOf(props);\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 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 {/*\n `selected` on the option, not `value` on the select.\n <select> has no `value` content attribute — it exists only as a\n DOM property — so under SSR, where the markup is a string,\n `value={...}` serialised to an attribute the browser ignores and\n every visitor got option[0] as their \"current\" language\n regardless of the page they were reading. Touching the control\n then switched them to that first language. `selected` is a real\n content attribute and survives the trip through HTML.\n */}\n <For each={registry().LOCALES}>{(locale) => (\n <option value={locale.code} lang={locale.code} dir={locale.dir} selected={locale.code === props.state.locale}>\n {locale.nativeName}\n </option>\n )}</For>\n </select>\n </span>\n </label>\n );\n}\n\nfunction FlagLocaleMenu(props: LocaleMenuProps) {\n let details: HTMLDetailsElement | undefined;\n let trigger: HTMLElement | undefined;\n const uid = createUniqueId();\n const registry = () => registryOf(props);\n const countries = () => [...new Set(registry().LOCALES.map((entry) => flagCountryFor(entry.code, registry())))];\n const current = () => registry().LOCALES.find((entry) => entry.code === props.state.locale);\n const close = () => { if (details) details.open = false; };\n const onKeyDown: JSX.EventHandler<HTMLDetailsElement, KeyboardEvent> = (event) => {\n if (event.key !== \"Escape\" || !details?.open) return;\n event.preventDefault();\n close();\n trigger?.focus();\n };\n const triggerLabel = () => {\n const name = current()?.nativeName;\n return name ? `${props.messages.localeLabel}: ${name}` : props.messages.localeLabel;\n };\n return (\n <details ref={details} class=\"site-locale-flag\" onKeyDown={onKeyDown}>\n <summary ref={trigger} class=\"site-locale-flag__trigger\" aria-label={triggerLabel()} title={props.messages.localeLabel}>\n <FlagSprite countries={countries()} uid={uid} />\n <Flag locale={props.state.locale} class=\"site-locale-flag__svg\" registry={registry()} uid={uid} />\n </summary>\n <ul class=\"site-locale-flag__list\" role=\"list\">\n <For each={registry().LOCALES}>{(entry) => (\n <li>\n <a\n class=\"site-locale-flag__option\"\n href={props.state.hrefForLocale(entry.code as SiteLocale)}\n lang={entry.code}\n hreflang={entry.code}\n dir={entry.dir}\n aria-current={entry.code === props.state.locale ? \"true\" : undefined}\n onClick={(event) => {\n if (!props.onLocaleChange) return;\n event.preventDefault();\n close();\n props.onLocaleChange(entry.code as SiteLocale, props.state.hrefForLocale(entry.code as SiteLocale));\n }}\n >\n <Flag locale={entry.code} class=\"site-locale-flag__svg\" registry={registry()} uid={uid} />\n <span>{entry.nativeName}</span>\n </a>\n </li>\n )}</For>\n </ul>\n </details>\n );\n}\n\nexport function LocaleMenu(props: LocaleMenuProps) {\n return props.variant === \"flag\" ? <FlagLocaleMenu {...props} /> : <SelectLocaleMenu {...props} />;\n}\n","import { Button, Icon, IconButton } from \"@devslab/dds-solid\";\nimport { For, Show, createMemo, createSignal, onMount, type JSX } from \"solid-js\";\n\nimport { LocaleMenu, type LocaleMenuProps, type LocaleMenuVariant } from \"./locale-menu\";\nimport { FAMILY_LOCALES, type LocaleRegistry, type SiteLocale } from \"../core/locales.mjs\";\nimport type { LocaleState, SiteBrand, SiteLink, SiteMessages, ThemePreference } from \"./types\";\n\nexport type { LocaleMenuProps };\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 /**\n * The language picker's state. Omit it and no picker is rendered — a\n * single-language product (FM덴탈서비스 is Korean-only) has nothing to pick,\n * and a picker with one entry reads as broken. Same contract as the\n * footer's `locale`.\n */\n locale?: LocaleState;\n messages: SiteMessages;\n theme?: Omit<ThemeToggleProps, \"messages\">;\n onLocaleChange?: LocaleMenuProps[\"onLocaleChange\"];\n localeVariant?: LocaleMenuVariant;\n /**\n * The languages the picker offers. Defaults to the family's fourteen;\n * pass the registry from `defineLocaleRegistry` if this product sells in\n * languages the family does not carry.\n */\n localeRegistry?: LocaleRegistry<string>;\n actions?: JSX.Element;\n}\n\n/** The emphasis class a `SiteLink` asks for, or none. */\nconst linkClass = (item: SiteLink) => (item.emphasis ? \"site-link--emphasis\" : undefined);\n\nexport function SiteHeader(props: SiteHeaderProps) {\n const [menuOpen, setMenuOpen] = createSignal(false);\n // brand={{ logo: <Mark /> }} compiles to a getter that rebuilds the logo on\n // every read; read it once (D-027).\n const brand = createMemo(() => props.brand);\n // The narrow-screen menu closes the way a menu is expected to. Escape closes\n // it and puts focus back on the button that opened it — unless a control\n // inside already used that Escape (the flag menu closes itself first and\n // marks the event handled, so one press closes one layer). Following a link\n // inside it closes it too: a same-page anchor (\"#contact\") scrolls the page\n // but leaves the document in place, and without this the open menu kept\n // covering the section the reader just asked for. Buttons (the theme toggle)\n // leave it open — the reader has not gone anywhere — and so does a link that\n // opens a new tab or window. Handlers on elements inside the header run\n // before this one (the flag menu); a modal inside it (a DDS Dialog listens on\n // the document, after this) owns its own Escape, so an Escape from inside an\n // aria-modal element is left alone too.\n const onKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented || !menuOpen()) return;\n if ((event.target as Element | null)?.closest('[aria-modal=\"true\"]')) return;\n event.preventDefault();\n setMenuOpen(false);\n event.currentTarget.querySelector<HTMLButtonElement>(\".site-menu-button\")?.focus();\n };\n const closeOnLink: JSX.EventHandler<HTMLElement, MouseEvent> = (event) => {\n const link = (event.target as Element | null)?.closest(\"a\");\n if (!menuOpen() || !link) return;\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return;\n if (link.target && link.target !== \"_self\") return;\n setMenuOpen(false);\n };\n return (\n <header class=\"site-header\" onKeyDown={onKeyDown}>\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={brand().href} aria-label={brand().label}>{brand().logo}{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} onClick={closeOnLink}>\n <ul class=\"site-nav__list\"><For each={props.navigation}>{(item) => <li><a class={linkClass(item)} 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())} onClick={closeOnLink}>\n <Show when={props.locale}>{(locale) => (\n <LocaleMenu\n state={locale()}\n messages={props.messages}\n {...(props.localeVariant ? { variant: props.localeVariant } : {})}\n {...(props.localeRegistry ? { registry: props.localeRegistry } : {})}\n {...(props.onLocaleChange ? { onLocaleChange: props.onLocaleChange } : {})}\n />\n )}</Show>\n {props.theme && <ThemeToggle {...props.theme} messages={props.messages} />}\n {props.actions}\n </div>\n </div>\n </header>\n );\n}\n\n/**\n * The footer's language row, collapsed.\n *\n * It used to be every language laid out flat, which is a different length in\n * every product — ten for one, twenty for another — so the same footer carried\n * a different visual weight depending on how many languages the product sells\n * in. A `<details>` keeps all of them: the anchors are in the document whether\n * it is open or not, so a crawler still follows every locale, and it works with\n * no JavaScript. Same mechanism as the header's flag menu, including Escape\n * returning focus to the trigger.\n *\n * The trigger is the current language's own name rather than a translated word\n * for \"language\": it is the one label already meaningful to a reader who cannot\n * read the page, and it is what the flat row marked with `aria-current`.\n */\nfunction FooterLocaleMenu(props: {\n state: LocaleState;\n registry: LocaleRegistry<string>;\n label: string;\n /* Required key, optional value: the caller always passes it through, and\n `exactOptionalPropertyTypes` rejects an explicit undefined on an optional. */\n onSelect: ((locale: string) => void) | undefined;\n}) {\n let details: HTMLDetailsElement | undefined;\n let trigger: HTMLElement | undefined;\n const current = () => props.registry.LOCALES.find((entry) => entry.code === props.state.locale);\n const close = () => { if (details) details.open = false; };\n const onKeyDown: JSX.EventHandler<HTMLDetailsElement, KeyboardEvent> = (event) => {\n if (event.key !== \"Escape\" || !details?.open) return;\n event.preventDefault();\n close();\n trigger?.focus();\n };\n return (\n <nav class=\"site-footer__langs\" aria-label={props.label}>\n <details ref={details} class=\"site-footer__langs-menu\" onKeyDown={onKeyDown}>\n <summary ref={trigger} class=\"site-footer__langs-trigger\" aria-label={`${props.label}: ${current()?.nativeName ?? props.state.locale}`}>\n <span lang={current()?.code} dir={current()?.dir}>{current()?.nativeName ?? props.state.locale}</span>\n </summary>\n <ul class=\"site-footer__langs-list\" role=\"list\">\n <For each={props.registry.LOCALES}>{(entry) => (\n <li>\n <a\n href={props.state.hrefForLocale(entry.code as SiteLocale)}\n hreflang={entry.code}\n lang={entry.code}\n dir={entry.dir}\n aria-current={entry.code === props.state.locale ? \"page\" : undefined}\n onClick={() => props.onSelect?.(entry.code)}\n >{entry.nativeName}</a>\n </li>\n )}</For>\n </ul>\n </details>\n </nav>\n );\n}\n\nexport interface SiteFooterProps {\n brand: SiteBrand;\n links: SiteLink[];\n copyright: string;\n /** Wraps the copyright in a link — the family site, usually. */\n copyrightHref?: string;\n messages: SiteMessages;\n /**\n * The language row. Omit it and no row is rendered: a product whose header\n * already offers every language may not want a second copy of the list.\n */\n locale?: LocaleState;\n /** The languages the row lists. Defaults to the family's fourteen. */\n localeRegistry?: LocaleRegistry<string>;\n /**\n * Called with the code the reader picked, before the browser follows the\n * link — for a product that remembers the choice in a cookie.\n */\n onLocaleSelect?: (locale: string) => void;\n /** Links after the brand name, middot-separated: the family line, the operator. */\n family?: SiteLink[];\n /**\n * A block under the brand line: the business registration line and the\n * address a Korean commercial site must print, for one. Rendered as a block\n * (the brand line is an inline `<p>`, where an `<address>` cannot go), and\n * read once — JSX handed to the kit is built once per side (D-027, D-028).\n */\n details?: JSX.Element;\n /**\n * Names the link list: with it the list sits in `<nav aria-label>`, a\n * landmark a screen-reader user can jump to — name it differently from the\n * header's navigation. Without it the list stays a plain list.\n */\n linksLabel?: string;\n}\n\n/**\n * The family footer: a language row, then the brand beside its family links,\n * then the page's links and the copyright.\n *\n * Every product wrote this by hand. VisionLinq, BookLinq and TraceLinq each\n * carried their own copy with a comment saying the kit's footer \"takes only a\n * flat link list; extending it is a dds release this page would then wait on\" —\n * three copies and three notes naming the same missing release. Their CSS had\n * already converged byte-for-byte. This is that release.\n *\n * Additive: a caller that passes only brand/links/copyright/messages gets the\n * same single row it got before, plus its brand mark if it set one.\n */\nexport function SiteFooter(props: SiteFooterProps) {\n const registry = () => props.localeRegistry ?? (FAMILY_LOCALES as LocaleRegistry<string>);\n const brand = createMemo(() => props.brand);\n const details = createMemo(() => props.details);\n // Each of these is called in exactly one branch of its <Show>, so each\n // builds its nodes once.\n const brandLine = () => (\n <p class=\"site-footer__brand\">\n {brand().logo}\n {/* A wordmark passed as the logo comes with `name: \"\"`; no empty <strong>. */}\n <Show when={brand().name}>{(name) => <strong>{name()}</strong>}</Show>\n <For each={props.family ?? []}>{(item) => <>\n <span aria-hidden=\"true\">·</span>\n <a class={linkClass(item)} href={item.href}>{item.label}</a>\n </>}</For>\n </p>\n );\n const linkList = () => (\n <ul class=\"site-footer__links\">\n <For each={props.links}>{(item) => <li><a class={linkClass(item)} href={item.href}>{item.label}</a></li>}</For>\n {/*\n A copyright like \"© 2026 DevsLab\" mixes neutral, digit and Latin\n runs, which the bidi algorithm reorders on an RTL page into\n \"DevsLab 2026 ©\". <bdi> isolates it so it reads as written in\n every direction.\n */}\n <li><Show when={props.copyrightHref} fallback={<bdi>{props.copyright}</bdi>}>\n {(href) => <a href={href()}><bdi>{props.copyright}</bdi></a>}\n </Show></li>\n </ul>\n );\n return (\n <footer class=\"site-footer\" aria-label={props.messages.footerLabel}>\n <div class=\"site-footer__inner\">\n <Show when={props.locale}>{(locale) => (\n <FooterLocaleMenu\n state={locale()}\n registry={registry()}\n label={props.messages.localeLabel}\n onSelect={props.onLocaleSelect}\n />\n )}</Show>\n <div class=\"site-footer__row\">\n <Show when={details()} fallback={brandLine()}>{(content) => (\n <div class=\"site-footer__identity\">\n {brandLine()}\n <div class=\"site-footer__details\">{content()}</div>\n </div>\n )}</Show>\n <Show when={props.linksLabel} fallback={linkList()}>{(label) => (\n <nav class=\"site-footer__nav\" aria-label={label()}>{linkList()}</nav>\n )}</Show>\n </div>\n </div>\n </footer>\n );\n}\n","import { Button, type ButtonTone } from \"@devslab/dds-solid\";\nimport { createMemo, 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 /** \"bleed\" removes the shell's max-width/inset from <main> — for pages composed from\n * full-bleed section primitives, each of which carries its own inner width. Default \"shell\". */\n mainWidth?: \"shell\" | \"bleed\";\n}\n\nexport function MarketingShell(props: MarketingShellProps) {\n const mainClass = () => (props.mainWidth === \"bleed\" ? \"site-main site-main--bleed\" : \"site-main\");\n // Read header and footer once, here, before any element of the shell exists.\n // `header={{ … }}` compiles to a getter, so spreading `props.header` straight\n // into SiteHeader re-evaluated the literal on every prop read — and any JSX\n // built eagerly inside it (an `actions` anchor, a logo) was built again each\n // time, consuming hydration keys. The server and the client read a different\n // number of times, so from the first extra read every key after it was off,\n // and the client rebuilt the whole header from templates: the flag sprite\n // came back empty (AskLinq, site-kit 0.12.0). A memo evaluates the literal\n // exactly once per side, at the same point in the tree.\n const header = createMemo(() => props.header);\n const footer = createMemo(() => props.footer);\n return <div class=\"site-shell\"><SiteHeader {...header()} /><main id=\"main-content\" class={mainClass()} tabIndex={-1}>{props.children}</main><SiteFooter {...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 // Read children once. `<StatusBanner><ul>…</ul></StatusBanner>` compiles to a\n // getter, and checking it for truthiness then inserting it read it twice:\n // the first read built a list (and every <li> under it) that was thrown\n // away, each with a hydration key the server never wrote. Solid's dev build\n // throws `Hydration Mismatch` for those keys, so a consumer's status page\n // fell to its error boundary in `vite dev` (BookLinq, site-kit 0.12.1). One\n // memo, evaluated at the same point in the tree on both sides, is the\n // check and the insert (D-027, D-028).\n const children = createMemo(() => props.children);\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>{children() && <div>{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","import { For, Show, type JSX } from \"solid-js\";\n\n/**\n * Section primitives — the rhythm of a family landing page.\n *\n * Extracted from VisionLinq's landing (apps/web/src/components/landing/\n * sections.tsx + styles/landing.css) so AskLinq's web-next can compose the\n * same page shape. Stateless; every class lives in site-sections.css;\n * colour comes from --dds-* tokens, so light/dark needs no rule here.\n *\n * Two glyph systems, deliberately different (owner, 2026-09-05):\n * - SectionHead.index — the SECTION's number: mono, zero-padded \"01\".\n * - StepFlow markers — a SEQUENCE inside a section: ring numerals \"1\".\n * A step never renders \"01\"; that would put two levels in one voice.\n */\n\nexport interface SectionBlockProps {\n id: string;\n labelledBy: string;\n /** `band` steps the background down one token (bg-subtle) — a decision, not a tint. */\n tone?: \"default\" | \"band\";\n children: JSX.Element;\n}\n\nexport function SectionBlock(props: SectionBlockProps) {\n return (\n <section class=\"site-section\" id={props.id} data-tone={props.tone ?? \"default\"} aria-labelledby={props.labelledBy}>\n <div class=\"site-section__shell\">{props.children}</div>\n </section>\n );\n}\n\nexport interface SectionHeadProps {\n /** Mono, zero-padded index (\"01\"). Decorative — hidden from assistive tech. */\n index: string;\n title: string;\n titleId: string;\n lede?: string;\n}\n\nexport function SectionHead(props: SectionHeadProps) {\n return (\n <header class=\"site-section__head\">\n <p class=\"site-section__index\" aria-hidden=\"true\">{props.index}</p>\n <h2 id={props.titleId}>{props.title}</h2>\n <Show when={props.lede}>{(lede) => <p class=\"site-section__lede\">{lede()}</p>}</Show>\n </header>\n );\n}\n\nexport interface HeroSplitProps {\n id?: string;\n eyebrow?: string;\n title: string;\n titleId: string;\n lede: string;\n actions: JSX.Element;\n /** The product's own scene. Its height is the consumer's decision — fix it there if the scene swaps panels. */\n aside: JSX.Element;\n asideLabel: string;\n}\n\nexport function HeroSplit(props: HeroSplitProps) {\n return (\n <section id={props.id} class=\"site-hero\" aria-labelledby={props.titleId}>\n <div class=\"site-hero__shell\">\n <div class=\"site-hero__copy\">\n <Show when={props.eyebrow}>{(eyebrow) => <p class=\"site-hero__eyebrow\">{eyebrow()}</p>}</Show>\n <h1 id={props.titleId}>{props.title}</h1>\n <p class=\"site-hero__lede\">{props.lede}</p>\n <div class=\"site-hero__actions\">{props.actions}</div>\n </div>\n <figure class=\"site-hero__aside\" aria-label={props.asideLabel}>{props.aside}</figure>\n </div>\n </section>\n );\n}\n\nexport interface StepFlowStep { title: string; body: string }\n\nexport interface StepFlowProps {\n steps: ReadonlyArray<StepFlowStep>;\n /** Accessible name for the list — pass the section title's words, localized. */\n label?: string;\n}\n\nexport function StepFlow(props: StepFlowProps) {\n return (\n <ol class=\"site-steps\" aria-label={props.label}>\n <For each={props.steps}>{(step, index) => (\n <li class=\"site-steps__step\">\n <span class=\"site-steps__marker\" aria-hidden=\"true\">{index() + 1}</span>\n <h3>{step.title}</h3>\n <p>{step.body}</p>\n </li>\n )}</For>\n </ol>\n );\n}\n\nexport interface FeatureRow { title: string; body: string; badge?: string }\n\nexport interface FeatureRowsProps {\n rows: ReadonlyArray<FeatureRow>;\n label?: string;\n}\n\n/** Hairline rows — a card grid is the thing this primitive exists to replace. */\nexport function FeatureRows(props: FeatureRowsProps) {\n return (\n <ul class=\"site-rows\" aria-label={props.label}>\n <For each={props.rows}>{(row) => (\n <li class=\"site-rows__row\">\n <div class=\"site-rows__title\">\n <h3>{row.title}</h3>\n <Show when={row.badge}>{(badge) => <span class=\"dds-badge dds-badge--brand\">{badge()}</span>}</Show>\n </div>\n <p class=\"site-rows__body\">{row.body}</p>\n </li>\n )}</For>\n </ul>\n );\n}\n\nexport interface PricingNoteProps {\n children: JSX.Element;\n action: JSX.Element;\n}\n\n/** One paragraph block, one action. No table, no tiers — a note, not a pricing page. */\nexport function PricingNote(props: PricingNoteProps) {\n return (\n <div class=\"site-pricing\">\n <div class=\"site-pricing__note\">{props.children}</div>\n <div class=\"site-pricing__action\">{props.action}</div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"solid.js","names":["For","createUniqueId","JSX","FAMILY_LOCALES","LocaleRegistry","SiteLocale","FLAG_VIEWBOX","flagCountryFor","flagBodiesNow","loadFlagBodies","FlagBodies","LocaleState","SiteMessages","LocaleMenuVariant","LocaleMenuProps","state","messages","variant","onLocaleChange","locale","href","registry","scopeFlagIds","body","uid","ids","matchAll","map","match","length","scoped","id","suffixed","replaceAll","registryOf","props","symbolId","country","spriteMarkup","countries","bodies","flag","RangeError","viewBox","join","FlagSprite","_el$","_$getNextElement","_tmpl$","_$effect","_$setProperty","_el$2","_$use","element","childElementCount","then","loaded","innerHTML","Flag","class","_el$3","_tmpl$2","_el$4","firstChild","_$setAttribute","_p$","_v$","_v$2","e","t","undefined","SelectLocaleMenu","_el$5","_tmpl$3","_el$6","_el$7","nextSibling","_el$8","_$insert","localeLabel","addEventListener","event","currentTarget","value","hrefForLocale","window","location","assign","_$createComponent","each","LOCALES","children","_el$9","_tmpl$4","nativeName","_v$3","code","_v$4","dir","_v$5","a","FlagLocaleMenu","details","HTMLDetailsElement","trigger","HTMLElement","Set","entry","current","find","close","open","onKeyDown","EventHandler","KeyboardEvent","key","preventDefault","focus","triggerLabel","name","_el$0","_tmpl$5","_el$1","_el$10","_el$11","_co$","_$getNextMarker","_el$12","_el$13","_co$2","_el$14","$$keydown","_ref$","_ref$2","_el$15","_tmpl$6","_el$16","_el$18","_el$19","_co$3","_el$17","$$click","_v$8","_v$9","_v$0","_v$1","_v$10","o","i","_$runHydrationEvents","_v$6","_v$7","LocaleMenu","_$delegateEvents","Button","Dialog","Icon","IconButton","Switch","Show","createSignal","onCleanup","onMount","JSX","ConsentManager","ConsentMessages","ConsentBannerProps","controller","messages","learnMoreHref","privacyHref","POLICY_SECTION_HREF","ConsentBanner","props","test","RangeError","JSON","stringify","mounted","setMounted","undecided","setUndecided","dismissed","setDismissed","settingsOpen","setSettingsOpen","analytics","setAnalytics","announcement","setAnnouncement","sync","needsDecision","openSettings","analyticsGranted","start","subscribe","event","type","keepFocus","setTimeout","document","activeElement","body","getElementById","focus","preventScroll","decide","choice","queueMicrotask","saved","acceptAll","rejectAll","dismiss","onBarKeyDown","EventHandler","HTMLElement","KeyboardEvent","key","defaultPrevented","preventDefault","reserveSpace","element","ResizeObserver","root","documentElement","observer","style","setProperty","offsetHeight","observe","disconnect","removeProperty","_$createComponent","when","children","_$memo","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$8","_el$9","_co$","_$getNextMarker","_el$6","_el$7","_el$0","_el$1","_el$10","_co$2","_el$11","_el$12","_co$3","_el$13","_el$14","_co$4","_el$15","_el$16","_co$5","$$keydown","_$use","_$insert","title","learnMore","tone","onClick","settings","aria-label","name","size","_$effect","_p$","_v$","regionLabel","_v$2","e","_$setAttribute","t","undefined","_$runHydrationEvents","id","open","onOpenChange","settingsTitle","description","settingsIntro","actions","cancel","save","close","_el$17","_tmpl$2","_el$18","_el$19","_el$20","_el$21","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_co$6","necessaryTitle","necessaryBody","necessaryStatus","analyticsTitle","analyticsBody","checked","onCheckedChange","label","_el$32","_tmpl$5","analyticsSwitch","_el$29","_tmpl$3","_el$30","privacyLink","_el$31","_tmpl$4","ConsentSettingsButtonProps","Element","class","ConsentSettingsButton","_el$33","_tmpl$6","$$click","_$className","_$delegateEvents","Button","Icon","IconButton","For","Show","createMemo","createSignal","onMount","JSX","LocaleMenu","LocaleMenuProps","LocaleMenuVariant","ConsentSettingsButton","ConsentManager","FAMILY_LOCALES","LocaleRegistry","SiteLocale","LocaleState","SiteBrand","SiteLink","SiteMessages","ThemePreference","ThemeToggleProps","messages","value","defaultValue","onValueChange","theme","storageKey","ThemeToggle","props","order","internal","setInternal","resolved","setResolved","nextTheme","nextLabel","themeDark","themeLight","apply","matchMedia","matches","document","documentElement","dataset","themePreference","update","undefined","localStorage","setItem","stored","getItem","includes","_$createComponent","tone","aria-label","themeLabel","title","onClick","children","name","data-icon","size","SiteHeaderProps","brand","navigation","locale","Omit","onLocaleChange","localeVariant","localeRegistry","actions","Element","linkClass","item","emphasis","SiteHeader","menuOpen","setMenuOpen","onKeyDown","EventHandler","HTMLElement","KeyboardEvent","event","key","defaultPrevented","target","closest","preventDefault","currentTarget","querySelector","HTMLButtonElement","focus","closeOnLink","MouseEvent","link","ctrlKey","metaKey","shiftKey","altKey","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_el$5","_el$6","_co$","_$getNextMarker","_el$7","_el$8","_co$2","_el$16","_el$17","_co$6","_el$9","_el$0","_el$1","_el$10","_el$11","_co$3","_el$12","_el$13","_co$4","_el$14","_el$15","_co$5","$$keydown","_$insert","skipToContent","logo","aria-expanded","open","_$memo","menuClose","$$click","each","_el$18","_tmpl$2","_el$19","label","_$effect","_p$","_v$6","_v$7","href","_v$8","external","_v$9","e","_$className","t","_$setAttribute","a","o","when","_$mergeProps","state","variant","registry","_c$","_v$","_v$2","_v$3","String","_v$4","navigationLabel","_v$5","i","_$runHydrationEvents","FooterLocaleMenu","onSelect","details","HTMLDetailsElement","trigger","current","LOCALES","find","entry","code","close","_el$20","_tmpl$3","_el$21","_el$22","_el$23","_el$24","_ref$","_$use","_ref$2","nativeName","_el$25","_el$26","_v$12","hrefForLocale","_v$13","_v$14","_v$15","dir","_v$16","_v$0","_v$1","_v$10","_v$11","SiteFooterProps","links","copyright","copyrightHref","onLocaleSelect","family","linksLabel","consentSettings","controller","SiteFooter","brandLine","_el$27","_tmpl$4","_el$28","_el$29","_co$7","_el$30","_el$31","_co$8","_el$32","_el$33","_co$9","_el$34","_tmpl$5","_tmpl$6","_el$36","_tmpl$7","_v$17","_v$18","linkList","_el$37","_tmpl$8","_el$39","_el$40","_co$0","_el$41","_el$42","_co$1","_el$38","_el$43","_el$44","_v$19","_v$20","settings","_el$45","_tmpl$9","fallback","_el$46","_tmpl$0","_el$47","_tmpl$1","_el$48","_el$49","_tmpl$10","_el$50","_el$56","_el$57","_co$12","_el$51","_el$52","_el$53","_co$10","_el$54","_el$55","_co$11","localeLabel","content","_el$58","_tmpl$11","_el$60","_el$61","_co$13","_el$59","_el$62","_tmpl$12","footerLabel","_$delegateEvents","Button","ButtonTone","createMemo","JSX","SiteFooter","SiteHeader","SiteFooterProps","SiteHeaderProps","SiteMessages","MarketingShellProps","header","footer","messages","children","Element","mainWidth","MarketingShell","props","mainClass","_el$","_$getNextElement","_tmpl$","_el$3","firstChild","_el$4","_co$","_$getNextMarker","nextSibling","_el$2","_el$5","_el$6","_co$2","_$insert","_$createComponent","_$mergeProps","_$effect","_$className","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","_$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","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","For","Show","JSX","SectionBlockProps","id","labelledBy","tone","children","Element","SectionBlock","props","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$insert","_$effect","_p$","_v$","_v$2","_v$3","e","_$setAttribute","t","a","undefined","SectionHeadProps","index","title","titleId","lede","SectionHead","_el$3","_tmpl$2","_el$4","_el$5","nextSibling","_el$6","_el$7","_co$","_$getNextMarker","_$createComponent","when","_el$8","_tmpl$3","HeroSplitProps","eyebrow","actions","aside","asideLabel","HeroSplit","_el$9","_tmpl$4","_el$0","_el$1","_el$13","_el$14","_co$2","_el$10","_el$11","_el$12","_el$15","_el$16","_tmpl$5","_v$4","_v$5","_v$6","_v$7","o","StepFlowStep","body","StepFlowProps","steps","ReadonlyArray","label","StepFlow","_el$17","_tmpl$6","each","step","_el$18","_tmpl$7","_el$19","_el$20","_el$21","FeatureRow","badge","FeatureRowsProps","rows","FeatureRows","_el$22","_tmpl$8","row","_el$23","_tmpl$9","_el$24","_el$25","_el$26","_el$27","_co$3","_el$28","_el$29","_tmpl$0","PricingNoteProps","action","PricingNote","_el$30","_tmpl$1","_el$31","_el$32"],"sources":["../src/core/locales.mjs","../src/core/flag-countries.mjs","../src/solid/flag-bodies.ts","../src/solid/locale-menu.tsx","../src/solid/consent.tsx","../src/solid/chrome.tsx","../src/solid/layouts.tsx","../src/solid/request-access.tsx","../src/solid/oss-product-mark.tsx","../src/solid/sections.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 FAMILY_ALIASES = Object.freeze([[\"zh\", \"zh-TW\"], [\"pt\", \"pt-BR\"]]);\n\n/**\n * The languages a site actually sells in.\n *\n * The list above is the family's — what devslab.kr markets in, and the\n * floor every product gets for free. It is not every product's list.\n * BookLinq sells to salons in India and its assistant already answers in\n * Tamil, Telugu, Bengali, Marathi, Gujarati and Kannada. Those are not\n * family languages and are not going to become family languages: putting\n * them in the list above would hand AskLinq and devslab.kr six entries\n * they have no copy for. But a BookLinq page that cannot render them is a\n * page that lies about what the product does.\n *\n * So the family owns the mechanism and the product names its own nouns. A\n * registry is the family list plus whatever a product adds, and every\n * locale-aware helper here can be bound to one. The bare exports at the\n * bottom are the family registry, so a consumer that never calls this\n * sees exactly what it saw before.\n *\n * An extra locale carries the same fields as a family one plus\n * `flagCountry`, naming a flag this package already vendors (`FLAG_COUNTRY`\n * lists them). Products do not ship SVG: flag data is licensed, generated\n * and security-scanned here, and seven Indian languages share one flag\n * anyway.\n *\n * @param {{ only?: ReadonlyArray<string>, extra?: ReadonlyArray<object>, aliases?: ReadonlyArray<[string, string]> }} [options]\n */\nexport function defineLocaleRegistry(options = {}) {\n const extra = options.extra ?? [];\n // `only` — the product sells in a subset of the family's languages. The\n // subset keeps the family's order (the picker order is a family decision)\n // and is applied before `extra`, so a product may still add its own.\n let family = LOCALES;\n if (options.only !== undefined) {\n if (options.only.length === 0) throw new RangeError(\"`only` needs at least one locale — a registry with none is a bug, not a choice\");\n const wanted = new Set(options.only);\n for (const code of wanted) {\n if (!LOCALES.some((locale) => locale.code === code)) throw new RangeError(`${code} is not a family locale — \\`only\\` selects from the family list; use \\`extra\\` for a product's own`);\n }\n family = Object.freeze(LOCALES.filter((locale) => wanted.has(locale.code)));\n }\n const seen = new Set(family.map(({ code }) => code));\n for (const locale of extra) {\n if (!locale?.code) throw new TypeError(\"every extra locale needs a code\");\n if (LOCALES.some((known) => known.code === locale.code)) {\n throw new RangeError(`${locale.code} is already a family locale — remove it from \\`extra\\``);\n }\n if (seen.has(locale.code)) {\n throw new RangeError(`${locale.code} appears twice in \\`extra\\``);\n }\n if (!locale.nativeName) throw new TypeError(`${locale.code} needs a nativeName — it is what the picker shows`);\n if (locale.dir !== \"ltr\" && locale.dir !== \"rtl\") throw new RangeError(`${locale.code} needs dir \"ltr\" or \"rtl\"`);\n seen.add(locale.code);\n }\n\n const locales = Object.freeze([...family, ...extra.map((locale) => Object.freeze({ ...locale }))]);\n const byLower = new Map(locales.map((locale) => [locale.code.toLowerCase(), locale]));\n const aliases = new Map([...FAMILY_ALIASES, ...(options.aliases ?? [])]);\n\n 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)) { const target = aliases.get(base); return byLower.has(target.toLowerCase()) ? target : undefined; }\n return byLower.get(base)?.code;\n }\n\n function definitionFor(locale) {\n const canonical = canonicalLocale(locale);\n if (!canonical) throw new RangeError(`Unsupported locale: ${locale}`);\n return byLower.get(canonical.toLowerCase());\n }\n\n function localeAttributes(locale) {\n const definition = definitionFor(locale);\n // `dir` comes off the definition rather than a test for Arabic. The\n // old form read `canonical === \"ar\" ? \"rtl\" : \"ltr\"`, which was right\n // only while Arabic stayed the family's one RTL language — a product\n // adding Urdu or Hebrew would have had it rendered left-to-right with\n // every test still green.\n return { lang: definition.code, dir: definition.dir };\n }\n\n 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, canonicalLocale)[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\n return Object.freeze({ LOCALES: locales, canonicalLocale, localeAttributes, resolveLocale, definitionFor });\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, canonicalLocale) {\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\n/** The family registry — what every helper in this package uses by default. */\nexport const FAMILY_LOCALES = defineLocaleRegistry();\n\nexport const { canonicalLocale, localeAttributes, resolveLocale } = FAMILY_LOCALES;\n","/* Generated by scripts/build-flags.mjs — do not edit. Source: flags/*.svg (flag-icons, MIT). Copyright (c) 2013 Panayiotis Lipiridis */\nexport const FLAG_COUNTRY = Object.freeze({\n \"ko\": \"kr\",\n \"en\": \"us\",\n \"ja\": \"jp\",\n \"zh-HK\": \"hk\",\n \"zh-TW\": \"tw\",\n \"hi\": \"in\",\n \"vi\": \"vn\",\n \"id\": \"id\",\n \"th\": \"th\",\n \"pt-BR\": \"br\",\n \"fr\": \"fr\",\n \"de\": \"de\",\n \"es\": \"es\",\n \"ar\": \"sa\"\n});\n\n/** Every vendored flag is 4:3 on this box, so any <use> can point at any symbol. */\nexport const FLAG_VIEWBOX = \"0 0 640 480\";\n\nconst VENDORED = new Set(Object.values(FLAG_COUNTRY));\n\n/**\n * The country whose flag stands for a locale — a family locale through\n * FLAG_COUNTRY, a product's own through its registry's `flagCountry`.\n * Same lookup order and errors as `flagFor`, without loading a body.\n *\n * @param {string} locale\n * @param {{ LOCALES?: ReadonlyArray<{ code: string, flagCountry?: string }> }} [registry]\n * @returns {string}\n */\nexport function flagCountryFor(locale, registry) {\n const country = FLAG_COUNTRY[locale];\n if (country) return country;\n const extra = registry?.LOCALES?.find((definition) => definition.code === locale);\n if (extra?.flagCountry) {\n if (VENDORED.has(extra.flagCountry)) return extra.flagCountry;\n throw new RangeError(`No vendored flag for country: ${extra.flagCountry} (locale ${locale})`);\n }\n throw new RangeError(`No flag for locale: ${locale}`);\n}\n","/**\n * How the Solid menu reaches the flag artwork — browser build.\n *\n * The fourteen vendored SVGs are ~115 KB. A page rendered on the server\n * already carries them in its HTML, and hydration adopts that markup, so the\n * browser bundle must not import them statically: it used to, and every\n * product's main client chunk grew by the whole set just to render a header.\n *\n * `flagBodiesNow` answers synchronously only in the build that has the bodies\n * at hand (flag-bodies.server.ts, aliased in by vite.server.config.ts and\n * vitest.ssr.config.ts). Here it answers undefined, and `loadFlagBodies` is a\n * dynamic import Vite emits as its own chunk — fetched only when a flag menu\n * renders without server HTML.\n */\nimport type { LocaleFlag } from \"../core/flag-bodies.mjs\";\n\nexport type FlagBodies = Readonly<Record<string, LocaleFlag>>;\n\nexport const flagBodiesNow = (): FlagBodies | undefined => undefined;\n\nexport const loadFlagBodies = (): Promise<FlagBodies> =>\n import(\"../core/flag-bodies.mjs\").then((module) => module.FLAGS_BY_COUNTRY);\n","import { For, createUniqueId, type JSX } from \"solid-js\";\n\nimport { FAMILY_LOCALES, type LocaleRegistry, type SiteLocale } from \"../core/locales.mjs\";\nimport { FLAG_VIEWBOX, flagCountryFor } from \"../core/flag-countries.mjs\";\nimport { flagBodiesNow, loadFlagBodies, type FlagBodies } from \"./flag-bodies\";\nimport type { LocaleState, SiteMessages } from \"./types\";\n\nexport type LocaleMenuVariant = \"select\" | \"flag\";\n\nexport interface LocaleMenuProps {\n state: LocaleState;\n messages: SiteMessages;\n variant?: LocaleMenuVariant;\n onLocaleChange?: (locale: SiteLocale, href: string) => void;\n /**\n * The languages to offer. Defaults to the family's fourteen; a product\n * that added its own passes the registry it built with\n * `defineLocaleRegistry`.\n */\n registry?: LocaleRegistry<string>;\n}\n\nfunction scopeFlagIds(body: string, uid: string): string {\n const ids = [...body.matchAll(/\\bid=\"([^\"]+)\"/g)].map((match) => match[1]!);\n if (ids.length === 0) return body;\n let scoped = body;\n for (const id of ids) {\n const suffixed = `${id}-${uid}`;\n scoped = scoped\n .replaceAll(`id=\"${id}\"`, `id=\"${suffixed}\"`)\n .replaceAll(`href=\"#${id}\"`, `href=\"#${suffixed}\"`)\n .replaceAll(`url(#${id})`, `url(#${suffixed})`);\n }\n return scoped;\n}\n\nconst registryOf = (props: LocaleMenuProps) => props.registry ?? (FAMILY_LOCALES as LocaleRegistry<string>);\n\nconst symbolId = (country: string, uid: string) => `site-flag-${country}-${uid}`;\n\nfunction spriteMarkup(countries: readonly string[], bodies: FlagBodies, uid: string): string {\n return countries.map((country) => {\n const flag = bodies[country];\n if (!flag) throw new RangeError(`No vendored flag for country: ${country}`);\n return `<symbol id=\"${symbolId(country, uid)}\" viewBox=\"${flag.viewBox}\">${scopeFlagIds(flag.body, uid)}</symbol>`;\n }).join(\"\");\n}\n\n/**\n * One copy of each flag the menu shows, as <symbol>s the flags <use>.\n *\n * The trigger and the current row used to inline the same body twice, and\n * the browser bundle carried every body so a client render could write\n * them. With a sprite, a locale change on the client only swaps an href,\n * so after hydration the browser never needs the artwork: the server build\n * writes it (flagBodiesNow), hydration adopts it untouched, and only a\n * render with no server HTML — a client-only app, a jsdom test — fetches\n * the bodies through loadFlagBodies, which the browser build emits as its\n * own chunk. Zero-sized rather than display:none so the referenced clip\n * paths and gradients still resolve.\n *\n * \"No server HTML\" is decided by looking at the element, not at whether\n * hydration is running: a hydration that drifted upstream recreates this\n * element from the template, empty, while the hydration context is still\n * set. Trusting the context left the first consumer with a blank flag\n * box; an empty sprite loads its bodies whatever the reason it is empty.\n */\nfunction FlagSprite(props: { countries: readonly string[]; uid: string }) {\n const bodies = flagBodiesNow();\n if (bodies) {\n return <svg class=\"site-flag-sprite\" aria-hidden=\"true\" innerHTML={spriteMarkup(props.countries, bodies, props.uid)} />;\n }\n return (\n <svg\n class=\"site-flag-sprite\"\n aria-hidden=\"true\"\n ref={(element) => {\n if (element.childElementCount > 0) return; // adopted from server HTML: the sprite is already drawn\n void loadFlagBodies().then((loaded) => { element.innerHTML = spriteMarkup(props.countries, loaded, props.uid); });\n }}\n />\n );\n}\n\nfunction Flag(props: { locale: string; class?: string; registry: LocaleRegistry<string>; uid: string }) {\n const country = () => flagCountryFor(props.locale, props.registry);\n return (\n <svg class={props.class} viewBox={FLAG_VIEWBOX} aria-hidden=\"true\">\n <use href={`#${symbolId(country(), props.uid)}`} />\n </svg>\n );\n}\n\nfunction SelectLocaleMenu(props: LocaleMenuProps) {\n const registry = () => registryOf(props);\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 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 {/*\n `selected` on the option, not `value` on the select.\n <select> has no `value` content attribute — it exists only as a\n DOM property — so under SSR, where the markup is a string,\n `value={...}` serialised to an attribute the browser ignores and\n every visitor got option[0] as their \"current\" language\n regardless of the page they were reading. Touching the control\n then switched them to that first language. `selected` is a real\n content attribute and survives the trip through HTML.\n */}\n <For each={registry().LOCALES}>{(locale) => (\n <option value={locale.code} lang={locale.code} dir={locale.dir} selected={locale.code === props.state.locale}>\n {locale.nativeName}\n </option>\n )}</For>\n </select>\n </span>\n </label>\n );\n}\n\nfunction FlagLocaleMenu(props: LocaleMenuProps) {\n let details: HTMLDetailsElement | undefined;\n let trigger: HTMLElement | undefined;\n const uid = createUniqueId();\n const registry = () => registryOf(props);\n const countries = () => [...new Set(registry().LOCALES.map((entry) => flagCountryFor(entry.code, registry())))];\n const current = () => registry().LOCALES.find((entry) => entry.code === props.state.locale);\n const close = () => { if (details) details.open = false; };\n const onKeyDown: JSX.EventHandler<HTMLDetailsElement, KeyboardEvent> = (event) => {\n if (event.key !== \"Escape\" || !details?.open) return;\n event.preventDefault();\n close();\n trigger?.focus();\n };\n const triggerLabel = () => {\n const name = current()?.nativeName;\n return name ? `${props.messages.localeLabel}: ${name}` : props.messages.localeLabel;\n };\n return (\n <details ref={details} class=\"site-locale-flag\" onKeyDown={onKeyDown}>\n <summary ref={trigger} class=\"site-locale-flag__trigger\" aria-label={triggerLabel()} title={props.messages.localeLabel}>\n <FlagSprite countries={countries()} uid={uid} />\n <Flag locale={props.state.locale} class=\"site-locale-flag__svg\" registry={registry()} uid={uid} />\n </summary>\n <ul class=\"site-locale-flag__list\" role=\"list\">\n <For each={registry().LOCALES}>{(entry) => (\n <li>\n <a\n class=\"site-locale-flag__option\"\n href={props.state.hrefForLocale(entry.code as SiteLocale)}\n lang={entry.code}\n hreflang={entry.code}\n dir={entry.dir}\n aria-current={entry.code === props.state.locale ? \"true\" : undefined}\n onClick={(event) => {\n if (!props.onLocaleChange) return;\n event.preventDefault();\n close();\n props.onLocaleChange(entry.code as SiteLocale, props.state.hrefForLocale(entry.code as SiteLocale));\n }}\n >\n <Flag locale={entry.code} class=\"site-locale-flag__svg\" registry={registry()} uid={uid} />\n <span>{entry.nativeName}</span>\n </a>\n </li>\n )}</For>\n </ul>\n </details>\n );\n}\n\nexport function LocaleMenu(props: LocaleMenuProps) {\n return props.variant === \"flag\" ? <FlagLocaleMenu {...props} /> : <SelectLocaleMenu {...props} />;\n}\n","import { Button, Dialog, Icon, IconButton, Switch } from \"@devslab/dds-solid\";\nimport { Show, createSignal, onCleanup, onMount, type JSX } from \"solid-js\";\n\nimport type { ConsentManager, ConsentMessages } from \"../core/consent.mjs\";\n\nexport type { ConsentManager, ConsentMessages };\n\nexport interface ConsentBannerProps {\n /** The page's manager from createConsentManager. The banner calls its start(). */\n controller: ConsentManager;\n /** CONSENT_MESSAGES_KO / CONSENT_MESSAGES_EN, or the product's own strings. */\n messages: ConsentMessages;\n /**\n * The bar's \"자세히 보기\" / \"Learn more\": the privacy policy's section on analytics and its\n * overseas transfer, with its anchor (`/ko/privacy#analytics`). The bar itself is short, so that\n * section is where the visitor reads Google Analytics, the recipient, the transfer, the retention\n * and how to withdraw. Without a `#fragment` the banner throws RangeError.\n */\n learnMoreHref: string;\n /** The privacy policy page, linked from the settings dialog. */\n privacyHref: string;\n}\n\n/** A link with a non-empty `#fragment`: the policy section, not the top of the page. */\nconst POLICY_SECTION_HREF = /^[^#\\s]*#[^#\\s]+$/;\n\n/**\n * The consent bar and its settings dialog (D-034).\n *\n * Renders nothing on the server and nothing during hydration: the bar comes\n * in after mount, when the browser's own cookie is known. So it can never\n * disagree with the server's markup, and a page without JavaScript shows no\n * bar and loads no analytics.\n *\n * The bar's three choices are the same button, the same size: \"모두 허용\",\n * \"거부\", \"설정\". Closing it any other way (✕, Escape) is no decision —\n * nothing loads, and the next visit asks again. Its text is short; the\n * disclosure lives in the policy section `learnMoreHref` points at.\n */\nexport function ConsentBanner(props: ConsentBannerProps) {\n // Checked where the product renders it (on the server too), not left to a\n // link that quietly lands on the top of the policy.\n if (typeof props.learnMoreHref !== \"string\" || !POLICY_SECTION_HREF.test(props.learnMoreHref)) {\n throw new RangeError(`ConsentBanner: learnMoreHref must link to the privacy policy's analytics section with its #anchor (e.g. /privacy#analytics), got ${JSON.stringify(props.learnMoreHref)}`);\n }\n const [mounted, setMounted] = createSignal(false);\n const [undecided, setUndecided] = createSignal(false);\n const [dismissed, setDismissed] = createSignal(false);\n const [settingsOpen, setSettingsOpen] = createSignal(false);\n const [analytics, setAnalytics] = createSignal(false);\n const [announcement, setAnnouncement] = createSignal(\"\");\n\n const sync = () => {\n setUndecided(props.controller.needsDecision());\n setDismissed(props.controller.dismissed());\n };\n const openSettings = () => {\n setAnalytics(props.controller.analyticsGranted());\n setSettingsOpen(true);\n };\n onMount(() => {\n const controller = props.controller;\n controller.start();\n sync();\n onCleanup(controller.subscribe((event) => {\n if (event.type === \"open-settings\") openSettings();\n else sync();\n }));\n setMounted(true);\n });\n\n // The bar or the button that opened the dialog is gone after a choice; a\n // keyboard user whose focus went with it continues from the page's main\n // content (MarketingShell's <main> takes focus), not from the top of the\n // document. A focus the dialog handed back (the footer button) is left alone.\n const keepFocus = () => setTimeout(() => {\n if (document.activeElement && document.activeElement !== document.body) return;\n document.getElementById(\"main-content\")?.focus({ preventScroll: true });\n }, 0);\n const decide = (choice: () => unknown) => {\n choice();\n setSettingsOpen(false);\n // Cleared first so saving the same way twice is announced twice.\n setAnnouncement(\"\");\n queueMicrotask(() => setAnnouncement(props.messages.saved));\n keepFocus();\n };\n const acceptAll = () => decide(() => props.controller.acceptAll());\n const rejectAll = () => decide(() => props.controller.rejectAll());\n const dismiss = () => {\n props.controller.dismiss();\n keepFocus();\n };\n const onBarKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented) return;\n event.preventDefault();\n dismiss();\n };\n // While the bar is up the page keeps room for it at the bottom, so the last\n // lines and the footer's links can still be scrolled above it.\n const reserveSpace = (element: HTMLElement) => {\n if (typeof ResizeObserver === \"undefined\") return;\n const root = document.documentElement;\n const observer = new ResizeObserver(() => root.style.setProperty(\"--site-consent-block-size\", `${element.offsetHeight}px`));\n observer.observe(element);\n onCleanup(() => {\n observer.disconnect();\n root.style.removeProperty(\"--site-consent-block-size\");\n });\n };\n\n return (\n <Show when={mounted()}>\n <Show when={undecided() && !dismissed()}>\n <section ref={reserveSpace} class=\"site-consent\" aria-label={props.messages.regionLabel} onKeyDown={onBarKeyDown}>\n <div class=\"site-consent__inner\">\n <div class=\"site-consent__copy\">\n <h2 class=\"site-consent__title\">{props.messages.title}</h2>\n <p class=\"site-consent__body\">\n {props.messages.body}{\" \"}\n <a class=\"site-consent__link\" href={props.learnMoreHref}>{props.messages.learnMore}</a>\n </p>\n </div>\n <div class=\"site-consent__actions\">\n <Button class=\"site-consent__action\" tone=\"secondary\" onClick={acceptAll}>{props.messages.acceptAll}</Button>\n <Button class=\"site-consent__action\" tone=\"secondary\" onClick={rejectAll}>{props.messages.rejectAll}</Button>\n <Button class=\"site-consent__action\" tone=\"secondary\" aria-haspopup=\"dialog\" onClick={openSettings}>{props.messages.settings}</Button>\n </div>\n <IconButton class=\"site-consent__dismiss\" aria-label={props.messages.dismiss} title={props.messages.dismiss} onClick={dismiss}>\n <Icon name=\"close\" size={20} />\n </IconButton>\n </div>\n </section>\n </Show>\n <Dialog\n id=\"site-consent-settings\"\n class=\"site-consent-dialog\"\n open={settingsOpen()}\n onOpenChange={setSettingsOpen}\n title={props.messages.settingsTitle}\n description={props.messages.settingsIntro}\n actions={<>\n <Button class=\"site-consent__action\" tone=\"secondary\" onClick={() => setSettingsOpen(false)}>{props.messages.cancel}</Button>\n <Button class=\"site-consent__action\" tone=\"secondary\" onClick={() => decide(() => props.controller.save({ analytics: analytics() }))}>{props.messages.save}</Button>\n </>}\n >\n <IconButton class=\"site-consent-dialog__close\" aria-label={props.messages.close} title={props.messages.close} onClick={() => setSettingsOpen(false)}>\n <Icon name=\"close\" size={20} />\n </IconButton>\n <ul class=\"site-consent-categories\" role=\"list\">\n <li class=\"site-consent-category\">\n <div class=\"site-consent-category__copy\">\n <h3 class=\"site-consent-category__title\">{props.messages.necessaryTitle}</h3>\n <p class=\"site-consent-category__body\">{props.messages.necessaryBody}</p>\n </div>\n {/* Information, not a control: there is nothing to untick. */}\n <span class=\"dds-badge site-consent-category__status\">{props.messages.necessaryStatus}</span>\n </li>\n <li class=\"site-consent-category\">\n <div class=\"site-consent-category__copy\">\n <h3 class=\"site-consent-category__title\">{props.messages.analyticsTitle}</h3>\n <p id=\"site-consent-analytics-body\" class=\"site-consent-category__body\">{props.messages.analyticsBody}</p>\n </div>\n <Switch\n class=\"site-consent-category__switch\"\n checked={analytics()}\n onCheckedChange={setAnalytics}\n aria-describedby=\"site-consent-analytics-body\"\n label={<span class=\"dds-sr-only\">{props.messages.analyticsSwitch}</span>}\n />\n </li>\n </ul>\n <p class=\"site-consent-dialog__policy\"><a class=\"site-consent__link\" href={props.privacyHref}>{props.messages.privacyLink}</a></p>\n </Dialog>\n <p class=\"dds-sr-only\" role=\"status\">{announcement()}</p>\n </Show>\n );\n}\n\nexport interface ConsentSettingsButtonProps {\n controller: ConsentManager;\n children: JSX.Element;\n class?: string;\n}\n\n/**\n * Re-opens the settings dialog from anywhere — the footer's \"쿠키 설정\", an\n * account page. The ConsentBanner mounted on the page listens for it; a page\n * without one has nothing to open.\n */\nexport function ConsentSettingsButton(props: ConsentSettingsButtonProps) {\n return (\n <button\n type=\"button\"\n class={props.class ? `site-consent-trigger ${props.class}` : \"site-consent-trigger\"}\n aria-haspopup=\"dialog\"\n onClick={() => props.controller.openSettings()}\n >{props.children}</button>\n );\n}\n","import { Button, Icon, IconButton } from \"@devslab/dds-solid\";\nimport { For, Show, createMemo, createSignal, onMount, type JSX } from \"solid-js\";\n\nimport { LocaleMenu, type LocaleMenuProps, type LocaleMenuVariant } from \"./locale-menu\";\nimport { ConsentSettingsButton } from \"./consent\";\nimport type { ConsentManager } from \"../core/consent.mjs\";\nimport { FAMILY_LOCALES, type LocaleRegistry, type SiteLocale } from \"../core/locales.mjs\";\nimport type { LocaleState, SiteBrand, SiteLink, SiteMessages, ThemePreference } from \"./types\";\n\nexport type { LocaleMenuProps };\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 /**\n * The language picker's state. Omit it and no picker is rendered — a\n * single-language product (FM덴탈서비스 is Korean-only) has nothing to pick,\n * and a picker with one entry reads as broken. Same contract as the\n * footer's `locale`.\n */\n locale?: LocaleState;\n messages: SiteMessages;\n theme?: Omit<ThemeToggleProps, \"messages\">;\n onLocaleChange?: LocaleMenuProps[\"onLocaleChange\"];\n localeVariant?: LocaleMenuVariant;\n /**\n * The languages the picker offers. Defaults to the family's fourteen;\n * pass the registry from `defineLocaleRegistry` if this product sells in\n * languages the family does not carry.\n */\n localeRegistry?: LocaleRegistry<string>;\n actions?: JSX.Element;\n}\n\n/** The emphasis class a `SiteLink` asks for, or none. */\nconst linkClass = (item: SiteLink) => (item.emphasis ? \"site-link--emphasis\" : undefined);\n\nexport function SiteHeader(props: SiteHeaderProps) {\n const [menuOpen, setMenuOpen] = createSignal(false);\n // brand={{ logo: <Mark /> }} compiles to a getter that rebuilds the logo on\n // every read; read it once (D-027).\n const brand = createMemo(() => props.brand);\n // The narrow-screen menu closes the way a menu is expected to. Escape closes\n // it and puts focus back on the button that opened it — unless a control\n // inside already used that Escape (the flag menu closes itself first and\n // marks the event handled, so one press closes one layer). Following a link\n // inside it closes it too: a same-page anchor (\"#contact\") scrolls the page\n // but leaves the document in place, and without this the open menu kept\n // covering the section the reader just asked for. Buttons (the theme toggle)\n // leave it open — the reader has not gone anywhere — and so does a link that\n // opens a new tab or window. Handlers on elements inside the header run\n // before this one (the flag menu); a modal inside it (a DDS Dialog listens on\n // the document, after this) owns its own Escape, so an Escape from inside an\n // aria-modal element is left alone too.\n const onKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented || !menuOpen()) return;\n if ((event.target as Element | null)?.closest('[aria-modal=\"true\"]')) return;\n event.preventDefault();\n setMenuOpen(false);\n event.currentTarget.querySelector<HTMLButtonElement>(\".site-menu-button\")?.focus();\n };\n const closeOnLink: JSX.EventHandler<HTMLElement, MouseEvent> = (event) => {\n const link = (event.target as Element | null)?.closest(\"a\");\n if (!menuOpen() || !link) return;\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return;\n if (link.target && link.target !== \"_self\") return;\n setMenuOpen(false);\n };\n return (\n <header class=\"site-header\" onKeyDown={onKeyDown}>\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={brand().href} aria-label={brand().label}>{brand().logo}{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} onClick={closeOnLink}>\n <ul class=\"site-nav__list\"><For each={props.navigation}>{(item) => <li><a class={linkClass(item)} 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())} onClick={closeOnLink}>\n <Show when={props.locale}>{(locale) => (\n <LocaleMenu\n state={locale()}\n messages={props.messages}\n {...(props.localeVariant ? { variant: props.localeVariant } : {})}\n {...(props.localeRegistry ? { registry: props.localeRegistry } : {})}\n {...(props.onLocaleChange ? { onLocaleChange: props.onLocaleChange } : {})}\n />\n )}</Show>\n {props.theme && <ThemeToggle {...props.theme} messages={props.messages} />}\n {props.actions}\n </div>\n </div>\n </header>\n );\n}\n\n/**\n * The footer's language row, collapsed.\n *\n * It used to be every language laid out flat, which is a different length in\n * every product — ten for one, twenty for another — so the same footer carried\n * a different visual weight depending on how many languages the product sells\n * in. A `<details>` keeps all of them: the anchors are in the document whether\n * it is open or not, so a crawler still follows every locale, and it works with\n * no JavaScript. Same mechanism as the header's flag menu, including Escape\n * returning focus to the trigger.\n *\n * The trigger is the current language's own name rather than a translated word\n * for \"language\": it is the one label already meaningful to a reader who cannot\n * read the page, and it is what the flat row marked with `aria-current`.\n */\nfunction FooterLocaleMenu(props: {\n state: LocaleState;\n registry: LocaleRegistry<string>;\n label: string;\n /* Required key, optional value: the caller always passes it through, and\n `exactOptionalPropertyTypes` rejects an explicit undefined on an optional. */\n onSelect: ((locale: string) => void) | undefined;\n}) {\n let details: HTMLDetailsElement | undefined;\n let trigger: HTMLElement | undefined;\n const current = () => props.registry.LOCALES.find((entry) => entry.code === props.state.locale);\n const close = () => { if (details) details.open = false; };\n const onKeyDown: JSX.EventHandler<HTMLDetailsElement, KeyboardEvent> = (event) => {\n if (event.key !== \"Escape\" || !details?.open) return;\n event.preventDefault();\n close();\n trigger?.focus();\n };\n return (\n <nav class=\"site-footer__langs\" aria-label={props.label}>\n <details ref={details} class=\"site-footer__langs-menu\" onKeyDown={onKeyDown}>\n <summary ref={trigger} class=\"site-footer__langs-trigger\" aria-label={`${props.label}: ${current()?.nativeName ?? props.state.locale}`}>\n <span lang={current()?.code} dir={current()?.dir}>{current()?.nativeName ?? props.state.locale}</span>\n </summary>\n <ul class=\"site-footer__langs-list\" role=\"list\">\n <For each={props.registry.LOCALES}>{(entry) => (\n <li>\n <a\n href={props.state.hrefForLocale(entry.code as SiteLocale)}\n hreflang={entry.code}\n lang={entry.code}\n dir={entry.dir}\n aria-current={entry.code === props.state.locale ? \"page\" : undefined}\n onClick={() => props.onSelect?.(entry.code)}\n >{entry.nativeName}</a>\n </li>\n )}</For>\n </ul>\n </details>\n </nav>\n );\n}\n\nexport interface SiteFooterProps {\n brand: SiteBrand;\n links: SiteLink[];\n copyright: string;\n /** Wraps the copyright in a link — the family site, usually. */\n copyrightHref?: string;\n messages: SiteMessages;\n /**\n * The language row. Omit it and no row is rendered: a product whose header\n * already offers every language may not want a second copy of the list.\n */\n locale?: LocaleState;\n /** The languages the row lists. Defaults to the family's fourteen. */\n localeRegistry?: LocaleRegistry<string>;\n /**\n * Called with the code the reader picked, before the browser follows the\n * link — for a product that remembers the choice in a cookie.\n */\n onLocaleSelect?: (locale: string) => void;\n /** Links after the brand name, middot-separated: the family line, the operator. */\n family?: SiteLink[];\n /**\n * A block under the brand line: the business registration line and the\n * address a Korean commercial site must print, for one. Rendered as a block\n * (the brand line is an inline `<p>`, where an `<address>` cannot go), and\n * read once — JSX handed to the kit is built once per side (D-027, D-028).\n */\n details?: JSX.Element;\n /**\n * Names the link list: with it the list sits in `<nav aria-label>`, a\n * landmark a screen-reader user can jump to — name it differently from the\n * header's navigation. Without it the list stays a plain list.\n */\n linksLabel?: string;\n /**\n * A \"쿠키 설정\" button at the end of the link list, before the copyright,\n * that re-opens the consent settings (D-034). The page's ConsentBanner\n * listens on the same controller.\n */\n consentSettings?: { controller: ConsentManager; label: string };\n}\n\n/**\n * The family footer: a language row, then the brand beside its family links,\n * then the page's links and the copyright.\n *\n * Every product wrote this by hand. VisionLinq, BookLinq and TraceLinq each\n * carried their own copy with a comment saying the kit's footer \"takes only a\n * flat link list; extending it is a dds release this page would then wait on\" —\n * three copies and three notes naming the same missing release. Their CSS had\n * already converged byte-for-byte. This is that release.\n *\n * Additive: a caller that passes only brand/links/copyright/messages gets the\n * same single row it got before, plus its brand mark if it set one.\n */\nexport function SiteFooter(props: SiteFooterProps) {\n const registry = () => props.localeRegistry ?? (FAMILY_LOCALES as LocaleRegistry<string>);\n const brand = createMemo(() => props.brand);\n const details = createMemo(() => props.details);\n // Each of these is called in exactly one branch of its <Show>, so each\n // builds its nodes once.\n const brandLine = () => (\n <p class=\"site-footer__brand\">\n {brand().logo}\n {/* A wordmark passed as the logo comes with `name: \"\"`; no empty <strong>. */}\n <Show when={brand().name}>{(name) => <strong>{name()}</strong>}</Show>\n <For each={props.family ?? []}>{(item) => <>\n <span aria-hidden=\"true\">·</span>\n <a class={linkClass(item)} href={item.href}>{item.label}</a>\n </>}</For>\n </p>\n );\n const linkList = () => (\n <ul class=\"site-footer__links\">\n <For each={props.links}>{(item) => <li><a class={linkClass(item)} href={item.href}>{item.label}</a></li>}</For>\n <Show when={props.consentSettings}>{(settings) => (\n <li><ConsentSettingsButton controller={settings().controller}>{settings().label}</ConsentSettingsButton></li>\n )}</Show>\n {/*\n A copyright like \"© 2026 DevsLab\" mixes neutral, digit and Latin\n runs, which the bidi algorithm reorders on an RTL page into\n \"DevsLab 2026 ©\". <bdi> isolates it so it reads as written in\n every direction.\n */}\n <li><Show when={props.copyrightHref} fallback={<bdi>{props.copyright}</bdi>}>\n {(href) => <a href={href()}><bdi>{props.copyright}</bdi></a>}\n </Show></li>\n </ul>\n );\n return (\n <footer class=\"site-footer\" aria-label={props.messages.footerLabel}>\n <div class=\"site-footer__inner\">\n <Show when={props.locale}>{(locale) => (\n <FooterLocaleMenu\n state={locale()}\n registry={registry()}\n label={props.messages.localeLabel}\n onSelect={props.onLocaleSelect}\n />\n )}</Show>\n <div class=\"site-footer__row\">\n <Show when={details()} fallback={brandLine()}>{(content) => (\n <div class=\"site-footer__identity\">\n {brandLine()}\n <div class=\"site-footer__details\">{content()}</div>\n </div>\n )}</Show>\n <Show when={props.linksLabel} fallback={linkList()}>{(label) => (\n <nav class=\"site-footer__nav\" aria-label={label()}>{linkList()}</nav>\n )}</Show>\n </div>\n </div>\n </footer>\n );\n}\n","import { Button, type ButtonTone } from \"@devslab/dds-solid\";\nimport { createMemo, 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 /** \"bleed\" removes the shell's max-width/inset from <main> — for pages composed from\n * full-bleed section primitives, each of which carries its own inner width. Default \"shell\". */\n mainWidth?: \"shell\" | \"bleed\";\n}\n\nexport function MarketingShell(props: MarketingShellProps) {\n const mainClass = () => (props.mainWidth === \"bleed\" ? \"site-main site-main--bleed\" : \"site-main\");\n // Read header and footer once, here, before any element of the shell exists.\n // `header={{ … }}` compiles to a getter, so spreading `props.header` straight\n // into SiteHeader re-evaluated the literal on every prop read — and any JSX\n // built eagerly inside it (an `actions` anchor, a logo) was built again each\n // time, consuming hydration keys. The server and the client read a different\n // number of times, so from the first extra read every key after it was off,\n // and the client rebuilt the whole header from templates: the flag sprite\n // came back empty (AskLinq, site-kit 0.12.0). A memo evaluates the literal\n // exactly once per side, at the same point in the tree.\n const header = createMemo(() => props.header);\n const footer = createMemo(() => props.footer);\n return <div class=\"site-shell\"><SiteHeader {...header()} /><main id=\"main-content\" class={mainClass()} tabIndex={-1}>{props.children}</main><SiteFooter {...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 // Read children once. `<StatusBanner><ul>…</ul></StatusBanner>` compiles to a\n // getter, and checking it for truthiness then inserting it read it twice:\n // the first read built a list (and every <li> under it) that was thrown\n // away, each with a hydration key the server never wrote. Solid's dev build\n // throws `Hydration Mismatch` for those keys, so a consumer's status page\n // fell to its error boundary in `vite dev` (BookLinq, site-kit 0.12.1). One\n // memo, evaluated at the same point in the tree on both sides, is the\n // check and the insert (D-027, D-028).\n const children = createMemo(() => props.children);\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>{children() && <div>{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","import { For, Show, type JSX } from \"solid-js\";\n\n/**\n * Section primitives — the rhythm of a family landing page.\n *\n * Extracted from VisionLinq's landing (apps/web/src/components/landing/\n * sections.tsx + styles/landing.css) so AskLinq's web-next can compose the\n * same page shape. Stateless; every class lives in site-sections.css;\n * colour comes from --dds-* tokens, so light/dark needs no rule here.\n *\n * Two glyph systems, deliberately different (owner, 2026-09-05):\n * - SectionHead.index — the SECTION's number: mono, zero-padded \"01\".\n * - StepFlow markers — a SEQUENCE inside a section: ring numerals \"1\".\n * A step never renders \"01\"; that would put two levels in one voice.\n */\n\nexport interface SectionBlockProps {\n id: string;\n labelledBy: string;\n /** `band` steps the background down one token (bg-subtle) — a decision, not a tint. */\n tone?: \"default\" | \"band\";\n children: JSX.Element;\n}\n\nexport function SectionBlock(props: SectionBlockProps) {\n return (\n <section class=\"site-section\" id={props.id} data-tone={props.tone ?? \"default\"} aria-labelledby={props.labelledBy}>\n <div class=\"site-section__shell\">{props.children}</div>\n </section>\n );\n}\n\nexport interface SectionHeadProps {\n /** Mono, zero-padded index (\"01\"). Decorative — hidden from assistive tech. */\n index: string;\n title: string;\n titleId: string;\n lede?: string;\n}\n\nexport function SectionHead(props: SectionHeadProps) {\n return (\n <header class=\"site-section__head\">\n <p class=\"site-section__index\" aria-hidden=\"true\">{props.index}</p>\n <h2 id={props.titleId}>{props.title}</h2>\n <Show when={props.lede}>{(lede) => <p class=\"site-section__lede\">{lede()}</p>}</Show>\n </header>\n );\n}\n\nexport interface HeroSplitProps {\n id?: string;\n eyebrow?: string;\n title: string;\n titleId: string;\n lede: string;\n actions: JSX.Element;\n /** The product's own scene. Its height is the consumer's decision — fix it there if the scene swaps panels. */\n aside: JSX.Element;\n asideLabel: string;\n}\n\nexport function HeroSplit(props: HeroSplitProps) {\n return (\n <section id={props.id} class=\"site-hero\" aria-labelledby={props.titleId}>\n <div class=\"site-hero__shell\">\n <div class=\"site-hero__copy\">\n <Show when={props.eyebrow}>{(eyebrow) => <p class=\"site-hero__eyebrow\">{eyebrow()}</p>}</Show>\n <h1 id={props.titleId}>{props.title}</h1>\n <p class=\"site-hero__lede\">{props.lede}</p>\n <div class=\"site-hero__actions\">{props.actions}</div>\n </div>\n <figure class=\"site-hero__aside\" aria-label={props.asideLabel}>{props.aside}</figure>\n </div>\n </section>\n );\n}\n\nexport interface StepFlowStep { title: string; body: string }\n\nexport interface StepFlowProps {\n steps: ReadonlyArray<StepFlowStep>;\n /** Accessible name for the list — pass the section title's words, localized. */\n label?: string;\n}\n\nexport function StepFlow(props: StepFlowProps) {\n return (\n <ol class=\"site-steps\" aria-label={props.label}>\n <For each={props.steps}>{(step, index) => (\n <li class=\"site-steps__step\">\n <span class=\"site-steps__marker\" aria-hidden=\"true\">{index() + 1}</span>\n <h3>{step.title}</h3>\n <p>{step.body}</p>\n </li>\n )}</For>\n </ol>\n );\n}\n\nexport interface FeatureRow { title: string; body: string; badge?: string }\n\nexport interface FeatureRowsProps {\n rows: ReadonlyArray<FeatureRow>;\n label?: string;\n}\n\n/** Hairline rows — a card grid is the thing this primitive exists to replace. */\nexport function FeatureRows(props: FeatureRowsProps) {\n return (\n <ul class=\"site-rows\" aria-label={props.label}>\n <For each={props.rows}>{(row) => (\n <li class=\"site-rows__row\">\n <div class=\"site-rows__title\">\n <h3>{row.title}</h3>\n <Show when={row.badge}>{(badge) => <span class=\"dds-badge dds-badge--brand\">{badge()}</span>}</Show>\n </div>\n <p class=\"site-rows__body\">{row.body}</p>\n </li>\n )}</For>\n </ul>\n );\n}\n\nexport interface PricingNoteProps {\n children: JSX.Element;\n action: JSX.Element;\n}\n\n/** One paragraph block, one action. No table, no tiers — a note, not a pricing page. */\nexport function PricingNote(props: PricingNoteProps) {\n return (\n <div class=\"site-pricing\">\n <div class=\"site-pricing__note\">{props.children}</div>\n <div class=\"site-pricing__action\">{props.action}</div>\n </div>\n );\n}\n"],"mappings":"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"}