diff --git a/integrations/bricks/admin-app/src/components/ColorTab.svelte b/integrations/bricks/admin-app/src/components/ColorTab.svelte index f25dd508..8e41c2aa 100644 --- a/integrations/bricks/admin-app/src/components/ColorTab.svelte +++ b/integrations/bricks/admin-app/src/components/ColorTab.svelte @@ -3,10 +3,10 @@ * Colors tab body. Pulls the brand and status defaults from the * hydrated metadata and renders a ColorRow per token. * - * Note how thin this is compared to render_tab_colors() in - * class-admin-page.php: there's no separate hex_hints lookup ceremony, - * no ucfirst() label munging in PHP, no manual table markup. The - * table-of-rows shape is just a single each block. + * Supports both light-mode (source) and dark-mode (optional override) + * colors. Dark-mode values are optional — if left empty, the framework + * auto-derives dark variants from the light source tokens via relative + * color syntax. Setting an explicit dark value overrides auto-derivation. */ import { meta } from '../lib/stores.svelte.js'; import ColorRow from './ColorRow.svelte'; @@ -18,7 +18,7 @@
-

Brand Colors

+

Brand Colors — Light Mode

Pick a color via the HEX input, or switch to Advanced to paste any CSS color value (oklch, rgb, hsl, var(...), etc). Whatever you save is fed @@ -37,7 +37,26 @@ {/each} -

Status Colors

+

Brand Colors — Dark Mode

+

+ Optional overrides for dark mode. Leave empty to let the framework auto-derive + dark variants from the light source colors. Set explicit values for full + control over dark-mode appearance. +

+ +
+ {#each Object.entries(colors.brand_dark ?? colors.brand ?? {}) as [name] (name)} + + {/each} +
+ +

Status Colors — Light Mode

{#each Object.entries(colors.status ?? {}) as [name, oklch] (name)} {/each}
+ +

Status Colors — Dark Mode

+

+ Optional overrides for dark mode. Leave empty for auto-derivation. +

+ +
+ {#each Object.entries(colors.status_dark ?? colors.status ?? {}) as [name] (name)} + + {/each} +
diff --git a/integrations/bricks/admin-app/src/components/LivePreview.svelte b/integrations/bricks/admin-app/src/components/LivePreview.svelte index 0823f7c4..4d95a2c3 100644 --- a/integrations/bricks/admin-app/src/components/LivePreview.svelte +++ b/integrations/bricks/admin-app/src/components/LivePreview.svelte @@ -45,10 +45,14 @@ for (const name of brand) { const v = colors[`brand_${name}`]; if (v) pairs.push(`--sf-color-${name}-light:${v}`); + const vd = colors[`brand_dark_${name}`]; + if (vd) pairs.push(`--sf-color-${name}-dark:${vd}`); } for (const name of statuses) { const v = colors[`status_${name}`]; if (v) pairs.push(`--sf-color-${name}-light:${v}`); + const vd = colors[`status_dark_${name}`]; + if (vd) pairs.push(`--sf-color-${name}-dark:${vd}`); } if (typography.font_body) pairs.push(`--sf-font-body:${typography.font_body}`); if (typography.font_heading) pairs.push(`--sf-font-heading:${typography.font_heading}`); @@ -65,10 +69,14 @@ for (const name of brand) { const v = colors[`brand_${name}`]; if (v) decls.push(`--sf-color-${name}-light: ${v}`); + const vd = colors[`brand_dark_${name}`]; + if (vd) decls.push(`--sf-color-${name}-dark: ${vd}`); } for (const name of statuses) { const v = colors[`status_${name}`]; if (v) decls.push(`--sf-color-${name}-light: ${v}`); + const vd = colors[`status_dark_${name}`]; + if (vd) decls.push(`--sf-color-${name}-dark: ${vd}`); } if (typography.font_body) decls.push(`--sf-font-body: ${typography.font_body}`); if (typography.font_heading) decls.push(`--sf-font-heading: ${typography.font_heading}`); diff --git a/integrations/bricks/admin-app/src/lib/cheatsheet-data.js b/integrations/bricks/admin-app/src/lib/cheatsheet-data.js index 9bba5b6a..4d9e10c6 100644 --- a/integrations/bricks/admin-app/src/lib/cheatsheet-data.js +++ b/integrations/bricks/admin-app/src/lib/cheatsheet-data.js @@ -12,6 +12,7 @@ export const variableGroups = [ description: "Brand, status, semantic, and derived color tokens. Source colors use oklch(); the framework derives light-dark pairs, palettes, and alpha scales automatically.", tokens: [ { name: "--sf-color-{brand}-light", description: "Source color for the brand (oklch registered value). Set this to rebrand." }, + { name: "--sf-color-{brand}-dark", description: "Optional dark-mode override. If set, replaces the auto-derived dark variant for full per-mode control." }, { name: "--sf-color-{brand}", description: "Resolved light-dark adaptive color for use in rules." }, { name: "--sf-color-{brand}-{50-950}", description: "Palette scale: 50 (lightest) to 950 (darkest) mixed with base/text." }, { name: "--sf-color-{brand}-a{5-95}", description: "Alpha scale: 5% to 95% opacity of the brand color." }, diff --git a/integrations/bricks/assets/admin-app/app.css b/integrations/bricks/assets/admin-app/app.css index 452d5cd4..788f0f1c 100644 --- a/integrations/bricks/assets/admin-app/app.css +++ b/integrations/bricks/assets/admin-app/app.css @@ -1 +1 @@ -.tab-nav.svelte-yyiz68{display:flex;gap:2px;border-bottom:1px solid #c3c4c7;flex-wrap:wrap}.tab-nav__btn.svelte-yyiz68{background:transparent;border:1px solid transparent;border-bottom:none;padding:8px 14px;cursor:pointer;font-size:14px;color:#2c3338;border-radius:4px 4px 0 0}.tab-nav__btn.svelte-yyiz68:hover{background:#f0f0f1}.tab-nav__btn.active.svelte-yyiz68{background:#fff;border-color:#c3c4c7;margin-bottom:-1px;color:#1d2327;font-weight:500}.row.svelte-1es83p3{display:grid;grid-template-columns:220px 1fr;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #f0f0f1}.row.svelte-1es83p3:last-child{border-bottom:none}.row__label.svelte-1es83p3 label:where(.svelte-1es83p3){font-weight:500;display:block;color:#1d2327}.row__var.svelte-1es83p3{display:inline-block;margin-top:4px;background:#f6f7f7;padding:1px 6px;border-radius:3px;font-size:11px;color:#50575e}.row__inputs.svelte-1es83p3{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row__swatch.svelte-1es83p3{width:28px;height:28px;border-radius:4px;border:1px solid #c3c4c7;flex-shrink:0}.row__hex.svelte-1es83p3{width:44px;height:28px;padding:0;border:1px solid #8c8f94;border-radius:3px;cursor:pointer;background:#fff}.row__hex-text.svelte-1es83p3{width:110px}.row__raw.svelte-1es83p3{flex:1;min-width:240px;font-family:ui-monospace,monospace}.row__toggle.svelte-1es83p3{background:transparent;border:none;color:#2271b1;cursor:pointer;padding:4px 8px;font-size:12px;text-decoration:underline}.row__toggle.svelte-1es83p3:hover{color:#135e96}h2.svelte-1vle0rm{margin-top:0}.status-heading.svelte-1vle0rm{margin-top:24px}.hint.svelte-1vle0rm{color:#50575e;margin-bottom:16px;max-width:720px}.rows.svelte-1vle0rm{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}.row.svelte-miyob8{display:grid;grid-template-columns:220px 1fr;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #f0f0f1}.row.svelte-miyob8:last-child{border-bottom:none}.row__label.svelte-miyob8 label:where(.svelte-miyob8),.row__label-text.svelte-miyob8{font-weight:500;display:block;color:#1d2327}.row__var.svelte-miyob8{display:inline-block;margin-top:4px;background:#f6f7f7;padding:1px 6px;border-radius:3px;font-size:11px;color:#50575e}.row__inputs.svelte-miyob8{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row__desc.svelte-miyob8{flex-basis:100%;margin:4px 0 0;color:#50575e;font-size:12px}.range.svelte-cifrt1{flex:1;min-width:160px;max-width:320px;accent-color:#2271b1}.number.svelte-cifrt1{width:90px}.unit.svelte-cifrt1{color:#50575e;font-size:12px}.select.svelte-r7dp44{min-width:160px}h2.svelte-jpmt71{margin-top:0}.group-heading.svelte-jpmt71{margin-top:24px}.hint.svelte-jpmt71{color:#50575e;margin-bottom:16px;max-width:720px}.rows.svelte-jpmt71{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}.text.mono.svelte-j8yw6l{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.unit.svelte-1pjh3bn{color:#50575e;font-size:12px}h2.svelte-743nsg{margin-top:0}.group-heading.svelte-743nsg{margin-top:24px}.hint.svelte-743nsg{color:#50575e;margin-bottom:16px;max-width:720px}.hint.svelte-743nsg code:where(.svelte-743nsg){background:#f0f0f1;padding:1px 5px;border-radius:3px;font-size:90%}.rows.svelte-743nsg{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}.size-row.svelte-743nsg{display:grid;grid-template-columns:220px 1fr;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #f0f0f1}.size-row.svelte-743nsg:last-child{border-bottom:none}.size-row__name.svelte-743nsg{font-weight:500;color:#1d2327;display:block}.size-row__var.svelte-743nsg{display:inline-block;margin-top:4px;background:#f6f7f7;padding:1px 6px;border-radius:3px;font-size:11px;color:#50575e}.size-row__inputs.svelte-743nsg{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.size-row__inputs.svelte-743nsg .row{display:flex!important;grid-template-columns:none;gap:6px;padding:0;border:none;align-items:center}.size-row__inputs.svelte-743nsg .row__label-text,.size-row__inputs.svelte-743nsg .row__label label{font-weight:400;color:#50575e;font-size:12px}h2.svelte-1sn1epc{margin-top:0}.rows.svelte-1sn1epc{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-1e7fmit{margin-top:0}.rows.svelte-1e7fmit{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-eu0284{margin-top:0}.rows.svelte-eu0284{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-12kdjwx{margin-top:0}.group-heading.svelte-12kdjwx{margin-top:24px}.hint.svelte-12kdjwx{color:#50575e;margin-bottom:16px;max-width:720px}.rows.svelte-12kdjwx{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-h8mxbh{margin-top:0}.hint.svelte-h8mxbh{color:#50575e;margin-bottom:16px;max-width:720px}.rows.svelte-h8mxbh{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-1nfz83c{margin-top:0}.hint.svelte-1nfz83c{color:#50575e;margin-bottom:16px;max-width:720px}.hint.svelte-1nfz83c code:where(.svelte-1nfz83c){background:#f0f0f1;padding:1px 6px;border-radius:3px;font-size:90%}.category.svelte-1nfz83c{border:1px solid #f0f0f1;border-radius:4px;margin-bottom:4px;background:#fcfcfd}.category__toggle.svelte-1nfz83c{all:unset;display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;cursor:pointer;font-size:14px;font-weight:500}.category__toggle.svelte-1nfz83c:hover{background:#f6f7f7}.category__toggle.svelte-1nfz83c:focus-visible{outline:2px solid #2271b1;outline-offset:2px;border-radius:4px}.category__arrow.svelte-1nfz83c{font-size:10px;width:14px;text-align:center}.category__count.svelte-1nfz83c{color:#787c82;font-weight:400;font-size:13px}.category__list.svelte-1nfz83c{list-style:none;margin:0;padding:0 12px 12px 34px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px}.category__list.svelte-1nfz83c li:where(.svelte-1nfz83c) code:where(.svelte-1nfz83c){font-size:12px;background:#f0f0f1;padding:2px 6px;border-radius:3px;word-break:break-all}h2.svelte-1yljizh{margin-top:0}.hint.svelte-1yljizh{color:#50575e;margin-bottom:16px;max-width:720px}.category.svelte-1yljizh{border:1px solid #f0f0f1;border-radius:4px;margin-bottom:4px;background:#fcfcfd}.category__toggle.svelte-1yljizh{all:unset;display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;cursor:pointer;font-size:14px;font-weight:500}.category__toggle.svelte-1yljizh:hover{background:#f6f7f7}.category__toggle.svelte-1yljizh:focus-visible{outline:2px solid #2271b1;outline-offset:2px;border-radius:4px}.category__arrow.svelte-1yljizh{font-size:10px;width:14px;text-align:center}.category__count.svelte-1yljizh{color:#787c82;font-weight:400;font-size:13px}.category__list.svelte-1yljizh{list-style:none;margin:0;padding:0 12px 12px 34px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px}.category__list.svelte-1yljizh li:where(.svelte-1yljizh) code:where(.svelte-1yljizh){font-size:12px;background:#f0f0f1;padding:2px 6px;border-radius:3px}h2.svelte-13231hj{margin-top:0}.settings-heading.svelte-13231hj{margin-top:24px}.hint.svelte-13231hj{color:#50575e;margin-bottom:16px;max-width:720px}.info.svelte-13231hj{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin-bottom:24px;font-size:14px}.info.svelte-13231hj dt:where(.svelte-13231hj){font-weight:500}.info.svelte-13231hj dd:where(.svelte-13231hj){margin:0;color:#50575e}.setting-row.svelte-13231hj{margin-bottom:16px}.setting-row.svelte-13231hj label:where(.svelte-13231hj){display:block;font-weight:500;margin-bottom:6px}.setting-row.svelte-13231hj select:where(.svelte-13231hj){padding:6px 10px;border:1px solid #8c8f94;border-radius:4px;font-size:14px}.description.svelte-13231hj{color:#50575e;font-size:13px;margin-top:6px}.save-row.svelte-13231hj{display:flex;align-items:center;gap:12px;margin-top:16px}.save-btn.svelte-13231hj{background:#2271b1;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500}.save-btn.svelte-13231hj:hover{background:#135e96}.save-btn.svelte-13231hj:disabled{opacity:.6;cursor:not-allowed}.status.svelte-13231hj{font-size:13px;font-weight:500}.status--ok.svelte-13231hj{color:#00a32a}.status--err.svelte-13231hj{color:#d63638}h2.svelte-a36hjt{margin-top:0}.hint.svelte-a36hjt{color:#50575e;margin-bottom:20px;max-width:720px}.hook.svelte-a36hjt{border:1px solid #f0f0f1;border-radius:4px;padding:16px;margin-bottom:12px;background:#fcfcfd}.hook__name.svelte-a36hjt{margin:0 0 8px;font-size:14px}.hook__name.svelte-a36hjt code:where(.svelte-a36hjt){background:#e7e8ea;padding:3px 8px;border-radius:3px;font-size:13px}.hook__desc.svelte-a36hjt{margin:0 0 8px;color:#1d2327;font-size:14px}.hook__params.svelte-a36hjt{margin:0 0 12px;font-size:13px;color:#50575e}.hook__params.svelte-a36hjt code:where(.svelte-a36hjt){background:#f0f0f1;padding:1px 4px;border-radius:2px;font-size:12px}.hook__example.svelte-a36hjt{margin:0;padding:12px;background:#1d2327;color:#e4e6e8;border-radius:4px;overflow-x:auto;font-size:12px;line-height:1.5}.hook__example.svelte-a36hjt code:where(.svelte-a36hjt){background:none;padding:0;color:inherit}.cheatsheet.svelte-osej3t{display:flex;flex-direction:column;gap:16px}.cheatsheet__header.svelte-osej3t h2:where(.svelte-osej3t){margin:0 0 4px;font-size:18px}.cheatsheet__counts.svelte-osej3t{margin:0;font-size:13px;color:#50575e}.cheatsheet__controls.svelte-osej3t{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.cheatsheet__search.svelte-osej3t{flex:1;min-width:200px;padding:6px 10px;border:1px solid #c3c4c7;border-radius:4px;font-size:13px}.cheatsheet__search.svelte-osej3t:focus{border-color:#2271b1;outline:none;box-shadow:0 0 0 1px #2271b1}.cheatsheet__view-toggle.svelte-osej3t{display:flex;gap:0}.cheatsheet__view-toggle.svelte-osej3t button:where(.svelte-osej3t){padding:5px 12px;border:1px solid #c3c4c7;background:#fff;font-size:12px;cursor:pointer;color:#50575e}.cheatsheet__view-toggle.svelte-osej3t button:where(.svelte-osej3t):first-child{border-radius:3px 0 0 3px}.cheatsheet__view-toggle.svelte-osej3t button:where(.svelte-osej3t):last-child{border-radius:0 3px 3px 0}.cheatsheet__view-toggle.svelte-osej3t button:where(.svelte-osej3t):not(:first-child){border-left:none}.cheatsheet__view-toggle.svelte-osej3t button.active:where(.svelte-osej3t){background:#2271b1;border-color:#2271b1;color:#fff}.cheatsheet__section.svelte-osej3t{display:flex;flex-direction:column;gap:8px}.cheatsheet__section-title.svelte-osej3t{font-size:15px;margin:8px 0 0;padding-bottom:6px;border-bottom:1px solid #e2e4e7}.cheatsheet__group.svelte-osej3t{border:1px solid #e2e4e7;border-radius:4px;overflow:hidden}.cheatsheet__group-header.svelte-osej3t{padding:8px 12px;background:#f6f7f7;cursor:pointer;font-size:13px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.cheatsheet__group-header.svelte-osej3t::-webkit-details-marker{margin-right:4px}.cheatsheet__group-desc.svelte-osej3t{font-size:12px;color:#646970;font-weight:400}.cheatsheet__list.svelte-osej3t{list-style:none;margin:0;padding:0}.cheatsheet__item.svelte-osej3t{display:flex;align-items:baseline;gap:12px;padding:5px 12px;border-top:1px solid #f0f0f1;font-size:12px;line-height:1.5}.cheatsheet__item.svelte-osej3t:first-child{border-top:1px solid #e2e4e7}.cheatsheet__name.svelte-osej3t{flex-shrink:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:11.5px;background:#f0f0f1;padding:1px 5px;border-radius:3px;color:#1e1e1e;white-space:nowrap}.cheatsheet__desc.svelte-osej3t{color:#50575e;font-size:12px}.cheatsheet__empty.svelte-osej3t{text-align:center;color:#646970;padding:32px 16px;font-style:italic}.slashed-preview.svelte-g79qke{background:#fff;border:1px solid #c3c4c7;border-radius:4px;padding:20px;margin-top:8px}.slashed-preview.svelte-g79qke h3:where(.svelte-g79qke){margin-top:0}.slashed-preview__type-heading.svelte-g79qke{font-family:var(--sf-font-heading, system-ui, sans-serif);margin:8px 0 6px;font-size:22px;color:#1d2327}.slashed-preview__type-body.svelte-g79qke{font-family:var(--sf-font-body, system-ui, sans-serif);color:#2c3338;margin:0 0 16px;max-width:640px}.slashed-preview__swatches.svelte-g79qke{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}.slashed-preview__swatch.svelte-g79qke{width:56px;height:56px;border-radius:6px;border:1px solid #c3c4c7;display:flex;align-items:flex-end;justify-content:center;font-size:10px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);padding:4px}.slashed-preview__buttons.svelte-g79qke{display:flex;gap:8px;margin-top:14px}.slashed-preview__btn.svelte-g79qke{color:#fff;padding:8px 16px;border-radius:4px;font-weight:500;border:none;cursor:default}.slashed-preview__caption.svelte-g79qke{margin-top:16px;color:#50575e;font-size:12px}.slashed-preview__caption.svelte-g79qke code:where(.svelte-g79qke){display:block;background:#f6f7f7;padding:8px;border-radius:3px;margin-top:4px;white-space:pre-wrap;font-size:11px;max-height:120px;overflow:auto}.bar.svelte-1oj49qa{position:fixed;bottom:0;left:160px;right:0;background:#fff;border-top:2px solid #c3c4c7;padding:10px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;z-index:100;transition:border-color .15s}.bar.dirty.svelte-1oj49qa{border-top-color:#2271b1}.bar__status.svelte-1oj49qa{font-size:13px}.bar__dirty.svelte-1oj49qa{color:#2271b1;font-weight:500}.bar__pending.svelte-1oj49qa{color:#50575e}.bar__saved.svelte-1oj49qa{color:#00a32a;font-weight:500}.bar__clean.svelte-1oj49qa{color:#50575e}.bar__error.svelte-1oj49qa{color:#d63638;font-weight:500}.bar__actions.svelte-1oj49qa{display:flex;gap:8px}.bar__save.svelte-1oj49qa,.bar__reset.svelte-1oj49qa{padding:6px 14px;border-radius:3px;border:1px solid #2271b1;background:#fff;color:#2271b1;cursor:pointer;font-size:13px}.bar__save.svelte-1oj49qa{background:#2271b1;color:#fff}.bar__save.svelte-1oj49qa:disabled,.bar__reset.svelte-1oj49qa:disabled{opacity:.5;cursor:not-allowed}.bar__reset.svelte-1oj49qa{border-color:#d63638;color:#d63638}@media(max-width:782px){.bar.svelte-1oj49qa{left:0}}.slashed-svelte-admin.svelte-1n46o8q{--gap: 16px;display:flex;flex-direction:column;gap:var(--gap);max-width:1100px;padding-bottom:80px}.slashed-svelte-admin__header.svelte-1n46o8q h1:where(.svelte-1n46o8q){margin:0}.muted.svelte-1n46o8q{color:#50575e;margin:4px 0 0}.slashed-svelte-admin__body.svelte-1n46o8q{background:#fff;border:1px solid #c3c4c7;border-radius:4px;padding:20px} +.tab-nav.svelte-yyiz68{display:flex;gap:2px;border-bottom:1px solid #c3c4c7;flex-wrap:wrap}.tab-nav__btn.svelte-yyiz68{background:transparent;border:1px solid transparent;border-bottom:none;padding:8px 14px;cursor:pointer;font-size:14px;color:#2c3338;border-radius:4px 4px 0 0}.tab-nav__btn.svelte-yyiz68:hover{background:#f0f0f1}.tab-nav__btn.active.svelte-yyiz68{background:#fff;border-color:#c3c4c7;margin-bottom:-1px;color:#1d2327;font-weight:500}.row.svelte-1es83p3{display:grid;grid-template-columns:220px 1fr;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #f0f0f1}.row.svelte-1es83p3:last-child{border-bottom:none}.row__label.svelte-1es83p3 label:where(.svelte-1es83p3){font-weight:500;display:block;color:#1d2327}.row__var.svelte-1es83p3{display:inline-block;margin-top:4px;background:#f6f7f7;padding:1px 6px;border-radius:3px;font-size:11px;color:#50575e}.row__inputs.svelte-1es83p3{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row__swatch.svelte-1es83p3{width:28px;height:28px;border-radius:4px;border:1px solid #c3c4c7;flex-shrink:0}.row__hex.svelte-1es83p3{width:44px;height:28px;padding:0;border:1px solid #8c8f94;border-radius:3px;cursor:pointer;background:#fff}.row__hex-text.svelte-1es83p3{width:110px}.row__raw.svelte-1es83p3{flex:1;min-width:240px;font-family:ui-monospace,monospace}.row__toggle.svelte-1es83p3{background:transparent;border:none;color:#2271b1;cursor:pointer;padding:4px 8px;font-size:12px;text-decoration:underline}.row__toggle.svelte-1es83p3:hover{color:#135e96}h2.svelte-1vle0rm{margin-top:0}.status-heading.svelte-1vle0rm,.dark-heading.svelte-1vle0rm{margin-top:24px}.hint.svelte-1vle0rm{color:#50575e;margin-bottom:16px;max-width:720px}.rows.svelte-1vle0rm{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}.rows--dark.svelte-1vle0rm{background:#f8f8fc;border-color:#e2e4e9}.row.svelte-miyob8{display:grid;grid-template-columns:220px 1fr;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #f0f0f1}.row.svelte-miyob8:last-child{border-bottom:none}.row__label.svelte-miyob8 label:where(.svelte-miyob8),.row__label-text.svelte-miyob8{font-weight:500;display:block;color:#1d2327}.row__var.svelte-miyob8{display:inline-block;margin-top:4px;background:#f6f7f7;padding:1px 6px;border-radius:3px;font-size:11px;color:#50575e}.row__inputs.svelte-miyob8{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row__desc.svelte-miyob8{flex-basis:100%;margin:4px 0 0;color:#50575e;font-size:12px}.range.svelte-cifrt1{flex:1;min-width:160px;max-width:320px;accent-color:#2271b1}.number.svelte-cifrt1{width:90px}.unit.svelte-cifrt1{color:#50575e;font-size:12px}.select.svelte-r7dp44{min-width:160px}h2.svelte-jpmt71{margin-top:0}.group-heading.svelte-jpmt71{margin-top:24px}.hint.svelte-jpmt71{color:#50575e;margin-bottom:16px;max-width:720px}.rows.svelte-jpmt71{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}.text.mono.svelte-j8yw6l{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.unit.svelte-1pjh3bn{color:#50575e;font-size:12px}h2.svelte-743nsg{margin-top:0}.group-heading.svelte-743nsg{margin-top:24px}.hint.svelte-743nsg{color:#50575e;margin-bottom:16px;max-width:720px}.hint.svelte-743nsg code:where(.svelte-743nsg){background:#f0f0f1;padding:1px 5px;border-radius:3px;font-size:90%}.rows.svelte-743nsg{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}.size-row.svelte-743nsg{display:grid;grid-template-columns:220px 1fr;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #f0f0f1}.size-row.svelte-743nsg:last-child{border-bottom:none}.size-row__name.svelte-743nsg{font-weight:500;color:#1d2327;display:block}.size-row__var.svelte-743nsg{display:inline-block;margin-top:4px;background:#f6f7f7;padding:1px 6px;border-radius:3px;font-size:11px;color:#50575e}.size-row__inputs.svelte-743nsg{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.size-row__inputs.svelte-743nsg .row{display:flex!important;grid-template-columns:none;gap:6px;padding:0;border:none;align-items:center}.size-row__inputs.svelte-743nsg .row__label-text,.size-row__inputs.svelte-743nsg .row__label label{font-weight:400;color:#50575e;font-size:12px}h2.svelte-1sn1epc{margin-top:0}.rows.svelte-1sn1epc{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-1e7fmit{margin-top:0}.rows.svelte-1e7fmit{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-eu0284{margin-top:0}.rows.svelte-eu0284{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-12kdjwx{margin-top:0}.group-heading.svelte-12kdjwx{margin-top:24px}.hint.svelte-12kdjwx{color:#50575e;margin-bottom:16px;max-width:720px}.rows.svelte-12kdjwx{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-h8mxbh{margin-top:0}.hint.svelte-h8mxbh{color:#50575e;margin-bottom:16px;max-width:720px}.rows.svelte-h8mxbh{border:1px solid #f0f0f1;border-radius:4px;padding:0 12px;background:#fcfcfd}h2.svelte-1nfz83c{margin-top:0}.hint.svelte-1nfz83c{color:#50575e;margin-bottom:16px;max-width:720px}.hint.svelte-1nfz83c code:where(.svelte-1nfz83c){background:#f0f0f1;padding:1px 6px;border-radius:3px;font-size:90%}.category.svelte-1nfz83c{border:1px solid #f0f0f1;border-radius:4px;margin-bottom:4px;background:#fcfcfd}.category__toggle.svelte-1nfz83c{all:unset;display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;cursor:pointer;font-size:14px;font-weight:500}.category__toggle.svelte-1nfz83c:hover{background:#f6f7f7}.category__toggle.svelte-1nfz83c:focus-visible{outline:2px solid #2271b1;outline-offset:2px;border-radius:4px}.category__arrow.svelte-1nfz83c{font-size:10px;width:14px;text-align:center}.category__count.svelte-1nfz83c{color:#787c82;font-weight:400;font-size:13px}.category__list.svelte-1nfz83c{list-style:none;margin:0;padding:0 12px 12px 34px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px}.category__list.svelte-1nfz83c li:where(.svelte-1nfz83c) code:where(.svelte-1nfz83c){font-size:12px;background:#f0f0f1;padding:2px 6px;border-radius:3px;word-break:break-all}h2.svelte-1yljizh{margin-top:0}.hint.svelte-1yljizh{color:#50575e;margin-bottom:16px;max-width:720px}.category.svelte-1yljizh{border:1px solid #f0f0f1;border-radius:4px;margin-bottom:4px;background:#fcfcfd}.category__toggle.svelte-1yljizh{all:unset;display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;cursor:pointer;font-size:14px;font-weight:500}.category__toggle.svelte-1yljizh:hover{background:#f6f7f7}.category__toggle.svelte-1yljizh:focus-visible{outline:2px solid #2271b1;outline-offset:2px;border-radius:4px}.category__arrow.svelte-1yljizh{font-size:10px;width:14px;text-align:center}.category__count.svelte-1yljizh{color:#787c82;font-weight:400;font-size:13px}.category__list.svelte-1yljizh{list-style:none;margin:0;padding:0 12px 12px 34px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px}.category__list.svelte-1yljizh li:where(.svelte-1yljizh) code:where(.svelte-1yljizh){font-size:12px;background:#f0f0f1;padding:2px 6px;border-radius:3px}h2.svelte-13231hj{margin-top:0}.settings-heading.svelte-13231hj{margin-top:24px}.hint.svelte-13231hj{color:#50575e;margin-bottom:16px;max-width:720px}.info.svelte-13231hj{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin-bottom:24px;font-size:14px}.info.svelte-13231hj dt:where(.svelte-13231hj){font-weight:500}.info.svelte-13231hj dd:where(.svelte-13231hj){margin:0;color:#50575e}.setting-row.svelte-13231hj{margin-bottom:16px}.setting-row.svelte-13231hj label:where(.svelte-13231hj){display:block;font-weight:500;margin-bottom:6px}.setting-row.svelte-13231hj select:where(.svelte-13231hj){padding:6px 10px;border:1px solid #8c8f94;border-radius:4px;font-size:14px}.description.svelte-13231hj{color:#50575e;font-size:13px;margin-top:6px}.save-row.svelte-13231hj{display:flex;align-items:center;gap:12px;margin-top:16px}.save-btn.svelte-13231hj{background:#2271b1;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500}.save-btn.svelte-13231hj:hover{background:#135e96}.save-btn.svelte-13231hj:disabled{opacity:.6;cursor:not-allowed}.status.svelte-13231hj{font-size:13px;font-weight:500}.status--ok.svelte-13231hj{color:#00a32a}.status--err.svelte-13231hj{color:#d63638}h2.svelte-a36hjt{margin-top:0}.hint.svelte-a36hjt{color:#50575e;margin-bottom:20px;max-width:720px}.hook.svelte-a36hjt{border:1px solid #f0f0f1;border-radius:4px;padding:16px;margin-bottom:12px;background:#fcfcfd}.hook__name.svelte-a36hjt{margin:0 0 8px;font-size:14px}.hook__name.svelte-a36hjt code:where(.svelte-a36hjt){background:#e7e8ea;padding:3px 8px;border-radius:3px;font-size:13px}.hook__desc.svelte-a36hjt{margin:0 0 8px;color:#1d2327;font-size:14px}.hook__params.svelte-a36hjt{margin:0 0 12px;font-size:13px;color:#50575e}.hook__params.svelte-a36hjt code:where(.svelte-a36hjt){background:#f0f0f1;padding:1px 4px;border-radius:2px;font-size:12px}.hook__example.svelte-a36hjt{margin:0;padding:12px;background:#1d2327;color:#e4e6e8;border-radius:4px;overflow-x:auto;font-size:12px;line-height:1.5}.hook__example.svelte-a36hjt code:where(.svelte-a36hjt){background:none;padding:0;color:inherit}.cheatsheet.svelte-osej3t{display:flex;flex-direction:column;gap:16px}.cheatsheet__header.svelte-osej3t h2:where(.svelte-osej3t){margin:0 0 4px;font-size:18px}.cheatsheet__counts.svelte-osej3t{margin:0;font-size:13px;color:#50575e}.cheatsheet__controls.svelte-osej3t{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.cheatsheet__search.svelte-osej3t{flex:1;min-width:200px;padding:6px 10px;border:1px solid #c3c4c7;border-radius:4px;font-size:13px}.cheatsheet__search.svelte-osej3t:focus{border-color:#2271b1;outline:none;box-shadow:0 0 0 1px #2271b1}.cheatsheet__view-toggle.svelte-osej3t{display:flex;gap:0}.cheatsheet__view-toggle.svelte-osej3t button:where(.svelte-osej3t){padding:5px 12px;border:1px solid #c3c4c7;background:#fff;font-size:12px;cursor:pointer;color:#50575e}.cheatsheet__view-toggle.svelte-osej3t button:where(.svelte-osej3t):first-child{border-radius:3px 0 0 3px}.cheatsheet__view-toggle.svelte-osej3t button:where(.svelte-osej3t):last-child{border-radius:0 3px 3px 0}.cheatsheet__view-toggle.svelte-osej3t button:where(.svelte-osej3t):not(:first-child){border-left:none}.cheatsheet__view-toggle.svelte-osej3t button.active:where(.svelte-osej3t){background:#2271b1;border-color:#2271b1;color:#fff}.cheatsheet__section.svelte-osej3t{display:flex;flex-direction:column;gap:8px}.cheatsheet__section-title.svelte-osej3t{font-size:15px;margin:8px 0 0;padding-bottom:6px;border-bottom:1px solid #e2e4e7}.cheatsheet__group.svelte-osej3t{border:1px solid #e2e4e7;border-radius:4px;overflow:hidden}.cheatsheet__group-header.svelte-osej3t{padding:8px 12px;background:#f6f7f7;cursor:pointer;font-size:13px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.cheatsheet__group-header.svelte-osej3t::-webkit-details-marker{margin-right:4px}.cheatsheet__group-desc.svelte-osej3t{font-size:12px;color:#646970;font-weight:400}.cheatsheet__list.svelte-osej3t{list-style:none;margin:0;padding:0}.cheatsheet__item.svelte-osej3t{display:flex;align-items:baseline;gap:12px;padding:5px 12px;border-top:1px solid #f0f0f1;font-size:12px;line-height:1.5}.cheatsheet__item.svelte-osej3t:first-child{border-top:1px solid #e2e4e7}.cheatsheet__name.svelte-osej3t{flex-shrink:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:11.5px;background:#f0f0f1;padding:1px 5px;border-radius:3px;color:#1e1e1e;white-space:nowrap}.cheatsheet__desc.svelte-osej3t{color:#50575e;font-size:12px}.cheatsheet__empty.svelte-osej3t{text-align:center;color:#646970;padding:32px 16px;font-style:italic}.slashed-preview.svelte-g79qke{background:#fff;border:1px solid #c3c4c7;border-radius:4px;padding:20px;margin-top:8px}.slashed-preview.svelte-g79qke h3:where(.svelte-g79qke){margin-top:0}.slashed-preview__type-heading.svelte-g79qke{font-family:var(--sf-font-heading, system-ui, sans-serif);margin:8px 0 6px;font-size:22px;color:#1d2327}.slashed-preview__type-body.svelte-g79qke{font-family:var(--sf-font-body, system-ui, sans-serif);color:#2c3338;margin:0 0 16px;max-width:640px}.slashed-preview__swatches.svelte-g79qke{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}.slashed-preview__swatch.svelte-g79qke{width:56px;height:56px;border-radius:6px;border:1px solid #c3c4c7;display:flex;align-items:flex-end;justify-content:center;font-size:10px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);padding:4px}.slashed-preview__buttons.svelte-g79qke{display:flex;gap:8px;margin-top:14px}.slashed-preview__btn.svelte-g79qke{color:#fff;padding:8px 16px;border-radius:4px;font-weight:500;border:none;cursor:default}.slashed-preview__caption.svelte-g79qke{margin-top:16px;color:#50575e;font-size:12px}.slashed-preview__caption.svelte-g79qke code:where(.svelte-g79qke){display:block;background:#f6f7f7;padding:8px;border-radius:3px;margin-top:4px;white-space:pre-wrap;font-size:11px;max-height:120px;overflow:auto}.bar.svelte-1oj49qa{position:fixed;bottom:0;left:160px;right:0;background:#fff;border-top:2px solid #c3c4c7;padding:10px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;z-index:100;transition:border-color .15s}.bar.dirty.svelte-1oj49qa{border-top-color:#2271b1}.bar__status.svelte-1oj49qa{font-size:13px}.bar__dirty.svelte-1oj49qa{color:#2271b1;font-weight:500}.bar__pending.svelte-1oj49qa{color:#50575e}.bar__saved.svelte-1oj49qa{color:#00a32a;font-weight:500}.bar__clean.svelte-1oj49qa{color:#50575e}.bar__error.svelte-1oj49qa{color:#d63638;font-weight:500}.bar__actions.svelte-1oj49qa{display:flex;gap:8px}.bar__save.svelte-1oj49qa,.bar__reset.svelte-1oj49qa{padding:6px 14px;border-radius:3px;border:1px solid #2271b1;background:#fff;color:#2271b1;cursor:pointer;font-size:13px}.bar__save.svelte-1oj49qa{background:#2271b1;color:#fff}.bar__save.svelte-1oj49qa:disabled,.bar__reset.svelte-1oj49qa:disabled{opacity:.5;cursor:not-allowed}.bar__reset.svelte-1oj49qa{border-color:#d63638;color:#d63638}@media(max-width:782px){.bar.svelte-1oj49qa{left:0}}.slashed-svelte-admin.svelte-1n46o8q{--gap: 16px;display:flex;flex-direction:column;gap:var(--gap);max-width:1100px;padding-bottom:80px}.slashed-svelte-admin__header.svelte-1n46o8q h1:where(.svelte-1n46o8q){margin:0}.muted.svelte-1n46o8q{color:#50575e;margin:4px 0 0}.slashed-svelte-admin__body.svelte-1n46o8q{background:#fff;border:1px solid #c3c4c7;border-radius:4px;padding:20px} diff --git a/integrations/bricks/assets/admin-app/app.js b/integrations/bricks/assets/admin-app/app.js index 5f13f676..21e5522a 100644 --- a/integrations/bricks/assets/admin-app/app.js +++ b/integrations/bricks/assets/admin-app/app.js @@ -1,10 +1,12 @@ -var ni=Object.defineProperty;var Dr=e=>{throw TypeError(e)};var ii=(e,t,s)=>t in e?ni(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var _e=(e,t,s)=>ii(e,typeof t!="symbol"?t+"":t,s),nr=(e,t,s)=>t.has(e)||Dr("Cannot "+s);var h=(e,t,s)=>(nr(e,t,"read from private field"),s?s.call(e):t.get(e)),O=(e,t,s)=>t.has(e)?Dr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,s),R=(e,t,s,r)=>(nr(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s),D=(e,t,s)=>(nr(e,t,"access private method"),s);var Er=Array.isArray,ai=Array.prototype.indexOf,Et=Array.prototype.includes,Js=Array.from,oi=Object.defineProperty,Ut=Object.getOwnPropertyDescriptor,li=Object.getOwnPropertyDescriptors,ci=Object.prototype,fi=Array.prototype,an=Object.getPrototypeOf,Fr=Object.isExtensible;const on=()=>{};function di(e){for(var t=0;t{e=r,t=n});return{promise:s,resolve:e,reject:t}}function Vt(e,t){if(Array.isArray(e))return e;if(!(Symbol.iterator in e))return Array.from(e);const s=[];for(const r of e)if(s.push(r),s.length===t)break;return s}const fe=2,ss=4,Qs=8,cn=1<<24,Pe=16,Fe=32,ut=64,dr=128,ze=512,ae=1024,ce=2048,Ye=4096,ue=8192,Ve=16384,Mt=32768,Br=1<<25,Rt=65536,qs=1<<17,ui=1<<18,as=1<<19,vi=1<<20,Ue=1<<25,Ot=65536,Ks=1<<21,Yt=1<<22,dt=1<<23,Wt=Symbol("$state"),hi=Symbol("legacy props"),pi=Symbol(""),Ls=Symbol("attributes"),ur=Symbol("class"),vr=Symbol("style"),ds=Symbol("text"),Is=Symbol("form reset"),$s=new class extends Error{constructor(){super(...arguments);_e(this,"name","StaleReactionError");_e(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}},_i=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml");function gi(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function mi(e,t,s){throw new Error("https://svelte.dev/e/each_key_duplicate")}function yi(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function bi(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function wi(e){throw new Error("https://svelte.dev/e/effect_orphan")}function ki(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function xi(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function Si(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Ei(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Ti(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function ji(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Ai=1,Ci=2,fn=4,zi=8,Vi=16,Ri=1,Oi=4,Li=8,Ii=16,Mi=1,Pi=2,ie=Symbol("uninitialized"),dn="http://www.w3.org/1999/xhtml";function Ni(){console.warn("https://svelte.dev/e/derived_inert")}function Di(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function Fi(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function un(e){return e===this.v}function Bi(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function vn(e){return!Bi(e,this.v)}let Oe=null;function rs(e){Oe=e}function te(e,t=!1,s){Oe={p:Oe,i:!1,c:null,e:null,s:e,x:null,r:N,l:null}}function se(e){var t=Oe,s=t.e;if(s!==null){t.e=null;for(var r of s)Pn(r)}return t.i=!0,Oe=t.p,{}}function hn(){return!0}let pt=[];function pn(){var e=pt;pt=[],di(e)}function Tt(e){if(pt.length===0&&!hs){var t=pt;queueMicrotask(()=>{t===pt&&pn()})}pt.push(e)}function qi(){for(;pt.length>0;)pn()}function _n(e){var t=N;if(t===null)return P.f|=dt,e;if((t.f&Mt)===0&&(t.f&ss)===0)throw e;ft(e,t)}function ft(e,t){for(;t!==null;){if((t.f&dr)!==0){if((t.f&Mt)===0)throw e;try{t.b.error(e);return}catch(s){e=s}}t=t.parent}throw e}const Ki=-7169;function Q(e,t){e.f=e.f&Ki|t}function Tr(e){(e.f&ze)!==0||e.deps===null?Q(e,ae):Q(e,Ye)}function gn(e){if(e!==null)for(const t of e)(t.f&fe)===0||(t.f&Ot)===0||(t.f^=Ot,gn(t.deps))}function mn(e,t,s){(e.f&ce)!==0?t.add(e):(e.f&Ye)!==0&&s.add(e),gn(e.deps),Q(e,ae)}let Vs=!1;function Hi(e){var t=Vs;try{return Vs=!1,[e(),Vs]}finally{Vs=t}}let ir=null,Bt=null,I=null,hr=null,Ne=null,pr=null,hs=!1,ar=!1,Gt=null,Ms=null;var qr=0;let Gi=1;var Xt,ot,yt,Jt,Qt,bt,$t,Je,bs,we,ws,lt,Ke,He,es,wt,K,_r,us,gr,yn,bn,Ps,Ui,mr,qt;const Ws=class Ws{constructor(){O(this,K);_e(this,"id",Gi++);O(this,Xt,!1);_e(this,"linked",!0);O(this,ot,null);O(this,yt,null);_e(this,"async_deriveds",new Map);_e(this,"current",new Map);_e(this,"previous",new Map);_e(this,"unblocked",new Set);O(this,Jt,new Set);O(this,Qt,new Set);O(this,bt,new Set);O(this,$t,0);O(this,Je,new Map);O(this,bs,null);O(this,we,[]);O(this,ws,[]);O(this,lt,new Set);O(this,Ke,new Set);O(this,He,new Map);O(this,es,new Set);_e(this,"is_fork",!1);O(this,wt,!1)}skip_effect(t){h(this,He).has(t)||h(this,He).set(t,{d:[],m:[]}),h(this,es).delete(t)}unskip_effect(t,s=r=>this.schedule(r)){var r=h(this,He).get(t);if(r){h(this,He).delete(t);for(var n of r.d)Q(n,ce),s(n);for(n of r.m)Q(n,Ye),s(n)}h(this,es).add(t)}capture(t,s,r=!1){t.v!==ie&&!this.previous.has(t)&&this.previous.set(t,t.v),(t.f&dt)===0&&(this.current.set(t,[s,r]),Ne?.set(t,s)),this.is_fork||(t.v=s)}activate(){I=this}deactivate(){I=null,Ne=null}flush(){try{ar=!0,I=this,D(this,K,us).call(this)}finally{qr=0,pr=null,Gt=null,Ms=null,ar=!1,I=null,Ne=null,jt.clear()}}discard(){for(const t of h(this,Qt))t(this);h(this,Qt).clear(),h(this,bt).clear(),D(this,K,qt).call(this)}register_created_effect(t){h(this,ws).push(t)}increment(t,s){if(R(this,$t,h(this,$t)+1),t){let r=h(this,Je).get(s)??0;h(this,Je).set(s,r+1)}}decrement(t,s){if(R(this,$t,h(this,$t)-1),t){let r=h(this,Je).get(s)??0;r===1?h(this,Je).delete(s):h(this,Je).set(s,r-1)}h(this,wt)||(R(this,wt,!0),Tt(()=>{R(this,wt,!1),this.linked&&this.flush()}))}transfer_effects(t,s){for(const r of t)h(this,lt).add(r);for(const r of s)h(this,Ke).add(r);t.clear(),s.clear()}oncommit(t){h(this,Jt).add(t)}ondiscard(t){h(this,Qt).add(t)}on_fork_commit(t){h(this,bt).add(t)}run_fork_commit_callbacks(){for(const t of h(this,bt))t(this);h(this,bt).clear()}settled(){return(h(this,bs)??R(this,bs,ln())).promise}static ensure(){var t;if(I===null){const s=I=new Ws;D(t=s,K,mr).call(t),!ar&&!hs&&Tt(()=>{h(s,Xt)||s.flush()})}return I}apply(){{Ne=null;return}}schedule(t){if(pr=t,t.b?.is_pending&&(t.f&(ss|Qs|cn))!==0&&(t.f&Mt)===0){t.b.defer_effect(t);return}for(var s=t;s.parent!==null;){s=s.parent;var r=s.f;if(Gt!==null&&s===N&&(P===null||(P.f&fe)===0))return;if((r&(ut|Fe))!==0){if((r&ae)===0)return;s.f^=ae}}h(this,we).push(s)}};Xt=new WeakMap,ot=new WeakMap,yt=new WeakMap,Jt=new WeakMap,Qt=new WeakMap,bt=new WeakMap,$t=new WeakMap,Je=new WeakMap,bs=new WeakMap,we=new WeakMap,ws=new WeakMap,lt=new WeakMap,Ke=new WeakMap,He=new WeakMap,es=new WeakMap,wt=new WeakMap,K=new WeakSet,_r=function(){if(this.is_fork)return!0;for(const r of h(this,Je).keys()){for(var t=r,s=!1;t.parent!==null;){if(h(this,He).has(t)){s=!0;break}t=t.parent}if(!s)return!0}return!1},us=function(){var l,c,u;if(R(this,Xt,!0),qr++>1e3&&(D(this,K,qt).call(this),Wi()),!D(this,K,_r).call(this)){for(const f of h(this,lt))h(this,Ke).delete(f),Q(f,ce),this.schedule(f);for(const f of h(this,Ke))Q(f,Ye),this.schedule(f)}const t=h(this,we);R(this,we,[]),this.apply();var s=Gt=[],r=[],n=Ms=[];for(const f of t)try{D(this,K,gr).call(this,f,s,r)}catch(d){throw xn(f),d}if(I=null,n.length>0){var i=Ws.ensure();for(const f of n)i.schedule(f)}if(Gt=null,Ms=null,D(this,K,_r).call(this)){D(this,K,Ps).call(this,r),D(this,K,Ps).call(this,s);for(const[f,d]of h(this,He))kn(f,d);n.length>0&&D(l=I,K,us).call(l);return}const o=D(this,K,yn).call(this);if(o){D(c=o,K,bn).call(c,this);return}h(this,lt).clear(),h(this,Ke).clear();for(const f of h(this,Jt))f(this);h(this,Jt).clear(),hr=this,Kr(r),Kr(s),hr=null,h(this,bs)?.resolve();var a=I;if(this.linked&&h(this,$t)===0&&D(this,K,qt).call(this),h(this,we).length>0){a===null&&(a=this,D(this,K,mr).call(this));const f=a;h(f,we).push(...h(this,we).filter(d=>!h(f,we).includes(d)))}a!==null&&D(u=a,K,us).call(u)},gr=function(t,s,r){t.f^=ae;for(var n=t.first;n!==null;){var i=n.f,o=(i&(Fe|ut))!==0,a=o&&(i&ae)!==0,l=a||(i&ue)!==0||h(this,He).has(n);if(!l&&n.fn!==null){o?n.f^=ae:(i&ss)!==0?s.push(n):js(n)&&((i&Pe)!==0&&h(this,Ke).add(n),is(n));var c=n.first;if(c!==null){n=c;continue}}for(;n!==null;){var u=n.next;if(u!==null){n=u;break}n=n.parent}}},yn=function(){for(var t=h(this,ot);t!==null;){if(!t.is_fork){for(const[s,[,r]]of this.current)if(t.current.has(s)&&!r)return t}t=h(t,ot)}return null},bn=function(t){var r;for(const[n,i]of t.current)!this.previous.has(n)&&t.previous.has(n)&&this.previous.set(n,t.previous.get(n)),this.current.set(n,i);for(const[n,i]of t.async_deriveds){const o=this.async_deriveds.get(n);o&&i.promise.then(o.resolve)}const s=n=>{var i=n.reactions;if(i!==null)for(const l of i){var o=l.f;if((o&fe)!==0)s(l);else{var a=l;o&(Yt|Pe)&&!this.async_deriveds.has(a)&&(h(this,Ke).delete(a),Q(a,ce),this.schedule(a))}}};for(const n of this.current.keys())s(n);this.oncommit(()=>t.discard()),D(r=t,K,qt).call(r),I=this,D(this,K,us).call(this)},Ps=function(t){for(var s=0;s!this.current.has(d));if(n.length===0)t&&f.discard();else if(s.length>0){if(t)for(const d of h(this,es))f.unskip_effect(d,g=>{var _;(g.f&(Pe|Yt))!==0?f.schedule(g):D(_=f,K,Ps).call(_,[g])});f.activate();var i=new Set,o=new Map;for(var a of s)wn(a,n,i,o);o=new Map;var l=[...f.current.keys()].filter(d=>this.current.has(d)?this.current.get(d)[0]!==d.v:!0);if(l.length>0)for(const d of h(this,ws))(d.f&(Ve|ue|qs))===0&&jr(d,l,o)&&((d.f&(Yt|Pe))!==0?(Q(d,ce),f.schedule(d)):h(f,lt).add(d));if(h(f,we).length>0&&!h(f,wt)){f.apply();for(var c of h(f,we))D(u=f,K,gr).call(u,c,[],[]);R(f,we,[])}f.deactivate()}}}},mr=function(){Bt===null?ir=Bt=this:(R(Bt,yt,this),R(this,ot,Bt)),Bt=this},qt=function(){var t=h(this,ot),s=h(this,yt);t===null?ir=s:R(t,yt,s),s===null?Bt=t:R(s,ot,t),this.linked=!1};let Lt=Ws;function Yi(e){var t=hs;hs=!0;try{for(var s;;){if(qi(),I===null)return s;I.flush()}}finally{hs=t}}function Wi(){try{ki()}catch(e){ft(e,pr)}}let Xe=null;function Kr(e){var t=e.length;if(t!==0){for(var s=0;s0)){jt.clear();for(const n of Xe){if((n.f&(Ve|ue))!==0)continue;const i=[n];let o=n.parent;for(;o!==null;)Xe.has(o)&&(Xe.delete(o),i.push(o)),o=o.parent;for(let a=i.length-1;a>=0;a--){const l=i[a];(l.f&(Ve|ue))===0&&is(l)}}Xe.clear()}}Xe=null}}function wn(e,t,s,r){if(!s.has(e)&&(s.add(e),e.reactions!==null))for(const n of e.reactions){const i=n.f;(i&fe)!==0?wn(n,t,s,r):(i&(Yt|Pe))!==0&&(i&ce)===0&&jr(n,t,r)&&(Q(n,ce),Ar(n))}}function jr(e,t,s){const r=s.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const n of e.deps){if(Et.call(t,n))return!0;if((n.f&fe)!==0&&jr(n,t,s))return s.set(n,!0),!0}return s.set(e,!1),!1}function Ar(e){I.schedule(e)}function kn(e,t){if(!((e.f&Fe)!==0&&(e.f&ae)!==0)){(e.f&ce)!==0?t.d.push(e):(e.f&Ye)!==0&&t.m.push(e),Q(e,ae);for(var s=e.first;s!==null;)kn(s,t),s=s.next}}function xn(e){Q(e,ae);for(var t=e.first;t!==null;)xn(t),t=t.next}function Zi(e){let t=0,s=It(0),r;return()=>{Rr()&&(v(s),Nn(()=>(t===0&&(r=Mr(()=>e(()=>ps(s)))),t+=1,()=>{Tt(()=>{t-=1,t===0&&(r?.(),r=void 0,ps(s))})})))}}var Xi=Rt|as;function Ji(e,t,s,r){new Qi(e,t,s,r)}var Te,Sr,je,kt,ge,Ae,de,ke,Qe,xt,ct,ts,ks,xs,$e,Zs,ee,$i,ea,ta,yr,Ns,Ds,br,wr;class Qi{constructor(t,s,r,n){O(this,ee);_e(this,"parent");_e(this,"is_pending",!1);_e(this,"transform_error");O(this,Te);O(this,Sr,null);O(this,je);O(this,kt);O(this,ge);O(this,Ae,null);O(this,de,null);O(this,ke,null);O(this,Qe,null);O(this,xt,0);O(this,ct,0);O(this,ts,!1);O(this,ks,new Set);O(this,xs,new Set);O(this,$e,null);O(this,Zs,Zi(()=>(R(this,$e,It(h(this,xt))),()=>{R(this,$e,null)})));R(this,Te,t),R(this,je,s),R(this,kt,i=>{var o=N;o.b=this,o.f|=dr,r(i)}),this.parent=N.b,this.transform_error=n??this.parent?.transform_error??(i=>i),R(this,ge,er(()=>{D(this,ee,yr).call(this)},Xi))}defer_effect(t){mn(t,h(this,ks),h(this,xs))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!h(this,je).pending}update_pending_count(t,s){D(this,ee,br).call(this,t,s),R(this,xt,h(this,xt)+t),!(!h(this,$e)||h(this,ts))&&(R(this,ts,!0),Tt(()=>{R(this,ts,!1),h(this,$e)&&ns(h(this,$e),h(this,xt))}))}get_effect_pending(){return h(this,Zs).call(this),v(h(this,$e))}error(t){if(!h(this,je).onerror&&!h(this,je).failed)throw t;I?.is_fork?(h(this,Ae)&&I.skip_effect(h(this,Ae)),h(this,de)&&I.skip_effect(h(this,de)),h(this,ke)&&I.skip_effect(h(this,ke)),I.on_fork_commit(()=>{D(this,ee,wr).call(this,t)})):D(this,ee,wr).call(this,t)}}Te=new WeakMap,Sr=new WeakMap,je=new WeakMap,kt=new WeakMap,ge=new WeakMap,Ae=new WeakMap,de=new WeakMap,ke=new WeakMap,Qe=new WeakMap,xt=new WeakMap,ct=new WeakMap,ts=new WeakMap,ks=new WeakMap,xs=new WeakMap,$e=new WeakMap,Zs=new WeakMap,ee=new WeakSet,$i=function(){try{R(this,Ae,Ce(()=>h(this,kt).call(this,h(this,Te))))}catch(t){this.error(t)}},ea=function(t){const s=h(this,je).failed;s&&R(this,ke,Ce(()=>{s(h(this,Te),()=>t,()=>()=>{})}))},ta=function(){const t=h(this,je).pending;t&&(this.is_pending=!0,R(this,de,Ce(()=>t(h(this,Te)))),Tt(()=>{var s=R(this,Qe,document.createDocumentFragment()),r=At();s.append(r),R(this,Ae,D(this,ee,Ds).call(this,()=>Ce(()=>h(this,kt).call(this,r)))),h(this,ct)===0&&(h(this,Te).before(s),R(this,Qe,null),Ct(h(this,de),()=>{R(this,de,null)}),D(this,ee,Ns).call(this,I))}))},yr=function(){try{if(this.is_pending=this.has_pending_snippet(),R(this,ct,0),R(this,xt,0),R(this,Ae,Ce(()=>{h(this,kt).call(this,h(this,Te))})),h(this,ct)>0){var t=R(this,Qe,document.createDocumentFragment());Ir(h(this,Ae),t);const s=h(this,je).pending;R(this,de,Ce(()=>s(h(this,Te))))}else D(this,ee,Ns).call(this,I)}catch(s){this.error(s)}},Ns=function(t){this.is_pending=!1,t.transfer_effects(h(this,ks),h(this,xs))},Ds=function(t){var s=N,r=P,n=Oe;We(h(this,ge)),Le(h(this,ge)),rs(h(this,ge).ctx);try{return Lt.ensure(),t()}catch(i){return _n(i),null}finally{We(s),Le(r),rs(n)}},br=function(t,s){var r;if(!this.has_pending_snippet()){this.parent&&D(r=this.parent,ee,br).call(r,t,s);return}R(this,ct,h(this,ct)+t),h(this,ct)===0&&(D(this,ee,Ns).call(this,s),h(this,de)&&Ct(h(this,de),()=>{R(this,de,null)}),h(this,Qe)&&(h(this,Te).before(h(this,Qe)),R(this,Qe,null)))},wr=function(t){h(this,Ae)&&(ye(h(this,Ae)),R(this,Ae,null)),h(this,de)&&(ye(h(this,de)),R(this,de,null)),h(this,ke)&&(ye(h(this,ke)),R(this,ke,null));var s=h(this,je).onerror;let r=h(this,je).failed;var n=!1,i=!1;const o=()=>{if(n){Fi();return}n=!0,i&&ji(),h(this,ke)!==null&&Ct(h(this,ke),()=>{R(this,ke,null)}),D(this,ee,Ds).call(this,()=>{D(this,ee,yr).call(this)})},a=l=>{try{i=!0,s?.(l,o),i=!1}catch(c){ft(c,h(this,ge)&&h(this,ge).parent)}r&&R(this,ke,D(this,ee,Ds).call(this,()=>{try{return Ce(()=>{var c=N;c.b=this,c.f|=dr,r(h(this,Te),()=>l,()=>o)})}catch(c){return ft(c,h(this,ge).parent),null}}))};Tt(()=>{var l;try{l=this.transform_error(t)}catch(c){ft(c,h(this,ge)&&h(this,ge).parent);return}l!==null&&typeof l=="object"&&typeof l.then=="function"?l.then(a,c=>ft(c,h(this,ge)&&h(this,ge).parent)):a(l)})};function sa(e,t,s,r){const n=gs;var i=e.filter(d=>!d.settled);if(s.length===0&&i.length===0){r(t.map(n));return}var o=N,a=ra(),l=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(d=>d.promise)):null;function c(d){if((o.f&Ve)===0){a();try{r(d)}catch(g){ft(g,o)}Hs()}}var u=Sn();if(s.length===0){l.then(()=>c(t.map(n))).finally(u);return}function f(){Promise.all(s.map(d=>na(d))).then(d=>c([...t.map(n),...d])).catch(d=>ft(d,o)).finally(u)}l?l.then(()=>{a(),f(),Hs()}):f()}function ra(){var e=N,t=P,s=Oe,r=I;return function(i=!0){We(e),Le(t),rs(s),i&&(e.f&Ve)===0&&(r?.activate(),r?.apply())}}function Hs(e=!0){We(null),Le(null),rs(null),e&&I?.deactivate()}function Sn(){var e=N,t=e.b,s=I,r=t.is_rendered();return t.update_pending_count(1,s),s.increment(r,e),()=>{t.update_pending_count(-1,s),s.decrement(r,e)}}function gs(e){var t=fe|ce;return N!==null&&(N.f|=as),{ctx:Oe,deps:null,effects:null,equals:un,f:t,fn:e,reactions:null,rv:0,v:ie,wv:0,parent:N,ac:null}}const Rs=Symbol("obsolete");function na(e,t,s){let r=N;r===null&&gi();var n=void 0,i=It(ie),o=!P,a=new Set;return ma(()=>{var l=N,c=ln();n=c.promise;try{Promise.resolve(e()).then(c.resolve,g=>{g!==$s&&c.reject(g)}).finally(Hs)}catch(g){c.reject(g),Hs()}var u=I;if(o){if((l.f&Mt)!==0)var f=Sn();if(r.b.is_rendered())u.async_deriveds.get(l)?.reject(Rs);else for(const g of a.values())g.reject(Rs);a.add(c),u.async_deriveds.set(l,c)}const d=(g,_=void 0)=>{f?.(),a.delete(c),_!==Rs&&(u.activate(),_?(i.f|=dt,ns(i,_)):((i.f&dt)!==0&&(i.f^=dt),ns(i,g)),u.deactivate())};c.promise.then(d,g=>d(null,g||"unknown"))}),In(()=>{for(const l of a)l.reject(Rs)}),new Promise(l=>{function c(u){function f(){u===n?l(i):c(n)}u.then(f,f)}c(n)})}function A(e){const t=gs(e);return Kn(t),t}function En(e){const t=gs(e);return t.equals=vn,t}function ia(e){var t=e.effects;if(t!==null){e.effects=null;for(var s=0;s0&&!An&&la()}return t}function la(){An=!1;for(const e of Gs){(e.f&ae)!==0&&Q(e,Ye);let t;try{t=js(e)}catch{t=!0}t&&is(e)}Gs.clear()}function ps(e){q(e,e.v+1)}function Cn(e,t,s){var r=e.reactions;if(r!==null)for(var n=r.length,i=0;i{if(zt===i)return a();var l=P,c=zt;Le(null),Wr(i);var u=a();return Le(l),Wr(c),u};return r&&s.set("length",re(e.length)),new Proxy(e,{defineProperty(a,l,c){(!("value"in c)||c.configurable===!1||c.enumerable===!1||c.writable===!1)&&Si();var u=s.get(l);return u===void 0?o(()=>{var f=re(c.value);return s.set(l,f),f}):q(u,c.value,!0),!0},deleteProperty(a,l){var c=s.get(l);if(c===void 0){if(l in a){const u=o(()=>re(ie));s.set(l,u),ps(n)}}else q(c,ie),ps(n);return!0},get(a,l,c){if(l===Wt)return e;var u=s.get(l),f=l in a;if(u===void 0&&(!f||Ut(a,l)?.writable)&&(u=o(()=>{var g=Se(f?a[l]:ie),_=re(g);return _}),s.set(l,u)),u!==void 0){var d=v(u);return d===ie?void 0:d}return Reflect.get(a,l,c)},getOwnPropertyDescriptor(a,l){var c=Reflect.getOwnPropertyDescriptor(a,l);if(c&&"value"in c){var u=s.get(l);u&&(c.value=v(u))}else if(c===void 0){var f=s.get(l),d=f?.v;if(f!==void 0&&d!==ie)return{enumerable:!0,configurable:!0,value:d,writable:!0}}return c},has(a,l){if(l===Wt)return!0;var c=s.get(l),u=c!==void 0&&c.v!==ie||Reflect.has(a,l);if(c!==void 0||N!==null&&(!u||Ut(a,l)?.writable)){c===void 0&&(c=o(()=>{var d=u?Se(a[l]):ie,g=re(d);return g}),s.set(l,c));var f=v(c);if(f===ie)return!1}return u},set(a,l,c,u){var f=s.get(l),d=l in a;if(r&&l==="length")for(var g=c;gre(ie)),s.set(g+"",_))}if(f===void 0)(!d||Ut(a,l)?.writable)&&(f=o(()=>re(void 0)),q(f,Se(c)),s.set(l,f));else{d=f.v!==ie;var y=o(()=>Se(c));q(f,y)}var p=Reflect.getOwnPropertyDescriptor(a,l);if(p?.set&&p.set.call(u,c),!d){if(r&&typeof l=="string"){var b=s.get("length"),w=Number(l);Number.isInteger(w)&&w>=b.v&&q(b,w+1)}ps(n)}return!0},ownKeys(a){v(n);var l=Reflect.ownKeys(a).filter(f=>{var d=s.get(f);return d===void 0||d.v!==ie});for(var[c,u]of s)u.v!==ie&&!(c in a)&&l.push(c);return l},setPrototypeOf(){Ei()}})}function Hr(e){try{if(e!==null&&typeof e=="object"&&Wt in e)return e[Wt]}catch{}return e}function ca(e,t){return Object.is(Hr(e),Hr(t))}var Gr,zn,Vn,Rn;function fa(){if(Gr===void 0){Gr=window,zn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,s=Text.prototype;Vn=Ut(t,"firstChild").get,Rn=Ut(t,"nextSibling").get,Fr(e)&&(e[ur]=void 0,e[Ls]=null,e[vr]=void 0,e.__e=void 0),Fr(s)&&(s[ds]=void 0)}}function At(e=""){return document.createTextNode(e)}function Us(e){return Vn.call(e)}function Ts(e){return Rn.call(e)}function m(e,t){return Us(e)}function zr(e,t=!1){{var s=Us(e);return s instanceof Comment&&s.data===""?Ts(s):s}}function k(e,t=1,s=!1){let r=e;for(;t--;)r=Ts(r);return r}function da(e){e.textContent=""}function On(){return!1}function ua(e,t,s){return document.createElementNS(dn,e,void 0)}let Ur=!1;function va(){Ur||(Ur=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t[Is]?.()})},{capture:!0}))}function Vr(e){var t=P,s=N;Le(null),We(null);try{return e()}finally{Le(t),We(s)}}function Ln(e,t,s,r=s){e.addEventListener(t,()=>Vr(s));const n=e[Is];n?e[Is]=()=>{n(),r(!0)}:e[Is]=()=>r(!0),va()}function ha(e){N===null&&(P===null&&wi(),bi()),tt&&yi()}function pa(e,t){var s=t.last;s===null?t.last=t.first=e:(s.next=e,e.prev=s,t.last=e)}function st(e,t){var s=N;s!==null&&(s.f&ue)!==0&&(e|=ue);var r={ctx:Oe,deps:null,nodes:null,f:e|ce|ze,first:null,fn:t,last:null,next:null,parent:s,b:s&&s.b,prev:null,teardown:null,wv:0,ac:null};I?.register_created_effect(r);var n=r;if((e&ss)!==0)Gt!==null?Gt.push(r):Lt.ensure().schedule(r);else if(t!==null){try{is(r)}catch(o){throw ye(r),o}n.deps===null&&n.teardown===null&&n.nodes===null&&n.first===n.last&&(n.f&as)===0&&(n=n.first,(e&Pe)!==0&&(e&Rt)!==0&&n!==null&&(n.f|=Rt))}if(n!==null&&(n.parent=s,s!==null&&pa(n,s),P!==null&&(P.f&fe)!==0&&(e&ut)===0)){var i=P;(i.effects??(i.effects=[])).push(n)}return r}function Rr(){return P!==null&&!De}function In(e){const t=st(Qs,null);return Q(t,ae),t.teardown=e,t}function Mn(e){ha();var t=N.f,s=!P&&(t&Fe)!==0&&(t&Mt)===0;if(s){var r=Oe;(r.e??(r.e=[])).push(e)}else return Pn(e)}function Pn(e){return st(ss|vi,e)}function _a(e){Lt.ensure();const t=st(ut|as,e);return(s={})=>new Promise(r=>{s.outro?Ct(t,()=>{ye(t),r(void 0)}):(ye(t),r(void 0))})}function ga(e){return st(ss,e)}function ma(e){return st(Yt|as,e)}function Nn(e,t=0){return st(Qs|t,e)}function M(e,t=[],s=[],r=[]){sa(r,t,s,n=>{st(Qs,()=>e(...n.map(v)))})}function er(e,t=0){var s=st(Pe|t,e);return s}function Ce(e){return st(Fe|as,e)}function Dn(e){var t=e.teardown;if(t!==null){const s=tt,r=P;Yr(!0),Le(null);try{t.call(null)}finally{Yr(s),Le(r)}}}function Or(e,t=!1){var s=e.first;for(e.first=e.last=null;s!==null;){const n=s.ac;n!==null&&Vr(()=>{n.abort($s)});var r=s.next;(s.f&ut)!==0?s.parent=null:ye(s,t),s=r}}function ya(e){for(var t=e.first;t!==null;){var s=t.next;(t.f&Fe)===0&&ye(t),t=s}}function ye(e,t=!0){var s=!1;(t||(e.f&ui)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(ba(e.nodes.start,e.nodes.end),s=!0),Q(e,Br),Or(e,t&&!s),ms(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(const i of r)i.stop();Dn(e),e.f^=Br,e.f|=Ve;var n=e.parent;n!==null&&n.first!==null&&Fn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function ba(e,t){for(;e!==null;){var s=e===t?null:Ts(e);e.remove(),e=s}}function Fn(e){var t=e.parent,s=e.prev,r=e.next;s!==null&&(s.next=r),r!==null&&(r.prev=s),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=s))}function Ct(e,t,s=!0){var r=[];Bn(e,r,!0);var n=()=>{s&&ye(e),t&&t()},i=r.length;if(i>0){var o=()=>--i||n();for(var a of r)a.out(o)}else n()}function Bn(e,t,s){if((e.f&ue)===0){e.f^=ue;var r=e.nodes&&e.nodes.t;if(r!==null)for(const a of r)(a.is_global||s)&&t.push(a);for(var n=e.first;n!==null;){var i=n.next;if((n.f&ut)===0){var o=(n.f&Rt)!==0||(n.f&Fe)!==0&&(e.f&Pe)!==0;Bn(n,t,o?s:!1)}n=i}}}function Lr(e){qn(e,!0)}function qn(e,t){if((e.f&ue)!==0){e.f^=ue,(e.f&ae)===0&&(Q(e,ce),Lt.ensure().schedule(e));for(var s=e.first;s!==null;){var r=s.next,n=(s.f&Rt)!==0||(s.f&Fe)!==0;qn(s,n?t:!1),s=r}var i=e.nodes&&e.nodes.t;if(i!==null)for(const o of i)(o.is_global||t)&&o.in()}}function Ir(e,t){if(e.nodes)for(var s=e.nodes.start,r=e.nodes.end;s!==null;){var n=s===r?null:Ts(s);t.append(s),s=n}}let Fs=!1,tt=!1;function Yr(e){tt=e}let P=null,De=!1;function Le(e){P=e}let N=null;function We(e){N=e}let Re=null;function Kn(e){P!==null&&(Re===null?Re=[e]:Re.push(e))}let me=null,be=0,Ee=null;function wa(e){Ee=e}let Hn=1,_t=0,zt=_t;function Wr(e){zt=e}function Gn(){return++Hn}function js(e){var t=e.f;if((t&ce)!==0)return!0;if(t&fe&&(e.f&=~Ot),(t&Ye)!==0){for(var s=e.deps,r=s.length,n=0;ne.wv)return!0}(t&ze)!==0&&Ne===null&&Q(e,ae)}return!1}function Un(e,t,s=!0){var r=e.reactions;if(r!==null&&!(Re!==null&&Et.call(Re,e)))for(var n=0;n{e.ac.abort($s)}),e.ac=null);try{e.f|=Ks;var u=e.fn,f=u();e.f|=Mt;var d=e.deps,g=I?.is_fork;if(me!==null){var _;if(g||ms(e,be),d!==null&&be>0)for(d.length=be+me.length,_=0;_{throw p});throw d}}finally{e[gt]=t,delete e.currentTarget,Le(u),We(f)}}}const Ta=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function ja(e){return Ta?.createHTML(e)??e}function Aa(e){var t=ua("template");return t.innerHTML=ja(e.replaceAll("","")),t.content}function Jr(e,t){var s=N;s.nodes===null&&(s.nodes={start:e,end:t,a:null,t:null})}function j(e,t){var s=(t&Mi)!==0,r=(t&Pi)!==0,n,i=!e.startsWith("");return()=>{n===void 0&&(n=Aa(i?e:""+e),s||(n=Us(n)));var o=r||zn?document.importNode(n,!0):n.cloneNode(!0);if(s){var a=Us(o),l=o.lastChild;Jr(a,l)}else Jr(o,o);return o}}function T(e,t){e!==null&&e.before(t)}function C(e,t){var s=t==null?"":typeof t=="object"?`${t}`:t;s!==(e[ds]??(e[ds]=e.nodeValue))&&(e[ds]=s,e.nodeValue=`${s}`)}function Ca(e,t){return za(e,t)}const Os=new Map;function za(e,{target:t,anchor:s,props:r={},events:n,context:i,intro:o=!0,transformError:a}){fa();var l=void 0,c=_a(()=>{var u=s??t.appendChild(At());Ji(u,{pending:()=>{}},g=>{te({});var _=Oe;i&&(_.c=i),n&&(r.$$events=n),l=e(g,r)||{},se()},a);var f=new Set,d=g=>{for(var _=0;_{for(var g of f)for(const p of[t,document]){var _=Os.get(p),y=_.get(g);--y==0?(p.removeEventListener(g,Xr),_.delete(g),_.size===0&&Os.delete(p)):_.set(g,y)}kr.delete(d),u!==s&&u.parentNode?.removeChild(u)}});return Va.set(l,c),l}let Va=new WeakMap;var Me,Ge,xe,St,Ss,Es,Xs;class Jn{constructor(t,s=!0){_e(this,"anchor");O(this,Me,new Map);O(this,Ge,new Map);O(this,xe,new Map);O(this,St,new Set);O(this,Ss,!0);O(this,Es,t=>{if(h(this,Me).has(t)){var s=h(this,Me).get(t),r=h(this,Ge).get(s);if(r)Lr(r),h(this,St).delete(s);else{var n=h(this,xe).get(s);n&&(h(this,Ge).set(s,n.effect),h(this,xe).delete(s),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),r=n.effect)}for(const[i,o]of h(this,Me)){if(h(this,Me).delete(i),i===t)break;const a=h(this,xe).get(o);a&&(ye(a.effect),h(this,xe).delete(o))}for(const[i,o]of h(this,Ge)){if(i===s||h(this,St).has(i))continue;const a=()=>{if(Array.from(h(this,Me).values()).includes(i)){var c=document.createDocumentFragment();Ir(o,c),c.append(At()),h(this,xe).set(i,{effect:o,fragment:c})}else ye(o);h(this,St).delete(i),h(this,Ge).delete(i)};h(this,Ss)||!r?(h(this,St).add(i),Ct(o,a,!1)):a()}}});O(this,Xs,t=>{h(this,Me).delete(t);const s=Array.from(h(this,Me).values());for(const[r,n]of h(this,xe))s.includes(r)||(ye(n.effect),h(this,xe).delete(r))});this.anchor=t,R(this,Ss,s)}ensure(t,s){var r=I,n=On();if(s&&!h(this,Ge).has(t)&&!h(this,xe).has(t))if(n){var i=document.createDocumentFragment(),o=At();i.append(o),h(this,xe).set(t,{effect:Ce(()=>s(o)),fragment:i})}else h(this,Ge).set(t,Ce(()=>s(this.anchor)));if(h(this,Me).set(r,t),n){for(const[a,l]of h(this,Ge))a===t?r.unskip_effect(l):r.skip_effect(l);for(const[a,l]of h(this,xe))a===t?r.unskip_effect(l.effect):r.skip_effect(l.effect);r.oncommit(h(this,Es)),r.ondiscard(h(this,Xs))}else h(this,Es).call(this,r)}}Me=new WeakMap,Ge=new WeakMap,xe=new WeakMap,St=new WeakMap,Ss=new WeakMap,Es=new WeakMap,Xs=new WeakMap;function le(e,t,s=!1){var r=new Jn(e),n=s?Rt:0;function i(o,a){r.ensure(o,a)}er(()=>{var o=!1;t((a,l=0)=>{o=!0,i(l,a)}),o||i(-1,null)},n)}function cs(e,t){return t}function Ra(e,t,s){for(var r=[],n=t.length,i,o=t.length,a=0;a{if(i){if(i.pending.delete(f),i.done.add(f),i.pending.size===0){var d=e.outrogroups;xr(e,Js(i.done)),d.delete(i),d.size===0&&(e.outrogroups=null)}}else o-=1},!1)}if(o===0){var l=r.length===0&&s!==null;if(l){var c=s,u=c.parentNode;da(u),u.append(c),e.items.clear()}xr(e,t,!l)}else i={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(i)}function xr(e,t,s=!0){var r;if(e.pending.size>0){r=new Set;for(const o of e.pending.values())for(const a of o)r.add(e.items.get(a).e)}for(var n=0;n{var S=s();return Er(S)?S:S==null?[]:Js(S)}),d,g=new Map,_=!0;function y(S){(w.effect.f&Ve)===0&&(w.pending.delete(S),w.fallback=u,Oa(w,d,o,t,r),u!==null&&(d.length===0?(u.f&Ue)===0?Lr(u):(u.f^=Ue,vs(u,null,o)):Ct(u,()=>{u=null})))}function p(S){w.pending.delete(S)}var b=er(()=>{d=v(f);for(var S=d.length,E=new Set,F=I,G=On(),W=0;Wi(o)):(u=Ce(()=>i(Qr??(Qr=At()))),u.f|=Ue)),S>E.size&&mi(),!_)if(g.set(F,E),G){for(const[L,B]of a)E.has(L)||F.skip_effect(B.e);F.oncommit(y),F.ondiscard(p)}else y(F);v(f)}),w={effect:b,items:a,pending:g,outrogroups:null,fallback:u};_=!1}function fs(e){for(;e!==null&&(e.f&Fe)===0;)e=e.next;return e}function Oa(e,t,s,r,n){var i=(r&zi)!==0,o=t.length,a=e.items,l=fs(e.effect.first),c,u=null,f,d=[],g=[],_,y,p,b;if(i)for(b=0;b0){var H=(r&fn)!==0&&o===0?s:null;if(i){for(b=0;b{if(f!==void 0)for(p of f)p.nodes?.a?.apply()})}function La(e,t,s,r,n,i,o,a){var l=(o&Ai)!==0?(o&Vi)===0?oa(s,!1,!1):It(s):null,c=(o&Ci)!==0?It(n):null;return{v:l,i:c,e:Ce(()=>(i(t,l??s,c??n,a),()=>{e.delete(r)}))}}function vs(e,t,s){if(e.nodes)for(var r=e.nodes.start,n=e.nodes.end,i=t&&(t.f&Ue)===0?t.nodes.start:s;r!==null;){var o=Ts(r);if(i.before(r),r===n)return;r=o}}function at(e,t,s){t===null?e.effect.first=s:t.next=s,s===null?e.effect.last=t:s.prev=t}function Ia(e,t,...s){var r=new Jn(e);er(()=>{const n=t()??null;r.ensure(n,n&&(i=>n(i,...s)))},Rt)}const $r=[...` -\r\f \v\uFEFF`];function Ma(e,t,s){var r=e==null?"":""+e;if(s){for(var n of Object.keys(s))if(s[n])r=r?r+" "+n:n;else if(r.length)for(var i=n.length,o=0;(o=r.indexOf(n,o))>=0;){var a=o+i;(o===0||$r.includes(r[o-1]))&&(a===r.length||$r.includes(r[a]))?r=(o===0?"":r.substring(0,o))+r.substring(a+1):o=a}}return r===""?null:r}function en(e,t=!1){var s=t?" !important;":";",r="";for(var n of Object.keys(e)){var i=e[n];i!=null&&i!==""&&(r+=" "+n+": "+i+s)}return r}function or(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function Pa(e,t){if(t){var s="",r,n;if(Array.isArray(t)?(r=t[0],n=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var i=!1,o=0,a=!1,l=[];r&&l.push(...Object.keys(r).map(or)),n&&l.push(...Object.keys(n).map(or));var c=0,u=-1;const y=e.length;for(var f=0;f{Pr(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),In(()=>{t.disconnect()})}function Na(e,t,s=t){var r=new WeakSet,n=!0;Ln(e,"change",i=>{var o=i?"[selected]":":checked",a;if(e.multiple)a=[].map.call(e.querySelectorAll(o),_s);else{var l=e.querySelector(o)??e.querySelector("option:not([disabled])");a=l&&_s(l)}s(a),e.__value=a,I!==null&&r.add(I)}),ga(()=>{var i=t();if(e===document.activeElement){var o=I;if(r.has(o))return}if(Pr(e,i,n),n&&i===void 0){var a=e.querySelector(":checked");a!==null&&(i=_s(a),s(i))}e.__value=i,n=!1}),Qn(e)}function _s(e){return"__value"in e?e.__value:e.value}const Da=Symbol("is custom element"),Fa=Symbol("is html"),Ba=_i?"progress":"PROGRESS";function Ys(e,t){var s=$n(e);s.value===(s.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==Ba)||(e.value=t??"")}function U(e,t,s,r){var n=$n(e);n[t]!==(n[t]=s)&&(t==="loading"&&(e[pi]=s),s==null?e.removeAttribute(t):typeof s!="string"&&qa(e).includes(t)?e[t]=s:e.setAttribute(t,s))}function $n(e){return e[Ls]??(e[Ls]={[Da]:e.nodeName.includes("-"),[Fa]:e.namespaceURI===dn})}var tn=new Map;function qa(e){var t=e.getAttribute("is")||e.nodeName,s=tn.get(t);if(s)return s;tn.set(t,s=[]);for(var r,n=e,i=Element.prototype;i!==n;){r=li(n);for(var o in r)r[o].set&&o!=="innerHTML"&&o!=="textContent"&&o!=="innerText"&&s.push(o);n=an(n)}return s}function Bs(e,t,s=t){var r=new WeakSet;Ln(e,"input",async n=>{var i=n?e.defaultValue:e.value;if(i=cr(e)?fr(i):i,s(i),I!==null&&r.add(I),await xa(),i!==(i=t())){var o=e.selectionStart,a=e.selectionEnd,l=e.value.length;if(e.value=i??"",a!==null){var c=e.value.length;o===a&&a===l&&c>l?(e.selectionStart=c,e.selectionEnd=c):(e.selectionStart=o,e.selectionEnd=Math.min(a,c))}}}),Mr(t)==null&&e.value&&(s(cr(e)?fr(e.value):e.value),I!==null&&r.add(I)),Nn(()=>{var n=t();if(e===document.activeElement){var i=I;if(r.has(i))return}cr(e)&&n===fr(e.value)||e.type==="date"&&!n&&!e.value||n!==e.value&&(e.value=n??"")})}function cr(e){var t=e.type;return t==="number"||t==="range"}function fr(e){return e===""?null:+e}function Z(e,t,s,r){var n=!0,i=(s&Li)!==0,o=(s&Ii)!==0,a=r,l=!0,c=void 0,u=()=>o&&n?(c??(c=gs(r)),v(c)):(l&&(l=!1,a=o?Mr(r):r),a);let f;if(i){var d=Wt in e||hi in e;f=Ut(e,t)?.set??(d&&t in e?E=>e[t]=E:void 0)}var g,_=!1;i?[g,_]=Hi(()=>e[t]):g=e[t],g===void 0&&r!==void 0&&(g=u(),f&&(xi(),f(g)));var y;if(y=()=>{var E=e[t];return E===void 0?u():(l=!0,E)},(s&Oi)===0)return y;if(f){var p=e.$$legacy;return(function(E,F){return arguments.length>0?((!F||p||_)&&f(F?y():E),E):y()})}var b=!1,w=((s&Ri)!==0?gs:En)(()=>(b=!1,y()));i&&v(w);var S=N;return(function(E,F){if(arguments.length>0){const G=F?v(w):i?Se(E):E;return q(w,G),b=!0,a!==void 0&&(a=G),E}return tt&&b||(S.f&Ve)!==0?w.v:v(w)})}const Ka="5";var nn;typeof window<"u"&&((nn=window.__svelte??(window.__svelte={})).v??(nn.v=new Set)).add(Ka);const Kt=typeof window<"u"&&window.slashedBricksApp?window.slashedBricksApp:{defaults:{},settings:{},tabs:{},rest:{url:"",nonce:""}},$={defaults:Kt.defaults||{},tabs:Kt.tabs||{},rest:Kt.rest||{url:"",nonce:""},inventory:Kt.inventory||{variables:[],sf_classes:[],is_classes:[]},pluginSettings:Kt.pluginSettings||{}},Y=Se(structuredClone(Kt.settings||{})),z=Se({activeTab:Ha($.tabs)||"colors",dirty:!1,saving:!1,lastSavedAt:null,error:""});function Ha(e){for(const t in e)return t;return null}function ei(){z.dirty=!0,z.error=""}function Ga(e){Y[e]&&delete Y[e]}function ys(e,t,s){Y[e]||(Y[e]={}),s===""||s===null||s===void 0||typeof s=="string"&&s.trim()===""?delete Y[e][t]:Y[e][t]=String(s),ei()}var Ua=j(''),Ya=j('');function Wa(e,t){te(t,!0);var s=Ya();ne(s,21,()=>Object.entries($.tabs),([r,n])=>r,(r,n)=>{var i=A(()=>Vt(v(n),2));let o=()=>v(i)[0],a=()=>v(i)[1];var l=Ua();let c;var u=m(l);M(()=>{c=Zt(l,1,"tab-nav__btn svelte-yyiz68",null,c,{active:z.activeTab===o()}),C(u,a())}),oe("click",l,()=>z.activeTab=o()),T(r,l)}),T(e,s),se()}Be(["click"]);var Za=j(' '),Xa=j(' ',1),Ja=j(''),Qa=j('
');function sn(e,t){te(t,!0);let s=Z(t,"hexHint",3,""),r=Z(t,"rawHint",3,""),n=Z(t,"cssVar",3,"");const i=/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,o=(()=>{const L=(Y.colors?.[t.storeKey]??"").trim(),B=L===""||i.test(L);return{mode:B?"hex":"raw",hex:B?L:"",raw:B?"":L}})();let a=re(Se(o.mode)),l=re(Se(o.hex)),c=re(Se(o.raw));function u(){Y.colors||(Y.colors={});const L=v(c).trim(),B=v(l).trim(),J=v(a)==="raw"?L:B;J===""?delete Y.colors[t.storeKey]:Y.colors[t.storeKey]=J,ei()}function f(){v(a)==="hex"?(q(a,"raw"),q(l,"")):(q(a,"hex"),q(c,"")),u()}const d=A(()=>(v(a)==="raw"?v(c):v(l))||s()||"transparent");var g=Qa(),_=m(g),y=m(_),p=m(y),b=k(y,2);{var w=L=>{var B=Za(),J=m(B);M(()=>C(J,n())),T(L,B)};le(b,L=>{n()&&L(w)})}var S=k(_,2),E=m(S);let F;var G=k(E,2);{var W=L=>{var B=Xa(),J=zr(B),ve=k(J,2);M(()=>{U(J,"id",t.storeKey),U(ve,"placeholder",s())}),oe("input",J,u),Bs(J,()=>v(l),Ie=>q(l,Ie)),oe("input",ve,u),Bs(ve,()=>v(l),Ie=>q(l,Ie)),T(L,B)},x=L=>{var B=Ja();M(()=>{U(B,"id",t.storeKey),U(B,"placeholder",r())}),oe("input",B,u),Bs(B,()=>v(c),J=>q(c,J)),T(L,B)};le(G,L=>{v(a)==="hex"?L(W):L(x,-1)})}var H=k(G,2),V=m(H);M(()=>{U(y,"for",t.storeKey),C(p,t.label),F=mt(E,"",F,{background:v(d)}),C(V,v(a)==="hex"?"Advanced (oklch / raw)":"Use HEX picker")}),oe("click",H,f),T(e,g),se()}Be(["input","click"]);var $a=j(`

Brand Colors

Pick a color via the HEX input, or switch to Advanced to paste any +var na=Object.defineProperty;var Fr=e=>{throw TypeError(e)};var aa=(e,t,s)=>t in e?na(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var _e=(e,t,s)=>aa(e,typeof t!="symbol"?t+"":t,s),ar=(e,t,s)=>t.has(e)||Fr("Cannot "+s);var p=(e,t,s)=>(ar(e,t,"read from private field"),s?s.call(e):t.get(e)),R=(e,t,s)=>t.has(e)?Fr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,s),O=(e,t,s,r)=>(ar(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s),N=(e,t,s)=>(ar(e,t,"access private method"),s);var Tr=Array.isArray,ia=Array.prototype.indexOf,Tt=Array.prototype.includes,$s=Array.from,oa=Object.defineProperty,Ut=Object.getOwnPropertyDescriptor,la=Object.getOwnPropertyDescriptors,ca=Object.prototype,fa=Array.prototype,an=Object.getPrototypeOf,Br=Object.isExtensible;const on=()=>{};function da(e){for(var t=0;t{e=r,t=n});return{promise:s,resolve:e,reject:t}}function et(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);const s=[];for(const r of e)if(s.push(r),s.length===t)break;return s}const fe=2,ss=4,Qs=8,cn=1<<24,Pe=16,Fe=32,vt=64,ur=128,ze=512,ie=1024,ce=2048,Ye=4096,ue=8192,Ve=16384,It=32768,Kr=1<<25,Ot=65536,qs=1<<17,ua=1<<18,is=1<<19,va=1<<20,Ue=1<<25,Rt=65536,Hs=1<<21,Yt=1<<22,ut=1<<23,Wt=Symbol("$state"),ha=Symbol("legacy props"),pa=Symbol(""),Ms=Symbol("attributes"),vr=Symbol("class"),hr=Symbol("style"),ds=Symbol("text"),Is=Symbol("form reset"),er=new class extends Error{constructor(){super(...arguments);_e(this,"name","StaleReactionError");_e(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}},_a=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml");function ga(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function ma(e,t,s){throw new Error("https://svelte.dev/e/each_key_duplicate")}function ba(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function ya(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function wa(e){throw new Error("https://svelte.dev/e/effect_orphan")}function ka(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function xa(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function Sa(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Ea(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Ta(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function ja(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Aa=1,Ca=2,fn=4,za=8,Va=16,Oa=1,Ra=4,La=8,Ma=16,Ia=1,Pa=2,ae=Symbol("uninitialized"),dn="http://www.w3.org/1999/xhtml";function Da(){console.warn("https://svelte.dev/e/derived_inert")}function Na(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function Fa(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function un(e){return e===this.v}function Ba(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function vn(e){return!Ba(e,this.v)}let Re=null;function rs(e){Re=e}function se(e,t=!1,s){Re={p:Re,i:!1,c:null,e:null,s:e,x:null,r:D,l:null}}function re(e){var t=Re,s=t.e;if(s!==null){t.e=null;for(var r of s)Pn(r)}return t.i=!0,Re=t.p,{}}function hn(){return!0}let _t=[];function pn(){var e=_t;_t=[],da(e)}function jt(e){if(_t.length===0&&!hs){var t=_t;queueMicrotask(()=>{t===_t&&pn()})}_t.push(e)}function Ka(){for(;_t.length>0;)pn()}function _n(e){var t=D;if(t===null)return P.f|=ut,e;if((t.f&It)===0&&(t.f&ss)===0)throw e;dt(e,t)}function dt(e,t){for(;t!==null;){if((t.f&ur)!==0){if((t.f&It)===0)throw e;try{t.b.error(e);return}catch(s){e=s}}t=t.parent}throw e}const qa=-7169;function $(e,t){e.f=e.f&qa|t}function jr(e){(e.f&ze)!==0||e.deps===null?$(e,ie):$(e,Ye)}function gn(e){if(e!==null)for(const t of e)(t.f&fe)===0||(t.f&Rt)===0||(t.f^=Rt,gn(t.deps))}function mn(e,t,s){(e.f&ce)!==0?t.add(e):(e.f&Ye)!==0&&s.add(e),gn(e.deps),$(e,ie)}let Vs=!1;function Ha(e){var t=Vs;try{return Vs=!1,[e(),Vs]}finally{Vs=t}}let ir=null,Bt=null,M=null,pr=null,De=null,_r=null,hs=!1,or=!1,Gt=null,Ps=null;var qr=0;let Ga=1;var Xt,lt,yt,Jt,$t,wt,Qt,Je,ys,we,ws,ct,qe,He,es,kt,q,gr,us,mr,bn,yn,Ds,Ua,br,Kt;const Zs=class Zs{constructor(){R(this,q);_e(this,"id",Ga++);R(this,Xt,!1);_e(this,"linked",!0);R(this,lt,null);R(this,yt,null);_e(this,"async_deriveds",new Map);_e(this,"current",new Map);_e(this,"previous",new Map);_e(this,"unblocked",new Set);R(this,Jt,new Set);R(this,$t,new Set);R(this,wt,new Set);R(this,Qt,0);R(this,Je,new Map);R(this,ys,null);R(this,we,[]);R(this,ws,[]);R(this,ct,new Set);R(this,qe,new Set);R(this,He,new Map);R(this,es,new Set);_e(this,"is_fork",!1);R(this,kt,!1)}skip_effect(t){p(this,He).has(t)||p(this,He).set(t,{d:[],m:[]}),p(this,es).delete(t)}unskip_effect(t,s=r=>this.schedule(r)){var r=p(this,He).get(t);if(r){p(this,He).delete(t);for(var n of r.d)$(n,ce),s(n);for(n of r.m)$(n,Ye),s(n)}p(this,es).add(t)}capture(t,s,r=!1){t.v!==ae&&!this.previous.has(t)&&this.previous.set(t,t.v),(t.f&ut)===0&&(this.current.set(t,[s,r]),De?.set(t,s)),this.is_fork||(t.v=s)}activate(){M=this}deactivate(){M=null,De=null}flush(){try{or=!0,M=this,N(this,q,us).call(this)}finally{qr=0,_r=null,Gt=null,Ps=null,or=!1,M=null,De=null,At.clear()}}discard(){for(const t of p(this,$t))t(this);p(this,$t).clear(),p(this,wt).clear(),N(this,q,Kt).call(this)}register_created_effect(t){p(this,ws).push(t)}increment(t,s){if(O(this,Qt,p(this,Qt)+1),t){let r=p(this,Je).get(s)??0;p(this,Je).set(s,r+1)}}decrement(t,s){if(O(this,Qt,p(this,Qt)-1),t){let r=p(this,Je).get(s)??0;r===1?p(this,Je).delete(s):p(this,Je).set(s,r-1)}p(this,kt)||(O(this,kt,!0),jt(()=>{O(this,kt,!1),this.linked&&this.flush()}))}transfer_effects(t,s){for(const r of t)p(this,ct).add(r);for(const r of s)p(this,qe).add(r);t.clear(),s.clear()}oncommit(t){p(this,Jt).add(t)}ondiscard(t){p(this,$t).add(t)}on_fork_commit(t){p(this,wt).add(t)}run_fork_commit_callbacks(){for(const t of p(this,wt))t(this);p(this,wt).clear()}settled(){return(p(this,ys)??O(this,ys,ln())).promise}static ensure(){var t;if(M===null){const s=M=new Zs;N(t=s,q,br).call(t),!or&&!hs&&jt(()=>{p(s,Xt)||s.flush()})}return M}apply(){{De=null;return}}schedule(t){if(_r=t,t.b?.is_pending&&(t.f&(ss|Qs|cn))!==0&&(t.f&It)===0){t.b.defer_effect(t);return}for(var s=t;s.parent!==null;){s=s.parent;var r=s.f;if(Gt!==null&&s===D&&(P===null||(P.f&fe)===0))return;if((r&(vt|Fe))!==0){if((r&ie)===0)return;s.f^=ie}}p(this,we).push(s)}};Xt=new WeakMap,lt=new WeakMap,yt=new WeakMap,Jt=new WeakMap,$t=new WeakMap,wt=new WeakMap,Qt=new WeakMap,Je=new WeakMap,ys=new WeakMap,we=new WeakMap,ws=new WeakMap,ct=new WeakMap,qe=new WeakMap,He=new WeakMap,es=new WeakMap,kt=new WeakMap,q=new WeakSet,gr=function(){if(this.is_fork)return!0;for(const r of p(this,Je).keys()){for(var t=r,s=!1;t.parent!==null;){if(p(this,He).has(t)){s=!0;break}t=t.parent}if(!s)return!0}return!1},us=function(){var o,c,h;if(O(this,Xt,!0),qr++>1e3&&(N(this,q,Kt).call(this),Wa()),!N(this,q,gr).call(this)){for(const d of p(this,ct))p(this,qe).delete(d),$(d,ce),this.schedule(d);for(const d of p(this,qe))$(d,Ye),this.schedule(d)}const t=p(this,we);O(this,we,[]),this.apply();var s=Gt=[],r=[],n=Ps=[];for(const d of t)try{N(this,q,mr).call(this,d,s,r)}catch(f){throw xn(d),f}if(M=null,n.length>0){var a=Zs.ensure();for(const d of n)a.schedule(d)}if(Gt=null,Ps=null,N(this,q,gr).call(this)){N(this,q,Ds).call(this,r),N(this,q,Ds).call(this,s);for(const[d,f]of p(this,He))kn(d,f);n.length>0&&N(o=M,q,us).call(o);return}const i=N(this,q,bn).call(this);if(i){N(c=i,q,yn).call(c,this);return}p(this,ct).clear(),p(this,qe).clear();for(const d of p(this,Jt))d(this);p(this,Jt).clear(),pr=this,Hr(r),Hr(s),pr=null,p(this,ys)?.resolve();var l=M;if(this.linked&&p(this,Qt)===0&&N(this,q,Kt).call(this),p(this,we).length>0){l===null&&(l=this,N(this,q,br).call(this));const d=l;p(d,we).push(...p(this,we).filter(f=>!p(d,we).includes(f)))}l!==null&&N(h=l,q,us).call(h)},mr=function(t,s,r){t.f^=ie;for(var n=t.first;n!==null;){var a=n.f,i=(a&(Fe|vt))!==0,l=i&&(a&ie)!==0,o=l||(a&ue)!==0||p(this,He).has(n);if(!o&&n.fn!==null){i?n.f^=ie:(a&ss)!==0?s.push(n):js(n)&&((a&Pe)!==0&&p(this,qe).add(n),as(n));var c=n.first;if(c!==null){n=c;continue}}for(;n!==null;){var h=n.next;if(h!==null){n=h;break}n=n.parent}}},bn=function(){for(var t=p(this,lt);t!==null;){if(!t.is_fork){for(const[s,[,r]]of this.current)if(t.current.has(s)&&!r)return t}t=p(t,lt)}return null},yn=function(t){var r;for(const[n,a]of t.current)!this.previous.has(n)&&t.previous.has(n)&&this.previous.set(n,t.previous.get(n)),this.current.set(n,a);for(const[n,a]of t.async_deriveds){const i=this.async_deriveds.get(n);i&&a.promise.then(i.resolve)}const s=n=>{var a=n.reactions;if(a!==null)for(const o of a){var i=o.f;if((i&fe)!==0)s(o);else{var l=o;i&(Yt|Pe)&&!this.async_deriveds.has(l)&&(p(this,qe).delete(l),$(l,ce),this.schedule(l))}}};for(const n of this.current.keys())s(n);this.oncommit(()=>t.discard()),N(r=t,q,Kt).call(r),M=this,N(this,q,us).call(this)},Ds=function(t){for(var s=0;s!this.current.has(f));if(n.length===0)t&&d.discard();else if(s.length>0){if(t)for(const f of p(this,es))d.unskip_effect(f,g=>{var _;(g.f&(Pe|Yt))!==0?d.schedule(g):N(_=d,q,Ds).call(_,[g])});d.activate();var a=new Set,i=new Map;for(var l of s)wn(l,n,a,i);i=new Map;var o=[...d.current.keys()].filter(f=>this.current.has(f)?this.current.get(f)[0]!==f.v:!0);if(o.length>0)for(const f of p(this,ws))(f.f&(Ve|ue|qs))===0&&Ar(f,o,i)&&((f.f&(Yt|Pe))!==0?($(f,ce),d.schedule(f)):p(d,ct).add(f));if(p(d,we).length>0&&!p(d,kt)){d.apply();for(var c of p(d,we))N(h=d,q,mr).call(h,c,[],[]);O(d,we,[])}d.deactivate()}}}},br=function(){Bt===null?ir=Bt=this:(O(Bt,yt,this),O(this,lt,Bt)),Bt=this},Kt=function(){var t=p(this,lt),s=p(this,yt);t===null?ir=s:O(t,yt,s),s===null?Bt=t:O(s,lt,t),this.linked=!1};let Lt=Zs;function Ya(e){var t=hs;hs=!0;try{for(var s;;){if(Ka(),M===null)return s;M.flush()}}finally{hs=t}}function Wa(){try{ka()}catch(e){dt(e,_r)}}let Xe=null;function Hr(e){var t=e.length;if(t!==0){for(var s=0;s0)){At.clear();for(const n of Xe){if((n.f&(Ve|ue))!==0)continue;const a=[n];let i=n.parent;for(;i!==null;)Xe.has(i)&&(Xe.delete(i),a.push(i)),i=i.parent;for(let l=a.length-1;l>=0;l--){const o=a[l];(o.f&(Ve|ue))===0&&as(o)}}Xe.clear()}}Xe=null}}function wn(e,t,s,r){if(!s.has(e)&&(s.add(e),e.reactions!==null))for(const n of e.reactions){const a=n.f;(a&fe)!==0?wn(n,t,s,r):(a&(Yt|Pe))!==0&&(a&ce)===0&&Ar(n,t,r)&&($(n,ce),Cr(n))}}function Ar(e,t,s){const r=s.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const n of e.deps){if(Tt.call(t,n))return!0;if((n.f&fe)!==0&&Ar(n,t,s))return s.set(n,!0),!0}return s.set(e,!1),!1}function Cr(e){M.schedule(e)}function kn(e,t){if(!((e.f&Fe)!==0&&(e.f&ie)!==0)){(e.f&ce)!==0?t.d.push(e):(e.f&Ye)!==0&&t.m.push(e),$(e,ie);for(var s=e.first;s!==null;)kn(s,t),s=s.next}}function xn(e){$(e,ie);for(var t=e.first;t!==null;)xn(t),t=t.next}function Za(e){let t=0,s=Mt(0),r;return()=>{Rr()&&(u(s),Dn(()=>(t===0&&(r=Pr(()=>e(()=>ps(s)))),t+=1,()=>{jt(()=>{t-=1,t===0&&(r?.(),r=void 0,ps(s))})})))}}var Xa=Ot|is;function Ja(e,t,s,r){new $a(e,t,s,r)}var Te,Er,je,xt,ge,Ae,de,ke,$e,St,ft,ts,ks,xs,Qe,Xs,te,Qa,ei,ti,yr,Ns,Fs,wr,kr;class $a{constructor(t,s,r,n){R(this,te);_e(this,"parent");_e(this,"is_pending",!1);_e(this,"transform_error");R(this,Te);R(this,Er,null);R(this,je);R(this,xt);R(this,ge);R(this,Ae,null);R(this,de,null);R(this,ke,null);R(this,$e,null);R(this,St,0);R(this,ft,0);R(this,ts,!1);R(this,ks,new Set);R(this,xs,new Set);R(this,Qe,null);R(this,Xs,Za(()=>(O(this,Qe,Mt(p(this,St))),()=>{O(this,Qe,null)})));O(this,Te,t),O(this,je,s),O(this,xt,a=>{var i=D;i.b=this,i.f|=ur,r(a)}),this.parent=D.b,this.transform_error=n??this.parent?.transform_error??(a=>a),O(this,ge,tr(()=>{N(this,te,yr).call(this)},Xa))}defer_effect(t){mn(t,p(this,ks),p(this,xs))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!p(this,je).pending}update_pending_count(t,s){N(this,te,wr).call(this,t,s),O(this,St,p(this,St)+t),!(!p(this,Qe)||p(this,ts))&&(O(this,ts,!0),jt(()=>{O(this,ts,!1),p(this,Qe)&&ns(p(this,Qe),p(this,St))}))}get_effect_pending(){return p(this,Xs).call(this),u(p(this,Qe))}error(t){if(!p(this,je).onerror&&!p(this,je).failed)throw t;M?.is_fork?(p(this,Ae)&&M.skip_effect(p(this,Ae)),p(this,de)&&M.skip_effect(p(this,de)),p(this,ke)&&M.skip_effect(p(this,ke)),M.on_fork_commit(()=>{N(this,te,kr).call(this,t)})):N(this,te,kr).call(this,t)}}Te=new WeakMap,Er=new WeakMap,je=new WeakMap,xt=new WeakMap,ge=new WeakMap,Ae=new WeakMap,de=new WeakMap,ke=new WeakMap,$e=new WeakMap,St=new WeakMap,ft=new WeakMap,ts=new WeakMap,ks=new WeakMap,xs=new WeakMap,Qe=new WeakMap,Xs=new WeakMap,te=new WeakSet,Qa=function(){try{O(this,Ae,Ce(()=>p(this,xt).call(this,p(this,Te))))}catch(t){this.error(t)}},ei=function(t){const s=p(this,je).failed;s&&O(this,ke,Ce(()=>{s(p(this,Te),()=>t,()=>()=>{})}))},ti=function(){const t=p(this,je).pending;t&&(this.is_pending=!0,O(this,de,Ce(()=>t(p(this,Te)))),jt(()=>{var s=O(this,$e,document.createDocumentFragment()),r=Ct();s.append(r),O(this,Ae,N(this,te,Fs).call(this,()=>Ce(()=>p(this,xt).call(this,r)))),p(this,ft)===0&&(p(this,Te).before(s),O(this,$e,null),zt(p(this,de),()=>{O(this,de,null)}),N(this,te,Ns).call(this,M))}))},yr=function(){try{if(this.is_pending=this.has_pending_snippet(),O(this,ft,0),O(this,St,0),O(this,Ae,Ce(()=>{p(this,xt).call(this,p(this,Te))})),p(this,ft)>0){var t=O(this,$e,document.createDocumentFragment());Ir(p(this,Ae),t);const s=p(this,je).pending;O(this,de,Ce(()=>s(p(this,Te))))}else N(this,te,Ns).call(this,M)}catch(s){this.error(s)}},Ns=function(t){this.is_pending=!1,t.transfer_effects(p(this,ks),p(this,xs))},Fs=function(t){var s=D,r=P,n=Re;We(p(this,ge)),Le(p(this,ge)),rs(p(this,ge).ctx);try{return Lt.ensure(),t()}catch(a){return _n(a),null}finally{We(s),Le(r),rs(n)}},wr=function(t,s){var r;if(!this.has_pending_snippet()){this.parent&&N(r=this.parent,te,wr).call(r,t,s);return}O(this,ft,p(this,ft)+t),p(this,ft)===0&&(N(this,te,Ns).call(this,s),p(this,de)&&zt(p(this,de),()=>{O(this,de,null)}),p(this,$e)&&(p(this,Te).before(p(this,$e)),O(this,$e,null)))},kr=function(t){p(this,Ae)&&(be(p(this,Ae)),O(this,Ae,null)),p(this,de)&&(be(p(this,de)),O(this,de,null)),p(this,ke)&&(be(p(this,ke)),O(this,ke,null));var s=p(this,je).onerror;let r=p(this,je).failed;var n=!1,a=!1;const i=()=>{if(n){Fa();return}n=!0,a&&ja(),p(this,ke)!==null&&zt(p(this,ke),()=>{O(this,ke,null)}),N(this,te,Fs).call(this,()=>{N(this,te,yr).call(this)})},l=o=>{try{a=!0,s?.(o,i),a=!1}catch(c){dt(c,p(this,ge)&&p(this,ge).parent)}r&&O(this,ke,N(this,te,Fs).call(this,()=>{try{return Ce(()=>{var c=D;c.b=this,c.f|=ur,r(p(this,Te),()=>o,()=>i)})}catch(c){return dt(c,p(this,ge).parent),null}}))};jt(()=>{var o;try{o=this.transform_error(t)}catch(c){dt(c,p(this,ge)&&p(this,ge).parent);return}o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(l,c=>dt(c,p(this,ge)&&p(this,ge).parent)):l(o)})};function si(e,t,s,r){const n=gs;var a=e.filter(f=>!f.settled);if(s.length===0&&a.length===0){r(t.map(n));return}var i=D,l=ri(),o=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(f=>f.promise)):null;function c(f){if((i.f&Ve)===0){l();try{r(f)}catch(g){dt(g,i)}Gs()}}var h=Sn();if(s.length===0){o.then(()=>c(t.map(n))).finally(h);return}function d(){Promise.all(s.map(f=>ni(f))).then(f=>c([...t.map(n),...f])).catch(f=>dt(f,i)).finally(h)}o?o.then(()=>{l(),d(),Gs()}):d()}function ri(){var e=D,t=P,s=Re,r=M;return function(a=!0){We(e),Le(t),rs(s),a&&(e.f&Ve)===0&&(r?.activate(),r?.apply())}}function Gs(e=!0){We(null),Le(null),rs(null),e&&M?.deactivate()}function Sn(){var e=D,t=e.b,s=M,r=t.is_rendered();return t.update_pending_count(1,s),s.increment(r,e),()=>{t.update_pending_count(-1,s),s.decrement(r,e)}}function gs(e){var t=fe|ce;return D!==null&&(D.f|=is),{ctx:Re,deps:null,effects:null,equals:un,f:t,fn:e,reactions:null,rv:0,v:ae,wv:0,parent:D,ac:null}}const Os=Symbol("obsolete");function ni(e,t,s){let r=D;r===null&&ga();var n=void 0,a=Mt(ae),i=!P,l=new Set;return mi(()=>{var o=D,c=ln();n=c.promise;try{Promise.resolve(e()).then(c.resolve,g=>{g!==er&&c.reject(g)}).finally(Gs)}catch(g){c.reject(g),Gs()}var h=M;if(i){if((o.f&It)!==0)var d=Sn();if(r.b.is_rendered())h.async_deriveds.get(o)?.reject(Os);else for(const g of l.values())g.reject(Os);l.add(c),h.async_deriveds.set(o,c)}const f=(g,_=void 0)=>{d?.(),l.delete(c),_!==Os&&(h.activate(),_?(a.f|=ut,ns(a,_)):((a.f&ut)!==0&&(a.f^=ut),ns(a,g)),h.deactivate())};c.promise.then(f,g=>f(null,g||"unknown"))}),Mn(()=>{for(const o of l)o.reject(Os)}),new Promise(o=>{function c(h){function d(){h===n?o(a):c(n)}h.then(d,d)}c(n)})}function E(e){const t=gs(e);return qn(t),t}function En(e){const t=gs(e);return t.equals=vn,t}function ai(e){var t=e.effects;if(t!==null){e.effects=null;for(var s=0;s0&&!An&&li()}return t}function li(){An=!1;for(const e of Us){(e.f&ie)!==0&&$(e,Ye);let t;try{t=js(e)}catch{t=!0}t&&as(e)}Us.clear()}function ps(e){K(e,e.v+1)}function Cn(e,t,s){var r=e.reactions;if(r!==null)for(var n=r.length,a=0;a{if(Vt===a)return l();var o=P,c=Vt;Le(null),Zr(a);var h=l();return Le(o),Zr(c),h};return r&&s.set("length",ne(e.length)),new Proxy(e,{defineProperty(l,o,c){(!("value"in c)||c.configurable===!1||c.enumerable===!1||c.writable===!1)&&Sa();var h=s.get(o);return h===void 0?i(()=>{var d=ne(c.value);return s.set(o,d),d}):K(h,c.value,!0),!0},deleteProperty(l,o){var c=s.get(o);if(c===void 0){if(o in l){const h=i(()=>ne(ae));s.set(o,h),ps(n)}}else K(c,ae),ps(n);return!0},get(l,o,c){if(o===Wt)return e;var h=s.get(o),d=o in l;if(h===void 0&&(!d||Ut(l,o)?.writable)&&(h=i(()=>{var g=Se(d?l[o]:ae),_=ne(g);return _}),s.set(o,h)),h!==void 0){var f=u(h);return f===ae?void 0:f}return Reflect.get(l,o,c)},getOwnPropertyDescriptor(l,o){var c=Reflect.getOwnPropertyDescriptor(l,o);if(c&&"value"in c){var h=s.get(o);h&&(c.value=u(h))}else if(c===void 0){var d=s.get(o),f=d?.v;if(d!==void 0&&f!==ae)return{enumerable:!0,configurable:!0,value:f,writable:!0}}return c},has(l,o){if(o===Wt)return!0;var c=s.get(o),h=c!==void 0&&c.v!==ae||Reflect.has(l,o);if(c!==void 0||D!==null&&(!h||Ut(l,o)?.writable)){c===void 0&&(c=i(()=>{var f=h?Se(l[o]):ae,g=ne(f);return g}),s.set(o,c));var d=u(c);if(d===ae)return!1}return h},set(l,o,c,h){var d=s.get(o),f=o in l;if(r&&o==="length")for(var g=c;gne(ae)),s.set(g+"",_))}if(d===void 0)(!f||Ut(l,o)?.writable)&&(d=i(()=>ne(void 0)),K(d,Se(c)),s.set(o,d));else{f=d.v!==ae;var b=i(()=>Se(c));K(d,b)}var v=Reflect.getOwnPropertyDescriptor(l,o);if(v?.set&&v.set.call(h,c),!f){if(r&&typeof o=="string"){var m=s.get("length"),w=Number(o);Number.isInteger(w)&&w>=m.v&&K(m,w+1)}ps(n)}return!0},ownKeys(l){u(n);var o=Reflect.ownKeys(l).filter(d=>{var f=s.get(d);return f===void 0||f.v!==ae});for(var[c,h]of s)h.v!==ae&&!(c in l)&&o.push(c);return o},setPrototypeOf(){Ea()}})}function Gr(e){try{if(e!==null&&typeof e=="object"&&Wt in e)return e[Wt]}catch{}return e}function ci(e,t){return Object.is(Gr(e),Gr(t))}var Ur,zn,Vn,On;function fi(){if(Ur===void 0){Ur=window,zn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,s=Text.prototype;Vn=Ut(t,"firstChild").get,On=Ut(t,"nextSibling").get,Br(e)&&(e[vr]=void 0,e[Ms]=null,e[hr]=void 0,e.__e=void 0),Br(s)&&(s[ds]=void 0)}}function Ct(e=""){return document.createTextNode(e)}function Ys(e){return Vn.call(e)}function Ts(e){return On.call(e)}function y(e,t){return Ys(e)}function Vr(e,t=!1){{var s=Ys(e);return s instanceof Comment&&s.data===""?Ts(s):s}}function k(e,t=1,s=!1){let r=e;for(;t--;)r=Ts(r);return r}function di(e){e.textContent=""}function Rn(){return!1}function ui(e,t,s){return document.createElementNS(dn,e,void 0)}let Yr=!1;function vi(){Yr||(Yr=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t[Is]?.()})},{capture:!0}))}function Or(e){var t=P,s=D;Le(null),We(null);try{return e()}finally{Le(t),We(s)}}function Ln(e,t,s,r=s){e.addEventListener(t,()=>Or(s));const n=e[Is];n?e[Is]=()=>{n(),r(!0)}:e[Is]=()=>r(!0),vi()}function hi(e){D===null&&(P===null&&wa(),ya()),st&&ba()}function pi(e,t){var s=t.last;s===null?t.last=t.first=e:(s.next=e,e.prev=s,t.last=e)}function rt(e,t){var s=D;s!==null&&(s.f&ue)!==0&&(e|=ue);var r={ctx:Re,deps:null,nodes:null,f:e|ce|ze,first:null,fn:t,last:null,next:null,parent:s,b:s&&s.b,prev:null,teardown:null,wv:0,ac:null};M?.register_created_effect(r);var n=r;if((e&ss)!==0)Gt!==null?Gt.push(r):Lt.ensure().schedule(r);else if(t!==null){try{as(r)}catch(i){throw be(r),i}n.deps===null&&n.teardown===null&&n.nodes===null&&n.first===n.last&&(n.f&is)===0&&(n=n.first,(e&Pe)!==0&&(e&Ot)!==0&&n!==null&&(n.f|=Ot))}if(n!==null&&(n.parent=s,s!==null&&pi(n,s),P!==null&&(P.f&fe)!==0&&(e&vt)===0)){var a=P;(a.effects??(a.effects=[])).push(n)}return r}function Rr(){return P!==null&&!Ne}function Mn(e){const t=rt(Qs,null);return $(t,ie),t.teardown=e,t}function In(e){hi();var t=D.f,s=!P&&(t&Fe)!==0&&(t&It)===0;if(s){var r=Re;(r.e??(r.e=[])).push(e)}else return Pn(e)}function Pn(e){return rt(ss|va,e)}function _i(e){Lt.ensure();const t=rt(vt|is,e);return(s={})=>new Promise(r=>{s.outro?zt(t,()=>{be(t),r(void 0)}):(be(t),r(void 0))})}function gi(e){return rt(ss,e)}function mi(e){return rt(Yt|is,e)}function Dn(e,t=0){return rt(Qs|t,e)}function I(e,t=[],s=[],r=[]){si(r,t,s,n=>{rt(Qs,()=>e(...n.map(u)))})}function tr(e,t=0){var s=rt(Pe|t,e);return s}function Ce(e){return rt(Fe|is,e)}function Nn(e){var t=e.teardown;if(t!==null){const s=st,r=P;Wr(!0),Le(null);try{t.call(null)}finally{Wr(s),Le(r)}}}function Lr(e,t=!1){var s=e.first;for(e.first=e.last=null;s!==null;){const n=s.ac;n!==null&&Or(()=>{n.abort(er)});var r=s.next;(s.f&vt)!==0?s.parent=null:be(s,t),s=r}}function bi(e){for(var t=e.first;t!==null;){var s=t.next;(t.f&Fe)===0&&be(t),t=s}}function be(e,t=!0){var s=!1;(t||(e.f&ua)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(yi(e.nodes.start,e.nodes.end),s=!0),$(e,Kr),Lr(e,t&&!s),ms(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(const a of r)a.stop();Nn(e),e.f^=Kr,e.f|=Ve;var n=e.parent;n!==null&&n.first!==null&&Fn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function yi(e,t){for(;e!==null;){var s=e===t?null:Ts(e);e.remove(),e=s}}function Fn(e){var t=e.parent,s=e.prev,r=e.next;s!==null&&(s.next=r),r!==null&&(r.prev=s),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=s))}function zt(e,t,s=!0){var r=[];Bn(e,r,!0);var n=()=>{s&&be(e),t&&t()},a=r.length;if(a>0){var i=()=>--a||n();for(var l of r)l.out(i)}else n()}function Bn(e,t,s){if((e.f&ue)===0){e.f^=ue;var r=e.nodes&&e.nodes.t;if(r!==null)for(const l of r)(l.is_global||s)&&t.push(l);for(var n=e.first;n!==null;){var a=n.next;if((n.f&vt)===0){var i=(n.f&Ot)!==0||(n.f&Fe)!==0&&(e.f&Pe)!==0;Bn(n,t,i?s:!1)}n=a}}}function Mr(e){Kn(e,!0)}function Kn(e,t){if((e.f&ue)!==0){e.f^=ue,(e.f&ie)===0&&($(e,ce),Lt.ensure().schedule(e));for(var s=e.first;s!==null;){var r=s.next,n=(s.f&Ot)!==0||(s.f&Fe)!==0;Kn(s,n?t:!1),s=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(const i of a)(i.is_global||t)&&i.in()}}function Ir(e,t){if(e.nodes)for(var s=e.nodes.start,r=e.nodes.end;s!==null;){var n=s===r?null:Ts(s);t.append(s),s=n}}let Bs=!1,st=!1;function Wr(e){st=e}let P=null,Ne=!1;function Le(e){P=e}let D=null;function We(e){D=e}let Oe=null;function qn(e){P!==null&&(Oe===null?Oe=[e]:Oe.push(e))}let me=null,ye=0,Ee=null;function wi(e){Ee=e}let Hn=1,gt=0,Vt=gt;function Zr(e){Vt=e}function Gn(){return++Hn}function js(e){var t=e.f;if((t&ce)!==0)return!0;if(t&fe&&(e.f&=~Rt),(t&Ye)!==0){for(var s=e.deps,r=s.length,n=0;ne.wv)return!0}(t&ze)!==0&&De===null&&$(e,ie)}return!1}function Un(e,t,s=!0){var r=e.reactions;if(r!==null&&!(Oe!==null&&Tt.call(Oe,e)))for(var n=0;n{e.ac.abort(er)}),e.ac=null);try{e.f|=Hs;var h=e.fn,d=h();e.f|=It;var f=e.deps,g=M?.is_fork;if(me!==null){var _;if(g||ms(e,ye),f!==null&&ye>0)for(f.length=ye+me.length,_=0;_{throw v});throw f}}finally{e[mt]=t,delete e.currentTarget,Le(h),We(d)}}}const Ti=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function ji(e){return Ti?.createHTML(e)??e}function Ai(e){var t=ui("template");return t.innerHTML=ji(e.replaceAll("","")),t.content}function $r(e,t){var s=D;s.nodes===null&&(s.nodes={start:e,end:t,a:null,t:null})}function A(e,t){var s=(t&Ia)!==0,r=(t&Pa)!==0,n,a=!e.startsWith("");return()=>{n===void 0&&(n=Ai(a?e:""+e),s||(n=Ys(n)));var i=r||zn?document.importNode(n,!0):n.cloneNode(!0);if(s){var l=Ys(i),o=i.lastChild;$r(l,o)}else $r(i,i);return i}}function j(e,t){e!==null&&e.before(t)}function C(e,t){var s=t==null?"":typeof t=="object"?`${t}`:t;s!==(e[ds]??(e[ds]=e.nodeValue))&&(e[ds]=s,e.nodeValue=`${s}`)}function Ci(e,t){return zi(e,t)}const Rs=new Map;function zi(e,{target:t,anchor:s,props:r={},events:n,context:a,intro:i=!0,transformError:l}){fi();var o=void 0,c=_i(()=>{var h=s??t.appendChild(Ct());Ja(h,{pending:()=>{}},g=>{se({});var _=Re;a&&(_.c=a),n&&(r.$$events=n),o=e(g,r)||{},re()},l);var d=new Set,f=g=>{for(var _=0;_{for(var g of d)for(const v of[t,document]){var _=Rs.get(v),b=_.get(g);--b==0?(v.removeEventListener(g,Jr),_.delete(g),_.size===0&&Rs.delete(v)):_.set(g,b)}xr.delete(f),h!==s&&h.parentNode?.removeChild(h)}});return Vi.set(o,c),o}let Vi=new WeakMap;var Ie,Ge,xe,Et,Ss,Es,Js;class Jn{constructor(t,s=!0){_e(this,"anchor");R(this,Ie,new Map);R(this,Ge,new Map);R(this,xe,new Map);R(this,Et,new Set);R(this,Ss,!0);R(this,Es,t=>{if(p(this,Ie).has(t)){var s=p(this,Ie).get(t),r=p(this,Ge).get(s);if(r)Mr(r),p(this,Et).delete(s);else{var n=p(this,xe).get(s);n&&(p(this,Ge).set(s,n.effect),p(this,xe).delete(s),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),r=n.effect)}for(const[a,i]of p(this,Ie)){if(p(this,Ie).delete(a),a===t)break;const l=p(this,xe).get(i);l&&(be(l.effect),p(this,xe).delete(i))}for(const[a,i]of p(this,Ge)){if(a===s||p(this,Et).has(a))continue;const l=()=>{if(Array.from(p(this,Ie).values()).includes(a)){var c=document.createDocumentFragment();Ir(i,c),c.append(Ct()),p(this,xe).set(a,{effect:i,fragment:c})}else be(i);p(this,Et).delete(a),p(this,Ge).delete(a)};p(this,Ss)||!r?(p(this,Et).add(a),zt(i,l,!1)):l()}}});R(this,Js,t=>{p(this,Ie).delete(t);const s=Array.from(p(this,Ie).values());for(const[r,n]of p(this,xe))s.includes(r)||(be(n.effect),p(this,xe).delete(r))});this.anchor=t,O(this,Ss,s)}ensure(t,s){var r=M,n=Rn();if(s&&!p(this,Ge).has(t)&&!p(this,xe).has(t))if(n){var a=document.createDocumentFragment(),i=Ct();a.append(i),p(this,xe).set(t,{effect:Ce(()=>s(i)),fragment:a})}else p(this,Ge).set(t,Ce(()=>s(this.anchor)));if(p(this,Ie).set(r,t),n){for(const[l,o]of p(this,Ge))l===t?r.unskip_effect(o):r.skip_effect(o);for(const[l,o]of p(this,xe))l===t?r.unskip_effect(o.effect):r.skip_effect(o.effect);r.oncommit(p(this,Es)),r.ondiscard(p(this,Js))}else p(this,Es).call(this,r)}}Ie=new WeakMap,Ge=new WeakMap,xe=new WeakMap,Et=new WeakMap,Ss=new WeakMap,Es=new WeakMap,Js=new WeakMap;function le(e,t,s=!1){var r=new Jn(e),n=s?Ot:0;function a(i,l){r.ensure(i,l)}tr(()=>{var i=!1;t((l,o=0)=>{i=!0,a(o,l)}),i||a(-1,null)},n)}function cs(e,t){return t}function Oi(e,t,s){for(var r=[],n=t.length,a,i=t.length,l=0;l{if(a){if(a.pending.delete(d),a.done.add(d),a.pending.size===0){var f=e.outrogroups;Sr(e,$s(a.done)),f.delete(a),f.size===0&&(e.outrogroups=null)}}else i-=1},!1)}if(i===0){var o=r.length===0&&s!==null;if(o){var c=s,h=c.parentNode;di(h),h.append(c),e.items.clear()}Sr(e,t,!o)}else a={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(a)}function Sr(e,t,s=!0){var r;if(e.pending.size>0){r=new Set;for(const i of e.pending.values())for(const l of i)r.add(e.items.get(l).e)}for(var n=0;n{var x=s();return Tr(x)?x:x==null?[]:$s(x)}),f,g=new Map,_=!0;function b(x){(w.effect.f&Ve)===0&&(w.pending.delete(x),w.fallback=h,Ri(w,f,i,t,r),h!==null&&(f.length===0?(h.f&Ue)===0?Mr(h):(h.f^=Ue,vs(h,null,i)):zt(h,()=>{h=null})))}function v(x){w.pending.delete(x)}var m=tr(()=>{f=u(d);for(var x=f.length,T=new Set,F=M,G=Rn(),W=0;Wa(i)):(h=Ce(()=>a(Qr??(Qr=Ct()))),h.f|=Ue)),x>T.size&&ma(),!_)if(g.set(F,T),G){for(const[L,B]of l)T.has(L)||F.skip_effect(B.e);F.oncommit(b),F.ondiscard(v)}else b(F);u(d)}),w={effect:m,items:l,pending:g,outrogroups:null,fallback:h};_=!1}function fs(e){for(;e!==null&&(e.f&Fe)===0;)e=e.next;return e}function Ri(e,t,s,r,n){var a=(r&za)!==0,i=t.length,l=e.items,o=fs(e.effect.first),c,h=null,d,f=[],g=[],_,b,v,m;if(a)for(m=0;m0){var H=(r&fn)!==0&&i===0?s:null;if(a){for(m=0;m{if(d!==void 0)for(v of d)v.nodes?.a?.apply()})}function Li(e,t,s,r,n,a,i,l){var o=(i&Aa)!==0?(i&Va)===0?oi(s,!1,!1):Mt(s):null,c=(i&Ca)!==0?Mt(n):null;return{v:o,i:c,e:Ce(()=>(a(t,o??s,c??n,l),()=>{e.delete(r)}))}}function vs(e,t,s){if(e.nodes)for(var r=e.nodes.start,n=e.nodes.end,a=t&&(t.f&Ue)===0?t.nodes.start:s;r!==null;){var i=Ts(r);if(a.before(r),r===n)return;r=i}}function ot(e,t,s){t===null?e.effect.first=s:t.next=s,s===null?e.effect.last=t:s.prev=t}function Mi(e,t,...s){var r=new Jn(e);tr(()=>{const n=t()??null;r.ensure(n,n&&(a=>n(a,...s)))},Ot)}const en=[...` +\r\f \v\uFEFF`];function Ii(e,t,s){var r=e==null?"":""+e;if(s){for(var n of Object.keys(s))if(s[n])r=r?r+" "+n:n;else if(r.length)for(var a=n.length,i=0;(i=r.indexOf(n,i))>=0;){var l=i+a;(i===0||en.includes(r[i-1]))&&(l===r.length||en.includes(r[l]))?r=(i===0?"":r.substring(0,i))+r.substring(l+1):i=l}}return r===""?null:r}function tn(e,t=!1){var s=t?" !important;":";",r="";for(var n of Object.keys(e)){var a=e[n];a!=null&&a!==""&&(r+=" "+n+": "+a+s)}return r}function lr(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function Pi(e,t){if(t){var s="",r,n;if(Array.isArray(t)?(r=t[0],n=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var a=!1,i=0,l=!1,o=[];r&&o.push(...Object.keys(r).map(lr)),n&&o.push(...Object.keys(n).map(lr));var c=0,h=-1;const b=e.length;for(var d=0;d{Dr(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Mn(()=>{t.disconnect()})}function Di(e,t,s=t){var r=new WeakSet,n=!0;Ln(e,"change",a=>{var i=a?"[selected]":":checked",l;if(e.multiple)l=[].map.call(e.querySelectorAll(i),_s);else{var o=e.querySelector(i)??e.querySelector("option:not([disabled])");l=o&&_s(o)}s(l),e.__value=l,M!==null&&r.add(M)}),gi(()=>{var a=t();if(e===document.activeElement){var i=M;if(r.has(i))return}if(Dr(e,a,n),n&&a===void 0){var l=e.querySelector(":checked");l!==null&&(a=_s(l),s(a))}e.__value=a,n=!1}),$n(e)}function _s(e){return"__value"in e?e.__value:e.value}const Ni=Symbol("is custom element"),Fi=Symbol("is html"),Bi=_a?"progress":"PROGRESS";function Ws(e,t){var s=Qn(e);s.value===(s.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==Bi)||(e.value=t??"")}function U(e,t,s,r){var n=Qn(e);n[t]!==(n[t]=s)&&(t==="loading"&&(e[pa]=s),s==null?e.removeAttribute(t):typeof s!="string"&&Ki(e).includes(t)?e[t]=s:e.setAttribute(t,s))}function Qn(e){return e[Ms]??(e[Ms]={[Ni]:e.nodeName.includes("-"),[Fi]:e.namespaceURI===dn})}var sn=new Map;function Ki(e){var t=e.getAttribute("is")||e.nodeName,s=sn.get(t);if(s)return s;sn.set(t,s=[]);for(var r,n=e,a=Element.prototype;a!==n;){r=la(n);for(var i in r)r[i].set&&i!=="innerHTML"&&i!=="textContent"&&i!=="innerText"&&s.push(i);n=an(n)}return s}function Ks(e,t,s=t){var r=new WeakSet;Ln(e,"input",async n=>{var a=n?e.defaultValue:e.value;if(a=fr(e)?dr(a):a,s(a),M!==null&&r.add(M),await xi(),a!==(a=t())){var i=e.selectionStart,l=e.selectionEnd,o=e.value.length;if(e.value=a??"",l!==null){var c=e.value.length;i===l&&l===o&&c>o?(e.selectionStart=c,e.selectionEnd=c):(e.selectionStart=i,e.selectionEnd=Math.min(l,c))}}}),Pr(t)==null&&e.value&&(s(fr(e)?dr(e.value):e.value),M!==null&&r.add(M)),Dn(()=>{var n=t();if(e===document.activeElement){var a=M;if(r.has(a))return}fr(e)&&n===dr(e.value)||e.type==="date"&&!n&&!e.value||n!==e.value&&(e.value=n??"")})}function fr(e){var t=e.type;return t==="number"||t==="range"}function dr(e){return e===""?null:+e}function Z(e,t,s,r){var n=!0,a=(s&La)!==0,i=(s&Ma)!==0,l=r,o=!0,c=void 0,h=()=>i&&n?(c??(c=gs(r)),u(c)):(o&&(o=!1,l=i?Pr(r):r),l);let d;if(a){var f=Wt in e||ha in e;d=Ut(e,t)?.set??(f&&t in e?T=>e[t]=T:void 0)}var g,_=!1;a?[g,_]=Ha(()=>e[t]):g=e[t],g===void 0&&r!==void 0&&(g=h(),d&&(xa(),d(g)));var b;if(b=()=>{var T=e[t];return T===void 0?h():(o=!0,T)},(s&Ra)===0)return b;if(d){var v=e.$$legacy;return(function(T,F){return arguments.length>0?((!F||v||_)&&d(F?b():T),T):b()})}var m=!1,w=((s&Oa)!==0?gs:En)(()=>(m=!1,b()));a&&u(w);var x=D;return(function(T,F){if(arguments.length>0){const G=F?u(w):a?Se(T):T;return K(w,G),m=!0,l!==void 0&&(l=G),T}return st&&m||(x.f&Ve)!==0?w.v:u(w)})}const qi="5";var nn;typeof window<"u"&&((nn=window.__svelte??(window.__svelte={})).v??(nn.v=new Set)).add(qi);const qt=typeof window<"u"&&window.slashedBricksApp?window.slashedBricksApp:{defaults:{},settings:{},tabs:{},rest:{url:"",nonce:""}},ee={defaults:qt.defaults||{},tabs:qt.tabs||{},rest:qt.rest||{url:"",nonce:""},inventory:qt.inventory||{variables:[],sf_classes:[],is_classes:[]},pluginSettings:qt.pluginSettings||{}},Y=Se(structuredClone(qt.settings||{})),z=Se({activeTab:Hi(ee.tabs)||"colors",dirty:!1,saving:!1,lastSavedAt:null,error:""});function Hi(e){for(const t in e)return t;return null}function ea(){z.dirty=!0,z.error=""}function Gi(e){Y[e]&&delete Y[e]}function bs(e,t,s){Y[e]||(Y[e]={}),s===""||s===null||s===void 0||typeof s=="string"&&s.trim()===""?delete Y[e][t]:Y[e][t]=String(s),ea()}var Ui=A(''),Yi=A('

');function Wi(e,t){se(t,!0);var s=Yi();Q(s,21,()=>Object.entries(ee.tabs),([r,n])=>r,(r,n)=>{var a=E(()=>et(u(n),2));let i=()=>u(a)[0],l=()=>u(a)[1];var o=Ui();let c;var h=y(o);I(()=>{c=Zt(o,1,"tab-nav__btn svelte-yyiz68",null,c,{active:z.activeTab===i()}),C(h,l())}),oe("click",o,()=>z.activeTab=i()),j(r,o)}),j(e,s),re()}Be(["click"]);var Zi=A(' '),Xi=A(' ',1),Ji=A(''),$i=A('
');function Ls(e,t){se(t,!0);let s=Z(t,"hexHint",3,""),r=Z(t,"rawHint",3,""),n=Z(t,"cssVar",3,"");const a=/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,i=(()=>{const L=(Y.colors?.[t.storeKey]??"").trim(),B=L===""||a.test(L);return{mode:B?"hex":"raw",hex:B?L:"",raw:B?"":L}})();let l=ne(Se(i.mode)),o=ne(Se(i.hex)),c=ne(Se(i.raw));function h(){Y.colors||(Y.colors={});const L=u(c).trim(),B=u(o).trim(),J=u(l)==="raw"?L:B;J===""?delete Y.colors[t.storeKey]:Y.colors[t.storeKey]=J,ea()}function d(){u(l)==="hex"?(K(l,"raw"),K(o,"")):(K(l,"hex"),K(c,"")),h()}const f=E(()=>(u(l)==="raw"?u(c):u(o))||s()||"transparent");var g=$i(),_=y(g),b=y(_),v=y(b),m=k(b,2);{var w=L=>{var B=Zi(),J=y(B);I(()=>C(J,n())),j(L,B)};le(m,L=>{n()&&L(w)})}var x=k(_,2),T=y(x);let F;var G=k(T,2);{var W=L=>{var B=Xi(),J=Vr(B),ve=k(J,2);I(()=>{U(J,"id",t.storeKey),U(ve,"placeholder",s())}),oe("input",J,h),Ks(J,()=>u(o),Me=>K(o,Me)),oe("input",ve,h),Ks(ve,()=>u(o),Me=>K(o,Me)),j(L,B)},S=L=>{var B=Ji();I(()=>{U(B,"id",t.storeKey),U(B,"placeholder",r())}),oe("input",B,h),Ks(B,()=>u(c),J=>K(c,J)),j(L,B)};le(G,L=>{u(l)==="hex"?L(W):L(S,-1)})}var H=k(G,2),V=y(H);I(()=>{U(b,"for",t.storeKey),C(v,t.label),F=bt(T,"",F,{background:u(f)}),C(V,u(l)==="hex"?"Advanced (oklch / raw)":"Use HEX picker")}),oe("click",H,d),j(e,g),re()}Be(["input","click"]);var Qi=A(`

Brand Colors — Light Mode

Pick a color via the HEX input, or switch to Advanced to paste any CSS color value (oklch, rgb, hsl, var(...), etc). Whatever you save is fed - straight into the framework as the source of the brand scale.

Status Colors

`);function eo(e,t){te(t,!0);const s=$.defaults?.colors??{},r=a=>a.charAt(0).toUpperCase()+a.slice(1);var n=$a(),i=k(m(n),4);ne(i,21,()=>Object.entries(s.brand??{}),([a,l])=>a,(a,l)=>{var c=A(()=>Vt(v(l),2));let u=()=>v(c)[0],f=()=>v(c)[1];{let d=A(()=>`brand_${u()}`),g=A(()=>r(u())),_=A(()=>s.brand_hex_hints?.[u()]??""),y=A(()=>`--sf-color-${u()}-light`);sn(a,{get storeKey(){return v(d)},get label(){return v(g)},get hexHint(){return v(_)},get rawHint(){return f()},get cssVar(){return v(y)}})}});var o=k(i,4);ne(o,21,()=>Object.entries(s.status??{}),([a,l])=>a,(a,l)=>{var c=A(()=>Vt(v(l),2));let u=()=>v(c)[0],f=()=>v(c)[1];{let d=A(()=>`status_${u()}`),g=A(()=>r(u())),_=A(()=>s.status_hex_hints?.[u()]??""),y=A(()=>`--sf-color-${u()}-light`);sn(a,{get storeKey(){return v(d)},get label(){return v(g)},get hexHint(){return v(_)},get rawHint(){return f()},get cssVar(){return v(y)}})}}),T(e,n),se()}var to=j(''),so=j(' '),ro=j(' '),no=j('

'),io=j('
');function tr(e,t){let s=Z(t,"cssVar",3,""),r=Z(t,"fieldId",3,""),n=Z(t,"description",3,"");var i=io(),o=m(i),a=m(o);{var l=p=>{var b=to(),w=m(b);M(()=>{U(b,"for",r()),C(w,t.label)}),T(p,b)},c=p=>{var b=so(),w=m(b);M(()=>C(w,t.label)),T(p,b)};le(a,p=>{r()?p(l):p(c,-1)})}var u=k(a,2);{var f=p=>{var b=ro(),w=m(b);M(()=>C(w,s())),T(p,b)};le(u,p=>{s()&&p(f)})}var d=k(o,2),g=m(d);Ia(g,()=>t.children??on);var _=k(g,2);{var y=p=>{var b=no(),w=m(b);M(()=>C(w,n())),T(p,b)};le(_,p=>{n()&&p(y)})}T(e,i)}var ao=j(' '),oo=j(' ',1);function Ht(e,t){te(t,!0);let s=Z(t,"cssVar",3,""),r=Z(t,"unit",3,""),n=Z(t,"description",3,"");const i=A(()=>Y[t.section]?.[t.fieldKey]===void 0||Y[t.section]?.[t.fieldKey]===null?"":String(Y[t.section][t.fieldKey])),o=A(()=>v(i)===""||Number.isNaN(Number(v(i)))?Number(t.default):Number(v(i)));function a(c){ys(t.section,t.fieldKey,c.currentTarget.value)}function l(c){ys(t.section,t.fieldKey,c.currentTarget.value)}tr(e,{get label(){return t.label},get cssVar(){return s()},get fieldId(){return t.fieldKey},get description(){return n()},children:(c,u)=>{var f=oo(),d=zr(f),g=k(d,2),_=k(g,2);{var y=p=>{var b=ao(),w=m(b);M(()=>C(w,r())),T(p,b)};le(_,p=>{r()&&p(y)})}M(p=>{U(d,"min",t.min),U(d,"max",t.max),U(d,"step",t.step),Ys(d,v(o)),U(g,"id",t.fieldKey),U(g,"min",t.min),U(g,"max",t.max),U(g,"step",t.step),Ys(g,v(i)),U(g,"placeholder",p)},[()=>String(t.default)]),oe("input",d,a),oe("input",g,l),T(c,f)},$$slots:{default:!0}}),se()}Be(["input"]);var lo=j(""),co=j('');function fo(e,t){te(t,!0);let s=Z(t,"options",19,()=>[]),r=Z(t,"default",3,""),n=Z(t,"cssVar",3,""),i=Z(t,"description",3,"");const o=A(()=>s().map(c=>typeof c=="string"?{value:c,label:c}:c)),a=A(()=>Y[t.section]?.[t.fieldKey]===void 0||Y[t.section]?.[t.fieldKey]===null?"":String(Y[t.section][t.fieldKey]));function l(c){ys(t.section,t.fieldKey,c.currentTarget.value)}tr(e,{get label(){return t.label},get cssVar(){return n()},get fieldId(){return t.fieldKey},get description(){return i()},children:(c,u)=>{var f=co(),d=m(f),g=m(d);d.value=d.__value="";var _=k(d);ne(_,17,()=>v(o),p=>p.value,(p,b)=>{var w=lo(),S=m(w),E={};M(()=>{C(S,v(b).label),E!==(E=v(b).value)&&(w.value=(w.__value=v(b).value)??"")}),T(p,w)});var y;Qn(f),M(()=>{U(f,"id",t.fieldKey),C(g,`Default (${r()??""})`),y!==(y=v(a))&&(f.value=(f.__value=v(a))??"",Pr(f,v(a)))}),oe("change",f,l),T(c,f)},$$slots:{default:!0}}),se()}Be(["change"]);var uo=j('

Contrast

Fine-tune how the framework derives shades and picks readable text colors against your brand colors.

Opacity

Focus ring

Visual indicator drawn around keyboard-focused elements. Lower the offset to tighten the ring, raise it to give the element more breathing room.

');function vo(e,t){te(t,!0);const s="contrast",r=$.defaults?.[s]??{};var n=uo(),i=k(m(n),4),o=m(i);{let _=A(()=>r.contrast_bias??0);Ht(o,{section:s,fieldKey:"contrast_bias",label:"Contrast bias",description:"Shifts every derived shade up (positive) or down (negative). Useful to brighten or dim the entire scale without re-picking source colors.",min:-.2,max:.2,step:.01,get default(){return v(_)},cssVar:"--sf-contrast-bias"})}var a=k(o,2);{let _=A(()=>r.contrast_threshold??.6);Ht(a,{section:s,fieldKey:"contrast_threshold",label:"Contrast threshold",description:"Lightness threshold used to pick text-on-color (white vs. black). Lower values prefer dark text on more colors; higher values prefer white text.",min:0,max:1,step:.01,get default(){return v(_)},cssVar:"--sf-contrast-threshold"})}var l=k(i,4),c=m(l);{let _=A(()=>r.opacity_disabled??.45);Ht(c,{section:s,fieldKey:"opacity_disabled",label:"Disabled opacity",description:"Opacity applied to disabled UI elements (buttons, inputs, links).",min:0,max:1,step:.01,get default(){return v(_)},cssVar:"--sf-opacity-disabled"})}var u=k(l,6),f=m(u);{let _=A(()=>r.focus_ring_width??2);Ht(f,{section:s,fieldKey:"focus_ring_width",label:"Ring width",min:0,max:8,step:.5,get default(){return v(_)},cssVar:"--sf-focus-ring-width",unit:"px"})}var d=k(f,2);{let _=A(()=>r.focus_ring_offset??2);Ht(d,{section:s,fieldKey:"focus_ring_offset",label:"Ring offset",min:0,max:8,step:.5,get default(){return v(_)},cssVar:"--sf-focus-ring-offset",unit:"px"})}var g=k(d,2);{let _=A(()=>r.focus_ring_style??"solid");fo(g,{section:s,fieldKey:"focus_ring_style",label:"Ring style",options:["solid","dashed","dotted","double","none"],get default(){return v(_)},cssVar:"--sf-focus-ring-style"})}T(e,n),se()}var ho=j('');function ti(e,t){te(t,!0);let s=Z(t,"default",3,""),r=Z(t,"cssVar",3,""),n=Z(t,"description",3,""),i=Z(t,"mono",3,!1),o=Z(t,"width",3,"320px");const a=A(()=>Y[t.section]?.[t.fieldKey]===void 0||Y[t.section]?.[t.fieldKey]===null?"":String(Y[t.section][t.fieldKey]));function l(c){ys(t.section,t.fieldKey,c.currentTarget.value)}tr(e,{get label(){return t.label},get cssVar(){return r()},get fieldId(){return t.fieldKey},get description(){return n()},children:(c,u)=>{var f=ho();let d,g;M(_=>{U(f,"id",t.fieldKey),d=Zt(f,1,"text svelte-j8yw6l",null,d,{mono:i()}),Ys(f,v(a)),U(f,"placeholder",_),g=mt(f,"",g,{width:o()})},[()=>String(s())]),oe("input",f,l),T(c,f)},$$slots:{default:!0}}),se()}Be(["input"]);var po=j(' '),_o=j(' ',1);function et(e,t){te(t,!0);let s=Z(t,"min",3,void 0),r=Z(t,"max",3,void 0),n=Z(t,"step",3,void 0),i=Z(t,"default",3,""),o=Z(t,"cssVar",3,""),a=Z(t,"unit",3,""),l=Z(t,"description",3,""),c=Z(t,"width",3,"120px");const u=A(()=>Y[t.section]?.[t.fieldKey]===void 0||Y[t.section]?.[t.fieldKey]===null?"":String(Y[t.section][t.fieldKey]));function f(d){ys(t.section,t.fieldKey,d.currentTarget.value)}tr(e,{get label(){return t.label},get cssVar(){return o()},get fieldId(){return t.fieldKey},get description(){return l()},children:(d,g)=>{var _=_o(),y=zr(_);let p;var b=k(y,2);{var w=S=>{var E=po(),F=m(E);M(()=>C(F,a())),T(S,E)};le(b,S=>{a()&&S(w)})}M(S=>{U(y,"id",t.fieldKey),U(y,"min",s()),U(y,"max",r()),U(y,"step",n()),Ys(y,v(u)),U(y,"placeholder",S),p=mt(y,"",p,{width:c()})},[()=>String(i())]),oe("input",y,f),T(d,_)},$$slots:{default:!0}}),se()}Be(["input"]);var go=j('
'),mo=j('

Font Families

Font Size Scale

Min and max values in rem for fluid type scaling via clamp().

Scale Multipliers

');function yo(e,t){te(t,!0);const s="typography",r=$.defaults?.[s]??{},n=r.font_families??{},i=r.font_sizes??{},o=g=>g.charAt(0).toUpperCase()+g.slice(1);var a=mo(),l=k(m(a),2);ne(l,21,()=>Object.entries(n),([g,_])=>g,(g,_)=>{var y=A(()=>Vt(v(_),2));let p=()=>v(y)[0],b=()=>v(y)[1];{let w=A(()=>`font_${p()}`),S=A(()=>o(p())),E=A(()=>`--sf-font-${p()}`);ti(g,{section:s,get fieldKey(){return v(w)},get label(){return v(S)},get default(){return b()},get cssVar(){return v(E)},width:"420px"})}});var c=k(l,6);ne(c,21,()=>Object.entries(i),([g,_])=>g,(g,_)=>{var y=A(()=>Vt(v(_),2));let p=()=>v(y)[0],b=()=>v(y)[1];var w=go(),S=m(w),E=m(S),F=m(E),G=k(E,2),W=m(G),x=k(S,2),H=m(x);{let L=A(()=>`size_${p()}_min`);et(H,{section:s,get fieldKey(){return v(L)},label:"Min",min:0,step:.01,get default(){return b().min},width:"80px"})}var V=k(H,2);{let L=A(()=>`size_${p()}_max`);et(V,{section:s,get fieldKey(){return v(L)},label:"Max",min:0,step:.01,get default(){return b().max},width:"80px"})}M(()=>{C(F,p()),C(W,`--sf-text-${p()??""}`)}),T(g,w)});var u=k(c,4),f=m(u);{let g=A(()=>r.scale_multipliers?.text_scale??1);et(f,{section:s,fieldKey:"text_scale",label:"Text Scale",min:0,step:.05,get default(){return v(g)},cssVar:"--sf-text-scale"})}var d=k(f,2);{let g=A(()=>r.scale_multipliers?.text_display_scale??1);et(d,{section:s,fieldKey:"text_display_scale",label:"Display Scale",min:0,step:.05,get default(){return v(g)},cssVar:"--sf-text-display-scale"})}T(e,a),se()}var bo=j('

Spacing

');function wo(e,t){te(t,!0);const s="spacing",r=$.defaults?.[s]??{},n=[{key:"gutter",label:"Gutter",cssVar:"--sf-space-gutter"},{key:"gap",label:"Gap",cssVar:"--sf-gap"},{key:"content_gap",label:"Content Gap",cssVar:"--sf-content-gap"},{key:"component_pad",label:"Component Pad",cssVar:"--sf-component-pad"},{key:"section_pad",label:"Section Pad",cssVar:"--sf-section-pad"}];var i=bo(),o=k(m(i),2),a=m(o);{let c=A(()=>r.space_scale??1);et(a,{section:s,fieldKey:"space_scale",label:"Space Scale",min:0,step:.05,get default(){return v(c)},cssVar:"--sf-space-scale"})}var l=k(a,2);ne(l,17,()=>n,c=>c.key,(c,u)=>{{let f=A(()=>r[v(u).key]??"");ti(c,{section:s,get fieldKey(){return v(u).key},get label(){return v(u).label},get default(){return v(f)},get cssVar(){return v(u).cssVar},mono:!0})}}),T(e,i),se()}var ko=j('

Radius

');function xo(e,t){te(t,!0);const s="radius",r=$.defaults?.[s]??{};var n=ko(),i=k(m(n),2),o=m(i);{let a=A(()=>r.radius_scale??1);et(o,{section:s,fieldKey:"radius_scale",label:"Radius Scale",min:0,step:.1,get default(){return v(a)},cssVar:"--sf-radius-scale"})}T(e,n),se()}var So=j('

Shadows

');function Eo(e,t){te(t,!0);const s="shadows",r=$.defaults?.[s]??{};var n=So(),i=k(m(n),2),o=m(i);{let a=A(()=>r.shadow_strength??.08);Ht(o,{section:s,fieldKey:"shadow_strength",label:"Shadow Strength",description:"Base opacity value for shadow layers (0–1).",min:0,max:1,step:.01,get default(){return v(a)},cssVar:"--sf-shadow-strength"})}T(e,n),se()}var To=j('

Motion

Duration Values

Base duration values in milliseconds.

');function jo(e,t){te(t,!0);const s="motion",r=$.defaults?.[s]??{},n=r.durations??{},i=u=>u.charAt(0).toUpperCase()+u.slice(1);var o=To(),a=k(m(o),2),l=m(a);{let u=A(()=>r.motion_scale??1);et(l,{section:s,fieldKey:"motion_scale",label:"Motion Scale",min:0,step:.1,get default(){return v(u)},cssVar:"--sf-motion-scale"})}var c=k(a,6);ne(c,21,()=>Object.entries(n),([u,f])=>u,(u,f)=>{var d=A(()=>Vt(v(f),2));let g=()=>v(d)[0],_=()=>v(d)[1];{let y=A(()=>`duration_${g()}`),p=A(()=>i(g())),b=A(()=>`--sf-duration-${g()}`);et(u,{section:s,get fieldKey(){return v(y)},get label(){return v(p)},min:0,step:10,get default(){return _()},get cssVar(){return v(b)},unit:"ms"})}}),T(e,o),se()}var Ao=j('

Z-Index

Z-index layer values for stacking context management.

');function Co(e,t){te(t,!0);const s="zindex",r=$.defaults?.[s]??{},n=a=>a.charAt(0).toUpperCase()+a.slice(1);var i=Ao(),o=k(m(i),4);ne(o,21,()=>Object.entries(r),([a,l])=>a,(a,l)=>{var c=A(()=>Vt(v(l),2));let u=()=>v(c)[0],f=()=>v(c)[1];{let d=A(()=>n(u())),g=A(()=>`--sf-z-${u()}`);et(a,{section:s,get fieldKey(){return u()},get label(){return v(d)},step:1,get default(){return f()},get cssVar(){return v(g)}})}}),T(e,i),se()}var zo=j('
  • '),Vo=j('
      '),Ro=j('
      '),Oo=j(`

      All --sf-* custom properties declared in the active SLASHED bundle, - grouped by category.

      `);function Lo(e,t){te(t,!0);const s=$.inventory?.variables??[],r={color:"Colors",text:"Typography",font:"Typography",leading:"Typography",tracking:"Typography",body:"Typography",heading:"Typography",h1:"Typography",h2:"Typography",h3:"Typography",h4:"Typography",h5:"Typography",h6:"Typography",prose:"Typography",code:"Typography",optical:"Typography",line:"Typography",space:"Spacing",gap:"Spacing",gutter:"Spacing",component:"Spacing",section:"Spacing",flow:"Spacing",safe:"Spacing",header:"Spacing",sticky:"Spacing",size:"Sizing",aspect:"Sizing",ratio:"Sizing",touch:"Sizing",container:"Layout",stack:"Layout",cluster:"Layout",sidebar:"Layout",switcher:"Layout",grid:"Layout",cover:"Layout",frame:"Layout",reel:"Layout",imposter:"Layout",bento:"Layout",box:"Layout",center:"Layout",content:"Layout",breakout:"Layout",divider:"Layout",field:"Layout",border:"Borders",stroke:"Borders",radius:"Radius",shadow:"Shadows",blur:"Effects",opacity:"Effects",gradient:"Effects",mask:"Effects",perspective:"Effects",drop:"Effects",contrast:"Effects",duration:"Motion",ease:"Motion",transition:"Motion",motion:"Motion",animation:"Motion",icon:"Icons",z:"Z-Index",is:"States",current:"States",focus:"Focus",caret:"Focus",scroll:"Scroll",scrollbar:"Scroll",print:"Print",truncate:"Misc"},n=["Colors","Typography","Spacing","Sizing","Layout","Borders","Radius","Shadows","Effects","Motion","Icons","Z-Index","States","Focus","Scroll","Print","Misc"];function i(_){let y=_;y.startsWith("--sf-")&&(y=y.slice(5));const p=y.indexOf("-"),b=p===-1?y:y.slice(0,p);return r[b]||"Misc"}function o(_){const y={};for(const b of _){const w=i(b);y[w]||(y[w]=[]),y[w].push(b)}const p=[];for(const b of n)y[b]?.length&&(y[b].sort(),p.push({category:b,items:y[b]}));for(const b of Object.keys(y))!n.includes(b)&&y[b]?.length&&(y[b].sort(),p.push({category:b,items:y[b]}));return p}const a=o(s);let l=Se({});function c(_){l[_]=!l[_]}var u=Oo(),f=m(u),d=m(f),g=k(f,4);ne(g,17,()=>a,({category:_,items:y})=>_,(_,y)=>{let p=()=>v(y).category,b=()=>v(y).items;var w=Ro(),S=m(w),E=m(S),F=m(E),G=k(E,2),W=m(G),x=k(G,2),H=m(x),V=k(S,2);{var L=B=>{var J=Vo();ne(J,20,b,ve=>ve,(ve,Ie)=>{var As=zo(),sr=m(As),X=m(sr);M(()=>C(X,Ie)),T(ve,As)}),T(B,J)};le(V,B=>{l[p()]&&B(L)})}M(()=>{U(S,"aria-expanded",l[p()]?"true":"false"),C(F,l[p()]?"▼":"▶"),C(W,p()),C(H,`(${b().length??""})`)}),oe("click",S,()=>c(p())),T(_,w)}),M(()=>C(d,`CSS Variables (${s.length??""})`)),T(e,u),se()}Be(["click"]);var Io=j('
    • '),Mo=j('
        '),Po=j('
      • '),No=j('
          '),Do=j('

          All utility and state classes declared in the active SLASHED bundle.

          ');function Fo(e,t){te(t,!0);const s=$.inventory?.sf_classes??[],r=$.inventory?.is_classes??[];let n=re(!1),i=re(!1);var o=Do(),a=m(o),l=m(a),c=k(a,4),u=m(c),f=m(u),d=m(f),g=k(f,4),_=m(g),y=k(u,2);{var p=H=>{var V=Mo();ne(V,20,()=>s,L=>L,(L,B)=>{var J=Io(),ve=m(J),Ie=m(ve);M(()=>C(Ie,`.${B??""}`)),T(L,J)}),T(H,V)};le(y,H=>{v(n)&&H(p)})}var b=k(c,2),w=m(b),S=m(w),E=m(S),F=k(S,4),G=m(F),W=k(w,2);{var x=H=>{var V=No();ne(V,20,()=>r,L=>L,(L,B)=>{var J=Po(),ve=m(J),Ie=m(ve);M(()=>C(Ie,`.${B??""}`)),T(L,J)}),T(H,V)};le(W,H=>{v(i)&&H(x)})}M(()=>{C(l,`Registered Classes (${s.length+r.length})`),U(u,"aria-expanded",v(n)?"true":"false"),C(d,v(n)?"▼":"▶"),C(_,`(${s.length??""})`),U(w,"aria-expanded",v(i)?"true":"false"),C(E,v(i)?"▼":"▶"),C(G,`(${r.length??""})`)}),oe("click",u,()=>q(n,!v(n))),oe("click",w,()=>q(i,!v(i))),T(e,o),se()}Be(["click"]);async function Nr(e,t){const{url:s,nonce:r}=$.rest;if(!s)return console.info("[slashed-admin] (dev) would POST",e,t),{ok:!0,dev:!0};const n=await fetch(s+e,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json","X-WP-Nonce":r},body:JSON.stringify(t)});if(!n.ok){const i=await n.text();throw new Error(i||`HTTP ${n.status}`)}return n.json()}function Bo(e,t){return Nr("/tokens",{section:e,values:t})}function qo(e){return Nr("/tokens/reset",{section:e})}function Ko(e){return Nr("/settings",e)}var Ho=j('Saved'),Go=j(' '),Uo=j(`

          Bundle Info

          The SLASHED CSS bundle is loaded automatically by the plugin. The inventory + straight into the framework as the source of the brand scale.

          Brand Colors — Dark Mode

          Optional overrides for dark mode. Leave empty to let the framework auto-derive + dark variants from the light source colors. Set explicit values for full + control over dark-mode appearance.

          Status Colors — Light Mode

          Status Colors — Dark Mode

          Optional overrides for dark mode. Leave empty for auto-derivation.

          `);function eo(e,t){se(t,!0);const s=ee.defaults?.colors??{},r=c=>c.charAt(0).toUpperCase()+c.slice(1);var n=Qi(),a=k(y(n),4);Q(a,21,()=>Object.entries(s.brand??{}),([c,h])=>c,(c,h)=>{var d=E(()=>et(u(h),2));let f=()=>u(d)[0],g=()=>u(d)[1];{let _=E(()=>`brand_${f()}`),b=E(()=>r(f())),v=E(()=>s.brand_hex_hints?.[f()]??""),m=E(()=>`--sf-color-${f()}-light`);Ls(c,{get storeKey(){return u(_)},get label(){return u(b)},get hexHint(){return u(v)},get rawHint(){return g()},get cssVar(){return u(m)}})}});var i=k(a,6);Q(i,21,()=>Object.entries(s.brand_dark??s.brand??{}),([c])=>c,(c,h)=>{var d=E(()=>et(u(h),1));let f=()=>u(d)[0];{let g=E(()=>`brand_dark_${f()}`),_=E(()=>r(f())),b=E(()=>s.brand_dark_hex_hints?.[f()]??""),v=E(()=>s.brand_dark?.[f()]??""),m=E(()=>`--sf-color-${f()}-dark`);Ls(c,{get storeKey(){return u(g)},get label(){return u(_)},get hexHint(){return u(b)},get rawHint(){return u(v)},get cssVar(){return u(m)}})}});var l=k(i,4);Q(l,21,()=>Object.entries(s.status??{}),([c,h])=>c,(c,h)=>{var d=E(()=>et(u(h),2));let f=()=>u(d)[0],g=()=>u(d)[1];{let _=E(()=>`status_${f()}`),b=E(()=>r(f())),v=E(()=>s.status_hex_hints?.[f()]??""),m=E(()=>`--sf-color-${f()}-light`);Ls(c,{get storeKey(){return u(_)},get label(){return u(b)},get hexHint(){return u(v)},get rawHint(){return g()},get cssVar(){return u(m)}})}});var o=k(l,6);Q(o,21,()=>Object.entries(s.status_dark??s.status??{}),([c])=>c,(c,h)=>{var d=E(()=>et(u(h),1));let f=()=>u(d)[0];{let g=E(()=>`status_dark_${f()}`),_=E(()=>r(f())),b=E(()=>s.status_dark_hex_hints?.[f()]??""),v=E(()=>s.status_dark?.[f()]??""),m=E(()=>`--sf-color-${f()}-dark`);Ls(c,{get storeKey(){return u(g)},get label(){return u(_)},get hexHint(){return u(b)},get rawHint(){return u(v)},get cssVar(){return u(m)}})}}),j(e,n),re()}var to=A(''),so=A(' '),ro=A(' '),no=A('

          '),ao=A('
          ');function sr(e,t){let s=Z(t,"cssVar",3,""),r=Z(t,"fieldId",3,""),n=Z(t,"description",3,"");var a=ao(),i=y(a),l=y(i);{var o=v=>{var m=to(),w=y(m);I(()=>{U(m,"for",r()),C(w,t.label)}),j(v,m)},c=v=>{var m=so(),w=y(m);I(()=>C(w,t.label)),j(v,m)};le(l,v=>{r()?v(o):v(c,-1)})}var h=k(l,2);{var d=v=>{var m=ro(),w=y(m);I(()=>C(w,s())),j(v,m)};le(h,v=>{s()&&v(d)})}var f=k(i,2),g=y(f);Mi(g,()=>t.children??on);var _=k(g,2);{var b=v=>{var m=no(),w=y(m);I(()=>C(w,n())),j(v,m)};le(_,v=>{n()&&v(b)})}j(e,a)}var io=A(' '),oo=A(' ',1);function Ht(e,t){se(t,!0);let s=Z(t,"cssVar",3,""),r=Z(t,"unit",3,""),n=Z(t,"description",3,"");const a=E(()=>Y[t.section]?.[t.fieldKey]===void 0||Y[t.section]?.[t.fieldKey]===null?"":String(Y[t.section][t.fieldKey])),i=E(()=>u(a)===""||Number.isNaN(Number(u(a)))?Number(t.default):Number(u(a)));function l(c){bs(t.section,t.fieldKey,c.currentTarget.value)}function o(c){bs(t.section,t.fieldKey,c.currentTarget.value)}sr(e,{get label(){return t.label},get cssVar(){return s()},get fieldId(){return t.fieldKey},get description(){return n()},children:(c,h)=>{var d=oo(),f=Vr(d),g=k(f,2),_=k(g,2);{var b=v=>{var m=io(),w=y(m);I(()=>C(w,r())),j(v,m)};le(_,v=>{r()&&v(b)})}I(v=>{U(f,"min",t.min),U(f,"max",t.max),U(f,"step",t.step),Ws(f,u(i)),U(g,"id",t.fieldKey),U(g,"min",t.min),U(g,"max",t.max),U(g,"step",t.step),Ws(g,u(a)),U(g,"placeholder",v)},[()=>String(t.default)]),oe("input",f,l),oe("input",g,o),j(c,d)},$$slots:{default:!0}}),re()}Be(["input"]);var lo=A(""),co=A('');function fo(e,t){se(t,!0);let s=Z(t,"options",19,()=>[]),r=Z(t,"default",3,""),n=Z(t,"cssVar",3,""),a=Z(t,"description",3,"");const i=E(()=>s().map(c=>typeof c=="string"?{value:c,label:c}:c)),l=E(()=>Y[t.section]?.[t.fieldKey]===void 0||Y[t.section]?.[t.fieldKey]===null?"":String(Y[t.section][t.fieldKey]));function o(c){bs(t.section,t.fieldKey,c.currentTarget.value)}sr(e,{get label(){return t.label},get cssVar(){return n()},get fieldId(){return t.fieldKey},get description(){return a()},children:(c,h)=>{var d=co(),f=y(d),g=y(f);f.value=f.__value="";var _=k(f);Q(_,17,()=>u(i),v=>v.value,(v,m)=>{var w=lo(),x=y(w),T={};I(()=>{C(x,u(m).label),T!==(T=u(m).value)&&(w.value=(w.__value=u(m).value)??"")}),j(v,w)});var b;$n(d),I(()=>{U(d,"id",t.fieldKey),C(g,`Default (${r()??""})`),b!==(b=u(l))&&(d.value=(d.__value=u(l))??"",Dr(d,u(l)))}),oe("change",d,o),j(c,d)},$$slots:{default:!0}}),re()}Be(["change"]);var uo=A('

          Contrast

          Fine-tune how the framework derives shades and picks readable text colors against your brand colors.

          Opacity

          Focus ring

          Visual indicator drawn around keyboard-focused elements. Lower the offset to tighten the ring, raise it to give the element more breathing room.

          ');function vo(e,t){se(t,!0);const s="contrast",r=ee.defaults?.[s]??{};var n=uo(),a=k(y(n),4),i=y(a);{let _=E(()=>r.contrast_bias??0);Ht(i,{section:s,fieldKey:"contrast_bias",label:"Contrast bias",description:"Shifts every derived shade up (positive) or down (negative). Useful to brighten or dim the entire scale without re-picking source colors.",min:-.2,max:.2,step:.01,get default(){return u(_)},cssVar:"--sf-contrast-bias"})}var l=k(i,2);{let _=E(()=>r.contrast_threshold??.6);Ht(l,{section:s,fieldKey:"contrast_threshold",label:"Contrast threshold",description:"Lightness threshold used to pick text-on-color (white vs. black). Lower values prefer dark text on more colors; higher values prefer white text.",min:0,max:1,step:.01,get default(){return u(_)},cssVar:"--sf-contrast-threshold"})}var o=k(a,4),c=y(o);{let _=E(()=>r.opacity_disabled??.45);Ht(c,{section:s,fieldKey:"opacity_disabled",label:"Disabled opacity",description:"Opacity applied to disabled UI elements (buttons, inputs, links).",min:0,max:1,step:.01,get default(){return u(_)},cssVar:"--sf-opacity-disabled"})}var h=k(o,6),d=y(h);{let _=E(()=>r.focus_ring_width??2);Ht(d,{section:s,fieldKey:"focus_ring_width",label:"Ring width",min:0,max:8,step:.5,get default(){return u(_)},cssVar:"--sf-focus-ring-width",unit:"px"})}var f=k(d,2);{let _=E(()=>r.focus_ring_offset??2);Ht(f,{section:s,fieldKey:"focus_ring_offset",label:"Ring offset",min:0,max:8,step:.5,get default(){return u(_)},cssVar:"--sf-focus-ring-offset",unit:"px"})}var g=k(f,2);{let _=E(()=>r.focus_ring_style??"solid");fo(g,{section:s,fieldKey:"focus_ring_style",label:"Ring style",options:["solid","dashed","dotted","double","none"],get default(){return u(_)},cssVar:"--sf-focus-ring-style"})}j(e,n),re()}var ho=A('');function ta(e,t){se(t,!0);let s=Z(t,"default",3,""),r=Z(t,"cssVar",3,""),n=Z(t,"description",3,""),a=Z(t,"mono",3,!1),i=Z(t,"width",3,"320px");const l=E(()=>Y[t.section]?.[t.fieldKey]===void 0||Y[t.section]?.[t.fieldKey]===null?"":String(Y[t.section][t.fieldKey]));function o(c){bs(t.section,t.fieldKey,c.currentTarget.value)}sr(e,{get label(){return t.label},get cssVar(){return r()},get fieldId(){return t.fieldKey},get description(){return n()},children:(c,h)=>{var d=ho();let f,g;I(_=>{U(d,"id",t.fieldKey),f=Zt(d,1,"text svelte-j8yw6l",null,f,{mono:a()}),Ws(d,u(l)),U(d,"placeholder",_),g=bt(d,"",g,{width:i()})},[()=>String(s())]),oe("input",d,o),j(c,d)},$$slots:{default:!0}}),re()}Be(["input"]);var po=A(' '),_o=A(' ',1);function tt(e,t){se(t,!0);let s=Z(t,"min",3,void 0),r=Z(t,"max",3,void 0),n=Z(t,"step",3,void 0),a=Z(t,"default",3,""),i=Z(t,"cssVar",3,""),l=Z(t,"unit",3,""),o=Z(t,"description",3,""),c=Z(t,"width",3,"120px");const h=E(()=>Y[t.section]?.[t.fieldKey]===void 0||Y[t.section]?.[t.fieldKey]===null?"":String(Y[t.section][t.fieldKey]));function d(f){bs(t.section,t.fieldKey,f.currentTarget.value)}sr(e,{get label(){return t.label},get cssVar(){return i()},get fieldId(){return t.fieldKey},get description(){return o()},children:(f,g)=>{var _=_o(),b=Vr(_);let v;var m=k(b,2);{var w=x=>{var T=po(),F=y(T);I(()=>C(F,l())),j(x,T)};le(m,x=>{l()&&x(w)})}I(x=>{U(b,"id",t.fieldKey),U(b,"min",s()),U(b,"max",r()),U(b,"step",n()),Ws(b,u(h)),U(b,"placeholder",x),v=bt(b,"",v,{width:c()})},[()=>String(a())]),oe("input",b,d),j(f,_)},$$slots:{default:!0}}),re()}Be(["input"]);var go=A('
          '),mo=A('

          Font Families

          Font Size Scale

          Min and max values in rem for fluid type scaling via clamp().

          Scale Multipliers

          ');function bo(e,t){se(t,!0);const s="typography",r=ee.defaults?.[s]??{},n=r.font_families??{},a=r.font_sizes??{},i=g=>g.charAt(0).toUpperCase()+g.slice(1);var l=mo(),o=k(y(l),2);Q(o,21,()=>Object.entries(n),([g,_])=>g,(g,_)=>{var b=E(()=>et(u(_),2));let v=()=>u(b)[0],m=()=>u(b)[1];{let w=E(()=>`font_${v()}`),x=E(()=>i(v())),T=E(()=>`--sf-font-${v()}`);ta(g,{section:s,get fieldKey(){return u(w)},get label(){return u(x)},get default(){return m()},get cssVar(){return u(T)},width:"420px"})}});var c=k(o,6);Q(c,21,()=>Object.entries(a),([g,_])=>g,(g,_)=>{var b=E(()=>et(u(_),2));let v=()=>u(b)[0],m=()=>u(b)[1];var w=go(),x=y(w),T=y(x),F=y(T),G=k(T,2),W=y(G),S=k(x,2),H=y(S);{let L=E(()=>`size_${v()}_min`);tt(H,{section:s,get fieldKey(){return u(L)},label:"Min",min:0,step:.01,get default(){return m().min},width:"80px"})}var V=k(H,2);{let L=E(()=>`size_${v()}_max`);tt(V,{section:s,get fieldKey(){return u(L)},label:"Max",min:0,step:.01,get default(){return m().max},width:"80px"})}I(()=>{C(F,v()),C(W,`--sf-text-${v()??""}`)}),j(g,w)});var h=k(c,4),d=y(h);{let g=E(()=>r.scale_multipliers?.text_scale??1);tt(d,{section:s,fieldKey:"text_scale",label:"Text Scale",min:0,step:.05,get default(){return u(g)},cssVar:"--sf-text-scale"})}var f=k(d,2);{let g=E(()=>r.scale_multipliers?.text_display_scale??1);tt(f,{section:s,fieldKey:"text_display_scale",label:"Display Scale",min:0,step:.05,get default(){return u(g)},cssVar:"--sf-text-display-scale"})}j(e,l),re()}var yo=A('

          Spacing

          ');function wo(e,t){se(t,!0);const s="spacing",r=ee.defaults?.[s]??{},n=[{key:"gutter",label:"Gutter",cssVar:"--sf-space-gutter"},{key:"gap",label:"Gap",cssVar:"--sf-gap"},{key:"content_gap",label:"Content Gap",cssVar:"--sf-content-gap"},{key:"component_pad",label:"Component Pad",cssVar:"--sf-component-pad"},{key:"section_pad",label:"Section Pad",cssVar:"--sf-section-pad"}];var a=yo(),i=k(y(a),2),l=y(i);{let c=E(()=>r.space_scale??1);tt(l,{section:s,fieldKey:"space_scale",label:"Space Scale",min:0,step:.05,get default(){return u(c)},cssVar:"--sf-space-scale"})}var o=k(l,2);Q(o,17,()=>n,c=>c.key,(c,h)=>{{let d=E(()=>r[u(h).key]??"");ta(c,{section:s,get fieldKey(){return u(h).key},get label(){return u(h).label},get default(){return u(d)},get cssVar(){return u(h).cssVar},mono:!0})}}),j(e,a),re()}var ko=A('

          Radius

          ');function xo(e,t){se(t,!0);const s="radius",r=ee.defaults?.[s]??{};var n=ko(),a=k(y(n),2),i=y(a);{let l=E(()=>r.radius_scale??1);tt(i,{section:s,fieldKey:"radius_scale",label:"Radius Scale",min:0,step:.1,get default(){return u(l)},cssVar:"--sf-radius-scale"})}j(e,n),re()}var So=A('

          Shadows

          ');function Eo(e,t){se(t,!0);const s="shadows",r=ee.defaults?.[s]??{};var n=So(),a=k(y(n),2),i=y(a);{let l=E(()=>r.shadow_strength??.08);Ht(i,{section:s,fieldKey:"shadow_strength",label:"Shadow Strength",description:"Base opacity value for shadow layers (0–1).",min:0,max:1,step:.01,get default(){return u(l)},cssVar:"--sf-shadow-strength"})}j(e,n),re()}var To=A('

          Motion

          Duration Values

          Base duration values in milliseconds.

          ');function jo(e,t){se(t,!0);const s="motion",r=ee.defaults?.[s]??{},n=r.durations??{},a=h=>h.charAt(0).toUpperCase()+h.slice(1);var i=To(),l=k(y(i),2),o=y(l);{let h=E(()=>r.motion_scale??1);tt(o,{section:s,fieldKey:"motion_scale",label:"Motion Scale",min:0,step:.1,get default(){return u(h)},cssVar:"--sf-motion-scale"})}var c=k(l,6);Q(c,21,()=>Object.entries(n),([h,d])=>h,(h,d)=>{var f=E(()=>et(u(d),2));let g=()=>u(f)[0],_=()=>u(f)[1];{let b=E(()=>`duration_${g()}`),v=E(()=>a(g())),m=E(()=>`--sf-duration-${g()}`);tt(h,{section:s,get fieldKey(){return u(b)},get label(){return u(v)},min:0,step:10,get default(){return _()},get cssVar(){return u(m)},unit:"ms"})}}),j(e,i),re()}var Ao=A('

          Z-Index

          Z-index layer values for stacking context management.

          ');function Co(e,t){se(t,!0);const s="zindex",r=ee.defaults?.[s]??{},n=l=>l.charAt(0).toUpperCase()+l.slice(1);var a=Ao(),i=k(y(a),4);Q(i,21,()=>Object.entries(r),([l,o])=>l,(l,o)=>{var c=E(()=>et(u(o),2));let h=()=>u(c)[0],d=()=>u(c)[1];{let f=E(()=>n(h())),g=E(()=>`--sf-z-${h()}`);tt(l,{section:s,get fieldKey(){return h()},get label(){return u(f)},step:1,get default(){return d()},get cssVar(){return u(g)}})}}),j(e,a),re()}var zo=A('
        • '),Vo=A('
            '),Oo=A('
            '),Ro=A(`

            All --sf-* custom properties declared in the active SLASHED bundle, + grouped by category.

            `);function Lo(e,t){se(t,!0);const s=ee.inventory?.variables??[],r={color:"Colors",text:"Typography",font:"Typography",leading:"Typography",tracking:"Typography",body:"Typography",heading:"Typography",h1:"Typography",h2:"Typography",h3:"Typography",h4:"Typography",h5:"Typography",h6:"Typography",prose:"Typography",code:"Typography",optical:"Typography",line:"Typography",space:"Spacing",gap:"Spacing",gutter:"Spacing",component:"Spacing",section:"Spacing",flow:"Spacing",safe:"Spacing",header:"Spacing",sticky:"Spacing",size:"Sizing",aspect:"Sizing",ratio:"Sizing",touch:"Sizing",container:"Layout",stack:"Layout",cluster:"Layout",sidebar:"Layout",switcher:"Layout",grid:"Layout",cover:"Layout",frame:"Layout",reel:"Layout",imposter:"Layout",bento:"Layout",box:"Layout",center:"Layout",content:"Layout",breakout:"Layout",divider:"Layout",field:"Layout",border:"Borders",stroke:"Borders",radius:"Radius",shadow:"Shadows",blur:"Effects",opacity:"Effects",gradient:"Effects",mask:"Effects",perspective:"Effects",drop:"Effects",contrast:"Effects",duration:"Motion",ease:"Motion",transition:"Motion",motion:"Motion",animation:"Motion",icon:"Icons",z:"Z-Index",is:"States",current:"States",focus:"Focus",caret:"Focus",scroll:"Scroll",scrollbar:"Scroll",print:"Print",truncate:"Misc"},n=["Colors","Typography","Spacing","Sizing","Layout","Borders","Radius","Shadows","Effects","Motion","Icons","Z-Index","States","Focus","Scroll","Print","Misc"];function a(_){let b=_;b.startsWith("--sf-")&&(b=b.slice(5));const v=b.indexOf("-"),m=v===-1?b:b.slice(0,v);return r[m]||"Misc"}function i(_){const b={};for(const m of _){const w=a(m);b[w]||(b[w]=[]),b[w].push(m)}const v=[];for(const m of n)b[m]?.length&&(b[m].sort(),v.push({category:m,items:b[m]}));for(const m of Object.keys(b))!n.includes(m)&&b[m]?.length&&(b[m].sort(),v.push({category:m,items:b[m]}));return v}const l=i(s);let o=Se({});function c(_){o[_]=!o[_]}var h=Ro(),d=y(h),f=y(d),g=k(d,4);Q(g,17,()=>l,({category:_,items:b})=>_,(_,b)=>{let v=()=>u(b).category,m=()=>u(b).items;var w=Oo(),x=y(w),T=y(x),F=y(T),G=k(T,2),W=y(G),S=k(G,2),H=y(S),V=k(x,2);{var L=B=>{var J=Vo();Q(J,20,m,ve=>ve,(ve,Me)=>{var As=zo(),rr=y(As),X=y(rr);I(()=>C(X,Me)),j(ve,As)}),j(B,J)};le(V,B=>{o[v()]&&B(L)})}I(()=>{U(x,"aria-expanded",o[v()]?"true":"false"),C(F,o[v()]?"▼":"▶"),C(W,v()),C(H,`(${m().length??""})`)}),oe("click",x,()=>c(v())),j(_,w)}),I(()=>C(f,`CSS Variables (${s.length??""})`)),j(e,h),re()}Be(["click"]);var Mo=A('
          • '),Io=A('
              '),Po=A('
            • '),Do=A('
                '),No=A('

                All utility and state classes declared in the active SLASHED bundle.

                ');function Fo(e,t){se(t,!0);const s=ee.inventory?.sf_classes??[],r=ee.inventory?.is_classes??[];let n=ne(!1),a=ne(!1);var i=No(),l=y(i),o=y(l),c=k(l,4),h=y(c),d=y(h),f=y(d),g=k(d,4),_=y(g),b=k(h,2);{var v=H=>{var V=Io();Q(V,20,()=>s,L=>L,(L,B)=>{var J=Mo(),ve=y(J),Me=y(ve);I(()=>C(Me,`.${B??""}`)),j(L,J)}),j(H,V)};le(b,H=>{u(n)&&H(v)})}var m=k(c,2),w=y(m),x=y(w),T=y(x),F=k(x,4),G=y(F),W=k(w,2);{var S=H=>{var V=Do();Q(V,20,()=>r,L=>L,(L,B)=>{var J=Po(),ve=y(J),Me=y(ve);I(()=>C(Me,`.${B??""}`)),j(L,J)}),j(H,V)};le(W,H=>{u(a)&&H(S)})}I(()=>{C(o,`Registered Classes (${s.length+r.length})`),U(h,"aria-expanded",u(n)?"true":"false"),C(f,u(n)?"▼":"▶"),C(_,`(${s.length??""})`),U(w,"aria-expanded",u(a)?"true":"false"),C(T,u(a)?"▼":"▶"),C(G,`(${r.length??""})`)}),oe("click",h,()=>K(n,!u(n))),oe("click",w,()=>K(a,!u(a))),j(e,i),re()}Be(["click"]);async function Nr(e,t){const{url:s,nonce:r}=ee.rest;if(!s)return console.info("[slashed-admin] (dev) would POST",e,t),{ok:!0,dev:!0};const n=await fetch(s+e,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json","X-WP-Nonce":r},body:JSON.stringify(t)});if(!n.ok){const a=await n.text();throw new Error(a||`HTTP ${n.status}`)}return n.json()}function Bo(e,t){return Nr("/tokens",{section:e,values:t})}function Ko(e){return Nr("/tokens/reset",{section:e})}function qo(e){return Nr("/settings",e)}var Ho=A('Saved'),Go=A(' '),Uo=A(`

                Bundle Info

                The SLASHED CSS bundle is loaded automatically by the plugin. The inventory is parsed from whichever bundle is active (essential / optimal / full) and - drives the variable pickers, class autocomplete, and color palette in Bricks.

                Variables registered
                Classes registered

                Plugin Settings

                Override the HTML root font-size. Use this if Bricks forces a font-size you don't want.

                `);function Yo(e,t){te(t,!0);let s=re(Se($.pluginSettings?.html_font_size??"")),r=re(!1),n=re(!1),i=re(""),o=null;async function a(){q(r,!0),q(n,!1),q(i,"");try{await Ko({html_font_size:v(s)}),q(n,!0),o&&clearTimeout(o),o=setTimeout(()=>{q(n,!1),o=null},3e3)}catch(V){q(i,V.message||"Save failed",!0)}finally{q(r,!1)}}var l=Uo(),c=k(m(l),4),u=k(m(c),2),f=m(u),d=k(u,4),g=m(d),_=k(c,4),y=k(m(_),2),p=m(y);p.value=p.__value="";var b=k(p);b.value=b.__value="100";var w=k(b);w.value=w.__value="62.5";var S=k(_,2),E=m(S),F=m(E),G=k(E,2);{var W=V=>{var L=Ho();T(V,L)};le(G,V=>{v(n)&&V(W)})}var x=k(G,2);{var H=V=>{var L=Go(),B=m(L);M(()=>C(B,v(i))),T(V,L)};le(x,V=>{v(i)&&V(H)})}M(()=>{C(f,$.inventory?.variables?.length??0),C(g,($.inventory?.sf_classes?.length??0)+($.inventory?.is_classes?.length??0)),E.disabled=v(r),C(F,v(r)?"Saving...":"Save Settings")}),Na(y,()=>v(s),V=>q(s,V)),oe("click",E,a),T(e,l),se()}Be(["click"]);var Wo=j('

                Parameters:

                 
                '),Zo=j(`

                Filter Hooks Reference

                These WordPress filter hooks let you customize the SLASHED Bricks integration + drives the variable pickers, class autocomplete, and color palette in Bricks.

                Variables registered
                Classes registered

                Plugin Settings

                Override the HTML root font-size. Use this if Bricks forces a font-size you don't want.

                `);function Yo(e,t){se(t,!0);let s=ne(Se(ee.pluginSettings?.html_font_size??"")),r=ne(!1),n=ne(!1),a=ne(""),i=null;async function l(){K(r,!0),K(n,!1),K(a,"");try{await qo({html_font_size:u(s)}),K(n,!0),i&&clearTimeout(i),i=setTimeout(()=>{K(n,!1),i=null},3e3)}catch(V){K(a,V.message||"Save failed",!0)}finally{K(r,!1)}}var o=Uo(),c=k(y(o),4),h=k(y(c),2),d=y(h),f=k(h,4),g=y(f),_=k(c,4),b=k(y(_),2),v=y(b);v.value=v.__value="";var m=k(v);m.value=m.__value="100";var w=k(m);w.value=w.__value="62.5";var x=k(_,2),T=y(x),F=y(T),G=k(T,2);{var W=V=>{var L=Ho();j(V,L)};le(G,V=>{u(n)&&V(W)})}var S=k(G,2);{var H=V=>{var L=Go(),B=y(L);I(()=>C(B,u(a))),j(V,L)};le(S,V=>{u(a)&&V(H)})}I(()=>{C(d,ee.inventory?.variables?.length??0),C(g,(ee.inventory?.sf_classes?.length??0)+(ee.inventory?.is_classes?.length??0)),T.disabled=u(r),C(F,u(r)?"Saving...":"Save Settings")}),Di(b,()=>u(s),V=>K(s,V)),oe("click",T,l),j(e,o),re()}Be(["click"]);var Wo=A('

                Parameters:

                 
                '),Zo=A(`

                Filter Hooks Reference

                These WordPress filter hooks let you customize the SLASHED Bricks integration from your theme or a mu-plugin. Each hook fires during plugin initialization.

                `);function Xo(e){const t=[{name:"slashed_bricks/css_bundle_url",description:"Override which CSS bundle URL to load.",params:"$url (string) - The current CSS bundle URL.",example:`add_filter( 'slashed_bricks/css_bundle_url', function( $url ) { // Load from a CDN instead. return 'https://cdn.example.com/slashed/slashed.optimal.css'; @@ -34,11 +36,11 @@ add_filter( 'slashed_bricks/inventory_local_path', function() { 'SLASHED Primary', 'SLASHED Secondary', ] ) ); -} );`}];var s=Zo(),r=k(m(s),4);ne(r,17,()=>t,n=>n.name,(n,i)=>{var o=Wo(),a=m(o),l=m(a),c=m(l),u=k(a,2),f=m(u),d=k(u,2),g=k(m(d),2),_=m(g),y=k(d,2),p=m(y),b=m(p);M(()=>{C(c,v(i).name),C(f,v(i).description),C(_,v(i).params),C(b,v(i).example)}),T(n,o)}),T(e,s)}const Jo=[{category:"Colors",description:"Brand, status, semantic, and derived color tokens. Source colors use oklch(); the framework derives light-dark pairs, palettes, and alpha scales automatically.",tokens:[{name:"--sf-color-{brand}-light",description:"Source color for the brand (oklch registered value). Set this to rebrand."},{name:"--sf-color-{brand}",description:"Resolved light-dark adaptive color for use in rules."},{name:"--sf-color-{brand}-{50-950}",description:"Palette scale: 50 (lightest) to 950 (darkest) mixed with base/text."},{name:"--sf-color-{brand}-a{5-95}",description:"Alpha scale: 5% to 95% opacity of the brand color."},{name:"--sf-color-{brand}-hover/active/muted/subtle/ghost/lighter/darker/xlight/xdark/superlight/superdark",description:"Semantic aliases for common UI states, mapped to palette steps."},{name:"--sf-color-bg",description:"Page background color, derived from base."},{name:"--sf-color-text",description:"Main body text color, contrast-aware."},{name:"--sf-color-heading",description:"Heading text color, slightly stronger than body text."},{name:"--sf-color-link",description:"Link color, derived from action brand."},{name:"--sf-color-border",description:"Default border color."},{name:"--sf-color-surface",description:"Card/panel surface color (equals base)."},{name:"--sf-color-overlay",description:"Semi-transparent overlay for modals."},{name:"--sf-color-dim",description:"50% black overlay for dimming backgrounds."},{name:"--sf-color-success/warning/error/info/danger",description:"Status feedback colors with -light source, -muted, -strong, -subtle variants."}]},{category:"Typography",description:"Font families, sizes (fluid clamp-based scale), weights, line-heights, letter-spacing, and heading configuration.",tokens:[{name:"--sf-font-body",description:"Body font stack (system-ui default)."},{name:"--sf-font-heading",description:"Heading font stack (defaults to body)."},{name:"--sf-font-mono",description:"Monospace font stack."},{name:"--sf-font-display",description:"Display/hero font (defaults to heading)."},{name:"--sf-font-geometric/humanist/slab",description:"Curated fallback stacks for common typographic personalities."},{name:"--sf-text-{2xs..4xl}",description:"Fluid type scale using clamp(). Sizes: 2xs, xs, s, m, l, xl, 2xl, 3xl, 4xl."},{name:"--sf-text-display-{s,m,l}",description:"Extra-large display/hero sizes."},{name:"--sf-text-scale",description:"Global multiplier for the type scale (default 1)."},{name:"--sf-font-weight-{thin..black}",description:"Named weight tokens: thin(100), extralight(200), light(300), normal(400), medium(500), semibold(600), bold(700), extrabold(800), black(900)."},{name:"--sf-leading-{tight,snug,normal,relaxed}",description:"Line-height presets: 1.1, 1.3, 1.5, 1.625."},{name:"--sf-tracking-{tight,normal,wide,wider,widest}",description:"Letter-spacing presets from -0.025em to 0.1em."},{name:"--sf-h{1-6}-size/font-weight/line-height/letter-spacing",description:"Per-heading-level configuration tokens."},{name:"--sf-body-*",description:"Body text configuration: font-size, font-weight, line-height, color, text-wrap."}]},{category:"Spacing",description:"Fluid spacing scale (clamp-based), gutters, section padding, and component padding.",tokens:[{name:"--sf-space-{2xs..4xl}",description:"Fluid spacing scale. Sizes: none, px, 2xs, xs, s, m, l, xl, 2xl, 3xl, 4xl."},{name:"--sf-space-scale",description:"Global multiplier for all space tokens (default 1)."},{name:"--sf-space-gutter",description:"Page-edge gutter (defaults to space-l)."},{name:"--sf-gap",description:"Default gap for layouts (defaults to space-m)."},{name:"--sf-content-gap",description:"Gap between content elements (defaults to space-s)."},{name:"--sf-section-pad--{s,m,l,xl}",description:"Vertical padding for page sections."},{name:"--sf-component-pad",description:"Internal padding for components (defaults to space-m)."},{name:"--sf-header-height",description:"Expected fixed header height for sticky offset calculations."},{name:"--sf-safe-{top,right,bottom,left}",description:"Safe area insets for notched devices."}]},{category:"Sizing",description:"Component sizes, touch targets, and aspect ratios.",tokens:[{name:"--sf-size-{xs..xl}",description:"Named size tokens: xs(1.5rem), s(2rem), m(2.5rem), l(2.75rem), xl(3.5rem)."},{name:"--sf-touch-target",description:"Minimum interactive element size (defaults to size-l, 2.75rem)."},{name:"--sf-ratio-{square,photo,video,cinema,golden,portrait}",description:"Predefined aspect ratios for frames and containers."},{name:"--sf-icon-{xs..xl}",description:"Icon sizing in em units (0.875em to 3em)."}]},{category:"Layout",description:"Container widths, layout primitive tokens (stack, cluster, grid, sidebar, switcher, bento, cover, frame, reel, imposter).",tokens:[{name:"--sf-container-{narrow,default,prose,wide,full}",description:"Max-width presets for .sf-container."},{name:"--sf-stack-gap",description:"Vertical gap between .sf-stack children."},{name:"--sf-cluster-gap/align/justify",description:"Inline cluster layout tokens."},{name:"--sf-sidebar-width/gap/min-width",description:"Sidebar layout tokens."},{name:"--sf-switcher-threshold/gap",description:"Column-to-stack breakpoint and gap."},{name:"--sf-grid-min/gap",description:"Auto-fill grid minimum item width and gap."},{name:"--sf-bento-cols/gap/row",description:"Dense bento grid configuration."},{name:"--sf-cover-min-height/padding",description:"Full-height cover layout."},{name:"--sf-frame-ratio",description:"Aspect ratio for .sf-frame (defaults to 16/9)."},{name:"--sf-reel-gap/height/item-width",description:"Horizontal scroll strip configuration."},{name:"--sf-imposter-margin",description:"Safety margin for absolute-centered overlays."},{name:"--sf-breakout-width/content-width",description:"Breakout grid track widths."},{name:"--sf-divider-color/style/width",description:"Divider appearance tokens."}]},{category:"Borders",description:"Border widths and styles.",tokens:[{name:"--sf-border-width-{hairline,1,2,3,4}",description:"Border width scale: 0.5px, 1px, 2px, 3px, 4px."},{name:"--sf-border-style/dotted/soft/strong",description:"Border style presets (solid, dotted, dashed, solid)."},{name:"--sf-stroke-{thin,regular,bold,heavy}",description:"Stroke widths for SVG/icon use: 1px, 1.5px, 2px, 3px."}]},{category:"Radius",description:"Border radius scale and special shapes.",tokens:[{name:"--sf-radius-{none,xs,s,m,l,xl,2xl,3xl,4xl,full}",description:"Radius scale from 0 to 9999px (pill)."},{name:"--sf-radius-scale",description:"Global multiplier for all radius tokens (default 1)."},{name:"--sf-radius-pill",description:"Fully rounded (9999px)."},{name:"--sf-radius-outer",description:"Outer radius = inner + padding (for nested rounding)."}]},{category:"Shadows",description:"Box shadows, drop shadows, text shadows, and shadow configuration.",tokens:[{name:"--sf-shadow-{xs,s,m,l,xl,2xl}",description:"Elevation shadow scale, progressively more dramatic."},{name:"--sf-shadow-inner",description:"Inset shadow for recessed elements."},{name:"--sf-shadow-glow",description:"Colored glow effect (uses --sf-shadow-glow-color)."},{name:"--sf-shadow-none",description:"Explicit no-shadow value."},{name:"--sf-shadow-color",description:"Base shadow color (derived from neutral)."},{name:"--sf-shadow-strength",description:"Shadow opacity multiplier (adapts to dark mode)."},{name:"--sf-drop-shadow-{s,m,l}",description:"CSS filter drop-shadow equivalents."},{name:"--sf-text-shadow-{s,m,l,none}",description:"Text shadow presets."}]},{category:"Effects",description:"Blurs, opacities, gradients, masks, and perspective.",tokens:[{name:"--sf-blur-{xs,s,m,l,xl}",description:"Blur radius scale: 4px to 48px."},{name:"--sf-opacity-{0,10,25,50,75,100,disabled}",description:"Named opacity presets."},{name:"--sf-gradient-{brand,primary,secondary,tertiary,surface}",description:"Predefined gradients using brand colors."},{name:"--sf-gradient-fade--{t,b,l,r}",description:"Directional fade-to-background gradients."},{name:"--sf-mask-scrim-start/end",description:"Scroll mask fade depth."},{name:"--sf-perspective-{near,normal,far}",description:"3D perspective presets: 500px, 1000px, 2000px."},{name:"--sf-contrast-bias/threshold",description:"Color contrast tuning for auto text-on-color logic."}]},{category:"Motion",description:"Durations, easing curves, transitions, and animations.",tokens:[{name:"--sf-duration-{none,instant,fast,normal,slow,slower}",description:"Duration scale: 0ms to 600ms (respects --sf-motion-scale)."},{name:"--sf-motion-scale",description:"Global animation speed multiplier (set 0 to disable)."},{name:"--sf-ease-{linear,in,out,in-out,bounce,elastic,overshoot,spring}",description:"Easing function presets."},{name:"--sf-transition-{all,colors,opacity,shadow,transform,fast,slow,enter,exit}",description:"Pre-composed transition shorthands."},{name:"--sf-animation-{fade-in,fade-out,scale-up,scale-down,slide-in-*,float,ping,blink,color-pulse}",description:"Named keyframe animation shorthands."},{name:"--sf-animation-delay-{1-5}",description:"Stagger delays for sequential animations."}]},{category:"Z-Index",description:"Z-index scale for predictable layering.",tokens:[{name:"--sf-z-{below,base,raised,low,mid,high,top,max}",description:"Z-index scale: -1, 0, 1, 10, 100, 500, 900, 9999."}]},{category:"Focus",description:"Focus ring appearance for keyboard navigation.",tokens:[{name:"--sf-focus-ring-width/offset/color/style/shadow",description:"Focus indicator configuration."},{name:"--sf-caret-color",description:"Text input caret color (defaults to action)."}]},{category:"Scroll",description:"Scroll timeline and scrollbar styling.",tokens:[{name:"--sf-scroll-timeline-range-start/end",description:"Scroll-driven animation range."},{name:"--sf-scrollbar-thumb/track",description:"Custom scrollbar colors."}]},{category:"Print",description:"Print stylesheet configuration.",tokens:[{name:"--sf-print-base-size/page-margin/page-size",description:"Print layout tokens: 11pt base, 2cm margins, A4 size."}]}],Qo=[{category:"Layout Primitives",description:"Breakpoint-free, container-query-driven layout components. Each is a single class with per-instance token overrides via inline style.",classes:[{name:".sf-section",description:"Vertical page rhythm with size variants (--s/--m/--l/--xl/--collapse)."},{name:".sf-section-group",description:"Collapses gap between adjacent sections."},{name:".sf-container",description:"Centered max-width wrapper with gutters. Variants: --narrow, --wide, --full, --prose."},{name:".sf-box",description:"Isolated unit with padding and optional border."},{name:".sf-center",description:"Intrinsic centering with max-width. Variant: --intrinsic."},{name:".sf-stack",description:"Vertical flow with consistent gap. Size variants: --2xs to --3xl. Alignment: --center, --end, --stretch."},{name:".sf-cluster",description:"Wrapping inline group. Size variants: --2xs to --xl. Alignment: --center, --end, --between. Wrap: --no-wrap."},{name:".sf-sidebar",description:"Content + side panel that wraps. Variants: --right, --narrow, --wide."},{name:".sf-switcher",description:"N columns above threshold, stacked below. Variants: --no-wrap, --vertical."},{name:".sf-grid",description:"Auto-fill responsive grid. Size variants: --xs to --xl. Variants: --fit, --dense."},{name:".sf-grid-{1,2,3,4,6}",description:"Fixed-column grids, container-responsive."},{name:".sf-grid-{1-2,2-1,1-3,3-1}",description:"Ratio two-column grids."},{name:".sf-bento",description:"Dense free-form grid. Variants: --2, --4, --compact, --tall."},{name:".sf-alternate",description:"Zigzag two-column layout, reverses every other row."},{name:".sf-pancake",description:"Sticky-footer grid: header / main(1fr) / footer."},{name:".sf-content-grid",description:"Breakout layout grid. Children use .sf-breakout or .sf-full-bleed."},{name:".sf-cover",description:"Full-height region with centered content. Variants: --min, --max, --padding-s, --padding-l."},{name:".sf-frame",description:"Aspect-ratio media box. Variants: --square, --portrait, --video, --cinema, --3-2, --4-3, --golden."},{name:".sf-reel",description:"Horizontal scroll strip with optional mask fade."},{name:".sf-imposter",description:"Absolutely-centered overlay. Variants: --fixed, --contain."},{name:".sf-subgrid / .sf-subgrid-rows",description:"Inherit parent grid tracks."},{name:".sf-divider",description:"Token-driven separator. Variant: --vertical."},{name:".sf-icon",description:"Em-based inline icon sizing. Sizes: --xs to --xl. Variant: --boxed."},{name:".sf-prose",description:"Readable long-form text with automatic vertical rhythm."},{name:".sf-not-prose",description:"Reset zone inside .sf-prose for embedded components."}]},{category:"Macros",description:"Recipe classes that answer 'what does this element do/look like?' - composable with layout primitives.",classes:[{name:".sf-flow",description:"Lobotomized owl: consistent gap between consecutive children."},{name:".sf-truncate",description:"Single-line ellipsis overflow."},{name:".sf-line-clamp-{2,3,N}",description:"Multi-line text clamping with ellipsis. -N reads --sf-line-clamp."},{name:".sf-equal-height",description:"Forces flex children to share the tallest child's height."},{name:".sf-aspect",description:"Generic aspect-ratio container (reads --sf-aspect token)."},{name:".sf-scroll-shadow",description:"Top + bottom mask gradient for scrolling containers."},{name:".sf-scroll-snap",description:"Vertical scroll-snap container."},{name:".sf-overflow-fade",description:"End-edge horizontal fade for overflowing inline content."},{name:".sf-no-tap-highlight",description:"Suppresses WebKit/Android tap highlight."},{name:".sf-text-gradient",description:"Gradient text effect using background-clip."},{name:".sf-clickable-parent",description:"Makes an entire card clickable via the first link inside."},{name:".sf-link-external",description:"Adds external link indicator marker."}]},{category:"Surfaces",description:"Color surface utility classes that set background and text color for a brand context.",classes:[{name:".sf-surface--{primary,secondary,tertiary,action,neutral,inverse}",description:"Brand-colored surface with auto-contrast text."},{name:".sf-surface--{success,warning,error,info,danger}",description:"Status-colored surfaces."}]},{category:"Animations",description:"CSS animation utility classes that apply predefined keyframe animations.",classes:[{name:".sf-fade-in / .sf-fade-out",description:"Opacity entrance/exit animations."},{name:".sf-scale-up / .sf-scale-down",description:"Scale entrance/exit animations."},{name:".sf-slide-in-{up,down,left,right}",description:"Directional slide-in entrance animations."},{name:".sf-color-pulse",description:"Continuous color pulse animation."},{name:".sf-entrance--fade / --fade-up / --fade-down / --fade-left / --fade-right / --scale-up",description:"Scroll-triggered entrance animations (scroll-timeline driven)."}]},{category:"State Classes (.is-*)",description:"Runtime state classes toggled by JS or mirrored from ARIA. They live in the slashed.states layer. Always pair with matching ARIA attributes.",classes:[{name:".is-hidden / .is-invisible / .is-visible",description:"Visibility control: removed from layout / hidden but keeps box / visible."},{name:".is-disabled / .is-readonly",description:"Non-interactive states with dimming."},{name:".is-loading / .is-pending / .is-busy",description:"Loading states: spinner replacement / optimistic UI / cursor hint."},{name:".is-skeleton",description:"Placeholder shimmer animation."},{name:".is-active / .is-selected / .is-current / .is-pressed",description:"Selection/activation states."},{name:".is-highlighted",description:"Transient emphasis (e.g. search result highlight)."},{name:".is-open / .is-collapsed / .is-expanded",description:"Disclosure states for modals, drawers, accordions."},{name:".is-valid / .is-invalid",description:"Form field validation results (maps to aria-invalid)."},{name:".is-success / .is-error / .is-warning / .is-info / .is-danger",description:"General feedback states and destructive-action context."},{name:".is-sticky / .is-pinned / .is-fixed / .is-fullscreen",description:"Positioning states."},{name:".is-clipped / .is-scrollable / .is-truncated / .is-resizable",description:"Overflow handling states."},{name:".is-dragging / .is-drop-target / .is-draggable",description:"Drag and drop states."},{name:".is-overlay / .is-focused / .is-clickable / .is-unselectable",description:"Positioning, focus, cursor, and selection states."},{name:".is-empty",description:"Hide element when empty (:empty pseudo-class)."}]}],$o=[{name:"--sf-is-dark",description:"Numeric flag (0 or 1) indicating dark mode is active. Registered property."},{name:"--sf-lumlocker",description:"Internal luminance lock value for color derivation."},{name:"--sf-color-scheme",description:"CSS color-scheme declaration (light dark)."},{name:"--sf-current-font-weight",description:"Current context font weight (used by strong elements)."},{name:"--sf-link-external-marker",description:"External link arrow character."},{name:"--sf-field-block",description:"Vertical spacing between form fields."},{name:"--sf-field-required-marker",description:"Required field indicator string."}];var el=j('
              • '),tl=j('
                  '),sl=j('
                • '),rl=j('
                  Misc Tokens that do not fit a single category.
                    '),nl=j('

                    CSS Custom Properties (--sf-*)

                    '),il=j('
                  • '),al=j('
                      '),ol=j('

                      Utility & State Classes

                      '),ll=j('

                      '),cl=j('

                      API Cheatsheet

                      ');function fl(e,t){te(t,!0);let s=re(""),r=re("all");const n=$.inventory?.variables?.length??0,i=$.inventory?.sf_classes?.length??0,o=$.inventory?.is_classes?.length??0;let a=A(()=>f(Jo,"tokens")),l=A(()=>f(Qo,"classes")),c=A(()=>$o.filter(X=>u(X.name,X.description)));function u(X,he){if(!v(s).trim())return!0;const pe=v(s).trim().toLowerCase();return X.toLowerCase().includes(pe)||he.toLowerCase().includes(pe)}function f(X,he){return v(s).trim()?X.map(pe=>({...pe,[he]:pe[he].filter(Pt=>u(Pt.name,Pt.description))})).filter(pe=>pe[he].length>0):X}let d=A(()=>v(r)==="all"||v(r)==="variables"),g=A(()=>v(r)==="all"||v(r)==="classes"),_=A(()=>v(s).trim()!==""&&(!v(d)||v(a).length===0&&v(c).length===0)&&(!v(g)||v(l).length===0));var y=cl(),p=m(y),b=k(m(p),2),w=m(b),S=k(p,2),E=m(S),F=k(E,2),G=m(F);let W;var x=k(G,2);let H;var V=k(x,2);let L;var B=k(S,2);{var J=X=>{var he=nl(),pe=k(m(he),2);ne(pe,17,()=>v(a),cs,(Ze,qe)=>{var rt=tl(),nt=m(rt),vt=m(nt),Nt=m(vt),Dt=k(vt,2),ht=m(Dt),Ft=k(nt,2);ne(Ft,21,()=>v(qe).tokens,cs,(it,ls)=>{var Cs=el(),zs=m(Cs),rr=m(zs),si=k(zs,2),ri=m(si);M(()=>{C(rr,v(ls).name),C(ri,v(ls).description)}),T(it,Cs)}),M(it=>{rt.open=it,C(Nt,v(qe).category),C(ht,v(qe).description)},[()=>!v(s).trim()]),T(Ze,rt)});var Pt=k(pe,2);{var os=Ze=>{var qe=rl(),rt=k(m(qe),2);ne(rt,21,()=>v(c),cs,(nt,vt)=>{var Nt=sl(),Dt=m(Nt),ht=m(Dt),Ft=k(Dt,2),it=m(Ft);M(()=>{C(ht,v(vt).name),C(it,v(vt).description)}),T(nt,Nt)}),M(nt=>qe.open=nt,[()=>!v(s).trim()]),T(Ze,qe)};le(Pt,Ze=>{v(c).length>0&&Ze(os)})}T(X,he)};le(B,X=>{v(d)&&X(J)})}var ve=k(B,2);{var Ie=X=>{var he=ol(),pe=k(m(he),2);ne(pe,17,()=>v(l),cs,(Pt,os)=>{var Ze=al(),qe=m(Ze),rt=m(qe),nt=m(rt),vt=k(rt,2),Nt=m(vt),Dt=k(qe,2);ne(Dt,21,()=>v(os).classes,cs,(ht,Ft)=>{var it=il(),ls=m(it),Cs=m(ls),zs=k(ls,2),rr=m(zs);M(()=>{C(Cs,v(Ft).name),C(rr,v(Ft).description)}),T(ht,it)}),M(ht=>{Ze.open=ht,C(nt,v(os).category),C(Nt,v(os).description)},[()=>!v(s).trim()]),T(Pt,Ze)}),T(X,he)};le(ve,X=>{v(g)&&X(Ie)})}var As=k(ve,2);{var sr=X=>{var he=ll(),pe=m(he);M(()=>C(pe,`No results for "${v(s)??""}"`)),T(X,he)};le(As,X=>{v(_)&&X(sr)})}M(()=>{C(w,`${n??""} variables | ${i??""} layout/utility classes | ${o??""} state classes`),U(G,"aria-pressed",v(r)==="all"),W=Zt(G,1,"svelte-osej3t",null,W,{active:v(r)==="all"}),U(x,"aria-pressed",v(r)==="variables"),H=Zt(x,1,"svelte-osej3t",null,H,{active:v(r)==="variables"}),U(V,"aria-pressed",v(r)==="classes"),L=Zt(V,1,"svelte-osej3t",null,L,{active:v(r)==="classes"})}),Bs(E,()=>v(s),X=>q(s,X)),oe("click",G,()=>q(r,"all")),oe("click",x,()=>q(r,"variables")),oe("click",V,()=>q(r,"classes")),T(e,y),se()}Be(["click"]);var dl=j('
                      '),ul=j(`

                      Live preview

                      The quick brown fox jumps over the lazy dog

                      This is a preview of your design token configuration. Adjust values above +} );`}];var s=Zo(),r=k(y(s),4);Q(r,17,()=>t,n=>n.name,(n,a)=>{var i=Wo(),l=y(i),o=y(l),c=y(o),h=k(l,2),d=y(h),f=k(h,2),g=k(y(f),2),_=y(g),b=k(f,2),v=y(b),m=y(v);I(()=>{C(c,u(a).name),C(d,u(a).description),C(_,u(a).params),C(m,u(a).example)}),j(n,i)}),j(e,s)}const Jo=[{category:"Colors",description:"Brand, status, semantic, and derived color tokens. Source colors use oklch(); the framework derives light-dark pairs, palettes, and alpha scales automatically.",tokens:[{name:"--sf-color-{brand}-light",description:"Source color for the brand (oklch registered value). Set this to rebrand."},{name:"--sf-color-{brand}-dark",description:"Optional dark-mode override. If set, replaces the auto-derived dark variant for full per-mode control."},{name:"--sf-color-{brand}",description:"Resolved light-dark adaptive color for use in rules."},{name:"--sf-color-{brand}-{50-950}",description:"Palette scale: 50 (lightest) to 950 (darkest) mixed with base/text."},{name:"--sf-color-{brand}-a{5-95}",description:"Alpha scale: 5% to 95% opacity of the brand color."},{name:"--sf-color-{brand}-hover/active/muted/subtle/ghost/lighter/darker/xlight/xdark/superlight/superdark",description:"Semantic aliases for common UI states, mapped to palette steps."},{name:"--sf-color-bg",description:"Page background color, derived from base."},{name:"--sf-color-text",description:"Main body text color, contrast-aware."},{name:"--sf-color-heading",description:"Heading text color, slightly stronger than body text."},{name:"--sf-color-link",description:"Link color, derived from action brand."},{name:"--sf-color-border",description:"Default border color."},{name:"--sf-color-surface",description:"Card/panel surface color (equals base)."},{name:"--sf-color-overlay",description:"Semi-transparent overlay for modals."},{name:"--sf-color-dim",description:"50% black overlay for dimming backgrounds."},{name:"--sf-color-success/warning/error/info/danger",description:"Status feedback colors with -light source, -muted, -strong, -subtle variants."}]},{category:"Typography",description:"Font families, sizes (fluid clamp-based scale), weights, line-heights, letter-spacing, and heading configuration.",tokens:[{name:"--sf-font-body",description:"Body font stack (system-ui default)."},{name:"--sf-font-heading",description:"Heading font stack (defaults to body)."},{name:"--sf-font-mono",description:"Monospace font stack."},{name:"--sf-font-display",description:"Display/hero font (defaults to heading)."},{name:"--sf-font-geometric/humanist/slab",description:"Curated fallback stacks for common typographic personalities."},{name:"--sf-text-{2xs..4xl}",description:"Fluid type scale using clamp(). Sizes: 2xs, xs, s, m, l, xl, 2xl, 3xl, 4xl."},{name:"--sf-text-display-{s,m,l}",description:"Extra-large display/hero sizes."},{name:"--sf-text-scale",description:"Global multiplier for the type scale (default 1)."},{name:"--sf-font-weight-{thin..black}",description:"Named weight tokens: thin(100), extralight(200), light(300), normal(400), medium(500), semibold(600), bold(700), extrabold(800), black(900)."},{name:"--sf-leading-{tight,snug,normal,relaxed}",description:"Line-height presets: 1.1, 1.3, 1.5, 1.625."},{name:"--sf-tracking-{tight,normal,wide,wider,widest}",description:"Letter-spacing presets from -0.025em to 0.1em."},{name:"--sf-h{1-6}-size/font-weight/line-height/letter-spacing",description:"Per-heading-level configuration tokens."},{name:"--sf-body-*",description:"Body text configuration: font-size, font-weight, line-height, color, text-wrap."}]},{category:"Spacing",description:"Fluid spacing scale (clamp-based), gutters, section padding, and component padding.",tokens:[{name:"--sf-space-{2xs..4xl}",description:"Fluid spacing scale. Sizes: none, px, 2xs, xs, s, m, l, xl, 2xl, 3xl, 4xl."},{name:"--sf-space-scale",description:"Global multiplier for all space tokens (default 1)."},{name:"--sf-space-gutter",description:"Page-edge gutter (defaults to space-l)."},{name:"--sf-gap",description:"Default gap for layouts (defaults to space-m)."},{name:"--sf-content-gap",description:"Gap between content elements (defaults to space-s)."},{name:"--sf-section-pad--{s,m,l,xl}",description:"Vertical padding for page sections."},{name:"--sf-component-pad",description:"Internal padding for components (defaults to space-m)."},{name:"--sf-header-height",description:"Expected fixed header height for sticky offset calculations."},{name:"--sf-safe-{top,right,bottom,left}",description:"Safe area insets for notched devices."}]},{category:"Sizing",description:"Component sizes, touch targets, and aspect ratios.",tokens:[{name:"--sf-size-{xs..xl}",description:"Named size tokens: xs(1.5rem), s(2rem), m(2.5rem), l(2.75rem), xl(3.5rem)."},{name:"--sf-touch-target",description:"Minimum interactive element size (defaults to size-l, 2.75rem)."},{name:"--sf-ratio-{square,photo,video,cinema,golden,portrait}",description:"Predefined aspect ratios for frames and containers."},{name:"--sf-icon-{xs..xl}",description:"Icon sizing in em units (0.875em to 3em)."}]},{category:"Layout",description:"Container widths, layout primitive tokens (stack, cluster, grid, sidebar, switcher, bento, cover, frame, reel, imposter).",tokens:[{name:"--sf-container-{narrow,default,prose,wide,full}",description:"Max-width presets for .sf-container."},{name:"--sf-stack-gap",description:"Vertical gap between .sf-stack children."},{name:"--sf-cluster-gap/align/justify",description:"Inline cluster layout tokens."},{name:"--sf-sidebar-width/gap/min-width",description:"Sidebar layout tokens."},{name:"--sf-switcher-threshold/gap",description:"Column-to-stack breakpoint and gap."},{name:"--sf-grid-min/gap",description:"Auto-fill grid minimum item width and gap."},{name:"--sf-bento-cols/gap/row",description:"Dense bento grid configuration."},{name:"--sf-cover-min-height/padding",description:"Full-height cover layout."},{name:"--sf-frame-ratio",description:"Aspect ratio for .sf-frame (defaults to 16/9)."},{name:"--sf-reel-gap/height/item-width",description:"Horizontal scroll strip configuration."},{name:"--sf-imposter-margin",description:"Safety margin for absolute-centered overlays."},{name:"--sf-breakout-width/content-width",description:"Breakout grid track widths."},{name:"--sf-divider-color/style/width",description:"Divider appearance tokens."}]},{category:"Borders",description:"Border widths and styles.",tokens:[{name:"--sf-border-width-{hairline,1,2,3,4}",description:"Border width scale: 0.5px, 1px, 2px, 3px, 4px."},{name:"--sf-border-style/dotted/soft/strong",description:"Border style presets (solid, dotted, dashed, solid)."},{name:"--sf-stroke-{thin,regular,bold,heavy}",description:"Stroke widths for SVG/icon use: 1px, 1.5px, 2px, 3px."}]},{category:"Radius",description:"Border radius scale and special shapes.",tokens:[{name:"--sf-radius-{none,xs,s,m,l,xl,2xl,3xl,4xl,full}",description:"Radius scale from 0 to 9999px (pill)."},{name:"--sf-radius-scale",description:"Global multiplier for all radius tokens (default 1)."},{name:"--sf-radius-pill",description:"Fully rounded (9999px)."},{name:"--sf-radius-outer",description:"Outer radius = inner + padding (for nested rounding)."}]},{category:"Shadows",description:"Box shadows, drop shadows, text shadows, and shadow configuration.",tokens:[{name:"--sf-shadow-{xs,s,m,l,xl,2xl}",description:"Elevation shadow scale, progressively more dramatic."},{name:"--sf-shadow-inner",description:"Inset shadow for recessed elements."},{name:"--sf-shadow-glow",description:"Colored glow effect (uses --sf-shadow-glow-color)."},{name:"--sf-shadow-none",description:"Explicit no-shadow value."},{name:"--sf-shadow-color",description:"Base shadow color (derived from neutral)."},{name:"--sf-shadow-strength",description:"Shadow opacity multiplier (adapts to dark mode)."},{name:"--sf-drop-shadow-{s,m,l}",description:"CSS filter drop-shadow equivalents."},{name:"--sf-text-shadow-{s,m,l,none}",description:"Text shadow presets."}]},{category:"Effects",description:"Blurs, opacities, gradients, masks, and perspective.",tokens:[{name:"--sf-blur-{xs,s,m,l,xl}",description:"Blur radius scale: 4px to 48px."},{name:"--sf-opacity-{0,10,25,50,75,100,disabled}",description:"Named opacity presets."},{name:"--sf-gradient-{brand,primary,secondary,tertiary,surface}",description:"Predefined gradients using brand colors."},{name:"--sf-gradient-fade--{t,b,l,r}",description:"Directional fade-to-background gradients."},{name:"--sf-mask-scrim-start/end",description:"Scroll mask fade depth."},{name:"--sf-perspective-{near,normal,far}",description:"3D perspective presets: 500px, 1000px, 2000px."},{name:"--sf-contrast-bias/threshold",description:"Color contrast tuning for auto text-on-color logic."}]},{category:"Motion",description:"Durations, easing curves, transitions, and animations.",tokens:[{name:"--sf-duration-{none,instant,fast,normal,slow,slower}",description:"Duration scale: 0ms to 600ms (respects --sf-motion-scale)."},{name:"--sf-motion-scale",description:"Global animation speed multiplier (set 0 to disable)."},{name:"--sf-ease-{linear,in,out,in-out,bounce,elastic,overshoot,spring}",description:"Easing function presets."},{name:"--sf-transition-{all,colors,opacity,shadow,transform,fast,slow,enter,exit}",description:"Pre-composed transition shorthands."},{name:"--sf-animation-{fade-in,fade-out,scale-up,scale-down,slide-in-*,float,ping,blink,color-pulse}",description:"Named keyframe animation shorthands."},{name:"--sf-animation-delay-{1-5}",description:"Stagger delays for sequential animations."}]},{category:"Z-Index",description:"Z-index scale for predictable layering.",tokens:[{name:"--sf-z-{below,base,raised,low,mid,high,top,max}",description:"Z-index scale: -1, 0, 1, 10, 100, 500, 900, 9999."}]},{category:"Focus",description:"Focus ring appearance for keyboard navigation.",tokens:[{name:"--sf-focus-ring-width/offset/color/style/shadow",description:"Focus indicator configuration."},{name:"--sf-caret-color",description:"Text input caret color (defaults to action)."}]},{category:"Scroll",description:"Scroll timeline and scrollbar styling.",tokens:[{name:"--sf-scroll-timeline-range-start/end",description:"Scroll-driven animation range."},{name:"--sf-scrollbar-thumb/track",description:"Custom scrollbar colors."}]},{category:"Print",description:"Print stylesheet configuration.",tokens:[{name:"--sf-print-base-size/page-margin/page-size",description:"Print layout tokens: 11pt base, 2cm margins, A4 size."}]}],$o=[{category:"Layout Primitives",description:"Breakpoint-free, container-query-driven layout components. Each is a single class with per-instance token overrides via inline style.",classes:[{name:".sf-section",description:"Vertical page rhythm with size variants (--s/--m/--l/--xl/--collapse)."},{name:".sf-section-group",description:"Collapses gap between adjacent sections."},{name:".sf-container",description:"Centered max-width wrapper with gutters. Variants: --narrow, --wide, --full, --prose."},{name:".sf-box",description:"Isolated unit with padding and optional border."},{name:".sf-center",description:"Intrinsic centering with max-width. Variant: --intrinsic."},{name:".sf-stack",description:"Vertical flow with consistent gap. Size variants: --2xs to --3xl. Alignment: --center, --end, --stretch."},{name:".sf-cluster",description:"Wrapping inline group. Size variants: --2xs to --xl. Alignment: --center, --end, --between. Wrap: --no-wrap."},{name:".sf-sidebar",description:"Content + side panel that wraps. Variants: --right, --narrow, --wide."},{name:".sf-switcher",description:"N columns above threshold, stacked below. Variants: --no-wrap, --vertical."},{name:".sf-grid",description:"Auto-fill responsive grid. Size variants: --xs to --xl. Variants: --fit, --dense."},{name:".sf-grid-{1,2,3,4,6}",description:"Fixed-column grids, container-responsive."},{name:".sf-grid-{1-2,2-1,1-3,3-1}",description:"Ratio two-column grids."},{name:".sf-bento",description:"Dense free-form grid. Variants: --2, --4, --compact, --tall."},{name:".sf-alternate",description:"Zigzag two-column layout, reverses every other row."},{name:".sf-pancake",description:"Sticky-footer grid: header / main(1fr) / footer."},{name:".sf-content-grid",description:"Breakout layout grid. Children use .sf-breakout or .sf-full-bleed."},{name:".sf-cover",description:"Full-height region with centered content. Variants: --min, --max, --padding-s, --padding-l."},{name:".sf-frame",description:"Aspect-ratio media box. Variants: --square, --portrait, --video, --cinema, --3-2, --4-3, --golden."},{name:".sf-reel",description:"Horizontal scroll strip with optional mask fade."},{name:".sf-imposter",description:"Absolutely-centered overlay. Variants: --fixed, --contain."},{name:".sf-subgrid / .sf-subgrid-rows",description:"Inherit parent grid tracks."},{name:".sf-divider",description:"Token-driven separator. Variant: --vertical."},{name:".sf-icon",description:"Em-based inline icon sizing. Sizes: --xs to --xl. Variant: --boxed."},{name:".sf-prose",description:"Readable long-form text with automatic vertical rhythm."},{name:".sf-not-prose",description:"Reset zone inside .sf-prose for embedded components."}]},{category:"Macros",description:"Recipe classes that answer 'what does this element do/look like?' - composable with layout primitives.",classes:[{name:".sf-flow",description:"Lobotomized owl: consistent gap between consecutive children."},{name:".sf-truncate",description:"Single-line ellipsis overflow."},{name:".sf-line-clamp-{2,3,N}",description:"Multi-line text clamping with ellipsis. -N reads --sf-line-clamp."},{name:".sf-equal-height",description:"Forces flex children to share the tallest child's height."},{name:".sf-aspect",description:"Generic aspect-ratio container (reads --sf-aspect token)."},{name:".sf-scroll-shadow",description:"Top + bottom mask gradient for scrolling containers."},{name:".sf-scroll-snap",description:"Vertical scroll-snap container."},{name:".sf-overflow-fade",description:"End-edge horizontal fade for overflowing inline content."},{name:".sf-no-tap-highlight",description:"Suppresses WebKit/Android tap highlight."},{name:".sf-text-gradient",description:"Gradient text effect using background-clip."},{name:".sf-clickable-parent",description:"Makes an entire card clickable via the first link inside."},{name:".sf-link-external",description:"Adds external link indicator marker."}]},{category:"Surfaces",description:"Color surface utility classes that set background and text color for a brand context.",classes:[{name:".sf-surface--{primary,secondary,tertiary,action,neutral,inverse}",description:"Brand-colored surface with auto-contrast text."},{name:".sf-surface--{success,warning,error,info,danger}",description:"Status-colored surfaces."}]},{category:"Animations",description:"CSS animation utility classes that apply predefined keyframe animations.",classes:[{name:".sf-fade-in / .sf-fade-out",description:"Opacity entrance/exit animations."},{name:".sf-scale-up / .sf-scale-down",description:"Scale entrance/exit animations."},{name:".sf-slide-in-{up,down,left,right}",description:"Directional slide-in entrance animations."},{name:".sf-color-pulse",description:"Continuous color pulse animation."},{name:".sf-entrance--fade / --fade-up / --fade-down / --fade-left / --fade-right / --scale-up",description:"Scroll-triggered entrance animations (scroll-timeline driven)."}]},{category:"State Classes (.is-*)",description:"Runtime state classes toggled by JS or mirrored from ARIA. They live in the slashed.states layer. Always pair with matching ARIA attributes.",classes:[{name:".is-hidden / .is-invisible / .is-visible",description:"Visibility control: removed from layout / hidden but keeps box / visible."},{name:".is-disabled / .is-readonly",description:"Non-interactive states with dimming."},{name:".is-loading / .is-pending / .is-busy",description:"Loading states: spinner replacement / optimistic UI / cursor hint."},{name:".is-skeleton",description:"Placeholder shimmer animation."},{name:".is-active / .is-selected / .is-current / .is-pressed",description:"Selection/activation states."},{name:".is-highlighted",description:"Transient emphasis (e.g. search result highlight)."},{name:".is-open / .is-collapsed / .is-expanded",description:"Disclosure states for modals, drawers, accordions."},{name:".is-valid / .is-invalid",description:"Form field validation results (maps to aria-invalid)."},{name:".is-success / .is-error / .is-warning / .is-info / .is-danger",description:"General feedback states and destructive-action context."},{name:".is-sticky / .is-pinned / .is-fixed / .is-fullscreen",description:"Positioning states."},{name:".is-clipped / .is-scrollable / .is-truncated / .is-resizable",description:"Overflow handling states."},{name:".is-dragging / .is-drop-target / .is-draggable",description:"Drag and drop states."},{name:".is-overlay / .is-focused / .is-clickable / .is-unselectable",description:"Positioning, focus, cursor, and selection states."},{name:".is-empty",description:"Hide element when empty (:empty pseudo-class)."}]}],Qo=[{name:"--sf-is-dark",description:"Numeric flag (0 or 1) indicating dark mode is active. Registered property."},{name:"--sf-lumlocker",description:"Internal luminance lock value for color derivation."},{name:"--sf-color-scheme",description:"CSS color-scheme declaration (light dark)."},{name:"--sf-current-font-weight",description:"Current context font weight (used by strong elements)."},{name:"--sf-link-external-marker",description:"External link arrow character."},{name:"--sf-field-block",description:"Vertical spacing between form fields."},{name:"--sf-field-required-marker",description:"Required field indicator string."}];var el=A('

                    • '),tl=A('
                        '),sl=A('
                      • '),rl=A('
                        Misc Tokens that do not fit a single category.
                          '),nl=A('

                          CSS Custom Properties (--sf-*)

                          '),al=A('
                        • '),il=A('
                            '),ol=A('

                            Utility & State Classes

                            '),ll=A('

                            '),cl=A('

                            API Cheatsheet

                            ');function fl(e,t){se(t,!0);let s=ne(""),r=ne("all");const n=ee.inventory?.variables?.length??0,a=ee.inventory?.sf_classes?.length??0,i=ee.inventory?.is_classes?.length??0;let l=E(()=>d(Jo,"tokens")),o=E(()=>d($o,"classes")),c=E(()=>Qo.filter(X=>h(X.name,X.description)));function h(X,he){if(!u(s).trim())return!0;const pe=u(s).trim().toLowerCase();return X.toLowerCase().includes(pe)||he.toLowerCase().includes(pe)}function d(X,he){return u(s).trim()?X.map(pe=>({...pe,[he]:pe[he].filter(Pt=>h(Pt.name,Pt.description))})).filter(pe=>pe[he].length>0):X}let f=E(()=>u(r)==="all"||u(r)==="variables"),g=E(()=>u(r)==="all"||u(r)==="classes"),_=E(()=>u(s).trim()!==""&&(!u(f)||u(l).length===0&&u(c).length===0)&&(!u(g)||u(o).length===0));var b=cl(),v=y(b),m=k(y(v),2),w=y(m),x=k(v,2),T=y(x),F=k(T,2),G=y(F);let W;var S=k(G,2);let H;var V=k(S,2);let L;var B=k(x,2);{var J=X=>{var he=nl(),pe=k(y(he),2);Q(pe,17,()=>u(l),cs,(Ze,Ke)=>{var nt=tl(),at=y(nt),ht=y(at),Dt=y(ht),Nt=k(ht,2),pt=y(Nt),Ft=k(at,2);Q(Ft,21,()=>u(Ke).tokens,cs,(it,ls)=>{var Cs=el(),zs=y(Cs),nr=y(zs),sa=k(zs,2),ra=y(sa);I(()=>{C(nr,u(ls).name),C(ra,u(ls).description)}),j(it,Cs)}),I(it=>{nt.open=it,C(Dt,u(Ke).category),C(pt,u(Ke).description)},[()=>!u(s).trim()]),j(Ze,nt)});var Pt=k(pe,2);{var os=Ze=>{var Ke=rl(),nt=k(y(Ke),2);Q(nt,21,()=>u(c),cs,(at,ht)=>{var Dt=sl(),Nt=y(Dt),pt=y(Nt),Ft=k(Nt,2),it=y(Ft);I(()=>{C(pt,u(ht).name),C(it,u(ht).description)}),j(at,Dt)}),I(at=>Ke.open=at,[()=>!u(s).trim()]),j(Ze,Ke)};le(Pt,Ze=>{u(c).length>0&&Ze(os)})}j(X,he)};le(B,X=>{u(f)&&X(J)})}var ve=k(B,2);{var Me=X=>{var he=ol(),pe=k(y(he),2);Q(pe,17,()=>u(o),cs,(Pt,os)=>{var Ze=il(),Ke=y(Ze),nt=y(Ke),at=y(nt),ht=k(nt,2),Dt=y(ht),Nt=k(Ke,2);Q(Nt,21,()=>u(os).classes,cs,(pt,Ft)=>{var it=al(),ls=y(it),Cs=y(ls),zs=k(ls,2),nr=y(zs);I(()=>{C(Cs,u(Ft).name),C(nr,u(Ft).description)}),j(pt,it)}),I(pt=>{Ze.open=pt,C(at,u(os).category),C(Dt,u(os).description)},[()=>!u(s).trim()]),j(Pt,Ze)}),j(X,he)};le(ve,X=>{u(g)&&X(Me)})}var As=k(ve,2);{var rr=X=>{var he=ll(),pe=y(he);I(()=>C(pe,`No results for "${u(s)??""}"`)),j(X,he)};le(As,X=>{u(_)&&X(rr)})}I(()=>{C(w,`${n??""} variables | ${a??""} layout/utility classes | ${i??""} state classes`),U(G,"aria-pressed",u(r)==="all"),W=Zt(G,1,"svelte-osej3t",null,W,{active:u(r)==="all"}),U(S,"aria-pressed",u(r)==="variables"),H=Zt(S,1,"svelte-osej3t",null,H,{active:u(r)==="variables"}),U(V,"aria-pressed",u(r)==="classes"),L=Zt(V,1,"svelte-osej3t",null,L,{active:u(r)==="classes"})}),Ks(T,()=>u(s),X=>K(s,X)),oe("click",G,()=>K(r,"all")),oe("click",S,()=>K(r,"variables")),oe("click",V,()=>K(r,"classes")),j(e,b),re()}Be(["click"]);var dl=A('
                            '),ul=A(`

                            Live preview

                            The quick brown fox jumps over the lazy dog

                            This is a preview of your design token configuration. Adjust values above and see changes reflected here in real time. Brand and status colors are rendered as swatches; the heading and this paragraph reflect the current - body and heading font stacks.

                            Primary Action
                            Generated CSS:
                            `);function vl(e,t){te(t,!0);const s=["primary","secondary","tertiary","action","neutral","base"],r=["success","warning","error","info","danger"],n=A(()=>{const _=[],y=Y.colors??{},p=Y.typography??{};for(const b of s){const w=y[`brand_${b}`];w&&_.push(`--sf-color-${b}-light:${w}`)}for(const b of r){const w=y[`status_${b}`];w&&_.push(`--sf-color-${b}-light:${w}`)}return p.font_body&&_.push(`--sf-font-body:${p.font_body}`),p.font_heading&&_.push(`--sf-font-heading:${p.font_heading}`),_.join(";")}),i=A(()=>{const _=[],y=Y.colors??{},p=Y.typography??{};for(const b of s){const w=y[`brand_${b}`];w&&_.push(`--sf-color-${b}-light: ${w}`)}for(const b of r){const w=y[`status_${b}`];w&&_.push(`--sf-color-${b}-light: ${w}`)}return p.font_body&&_.push(`--sf-font-body: ${p.font_body}`),p.font_heading&&_.push(`--sf-font-heading: ${p.font_heading}`),_.length===0?"":`.slashed-preview { + body and heading font stacks.

                            Primary Action
                            Generated CSS:
                            `);function vl(e,t){se(t,!0);const s=["primary","secondary","tertiary","action","neutral","base"],r=["success","warning","error","info","danger"],n=E(()=>{const _=[],b=Y.colors??{},v=Y.typography??{};for(const m of s){const w=b[`brand_${m}`];w&&_.push(`--sf-color-${m}-light:${w}`);const x=b[`brand_dark_${m}`];x&&_.push(`--sf-color-${m}-dark:${x}`)}for(const m of r){const w=b[`status_${m}`];w&&_.push(`--sf-color-${m}-light:${w}`);const x=b[`status_dark_${m}`];x&&_.push(`--sf-color-${m}-dark:${x}`)}return v.font_body&&_.push(`--sf-font-body:${v.font_body}`),v.font_heading&&_.push(`--sf-font-heading:${v.font_heading}`),_.join(";")}),a=E(()=>{const _=[],b=Y.colors??{},v=Y.typography??{};for(const m of s){const w=b[`brand_${m}`];w&&_.push(`--sf-color-${m}-light: ${w}`);const x=b[`brand_dark_${m}`];x&&_.push(`--sf-color-${m}-dark: ${x}`)}for(const m of r){const w=b[`status_${m}`];w&&_.push(`--sf-color-${m}-light: ${w}`);const x=b[`status_dark_${m}`];x&&_.push(`--sf-color-${m}-dark: ${x}`)}return v.font_body&&_.push(`--sf-font-body: ${v.font_body}`),v.font_heading&&_.push(`--sf-font-heading: ${v.font_heading}`),_.length===0?"":`.slashed-preview { ${_.join(`; `)}; -}`});var o=ul(),a=k(m(o),6);ne(a,20,()=>s,_=>_,(_,y)=>{var p=dl();let b;var w=m(p);M(()=>{U(p,"title",y),b=mt(p,"",b,{background:`var(--sf-color-${y}-light, #ddd)`}),C(w,y)}),T(_,p)});var l=k(a,2),c=m(l);mt(c,"",{},{background:"var(--sf-color-primary-light, #4338ca)"});var u=k(c,2);mt(u,"",{},{background:"var(--sf-color-action-light, #0891b2)"});var f=k(l,2),d=k(m(f)),g=m(d);M(()=>{mt(o,v(n)),C(g,v(i)||"/* (defaults — no overrides set) */")}),T(e,o),se()}var hl=j(' '),pl=j('Saving…'),_l=j('Saved'),gl=j('Unsaved changes'),ml=j('All changes saved'),yl=j('
                            ');function bl(e,t){te(t,!0);async function s(){if(!z.saving){z.saving=!0,z.error="";try{const w=z.activeTab,S=Y[w]??{},E=await Bo(w,S);E&&E.values&&(Y[w]=E.values),z.dirty=!1,z.lastSavedAt=Date.now()}catch(w){z.error=w&&w.message||String(w)}finally{z.saving=!1}}}async function r(){if(!z.saving&&confirm(`Reset the ${$.tabs[z.activeTab]??z.activeTab} tab to defaults?`)){z.saving=!0,z.error="";try{await qo(z.activeTab),Ga(z.activeTab),z.dirty=!1,z.lastSavedAt=Date.now()}catch(w){z.error=w&&w.message||String(w)}finally{z.saving=!1}}}let n=re(!1);Mn(()=>{if(z.lastSavedAt){q(n,!0);const w=setTimeout(()=>q(n,!1),2e3);return()=>clearTimeout(w)}});var i=yl();let o;var a=m(i),l=m(a);{var c=w=>{var S=hl(),E=m(S);M(()=>C(E,z.error)),T(w,S)},u=w=>{var S=pl();T(w,S)},f=w=>{var S=_l();T(w,S)},d=w=>{var S=gl();T(w,S)},g=w=>{var S=ml();T(w,S)};le(l,w=>{z.error?w(c):z.saving?w(u,1):v(n)?w(f,2):z.dirty?w(d,3):w(g,-1)})}var _=k(a,2),y=m(_),p=k(y,2),b=m(p);M(()=>{o=Zt(i,1,"bar svelte-1oj49qa",null,o,{dirty:z.dirty}),y.disabled=z.saving,p.disabled=z.saving||!z.dirty,C(b,z.saving?"Saving…":"Save changes")}),oe("click",y,r),oe("click",p,s),T(e,i),se()}Be(["click"]);var wl=j('

                            SLASHED Design Tokens

                            Adjust framework tokens, inspect generated variables, and manage the bundled CSS in one place.

                            ');function kl(e,t){te(t,!0);const s=["cheatsheet","hooks","variables","classes","bundle"];let r=A(()=>s.includes(z.activeTab));Mn(()=>{function x(H){z.dirty&&(H.preventDefault(),H.returnValue="")}return window.addEventListener("beforeunload",x),()=>window.removeEventListener("beforeunload",x)});var n=wl(),i=k(m(n),2);Wa(i,{});var o=k(i,2),a=m(o);{var l=x=>{eo(x,{})},c=x=>{vo(x,{})},u=x=>{yo(x,{})},f=x=>{wo(x,{})},d=x=>{xo(x,{})},g=x=>{Eo(x,{})},_=x=>{jo(x,{})},y=x=>{Co(x,{})},p=x=>{Lo(x,{})},b=x=>{Fo(x,{})},w=x=>{Yo(x,{})},S=x=>{Xo(x)},E=x=>{fl(x,{})};le(a,x=>{z.activeTab==="colors"?x(l):z.activeTab==="contrast"?x(c,1):z.activeTab==="typography"?x(u,2):z.activeTab==="spacing"?x(f,3):z.activeTab==="radius"?x(d,4):z.activeTab==="shadows"?x(g,5):z.activeTab==="motion"?x(_,6):z.activeTab==="zindex"?x(y,7):z.activeTab==="variables"?x(p,8):z.activeTab==="classes"?x(b,9):z.activeTab==="bundle"?x(w,10):z.activeTab==="hooks"?x(S,11):z.activeTab==="cheatsheet"&&x(E,12)})}var F=k(o,2);vl(F,{});var G=k(F,2);{var W=x=>{bl(x,{})};le(G,x=>{v(r)||x(W)})}T(e,n),se()}const rn=document.getElementById("slashed-admin-app");rn&&Ca(kl,{target:rn}); +}`});var i=ul(),l=k(y(i),6);Q(l,20,()=>s,_=>_,(_,b)=>{var v=dl();let m;var w=y(v);I(()=>{U(v,"title",b),m=bt(v,"",m,{background:`var(--sf-color-${b}-light, #ddd)`}),C(w,b)}),j(_,v)});var o=k(l,2),c=y(o);bt(c,"",{},{background:"var(--sf-color-primary-light, #4338ca)"});var h=k(c,2);bt(h,"",{},{background:"var(--sf-color-action-light, #0891b2)"});var d=k(o,2),f=k(y(d)),g=y(f);I(()=>{bt(i,u(n)),C(g,u(a)||"/* (defaults — no overrides set) */")}),j(e,i),re()}var hl=A(' '),pl=A('Saving…'),_l=A('Saved'),gl=A('Unsaved changes'),ml=A('All changes saved'),bl=A('
                            ');function yl(e,t){se(t,!0);async function s(){if(!z.saving){z.saving=!0,z.error="";try{const w=z.activeTab,x=Y[w]??{},T=await Bo(w,x);T&&T.values&&(Y[w]=T.values),z.dirty=!1,z.lastSavedAt=Date.now()}catch(w){z.error=w&&w.message||String(w)}finally{z.saving=!1}}}async function r(){if(!z.saving&&confirm(`Reset the ${ee.tabs[z.activeTab]??z.activeTab} tab to defaults?`)){z.saving=!0,z.error="";try{await Ko(z.activeTab),Gi(z.activeTab),z.dirty=!1,z.lastSavedAt=Date.now()}catch(w){z.error=w&&w.message||String(w)}finally{z.saving=!1}}}let n=ne(!1);In(()=>{if(z.lastSavedAt){K(n,!0);const w=setTimeout(()=>K(n,!1),2e3);return()=>clearTimeout(w)}});var a=bl();let i;var l=y(a),o=y(l);{var c=w=>{var x=hl(),T=y(x);I(()=>C(T,z.error)),j(w,x)},h=w=>{var x=pl();j(w,x)},d=w=>{var x=_l();j(w,x)},f=w=>{var x=gl();j(w,x)},g=w=>{var x=ml();j(w,x)};le(o,w=>{z.error?w(c):z.saving?w(h,1):u(n)?w(d,2):z.dirty?w(f,3):w(g,-1)})}var _=k(l,2),b=y(_),v=k(b,2),m=y(v);I(()=>{i=Zt(a,1,"bar svelte-1oj49qa",null,i,{dirty:z.dirty}),b.disabled=z.saving,v.disabled=z.saving||!z.dirty,C(m,z.saving?"Saving…":"Save changes")}),oe("click",b,r),oe("click",v,s),j(e,a),re()}Be(["click"]);var wl=A('

                            SLASHED Design Tokens

                            Adjust framework tokens, inspect generated variables, and manage the bundled CSS in one place.

                            ');function kl(e,t){se(t,!0);const s=["cheatsheet","hooks","variables","classes","bundle"];let r=E(()=>s.includes(z.activeTab));In(()=>{function S(H){z.dirty&&(H.preventDefault(),H.returnValue="")}return window.addEventListener("beforeunload",S),()=>window.removeEventListener("beforeunload",S)});var n=wl(),a=k(y(n),2);Wi(a,{});var i=k(a,2),l=y(i);{var o=S=>{eo(S,{})},c=S=>{vo(S,{})},h=S=>{bo(S,{})},d=S=>{wo(S,{})},f=S=>{xo(S,{})},g=S=>{Eo(S,{})},_=S=>{jo(S,{})},b=S=>{Co(S,{})},v=S=>{Lo(S,{})},m=S=>{Fo(S,{})},w=S=>{Yo(S,{})},x=S=>{Xo(S)},T=S=>{fl(S,{})};le(l,S=>{z.activeTab==="colors"?S(o):z.activeTab==="contrast"?S(c,1):z.activeTab==="typography"?S(h,2):z.activeTab==="spacing"?S(d,3):z.activeTab==="radius"?S(f,4):z.activeTab==="shadows"?S(g,5):z.activeTab==="motion"?S(_,6):z.activeTab==="zindex"?S(b,7):z.activeTab==="variables"?S(v,8):z.activeTab==="classes"?S(m,9):z.activeTab==="bundle"?S(w,10):z.activeTab==="hooks"?S(x,11):z.activeTab==="cheatsheet"&&S(T,12)})}var F=k(i,2);vl(F,{});var G=k(F,2);{var W=S=>{yl(S,{})};le(G,S=>{u(r)||S(W)})}j(e,n),re()}const rn=document.getElementById("slashed-admin-app");rn&&Ci(kl,{target:rn}); //# sourceMappingURL=app.js.map diff --git a/integrations/bricks/includes/class-css-generator.php b/integrations/bricks/includes/class-css-generator.php index 47c75c7b..4b45529c 100644 --- a/integrations/bricks/includes/class-css-generator.php +++ b/integrations/bricks/includes/class-css-generator.php @@ -161,7 +161,7 @@ public static function get_override_css() { private static function generate_color_declarations( $settings ) { $declarations = array(); - // Brand colors: brand_primary -> --sf-color-primary-light. + // Brand colors (light): brand_primary -> --sf-color-primary-light. $brand_colors = array( 'primary', 'secondary', 'tertiary', 'action', 'neutral', 'base' ); foreach ( $brand_colors as $color ) { $key = 'brand_' . $color; @@ -170,7 +170,15 @@ private static function generate_color_declarations( $settings ) { } } - // Status colors: status_success -> --sf-color-success-light. + // Brand colors (dark): brand_dark_primary -> --sf-color-primary-dark. + foreach ( $brand_colors as $color ) { + $key = 'brand_dark_' . $color; + if ( ! empty( $settings[ $key ] ) ) { + $declarations[] = '--sf-color-' . $color . '-dark: ' . $settings[ $key ] . ';'; + } + } + + // Status colors (light): status_success -> --sf-color-success-light. $status_colors = array( 'success', 'warning', 'error', 'info', 'danger' ); foreach ( $status_colors as $color ) { $key = 'status_' . $color; @@ -179,6 +187,14 @@ private static function generate_color_declarations( $settings ) { } } + // Status colors (dark): status_dark_success -> --sf-color-success-dark. + foreach ( $status_colors as $color ) { + $key = 'status_dark_' . $color; + if ( ! empty( $settings[ $key ] ) ) { + $declarations[] = '--sf-color-' . $color . '-dark: ' . $settings[ $key ] . ';'; + } + } + return $declarations; } diff --git a/integrations/bricks/includes/class-token-defaults.php b/integrations/bricks/includes/class-token-defaults.php index 3114db85..45c0cae7 100644 --- a/integrations/bricks/includes/class-token-defaults.php +++ b/integrations/bricks/includes/class-token-defaults.php @@ -70,6 +70,14 @@ public static function get_colors() { 'neutral' => 'oklch(0.45 0.02 260)', 'base' => 'oklch(0.98 0.005 260)', ), + 'brand_dark' => array( + 'primary' => '', + 'secondary' => '', + 'tertiary' => '', + 'action' => '', + 'neutral' => '', + 'base' => '', + ), 'status' => array( 'success' => 'oklch(0.48 0.17 150)', 'warning' => 'oklch(0.75 0.17 80)', @@ -77,6 +85,13 @@ public static function get_colors() { 'info' => 'oklch(0.48 0.15 240)', 'danger' => 'oklch(0.48 0.24 12)', ), + 'status_dark' => array( + 'success' => '', + 'warning' => '', + 'error' => '', + 'info' => '', + 'danger' => '', + ), 'brand_hex_hints' => array( 'primary' => '#4338ca', 'secondary' => '#1e293b', @@ -85,6 +100,14 @@ public static function get_colors() { 'neutral' => '#64748b', 'base' => '#fafafa', ), + 'brand_dark_hex_hints' => array( + 'primary' => '#818cf8', + 'secondary' => '#cbd5e1', + 'tertiary' => '#c084fc', + 'action' => '#22d3ee', + 'neutral' => '#94a3b8', + 'base' => '#1e1e2e', + ), 'status_hex_hints' => array( 'success' => '#16a34a', 'warning' => '#ca8a04', @@ -92,6 +115,13 @@ public static function get_colors() { 'info' => '#2563eb', 'danger' => '#dc2626', ), + 'status_dark_hex_hints' => array( + 'success' => '#4ade80', + 'warning' => '#fbbf24', + 'error' => '#f87171', + 'info' => '#60a5fa', + 'danger' => '#f87171', + ), ); } diff --git a/integrations/bricks/slashed-bricks.php b/integrations/bricks/slashed-bricks.php index fb33d9cc..fb509b3a 100644 --- a/integrations/bricks/slashed-bricks.php +++ b/integrations/bricks/slashed-bricks.php @@ -131,15 +131,39 @@ function slashed_bricks_admin_init() { // talks to the REST controller below for save/reset. new Slashed_Bricks_Admin_Page_Svelte(); - // REST endpoints powering the Svelte SPA. Sanitization and storage - // are delegated to the shared helper classes so every admin - // surface persists data identically. - new Slashed_Bricks_REST_Controller(); + // REST routes are registered via the dedicated rest_api_init hook + // (slashed_bricks_rest_routes_init) so they work on both admin and + // non-admin requests. No need to instantiate the controller here. } if ( is_admin() ) { add_action( 'plugins_loaded', 'slashed_bricks_admin_init' ); } +/** + * Register REST routes unconditionally via rest_api_init. + * + * WordPress fires `rest_api_init` exclusively during REST dispatch — + * never on normal admin or frontend requests. Hooking here guarantees + * the routes exist regardless of `is_admin()` state and eliminates the + * risk of dependency drift between admin and REST init paths. + * + * On admin requests the REST controller is ALSO instantiated inside + * `slashed_bricks_admin_init()` (which fires earlier, at plugins_loaded). + * That's harmless: WordPress deduplicates routes by namespace+path, and + * `require_once` prevents re-declaration of class files. The admin path + * keeps it so the controller is available for wp_localize_script (the + * NAMESPACE constant) without an extra require. + */ +function slashed_bricks_rest_routes_init() { + require_once SLASHED_BRICKS_PATH . 'includes/class-token-defaults.php'; + require_once SLASHED_BRICKS_PATH . 'includes/class-token-sanitizer.php'; + require_once SLASHED_BRICKS_PATH . 'includes/class-tab-registry.php'; + require_once SLASHED_BRICKS_PATH . 'includes/class-rest-controller.php'; + + ( new Slashed_Bricks_REST_Controller() )->register_routes(); +} +add_action( 'rest_api_init', 'slashed_bricks_rest_routes_init' ); + /** * Data managers: early initialization at plugins_loaded. *