Two reliability bugs in the natural-language date input:
1. Clicking Edit on a saved-date pill and changing the value immediately
re-showed the saved value. clearAndEdit pre-fills the input with the
formatted saved date so the admin doesn't start over, but chrono
parses that string on the very first keystroke, re-sets parsedDate,
and the auto-hide template flips the pill back. Added an isEditing
flag that keeps the input visible across re-parses and clears on
blur once we have a valid parse.
2. Typing "tomorrow at 2pm" sometimes committed "tomorrow at <current
time>". UInput's template spreads \$attrs onto the inner <input>
alongside its own @input="onInput", and Vue's listener-array merge
intermittently drops the fall-through @input mid-typing — in the
reproduction, the final 'm' never reached parseNaturalInput, so
chrono's last successful read was "tomorrow at 2p" matching just
"tomorrow". Switched to @update:model-value (a declared emit on
UInput, so it goes through the reliable component-emit path) and
made onBlur always re-parse the final value as a backup.
The natural-language input box kept its placeholder visible after a
date was parsed, with the green confirmation pill rendering below.
Several admins read this as "the input is empty." Hide the input once
parsedDate is set; show only the green pill with an Edit link that
clears the parse and re-opens the input.
Sibling sweep to dc2becf: NaturalDateInput.vue and ImageUpload.vue used
candlelight-/ember-/guild-* utility classes that aren't defined in the
project's Tailwind palette and rendered as no-ops. Swapped to inline
styles using --candle, --ember, --text-dim/faint/bright, --border,
--input-bg, --surface. Drag-state and parsed-date notices follow the
color-mix(... 15%) + 1px solid pattern from dc2becf.
Migrate the entire admin section from the dark guild-* Tailwind theme
to the zine design system (dashed borders, CSS custom properties,
Brygada 1918 + Commit Mono, cream/dark mode palette).
- Replace admin top-nav layout with sidebar matching default layout
- Reskin dashboard, members, events, series management pages
- Reskin events/create and series/create form pages
- Add dev-only test login endpoint (GET /api/dev/test-login)
- Redirect duplicate admin/dashboard.vue to /admin
- Update CLAUDE.md design system docs
Standardizes color values and styling using the new tokens:
- Replaces hardcoded colors with semantic variables
- Updates background/text/border classes for light/dark mode
- Migrates inputs to UInput/USelect/UTextarea components
- Removes redundant style declarations