diff --git a/src/uix/eidos/components/date-range-picker/date-range-picker.css b/src/uix/eidos/components/date-range-picker/date-range-picker.css index b67c20e56..c4002555b 100644 --- a/src/uix/eidos/components/date-range-picker/date-range-picker.css +++ b/src/uix/eidos/components/date-range-picker/date-range-picker.css @@ -191,6 +191,73 @@ box-shadow: var(--date-field-focus-shadow); } +/* ── Group treatment: single input chrome around start + end ──────────────── + * When the consumer wraps both endpoints (and optional separator + trigger) + * in `
`, 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-px); + border: var(--date-field-border-width) solid var(--date-field-border); + border-radius: var(--date-field-radius); + background: var(--date-field-bg); + color: inherit; + transition: + background var(--date-field-transition-duration) var(--date-field-transition-ease), + border-color var(--date-field-transition-duration) var(--date-field-transition-ease), + box-shadow 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); + box-shadow: var(--date-field-focus-shadow); +} + +[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; +} + [data-date-range-picker][data-invalid] [data-date-range-field-input], [data-date-range-field-input][data-invalid] { border-color: var(--date-field-border-invalid); diff --git a/web/routes/uix/components/date-range-picker/+page.svelte b/web/routes/uix/components/date-range-picker/+page.svelte index a835d24a9..c2128be7a 100644 --- a/web/routes/uix/components/date-range-picker/+page.svelte +++ b/web/routes/uix/components/date-range-picker/+page.svelte @@ -503,7 +503,7 @@ calendarLabel="Booking date range" > {labelText} -
+
{#snippet children({ segments }: DateRangePickerInputSnippetProps)} {#each segments as { part, value }, index (`start-${part}-${index}`)}