ProposalForm:
- Step tabs -> Radix Tabs (roving tabindex, arrow-key nav, proper
ARIA) driven by the same `step` state as before.
- Evasive-no toggle -> Switch, wrapped in a <label> so the whole row
(not just the small control) is tappable.
- All raw <input>/<textarea> -> Input/Textarea; buttonVariants
'primary' -> 'default' to match the new variant names.
- New StepActions wrapper makes Back/Next/Publish sticky to the
viewport bottom on mobile (safe-area aware) so the wizard never
requires scrolling to find the next action; reverts to normal
inline flow at sm+.
CreateClient / ManageClient:
- Card/Button/Input swapped to shadcn equivalents.
- Copy-link feedback moved from a per-button `copied` boolean +
setTimeout to a single sonner toast call, removing the duplicated
state pattern.
- ManageClient's delete confirmation moved from window.confirm() to
an AlertDialog, matching the skill's accessible-primitives guidance
and giving it proper focus trapping on mobile.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Field.tsx re-added composing shadcn Label (no built-in equivalent
in this CLI generation).
- Bumped Input/Textarea to h-12/rounded-xl/px-4 (44px+ touch targets,
matches the app's existing rounded, roomy input style).
- Card padding restored to the old flat p-5 sm:p-6 default so most
call sites (`<Card>children</Card>`) don't need CardContent
wrapping; CardHeader/Content/Footer still exported for the few
structured cards.
- Swapped literal pink-500/gray-100 focus/border colors for
text-primary / border-border / ring-ring tokens in Footer and
CalendarButtons so brand color flows from the CSS vars.
- min-h-screen -> min-h-[100dvh] on full-bleed screens (home,
create, not-found) so mobile browser chrome doesn't clip content.
- Responsive type scale (text-4xl sm:text-5xl md:text-6xl, etc.)
instead of a single jump at md:, so headings don't overflow on
narrow phones.
- Root layout now mounts <Toaster> and uses bg-background/
text-foreground (background token matches the previous gray-50).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Pinned the CLI to shadcn@2.3.0 rather than the latest (4.16.0): the
latest generation targets Tailwind v4-only syntax (bare-value parens
like `gap-(--card-spacing)`, the `in-*` variant, `--spacing()`) that
silently fails to compile under this project's Tailwind v3.4.6.
2.3.0 is the last CLI generation producing classic hsl(var(--x))
v3-compatible component output.
Swapped @radix-ui/react-icons for the already-installed lucide-react
in dialog.tsx, and dropped sonner's next-themes dependency (the app
has no dark-mode toggle, so Toaster is hardcoded to theme="light").
Old custom src/components/ui/Button.tsx, Card.tsx, and Field.tsx are
removed here; call sites are updated in the following commits.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds components.json, cn() util, Radix + cva/clsx/tailwind-merge/
lucide-react/sonner deps, and CSS-variable color tokens mapped onto
the brand's existing pink-500 primary (#ec4899) and neutral grays.
`shadcn init` defaulted to Tailwind v4-style output (oklch colors,
`@theme`-driven CSS, `tw-animate-css`) without updating
tailwind.config.ts, which would not have compiled against the
project's pinned Tailwind v3. Hand-wrote the classic v3 integration
instead (HSL vars + tailwind.config.ts color/radius mapping +
tailwindcss-animate) rather than pull in an unplanned Tailwind
major-version migration.
Also drops the sunset/neon/pastel raw color scales from
tailwind.config.ts: grep confirmed no class ever referenced them,
they were leftover from before lib/themes.ts.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Captures the existing lovelope.app codebase (Next.js App Router,
custom Tailwind components, Prisma) as a rollback point prior to
adopting shadcn/ui and a mobile-first redesign.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>