From b0eb52f79244da889e0ca697a4ad8ab594a54fd7 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Fri, 17 Jul 2026 20:58:13 +0800 Subject: [PATCH] docs: plan birth date picker --- .../plans/2026-07-17-birth-date-picker.md | 439 ++++++++++++++++++ 1 file changed, 439 insertions(+) create mode 100644 docs/superpowers/plans/2026-07-17-birth-date-picker.md diff --git a/docs/superpowers/plans/2026-07-17-birth-date-picker.md b/docs/superpowers/plans/2026-07-17-birth-date-picker.md new file mode 100644 index 00000000..ddee222a --- /dev/null +++ b/docs/superpowers/plans/2026-07-17-birth-date-picker.md @@ -0,0 +1,439 @@ +# Birth Date Picker Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Replace the browser-native birth-date input with the user-supplied shadcn Popover + Calendar Date Picker while preserving the existing `YYYY-MM-DD` profile contract. + +**Architecture:** Add the official shadcn Base Nova `Calendar` and `Popover` primitives, then compose them in a focused `BirthDatePicker` client component. Keep local-calendar parsing and serialization beside the existing birth-time draft model so every consumer receives the same date-only string without UTC shifts. + +**Tech Stack:** Next.js 16, React 19, TypeScript, shadcn Base Nova, Base UI, React DayPicker, date-fns, Lucide, Node test runner. + +## Global Constraints + +- The closed control follows the exact shadcn composition supplied by the user: `PopoverTrigger render={