@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
package/src/Meter.tsx CHANGED
@@ -8,17 +8,8 @@
8
8
  * Unlike progress bars, meters represent a current value rather than progress toward a goal.
9
9
  */
10
10
 
11
- import {
12
- type JSX,
13
- type ParentProps,
14
- createContext,
15
- createMemo,
16
- splitProps,
17
- } from 'solid-js';
18
- import {
19
- createMeter,
20
- type AriaMeterProps,
21
- } from '@proyecto-viviana/solidaria';
11
+ import { type JSX, createContext, createMemo, splitProps } from "solid-js";
12
+ import { createMeter, type AriaMeterProps } from "@proyecto-viviana/solidaria";
22
13
  import {
23
14
  type RenderChildren,
24
15
  type ClassNameOrFunction,
@@ -26,11 +17,7 @@ import {
26
17
  type SlotProps,
27
18
  useRenderProps,
28
19
  filterDOMProps,
29
- } from './utils';
30
-
31
- // ============================================
32
- // TYPES
33
- // ============================================
20
+ } from "./utils";
34
21
 
35
22
  export interface MeterRenderProps {
36
23
  /** The value as a percentage between the minimum and maximum (0-100). */
@@ -39,9 +26,7 @@ export interface MeterRenderProps {
39
26
  valueText: string | undefined;
40
27
  }
41
28
 
42
- export interface MeterProps
43
- extends AriaMeterProps,
44
- SlotProps {
29
+ export interface MeterProps extends AriaMeterProps, SlotProps {
45
30
  /** The children of the component. A function may be provided to receive render props. */
46
31
  children?: RenderChildren<MeterRenderProps>;
47
32
  /** The CSS className for the element. */
@@ -50,23 +35,16 @@ export interface MeterProps
50
35
  style?: StyleOrFunction<MeterRenderProps>;
51
36
  }
52
37
 
53
- // ============================================
54
- // CONTEXT
55
- // ============================================
56
-
57
38
  export const MeterContext = createContext<MeterProps | null>(null);
58
39
 
59
- // ============================================
60
- // UTILITIES
61
- // ============================================
62
-
63
40
  function clamp(value: number, min: number, max: number): number {
64
41
  return Math.min(Math.max(value, min), max);
65
42
  }
66
43
 
67
- // ============================================
68
- // METER COMPONENT
69
- // ============================================
44
+ function getSafeRange(min: number, max: number): number {
45
+ const range = max - min;
46
+ return Number.isFinite(range) && range > 0 ? range : 1;
47
+ }
70
48
 
71
49
  /**
72
50
  * A meter represents a quantity within a known range, or a fractional value.
@@ -85,62 +63,70 @@ function clamp(value: number, min: number, max: number): number {
85
63
  * </Meter>
86
64
  * ```
87
65
  */
88
- export function Meter(props: ParentProps<MeterProps>): JSX.Element {
89
- const [local, ariaProps] = splitProps(props, [
90
- 'children',
91
- 'class',
92
- 'style',
93
- 'slot',
94
- ]);
66
+ export function Meter(props: MeterProps): JSX.Element {
67
+ const [local, ariaProps] = splitProps(props, ["children", "class", "style", "slot"]);
95
68
 
96
- // Get values for calculations
97
69
  const value = () => ariaProps.value ?? 0;
98
70
  const minValue = () => ariaProps.minValue ?? 0;
99
71
  const maxValue = () => ariaProps.maxValue ?? 100;
100
72
 
101
- // Create meter aria props
102
73
  const meterAria = createMeter({
103
- get value() { return ariaProps.value; },
104
- get minValue() { return ariaProps.minValue; },
105
- get maxValue() { return ariaProps.maxValue; },
106
- get valueLabel() { return ariaProps.valueLabel; },
107
- get formatOptions() { return ariaProps.formatOptions; },
108
- get label() { return ariaProps.label; },
109
- get 'aria-label'() { return ariaProps['aria-label']; },
110
- get 'aria-labelledby'() { return ariaProps['aria-labelledby']; },
111
- get 'aria-describedby'() { return ariaProps['aria-describedby']; },
112
- get 'aria-details'() { return ariaProps['aria-details']; },
74
+ get value() {
75
+ return ariaProps.value;
76
+ },
77
+ get minValue() {
78
+ return ariaProps.minValue;
79
+ },
80
+ get maxValue() {
81
+ return ariaProps.maxValue;
82
+ },
83
+ get valueLabel() {
84
+ return ariaProps.valueLabel;
85
+ },
86
+ get formatOptions() {
87
+ return ariaProps.formatOptions;
88
+ },
89
+ get label() {
90
+ return ariaProps.label;
91
+ },
92
+ get "aria-label"() {
93
+ return ariaProps["aria-label"];
94
+ },
95
+ get "aria-labelledby"() {
96
+ return ariaProps["aria-labelledby"];
97
+ },
98
+ get "aria-describedby"() {
99
+ return ariaProps["aria-describedby"];
100
+ },
101
+ get "aria-details"() {
102
+ return ariaProps["aria-details"];
103
+ },
113
104
  });
114
105
 
115
- // Calculate percentage
116
106
  const percentage = createMemo(() => {
117
107
  const clampedValue = clamp(value(), minValue(), maxValue());
118
- return ((clampedValue - minValue()) / (maxValue() - minValue())) * 100;
108
+ return ((clampedValue - minValue()) / getSafeRange(minValue(), maxValue())) * 100;
119
109
  });
120
110
 
121
- // Get value text from aria props
122
111
  const valueText = createMemo(() => {
123
- return meterAria.meterProps['aria-valuetext'] as string | undefined;
112
+ return meterAria.meterProps["aria-valuetext"] as string | undefined;
124
113
  });
125
114
 
126
- // Render props values
127
115
  const renderValues = createMemo<MeterRenderProps>(() => ({
128
116
  percentage: percentage(),
129
117
  valueText: valueText(),
130
118
  }));
131
119
 
132
- // Resolve render props
133
120
  const renderProps = useRenderProps(
134
121
  {
135
122
  children: props.children,
136
123
  class: local.class,
137
124
  style: local.style,
138
- defaultClassName: 'solidaria-Meter',
125
+ defaultClassName: "solidaria-Meter",
139
126
  },
140
- renderValues
127
+ renderValues,
141
128
  );
142
129
 
143
- // Filter DOM props
144
130
  const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));
145
131
 
146
132
  return (