@proyecto-viviana/solidaria-components 0.2.5 → 0.3.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 (225) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -272
  3. package/dist/ActionBar.d.ts +79 -0
  4. package/dist/ActionBar.d.ts.map +1 -0
  5. package/dist/ActionGroup.d.ts +74 -0
  6. package/dist/ActionGroup.d.ts.map +1 -0
  7. package/dist/Alert.d.ts +70 -0
  8. package/dist/Alert.d.ts.map +1 -0
  9. package/dist/Autocomplete.d.ts +5 -5
  10. package/dist/Autocomplete.d.ts.map +1 -1
  11. package/dist/Breadcrumbs.d.ts +27 -8
  12. package/dist/Breadcrumbs.d.ts.map +1 -1
  13. package/dist/Button.d.ts +28 -5
  14. package/dist/Button.d.ts.map +1 -1
  15. package/dist/Calendar.d.ts +51 -7
  16. package/dist/Calendar.d.ts.map +1 -1
  17. package/dist/Checkbox.d.ts +33 -8
  18. package/dist/Checkbox.d.ts.map +1 -1
  19. package/dist/Collection.d.ts +130 -0
  20. package/dist/Collection.d.ts.map +1 -0
  21. package/dist/Color.d.ts +210 -9
  22. package/dist/Color.d.ts.map +1 -1
  23. package/dist/ColorEditor.d.ts +42 -0
  24. package/dist/ColorEditor.d.ts.map +1 -0
  25. package/dist/ComboBox.d.ts +146 -16
  26. package/dist/ComboBox.d.ts.map +1 -1
  27. package/dist/ContextualHelpTrigger.d.ts +40 -0
  28. package/dist/ContextualHelpTrigger.d.ts.map +1 -0
  29. package/dist/DateField.d.ts +35 -8
  30. package/dist/DateField.d.ts.map +1 -1
  31. package/dist/DatePicker.d.ts +101 -5
  32. package/dist/DatePicker.d.ts.map +1 -1
  33. package/dist/DateRangePickerContext.d.ts +30 -0
  34. package/dist/DateRangePickerContext.d.ts.map +1 -0
  35. package/dist/Dialog.d.ts +5 -5
  36. package/dist/Dialog.d.ts.map +1 -1
  37. package/dist/Disclosure.d.ts +25 -5
  38. package/dist/Disclosure.d.ts.map +1 -1
  39. package/dist/DragAndDrop.d.ts +80 -0
  40. package/dist/DragAndDrop.d.ts.map +1 -0
  41. package/dist/DragPreview.d.ts +14 -0
  42. package/dist/DragPreview.d.ts.map +1 -0
  43. package/dist/DropZone.d.ts +27 -0
  44. package/dist/DropZone.d.ts.map +1 -0
  45. package/dist/FieldError.d.ts +27 -0
  46. package/dist/FieldError.d.ts.map +1 -0
  47. package/dist/FileTrigger.d.ts +26 -0
  48. package/dist/FileTrigger.d.ts.map +1 -0
  49. package/dist/Focusable.d.ts +27 -0
  50. package/dist/Focusable.d.ts.map +1 -0
  51. package/dist/Form.d.ts +41 -0
  52. package/dist/Form.d.ts.map +1 -0
  53. package/dist/GridList.d.ts +69 -10
  54. package/dist/GridList.d.ts.map +1 -1
  55. package/dist/HiddenDateInput.d.ts +26 -0
  56. package/dist/HiddenDateInput.d.ts.map +1 -0
  57. package/dist/HiddenTimeInput.d.ts +25 -0
  58. package/dist/HiddenTimeInput.d.ts.map +1 -0
  59. package/dist/Icon.d.ts +57 -0
  60. package/dist/Icon.d.ts.map +1 -0
  61. package/dist/Keyboard.d.ts +13 -0
  62. package/dist/Keyboard.d.ts.map +1 -0
  63. package/dist/Landmark.d.ts +3 -3
  64. package/dist/Landmark.d.ts.map +1 -1
  65. package/dist/Link.d.ts +10 -4
  66. package/dist/Link.d.ts.map +1 -1
  67. package/dist/ListBox.d.ts +73 -11
  68. package/dist/ListBox.d.ts.map +1 -1
  69. package/dist/ListDropTargetDelegate.d.ts +38 -0
  70. package/dist/ListDropTargetDelegate.d.ts.map +1 -0
  71. package/dist/Menu.d.ts +79 -10
  72. package/dist/Menu.d.ts.map +1 -1
  73. package/dist/Meter.d.ts +4 -4
  74. package/dist/Meter.d.ts.map +1 -1
  75. package/dist/Modal.d.ts +6 -4
  76. package/dist/Modal.d.ts.map +1 -1
  77. package/dist/NumberField.d.ts +10 -12
  78. package/dist/NumberField.d.ts.map +1 -1
  79. package/dist/Popover.d.ts +32 -7
  80. package/dist/Popover.d.ts.map +1 -1
  81. package/dist/Pressable.d.ts +27 -0
  82. package/dist/Pressable.d.ts.map +1 -0
  83. package/dist/ProgressBar.d.ts +6 -4
  84. package/dist/ProgressBar.d.ts.map +1 -1
  85. package/dist/RadioGroup.d.ts +43 -9
  86. package/dist/RadioGroup.d.ts.map +1 -1
  87. package/dist/RangeCalendar.d.ts +39 -7
  88. package/dist/RangeCalendar.d.ts.map +1 -1
  89. package/dist/RouterProvider.d.ts +75 -0
  90. package/dist/RouterProvider.d.ts.map +1 -0
  91. package/dist/SearchField.d.ts +23 -21
  92. package/dist/SearchField.d.ts.map +1 -1
  93. package/dist/Select.d.ts +48 -7
  94. package/dist/Select.d.ts.map +1 -1
  95. package/dist/SelectionIndicator.d.ts +30 -0
  96. package/dist/SelectionIndicator.d.ts.map +1 -0
  97. package/dist/Separator.d.ts +9 -3
  98. package/dist/Separator.d.ts.map +1 -1
  99. package/dist/SharedElementTransition.d.ts +41 -0
  100. package/dist/SharedElementTransition.d.ts.map +1 -0
  101. package/dist/Slider.d.ts +15 -8
  102. package/dist/Slider.d.ts.map +1 -1
  103. package/dist/StepList.d.ts +90 -0
  104. package/dist/StepList.d.ts.map +1 -0
  105. package/dist/Switch.d.ts +11 -5
  106. package/dist/Switch.d.ts.map +1 -1
  107. package/dist/Table.d.ts +222 -19
  108. package/dist/Table.d.ts.map +1 -1
  109. package/dist/Tabs.d.ts +47 -10
  110. package/dist/Tabs.d.ts.map +1 -1
  111. package/dist/TagGroup.d.ts +22 -10
  112. package/dist/TagGroup.d.ts.map +1 -1
  113. package/dist/Text.d.ts +10 -0
  114. package/dist/Text.d.ts.map +1 -0
  115. package/dist/TextField.d.ts +19 -11
  116. package/dist/TextField.d.ts.map +1 -1
  117. package/dist/TimeField.d.ts +32 -7
  118. package/dist/TimeField.d.ts.map +1 -1
  119. package/dist/Toast.d.ts +29 -14
  120. package/dist/Toast.d.ts.map +1 -1
  121. package/dist/ToggleButton.d.ts +36 -0
  122. package/dist/ToggleButton.d.ts.map +1 -0
  123. package/dist/ToggleButtonGroup.d.ts +33 -0
  124. package/dist/ToggleButtonGroup.d.ts.map +1 -0
  125. package/dist/Toolbar.d.ts +7 -3
  126. package/dist/Toolbar.d.ts.map +1 -1
  127. package/dist/Tooltip.d.ts +58 -7
  128. package/dist/Tooltip.d.ts.map +1 -1
  129. package/dist/Tree.d.ts +102 -11
  130. package/dist/Tree.d.ts.map +1 -1
  131. package/dist/Virtualizer.d.ts +61 -0
  132. package/dist/Virtualizer.d.ts.map +1 -0
  133. package/dist/VirtualizerLayouts.d.ts +82 -0
  134. package/dist/VirtualizerLayouts.d.ts.map +1 -0
  135. package/dist/VisuallyHidden.d.ts +4 -2
  136. package/dist/VisuallyHidden.d.ts.map +1 -1
  137. package/dist/contexts.d.ts +6 -1
  138. package/dist/contexts.d.ts.map +1 -1
  139. package/dist/index.d.ts +73 -39
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +23342 -10644
  142. package/dist/index.js.map +1 -7
  143. package/dist/index.jsx +18110 -0
  144. package/dist/index.jsx.map +1 -0
  145. package/dist/useDragAndDrop.d.ts +93 -0
  146. package/dist/useDragAndDrop.d.ts.map +1 -0
  147. package/dist/utils.d.ts +8 -2
  148. package/dist/utils.d.ts.map +1 -1
  149. package/dist/virtualizer/Layout.d.ts +79 -0
  150. package/dist/virtualizer/Layout.d.ts.map +1 -0
  151. package/package.json +33 -32
  152. package/src/ActionBar.tsx +251 -0
  153. package/src/ActionGroup.tsx +277 -0
  154. package/src/Alert.tsx +152 -0
  155. package/src/Autocomplete.tsx +39 -44
  156. package/src/Breadcrumbs.tsx +227 -72
  157. package/src/Button.tsx +315 -74
  158. package/src/Calendar.tsx +347 -141
  159. package/src/Checkbox.tsx +414 -123
  160. package/src/Collection.tsx +350 -0
  161. package/src/Color.tsx +1325 -284
  162. package/src/ColorEditor.tsx +213 -0
  163. package/src/ComboBox.tsx +644 -245
  164. package/src/ContextualHelpTrigger.tsx +195 -0
  165. package/src/DateField.tsx +274 -106
  166. package/src/DatePicker.tsx +892 -111
  167. package/src/DateRangePickerContext.tsx +44 -0
  168. package/src/Dialog.tsx +173 -104
  169. package/src/Disclosure.tsx +158 -105
  170. package/src/DragAndDrop.tsx +340 -0
  171. package/src/DragPreview.tsx +47 -0
  172. package/src/DropZone.tsx +233 -0
  173. package/src/FieldError.tsx +89 -0
  174. package/src/FileTrigger.tsx +83 -0
  175. package/src/Focusable.tsx +103 -0
  176. package/src/Form.tsx +140 -0
  177. package/src/GridList.tsx +542 -128
  178. package/src/HiddenDateInput.tsx +153 -0
  179. package/src/HiddenTimeInput.tsx +133 -0
  180. package/src/Icon.tsx +133 -0
  181. package/src/Keyboard.tsx +26 -0
  182. package/src/Landmark.tsx +37 -63
  183. package/src/Link.tsx +132 -69
  184. package/src/ListBox.tsx +656 -106
  185. package/src/ListDropTargetDelegate.ts +283 -0
  186. package/src/Menu.tsx +1234 -132
  187. package/src/Meter.tsx +44 -58
  188. package/src/Modal.tsx +262 -166
  189. package/src/NumberField.tsx +267 -151
  190. package/src/Popover.tsx +452 -343
  191. package/src/Pressable.tsx +108 -0
  192. package/src/ProgressBar.tsx +54 -59
  193. package/src/RadioGroup.tsx +533 -121
  194. package/src/RangeCalendar.tsx +249 -150
  195. package/src/RouterProvider.tsx +223 -0
  196. package/src/SearchField.tsx +460 -133
  197. package/src/Select.tsx +804 -233
  198. package/src/SelectionIndicator.tsx +108 -0
  199. package/src/Separator.tsx +47 -49
  200. package/src/SharedElementTransition.tsx +264 -0
  201. package/src/Slider.tsx +148 -98
  202. package/src/StepList.tsx +272 -0
  203. package/src/Switch.tsx +93 -46
  204. package/src/Table.tsx +1551 -225
  205. package/src/Tabs.tsx +377 -123
  206. package/src/TagGroup.tsx +233 -135
  207. package/src/Text.tsx +18 -0
  208. package/src/TextField.tsx +413 -86
  209. package/src/TimeField.tsx +232 -222
  210. package/src/Toast.tsx +306 -160
  211. package/src/ToggleButton.tsx +169 -0
  212. package/src/ToggleButtonGroup.tsx +141 -0
  213. package/src/Toolbar.tsx +61 -70
  214. package/src/Tooltip.tsx +473 -116
  215. package/src/Tree.tsx +1514 -175
  216. package/src/Virtualizer.tsx +730 -0
  217. package/src/VirtualizerLayouts.ts +280 -0
  218. package/src/VisuallyHidden.tsx +32 -38
  219. package/src/contexts.ts +29 -36
  220. package/src/index.ts +972 -620
  221. package/src/useDragAndDrop.ts +367 -0
  222. package/src/utils.tsx +69 -50
  223. package/src/virtualizer/Layout.ts +192 -0
  224. package/dist/index.ssr.js +0 -9785
  225. package/dist/index.ssr.js.map +0 -7
@@ -0,0 +1,223 @@
1
+ /**
2
+ * RouterProvider for solidaria-components
3
+ *
4
+ * A context provider for client-side router integration.
5
+ * SolidJS apps typically use TanStack Router or SolidRouter directly;
6
+ * this provides API compatibility with React Aria's RouterProvider.
7
+ */
8
+
9
+ import { type JSX, createContext, useContext } from "solid-js";
10
+
11
+ export interface RouterClickModifiers {
12
+ metaKey?: boolean;
13
+ ctrlKey?: boolean;
14
+ altKey?: boolean;
15
+ shiftKey?: boolean;
16
+ }
17
+
18
+ export interface RouterContextValue {
19
+ /** Whether the router is a native browser router (no client-side navigation). */
20
+ isNative: boolean;
21
+ /** Navigate to a given href. */
22
+ navigate: (href: string, routerOptions?: RouterOptions) => void;
23
+ /** Open a link target with router-aware navigation behavior. */
24
+ open: (
25
+ target: Element,
26
+ modifiers: RouterClickModifiers,
27
+ href: string,
28
+ routerOptions?: RouterOptions,
29
+ ) => void;
30
+ /** Transform an href for the router. */
31
+ useHref: (href: string) => string;
32
+ }
33
+
34
+ export interface RouterOptions {
35
+ /** Whether to replace the current history entry. */
36
+ replace?: boolean;
37
+ /** Additional router-specific options. */
38
+ [key: string]: unknown;
39
+ }
40
+
41
+ export interface RouterProviderProps {
42
+ /** A function that performs client-side navigation. */
43
+ navigate: (href: string, routerOptions?: RouterOptions) => void;
44
+ /** An optional function that transforms hrefs. */
45
+ useHref?: (href: string) => string;
46
+ /** Children to render. */
47
+ children: JSX.Element;
48
+ }
49
+
50
+ const defaultRouter: RouterContextValue = {
51
+ isNative: true,
52
+ navigate: () => {},
53
+ open: (target, modifiers) => {
54
+ openSyntheticLink(target, modifiers);
55
+ },
56
+ useHref: (href: string) => href,
57
+ };
58
+
59
+ export const RouterContext = createContext<RouterContextValue>(defaultRouter);
60
+
61
+ export interface LinkDOMProps {
62
+ href?: string;
63
+ target?: string;
64
+ rel?: string;
65
+ download?: string | boolean;
66
+ ping?: string;
67
+ referrerPolicy?:
68
+ | ""
69
+ | "no-referrer"
70
+ | "no-referrer-when-downgrade"
71
+ | "origin"
72
+ | "origin-when-cross-origin"
73
+ | "same-origin"
74
+ | "strict-origin"
75
+ | "strict-origin-when-cross-origin"
76
+ | "unsafe-url";
77
+ }
78
+
79
+ export function shouldClientNavigate(
80
+ link: HTMLAnchorElement,
81
+ modifiers: RouterClickModifiers,
82
+ ): boolean {
83
+ const target = link.getAttribute("target");
84
+ const sameOrigin = typeof location === "undefined" ? true : link.origin === location.origin;
85
+ return (
86
+ (!target || target === "_self") &&
87
+ sameOrigin &&
88
+ !link.hasAttribute("download") &&
89
+ !modifiers.metaKey &&
90
+ !modifiers.ctrlKey &&
91
+ !modifiers.altKey &&
92
+ !modifiers.shiftKey
93
+ );
94
+ }
95
+
96
+ export function openLink(target: HTMLAnchorElement, modifiers: RouterClickModifiers): void {
97
+ const event = new MouseEvent("click", {
98
+ metaKey: modifiers.metaKey,
99
+ ctrlKey: modifiers.ctrlKey,
100
+ altKey: modifiers.altKey,
101
+ shiftKey: modifiers.shiftKey,
102
+ detail: 1,
103
+ bubbles: true,
104
+ cancelable: true,
105
+ });
106
+ target.dispatchEvent(event);
107
+ }
108
+
109
+ function getSyntheticLink(target: Element, open: (link: HTMLAnchorElement) => void): void {
110
+ if (target instanceof HTMLAnchorElement) {
111
+ open(target);
112
+ return;
113
+ }
114
+
115
+ const href = target.getAttribute("data-href");
116
+ if (!href) {
117
+ return;
118
+ }
119
+
120
+ const link = document.createElement("a");
121
+ link.href = href;
122
+
123
+ const targetValue = target.getAttribute("data-target");
124
+ if (targetValue) link.target = targetValue;
125
+
126
+ const rel = target.getAttribute("data-rel");
127
+ if (rel) link.rel = rel;
128
+
129
+ const download = target.getAttribute("data-download");
130
+ if (download) link.download = download;
131
+
132
+ const ping = target.getAttribute("data-ping");
133
+ if (ping) link.ping = ping;
134
+
135
+ const referrerPolicy = target.getAttribute("data-referrer-policy");
136
+ if (referrerPolicy) {
137
+ link.referrerPolicy = referrerPolicy;
138
+ }
139
+
140
+ target.appendChild(link);
141
+ open(link);
142
+ target.removeChild(link);
143
+ }
144
+
145
+ function openSyntheticLink(target: Element, modifiers: RouterClickModifiers): void {
146
+ getSyntheticLink(target, (link) => openLink(link, modifiers));
147
+ }
148
+
149
+ export function useLinkProps(props?: LinkDOMProps): LinkDOMProps {
150
+ const router = useRouter();
151
+ const href = props?.href ?? "";
152
+ return {
153
+ href: props?.href ? router.useHref(href) : undefined,
154
+ target: props?.target,
155
+ rel: props?.rel,
156
+ download: props?.download,
157
+ ping: props?.ping,
158
+ referrerPolicy: props?.referrerPolicy,
159
+ };
160
+ }
161
+
162
+ export function handleLinkClick(
163
+ event: MouseEvent,
164
+ router: RouterContextValue,
165
+ href: string | undefined,
166
+ routerOptions?: RouterOptions,
167
+ ): void {
168
+ if (
169
+ !router.isNative &&
170
+ event.currentTarget instanceof HTMLAnchorElement &&
171
+ event.currentTarget.href &&
172
+ !event.defaultPrevented &&
173
+ href &&
174
+ shouldClientNavigate(event.currentTarget, event)
175
+ ) {
176
+ event.preventDefault();
177
+ router.open(event.currentTarget, event, href, routerOptions);
178
+ }
179
+ }
180
+
181
+ /**
182
+ * A RouterProvider accepts a `navigate` function from a client-side router,
183
+ * and provides it to all nested solidaria links to enable client-side navigation.
184
+ *
185
+ * @example
186
+ * ```tsx
187
+ * import { useNavigate } from '@solidjs/router';
188
+ *
189
+ * function App() {
190
+ * const navigate = useNavigate();
191
+ * return (
192
+ * <RouterProvider navigate={navigate}>
193
+ * <Link href="/about">About</Link>
194
+ * </RouterProvider>
195
+ * );
196
+ * }
197
+ * ```
198
+ */
199
+ export function RouterProvider(props: RouterProviderProps): JSX.Element {
200
+ const ctx: RouterContextValue = {
201
+ isNative: false,
202
+ navigate: props.navigate,
203
+ open: (target, modifiers, href, routerOptions) => {
204
+ getSyntheticLink(target, (link) => {
205
+ if (shouldClientNavigate(link, modifiers)) {
206
+ props.navigate(href, routerOptions);
207
+ } else {
208
+ openLink(link, modifiers);
209
+ }
210
+ });
211
+ },
212
+ useHref: props.useHref ?? ((href: string) => href),
213
+ };
214
+
215
+ return <RouterContext.Provider value={ctx}>{props.children}</RouterContext.Provider>;
216
+ }
217
+
218
+ /**
219
+ * Returns the current router context value.
220
+ */
221
+ export function useRouter(): RouterContextValue {
222
+ return useContext(RouterContext);
223
+ }