@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,213 @@
1
+ /**
2
+ * ColorEditor headless component
3
+ *
4
+ * A composite component that combines ColorArea, ColorSlider, and ColorField
5
+ * into a complete color editing UI. Pure composition — no new ARIA hooks needed.
6
+ */
7
+
8
+ import { type JSX, createSignal, For, Show, splitProps, createMemo } from "solid-js";
9
+ import {
10
+ ColorPicker,
11
+ ColorArea,
12
+ ColorAreaGradient,
13
+ ColorAreaThumb,
14
+ ColorSlider,
15
+ ColorSliderTrack,
16
+ ColorSliderThumb,
17
+ ColorField,
18
+ ColorFieldInput,
19
+ } from "./Color";
20
+ import { getColorChannels } from "@proyecto-viviana/solid-stately";
21
+ import type { Color, ColorChannel, ColorSpace } from "@proyecto-viviana/solid-stately";
22
+
23
+ export type ColorEditorColorSpace = "rgb" | "hsl" | "hsb";
24
+
25
+ export interface ColorEditorRenderProps {
26
+ colorSpace: ColorEditorColorSpace | "hex";
27
+ }
28
+
29
+ export interface ColorEditorProps {
30
+ /** The current color value (controlled). */
31
+ value?: Color | string;
32
+ /** The default color value (uncontrolled). */
33
+ defaultValue?: Color | string;
34
+ /** Handler called when the color changes. */
35
+ onChange?: (color: Color) => void;
36
+ /** Whether to hide the alpha channel. */
37
+ hideAlphaChannel?: boolean;
38
+ /** The initial color space. @default 'hex' */
39
+ colorSpace?: ColorEditorColorSpace | "hex";
40
+ /** Handler called when the color space changes. */
41
+ onColorSpaceChange?: (colorSpace: ColorEditorColorSpace | "hex") => void;
42
+ /** The CSS class name. */
43
+ class?: string | ((renderProps: ColorEditorRenderProps) => string);
44
+ /** The inline style. */
45
+ style?: JSX.CSSProperties;
46
+ /** Children override. If provided, replaces the default layout. */
47
+ children?: JSX.Element;
48
+ /** Whether the editor is disabled. */
49
+ isDisabled?: boolean;
50
+ }
51
+
52
+ /**
53
+ * ColorEditor provides a default UI for editing colors.
54
+ *
55
+ * Composes: ColorArea + ColorSlider (hue) + optional ColorSlider (alpha) +
56
+ * color space selector + channel ColorFields.
57
+ */
58
+ export function ColorEditor(props: ColorEditorProps): JSX.Element {
59
+ const [local] = splitProps(props, [
60
+ "value",
61
+ "defaultValue",
62
+ "onChange",
63
+ "hideAlphaChannel",
64
+ "colorSpace",
65
+ "onColorSpaceChange",
66
+ "class",
67
+ "style",
68
+ "children",
69
+ "isDisabled",
70
+ ]);
71
+
72
+ const [activeSpace, setActiveSpace] = createSignal<ColorEditorColorSpace | "hex">(
73
+ local.colorSpace ?? "hex",
74
+ );
75
+
76
+ const handleSpaceChange = (space: ColorEditorColorSpace | "hex") => {
77
+ setActiveSpace(space);
78
+ local.onColorSpaceChange?.(space);
79
+ };
80
+
81
+ const channels = createMemo<ColorChannel[]>(() => {
82
+ const space = activeSpace();
83
+ if (space === "hex") return [];
84
+ return getColorChannels(space as ColorSpace);
85
+ });
86
+
87
+ const resolvedClass = () => {
88
+ if (typeof local.class === "function") {
89
+ return local.class({ colorSpace: activeSpace() });
90
+ }
91
+ return local.class ?? "";
92
+ };
93
+
94
+ if (local.children) {
95
+ return (
96
+ <div class={resolvedClass()} style={local.style}>
97
+ <ColorPicker
98
+ value={local.value}
99
+ defaultValue={local.defaultValue}
100
+ onChange={local.onChange}
101
+ >
102
+ {() => local.children}
103
+ </ColorPicker>
104
+ </div>
105
+ );
106
+ }
107
+
108
+ const areaChannels = createMemo(() => {
109
+ const space = activeSpace();
110
+ if (space === "hsb" || space === "hex") {
111
+ return {
112
+ x: "saturation" as ColorChannel,
113
+ y: "brightness" as ColorChannel,
114
+ colorSpace: "hsb" as ColorSpace,
115
+ };
116
+ }
117
+ if (space === "hsl") {
118
+ return {
119
+ x: "saturation" as ColorChannel,
120
+ y: "lightness" as ColorChannel,
121
+ colorSpace: "hsl" as ColorSpace,
122
+ };
123
+ }
124
+ return {
125
+ x: "green" as ColorChannel,
126
+ y: "blue" as ColorChannel,
127
+ colorSpace: "rgb" as ColorSpace,
128
+ };
129
+ });
130
+
131
+ return (
132
+ <div
133
+ class={`solidaria-ColorEditor ${resolvedClass()}`}
134
+ style={local.style}
135
+ data-color-space={activeSpace()}
136
+ >
137
+ <ColorPicker value={local.value} defaultValue={local.defaultValue} onChange={local.onChange}>
138
+ {() => (
139
+ <>
140
+ <div class="solidaria-ColorEditor-top">
141
+ <ColorArea
142
+ xChannel={areaChannels().x}
143
+ yChannel={areaChannels().y}
144
+ isDisabled={local.isDisabled}
145
+ >
146
+ {() => (
147
+ <>
148
+ <ColorAreaGradient />
149
+ <ColorAreaThumb />
150
+ </>
151
+ )}
152
+ </ColorArea>
153
+
154
+ <ColorSlider channel="hue" isDisabled={local.isDisabled} aria-label="Hue">
155
+ {() => <ColorSliderTrack>{() => <ColorSliderThumb />}</ColorSliderTrack>}
156
+ </ColorSlider>
157
+
158
+ <Show when={!local.hideAlphaChannel}>
159
+ <ColorSlider channel="alpha" isDisabled={local.isDisabled} aria-label="Alpha">
160
+ {() => <ColorSliderTrack>{() => <ColorSliderThumb />}</ColorSliderTrack>}
161
+ </ColorSlider>
162
+ </Show>
163
+ </div>
164
+
165
+ <div class="solidaria-ColorEditor-bottom">
166
+ <select
167
+ value={activeSpace()}
168
+ onChange={(e) =>
169
+ handleSpaceChange(e.currentTarget.value as ColorEditorColorSpace | "hex")
170
+ }
171
+ disabled={local.isDisabled}
172
+ aria-label="Color format"
173
+ class="solidaria-ColorEditor-format"
174
+ >
175
+ <option value="hex">Hex</option>
176
+ <option value="rgb">RGB</option>
177
+ <option value="hsl">HSL</option>
178
+ <option value="hsb">HSB</option>
179
+ </select>
180
+
181
+ <Show
182
+ when={activeSpace() !== "hex"}
183
+ fallback={
184
+ <ColorField isDisabled={local.isDisabled} aria-label="Hex color">
185
+ {() => <ColorFieldInput />}
186
+ </ColorField>
187
+ }
188
+ >
189
+ <For each={channels()}>
190
+ {(channel) => (
191
+ <ColorField
192
+ channel={channel}
193
+ isDisabled={local.isDisabled}
194
+ aria-label={channel}
195
+ >
196
+ {() => <ColorFieldInput />}
197
+ </ColorField>
198
+ )}
199
+ </For>
200
+ </Show>
201
+
202
+ <Show when={!local.hideAlphaChannel && activeSpace() !== "hex"}>
203
+ <ColorField channel="alpha" isDisabled={local.isDisabled} aria-label="Alpha">
204
+ {() => <ColorFieldInput />}
205
+ </ColorField>
206
+ </Show>
207
+ </div>
208
+ </>
209
+ )}
210
+ </ColorPicker>
211
+ </div>
212
+ );
213
+ }