A. Orientation
Where everything lives. The numbered map keys each demo panel to its production component.
common/forms/fields/date-input) · 2 range modes · 3 preset ranges (proposed) ·
4 DateTimeInput + TimeInput (date-time-input, time-input) · 5 input rules · 6 known gaps · 7 live prop toggles.B. Anatomy
The reference sheets a developer measures against. All parts wrap FormRow; menus come from @vuepic/vue-datepicker 8.8.1 restyled by jsapp3-datepicker.scss.
label[for]; 32px icon <button>; input (34px, border #ced4da, radius 0 4 4 0); clear button when value && clearable; hint linked by aria-describedby.
#0398db); 35px cells; today ring.
is24=false).
preset-dates; clicking a preset applies the range and closes (autoApply).C. Field states
Closed-input states. Focus border #66afe9 + glow; error border --dp-danger-color with aria-invalid + role="alert".

--/--/---- (#767676, AA), no clear button.

#e9ecef → #dde2e6.
#66afe9 + soft glow on input and icon.
disabled.
role="alert", input aria-invalid.

D. Menu variants
Every calendar/menu configuration the components support.


dayClass hook; independent of noToday.



[0, 6]: weekends unselectable.


#f3f3f3.
{ solo: true, static: true }).
week-start="0".

E. Interaction flows
Multi-frame sequences that a single still can't convey.


aria-invalid) once a date is picked.
7-5-26, 07152026, 7 . 5 . 2026, a typed range, 3.30p, 15:30 — all parse and commit. Production requires strict MM/dd/yyyy.
F. Responsive
Grid collapses at 1000px; fields stack single-column on phones; the two-calendar range stacks vertically.
G. Accessibility
What the proposal fixes and what still needs attention. Known open issues: Tab from an open menu drops focus to <body>; weekday-header contrast fails AA (see 39).

#1976d2 :focus-visible outline, offset 1px, on icon and clear buttons (illustrative force-applied).

red-color 2.5:1 fail AA (production palette); day text 7.5:1 passes.
label[for], per-field aria-label, aria-invalid, aria-describedby → role="alert" error. Production hardcodes "Datepicker input" on every field.H. Proposed vs production
The decision set — each image is a change request or a defect report.

MonthYearSelect bar (production) vs library stock header. Adopting stock retires MonthYearSelect — and bug 46 with it.
#e0e0e0 bars vs chevrons in #59676b with #1976d2 hover.
highlightToday bold number.

#calendar-header colours index === 5 || 6 — Friday and Saturday under week-start="0"; the weekend is columns 0 and 6. DateInput.vue:104.
MonthYearSelect.getMonths truncates the fractional month diff and lists only "Jul" — August is selectable but unlisted. Needs Math.ceil (moot if 41 is adopted).I. Tokens
Source of truth: uam/htdocs/v3/scss/jsapp3/_variables.scss and jsapp3-datepicker.scss.





