@ecopages/radiant-ui 0.1.0-rc.8 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/README.md +9 -1
  2. package/dist/components/ui/autocomplete/autocomplete.css +1 -2
  3. package/dist/components/ui/avatar/avatar.css +10 -8
  4. package/dist/components/ui/avatar/avatar.d.ts +3 -1
  5. package/dist/components/ui/calendar/calendar.css +10 -5
  6. package/dist/components/ui/calendar/calendar.script.d.ts +1 -0
  7. package/dist/components/ui/calendar/index.js +1 -1
  8. package/dist/components/ui/calendar/index.js.map +3 -3
  9. package/dist/components/ui/carousel/carousel-autoplay.d.ts +22 -0
  10. package/dist/components/ui/carousel/carousel-swipe.d.ts +17 -0
  11. package/dist/components/ui/carousel/carousel-window.d.ts +63 -0
  12. package/dist/components/ui/carousel/carousel.css +71 -18
  13. package/dist/components/ui/carousel/carousel.d.ts +1 -1
  14. package/dist/components/ui/carousel/carousel.script.d.ts +49 -21
  15. package/dist/components/ui/carousel/index.js +1 -1
  16. package/dist/components/ui/carousel/index.js.map +4 -4
  17. package/dist/components/ui/checkbox/checkbox.script.d.ts +0 -3
  18. package/dist/components/ui/checkbox/index.js +1 -1
  19. package/dist/components/ui/checkbox/index.js.map +4 -4
  20. package/dist/components/ui/checkbox-group/checkbox-group.d.ts +0 -1
  21. package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +8 -7
  22. package/dist/components/ui/checkbox-group/index.js +1 -1
  23. package/dist/components/ui/checkbox-group/index.js.map +4 -4
  24. package/dist/components/ui/combobox/combobox.css +2 -2
  25. package/dist/components/ui/combobox/combobox.d.ts +1 -2
  26. package/dist/components/ui/combobox/combobox.script.d.ts +13 -6
  27. package/dist/components/ui/combobox/index.js +1 -1
  28. package/dist/components/ui/combobox/index.js.map +4 -4
  29. package/dist/components/ui/cycle-toggle/index.js +1 -1
  30. package/dist/components/ui/cycle-toggle/index.js.map +3 -3
  31. package/dist/components/ui/date-field/date-field.css +13 -17
  32. package/dist/components/ui/date-field/date-field.d.ts +7 -5
  33. package/dist/components/ui/date-field/date-field.script.d.ts +16 -48
  34. package/dist/components/ui/date-field/index.js +1 -1
  35. package/dist/components/ui/date-field/index.js.map +4 -4
  36. package/dist/components/ui/date-input/date-input-segment-dom.d.ts +24 -0
  37. package/dist/components/ui/date-input/date-input.css +50 -0
  38. package/dist/components/ui/date-input/date-input.d.ts +8 -0
  39. package/dist/components/ui/date-input/date-input.script.d.ts +137 -0
  40. package/dist/components/ui/date-input/index.d.ts +2 -0
  41. package/dist/components/ui/date-input/index.js +2 -0
  42. package/dist/components/ui/date-input/index.js.map +7 -0
  43. package/dist/components/ui/date-range-picker/date-range-picker.css +18 -19
  44. package/dist/components/ui/date-range-picker/date-range-picker.d.ts +8 -6
  45. package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +24 -47
  46. package/dist/components/ui/date-range-picker/index.js +1 -1
  47. package/dist/components/ui/date-range-picker/index.js.map +4 -4
  48. package/dist/components/ui/dialog/dialog.css +18 -14
  49. package/dist/components/ui/dialog/dialog.script.d.ts +10 -3
  50. package/dist/components/ui/dialog/index.js +1 -1
  51. package/dist/components/ui/dialog/index.js.map +4 -4
  52. package/dist/components/ui/disclosure/disclosure.css +3 -6
  53. package/dist/components/ui/disclosure/disclosure.d.ts +15 -5
  54. package/dist/components/ui/disclosure/disclosure.script.d.ts +2 -2
  55. package/dist/components/ui/disclosure/index.d.ts +1 -1
  56. package/dist/components/ui/disclosure/index.js +1 -1
  57. package/dist/components/ui/disclosure/index.js.map +4 -4
  58. package/dist/components/ui/field/field.d.ts +1 -1
  59. package/dist/components/ui/field/field.script.d.ts +27 -4
  60. package/dist/components/ui/field/index.js +1 -1
  61. package/dist/components/ui/field/index.js.map +4 -4
  62. package/dist/components/ui/form/control-protocol.d.ts +38 -1
  63. package/dist/components/ui/form/form-context.d.ts +3 -0
  64. package/dist/components/ui/form/form.script.d.ts +7 -0
  65. package/dist/components/ui/form/index.d.ts +2 -1
  66. package/dist/components/ui/form/index.js +1 -1
  67. package/dist/components/ui/form/index.js.map +4 -4
  68. package/dist/components/ui/hover-card/hover-card.css +12 -101
  69. package/dist/components/ui/hover-card/hover-card.script.d.ts +7 -0
  70. package/dist/components/ui/hover-card/index.js +1 -1
  71. package/dist/components/ui/hover-card/index.js.map +4 -4
  72. package/dist/components/ui/input/index.js +1 -1
  73. package/dist/components/ui/input/index.js.map +4 -4
  74. package/dist/components/ui/input/input.css +1 -1
  75. package/dist/components/ui/knob/index.js +1 -1
  76. package/dist/components/ui/knob/index.js.map +3 -3
  77. package/dist/components/ui/knob/knob.css +6 -1
  78. package/dist/components/ui/knob/knob.d.ts +1 -1
  79. package/dist/components/ui/knob/knob.script.d.ts +25 -10
  80. package/dist/components/ui/label/index.js +1 -1
  81. package/dist/components/ui/label/index.js.map +4 -4
  82. package/dist/components/ui/listbox/index.js +1 -1
  83. package/dist/components/ui/listbox/index.js.map +4 -4
  84. package/dist/components/ui/listbox/listbox.d.ts +1 -2
  85. package/dist/components/ui/listbox/listbox.script.d.ts +7 -5
  86. package/dist/components/ui/menu-button/index.js +1 -1
  87. package/dist/components/ui/menu-button/index.js.map +4 -4
  88. package/dist/components/ui/menu-button/menu-button.script.d.ts +1 -1
  89. package/dist/components/ui/menubar/index.js +1 -1
  90. package/dist/components/ui/menubar/index.js.map +4 -4
  91. package/dist/components/ui/meter/index.js +1 -1
  92. package/dist/components/ui/meter/index.js.map +3 -3
  93. package/dist/components/ui/meter/meter.css +27 -2
  94. package/dist/components/ui/meter/meter.script.d.ts +14 -4
  95. package/dist/components/ui/navigation-menu/index.d.ts +1 -1
  96. package/dist/components/ui/navigation-menu/index.js +1 -1
  97. package/dist/components/ui/navigation-menu/index.js.map +4 -4
  98. package/dist/components/ui/navigation-menu/navigation-menu.css +32 -34
  99. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +33 -4
  100. package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +71 -9
  101. package/dist/components/ui/number-field/index.js +1 -1
  102. package/dist/components/ui/number-field/index.js.map +4 -4
  103. package/dist/components/ui/number-field/number-field.css +1 -1
  104. package/dist/components/ui/number-field/number-field.d.ts +1 -1
  105. package/dist/components/ui/number-field/number-field.script.d.ts +7 -9
  106. package/dist/components/ui/pagination/index.d.ts +1 -1
  107. package/dist/components/ui/pagination/index.js +1 -1
  108. package/dist/components/ui/pagination/index.js.map +3 -3
  109. package/dist/components/ui/pagination/pagination.css +50 -13
  110. package/dist/components/ui/pagination/pagination.d.ts +25 -6
  111. package/dist/components/ui/popover/index.js +1 -1
  112. package/dist/components/ui/popover/index.js.map +4 -4
  113. package/dist/components/ui/popover/popover.script.d.ts +5 -0
  114. package/dist/components/ui/radio-group/index.js +1 -1
  115. package/dist/components/ui/radio-group/index.js.map +4 -4
  116. package/dist/components/ui/radio-group/radio-group.script.d.ts +2 -1
  117. package/dist/components/ui/select/index.d.ts +1 -1
  118. package/dist/components/ui/select/index.js +1 -1
  119. package/dist/components/ui/select/index.js.map +4 -4
  120. package/dist/components/ui/select/select.css +4 -3
  121. package/dist/components/ui/select/select.d.ts +7 -5
  122. package/dist/components/ui/select/select.script.d.ts +32 -12
  123. package/dist/components/ui/shared/calendar-popover-behavior.d.ts +27 -0
  124. package/dist/components/ui/shared/listbox-host-controller.d.ts +5 -4
  125. package/dist/components/ui/shared/multi-value.d.ts +18 -8
  126. package/dist/components/ui/shared/numeric-range.d.ts +8 -0
  127. package/dist/components/ui/shared/popover.css +10 -99
  128. package/dist/components/ui/sidebar/index.d.ts +2 -1
  129. package/dist/components/ui/sidebar/index.js +1 -1
  130. package/dist/components/ui/sidebar/index.js.map +4 -4
  131. package/dist/components/ui/sidebar/sidebar-trigger.d.ts +12 -0
  132. package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +42 -29
  133. package/dist/components/ui/sidebar/sidebar.css +67 -61
  134. package/dist/components/ui/sidebar/sidebar.d.ts +1 -7
  135. package/dist/components/ui/sidebar/sidebar.script.d.ts +12 -7
  136. package/dist/components/ui/slider/index.js +1 -1
  137. package/dist/components/ui/slider/index.js.map +4 -4
  138. package/dist/components/ui/slider/slider.css +5 -5
  139. package/dist/components/ui/slider/slider.d.ts +5 -6
  140. package/dist/components/ui/slider/slider.script.d.ts +72 -29
  141. package/dist/components/ui/switch/index.js +1 -1
  142. package/dist/components/ui/switch/index.js.map +4 -4
  143. package/dist/components/ui/switch/switch.css +28 -22
  144. package/dist/components/ui/switch/switch.script.d.ts +10 -3
  145. package/dist/components/ui/table/index.js +1 -1
  146. package/dist/components/ui/table/index.js.map +4 -4
  147. package/dist/components/ui/table/table.d.ts +5 -3
  148. package/dist/components/ui/table/table.script.d.ts +25 -10
  149. package/dist/components/ui/tabs/tabs.css +18 -12
  150. package/dist/components/ui/tabs/tabs.script.d.ts +7 -0
  151. package/dist/components/ui/tag-group/index.js +1 -1
  152. package/dist/components/ui/tag-group/index.js.map +4 -4
  153. package/dist/components/ui/tag-group/tag-group.d.ts +7 -4
  154. package/dist/components/ui/tag-group/tag-group.script.d.ts +7 -5
  155. package/dist/components/ui/textarea/index.js +1 -1
  156. package/dist/components/ui/textarea/index.js.map +4 -4
  157. package/dist/components/ui/textarea/textarea.css +1 -1
  158. package/dist/components/ui/toast/index.js +1 -1
  159. package/dist/components/ui/toast/index.js.map +3 -3
  160. package/dist/components/ui/toast/toast.css +35 -32
  161. package/dist/components/ui/toast/toast.script.d.ts +2 -1
  162. package/dist/components/ui/toast/toaster.script.d.ts +6 -0
  163. package/dist/components/ui/tooltip/index.js +1 -1
  164. package/dist/components/ui/tooltip/index.js.map +4 -4
  165. package/dist/components/ui/tooltip/tooltip.css +14 -94
  166. package/dist/components/ui/tooltip/tooltip.script.d.ts +9 -1
  167. package/dist/components/ui/window-splitter/index.d.ts +1 -1
  168. package/dist/components/ui/window-splitter/index.js +1 -1
  169. package/dist/components/ui/window-splitter/index.js.map +3 -3
  170. package/dist/components/ui/window-splitter/window-splitter.d.ts +1 -1
  171. package/dist/components/ui/window-splitter/window-splitter.script.d.ts +5 -1
  172. package/dist/index.d.ts +1 -0
  173. package/dist/index.js +1 -1
  174. package/dist/index.js.map +4 -4
  175. package/dist/lib/icons/chevron-down.d.ts +0 -1
  176. package/dist/lib/intl-date/index.d.ts +4 -2
  177. package/dist/lib/intl-date/segment-editing.d.ts +34 -0
  178. package/dist/lib/intl-date/segments.d.ts +26 -4
  179. package/dist/lib/non-empty.d.ts +6 -0
  180. package/dist/lib/unique-id.d.ts +11 -0
  181. package/dist/lib/viewport/breakpoints.d.ts +6 -0
  182. package/dist/lib/viewport/mobile-layout.d.ts +15 -0
  183. package/dist/styles/primitives.css +10 -7
  184. package/dist/styles/radiant-ui-core.css +10 -0
  185. package/dist/styles/radiant-ui.css +40 -3
  186. package/dist/styles/style-dependencies.json +18 -6
  187. package/dist/styles/styles.css +456 -246
  188. package/dist/styles/tailwind.css +40 -93
  189. package/dist/styles/tokens/presets/colors/aurora.css +2 -0
  190. package/dist/styles/tokens/presets/colors/basalt.css +2 -0
  191. package/dist/styles/tokens/presets/colors/ember.css +2 -0
  192. package/dist/styles/tokens/presets/colors/glacier.css +2 -0
  193. package/dist/styles/tokens/semantic.css +1 -0
  194. package/dist/styles/tokens/system.css +11 -3
  195. package/dist/styles/tokens/typography/default.css +8 -0
  196. package/package.json +20 -10
@@ -1,3 +1,2 @@
1
1
  import type { RuiIconProps } from './types';
2
- /** Chevron-down indicator for listbox and combobox toggles. */
3
2
  export declare function RuiIconChevronDown({ class: className, size, ...props }: RuiIconProps): import("@ecopages/jsx").JsxRenderable;
@@ -7,6 +7,8 @@ export type { DaySelectionAppearance, RangeSelectionDraft } from './selection';
7
7
  export { formatDisplayDate, formatDateRange, formatMonthYear, formatTodayLabel, getDateTimeFormat, getWeekdayLabels, } from './formatters';
8
8
  export { dateToIso, isoToDate, isIsoInRange } from './iso';
9
9
  export { getDatePartOrder, getDateSeparators, parseLocaleDateString } from './parts';
10
- export { buildDateSegments, clampSegmentValue, getEditableSegmentIndices, incrementSegment, maxSegmentLength, segmentsToDate, } from './segments';
10
+ export { allSegmentsEmpty, buildDateSegments, clampSegmentValue, draftStatus, getEditableSegmentIndices, incrementSegment, maxSegmentLength, segmentsToDate, } from './segments';
11
+ export { applyBackspaceToSegment, applyDigitToSegment, clearSegmentValue, getSegmentBounds, firstEmptyOrFirstPart, focusPartAfter, getEditablePartTypes, incrementSegmentValue, segmentAriaName, segmentDisplayText, segmentNumericValue, setSegmentNumeric, } from './segment-editing';
12
+ export type { SegmentDigitResult } from './segment-editing';
11
13
  export type { CalendarDayCell, CalendarWeek, DateDisplayStyle, DateGranularity, DatePartType, IntlLocale, } from './types';
12
- export type { DateSegmentModel, DateSegmentType } from './segments';
14
+ export type { DateSegmentModel, DateSegmentType, DraftStatus } from './segments';
@@ -0,0 +1,34 @@
1
+ import type { DatePartType } from './types';
2
+ import type { DateSegmentModel } from './segments';
3
+ export type SegmentDigitResult = {
4
+ segments: DateSegmentModel[];
5
+ enteredKeys: string;
6
+ focusNext: boolean;
7
+ };
8
+ export declare function getSegmentBounds(type: DatePartType, segments: DateSegmentModel[]): {
9
+ min: number;
10
+ max: number;
11
+ };
12
+ /** Visible label for a segment (`Month`, `Day`, `Year`). */
13
+ export declare function segmentAriaName(type: DatePartType, locale: string | string[] | undefined): string;
14
+ export declare function segmentDisplayText(segment: DateSegmentModel): string;
15
+ export declare function segmentNumericValue(segment: DateSegmentModel): number | null;
16
+ export declare function clearSegmentValue(segments: DateSegmentModel[], type: DatePartType): DateSegmentModel[];
17
+ export declare function setSegmentNumeric(segments: DateSegmentModel[], type: DatePartType, value: number): DateSegmentModel[];
18
+ export declare function incrementSegmentValue(segments: DateSegmentModel[], type: DatePartType, delta: number): DateSegmentModel[];
19
+ /**
20
+ * Applies one typed digit to a segment, mirroring React Aria `useDateSegment` entry rules.
21
+ */
22
+ export declare function applyDigitToSegment(segments: DateSegmentModel[], type: DatePartType, key: string, enteredKeys: string): SegmentDigitResult;
23
+ export declare function getEditablePartTypes(segments: DateSegmentModel[]): DatePartType[];
24
+ export declare function focusPartAfter(segments: DateSegmentModel[], type: DatePartType, direction: 1 | -1): DatePartType | null;
25
+ export declare function firstEmptyOrFirstPart(segments: DateSegmentModel[]): DatePartType | null;
26
+ export type BackspaceSegmentResult = {
27
+ kind: 'focus-previous';
28
+ } | {
29
+ kind: 'updated';
30
+ segments: DateSegmentModel[];
31
+ enteredKeys: string;
32
+ };
33
+ /** Applies backspace semantics for one editable segment. */
34
+ export declare function applyBackspaceToSegment(segments: DateSegmentModel[], part: DatePartType): BackspaceSegmentResult;
@@ -1,6 +1,5 @@
1
1
  import type { DateGranularity, DatePartType, IntlLocale } from './types';
2
2
  export type DateSegmentType = DatePartType | 'literal';
3
- /** @experimental Segment model reserved for a future segment-editor field. */
4
3
  export type DateSegmentModel = {
5
4
  type: DateSegmentType;
6
5
  /** Visible text for literals; numeric string for editable segments. */
@@ -13,7 +12,6 @@ export type DateSegmentModel = {
13
12
  * Builds locale-ordered date segments from `Intl.DateTimeFormat.prototype.formatToParts()`.
14
13
  *
15
14
  * @remarks Mirrors the React Aria `DateInput` segment list — literals plus editable fields.
16
- * @experimental Reserved for a future segment-editor field.
17
15
  */
18
16
  export declare function buildDateSegments(date: Date | null, locale: IntlLocale, options?: {
19
17
  granularity?: DateGranularity;
@@ -22,10 +20,34 @@ export declare function buildDateSegments(date: Date | null, locale: IntlLocale,
22
20
  /**
23
21
  * Converts editable segment values into a local calendar `Date`, or `null` when incomplete.
24
22
  *
25
- * @experimental Reserved for a future segment-editor field.
26
23
  */
27
24
  export declare function segmentsToDate(segments: DateSegmentModel[]): Date | null;
28
- /** @experimental Reserved for a future segment-editor field. */
25
+ export declare function allSegmentsEmpty(segments: DateSegmentModel[]): boolean;
26
+ export type DraftStatus = {
27
+ kind: 'partial-year';
28
+ } | {
29
+ kind: 'empty';
30
+ } | {
31
+ kind: 'incomplete';
32
+ } | {
33
+ kind: 'out-of-range';
34
+ } | {
35
+ kind: 'date';
36
+ iso: string;
37
+ };
38
+ /**
39
+ * Classifies an edited segment draft so a date input can decide whether to publish, keep, or restore it.
40
+ *
41
+ * @remarks
42
+ * Checks run in order: `partial-year` (a typed year with fewer than four digits), `empty`,
43
+ * `incomplete` (a missing unit or an impossible date such as Feb 30), `out-of-range`, then `date`.
44
+ * The four-digit rule lives here rather than in `segmentsToDate`, which still reads `1` as 2001
45
+ * for callers that parse two-digit years.
46
+ */
47
+ export declare function draftStatus(segments: DateSegmentModel[], range?: {
48
+ min?: string;
49
+ max?: string;
50
+ }): DraftStatus;
29
51
  export declare function getEditableSegmentIndices(segments: DateSegmentModel[]): number[];
30
52
  export declare function maxSegmentLength(type: DatePartType): number;
31
53
  export declare function clampSegmentValue(type: DatePartType, raw: string): string;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns `value` when it is non-empty, otherwise `undefined`.
3
+ *
4
+ * @remarks Used by `@bindTo` maps that omit an attribute when the field is `''`.
5
+ */
6
+ export declare function nonEmpty(value: string): string | undefined;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Whether `value` is safe as a CSS id selector (`#value`) without escaping.
3
+ */
4
+ export declare function isCssSafeId(value: string): boolean;
5
+ /**
6
+ * Mint a document-unique, CSS-safe id: `${prefix}-${uuid}`.
7
+ *
8
+ * @remarks Uses `crypto.randomUUID()` in secure contexts and random bytes on HTTP.
9
+ * Prefix so the id never starts with a digit.
10
+ */
11
+ export declare function uniqueId(prefix: string): string;
@@ -0,0 +1,6 @@
1
+ /** Viewports at or below this width use mobile layout rules (pairs with Tailwind `sm` / 640px). */
2
+ export declare const MOBILE_LAYOUT_MAX_WIDTH_PX = 639;
3
+ /** Sidebar switches to drawer mode at this viewport width and below. */
4
+ export declare const SIDEBAR_MOBILE_BREAKPOINT_PX = 768;
5
+ /** Max width for sidebar mobile drawer media queries (`max-width` in CSS). */
6
+ export declare const SIDEBAR_MOBILE_MAX_WIDTH_PX: number;
@@ -0,0 +1,15 @@
1
+ import { MOBILE_LAYOUT_MAX_WIDTH_PX } from './breakpoints';
2
+ export { MOBILE_LAYOUT_MAX_WIDTH_PX };
3
+ /**
4
+ * @remarks
5
+ * SSR and non-browser environments return `false`.
6
+ */
7
+ export declare function isMobileLayoutViewport(): boolean;
8
+ /**
9
+ * Collapses multi-month calendars to one month on narrow viewports so popovers fit.
10
+ */
11
+ export declare function effectiveVisibleMonths(requested: number): number;
12
+ /**
13
+ * @returns Cleanup that removes the listener, or `null` when `matchMedia` is unavailable.
14
+ */
15
+ export declare function listenMobileLayoutViewport(onChange: () => void): (() => void) | null;
@@ -43,15 +43,18 @@
43
43
  visibility: hidden;
44
44
  }
45
45
  .rui-popover {
46
+ --rui-popover-radius: var(--radius-container);
47
+ --rui-popover-surface: var(--background);
48
+ --rui-popover-border-color: var(--border);
49
+ --rui-popover-shadow: var(--shadow-overlay);
46
50
  z-index: var(--z-index-popover, var(--z-popover));
47
51
  overflow: auto;
48
- border-radius: var(--radius-container, var(--radius-container));
49
- border-style: var(--tw-border-style);
50
- border-width: 1px;
51
- border-color: var(--color-border, var(--border));
52
- background-color: var(--color-background, var(--background));
53
- --tw-shadow: var(--shadow-overlay);
54
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
52
+ max-height: var(--rui-popover-max-height, calc(100dvh - 1rem));
53
+ max-width: var(--rui-popover-max-width, calc(100vw - 1rem));
54
+ border-radius: var(--rui-popover-radius);
55
+ border: 1px solid var(--rui-popover-border-color);
56
+ background-color: var(--rui-popover-surface);
57
+ box-shadow: var(--rui-popover-shadow);
55
58
  }
56
59
  .rui-popover--listbox {
57
60
  display: flex;
@@ -451,6 +451,9 @@
451
451
  .overflow-y-auto {
452
452
  overflow-y: auto;
453
453
  }
454
+ .rounded {
455
+ border-radius: 0.25rem;
456
+ }
454
457
  .rounded-lg {
455
458
  border-radius: var(--radius-lg);
456
459
  }
@@ -547,6 +550,9 @@
547
550
  --tw-font-weight: var(--font-weight-semibold);
548
551
  font-weight: var(--font-weight-semibold);
549
552
  }
553
+ .underline {
554
+ text-decoration-line: underline;
555
+ }
550
556
  .opacity-60 {
551
557
  opacity: 60%;
552
558
  }
@@ -573,6 +579,10 @@
573
579
  --tw-blur: blur(8px);
574
580
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
575
581
  }
582
+ .invert {
583
+ --tw-invert: invert(100%);
584
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
585
+ }
576
586
  .filter {
577
587
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
578
588
  }
@@ -267,6 +267,12 @@
267
267
  .top-0 {
268
268
  top: 0px;
269
269
  }
270
+ .right-inset {
271
+ right: var(--spacing-inset);
272
+ }
273
+ .left-inset {
274
+ left: var(--spacing-inset);
275
+ }
270
276
  .z-10 {
271
277
  z-index: 10;
272
278
  }
@@ -499,6 +505,9 @@
499
505
  .overflow-y-auto {
500
506
  overflow-y: auto;
501
507
  }
508
+ .rounded {
509
+ border-radius: 0.25rem;
510
+ }
502
511
  .rounded-container {
503
512
  border-radius: var(--radius-container);
504
513
  }
@@ -688,6 +697,9 @@
688
697
  .text-warning {
689
698
  color: var(--color-warning);
690
699
  }
700
+ .underline {
701
+ text-decoration-line: underline;
702
+ }
691
703
  .opacity-60 {
692
704
  opacity: 60%;
693
705
  }
@@ -714,6 +726,10 @@
714
726
  --tw-blur: blur(8px);
715
727
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
716
728
  }
729
+ .invert {
730
+ --tw-invert: invert(100%);
731
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
732
+ }
717
733
  .filter {
718
734
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
719
735
  }
@@ -980,6 +996,7 @@
980
996
  --text-5xl: 3rem;
981
997
  --text-label: 0.875rem;
982
998
  --text-control: 0.875rem;
999
+ --text-control-input: 1rem;
983
1000
  --leading-body: 1.5;
984
1001
  --leading-relaxed: 1.625;
985
1002
  --leading-compact: 1.25;
@@ -987,6 +1004,13 @@
987
1004
  --weight-medium: 500;
988
1005
  --weight-semibold: 600;
989
1006
  --tracking-wide: 0.025em;
1007
+ }
1008
+ @media (min-width: 640px) {
1009
+ :root {
1010
+ --text-control-input: var(--text-control);
1011
+ }
1012
+ }
1013
+ :root {
990
1014
  --duration-fast: 150ms;
991
1015
  --duration-normal: 200ms;
992
1016
  --duration-slow: 300ms;
@@ -997,6 +1021,11 @@
997
1021
  --border-width-hairline: 1px;
998
1022
  --border-width-thin: 1px;
999
1023
  --border-width-thick: 2px;
1024
+ --rui-track-mix: 22%;
1025
+ --rui-track-fill: var(--on-background);
1026
+ @supports (color: color-mix(in lab, red, red)) {
1027
+ --rui-track-fill: color-mix(in oklab, var(--on-background) var(--rui-track-mix), transparent);
1028
+ }
1000
1029
  --focus-ring-width: 2px;
1001
1030
  --focus-ring-offset: 2px;
1002
1031
  --opacity-disabled: 0.5;
@@ -1006,9 +1035,9 @@
1006
1035
  --z-overlay: 30;
1007
1036
  --z-modal: 40;
1008
1037
  --z-toast: 50;
1009
- --size-control-sm: 2rem;
1010
- --size-control-md: 2.5rem;
1011
- --size-control-lg: 3rem;
1038
+ --size-control-sm: var(--space-8, 2rem);
1039
+ --size-control-md: var(--space-10, 2.5rem);
1040
+ --size-control-lg: var(--space-12, 3rem);
1012
1041
  --size-icon-sm: 1rem;
1013
1042
  --size-icon-md: 1.25rem;
1014
1043
  }
@@ -1087,6 +1116,7 @@ html[data-rui-colors='glacier'], html:not([data-rui-colors]) {
1087
1116
  --border: color-mix(in oklab, var(--color-glacier-white-900) 15%, transparent);
1088
1117
  }
1089
1118
  --focus-ring: var(--color-night-sky-500);
1119
+ --on-focus-ring: var(--on-primary);
1090
1120
  --link: var(--color-navy-blue-700);
1091
1121
  --overlay: oklch(0% 0 0 / 0.45);
1092
1122
  --background-code: var(--color-glacier-white-100);
@@ -1151,6 +1181,7 @@ html.dark[data-rui-colors='glacier'], html.dark:not([data-rui-colors]) {
1151
1181
  --border: color-mix(in oklab, var(--color-glacier-white-50) 18%, transparent);
1152
1182
  }
1153
1183
  --focus-ring: var(--color-night-sky-400);
1184
+ --on-focus-ring: var(--on-primary);
1154
1185
  --link: var(--color-navy-blue-400);
1155
1186
  --overlay: oklch(0% 0 0 / 0.65);
1156
1187
  --background-code: var(--color-glacier-white-900);
@@ -1246,6 +1277,7 @@ html[data-rui-colors='aurora'] {
1246
1277
  --on-background: var(--color-black);
1247
1278
  --border: var(--color-pale-sky-400);
1248
1279
  --focus-ring: var(--color-havelock-blue-500);
1280
+ --on-focus-ring: var(--on-primary);
1249
1281
  --link: var(--color-havelock-blue-700);
1250
1282
  --overlay: oklch(0% 0 0 / 0.4);
1251
1283
  --background-code: var(--color-pale-sky-900);
@@ -1323,6 +1355,7 @@ html.dark[data-rui-colors='aurora'] {
1323
1355
  --on-background: var(--color-white);
1324
1356
  --border: var(--color-pale-sky-700);
1325
1357
  --focus-ring: var(--color-havelock-blue-400);
1358
+ --on-focus-ring: var(--on-primary);
1326
1359
  --link: var(--color-havelock-blue-300);
1327
1360
  --overlay: oklch(0% 0 0 / 0.6);
1328
1361
  --background-code: var(--color-pale-sky-950);
@@ -1397,6 +1430,7 @@ html[data-rui-colors='basalt'] {
1397
1430
  --on-background: var(--color-basalt-900);
1398
1431
  --border: var(--color-basalt-400);
1399
1432
  --focus-ring: var(--color-carbon-blue-500);
1433
+ --on-focus-ring: var(--on-primary);
1400
1434
  --link: var(--color-carbon-blue-600);
1401
1435
  --overlay: oklch(0% 0 0 / 0.5);
1402
1436
  --background-code: var(--color-basalt-900);
@@ -1453,6 +1487,7 @@ html.dark[data-rui-colors='basalt'] {
1453
1487
  --on-background: var(--color-basalt-50);
1454
1488
  --border: var(--color-basalt-700);
1455
1489
  --focus-ring: var(--color-carbon-blue-400);
1490
+ --on-focus-ring: var(--on-primary);
1456
1491
  --link: var(--color-carbon-blue-400);
1457
1492
  --overlay: oklch(0% 0 0 / 0.7);
1458
1493
  --background-code: var(--color-basalt-975);
@@ -1530,6 +1565,7 @@ html[data-rui-colors='ember'] {
1530
1565
  --border: color-mix(in oklab, var(--color-glacier-white-900) 12%, transparent);
1531
1566
  }
1532
1567
  --focus-ring: var(--color-scarlet-500);
1568
+ --on-focus-ring: var(--on-primary);
1533
1569
  --link: var(--color-scarlet-700);
1534
1570
  --overlay: oklch(0% 0 0 / 0.42);
1535
1571
  --background-code: var(--color-glacier-white-100);
@@ -1596,6 +1632,7 @@ html.dark[data-rui-colors='ember'] {
1596
1632
  --border: color-mix(in oklab, var(--color-glacier-white-50) 16%, transparent);
1597
1633
  }
1598
1634
  --focus-ring: var(--color-scarlet-400);
1635
+ --on-focus-ring: var(--on-primary);
1599
1636
  --link: var(--color-scarlet-400);
1600
1637
  --overlay: oklch(0% 0 0 / 0.62);
1601
1638
  --background-code: var(--color-glacier-white-900);
@@ -114,21 +114,31 @@
114
114
  "date-field": {
115
115
  "direct": [
116
116
  "calendar",
117
+ "date-input",
117
118
  "primitives"
118
119
  ],
119
120
  "styles": [
120
121
  "@ecopages/radiant-ui/calendar/styles.css",
122
+ "@ecopages/radiant-ui/date-input/styles.css",
121
123
  "@ecopages/radiant-ui/primitives.css",
122
124
  "@ecopages/radiant-ui/date-field/styles.css"
123
125
  ]
124
126
  },
127
+ "date-input": {
128
+ "direct": [],
129
+ "styles": [
130
+ "@ecopages/radiant-ui/date-input/styles.css"
131
+ ]
132
+ },
125
133
  "date-range-picker": {
126
134
  "direct": [
127
135
  "calendar",
136
+ "date-input",
128
137
  "primitives"
129
138
  ],
130
139
  "styles": [
131
140
  "@ecopages/radiant-ui/calendar/styles.css",
141
+ "@ecopages/radiant-ui/date-input/styles.css",
132
142
  "@ecopages/radiant-ui/primitives.css",
133
143
  "@ecopages/radiant-ui/date-range-picker/styles.css"
134
144
  ]
@@ -143,8 +153,11 @@
143
153
  ]
144
154
  },
145
155
  "disclosure": {
146
- "direct": [],
156
+ "direct": [
157
+ "primitives"
158
+ ],
147
159
  "styles": [
160
+ "@ecopages/radiant-ui/primitives.css",
148
161
  "@ecopages/radiant-ui/disclosure/styles.css"
149
162
  ]
150
163
  },
@@ -261,10 +274,12 @@
261
274
  },
262
275
  "navigation-menu": {
263
276
  "direct": [
264
- "button"
277
+ "button",
278
+ "primitives"
265
279
  ],
266
280
  "styles": [
267
281
  "@ecopages/radiant-ui/button/styles.css",
282
+ "@ecopages/radiant-ui/primitives.css",
268
283
  "@ecopages/radiant-ui/navigation-menu/styles.css"
269
284
  ]
270
285
  },
@@ -320,11 +335,8 @@
320
335
  ]
321
336
  },
322
337
  "sidebar": {
323
- "direct": [
324
- "button"
325
- ],
338
+ "direct": [],
326
339
  "styles": [
327
- "@ecopages/radiant-ui/button/styles.css",
328
340
  "@ecopages/radiant-ui/sidebar/styles.css"
329
341
  ]
330
342
  },