@proyecto-viviana/solidaria 0.2.4 → 0.2.8

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 (219) hide show
  1. package/LICENSE +21 -0
  2. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  3. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  4. package/dist/actiongroup/index.d.ts +2 -0
  5. package/dist/actiongroup/index.d.ts.map +1 -0
  6. package/dist/autocomplete/createAutocomplete.d.ts +6 -2
  7. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  8. package/dist/breadcrumbs/createBreadcrumbs.d.ts +2 -0
  9. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  10. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  11. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  12. package/dist/button/index.d.ts +2 -0
  13. package/dist/button/index.d.ts.map +1 -1
  14. package/dist/calendar/createCalendarCell.d.ts +2 -0
  15. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  16. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  17. package/dist/calendar/createRangeCalendarCell.d.ts +3 -1
  18. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  19. package/dist/checkbox/createCheckboxGroup.d.ts +5 -1
  20. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  21. package/dist/collections/index.d.ts +56 -0
  22. package/dist/collections/index.d.ts.map +1 -0
  23. package/dist/color/createColorArea.d.ts.map +1 -1
  24. package/dist/color/createColorSlider.d.ts.map +1 -1
  25. package/dist/color/createColorWheel.d.ts.map +1 -1
  26. package/dist/combobox/createComboBox.d.ts +6 -0
  27. package/dist/combobox/createComboBox.d.ts.map +1 -1
  28. package/dist/datepicker/createDatePicker.d.ts +6 -0
  29. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  30. package/dist/datepicker/createDateRangePicker.d.ts +40 -0
  31. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  32. package/dist/datepicker/createDateSegment.d.ts +1 -1
  33. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  34. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  35. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  36. package/dist/datepicker/index.d.ts +2 -0
  37. package/dist/datepicker/index.d.ts.map +1 -1
  38. package/dist/disclosure/createDisclosureGroup.d.ts +2 -1
  39. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  40. package/dist/dnd/createDrag.d.ts.map +1 -1
  41. package/dist/dnd/createDraggableCollection.d.ts +4 -0
  42. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  43. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  44. package/dist/dnd/createDrop.d.ts.map +1 -1
  45. package/dist/dnd/createDroppableCollection.d.ts +32 -1
  46. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  47. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  48. package/dist/dnd/index.d.ts +1 -1
  49. package/dist/dnd/index.d.ts.map +1 -1
  50. package/dist/grid/createGrid.d.ts.map +1 -1
  51. package/dist/gridlist/createGridList.d.ts.map +1 -1
  52. package/dist/index.d.ts +6 -4
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +4659 -3452
  55. package/dist/index.js.map +1 -7
  56. package/dist/index.ssr.js +4659 -3452
  57. package/dist/index.ssr.js.map +1 -7
  58. package/dist/interactions/createFocus.d.ts.map +1 -1
  59. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  60. package/dist/link/createLink.d.ts +10 -0
  61. package/dist/link/createLink.d.ts.map +1 -1
  62. package/dist/listbox/createListBox.d.ts +1 -0
  63. package/dist/listbox/createListBox.d.ts.map +1 -1
  64. package/dist/listbox/createOption.d.ts.map +1 -1
  65. package/dist/menu/createMenu.d.ts +1 -0
  66. package/dist/menu/createMenu.d.ts.map +1 -1
  67. package/dist/meter/createMeter.d.ts.map +1 -1
  68. package/dist/numberfield/createNumberField.d.ts +18 -0
  69. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  70. package/dist/overlays/createModal.d.ts +16 -0
  71. package/dist/overlays/createModal.d.ts.map +1 -1
  72. package/dist/overlays/createOverlay.d.ts.map +1 -1
  73. package/dist/overlays/index.d.ts +1 -1
  74. package/dist/overlays/index.d.ts.map +1 -1
  75. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  76. package/dist/popover/createPopover.d.ts.map +1 -1
  77. package/dist/progress/createProgressBar.d.ts.map +1 -1
  78. package/dist/radio/createRadioGroup.d.ts +2 -2
  79. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  80. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  81. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  82. package/dist/select/createSelect.d.ts.map +1 -1
  83. package/dist/slider/createSlider.d.ts.map +1 -1
  84. package/dist/table/createTable.d.ts.map +1 -1
  85. package/dist/tabs/createTabs.d.ts +1 -1
  86. package/dist/tabs/createTabs.d.ts.map +1 -1
  87. package/dist/tag/createTag.d.ts.map +1 -1
  88. package/dist/tag/createTagGroup.d.ts.map +1 -1
  89. package/dist/toast/createToast.d.ts +4 -0
  90. package/dist/toast/createToast.d.ts.map +1 -1
  91. package/dist/toast/createToastRegion.d.ts.map +1 -1
  92. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  93. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  94. package/dist/tree/createTree.d.ts.map +1 -1
  95. package/dist/tree/createTreeItem.d.ts.map +1 -1
  96. package/dist/tree/types.d.ts +4 -0
  97. package/dist/tree/types.d.ts.map +1 -1
  98. package/dist/utils/env.d.ts +1 -1
  99. package/dist/utils/env.d.ts.map +1 -1
  100. package/dist/utils/platform.d.ts.map +1 -1
  101. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  102. package/package.json +8 -6
  103. package/src/actiongroup/createActionGroup.ts +324 -0
  104. package/src/actiongroup/index.ts +8 -0
  105. package/src/autocomplete/createAutocomplete.ts +32 -9
  106. package/src/breadcrumbs/createBreadcrumbs.ts +10 -15
  107. package/src/button/createButton.ts +1 -1
  108. package/src/button/createToggleButtonGroup.ts +128 -0
  109. package/src/button/index.ts +9 -0
  110. package/src/calendar/createCalendarCell.ts +6 -4
  111. package/src/calendar/createCalendarGrid.ts +27 -18
  112. package/src/calendar/createRangeCalendarCell.ts +26 -9
  113. package/src/checkbox/createCheckboxGroup.ts +21 -4
  114. package/src/collections/index.ts +242 -0
  115. package/src/color/createColorArea.ts +380 -314
  116. package/src/color/createColorField.ts +137 -137
  117. package/src/color/createColorSlider.ts +286 -197
  118. package/src/color/createColorSwatch.ts +40 -40
  119. package/src/color/createColorWheel.ts +218 -208
  120. package/src/color/index.ts +24 -24
  121. package/src/color/types.ts +116 -116
  122. package/src/combobox/createComboBox.ts +670 -647
  123. package/src/combobox/index.ts +6 -6
  124. package/src/datepicker/createDatePicker.ts +54 -16
  125. package/src/datepicker/createDateRangePicker.ts +246 -0
  126. package/src/datepicker/createDateSegment.ts +185 -31
  127. package/src/datepicker/createTimeSegment.ts +370 -0
  128. package/src/datepicker/index.ts +14 -0
  129. package/src/dialog/createDialog.ts +120 -120
  130. package/src/dialog/index.ts +2 -2
  131. package/src/dialog/types.ts +19 -19
  132. package/src/disclosure/createDisclosureGroup.ts +5 -2
  133. package/src/dnd/createDrag.ts +224 -209
  134. package/src/dnd/createDraggableCollection.ts +96 -63
  135. package/src/dnd/createDraggableItem.ts +259 -243
  136. package/src/dnd/createDrop.ts +322 -321
  137. package/src/dnd/createDroppableCollection.ts +682 -293
  138. package/src/dnd/createDroppableItem.ts +215 -213
  139. package/src/dnd/index.ts +55 -47
  140. package/src/dnd/types.ts +89 -89
  141. package/src/dnd/utils.ts +294 -294
  142. package/src/focus/createAutoFocus.ts +321 -321
  143. package/src/focus/createFocusRestore.ts +313 -313
  144. package/src/focus/createVirtualFocus.ts +396 -396
  145. package/src/form/createFormValidation.ts +224 -224
  146. package/src/form/index.ts +11 -11
  147. package/src/grid/createGrid.ts +3 -1
  148. package/src/gridlist/createGridList.ts +16 -0
  149. package/src/gridlist/createGridListItem.ts +1 -1
  150. package/src/i18n/NumberFormatter.ts +266 -266
  151. package/src/i18n/createCollator.ts +79 -79
  152. package/src/i18n/createDateFormatter.ts +83 -83
  153. package/src/i18n/createFilter.ts +131 -131
  154. package/src/i18n/createNumberFormatter.ts +52 -52
  155. package/src/i18n/index.ts +40 -40
  156. package/src/i18n/locale.tsx +188 -188
  157. package/src/i18n/utils.ts +99 -99
  158. package/src/index.ts +51 -0
  159. package/src/interactions/createFocus.ts +6 -5
  160. package/src/interactions/createFocusWithin.ts +6 -5
  161. package/src/interactions/createLongPress.ts +174 -174
  162. package/src/interactions/createMove.ts +289 -289
  163. package/src/interactions/createPress.ts +5 -5
  164. package/src/landmark/createLandmark.ts +377 -377
  165. package/src/landmark/index.ts +8 -8
  166. package/src/link/createLink.ts +23 -8
  167. package/src/listbox/createListBox.ts +308 -269
  168. package/src/listbox/createOption.ts +162 -151
  169. package/src/listbox/index.ts +12 -12
  170. package/src/live-announcer/announce.ts +322 -322
  171. package/src/live-announcer/index.ts +9 -9
  172. package/src/menu/createMenu.ts +405 -396
  173. package/src/menu/createMenuItem.ts +149 -149
  174. package/src/menu/createMenuTrigger.ts +88 -88
  175. package/src/menu/index.ts +18 -18
  176. package/src/meter/createMeter.ts +1 -6
  177. package/src/numberfield/createNumberField.ts +311 -268
  178. package/src/numberfield/index.ts +5 -5
  179. package/src/overlays/ariaHideOutside.ts +219 -219
  180. package/src/overlays/createInteractOutside.ts +149 -149
  181. package/src/overlays/createModal.tsx +238 -202
  182. package/src/overlays/createOverlay.ts +165 -155
  183. package/src/overlays/createOverlayTrigger.ts +85 -85
  184. package/src/overlays/createPreventScroll.ts +266 -266
  185. package/src/overlays/index.ts +48 -44
  186. package/src/popover/calculatePosition.ts +6 -6
  187. package/src/popover/createOverlayPosition.ts +7 -4
  188. package/src/popover/createPopover.ts +21 -7
  189. package/src/progress/createProgressBar.ts +6 -1
  190. package/src/radio/createRadioGroup.ts +88 -14
  191. package/src/searchfield/createSearchField.ts +241 -186
  192. package/src/searchfield/index.ts +2 -2
  193. package/src/select/createHiddenSelect.tsx +263 -236
  194. package/src/select/createSelect.ts +373 -395
  195. package/src/select/index.ts +14 -14
  196. package/src/slider/createSlider.ts +364 -349
  197. package/src/slider/index.ts +2 -2
  198. package/src/ssr/index.tsx +370 -370
  199. package/src/table/createTable.ts +3 -1
  200. package/src/table/createTableColumnHeader.ts +1 -1
  201. package/src/table/createTableRow.ts +1 -1
  202. package/src/tabs/createTabs.ts +80 -51
  203. package/src/tag/createTag.ts +135 -6
  204. package/src/tag/createTagGroup.ts +7 -2
  205. package/src/toast/createToast.ts +8 -2
  206. package/src/toast/createToastRegion.ts +0 -1
  207. package/src/toolbar/createToolbar.ts +75 -1
  208. package/src/tooltip/createTooltip.ts +79 -79
  209. package/src/tooltip/createTooltipTrigger.ts +226 -222
  210. package/src/tooltip/index.ts +6 -6
  211. package/src/tree/createTree.ts +261 -246
  212. package/src/tree/createTreeItem.ts +282 -233
  213. package/src/tree/createTreeSelectionCheckbox.ts +68 -68
  214. package/src/tree/index.ts +16 -16
  215. package/src/tree/types.ts +91 -87
  216. package/src/utils/env.ts +55 -54
  217. package/src/utils/platform.ts +16 -6
  218. package/src/visually-hidden/createVisuallyHidden.ts +139 -124
  219. package/src/visually-hidden/index.ts +6 -6
@@ -1,151 +1,162 @@
1
- /**
2
- * Provides the behavior and accessibility implementation for an option in a listbox.
3
- * Based on @react-aria/listbox useOption.
4
- */
5
-
6
- import { type JSX, type Accessor } from 'solid-js';
7
- import { createPress } from '../interactions/createPress';
8
- import { createHover } from '../interactions/createHover';
9
- import { createFocusRing } from '../interactions/createFocusRing';
10
- import { mergeProps } from '../utils/mergeProps';
11
- import { access, type MaybeAccessor } from '../utils/reactivity';
12
- import { getListBoxData } from './createListBox';
13
- import type { ListState, Key } from '@proyecto-viviana/solid-stately';
14
-
15
- export interface AriaOptionProps {
16
- /** The unique key for the option. */
17
- key: Key;
18
- /** Whether the option is disabled. */
19
- isDisabled?: boolean;
20
- /** An accessible label for the option. */
21
- 'aria-label'?: string;
22
- /** Whether selection should occur on press up. */
23
- shouldSelectOnPressUp?: boolean;
24
- /** Whether to focus the option on hover. */
25
- shouldFocusOnHover?: boolean;
26
- }
27
-
28
- export interface OptionAria {
29
- /** Props for the option element. */
30
- optionProps: JSX.HTMLAttributes<HTMLElement>;
31
- /** Props for the label text inside the option. */
32
- labelProps: JSX.HTMLAttributes<HTMLElement>;
33
- /** Props for the description text inside the option. */
34
- descriptionProps: JSX.HTMLAttributes<HTMLElement>;
35
- /** Whether the option is currently selected. */
36
- isSelected: Accessor<boolean>;
37
- /** Whether the option is currently focused. */
38
- isFocused: Accessor<boolean>;
39
- /** Whether the option is keyboard focused. */
40
- isFocusVisible: Accessor<boolean>;
41
- /** Whether the option is currently pressed. */
42
- isPressed: Accessor<boolean>;
43
- /** Whether the option is disabled. */
44
- isDisabled: Accessor<boolean>;
45
- }
46
-
47
- /**
48
- * Provides the behavior and accessibility implementation for an option in a listbox.
49
- */
50
- export function createOption<T>(
51
- props: MaybeAccessor<AriaOptionProps>,
52
- state: ListState<T>,
53
- _ref?: () => HTMLElement | null
54
- ): OptionAria {
55
- const getProps = () => access(props);
56
-
57
- // Get shared data from listbox
58
- const getData = () => getListBoxData(state);
59
-
60
- // Computed states
61
- const isDisabled: Accessor<boolean> = () => {
62
- return getProps().isDisabled ?? state.isDisabled(getProps().key);
63
- };
64
-
65
- const isSelected: Accessor<boolean> = () => {
66
- return state.isSelected(getProps().key);
67
- };
68
-
69
- const isFocused: Accessor<boolean> = () => {
70
- return state.focusedKey() === getProps().key;
71
- };
72
-
73
- // Handle press
74
- const { pressProps, isPressed } = createPress({
75
- get isDisabled() {
76
- return isDisabled();
77
- },
78
- onPress() {
79
- const key = getProps().key;
80
- const data = getData();
81
-
82
- if (state.selectionMode() !== 'none') {
83
- state.select(key);
84
- }
85
-
86
- // Call onAction from listbox
87
- data?.onAction?.(key);
88
- },
89
- });
90
-
91
- // Handle hover
92
- const { hoverProps, isHovered } = createHover({
93
- get isDisabled() {
94
- return isDisabled();
95
- },
96
- onHoverStart() {
97
- const shouldFocus = getProps().shouldFocusOnHover ?? getData()?.shouldFocusOnHover;
98
- if (shouldFocus) {
99
- state.setFocusedKey(getProps().key);
100
- }
101
- },
102
- });
103
-
104
- // Handle focus ring
105
- const { isFocusVisible, focusProps } = createFocusRing();
106
-
107
- // Generate unique IDs for label and description
108
- const labelId = `${getProps().key}-label`;
109
- const descriptionId = `${getProps().key}-desc`;
110
-
111
- return {
112
- get optionProps() {
113
- const key = getProps().key;
114
- const selectionMode = state.selectionMode();
115
- const ariaLabel = getProps()['aria-label'];
116
-
117
- return mergeProps(
118
- pressProps as Record<string, unknown>,
119
- hoverProps as Record<string, unknown>,
120
- focusProps as Record<string, unknown>,
121
- {
122
- role: 'option',
123
- id: String(key),
124
- 'aria-selected': selectionMode !== 'none' ? isSelected() : undefined,
125
- 'aria-disabled': isDisabled() || undefined,
126
- 'aria-label': ariaLabel,
127
- 'aria-labelledby': !ariaLabel ? labelId : undefined,
128
- 'aria-describedby': descriptionId,
129
- tabIndex: isFocused() ? 0 : -1,
130
- 'data-selected': isSelected() || undefined,
131
- 'data-focused': isFocused() || undefined,
132
- 'data-focus-visible': isFocusVisible() || undefined,
133
- 'data-pressed': isPressed() || undefined,
134
- 'data-disabled': isDisabled() || undefined,
135
- 'data-hovered': isHovered() || undefined,
136
- } as Record<string, unknown>
137
- ) as JSX.HTMLAttributes<HTMLElement>;
138
- },
139
- labelProps: {
140
- id: labelId,
141
- },
142
- descriptionProps: {
143
- id: descriptionId,
144
- },
145
- isSelected,
146
- isFocused,
147
- isFocusVisible: () => isFocused() && isFocusVisible(),
148
- isPressed,
149
- isDisabled,
150
- };
151
- }
1
+ /**
2
+ * Provides the behavior and accessibility implementation for an option in a listbox.
3
+ * Based on @react-aria/listbox useOption.
4
+ */
5
+
6
+ import { type JSX, type Accessor } from 'solid-js';
7
+ import { createPress } from '../interactions/createPress';
8
+ import { createHover } from '../interactions/createHover';
9
+ import { createFocusRing } from '../interactions/createFocusRing';
10
+ import { mergeProps } from '../utils/mergeProps';
11
+ import { access, type MaybeAccessor } from '../utils/reactivity';
12
+ import { getListBoxData } from './createListBox';
13
+ import type { ListState, Key } from '@proyecto-viviana/solid-stately';
14
+
15
+ export interface AriaOptionProps {
16
+ /** The unique key for the option. */
17
+ key: Key;
18
+ /** Whether the option is disabled. */
19
+ isDisabled?: boolean;
20
+ /** An accessible label for the option. */
21
+ 'aria-label'?: string;
22
+ /** Whether selection should occur on press up. */
23
+ shouldSelectOnPressUp?: boolean;
24
+ /** Whether to focus the option on hover. */
25
+ shouldFocusOnHover?: boolean;
26
+ }
27
+
28
+ export interface OptionAria {
29
+ /** Props for the option element. */
30
+ optionProps: JSX.HTMLAttributes<HTMLElement>;
31
+ /** Props for the label text inside the option. */
32
+ labelProps: JSX.HTMLAttributes<HTMLElement>;
33
+ /** Props for the description text inside the option. */
34
+ descriptionProps: JSX.HTMLAttributes<HTMLElement>;
35
+ /** Whether the option is currently selected. */
36
+ isSelected: Accessor<boolean>;
37
+ /** Whether the option is currently focused. */
38
+ isFocused: Accessor<boolean>;
39
+ /** Whether the option is keyboard focused. */
40
+ isFocusVisible: Accessor<boolean>;
41
+ /** Whether the option is currently pressed. */
42
+ isPressed: Accessor<boolean>;
43
+ /** Whether the option is disabled. */
44
+ isDisabled: Accessor<boolean>;
45
+ }
46
+
47
+ /**
48
+ * Provides the behavior and accessibility implementation for an option in a listbox.
49
+ */
50
+ export function createOption<T>(
51
+ props: MaybeAccessor<AriaOptionProps>,
52
+ state: ListState<T>,
53
+ _ref?: () => HTMLElement | null
54
+ ): OptionAria {
55
+ const getProps = () => access(props);
56
+
57
+ // Get shared data from listbox
58
+ const getData = () => getListBoxData(state);
59
+
60
+ // Computed states
61
+ const isDisabled: Accessor<boolean> = () => {
62
+ return Boolean(getData()?.isDisabled || getProps().isDisabled || state.isDisabled(getProps().key));
63
+ };
64
+
65
+ const isSelected: Accessor<boolean> = () => {
66
+ return state.isSelected(getProps().key);
67
+ };
68
+
69
+ const isFocused: Accessor<boolean> = () => {
70
+ return state.focusedKey() === getProps().key;
71
+ };
72
+
73
+ const shouldSelectOnPressUp = () => {
74
+ return getProps().shouldSelectOnPressUp ?? getData()?.shouldSelectOnPressUp ?? true;
75
+ };
76
+
77
+ const selectAndAction = () => {
78
+ const key = getProps().key;
79
+ if (state.selectionMode() !== 'none') {
80
+ state.select(key);
81
+ }
82
+ getData()?.onAction?.(key);
83
+ };
84
+
85
+ // Handle press
86
+ const { pressProps, isPressed } = createPress({
87
+ get isDisabled() {
88
+ return isDisabled();
89
+ },
90
+ onPressStart(e) {
91
+ if (!shouldSelectOnPressUp() && e.pointerType !== 'keyboard' && e.pointerType !== 'virtual') {
92
+ selectAndAction();
93
+ }
94
+ },
95
+ onPress(e) {
96
+ if (shouldSelectOnPressUp() || e.pointerType === 'keyboard' || e.pointerType === 'virtual') {
97
+ selectAndAction();
98
+ }
99
+ },
100
+ });
101
+
102
+ // Handle hover
103
+ const { hoverProps, isHovered } = createHover({
104
+ get isDisabled() {
105
+ return isDisabled();
106
+ },
107
+ onHoverStart() {
108
+ const shouldFocus = getProps().shouldFocusOnHover ?? getData()?.shouldFocusOnHover;
109
+ if (shouldFocus) {
110
+ state.setFocusedKey(getProps().key);
111
+ }
112
+ },
113
+ });
114
+
115
+ // Handle focus ring
116
+ const { isFocusVisible, focusProps } = createFocusRing();
117
+
118
+ // Generate unique IDs for label and description
119
+ const labelId = `${getProps().key}-label`;
120
+ const descriptionId = `${getProps().key}-desc`;
121
+
122
+ return {
123
+ get optionProps() {
124
+ const key = getProps().key;
125
+ const selectionMode = state.selectionMode();
126
+ const ariaLabel = getProps()['aria-label'];
127
+
128
+ return mergeProps(
129
+ pressProps as Record<string, unknown>,
130
+ hoverProps as Record<string, unknown>,
131
+ focusProps as Record<string, unknown>,
132
+ {
133
+ role: 'option',
134
+ id: String(key),
135
+ 'aria-selected': selectionMode !== 'none' ? isSelected() : undefined,
136
+ 'aria-disabled': isDisabled() || undefined,
137
+ 'aria-label': ariaLabel,
138
+ 'aria-labelledby': !ariaLabel ? labelId : undefined,
139
+ 'aria-describedby': descriptionId,
140
+ tabIndex: isFocused() ? 0 : -1,
141
+ 'data-selected': isSelected() || undefined,
142
+ 'data-focused': isFocused() || undefined,
143
+ 'data-focus-visible': isFocusVisible() || undefined,
144
+ 'data-pressed': isPressed() || undefined,
145
+ 'data-disabled': isDisabled() || undefined,
146
+ 'data-hovered': isHovered() || undefined,
147
+ } as Record<string, unknown>
148
+ ) as JSX.HTMLAttributes<HTMLElement>;
149
+ },
150
+ labelProps: {
151
+ id: labelId,
152
+ },
153
+ descriptionProps: {
154
+ id: descriptionId,
155
+ },
156
+ isSelected,
157
+ isFocused,
158
+ isFocusVisible: () => isFocused() && isFocusVisible(),
159
+ isPressed,
160
+ isDisabled,
161
+ };
162
+ }
@@ -1,12 +1,12 @@
1
- export {
2
- createListBox,
3
- getListBoxData,
4
- type AriaListBoxProps,
5
- type ListBoxAria,
6
- } from './createListBox';
7
-
8
- export {
9
- createOption,
10
- type AriaOptionProps,
11
- type OptionAria,
12
- } from './createOption';
1
+ export {
2
+ createListBox,
3
+ getListBoxData,
4
+ type AriaListBoxProps,
5
+ type ListBoxAria,
6
+ } from './createListBox';
7
+
8
+ export {
9
+ createOption,
10
+ type AriaOptionProps,
11
+ type OptionAria,
12
+ } from './createOption';