@proyecto-viviana/solidaria-components 0.2.9 → 0.3.1

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 (222) hide show
  1. package/README.md +39 -272
  2. package/dist/ActionBar.d.ts +21 -13
  3. package/dist/ActionBar.d.ts.map +1 -1
  4. package/dist/ActionGroup.d.ts +8 -8
  5. package/dist/ActionGroup.d.ts.map +1 -1
  6. package/dist/Alert.d.ts +5 -5
  7. package/dist/Alert.d.ts.map +1 -1
  8. package/dist/Autocomplete.d.ts +5 -5
  9. package/dist/Autocomplete.d.ts.map +1 -1
  10. package/dist/Breadcrumbs.d.ts +18 -7
  11. package/dist/Breadcrumbs.d.ts.map +1 -1
  12. package/dist/Button.d.ts +24 -5
  13. package/dist/Button.d.ts.map +1 -1
  14. package/dist/Calendar.d.ts +38 -7
  15. package/dist/Calendar.d.ts.map +1 -1
  16. package/dist/Checkbox.d.ts +32 -7
  17. package/dist/Checkbox.d.ts.map +1 -1
  18. package/dist/Collection.d.ts +19 -14
  19. package/dist/Collection.d.ts.map +1 -1
  20. package/dist/Color.d.ts +103 -14
  21. package/dist/Color.d.ts.map +1 -1
  22. package/dist/ColorEditor.d.ts +6 -6
  23. package/dist/ColorEditor.d.ts.map +1 -1
  24. package/dist/ComboBox.d.ts +85 -19
  25. package/dist/ComboBox.d.ts.map +1 -1
  26. package/dist/ContextualHelpTrigger.d.ts +2 -2
  27. package/dist/ContextualHelpTrigger.d.ts.map +1 -1
  28. package/dist/DateField.d.ts +8 -6
  29. package/dist/DateField.d.ts.map +1 -1
  30. package/dist/DatePicker.d.ts +53 -22
  31. package/dist/DatePicker.d.ts.map +1 -1
  32. package/dist/DateRangePickerContext.d.ts +30 -0
  33. package/dist/DateRangePickerContext.d.ts.map +1 -0
  34. package/dist/Dialog.d.ts +5 -5
  35. package/dist/Dialog.d.ts.map +1 -1
  36. package/dist/Disclosure.d.ts +23 -5
  37. package/dist/Disclosure.d.ts.map +1 -1
  38. package/dist/DragAndDrop.d.ts +6 -6
  39. package/dist/DragAndDrop.d.ts.map +1 -1
  40. package/dist/DragPreview.d.ts +2 -2
  41. package/dist/DragPreview.d.ts.map +1 -1
  42. package/dist/DropZone.d.ts +4 -4
  43. package/dist/DropZone.d.ts.map +1 -1
  44. package/dist/FieldError.d.ts +9 -5
  45. package/dist/FieldError.d.ts.map +1 -1
  46. package/dist/FileTrigger.d.ts +3 -3
  47. package/dist/FileTrigger.d.ts.map +1 -1
  48. package/dist/Focusable.d.ts +2 -2
  49. package/dist/Focusable.d.ts.map +1 -1
  50. package/dist/Form.d.ts +18 -4
  51. package/dist/Form.d.ts.map +1 -1
  52. package/dist/GridList.d.ts +32 -12
  53. package/dist/GridList.d.ts.map +1 -1
  54. package/dist/HiddenDateInput.d.ts +26 -0
  55. package/dist/HiddenDateInput.d.ts.map +1 -0
  56. package/dist/HiddenTimeInput.d.ts +25 -0
  57. package/dist/HiddenTimeInput.d.ts.map +1 -0
  58. package/dist/Icon.d.ts +5 -5
  59. package/dist/Icon.d.ts.map +1 -1
  60. package/dist/Keyboard.d.ts +1 -1
  61. package/dist/Landmark.d.ts +3 -3
  62. package/dist/Landmark.d.ts.map +1 -1
  63. package/dist/Link.d.ts +10 -4
  64. package/dist/Link.d.ts.map +1 -1
  65. package/dist/ListBox.d.ts +32 -12
  66. package/dist/ListBox.d.ts.map +1 -1
  67. package/dist/ListDropTargetDelegate.d.ts +6 -6
  68. package/dist/ListDropTargetDelegate.d.ts.map +1 -1
  69. package/dist/Menu.d.ts +65 -14
  70. package/dist/Menu.d.ts.map +1 -1
  71. package/dist/Meter.d.ts +3 -3
  72. package/dist/Meter.d.ts.map +1 -1
  73. package/dist/Modal.d.ts +5 -5
  74. package/dist/Modal.d.ts.map +1 -1
  75. package/dist/NumberField.d.ts +8 -12
  76. package/dist/NumberField.d.ts.map +1 -1
  77. package/dist/Popover.d.ts +28 -5
  78. package/dist/Popover.d.ts.map +1 -1
  79. package/dist/Pressable.d.ts +2 -2
  80. package/dist/Pressable.d.ts.map +1 -1
  81. package/dist/ProgressBar.d.ts +5 -3
  82. package/dist/ProgressBar.d.ts.map +1 -1
  83. package/dist/RadioGroup.d.ts +43 -9
  84. package/dist/RadioGroup.d.ts.map +1 -1
  85. package/dist/RangeCalendar.d.ts +34 -7
  86. package/dist/RangeCalendar.d.ts.map +1 -1
  87. package/dist/RouterProvider.d.ts +2 -2
  88. package/dist/RouterProvider.d.ts.map +1 -1
  89. package/dist/SearchField.d.ts +23 -20
  90. package/dist/SearchField.d.ts.map +1 -1
  91. package/dist/Select.d.ts +41 -11
  92. package/dist/Select.d.ts.map +1 -1
  93. package/dist/SelectionIndicator.d.ts +3 -3
  94. package/dist/SelectionIndicator.d.ts.map +1 -1
  95. package/dist/Separator.d.ts +9 -3
  96. package/dist/Separator.d.ts.map +1 -1
  97. package/dist/SharedElementTransition.d.ts +6 -4
  98. package/dist/SharedElementTransition.d.ts.map +1 -1
  99. package/dist/Slider.d.ts +12 -8
  100. package/dist/Slider.d.ts.map +1 -1
  101. package/dist/StepList.d.ts +90 -0
  102. package/dist/StepList.d.ts.map +1 -0
  103. package/dist/Switch.d.ts +11 -5
  104. package/dist/Switch.d.ts.map +1 -1
  105. package/dist/Table.d.ts +187 -23
  106. package/dist/Table.d.ts.map +1 -1
  107. package/dist/Tabs.d.ts +45 -9
  108. package/dist/Tabs.d.ts.map +1 -1
  109. package/dist/TagGroup.d.ts +12 -10
  110. package/dist/TagGroup.d.ts.map +1 -1
  111. package/dist/Text.d.ts +2 -2
  112. package/dist/TextField.d.ts +15 -11
  113. package/dist/TextField.d.ts.map +1 -1
  114. package/dist/TimeField.d.ts +6 -6
  115. package/dist/TimeField.d.ts.map +1 -1
  116. package/dist/Toast.d.ts +29 -14
  117. package/dist/Toast.d.ts.map +1 -1
  118. package/dist/ToggleButton.d.ts +11 -5
  119. package/dist/ToggleButton.d.ts.map +1 -1
  120. package/dist/ToggleButtonGroup.d.ts +7 -7
  121. package/dist/ToggleButtonGroup.d.ts.map +1 -1
  122. package/dist/Toolbar.d.ts +7 -3
  123. package/dist/Toolbar.d.ts.map +1 -1
  124. package/dist/Tooltip.d.ts +50 -8
  125. package/dist/Tooltip.d.ts.map +1 -1
  126. package/dist/Tree.d.ts +66 -17
  127. package/dist/Tree.d.ts.map +1 -1
  128. package/dist/Virtualizer.d.ts +12 -12
  129. package/dist/Virtualizer.d.ts.map +1 -1
  130. package/dist/VirtualizerLayouts.d.ts +2 -2
  131. package/dist/VirtualizerLayouts.d.ts.map +1 -1
  132. package/dist/VisuallyHidden.d.ts +1 -1
  133. package/dist/VisuallyHidden.d.ts.map +1 -1
  134. package/dist/contexts.d.ts +5 -1
  135. package/dist/contexts.d.ts.map +1 -1
  136. package/dist/index.d.ts +73 -71
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +23253 -18564
  139. package/dist/index.js.map +1 -1
  140. package/dist/index.jsx +18116 -0
  141. package/dist/index.jsx.map +1 -0
  142. package/dist/useDragAndDrop.d.ts +13 -13
  143. package/dist/useDragAndDrop.d.ts.map +1 -1
  144. package/dist/utils.d.ts +2 -2
  145. package/dist/utils.d.ts.map +1 -1
  146. package/dist/virtualizer/Layout.d.ts +1 -1
  147. package/dist/virtualizer/Layout.d.ts.map +1 -1
  148. package/package.json +31 -32
  149. package/src/ActionBar.tsx +75 -72
  150. package/src/ActionGroup.tsx +53 -61
  151. package/src/Alert.tsx +17 -42
  152. package/src/Autocomplete.tsx +39 -44
  153. package/src/Breadcrumbs.tsx +149 -80
  154. package/src/Button.tsx +267 -70
  155. package/src/Calendar.tsx +218 -138
  156. package/src/Checkbox.tsx +413 -121
  157. package/src/Collection.tsx +67 -58
  158. package/src/Color.tsx +803 -380
  159. package/src/ColorEditor.tsx +131 -149
  160. package/src/ComboBox.tsx +414 -249
  161. package/src/ContextualHelpTrigger.tsx +86 -74
  162. package/src/DateField.tsx +185 -91
  163. package/src/DatePicker.tsx +524 -213
  164. package/src/DateRangePickerContext.tsx +44 -0
  165. package/src/Dialog.tsx +156 -118
  166. package/src/Disclosure.tsx +127 -80
  167. package/src/DragAndDrop.tsx +60 -54
  168. package/src/DragPreview.tsx +13 -11
  169. package/src/DropZone.tsx +42 -22
  170. package/src/FieldError.tsx +45 -23
  171. package/src/FileTrigger.tsx +19 -19
  172. package/src/Focusable.tsx +21 -24
  173. package/src/Form.tsx +71 -16
  174. package/src/GridList.tsx +273 -197
  175. package/src/HiddenDateInput.tsx +153 -0
  176. package/src/HiddenTimeInput.tsx +133 -0
  177. package/src/Icon.tsx +22 -43
  178. package/src/Keyboard.tsx +3 -3
  179. package/src/Landmark.tsx +37 -63
  180. package/src/Link.tsx +125 -75
  181. package/src/ListBox.tsx +332 -233
  182. package/src/ListDropTargetDelegate.ts +81 -80
  183. package/src/Menu.tsx +1023 -274
  184. package/src/Meter.tsx +38 -56
  185. package/src/Modal.tsx +251 -176
  186. package/src/NumberField.tsx +139 -143
  187. package/src/Popover.tsx +396 -234
  188. package/src/Pressable.tsx +21 -21
  189. package/src/ProgressBar.tsx +48 -57
  190. package/src/RadioGroup.tsx +524 -122
  191. package/src/RangeCalendar.tsx +157 -90
  192. package/src/RouterProvider.tsx +30 -47
  193. package/src/SearchField.tsx +362 -143
  194. package/src/Select.tsx +656 -233
  195. package/src/SelectionIndicator.tsx +18 -15
  196. package/src/Separator.tsx +47 -49
  197. package/src/SharedElementTransition.tsx +103 -97
  198. package/src/Slider.tsx +138 -98
  199. package/src/StepList.tsx +272 -0
  200. package/src/Switch.tsx +93 -46
  201. package/src/Table.tsx +1308 -342
  202. package/src/Tabs.tsx +324 -103
  203. package/src/TagGroup.tsx +139 -126
  204. package/src/Text.tsx +3 -3
  205. package/src/TextField.tsx +389 -79
  206. package/src/TimeField.tsx +136 -76
  207. package/src/Toast.tsx +216 -158
  208. package/src/ToggleButton.tsx +47 -37
  209. package/src/ToggleButtonGroup.tsx +39 -34
  210. package/src/Toolbar.tsx +54 -69
  211. package/src/Tooltip.tsx +387 -119
  212. package/src/Tree.tsx +651 -368
  213. package/src/Virtualizer.tsx +208 -180
  214. package/src/VirtualizerLayouts.ts +45 -30
  215. package/src/VisuallyHidden.tsx +19 -19
  216. package/src/contexts.ts +29 -37
  217. package/src/index.ts +110 -195
  218. package/src/useDragAndDrop.ts +87 -71
  219. package/src/utils.tsx +49 -60
  220. package/src/virtualizer/Layout.ts +14 -22
  221. package/dist/index.ssr.js +0 -16996
  222. package/dist/index.ssr.js.map +0 -1
package/src/Link.tsx CHANGED
@@ -5,21 +5,15 @@
5
5
  * Port of react-aria-components/src/Link.tsx
6
6
  */
7
7
 
8
- import {
9
- type JSX,
10
- type ParentProps,
11
- createContext,
12
- createMemo,
13
- splitProps,
14
- } from 'solid-js';
15
- import { Dynamic } from 'solid-js/web';
8
+ import { type JSX, type ParentProps, createContext, createMemo, splitProps } from "solid-js";
9
+ import { Dynamic } from "solid-js/web";
16
10
  import {
17
11
  createLink,
18
12
  createFocusRing,
19
13
  createHover,
20
14
  type AriaLinkProps,
21
15
  type HoverEvents,
22
- } from '@proyecto-viviana/solidaria';
16
+ } from "@proyecto-viviana/solidaria";
23
17
  import {
24
18
  type RenderChildren,
25
19
  type ClassNameOrFunction,
@@ -27,12 +21,19 @@ import {
27
21
  type SlotProps,
28
22
  useRenderProps,
29
23
  filterDOMProps,
30
- } from './utils';
31
- import { handleLinkClick, useRouter } from './RouterProvider';
24
+ } from "./utils";
25
+ import { handleLinkClick, useRouter } from "./RouterProvider";
26
+
27
+ type RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;
32
28
 
33
- // ============================================
34
- // TYPES
35
- // ============================================
29
+ function assignRef<T>(ref: RefLike<T>, el: T): void {
30
+ if (!ref) return;
31
+ if (typeof ref === "function") {
32
+ ref(el);
33
+ } else {
34
+ ref.current = el;
35
+ }
36
+ }
36
37
 
37
38
  export interface LinkRenderProps {
38
39
  /** Whether the link is the current item within a list. */
@@ -49,28 +50,19 @@ export interface LinkRenderProps {
49
50
  isDisabled: boolean;
50
51
  }
51
52
 
52
- export interface LinkProps
53
- extends Omit<AriaLinkProps, 'elementType'>,
54
- HoverEvents,
55
- SlotProps {
53
+ export interface LinkProps extends Omit<AriaLinkProps, "elementType">, HoverEvents, SlotProps {
56
54
  /** The children of the component. A function may be provided to receive render props. */
57
55
  children?: RenderChildren<LinkRenderProps>;
58
56
  /** The CSS className for the element. */
59
57
  class?: ClassNameOrFunction<LinkRenderProps>;
60
58
  /** The inline style for the element. */
61
59
  style?: StyleOrFunction<LinkRenderProps>;
60
+ /** Ref for the underlying link element. */
61
+ ref?: RefLike<HTMLElement>;
62
62
  }
63
63
 
64
- // ============================================
65
- // CONTEXT
66
- // ============================================
67
-
68
64
  export const LinkContext = createContext<LinkProps | null>(null);
69
65
 
70
- // ============================================
71
- // LINK COMPONENT
72
- // ============================================
73
-
74
66
  /**
75
67
  * A link allows a user to navigate to another page or resource within a web page
76
68
  * or application.
@@ -91,66 +83,124 @@ export const LinkContext = createContext<LinkProps | null>(null);
91
83
  */
92
84
  export function Link(props: ParentProps<LinkProps>): JSX.Element {
93
85
  const [local, ariaProps] = splitProps(props, [
94
- 'children',
95
- 'class',
96
- 'style',
97
- 'slot',
98
- 'onHoverStart',
99
- 'onHoverEnd',
100
- 'onHoverChange',
86
+ "children",
87
+ "class",
88
+ "style",
89
+ "ref",
90
+ "slot",
91
+ "onHoverStart",
92
+ "onHoverEnd",
93
+ "onHoverChange",
101
94
  ]);
102
95
  const router = useRouter();
103
- const resolvedHref = createMemo(() => ariaProps.href ? router.useHref(ariaProps.href) : undefined);
96
+ const resolvedHref = createMemo(() =>
97
+ ariaProps.href ? router.useHref(ariaProps.href) : undefined,
98
+ );
104
99
 
105
- // Determine element type - use 'a' if href is provided and not disabled
106
100
  const elementType = () => {
107
101
  if (ariaProps.href && !ariaProps.isDisabled) {
108
- return 'a';
102
+ return "a";
109
103
  }
110
- return 'span';
104
+ return "span";
111
105
  };
112
106
 
113
- // Create link aria props
114
107
  const linkAria = createLink({
115
- get elementType() { return elementType(); },
116
- get isDisabled() { return ariaProps.isDisabled; },
117
- get href() { return resolvedHref(); },
118
- get hrefLang() { return ariaProps.hrefLang; },
119
- get target() { return ariaProps.target; },
120
- get rel() { return ariaProps.rel; },
121
- get download() { return ariaProps.download; },
122
- get ping() { return ariaProps.ping; },
123
- get referrerPolicy() { return ariaProps.referrerPolicy; },
124
- get onPress() { return ariaProps.onPress; },
125
- get onPressStart() { return ariaProps.onPressStart; },
126
- get onPressEnd() { return ariaProps.onPressEnd; },
127
- get onClick() { return ariaProps.onClick; },
128
- get onFocus() { return ariaProps.onFocus; },
129
- get onBlur() { return ariaProps.onBlur; },
130
- get onFocusChange() { return ariaProps.onFocusChange; },
131
- get onKeyDown() { return ariaProps.onKeyDown; },
132
- get onKeyUp() { return ariaProps.onKeyUp; },
133
- get autoFocus() { return ariaProps.autoFocus; },
134
- get 'aria-current'() { return ariaProps['aria-current']; },
135
- get 'aria-label'() { return ariaProps['aria-label']; },
136
- get 'aria-labelledby'() { return ariaProps['aria-labelledby']; },
137
- get 'aria-describedby'() { return ariaProps['aria-describedby']; },
108
+ get elementType() {
109
+ return elementType();
110
+ },
111
+ get isDisabled() {
112
+ return ariaProps.isDisabled;
113
+ },
114
+ get href() {
115
+ return resolvedHref();
116
+ },
117
+ get hrefLang() {
118
+ return ariaProps.hrefLang;
119
+ },
120
+ get target() {
121
+ return ariaProps.target;
122
+ },
123
+ get rel() {
124
+ return ariaProps.rel;
125
+ },
126
+ get download() {
127
+ return ariaProps.download;
128
+ },
129
+ get ping() {
130
+ return ariaProps.ping;
131
+ },
132
+ get referrerPolicy() {
133
+ return ariaProps.referrerPolicy;
134
+ },
135
+ get onPress() {
136
+ return ariaProps.onPress;
137
+ },
138
+ get onPressStart() {
139
+ return ariaProps.onPressStart;
140
+ },
141
+ get onPressEnd() {
142
+ return ariaProps.onPressEnd;
143
+ },
144
+ get onPressUp() {
145
+ return ariaProps.onPressUp;
146
+ },
147
+ get onPressChange() {
148
+ return ariaProps.onPressChange;
149
+ },
150
+ get onClick() {
151
+ return ariaProps.onClick;
152
+ },
153
+ get onFocus() {
154
+ return ariaProps.onFocus;
155
+ },
156
+ get onBlur() {
157
+ return ariaProps.onBlur;
158
+ },
159
+ get onFocusChange() {
160
+ return ariaProps.onFocusChange;
161
+ },
162
+ get onKeyDown() {
163
+ return ariaProps.onKeyDown;
164
+ },
165
+ get onKeyUp() {
166
+ return ariaProps.onKeyUp;
167
+ },
168
+ get autoFocus() {
169
+ return ariaProps.autoFocus;
170
+ },
171
+ get "aria-current"() {
172
+ return ariaProps["aria-current"];
173
+ },
174
+ get "aria-label"() {
175
+ return ariaProps["aria-label"];
176
+ },
177
+ get "aria-labelledby"() {
178
+ return ariaProps["aria-labelledby"];
179
+ },
180
+ get "aria-describedby"() {
181
+ return ariaProps["aria-describedby"];
182
+ },
138
183
  });
139
184
 
140
- // Create focus ring
141
185
  const { isFocused, isFocusVisible, focusProps } = createFocusRing();
142
186
 
143
- // Create hover
144
187
  const { isHovered, hoverProps } = createHover({
145
- get isDisabled() { return ariaProps.isDisabled ?? false; },
146
- get onHoverStart() { return local.onHoverStart; },
147
- get onHoverEnd() { return local.onHoverEnd; },
148
- get onHoverChange() { return local.onHoverChange; },
188
+ get isDisabled() {
189
+ return ariaProps.isDisabled ?? false;
190
+ },
191
+ get onHoverStart() {
192
+ return local.onHoverStart;
193
+ },
194
+ get onHoverEnd() {
195
+ return local.onHoverEnd;
196
+ },
197
+ get onHoverChange() {
198
+ return local.onHoverChange;
199
+ },
149
200
  });
150
201
 
151
- // Render props values
152
202
  const renderValues = createMemo<LinkRenderProps>(() => ({
153
- isCurrent: !!ariaProps['aria-current'],
203
+ isCurrent: !!ariaProps["aria-current"],
154
204
  isHovered: isHovered(),
155
205
  isPressed: linkAria.isPressed(),
156
206
  isFocused: isFocused(),
@@ -158,21 +208,18 @@ export function Link(props: ParentProps<LinkProps>): JSX.Element {
158
208
  isDisabled: ariaProps.isDisabled ?? false,
159
209
  }));
160
210
 
161
- // Resolve render props
162
211
  const renderProps = useRenderProps(
163
212
  {
164
213
  children: props.children,
165
214
  class: local.class,
166
215
  style: local.style,
167
- defaultClassName: 'solidaria-Link',
216
+ defaultClassName: "solidaria-Link",
168
217
  },
169
- renderValues
218
+ renderValues,
170
219
  );
171
220
 
172
- // Filter DOM props
173
221
  const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));
174
222
 
175
- // Remove ref from spread props to avoid type conflicts
176
223
  const cleanLinkProps = () => {
177
224
  const { ref: _ref1, ...rest } = linkAria.linkProps as Record<string, unknown>;
178
225
  return rest;
@@ -198,6 +245,9 @@ export function Link(props: ParentProps<LinkProps>): JSX.Element {
198
245
  {...cleanLinkProps()}
199
246
  {...cleanHoverProps()}
200
247
  {...cleanFocusProps()}
248
+ ref={(element: HTMLElement) => {
249
+ assignRef(local.ref, element);
250
+ }}
201
251
  onClick={onLinkClick}
202
252
  class={renderProps.class()}
203
253
  style={renderProps.style()}
@@ -205,7 +255,7 @@ export function Link(props: ParentProps<LinkProps>): JSX.Element {
205
255
  data-pressed={linkAria.isPressed() || undefined}
206
256
  data-focused={isFocused() || undefined}
207
257
  data-focus-visible={isFocusVisible() || undefined}
208
- data-current={!!ariaProps['aria-current'] || undefined}
258
+ data-current={!!ariaProps["aria-current"] || undefined}
209
259
  data-disabled={ariaProps.isDisabled || undefined}
210
260
  >
211
261
  {renderProps.renderChildren()}