@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
@@ -0,0 +1,116 @@
1
+ import { type JSX, createMemo, splitProps } from "solid-js";
2
+ import { Dynamic } from "solid-js/web";
3
+
4
+ export interface ElementTagProps extends Record<string, unknown> {
5
+ /** The HTML tag name to render. */
6
+ tag: string;
7
+ children?: JSX.Element;
8
+ }
9
+
10
+ /**
11
+ * Renders a string tag as a *statically compiled* element.
12
+ *
13
+ * A drop-in replacement for `<Dynamic component={someString}>`, which is unsafe
14
+ * anywhere that can render after hydration settles. Solid's `createDynamic`
15
+ * string branch calls `getNextElement()` with **no** `template` argument
16
+ * (solid-js 1.9.14, `web/dist/dev.js:771`). `getNextElement(template)` only
17
+ * reaches the registry while `isHydrating()` holds; once `sharedConfig.done` is
18
+ * set — hydration finished, but `sharedConfig.context` still live — it falls
19
+ * through to `return template()` and throws `TypeError: template is not a
20
+ * function`. Any deferred child lands on exactly that path: a `<Show>` that
21
+ * flips, a Suspense resolution, a portal, a container that defers its children.
22
+ *
23
+ * Each branch below is real JSX, so the compiler emits a `template()` of its own
24
+ * and hands it to `getNextElement(template)` — which adopts the SSR node from the
25
+ * registry during hydration and clones the template afterwards. Both phases work.
26
+ *
27
+ * Props other than `tag` are spread through untouched, `children` included, so
28
+ * this matches `<Dynamic>`'s behaviour exactly (`Dynamic` likewise splits only
29
+ * `component` and spreads the rest onto the element).
30
+ */
31
+ export function ElementTag(props: ElementTagProps): JSX.Element {
32
+ const [local, rest] = splitProps(props, ["tag"]);
33
+ // Two memos, layered exactly as `<Dynamic>` layers them, and for the same reason.
34
+ // Reading a single key off a merged-props proxy forces the dynamic spread behind
35
+ // it to evaluate (to settle key precedence), which subscribes the reader to every
36
+ // signal that spread touches. Absorbing that read in `cached` keeps it off the memo
37
+ // below: `cached` re-runs freely, but its *value* only moves when the tag really
38
+ // changes, so the element is rebuilt only then. Inline the read into the memo below
39
+ // instead and any prop change recreates the DOM node — blowing away focus, and
40
+ // looping where an ancestor counts the children it just rendered.
41
+ const cached = createMemo(() => local.tag);
42
+ return createMemo(() => {
43
+ switch (cached()) {
44
+ // Text / inline
45
+ case "span":
46
+ return <span {...rest} />;
47
+ case "a":
48
+ return <a {...rest} />;
49
+ case "p":
50
+ return <p {...rest} />;
51
+ case "label":
52
+ return <label {...rest} />;
53
+ case "strong":
54
+ return <strong {...rest} />;
55
+ case "em":
56
+ return <em {...rest} />;
57
+ case "small":
58
+ return <small {...rest} />;
59
+ // Flow
60
+ case "div":
61
+ return <div {...rest} />;
62
+ case "hr":
63
+ return <hr {...rest} />;
64
+ case "li":
65
+ return <li {...rest} />;
66
+ case "ul":
67
+ return <ul {...rest} />;
68
+ case "ol":
69
+ return <ol {...rest} />;
70
+ case "figure":
71
+ return <figure {...rest} />;
72
+ case "blockquote":
73
+ return <blockquote {...rest} />;
74
+ case "address":
75
+ return <address {...rest} />;
76
+ // Headings
77
+ case "h1":
78
+ return <h1 {...rest} />;
79
+ case "h2":
80
+ return <h2 {...rest} />;
81
+ case "h3":
82
+ return <h3 {...rest} />;
83
+ case "h4":
84
+ return <h4 {...rest} />;
85
+ case "h5":
86
+ return <h5 {...rest} />;
87
+ case "h6":
88
+ return <h6 {...rest} />;
89
+ // Landmarks
90
+ case "main":
91
+ return <main {...rest} />;
92
+ case "nav":
93
+ return <nav {...rest} />;
94
+ case "header":
95
+ return <header {...rest} />;
96
+ case "footer":
97
+ return <footer {...rest} />;
98
+ case "aside":
99
+ return <aside {...rest} />;
100
+ case "section":
101
+ return <section {...rest} />;
102
+ case "article":
103
+ return <article {...rest} />;
104
+ case "form":
105
+ return <form {...rest} />;
106
+ case "search":
107
+ return <search {...rest} />;
108
+ default:
109
+ // A tag no component in this package emits. Kept on `<Dynamic>` rather
110
+ // than hand-built so hydration still adopts the SSR node; it inherits
111
+ // the post-hydration caveat above, which is why every tag the library
112
+ // itself renders is listed explicitly.
113
+ return <Dynamic component={local.tag} {...rest} />;
114
+ }
115
+ }) as unknown as JSX.Element;
116
+ }
package/src/GridList.tsx CHANGED
@@ -383,7 +383,13 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
383
383
  onSelectionChange: stateProps.onSelectionChange,
384
384
  }));
385
385
 
386
- const { gridProps } = createGridList<T, GridCollection<T>>(
386
+ // Keep the aria object (do NOT destructure `gridProps`): its `gridProps` getter
387
+ // returns a memo that recomputes on state changes — chiefly the roving container
388
+ // `tabIndex`, which rolls to -1 once a row takes focus. Destructuring here would
389
+ // freeze the getter at its first value (tabIndex 0) and the roll would never
390
+ // reach the DOM. Read `gridListAria.gridProps` inside `cleanGridProps` instead,
391
+ // mirroring how ListBox consumes `listBoxAria.listBoxProps`.
392
+ const gridListAria = createGridList<T, GridCollection<T>>(
387
393
  () => ({
388
394
  id: ariaProps.id,
389
395
  "aria-label": ariaProps["aria-label"],
@@ -425,7 +431,7 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
425
431
  });
426
432
 
427
433
  const cleanGridProps = () => {
428
- const { ref: _ref1, ...rest } = gridProps as Record<string, unknown>;
434
+ const { ref: _ref1, ...rest } = gridListAria.gridProps as Record<string, unknown>;
429
435
  return rest;
430
436
  };
431
437
  const cleanFocusProps = () => {
package/src/Landmark.tsx CHANGED
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { type JSX, createContext, createMemo, createSignal, splitProps } from "solid-js";
9
- import { Dynamic } from "solid-js/web";
9
+ import { ElementTag } from "./ElementTag";
10
10
  import {
11
11
  createLandmark,
12
12
  getLandmarkController,
@@ -147,8 +147,8 @@ export function Landmark(props: LandmarkProps): JSX.Element {
147
147
  const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));
148
148
 
149
149
  return (
150
- <Dynamic
151
- component={elementType()}
150
+ <ElementTag
151
+ tag={elementType()}
152
152
  ref={setRef}
153
153
  {...domProps()}
154
154
  {...landmarkAria.landmarkProps}
@@ -157,7 +157,7 @@ export function Landmark(props: LandmarkProps): JSX.Element {
157
157
  slot={local.slot}
158
158
  >
159
159
  {props.children}
160
- </Dynamic>
160
+ </ElementTag>
161
161
  );
162
162
  }
163
163
 
package/src/Link.tsx CHANGED
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { type JSX, type ParentProps, createContext, createMemo, splitProps } from "solid-js";
9
- import { Dynamic } from "solid-js/web";
9
+ import { ElementTag } from "./ElementTag";
10
10
  import {
11
11
  createLink,
12
12
  createFocusRing,
@@ -241,8 +241,8 @@ export function Link(props: ParentProps<LinkProps>): JSX.Element {
241
241
  };
242
242
 
243
243
  return (
244
- <Dynamic
245
- component={elementType()}
244
+ <ElementTag
245
+ tag={elementType()}
246
246
  {...domProps()}
247
247
  {...cleanLinkProps()}
248
248
  {...cleanHoverProps()}
@@ -261,6 +261,6 @@ export function Link(props: ParentProps<LinkProps>): JSX.Element {
261
261
  data-disabled={ariaProps.isDisabled || undefined}
262
262
  >
263
263
  {renderProps.renderChildren()}
264
- </Dynamic>
264
+ </ElementTag>
265
265
  );
266
266
  }