@proyecto-viviana/solidaria-components 0.4.0 → 0.5.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 (226) hide show
  1. package/dist/ActionBar.d.ts.map +1 -1
  2. package/dist/ActionBar.js +2 -11
  3. package/dist/ActionBar.js.map +1 -1
  4. package/dist/ActionBar.jsx +2 -11
  5. package/dist/ActionBar.jsx.map +1 -1
  6. package/dist/ActionGroup.d.ts.map +1 -1
  7. package/dist/ActionGroup.js +1 -1
  8. package/dist/ActionGroup.js.map +1 -1
  9. package/dist/ActionGroup.jsx +1 -1
  10. package/dist/ActionGroup.jsx.map +1 -1
  11. package/dist/Autocomplete.d.ts +2 -2
  12. package/dist/Autocomplete.d.ts.map +1 -1
  13. package/dist/Autocomplete.js +7 -7
  14. package/dist/Autocomplete.js.map +1 -1
  15. package/dist/Autocomplete.jsx +7 -7
  16. package/dist/Autocomplete.jsx.map +1 -1
  17. package/dist/Breadcrumbs.d.ts.map +1 -1
  18. package/dist/Breadcrumbs.js +18 -18
  19. package/dist/Breadcrumbs.js.map +1 -1
  20. package/dist/Breadcrumbs.jsx +21 -26
  21. package/dist/Breadcrumbs.jsx.map +1 -1
  22. package/dist/Calendar.d.ts.map +1 -1
  23. package/dist/Calendar.js +100 -65
  24. package/dist/Calendar.js.map +1 -1
  25. package/dist/Calendar.jsx +10 -1
  26. package/dist/Calendar.jsx.map +1 -1
  27. package/dist/Color.d.ts.map +1 -1
  28. package/dist/Color.js +15 -18
  29. package/dist/Color.js.map +1 -1
  30. package/dist/Color.jsx +15 -19
  31. package/dist/Color.jsx.map +1 -1
  32. package/dist/ComboBox.d.ts +4 -0
  33. package/dist/ComboBox.d.ts.map +1 -1
  34. package/dist/ComboBox.js +21 -13
  35. package/dist/ComboBox.js.map +1 -1
  36. package/dist/ComboBox.jsx +23 -13
  37. package/dist/ComboBox.jsx.map +1 -1
  38. package/dist/DateField.d.ts +11 -2
  39. package/dist/DateField.d.ts.map +1 -1
  40. package/dist/DateField2.js +237 -234
  41. package/dist/DateField2.js.map +1 -1
  42. package/dist/DateField2.jsx +134 -97
  43. package/dist/DateField2.jsx.map +1 -1
  44. package/dist/DatePicker.d.ts +42 -3
  45. package/dist/DatePicker.d.ts.map +1 -1
  46. package/dist/DatePicker.js +6 -990
  47. package/dist/DatePicker.jsx +6 -681
  48. package/dist/DatePicker2.js +1171 -0
  49. package/dist/DatePicker2.js.map +1 -0
  50. package/dist/DatePicker2.jsx +820 -0
  51. package/dist/DatePicker2.jsx.map +1 -0
  52. package/dist/DateRangePickerContext.d.ts +2 -0
  53. package/dist/DateRangePickerContext.d.ts.map +1 -1
  54. package/dist/Disclosure.d.ts.map +1 -1
  55. package/dist/Disclosure.js +3 -0
  56. package/dist/Disclosure.js.map +1 -1
  57. package/dist/Disclosure.jsx +1 -1
  58. package/dist/Disclosure.jsx.map +1 -1
  59. package/dist/ElementTag.d.ts +29 -0
  60. package/dist/ElementTag.d.ts.map +1 -0
  61. package/dist/ElementTag.js +220 -0
  62. package/dist/ElementTag.js.map +1 -0
  63. package/dist/ElementTag.jsx +67 -0
  64. package/dist/ElementTag.jsx.map +1 -0
  65. package/dist/GridList.d.ts.map +1 -1
  66. package/dist/GridList.js +2 -2
  67. package/dist/GridList.js.map +1 -1
  68. package/dist/GridList.jsx +2 -2
  69. package/dist/GridList.jsx.map +1 -1
  70. package/dist/Landmark.js +4 -3
  71. package/dist/Landmark.js.map +1 -1
  72. package/dist/Landmark.jsx +3 -3
  73. package/dist/Landmark.jsx.map +1 -1
  74. package/dist/Link.js +3 -2
  75. package/dist/Link.js.map +1 -1
  76. package/dist/Link.jsx +3 -3
  77. package/dist/Link.jsx.map +1 -1
  78. package/dist/ListBox.d.ts +2 -2
  79. package/dist/ListBox.d.ts.map +1 -1
  80. package/dist/ListBox.js +327 -166
  81. package/dist/ListBox.js.map +1 -1
  82. package/dist/ListBox.jsx +161 -25
  83. package/dist/ListBox.jsx.map +1 -1
  84. package/dist/Modal.d.ts.map +1 -1
  85. package/dist/Modal.js +7 -5
  86. package/dist/Modal.js.map +1 -1
  87. package/dist/Modal.jsx +5 -5
  88. package/dist/Modal.jsx.map +1 -1
  89. package/dist/Popover.d.ts.map +1 -1
  90. package/dist/Popover.js +16 -9
  91. package/dist/Popover.js.map +1 -1
  92. package/dist/Popover.jsx +25 -4
  93. package/dist/Popover.jsx.map +1 -1
  94. package/dist/RangeCalendar.d.ts.map +1 -1
  95. package/dist/RangeCalendar.js +182 -46
  96. package/dist/RangeCalendar.js.map +1 -1
  97. package/dist/RangeCalendar.jsx +72 -2
  98. package/dist/RangeCalendar.jsx.map +1 -1
  99. package/dist/SearchField.d.ts.map +1 -1
  100. package/dist/SearchField.js +26 -2
  101. package/dist/SearchField.js.map +1 -1
  102. package/dist/SearchField.jsx +26 -2
  103. package/dist/SearchField.jsx.map +1 -1
  104. package/dist/Select.d.ts +7 -0
  105. package/dist/Select.d.ts.map +1 -1
  106. package/dist/Select.js +64 -51
  107. package/dist/Select.js.map +1 -1
  108. package/dist/Select.jsx +35 -20
  109. package/dist/Select.jsx.map +1 -1
  110. package/dist/Separator.js +3 -2
  111. package/dist/Separator.js.map +1 -1
  112. package/dist/Separator.jsx +2 -2
  113. package/dist/Separator.jsx.map +1 -1
  114. package/dist/SharedElementTransition.d.ts.map +1 -1
  115. package/dist/SharedElementTransition.js +35 -33
  116. package/dist/SharedElementTransition.js.map +1 -1
  117. package/dist/SharedElementTransition.jsx +35 -33
  118. package/dist/SharedElementTransition.jsx.map +1 -1
  119. package/dist/StepList.d.ts.map +1 -1
  120. package/dist/StepList.js +2 -9
  121. package/dist/StepList.js.map +1 -1
  122. package/dist/StepList.jsx +1 -6
  123. package/dist/StepList.jsx.map +1 -1
  124. package/dist/Table.d.ts +2 -0
  125. package/dist/Table.d.ts.map +1 -1
  126. package/dist/Table.js +10 -3
  127. package/dist/Table.js.map +1 -1
  128. package/dist/Table.jsx +10 -3
  129. package/dist/Table.jsx.map +1 -1
  130. package/dist/Tabs.d.ts.map +1 -1
  131. package/dist/Tabs.js +3 -0
  132. package/dist/Tabs.js.map +1 -1
  133. package/dist/Tabs.jsx +1 -1
  134. package/dist/Tabs.jsx.map +1 -1
  135. package/dist/TagGroup.d.ts +3 -1
  136. package/dist/TagGroup.d.ts.map +1 -1
  137. package/dist/TagGroup.js +12 -8
  138. package/dist/TagGroup.js.map +1 -1
  139. package/dist/TagGroup.jsx +11 -8
  140. package/dist/TagGroup.jsx.map +1 -1
  141. package/dist/Text.d.ts.map +1 -1
  142. package/dist/Text.js +9 -8
  143. package/dist/Text.js.map +1 -1
  144. package/dist/Text.jsx +3 -3
  145. package/dist/Text.jsx.map +1 -1
  146. package/dist/TextField.js +4 -1
  147. package/dist/TextField.js.map +1 -1
  148. package/dist/TextField.jsx +4 -1
  149. package/dist/TextField.jsx.map +1 -1
  150. package/dist/TimeField.d.ts +14 -50
  151. package/dist/TimeField.d.ts.map +1 -1
  152. package/dist/TimeField.js +111 -205
  153. package/dist/TimeField.js.map +1 -1
  154. package/dist/TimeField.jsx +76 -82
  155. package/dist/TimeField.jsx.map +1 -1
  156. package/dist/Tree.d.ts.map +1 -1
  157. package/dist/Tree.js +3 -3
  158. package/dist/Tree.js.map +1 -1
  159. package/dist/Tree.jsx +3 -3
  160. package/dist/Tree.jsx.map +1 -1
  161. package/dist/VisuallyHidden.d.ts.map +1 -1
  162. package/dist/VisuallyHidden.js +3 -11
  163. package/dist/VisuallyHidden.js.map +1 -1
  164. package/dist/VisuallyHidden.jsx +3 -4
  165. package/dist/VisuallyHidden.jsx.map +1 -1
  166. package/dist/index.d.ts +3 -3
  167. package/dist/index.d.ts.map +1 -1
  168. package/dist/index.js +6 -6
  169. package/dist/index.jsx +6 -6
  170. package/dist/useDragAndDrop.d.ts +0 -8
  171. package/dist/useDragAndDrop.d.ts.map +1 -1
  172. package/dist/useDragAndDrop2.js +6 -2
  173. package/dist/useDragAndDrop2.js.map +1 -1
  174. package/dist/useDragAndDrop2.jsx +6 -2
  175. package/dist/useDragAndDrop2.jsx.map +1 -1
  176. package/dist/utils.d.ts +1 -0
  177. package/dist/utils.d.ts.map +1 -1
  178. package/dist/utils.js +2 -2
  179. package/dist/utils.js.map +1 -1
  180. package/dist/utils.jsx +2 -2
  181. package/dist/utils.jsx.map +1 -1
  182. package/package.json +3 -9
  183. package/src/ActionBar.tsx +10 -12
  184. package/src/ActionGroup.tsx +5 -3
  185. package/src/Autocomplete.tsx +14 -9
  186. package/src/Breadcrumbs.tsx +57 -42
  187. package/src/Calendar.tsx +30 -1
  188. package/src/Color.tsx +42 -27
  189. package/src/ComboBox.tsx +49 -17
  190. package/src/DateField.tsx +285 -52
  191. package/src/DatePicker.tsx +345 -57
  192. package/src/DateRangePickerContext.tsx +2 -0
  193. package/src/Disclosure.tsx +4 -0
  194. package/src/ElementTag.tsx +116 -0
  195. package/src/GridList.tsx +8 -2
  196. package/src/Landmark.tsx +4 -4
  197. package/src/Link.tsx +4 -4
  198. package/src/ListBox.tsx +323 -21
  199. package/src/Modal.tsx +21 -5
  200. package/src/Popover.tsx +28 -7
  201. package/src/RangeCalendar.tsx +120 -1
  202. package/src/SearchField.tsx +53 -1
  203. package/src/Select.tsx +114 -22
  204. package/src/Separator.tsx +3 -3
  205. package/src/SharedElementTransition.tsx +92 -36
  206. package/src/StepList.tsx +0 -7
  207. package/src/Table.tsx +19 -4
  208. package/src/Tabs.tsx +1 -0
  209. package/src/TagGroup.tsx +26 -6
  210. package/src/Text.tsx +5 -4
  211. package/src/TextField.tsx +1 -1
  212. package/src/TimeField.tsx +113 -196
  213. package/src/Tree.tsx +14 -4
  214. package/src/VisuallyHidden.tsx +8 -12
  215. package/src/index.ts +3 -8
  216. package/src/useDragAndDrop.ts +8 -10
  217. package/src/utils.tsx +3 -3
  218. package/dist/DatePicker.js.map +0 -1
  219. package/dist/DatePicker.jsx.map +0 -1
  220. package/dist/HiddenTimeInput.d.ts +0 -25
  221. package/dist/HiddenTimeInput.d.ts.map +0 -1
  222. package/dist/HiddenTimeInput.js +0 -104
  223. package/dist/HiddenTimeInput.js.map +0 -1
  224. package/dist/HiddenTimeInput.jsx +0 -69
  225. package/dist/HiddenTimeInput.jsx.map +0 -1
  226. package/src/HiddenTimeInput.tsx +0 -133
@@ -1,6 +1,6 @@
1
1
  import { dataAttr, useIsHydrated, useRenderProps } from "./utils.js";
2
2
  import { VisuallyHidden } from "./VisuallyHidden.js";
3
- import { className, createComponent, effect, getNextElement, getNextMarker, insert, mergeProps, runHydrationEvents, spread, style, template, use } from "solid-js/web";
3
+ import { className, createComponent, delegateEvents, effect, getNextElement, getNextMarker, insert, mergeProps, runHydrationEvents, setAttribute, setProperty, spread, style, template, use } from "solid-js/web";
4
4
  import { For, Index, Show, createContext, createMemo, createSignal, splitProps, useContext } from "solid-js";
5
5
  import { createCalendarGrid, createHover, createRangeCalendar, createRangeCalendarCell } from "@proyecto-viviana/solidaria";
6
6
  import { createRangeCalendarState, endOfMonth, isSameMonth } from "@proyecto-viviana/solid-stately";
@@ -11,7 +11,7 @@ import { createRangeCalendarState, endOfMonth, isSameMonth } from "@proyecto-viv
11
11
  * Pre-wired headless range calendar component that combines aria hooks.
12
12
  * Port of react-aria-components/src/RangeCalendar.tsx
13
13
  */
14
- var _tmpl$ = /*#__PURE__*/ template(`<div class="solidaria-RangeCalendar solidaria-RangeCalendar--placeholder"aria-hidden=true>`), _tmpl$2 = /*#__PURE__*/ template(`<h2>`), _tmpl$3 = /*#__PURE__*/ template(`<div><!$><!/><!$><!/>`), _tmpl$4 = /*#__PURE__*/ template(`<h2 aria-live=polite>`), _tmpl$5 = /*#__PURE__*/ template(`<button>`), _tmpl$6 = /*#__PURE__*/ template(`<table><thead><tr></tr></thead><tbody>`), _tmpl$7 = /*#__PURE__*/ template(`<th scope=col>`), _tmpl$8 = /*#__PURE__*/ template(`<tr>`), _tmpl$9 = /*#__PURE__*/ template(`<td>`), _tmpl$0 = /*#__PURE__*/ template(`<td><div>`);
14
+ var _tmpl$ = /*#__PURE__*/ template(`<div class="solidaria-RangeCalendar solidaria-RangeCalendar--placeholder"aria-hidden=true>`), _tmpl$2 = /*#__PURE__*/ template(`<h2>`), _tmpl$3 = /*#__PURE__*/ template(`<button tabindex=-1>`), _tmpl$4 = /*#__PURE__*/ template(`<div><!$><!/><!$><!/><!$><!/>`), _tmpl$5 = /*#__PURE__*/ template(`<h2 aria-live=polite>`), _tmpl$6 = /*#__PURE__*/ template(`<button>`), _tmpl$7 = /*#__PURE__*/ template(`<table><thead><tr></tr></thead><tbody>`), _tmpl$8 = /*#__PURE__*/ template(`<th scope=col>`), _tmpl$9 = /*#__PURE__*/ template(`<tr>`), _tmpl$0 = /*#__PURE__*/ template(`<td>`), _tmpl$1 = /*#__PURE__*/ template(`<td><div>`);
15
15
  function assignRef(ref, el) {
16
16
  if (!ref) return;
17
17
  if (typeof ref === "function") ref(el);
@@ -44,6 +44,7 @@ function useRangeCalendarContext() {
44
44
  * ```
45
45
  */
46
46
  function RangeCalendar(props) {
47
+ const inheritedState = useContext(RangeCalendarContext);
47
48
  const isHydrated = useIsHydrated();
48
49
  return createComponent(Show, {
49
50
  get when() {
@@ -53,7 +54,123 @@ function RangeCalendar(props) {
53
54
  return getNextElement(_tmpl$);
54
55
  },
55
56
  get children() {
56
- return createComponent(RangeCalendarInner, props);
57
+ return createComponent(Show, {
58
+ when: inheritedState,
59
+ get fallback() {
60
+ return createComponent(RangeCalendarInner, props);
61
+ },
62
+ get children() {
63
+ return createComponent(RangeCalendarWithState, mergeProps({ state: inheritedState }, props));
64
+ }
65
+ });
66
+ }
67
+ });
68
+ }
69
+ /**
70
+ * RangeCalendar variant that renders against an externally-owned state (from
71
+ * `RangeCalendarContext`) rather than creating its own. Mirrors the single
72
+ * `CalendarWithState`.
73
+ */
74
+ function RangeCalendarWithState(props) {
75
+ const [local, , rest] = splitProps(props, [
76
+ "children",
77
+ "class",
78
+ "style",
79
+ "slot",
80
+ "state",
81
+ "ref"
82
+ ], [
83
+ "value",
84
+ "defaultValue",
85
+ "onChange",
86
+ "minValue",
87
+ "maxValue",
88
+ "isDisabled",
89
+ "isReadOnly",
90
+ "focusedValue",
91
+ "defaultFocusedValue",
92
+ "onFocusChange",
93
+ "locale",
94
+ "createCalendar",
95
+ "isDateUnavailable",
96
+ "visibleMonths",
97
+ "pageBehavior",
98
+ "selectionAlignment",
99
+ "isDateDisabled",
100
+ "validationState",
101
+ "allowsNonContiguousRanges",
102
+ "firstDayOfWeek"
103
+ ]);
104
+ const state = () => props.state;
105
+ const calendarAria = createRangeCalendar(rest, state());
106
+ const renderValues = createMemo(() => ({
107
+ isDisabled: state().isDisabled(),
108
+ isReadOnly: state().isReadOnly(),
109
+ isInvalid: state().isValueInvalid(),
110
+ isDragging: state().isDragging()
111
+ }));
112
+ const renderProps = useRenderProps({
113
+ class: local.class,
114
+ style: local.style,
115
+ defaultClassName: "solidaria-RangeCalendar"
116
+ }, renderValues);
117
+ return createComponent(RangeCalendarStateContext.Provider, {
118
+ get value() {
119
+ return state();
120
+ },
121
+ get children() {
122
+ return createComponent(RangeCalendarContext.Provider, {
123
+ get value() {
124
+ return state();
125
+ },
126
+ get children() {
127
+ var _el$2 = getNextElement(_tmpl$4), _el$5 = _el$2.firstChild, [_el$6, _co$] = getNextMarker(_el$5.nextSibling), _el$7 = _el$6.nextSibling, [_el$8, _co$2] = getNextMarker(_el$7.nextSibling), _el$9 = _el$8.nextSibling, [_el$0, _co$3] = getNextMarker(_el$9.nextSibling);
128
+ use((el) => assignRef(local.ref, el), _el$2);
129
+ spread(_el$2, mergeProps(() => calendarAria.calendarProps, {
130
+ get ["class"]() {
131
+ return renderProps.class();
132
+ },
133
+ get style() {
134
+ return renderProps.style();
135
+ },
136
+ get ["data-disabled"]() {
137
+ return dataAttr(state().isDisabled());
138
+ },
139
+ get ["data-readonly"]() {
140
+ return dataAttr(state().isReadOnly());
141
+ },
142
+ get ["data-invalid"]() {
143
+ return dataAttr(state().isValueInvalid());
144
+ },
145
+ get ["data-dragging"]() {
146
+ return dataAttr(state().isDragging());
147
+ }
148
+ }), false, true);
149
+ insert(_el$2, createComponent(VisuallyHidden, { get children() {
150
+ var _el$3 = getNextElement(_tmpl$2);
151
+ insert(_el$3, () => String(calendarAria.calendarProps["aria-label"] ?? ""));
152
+ return _el$3;
153
+ } }), _el$6, _co$);
154
+ insert(_el$2, () => props.children, _el$8, _co$2);
155
+ insert(_el$2, createComponent(VisuallyHidden, { get children() {
156
+ var _el$4 = getNextElement(_tmpl$3);
157
+ _el$4.$$click = () => state().focusNextPage();
158
+ effect((_p$) => {
159
+ var _v$ = String(calendarAria.nextButtonProps["aria-label"] ?? ""), _v$2 = Boolean(calendarAria.nextButtonProps.disabled);
160
+ _v$ !== _p$.e && setAttribute(_el$4, "aria-label", _p$.e = _v$);
161
+ _v$2 !== _p$.t && setProperty(_el$4, "disabled", _p$.t = _v$2);
162
+ return _p$;
163
+ }, {
164
+ e: void 0,
165
+ t: void 0
166
+ });
167
+ runHydrationEvents();
168
+ return _el$4;
169
+ } }), _el$0, _co$3);
170
+ runHydrationEvents();
171
+ return _el$2;
172
+ }
173
+ });
57
174
  }
58
175
  });
59
176
  }
@@ -108,9 +225,9 @@ function RangeCalendarInner(props) {
108
225
  return createComponent(RangeCalendarContext.Provider, {
109
226
  value: state,
110
227
  get children() {
111
- var _el$2 = getNextElement(_tmpl$3), _el$4 = _el$2.firstChild, [_el$5, _co$] = getNextMarker(_el$4.nextSibling), _el$6 = _el$5.nextSibling, [_el$7, _co$2] = getNextMarker(_el$6.nextSibling);
112
- use((el) => assignRef(local.ref, el), _el$2);
113
- spread(_el$2, mergeProps(() => calendarAria.calendarProps, {
228
+ var _el$1 = getNextElement(_tmpl$4), _el$12 = _el$1.firstChild, [_el$13, _co$4] = getNextMarker(_el$12.nextSibling), _el$14 = _el$13.nextSibling, [_el$15, _co$5] = getNextMarker(_el$14.nextSibling), _el$16 = _el$15.nextSibling, [_el$17, _co$6] = getNextMarker(_el$16.nextSibling);
229
+ use((el) => assignRef(local.ref, el), _el$1);
230
+ spread(_el$1, mergeProps(() => calendarAria.calendarProps, {
114
231
  get ["class"]() {
115
232
  return renderProps.class();
116
233
  },
@@ -130,14 +247,29 @@ function RangeCalendarInner(props) {
130
247
  return dataAttr(state.isDragging());
131
248
  }
132
249
  }), false, true);
133
- insert(_el$2, createComponent(VisuallyHidden, { get children() {
134
- var _el$3 = getNextElement(_tmpl$2);
135
- insert(_el$3, () => String(calendarAria.calendarProps["aria-label"] ?? ""));
136
- return _el$3;
137
- } }), _el$5, _co$);
138
- insert(_el$2, () => props.children, _el$7, _co$2);
250
+ insert(_el$1, createComponent(VisuallyHidden, { get children() {
251
+ var _el$10 = getNextElement(_tmpl$2);
252
+ insert(_el$10, () => String(calendarAria.calendarProps["aria-label"] ?? ""));
253
+ return _el$10;
254
+ } }), _el$13, _co$4);
255
+ insert(_el$1, () => props.children, _el$15, _co$5);
256
+ insert(_el$1, createComponent(VisuallyHidden, { get children() {
257
+ var _el$11 = getNextElement(_tmpl$3);
258
+ _el$11.$$click = () => state.focusNextPage();
259
+ effect((_p$) => {
260
+ var _v$3 = String(calendarAria.nextButtonProps["aria-label"] ?? ""), _v$4 = Boolean(calendarAria.nextButtonProps.disabled);
261
+ _v$3 !== _p$.e && setAttribute(_el$11, "aria-label", _p$.e = _v$3);
262
+ _v$4 !== _p$.t && setProperty(_el$11, "disabled", _p$.t = _v$4);
263
+ return _p$;
264
+ }, {
265
+ e: void 0,
266
+ t: void 0
267
+ });
268
+ runHydrationEvents();
269
+ return _el$11;
270
+ } }), _el$17, _co$6);
139
271
  runHydrationEvents();
140
- return _el$2;
272
+ return _el$1;
141
273
  }
142
274
  });
143
275
  }
@@ -149,18 +281,18 @@ function RangeCalendarInner(props) {
149
281
  function RangeCalendarHeading(props) {
150
282
  const state = useRangeCalendarContext();
151
283
  return (() => {
152
- var _el$8 = getNextElement(_tmpl$4);
153
- insert(_el$8, () => state.title());
284
+ var _el$18 = getNextElement(_tmpl$5);
285
+ insert(_el$18, () => state.title());
154
286
  effect((_p$) => {
155
- var _v$ = props.class ?? "solidaria-RangeCalendarHeading", _v$2 = props.style;
156
- _v$ !== _p$.e && className(_el$8, _p$.e = _v$);
157
- _p$.t = style(_el$8, _v$2, _p$.t);
287
+ var _v$5 = props.class ?? "solidaria-RangeCalendarHeading", _v$6 = props.style;
288
+ _v$5 !== _p$.e && className(_el$18, _p$.e = _v$5);
289
+ _p$.t = style(_el$18, _v$6, _p$.t);
158
290
  return _p$;
159
291
  }, {
160
292
  e: void 0,
161
293
  t: void 0
162
294
  });
163
- return _el$8;
295
+ return _el$18;
164
296
  })();
165
297
  }
166
298
  /**
@@ -175,8 +307,8 @@ function RangeCalendarButton(props) {
175
307
  });
176
308
  const isDisabled = createMemo(() => props.isDisabled || Boolean(buttonProps().disabled) || state.isDisabled());
177
309
  return (() => {
178
- var _el$9 = getNextElement(_tmpl$5);
179
- spread(_el$9, mergeProps(buttonProps, {
310
+ var _el$19 = getNextElement(_tmpl$6);
311
+ spread(_el$19, mergeProps(buttonProps, {
180
312
  get ["class"]() {
181
313
  return props.class ?? "solidaria-RangeCalendarButton";
182
314
  },
@@ -185,11 +317,14 @@ function RangeCalendarButton(props) {
185
317
  },
186
318
  get disabled() {
187
319
  return isDisabled();
320
+ },
321
+ get tabindex() {
322
+ return isDisabled() ? void 0 : 0;
188
323
  }
189
324
  }), false, true);
190
- insert(_el$9, () => props.children);
325
+ insert(_el$19, () => props.children);
191
326
  runHydrationEvents();
192
- return _el$9;
327
+ return _el$19;
193
328
  })();
194
329
  }
195
330
  /**
@@ -224,9 +359,9 @@ function RangeCalendarGrid(props) {
224
359
  return createComponent(RangeCalendarGridMonthContext.Provider, {
225
360
  value: startDate,
226
361
  get children() {
227
- var _el$0 = getNextElement(_tmpl$6), _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$1.nextSibling;
228
- use(setGridRef, _el$0);
229
- spread(_el$0, mergeProps(() => gridAria.gridProps, {
362
+ var _el$20 = getNextElement(_tmpl$7), _el$21 = _el$20.firstChild, _el$22 = _el$21.firstChild, _el$23 = _el$21.nextSibling;
363
+ use(setGridRef, _el$20);
364
+ spread(_el$20, mergeProps(() => gridAria.gridProps, {
230
365
  get ["class"]() {
231
366
  return renderProps.class();
232
367
  },
@@ -234,33 +369,33 @@ function RangeCalendarGrid(props) {
234
369
  return renderProps.style();
235
370
  }
236
371
  }), false, true);
237
- spread(_el$1, mergeProps(() => gridAria.headerProps), false, true);
238
- insert(_el$10, createComponent(For, {
372
+ spread(_el$21, mergeProps(() => gridAria.headerProps), false, true);
373
+ insert(_el$22, createComponent(For, {
239
374
  get each() {
240
375
  return gridAria.weekDays;
241
376
  },
242
377
  children: (day) => (() => {
243
- var _el$12 = getNextElement(_tmpl$7);
244
- insert(_el$12, day);
378
+ var _el$24 = getNextElement(_tmpl$8);
379
+ insert(_el$24, day);
245
380
  effect((_p$) => {
246
- var _v$3 = props.headerCellClass ?? "solidaria-RangeCalendarHeaderCell", _v$4 = props.headerCellStyle;
247
- _v$3 !== _p$.e && className(_el$12, _p$.e = _v$3);
248
- _p$.t = style(_el$12, _v$4, _p$.t);
381
+ var _v$7 = props.headerCellClass ?? "solidaria-RangeCalendarHeaderCell", _v$8 = props.headerCellStyle;
382
+ _v$7 !== _p$.e && className(_el$24, _p$.e = _v$7);
383
+ _p$.t = style(_el$24, _v$8, _p$.t);
249
384
  return _p$;
250
385
  }, {
251
386
  e: void 0,
252
387
  t: void 0
253
388
  });
254
- return _el$12;
389
+ return _el$24;
255
390
  })()
256
391
  }));
257
- insert(_el$11, createComponent(Index, {
392
+ insert(_el$23, createComponent(Index, {
258
393
  get each() {
259
394
  return allDates();
260
395
  },
261
396
  children: (weekDates, weekIndex) => (() => {
262
- var _el$13 = getNextElement(_tmpl$8);
263
- insert(_el$13, createComponent(Index, {
397
+ var _el$25 = getNextElement(_tmpl$9);
398
+ insert(_el$25, createComponent(Index, {
264
399
  get each() {
265
400
  return weekDates();
266
401
  },
@@ -269,7 +404,7 @@ function RangeCalendarGrid(props) {
269
404
  return date();
270
405
  },
271
406
  get fallback() {
272
- return getNextElement(_tmpl$9);
407
+ return getNextElement(_tmpl$0);
273
408
  },
274
409
  get children() {
275
410
  return createComponent(RangeCalendarGridCellPositionContext.Provider, {
@@ -285,11 +420,11 @@ function RangeCalendarGrid(props) {
285
420
  }
286
421
  })
287
422
  }));
288
- return _el$13;
423
+ return _el$25;
289
424
  })()
290
425
  }));
291
426
  runHydrationEvents();
292
- return _el$0;
427
+ return _el$20;
293
428
  }
294
429
  });
295
430
  }
@@ -348,8 +483,8 @@ function RangeCalendarCell(props) {
348
483
  return cellAria.formattedDate;
349
484
  };
350
485
  return (() => {
351
- var _el$15 = getNextElement(_tmpl$0), _el$16 = _el$15.firstChild;
352
- spread(_el$15, mergeProps(() => cellAria.cellProps, {
486
+ var _el$27 = getNextElement(_tmpl$1), _el$28 = _el$27.firstChild;
487
+ spread(_el$27, mergeProps(() => cellAria.cellProps, {
353
488
  get ["class"]() {
354
489
  return cellRenderProps.class();
355
490
  },
@@ -357,8 +492,8 @@ function RangeCalendarCell(props) {
357
492
  return cellRenderProps.style();
358
493
  }
359
494
  }), false, true);
360
- use(setCellRef, _el$16);
361
- spread(_el$16, mergeProps(() => cellAria.buttonProps, hoverProps, {
495
+ use(setCellRef, _el$28);
496
+ spread(_el$28, mergeProps(() => cellAria.buttonProps, hoverProps, {
362
497
  get ["class"]() {
363
498
  return renderProps.class();
364
499
  },
@@ -399,11 +534,12 @@ function RangeCalendarCell(props) {
399
534
  return dataAttr(isHovered());
400
535
  }
401
536
  }), false, true);
402
- insert(_el$16, getChildren);
537
+ insert(_el$28, getChildren);
403
538
  runHydrationEvents();
404
- return _el$15;
539
+ return _el$27;
405
540
  })();
406
541
  }
542
+ delegateEvents(["click"]);
407
543
  //#endregion
408
544
  export { RangeCalendar, RangeCalendarButton, RangeCalendarCell, RangeCalendarContext, RangeCalendarGrid, RangeCalendarHeading, RangeCalendarStateContext, useRangeCalendarContext };
409
545
 
@@ -1 +1 @@
1
- {"version":3,"file":"RangeCalendar.js","names":["JSX","Accessor","createContext","createMemo","createSignal","splitProps","useContext","For","Index","Show","createRangeCalendar","createCalendarGrid","createRangeCalendarCell","createHover","AriaRangeCalendarProps","AriaCalendarGridProps","createRangeCalendarState","RangeCalendarState","RangeCalendarStateProps","CalendarDate","DateValue","RangeValue","endOfMonth","isSameMonth","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","dataAttr","useIsHydrated","VisuallyHidden","RefLike","el","T","current","assignRef","ref","RangeCalendarRenderProps","isDisabled","isReadOnly","isInvalid","isDragging","RangeCalendarProps","Omit","children","Element","class","style","locale","HTMLDivElement","RangeCalendarGridRenderProps","RangeCalendarGridProps","date","headerCellClass","headerCellStyle","CSSProperties","offset","months","RangeCalendarCellRenderProps","isSelected","isSelectionStart","isSelectionEnd","isFocused","isUnavailable","isOutsideMonth","isToday","isPressed","isHovered","isFirstChild","isLastChild","isFirstWeek","isLastWeek","formattedDate","RangeCalendarCellProps","cellClass","cellStyle","RangeCalendarContext","RangeCalendarStateContext","RangeCalendarGridMonthContext","RangeCalendarGridCellPositionContext","weekIndex","dayIndex","lastWeekIndex","useRangeCalendarContext","context","Error","RangeCalendar","props","isHydrated","_$createComponent","when","fallback","_$getNextElement","_tmpl$","RangeCalendarInner","local","stateProps","rest","state","calendarAria","renderValues","isValueInvalid","renderProps","defaultClassName","Provider","value","_el$2","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$use","_$spread","_$mergeProps","calendarProps","data-disabled","data-readonly","data-invalid","data-dragging","_$insert","_el$3","_tmpl$2","String","_$runHydrationEvents","RangeCalendarHeadingProps","RangeCalendarHeading","_el$8","_tmpl$4","title","_$effect","_p$","_v$","_v$2","e","_$className","t","_$style","undefined","RangeCalendarButtonProps","slot","RangeCalendarButton","buttonProps","prevButtonProps","nextButtonProps","Boolean","disabled","_el$9","_tmpl$5","RangeCalendarGrid","gridRef","setGridRef","HTMLTableElement","startDate","offsetMonths","baseStart","visibleRange","start","add","gridAria","endDate","weekdayStyle","Parameters","allDates","monthStart","numWeeks","getWeeksInMonth","weekDates","push","getDatesInWeek","_el$0","_tmpl$6","_el$1","_el$10","_el$11","gridProps","headerProps","each","weekDays","day","_el$12","_tmpl$7","_v$3","_v$4","_el$13","_tmpl$8","_tmpl$9","length","RangeCalendarCell","currentMonthStart","cellPosition","cellRef","setCellRef","position","cellAria","hoverProps","cellRenderProps","getChildren","renderChildren","_el$15","_tmpl$0","_el$16","cellProps","data-selected","data-selection-start","data-selection-end","data-focused","data-unavailable","data-outside-month","data-today","data-pressed","data-hovered"],"sources":["../src/RangeCalendar.tsx"],"sourcesContent":["/**\n * RangeCalendar component for solidaria-components\n *\n * Pre-wired headless range calendar component that combines aria hooks.\n * Port of react-aria-components/src/RangeCalendar.tsx\n */\n\nimport {\n type JSX,\n type Accessor,\n createContext,\n createMemo,\n createSignal,\n splitProps,\n useContext,\n For,\n Index,\n Show,\n} from \"solid-js\";\nimport {\n createRangeCalendar,\n createCalendarGrid,\n createRangeCalendarCell,\n createHover,\n type AriaRangeCalendarProps,\n type AriaCalendarGridProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createRangeCalendarState,\n type RangeCalendarState,\n type RangeCalendarStateProps,\n type CalendarDate,\n type DateValue,\n type RangeValue,\n endOfMonth,\n isSameMonth,\n} from \"@proyecto-viviana/solid-stately\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n dataAttr,\n useIsHydrated,\n} from \"./utils\";\nimport { VisuallyHidden } from \"./VisuallyHidden\";\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) {\n return;\n }\n\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nexport interface RangeCalendarRenderProps {\n /** Whether the calendar is disabled. */\n isDisabled: boolean;\n /** Whether the calendar is read-only. */\n isReadOnly: boolean;\n /** Whether the current selection is invalid. */\n isInvalid: boolean;\n /** Whether the user is currently selecting a range. */\n isDragging: boolean;\n}\n\nexport interface RangeCalendarProps<T extends DateValue = DateValue>\n extends\n Omit<AriaRangeCalendarProps, \"id\" | \"isDisabled\" | \"isReadOnly\">,\n Omit<RangeCalendarStateProps<T>, \"locale\">,\n SlotProps {\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<RangeCalendarRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<RangeCalendarRenderProps>;\n /** The locale to use for formatting. */\n locale?: string;\n /** Ref for the range calendar root element. */\n ref?: RefLike<HTMLDivElement>;\n}\n\nexport interface RangeCalendarGridRenderProps {\n /** Whether the grid is disabled. */\n isDisabled: boolean;\n}\n\nexport interface RangeCalendarGridProps\n extends Omit<AriaCalendarGridProps, \"startDate\" | \"endDate\">, SlotProps {\n /** The children of the component (render function receiving dates). */\n children?: (date: CalendarDate) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<RangeCalendarGridRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<RangeCalendarGridRenderProps>;\n /** Class name for weekday header cells. */\n headerCellClass?: string;\n /** Inline style for weekday header cells. */\n headerCellStyle?: JSX.CSSProperties;\n /** Number of months to offset from the start. */\n offset?: { months?: number };\n}\n\nexport interface RangeCalendarCellRenderProps {\n /** Whether the cell is within the selected range. */\n isSelected: boolean;\n /** Whether the cell is the start of the selection. */\n isSelectionStart: boolean;\n /** Whether the cell is the end of the selection. */\n isSelectionEnd: boolean;\n /** Whether the cell is focused. */\n isFocused: boolean;\n /** Whether the cell is disabled. */\n isDisabled: boolean;\n /** Whether the cell is unavailable. */\n isUnavailable: boolean;\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean;\n /** Whether the cell is outside the visible month. */\n isOutsideMonth: boolean;\n /** Whether the cell represents today. */\n isToday: boolean;\n /** Whether the cell is pressed. */\n isPressed: boolean;\n /** Whether the cell is hovered. */\n isHovered: boolean;\n /** Whether the cell is the first day slot in its row. */\n isFirstChild: boolean;\n /** Whether the cell is the last day slot in its row. */\n isLastChild: boolean;\n /** Whether the cell is in the first rendered week row. */\n isFirstWeek: boolean;\n /** Whether the cell is in the last rendered week row. */\n isLastWeek: boolean;\n /** The formatted date string. */\n formattedDate: string;\n}\n\nexport interface RangeCalendarCellProps extends SlotProps {\n /** The date for this cell. */\n date: CalendarDate;\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<RangeCalendarCellRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<RangeCalendarCellRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<RangeCalendarCellRenderProps>;\n /** Class name for the table cell wrapper. */\n cellClass?: ClassNameOrFunction<RangeCalendarCellRenderProps>;\n /** Inline style for the table cell wrapper. */\n cellStyle?: StyleOrFunction<RangeCalendarCellRenderProps>;\n}\n\nexport const RangeCalendarContext = createContext<RangeCalendarState<DateValue> | null>(null);\nexport const RangeCalendarStateContext = createContext<RangeCalendarState<DateValue> | null>(null);\nconst RangeCalendarGridMonthContext = createContext<Accessor<CalendarDate> | null>(null);\nconst RangeCalendarGridCellPositionContext = createContext<Accessor<{\n weekIndex: number;\n dayIndex: number;\n lastWeekIndex: number;\n}> | null>(null);\n\nexport function useRangeCalendarContext(): RangeCalendarState<DateValue> {\n const context = useContext(RangeCalendarContext);\n if (!context) {\n throw new Error(\"RangeCalendar components must be used within a RangeCalendar\");\n }\n return context;\n}\n\n/**\n * A range calendar displays a grid of days and allows users to select a contiguous range of dates.\n *\n * @example\n * ```tsx\n * <RangeCalendar aria-label=\"Date range\">\n * <header>\n * <RangeCalendarButton slot=\"previous\">◀</RangeCalendarButton>\n * <RangeCalendarHeading />\n * <RangeCalendarButton slot=\"next\">▶</RangeCalendarButton>\n * </header>\n * <RangeCalendarGrid>\n * {(date) => <RangeCalendarCell date={date} />}\n * </RangeCalendarGrid>\n * </RangeCalendar>\n * ```\n */\nexport function RangeCalendar<T extends DateValue = CalendarDate>(\n props: RangeCalendarProps<T>,\n): JSX.Element {\n // Use hydration-safe pattern for client-only rendering\n const isHydrated = useIsHydrated();\n\n return (\n <Show\n when={isHydrated()}\n fallback={\n <div\n class=\"solidaria-RangeCalendar solidaria-RangeCalendar--placeholder\"\n aria-hidden=\"true\"\n />\n }\n >\n <RangeCalendarInner {...props} />\n </Show>\n );\n}\n\n/**\n * Internal RangeCalendar component that renders after client mount.\n */\nfunction RangeCalendarInner<T extends DateValue = CalendarDate>(\n props: RangeCalendarProps<T>,\n): JSX.Element {\n const [local, stateProps, rest] = splitProps(\n props,\n [\"children\", \"class\", \"style\", \"slot\", \"ref\"],\n [\n \"value\",\n \"defaultValue\",\n \"onChange\",\n \"minValue\",\n \"maxValue\",\n \"isDisabled\",\n \"isReadOnly\",\n \"focusedValue\",\n \"defaultFocusedValue\",\n \"onFocusChange\",\n \"locale\",\n \"createCalendar\",\n \"isDateUnavailable\",\n \"visibleMonths\",\n \"pageBehavior\",\n \"selectionAlignment\",\n \"isDateDisabled\",\n \"validationState\",\n \"allowsNonContiguousRanges\",\n \"firstDayOfWeek\",\n ],\n );\n\n const state = createRangeCalendarState(stateProps);\n\n const calendarAria = createRangeCalendar(rest, state as unknown as RangeCalendarState<DateValue>);\n\n const renderValues = createMemo<RangeCalendarRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n isReadOnly: state.isReadOnly(),\n isInvalid: state.isValueInvalid(),\n isDragging: state.isDragging(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-RangeCalendar\",\n },\n renderValues,\n );\n\n return (\n <RangeCalendarStateContext.Provider value={state as unknown as RangeCalendarState<DateValue>}>\n <RangeCalendarContext.Provider value={state as unknown as RangeCalendarState<DateValue>}>\n <div\n {...calendarAria.calendarProps}\n ref={(el) => assignRef(local.ref, el)}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state.isDisabled())}\n data-readonly={dataAttr(state.isReadOnly())}\n data-invalid={dataAttr(state.isValueInvalid())}\n data-dragging={dataAttr(state.isDragging())}\n >\n <VisuallyHidden>\n <h2>{String(calendarAria.calendarProps[\"aria-label\"] ?? \"\")}</h2>\n </VisuallyHidden>\n {props.children}\n </div>\n </RangeCalendarContext.Provider>\n </RangeCalendarStateContext.Provider>\n );\n}\n\nexport interface RangeCalendarHeadingProps extends SlotProps {\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\n/**\n * Displays the current month and year in the range calendar.\n */\nexport function RangeCalendarHeading(props: RangeCalendarHeadingProps): JSX.Element {\n const state = useRangeCalendarContext();\n\n return (\n <h2\n class={props.class ?? \"solidaria-RangeCalendarHeading\"}\n style={props.style}\n aria-live=\"polite\"\n >\n {state.title()}\n </h2>\n );\n}\n\nexport interface RangeCalendarButtonProps extends SlotProps {\n /** The slot for this button (previous or next). */\n slot?: \"previous\" | \"next\";\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n /** Whether the button is disabled. */\n isDisabled?: boolean;\n}\n\n/**\n * A button for navigating the range calendar.\n */\nexport function RangeCalendarButton(props: RangeCalendarButtonProps): JSX.Element {\n const state = useRangeCalendarContext();\n const calendarAria = createRangeCalendar({}, state);\n\n const buttonProps = createMemo(() => {\n if (props.slot === \"previous\") {\n return calendarAria.prevButtonProps;\n }\n return calendarAria.nextButtonProps;\n });\n const isDisabled = createMemo(\n () => props.isDisabled || Boolean(buttonProps().disabled) || state.isDisabled(),\n );\n\n return (\n <button\n {...buttonProps()}\n class={props.class ?? \"solidaria-RangeCalendarButton\"}\n style={props.style}\n disabled={isDisabled()}\n >\n {props.children}\n </button>\n );\n}\n\n/**\n * Displays a grid of range calendar cells.\n */\nexport function RangeCalendarGrid(props: RangeCalendarGridProps): JSX.Element {\n const state = useRangeCalendarContext();\n const [gridRef, setGridRef] = createSignal<HTMLTableElement | null>(null);\n const startDate = createMemo(() => {\n const offsetMonths = props.offset?.months ?? 0;\n const baseStart = state.visibleRange().start;\n return offsetMonths ? baseStart.add({ months: offsetMonths }) : baseStart;\n });\n\n const gridAria = createCalendarGrid(\n {\n startDate: startDate(),\n endDate: endOfMonth(startDate()),\n weekdayStyle: props.weekdayStyle,\n },\n state as unknown as Parameters<typeof createCalendarGrid>[1],\n gridRef,\n );\n\n const renderValues = createMemo<RangeCalendarGridRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-RangeCalendarGrid\",\n },\n renderValues,\n );\n\n // Memoize all dates for the grid to avoid reactive loops in render paths.\n const allDates = createMemo(() => {\n const monthStart = startDate();\n const numWeeks = state.getWeeksInMonth(monthStart);\n const weekDates: (CalendarDate | null)[][] = [];\n\n for (let weekIndex = 0; weekIndex < numWeeks; weekIndex++) {\n weekDates.push(state.getDatesInWeek(weekIndex, monthStart));\n }\n\n return weekDates;\n });\n\n return (\n <RangeCalendarGridMonthContext.Provider value={startDate}>\n <table\n ref={setGridRef}\n {...gridAria.gridProps}\n class={renderProps.class()}\n style={renderProps.style()}\n >\n <thead {...gridAria.headerProps}>\n <tr>\n <For each={gridAria.weekDays}>\n {(day) => (\n <th\n scope=\"col\"\n class={props.headerCellClass ?? \"solidaria-RangeCalendarHeaderCell\"}\n style={props.headerCellStyle}\n >\n {day}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody>\n <Index each={allDates()}>\n {(weekDates, weekIndex) => (\n <tr>\n <Index each={weekDates()}>\n {(date, dayIndex) => (\n <Show when={date()} fallback={<td />}>\n <RangeCalendarGridCellPositionContext.Provider\n value={() => ({\n weekIndex,\n dayIndex,\n lastWeekIndex: allDates().length - 1,\n })}\n >\n {props.children?.(date()!)}\n </RangeCalendarGridCellPositionContext.Provider>\n </Show>\n )}\n </Index>\n </tr>\n )}\n </Index>\n </tbody>\n </table>\n </RangeCalendarGridMonthContext.Provider>\n );\n}\n\n/**\n * A cell in the range calendar grid representing a single day.\n */\nexport function RangeCalendarCell(props: RangeCalendarCellProps): JSX.Element {\n const state = useRangeCalendarContext();\n const currentMonthStart = useContext(RangeCalendarGridMonthContext);\n const cellPosition = useContext(RangeCalendarGridCellPositionContext);\n const [cellRef, setCellRef] = createSignal<HTMLDivElement | null>(null);\n const isOutsideMonth = createMemo(\n () => currentMonthStart != null && !isSameMonth(currentMonthStart(), props.date),\n );\n const position = createMemo(\n () =>\n cellPosition?.() ?? {\n weekIndex: 0,\n dayIndex: 0,\n lastWeekIndex: 0,\n },\n );\n\n const cellAria = createRangeCalendarCell(\n () => ({\n date: props.date,\n isOutsideMonth: isOutsideMonth(),\n }),\n state,\n cellRef,\n );\n const { hoverProps, isHovered } = createHover(() => ({\n isDisabled: cellAria.isDisabled || cellAria.isUnavailable,\n }));\n\n const renderValues = createMemo<RangeCalendarCellRenderProps>(() => ({\n isSelected: cellAria.isSelected,\n isSelectionStart: cellAria.isSelectionStart,\n isSelectionEnd: cellAria.isSelectionEnd,\n isFocused: cellAria.isFocused,\n isDisabled: cellAria.isDisabled,\n isUnavailable: cellAria.isUnavailable,\n isInvalid: cellAria.isInvalid,\n isOutsideMonth: cellAria.isOutsideMonth,\n isToday: cellAria.isToday,\n isPressed: cellAria.isPressed,\n isHovered: isHovered(),\n isFirstChild: position().dayIndex === 0,\n isLastChild: position().dayIndex === 6,\n isFirstWeek: position().weekIndex === 0,\n isLastWeek: position().weekIndex === position().lastWeekIndex,\n formattedDate: cellAria.formattedDate,\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-RangeCalendarCell\",\n },\n renderValues,\n );\n const cellRenderProps = useRenderProps(\n {\n class: props.cellClass,\n style: props.cellStyle,\n defaultClassName: \"solidaria-RangeCalendarCellWrapper\",\n },\n renderValues,\n );\n\n // Determine children content - avoid Show for SSR hydration compatibility\n const getChildren = () => {\n if (typeof props.children === \"function\") {\n return renderProps.renderChildren();\n }\n return cellAria.formattedDate;\n };\n\n return (\n <td {...cellAria.cellProps} class={cellRenderProps.class()} style={cellRenderProps.style()}>\n <div\n ref={setCellRef}\n {...cellAria.buttonProps}\n {...hoverProps}\n class={renderProps.class()}\n style={renderProps.style()}\n data-selected={dataAttr(cellAria.isSelected)}\n data-selection-start={dataAttr(cellAria.isSelectionStart)}\n data-selection-end={dataAttr(cellAria.isSelectionEnd)}\n data-focused={dataAttr(cellAria.isFocused)}\n data-disabled={dataAttr(cellAria.isDisabled)}\n data-unavailable={dataAttr(cellAria.isUnavailable)}\n data-invalid={dataAttr(cellAria.isInvalid)}\n data-outside-month={dataAttr(cellAria.isOutsideMonth)}\n data-today={dataAttr(cellAria.isToday)}\n data-pressed={dataAttr(cellAria.isPressed)}\n data-hovered={dataAttr(isHovered())}\n >\n {getChildren()}\n </div>\n </td>\n );\n}\n\nexport type { RangeCalendarState, RangeValue };\n"],"mappings":"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"}
1
+ {"version":3,"file":"RangeCalendar.js","names":["JSX","Accessor","createContext","createMemo","createSignal","splitProps","useContext","For","Index","Show","createRangeCalendar","createCalendarGrid","createRangeCalendarCell","createHover","AriaRangeCalendarProps","AriaCalendarGridProps","createRangeCalendarState","RangeCalendarState","RangeCalendarStateProps","CalendarDate","DateValue","RangeValue","endOfMonth","isSameMonth","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","dataAttr","useIsHydrated","VisuallyHidden","RefLike","el","T","current","assignRef","ref","RangeCalendarRenderProps","isDisabled","isReadOnly","isInvalid","isDragging","RangeCalendarProps","Omit","children","Element","class","style","locale","HTMLDivElement","RangeCalendarGridRenderProps","RangeCalendarGridProps","date","headerCellClass","headerCellStyle","CSSProperties","offset","months","RangeCalendarCellRenderProps","isSelected","isSelectionStart","isSelectionEnd","isFocused","isUnavailable","isOutsideMonth","isToday","isPressed","isHovered","isFirstChild","isLastChild","isFirstWeek","isLastWeek","formattedDate","RangeCalendarCellProps","cellClass","cellStyle","RangeCalendarContext","RangeCalendarStateContext","RangeCalendarGridMonthContext","RangeCalendarGridCellPositionContext","weekIndex","dayIndex","lastWeekIndex","useRangeCalendarContext","context","Error","RangeCalendar","props","inheritedState","isHydrated","_$createComponent","when","fallback","_$getNextElement","_tmpl$","RangeCalendarInner","RangeCalendarWithState","_$mergeProps","state","local","rest","calendarAria","renderValues","isValueInvalid","renderProps","defaultClassName","Provider","value","_el$2","_tmpl$4","_el$5","firstChild","_el$6","_co$","_$getNextMarker","nextSibling","_el$7","_el$8","_co$2","_el$9","_el$0","_co$3","_$use","_$spread","calendarProps","data-disabled","data-readonly","data-invalid","data-dragging","_$insert","_el$3","_tmpl$2","String","_el$4","_tmpl$3","$$click","focusNextPage","_$effect","_p$","_v$","nextButtonProps","_v$2","Boolean","disabled","e","_$setAttribute","t","_$setProperty","undefined","_$runHydrationEvents","stateProps","_el$1","_el$12","_el$13","_co$4","_el$14","_el$15","_co$5","_el$16","_el$17","_co$6","_el$10","_el$11","_v$3","_v$4","RangeCalendarHeadingProps","RangeCalendarHeading","_el$18","_tmpl$5","title","_v$5","_v$6","_$className","_$style","RangeCalendarButtonProps","slot","RangeCalendarButton","buttonProps","prevButtonProps","_el$19","_tmpl$6","tabindex","RangeCalendarGrid","gridRef","setGridRef","HTMLTableElement","startDate","offsetMonths","baseStart","visibleRange","start","add","gridAria","endDate","weekdayStyle","Parameters","allDates","monthStart","numWeeks","getWeeksInMonth","weekDates","push","getDatesInWeek","_el$20","_tmpl$7","_el$21","_el$22","_el$23","gridProps","headerProps","each","weekDays","day","_el$24","_tmpl$8","_v$7","_v$8","_el$25","_tmpl$9","_tmpl$0","length","RangeCalendarCell","currentMonthStart","cellPosition","cellRef","setCellRef","position","cellAria","hoverProps","cellRenderProps","getChildren","renderChildren","_el$27","_tmpl$1","_el$28","cellProps","data-selected","data-selection-start","data-selection-end","data-focused","data-unavailable","data-outside-month","data-today","data-pressed","data-hovered","_$delegateEvents"],"sources":["../src/RangeCalendar.tsx"],"sourcesContent":["/**\n * RangeCalendar component for solidaria-components\n *\n * Pre-wired headless range calendar component that combines aria hooks.\n * Port of react-aria-components/src/RangeCalendar.tsx\n */\n\nimport {\n type JSX,\n type Accessor,\n createContext,\n createMemo,\n createSignal,\n splitProps,\n useContext,\n For,\n Index,\n Show,\n} from \"solid-js\";\nimport {\n createRangeCalendar,\n createCalendarGrid,\n createRangeCalendarCell,\n createHover,\n type AriaRangeCalendarProps,\n type AriaCalendarGridProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createRangeCalendarState,\n type RangeCalendarState,\n type RangeCalendarStateProps,\n type CalendarDate,\n type DateValue,\n type RangeValue,\n endOfMonth,\n isSameMonth,\n} from \"@proyecto-viviana/solid-stately\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n dataAttr,\n useIsHydrated,\n} from \"./utils\";\nimport { VisuallyHidden } from \"./VisuallyHidden\";\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) {\n return;\n }\n\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nexport interface RangeCalendarRenderProps {\n /** Whether the calendar is disabled. */\n isDisabled: boolean;\n /** Whether the calendar is read-only. */\n isReadOnly: boolean;\n /** Whether the current selection is invalid. */\n isInvalid: boolean;\n /** Whether the user is currently selecting a range. */\n isDragging: boolean;\n}\n\nexport interface RangeCalendarProps<T extends DateValue = DateValue>\n extends\n Omit<AriaRangeCalendarProps, \"id\" | \"isDisabled\" | \"isReadOnly\">,\n Omit<RangeCalendarStateProps<T>, \"locale\">,\n SlotProps {\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<RangeCalendarRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<RangeCalendarRenderProps>;\n /** The locale to use for formatting. */\n locale?: string;\n /** Ref for the range calendar root element. */\n ref?: RefLike<HTMLDivElement>;\n}\n\nexport interface RangeCalendarGridRenderProps {\n /** Whether the grid is disabled. */\n isDisabled: boolean;\n}\n\nexport interface RangeCalendarGridProps\n extends Omit<AriaCalendarGridProps, \"startDate\" | \"endDate\">, SlotProps {\n /** The children of the component (render function receiving dates). */\n children?: (date: CalendarDate) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<RangeCalendarGridRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<RangeCalendarGridRenderProps>;\n /** Class name for weekday header cells. */\n headerCellClass?: string;\n /** Inline style for weekday header cells. */\n headerCellStyle?: JSX.CSSProperties;\n /** Number of months to offset from the start. */\n offset?: { months?: number };\n}\n\nexport interface RangeCalendarCellRenderProps {\n /** Whether the cell is within the selected range. */\n isSelected: boolean;\n /** Whether the cell is the start of the selection. */\n isSelectionStart: boolean;\n /** Whether the cell is the end of the selection. */\n isSelectionEnd: boolean;\n /** Whether the cell is focused. */\n isFocused: boolean;\n /** Whether the cell is disabled. */\n isDisabled: boolean;\n /** Whether the cell is unavailable. */\n isUnavailable: boolean;\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean;\n /** Whether the cell is outside the visible month. */\n isOutsideMonth: boolean;\n /** Whether the cell represents today. */\n isToday: boolean;\n /** Whether the cell is pressed. */\n isPressed: boolean;\n /** Whether the cell is hovered. */\n isHovered: boolean;\n /** Whether the cell is the first day slot in its row. */\n isFirstChild: boolean;\n /** Whether the cell is the last day slot in its row. */\n isLastChild: boolean;\n /** Whether the cell is in the first rendered week row. */\n isFirstWeek: boolean;\n /** Whether the cell is in the last rendered week row. */\n isLastWeek: boolean;\n /** The formatted date string. */\n formattedDate: string;\n}\n\nexport interface RangeCalendarCellProps extends SlotProps {\n /** The date for this cell. */\n date: CalendarDate;\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<RangeCalendarCellRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<RangeCalendarCellRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<RangeCalendarCellRenderProps>;\n /** Class name for the table cell wrapper. */\n cellClass?: ClassNameOrFunction<RangeCalendarCellRenderProps>;\n /** Inline style for the table cell wrapper. */\n cellStyle?: StyleOrFunction<RangeCalendarCellRenderProps>;\n}\n\nexport const RangeCalendarContext = createContext<RangeCalendarState<DateValue> | null>(null);\nexport const RangeCalendarStateContext = createContext<RangeCalendarState<DateValue> | null>(null);\nconst RangeCalendarGridMonthContext = createContext<Accessor<CalendarDate> | null>(null);\nconst RangeCalendarGridCellPositionContext = createContext<Accessor<{\n weekIndex: number;\n dayIndex: number;\n lastWeekIndex: number;\n}> | null>(null);\n\nexport function useRangeCalendarContext(): RangeCalendarState<DateValue> {\n const context = useContext(RangeCalendarContext);\n if (!context) {\n throw new Error(\"RangeCalendar components must be used within a RangeCalendar\");\n }\n return context;\n}\n\n/**\n * A range calendar displays a grid of days and allows users to select a contiguous range of dates.\n *\n * @example\n * ```tsx\n * <RangeCalendar aria-label=\"Date range\">\n * <header>\n * <RangeCalendarButton slot=\"previous\">◀</RangeCalendarButton>\n * <RangeCalendarHeading />\n * <RangeCalendarButton slot=\"next\">▶</RangeCalendarButton>\n * </header>\n * <RangeCalendarGrid>\n * {(date) => <RangeCalendarCell date={date} />}\n * </RangeCalendarGrid>\n * </RangeCalendar>\n * ```\n */\nexport function RangeCalendar<T extends DateValue = CalendarDate>(\n props: RangeCalendarProps<T>,\n): JSX.Element {\n // When rendered inside a composite that owns the range state (e.g.\n // DateRangePicker provides `RangeCalendarContext`), reuse that shared state\n // instead of minting a fresh one — otherwise the composite's focus/anchor\n // flags (e.g. the popover-open `setFocused(true)`) drive a different state\n // instance than the one this grid renders. Mirrors the single `Calendar`.\n const inheritedState = useContext(RangeCalendarContext);\n\n // Use hydration-safe pattern for client-only rendering\n const isHydrated = useIsHydrated();\n\n return (\n <Show\n when={isHydrated()}\n fallback={\n <div\n class=\"solidaria-RangeCalendar solidaria-RangeCalendar--placeholder\"\n aria-hidden=\"true\"\n />\n }\n >\n <Show when={inheritedState} fallback={<RangeCalendarInner {...props} />}>\n <RangeCalendarWithState\n state={inheritedState as RangeCalendarState<DateValue>}\n {...props}\n />\n </Show>\n </Show>\n );\n}\n\n/**\n * RangeCalendar variant that renders against an externally-owned state (from\n * `RangeCalendarContext`) rather than creating its own. Mirrors the single\n * `CalendarWithState`.\n */\nfunction RangeCalendarWithState<T extends DateValue = CalendarDate>(\n props: RangeCalendarProps<T> & { state: RangeCalendarState<DateValue> },\n): JSX.Element {\n const [local, , rest] = splitProps(\n props,\n [\"children\", \"class\", \"style\", \"slot\", \"state\", \"ref\"],\n [\n \"value\",\n \"defaultValue\",\n \"onChange\",\n \"minValue\",\n \"maxValue\",\n \"isDisabled\",\n \"isReadOnly\",\n \"focusedValue\",\n \"defaultFocusedValue\",\n \"onFocusChange\",\n \"locale\",\n \"createCalendar\",\n \"isDateUnavailable\",\n \"visibleMonths\",\n \"pageBehavior\",\n \"selectionAlignment\",\n \"isDateDisabled\",\n \"validationState\",\n \"allowsNonContiguousRanges\",\n \"firstDayOfWeek\",\n ],\n );\n\n const state = () => props.state;\n\n const calendarAria = createRangeCalendar(rest, state());\n\n const renderValues = createMemo<RangeCalendarRenderProps>(() => ({\n isDisabled: state().isDisabled(),\n isReadOnly: state().isReadOnly(),\n isInvalid: state().isValueInvalid(),\n isDragging: state().isDragging(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-RangeCalendar\",\n },\n renderValues,\n );\n\n return (\n <RangeCalendarStateContext.Provider value={state()}>\n <RangeCalendarContext.Provider value={state()}>\n <div\n {...calendarAria.calendarProps}\n ref={(el) => assignRef(local.ref, el)}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state().isDisabled())}\n data-readonly={dataAttr(state().isReadOnly())}\n data-invalid={dataAttr(state().isValueInvalid())}\n data-dragging={dataAttr(state().isDragging())}\n >\n <VisuallyHidden>\n <h2>{String(calendarAria.calendarProps[\"aria-label\"] ?? \"\")}</h2>\n </VisuallyHidden>\n {props.children}\n {/* For touch screen readers, a visually hidden next button after the\n * month grid so it's easy to navigate after reaching the end without\n * going all the way back to the start. Mirrors react-aria-components\n * Calendar (and the headless Calendar). */}\n <VisuallyHidden>\n <button\n aria-label={String(calendarAria.nextButtonProps[\"aria-label\"] ?? \"\")}\n disabled={Boolean(calendarAria.nextButtonProps.disabled)}\n onClick={() => state().focusNextPage()}\n tabIndex={-1}\n />\n </VisuallyHidden>\n </div>\n </RangeCalendarContext.Provider>\n </RangeCalendarStateContext.Provider>\n );\n}\n\n/**\n * Internal RangeCalendar component that renders after client mount.\n */\nfunction RangeCalendarInner<T extends DateValue = CalendarDate>(\n props: RangeCalendarProps<T>,\n): JSX.Element {\n const [local, stateProps, rest] = splitProps(\n props,\n [\"children\", \"class\", \"style\", \"slot\", \"ref\"],\n [\n \"value\",\n \"defaultValue\",\n \"onChange\",\n \"minValue\",\n \"maxValue\",\n \"isDisabled\",\n \"isReadOnly\",\n \"focusedValue\",\n \"defaultFocusedValue\",\n \"onFocusChange\",\n \"locale\",\n \"createCalendar\",\n \"isDateUnavailable\",\n \"visibleMonths\",\n \"pageBehavior\",\n \"selectionAlignment\",\n \"isDateDisabled\",\n \"validationState\",\n \"allowsNonContiguousRanges\",\n \"firstDayOfWeek\",\n ],\n );\n\n const state = createRangeCalendarState(stateProps);\n\n const calendarAria = createRangeCalendar(rest, state as unknown as RangeCalendarState<DateValue>);\n\n const renderValues = createMemo<RangeCalendarRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n isReadOnly: state.isReadOnly(),\n isInvalid: state.isValueInvalid(),\n isDragging: state.isDragging(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-RangeCalendar\",\n },\n renderValues,\n );\n\n return (\n <RangeCalendarStateContext.Provider value={state as unknown as RangeCalendarState<DateValue>}>\n <RangeCalendarContext.Provider value={state as unknown as RangeCalendarState<DateValue>}>\n <div\n {...calendarAria.calendarProps}\n ref={(el) => assignRef(local.ref, el)}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state.isDisabled())}\n data-readonly={dataAttr(state.isReadOnly())}\n data-invalid={dataAttr(state.isValueInvalid())}\n data-dragging={dataAttr(state.isDragging())}\n >\n <VisuallyHidden>\n <h2>{String(calendarAria.calendarProps[\"aria-label\"] ?? \"\")}</h2>\n </VisuallyHidden>\n {props.children}\n {/* For touch screen readers, a visually hidden next button after the\n * month grid so it's easy to navigate after reaching the end without\n * going all the way back to the start. Mirrors react-aria-components\n * Calendar (and the headless Calendar). */}\n <VisuallyHidden>\n <button\n aria-label={String(calendarAria.nextButtonProps[\"aria-label\"] ?? \"\")}\n disabled={Boolean(calendarAria.nextButtonProps.disabled)}\n onClick={() => state.focusNextPage()}\n tabIndex={-1}\n />\n </VisuallyHidden>\n </div>\n </RangeCalendarContext.Provider>\n </RangeCalendarStateContext.Provider>\n );\n}\n\nexport interface RangeCalendarHeadingProps extends SlotProps {\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\n/**\n * Displays the current month and year in the range calendar.\n */\nexport function RangeCalendarHeading(props: RangeCalendarHeadingProps): JSX.Element {\n const state = useRangeCalendarContext();\n\n return (\n <h2\n class={props.class ?? \"solidaria-RangeCalendarHeading\"}\n style={props.style}\n aria-live=\"polite\"\n >\n {state.title()}\n </h2>\n );\n}\n\nexport interface RangeCalendarButtonProps extends SlotProps {\n /** The slot for this button (previous or next). */\n slot?: \"previous\" | \"next\";\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n /** Whether the button is disabled. */\n isDisabled?: boolean;\n}\n\n/**\n * A button for navigating the range calendar.\n */\nexport function RangeCalendarButton(props: RangeCalendarButtonProps): JSX.Element {\n const state = useRangeCalendarContext();\n const calendarAria = createRangeCalendar({}, state);\n\n const buttonProps = createMemo(() => {\n if (props.slot === \"previous\") {\n return calendarAria.prevButtonProps;\n }\n return calendarAria.nextButtonProps;\n });\n const isDisabled = createMemo(\n () => props.isDisabled || Boolean(buttonProps().disabled) || state.isDisabled(),\n );\n\n return (\n <button\n {...buttonProps()}\n class={props.class ?? \"solidaria-RangeCalendarButton\"}\n style={props.style}\n disabled={isDisabled()}\n // Mirror useFocusable (same as CalendarButton): always set an explicit\n // tabIndex on an enabled focusable nav button (0), and drop it entirely\n // when disabled — so the prev/next buttons appear in the roving tab order\n // exactly as the S2 oracle does.\n tabindex={isDisabled() ? undefined : 0}\n >\n {props.children}\n </button>\n );\n}\n\n/**\n * Displays a grid of range calendar cells.\n */\nexport function RangeCalendarGrid(props: RangeCalendarGridProps): JSX.Element {\n const state = useRangeCalendarContext();\n const [gridRef, setGridRef] = createSignal<HTMLTableElement | null>(null);\n const startDate = createMemo(() => {\n const offsetMonths = props.offset?.months ?? 0;\n const baseStart = state.visibleRange().start;\n return offsetMonths ? baseStart.add({ months: offsetMonths }) : baseStart;\n });\n\n const gridAria = createCalendarGrid(\n {\n startDate: startDate(),\n endDate: endOfMonth(startDate()),\n weekdayStyle: props.weekdayStyle,\n },\n state as unknown as Parameters<typeof createCalendarGrid>[1],\n gridRef,\n );\n\n const renderValues = createMemo<RangeCalendarGridRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-RangeCalendarGrid\",\n },\n renderValues,\n );\n\n // Memoize all dates for the grid to avoid reactive loops in render paths.\n const allDates = createMemo(() => {\n const monthStart = startDate();\n const numWeeks = state.getWeeksInMonth(monthStart);\n const weekDates: (CalendarDate | null)[][] = [];\n\n for (let weekIndex = 0; weekIndex < numWeeks; weekIndex++) {\n weekDates.push(state.getDatesInWeek(weekIndex, monthStart));\n }\n\n return weekDates;\n });\n\n return (\n <RangeCalendarGridMonthContext.Provider value={startDate}>\n <table\n ref={setGridRef}\n {...gridAria.gridProps}\n class={renderProps.class()}\n style={renderProps.style()}\n >\n <thead {...gridAria.headerProps}>\n <tr>\n <For each={gridAria.weekDays}>\n {(day) => (\n <th\n scope=\"col\"\n class={props.headerCellClass ?? \"solidaria-RangeCalendarHeaderCell\"}\n style={props.headerCellStyle}\n >\n {day}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody>\n <Index each={allDates()}>\n {(weekDates, weekIndex) => (\n <tr>\n <Index each={weekDates()}>\n {(date, dayIndex) => (\n <Show when={date()} fallback={<td />}>\n <RangeCalendarGridCellPositionContext.Provider\n value={() => ({\n weekIndex,\n dayIndex,\n lastWeekIndex: allDates().length - 1,\n })}\n >\n {props.children?.(date()!)}\n </RangeCalendarGridCellPositionContext.Provider>\n </Show>\n )}\n </Index>\n </tr>\n )}\n </Index>\n </tbody>\n </table>\n </RangeCalendarGridMonthContext.Provider>\n );\n}\n\n/**\n * A cell in the range calendar grid representing a single day.\n */\nexport function RangeCalendarCell(props: RangeCalendarCellProps): JSX.Element {\n const state = useRangeCalendarContext();\n const currentMonthStart = useContext(RangeCalendarGridMonthContext);\n const cellPosition = useContext(RangeCalendarGridCellPositionContext);\n const [cellRef, setCellRef] = createSignal<HTMLDivElement | null>(null);\n const isOutsideMonth = createMemo(\n () => currentMonthStart != null && !isSameMonth(currentMonthStart(), props.date),\n );\n const position = createMemo(\n () =>\n cellPosition?.() ?? {\n weekIndex: 0,\n dayIndex: 0,\n lastWeekIndex: 0,\n },\n );\n\n const cellAria = createRangeCalendarCell(\n () => ({\n date: props.date,\n isOutsideMonth: isOutsideMonth(),\n }),\n state,\n cellRef,\n );\n const { hoverProps, isHovered } = createHover(() => ({\n isDisabled: cellAria.isDisabled || cellAria.isUnavailable,\n }));\n\n const renderValues = createMemo<RangeCalendarCellRenderProps>(() => ({\n isSelected: cellAria.isSelected,\n isSelectionStart: cellAria.isSelectionStart,\n isSelectionEnd: cellAria.isSelectionEnd,\n isFocused: cellAria.isFocused,\n isDisabled: cellAria.isDisabled,\n isUnavailable: cellAria.isUnavailable,\n isInvalid: cellAria.isInvalid,\n isOutsideMonth: cellAria.isOutsideMonth,\n isToday: cellAria.isToday,\n isPressed: cellAria.isPressed,\n isHovered: isHovered(),\n isFirstChild: position().dayIndex === 0,\n isLastChild: position().dayIndex === 6,\n isFirstWeek: position().weekIndex === 0,\n isLastWeek: position().weekIndex === position().lastWeekIndex,\n formattedDate: cellAria.formattedDate,\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-RangeCalendarCell\",\n },\n renderValues,\n );\n const cellRenderProps = useRenderProps(\n {\n class: props.cellClass,\n style: props.cellStyle,\n defaultClassName: \"solidaria-RangeCalendarCellWrapper\",\n },\n renderValues,\n );\n\n // Determine children content - avoid Show for SSR hydration compatibility\n const getChildren = () => {\n if (typeof props.children === \"function\") {\n return renderProps.renderChildren();\n }\n return cellAria.formattedDate;\n };\n\n return (\n <td {...cellAria.cellProps} class={cellRenderProps.class()} style={cellRenderProps.style()}>\n <div\n ref={setCellRef}\n {...cellAria.buttonProps}\n {...hoverProps}\n class={renderProps.class()}\n style={renderProps.style()}\n data-selected={dataAttr(cellAria.isSelected)}\n data-selection-start={dataAttr(cellAria.isSelectionStart)}\n data-selection-end={dataAttr(cellAria.isSelectionEnd)}\n data-focused={dataAttr(cellAria.isFocused)}\n data-disabled={dataAttr(cellAria.isDisabled)}\n data-unavailable={dataAttr(cellAria.isUnavailable)}\n data-invalid={dataAttr(cellAria.isInvalid)}\n data-outside-month={dataAttr(cellAria.isOutsideMonth)}\n data-today={dataAttr(cellAria.isToday)}\n data-pressed={dataAttr(cellAria.isPressed)}\n data-hovered={dataAttr(isHovered())}\n >\n {getChildren()}\n </div>\n </td>\n );\n}\n\nexport type { RangeCalendarState, RangeValue };\n"],"mappings":";;;;;;;;;;;;;;AAkDA,SAASoC,UAAaC,KAAiBJ,IAAa;CAClD,IAAI,CAACI,KACH;CAGF,IAAI,OAAOA,QAAQ,YACjBA,IAAIJ,EAAE;MAENI,IAAIF,UAAUF;AAElB;AAqGA,MAAa4C,uBAAuB3E,cAAoD,IAAI;AAC5F,MAAa4E,4BAA4B5E,cAAoD,IAAI;AACjG,MAAM6E,gCAAgC7E,cAA6C,IAAI;AACvF,MAAM8E,uCAAuC9E,cAIlC,IAAI;AAEf,SAAgBkF,0BAAyD;CACvE,MAAMC,UAAU/E,WAAWuE,oBAAoB;CAC/C,IAAI,CAACQ,SACH,MAAM,IAAIC,MAAM,8DAA8D;CAEhF,OAAOD;AACT;;;;;;;;;;;;;;;;;;AAmBA,SAAgBE,cACdC,OACa;CAMb,MAAMC,iBAAiBnF,WAAWuE,oBAAoB;CAGtD,MAAMa,aAAa5D,cAAc;CAEjC,OAAA6D,gBACGlF,MAAI;EAAA,IACHmF,OAAI;GAAA,OAAEF,WAAW;EAAC;EAAA,IAClBG,WAAQ;GAAA,OAAAC,eAAAC,MAAA;EAAA;EAAA,IAAAlD,WAAA;GAAA,OAAA8C,gBAOPlF,MAAI;IAACmF,MAAMH;IAAc,IAAEI,WAAQ;KAAA,OAAAF,gBAAGK,oBAAuBR,KAAK;IAAA;IAAA,IAAA3C,WAAA;KAAA,OAAA8C,gBAChEM,wBAAsBC,WAAA,EACrBC,OAAOV,eAA+C,GAClDD,KAAK,CAAA;IAAA;GAAA,CAAA;EAAA;CAAA,CAAA;AAKnB;;;;;;AAOA,SAASS,uBACPT,OACa;CACb,MAAM,CAACY,SAASC,QAAQhG,WACtBmF,OACA;EAAC;EAAY;EAAS;EAAS;EAAQ;EAAS;CAAK,GACrD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAgB,CAEpB;CAEA,MAAMW,cAAcX,MAAMW;CAE1B,MAAMG,eAAe5F,oBAAoB2F,MAAMF,MAAM,CAAC;CAEtD,MAAMI,eAAepG,kBAA4C;EAC/DoC,YAAY4D,MAAM,CAAC,CAAC5D,WAAW;EAC/BC,YAAY2D,MAAM,CAAC,CAAC3D,WAAW;EAC/BC,WAAW0D,MAAM,CAAC,CAACK,eAAe;EAClC9D,YAAYyD,MAAM,CAAC,CAACzD,WAAW;CACjC,EAAE;CAEF,MAAM+D,cAAc7E,eAClB;EACEmB,OAAOqD,MAAMrD;EACbC,OAAOoD,MAAMpD;EACb0D,kBAAkB;CACpB,GACAH,YACF;CAEA,OAAAZ,gBACGb,0BAA0B6B,UAAQ;EAAA,IAACC,QAAK;GAAA,OAAET,MAAM;EAAC;EAAA,IAAAtD,WAAA;GAAA,OAAA8C,gBAC/Cd,qBAAqB8B,UAAQ;IAAA,IAACC,QAAK;KAAA,OAAET,MAAM;IAAC;IAAA,IAAAtD,WAAA;KAAA,IAAAgE,QAAAf,eAAAgB,OAAA,GAAAC,QAAAF,MAAAG,YAAA,CAAAC,OAAAC,QAAAC,cAAAJ,MAAAK,WAAA,GAAAC,QAAAJ,MAAAG,aAAA,CAAAE,OAAAC,SAAAJ,cAAAE,MAAAD,WAAA,GAAAI,QAAAF,MAAAF,aAAA,CAAAK,OAAAC,SAAAP,cAAAK,MAAAJ,WAAA;KAAAO,KAGnC1F,OAAOG,UAAUgE,MAAM/D,KAAKJ,EAAE,GAAC4E,KAAA;KAAAe,OAAAf,OAAAX,iBADjCI,aAAauB,eAAa;MAAA,KAAA,WAAA;OAAA,OAEvBpB,YAAY1D,MAAM;MAAC;MAAA,IAC1BC,QAAK;OAAA,OAAEyD,YAAYzD,MAAM;MAAC;MAAA,KAAA,mBAAA;OAAA,OACXnB,SAASsE,MAAM,CAAC,CAAC5D,WAAW,CAAC;MAAC;MAAA,KAAA,mBAAA;OAAA,OAC9BV,SAASsE,MAAM,CAAC,CAAC3D,WAAW,CAAC;MAAC;MAAA,KAAA,kBAAA;OAAA,OAC/BX,SAASsE,MAAM,CAAC,CAACK,eAAe,CAAC;MAAC;MAAA,KAAA,mBAAA;OAAA,OACjC3E,SAASsE,MAAM,CAAC,CAACzD,WAAW,CAAC;MAAC;KAAA,CAAA,GAAA,OAAA,IAAA;KAAAwF,OAAArB,OAAAlB,gBAE5C5D,gBAAc,EAAA,IAAAc,WAAA;MAAA,IAAAsF,QAAArC,eAAAsC,OAAA;MAAAF,OAAAC,aACRE,OAAO/B,aAAauB,cAAc,iBAAiB,EAAE,CAAC;MAAA,OAAAM;KAAA,EAAA,CAAA,GAAAlB,OAAAC,IAAA;KAAAgB,OAAArB,aAE5DrB,MAAM3C,UAAQyE,OAAAC,KAAA;KAAAW,OAAArB,OAAAlB,gBAKd5D,gBAAc,EAAA,IAAAc,WAAA;MAAA,IAAAyF,QAAAxC,eAAAyC,OAAA;MAAAD,MAAAE,gBAIIrC,MAAM,CAAC,CAACsC,cAAc;MAACC,QAAAC,QAAA;OAAA,IAAAC,MAF1BP,OAAO/B,aAAauC,gBAAgB,iBAAiB,EAAE,GAACC,OAC1DC,QAAQzC,aAAauC,gBAAgBG,QAAQ;OAACJ,QAAAD,IAAAM,KAAAC,aAAAZ,OAAA,cAAAK,IAAAM,IAAAL,GAAA;OAAAE,SAAAH,IAAAQ,KAAAC,YAAAd,OAAA,YAAAK,IAAAQ,IAAAL,IAAA;OAAA,OAAAH;MAAA,GAAA;OAAAM,GAAAI,KAAAA;OAAAF,GAAAE,KAAAA;MAAA,CAAA;MAAAC,mBAAA;MAAA,OAAAhB;KAAA,EAAA,CAAA,GAAAb,OAAAC,KAAA;KAAA4B,mBAAA;KAAA,OAAAzC;IAAA;GAAA,CAAA;EAAA;CAAA,CAAA;AAStE;;;;AAKA,SAASb,mBACPR,OACa;CACb,MAAM,CAACY,OAAOmD,YAAYlD,QAAQhG,WAChCmF,OACA;EAAC;EAAY;EAAS;EAAS;EAAQ;CAAK,GAC5C;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAgB,CAEpB;CAEA,MAAMW,QAAQnF,yBAAyBuI,UAAU;CAEjD,MAAMjD,eAAe5F,oBAAoB2F,MAAMF,KAAiD;CAEhG,MAAMI,eAAepG,kBAA4C;EAC/DoC,YAAY4D,MAAM5D,WAAW;EAC7BC,YAAY2D,MAAM3D,WAAW;EAC7BC,WAAW0D,MAAMK,eAAe;EAChC9D,YAAYyD,MAAMzD,WAAW;CAC/B,EAAE;CAEF,MAAM+D,cAAc7E,eAClB;EACEmB,OAAOqD,MAAMrD;EACbC,OAAOoD,MAAMpD;EACb0D,kBAAkB;CACpB,GACAH,YACF;CAEA,OAAAZ,gBACGb,0BAA0B6B,UAAQ;EAACC,OAAOT;EAAiD,IAAAtD,WAAA;GAAA,OAAA8C,gBACzFd,qBAAqB8B,UAAQ;IAACC,OAAOT;IAAiD,IAAAtD,WAAA;KAAA,IAAA2G,QAAA1D,eAAAgB,OAAA,GAAA2C,SAAAD,MAAAxC,YAAA,CAAA0C,QAAAC,SAAAxC,cAAAsC,OAAArC,WAAA,GAAAwC,SAAAF,OAAAtC,aAAA,CAAAyC,QAAAC,SAAA3C,cAAAyC,OAAAxC,WAAA,GAAA2C,SAAAF,OAAAzC,aAAA,CAAA4C,QAAAC,SAAA9C,cAAA4C,OAAA3C,WAAA;KAAAO,KAG7E1F,OAAOG,UAAUgE,MAAM/D,KAAKJ,EAAE,GAACuH,KAAA;KAAA5B,OAAA4B,OAAAtD,iBADjCI,aAAauB,eAAa;MAAA,KAAA,WAAA;OAAA,OAEvBpB,YAAY1D,MAAM;MAAC;MAAA,IAC1BC,QAAK;OAAA,OAAEyD,YAAYzD,MAAM;MAAC;MAAA,KAAA,mBAAA;OAAA,OACXnB,SAASsE,MAAM5D,WAAW,CAAC;MAAC;MAAA,KAAA,mBAAA;OAAA,OAC5BV,SAASsE,MAAM3D,WAAW,CAAC;MAAC;MAAA,KAAA,kBAAA;OAAA,OAC7BX,SAASsE,MAAMK,eAAe,CAAC;MAAC;MAAA,KAAA,mBAAA;OAAA,OAC/B3E,SAASsE,MAAMzD,WAAW,CAAC;MAAC;KAAA,CAAA,GAAA,OAAA,IAAA;KAAAwF,OAAAsB,OAAA7D,gBAE1C5D,gBAAc,EAAA,IAAAc,WAAA;MAAA,IAAAqH,SAAApE,eAAAsC,OAAA;MAAAF,OAAAgC,cACR7B,OAAO/B,aAAauB,cAAc,iBAAiB,EAAE,CAAC;MAAA,OAAAqC;KAAA,EAAA,CAAA,GAAAR,QAAAC,KAAA;KAAAzB,OAAAsB,aAE5DhE,MAAM3C,UAAQgH,QAAAC,KAAA;KAAA5B,OAAAsB,OAAA7D,gBAKd5D,gBAAc,EAAA,IAAAc,WAAA;MAAA,IAAAsH,SAAArE,eAAAyC,OAAA;MAAA4B,OAAA3B,gBAIIrC,MAAMsC,cAAc;MAACC,QAAAC,QAAA;OAAA,IAAAyB,OAFxB/B,OAAO/B,aAAauC,gBAAgB,iBAAiB,EAAE,GAACwB,OAC1DtB,QAAQzC,aAAauC,gBAAgBG,QAAQ;OAACoB,SAAAzB,IAAAM,KAAAC,aAAAiB,QAAA,cAAAxB,IAAAM,IAAAmB,IAAA;OAAAC,SAAA1B,IAAAQ,KAAAC,YAAAe,QAAA,YAAAxB,IAAAQ,IAAAkB,IAAA;OAAA,OAAA1B;MAAA,GAAA;OAAAM,GAAAI,KAAAA;OAAAF,GAAAE,KAAAA;MAAA,CAAA;MAAAC,mBAAA;MAAA,OAAAa;KAAA,EAAA,CAAA,GAAAH,QAAAC,KAAA;KAAAX,mBAAA;KAAA,OAAAE;IAAA;GAAA,CAAA;EAAA;CAAA,CAAA;AAStE;;;;AAYA,SAAgBe,qBAAqB/E,OAA+C;CAClF,MAAMW,QAAQf,wBAAwB;CAEtC,cAAA;EAAA,IAAAoF,SAAA1E,eAAA2E,OAAA;EAAAvC,OAAAsC,cAMKrE,MAAMuE,MAAM,CAAC;EAAAhC,QAAAC,QAAA;GAAA,IAAAgC,OAJPnF,MAAMzC,SAAS,kCAAgC6H,OAC/CpF,MAAMxC;GAAK2H,SAAAhC,IAAAM,KAAA4B,UAAAL,QAAA7B,IAAAM,IAAA0B,IAAA;GAAAhC,IAAAQ,IAAA2B,MAAAN,QAAAI,MAAAjC,IAAAQ,CAAA;GAAA,OAAAR;EAAA,GAAA;GAAAM,GAAAI,KAAAA;GAAAF,GAAAE,KAAAA;EAAA,CAAA;EAAA,OAAAmB;CAAA,EAAA,CAAA;AAMxB;;;;AAkBA,SAAgBS,oBAAoBzF,OAA8C;CAChF,MAAMW,QAAQf,wBAAwB;CACtC,MAAMkB,eAAe5F,oBAAoB,CAAC,GAAGyF,KAAK;CAElD,MAAM+E,cAAc/K,iBAAiB;EACnC,IAAIqF,MAAMwF,SAAS,YACjB,OAAO1E,aAAa6E;EAEtB,OAAO7E,aAAauC;CACtB,CAAC;CACD,MAAMtG,aAAapC,iBACXqF,MAAMjD,cAAcwG,QAAQmC,YAAY,CAAC,CAAClC,QAAQ,KAAK7C,MAAM5D,WAAW,CAChF;CAEA,cAAA;EAAA,IAAA6I,SAAAtF,eAAAuF,OAAA;EAAAzD,OAAAwD,QAAAlF,WAEQgF,aAAW;GAAA,KAAA,WAAA;IAAA,OACR1F,MAAMzC,SAAS;GAA+B;GAAA,IACrDC,QAAK;IAAA,OAAEwC,MAAMxC;GAAK;GAAA,IAClBgG,WAAQ;IAAA,OAAEzG,WAAW;GAAC;GAAA,IAKtB+I,WAAQ;IAAA,OAAE/I,WAAW,IAAI8G,KAAAA,IAAY;GAAC;EAAA,CAAA,GAAA,OAAA,IAAA;EAAAnB,OAAAkD,cAErC5F,MAAM3C,QAAQ;EAAAyG,mBAAA;EAAA,OAAA8B;CAAA,EAAA,CAAA;AAGrB;;;;AAKA,SAAgBG,kBAAkB/F,OAA4C;CAC5E,MAAMW,QAAQf,wBAAwB;CACtC,MAAM,CAACoG,SAASC,cAAcrL,aAAsC,IAAI;CACxE,MAAMuL,YAAYxL,iBAAiB;EACjC,MAAMyL,eAAepG,MAAM/B,QAAQC,UAAU;EAC7C,MAAMmI,YAAY1F,MAAM2F,aAAa,CAAC,CAACC;EACvC,OAAOH,eAAeC,UAAUG,IAAI,EAAEtI,QAAQkI,aAAa,CAAC,IAAIC;CAClE,CAAC;CAED,MAAMI,WAAWtL,mBACf;EACEgL,WAAWA,UAAU;EACrBO,SAAS5K,WAAWqK,UAAU,CAAC;EAC/BQ,cAAc3G,MAAM2G;CACtB,GACAhG,OACAqF,OACF;CAEA,MAAMjF,eAAepG,kBAAgD,EACnEoC,YAAY4D,MAAM5D,WAAW,EAC/B,EAAE;CAEF,MAAMkE,cAAc7E,eAClB;EACEmB,OAAOyC,MAAMzC;EACbC,OAAOwC,MAAMxC;EACb0D,kBAAkB;CACpB,GACAH,YACF;CAGA,MAAM8F,WAAWlM,iBAAiB;EAChC,MAAMmM,aAAaX,UAAU;EAC7B,MAAMY,WAAWpG,MAAMqG,gBAAgBF,UAAU;EACjD,MAAMG,YAAuC,CAAA;EAE7C,KAAK,IAAIxH,YAAY,GAAGA,YAAYsH,UAAUtH,aAC5CwH,UAAUC,KAAKvG,MAAMwG,eAAe1H,WAAWqH,UAAU,CAAC;EAG5D,OAAOG;CACT,CAAC;CAED,OAAA9G,gBACGZ,8BAA8B4B,UAAQ;EAACC,OAAO+E;EAAS,IAAA9I,WAAA;GAAA,IAAA+J,SAAA9G,eAAA+G,OAAA,GAAAC,SAAAF,OAAA5F,YAAA+F,SAAAD,OAAA9F,YAAAgG,SAAAF,OAAA1F;GAAAO,IAE/C8D,YAAUmB,MAAA;GAAAhF,OAAAgF,QAAA1G,iBACX+F,SAASgB,WAAS;IAAA,KAAA,WAAA;KAAA,OACfxG,YAAY1D,MAAM;IAAC;IAAA,IAC1BC,QAAK;KAAA,OAAEyD,YAAYzD,MAAM;IAAC;GAAA,CAAA,GAAA,OAAA,IAAA;GAAA4E,OAAAkF,QAAA5G,iBAEf+F,SAASiB,WAAW,GAAA,OAAA,IAAA;GAAAhF,OAAA6E,QAAApH,gBAE1BpF,KAAG;IAAA,IAAC4M,OAAI;KAAA,OAAElB,SAASmB;IAAQ;IAAAvK,WACxBwK,eAAG;KAAA,IAAAC,SAAAxH,eAAAyH,OAAA;KAAArF,OAAAoF,QAMAD,GAAG;KAAA3E,QAAAC,QAAA;MAAA,IAAA6E,OAHGhI,MAAMlC,mBAAmB,qCAAmCmK,OAC5DjI,MAAMjC;MAAeiK,SAAA7E,IAAAM,KAAA4B,UAAAyC,QAAA3E,IAAAM,IAAAuE,IAAA;MAAA7E,IAAAQ,IAAA2B,MAAAwC,QAAAG,MAAA9E,IAAAQ,CAAA;MAAA,OAAAR;KAAA,GAAA;MAAAM,GAAAI,KAAAA;MAAAF,GAAAE,KAAAA;KAAA,CAAA;KAAA,OAAAiE;IAAA,EAAA,CAAA;GAI/B,CAAA,CAAA;GAAApF,OAAA8E,QAAArH,gBAKJnF,OAAK;IAAA,IAAC2M,OAAI;KAAA,OAAEd,SAAS;IAAC;IAAAxJ,WACnB4J,WAAWxH,qBAAS;KAAA,IAAAyI,SAAA5H,eAAA6H,OAAA;KAAAzF,OAAAwF,QAAA/H,gBAEjBnF,OAAK;MAAA,IAAC2M,OAAI;OAAA,OAAEV,UAAU;MAAC;MAAA5J,WACpBQ,MAAM6B,aAAQS,gBACblF,MAAI;OAAA,IAACmF,OAAI;QAAA,OAAEvC,KAAK;OAAC;OAAA,IAAEwC,WAAQ;QAAA,OAAAC,eAAA8H,OAAA;OAAA;OAAA,IAAA/K,WAAA;QAAA,OAAA8C,gBACzBX,qCAAqC2B,UAAQ;SAC5CC,cAAc;UACZ3B;UACAC;UACAC,eAAekH,SAAS,CAAC,CAACwB,SAAS;SACrC;SAAE,IAAAhL,WAAA;UAAA,OAED2C,MAAM3C,WAAWQ,KAAK,CAAE;SAAC;QAAA,CAAA;OAAA;MAAA,CAAA;KAG/B,CAAA,CAAA;KAAA,OAAAqK;IAAA,EAAA,CAAA;GAGN,CAAA,CAAA;GAAApE,mBAAA;GAAA,OAAAsD;EAAA;CAAA,CAAA;AAMb;;;;AAKA,SAAgBkB,kBAAkBtI,OAA4C;CAC5E,MAAMW,QAAQf,wBAAwB;CACtC,MAAM2I,oBAAoBzN,WAAWyE,6BAA6B;CAClE,MAAMiJ,eAAe1N,WAAW0E,oCAAoC;CACpE,MAAM,CAACiJ,SAASC,cAAc9N,aAAoC,IAAI;CACtE,MAAM6D,iBAAiB9D,iBACf4N,qBAAqB,QAAQ,CAACxM,YAAYwM,kBAAkB,GAAGvI,MAAMnC,IAAI,CACjF;CACA,MAAM8K,WAAWhO,iBAEb6N,eAAe,KAAK;EAClB/I,WAAW;EACXC,UAAU;EACVC,eAAe;CACjB,CACJ;CAEA,MAAMiJ,WAAWxN,+BACR;EACLyC,MAAMmC,MAAMnC;EACZY,gBAAgBA,eAAe;CACjC,IACAkC,OACA8H,OACF;CACA,MAAM,EAAEI,YAAYjK,cAAcvD,mBAAmB,EACnD0B,YAAY6L,SAAS7L,cAAc6L,SAASpK,cAC9C,EAAE;CAEF,MAAMuC,eAAepG,kBAAgD;EACnEyD,YAAYwK,SAASxK;EACrBC,kBAAkBuK,SAASvK;EAC3BC,gBAAgBsK,SAAStK;EACzBC,WAAWqK,SAASrK;EACpBxB,YAAY6L,SAAS7L;EACrByB,eAAeoK,SAASpK;EACxBvB,WAAW2L,SAAS3L;EACpBwB,gBAAgBmK,SAASnK;EACzBC,SAASkK,SAASlK;EAClBC,WAAWiK,SAASjK;EACpBC,WAAWA,UAAU;EACrBC,cAAc8J,SAAS,CAAC,CAACjJ,aAAa;EACtCZ,aAAa6J,SAAS,CAAC,CAACjJ,aAAa;EACrCX,aAAa4J,SAAS,CAAC,CAAClJ,cAAc;EACtCT,YAAY2J,SAAS,CAAC,CAAClJ,cAAckJ,SAAS,CAAC,CAAChJ;EAChDV,eAAe2J,SAAS3J;CAC1B,EAAE;CAEF,MAAMgC,cAAc7E,eAClB;EACE,IAAIiB,WAAW;GACb,OAAO2C,MAAM3C;EACf;EACAE,OAAOyC,MAAMzC;EACbC,OAAOwC,MAAMxC;EACb0D,kBAAkB;CACpB,GACAH,YACF;CACA,MAAM+H,kBAAkB1M,eACtB;EACEmB,OAAOyC,MAAMb;EACb3B,OAAOwC,MAAMZ;EACb8B,kBAAkB;CACpB,GACAH,YACF;CAGA,MAAMgI,oBAAoB;EACxB,IAAI,OAAO/I,MAAM3C,aAAa,YAC5B,OAAO4D,YAAY+H,eAAe;EAEpC,OAAOJ,SAAS3J;CAClB;CAEA,cAAA;EAAA,IAAAgK,SAAA3I,eAAA4I,OAAA,GAAAC,SAAAF,OAAAzH;EAAAY,OAAA6G,QAAAvI,iBACUkI,SAASQ,WAAS;GAAA,KAAA,WAAA;IAAA,OAASN,gBAAgBvL,MAAM;GAAC;GAAA,IAAEC,QAAK;IAAA,OAAEsL,gBAAgBtL,MAAM;GAAC;EAAA,CAAA,GAAA,OAAA,IAAA;EAAA2E,IAEjFuG,YAAUS,MAAA;EAAA/G,OAAA+G,QAAAzI,iBACXkI,SAASlD,aACTmD,YAAU;GAAA,KAAA,WAAA;IAAA,OACP5H,YAAY1D,MAAM;GAAC;GAAA,IAC1BC,QAAK;IAAA,OAAEyD,YAAYzD,MAAM;GAAC;GAAA,KAAA,mBAAA;IAAA,OACXnB,SAASuM,SAASxK,UAAU;GAAC;GAAA,KAAA,0BAAA;IAAA,OACtB/B,SAASuM,SAASvK,gBAAgB;GAAC;GAAA,KAAA,wBAAA;IAAA,OACrChC,SAASuM,SAAStK,cAAc;GAAC;GAAA,KAAA,kBAAA;IAAA,OACvCjC,SAASuM,SAASrK,SAAS;GAAC;GAAA,KAAA,mBAAA;IAAA,OAC3BlC,SAASuM,SAAS7L,UAAU;GAAC;GAAA,KAAA,sBAAA;IAAA,OAC1BV,SAASuM,SAASpK,aAAa;GAAC;GAAA,KAAA,kBAAA;IAAA,OACpCnC,SAASuM,SAAS3L,SAAS;GAAC;GAAA,KAAA,wBAAA;IAAA,OACtBZ,SAASuM,SAASnK,cAAc;GAAC;GAAA,KAAA,gBAAA;IAAA,OACzCpC,SAASuM,SAASlK,OAAO;GAAC;GAAA,KAAA,kBAAA;IAAA,OACxBrC,SAASuM,SAASjK,SAAS;GAAC;GAAA,KAAA,kBAAA;IAAA,OAC5BtC,SAASuC,UAAU,CAAC;GAAC;EAAA,CAAA,GAAA,OAAA,IAAA;EAAA8D,OAAAyG,QAElCJ,WAAW;EAAAjF,mBAAA;EAAA,OAAAmF;CAAA,EAAA,CAAA;AAIpB;AAE+Ca,eAAA,CAAA,OAAA,CAAA"}
@@ -42,12 +42,78 @@ function useRangeCalendarContext() {
42
42
  * ```
43
43
  */
44
44
  function RangeCalendar(props) {
45
+ const inheritedState = useContext(RangeCalendarContext);
45
46
  const isHydrated = useIsHydrated();
46
47
  return <Show when={isHydrated()} fallback={<div class="solidaria-RangeCalendar solidaria-RangeCalendar--placeholder" aria-hidden="true" />}>
47
- <RangeCalendarInner {...props} />
48
+ <Show when={inheritedState} fallback={<RangeCalendarInner {...props} />}>
49
+ <RangeCalendarWithState state={inheritedState} {...props} />
50
+ </Show>
48
51
  </Show>;
49
52
  }
50
53
  /**
54
+ * RangeCalendar variant that renders against an externally-owned state (from
55
+ * `RangeCalendarContext`) rather than creating its own. Mirrors the single
56
+ * `CalendarWithState`.
57
+ */
58
+ function RangeCalendarWithState(props) {
59
+ const [local, , rest] = splitProps(props, [
60
+ "children",
61
+ "class",
62
+ "style",
63
+ "slot",
64
+ "state",
65
+ "ref"
66
+ ], [
67
+ "value",
68
+ "defaultValue",
69
+ "onChange",
70
+ "minValue",
71
+ "maxValue",
72
+ "isDisabled",
73
+ "isReadOnly",
74
+ "focusedValue",
75
+ "defaultFocusedValue",
76
+ "onFocusChange",
77
+ "locale",
78
+ "createCalendar",
79
+ "isDateUnavailable",
80
+ "visibleMonths",
81
+ "pageBehavior",
82
+ "selectionAlignment",
83
+ "isDateDisabled",
84
+ "validationState",
85
+ "allowsNonContiguousRanges",
86
+ "firstDayOfWeek"
87
+ ]);
88
+ const state = () => props.state;
89
+ const calendarAria = createRangeCalendar(rest, state());
90
+ const renderValues = createMemo(() => ({
91
+ isDisabled: state().isDisabled(),
92
+ isReadOnly: state().isReadOnly(),
93
+ isInvalid: state().isValueInvalid(),
94
+ isDragging: state().isDragging()
95
+ }));
96
+ const renderProps = useRenderProps({
97
+ class: local.class,
98
+ style: local.style,
99
+ defaultClassName: "solidaria-RangeCalendar"
100
+ }, renderValues);
101
+ return <RangeCalendarStateContext.Provider value={state()}>
102
+ <RangeCalendarContext.Provider value={state()}>
103
+ <div {...calendarAria.calendarProps} ref={(el) => assignRef(local.ref, el)} class={renderProps.class()} style={renderProps.style()} data-disabled={dataAttr(state().isDisabled())} data-readonly={dataAttr(state().isReadOnly())} data-invalid={dataAttr(state().isValueInvalid())} data-dragging={dataAttr(state().isDragging())}>
104
+ <VisuallyHidden>
105
+ <h2>{String(calendarAria.calendarProps["aria-label"] ?? "")}</h2>
106
+ </VisuallyHidden>
107
+ {props.children}
108
+ {}
109
+ <VisuallyHidden>
110
+ <button aria-label={String(calendarAria.nextButtonProps["aria-label"] ?? "")} disabled={Boolean(calendarAria.nextButtonProps.disabled)} onClick={() => state().focusNextPage()} tabIndex={-1} />
111
+ </VisuallyHidden>
112
+ </div>
113
+ </RangeCalendarContext.Provider>
114
+ </RangeCalendarStateContext.Provider>;
115
+ }
116
+ /**
51
117
  * Internal RangeCalendar component that renders after client mount.
52
118
  */
53
119
  function RangeCalendarInner(props) {
@@ -99,6 +165,10 @@ function RangeCalendarInner(props) {
99
165
  <h2>{String(calendarAria.calendarProps["aria-label"] ?? "")}</h2>
100
166
  </VisuallyHidden>
101
167
  {props.children}
168
+ {}
169
+ <VisuallyHidden>
170
+ <button aria-label={String(calendarAria.nextButtonProps["aria-label"] ?? "")} disabled={Boolean(calendarAria.nextButtonProps.disabled)} onClick={() => state.focusNextPage()} tabIndex={-1} />
171
+ </VisuallyHidden>
102
172
  </div>
103
173
  </RangeCalendarContext.Provider>
104
174
  </RangeCalendarStateContext.Provider>;
@@ -123,7 +193,7 @@ function RangeCalendarButton(props) {
123
193
  return calendarAria.nextButtonProps;
124
194
  });
125
195
  const isDisabled = createMemo(() => props.isDisabled || Boolean(buttonProps().disabled) || state.isDisabled());
126
- return <button {...buttonProps()} class={props.class ?? "solidaria-RangeCalendarButton"} style={props.style} disabled={isDisabled()}>
196
+ return <button {...buttonProps()} class={props.class ?? "solidaria-RangeCalendarButton"} style={props.style} disabled={isDisabled()} tabindex={isDisabled() ? void 0 : 0}>
127
197
  {props.children}
128
198
  </button>;
129
199
  }