Commit Graph

20 Commits

Author SHA1 Message Date
t.indorf 935845ce56 Merge claude/onboarding-fixes into main
Persist values, tighten validation, and a11y on /onboarding
2026-05-17 23:53:57 +02:00
t.indorf cb4f7409bc Merge claude/register-fixes into main
Persist values, a11y errors, and aria-invalid on /register
2026-05-17 23:53:38 +02:00
t.indorf 211bb9e300 Add Codex branch workflow rule 2026-05-17 23:14:06 +02:00
t.indorf af2c3b245a Persist values, tighten validation, and a11y on /onboarding
- Server action echoes kitaName, the three module booleans, and the
  Mindest-Verfügbarkeiten value on every error path so failed submits no
  longer wipe what the user typed; OnboardingState gains an `attempt`
  counter that drives a per-field remount key on the client.
- Schema now rejects min=0 when the Notdienst module is active (via
  superRefine) — previously a kita could be created with 0 minimum days,
  which is fachlich sinnlos. When the module is off, 0 stays valid.
- Validation error messages reworded from terse fragments ("Nicht
  negativ.", "Bitte ganze Zahl.") to full sentences.
- Field error <p> elements gain role="alert" + aria-live="polite" so
  screen readers announce them on submit.
- CardTitle now accepts as="h1" and the onboarding page uses it for
  "Willkommen, …" — the page now has a real top-level heading.
- ModuleCheckbox uses aria-labelledby + aria-describedby so the
  accessible name is just the module title; the longer description is
  exposed as secondary info instead of being concatenated into the AN.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:46:31 +02:00
t.indorf e8b62f6008 Tighten landing page positioning 2026-05-17 20:43:26 +02:00
t.indorf 380c67963b Add superadmin audit and Kita management 2026-05-16 12:02:59 +02:00
t.indorf 8640001f6f Persist values, a11y errors, and aria-invalid on /register
- Server action now echoes firstName, lastName, email, and the privacy
  checkbox state on every error path so failed submits don't wipe the form.
- New `attempt` counter on RegisterState drives a remount key per field,
  bypassing React's default <form action> reset semantics.
- Error <p> elements gain role="alert" + aria-live="polite" so screen
  readers announce validation failures live.
- Privacy checkbox now flags aria-invalid when not accepted and points to
  the error message via aria-describedby.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 11:55:28 +02:00
t.indorf 0b80c62beb Add contact email confirmation and abuse protection 2026-05-16 11:38:30 +02:00
t.indorf 9542def530 Add RSVP events and Unsplash image support 2026-05-15 21:28:36 +02:00
t.indorf ed6786b6ea added missing packages 2026-05-11 16:29:32 +02:00
t.indorf 89cf1dfe84 added more page content 2026-05-11 16:06:33 +02:00
t.indorf 70a50d89ab added robots udn sitemap 2026-05-11 12:23:43 +02:00
t.indorf 928ddac5b3 added postgres to the stack 2026-05-11 11:19:24 +02:00
t.indorf b0cf3adce6 removed the coolify network 2026-05-11 11:09:27 +02:00
t.indorf fcea4a9168 integrated umami 2026-05-11 09:28:06 +02:00
t.indorf 639c470cb2 chore: update contact details and placeholder values in impressum page 2026-05-09 23:47:21 +02:00
t.indorf 824cb9313c chore: add coolify network to docker-compose configuration 2026-05-09 23:23:28 +02:00
t.indorf 7aff691803 continued the kita-planer 2026-05-08 14:32:14 +02:00
t.indorf b686e714ff Add non-destructive dev seed on startup 2026-05-06 22:31:07 +02:00
t.indorf 9f452fccac Initial commit from Create Next App 2026-05-03 23:33:53 +02:00