@react-spectrum/s2 1.0.0 → 1.2.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 (629) hide show
  1. package/dist/Accordion.cjs +3 -3
  2. package/dist/Accordion.cjs.map +1 -1
  3. package/dist/Accordion.css +2 -2
  4. package/dist/Accordion.css.map +1 -1
  5. package/dist/Accordion.mjs +3 -3
  6. package/dist/Accordion.mjs.map +1 -1
  7. package/dist/ActionBar.cjs +62 -61
  8. package/dist/ActionBar.cjs.map +1 -1
  9. package/dist/ActionBar.css +58 -58
  10. package/dist/ActionBar.css.map +1 -1
  11. package/dist/ActionBar.mjs +62 -61
  12. package/dist/ActionBar.mjs.map +1 -1
  13. package/dist/ActionButton.cjs +234 -234
  14. package/dist/ActionButton.cjs.map +1 -1
  15. package/dist/ActionButton.css +160 -160
  16. package/dist/ActionButton.css.map +1 -1
  17. package/dist/ActionButton.mjs +234 -234
  18. package/dist/ActionButton.mjs.map +1 -1
  19. package/dist/ActionButtonGroup.cjs +16 -16
  20. package/dist/ActionButtonGroup.css +9 -9
  21. package/dist/ActionButtonGroup.mjs +16 -16
  22. package/dist/Add.cjs +10 -10
  23. package/dist/Add.css +6 -6
  24. package/dist/Add.mjs +10 -10
  25. package/dist/AlertDialog.cjs +3 -3
  26. package/dist/AlertDialog.css +3 -3
  27. package/dist/AlertDialog.mjs +3 -3
  28. package/dist/Asterisk.cjs +6 -6
  29. package/dist/Asterisk.css +4 -4
  30. package/dist/Asterisk.mjs +6 -6
  31. package/dist/Avatar.cjs +17 -17
  32. package/dist/Avatar.css +16 -16
  33. package/dist/Avatar.mjs +17 -17
  34. package/dist/AvatarGroup.cjs +121 -121
  35. package/dist/AvatarGroup.css +31 -31
  36. package/dist/AvatarGroup.mjs +121 -121
  37. package/dist/Badge.cjs +197 -197
  38. package/dist/Badge.css +125 -125
  39. package/dist/Badge.mjs +197 -197
  40. package/dist/Breadcrumbs.cjs +235 -235
  41. package/dist/Breadcrumbs.cjs.map +1 -1
  42. package/dist/Breadcrumbs.css +100 -100
  43. package/dist/Breadcrumbs.css.map +1 -1
  44. package/dist/Breadcrumbs.mjs +235 -235
  45. package/dist/Breadcrumbs.mjs.map +1 -1
  46. package/dist/Button.cjs +333 -333
  47. package/dist/Button.cjs.map +1 -1
  48. package/dist/Button.css +174 -174
  49. package/dist/Button.css.map +1 -1
  50. package/dist/Button.mjs +333 -333
  51. package/dist/Button.mjs.map +1 -1
  52. package/dist/ButtonGroup.cjs +21 -21
  53. package/dist/ButtonGroup.css +15 -15
  54. package/dist/ButtonGroup.mjs +21 -21
  55. package/dist/Calendar.cjs +169 -169
  56. package/dist/Calendar.cjs.map +1 -1
  57. package/dist/Calendar.css +134 -134
  58. package/dist/Calendar.css.map +1 -1
  59. package/dist/Calendar.mjs +169 -169
  60. package/dist/Calendar.mjs.map +1 -1
  61. package/dist/Card.cjs +310 -310
  62. package/dist/Card.cjs.map +1 -1
  63. package/dist/Card.css +206 -206
  64. package/dist/Card.css.map +1 -1
  65. package/dist/Card.mjs +310 -310
  66. package/dist/Card.mjs.map +1 -1
  67. package/dist/CardView.cjs +19 -19
  68. package/dist/CardView.cjs.map +1 -1
  69. package/dist/CardView.css +17 -17
  70. package/dist/CardView.css.map +1 -1
  71. package/dist/CardView.mjs +19 -19
  72. package/dist/CardView.mjs.map +1 -1
  73. package/dist/CenterBaseline.cjs +1 -1
  74. package/dist/CenterBaseline.css +2 -2
  75. package/dist/CenterBaseline.mjs +1 -1
  76. package/dist/Checkbox.cjs +162 -162
  77. package/dist/Checkbox.cjs.map +1 -1
  78. package/dist/Checkbox.css +95 -91
  79. package/dist/Checkbox.css.map +1 -1
  80. package/dist/Checkbox.mjs +162 -162
  81. package/dist/Checkbox.mjs.map +1 -1
  82. package/dist/CheckboxGroup.cjs +44 -44
  83. package/dist/CheckboxGroup.cjs.map +1 -1
  84. package/dist/CheckboxGroup.css +37 -37
  85. package/dist/CheckboxGroup.css.map +1 -1
  86. package/dist/CheckboxGroup.mjs +44 -44
  87. package/dist/CheckboxGroup.mjs.map +1 -1
  88. package/dist/Checkmark.cjs +12 -12
  89. package/dist/Checkmark.css +8 -8
  90. package/dist/Checkmark.mjs +12 -12
  91. package/dist/Chevron.cjs +12 -12
  92. package/dist/Chevron.css +10 -10
  93. package/dist/Chevron.mjs +12 -12
  94. package/dist/ClearButton.cjs +30 -30
  95. package/dist/ClearButton.css +30 -30
  96. package/dist/ClearButton.mjs +30 -30
  97. package/dist/CloseButton.cjs +56 -56
  98. package/dist/CloseButton.css +47 -47
  99. package/dist/CloseButton.mjs +56 -56
  100. package/dist/ColorArea.cjs +17 -17
  101. package/dist/ColorArea.cjs.map +1 -1
  102. package/dist/ColorArea.css +16 -16
  103. package/dist/ColorArea.css.map +1 -1
  104. package/dist/ColorArea.mjs +17 -17
  105. package/dist/ColorArea.mjs.map +1 -1
  106. package/dist/ColorField.cjs +32 -32
  107. package/dist/ColorField.cjs.map +1 -1
  108. package/dist/ColorField.css +27 -27
  109. package/dist/ColorField.css.map +1 -1
  110. package/dist/ColorField.mjs +32 -32
  111. package/dist/ColorField.mjs.map +1 -1
  112. package/dist/ColorHandle.cjs +27 -27
  113. package/dist/ColorHandle.css +42 -42
  114. package/dist/ColorHandle.mjs +27 -27
  115. package/dist/ColorSlider.cjs +109 -109
  116. package/dist/ColorSlider.cjs.map +1 -1
  117. package/dist/ColorSlider.css +52 -52
  118. package/dist/ColorSlider.css.map +1 -1
  119. package/dist/ColorSlider.mjs +109 -109
  120. package/dist/ColorSlider.mjs.map +1 -1
  121. package/dist/ColorSwatch.cjs +30 -30
  122. package/dist/ColorSwatch.cjs.map +1 -1
  123. package/dist/ColorSwatch.css +29 -29
  124. package/dist/ColorSwatch.css.map +1 -1
  125. package/dist/ColorSwatch.mjs +30 -30
  126. package/dist/ColorSwatch.mjs.map +1 -1
  127. package/dist/ColorSwatchPicker.cjs +30 -30
  128. package/dist/ColorSwatchPicker.css +48 -48
  129. package/dist/ColorSwatchPicker.mjs +30 -30
  130. package/dist/ColorWheel.cjs +31 -27
  131. package/dist/ColorWheel.cjs.map +1 -1
  132. package/dist/ColorWheel.css +17 -17
  133. package/dist/ColorWheel.css.map +1 -1
  134. package/dist/ColorWheel.mjs +31 -27
  135. package/dist/ColorWheel.mjs.map +1 -1
  136. package/dist/ComboBox.cjs +383 -383
  137. package/dist/ComboBox.cjs.map +1 -1
  138. package/dist/ComboBox.css +187 -187
  139. package/dist/ComboBox.css.map +1 -1
  140. package/dist/ComboBox.mjs +383 -383
  141. package/dist/ComboBox.mjs.map +1 -1
  142. package/dist/ContextualHelp.cjs +70 -41
  143. package/dist/ContextualHelp.cjs.map +1 -1
  144. package/dist/ContextualHelp.css +71 -71
  145. package/dist/ContextualHelp.css.map +1 -1
  146. package/dist/ContextualHelp.mjs +74 -46
  147. package/dist/ContextualHelp.mjs.map +1 -1
  148. package/dist/Cross.cjs +14 -14
  149. package/dist/Cross.css +10 -10
  150. package/dist/Cross.mjs +14 -14
  151. package/dist/CustomDialog.cjs +26 -26
  152. package/dist/CustomDialog.cjs.map +1 -1
  153. package/dist/CustomDialog.css +25 -25
  154. package/dist/CustomDialog.css.map +1 -1
  155. package/dist/CustomDialog.mjs +26 -26
  156. package/dist/CustomDialog.mjs.map +1 -1
  157. package/dist/Dash.cjs +10 -10
  158. package/dist/Dash.css +6 -6
  159. package/dist/Dash.mjs +10 -10
  160. package/dist/DateField.cjs +74 -74
  161. package/dist/DateField.cjs.map +1 -1
  162. package/dist/DateField.css +77 -77
  163. package/dist/DateField.css.map +1 -1
  164. package/dist/DateField.mjs +74 -74
  165. package/dist/DateField.mjs.map +1 -1
  166. package/dist/DatePicker.cjs +173 -173
  167. package/dist/DatePicker.cjs.map +1 -1
  168. package/dist/DatePicker.css +128 -128
  169. package/dist/DatePicker.css.map +1 -1
  170. package/dist/DatePicker.mjs +173 -173
  171. package/dist/DatePicker.mjs.map +1 -1
  172. package/dist/DateRangePicker.cjs +56 -56
  173. package/dist/DateRangePicker.cjs.map +1 -1
  174. package/dist/DateRangePicker.css +59 -59
  175. package/dist/DateRangePicker.css.map +1 -1
  176. package/dist/DateRangePicker.mjs +56 -56
  177. package/dist/DateRangePicker.mjs.map +1 -1
  178. package/dist/Dialog.cjs +17 -17
  179. package/dist/Dialog.cjs.map +1 -1
  180. package/dist/Dialog.css +70 -70
  181. package/dist/Dialog.css.map +1 -1
  182. package/dist/Dialog.mjs +17 -17
  183. package/dist/Dialog.mjs.map +1 -1
  184. package/dist/Disclosure.cjs +120 -120
  185. package/dist/Disclosure.cjs.map +1 -1
  186. package/dist/Disclosure.css +112 -112
  187. package/dist/Disclosure.css.map +1 -1
  188. package/dist/Disclosure.mjs +120 -120
  189. package/dist/Disclosure.mjs.map +1 -1
  190. package/dist/Divider.cjs +26 -26
  191. package/dist/Divider.cjs.map +1 -1
  192. package/dist/Divider.css +25 -25
  193. package/dist/Divider.css.map +1 -1
  194. package/dist/Divider.mjs +26 -26
  195. package/dist/Divider.mjs.map +1 -1
  196. package/dist/DropZone.cjs +62 -62
  197. package/dist/DropZone.cjs.map +1 -1
  198. package/dist/DropZone.css +57 -57
  199. package/dist/DropZone.css.map +1 -1
  200. package/dist/DropZone.mjs +62 -62
  201. package/dist/DropZone.mjs.map +1 -1
  202. package/dist/Field.cjs +351 -351
  203. package/dist/Field.cjs.map +1 -1
  204. package/dist/Field.css +147 -147
  205. package/dist/Field.css.map +1 -1
  206. package/dist/Field.mjs +351 -351
  207. package/dist/Field.mjs.map +1 -1
  208. package/dist/Form.cjs +10 -10
  209. package/dist/Form.cjs.map +1 -1
  210. package/dist/Form.css +9 -9
  211. package/dist/Form.css.map +1 -1
  212. package/dist/Form.mjs +10 -10
  213. package/dist/Form.mjs.map +1 -1
  214. package/dist/FullscreenDialog.cjs +5 -5
  215. package/dist/FullscreenDialog.cjs.map +1 -1
  216. package/dist/FullscreenDialog.css +78 -78
  217. package/dist/FullscreenDialog.css.map +1 -1
  218. package/dist/FullscreenDialog.mjs +5 -5
  219. package/dist/FullscreenDialog.mjs.map +1 -1
  220. package/dist/IllustratedMessage.cjs +229 -229
  221. package/dist/IllustratedMessage.css +72 -72
  222. package/dist/IllustratedMessage.mjs +229 -229
  223. package/dist/Image.cjs +14 -14
  224. package/dist/Image.css +14 -14
  225. package/dist/Image.mjs +14 -14
  226. package/dist/InlineAlert.cjs +101 -101
  227. package/dist/InlineAlert.css +76 -76
  228. package/dist/InlineAlert.mjs +101 -101
  229. package/dist/Link.cjs +50 -50
  230. package/dist/Link.cjs.map +1 -1
  231. package/dist/Link.css +41 -41
  232. package/dist/Link.css.map +1 -1
  233. package/dist/Link.mjs +50 -50
  234. package/dist/Link.mjs.map +1 -1
  235. package/dist/LinkOut.cjs +8 -8
  236. package/dist/LinkOut.css +8 -8
  237. package/dist/LinkOut.mjs +8 -8
  238. package/dist/ListView.cjs +777 -0
  239. package/dist/ListView.cjs.map +1 -0
  240. package/dist/ListView.css +740 -0
  241. package/dist/ListView.css.map +1 -0
  242. package/dist/ListView.mjs +770 -0
  243. package/dist/ListView.mjs.map +1 -0
  244. package/dist/Menu.cjs +540 -445
  245. package/dist/Menu.cjs.map +1 -1
  246. package/dist/Menu.css +234 -190
  247. package/dist/Menu.css.map +1 -1
  248. package/dist/Menu.mjs +541 -447
  249. package/dist/Menu.mjs.map +1 -1
  250. package/dist/Meter.cjs +154 -154
  251. package/dist/Meter.cjs.map +1 -1
  252. package/dist/Meter.css +91 -91
  253. package/dist/Meter.css.map +1 -1
  254. package/dist/Meter.mjs +154 -154
  255. package/dist/Meter.mjs.map +1 -1
  256. package/dist/Modal.cjs +66 -66
  257. package/dist/Modal.cjs.map +1 -1
  258. package/dist/Modal.css +54 -54
  259. package/dist/Modal.css.map +1 -1
  260. package/dist/Modal.mjs +66 -66
  261. package/dist/Modal.mjs.map +1 -1
  262. package/dist/NotificationBadge.cjs +57 -57
  263. package/dist/NotificationBadge.css +49 -49
  264. package/dist/NotificationBadge.mjs +57 -57
  265. package/dist/NumberField.cjs +115 -115
  266. package/dist/NumberField.cjs.map +1 -1
  267. package/dist/NumberField.css +99 -99
  268. package/dist/NumberField.css.map +1 -1
  269. package/dist/NumberField.mjs +115 -115
  270. package/dist/NumberField.mjs.map +1 -1
  271. package/dist/Picker.cjs +337 -285
  272. package/dist/Picker.cjs.map +1 -1
  273. package/dist/Picker.css +173 -173
  274. package/dist/Picker.css.map +1 -1
  275. package/dist/Picker.mjs +339 -287
  276. package/dist/Picker.mjs.map +1 -1
  277. package/dist/Popover.cjs +89 -89
  278. package/dist/Popover.cjs.map +1 -1
  279. package/dist/Popover.css +70 -70
  280. package/dist/Popover.css.map +1 -1
  281. package/dist/Popover.mjs +89 -89
  282. package/dist/Popover.mjs.map +1 -1
  283. package/dist/ProgressBar.cjs +164 -164
  284. package/dist/ProgressBar.cjs.map +1 -1
  285. package/dist/ProgressBar.css +99 -99
  286. package/dist/ProgressBar.css.map +1 -1
  287. package/dist/ProgressBar.mjs +164 -164
  288. package/dist/ProgressBar.mjs.map +1 -1
  289. package/dist/ProgressCircle.cjs +32 -32
  290. package/dist/ProgressCircle.cjs.map +1 -1
  291. package/dist/ProgressCircle.css +24 -24
  292. package/dist/ProgressCircle.css.map +1 -1
  293. package/dist/ProgressCircle.mjs +32 -32
  294. package/dist/ProgressCircle.mjs.map +1 -1
  295. package/dist/Provider.cjs +11 -11
  296. package/dist/Provider.css +10 -10
  297. package/dist/Provider.mjs +11 -11
  298. package/dist/Radio.cjs +146 -146
  299. package/dist/Radio.cjs.map +1 -1
  300. package/dist/Radio.css +78 -78
  301. package/dist/Radio.css.map +1 -1
  302. package/dist/Radio.mjs +146 -146
  303. package/dist/Radio.mjs.map +1 -1
  304. package/dist/RadioGroup.cjs +42 -42
  305. package/dist/RadioGroup.cjs.map +1 -1
  306. package/dist/RadioGroup.css +37 -37
  307. package/dist/RadioGroup.css.map +1 -1
  308. package/dist/RadioGroup.mjs +42 -42
  309. package/dist/RadioGroup.mjs.map +1 -1
  310. package/dist/RangeCalendar.cjs +8 -8
  311. package/dist/RangeCalendar.cjs.map +1 -1
  312. package/dist/RangeCalendar.css +10 -10
  313. package/dist/RangeCalendar.css.map +1 -1
  314. package/dist/RangeCalendar.mjs +8 -8
  315. package/dist/RangeCalendar.mjs.map +1 -1
  316. package/dist/SearchField.cjs +42 -42
  317. package/dist/SearchField.cjs.map +1 -1
  318. package/dist/SearchField.css +45 -45
  319. package/dist/SearchField.css.map +1 -1
  320. package/dist/SearchField.mjs +42 -42
  321. package/dist/SearchField.mjs.map +1 -1
  322. package/dist/SegmentedControl.cjs +180 -180
  323. package/dist/SegmentedControl.css +123 -123
  324. package/dist/SegmentedControl.mjs +180 -180
  325. package/dist/SelectBoxGroup.cjs +144 -144
  326. package/dist/SelectBoxGroup.cjs.map +1 -1
  327. package/dist/SelectBoxGroup.css +120 -120
  328. package/dist/SelectBoxGroup.css.map +1 -1
  329. package/dist/SelectBoxGroup.mjs +144 -144
  330. package/dist/SelectBoxGroup.mjs.map +1 -1
  331. package/dist/Slider.cjs +295 -295
  332. package/dist/Slider.cjs.map +1 -1
  333. package/dist/Slider.css +154 -154
  334. package/dist/Slider.css.map +1 -1
  335. package/dist/Slider.mjs +295 -295
  336. package/dist/Slider.mjs.map +1 -1
  337. package/dist/StatusLight.cjs +116 -116
  338. package/dist/StatusLight.css +59 -59
  339. package/dist/StatusLight.mjs +116 -116
  340. package/dist/Switch.cjs +155 -155
  341. package/dist/Switch.cjs.map +1 -1
  342. package/dist/Switch.css +74 -74
  343. package/dist/Switch.css.map +1 -1
  344. package/dist/Switch.mjs +155 -155
  345. package/dist/Switch.mjs.map +1 -1
  346. package/dist/TableView.cjs +448 -424
  347. package/dist/TableView.cjs.map +1 -1
  348. package/dist/TableView.css +232 -204
  349. package/dist/TableView.css.map +1 -1
  350. package/dist/TableView.mjs +450 -426
  351. package/dist/TableView.mjs.map +1 -1
  352. package/dist/Tabs.cjs +127 -127
  353. package/dist/Tabs.cjs.map +1 -1
  354. package/dist/Tabs.css +105 -105
  355. package/dist/Tabs.css.map +1 -1
  356. package/dist/Tabs.mjs +127 -127
  357. package/dist/Tabs.mjs.map +1 -1
  358. package/dist/TabsPicker.cjs +127 -127
  359. package/dist/TabsPicker.cjs.map +1 -1
  360. package/dist/TabsPicker.css +108 -108
  361. package/dist/TabsPicker.css.map +1 -1
  362. package/dist/TabsPicker.mjs +127 -127
  363. package/dist/TabsPicker.mjs.map +1 -1
  364. package/dist/TagGroup.cjs +204 -204
  365. package/dist/TagGroup.cjs.map +1 -1
  366. package/dist/TagGroup.css +146 -146
  367. package/dist/TagGroup.css.map +1 -1
  368. package/dist/TagGroup.mjs +204 -204
  369. package/dist/TagGroup.mjs.map +1 -1
  370. package/dist/TextField.cjs +59 -59
  371. package/dist/TextField.cjs.map +1 -1
  372. package/dist/TextField.css +54 -54
  373. package/dist/TextField.css.map +1 -1
  374. package/dist/TextField.mjs +59 -59
  375. package/dist/TextField.mjs.map +1 -1
  376. package/dist/TimeField.cjs +52 -52
  377. package/dist/TimeField.cjs.map +1 -1
  378. package/dist/TimeField.css +47 -47
  379. package/dist/TimeField.css.map +1 -1
  380. package/dist/TimeField.mjs +52 -52
  381. package/dist/TimeField.mjs.map +1 -1
  382. package/dist/Toast.cjs +121 -121
  383. package/dist/Toast.cjs.map +1 -1
  384. package/dist/Toast.css +110 -110
  385. package/dist/Toast.css.map +1 -1
  386. package/dist/Toast.mjs +122 -122
  387. package/dist/Toast.mjs.map +1 -1
  388. package/dist/ToggleButton.cjs +3 -3
  389. package/dist/ToggleButton.cjs.map +1 -1
  390. package/dist/ToggleButton.css +12 -12
  391. package/dist/ToggleButton.css.map +1 -1
  392. package/dist/ToggleButton.mjs +3 -3
  393. package/dist/ToggleButton.mjs.map +1 -1
  394. package/dist/ToggleButtonGroup.cjs.map +1 -1
  395. package/dist/ToggleButtonGroup.mjs.map +1 -1
  396. package/dist/Tooltip.cjs +78 -78
  397. package/dist/Tooltip.cjs.map +1 -1
  398. package/dist/Tooltip.css +65 -65
  399. package/dist/Tooltip.css.map +1 -1
  400. package/dist/Tooltip.mjs +78 -78
  401. package/dist/Tooltip.mjs.map +1 -1
  402. package/dist/TreeView.cjs +191 -141
  403. package/dist/TreeView.cjs.map +1 -1
  404. package/dist/TreeView.css +143 -127
  405. package/dist/TreeView.css.map +1 -1
  406. package/dist/TreeView.mjs +191 -141
  407. package/dist/TreeView.mjs.map +1 -1
  408. package/dist/ar-AE.cjs +1 -0
  409. package/dist/ar-AE.cjs.map +1 -1
  410. package/dist/ar-AE.mjs +1 -0
  411. package/dist/ar-AE.mjs.map +1 -1
  412. package/dist/bg-BG.cjs +1 -0
  413. package/dist/bg-BG.cjs.map +1 -1
  414. package/dist/bg-BG.mjs +1 -0
  415. package/dist/bg-BG.mjs.map +1 -1
  416. package/dist/cs-CZ.cjs +1 -0
  417. package/dist/cs-CZ.cjs.map +1 -1
  418. package/dist/cs-CZ.mjs +1 -0
  419. package/dist/cs-CZ.mjs.map +1 -1
  420. package/dist/da-DK.cjs +1 -0
  421. package/dist/da-DK.cjs.map +1 -1
  422. package/dist/da-DK.mjs +1 -0
  423. package/dist/da-DK.mjs.map +1 -1
  424. package/dist/de-DE.cjs +1 -0
  425. package/dist/de-DE.cjs.map +1 -1
  426. package/dist/de-DE.mjs +1 -0
  427. package/dist/de-DE.mjs.map +1 -1
  428. package/dist/el-GR.cjs +1 -0
  429. package/dist/el-GR.cjs.map +1 -1
  430. package/dist/el-GR.mjs +1 -0
  431. package/dist/el-GR.mjs.map +1 -1
  432. package/dist/en-US.cjs +1 -0
  433. package/dist/en-US.cjs.map +1 -1
  434. package/dist/en-US.mjs +1 -0
  435. package/dist/en-US.mjs.map +1 -1
  436. package/dist/es-ES.cjs +1 -0
  437. package/dist/es-ES.cjs.map +1 -1
  438. package/dist/es-ES.mjs +1 -0
  439. package/dist/es-ES.mjs.map +1 -1
  440. package/dist/et-EE.cjs +1 -0
  441. package/dist/et-EE.cjs.map +1 -1
  442. package/dist/et-EE.mjs +1 -0
  443. package/dist/et-EE.mjs.map +1 -1
  444. package/dist/fi-FI.cjs +1 -0
  445. package/dist/fi-FI.cjs.map +1 -1
  446. package/dist/fi-FI.mjs +1 -0
  447. package/dist/fi-FI.mjs.map +1 -1
  448. package/dist/fr-FR.cjs +1 -0
  449. package/dist/fr-FR.cjs.map +1 -1
  450. package/dist/fr-FR.mjs +1 -0
  451. package/dist/fr-FR.mjs.map +1 -1
  452. package/dist/he-IL.cjs +1 -0
  453. package/dist/he-IL.cjs.map +1 -1
  454. package/dist/he-IL.mjs +1 -0
  455. package/dist/he-IL.mjs.map +1 -1
  456. package/dist/hr-HR.cjs +1 -0
  457. package/dist/hr-HR.cjs.map +1 -1
  458. package/dist/hr-HR.mjs +1 -0
  459. package/dist/hr-HR.mjs.map +1 -1
  460. package/dist/hu-HU.cjs +1 -0
  461. package/dist/hu-HU.cjs.map +1 -1
  462. package/dist/hu-HU.mjs +1 -0
  463. package/dist/hu-HU.mjs.map +1 -1
  464. package/dist/it-IT.cjs +1 -0
  465. package/dist/it-IT.cjs.map +1 -1
  466. package/dist/it-IT.mjs +1 -0
  467. package/dist/it-IT.mjs.map +1 -1
  468. package/dist/ja-JP.cjs +1 -0
  469. package/dist/ja-JP.cjs.map +1 -1
  470. package/dist/ja-JP.mjs +1 -0
  471. package/dist/ja-JP.mjs.map +1 -1
  472. package/dist/ko-KR.cjs +1 -0
  473. package/dist/ko-KR.cjs.map +1 -1
  474. package/dist/ko-KR.mjs +1 -0
  475. package/dist/ko-KR.mjs.map +1 -1
  476. package/dist/lt-LT.cjs +1 -0
  477. package/dist/lt-LT.cjs.map +1 -1
  478. package/dist/lt-LT.mjs +1 -0
  479. package/dist/lt-LT.mjs.map +1 -1
  480. package/dist/lv-LV.cjs +1 -0
  481. package/dist/lv-LV.cjs.map +1 -1
  482. package/dist/lv-LV.mjs +1 -0
  483. package/dist/lv-LV.mjs.map +1 -1
  484. package/dist/main.cjs +7 -0
  485. package/dist/main.cjs.map +1 -1
  486. package/dist/module.mjs +5 -3
  487. package/dist/module.mjs.map +1 -1
  488. package/dist/nb-NO.cjs +1 -0
  489. package/dist/nb-NO.cjs.map +1 -1
  490. package/dist/nb-NO.mjs +1 -0
  491. package/dist/nb-NO.mjs.map +1 -1
  492. package/dist/nl-NL.cjs +1 -0
  493. package/dist/nl-NL.cjs.map +1 -1
  494. package/dist/nl-NL.mjs +1 -0
  495. package/dist/nl-NL.mjs.map +1 -1
  496. package/dist/pl-PL.cjs +1 -0
  497. package/dist/pl-PL.cjs.map +1 -1
  498. package/dist/pl-PL.mjs +1 -0
  499. package/dist/pl-PL.mjs.map +1 -1
  500. package/dist/pt-BR.cjs +1 -0
  501. package/dist/pt-BR.cjs.map +1 -1
  502. package/dist/pt-BR.mjs +1 -0
  503. package/dist/pt-BR.mjs.map +1 -1
  504. package/dist/pt-PT.cjs +1 -0
  505. package/dist/pt-PT.cjs.map +1 -1
  506. package/dist/pt-PT.mjs +1 -0
  507. package/dist/pt-PT.mjs.map +1 -1
  508. package/dist/ro-RO.cjs +1 -0
  509. package/dist/ro-RO.cjs.map +1 -1
  510. package/dist/ro-RO.mjs +1 -0
  511. package/dist/ro-RO.mjs.map +1 -1
  512. package/dist/ru-RU.cjs +1 -0
  513. package/dist/ru-RU.cjs.map +1 -1
  514. package/dist/ru-RU.mjs +1 -0
  515. package/dist/ru-RU.mjs.map +1 -1
  516. package/dist/sk-SK.cjs +1 -0
  517. package/dist/sk-SK.cjs.map +1 -1
  518. package/dist/sk-SK.mjs +1 -0
  519. package/dist/sk-SK.mjs.map +1 -1
  520. package/dist/sl-SI.cjs +1 -0
  521. package/dist/sl-SI.cjs.map +1 -1
  522. package/dist/sl-SI.mjs +1 -0
  523. package/dist/sl-SI.mjs.map +1 -1
  524. package/dist/sr-SP.cjs +1 -0
  525. package/dist/sr-SP.cjs.map +1 -1
  526. package/dist/sr-SP.mjs +1 -0
  527. package/dist/sr-SP.mjs.map +1 -1
  528. package/dist/sv-SE.cjs +1 -0
  529. package/dist/sv-SE.cjs.map +1 -1
  530. package/dist/sv-SE.mjs +1 -0
  531. package/dist/sv-SE.mjs.map +1 -1
  532. package/dist/tr-TR.cjs +1 -0
  533. package/dist/tr-TR.cjs.map +1 -1
  534. package/dist/tr-TR.mjs +1 -0
  535. package/dist/tr-TR.mjs.map +1 -1
  536. package/dist/types.d.ts +143 -76
  537. package/dist/types.d.ts.map +1 -1
  538. package/dist/uk-UA.cjs +1 -0
  539. package/dist/uk-UA.cjs.map +1 -1
  540. package/dist/uk-UA.mjs +1 -0
  541. package/dist/uk-UA.mjs.map +1 -1
  542. package/dist/zh-CN.cjs +1 -0
  543. package/dist/zh-CN.cjs.map +1 -1
  544. package/dist/zh-CN.mjs +1 -0
  545. package/dist/zh-CN.mjs.map +1 -1
  546. package/dist/zh-TW.cjs +1 -0
  547. package/dist/zh-TW.cjs.map +1 -1
  548. package/dist/zh-TW.mjs +1 -0
  549. package/dist/zh-TW.mjs.map +1 -1
  550. package/icons/Icon.cjs +12 -12
  551. package/icons/Icon.css +9 -9
  552. package/icons/Icon.mjs +12 -12
  553. package/icons/Skeleton.cjs +2 -2
  554. package/icons/Skeleton.cjs.map +1 -1
  555. package/icons/Skeleton.css +6 -6
  556. package/icons/Skeleton.mjs +2 -2
  557. package/icons/Skeleton.mjs.map +1 -1
  558. package/icons/runtime.cjs +16 -3
  559. package/icons/runtime.cjs.map +1 -1
  560. package/icons/runtime.mjs +16 -3
  561. package/icons/runtime.mjs.map +1 -1
  562. package/package.json +21 -21
  563. package/src/Accordion.tsx +1 -1
  564. package/src/ActionBar.tsx +2 -2
  565. package/src/ActionButton.tsx +1 -1
  566. package/src/Breadcrumbs.tsx +2 -2
  567. package/src/Button.tsx +2 -2
  568. package/src/Calendar.tsx +1 -1
  569. package/src/Card.tsx +1 -1
  570. package/src/CardView.tsx +1 -1
  571. package/src/Checkbox.tsx +2 -1
  572. package/src/CheckboxGroup.tsx +1 -1
  573. package/src/CoachMark.tsx +1 -1
  574. package/src/ColorArea.tsx +1 -1
  575. package/src/ColorField.tsx +1 -1
  576. package/src/ColorSlider.tsx +1 -1
  577. package/src/ColorSwatch.tsx +1 -1
  578. package/src/ColorWheel.tsx +2 -2
  579. package/src/ComboBox.tsx +4 -3
  580. package/src/ContextualHelp.tsx +81 -43
  581. package/src/CustomDialog.tsx +1 -1
  582. package/src/DateField.tsx +1 -1
  583. package/src/DatePicker.tsx +1 -1
  584. package/src/DateRangePicker.tsx +1 -1
  585. package/src/Dialog.tsx +1 -1
  586. package/src/Disclosure.tsx +2 -2
  587. package/src/Divider.tsx +1 -1
  588. package/src/DropZone.tsx +1 -1
  589. package/src/Field.tsx +6 -6
  590. package/src/Form.tsx +1 -1
  591. package/src/FullscreenDialog.tsx +1 -1
  592. package/src/Link.tsx +1 -1
  593. package/src/ListView.tsx +782 -0
  594. package/src/Menu.tsx +111 -29
  595. package/src/Meter.tsx +1 -1
  596. package/src/Modal.tsx +1 -1
  597. package/src/NumberField.tsx +1 -1
  598. package/src/Picker.tsx +75 -14
  599. package/src/Popover.tsx +2 -1
  600. package/src/ProgressBar.tsx +1 -1
  601. package/src/ProgressCircle.tsx +1 -1
  602. package/src/Radio.tsx +1 -1
  603. package/src/RadioGroup.tsx +1 -1
  604. package/src/RangeCalendar.tsx +1 -1
  605. package/src/SearchField.tsx +1 -1
  606. package/src/SelectBoxGroup.tsx +1 -1
  607. package/src/Slider.tsx +1 -1
  608. package/src/Switch.tsx +1 -1
  609. package/src/TableView.tsx +37 -19
  610. package/src/Tabs.tsx +4 -4
  611. package/src/TabsPicker.tsx +2 -2
  612. package/src/TagGroup.tsx +2 -2
  613. package/src/TextField.tsx +1 -1
  614. package/src/TimeField.tsx +1 -1
  615. package/src/Toast.tsx +3 -3
  616. package/src/ToggleButton.tsx +1 -1
  617. package/src/ToggleButtonGroup.tsx +1 -1
  618. package/src/Tooltip.tsx +1 -1
  619. package/src/TreeView.tsx +53 -12
  620. package/src/index.ts +6 -3
  621. package/style/__tests__/mergeStyles.test.ts +68 -0
  622. package/style/__tests__/style-macro.test.js +50 -30
  623. package/style/dist/style-macro.cjs +65 -14
  624. package/style/dist/style-macro.cjs.map +1 -1
  625. package/style/dist/style-macro.mjs +65 -14
  626. package/style/dist/style-macro.mjs.map +1 -1
  627. package/style/runtime.ts +21 -5
  628. package/style/style-macro.ts +81 -16
  629. package/style/__tests__/mergeStyles.test.js +0 -32
@@ -0,0 +1,782 @@
1
+ /*
2
+ * Copyright 2026 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ import {ActionButtonGroupContext} from './ActionButtonGroup';
14
+ import {ActionMenuContext} from './ActionMenu';
15
+ import {baseColor, colorMix, focusRing, fontRelative, space, style} from '../style' with {type: 'macro'};
16
+ import {centerBaseline} from './CenterBaseline';
17
+ import {Checkbox} from './Checkbox';
18
+ import {
19
+ CheckboxContext,
20
+ Collection,
21
+ CollectionRendererContext,
22
+ ContextValue,
23
+ DEFAULT_SLOT,
24
+ DefaultCollectionRenderer,
25
+ GridList,
26
+ GridListItem,
27
+ GridListItemProps,
28
+ GridListItemRenderProps,
29
+ GridListLoadMoreItem,
30
+ GridListProps,
31
+ GridListRenderProps,
32
+ Key,
33
+ ListLayout,
34
+ ListState,
35
+ Provider,
36
+ SlotProps,
37
+ useSlottedContext,
38
+ Virtualizer
39
+ } from 'react-aria-components';
40
+ import Chevron from '../ui-icons/Chevron';
41
+ import {controlFont, getAllowedOverrides, StylesPropWithHeight, UnsafeStyles} from './style-utils' with {type: 'macro'};
42
+ import {createContext, forwardRef, ReactElement, ReactNode, useContext, useRef} from 'react';
43
+ import {DOMProps, DOMRef, DOMRefValue, forwardRefType, GlobalDOMAttributes, LoadingState} from '@react-types/shared';
44
+ import {edgeToText} from '../style/spectrum-theme' with {type: 'macro'};
45
+ import {IconContext} from './Icon';
46
+ import {ImageContext} from './Image';
47
+ // @ts-ignore
48
+ import intlMessages from '../intl/*.json';
49
+ import LinkOutIcon from '../ui-icons/LinkOut';
50
+ import {ProgressCircle} from './ProgressCircle';
51
+ import {Text, TextContext} from './Content';
52
+ import {useActionBarContainer} from './ActionBar';
53
+ import {useDOMRef} from '@react-spectrum/utils';
54
+ import {useLocale, useLocalizedStringFormatter} from 'react-aria';
55
+ import {useScale} from './utils';
56
+ import {useSpectrumContextProps} from './useSpectrumContextProps';
57
+
58
+ export interface ListViewProps<T> extends Omit<GridListProps<T>, 'className' | 'style' | 'children' | 'selectionBehavior' | 'dragAndDropHooks' | 'layout' | 'render' | 'keyboardNavigationBehavior' | keyof GlobalDOMAttributes>, DOMProps, UnsafeStyles, ListViewStylesProps, SlotProps {
59
+ /** Spectrum-defined styles, returned by the `style()` macro. */
60
+ styles?: StylesPropWithHeight,
61
+ /** The current loading state of the ListView. */
62
+ loadingState?: LoadingState,
63
+ /** Handler that is called when more items should be loaded, e.g. while scrolling near the bottom. */
64
+ onLoadMore?: () => void,
65
+ /** The children of the ListView. */
66
+ children: ReactNode | ((item: T) => ReactNode),
67
+ /** Provides the ActionBar to display when items are selected in the ListView. */
68
+ renderActionBar?: (selectedKeys: 'all' | Set<Key>) => ReactElement,
69
+ /** Hides the default link out icons on items that open links in a new tab. */
70
+ hideLinkOutIcon?: boolean
71
+ }
72
+
73
+ interface ListViewStylesProps {
74
+ /** Whether the ListView should be displayed with a quiet style. */
75
+ isQuiet?: boolean,
76
+ /**
77
+ * How selection should be displayed.
78
+ * @default 'checkbox'
79
+ */
80
+ selectionStyle?: 'highlight' | 'checkbox',
81
+ /**
82
+ * Sets the overflow behavior for item contents.
83
+ * @default 'truncate'
84
+ */
85
+ overflowMode?: 'wrap' | 'truncate'
86
+ }
87
+
88
+ export interface ListViewItemProps extends Omit<GridListItemProps, 'children' | 'className' | 'style' | 'render' | 'onClick' | keyof GlobalDOMAttributes> {
89
+ /**
90
+ * The contents of the item.
91
+ */
92
+ children: ReactNode,
93
+ /** Whether the item has child items (renders a chevron indicator). */
94
+ hasChildItems?: boolean
95
+ }
96
+
97
+ export const ListViewContext = createContext<ContextValue<Partial<ListViewProps<any>>, DOMRefValue<HTMLDivElement>>>(null);
98
+
99
+ let InternalListViewContext = createContext<{isQuiet?: boolean, selectionStyle?: 'highlight' | 'checkbox', overflowMode?: 'wrap' | 'truncate', scale?: 'medium' | 'large', hideLinkOutIcon?: boolean}>({});
100
+
101
+ const listViewWrapper = style({
102
+ minHeight: 0,
103
+ minWidth: 0,
104
+ display: 'flex',
105
+ isolation: 'isolate',
106
+ disableTapHighlight: true,
107
+ position: 'relative',
108
+ // Clip ActionBar animation.
109
+ overflow: 'clip'
110
+ }, getAllowedOverrides({height: true}));
111
+
112
+ // When any row has a trailing icon, reserve space so actions align.
113
+ const hasTrailingIconRows = ':has([data-has-trailing-icon]) [role="row"]';
114
+
115
+ const listView = style<GridListRenderProps & {isQuiet?: boolean}>({
116
+ ...focusRing(),
117
+ outlineOffset: {
118
+ default: -2,
119
+ isQuiet: -1
120
+ },
121
+ userSelect: 'none',
122
+ minHeight: 0,
123
+ minWidth: 0,
124
+ width: 'full',
125
+ height: 'full',
126
+ boxSizing: 'border-box',
127
+ overflow: 'auto',
128
+ fontSize: controlFont(),
129
+ backgroundColor: {
130
+ default: 'gray-25',
131
+ isQuiet: 'transparent',
132
+ forcedColors: 'Background'
133
+ },
134
+ borderRadius: {
135
+ default: 'default',
136
+ isQuiet: 'none'
137
+ },
138
+ borderColor: 'gray-300',
139
+ borderWidth: {
140
+ default: 1,
141
+ isQuiet: 0
142
+ },
143
+ borderStyle: 'solid',
144
+ '--trailing-icon-width': {
145
+ type: 'width',
146
+ value: {
147
+ default: 'auto',
148
+ [hasTrailingIconRows]: fontRelative(20)
149
+ }
150
+ }
151
+ });
152
+
153
+ /**
154
+ * A ListView displays a list of interactive items, and allows a user to navigate, select, or perform an action.
155
+ */
156
+ export const ListView = /*#__PURE__*/ (forwardRef as forwardRefType)(function ListView<T extends object>(
157
+ props: ListViewProps<T>,
158
+ ref: DOMRef<HTMLDivElement>
159
+ ) {
160
+ [props, ref] = useSpectrumContextProps(props, ref, ListViewContext);
161
+ let {children, isQuiet, selectionStyle = 'checkbox', overflowMode = 'truncate', loadingState, onLoadMore, renderEmptyState: userRenderEmptyState, hideLinkOutIcon = false, ...otherProps} = props;
162
+ let scale = useScale();
163
+ let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2');
164
+ let rowHeight = scale === 'large' ? 50 : 40;
165
+
166
+ let domRef = useDOMRef(ref);
167
+ let scrollRef = useRef<HTMLElement | null>(null);
168
+
169
+ let isLoading = loadingState === 'loading' || loadingState === 'loadingMore';
170
+ let renderEmptyState: ListViewProps<T>['renderEmptyState'] | undefined;
171
+ if (userRenderEmptyState != null && !isLoading) {
172
+ renderEmptyState = (renderProps) => (
173
+ <div className={emptyStateWrapper}>
174
+ <CollectionRendererContext.Provider value={DefaultCollectionRenderer}>
175
+ {userRenderEmptyState!(renderProps)}
176
+ </CollectionRendererContext.Provider>
177
+ </div>
178
+ );
179
+ } else if (loadingState === 'loading') {
180
+ renderEmptyState = () => (
181
+ <div className={centeredWrapper}>
182
+ <div className={loadingSpinnerWrapper}>
183
+ <ProgressCircle
184
+ isIndeterminate
185
+ aria-label={stringFormatter.format('table.loading')} />
186
+ </div>
187
+ </div>
188
+ );
189
+ }
190
+
191
+ let loadMoreSpinner = onLoadMore ? (
192
+ <GridListLoadMoreItem isLoading={loadingState === 'loadingMore'} onLoadMore={onLoadMore} className={style({height: 'full', width: 'full', paddingY: 8})}>
193
+ <div className={centeredWrapper}>
194
+ <div className={loadingSpinnerWrapper}>
195
+ <ProgressCircle
196
+ isIndeterminate
197
+ aria-label={stringFormatter.format('table.loadingMore')} />
198
+ </div>
199
+ </div>
200
+ </GridListLoadMoreItem>
201
+ ) : null;
202
+
203
+ let wrappedChildren: ReactNode;
204
+ let gridListProps = otherProps;
205
+ if (typeof children === 'function' && otherProps.items) {
206
+ let {items, dependencies = [], ...rest} = otherProps;
207
+ gridListProps = rest;
208
+ wrappedChildren = (
209
+ <>
210
+ <Collection items={items} dependencies={dependencies}>
211
+ {children}
212
+ </Collection>
213
+ {loadMoreSpinner}
214
+ </>
215
+ );
216
+ } else {
217
+ wrappedChildren = (
218
+ <>
219
+ {children}
220
+ {loadMoreSpinner}
221
+ </>
222
+ );
223
+ }
224
+
225
+ let {selectedKeys, onSelectionChange, actionBar, actionBarHeight} = useActionBarContainer({...props, scrollRef});
226
+
227
+ return (
228
+ <div
229
+ ref={domRef}
230
+ className={(props.UNSAFE_className || '') + listViewWrapper(null, props.styles)}
231
+ style={props.UNSAFE_style}>
232
+ <Virtualizer
233
+ layout={ListLayout}
234
+ layoutOptions={{
235
+ estimatedRowHeight: rowHeight,
236
+ loaderHeight: 60
237
+ }}>
238
+ <InternalListViewContext.Provider value={{isQuiet, selectionStyle, overflowMode, scale, hideLinkOutIcon}}>
239
+ <GridList
240
+ ref={scrollRef as any}
241
+ {...gridListProps}
242
+ selectionBehavior={selectionStyle === 'highlight' ? 'replace' : 'toggle'}
243
+ selectionMode={gridListProps.selectionMode}
244
+ renderEmptyState={renderEmptyState}
245
+ style={{
246
+ paddingBottom: actionBarHeight > 0 ? actionBarHeight + 8 : 0,
247
+ scrollPaddingBottom: actionBarHeight > 0 ? actionBarHeight + 8 : 0
248
+ }}
249
+ className={(renderProps) => listView({
250
+ ...renderProps,
251
+ isQuiet
252
+ })}
253
+ selectedKeys={selectedKeys}
254
+ defaultSelectedKeys={undefined}
255
+ onSelectionChange={onSelectionChange}>
256
+ {wrappedChildren}
257
+ </GridList>
258
+ </InternalListViewContext.Provider>
259
+ </Virtualizer>
260
+ {actionBar}
261
+ </div>
262
+ );
263
+ });
264
+
265
+ const selectedBackground = colorMix('gray-25', 'gray-900', 7);
266
+ const selectedActiveBackground = colorMix('gray-25', 'gray-900', 10);
267
+
268
+ const listitem = style<GridListItemRenderProps & {
269
+ isFocused: boolean,
270
+ isLink?: boolean,
271
+ isQuiet?: boolean,
272
+ isFirstItem?: boolean,
273
+ isLastItem?: boolean,
274
+ isSelected?: boolean,
275
+ isDisabled?: boolean,
276
+ isNextSelected?: boolean,
277
+ isPrevSelected?: boolean,
278
+ isPrevNotSelected?: boolean,
279
+ isNextNotSelected?: boolean,
280
+ selectionStyle?: 'highlight' | 'checkbox',
281
+ scale?: 'medium' | 'large'
282
+ }>({
283
+ outlineStyle: 'none',
284
+ boxSizing: 'border-box',
285
+ columnGap: 0,
286
+ paddingX: 0,
287
+ paddingY: 8,
288
+ backgroundColor: 'transparent',
289
+ color: {
290
+ default: baseColor('neutral-subdued'),
291
+ isSelected: baseColor('neutral'),
292
+ isDisabled: {
293
+ default: 'disabled',
294
+ forcedColors: 'GrayText'
295
+ }
296
+ },
297
+ position: 'relative',
298
+ gridColumnStart: 1,
299
+ gridColumnEnd: -1,
300
+ display: 'grid',
301
+ gridTemplateAreas: [
302
+ '. checkmark icon label actions actionmenu trailing-icon .',
303
+ '. . . description actions actionmenu trailing-icon .'
304
+ ],
305
+ gridTemplateColumns: [edgeToText(40), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'var(--trailing-icon-width)', edgeToText(40)],
306
+ gridTemplateRows: '1fr auto',
307
+ rowGap: {
308
+ ':has([slot=description])': space(1)
309
+ },
310
+ alignItems: 'baseline',
311
+ minHeight: {
312
+ default: 40,
313
+ scale: {
314
+ large: 50
315
+ }
316
+ },
317
+ textDecoration: 'none',
318
+ cursor: {
319
+ default: 'default',
320
+ isLink: 'pointer'
321
+ },
322
+ '--borderColor': {
323
+ type: 'borderColor',
324
+ value: {
325
+ default: 'gray-300',
326
+ isSelected: {
327
+ selectionStyle: {
328
+ highlight: 'blue-900',
329
+ checkbox: 'gray-300'
330
+ }
331
+ },
332
+ forcedColors: 'ButtonBorder'
333
+ }
334
+ },
335
+ borderTopWidth: 0,
336
+ borderBottomWidth: {
337
+ default: 1,
338
+ isLastItem: {
339
+ default: 1,
340
+ isQuiet: 0
341
+ }
342
+ },
343
+ borderStartWidth: 0,
344
+ borderEndWidth: 0,
345
+ borderStyle: 'solid',
346
+ borderColor: {
347
+ default: '--borderColor',
348
+ isNextSelected: 'transparent',
349
+ isSelected: 'transparent'
350
+ }
351
+ });
352
+
353
+ const listRowBackground = style<GridListItemRenderProps & {
354
+ isFirstItem?: boolean,
355
+ isLastItem?: boolean,
356
+ isQuiet?: boolean,
357
+ isPrevSelected?: boolean,
358
+ isNextSelected?: boolean,
359
+ isPrevNotSelected?: boolean,
360
+ isNextNotSelected?: boolean,
361
+ selectionStyle?: 'highlight' | 'checkbox'
362
+ }>({
363
+ ...focusRing(),
364
+ outlineOffset: -2,
365
+ position: 'absolute',
366
+ zIndex: -1,
367
+ top: {
368
+ default: 0,
369
+ isSelected: '[-1px]',
370
+ // Don't overlap focus ring of row above.
371
+ isPrevSelected: 0,
372
+ isFirstItem: 0
373
+ },
374
+ left: 0,
375
+ right: 0,
376
+ bottom: {
377
+ default: 0,
378
+ isSelected: '[-1px]'
379
+ },
380
+ backgroundColor: {
381
+ default: '--rowBackgroundColor',
382
+ isHovered: {
383
+ default: 'gray-900/5',
384
+ selectionStyle: {
385
+ checkbox: selectedBackground
386
+ }
387
+ },
388
+ isPressed: {
389
+ default: 'gray-900/10',
390
+ selectionStyle: {
391
+ checkbox: selectedActiveBackground
392
+ }
393
+ },
394
+ isSelected: {
395
+ selectionStyle: {
396
+ checkbox: {
397
+ default: selectedBackground,
398
+ isHovered: selectedActiveBackground,
399
+ isPressed: selectedActiveBackground,
400
+ isFocusVisible: selectedActiveBackground
401
+ },
402
+ highlight: {
403
+ // Use solid colors rather than transparent because the rows overlap.
404
+ default: colorMix('gray-25', 'blue-900', 10),
405
+ isHovered: colorMix('gray-25', 'blue-900', 15),
406
+ isPressed: colorMix('gray-25', 'blue-900', 15)
407
+ }
408
+ }
409
+ },
410
+ forcedColors: {
411
+ default: 'Background'
412
+ }
413
+ },
414
+ borderTopStartRadius: {
415
+ isFirstItem: {
416
+ isSelected: {
417
+ selectionStyle: {
418
+ checkbox: 'none',
419
+ highlight: 'default'
420
+ }
421
+ },
422
+ isQuiet: 'default',
423
+ isFocusVisible: 'default'
424
+ }
425
+ },
426
+ borderTopEndRadius: {
427
+ isFirstItem: {
428
+ isSelected: {
429
+ selectionStyle: {
430
+ checkbox: 'none',
431
+ highlight: 'default'
432
+ }
433
+ },
434
+ isQuiet: 'default',
435
+ isFocusVisible: 'default'
436
+ }
437
+ },
438
+ borderBottomStartRadius: {
439
+ isLastItem: {
440
+ isSelected: {
441
+ selectionStyle: {
442
+ checkbox: 'none',
443
+ highlight: 'default'
444
+ }
445
+ },
446
+ isQuiet: 'default',
447
+ isFocusVisible: 'default'
448
+ }
449
+ },
450
+ borderBottomEndRadius: {
451
+ isLastItem: {
452
+ isSelected: {
453
+ selectionStyle: {
454
+ checkbox: 'none',
455
+ highlight: 'default'
456
+ }
457
+ },
458
+ isQuiet: 'default',
459
+ isFocusVisible: 'default'
460
+ }
461
+ },
462
+ borderTopWidth: {
463
+ default: {
464
+ selectionStyle: {
465
+ checkbox: 0,
466
+ highlight: 1
467
+ }
468
+ },
469
+ isPrevSelected: 0
470
+ },
471
+ borderBottomWidth: {
472
+ default: {
473
+ selectionStyle: {
474
+ checkbox: 0,
475
+ highlight: 1
476
+ }
477
+ },
478
+ isNextSelected: 0
479
+ },
480
+ borderStartWidth: {
481
+ default: {
482
+ selectionStyle: {
483
+ checkbox: 0,
484
+ highlight: 1
485
+ }
486
+ }
487
+ },
488
+ borderEndWidth: {
489
+ default: {
490
+ selectionStyle: {
491
+ checkbox: 0,
492
+ highlight: 1
493
+ }
494
+ }
495
+ },
496
+ borderStyle: 'solid',
497
+ borderColor: {
498
+ default: 'transparent',
499
+ isSelected: {
500
+ selectionStyle: {
501
+ checkbox: 'transparent',
502
+ highlight: '--borderColor'
503
+ }
504
+ }
505
+ }
506
+ });
507
+
508
+ export let label = style({
509
+ gridArea: 'label',
510
+ alignSelf: 'center',
511
+ font: controlFont(),
512
+ color: 'inherit',
513
+ truncate: true,
514
+ whiteSpace: {
515
+ default: 'nowrap',
516
+ overflowMode: {
517
+ wrap: 'normal'
518
+ }
519
+ }
520
+ });
521
+
522
+ export let description = style({
523
+ gridArea: 'description',
524
+ alignSelf: 'center',
525
+ truncate: true,
526
+ whiteSpace: {
527
+ default: 'nowrap',
528
+ overflowMode: {
529
+ wrap: 'normal'
530
+ }
531
+ },
532
+ font: 'ui-sm',
533
+ color: {
534
+ default: baseColor('neutral-subdued'),
535
+ isDisabled: 'disabled'
536
+ },
537
+ transition: 'default'
538
+ });
539
+
540
+ export let iconCenterWrapper = style({
541
+ display: 'flex',
542
+ gridArea: 'icon',
543
+ gridRowEnd: 'span 2',
544
+ alignSelf: 'center',
545
+ alignItems: 'center'
546
+ });
547
+
548
+ export let icon = style({
549
+ display: 'block',
550
+ size: fontRelative(20),
551
+ // too small default icon size is wrong, it's like the icons are 1 tshirt size bigger than the rest of the component? check again after typography changes
552
+ // reminder, size of WF is applied via font size
553
+ marginEnd: 'text-to-visual',
554
+ '--iconPrimary': {
555
+ type: 'fill',
556
+ value: 'currentColor'
557
+ }
558
+ });
559
+
560
+ let image = style({
561
+ gridArea: 'icon',
562
+ gridRowEnd: 'span 2',
563
+ marginEnd: 'text-to-visual',
564
+ alignSelf: 'center',
565
+ borderRadius: 'sm',
566
+ width: 32,
567
+ aspectRatio: 'square',
568
+ objectFit: 'cover'
569
+ });
570
+
571
+ let actionButtonGroup = style({
572
+ gridArea: 'actions',
573
+ gridRowEnd: 'span 2',
574
+ alignSelf: 'center',
575
+ justifySelf: 'end',
576
+ marginStart: 'text-to-visual'
577
+ });
578
+
579
+ let listActionMenu = style({
580
+ gridArea: 'actionmenu',
581
+ gridRowEnd: 'span 2',
582
+ alignSelf: 'center'
583
+ });
584
+
585
+ const listCheckbox = style({
586
+ gridArea: 'checkmark',
587
+ gridRowEnd: 'span 2',
588
+ alignSelf: 'center',
589
+ marginEnd: 8,
590
+ visibility: {
591
+ default: 'visible',
592
+ isDisabled: 'hidden'
593
+ }
594
+ });
595
+
596
+ const listTrailingIcon = style({
597
+ gridArea: 'trailing-icon',
598
+ gridRowEnd: 'span 2',
599
+ alignSelf: 'center',
600
+ display: 'flex',
601
+ alignItems: 'center',
602
+ marginStart: 'text-to-visual'
603
+ });
604
+
605
+ const centeredWrapper = style({
606
+ display: 'flex',
607
+ alignItems: 'center',
608
+ justifyContent: 'center',
609
+ width: 'full',
610
+ height: 'full'
611
+ });
612
+
613
+ const loadingSpinnerWrapper = style({
614
+ padding: space(4)
615
+ });
616
+
617
+ const emptyStateWrapper = style({
618
+ display: 'flex',
619
+ alignItems: 'center',
620
+ justifyContent: 'center',
621
+ width: 'full',
622
+ height: 'full',
623
+ boxSizing: 'border-box',
624
+ padding: 16
625
+ });
626
+
627
+ function ListSelectionCheckbox({isDisabled}: {isDisabled: boolean}) {
628
+ let selectionContext = useSlottedContext(CheckboxContext, 'selection');
629
+ let isSelectionDisabled = isDisabled || !!selectionContext?.isDisabled;
630
+ return (
631
+ <div className={listCheckbox({isDisabled: isSelectionDisabled})}>
632
+ <Checkbox slot="selection" />
633
+ </div>
634
+ );
635
+ }
636
+
637
+ function isNextSelected(id: Key | undefined, state: ListState<unknown>) {
638
+ if (id == null || !state) {
639
+ return false;
640
+ }
641
+ let keyAfter = state.collection.getKeyAfter(id);
642
+ return keyAfter != null && state.selectionManager.isSelected(keyAfter);
643
+ }
644
+ function isPrevSelected(id: Key | undefined, state: ListState<unknown>) {
645
+ if (id == null || !state) {
646
+ return false;
647
+ }
648
+ let keyBefore = state.collection.getKeyBefore(id);
649
+ return keyBefore != null && state.selectionManager.isSelected(keyBefore);
650
+ }
651
+
652
+ function isFirstItem(id: Key | undefined, state: ListState<unknown>) {
653
+ if (id == null || !state) {
654
+ return false;
655
+ }
656
+ return state.collection.getFirstKey() === id;
657
+ }
658
+ function isLastItem(id: Key | undefined, state: ListState<unknown>) {
659
+ if (id == null || !state) {
660
+ return false;
661
+ }
662
+ return state.collection.getLastKey() === id;
663
+ }
664
+
665
+ export function ListViewItem(props: ListViewItemProps): ReactNode {
666
+ let ref = useRef(null);
667
+ let {hasChildItems, ...otherProps} = props;
668
+ let isLink = props.href != null;
669
+ let isLinkOut = isLink && props.target === '_blank';
670
+ let {isQuiet, selectionStyle, overflowMode, scale, hideLinkOutIcon = false} = useContext(InternalListViewContext);
671
+ let textValue = props.textValue || (typeof props.children === 'string' ? props.children : undefined);
672
+ let {direction} = useLocale();
673
+ let hasTrailingIcon = hasChildItems || (isLinkOut && !hideLinkOutIcon);
674
+
675
+ return (
676
+ <GridListItem
677
+ {...otherProps}
678
+ textValue={textValue}
679
+ ref={ref}
680
+ {...(hasTrailingIcon ? {'data-has-trailing-icon': ''} : {})}
681
+ className={renderProps => listitem({
682
+ ...renderProps,
683
+ isLink,
684
+ isQuiet,
685
+ scale,
686
+ selectionStyle,
687
+ isPrevNotSelected: !isPrevSelected(renderProps.id, renderProps.state),
688
+ isNextSelected: isNextSelected(renderProps.id, renderProps.state),
689
+ isNextNotSelected: !isNextSelected(renderProps.id, renderProps.state),
690
+ isFirstItem: isFirstItem(renderProps.id, renderProps.state),
691
+ isLastItem: isLastItem(renderProps.id, renderProps.state)
692
+ })}>
693
+ {(renderProps) => {
694
+ let {children} = props;
695
+ let {selectionMode, selectionBehavior, isDisabled, id, state} = renderProps;
696
+ return (
697
+ <Provider
698
+ values={[
699
+ [TextContext, {
700
+ slots: {
701
+ [DEFAULT_SLOT]: {styles: label({...renderProps, overflowMode})},
702
+ label: {styles: label({...renderProps, overflowMode})},
703
+ description: {styles: description({...renderProps, overflowMode})}
704
+ }
705
+ }],
706
+ [IconContext, {
707
+ slots: {
708
+ icon: {render: centerBaseline({slot: 'icon', styles: iconCenterWrapper}), styles: icon}
709
+ }
710
+ }],
711
+ [ImageContext, {styles: image}],
712
+ [ActionButtonGroupContext, {
713
+ styles: actionButtonGroup,
714
+ size: 'S',
715
+ isQuiet: true
716
+ }],
717
+ [ActionMenuContext, {
718
+ styles: listActionMenu,
719
+ isQuiet: true,
720
+ size: 'S',
721
+ isDisabled
722
+ }]
723
+ ]}>
724
+ <div
725
+ className={
726
+ listRowBackground({
727
+ ...renderProps,
728
+ selectionStyle,
729
+ isQuiet,
730
+ isPrevSelected: isPrevSelected(id, state),
731
+ isNextSelected: isNextSelected(id, state),
732
+ isPrevNotSelected: !isPrevSelected(id, state),
733
+ isNextNotSelected: !isNextSelected(id, state),
734
+ isFirstItem: isFirstItem(id, state),
735
+ isLastItem: isLastItem(id, state)
736
+ })
737
+ } />
738
+ {selectionMode !== 'none' && selectionBehavior === 'toggle' && (
739
+ <ListSelectionCheckbox isDisabled={isDisabled} />
740
+ )}
741
+ {typeof children === 'string' ? <Text slot="label">{children}</Text> : children}
742
+ {isLinkOut && !hideLinkOutIcon && (
743
+ <div className={listTrailingIcon}>
744
+ <LinkOutIcon
745
+ size="M"
746
+ className={style({
747
+ scaleX: {
748
+ direction: {
749
+ rtl: -1
750
+ }
751
+ },
752
+ '--iconPrimary': {
753
+ type: 'fill',
754
+ value: 'currentColor'
755
+ }
756
+ })({direction})} />
757
+ </div>
758
+ )}
759
+ {hasChildItems && !isLinkOut && (
760
+ <div className={listTrailingIcon}>
761
+ <Chevron
762
+ className={style({
763
+ scale: {
764
+ direction: {
765
+ ltr: '1',
766
+ rtl: '-1'
767
+ }
768
+ },
769
+ '--iconPrimary': {
770
+ type: 'fill',
771
+ value: 'currentColor'
772
+ }
773
+ })({direction})} />
774
+ </div>
775
+ )}
776
+ </Provider>
777
+ );
778
+ }}
779
+ </GridListItem>
780
+ );
781
+ }
782
+