@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,350 @@
1
+ /**
2
+ * Collection composition primitives for solidaria-components.
3
+ *
4
+ * Foundational parity layer for React Spectrum-style composition:
5
+ * Section / Header / Group.
6
+ */
7
+
8
+ import { type JSX, createContext, createMemo, splitProps, useContext, For } from "solid-js";
9
+ import type { Key } from "@proyecto-viviana/solid-stately";
10
+ import type { DragTypes, DropOperation, DropTarget } from "@proyecto-viviana/solid-stately";
11
+ import {
12
+ Collection as AriaCollection,
13
+ CollectionBuilder as AriaCollectionBuilder,
14
+ createLeafComponent,
15
+ createBranchComponent,
16
+ type CollectionProps as AriaCollectionProps,
17
+ type CollectionBuilderProps as AriaCollectionBuilderProps,
18
+ } from "@proyecto-viviana/solidaria";
19
+ import {
20
+ type ClassNameOrFunction,
21
+ type StyleOrFunction,
22
+ type SlotProps,
23
+ useRenderProps,
24
+ filterDOMProps,
25
+ } from "./utils";
26
+
27
+ export interface CollectionPrimitiveRenderProps {
28
+ /** Whether the primitive has visible children content. */
29
+ hasChildren: boolean;
30
+ }
31
+
32
+ type RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;
33
+
34
+ function assignRef<T>(ref: RefLike<T>, el: T): void {
35
+ if (!ref) return;
36
+ if (typeof ref === "function") ref(el);
37
+ else ref.current = el;
38
+ }
39
+
40
+ export interface CollectionDropTargetDelegate {
41
+ getDropTargetFromPoint(
42
+ x: number,
43
+ y: number,
44
+ isValidDropTarget: (target: DropTarget) => boolean,
45
+ ): DropTarget | null;
46
+ getDropOperation(
47
+ target: DropTarget,
48
+ types: DragTypes,
49
+ allowedOperations: DropOperation[],
50
+ ): DropOperation;
51
+ getKeyboardNavigationTarget?(
52
+ target: DropTarget | null,
53
+ direction: "next" | "previous",
54
+ isValidDropTarget: (target: DropTarget) => boolean,
55
+ ): DropTarget | null;
56
+ getKeyboardPageNavigationTarget?(
57
+ target: DropTarget | null,
58
+ direction: "next" | "previous",
59
+ isValidDropTarget: (target: DropTarget) => boolean,
60
+ ): DropTarget | null;
61
+ }
62
+
63
+ export interface CollectionRendererContextValue<T> {
64
+ /** Render function used by collection parents to render each item node. */
65
+ renderItem: (item: T) => JSX.Element;
66
+ /** Whether collection rendering is currently virtualized. */
67
+ isVirtualized?: boolean;
68
+ /** Optional layout delegate used by virtualized renderers. */
69
+ layoutDelegate?: unknown;
70
+ /** Optional drop target delegate used by DnD-aware collection paths. */
71
+ dropTargetDelegate?: CollectionDropTargetDelegate;
72
+ /** Optional drop indicator renderer for DnD-aware collection paths. */
73
+ renderDropIndicator?: (
74
+ index: number,
75
+ position: "before" | "after" | "on",
76
+ ) => JSX.Element | undefined;
77
+ }
78
+
79
+ export type CollectionEntry<T> = T | CollectionSection<T>;
80
+
81
+ export interface CollectionSection<T> {
82
+ /** Optional unique key for the section wrapper. */
83
+ key?: Key;
84
+ /** Optional section header title. */
85
+ title?: JSX.Element;
86
+ /** Optional aria-label for section grouping. */
87
+ "aria-label"?: string;
88
+ /** Items contained in the section. */
89
+ items: T[];
90
+ }
91
+
92
+ export interface SectionProps extends SlotProps {
93
+ /** Section contents, usually Header + Group/items. */
94
+ children?: JSX.Element;
95
+ /** Ref for the section element. */
96
+ ref?: RefLike<HTMLDivElement>;
97
+ /** The CSS className for the element. */
98
+ class?: ClassNameOrFunction<CollectionPrimitiveRenderProps>;
99
+ /** The inline style for the element. */
100
+ style?: StyleOrFunction<CollectionPrimitiveRenderProps>;
101
+ }
102
+
103
+ export interface HeaderProps extends SlotProps {
104
+ /** Header contents, usually section title text. */
105
+ children?: JSX.Element;
106
+ /** Optional heading level when rendered as a heading role. */
107
+ "aria-level"?: number;
108
+ /** The CSS className for the element. */
109
+ class?: ClassNameOrFunction<CollectionPrimitiveRenderProps>;
110
+ /** The inline style for the element. */
111
+ style?: StyleOrFunction<CollectionPrimitiveRenderProps>;
112
+ }
113
+
114
+ export interface GroupProps extends SlotProps {
115
+ /** Group contents, usually section items. */
116
+ children?: JSX.Element;
117
+ /** The CSS className for the element. */
118
+ class?: ClassNameOrFunction<CollectionPrimitiveRenderProps>;
119
+ /** The inline style for the element. */
120
+ style?: StyleOrFunction<CollectionPrimitiveRenderProps>;
121
+ }
122
+
123
+ interface SectionContextValue {
124
+ name: string;
125
+ render: (props: SectionProps, className?: string) => JSX.Element;
126
+ }
127
+
128
+ export interface CollectionBranchProps<T> {
129
+ collection: Iterable<T>;
130
+ parent?: unknown;
131
+ renderDropIndicator?: (target: {
132
+ type: "item";
133
+ key: Key;
134
+ dropPosition: "before" | "after" | "on";
135
+ }) => JSX.Element | undefined;
136
+ }
137
+
138
+ export interface CollectionRootProps<T> {
139
+ collection: Iterable<T>;
140
+ persistedKeys?: Set<Key> | null;
141
+ renderDropIndicator?: (target: {
142
+ type: "item";
143
+ key: Key;
144
+ dropPosition: "before" | "after" | "on";
145
+ }) => JSX.Element | undefined;
146
+ }
147
+
148
+ export interface CollectionRenderer<T = unknown> {
149
+ isVirtualized?: boolean;
150
+ layoutDelegate?: unknown;
151
+ dropTargetDelegate?: CollectionDropTargetDelegate;
152
+ CollectionRoot: (props: CollectionRootProps<T>) => JSX.Element;
153
+ CollectionBranch: (props: CollectionBranchProps<T>) => JSX.Element;
154
+ }
155
+
156
+ export const CollectionRendererContext =
157
+ createContext<CollectionRendererContextValue<unknown> | null>(null);
158
+ export const SelectableCollectionContext = CollectionRendererContext;
159
+ export const SectionContext = createContext<SectionContextValue | null>(null);
160
+ export const GroupContext = createContext<Partial<GroupProps> | null>(null);
161
+ export const HeaderContext = createContext<Partial<HeaderProps> | null>(null);
162
+ export const HeadingContext = createContext<Partial<HeaderProps> | null>(null);
163
+
164
+ export function useCollectionRenderer<T>(): CollectionRendererContextValue<T> | null {
165
+ return useContext(CollectionRendererContext) as CollectionRendererContextValue<T> | null;
166
+ }
167
+
168
+ export function isCollectionSection<T>(entry: CollectionEntry<T>): entry is CollectionSection<T> {
169
+ return (
170
+ typeof entry === "object" &&
171
+ entry !== null &&
172
+ Array.isArray((entry as CollectionSection<T>).items)
173
+ );
174
+ }
175
+
176
+ export function flattenCollectionEntries<T>(entries: CollectionEntry<T>[]): T[] {
177
+ const flattened: T[] = [];
178
+ for (const entry of entries) {
179
+ if (isCollectionSection(entry)) flattened.push(...entry.items);
180
+ else flattened.push(entry);
181
+ }
182
+ return flattened;
183
+ }
184
+
185
+ function renderCollectionItems<T>(
186
+ collection: Iterable<T>,
187
+ renderDropIndicator?: (target: {
188
+ type: "item";
189
+ key: Key;
190
+ dropPosition: "before" | "after" | "on";
191
+ }) => JSX.Element | undefined,
192
+ ): JSX.Element {
193
+ const items = Array.from(collection);
194
+ return (
195
+ <For each={items}>
196
+ {(item, index) => {
197
+ const node = item as { type?: unknown; key?: Key };
198
+ if (node.type === "content") {
199
+ // Content rows are rendered by their owning item/section branch.
200
+ return <></>;
201
+ }
202
+ const key = node.key ?? index();
203
+ return (
204
+ <>
205
+ {renderDropIndicator?.({ type: "item", key, dropPosition: "before" })}
206
+ {item as unknown as JSX.Element}
207
+ {renderDropIndicator?.({ type: "item", key, dropPosition: "after" })}
208
+ </>
209
+ );
210
+ }}
211
+ </For>
212
+ );
213
+ }
214
+
215
+ export const DefaultCollectionRenderer: CollectionRenderer<unknown> = {
216
+ CollectionRoot(props) {
217
+ return renderCollectionItems(props.collection, props.renderDropIndicator);
218
+ },
219
+ CollectionBranch(props) {
220
+ return renderCollectionItems(props.collection, props.renderDropIndicator);
221
+ },
222
+ };
223
+
224
+ export function CollectionBuilder<T>(props: AriaCollectionBuilderProps<T>): unknown {
225
+ return AriaCollectionBuilder(props);
226
+ }
227
+
228
+ export function Collection<T>(props: AriaCollectionProps<T>): unknown {
229
+ return AriaCollection(props);
230
+ }
231
+
232
+ export { createLeafComponent, createBranchComponent };
233
+
234
+ /**
235
+ * A semantic section wrapper for grouped collection content.
236
+ */
237
+ export function Section(props: SectionProps): JSX.Element {
238
+ const sectionContext = useContext(SectionContext);
239
+ if (sectionContext) {
240
+ const nodeEnv = (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env
241
+ ?.NODE_ENV;
242
+ if (nodeEnv !== "production") {
243
+ console.warn(`<Section> is deprecated. Please use <${sectionContext.name}> instead.`);
244
+ }
245
+ return sectionContext.render(props, "solidaria-Section");
246
+ }
247
+
248
+ const [local, domProps] = splitProps(props, ["children", "class", "style", "slot", "ref"]);
249
+
250
+ const renderValues = createMemo<CollectionPrimitiveRenderProps>(() => ({
251
+ hasChildren: local.children != null,
252
+ }));
253
+
254
+ const renderProps = useRenderProps(
255
+ {
256
+ children: local.children,
257
+ class: local.class,
258
+ style: local.style,
259
+ defaultClassName: "solidaria-Section",
260
+ },
261
+ renderValues,
262
+ );
263
+
264
+ const filteredDomProps = createMemo(() => filterDOMProps(domProps, { global: true }));
265
+
266
+ return (
267
+ <div
268
+ ref={(el) => assignRef(local.ref, el)}
269
+ {...filteredDomProps()}
270
+ class={renderProps.class()}
271
+ style={renderProps.style()}
272
+ slot={local.slot}
273
+ data-section
274
+ >
275
+ {renderProps.renderChildren()}
276
+ </div>
277
+ );
278
+ }
279
+
280
+ /**
281
+ * A header/title primitive for collection sections.
282
+ */
283
+ export function Header(props: HeaderProps): JSX.Element {
284
+ const [local, domProps] = splitProps(props, ["children", "class", "style", "slot"]);
285
+
286
+ const renderValues = createMemo<CollectionPrimitiveRenderProps>(() => ({
287
+ hasChildren: local.children != null,
288
+ }));
289
+
290
+ const renderProps = useRenderProps(
291
+ {
292
+ children: local.children,
293
+ class: local.class,
294
+ style: local.style,
295
+ defaultClassName: "solidaria-Header",
296
+ },
297
+ renderValues,
298
+ );
299
+
300
+ const filteredDomProps = createMemo(() => filterDOMProps(domProps, { global: true }));
301
+
302
+ return (
303
+ <div
304
+ {...filteredDomProps()}
305
+ role="heading"
306
+ class={renderProps.class()}
307
+ style={renderProps.style()}
308
+ slot={local.slot}
309
+ data-header
310
+ >
311
+ {renderProps.renderChildren()}
312
+ </div>
313
+ );
314
+ }
315
+
316
+ /**
317
+ * A grouping primitive for section item containers.
318
+ */
319
+ export function Group(props: GroupProps): JSX.Element {
320
+ const [local, domProps] = splitProps(props, ["children", "class", "style", "slot"]);
321
+
322
+ const renderValues = createMemo<CollectionPrimitiveRenderProps>(() => ({
323
+ hasChildren: local.children != null,
324
+ }));
325
+
326
+ const renderProps = useRenderProps(
327
+ {
328
+ children: local.children,
329
+ class: local.class,
330
+ style: local.style,
331
+ defaultClassName: "solidaria-Group",
332
+ },
333
+ renderValues,
334
+ );
335
+
336
+ const filteredDomProps = createMemo(() => filterDOMProps(domProps, { global: true }));
337
+
338
+ return (
339
+ <div
340
+ {...filteredDomProps()}
341
+ role="group"
342
+ class={renderProps.class()}
343
+ style={renderProps.style()}
344
+ slot={local.slot}
345
+ data-group
346
+ >
347
+ {renderProps.renderChildren()}
348
+ </div>
349
+ );
350
+ }