@proyecto-viviana/solidaria-components 0.3.2 → 0.4.1

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 (417) hide show
  1. package/dist/ActionBar.d.ts.map +1 -1
  2. package/dist/ActionBar.js +175 -0
  3. package/dist/ActionBar.js.map +1 -0
  4. package/dist/ActionBar.jsx +119 -0
  5. package/dist/ActionBar.jsx.map +1 -0
  6. package/dist/ActionGroup.d.ts.map +1 -1
  7. package/dist/ActionGroup.js +179 -0
  8. package/dist/ActionGroup.js.map +1 -0
  9. package/dist/ActionGroup.jsx +129 -0
  10. package/dist/ActionGroup.jsx.map +1 -0
  11. package/dist/Alert.js +111 -0
  12. package/dist/Alert.js.map +1 -0
  13. package/dist/Alert.jsx +82 -0
  14. package/dist/Alert.jsx.map +1 -0
  15. package/dist/Autocomplete.d.ts +2 -2
  16. package/dist/Autocomplete.d.ts.map +1 -1
  17. package/dist/Autocomplete.js +130 -0
  18. package/dist/Autocomplete.js.map +1 -0
  19. package/dist/Autocomplete.jsx +116 -0
  20. package/dist/Autocomplete.jsx.map +1 -0
  21. package/dist/Breadcrumbs.d.ts.map +1 -1
  22. package/dist/Breadcrumbs.js +333 -0
  23. package/dist/Breadcrumbs.js.map +1 -0
  24. package/dist/Breadcrumbs.jsx +261 -0
  25. package/dist/Breadcrumbs.jsx.map +1 -0
  26. package/dist/Button.d.ts.map +1 -1
  27. package/dist/Button.js +348 -0
  28. package/dist/Button.js.map +1 -0
  29. package/dist/Button.jsx +314 -0
  30. package/dist/Button.jsx.map +1 -0
  31. package/dist/Calendar.d.ts +4 -4
  32. package/dist/Calendar.d.ts.map +1 -1
  33. package/dist/Calendar.js +573 -0
  34. package/dist/Calendar.js.map +1 -0
  35. package/dist/Calendar.jsx +342 -0
  36. package/dist/Calendar.jsx.map +1 -0
  37. package/dist/CalendarPicker.d.ts +33 -0
  38. package/dist/CalendarPicker.d.ts.map +1 -0
  39. package/dist/CalendarPicker.js +44 -0
  40. package/dist/CalendarPicker.js.map +1 -0
  41. package/dist/CalendarPicker.jsx +44 -0
  42. package/dist/CalendarPicker.jsx.map +1 -0
  43. package/dist/Checkbox.d.ts +83 -4
  44. package/dist/Checkbox.d.ts.map +1 -1
  45. package/dist/Checkbox.js +923 -0
  46. package/dist/Checkbox.js.map +1 -0
  47. package/dist/Checkbox.jsx +707 -0
  48. package/dist/Checkbox.jsx.map +1 -0
  49. package/dist/Collection.d.ts.map +1 -1
  50. package/dist/Collection.js +202 -0
  51. package/dist/Collection.js.map +1 -0
  52. package/dist/Collection.jsx +152 -0
  53. package/dist/Collection.jsx.map +1 -0
  54. package/dist/Color.d.ts.map +1 -1
  55. package/dist/Color.js +1717 -0
  56. package/dist/Color.js.map +1 -0
  57. package/dist/Color.jsx +1340 -0
  58. package/dist/Color.jsx.map +1 -0
  59. package/dist/ColorEditor.js +208 -0
  60. package/dist/ColorEditor.js.map +1 -0
  61. package/dist/ColorEditor.jsx +120 -0
  62. package/dist/ColorEditor.jsx.map +1 -0
  63. package/dist/ComboBox.d.ts +8 -4
  64. package/dist/ComboBox.d.ts.map +1 -1
  65. package/dist/ComboBox.js +1000 -0
  66. package/dist/ComboBox.js.map +1 -0
  67. package/dist/ComboBox.jsx +724 -0
  68. package/dist/ComboBox.jsx.map +1 -0
  69. package/dist/ContextualHelpTrigger.js +146 -0
  70. package/dist/ContextualHelpTrigger.js.map +1 -0
  71. package/dist/ContextualHelpTrigger.jsx +109 -0
  72. package/dist/ContextualHelpTrigger.jsx.map +1 -0
  73. package/dist/DateField.d.ts +14 -5
  74. package/dist/DateField.d.ts.map +1 -1
  75. package/dist/DateField.js +4 -0
  76. package/dist/DateField.jsx +4 -0
  77. package/dist/DateField2.js +502 -0
  78. package/dist/DateField2.js.map +1 -0
  79. package/dist/DateField2.jsx +354 -0
  80. package/dist/DateField2.jsx.map +1 -0
  81. package/dist/DatePicker.d.ts +46 -7
  82. package/dist/DatePicker.d.ts.map +1 -1
  83. package/dist/DatePicker.js +7 -0
  84. package/dist/DatePicker.jsx +7 -0
  85. package/dist/DatePicker2.js +1171 -0
  86. package/dist/DatePicker2.js.map +1 -0
  87. package/dist/DatePicker2.jsx +820 -0
  88. package/dist/DatePicker2.jsx.map +1 -0
  89. package/dist/DateRangePickerContext.d.ts +2 -0
  90. package/dist/DateRangePickerContext.d.ts.map +1 -1
  91. package/dist/Dialog.d.ts.map +1 -1
  92. package/dist/Dialog.js +337 -0
  93. package/dist/Dialog.js.map +1 -0
  94. package/dist/Dialog.jsx +192 -0
  95. package/dist/Dialog.jsx.map +1 -0
  96. package/dist/Disclosure.d.ts.map +1 -1
  97. package/dist/Disclosure.js +331 -0
  98. package/dist/Disclosure.js.map +1 -0
  99. package/dist/Disclosure.jsx +230 -0
  100. package/dist/Disclosure.jsx.map +1 -0
  101. package/dist/DragAndDrop.d.ts.map +1 -1
  102. package/dist/DragAndDrop.js +176 -0
  103. package/dist/DragAndDrop.js.map +1 -0
  104. package/dist/DragAndDrop.jsx +160 -0
  105. package/dist/DragAndDrop.jsx.map +1 -0
  106. package/dist/DropZone.d.ts.map +1 -1
  107. package/dist/DropZone.js +189 -0
  108. package/dist/DropZone.js.map +1 -0
  109. package/dist/DropZone.jsx +144 -0
  110. package/dist/DropZone.jsx.map +1 -0
  111. package/dist/FieldError.js +66 -0
  112. package/dist/FieldError.js.map +1 -0
  113. package/dist/FieldError.jsx +47 -0
  114. package/dist/FieldError.jsx.map +1 -0
  115. package/dist/FileTrigger.js +79 -0
  116. package/dist/FileTrigger.js.map +1 -0
  117. package/dist/FileTrigger.jsx +49 -0
  118. package/dist/FileTrigger.jsx.map +1 -0
  119. package/dist/Focusable.js +70 -0
  120. package/dist/Focusable.js.map +1 -0
  121. package/dist/Focusable.jsx +69 -0
  122. package/dist/Focusable.jsx.map +1 -0
  123. package/dist/Form.js +99 -0
  124. package/dist/Form.js.map +1 -0
  125. package/dist/Form.jsx +73 -0
  126. package/dist/Form.jsx.map +1 -0
  127. package/dist/GridList.d.ts +34 -2
  128. package/dist/GridList.d.ts.map +1 -1
  129. package/dist/GridList.js +723 -0
  130. package/dist/GridList.js.map +1 -0
  131. package/dist/GridList.jsx +552 -0
  132. package/dist/GridList.jsx.map +1 -0
  133. package/dist/Icon.d.ts.map +1 -1
  134. package/dist/Icon.js +127 -0
  135. package/dist/Icon.js.map +1 -0
  136. package/dist/Icon.jsx +72 -0
  137. package/dist/Icon.jsx.map +1 -0
  138. package/dist/Keyboard.js +30 -0
  139. package/dist/Keyboard.js.map +1 -0
  140. package/dist/Keyboard.jsx +24 -0
  141. package/dist/Keyboard.jsx.map +1 -0
  142. package/dist/Landmark.js +134 -0
  143. package/dist/Landmark.js.map +1 -0
  144. package/dist/Landmark.jsx +118 -0
  145. package/dist/Landmark.jsx.map +1 -0
  146. package/dist/Link.d.ts.map +1 -1
  147. package/dist/Link.js +219 -0
  148. package/dist/Link.js.map +1 -0
  149. package/dist/Link.jsx +189 -0
  150. package/dist/Link.jsx.map +1 -0
  151. package/dist/ListBox.d.ts +2 -2
  152. package/dist/ListBox.d.ts.map +1 -1
  153. package/dist/ListBox.js +831 -0
  154. package/dist/ListBox.js.map +1 -0
  155. package/dist/ListBox.jsx +644 -0
  156. package/dist/ListBox.jsx.map +1 -0
  157. package/dist/Menu.d.ts +27 -9
  158. package/dist/Menu.d.ts.map +1 -1
  159. package/dist/Menu.js +1254 -0
  160. package/dist/Menu.js.map +1 -0
  161. package/dist/Menu.jsx +1042 -0
  162. package/dist/Menu.jsx.map +1 -0
  163. package/dist/Meter.d.ts.map +1 -1
  164. package/dist/Meter.js +123 -0
  165. package/dist/Meter.js.map +1 -0
  166. package/dist/Meter.jsx +107 -0
  167. package/dist/Meter.jsx.map +1 -0
  168. package/dist/Modal.d.ts.map +1 -1
  169. package/dist/Modal.js +382 -0
  170. package/dist/Modal.js.map +1 -0
  171. package/dist/Modal.jsx +314 -0
  172. package/dist/Modal.jsx.map +1 -0
  173. package/dist/NumberField.d.ts +3 -3
  174. package/dist/NumberField.d.ts.map +1 -1
  175. package/dist/NumberField.js +573 -0
  176. package/dist/NumberField.js.map +1 -0
  177. package/dist/NumberField.jsx +443 -0
  178. package/dist/NumberField.jsx.map +1 -0
  179. package/dist/Popover.d.ts +10 -2
  180. package/dist/Popover.d.ts.map +1 -1
  181. package/dist/Popover.js +471 -0
  182. package/dist/Popover.js.map +1 -0
  183. package/dist/Popover.jsx +354 -0
  184. package/dist/Popover.jsx.map +1 -0
  185. package/dist/Pressable.js +69 -0
  186. package/dist/Pressable.js.map +1 -0
  187. package/dist/Pressable.jsx +68 -0
  188. package/dist/Pressable.jsx.map +1 -0
  189. package/dist/ProgressBar.d.ts.map +1 -1
  190. package/dist/ProgressBar.js +130 -0
  191. package/dist/ProgressBar.js.map +1 -0
  192. package/dist/ProgressBar.jsx +114 -0
  193. package/dist/ProgressBar.jsx.map +1 -0
  194. package/dist/RadioGroup.d.ts +82 -4
  195. package/dist/RadioGroup.d.ts.map +1 -1
  196. package/dist/RadioGroup.js +931 -0
  197. package/dist/RadioGroup.js.map +1 -0
  198. package/dist/RadioGroup.jsx +681 -0
  199. package/dist/RadioGroup.jsx.map +1 -0
  200. package/dist/RangeCalendar.d.ts.map +1 -1
  201. package/dist/RangeCalendar.js +546 -0
  202. package/dist/RangeCalendar.js.map +1 -0
  203. package/dist/RangeCalendar.jsx +323 -0
  204. package/dist/RangeCalendar.jsx.map +1 -0
  205. package/dist/RouterProvider.js +118 -0
  206. package/dist/RouterProvider.js.map +1 -0
  207. package/dist/RouterProvider.jsx +112 -0
  208. package/dist/RouterProvider.jsx.map +1 -0
  209. package/dist/SearchField.d.ts +2 -2
  210. package/dist/SearchField.d.ts.map +1 -1
  211. package/dist/SearchField.js +667 -0
  212. package/dist/SearchField.js.map +1 -0
  213. package/dist/SearchField.jsx +550 -0
  214. package/dist/SearchField.jsx.map +1 -0
  215. package/dist/Select.d.ts +7 -0
  216. package/dist/Select.d.ts.map +1 -1
  217. package/dist/Select.js +1044 -0
  218. package/dist/Select.js.map +1 -0
  219. package/dist/Select.jsx +759 -0
  220. package/dist/Select.jsx.map +1 -0
  221. package/dist/SelectionIndicator.d.ts.map +1 -1
  222. package/dist/SelectionIndicator.js +86 -0
  223. package/dist/SelectionIndicator.js.map +1 -0
  224. package/dist/SelectionIndicator.jsx +50 -0
  225. package/dist/SelectionIndicator.jsx.map +1 -0
  226. package/dist/Separator.js +97 -0
  227. package/dist/Separator.js.map +1 -0
  228. package/dist/Separator.jsx +85 -0
  229. package/dist/Separator.jsx.map +1 -0
  230. package/dist/SharedElementTransition.d.ts.map +1 -1
  231. package/dist/SharedElementTransition.js +167 -0
  232. package/dist/SharedElementTransition.js.map +1 -0
  233. package/dist/SharedElementTransition.jsx +140 -0
  234. package/dist/SharedElementTransition.jsx.map +1 -0
  235. package/dist/Slider.d.ts +33 -1
  236. package/dist/Slider.d.ts.map +1 -1
  237. package/dist/Slider.js +515 -0
  238. package/dist/Slider.js.map +1 -0
  239. package/dist/Slider.jsx +403 -0
  240. package/dist/Slider.jsx.map +1 -0
  241. package/dist/StepList.d.ts.map +1 -1
  242. package/dist/StepList.js +191 -0
  243. package/dist/StepList.js.map +1 -0
  244. package/dist/StepList.jsx +136 -0
  245. package/dist/StepList.jsx.map +1 -0
  246. package/dist/Switch.d.ts +65 -2
  247. package/dist/Switch.d.ts.map +1 -1
  248. package/dist/Switch.js +534 -0
  249. package/dist/Switch.js.map +1 -0
  250. package/dist/Switch.jsx +393 -0
  251. package/dist/Switch.jsx.map +1 -0
  252. package/dist/Table.d.ts +50 -0
  253. package/dist/Table.d.ts.map +1 -1
  254. package/dist/Table.js +1766 -0
  255. package/dist/Table.js.map +1 -0
  256. package/dist/Table.jsx +1355 -0
  257. package/dist/Table.jsx.map +1 -0
  258. package/dist/Tabs.d.ts +0 -4
  259. package/dist/Tabs.d.ts.map +1 -1
  260. package/dist/Tabs.js +598 -0
  261. package/dist/Tabs.js.map +1 -0
  262. package/dist/Tabs.jsx +367 -0
  263. package/dist/Tabs.jsx.map +1 -0
  264. package/dist/TagGroup.d.ts +3 -1
  265. package/dist/TagGroup.d.ts.map +1 -1
  266. package/dist/TagGroup.js +382 -0
  267. package/dist/TagGroup.js.map +1 -0
  268. package/dist/TagGroup.jsx +273 -0
  269. package/dist/TagGroup.jsx.map +1 -0
  270. package/dist/Text.d.ts +18 -6
  271. package/dist/Text.d.ts.map +1 -1
  272. package/dist/Text.js +42 -0
  273. package/dist/Text.js.map +1 -0
  274. package/dist/Text.jsx +35 -0
  275. package/dist/Text.jsx.map +1 -0
  276. package/dist/TextField.d.ts +6 -6
  277. package/dist/TextField.d.ts.map +1 -1
  278. package/dist/TextField.js +439 -0
  279. package/dist/TextField.js.map +1 -0
  280. package/dist/TextField.jsx +406 -0
  281. package/dist/TextField.jsx.map +1 -0
  282. package/dist/TimeField.d.ts +17 -53
  283. package/dist/TimeField.d.ts.map +1 -1
  284. package/dist/TimeField.js +278 -0
  285. package/dist/TimeField.js.map +1 -0
  286. package/dist/TimeField.jsx +218 -0
  287. package/dist/TimeField.jsx.map +1 -0
  288. package/dist/Toast.d.ts +14 -0
  289. package/dist/Toast.d.ts.map +1 -1
  290. package/dist/Toast.js +551 -0
  291. package/dist/Toast.js.map +1 -0
  292. package/dist/Toast.jsx +361 -0
  293. package/dist/Toast.jsx.map +1 -0
  294. package/dist/ToggleButton.d.ts.map +1 -1
  295. package/dist/ToggleButton.js +123 -0
  296. package/dist/ToggleButton.js.map +1 -0
  297. package/dist/ToggleButton.jsx +88 -0
  298. package/dist/ToggleButton.jsx.map +1 -0
  299. package/dist/ToggleButtonGroup.d.ts.map +1 -1
  300. package/dist/ToggleButtonGroup.js +114 -0
  301. package/dist/ToggleButtonGroup.js.map +1 -0
  302. package/dist/ToggleButtonGroup.jsx +85 -0
  303. package/dist/ToggleButtonGroup.jsx.map +1 -0
  304. package/dist/Toolbar.js +112 -0
  305. package/dist/Toolbar.js.map +1 -0
  306. package/dist/Toolbar.jsx +92 -0
  307. package/dist/Toolbar.jsx.map +1 -0
  308. package/dist/Tooltip.d.ts.map +1 -1
  309. package/dist/Tooltip.js +539 -0
  310. package/dist/Tooltip.js.map +1 -0
  311. package/dist/Tooltip.jsx +465 -0
  312. package/dist/Tooltip.jsx.map +1 -0
  313. package/dist/Tree.d.ts +14 -2
  314. package/dist/Tree.d.ts.map +1 -1
  315. package/dist/Tree.js +1424 -0
  316. package/dist/Tree.js.map +1 -0
  317. package/dist/Tree.jsx +1172 -0
  318. package/dist/Tree.jsx.map +1 -0
  319. package/dist/Virtualizer.d.ts +16 -2
  320. package/dist/Virtualizer.d.ts.map +1 -1
  321. package/dist/Virtualizer.js +2 -0
  322. package/dist/Virtualizer.jsx +2 -0
  323. package/dist/Virtualizer2.js +751 -0
  324. package/dist/Virtualizer2.js.map +1 -0
  325. package/dist/Virtualizer2.jsx +730 -0
  326. package/dist/Virtualizer2.jsx.map +1 -0
  327. package/dist/VirtualizerLayouts.d.ts +18 -0
  328. package/dist/VirtualizerLayouts.d.ts.map +1 -1
  329. package/dist/VisuallyHidden.js +42 -0
  330. package/dist/VisuallyHidden.js.map +1 -0
  331. package/dist/VisuallyHidden.jsx +35 -0
  332. package/dist/VisuallyHidden.jsx.map +1 -0
  333. package/dist/contexts.js +33 -0
  334. package/dist/contexts.js.map +1 -0
  335. package/dist/contexts.jsx +33 -0
  336. package/dist/contexts.jsx.map +1 -0
  337. package/dist/index.d.ts +9 -9
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +69 -23932
  340. package/dist/index.jsx +69 -18337
  341. package/dist/useDragAndDrop.d.ts +0 -8
  342. package/dist/useDragAndDrop.d.ts.map +1 -1
  343. package/dist/useDragAndDrop.js +2 -0
  344. package/dist/useDragAndDrop.jsx +2 -0
  345. package/dist/useDragAndDrop2.js +399 -0
  346. package/dist/useDragAndDrop2.js.map +1 -0
  347. package/dist/useDragAndDrop2.jsx +399 -0
  348. package/dist/useDragAndDrop2.jsx.map +1 -0
  349. package/dist/utils.d.ts +84 -11
  350. package/dist/utils.d.ts.map +1 -1
  351. package/dist/utils.js +285 -0
  352. package/dist/utils.js.map +1 -0
  353. package/dist/utils.jsx +277 -0
  354. package/dist/utils.jsx.map +1 -0
  355. package/dist/virtualizer/Layout.js +144 -0
  356. package/dist/virtualizer/Layout.js.map +1 -0
  357. package/dist/virtualizer/Layout.jsx +144 -0
  358. package/dist/virtualizer/Layout.jsx.map +1 -0
  359. package/package.json +395 -4
  360. package/src/ActionBar.tsx +10 -12
  361. package/src/ActionGroup.tsx +5 -3
  362. package/src/Autocomplete.tsx +14 -9
  363. package/src/Breadcrumbs.tsx +58 -39
  364. package/src/Button.tsx +22 -2
  365. package/src/Calendar.tsx +57 -11
  366. package/src/CalendarPicker.tsx +73 -0
  367. package/src/Checkbox.tsx +539 -3
  368. package/src/Collection.tsx +9 -3
  369. package/src/Color.tsx +84 -41
  370. package/src/ComboBox.tsx +97 -21
  371. package/src/DateField.tsx +304 -53
  372. package/src/DatePicker.tsx +402 -62
  373. package/src/DateRangePickerContext.tsx +2 -0
  374. package/src/Dialog.tsx +13 -5
  375. package/src/Disclosure.tsx +7 -1
  376. package/src/DragAndDrop.tsx +3 -1
  377. package/src/DropZone.tsx +3 -1
  378. package/src/GridList.tsx +133 -26
  379. package/src/Icon.tsx +3 -1
  380. package/src/Link.tsx +3 -1
  381. package/src/ListBox.tsx +354 -25
  382. package/src/Menu.tsx +252 -128
  383. package/src/Meter.tsx +3 -1
  384. package/src/Modal.tsx +120 -56
  385. package/src/NumberField.tsx +51 -8
  386. package/src/Popover.tsx +68 -17
  387. package/src/ProgressBar.tsx +3 -1
  388. package/src/RadioGroup.tsx +468 -4
  389. package/src/RangeCalendar.tsx +123 -2
  390. package/src/SearchField.tsx +80 -4
  391. package/src/Select.tsx +122 -26
  392. package/src/SelectionIndicator.tsx +3 -1
  393. package/src/SharedElementTransition.tsx +95 -37
  394. package/src/Slider.tsx +159 -13
  395. package/src/StepList.tsx +0 -7
  396. package/src/Switch.tsx +395 -2
  397. package/src/Table.tsx +428 -99
  398. package/src/Tabs.tsx +17 -45
  399. package/src/TagGroup.tsx +29 -7
  400. package/src/Text.tsx +31 -10
  401. package/src/TextField.tsx +44 -6
  402. package/src/TimeField.tsx +127 -192
  403. package/src/Toast.tsx +79 -14
  404. package/src/ToggleButton.tsx +3 -1
  405. package/src/ToggleButtonGroup.tsx +3 -1
  406. package/src/Tooltip.tsx +3 -1
  407. package/src/Tree.tsx +91 -13
  408. package/src/Virtualizer.tsx +180 -31
  409. package/src/VirtualizerLayouts.ts +45 -10
  410. package/src/index.ts +51 -8
  411. package/src/useDragAndDrop.ts +8 -10
  412. package/src/utils.tsx +246 -30
  413. package/dist/HiddenTimeInput.d.ts +0 -25
  414. package/dist/HiddenTimeInput.d.ts.map +0 -1
  415. package/dist/index.js.map +0 -1
  416. package/dist/index.jsx.map +0 -1
  417. package/src/HiddenTimeInput.tsx +0 -133
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListBox.jsx","names":["mergeProps"],"sources":["../src/ListBox.tsx"],"sourcesContent":["/**\n * ListBox component for solidaria-components\n *\n * A pre-wired headless listbox that combines state + aria hooks.\n * Port of react-aria-components/src/ListBox.tsx\n */\n\nimport {\n type JSX,\n createContext,\n createEffect,\n createMemo,\n createSignal,\n on,\n onCleanup,\n splitProps,\n useContext,\n For,\n Show,\n} from \"solid-js\";\nimport {\n createListBox,\n createOption,\n createFocusRing,\n createScrollIntoViewOnFocus,\n createStringFormatter,\n createDragSession,\n getGlobalDraggingCollectionRef,\n getGlobalDraggingKeys,\n registerDropItem,\n dndIntlStrings,\n mergeProps,\n moveVirtualFocus,\n useLocale,\n FOCUS_EVENT,\n CLEAR_FOCUS_EVENT,\n type AriaListBoxProps,\n type AriaOptionProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createListState,\n createFilteredListState,\n type ListState,\n type ListFilterFn,\n type Key,\n type DropTarget,\n} from \"@proyecto-viviana/solid-stately\";\nimport { useAutocompleteCollection } from \"./Autocomplete\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\nimport { SharedElementTransition } from \"./SharedElementTransition\";\nimport {\n SelectionIndicatorContext,\n type SelectionIndicatorContextValue,\n} from \"./SelectionIndicator\";\nimport { useVirtualizerContext } from \"./Virtualizer\";\nimport { type DragAndDropHooks } from \"./useDragAndDrop\";\nimport {\n getNormalizedDropTargetKey,\n mergePersistedKeysIntoVirtualRange,\n useDndPersistedKeys,\n useRenderDropIndicator,\n DropIndicatorContext,\n type DropIndicatorProps,\n} from \"./DragAndDrop\";\nimport type { ItemDropTarget } from \"@proyecto-viviana/solid-stately\";\nimport {\n CollectionRendererContext,\n Section,\n Header,\n Group,\n type CollectionEntry,\n type CollectionRendererContextValue,\n type SectionProps,\n useCollectionRenderer,\n isCollectionSection,\n flattenCollectionEntries,\n} from \"./Collection\";\n\nexport interface ListBoxRenderProps {\n /** Whether the listbox has focus. */\n isFocused: boolean;\n /** Whether the listbox has keyboard focus. */\n isFocusVisible: boolean;\n /** Whether the listbox is disabled. */\n isDisabled: boolean;\n /** Whether the listbox is empty. */\n isEmpty: boolean;\n}\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) return;\n if (typeof ref === \"function\") ref(el);\n else ref.current = el;\n}\n\nexport interface ListBoxProps<T> extends Omit<AriaListBoxProps, \"children\">, SlotProps {\n /** The items to render in the listbox. */\n items: CollectionEntry<T>[];\n /** Function to get the key from an item. */\n getKey?: (item: T) => Key;\n /** Function to get the text value from an item. */\n getTextValue?: (item: T) => string;\n /** Function to check if an item is disabled. */\n getDisabled?: (item: T) => boolean;\n /** The selection mode. */\n selectionMode?: \"none\" | \"single\" | \"multiple\";\n /** The selection behavior (toggle vs replace). */\n selectionBehavior?: \"toggle\" | \"replace\";\n /** Whether disabled items can still receive focus. */\n disabledBehavior?: \"selection\" | \"all\";\n /** Keys of disabled items. */\n disabledKeys?: Iterable<Key>;\n /** Currently selected keys (controlled). */\n selectedKeys?: \"all\" | Iterable<Key>;\n /** Default selected keys (uncontrolled). */\n defaultSelectedKeys?: \"all\" | Iterable<Key>;\n /** Handler called when selection changes. */\n onSelectionChange?: (keys: \"all\" | Set<Key>) => void;\n /** The children of the component. A function may be provided to render each item. */\n children: (item: T) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<ListBoxRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<ListBoxRenderProps>;\n /** A function to render when the listbox is empty. */\n renderEmptyState?: () => JSX.Element;\n /** Whether there are more items to load. */\n hasMore?: boolean;\n /** Whether additional items are currently loading. */\n isLoading?: boolean;\n /** Called when the load more sentinel becomes visible. */\n onLoadMore?: () => void | Promise<void>;\n /** Ref for the listbox element. */\n ref?: RefLike<HTMLDivElement>;\n /** Drag and drop hooks from `useDragAndDrop`. */\n dragAndDropHooks?: DragAndDropHooks<T>;\n /** Layout hint for styling parity. */\n layout?: \"stack\" | \"grid\";\n /** Orientation hint for styling parity. */\n orientation?: \"vertical\" | \"horizontal\";\n /** Slot definitions provided through ListBoxContext. */\n slots?: Record<string, Partial<ListBoxProps<T>>>;\n}\n\nexport interface ListBoxOptionRenderProps {\n /** Whether the option is selected. */\n isSelected: boolean;\n /** Whether the option is focused. */\n isFocused: boolean;\n /** Whether the option has keyboard focus. */\n isFocusVisible: boolean;\n /** Whether the option is pressed. */\n isPressed: boolean;\n /** Whether the option is hovered. */\n isHovered: boolean;\n /** Whether the option is disabled. */\n isDisabled: boolean;\n}\n\nexport interface ListBoxOptionProps<T>\n extends Omit<AriaOptionProps, \"children\" | \"key\">, SlotProps {\n /** The unique key for the option. */\n id: Key;\n /** The item value. */\n item?: T;\n /** The children of the option. A function may be provided to receive render props. */\n children?: RenderChildren<ListBoxOptionRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<ListBoxOptionRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<ListBoxOptionRenderProps>;\n /** The text value of the option (for typeahead). */\n textValue?: string;\n /** Ref for the option element. */\n ref?: RefLike<HTMLDivElement>;\n}\n\nexport interface ListBoxLoadMoreItemProps extends SlotProps {\n /** Called when the sentinel becomes visible. */\n onLoadMore: () => void | Promise<void>;\n /** Whether additional items are currently loading. */\n isLoading?: boolean;\n /** Scroll offset multiplier for early loading trigger (default: 1 = 100% of viewport height). */\n scrollOffset?: number;\n /** Content for the load more row. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<{ isLoading: boolean }>;\n /** The inline style for the element. */\n style?: StyleOrFunction<{ isLoading: boolean }>;\n}\n\nexport interface ListBoxSectionProps extends SectionProps {}\n\ninterface ListBoxContextValue<T> {\n state: ListState<T>;\n isDisabled: () => boolean;\n dragAndDropHooks?: DragAndDropHooks<unknown>;\n dragState?: unknown;\n dropState?: unknown;\n slots?: Record<string, Partial<ListBoxProps<T>>>;\n}\n\nexport const ListBoxContext = createContext<ListBoxContextValue<unknown> | null>(null);\nexport const ListBoxStateContext = createContext<ListState<unknown> | null>(null);\nexport const ListStateContext = ListBoxStateContext;\n\n/**\n * A listbox displays a list of options and allows a user to select one or more of them.\n */\nexport function ListBox<T>(props: ListBoxProps<T>): JSX.Element {\n const parentContext = useContext(ListBoxContext) as ListBoxContextValue<T> | null;\n const contextSlotProps = parentContext?.slots?.[props.slot ?? \"default\"];\n const mergedListBoxProps = contextSlotProps\n ? (mergeProps(contextSlotProps, props) as ListBoxProps<T>)\n : props;\n const [local, stateProps, ariaProps] = splitProps(\n mergedListBoxProps,\n [\n \"children\",\n \"class\",\n \"style\",\n \"slot\",\n \"renderEmptyState\",\n \"hasMore\",\n \"isLoading\",\n \"onLoadMore\",\n \"dragAndDropHooks\",\n \"slots\",\n \"ref\",\n ],\n [\n \"items\",\n \"getKey\",\n \"getTextValue\",\n \"getDisabled\",\n \"disabledKeys\",\n \"disabledBehavior\",\n \"selectionMode\",\n \"selectionBehavior\",\n \"selectedKeys\",\n \"defaultSelectedKeys\",\n \"onSelectionChange\",\n \"layout\",\n \"orientation\",\n ],\n );\n\n const flatItems = createMemo<T[]>(() => {\n return flattenCollectionEntries(stateProps.items);\n });\n\n const hasSections = createMemo(() => stateProps.items.some((item) => isCollectionSection(item)));\n\n const baseState = createListState<T>({\n get items() {\n return flatItems();\n },\n get getKey() {\n return stateProps.getKey;\n },\n get getTextValue() {\n return stateProps.getTextValue;\n },\n get getDisabled() {\n return stateProps.getDisabled;\n },\n get disabledKeys() {\n return stateProps.disabledKeys;\n },\n get selectionMode() {\n return stateProps.selectionMode;\n },\n get selectionBehavior() {\n return stateProps.selectionBehavior;\n },\n get disabledBehavior() {\n return stateProps.disabledBehavior;\n },\n get selectedKeys() {\n return stateProps.selectedKeys;\n },\n get defaultSelectedKeys() {\n return stateProps.defaultSelectedKeys;\n },\n get onSelectionChange() {\n return stateProps.onSelectionChange;\n },\n });\n\n // When this ListBox is the collection of an Autocomplete, the input and the\n // collection are separate components bridged by context. The collection's\n // state is filtered by the input's predicate (mirrors RAC's\n // UNSTABLE_useFilteredListState), and virtual focus is driven across the\n // component boundary by synthetic DOM events (see the bridge effects below).\n // ComboBox/Picker never provide this context, so their createListBox path is\n // untouched.\n const autocompleteCtx = useAutocompleteCollection();\n const state = autocompleteCtx\n ? createFilteredListState<T>(\n baseState,\n () => autocompleteCtx.filter as ListFilterFn<T> | undefined,\n )\n : baseState;\n\n const resolveDisabled = (): boolean => {\n const disabled = ariaProps.isDisabled;\n if (typeof disabled === \"function\") {\n return (disabled as () => boolean)();\n }\n return !!disabled;\n };\n\n const locale = useLocale();\n // A parent Virtualizer publishes `isVirtualized` through the collection\n // renderer context; the base ListBox forwards it into createListBox so each\n // option emits aria-posinset/aria-setsize for the windowed (incomplete) DOM.\n const parentCollectionRenderer = useCollectionRenderer<unknown>();\n const listBoxAria = createListBox(\n {\n ...ariaProps,\n get isVirtualized() {\n return parentCollectionRenderer?.isVirtualized ?? ariaProps.isVirtualized;\n },\n // Under Autocomplete, the input owns the collection's id (its\n // aria-controls target), accessible name, and virtual-focus/type-ahead\n // config; prefer the bridged values over any locally-passed props.\n get id() {\n return autocompleteCtx?.collectionProps.id ?? (ariaProps as { id?: string }).id;\n },\n get \"aria-label\"() {\n return autocompleteCtx?.collectionProps[\"aria-label\"] ?? ariaProps[\"aria-label\"];\n },\n get shouldUseVirtualFocus() {\n return (\n autocompleteCtx?.collectionProps.shouldUseVirtualFocus ?? ariaProps.shouldUseVirtualFocus\n );\n },\n get disallowTypeAhead() {\n return autocompleteCtx?.collectionProps.disallowTypeAhead ?? ariaProps.disallowTypeAhead;\n },\n get isDisabled() {\n return resolveDisabled();\n },\n get orientation() {\n return stateProps.orientation ?? \"vertical\";\n },\n get direction() {\n return locale().direction;\n },\n },\n state,\n () => listRef(),\n );\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const renderValues = createMemo<ListBoxRenderProps>(() => ({\n isFocused: state.isFocused() || isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: resolveDisabled(),\n isEmpty: state.collection().size === 0,\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-ListBox\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() => {\n const filtered = filterDOMProps(ariaProps as Record<string, unknown>, { global: true });\n return filtered;\n });\n\n const cleanListBoxProps = () => {\n const { ref: _ref1, ...rest } = listBoxAria.listBoxProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref2, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const cleanLabelProps = () => {\n const { ref: _ref3, ...rest } = listBoxAria.labelProps as Record<string, unknown>;\n return rest;\n };\n const [listRef, setListRef] = createSignal<HTMLElement | null>(null);\n\n // Reveal the activedescendant-focused option on keyboard navigation. The\n // listbox keeps real DOM focus on itself, so the browser won't natively scroll\n // an off-screen focused option into view the way roving tabindex would.\n createScrollIntoViewOnFocus({\n focusedKey: () => state.focusedKey(),\n isActive: () => state.isFocused(),\n ref: () => listRef(),\n });\n\n // Autocomplete bridge. createListBox reimplements navigation inline (it does\n // not route through createSelectableCollection), so the virtual-focus event\n // wiring the Autocomplete input relies on lives here, gated on the bridge\n // context. This mirrors createSelectableCollection's FOCUS_EVENT/CLEAR_FOCUS_EVENT\n // handlers and useSelectableItem's per-item moveVirtualFocus, at the component\n // layer, without touching the shared hooks (protecting ComboBox/Picker).\n if (autocompleteCtx) {\n // Forward path: the input dispatches FOCUS_EVENT/CLEAR_FOCUS_EVENT onto the\n // collection element. FOCUS_EVENT marks the collection focused (and, when the\n // user types forward, requests the first item); the actual arrow navigation\n // arrives as a re-dispatched KeyboardEvent handled by createListBox's onKeyDown.\n let shouldVirtualFocusFirst = false;\n createEffect(() => {\n const list = listRef();\n if (!list) return;\n const onFocusEvent = (e: Event) => {\n const detail = (e as CustomEvent).detail;\n e.stopPropagation();\n state.setFocused(true);\n if (detail?.focusStrategy === \"first\") {\n shouldVirtualFocusFirst = true;\n }\n };\n const onClearFocusEvent = (e: Event) => {\n e.stopPropagation();\n state.setFocused(false);\n if ((e as CustomEvent).detail?.clearFocusKey) {\n state.setFocusedKey(null);\n }\n };\n list.addEventListener(FOCUS_EVENT, onFocusEvent);\n list.addEventListener(CLEAR_FOCUS_EVENT, onClearFocusEvent);\n onCleanup(() => {\n list.removeEventListener(FOCUS_EVENT, onFocusEvent);\n list.removeEventListener(CLEAR_FOCUS_EVENT, onClearFocusEvent);\n });\n });\n\n // Focus the first item once the (filtered) collection settles after the user\n // types forward. If nothing survives the filter, clear the input's active\n // descendant by moving virtual focus onto the collection itself (its focusin\n // reaches the input's clear branch). Mirrors useSelectableCollection.\n createEffect(\n on(\n () => [state.collection().getFirstKey?.() ?? null, state.collection().size] as const,\n ([firstKey, size]) => {\n if (!shouldVirtualFocusFirst) return;\n if (firstKey == null) {\n const list = listRef();\n if (list) moveVirtualFocus(list);\n if (size > 0) shouldVirtualFocusFirst = false;\n } else {\n state.setFocusedKey(firstKey);\n shouldVirtualFocusFirst = false;\n }\n },\n { defer: true },\n ),\n );\n\n // Reverse path: mirror the focused key onto the option's DOM element via a\n // synthetic, bubbling focusin (moveVirtualFocus). The input's focusin listener\n // reads target.id into its aria-activedescendant. Option ids are String(key)\n // in this path (createOption). Real DOM focus stays on the input.\n createEffect(() => {\n const key = state.focusedKey();\n const list = listRef();\n if (!list || !state.isFocused()) return;\n if (key == null) return;\n const el = list.ownerDocument.getElementById(String(key));\n if (el) moveVirtualFocus(el);\n });\n }\n\n const isEmpty = () => stateProps.items.length === 0;\n const getItemNodes = createMemo(() =>\n Array.from(state.collection()).filter((node) => node.type === \"item\"),\n );\n const getDropTargetByIndex = (\n index: number,\n position: \"before\" | \"after\" | \"on\",\n ): DropTarget | null => {\n const node = getItemNodes()[index];\n if (!node) return null;\n return { type: \"item\", key: node.key, dropPosition: position };\n };\n const hasDroppableDnd = createMemo(() => {\n const hooks = local.dragAndDropHooks;\n return Boolean(\n hooks?.useDroppableCollectionState &&\n hooks.useDroppableCollection &&\n (hooks.dropTargetDelegate ||\n parentCollectionRenderer?.dropTargetDelegate ||\n hooks.ListDropTargetDelegate),\n );\n });\n const dropState = createMemo(() => {\n if (!hasDroppableDnd()) return undefined;\n return local.dragAndDropHooks?.useDroppableCollectionState?.({});\n });\n const hasDraggableDnd = createMemo(() => {\n const hooks = local.dragAndDropHooks;\n return Boolean(hooks?.useDraggableCollectionState && hooks.useDraggableCollection);\n });\n const dragState = createMemo(() => {\n if (!hasDraggableDnd()) return undefined;\n return local.dragAndDropHooks?.useDraggableCollectionState?.({\n items: flatItems(),\n });\n });\n createEffect(() => {\n if (!hasDraggableDnd()) return;\n const hooks = local.dragAndDropHooks;\n const activeDragState = dragState();\n if (!hooks?.useDraggableCollection || !activeDragState) return;\n hooks.useDraggableCollection({}, activeDragState, () => listRef());\n });\n const droppableCollection = createMemo(() => {\n if (!hasDroppableDnd()) return undefined;\n const hooks = local.dragAndDropHooks;\n const activeDropState = dropState();\n if (!hooks?.useDroppableCollection || !activeDropState) return undefined;\n const resolveDirection = (): \"ltr\" | \"rtl\" => {\n const el = listRef();\n if (el && typeof window !== \"undefined\" && typeof window.getComputedStyle === \"function\") {\n const dir = window.getComputedStyle(el).direction;\n if (dir === \"rtl\") return \"rtl\";\n }\n return typeof document !== \"undefined\" && document.dir === \"rtl\" ? \"rtl\" : \"ltr\";\n };\n const dropTargetDelegate =\n hooks.dropTargetDelegate ??\n parentCollectionRenderer?.dropTargetDelegate ??\n (hooks.ListDropTargetDelegate\n ? new hooks.ListDropTargetDelegate(\n () => state.collection(),\n () => listRef(),\n { layout: \"stack\", orientation: \"vertical\", direction: resolveDirection() },\n )\n : undefined);\n if (!dropTargetDelegate) return undefined;\n return hooks.useDroppableCollection(\n {\n dropTargetDelegate,\n keyboardDelegate: {\n getFirstKey: () => state.collection().getFirstKey(),\n getLastKey: () => state.collection().getLastKey(),\n getKeyBelow: (key) => state.collection().getKeyAfter(key),\n getKeyAbove: (key) => state.collection().getKeyBefore(key),\n getKeyPageBelow: (key) => state.collection().getKeyAfter(key),\n getKeyPageAbove: (key) => state.collection().getKeyBefore(key),\n },\n // The real collection drives keyboard drop-target navigation\n // (`navigate()` walks getKeyAfter/getKeyBefore) and post-drop focus\n // restoration. Reading it here re-registers the drop target when the\n // collection changes (mirrors upstream keying its effect on the state).\n collection: state.collection(),\n selectedKeys: state.selectionManager.selectedKeys,\n setSelectedKeys: (keys) => state.selectionManager.setSelectedKeys(keys),\n setFocusedKey: (key) => state.setFocusedKey(key),\n },\n activeDropState,\n () => listRef(),\n );\n });\n const isRootDropTarget = createMemo(() => {\n return Boolean(dropState()?.target?.type === \"root\");\n });\n const dndRenderDropIndicator = createMemo(() =>\n useRenderDropIndicator(local.dragAndDropHooks, dropState()),\n );\n const dndDropIndicator = (index: number, position: \"before\" | \"after\" | \"on\") => {\n const target = getDropTargetByIndex(index, position);\n if (!target || target.type !== \"item\") return undefined;\n return dndRenderDropIndicator()?.(target);\n };\n\n // ── Drop indicator (Fix B: labeled, self-focusing) ─────────────────────────\n // The port of react-aria-components' ListBoxDropIndicatorWrapper +\n // useDropIndicator. The droppable-collection state layer diverged to a minimal\n // reactive target-holder with no collection reference, so the label (which\n // needs the collection's text values) and the self-focus (which needs the live\n // drag session) are computed here in the host layer, where both are available.\n const dndFormatter = createStringFormatter(dndIntlStrings);\n const dragSession = createDragSession();\n const dropIndicatorTargetsEqual = (\n a: DropTarget | null | undefined,\n b: ItemDropTarget,\n ): boolean =>\n !!a && a.type === \"item\" && a.key === b.key && a.dropPosition === b.dropPosition;\n // Faithful port of useDropIndicator's label logic: \"Drop on X\" for an on-item\n // target, else \"Insert between X and Y\" / \"Insert before X\" / \"Insert after X\"\n // resolved from the target's neighbours in the collection.\n const dropIndicatorLabel = (target: ItemDropTarget): string => {\n const collection = state.collection();\n const getText = (key: Key | null): string => {\n if (key == null) return \"\";\n return collection.getTextValue(key) ?? collection.getItem(key)?.textValue ?? \"\";\n };\n if (target.dropPosition === \"on\") {\n return dndFormatter().format(\"dropOnItem\", { itemText: getText(target.key) });\n }\n let before: Key | null;\n let after: Key | null;\n if (target.dropPosition === \"before\") {\n const prevKey = collection.getKeyBefore(target.key);\n const prevNode = prevKey != null ? collection.getItem(prevKey) : null;\n before = prevNode?.type === \"item\" ? prevNode.key : null;\n } else {\n before = target.key;\n }\n if (target.dropPosition === \"after\") {\n const nextKey = collection.getKeyAfter(target.key);\n const nextNode = nextKey != null ? collection.getItem(nextKey) : null;\n after = nextNode?.type === \"item\" ? nextNode.key : null;\n } else {\n after = target.key;\n }\n if (before != null && after != null) {\n return dndFormatter().format(\"insertBetween\", {\n beforeItemText: getText(before),\n afterItemText: getText(after),\n });\n }\n if (before != null) {\n return dndFormatter().format(\"insertAfter\", { itemText: getText(before) });\n }\n if (after != null) {\n return dndFormatter().format(\"insertBefore\", { itemText: getText(after) });\n }\n return \"\";\n };\n // Wrap the raw Set<string> the DragManager hands drop items into the DragTypes\n // delegate the port state expects (mirrors createDroppableCollection.wrapTypes).\n const wrapDropTypes = (types: Set<string>) => ({\n has: (type: string | string[]) => {\n if (typeof type === \"string\") return types.has(type);\n if (Array.isArray(type)) return type.some((t) => typeof t === \"string\" && types.has(t));\n return false;\n },\n });\n const ListBoxDropIndicator = (props: { target: ItemDropTarget }): JSX.Element => {\n const [indicatorRef, setIndicatorRef] = createSignal<HTMLDivElement | null>(null);\n const isDropTarget = createMemo(() =>\n dropIndicatorTargetsEqual(dropState()?.target, props.target),\n );\n // aria-hidden mirrors useDropIndicator: outside a drag session, or on a\n // non-active target, the indicator is hidden from AT ('true'); the active\n // target during a session is exposed (undefined). isHidden then tells us\n // whether to omit the element entirely (RAC returns null when hidden).\n const ariaHidden = createMemo(() =>\n !dragSession() ? \"true\" : isDropTarget() ? undefined : \"true\",\n );\n const isHidden = createMemo(() => !isDropTarget() && !!ariaHidden());\n // Faithful port of useDroppableItem. Registration (of the indicator element as\n // a DragManager droppable item) and the self-focus must happen in one effect,\n // registration first: the DragManager's onFocus keys off the dropItems map, so\n // if the element self-focused before it was registered, onFocus would treat it\n // as an unknown target and redirect focus back to the collection (a pickup\n // bounce). React's two useDroppableItem effects run in guaranteed order after\n // the ref is attached; Solid's independent effects race, so we fuse them. The\n // dropItems map keys off live elements — the ref nulls itself on Show cleanup\n // (below), so a hidden indicator unregisters instead of lingering as a stale\n // detached entry.\n createEffect(() => {\n const el = indicatorRef();\n if (!el) return;\n const unregister = registerDropItem({\n element: el,\n target: props.target,\n getDropOperation: (types, allowedOperations) => {\n const st = dropState();\n if (!st) return \"cancel\";\n // Thread the same drag identity the collection uses (see\n // createDroppableCollection.isInternalDropOperation): an internal\n // keyboard reorder must report `isInternal` so the state's feature\n // detection keeps before/after indicators valid (and rejects \"on\" for a\n // reorder-only host). Without it every indicator would return \"cancel\"\n // and drop out of the DragManager's ariaHideOutside keep-set.\n const isInternal = getGlobalDraggingCollectionRef() === listRef();\n return st.getDropOperation(\n props.target,\n wrapDropTypes(types) as Parameters<typeof st.getDropOperation>[1],\n allowedOperations,\n isInternal,\n getGlobalDraggingKeys(),\n );\n },\n });\n onCleanup(unregister);\n // While a drag session is active, the current drop target moves real DOM\n // focus onto itself, so keyboard drop navigation lands on the labeled\n // insertion point rather than the collection element. The self-focus is\n // deferred to an animation frame to mirror upstream's timing: in\n // useDroppableItem the focus is a *passive* useEffect, so it commits only\n // after the browser's microtask checkpoint. That ordering matters because\n // the DragManager keeps the active drop indicator visible via\n // ariaHideOutside, whose keep-set is `[dragSource, ...registered drop\n // items]` (the collection is dropped from the set once it owns items). A\n // freshly-mounted indicator is momentarily `inert` — it only leaves the\n // keep-set's blind spot once the DragManager's MutationObserver re-runs\n // updateValidDropTargets on a later microtask. Focusing synchronously (or\n // on a microtask) would call .focus() while the element is still inert and\n // silently no-op; the animation frame runs after that refresh, exactly as\n // React's passive effect does.\n if (dragSession() && isDropTarget()) {\n requestAnimationFrame(() => {\n if (dragSession() && isDropTarget() && indicatorRef() === el) {\n el.focus();\n }\n });\n }\n });\n return (\n <Show when={!isHidden()}>\n <div\n ref={(el) => {\n setIndicatorRef(el);\n onCleanup(() => setIndicatorRef(null));\n }}\n role=\"option\"\n class=\"solidaria-DropIndicator\"\n aria-roledescription={dndFormatter().format(\"dropIndicator\")}\n aria-label={dropIndicatorLabel(props.target)}\n aria-hidden={ariaHidden()}\n tabindex={-1}\n data-drop-target={isDropTarget() || undefined}\n />\n </Show>\n );\n };\n const dropIndicatorContextValue = {\n render: (p: DropIndicatorProps) => <ListBoxDropIndicator target={p.target} />,\n };\n\n const virtualizer = useVirtualizerContext();\n const persistedKeys = useDndPersistedKeys(\n { focusedKey: state.focusedKey },\n local.dragAndDropHooks,\n dropState(),\n state.collection(),\n );\n const virtualRange = createMemo(() => {\n if (!virtualizer || !parentCollectionRenderer?.isVirtualized || hasSections()) return null;\n const baseRange = virtualizer.getVisibleRange(stateProps.items.length);\n const itemNodes = getItemNodes();\n const persistedIndexes = Array.from(persistedKeys())\n .map((key) => itemNodes.findIndex((node) => node.key === key))\n .filter((index) => index >= 0);\n const dropTarget = dropState()?.target;\n const normalizedDropKey = getNormalizedDropTargetKey(dropTarget, state.collection());\n const focusedKey = state.focusedKey();\n const focusedIndex =\n focusedKey != null ? itemNodes.findIndex((node) => node.key === focusedKey) : -1;\n const forceIncludeIndexes = [\n dropTarget?.type === \"item\" ? itemNodes.findIndex((node) => node.key === dropTarget.key) : -1,\n normalizedDropKey != null\n ? itemNodes.findIndex((node) => node.key === normalizedDropKey)\n : -1,\n dropTarget?.type === \"item\" ? -1 : focusedIndex,\n ].filter((index) => index >= 0);\n return mergePersistedKeysIntoVirtualRange(\n baseRange,\n persistedIndexes,\n stateProps.items.length,\n virtualizer,\n 80,\n {\n forceIncludeIndexes,\n forceIncludeMaxSpan: 320,\n },\n );\n });\n createEffect(() => {\n if (!virtualizer || !parentCollectionRenderer?.isVirtualized) return;\n const getItemNodes = () =>\n Array.from(state.collection()).filter((node) => node.type === \"item\");\n virtualizer.setDropTargetItemCountResolver(() => getItemNodes().length);\n virtualizer.setDropTargetIndexResolver((key) => {\n const index = getItemNodes().findIndex((node) => node.key === key);\n return index >= 0 ? index : null;\n });\n virtualizer.setDropTargetResolver((target) => {\n const node = getItemNodes()[target.index];\n if (!node) return target;\n return {\n ...target,\n key: typeof node.key === \"string\" || typeof node.key === \"number\" ? node.key : undefined,\n };\n });\n onCleanup(() => {\n virtualizer.setDropTargetIndexResolver(undefined);\n virtualizer.setDropTargetItemCountResolver(undefined);\n virtualizer.setDropTargetResolver(undefined);\n });\n });\n const visibleItems = createMemo(() => {\n const range = virtualRange();\n if (!range) return stateProps.items;\n return stateProps.items.slice(range.start, range.end);\n });\n // Spacers reserve the windowed-out extent along the virtualizer's primary axis,\n // so a horizontal layout offsets along width rather than height.\n const virtualSpacerStyle = (size: number): JSX.CSSProperties =>\n virtualizer?.orientation === \"horizontal\" ? { width: `${size}px` } : { height: `${size}px` };\n const sectionedRenderEntries = createMemo(() => {\n let globalIndex = 0;\n return stateProps.items.map((entry) => {\n if (isCollectionSection(entry)) {\n const sectionItems = entry.items.map((item) => ({\n item,\n index: globalIndex++,\n }));\n return {\n type: \"section\" as const,\n section: entry,\n items: sectionItems,\n };\n }\n const indexedItem = {\n item: entry as T,\n index: globalIndex++,\n };\n return {\n type: \"item\" as const,\n item: indexedItem,\n };\n });\n });\n const collectionRenderer = createMemo<CollectionRendererContextValue<unknown>>(() => ({\n ...parentCollectionRenderer,\n renderItem: (item) => local.children(item as T),\n renderDropIndicator: (index, position) =>\n dndDropIndicator(index, position) ??\n parentCollectionRenderer?.renderDropIndicator?.(index, position),\n }));\n\n return (\n <ListBoxContext.Provider\n value={\n {\n state,\n isDisabled: resolveDisabled,\n dragAndDropHooks: local.dragAndDropHooks as DragAndDropHooks<unknown> | undefined,\n dragState: dragState(),\n dropState: dropState(),\n slots: local.slots,\n } as ListBoxContextValue<unknown>\n }\n >\n <ListBoxStateContext.Provider value={state}>\n <CollectionRendererContext.Provider value={collectionRenderer()}>\n <DropIndicatorContext.Provider value={dropIndicatorContextValue}>\n <>\n <Show when={ariaProps.label}>\n <span {...cleanLabelProps()}>{ariaProps.label as JSX.Element}</span>\n </Show>\n <div\n {...mergeProps(\n domProps(),\n cleanListBoxProps(),\n cleanFocusProps(),\n (droppableCollection()?.collectionProps as Record<string, unknown> | undefined) ??\n {},\n )}\n ref={(el) => {\n setListRef(el);\n assignRef(local.ref, el);\n autocompleteCtx?.collectionRef(el);\n }}\n class={renderProps.class()}\n style={renderProps.style()}\n data-focused={state.isFocused() || undefined}\n data-focus-visible={isFocusVisible() || undefined}\n data-disabled={resolveDisabled() || undefined}\n data-empty={isEmpty() || undefined}\n data-layout={stateProps.layout}\n data-orientation={stateProps.orientation}\n data-drop-target={isRootDropTarget() || undefined}\n slot={local.slot}\n >\n <SharedElementTransition>\n {isEmpty() && local.renderEmptyState ? (\n <div role=\"option\" style={{ display: \"contents\" }} data-empty-state>\n {local.renderEmptyState()}\n </div>\n ) : hasSections() ? (\n <For each={sectionedRenderEntries()}>\n {(entry) =>\n entry.type === \"section\" ? (\n <div role=\"presentation\" data-section-wrapper>\n <Section class=\"solidaria-ListBox-section\">\n {entry.section.title != null && (\n <Header class=\"solidaria-ListBox-sectionHeader\">\n {entry.section.title}\n </Header>\n )}\n <Group class=\"solidaria-ListBox-sectionGroup\">\n <div role=\"group\" aria-label={entry.section[\"aria-label\"]}>\n <For each={entry.items}>\n {(indexedItem) => (\n <>\n {collectionRenderer().renderDropIndicator?.(\n indexedItem.index,\n \"before\",\n )}\n {collectionRenderer().renderDropIndicator?.(\n indexedItem.index,\n \"on\",\n )}\n {local.children(indexedItem.item)}\n {collectionRenderer().renderDropIndicator?.(\n indexedItem.index,\n \"after\",\n )}\n </>\n )}\n </For>\n </div>\n </Group>\n </Section>\n </div>\n ) : (\n <>\n {collectionRenderer().renderDropIndicator?.(entry.item.index, \"before\")}\n {collectionRenderer().renderDropIndicator?.(entry.item.index, \"on\")}\n {local.children(entry.item.item)}\n {collectionRenderer().renderDropIndicator?.(entry.item.index, \"after\")}\n </>\n )\n }\n </For>\n ) : (\n <>\n {virtualRange()?.offsetTop ? (\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n style={virtualSpacerStyle(virtualRange()!.offsetTop)}\n data-virtualizer-spacer=\"top\"\n />\n ) : null}\n <For each={visibleItems()}>\n {(item, index) => {\n const itemIndex = () => (virtualRange()?.start ?? 0) + index();\n const beforeIndicator = () =>\n collectionRenderer().renderDropIndicator?.(itemIndex(), \"before\");\n const onIndicator = () =>\n collectionRenderer().renderDropIndicator?.(itemIndex(), \"on\");\n const afterIndicator = () =>\n collectionRenderer().renderDropIndicator?.(itemIndex(), \"after\");\n return (\n <>\n {beforeIndicator()}\n {onIndicator()}\n {local.children(item as T)}\n {afterIndicator()}\n </>\n );\n }}\n </For>\n {virtualRange()?.offsetBottom ? (\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n style={virtualSpacerStyle(virtualRange()!.offsetBottom)}\n data-virtualizer-spacer=\"bottom\"\n />\n ) : null}\n </>\n )}\n </SharedElementTransition>\n {local.hasMore && local.onLoadMore && (\n <ListBoxLoadMoreItem onLoadMore={local.onLoadMore} isLoading={local.isLoading} />\n )}\n </div>\n </>\n </DropIndicatorContext.Provider>\n </CollectionRendererContext.Provider>\n </ListBoxStateContext.Provider>\n </ListBoxContext.Provider>\n );\n}\n\n/**\n * An option in a listbox.\n */\nexport function ListBoxOption<T>(props: ListBoxOptionProps<T>): JSX.Element {\n const [local, ariaProps] = splitProps(props, [\n \"class\",\n \"style\",\n \"slot\",\n \"id\",\n \"item\",\n \"textValue\",\n \"ref\",\n ]);\n\n const context = useContext(ListBoxStateContext);\n if (!context) {\n throw new Error(\"ListBoxOption must be used within a ListBox\");\n }\n const state = context as ListState<T>;\n const listContext = useContext(ListBoxContext) as ListBoxContextValue<T> | null;\n const [ref, setRef] = createSignal<HTMLDivElement | null>(null);\n\n const optionAria = createOption<T>(\n {\n key: local.id,\n get isDisabled() {\n return Boolean(ariaProps.isDisabled || listContext?.isDisabled());\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"] ?? local.textValue;\n },\n get shouldSelectOnPressUp() {\n return ariaProps.shouldSelectOnPressUp;\n },\n get shouldFocusOnHover() {\n return ariaProps.shouldFocusOnHover;\n },\n get onHoverStart() {\n return ariaProps.onHoverStart;\n },\n get onHoverEnd() {\n return ariaProps.onHoverEnd;\n },\n get onHoverChange() {\n return ariaProps.onHoverChange;\n },\n },\n state,\n ref,\n );\n\n const renderValues = createMemo<ListBoxOptionRenderProps>(() => ({\n isSelected: optionAria.isSelected(),\n isFocused: optionAria.isFocused(),\n isFocusVisible: optionAria.isFocusVisible(),\n isPressed: optionAria.isPressed(),\n isHovered: optionAria.isHovered(),\n isDisabled: optionAria.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-ListBox-option\",\n },\n renderValues,\n );\n const hasPrimitiveLabel = () => {\n return typeof props.children === \"string\" || typeof props.children === \"number\";\n };\n\n const selectionIndicatorContext = createMemo<SelectionIndicatorContextValue>(() => ({\n isSelected: optionAria.isSelected,\n }));\n const draggableItem = createMemo(() => {\n if (!listContext?.dragAndDropHooks?.useDraggableItem || !listContext.dragState)\n return undefined;\n return listContext.dragAndDropHooks.useDraggableItem(\n {\n key: local.id as string | number,\n // Surfaces the drag-affordance description (aria-describedby) only for\n // selectable collections, mirroring upstream useDraggableItem.\n selectionMode: state.selectionManager.selectionMode,\n },\n listContext.dragState as Parameters<NonNullable<DragAndDropHooks<T>[\"useDraggableItem\"]>>[1],\n );\n });\n const droppableItem = createMemo(() => {\n if (!listContext?.dragAndDropHooks?.useDroppableItem || !listContext.dropState)\n return undefined;\n return listContext.dragAndDropHooks.useDroppableItem(\n {\n key: local.id as string | number,\n },\n listContext.dropState as Parameters<NonNullable<DragAndDropHooks<T>[\"useDroppableItem\"]>>[1],\n () => ref(),\n );\n });\n\n const cleanOptionProps = () => {\n const {\n ref: _ref1,\n \"aria-describedby\": _ariaDescribedby,\n ...rest\n } = optionAria.optionProps as Record<string, unknown>;\n if (!hasPrimitiveLabel() && rest[\"aria-label\"] == null) {\n delete rest[\"aria-labelledby\"];\n }\n return rest;\n };\n const domProps = () => filterDOMProps(ariaProps as Record<string, unknown>, { global: true });\n\n return (\n <SelectionIndicatorContext.Provider value={selectionIndicatorContext()}>\n <div\n ref={(el) => {\n setRef(el);\n assignRef(local.ref, el);\n }}\n {...mergeProps(\n domProps(),\n cleanOptionProps(),\n (draggableItem()?.dragProps as Record<string, unknown> | undefined) ?? {},\n (droppableItem()?.dropProps as Record<string, unknown> | undefined) ?? {},\n )}\n class={renderProps.class()}\n style={renderProps.style()}\n data-selected={optionAria.isSelected() || undefined}\n data-focused={optionAria.isFocused() || undefined}\n data-focus-visible={optionAria.isFocusVisible() || undefined}\n data-pressed={optionAria.isPressed() || undefined}\n data-hovered={optionAria.isHovered() || undefined}\n data-disabled={optionAria.isDisabled() || undefined}\n data-dragging={draggableItem()?.isDragging || undefined}\n data-drop-target={droppableItem()?.isDropTarget || undefined}\n slot={local.slot}\n >\n {hasPrimitiveLabel() ? (\n <span {...optionAria.labelProps}>{renderProps.renderChildren()}</span>\n ) : (\n renderProps.renderChildren()\n )}\n </div>\n </SelectionIndicatorContext.Provider>\n );\n}\n\n/**\n * Load more sentinel item for listbox collections.\n */\nexport function ListBoxLoadMoreItem(props: ListBoxLoadMoreItemProps): JSX.Element {\n let sentinelRef: HTMLDivElement | undefined;\n const [isPending, setIsPending] = createSignal(false);\n\n const isLoading = () => !!props.isLoading || isPending();\n\n const triggerLoadMore = async () => {\n if (isLoading()) return;\n setIsPending(true);\n try {\n await props.onLoadMore();\n } finally {\n setIsPending(false);\n }\n };\n\n createEffect(() => {\n if (!sentinelRef || typeof IntersectionObserver !== \"function\") return;\n\n const offset = props.scrollOffset ?? 1;\n const margin = `0px 0px ${100 * offset}% 0px`;\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting) {\n void triggerLoadMore();\n }\n },\n { rootMargin: margin },\n );\n\n observer.observe(sentinelRef);\n return () => observer.disconnect();\n });\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children ?? (() => (isLoading() ? \"Loading more...\" : \"Load more\"));\n },\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-ListBox-loadMore\",\n },\n () => ({ isLoading: isLoading() }),\n );\n\n return (\n <>\n <div style={{ position: \"relative\", width: 0, height: 0, overflow: \"hidden\" }} inert>\n <div ref={sentinelRef} style={{ position: \"absolute\", height: \"1px\", width: \"1px\" }} />\n </div>\n <div\n role=\"option\"\n aria-disabled={true}\n tabIndex={0}\n onFocus={() => {\n void triggerLoadMore();\n }}\n class={renderProps.class()}\n style={renderProps.style()}\n data-loading={isLoading() || undefined}\n >\n {renderProps.renderChildren()}\n </div>\n </>\n );\n}\n\n/**\n * Section primitive alias for ListBox composition parity.\n */\nexport function ListBoxSection(props: ListBoxSectionProps): JSX.Element {\n return <Section {...props} />;\n}\n\nListBox.Option = ListBoxOption;\nListBox.LoadMoreItem = ListBoxLoadMoreItem;\n"],"mappings":"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"}
package/dist/Menu.d.ts CHANGED
@@ -18,7 +18,7 @@ export interface MenuRenderProps {
18
18
  /** Whether the menu has no items. */
19
19
  isEmpty: boolean;
20
20
  }
21
- export interface MenuProps<T> extends Omit<AriaMenuProps, "children">, SlotProps, Pick<MenuStateProps<T>, "selectionMode" | "selectionBehavior" | "disallowEmptySelection" | "selectedKeys" | "defaultSelectedKeys" | "onSelectionChange" | "allowDuplicateSelectionEvents"> {
21
+ export interface MenuProps<T> extends Omit<AriaMenuProps<T>, "children">, SlotProps, Pick<MenuStateProps<T>, "selectionMode" | "selectionBehavior" | "disallowEmptySelection" | "selectedKeys" | "defaultSelectedKeys" | "onSelectionChange" | "allowDuplicateSelectionEvents"> {
22
22
  /** The items to render in the menu. */
23
23
  items?: CollectionEntry<T>[];
24
24
  /** Function to get the key from an item. */
@@ -29,8 +29,10 @@ export interface MenuProps<T> extends Omit<AriaMenuProps, "children">, SlotProps
29
29
  getDisabled?: (item: T) => boolean;
30
30
  /** Keys of disabled items. */
31
31
  disabledKeys?: Iterable<Key>;
32
- /** Handler called when an item is activated. */
33
- onAction?: (key: Key) => void;
32
+ /** Whether disabled items can still receive focus. */
33
+ disabledBehavior?: "selection" | "all";
34
+ /** Handler called when an item is activated, with the activated item's value. */
35
+ onAction?: (key: Key, value: T) => void;
34
36
  /** Handler called when the menu should close. */
35
37
  onClose?: () => void;
36
38
  /** The children of the component. A function may be provided to render each item. */
@@ -46,9 +48,9 @@ export interface MenuProps<T> extends Omit<AriaMenuProps, "children">, SlotProps
46
48
  /** Whether the menu should close when an item is selected. */
47
49
  shouldCloseOnSelect?: boolean;
48
50
  /** Ref for the menu element. */
49
- ref?: RefLike<HTMLUListElement>;
51
+ ref?: RefLike<HTMLDivElement>;
50
52
  /** Custom renderer for the menu element. */
51
- render?: (props: JSX.HTMLAttributes<HTMLUListElement>, renderProps: MenuRenderProps) => JSX.Element;
53
+ render?: (props: JSX.HTMLAttributes<HTMLDivElement>, renderProps: MenuRenderProps) => JSX.Element;
52
54
  /** Drag and drop hooks from `useDragAndDrop`. */
53
55
  dragAndDropHooks?: DragAndDropHooks<T>;
54
56
  }
@@ -71,8 +73,20 @@ export interface MenuItemRenderProps {
71
73
  hasSubmenu: boolean;
72
74
  /** Whether the submenu is currently open. */
73
75
  isOpen: boolean;
76
+ /**
77
+ * Internal: props (carrying the slot `id` the item's `aria-describedby`
78
+ * references) for the item's description text element. Threaded to the styled
79
+ * `Text slot="description"` so it receives the id — mirrors upstream's
80
+ * `TextContext` description-slot delegation.
81
+ */
82
+ descriptionProps?: JSX.HTMLAttributes<HTMLElement>;
83
+ /**
84
+ * Internal: props (id + `aria-hidden`) for the item's keyboard-shortcut
85
+ * element, threaded to the styled `Keyboard`.
86
+ */
87
+ keyboardShortcutProps?: JSX.HTMLAttributes<HTMLElement>;
74
88
  }
75
- export interface MenuItemProps<T> extends Omit<AriaMenuItemProps, "children" | "key">, SlotProps {
89
+ export interface MenuItemProps<T> extends Omit<AriaMenuItemProps, "children" | "key" | "id">, SlotProps {
76
90
  /** The unique key for the item. */
77
91
  id: Key;
78
92
  /** The item value. */
@@ -101,10 +115,10 @@ export interface MenuItemProps<T> extends Omit<AriaMenuItemProps, "children" | "
101
115
  onHoverEnd?: () => void;
102
116
  /** Handler called when hover state changes. */
103
117
  onHoverChange?: (isHovered: boolean) => void;
104
- /** Ref for the menu item element. */
105
- ref?: RefLike<HTMLLIElement>;
118
+ /** Ref for the menu item element (a `<div>`, or an `<a>` for link items). */
119
+ ref?: RefLike<HTMLElement>;
106
120
  /** Custom renderer for the menu item element. */
107
- render?: (props: JSX.HTMLAttributes<HTMLLIElement>, renderProps: MenuItemRenderProps) => JSX.Element;
121
+ render?: (props: JSX.HTMLAttributes<HTMLElement>, renderProps: MenuItemRenderProps) => JSX.Element;
108
122
  }
109
123
  export interface MenuTriggerRenderProps {
110
124
  /** Whether the menu is open. */
@@ -155,6 +169,10 @@ interface MenuTriggerContextValue {
155
169
  state: OverlayTriggerState;
156
170
  triggerProps: JSX.HTMLAttributes<HTMLElement>;
157
171
  menuProps: JSX.HTMLAttributes<HTMLElement>;
172
+ isPressed?: () => boolean;
173
+ onPressStart?: (e: {
174
+ pointerType?: string;
175
+ }) => void;
158
176
  }
159
177
  export declare const MenuContext: import("solid-js").Context<MenuContextValue<unknown> | null>;
160
178
  export declare const MenuStateContext: import("solid-js").Context<MenuState<unknown> | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../src/Menu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../src/Menu.tsx"],"names":[],"mappings":"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"}