From 16ac2f6786a2e19fda5d2a3caedf21b166025025 Mon Sep 17 00:00:00 2001 From: Kiro Agent <244629292+kiro-agent@users.noreply.github.com> Date: Wed, 27 May 2026 09:02:26 +0000 Subject: [PATCH 1/2] fix(bricks): resolve REST 404 error and add dark mode color support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix rest_no_route error: REST controller was only loaded inside is_admin() block, but REST API requests are not admin requests. Added slashed_bricks_rest_init() to register routes on non-admin (API) requests. - Add dark mode color UI: ColorTab now shows separate sections for light and dark mode brand/status colors. Dark mode fields are optional — the framework auto-derives from light when empty. - Update CSS generator to emit --sf-color-X-dark declarations when dark overrides are set by the user. - Update Token Defaults with dark mode placeholders and hex hints. - Update LivePreview to include dark color overrides in generated CSS. - Add --sf-color-{brand}-dark to cheatsheet data. Co-authored-by: Jack Granatowski --- .../admin-app/src/components/ColorTab.svelte | 53 ++++++++++++++++--- .../src/components/LivePreview.svelte | 8 +++ .../admin-app/src/lib/cheatsheet-data.js | 1 + integrations/bricks/assets/admin-app/app.css | 2 +- integrations/bricks/assets/admin-app/app.js | 18 ++++--- .../bricks/includes/class-css-generator.php | 20 ++++++- .../bricks/includes/class-token-defaults.php | 30 +++++++++++ integrations/bricks/slashed-bricks.php | 19 +++++++ 8 files changed, 134 insertions(+), 17 deletions(-) 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..3c694460 100644 --- a/integrations/bricks/slashed-bricks.php +++ b/integrations/bricks/slashed-bricks.php @@ -140,6 +140,25 @@ function slashed_bricks_admin_init() { add_action( 'plugins_loaded', 'slashed_bricks_admin_init' ); } +/** + * Register REST routes on non-admin (API) requests. + * + * REST API requests do NOT satisfy is_admin(), so the REST controller + * must also be loaded outside of slashed_bricks_admin_init(). Without + * this, POST /wp-json/slashed-bricks/v1/tokens returns rest_no_route. + */ +function slashed_bricks_rest_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(); +} +if ( ! is_admin() ) { + add_action( 'plugins_loaded', 'slashed_bricks_rest_init' ); +} + /** * Data managers: early initialization at plugins_loaded. * From 734f5cb9ed138b3df28905523aff423e4148e302 Mon Sep 17 00:00:00 2001 From: Kiro Agent <244629292+kiro-agent@users.noreply.github.com> Date: Wed, 27 May 2026 09:21:38 +0000 Subject: [PATCH 2/2] refactor(bricks): use rest_api_init hook instead of duplicated init MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the duplicated slashed_bricks_rest_init() (gated by !is_admin) with a single rest_api_init hook. WordPress only fires rest_api_init during REST dispatch, so this is both simpler and eliminates the risk of dependency drift between admin and REST init paths. Also removes the redundant REST controller instantiation from the admin init — routes are now registered exclusively via rest_api_init. --- integrations/bricks/slashed-bricks.php | 31 +++++++++++++++----------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/integrations/bricks/slashed-bricks.php b/integrations/bricks/slashed-bricks.php index 3c694460..fb509b3a 100644 --- a/integrations/bricks/slashed-bricks.php +++ b/integrations/bricks/slashed-bricks.php @@ -131,33 +131,38 @@ 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 on non-admin (API) requests. + * Register REST routes unconditionally via rest_api_init. * - * REST API requests do NOT satisfy is_admin(), so the REST controller - * must also be loaded outside of slashed_bricks_admin_init(). Without - * this, POST /wp-json/slashed-bricks/v1/tokens returns rest_no_route. + * 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_init() { +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(); -} -if ( ! is_admin() ) { - add_action( 'plugins_loaded', 'slashed_bricks_rest_init' ); + ( new Slashed_Bricks_REST_Controller() )->register_routes(); } +add_action( 'rest_api_init', 'slashed_bricks_rest_routes_init' ); /** * Data managers: early initialization at plugins_loaded.