@proyecto-viviana/solidaria-components 0.2.4 → 0.2.9

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 (194) hide show
  1. package/LICENSE +21 -0
  2. package/dist/ActionBar.d.ts +71 -0
  3. package/dist/ActionBar.d.ts.map +1 -0
  4. package/dist/ActionGroup.d.ts +74 -0
  5. package/dist/ActionGroup.d.ts.map +1 -0
  6. package/dist/Alert.d.ts +70 -0
  7. package/dist/Alert.d.ts.map +1 -0
  8. package/dist/Breadcrumbs.d.ts +10 -2
  9. package/dist/Breadcrumbs.d.ts.map +1 -1
  10. package/dist/Button.d.ts +4 -0
  11. package/dist/Button.d.ts.map +1 -1
  12. package/dist/Calendar.d.ts +13 -0
  13. package/dist/Calendar.d.ts.map +1 -1
  14. package/dist/Checkbox.d.ts +2 -2
  15. package/dist/Checkbox.d.ts.map +1 -1
  16. package/dist/Collection.d.ts +125 -0
  17. package/dist/Collection.d.ts.map +1 -0
  18. package/dist/Color.d.ts +114 -2
  19. package/dist/Color.d.ts.map +1 -1
  20. package/dist/ColorEditor.d.ts +42 -0
  21. package/dist/ColorEditor.d.ts.map +1 -0
  22. package/dist/ComboBox.d.ts +64 -0
  23. package/dist/ComboBox.d.ts.map +1 -1
  24. package/dist/ContextualHelpTrigger.d.ts +40 -0
  25. package/dist/ContextualHelpTrigger.d.ts.map +1 -0
  26. package/dist/DateField.d.ts +27 -2
  27. package/dist/DateField.d.ts.map +1 -1
  28. package/dist/DatePicker.d.ts +67 -2
  29. package/dist/DatePicker.d.ts.map +1 -1
  30. package/dist/Dialog.d.ts.map +1 -1
  31. package/dist/Disclosure.d.ts +2 -0
  32. package/dist/Disclosure.d.ts.map +1 -1
  33. package/dist/DragAndDrop.d.ts +80 -0
  34. package/dist/DragAndDrop.d.ts.map +1 -0
  35. package/dist/DragPreview.d.ts +14 -0
  36. package/dist/DragPreview.d.ts.map +1 -0
  37. package/dist/DropZone.d.ts +27 -0
  38. package/dist/DropZone.d.ts.map +1 -0
  39. package/dist/FieldError.d.ts +23 -0
  40. package/dist/FieldError.d.ts.map +1 -0
  41. package/dist/FileTrigger.d.ts +26 -0
  42. package/dist/FileTrigger.d.ts.map +1 -0
  43. package/dist/Focusable.d.ts +27 -0
  44. package/dist/Focusable.d.ts.map +1 -0
  45. package/dist/Form.d.ts +27 -0
  46. package/dist/Form.d.ts.map +1 -0
  47. package/dist/GridList.d.ts +40 -1
  48. package/dist/GridList.d.ts.map +1 -1
  49. package/dist/Icon.d.ts +57 -0
  50. package/dist/Icon.d.ts.map +1 -0
  51. package/dist/Keyboard.d.ts +13 -0
  52. package/dist/Keyboard.d.ts.map +1 -0
  53. package/dist/Link.d.ts.map +1 -1
  54. package/dist/ListBox.d.ts +43 -1
  55. package/dist/ListBox.d.ts.map +1 -1
  56. package/dist/ListDropTargetDelegate.d.ts +38 -0
  57. package/dist/ListDropTargetDelegate.d.ts.map +1 -0
  58. package/dist/Menu.d.ts +20 -2
  59. package/dist/Menu.d.ts.map +1 -1
  60. package/dist/Meter.d.ts +2 -2
  61. package/dist/Meter.d.ts.map +1 -1
  62. package/dist/Modal.d.ts +2 -0
  63. package/dist/Modal.d.ts.map +1 -1
  64. package/dist/NumberField.d.ts +2 -0
  65. package/dist/NumberField.d.ts.map +1 -1
  66. package/dist/Popover.d.ts +4 -2
  67. package/dist/Popover.d.ts.map +1 -1
  68. package/dist/Pressable.d.ts +27 -0
  69. package/dist/Pressable.d.ts.map +1 -0
  70. package/dist/ProgressBar.d.ts +2 -2
  71. package/dist/ProgressBar.d.ts.map +1 -1
  72. package/dist/RadioGroup.d.ts.map +1 -1
  73. package/dist/RangeCalendar.d.ts +5 -0
  74. package/dist/RangeCalendar.d.ts.map +1 -1
  75. package/dist/RouterProvider.d.ts +75 -0
  76. package/dist/RouterProvider.d.ts.map +1 -0
  77. package/dist/SearchField.d.ts +2 -3
  78. package/dist/SearchField.d.ts.map +1 -1
  79. package/dist/Select.d.ts +11 -0
  80. package/dist/Select.d.ts.map +1 -1
  81. package/dist/SelectionIndicator.d.ts +30 -0
  82. package/dist/SelectionIndicator.d.ts.map +1 -0
  83. package/dist/SharedElementTransition.d.ts +39 -0
  84. package/dist/SharedElementTransition.d.ts.map +1 -0
  85. package/dist/Slider.d.ts +6 -3
  86. package/dist/Slider.d.ts.map +1 -1
  87. package/dist/Table.d.ts +39 -0
  88. package/dist/Table.d.ts.map +1 -1
  89. package/dist/Tabs.d.ts +4 -3
  90. package/dist/Tabs.d.ts.map +1 -1
  91. package/dist/TagGroup.d.ts +12 -2
  92. package/dist/TagGroup.d.ts.map +1 -1
  93. package/dist/Text.d.ts +10 -0
  94. package/dist/Text.d.ts.map +1 -0
  95. package/dist/TextField.d.ts +4 -0
  96. package/dist/TextField.d.ts.map +1 -1
  97. package/dist/TimeField.d.ts +26 -1
  98. package/dist/TimeField.d.ts.map +1 -1
  99. package/dist/Toast.d.ts.map +1 -1
  100. package/dist/ToggleButton.d.ts +30 -0
  101. package/dist/ToggleButton.d.ts.map +1 -0
  102. package/dist/ToggleButtonGroup.d.ts +33 -0
  103. package/dist/ToggleButtonGroup.d.ts.map +1 -0
  104. package/dist/Toolbar.d.ts.map +1 -1
  105. package/dist/Tooltip.d.ts +9 -0
  106. package/dist/Tooltip.d.ts.map +1 -1
  107. package/dist/Tree.d.ts +44 -2
  108. package/dist/Tree.d.ts.map +1 -1
  109. package/dist/Virtualizer.d.ts +61 -0
  110. package/dist/Virtualizer.d.ts.map +1 -0
  111. package/dist/VirtualizerLayouts.d.ts +82 -0
  112. package/dist/VirtualizerLayouts.d.ts.map +1 -0
  113. package/dist/VisuallyHidden.d.ts +3 -1
  114. package/dist/VisuallyHidden.d.ts.map +1 -1
  115. package/dist/contexts.d.ts +1 -0
  116. package/dist/contexts.d.ts.map +1 -1
  117. package/dist/index.d.ts +57 -25
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +13961 -5946
  120. package/dist/index.js.map +1 -7
  121. package/dist/index.ssr.js +9612 -2401
  122. package/dist/index.ssr.js.map +1 -7
  123. package/dist/useDragAndDrop.d.ts +93 -0
  124. package/dist/useDragAndDrop.d.ts.map +1 -0
  125. package/dist/utils.d.ts +7 -1
  126. package/dist/utils.d.ts.map +1 -1
  127. package/dist/virtualizer/Layout.d.ts +79 -0
  128. package/dist/virtualizer/Layout.d.ts.map +1 -0
  129. package/package.json +8 -6
  130. package/src/ActionBar.tsx +248 -0
  131. package/src/ActionGroup.tsx +285 -0
  132. package/src/Alert.tsx +177 -0
  133. package/src/Autocomplete.tsx +1 -1
  134. package/src/Breadcrumbs.tsx +103 -17
  135. package/src/Button.tsx +65 -21
  136. package/src/Calendar.tsx +179 -53
  137. package/src/Checkbox.tsx +1 -2
  138. package/src/Collection.tsx +341 -0
  139. package/src/Color.tsx +652 -34
  140. package/src/ColorEditor.tsx +231 -0
  141. package/src/ComboBox.tsx +315 -81
  142. package/src/ContextualHelpTrigger.tsx +183 -0
  143. package/src/DateField.tsx +93 -19
  144. package/src/DatePicker.tsx +495 -25
  145. package/src/Dialog.tsx +40 -9
  146. package/src/Disclosure.tsx +33 -27
  147. package/src/DragAndDrop.tsx +334 -0
  148. package/src/DragPreview.tsx +45 -0
  149. package/src/DropZone.tsx +213 -0
  150. package/src/FieldError.tsx +67 -0
  151. package/src/FileTrigger.tsx +83 -0
  152. package/src/Focusable.tsx +106 -0
  153. package/src/Form.tsx +85 -0
  154. package/src/GridList.tsx +379 -41
  155. package/src/Icon.tsx +154 -0
  156. package/src/Keyboard.tsx +26 -0
  157. package/src/Link.tsx +14 -1
  158. package/src/ListBox.tsx +484 -33
  159. package/src/ListDropTargetDelegate.ts +282 -0
  160. package/src/Menu.tsx +388 -35
  161. package/src/Meter.tsx +7 -3
  162. package/src/Modal.tsx +32 -4
  163. package/src/NumberField.tsx +163 -43
  164. package/src/Popover.tsx +136 -180
  165. package/src/Pressable.tsx +108 -0
  166. package/src/ProgressBar.tsx +7 -3
  167. package/src/RadioGroup.tsx +35 -25
  168. package/src/RangeCalendar.tsx +100 -68
  169. package/src/RouterProvider.tsx +240 -0
  170. package/src/SearchField.tsx +142 -34
  171. package/src/Select.tsx +221 -73
  172. package/src/SelectionIndicator.tsx +105 -0
  173. package/src/SharedElementTransition.tsx +258 -0
  174. package/src/Slider.tsx +16 -6
  175. package/src/Table.tsx +417 -57
  176. package/src/Tabs.tsx +68 -35
  177. package/src/TagGroup.tsx +121 -36
  178. package/src/Text.tsx +18 -0
  179. package/src/TextField.tsx +25 -8
  180. package/src/TimeField.tsx +101 -151
  181. package/src/Toast.tsx +108 -14
  182. package/src/ToggleButton.tsx +159 -0
  183. package/src/ToggleButtonGroup.tsx +136 -0
  184. package/src/Toolbar.tsx +14 -8
  185. package/src/Tooltip.tsx +108 -19
  186. package/src/Tree.tsx +1143 -87
  187. package/src/Virtualizer.tsx +702 -0
  188. package/src/VirtualizerLayouts.ts +265 -0
  189. package/src/VisuallyHidden.tsx +15 -21
  190. package/src/contexts.ts +1 -0
  191. package/src/index.ts +1057 -620
  192. package/src/useDragAndDrop.ts +351 -0
  193. package/src/utils.tsx +37 -3
  194. package/src/virtualizer/Layout.ts +200 -0
@@ -86,7 +86,7 @@ export interface SearchFieldInputRenderProps {
86
86
  isInvalid: boolean;
87
87
  }
88
88
 
89
- export interface SearchFieldInputProps extends SlotProps {
89
+ export interface SearchFieldInputProps extends SlotProps, Omit<JSX.InputHTMLAttributes<HTMLInputElement>, 'class' | 'style'> {
90
90
  /** The CSS className for the element. */
91
91
  class?: ClassNameOrFunction<SearchFieldInputRenderProps>;
92
92
  /** The inline style for the element. */
@@ -102,7 +102,7 @@ export interface SearchFieldClearButtonRenderProps {
102
102
  isDisabled: boolean;
103
103
  }
104
104
 
105
- export interface SearchFieldClearButtonProps extends SlotProps {
105
+ export interface SearchFieldClearButtonProps extends SlotProps, Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, 'class' | 'style' | 'children'> {
106
106
  /** The children of the button. */
107
107
  children?: RenderChildren<SearchFieldClearButtonRenderProps>;
108
108
  /** The CSS className for the element. */
@@ -132,7 +132,6 @@ interface SearchFieldContextValue {
132
132
  isInvalid: boolean;
133
133
  isRequired: boolean;
134
134
  isReadOnly: boolean;
135
- inputRef: HTMLInputElement | undefined;
136
135
  setInputRef: (el: HTMLInputElement) => void;
137
136
  }
138
137
 
@@ -150,7 +149,44 @@ export function SearchField(props: SearchFieldProps): JSX.Element {
150
149
  props,
151
150
  ['children', 'class', 'style', 'slot'],
152
151
  ['value', 'defaultValue', 'onChange', 'onSubmit', 'onClear'],
153
- ['label', 'aria-label', 'aria-labelledby', 'aria-describedby', 'isDisabled', 'isReadOnly', 'isRequired', 'isInvalid', 'description', 'errorMessage', 'id', 'autoFocus', 'name', 'placeholder', 'autoComplete', 'maxLength', 'minLength', 'pattern']
152
+ [
153
+ 'label',
154
+ 'aria-label',
155
+ 'aria-labelledby',
156
+ 'aria-describedby',
157
+ 'isDisabled',
158
+ 'isReadOnly',
159
+ 'isRequired',
160
+ 'isInvalid',
161
+ 'description',
162
+ 'errorMessage',
163
+ 'id',
164
+ 'autoFocus',
165
+ 'name',
166
+ 'placeholder',
167
+ 'autoComplete',
168
+ 'inputMode',
169
+ 'autoCorrect',
170
+ 'autoCapitalize',
171
+ 'spellCheck',
172
+ 'maxLength',
173
+ 'minLength',
174
+ 'pattern',
175
+ 'onFocus',
176
+ 'onBlur',
177
+ 'onFocusChange',
178
+ 'onKeyDown',
179
+ 'onKeyUp',
180
+ 'onCopy',
181
+ 'onCut',
182
+ 'onPaste',
183
+ 'onCompositionStart',
184
+ 'onCompositionEnd',
185
+ 'onCompositionUpdate',
186
+ 'onSelect',
187
+ 'onBeforeInput',
188
+ 'onInput',
189
+ ]
154
190
  );
155
191
 
156
192
  // Create search field state
@@ -173,13 +209,7 @@ export function SearchField(props: SearchFieldProps): JSX.Element {
173
209
  };
174
210
 
175
211
  // Create search field aria props
176
- const {
177
- labelProps,
178
- inputProps,
179
- clearButtonProps,
180
- descriptionProps,
181
- errorMessageProps,
182
- } = createSearchField(
212
+ const searchFieldAria = createSearchField(
183
213
  {
184
214
  get isDisabled() {
185
215
  return ariaProps.isDisabled;
@@ -223,6 +253,18 @@ export function SearchField(props: SearchFieldProps): JSX.Element {
223
253
  get autoComplete() {
224
254
  return ariaProps.autoComplete;
225
255
  },
256
+ get inputMode() {
257
+ return ariaProps.inputMode;
258
+ },
259
+ get autoCorrect() {
260
+ return ariaProps.autoCorrect;
261
+ },
262
+ get autoCapitalize() {
263
+ return ariaProps.autoCapitalize;
264
+ },
265
+ get spellCheck() {
266
+ return ariaProps.spellCheck;
267
+ },
226
268
  get maxLength() {
227
269
  return ariaProps.maxLength;
228
270
  },
@@ -232,6 +274,48 @@ export function SearchField(props: SearchFieldProps): JSX.Element {
232
274
  get pattern() {
233
275
  return ariaProps.pattern;
234
276
  },
277
+ get onFocus() {
278
+ return ariaProps.onFocus;
279
+ },
280
+ get onBlur() {
281
+ return ariaProps.onBlur;
282
+ },
283
+ get onFocusChange() {
284
+ return ariaProps.onFocusChange;
285
+ },
286
+ get onKeyDown() {
287
+ return ariaProps.onKeyDown;
288
+ },
289
+ get onKeyUp() {
290
+ return ariaProps.onKeyUp;
291
+ },
292
+ get onCopy() {
293
+ return ariaProps.onCopy;
294
+ },
295
+ get onCut() {
296
+ return ariaProps.onCut;
297
+ },
298
+ get onPaste() {
299
+ return ariaProps.onPaste;
300
+ },
301
+ get onCompositionStart() {
302
+ return ariaProps.onCompositionStart;
303
+ },
304
+ get onCompositionEnd() {
305
+ return ariaProps.onCompositionEnd;
306
+ },
307
+ get onCompositionUpdate() {
308
+ return ariaProps.onCompositionUpdate;
309
+ },
310
+ get onSelect() {
311
+ return ariaProps.onSelect;
312
+ },
313
+ get onBeforeInput() {
314
+ return ariaProps.onBeforeInput;
315
+ },
316
+ get onInput() {
317
+ return ariaProps.onInput;
318
+ },
235
319
  get onSubmit() {
236
320
  return stateProps.onSubmit;
237
321
  },
@@ -247,7 +331,7 @@ export function SearchField(props: SearchFieldProps): JSX.Element {
247
331
  const renderValues = createMemo<SearchFieldRenderProps>(() => ({
248
332
  isEmpty: state.value() === '',
249
333
  isDisabled: ariaProps.isDisabled ?? false,
250
- isInvalid: ariaProps.isInvalid ?? false,
334
+ isInvalid: searchFieldAria.isInvalid ?? false,
251
335
  isRequired: ariaProps.isRequired ?? false,
252
336
  isReadOnly: ariaProps.isReadOnly ?? false,
253
337
  value: state.value(),
@@ -267,30 +351,47 @@ export function SearchField(props: SearchFieldProps): JSX.Element {
267
351
  // Filter DOM props
268
352
  const domProps = createMemo(() => filterDOMProps(rest as Record<string, unknown>, { global: true }));
269
353
 
354
+ const contextValue: SearchFieldContextValue = {
355
+ state,
356
+ get inputProps() {
357
+ return searchFieldAria.inputProps;
358
+ },
359
+ get clearButtonProps() {
360
+ return searchFieldAria.clearButtonProps;
361
+ },
362
+ get labelProps() {
363
+ return searchFieldAria.labelProps as JSX.HTMLAttributes<HTMLElement>;
364
+ },
365
+ get descriptionProps() {
366
+ return searchFieldAria.descriptionProps;
367
+ },
368
+ get errorMessageProps() {
369
+ return searchFieldAria.errorMessageProps;
370
+ },
371
+ get isDisabled() {
372
+ return ariaProps.isDisabled ?? false;
373
+ },
374
+ get isInvalid() {
375
+ return searchFieldAria.isInvalid ?? false;
376
+ },
377
+ get isRequired() {
378
+ return ariaProps.isRequired ?? false;
379
+ },
380
+ get isReadOnly() {
381
+ return ariaProps.isReadOnly ?? false;
382
+ },
383
+ setInputRef,
384
+ };
385
+
270
386
  return (
271
- <SearchFieldContext.Provider
272
- value={{
273
- state,
274
- inputProps,
275
- clearButtonProps,
276
- labelProps: labelProps as JSX.HTMLAttributes<HTMLElement>,
277
- descriptionProps,
278
- errorMessageProps,
279
- isDisabled: ariaProps.isDisabled ?? false,
280
- isInvalid: ariaProps.isInvalid ?? false,
281
- isRequired: ariaProps.isRequired ?? false,
282
- isReadOnly: ariaProps.isReadOnly ?? false,
283
- inputRef,
284
- setInputRef,
285
- }}
286
- >
387
+ <SearchFieldContext.Provider value={contextValue}>
287
388
  <div
288
389
  {...domProps()}
289
390
  class={renderProps.class()}
290
391
  style={renderProps.style()}
291
392
  data-empty={state.value() === '' || undefined}
292
393
  data-disabled={ariaProps.isDisabled || undefined}
293
- data-invalid={ariaProps.isInvalid || undefined}
394
+ data-invalid={searchFieldAria.isInvalid || undefined}
294
395
  data-required={ariaProps.isRequired || undefined}
295
396
  data-readonly={ariaProps.isReadOnly || undefined}
296
397
  >
@@ -309,14 +410,19 @@ export function SearchFieldLabel(props: { children?: JSX.Element; class?: string
309
410
  throw new Error('SearchFieldLabel must be used within a SearchField');
310
411
  }
311
412
 
413
+ const cleanLabelProps = () => {
414
+ const { ref: _ref, ...rest } = context.labelProps as Record<string, unknown>;
415
+ return rest;
416
+ };
417
+
312
418
  return (
313
- <span
314
- {...context.labelProps}
419
+ <label
420
+ {...cleanLabelProps()}
315
421
  class={props.class ?? 'solidaria-SearchField-label'}
316
422
  style={props.style}
317
423
  >
318
424
  {props.children}
319
- </span>
425
+ </label>
320
426
  );
321
427
  }
322
428
 
@@ -324,7 +430,7 @@ export function SearchFieldLabel(props: { children?: JSX.Element; class?: string
324
430
  * The input element for a search field.
325
431
  */
326
432
  export function SearchFieldInput(props: SearchFieldInputProps): JSX.Element {
327
- const [local] = splitProps(props, ['class', 'style', 'slot']);
433
+ const [local, domProps] = splitProps(props, ['class', 'style', 'slot']);
328
434
 
329
435
  const context = useContext(SearchFieldContext);
330
436
  if (!context) {
@@ -376,6 +482,7 @@ export function SearchFieldInput(props: SearchFieldInputProps): JSX.Element {
376
482
 
377
483
  return (
378
484
  <input
485
+ {...domProps}
379
486
  ref={context.setInputRef}
380
487
  {...cleanInputProps()}
381
488
  {...cleanFocusProps()}
@@ -395,7 +502,7 @@ export function SearchFieldInput(props: SearchFieldInputProps): JSX.Element {
395
502
  * The clear button for a search field.
396
503
  */
397
504
  export function SearchFieldClearButton(props: SearchFieldClearButtonProps): JSX.Element {
398
- const [local] = splitProps(props, ['class', 'style', 'slot']);
505
+ const [local, domProps] = splitProps(props, ['class', 'style', 'slot', 'children']);
399
506
 
400
507
  const context = useContext(SearchFieldContext);
401
508
  if (!context) {
@@ -454,6 +561,7 @@ export function SearchFieldClearButton(props: SearchFieldClearButtonProps): JSX.
454
561
  return (
455
562
  <Show when={!isEmpty()}>
456
563
  <button
564
+ {...domProps}
457
565
  type="button"
458
566
  aria-label={context.clearButtonProps['aria-label']}
459
567
  tabIndex={context.clearButtonProps.tabIndex}