Appearance
Shortcuts
HCT Color Picker (Hue / Chroma / Tone number inputs)
| Key | Action |
|---|---|
| ↑ / ↓ | ±1 |
| Shift + ↑ / ↓ | ±10 |
| Alt/Option + ↑ / ↓ | ±0.1 |
Sliders support both drag and keyboard control:
- Drag: normal = snap to integers, Shift + drag = snap to 10s, Alt + drag = 0.1 precision
- Arrow keys on focused slider: ←→ / ↑↓ = ±0.1, Shift = ±10, Alt = ±0.01
- Focused slider shows a filled dot indicator; focused input shows a ring indicator
All number inputs use free-text editing with comma-to-dot replacement.
Theme Editor — StepInput (contrast factors, chroma factors, contrast steps, level counts)
| Key | Action |
|---|---|
| ↑ / ↓ | ±0.1 |
| Shift + ↑ / ↓ | ±1 |
| Alt/Option + ↑ / ↓ | ±0.01 |
Hold arrows to repeat: the OS fires keydown at ~30 Hz, but StepInput requestAnimationFrame-coalesces commits into one store update per animation frame. Each queued tick compounds onto the last pending value rather than the visible input, so held arrows feel smooth even on heavy themes.
Theme Editor — Contrast Chips (entity contrast ratios)
| Key | Action |
|---|---|
| Click chip | Edit value inline |
| Enter | Confirm edit |
| Escape | Cancel edit |
| ↑ / ↓ | ±0.1 |
| Shift + ↑ / ↓ | ±1 |
| Alt/Option + ↑ / ↓ | ±0.01 |
+ Add contrast | Add new contrast value |
× button | Remove chip |
Preview — Zoom Keyboard Shortcuts
| Key | Action |
|---|---|
⌥ + = / + | Zoom in 5% (anchored on cursor when hovering preview) |
⌥ + - | Zoom out 5% |
⇧ + ⌥ + = / - | Zoom ±10% |
⌥ + 0 | Reset zoom to 100% |
⌥⇧ + 0 | Toggle Fit-to-viewport (zoom auto-recomputes on resize) |
| Trackpad pinch / ⌃ / ⌘ / ⌥ + wheel | Smooth zoom anchored on cursor (via @use-gesture/react) |
Zoom range is clamped to 25%–300%. The Fit mode disables itself the moment the user picks any explicit zoom (preset, ±, hotkey, pinch, wheel) so the user-typed value sticks; ⌥⇧0 turns it back on.
Preview — Zoom Buttons
| Button | Action |
|---|---|
− | Zoom out 5% |
+ | Zoom in 5% |
1:1 | Reset to 100% |
Fit | Auto-fit content to viewport (last item in the percent dropdown) |
Drag & Drop
Available in: Palette, Gradient Points, Entities, Modes. Drag handle (⋮⋮) on the left. Restricted to vertical axis.
Window
| Action | Gesture |
|---|---|
| Resize window | Drag bottom-right corner handle (clamped to 960×720 minimum) |
| Default view | Click "Default view" in status bar (resets to 960×720 plus all view state) |
| Maximize | Double-click resize corner (expands to ~96% of viewport) |
Gamut Clamping
| Action | Gesture |
|---|---|
| Snap to max chroma | Click the clamped values button (tooltip: "Clamped — snap") |
Global Hotkeys
| Key | Action |
|---|---|
| ⌥S | Save (with wave animation feedback) |
| ⌥P | Push Vars (opens confirmation dialog) |
| ⌥1 | Toggle editor footer panel |
| ⌥2 | Toggle preview footer panel (swatch info readout) |
| ⌥3 | Toggle agents footer panel (under chat) |
| ⌥` | Toggle AI chat open/closed |
| Esc | Close any open dialog (Theme Settings, AI Edit, Add Theme, Settings, About) |