Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 51 additions & 51 deletions SLASHED-for-WP/admin-app/.vendored-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,205 +3,205 @@
"description": "Files vendored from the SLASHED framework configurator. DO NOT edit directly — make changes in codeslash-dev/SLASHED → configurator/src/ and re-run npm run sync.",
"frameworkRepo": "https://github.com/codeslash-dev/SLASHED",
"configuratorSrc": "configurator/src/",
"source": "github:codeslash-dev/slashed@main",
"syncedAt": "2026-07-01T14:57:11.818Z"
"source": "local",
"syncedAt": "2026-07-01T17:13:38.943Z"
},
"vendoredFiles": [
{
"file": "src/app.css",
"source": "github:codeslash-dev/slashed/configurator/src/app.css@main"
"source": "local:configurator/src/app.css"
},
{
"file": "src/App.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/App.svelte@main"
"source": "local:configurator/src/App.svelte"
},
{
"file": "src/components/CommandPalette.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/CommandPalette.svelte@main"
"source": "local:configurator/src/components/CommandPalette.svelte"
},
{
"file": "src/components/DomainPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/DomainPanel.svelte@main"
"source": "local:configurator/src/components/DomainPanel.svelte"
},
{
"file": "src/components/inputs/ClampField.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/inputs/ClampField.svelte@main"
"source": "local:configurator/src/components/inputs/ClampField.svelte"
},
{
"file": "src/components/inputs/ColorInput.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/inputs/ColorInput.svelte@main"
"source": "local:configurator/src/components/inputs/ColorInput.svelte"
},
{
"file": "src/components/inputs/OklchColorDesk.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/inputs/OklchColorDesk.svelte@main"
"source": "local:configurator/src/components/inputs/OklchColorDesk.svelte"
},
{
"file": "src/components/inputs/PowerKnobRow.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/inputs/PowerKnobRow.svelte@main"
"source": "local:configurator/src/components/inputs/PowerKnobRow.svelte"
},
{
"file": "src/components/inputs/RangeWithNumber.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/inputs/RangeWithNumber.svelte@main"
"source": "local:configurator/src/components/inputs/RangeWithNumber.svelte"
},
{
"file": "src/components/inputs/SliderRow.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/inputs/SliderRow.svelte@main"
"source": "local:configurator/src/components/inputs/SliderRow.svelte"
},
{
"file": "src/components/inputs/TokenRow.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/inputs/TokenRow.svelte@main"
"source": "local:configurator/src/components/inputs/TokenRow.svelte"
},
{
"file": "src/components/panels/AllTokensTab.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/AllTokensTab.svelte@main"
"source": "local:configurator/src/components/panels/AllTokensTab.svelte"
},
{
"file": "src/components/panels/BordersPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/BordersPanel.svelte@main"
"source": "local:configurator/src/components/panels/BordersPanel.svelte"
},
{
"file": "src/components/panels/CheatsheetPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/CheatsheetPanel.svelte@main"
"source": "local:configurator/src/components/panels/CheatsheetPanel.svelte"
},
{
"file": "src/components/panels/ColorsPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/ColorsPanel.svelte@main"
"source": "local:configurator/src/components/panels/ColorsPanel.svelte"
},
{
"file": "src/components/panels/EffectsPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/EffectsPanel.svelte@main"
"source": "local:configurator/src/components/panels/EffectsPanel.svelte"
},
{
"file": "src/components/panels/ExportPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/ExportPanel.svelte@main"
"source": "local:configurator/src/components/panels/ExportPanel.svelte"
},
{
"file": "src/components/panels/GenericTokenPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/GenericTokenPanel.svelte@main"
"source": "local:configurator/src/components/panels/GenericTokenPanel.svelte"
},
{
"file": "src/components/panels/HomePanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/HomePanel.svelte@main"
"source": "local:configurator/src/components/panels/HomePanel.svelte"
},
{
"file": "src/components/panels/LayoutPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/LayoutPanel.svelte@main"
"source": "local:configurator/src/components/panels/LayoutPanel.svelte"
},
{
"file": "src/components/panels/MacrosPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/MacrosPanel.svelte@main"
"source": "local:configurator/src/components/panels/MacrosPanel.svelte"
},
{
"file": "src/components/panels/MiscPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/MiscPanel.svelte@main"
"source": "local:configurator/src/components/panels/MiscPanel.svelte"
},
{
"file": "src/components/panels/MotionPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/MotionPanel.svelte@main"
"source": "local:configurator/src/components/panels/MotionPanel.svelte"
},
{
"file": "src/components/panels/ShadowsPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/ShadowsPanel.svelte@main"
"source": "local:configurator/src/components/panels/ShadowsPanel.svelte"
},
{
"file": "src/components/panels/SpacingPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/SpacingPanel.svelte@main"
"source": "local:configurator/src/components/panels/SpacingPanel.svelte"
},
{
"file": "src/components/panels/ThemesPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/ThemesPanel.svelte@main"
"source": "local:configurator/src/components/panels/ThemesPanel.svelte"
},
{
"file": "src/components/panels/TypographyPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/TypographyPanel.svelte@main"
"source": "local:configurator/src/components/panels/TypographyPanel.svelte"
},
{
"file": "src/components/panels/WcagPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/panels/WcagPanel.svelte@main"
"source": "local:configurator/src/components/panels/WcagPanel.svelte"
},
{
"file": "src/components/shell/PreviewPanel.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/shell/PreviewPanel.svelte@main"
"source": "local:configurator/src/components/shell/PreviewPanel.svelte"
},
{
"file": "src/components/shell/SidebarNav.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/shell/SidebarNav.svelte@main"
"source": "local:configurator/src/components/shell/SidebarNav.svelte"
},
{
"file": "src/components/shell/StatusBar.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/shell/StatusBar.svelte@main"
"source": "local:configurator/src/components/shell/StatusBar.svelte"
},
{
"file": "src/components/shell/StudioHeader.svelte",
"source": "github:codeslash-dev/slashed/configurator/src/components/shell/StudioHeader.svelte@main"
"source": "local:configurator/src/components/shell/StudioHeader.svelte"
},
{
"file": "src/data/api-index.generated.json",
"source": "github:codeslash-dev/slashed/configurator/src/data/api-index.generated.json@main"
"source": "local:configurator/src/data/api-index.generated.json"
},
{
"file": "src/data/bundles.generated.json",
"source": "github:codeslash-dev/slashed/configurator/src/data/bundles.generated.json@main"
"source": "local:configurator/src/data/bundles.generated.json"
},
{
"file": "src/data/classes.generated.json",
"source": "github:codeslash-dev/slashed/configurator/src/data/classes.generated.json@main"
"source": "local:configurator/src/data/classes.generated.json"
},
{
"file": "src/data/domain-patterns.json",
"source": "github:codeslash-dev/slashed/configurator/src/data/domain-patterns.json@main"
"source": "local:configurator/src/data/domain-patterns.json"
},
{
"file": "src/data/token-registry.generated.json",
"source": "github:codeslash-dev/slashed/configurator/src/data/token-registry.generated.json@main"
"source": "local:configurator/src/data/token-registry.generated.json"
},
{
"file": "src/lib/basics.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/basics.ts@main"
"source": "local:configurator/src/lib/basics.ts"
},
{
"file": "src/lib/codec.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/codec.ts@main"
"source": "local:configurator/src/lib/codec.ts"
},
{
"file": "src/lib/colorUtils.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/colorUtils.ts@main"
"source": "local:configurator/src/lib/colorUtils.ts"
},
{
"file": "src/lib/domains.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/domains.ts@main"
"source": "local:configurator/src/lib/domains.ts"
},
{
"file": "src/lib/lumlockerPreview.svelte.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/lumlockerPreview.svelte.ts@main"
"source": "local:configurator/src/lib/lumlockerPreview.svelte.ts"
},
{
"file": "src/lib/persistence.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/persistence.ts@main"
"source": "local:configurator/src/lib/persistence.ts"
},
{
"file": "src/lib/powerKnobs.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/powerKnobs.ts@main"
"source": "local:configurator/src/lib/powerKnobs.ts"
},
{
"file": "src/lib/previewResolver.svelte.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/previewResolver.svelte.ts@main"
"source": "local:configurator/src/lib/previewResolver.svelte.ts"
},
{
"file": "src/lib/savedThemes.ts",
"source": "github:codeslash-dev/slashed/configurator/src/lib/savedThemes.ts@main"
"source": "local:configurator/src/lib/savedThemes.ts"
},
{
"file": "src/main.ts",
"source": "github:codeslash-dev/slashed/configurator/src/main.ts@main"
"source": "local:configurator/src/main.ts"
},
{
"file": "src/types.ts",
"source": "github:codeslash-dev/slashed/configurator/src/types.ts@main"
"source": "local:configurator/src/types.ts"
},
{
"file": "src/vite-env.d.ts",
"source": "github:codeslash-dev/slashed/configurator/src/vite-env.d.ts@main"
"source": "local:configurator/src/vite-env.d.ts"
}
]
}
32 changes: 29 additions & 3 deletions SLASHED-for-WP/admin-app/src/App.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import { onMount, untrack } from 'svelte';
import { SlidersHorizontal, Eye } from 'lucide-svelte';
import { SlidersHorizontal, Eye, RotateCcw } from 'lucide-svelte';
import type { PreviewTemplate, SlashedToken } from './types';
import StudioHeader from './components/shell/StudioHeader.svelte';
import SidebarNav from './components/shell/SidebarNav.svelte';
Expand All @@ -9,7 +9,7 @@
import DomainPanel from './components/DomainPanel.svelte';
import { fa } from './lib/codec';
import { loadInitialOverrides, injectLivePreview, saveOverrides, hasWpBoot } from './lib/persistence';
import { domainOf } from './lib/domains';
import { domainOf, DOMAIN_PATTERNS } from './lib/domains';
import tokensRaw from './data/api-index.generated.json';
import CommandPalette from './components/CommandPalette.svelte';

Expand Down Expand Up @@ -58,6 +58,13 @@
// Derived
let overridesCount = $derived(Object.keys(overrides).length);
let domainBadges = $derived(overridesByDomain(overrides));
// Token-name substrings that scope the active category, used to reset just
// that category's overrides (falls back to the raw domain key when no
// pattern list exists, e.g. for the non-token panels like home/themes).
let domainPatterns = $derived(DOMAIN_PATTERNS[domain] ?? [domain]);
let domainOverridesCount = $derived(
Object.keys(overrides).filter((k) => domainPatterns.some((p) => k.includes(p))).length
);
let canUndo = $derived(past.length > 0);
let canRedo = $derived(future.length > 0);

Expand Down Expand Up @@ -144,6 +151,14 @@
setOverrides({});
}

function handleResetDomain() {
const patch: Record<string, null> = {};
for (const k of Object.keys(overrides)) {
if (domainPatterns.some((p) => k.includes(p))) patch[k] = null;
}
handleBulkChange(patch);
}
Comment thread
qodo-code-review[bot] marked this conversation as resolved.

function handleUndo() {
if (past.length === 0) return;
const previous = past[past.length - 1];
Expand Down Expand Up @@ -296,10 +311,21 @@
100% of the whole row and overflow past it), fixed 360px on desktop -->
<div class={`flex-1 min-w-0 md:flex-none md:w-[360px] bg-[#0c0c15] border-r border-white/8 flex-col min-h-0 ${mobileView === "preview" ? "hidden md:flex" : "flex"}`}>
<!-- Panel heading -->
<div class="h-9 flex items-center px-4 border-b border-white/6 shrink-0">
<div class="h-9 flex items-center px-4 border-b border-white/6 shrink-0 gap-2">
<span data-testid="panel-heading" class="text-[11px] font-bold text-slate-300 uppercase tracking-widest flex-1">
{DOMAIN_LABELS[domain] ?? domain}
</span>
{#if domainOverridesCount > 0}
<button
onclick={handleResetDomain}
data-testid="reset-category"
title={`Reset ${domainOverridesCount} override${domainOverridesCount !== 1 ? "s" : ""} in ${DOMAIN_LABELS[domain] ?? domain}`}
class="flex items-center gap-1 px-1.5 py-0.5 rounded-md text-[9px] font-bold text-slate-500 hover:text-rose-400 hover:bg-rose-500/10 transition-colors cursor-pointer shrink-0"
>
<RotateCcw class="w-3 h-3" />
Reset {domainOverridesCount}
</button>
{/if}
</div>
<!-- Scrollable panel content -->
<div class="flex-1 min-h-0 flex flex-col overflow-hidden">
Expand Down
11 changes: 6 additions & 5 deletions SLASHED-for-WP/admin-app/src/AppOverlay.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
const adminBarHeight = 'var(--wp-admin--admin-bar--height, 32px)';
host.style.position = 'fixed';
host.style.right = '0';
host.style.zIndex = '100000';
host.style.zIndex = '99998';
host.style.pointerEvents = 'auto';

if (isOpen) {
Expand Down Expand Up @@ -292,7 +292,7 @@
<button
onclick={toggle}
aria-label="Open SLASHED token editor"
class="fixed right-0 z-[100000] pointer-events-auto bg-indigo-600 hover:bg-indigo-500 text-white shadow-xl flex flex-col items-center justify-center gap-1 px-1.5 py-3 rounded-l-xl transition-colors cursor-pointer"
class="fixed right-0 z-[99998] pointer-events-auto bg-indigo-600 hover:bg-indigo-500 text-white shadow-xl flex flex-col items-center justify-center gap-1 px-1.5 py-3 rounded-l-xl transition-colors cursor-pointer"
style="top: calc(var(--wp-admin--admin-bar--height, 32px) + 16px);"
>
<span class="text-sm font-black leading-none select-none">/</span>
Expand All @@ -303,10 +303,11 @@
<!--
Main overlay panel — slides in/out via CSS transform.
Always rendered so domain-panel state survives collapse/expand cycles.
z-index 100000 puts it above the WP admin bar (z-index 99999).
z-index 99998 keeps it just below the WP admin bar (z-index 99999) so the
bar's own dropdown submenus (also 99999) stay clickable above the panel.
-->
<div
class="fixed right-0 z-[100000] pointer-events-auto flex flex-col bg-[#0a0a0f] text-slate-200 font-sans shadow-2xl shadow-black/60 border-l border-white/8 transition-transform duration-200 ease-in-out"
class="fixed right-0 z-[99998] pointer-events-auto flex flex-col bg-[#0a0a0f] text-slate-200 font-sans shadow-2xl shadow-black/60 border-l border-white/8 transition-transform duration-200 ease-in-out"
class:translate-x-full={!isOpen}
class:translate-x-0={isOpen}
style:visibility={isOpen ? undefined : 'hidden'}
Expand Down Expand Up @@ -432,7 +433,7 @@
<!-- Reset-all confirmation dialog -->
{#if showResetConfirm}
<div
class="absolute inset-0 z-[100001] flex items-center justify-center bg-black/60 backdrop-blur-sm"
class="absolute inset-0 z-[100] flex items-center justify-center bg-black/60 backdrop-blur-sm"
role="dialog"
Comment thread
qodo-code-review[bot] marked this conversation as resolved.
aria-modal="true"
aria-labelledby="reset-confirm-title"
Expand Down
15 changes: 0 additions & 15 deletions SLASHED-for-WP/admin-app/src/components/DomainPanel.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -51,21 +51,6 @@
patterns.some((p) => t.name.includes(p)) && t.name in overrides
).length
);

// Count overrides belonging to this domain for the reset button
let domainOverridesCount = $derived(
Object.keys(overrides).filter((k) =>
patterns.some((p) => k.includes(p))
).length
);

function handleDomainReset() {
const patch: Record<string, null> = {};
for (const k of Object.keys(overrides)) {
if (patterns.some((p) => k.includes(p))) patch[k] = null;
}
onBulkChange(patch);
}
</script>

{#if NO_CONTROLS_TAB.has(domain)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
{#if isOverridden}
<button
onclick={handleReset}
class="text-[9px] text-slate-500 hover:text-rose-400 transition-colors cursor-pointer opacity-0 group-hover:opacity-100"
class="text-[9px] text-slate-500 hover:text-rose-400 transition-colors cursor-pointer opacity-100 sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100 focus:opacity-100"
>
reset
</button>
Expand Down
Loading