/** * Canonical design-command vocabulary for Live Mode: each command's value, human * label, and SVG icon. Icons stack above the chip label; strokes use currentColor * so the icon recolors when its chip is selected. * * Single source of truth, consumed by: * - skill/scripts/live/event-validation.mjs — re-exports VISUAL_ACTIONS. * - skill/scripts/live-browser.js — the real picker. It is served raw and * injected as an IIFE, so it cannot import this at runtime; live-server.mjs * serializes LIVE_COMMANDS into window.__IMPECCABLE_VOCAB__ alongside the * token/port, and live-browser.js builds its ICONS + ACTIONS from that. * - site/components/LiveDemoPalette.astro — the marketing demo palette (imported * at build time). * * Add, rename, or reorder a verb here and all three follow. */ const ICON_ATTRS = 'width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" style="display:block"'; export const LIVE_COMMANDS = [ { value: 'impeccable', label: 'Freeform', icon: `` }, { value: 'bolder', label: 'Bolder', icon: `` }, { value: 'quieter', label: 'Quieter', icon: `` }, { value: 'distill', label: 'Distill', icon: `` }, { value: 'polish', label: 'Polish', icon: `` }, { value: 'typeset', label: 'Typeset', icon: `` }, { value: 'colorize', label: 'Colorize', icon: `` }, { value: 'layout', label: 'Layout', icon: `` }, { value: 'adapt', label: 'Adapt', icon: `` }, { value: 'animate', label: 'Animate', icon: `` }, { value: 'delight', label: 'Delight', icon: `` }, { value: 'overdrive', label: 'Overdrive', icon: `` }, ]; // Action values accepted by the live event protocol, in palette order. export const VISUAL_ACTIONS = LIVE_COMMANDS.map((c) => c.value);