refactor(date-range-picker): remove the unused single-box "group" hook

Design decision (2026-07-08): the range picker keeps TWO separate composed
<DateField> boxes side by side — the border stays on each DateField, never on a
wrapper enclosing both. This overrides the reference-frameworks default (a
web-sourced sweep of React Aria / MUI X / Ark / Mantine / Bits UI found single-box
is the norm 5/5), which is the user's call.

The former `[data-date-range-field-group]` treatment moved the chrome onto a
consumer-supplied wrapper div to collapse the two endpoints into one box. It was
CSS-only, unused (no component part, no demo), and — after the composition
refactor moved each endpoint's box to its inner [data-field-control] — it targeted
the wrong element anyway. Removed outright. Verified: two endpoint boxes intact,
no enclosing box.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
menubar-v4-safe
dev 3 months ago
parent 36c18fc388
commit 646f790905

@ -180,74 +180,11 @@
min-inline-size: 0;
}
/* ── Group treatment: single input chrome around start + end ────────────────
* When the consumer wraps both endpoints (and optional separator + trigger)
* in `<div data-date-range-field-group>`, the chrome moves to the group:
* a single border, a single focus ring, a single background. Each endpoint
* input loses its own box and the trigger lives flush inside. */
[data-date-range-field-group] {
display: inline-flex;
align-items: center;
gap: var(--_date-field-gap);
flex: 1 1 24rem;
min-inline-size: 0;
min-block-size: var(--_date-field-height);
padding-inline: var(--_date-field-padding-inline);
border: var(--date-field-border-width) solid var(--date-field-border);
border-radius: var(--date-field-radius);
background: var(--date-field-bg);
color: inherit;
/* Only `background` transitions — `border-color` must be INSTANT (the focus
border toggles via `:has(segment:focus-visible)` and a keyboard increment
blurs/refocuses the segment; a transitioned border would flicker). Focus
ring is an `outline` (instant). `box-shadow` is unused here post-migration. */
transition: background var(--date-field-transition-duration) var(--date-field-transition-ease);
}
[data-date-range-field-group]:has([data-date-field-segment]:focus-visible) {
border-color: var(--_date-field-accent-border);
outline: var(--focus-ring-width) solid var(--focus-ring-color);
outline-offset: 0;
}
[data-date-range-picker][data-variant='outline'] [data-date-range-field-group] {
background: transparent;
}
[data-date-range-picker][data-variant='ghost'] [data-date-range-field-group] {
border-color: transparent;
background: transparent;
padding-inline: 0;
}
[data-date-range-picker][data-invalid] [data-date-range-field-group] {
border-color: var(--date-field-border-invalid);
}
[data-date-range-field-group] [data-date-range-field-input] {
flex: 0 1 auto;
min-block-size: auto;
padding-inline: 0;
border: none;
border-radius: 0;
background: transparent;
box-shadow: none;
}
[data-date-range-field-group] [data-date-range-field-input]:has([data-date-field-segment]:focus-visible) {
border: none;
box-shadow: none;
}
/* Separator span ("to", "/", "→") inside the group inherits the field tone
and stays vertically aligned. */
[data-date-range-field-group] > .range-separator,
[data-date-range-field-group] [data-range-separator] {
color: var(--date-field-literal-color);
flex: 0 0 auto;
user-select: none;
}
/* No enclosing "group" box: each endpoint keeps its OWN composed <DateField>
box (two boxes side by side). Design decision (2026-07-08) — we deliberately
do NOT collapse the two endpoints into a single bordered box; the border stays
on each DateField, never on a wrapper above them. The former CSS-only
`[data-date-range-field-group]` single-box hook was unused and is removed. */
[data-date-range-picker][data-invalid] [data-date-range-field-input],
[data-date-range-field-input][data-invalid] {

Loading…
Cancel
Save

Powered by TurnKey Linux.