One component instead of a wrapper div; the popover keeps its explicit
width since the default viewport wrapper tracks the root, not the
content.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The studio toolbar moves below the preview with undo/redo/reset at the
far left; in fullscreen it becomes a floating bottom bar that peeks a
few pixels until hovered, so every control (including the view select
and exit) works without leaving fullscreen. The header view switcher
becomes a primary UTabs, with the site pages in a Menu popover sized
explicitly — a single trigger makes the nav root, and so the default
viewport wrapper, only as wide as the button, and the flex wrapper
shrinks the popover to match.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Marshmallow: radius 0.375, muted light bg, primary-400 dark, and the
inner shadow gets its own lighter primary shade (500/900).
The header center becomes the view switcher while on /theme, with the
site pages folded into a single Menu popover; undo/redo/reset replace
the version menu on the far left. View, fullscreen and history state
move into app-level composables so the header and page share them; the
page toolbar keeps lg:hidden fallbacks since the header center
collapses on mobile.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The site header gates on the fullscreen state, which survives navigation
— leaving the studio while fullscreen stripped the header everywhere.
The gate now only applies on /theme and the page resets the state on
unmount.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The 'Forest' theme preset has been removed. The 'Marshmallow' preset has been updated to include a new custom neutral palette with shades, and the token definitions have been enhanced for both light and dark modes, improving overall design consistency.
The stock mauve neutral gives way to a sculpted pink-tinted ramp, with
primary-shade soft shadows (700 light / 950 dark at 15%), a blurred
upward inner shadow, and the neutral token remaps.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The settings panel dissolves into one toolbar: presets, per-group
popovers (Colors/General/Style/Shades — ThemeStudioControls renders one
group per instance now), view picker, fullscreen, import/export and
history actions. Component defaults split into Button/Card/Input
sections, buttons and inputs gain a default-color axis (emitted as
defaultVariants.color, extracted group-wise on import, round-trip
tested), and Size joins Scale. Fullscreen hides all chrome — site
header included via shared state — with a peek-on-hover exit and Esc.
Icon-only import gets a tooltip; colors keep the grouped Semantic
section with ghost edit pencils.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Maintainer feedback: better as a page than an overlay. The studio moves
into the standard page container under the site header — settings panel
on the right with import/export/undo/redo/reset in its header, view
picker and color-mode switch in the preview toolbar. The drawer, its
snap machinery, the ?studio param (and its cold-load bug) and the
studioOpen channel are all retired; the header swatch button links to
the page.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
UDrawer replaces the fullscreen modal: opening lands on a snap that
exposes exactly the settings panel (21rem + the drawer inset) over the
live site, and an eye toggle pulls the full preview out. The header
popover is gone — the swatch button triggers the drawer directly — and
the sidebar header carries the color-mode switch and close. The settings
body scrolls under a scroll shadow, and the preview column fades out
below the full snap. View scrollers take the card radius and hard paint
containment (Chromium won't clip nested composited layers otherwise),
with the nav bars in the SaaS and Landing views wearing the top radius
directly.
Known issue: the ?studio param no longer opens the drawer on cold load —
vaul rejects an open set during mount.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The settings panel becomes an inset right-hand USidebar with a
color-mode switch and close in its header; sections lose their
collapse entirely (headers over always-open controls, hairline
separators between); shade sliders tint their fill and thumb ring with
the ramp color at the selected shade; the view switcher is a ghost
select; Orchard's inner shadow lightens to grove-200 in light mode.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Updated various Theme Studio components to include size properties for buttons and picker elements, improving consistency in UI design. Adjusted button sizes to 'sm' and 'xs' where applicable, and modified the modal header style for better visual alignment.
The bento chat card renders UChatMessage/UChatPrompt so frame and shadow
treatments preview truthfully. The a11y matrix recomputes on
nextTick + double-rAF instead of an 80ms guess, reading the owning
composable's refs instead of re-declaring the state channels. Cross-file
storage/state keys and style-tag ids live in theme-keys.ts, and the
legacy chat-* tag ids become nuxt-ui-*.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ThemeStudioSection and ThemeStudioPresetMenu replace eleven copies of
section chrome and two of the preset menu; the picker folder merges into
theme-studio (folder-prefixed auto-import names). Analytics throttled on
slider hot paths, exports tracked on copy instead of modal-open, the AI
extras channel only persists when touched, currentDoc reads style
reactively, the undo suppression window becomes a settle handshake, the
self-heal runs once, hydration re-render covers every persisted key,
reveal observers disconnect on unmount, and dead exports (STYLE_COMPONENT_KEYS,
picker size prop, reset wrapper, applying flag) are gone. Import color
reconstruction dedupes through one matcher.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ringFragments and its five width maps (~200 lines), the frame width
enumeration, the widthAsVariables export/import split and every
var-length border/ring class in the preview markup are gone: the docs
build compiles --default-border-width/--default-ring-width onto the
studio variable, so live preview and exports use the same mechanism.
Legacy pastes get their width tokens scrubbed and frame literals
renormalized so old exports still import cleanly.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The enter animation now fills backwards — a retained transform, even an
identity matrix, forms a backdrop root that blinds children's
backdrop-blur.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The section headline slot wrapper is display:block (the theme's flex only
activates via the headline prop), so justify-center was inert.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Landing ports the pixel-plasma hero and gradient glows as pure CSS, the
shimmer gradient title, staggered entrances and scroll reveals, glowing
primary buttons and the template's exact terminal. SaaS gains the header
beam, rising-stars CTA, framed hero media card and striped placeholders.
Everything rides semantic tokens so every studio theme restyles it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>