@react-spectrum/s2 1.4.0 → 1.5.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 (421) hide show
  1. package/dist/exports/CenterBaseline.cjs +12 -0
  2. package/dist/exports/CenterBaseline.cjs.map +1 -0
  3. package/dist/exports/CenterBaseline.mjs +7 -0
  4. package/dist/exports/CenterBaseline.mjs.map +1 -0
  5. package/dist/exports/Skeleton.cjs +1 -0
  6. package/dist/exports/Skeleton.cjs.map +1 -1
  7. package/dist/exports/Skeleton.mjs +2 -2
  8. package/dist/exports/Skeleton.mjs.map +1 -1
  9. package/dist/exports/index.cjs +3 -0
  10. package/dist/exports/index.cjs.map +1 -1
  11. package/dist/exports/index.mjs +3 -1
  12. package/dist/exports/index.mjs.map +1 -1
  13. package/dist/private/Accordion.cjs +2 -2
  14. package/dist/private/Accordion.css +2 -2
  15. package/dist/private/Accordion.mjs +2 -2
  16. package/dist/private/ActionBar.cjs +59 -59
  17. package/dist/private/ActionBar.cjs.map +1 -1
  18. package/dist/private/ActionBar.css +58 -58
  19. package/dist/private/ActionBar.css.map +1 -1
  20. package/dist/private/ActionBar.mjs +59 -59
  21. package/dist/private/ActionBar.mjs.map +1 -1
  22. package/dist/private/ActionButton.cjs +247 -247
  23. package/dist/private/ActionButton.cjs.map +1 -1
  24. package/dist/private/ActionButton.css +169 -169
  25. package/dist/private/ActionButton.css.map +1 -1
  26. package/dist/private/ActionButton.mjs +247 -247
  27. package/dist/private/ActionButton.mjs.map +1 -1
  28. package/dist/private/ActionButtonGroup.cjs +15 -15
  29. package/dist/private/ActionButtonGroup.css +9 -9
  30. package/dist/private/ActionButtonGroup.mjs +15 -15
  31. package/dist/private/ActionMenu.cjs.map +1 -1
  32. package/dist/private/ActionMenu.mjs.map +1 -1
  33. package/dist/private/Add.cjs +10 -10
  34. package/dist/private/Add.css +6 -6
  35. package/dist/private/Add.mjs +10 -10
  36. package/dist/private/AlertDialog.cjs +3 -3
  37. package/dist/private/AlertDialog.cjs.map +1 -1
  38. package/dist/private/AlertDialog.css +3 -3
  39. package/dist/private/AlertDialog.css.map +1 -1
  40. package/dist/private/AlertDialog.mjs +3 -3
  41. package/dist/private/AlertDialog.mjs.map +1 -1
  42. package/dist/private/Asterisk.cjs +6 -6
  43. package/dist/private/Asterisk.css +4 -4
  44. package/dist/private/Asterisk.mjs +6 -6
  45. package/dist/private/Avatar.cjs +16 -16
  46. package/dist/private/Avatar.css +16 -16
  47. package/dist/private/Avatar.mjs +16 -16
  48. package/dist/private/AvatarGroup.cjs +120 -120
  49. package/dist/private/AvatarGroup.css +31 -31
  50. package/dist/private/AvatarGroup.mjs +120 -120
  51. package/dist/private/Badge.cjs +197 -197
  52. package/dist/private/Badge.css +125 -125
  53. package/dist/private/Badge.mjs +197 -197
  54. package/dist/private/Breadcrumbs.cjs +234 -234
  55. package/dist/private/Breadcrumbs.cjs.map +1 -1
  56. package/dist/private/Breadcrumbs.css +100 -100
  57. package/dist/private/Breadcrumbs.css.map +1 -1
  58. package/dist/private/Breadcrumbs.mjs +234 -234
  59. package/dist/private/Breadcrumbs.mjs.map +1 -1
  60. package/dist/private/Button.cjs +326 -326
  61. package/dist/private/Button.cjs.map +1 -1
  62. package/dist/private/Button.css +172 -172
  63. package/dist/private/Button.css.map +1 -1
  64. package/dist/private/Button.mjs +326 -326
  65. package/dist/private/Button.mjs.map +1 -1
  66. package/dist/private/ButtonGroup.cjs +23 -20
  67. package/dist/private/ButtonGroup.cjs.map +1 -1
  68. package/dist/private/ButtonGroup.css +19 -15
  69. package/dist/private/ButtonGroup.css.map +1 -1
  70. package/dist/private/ButtonGroup.mjs +23 -20
  71. package/dist/private/ButtonGroup.mjs.map +1 -1
  72. package/dist/private/Calendar.cjs +232 -232
  73. package/dist/private/Calendar.cjs.map +1 -1
  74. package/dist/private/Calendar.css +149 -149
  75. package/dist/private/Calendar.css.map +1 -1
  76. package/dist/private/Calendar.mjs +232 -232
  77. package/dist/private/Calendar.mjs.map +1 -1
  78. package/dist/private/Card.cjs +309 -309
  79. package/dist/private/Card.css +206 -206
  80. package/dist/private/Card.mjs +309 -309
  81. package/dist/private/CardView.cjs +17 -17
  82. package/dist/private/CardView.css +17 -17
  83. package/dist/private/CardView.mjs +17 -17
  84. package/dist/private/CenterBaseline.cjs +1 -1
  85. package/dist/private/CenterBaseline.cjs.map +1 -1
  86. package/dist/private/CenterBaseline.css +2 -2
  87. package/dist/private/CenterBaseline.css.map +1 -1
  88. package/dist/private/CenterBaseline.mjs +1 -1
  89. package/dist/private/CenterBaseline.mjs.map +1 -1
  90. package/dist/private/Checkbox.cjs +188 -188
  91. package/dist/private/Checkbox.css +110 -110
  92. package/dist/private/Checkbox.mjs +188 -188
  93. package/dist/private/CheckboxGroup.cjs +43 -43
  94. package/dist/private/CheckboxGroup.css +37 -37
  95. package/dist/private/CheckboxGroup.mjs +43 -43
  96. package/dist/private/Checkmark.cjs +12 -12
  97. package/dist/private/Checkmark.css +8 -8
  98. package/dist/private/Checkmark.mjs +12 -12
  99. package/dist/private/Chevron.cjs +12 -12
  100. package/dist/private/Chevron.css +10 -10
  101. package/dist/private/Chevron.mjs +12 -12
  102. package/dist/private/ClearButton.cjs +30 -30
  103. package/dist/private/ClearButton.css +30 -30
  104. package/dist/private/ClearButton.mjs +30 -30
  105. package/dist/private/CloseButton.cjs +52 -52
  106. package/dist/private/CloseButton.cjs.map +1 -1
  107. package/dist/private/CloseButton.css +46 -46
  108. package/dist/private/CloseButton.css.map +1 -1
  109. package/dist/private/CloseButton.mjs +52 -52
  110. package/dist/private/CloseButton.mjs.map +1 -1
  111. package/dist/private/ColorArea.cjs +16 -16
  112. package/dist/private/ColorArea.css +16 -16
  113. package/dist/private/ColorArea.mjs +16 -16
  114. package/dist/private/ColorField.cjs +31 -31
  115. package/dist/private/ColorField.css +27 -27
  116. package/dist/private/ColorField.mjs +31 -31
  117. package/dist/private/ColorHandle.cjs +27 -27
  118. package/dist/private/ColorHandle.css +42 -42
  119. package/dist/private/ColorHandle.mjs +27 -27
  120. package/dist/private/ColorSlider.cjs +108 -108
  121. package/dist/private/ColorSlider.css +52 -52
  122. package/dist/private/ColorSlider.mjs +108 -108
  123. package/dist/private/ColorSwatch.cjs +29 -29
  124. package/dist/private/ColorSwatch.css +29 -29
  125. package/dist/private/ColorSwatch.mjs +29 -29
  126. package/dist/private/ColorSwatchPicker.cjs +29 -29
  127. package/dist/private/ColorSwatchPicker.css +48 -48
  128. package/dist/private/ColorSwatchPicker.mjs +29 -29
  129. package/dist/private/ColorWheel.cjs +26 -26
  130. package/dist/private/ColorWheel.css +17 -17
  131. package/dist/private/ColorWheel.mjs +26 -26
  132. package/dist/private/ComboBox.cjs +381 -381
  133. package/dist/private/ComboBox.cjs.map +1 -1
  134. package/dist/private/ComboBox.css +188 -188
  135. package/dist/private/ComboBox.css.map +1 -1
  136. package/dist/private/ComboBox.mjs +381 -381
  137. package/dist/private/ComboBox.mjs.map +1 -1
  138. package/dist/private/ContextualHelp.cjs +5 -5
  139. package/dist/private/ContextualHelp.cjs.map +1 -1
  140. package/dist/private/ContextualHelp.css +50 -50
  141. package/dist/private/ContextualHelp.css.map +1 -1
  142. package/dist/private/ContextualHelp.mjs +5 -5
  143. package/dist/private/ContextualHelp.mjs.map +1 -1
  144. package/dist/private/CornerTriangle.cjs +8 -8
  145. package/dist/private/CornerTriangle.css +6 -6
  146. package/dist/private/CornerTriangle.mjs +8 -8
  147. package/dist/private/Cross.cjs +14 -14
  148. package/dist/private/Cross.css +10 -10
  149. package/dist/private/Cross.mjs +14 -14
  150. package/dist/private/CustomDialog.cjs +25 -25
  151. package/dist/private/CustomDialog.css +25 -25
  152. package/dist/private/CustomDialog.mjs +25 -25
  153. package/dist/private/Dash.cjs +10 -10
  154. package/dist/private/Dash.css +6 -6
  155. package/dist/private/Dash.mjs +10 -10
  156. package/dist/private/DateField.cjs +73 -73
  157. package/dist/private/DateField.css +77 -77
  158. package/dist/private/DateField.mjs +73 -73
  159. package/dist/private/DatePicker.cjs +172 -172
  160. package/dist/private/DatePicker.cjs.map +1 -1
  161. package/dist/private/DatePicker.css +128 -128
  162. package/dist/private/DatePicker.css.map +1 -1
  163. package/dist/private/DatePicker.mjs +172 -172
  164. package/dist/private/DatePicker.mjs.map +1 -1
  165. package/dist/private/DateRangePicker.cjs +55 -55
  166. package/dist/private/DateRangePicker.cjs.map +1 -1
  167. package/dist/private/DateRangePicker.css +59 -59
  168. package/dist/private/DateRangePicker.css.map +1 -1
  169. package/dist/private/DateRangePicker.mjs +55 -55
  170. package/dist/private/DateRangePicker.mjs.map +1 -1
  171. package/dist/private/Dialog.cjs +17 -17
  172. package/dist/private/Dialog.css +70 -70
  173. package/dist/private/Dialog.mjs +17 -17
  174. package/dist/private/Disclosure.cjs +144 -122
  175. package/dist/private/Disclosure.cjs.map +1 -1
  176. package/dist/private/Disclosure.css +112 -112
  177. package/dist/private/Disclosure.css.map +1 -1
  178. package/dist/private/Disclosure.mjs +144 -122
  179. package/dist/private/Disclosure.mjs.map +1 -1
  180. package/dist/private/Divider.cjs +25 -25
  181. package/dist/private/Divider.css +25 -25
  182. package/dist/private/Divider.mjs +25 -25
  183. package/dist/private/DragHandle.cjs +8 -8
  184. package/dist/private/DragHandle.css +6 -6
  185. package/dist/private/DragHandle.mjs +8 -8
  186. package/dist/private/DragPreview.cjs +154 -154
  187. package/dist/private/DragPreview.css +106 -106
  188. package/dist/private/DragPreview.mjs +154 -154
  189. package/dist/private/DropZone.cjs +61 -61
  190. package/dist/private/DropZone.cjs.map +1 -1
  191. package/dist/private/DropZone.css +57 -57
  192. package/dist/private/DropZone.css.map +1 -1
  193. package/dist/private/DropZone.mjs +61 -61
  194. package/dist/private/DropZone.mjs.map +1 -1
  195. package/dist/private/Field.cjs +360 -360
  196. package/dist/private/Field.cjs.map +1 -1
  197. package/dist/private/Field.css +160 -160
  198. package/dist/private/Field.css.map +1 -1
  199. package/dist/private/Field.mjs +360 -360
  200. package/dist/private/Field.mjs.map +1 -1
  201. package/dist/private/Form.cjs +9 -9
  202. package/dist/private/Form.css +9 -9
  203. package/dist/private/Form.mjs +9 -9
  204. package/dist/private/FullscreenDialog.cjs +5 -5
  205. package/dist/private/FullscreenDialog.css +78 -78
  206. package/dist/private/FullscreenDialog.mjs +5 -5
  207. package/dist/private/IllustratedMessage.cjs +228 -228
  208. package/dist/private/IllustratedMessage.css +72 -72
  209. package/dist/private/IllustratedMessage.mjs +228 -228
  210. package/dist/private/Image.cjs +14 -14
  211. package/dist/private/Image.css +14 -14
  212. package/dist/private/Image.mjs +14 -14
  213. package/dist/private/InlineAlert.cjs +100 -100
  214. package/dist/private/InlineAlert.cjs.map +1 -1
  215. package/dist/private/InlineAlert.css +76 -76
  216. package/dist/private/InlineAlert.css.map +1 -1
  217. package/dist/private/InlineAlert.mjs +100 -100
  218. package/dist/private/InlineAlert.mjs.map +1 -1
  219. package/dist/private/LabeledValue.cjs +134 -134
  220. package/dist/private/LabeledValue.css +63 -63
  221. package/dist/private/LabeledValue.mjs +134 -134
  222. package/dist/private/Link.cjs +49 -49
  223. package/dist/private/Link.css +41 -41
  224. package/dist/private/Link.mjs +49 -49
  225. package/dist/private/LinkOut.cjs +8 -8
  226. package/dist/private/LinkOut.css +8 -8
  227. package/dist/private/LinkOut.mjs +8 -8
  228. package/dist/private/ListView.cjs +245 -245
  229. package/dist/private/ListView.cjs.map +1 -1
  230. package/dist/private/ListView.css +177 -177
  231. package/dist/private/ListView.css.map +1 -1
  232. package/dist/private/ListView.mjs +245 -245
  233. package/dist/private/ListView.mjs.map +1 -1
  234. package/dist/private/Menu.cjs +446 -446
  235. package/dist/private/Menu.cjs.map +1 -1
  236. package/dist/private/Menu.css +196 -196
  237. package/dist/private/Menu.css.map +1 -1
  238. package/dist/private/Menu.mjs +446 -446
  239. package/dist/private/Menu.mjs.map +1 -1
  240. package/dist/private/Meter.cjs +153 -153
  241. package/dist/private/Meter.css +91 -91
  242. package/dist/private/Meter.mjs +153 -153
  243. package/dist/private/Modal.cjs +74 -74
  244. package/dist/private/Modal.css +59 -59
  245. package/dist/private/Modal.mjs +74 -74
  246. package/dist/private/NotificationBadge.cjs +56 -56
  247. package/dist/private/NotificationBadge.cjs.map +1 -1
  248. package/dist/private/NotificationBadge.css +49 -49
  249. package/dist/private/NotificationBadge.css.map +1 -1
  250. package/dist/private/NotificationBadge.mjs +56 -56
  251. package/dist/private/NotificationBadge.mjs.map +1 -1
  252. package/dist/private/NumberField.cjs +114 -114
  253. package/dist/private/NumberField.css +99 -99
  254. package/dist/private/NumberField.mjs +114 -114
  255. package/dist/private/Picker.cjs +275 -275
  256. package/dist/private/Picker.cjs.map +1 -1
  257. package/dist/private/Picker.css +173 -173
  258. package/dist/private/Picker.css.map +1 -1
  259. package/dist/private/Picker.mjs +275 -275
  260. package/dist/private/Picker.mjs.map +1 -1
  261. package/dist/private/Popover.cjs +95 -95
  262. package/dist/private/Popover.cjs.map +1 -1
  263. package/dist/private/Popover.css +75 -75
  264. package/dist/private/Popover.css.map +1 -1
  265. package/dist/private/Popover.mjs +95 -95
  266. package/dist/private/Popover.mjs.map +1 -1
  267. package/dist/private/ProgressBar.cjs +163 -163
  268. package/dist/private/ProgressBar.css +99 -99
  269. package/dist/private/ProgressBar.mjs +163 -163
  270. package/dist/private/ProgressCircle.cjs +34 -31
  271. package/dist/private/ProgressCircle.cjs.map +1 -1
  272. package/dist/private/ProgressCircle.css +24 -24
  273. package/dist/private/ProgressCircle.css.map +1 -1
  274. package/dist/private/ProgressCircle.mjs +34 -31
  275. package/dist/private/ProgressCircle.mjs.map +1 -1
  276. package/dist/private/Provider.cjs +19 -19
  277. package/dist/private/Provider.css +15 -15
  278. package/dist/private/Provider.mjs +19 -19
  279. package/dist/private/RadioGroup.cjs +208 -208
  280. package/dist/private/RadioGroup.css +113 -113
  281. package/dist/private/RadioGroup.mjs +208 -208
  282. package/dist/private/RangeCalendar.cjs +16 -16
  283. package/dist/private/RangeCalendar.cjs.map +1 -1
  284. package/dist/private/RangeCalendar.css +17 -17
  285. package/dist/private/RangeCalendar.css.map +1 -1
  286. package/dist/private/RangeCalendar.mjs +16 -16
  287. package/dist/private/RangeCalendar.mjs.map +1 -1
  288. package/dist/private/RangeSlider.cjs.map +1 -1
  289. package/dist/private/RangeSlider.mjs.map +1 -1
  290. package/dist/private/SearchField.cjs +41 -41
  291. package/dist/private/SearchField.css +45 -45
  292. package/dist/private/SearchField.mjs +41 -41
  293. package/dist/private/SegmentedControl.cjs +178 -178
  294. package/dist/private/SegmentedControl.css +123 -123
  295. package/dist/private/SegmentedControl.mjs +178 -178
  296. package/dist/private/SelectBoxGroup.cjs +142 -142
  297. package/dist/private/SelectBoxGroup.css +120 -120
  298. package/dist/private/SelectBoxGroup.mjs +142 -142
  299. package/dist/private/Slider.cjs +292 -292
  300. package/dist/private/Slider.css +159 -159
  301. package/dist/private/Slider.mjs +292 -292
  302. package/dist/private/StatusLight.cjs +115 -115
  303. package/dist/private/StatusLight.css +59 -59
  304. package/dist/private/StatusLight.mjs +115 -115
  305. package/dist/private/Switch.cjs +171 -171
  306. package/dist/private/Switch.css +85 -85
  307. package/dist/private/Switch.mjs +171 -171
  308. package/dist/private/TableView.cjs +551 -534
  309. package/dist/private/TableView.cjs.map +1 -1
  310. package/dist/private/TableView.css +329 -303
  311. package/dist/private/TableView.css.map +1 -1
  312. package/dist/private/TableView.mjs +551 -534
  313. package/dist/private/TableView.mjs.map +1 -1
  314. package/dist/private/Tabs.cjs +131 -125
  315. package/dist/private/Tabs.cjs.map +1 -1
  316. package/dist/private/Tabs.css +105 -105
  317. package/dist/private/Tabs.css.map +1 -1
  318. package/dist/private/Tabs.mjs +131 -125
  319. package/dist/private/Tabs.mjs.map +1 -1
  320. package/dist/private/TabsPicker.cjs +127 -127
  321. package/dist/private/TabsPicker.css +108 -108
  322. package/dist/private/TabsPicker.mjs +127 -127
  323. package/dist/private/TagGroup.cjs +203 -203
  324. package/dist/private/TagGroup.cjs.map +1 -1
  325. package/dist/private/TagGroup.css +146 -146
  326. package/dist/private/TagGroup.css.map +1 -1
  327. package/dist/private/TagGroup.mjs +203 -203
  328. package/dist/private/TagGroup.mjs.map +1 -1
  329. package/dist/private/TextField.cjs +58 -58
  330. package/dist/private/TextField.css +54 -54
  331. package/dist/private/TextField.mjs +58 -58
  332. package/dist/private/TimeField.cjs +51 -51
  333. package/dist/private/TimeField.css +47 -47
  334. package/dist/private/TimeField.mjs +51 -51
  335. package/dist/private/Toast.cjs +120 -120
  336. package/dist/private/Toast.cjs.map +1 -1
  337. package/dist/private/Toast.css +110 -110
  338. package/dist/private/Toast.css.map +1 -1
  339. package/dist/private/Toast.mjs +120 -120
  340. package/dist/private/Toast.mjs.map +1 -1
  341. package/dist/private/ToggleButton.cjs +16 -16
  342. package/dist/private/ToggleButton.css +23 -23
  343. package/dist/private/ToggleButton.mjs +16 -16
  344. package/dist/private/Tooltip.cjs +86 -86
  345. package/dist/private/Tooltip.css +70 -70
  346. package/dist/private/Tooltip.mjs +86 -86
  347. package/dist/private/TreeView.cjs +229 -229
  348. package/dist/private/TreeView.cjs.map +1 -1
  349. package/dist/private/TreeView.css +184 -184
  350. package/dist/private/TreeView.css.map +1 -1
  351. package/dist/private/TreeView.mjs +229 -229
  352. package/dist/private/TreeView.mjs.map +1 -1
  353. package/dist/private/dnd-utils.cjs +42 -42
  354. package/dist/private/dnd-utils.css +39 -39
  355. package/dist/private/dnd-utils.mjs +42 -42
  356. package/dist/types/exports/CenterBaseline.d.ts +1 -0
  357. package/dist/types/exports/Skeleton.d.ts +1 -1
  358. package/dist/types/exports/index.d.ts +1 -0
  359. package/dist/types/src/CenterBaseline.d.ts +17 -0
  360. package/dist/types/src/ContextualHelp.d.ts +1 -1
  361. package/dist/types/src/Disclosure.d.ts +6 -1
  362. package/dist/types/src/ListView.d.ts +1 -1
  363. package/dist/types/src/Menu.d.ts +1 -1
  364. package/dist/types/src/Popover.d.ts +2 -2
  365. package/dist/types/src/style-utils.d.ts +4 -1
  366. package/exports/CenterBaseline.ts +1 -0
  367. package/exports/Skeleton.ts +1 -1
  368. package/exports/index.ts +2 -0
  369. package/icons/Icon.cjs +10 -10
  370. package/icons/Icon.css +9 -9
  371. package/icons/Icon.mjs +10 -10
  372. package/icons/Skeleton.cjs +2 -2
  373. package/icons/Skeleton.cjs.map +1 -1
  374. package/icons/Skeleton.css +6 -6
  375. package/icons/Skeleton.mjs +2 -2
  376. package/icons/Skeleton.mjs.map +1 -1
  377. package/package.json +6 -6
  378. package/src/ActionBar.tsx +0 -1
  379. package/src/ActionButton.tsx +0 -1
  380. package/src/ActionMenu.tsx +0 -1
  381. package/src/AlertDialog.tsx +0 -1
  382. package/src/Breadcrumbs.tsx +0 -4
  383. package/src/Button.tsx +0 -1
  384. package/src/ButtonGroup.tsx +1 -0
  385. package/src/Calendar.tsx +0 -1
  386. package/src/CenterBaseline.tsx +17 -0
  387. package/src/CloseButton.tsx +0 -1
  388. package/src/ComboBox.tsx +0 -1
  389. package/src/ContextualHelp.tsx +1 -2
  390. package/src/DatePicker.tsx +0 -1
  391. package/src/DateRangePicker.tsx +0 -1
  392. package/src/Disclosure.tsx +92 -79
  393. package/src/DropZone.tsx +0 -1
  394. package/src/Field.tsx +0 -1
  395. package/src/InlineAlert.tsx +0 -1
  396. package/src/ListView.tsx +0 -2
  397. package/src/Menu.tsx +1 -8
  398. package/src/NotificationBadge.tsx +0 -1
  399. package/src/Picker.tsx +0 -1
  400. package/src/Popover.tsx +2 -1
  401. package/src/ProgressCircle.tsx +1 -1
  402. package/src/RangeCalendar.tsx +0 -1
  403. package/src/RangeSlider.tsx +0 -1
  404. package/src/TableView.tsx +75 -37
  405. package/src/Tabs.tsx +9 -2
  406. package/src/TagGroup.tsx +0 -1
  407. package/src/Toast.tsx +0 -3
  408. package/src/TreeView.tsx +0 -1
  409. package/src/style-utils.ts +13 -2
  410. package/style/__tests__/style-macro.test.js +71 -71
  411. package/style/dist/main.cjs +25 -25
  412. package/style/dist/module.mjs +13 -13
  413. package/style/dist/properties.mjs +3 -3
  414. package/style/dist/spectrum-theme.cjs +224 -224
  415. package/style/dist/spectrum-theme.mjs +217 -217
  416. package/style/dist/style-macro.cjs +100 -100
  417. package/style/dist/style-macro.mjs +94 -94
  418. package/style/dist/style-utils.cjs +51 -39
  419. package/style/dist/style-utils.cjs.map +1 -1
  420. package/style/dist/style-utils.mjs +50 -38
  421. package/style/dist/style-utils.mjs.map +1 -1
@@ -72,26 +72,26 @@ const $79e2b4a1b34d1592$var$tabs = function anonymous(props, overrides) {
72
72
  if (p[1] === "_v") flexShrink = true;
73
73
  rules += p[0];
74
74
  }
75
- if (!position) rules += ' _Pc131';
76
- rules += ' sd131';
77
- if (!flexShrink) rules += ' _va131';
78
- rules += ' uk131';
79
- rules += ' ucJ9TBTb131';
80
- rules += ' ud3Euai131';
81
- rules += ' uea131';
82
- rules += ' ugb131';
83
- rules += ' uhd131';
84
- rules += ' uje131';
85
- rules += ' u2NhKxcl131';
86
- rules += ' uic131';
87
- rules += ' -_6BNtrc-c131';
88
- rules += ' vx131';
89
- rules += ' xb131';
90
- rules += ' _xa131';
91
- rules += ' _Fd131';
92
- rules += ' _FnuYUweb131';
93
- rules += ' pt131';
94
- if (props.orientation === "horizontal") rules += ' _ta131';
75
+ if (!position) rules += ' _Pc15';
76
+ rules += ' sd15';
77
+ if (!flexShrink) rules += ' _va15';
78
+ rules += ' uk15';
79
+ rules += ' ucJ9TBTb15';
80
+ rules += ' ud3Euai15';
81
+ rules += ' uea15';
82
+ rules += ' ugb15';
83
+ rules += ' uhd15';
84
+ rules += ' uje15';
85
+ rules += ' u2NhKxcl15';
86
+ rules += ' uic15';
87
+ rules += ' -_6BNtrc-c15';
88
+ rules += ' vx15';
89
+ rules += ' xb15';
90
+ rules += ' _xa15';
91
+ rules += ' _Fd15';
92
+ rules += ' _FnuYUweb15';
93
+ rules += ' pt15';
94
+ if (props.orientation === "horizontal") rules += ' _ta15';
95
95
  return rules;
96
96
  };
97
97
  const $79e2b4a1b34d1592$export$b2539bed5023c21c = /*#__PURE__*/ (0, $8bRfI$forwardRef)(function Tabs(props, ref) {
@@ -101,6 +101,8 @@ const $79e2b4a1b34d1592$export$b2539bed5023c21c = /*#__PURE__*/ (0, $8bRfI$forwa
101
101
  let [value, setValue] = (0, $8bRfI$useControlledState)(props.selectedKey, props.defaultSelectedKey ?? null, props.onSelectionChange);
102
102
  if (!props['aria-label'] && !props['aria-labelledby']) throw new Error('An aria-label or aria-labelledby prop is required on Tabs for accessibility.');
103
103
  let tablistRef = (0, $8bRfI$useRef)(null);
104
+ // Shared base id so child Tab/TabPanel components can derive stable ids.
105
+ let baseId = (0, $8bRfI$useId)();
104
106
  return /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$Provider), {
105
107
  values: [
106
108
  [
@@ -114,6 +116,7 @@ const $79e2b4a1b34d1592$export$b2539bed5023c21c = /*#__PURE__*/ (0, $8bRfI$forwa
114
116
  tablistRef: tablistRef,
115
117
  onSelectionChange: setValue,
116
118
  labelBehavior: labelBehavior,
119
+ baseId: baseId,
117
120
  'aria-label': props['aria-label'],
118
121
  'aria-labelledby': props['aria-labelledby']
119
122
  }
@@ -133,25 +136,25 @@ const $79e2b4a1b34d1592$export$b2539bed5023c21c = /*#__PURE__*/ (0, $8bRfI$forwa
133
136
  });
134
137
  const $79e2b4a1b34d1592$var$tablist = function anonymous(props) {
135
138
  let rules = " ";
136
- rules += ' sd131';
139
+ rules += ' sd15';
137
140
  if (props.orientation === "horizontal") {
138
141
  if (props.labelBehavior === "hide") {
139
- if (props.density === "regular") rules += ' Uj131';
140
- else if (props.density === "compact") rules += ' Ul131';
141
- } else if (props.density === "regular") rules += ' Up131';
142
- else if (props.density === "compact") rules += ' Uj131';
142
+ if (props.density === "regular") rules += ' Uj15';
143
+ else if (props.density === "compact") rules += ' Ul15';
144
+ } else if (props.density === "regular") rules += ' Up15';
145
+ else if (props.density === "compact") rules += ' Uj15';
143
146
  }
144
147
  if (props.orientation === "horizontal") {
145
148
  if (props.labelBehavior === "hide") {
146
- if (props.density === "regular") rules += ' qj131';
147
- else if (props.density === "compact") rules += ' ql131';
148
- } else if (props.density === "regular") rules += ' qp131';
149
- else if (props.density === "compact") rules += ' qj131';
149
+ if (props.density === "regular") rules += ' qj15';
150
+ else if (props.density === "compact") rules += ' ql15';
151
+ } else if (props.density === "regular") rules += ' qp15';
152
+ else if (props.density === "compact") rules += ' qj15';
150
153
  }
151
- if (props.orientation === "vertical") rules += ' _ta131';
152
- if (props.orientation === "vertical") rules += ' Hz131';
153
- if (props.orientation === "vertical") rules += ' Ix131';
154
- rules += ' Nq131';
154
+ if (props.orientation === "vertical") rules += ' _ta15';
155
+ if (props.orientation === "vertical") rules += ' Hz15';
156
+ if (props.orientation === "vertical") rules += ' Ix15';
157
+ rules += ' Nq15';
155
158
  return rules;
156
159
  };
157
160
  const $79e2b4a1b34d1592$var$tablistWrapper = function anonymous(props, overrides) {
@@ -168,10 +171,10 @@ const $79e2b4a1b34d1592$var$tablistWrapper = function anonymous(props, overrides
168
171
  if (p[1] === "_u") flexGrow = true;
169
172
  rules += p[0];
170
173
  }
171
- if (!position) rules += ' _Pc131';
172
- if (!minWidth) rules += ' Na131';
173
- if (!flexShrink) rules += ' _va131';
174
- if (!flexGrow) rules += ' _ua131';
174
+ if (!position) rules += ' _Pc15';
175
+ if (!minWidth) rules += ' Na15';
176
+ if (!flexShrink) rules += ' _va15';
177
+ if (!flexGrow) rules += ' _ua15';
175
178
  return rules;
176
179
  };
177
180
  function $79e2b4a1b34d1592$export$e51a686c67fdaa2d(props) {
@@ -241,29 +244,29 @@ function $79e2b4a1b34d1592$var$TabListInner(props) {
241
244
  }
242
245
  const $79e2b4a1b34d1592$var$selectedIndicator = function anonymous(props) {
243
246
  let rules = " ";
244
- rules += ' _Pa131';
245
- if (props.isDisabled) rules += ' gH131';
246
- else rules += ' g0131';
247
- if (props.isDisabled) rules += ' gld131';
248
- else rules += ' gle131';
249
- if (props.orientation === "horizontal") rules += ' FLvNfn131';
250
- else rules += ' Fb131';
251
- if (props.orientation === "vertical") rules += ' ZLvNfn131';
252
- else rules += ' Za131';
253
- rules += ' _qg131';
254
- rules += ' YIRyJjb131';
255
- rules += ' Ydklsgce131';
256
- rules += ' Xc131';
257
- rules += ' _2a131';
258
- rules += ' _lr131';
259
- if (props.orientation === "vertical") rules += ' Wr131';
260
- if (props.orientation === "horizontal") rules += ' _Er131';
261
- if (props.orientation === "vertical") rules += ' _Aa131';
262
- rules += ' _je131';
263
- rules += ' og131';
264
- rules += ' ng131';
265
- rules += ' kg131';
266
- rules += ' jg131';
247
+ rules += ' _Pa15';
248
+ if (props.isDisabled) rules += ' gH15';
249
+ else rules += ' g015';
250
+ if (props.isDisabled) rules += ' gld15';
251
+ else rules += ' gle15';
252
+ if (props.orientation === "horizontal") rules += ' FLvNfn15';
253
+ else rules += ' Fb15';
254
+ if (props.orientation === "vertical") rules += ' ZLvNfn15';
255
+ else rules += ' Za15';
256
+ rules += ' _qg15';
257
+ rules += ' YIRyJjb15';
258
+ rules += ' Ydklsgce15';
259
+ rules += ' Xc15';
260
+ rules += ' _2a15';
261
+ rules += ' _lr15';
262
+ if (props.orientation === "vertical") rules += ' Wr15';
263
+ if (props.orientation === "horizontal") rules += ' _Er15';
264
+ if (props.orientation === "vertical") rules += ' _Aa15';
265
+ rules += ' _je15';
266
+ rules += ' og15';
267
+ rules += ' ng15';
268
+ rules += ' kg15';
269
+ rules += ' jg15';
267
270
  return rules;
268
271
  };
269
272
  const $79e2b4a1b34d1592$var$tab = function anonymous(props, overrides) {
@@ -276,60 +279,63 @@ const $79e2b4a1b34d1592$var$tab = function anonymous(props, overrides) {
276
279
  if (p[1] === "_v") flexShrink = true;
277
280
  rules += p[0];
278
281
  }
279
- if (props.isFocusVisible) rules += ' _Lf131';
280
- else rules += ' _Le131';
281
- rules += ' Oh131';
282
- rules += ' Olc131';
283
- rules += ' _Mc131';
284
- rules += ' _Kd131';
285
- rules += ' sd131';
286
- if (props.isDisabled) rules += ' pp131';
282
+ if (props.isFocusVisible) rules += ' _Lf15';
283
+ else rules += ' _Le15';
284
+ rules += ' Oh15';
285
+ rules += ' Olc15';
286
+ rules += ' _Mc15';
287
+ rules += ' _Kd15';
288
+ rules += ' sd15';
289
+ if (props.isDisabled) rules += ' pp15';
287
290
  else if (props.isSelected) {
288
- if (props.isPressed) rules += ' po131';
289
- else if (props.isFocusVisible) rules += ' po131';
290
- else if (props.isHovered) rules += ' po131';
291
- else rules += ' pt131';
291
+ if (props.isPressed) rules += ' po15';
292
+ else if (props.isFocusVisible) rules += ' po15';
293
+ else if (props.isHovered) rules += ' po15';
294
+ else rules += ' pt15';
292
295
  } else {
293
- if (props.isPressed) rules += ' pt131';
294
- else if (props.isFocusVisible) rules += ' pt131';
295
- else if (props.isHovered) rules += ' pt131';
296
- else rules += ' pv131';
296
+ if (props.isPressed) rules += ' pt15';
297
+ else if (props.isFocusVisible) rules += ' pt15';
298
+ else if (props.isHovered) rules += ' pt15';
299
+ else rules += ' pv15';
297
300
  }
298
- if (props.isDisabled) rules += ' plc131';
299
- else if (props.isSelected) rules += ' pld131';
300
- rules += ' oa131';
301
- rules += ' na131';
302
- rules += ' ka131';
303
- rules += ' ja131';
304
- rules += ' Uc131';
305
- rules += ' Usd131';
306
- rules += ' qc131';
307
- rules += ' qsd131';
301
+ if (props.isDisabled) rules += ' plc15';
302
+ else if (props.isSelected) rules += ' pld15';
303
+ rules += ' oa15';
304
+ rules += ' na15';
305
+ rules += ' ka15';
306
+ rules += ' ja15';
307
+ rules += ' Uc15';
308
+ rules += ' Usd15';
309
+ rules += ' qc15';
310
+ rules += ' qsd15';
308
311
  if (props.orientation === "horizontal") {
309
- if (props.density === "regular") rules += ' Fz131';
310
- else if (props.density === "compact") rules += ' Fx131';
312
+ if (props.density === "regular") rules += ' Fz15';
313
+ else if (props.density === "compact") rules += ' Fx15';
311
314
  }
312
315
  if (props.orientation === "vertical") {
313
- if (props.density === "regular") rules += ' Mk131';
314
- else if (props.density === "compact") rules += ' Mi131';
316
+ if (props.density === "regular") rules += ' Mk15';
317
+ else if (props.density === "compact") rules += ' Mi15';
315
318
  }
316
- rules += ' eb131';
317
- if (!position) rules += ' _Pc131';
318
- rules += ' ri131';
319
- rules += ' _Xa131';
320
- if (!flexShrink) rules += ' _va131';
321
- rules += ' Yd131';
322
- rules += ' Xb131';
323
- rules += ' _2b131';
324
- if (props.labelBehavior === "hide") rules += ' SssxDec131';
325
- if (props.labelBehavior === "hide") rules += ' RssxDec131';
326
- rules += ' __ca131';
319
+ rules += ' eb15';
320
+ if (!position) rules += ' _Pc15';
321
+ rules += ' ri15';
322
+ rules += ' _Xa15';
323
+ if (!flexShrink) rules += ' _va15';
324
+ rules += ' Yd15';
325
+ rules += ' Xb15';
326
+ rules += ' _2b15';
327
+ if (props.labelBehavior === "hide") rules += ' SssxDec15';
328
+ if (props.labelBehavior === "hide") rules += ' RssxDec15';
329
+ rules += ' __ca15';
327
330
  return rules;
328
331
  };
329
- const $79e2b4a1b34d1592$var$icon = " sb131 _va131 -_8sjo0b-t5ZbAob131";
332
+ const $79e2b4a1b34d1592$var$icon = " sb15 _va15 -_8sjo0b-t5ZbAob15";
330
333
  function $79e2b4a1b34d1592$export$3e41faf802a29e71(props1) {
331
- let { density: density, orientation: orientation, labelBehavior: labelBehavior } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$InternalTabsContext) ?? {};
332
- let contentId = (0, $8bRfI$useId)();
334
+ let { density: density, orientation: orientation, labelBehavior: labelBehavior, baseId: baseId } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$InternalTabsContext) ?? {};
335
+ // Derive a stable content id from the shared baseId on InternalTabsContext.
336
+ // Prevents infinite loop when rendering across multiple CollectionBuilder portals.
337
+ let fallbackId = (0, $8bRfI$useId)();
338
+ let contentId = `${baseId ?? fallbackId}-content-${props1.id ?? fallbackId}`;
333
339
  let ariaLabelledBy = props1['aria-labelledby'] || '';
334
340
  return /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$Tab), {
335
341
  ...props1,
@@ -354,8 +360,8 @@ function $79e2b4a1b34d1592$export$3e41faf802a29e71(props1) {
354
360
  id: contentId,
355
361
  styles: function anonymous(props) {
356
362
  let rules = " ";
357
- rules += ' _Jb131';
358
- if (props.labelBehavior === "hide") rules += ' sk131';
363
+ rules += ' _Jb15';
364
+ if (props.labelBehavior === "hide") rules += ' sk15';
359
365
  return rules;
360
366
  }({
361
367
  labelBehavior: labelBehavior
@@ -367,7 +373,7 @@ function $79e2b4a1b34d1592$export$3e41faf802a29e71(props1) {
367
373
  {
368
374
  render: (0, $1f4b04be3f24aae3$export$9d7e2342a7e53afa)({
369
375
  slot: 'icon',
370
- styles: " _Ja131"
376
+ styles: " _Ja15"
371
377
  }),
372
378
  styles: $79e2b4a1b34d1592$var$icon
373
379
  }
@@ -412,18 +418,18 @@ const $79e2b4a1b34d1592$var$tabPanel = function anonymous(props, overrides) {
412
418
  if (p[1] === "M") minHeight = true;
413
419
  rules += p[0];
414
420
  }
415
- if (props.isFocusVisible) rules += ' _Lf131';
416
- else rules += ' _Le131';
417
- rules += ' Oh131';
418
- rules += ' Olc131';
419
- rules += ' _Mc131';
420
- rules += ' _Kd131';
421
- if (!marginTop) rules += ' Js131';
422
- rules += ' pt131';
423
- if (!flexGrow) rules += ' _ub131';
424
- if (!minHeight) rules += ' Ma131';
425
- if (props.isInert) rules += ' sk131';
426
- else rules += ' sb131';
421
+ if (props.isFocusVisible) rules += ' _Lf15';
422
+ else rules += ' _Le15';
423
+ rules += ' Oh15';
424
+ rules += ' Olc15';
425
+ rules += ' _Mc15';
426
+ rules += ' _Kd15';
427
+ if (!marginTop) rules += ' Js15';
428
+ rules += ' pt15';
429
+ if (!flexGrow) rules += ' _ub15';
430
+ if (!minHeight) rules += ' Ma15';
431
+ if (props.isInert) rules += ' sk15';
432
+ else rules += ' sb15';
427
433
  return rules;
428
434
  };
429
435
  function $79e2b4a1b34d1592$export$3d96ec278d3efce4(props) {
@@ -476,7 +482,7 @@ let $79e2b4a1b34d1592$var$HiddenTabs = function(props) {
476
482
  // @ts-ignore
477
483
  inert: (0, $8bRfI$inertValue)(true),
478
484
  ref: listRef,
479
- className: " s40ub4c131 _t40ub4c131 U40ub4c131 q40ub4c131 _w40ub4c131 _Pa131 Wr131 _lr131 _Ar131 _zr131 _6b131 _Nc131 Pc131 _Ia131",
485
+ className: " s40ub4c15 _t40ub4c15 U40ub4c15 q40ub4c15 _w40ub4c15 _Pa15 Wr15 _lr15 _Ar15 _zr15 _6b15 _Nc15 Pc15 _Ia15",
480
486
  children: /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$HiddenTabsContext.Provider, {
481
487
  value: true,
482
488
  children: items.map((item)=>{
@@ -520,11 +526,11 @@ let $79e2b4a1b34d1592$var$TabsMenu = (props1)=>{
520
526
  return /*#__PURE__*/ (0, $8bRfI$jsx)("div", {
521
527
  className: function anonymous(props) {
522
528
  let rules = " ";
523
- rules += ' sd131';
524
- rules += ' _va131';
525
- rules += ' eb131';
526
- if (props.density === "regular") rules += ' Fz131';
527
- else if (props.density === "compact") rules += ' Fx131';
529
+ rules += ' sd15';
530
+ rules += ' _va15';
531
+ rules += ' eb15';
532
+ if (props.density === "regular") rules += ' Fz15';
533
+ else if (props.density === "compact") rules += ' Fx15';
528
534
  return rules;
529
535
  }({
530
536
  density: density
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/s2/src/Tabs.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n TabListProps as AriaTabListProps,\n TabPanel as AriaTabPanel,\n TabPanelProps as AriaTabPanelProps,\n TabProps as AriaTabProps,\n TabsProps as AriaTabsProps,\n Tab as RACTab,\n TabList as RACTabList,\n Tabs as RACTabs,\n TabListStateContext,\n TabRenderProps\n} from 'react-aria-components/Tabs';\nimport {baseColor, focusRing, size, style} from '../style' with {type: 'macro'};\nimport {centerBaseline} from './CenterBaseline';\nimport {\n Collection,\n DOMRef,\n DOMRefValue,\n GlobalDOMAttributes,\n Key,\n Node,\n Orientation,\n RefObject\n} from '@react-types/shared';\nimport {CollectionBuilder} from 'react-aria/CollectionBuilder';\nimport {ContextValue, Provider} from 'react-aria-components/slots';\nimport {\n createContext,\n forwardRef,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport {\n getAllowedOverrides,\n StyleProps,\n StylesPropWithHeight,\n UnsafeStyles\n} from './style-utils' with {type: 'macro'};\nimport {Group} from 'react-aria-components/Group';\nimport {IconContext} from './Icon';\nimport {inertValue} from 'react-aria/private/utils/inertValue';\nimport {Picker, PickerItem} from './TabsPicker';\nimport {SelectionIndicator} from 'react-aria-components/SelectionIndicator';\nimport {Text, TextContext} from './Content';\nimport {useControlledState} from 'react-stately/useControlledState';\nimport {useDOMRef} from './useDOMRef';\nimport {useEffectEvent} from 'react-aria/private/utils/useEffectEvent';\nimport {useHasTabbableChild} from 'react-aria/private/focus/useHasTabbableChild';\nimport {useId} from 'react-aria/useId';\nimport {useLabels} from 'react-aria/private/utils/useLabels';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\nimport {useSpectrumContextProps} from './useSpectrumContextProps';\n\nexport interface TabsProps\n extends\n Omit<AriaTabsProps, 'className' | 'style' | 'render' | 'children' | keyof GlobalDOMAttributes>,\n UnsafeStyles {\n /** Spectrum-defined styles, returned by the `style()` macro. */\n styles?: StylesPropWithHeight;\n /** The content to display in the tabs. */\n children: ReactNode;\n /**\n * The amount of space between the tabs.\n *\n * @default 'regular'\n */\n density?: 'compact' | 'regular';\n /**\n * Defines if the text within the tabs should be hidden and only the icon should be shown.\n * The text is always visible when the item is collapsed into a picker.\n *\n * @default 'show'\n */\n labelBehavior?: 'show' | 'hide';\n}\n\nexport interface TabProps\n extends\n Omit<\n AriaTabProps,\n 'children' | 'style' | 'className' | 'render' | 'onClick' | keyof GlobalDOMAttributes\n >,\n StyleProps {\n /** The content to display in the tab. */\n children: ReactNode;\n}\n\nexport interface TabListProps<T>\n extends\n Omit<\n AriaTabListProps<T>,\n | 'style'\n | 'className'\n | 'render'\n | 'aria-label'\n | 'aria-labelledby'\n | keyof GlobalDOMAttributes\n >,\n StyleProps {\n /** The content to display in the tablist. */\n children: ReactNode | ((item: T) => ReactNode);\n}\n\nexport interface TabPanelProps\n extends\n Omit<\n AriaTabPanelProps,\n 'children' | 'style' | 'className' | 'render' | keyof GlobalDOMAttributes\n >,\n UnsafeStyles {\n /** Spectrum-defined styles, returned by the `style()` macro. */\n styles?: StylesPropWithHeight;\n /** The content to display in the tab panels. */\n children: ReactNode;\n}\n\nexport const TabsContext =\n createContext<ContextValue<Partial<TabsProps>, DOMRefValue<HTMLDivElement>>>(null);\nconst InternalTabsContext = createContext<\n Partial<TabsProps> & {\n tablistRef?: RefObject<HTMLDivElement | null>;\n selectedKey?: Key | null;\n }\n>({});\n\ninterface CollapseContextType {\n showTabs: boolean;\n menuId: string;\n valueId: string;\n ariaLabel?: string | undefined;\n ariaDescribedBy?: string | undefined;\n tabs: Array<Node<any>>;\n listRef?: RefObject<HTMLDivElement | null>;\n onSelectionChange?: (key: Key) => void;\n}\n\nconst CollapseContext = createContext<CollapseContextType>({\n showTabs: true,\n menuId: '',\n valueId: '',\n tabs: []\n});\n\nconst tabs = style(\n {\n position: 'relative',\n display: 'flex',\n flexShrink: 0,\n font: 'ui',\n flexDirection: {\n orientation: {\n horizontal: 'column'\n }\n }\n },\n getAllowedOverrides({height: true})\n);\n\n/**\n * Tabs organize content into multiple sections and allow users to navigate between them. The\n * content under the set of tabs should be related and form a coherent unit.\n */\nexport const Tabs = forwardRef(function Tabs(props: TabsProps, ref: DOMRef<HTMLDivElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, TabsContext);\n let {\n density = 'regular',\n isDisabled,\n disabledKeys,\n orientation = 'horizontal',\n labelBehavior = 'show'\n } = props;\n let domRef = useDOMRef(ref);\n let [value, setValue] = useControlledState(\n props.selectedKey,\n props.defaultSelectedKey ?? null!,\n props.onSelectionChange\n );\n\n if (!props['aria-label'] && !props['aria-labelledby']) {\n throw new Error('An aria-label or aria-labelledby prop is required on Tabs for accessibility.');\n }\n\n let tablistRef = useRef<HTMLDivElement | null>(null);\n\n return (\n <Provider\n values={[\n [\n InternalTabsContext,\n {\n density,\n isDisabled,\n orientation,\n disabledKeys,\n selectedKey: value,\n tablistRef,\n onSelectionChange: setValue,\n labelBehavior,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby']\n }\n ]\n ]}>\n <CollectionBuilder content={props.children}>\n {collection => (\n <CollapsingTabs\n {...props}\n selectedKey={value}\n onSelectionChange={setValue}\n collection={collection}\n containerRef={domRef}\n />\n )}\n </CollectionBuilder>\n </Provider>\n );\n});\n\nconst tablist = style({\n display: 'flex',\n gap: {\n orientation: {\n horizontal: {\n density: {\n compact: 24,\n regular: 32\n },\n labelBehavior: {\n hide: {\n density: {\n compact: 16,\n regular: 24\n }\n }\n }\n }\n }\n },\n flexDirection: {\n orientation: {\n vertical: 'column'\n }\n },\n marginEnd: {\n orientation: {\n vertical: 20\n }\n },\n marginStart: {\n orientation: {\n vertical: 12\n }\n },\n minWidth: 'min'\n});\n\nconst tablistWrapper = style(\n {\n position: 'relative',\n minWidth: 0,\n flexShrink: 0,\n flexGrow: 0\n },\n getAllowedOverrides()\n);\n\nexport function TabList<T>(props: TabListProps<T>): ReactNode | null {\n let {showTabs, menuId, valueId, tabs, listRef, onSelectionChange, ariaLabel, ariaDescribedBy} =\n useContext(CollapseContext) ?? {};\n let {density, orientation, labelBehavior} = useContext(InternalTabsContext);\n\n if (showTabs) {\n return <TabListInner {...props} />;\n }\n\n return (\n <div className={tablistWrapper(null, props.styles)}>\n {listRef && (\n <div className={tablist({orientation, labelBehavior, density})}>\n <HiddenTabs items={tabs} density={density} listRef={listRef} />\n </div>\n )}\n <TabsMenu\n id={menuId}\n valueId={valueId}\n items={tabs}\n onSelectionChange={onSelectionChange}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n />\n </div>\n );\n}\n\nfunction TabListInner<T>(props: TabListProps<T>) {\n let {\n tablistRef,\n orientation,\n density,\n labelBehavior,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n } = useContext(InternalTabsContext) ?? {};\n let {tabs, listRef} = useContext(CollapseContext) ?? {};\n\n return (\n <div\n style={props.UNSAFE_style}\n className={(props.UNSAFE_className || '') + tablistWrapper(null, props.styles)}>\n {listRef && (\n <div className={tablist({orientation, labelBehavior, density})}>\n <HiddenTabs items={tabs} density={density} listRef={listRef} />\n </div>\n )}\n <RACTabList\n {...props}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n ref={tablistRef}\n className={renderProps => tablist({...renderProps, labelBehavior, density})}\n />\n </div>\n );\n}\n\nconst selectedIndicator = style<{isDisabled: boolean; orientation?: Orientation}>({\n position: 'absolute',\n backgroundColor: {\n default: 'neutral',\n isDisabled: 'disabled',\n forcedColors: {\n default: 'Highlight',\n isDisabled: 'GrayText'\n }\n },\n height: {\n default: 'full',\n orientation: {\n horizontal: '[2px]'\n }\n },\n width: {\n default: 'full',\n orientation: {\n vertical: '[2px]'\n }\n },\n contain: 'strict',\n transition: {\n default: '[translate,width,height]',\n '@media (prefers-reduced-motion: reduce)': 'none'\n },\n transitionDuration: 200,\n transitionTimingFunction: 'out',\n bottom: {\n default: 0\n },\n top: {\n orientation: {\n vertical: 0\n }\n },\n left: {\n orientation: {\n horizontal: 0\n }\n },\n insetStart: {\n orientation: {\n vertical: -12\n }\n },\n borderStyle: 'none',\n borderRadius: 'full'\n});\n\nconst tab = style<\n TabRenderProps & {\n density?: 'compact' | 'regular';\n labelBehavior?: 'show' | 'hide';\n orientation?: Orientation;\n }\n>(\n {\n ...focusRing(),\n display: 'flex',\n color: {\n default: baseColor('neutral-subdued'),\n isSelected: baseColor('neutral'),\n isDisabled: 'disabled',\n forcedColors: {\n isSelected: 'Highlight',\n isDisabled: 'GrayText'\n }\n },\n borderRadius: 'sm',\n gap: 'text-to-visual',\n height: {\n orientation: {\n horizontal: {\n density: {\n compact: 32,\n regular: 48\n }\n }\n }\n },\n minHeight: {\n orientation: {\n vertical: {\n density: {\n compact: 32,\n regular: 48\n }\n }\n }\n },\n alignItems: 'center',\n position: 'relative',\n cursor: 'default',\n textDecoration: 'none',\n flexShrink: 0,\n transition: 'default',\n paddingX: {\n labelBehavior: {\n hide: size(6)\n }\n },\n disableTapHighlight: true\n },\n getAllowedOverrides()\n);\n\nconst icon = style({\n display: 'block',\n flexShrink: 0,\n '--iconPrimary': {\n type: 'fill',\n value: 'currentColor'\n }\n});\n\nexport function Tab(props: TabProps): ReactNode {\n let {density, orientation, labelBehavior} = useContext(InternalTabsContext) ?? {};\n\n let contentId = useId();\n let ariaLabelledBy = props['aria-labelledby'] || '';\n\n return (\n <RACTab\n {...props}\n // @ts-ignore\n originalProps={props}\n aria-labelledby={`${labelBehavior === 'hide' ? contentId : ''} ${ariaLabelledBy}`}\n style={props.UNSAFE_style}\n className={renderProps =>\n (props.UNSAFE_className || '') +\n tab({...renderProps, density, labelBehavior, orientation}, props.styles)\n }>\n {({\n // @ts-ignore\n isMenu,\n isDisabled\n }) => {\n if (isMenu) {\n return props.children;\n } else {\n return (\n <Provider\n values={[\n [\n TextContext,\n {\n id: contentId,\n styles: style({\n order: 1,\n display: {\n labelBehavior: {\n hide: 'none'\n }\n }\n })({labelBehavior})\n }\n ],\n [\n IconContext,\n {\n render: centerBaseline({slot: 'icon', styles: style({order: 0})}),\n styles: icon\n }\n ]\n ]}>\n <TabInner orientation={orientation!} isDisabled={isDisabled}>\n {typeof props.children === 'string' ? (\n <Text>{props.children}</Text>\n ) : (\n props.children\n )}\n </TabInner>\n </Provider>\n );\n }\n }}\n </RACTab>\n );\n}\n\nfunction TabInner({\n isDisabled,\n orientation,\n children\n}: {\n isDisabled: boolean;\n orientation: Orientation;\n children: ReactNode;\n}) {\n let ref = useRef<HTMLDivElement | null>(null);\n let isHidden = useContext(HiddenTabsContext);\n\n return (\n <>\n {!isHidden && (\n <SelectionIndicator ref={ref} className={selectedIndicator({isDisabled, orientation})} />\n )}\n {children}\n </>\n );\n}\n\nconst tabPanel = style(\n {\n ...focusRing(),\n marginTop: 4,\n color: 'gray-800',\n flexGrow: 1,\n minHeight: 0,\n display: {\n default: 'block',\n isInert: 'none'\n }\n },\n getAllowedOverrides({height: true})\n);\n\nexport function TabPanel(props: TabPanelProps): ReactNode | null {\n let {showTabs} = useContext(CollapseContext);\n let {selectedKey} = useContext(InternalTabsContext);\n if (showTabs) {\n return (\n <AriaTabPanel\n {...props}\n style={props.UNSAFE_style}\n className={renderProps =>\n (props.UNSAFE_className ?? '') + tabPanel(renderProps, props.styles)\n }\n />\n );\n }\n\n if (props.id !== selectedKey) {\n return null;\n }\n\n return <CollapsedTabPanel {...props} />;\n}\n\nfunction CollapsedTabPanel(props: TabPanelProps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let {UNSAFE_style, UNSAFE_className = '', id, shouldForceMount, ...otherProps} = props;\n let {menuId, valueId} = useContext(CollapseContext);\n let ref = useRef(null);\n let tabIndex = useHasTabbableChild(ref) ? undefined : 0;\n\n return (\n <Group\n {...otherProps}\n ref={ref}\n aria-labelledby={menuId + ' ' + valueId}\n tabIndex={tabIndex}\n style={UNSAFE_style}\n className={renderProps => UNSAFE_className + tabPanel(renderProps, props.styles)}\n />\n );\n}\n\nfunction isEveryTabDisabled<T>(\n collection: Collection<Node<T>> | undefined,\n disabledKeys: Set<Key>\n) {\n let testKey: Key | null = null;\n if (collection && collection.size > 0) {\n testKey = collection.getFirstKey();\n\n let index = 0;\n while (testKey && index < collection.size) {\n // We have to check if the item in the collection has a key in disabledKeys or has the isDisabled prop set directly on it\n if (!disabledKeys.has(testKey) && !collection.getItem(testKey)?.props?.isDisabled) {\n return false;\n }\n\n testKey = collection.getKeyAfter(testKey);\n index++;\n }\n return true;\n }\n return false;\n}\n\nconst HiddenTabsContext = createContext(false);\n\nlet HiddenTabs = function (props: {\n listRef: RefObject<HTMLDivElement | null>;\n items: Array<Node<any>>;\n size?: string;\n density?: 'compact' | 'regular';\n}) {\n let {listRef, items = [], size, density} = props;\n\n return (\n <div\n // @ts-ignore\n inert={inertValue(true)}\n ref={listRef}\n className={style({\n display: 'inherit',\n flexDirection: 'inherit',\n gap: 'inherit',\n flexWrap: 'inherit',\n position: 'absolute',\n inset: 0,\n visibility: 'hidden',\n overflow: 'hidden',\n opacity: 0\n })}>\n <HiddenTabsContext.Provider value>\n {items.map(item => {\n // pull off individual props as an allow list, don't want refs or other props getting through\n return (\n <div\n data-hidden-tab\n style={item.props.UNSAFE_style}\n key={item.key}\n className={item.props.className({size, density})}>\n {item.props.children({size, density})}\n </div>\n );\n })}\n </HiddenTabsContext.Provider>\n </div>\n );\n};\n\nlet TabsMenu = (\n props: {\n valueId: string;\n items: Array<Node<any>>;\n onSelectionChange: TabsProps['onSelectionChange'];\n } & Omit<TabsProps, 'children'>\n) => {\n let {id, items, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, valueId} = props;\n let {\n density,\n onSelectionChange: _onSelectionChange,\n selectedKey,\n isDisabled,\n disabledKeys,\n labelBehavior\n } = useContext(InternalTabsContext);\n let onSelectionChange = useCallback(\n (key: Key | null) => {\n if (key != null) {\n _onSelectionChange?.(key);\n }\n },\n [_onSelectionChange]\n );\n let state = useContext(TabListStateContext);\n let allKeysDisabled = useMemo(() => {\n return isEveryTabDisabled(state?.collection, disabledKeys ? new Set(disabledKeys) : new Set());\n }, [state?.collection, disabledKeys]);\n let labelProps = useLabels({\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n });\n\n return (\n <div\n className={style({\n display: 'flex',\n flexShrink: 0,\n alignItems: 'center',\n height: {\n density: {\n compact: 32,\n regular: 48\n }\n }\n })({density})}>\n <Picker\n id={id}\n valueId={valueId}\n {...labelProps}\n aria-describedby={props['aria-describedby']}\n aria-details={props['aria-details']}\n isDisabled={isDisabled || allKeysDisabled}\n density={density!}\n labelBehavior={labelBehavior}\n items={items}\n disabledKeys={disabledKeys}\n selectedKey={selectedKey}\n onSelectionChange={onSelectionChange}>\n {(item: Node<any>) => {\n return (\n <PickerItem\n {...item.props.originalProps}\n isDisabled={isDisabled || allKeysDisabled}\n key={item.key}>\n {item.props.children({density, isMenu: true})}\n </PickerItem>\n );\n }}\n </Picker>\n </div>\n );\n};\n\nlet CollapsingTabs = ({\n collection,\n containerRef,\n ...props\n}: {collection: Collection<Node<unknown>>; containerRef: any} & TabsProps) => {\n let {orientation = 'horizontal', onSelectionChange} = props;\n let [showItems, _setShowItems] = useState(true);\n showItems = orientation === 'vertical' ? true : showItems;\n let setShowItems = useCallback(\n (value: boolean) => {\n if (orientation === 'vertical') {\n // if orientation is vertical, we always show the items\n _setShowItems(true);\n } else {\n _setShowItems(value);\n }\n },\n [orientation]\n );\n\n let {direction} = useLocale();\n\n let children = useMemo(() => [...collection], [collection]);\n\n let listRef = useRef<HTMLDivElement | null>(null);\n\n let updateOverflow = () => {\n if (orientation === 'vertical' || !listRef.current || !containerRef?.current) {\n return;\n }\n let container = listRef.current;\n let containerRect = container.getBoundingClientRect();\n let tabs = container.querySelectorAll('[data-hidden-tab]');\n let lastTab = tabs[tabs.length - 1];\n let lastTabRect = lastTab.getBoundingClientRect();\n if (direction === 'ltr') {\n setShowItems?.(lastTabRect.right <= containerRect.right);\n } else {\n setShowItems?.(lastTabRect.left >= containerRect.left);\n }\n };\n\n let updateOverflowEffect = useEffectEvent(updateOverflow);\n\n useResizeObserver({ref: containerRef, onResize: updateOverflow});\n\n useLayoutEffect(() => {\n if (collection.size > 0) {\n queueMicrotask(updateOverflowEffect);\n }\n }, [collection.size]);\n\n // start with null so that the first render won't have a flicker\n let prevOrientation = useRef<Orientation | null>(null);\n useLayoutEffect(() => {\n if (collection.size > 0 && prevOrientation.current !== orientation) {\n updateOverflowEffect();\n }\n prevOrientation.current = orientation;\n }, [collection.size, orientation]);\n\n useEffect(() => {\n // Recalculate visible tags when fonts are loaded.\n document.fonts?.ready.then(() => updateOverflowEffect());\n }, []);\n\n let menuId = useId();\n let valueId = useId();\n\n let contents: ReactNode;\n if (showItems) {\n contents = (\n <RACTabs {...props} className=\"\" style={{display: 'contents'}}>\n {props.children}\n </RACTabs>\n );\n } else {\n contents = (\n <>\n <CollapseContext.Provider\n value={{\n showTabs: false,\n tabs: children,\n menuId,\n valueId,\n listRef: listRef,\n onSelectionChange,\n ariaLabel: props['aria-label'],\n ariaDescribedBy: props['aria-labelledby']\n }}>\n {props.children}\n </CollapseContext.Provider>\n </>\n );\n }\n\n return (\n <div\n style={props.UNSAFE_style}\n className={(props.UNSAFE_className || '') + tabs({orientation}, props.styles)}\n ref={containerRef}>\n <CollapseContext.Provider\n value={{showTabs: true, menuId, valueId, tabs: children, listRef: listRef}}>\n {contents}\n </CollapseContext.Provider>\n </div>\n );\n};\n"],"names":[],"version":3,"file":"Tabs.mjs.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;;;;;;;;;;;;;;;AA6HM,MAAM,0DACX,CAAA,GAAA,oBAAY,EAAiE;AAC/E,MAAM,0DAAsB,CAAA,GAAA,oBAAY,EAMtC,CAAC;AAaH,MAAM,sDAAkB,CAAA,GAAA,oBAAY,EAAuB;IACzD,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM,EAAE;AACV;AAEA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBC,MAAM,0DAAO,CAAA,GAAA,iBAAS,EAAE,SAAS,KAAK,KAAgB,EAAE,GAA2B;IACxF,CAAC,OAAO,IAAI,GAAG,CAAA,GAAA,yCAAsB,EAAE,OAAO,KAAK;IACnD,IAAI,WACF,UAAU,uBACV,UAAU,gBACV,YAAY,eACZ,cAAc,6BACd,gBAAgB,QACjB,GAAG;IACJ,IAAI,SAAS,CAAA,GAAA,yCAAQ,EAAE;IACvB,IAAI,CAAC,OAAO,SAAS,GAAG,CAAA,GAAA,yBAAiB,EACvC,MAAM,WAAW,EACjB,MAAM,kBAAkB,IAAI,MAC5B,MAAM,iBAAiB;IAGzB,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACnD,MAAM,IAAI,MAAM;IAGlB,IAAI,aAAa,CAAA,GAAA,aAAK,EAAyB;IAC/C,yEAAyE;IACzE,IAAI,SAAS,CAAA,GAAA,YAAI;IAEjB,qBACE,gBAAC,CAAA,GAAA,eAAO;QACN,QAAQ;YACN;gBACE;gBACA;6BACE;gCACA;iCACA;kCACA;oBACA,aAAa;gCACb;oBACA,mBAAmB;mCACnB;4BACA;oBACA,cAAc,KAAK,CAAC,aAAa;oBACjC,mBAAmB,KAAK,CAAC,kBAAkB;gBAC7C;aACD;SACF;kBACD,cAAA,gBAAC,CAAA,GAAA,wBAAgB;YAAE,SAAS,MAAM,QAAQ;sBACvC,CAAA,2BACC,gBAAC;oBACE,GAAG,KAAK;oBACT,aAAa;oBACb,mBAAmB;oBACnB,YAAY;oBACZ,cAAc;;;;AAM1B;AAEA,MAAM;;;;;;;;;;;;;;;;;;;;;;;AAsCN,MAAM;;;;;;;;;;;;;;;;;;;;AAUC,SAAS,0CAAW,KAAsB;IAC/C,IAAI,YAAC,QAAQ,UAAE,MAAM,WAAE,OAAO,QAAE,IAAI,WAAE,OAAO,qBAAE,iBAAiB,aAAE,SAAS,mBAAE,eAAe,EAAC,GAC3F,CAAA,GAAA,iBAAS,EAAE,0CAAoB,CAAC;IAClC,IAAI,WAAC,OAAO,eAAE,WAAW,iBAAE,aAAa,EAAC,GAAG,CAAA,GAAA,iBAAS,EAAE;IAEvD,IAAI,UACF,qBAAO,gBAAC;QAAc,GAAG,KAAK;;IAGhC,qBACE,iBAAC;QAAI,WAAW,qCAAe,MAAM,MAAM,MAAM;;YAC9C,yBACC,gBAAC;gBAAI,WAAW,8BAAQ;iCAAC;mCAAa;6BAAe;gBAAO;0BAC1D,cAAA,gBAAC;oBAAW,OAAO;oBAAM,SAAS;oBAAS,SAAS;;;0BAGxD,gBAAC;gBACC,IAAI;gBACJ,SAAS;gBACT,OAAO;gBACP,mBAAmB;gBACnB,cAAY;gBACZ,oBAAkB;;;;AAI1B;AAEA,SAAS,mCAAgB,KAAsB;IAC7C,IAAI,cACF,UAAU,eACV,WAAW,WACX,OAAO,iBACP,aAAa,EACb,cAAc,SAAS,EACvB,mBAAmB,cAAc,EAClC,GAAG,CAAA,GAAA,iBAAS,EAAE,8CAAwB,CAAC;IACxC,IAAI,QAAC,IAAI,WAAE,OAAO,EAAC,GAAG,CAAA,GAAA,iBAAS,EAAE,0CAAoB,CAAC;IAEtD,qBACE,iBAAC;QACC,OAAO,MAAM,YAAY;QACzB,WAAW,AAAC,CAAA,MAAM,gBAAgB,IAAI,EAAC,IAAK,qCAAe,MAAM,MAAM,MAAM;;YAC5E,yBACC,gBAAC;gBAAI,WAAW,8BAAQ;iCAAC;mCAAa;6BAAe;gBAAO;0BAC1D,cAAA,gBAAC;oBAAW,OAAO;oBAAM,SAAS;oBAAS,SAAS;;;0BAGxD,gBAAC,CAAA,GAAA,cAAS;gBACP,GAAG,KAAK;gBACT,cAAY;gBACZ,mBAAiB;gBACjB,KAAK;gBACL,WAAW,CAAA,cAAe,8BAAQ;wBAAC,GAAG,WAAW;uCAAE;iCAAe;oBAAO;;;;AAIjF;AAEA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDN,MAAM;AASC,SAAS,0CAAI,MAAe;IACjC,IAAI,WAAC,OAAO,eAAE,WAAW,iBAAE,aAAa,UAAE,MAAM,EAAC,GAAG,CAAA,GAAA,iBAAS,EAAE,8CAAwB,CAAC;IAExF,4EAA4E;IAC5E,mFAAmF;IACnF,IAAI,aAAa,CAAA,GAAA,YAAI;IACrB,IAAI,YAAY,GAAG,UAAU,WAAW,SAAS,EAAE,OAAM,EAAE,IAAI,YAAY;IAC3E,IAAI,iBAAiB,MAAK,CAAC,kBAAkB,IAAI;IAEjD,qBACE,gBAAC,CAAA,GAAA,UAAK;QACH,GAAG,MAAK;QACT,aAAa;QACb,eAAe;QACf,mBAAiB,GAAG,kBAAkB,SAAS,YAAY,GAAG,CAAC,EAAE,gBAAgB;QACjF,OAAO,OAAM,YAAY;QACzB,WAAW,CAAA,cACT,AAAC,CAAA,OAAM,gBAAgB,IAAI,EAAC,IAC5B,0BAAI;gBAAC,GAAG,WAAW;yBAAE;+BAAS;6BAAe;YAAW,GAAG,OAAM,MAAM;kBAExE,CAAC,UACA,aAAa;QACb,MAAM,cACN,UAAU,EACX;YACC,IAAI,QACF,OAAO,OAAM,QAAQ;iBAErB,qBACE,gBAAC,CAAA,GAAA,eAAO;gBACN,QAAQ;oBACN;wBACE,CAAA,GAAA,yCAAU;wBACV;4BACE,IAAI;4BACJ,QAAQ;;;;;8BAOL;+CAAC;4BAAa;wBACnB;qBACD;oBACD;wBACE,CAAA,GAAA,yCAAU;wBACV;4BACE,QAAQ,CAAA,GAAA,yCAAa,EAAE;gCAAC,MAAM;gCAAQ,MAAM;4BAAmB;4BAC/D,QAAQ;wBACV;qBACD;iBACF;0BACD,cAAA,gBAAC;oBAAS,aAAa;oBAAc,YAAY;8BAC9C,OAAO,OAAM,QAAQ,KAAK,yBACzB,gBAAC,CAAA,GAAA,yCAAG;kCAAG,OAAM,QAAQ;yBAErB,OAAM,QAAQ;;;QAM1B;;AAGN;AAEA,SAAS,+BAAS,cAChB,UAAU,eACV,WAAW,YACX,QAAQ,EAKT;IACC,IAAI,MAAM,CAAA,GAAA,aAAK,EAAyB;IACxC,IAAI,WAAW,CAAA,GAAA,iBAAS,EAAE;IAE1B,qBACE;;YACG,CAAC,0BACA,gBAAC,CAAA,GAAA,yBAAiB;gBAAE,KAAK;gBAAK,WAAW,wCAAkB;gCAAC;iCAAY;gBAAW;;YAEpF;;;AAGP;AAEA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;AAeC,SAAS,0CAAS,KAAoB;IAC3C,IAAI,YAAC,QAAQ,EAAC,GAAG,CAAA,GAAA,iBAAS,EAAE;IAC5B,IAAI,eAAC,WAAW,EAAC,GAAG,CAAA,GAAA,iBAAS,EAAE;IAC/B,IAAI,UACF,qBACE,gBAAC,CAAA,GAAA,eAAW;QACT,GAAG,KAAK;QACT,OAAO,MAAM,YAAY;QACzB,WAAW,CAAA,cACT,AAAC,CAAA,MAAM,gBAAgB,IAAI,EAAC,IAAK,+BAAS,aAAa,MAAM,MAAM;;IAM3E,IAAI,MAAM,EAAE,KAAK,aACf,OAAO;IAGT,qBAAO,gBAAC;QAAmB,GAAG,KAAK;;AACrC;AAEA,SAAS,wCAAkB,KAAoB;IAC7C,6DAA6D;IAC7D,IAAI,gBAAC,YAAY,oBAAE,mBAAmB,QAAI,EAAE,oBAAE,gBAAgB,EAAE,GAAG,YAAW,GAAG;IACjF,IAAI,UAAC,MAAM,WAAE,OAAO,EAAC,GAAG,CAAA,GAAA,iBAAS,EAAE;IACnC,IAAI,MAAM,CAAA,GAAA,aAAK,EAAE;IACjB,IAAI,WAAW,CAAA,GAAA,0BAAkB,EAAE,OAAO,YAAY;IAEtD,qBACE,gBAAC,CAAA,GAAA,YAAI;QACF,GAAG,UAAU;QACd,KAAK;QACL,mBAAiB,SAAS,MAAM;QAChC,UAAU;QACV,OAAO;QACP,WAAW,CAAA,cAAe,mBAAmB,+BAAS,aAAa,MAAM,MAAM;;AAGrF;AAEA,SAAS,yCACP,UAA2C,EAC3C,YAAsB;IAEtB,IAAI,UAAsB;IAC1B,IAAI,cAAc,WAAW,IAAI,GAAG,GAAG;QACrC,UAAU,WAAW,WAAW;QAEhC,IAAI,QAAQ;QACZ,MAAO,WAAW,QAAQ,WAAW,IAAI,CAAE;YACzC,yHAAyH;YACzH,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,CAAC,WAAW,OAAO,CAAC,UAAU,OAAO,YACrE,OAAO;YAGT,UAAU,WAAW,WAAW,CAAC;YACjC;QACF;QACA,OAAO;IACT;IACA,OAAO;AACT;AAEA,MAAM,wDAAoB,CAAA,GAAA,oBAAY,EAAE;AAExC,IAAI,mCAAa,SAAU,KAK1B;IACC,IAAI,WAAC,OAAO,SAAE,QAAQ,EAAE,QAAE,IAAI,WAAE,OAAO,EAAC,GAAG;IAE3C,qBACE,gBAAC;QACC,aAAa;QACb,OAAO,CAAA,GAAA,iBAAS,EAAE;QAClB,KAAK;QACL,SAAS;kBAWT,cAAA,gBAAC,wCAAkB,QAAQ;YAAC,KAAK;sBAC9B,MAAM,GAAG,CAAC,CAAA;gBACT,6FAA6F;gBAC7F,qBACE,gBAAC;oBACC,iBAAe;oBACf,OAAO,KAAK,KAAK,CAAC,YAAY;oBAE9B,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;8BAAC;iCAAM;oBAAO;8BAC7C,KAAK,KAAK,CAAC,QAAQ,CAAC;8BAAC;iCAAM;oBAAO;mBAF9B,KAAK,GAAG;YAKnB;;;AAIR;AAEA,IAAI,iCAAW,CACb;IAMA,IAAI,MAAC,EAAE,SAAE,KAAK,EAAE,cAAc,SAAS,EAAE,mBAAmB,cAAc,WAAE,OAAO,EAAC,GAAG;IACvF,IAAI,WACF,OAAO,EACP,mBAAmB,kBAAkB,eACrC,WAAW,cACX,UAAU,gBACV,YAAY,iBACZ,aAAa,EACd,GAAG,CAAA,GAAA,iBAAS,EAAE;IACf,IAAI,oBAAoB,CAAA,GAAA,kBAAU,EAChC,CAAC;QACC,IAAI,OAAO,MACT,qBAAqB;IAEzB,GACA;QAAC;KAAmB;IAEtB,IAAI,QAAQ,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,0BAAkB;IACzC,IAAI,kBAAkB,CAAA,GAAA,cAAM,EAAE;QAC5B,OAAO,yCAAmB,OAAO,YAAY,eAAe,IAAI,IAAI,gBAAgB,IAAI;IAC1F,GAAG;QAAC,OAAO;QAAY;KAAa;IACpC,IAAI,aAAa,CAAA,GAAA,gBAAQ,EAAE;YACzB;QACA,cAAc;QACd,mBAAmB;IACrB;IAEA,qBACE,gBAAC;QACC,WAAW;;;;;;;;UAUR;qBAAC;QAAO;kBACX,cAAA,gBAAC,CAAA,GAAA,yCAAK;YACJ,IAAI;YACJ,SAAS;YACR,GAAG,UAAU;YACd,oBAAkB,MAAK,CAAC,mBAAmB;YAC3C,gBAAc,MAAK,CAAC,eAAe;YACnC,YAAY,cAAc;YAC1B,SAAS;YACT,eAAe;YACf,OAAO;YACP,cAAc;YACd,aAAa;YACb,mBAAmB;sBAClB,CAAC;gBACA,qBACE,0BAAC,CAAA,GAAA,yCAAS;oBACP,GAAG,KAAK,KAAK,CAAC,aAAa;oBAC5B,YAAY,cAAc;oBAC1B,KAAK,KAAK,GAAG;mBACZ,KAAK,KAAK,CAAC,QAAQ,CAAC;6BAAC;oBAAS,QAAQ;gBAAI;YAGjD;;;AAIR;AAEA,IAAI,uCAAiB,CAAC,cACpB,UAAU,gBACV,YAAY,EACZ,GAAG,OACoE;IACvE,IAAI,eAAC,cAAc,iCAAc,iBAAiB,EAAC,GAAG;IACtD,IAAI,CAAC,WAAW,cAAc,GAAG,CAAA,GAAA,eAAO,EAAE;IAC1C,YAAY,gBAAgB,aAAa,OAAO;IAChD,IAAI,eAAe,CAAA,GAAA,kBAAU,EAC3B,CAAC;QACC,IAAI,gBAAgB,YAClB,uDAAuD;QACvD,cAAc;aAEd,cAAc;IAElB,GACA;QAAC;KAAY;IAGf,IAAI,aAAC,SAAS,EAAC,GAAG,CAAA,GAAA,gBAAQ;IAE1B,IAAI,WAAW,CAAA,GAAA,cAAM,EAAE,IAAM;eAAI;SAAW,EAAE;QAAC;KAAW;IAE1D,IAAI,UAAU,CAAA,GAAA,aAAK,EAAyB;IAE5C,IAAI,iBAAiB;QACnB,IAAI,gBAAgB,cAAc,CAAC,QAAQ,OAAO,IAAI,CAAC,cAAc,SACnE;QAEF,IAAI,YAAY,QAAQ,OAAO;QAC/B,IAAI,gBAAgB,UAAU,qBAAqB;QACnD,IAAI,OAAO,UAAU,gBAAgB,CAAC;QACtC,IAAI,UAAU,IAAI,CAAC,KAAK,MAAM,GAAG,EAAE;QACnC,IAAI,cAAc,QAAQ,qBAAqB;QAC/C,IAAI,cAAc,OAChB,eAAe,YAAY,KAAK,IAAI,cAAc,KAAK;aAEvD,eAAe,YAAY,IAAI,IAAI,cAAc,IAAI;IAEzD;IAEA,IAAI,uBAAuB,CAAA,GAAA,qBAAa,EAAE;IAE1C,CAAA,GAAA,wBAAgB,EAAE;QAAC,KAAK;QAAc,UAAU;IAAc;IAE9D,CAAA,GAAA,sBAAc,EAAE;QACd,IAAI,WAAW,IAAI,GAAG,GACpB,eAAe;IAEnB,GAAG;QAAC,WAAW,IAAI;KAAC;IAEpB,gEAAgE;IAChE,IAAI,kBAAkB,CAAA,GAAA,aAAK,EAAsB;IACjD,CAAA,GAAA,sBAAc,EAAE;QACd,IAAI,WAAW,IAAI,GAAG,KAAK,gBAAgB,OAAO,KAAK,aACrD;QAEF,gBAAgB,OAAO,GAAG;IAC5B,GAAG;QAAC,WAAW,IAAI;QAAE;KAAY;IAEjC,CAAA,GAAA,gBAAQ,EAAE;QACR,kDAAkD;QAClD,SAAS,KAAK,EAAE,MAAM,KAAK,IAAM;IACnC,GAAG,EAAE;IAEL,IAAI,SAAS,CAAA,GAAA,YAAI;IACjB,IAAI,UAAU,CAAA,GAAA,YAAI;IAElB,IAAI;IACJ,IAAI,WACF,yBACE,gBAAC,CAAA,GAAA,WAAM;QAAG,GAAG,KAAK;QAAE,WAAU;QAAG,OAAO;YAAC,SAAS;QAAU;kBACzD,MAAM,QAAQ;;SAInB,yBACE;kBACE,cAAA,gBAAC,sCAAgB,QAAQ;YACvB,OAAO;gBACL,UAAU;gBACV,MAAM;wBACN;yBACA;gBACA,SAAS;mCACT;gBACA,WAAW,KAAK,CAAC,aAAa;gBAC9B,iBAAiB,KAAK,CAAC,kBAAkB;YAC3C;sBACC,MAAM,QAAQ;;;IAMvB,qBACE,gBAAC;QACC,OAAO,MAAM,YAAY;QACzB,WAAW,AAAC,CAAA,MAAM,gBAAgB,IAAI,EAAC,IAAK,2BAAK;yBAAC;QAAW,GAAG,MAAM,MAAM;QAC5E,KAAK;kBACL,cAAA,gBAAC,sCAAgB,QAAQ;YACvB,OAAO;gBAAC,UAAU;wBAAM;yBAAQ;gBAAS,MAAM;gBAAU,SAAS;YAAO;sBACxE;;;AAIT","sources":["packages/@react-spectrum/s2/src/Tabs.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n TabListProps as AriaTabListProps,\n TabPanel as AriaTabPanel,\n TabPanelProps as AriaTabPanelProps,\n TabProps as AriaTabProps,\n TabsProps as AriaTabsProps,\n Tab as RACTab,\n TabList as RACTabList,\n Tabs as RACTabs,\n TabListStateContext,\n TabRenderProps\n} from 'react-aria-components/Tabs';\nimport {baseColor, focusRing, size, style} from '../style' with {type: 'macro'};\nimport {centerBaseline} from './CenterBaseline';\nimport {\n Collection,\n DOMRef,\n DOMRefValue,\n GlobalDOMAttributes,\n Key,\n Node,\n Orientation,\n RefObject\n} from '@react-types/shared';\nimport {CollectionBuilder} from 'react-aria/CollectionBuilder';\nimport {ContextValue, Provider} from 'react-aria-components/slots';\nimport {\n createContext,\n forwardRef,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport {\n getAllowedOverrides,\n StyleProps,\n StylesPropWithHeight,\n UnsafeStyles\n} from './style-utils' with {type: 'macro'};\nimport {Group} from 'react-aria-components/Group';\nimport {IconContext} from './Icon';\nimport {inertValue} from 'react-aria/private/utils/inertValue';\nimport {Picker, PickerItem} from './TabsPicker';\nimport {SelectionIndicator} from 'react-aria-components/SelectionIndicator';\nimport {Text, TextContext} from './Content';\nimport {useControlledState} from 'react-stately/useControlledState';\nimport {useDOMRef} from './useDOMRef';\nimport {useEffectEvent} from 'react-aria/private/utils/useEffectEvent';\nimport {useHasTabbableChild} from 'react-aria/private/focus/useHasTabbableChild';\nimport {useId} from 'react-aria/useId';\nimport {useLabels} from 'react-aria/private/utils/useLabels';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\nimport {useSpectrumContextProps} from './useSpectrumContextProps';\n\nexport interface TabsProps\n extends\n Omit<AriaTabsProps, 'className' | 'style' | 'render' | 'children' | keyof GlobalDOMAttributes>,\n UnsafeStyles {\n /** Spectrum-defined styles, returned by the `style()` macro. */\n styles?: StylesPropWithHeight;\n /** The content to display in the tabs. */\n children: ReactNode;\n /**\n * The amount of space between the tabs.\n *\n * @default 'regular'\n */\n density?: 'compact' | 'regular';\n /**\n * Defines if the text within the tabs should be hidden and only the icon should be shown.\n * The text is always visible when the item is collapsed into a picker.\n *\n * @default 'show'\n */\n labelBehavior?: 'show' | 'hide';\n}\n\nexport interface TabProps\n extends\n Omit<\n AriaTabProps,\n 'children' | 'style' | 'className' | 'render' | 'onClick' | keyof GlobalDOMAttributes\n >,\n StyleProps {\n /** The content to display in the tab. */\n children: ReactNode;\n}\n\nexport interface TabListProps<T>\n extends\n Omit<\n AriaTabListProps<T>,\n | 'style'\n | 'className'\n | 'render'\n | 'aria-label'\n | 'aria-labelledby'\n | keyof GlobalDOMAttributes\n >,\n StyleProps {\n /** The content to display in the tablist. */\n children: ReactNode | ((item: T) => ReactNode);\n}\n\nexport interface TabPanelProps\n extends\n Omit<\n AriaTabPanelProps,\n 'children' | 'style' | 'className' | 'render' | keyof GlobalDOMAttributes\n >,\n UnsafeStyles {\n /** Spectrum-defined styles, returned by the `style()` macro. */\n styles?: StylesPropWithHeight;\n /** The content to display in the tab panels. */\n children: ReactNode;\n}\n\nexport const TabsContext =\n createContext<ContextValue<Partial<TabsProps>, DOMRefValue<HTMLDivElement>>>(null);\nconst InternalTabsContext = createContext<\n Partial<TabsProps> & {\n tablistRef?: RefObject<HTMLDivElement | null>;\n selectedKey?: Key | null;\n baseId?: string;\n }\n>({});\n\ninterface CollapseContextType {\n showTabs: boolean;\n menuId: string;\n valueId: string;\n ariaLabel?: string | undefined;\n ariaDescribedBy?: string | undefined;\n tabs: Array<Node<any>>;\n listRef?: RefObject<HTMLDivElement | null>;\n onSelectionChange?: (key: Key) => void;\n}\n\nconst CollapseContext = createContext<CollapseContextType>({\n showTabs: true,\n menuId: '',\n valueId: '',\n tabs: []\n});\n\nconst tabs = style(\n {\n position: 'relative',\n display: 'flex',\n flexShrink: 0,\n font: 'ui',\n flexDirection: {\n orientation: {\n horizontal: 'column'\n }\n }\n },\n getAllowedOverrides({height: true})\n);\n\n/**\n * Tabs organize content into multiple sections and allow users to navigate between them. The\n * content under the set of tabs should be related and form a coherent unit.\n */\nexport const Tabs = forwardRef(function Tabs(props: TabsProps, ref: DOMRef<HTMLDivElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, TabsContext);\n let {\n density = 'regular',\n isDisabled,\n disabledKeys,\n orientation = 'horizontal',\n labelBehavior = 'show'\n } = props;\n let domRef = useDOMRef(ref);\n let [value, setValue] = useControlledState(\n props.selectedKey,\n props.defaultSelectedKey ?? null!,\n props.onSelectionChange\n );\n\n if (!props['aria-label'] && !props['aria-labelledby']) {\n throw new Error('An aria-label or aria-labelledby prop is required on Tabs for accessibility.');\n }\n\n let tablistRef = useRef<HTMLDivElement | null>(null);\n // Shared base id so child Tab/TabPanel components can derive stable ids.\n let baseId = useId();\n\n return (\n <Provider\n values={[\n [\n InternalTabsContext,\n {\n density,\n isDisabled,\n orientation,\n disabledKeys,\n selectedKey: value,\n tablistRef,\n onSelectionChange: setValue,\n labelBehavior,\n baseId,\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby']\n }\n ]\n ]}>\n <CollectionBuilder content={props.children}>\n {collection => (\n <CollapsingTabs\n {...props}\n selectedKey={value}\n onSelectionChange={setValue}\n collection={collection}\n containerRef={domRef}\n />\n )}\n </CollectionBuilder>\n </Provider>\n );\n});\n\nconst tablist = style({\n display: 'flex',\n gap: {\n orientation: {\n horizontal: {\n density: {\n compact: 24,\n regular: 32\n },\n labelBehavior: {\n hide: {\n density: {\n compact: 16,\n regular: 24\n }\n }\n }\n }\n }\n },\n flexDirection: {\n orientation: {\n vertical: 'column'\n }\n },\n marginEnd: {\n orientation: {\n vertical: 20\n }\n },\n marginStart: {\n orientation: {\n vertical: 12\n }\n },\n minWidth: 'min'\n});\n\nconst tablistWrapper = style(\n {\n position: 'relative',\n minWidth: 0,\n flexShrink: 0,\n flexGrow: 0\n },\n getAllowedOverrides()\n);\n\nexport function TabList<T>(props: TabListProps<T>): ReactNode | null {\n let {showTabs, menuId, valueId, tabs, listRef, onSelectionChange, ariaLabel, ariaDescribedBy} =\n useContext(CollapseContext) ?? {};\n let {density, orientation, labelBehavior} = useContext(InternalTabsContext);\n\n if (showTabs) {\n return <TabListInner {...props} />;\n }\n\n return (\n <div className={tablistWrapper(null, props.styles)}>\n {listRef && (\n <div className={tablist({orientation, labelBehavior, density})}>\n <HiddenTabs items={tabs} density={density} listRef={listRef} />\n </div>\n )}\n <TabsMenu\n id={menuId}\n valueId={valueId}\n items={tabs}\n onSelectionChange={onSelectionChange}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n />\n </div>\n );\n}\n\nfunction TabListInner<T>(props: TabListProps<T>) {\n let {\n tablistRef,\n orientation,\n density,\n labelBehavior,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n } = useContext(InternalTabsContext) ?? {};\n let {tabs, listRef} = useContext(CollapseContext) ?? {};\n\n return (\n <div\n style={props.UNSAFE_style}\n className={(props.UNSAFE_className || '') + tablistWrapper(null, props.styles)}>\n {listRef && (\n <div className={tablist({orientation, labelBehavior, density})}>\n <HiddenTabs items={tabs} density={density} listRef={listRef} />\n </div>\n )}\n <RACTabList\n {...props}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n ref={tablistRef}\n className={renderProps => tablist({...renderProps, labelBehavior, density})}\n />\n </div>\n );\n}\n\nconst selectedIndicator = style<{isDisabled: boolean; orientation?: Orientation}>({\n position: 'absolute',\n backgroundColor: {\n default: 'neutral',\n isDisabled: 'disabled',\n forcedColors: {\n default: 'Highlight',\n isDisabled: 'GrayText'\n }\n },\n height: {\n default: 'full',\n orientation: {\n horizontal: '[2px]'\n }\n },\n width: {\n default: 'full',\n orientation: {\n vertical: '[2px]'\n }\n },\n contain: 'strict',\n transition: {\n default: '[translate,width,height]',\n '@media (prefers-reduced-motion: reduce)': 'none'\n },\n transitionDuration: 200,\n transitionTimingFunction: 'out',\n bottom: {\n default: 0\n },\n top: {\n orientation: {\n vertical: 0\n }\n },\n left: {\n orientation: {\n horizontal: 0\n }\n },\n insetStart: {\n orientation: {\n vertical: -12\n }\n },\n borderStyle: 'none',\n borderRadius: 'full'\n});\n\nconst tab = style<\n TabRenderProps & {\n density?: 'compact' | 'regular';\n labelBehavior?: 'show' | 'hide';\n orientation?: Orientation;\n }\n>(\n {\n ...focusRing(),\n display: 'flex',\n color: {\n default: baseColor('neutral-subdued'),\n isSelected: baseColor('neutral'),\n isDisabled: 'disabled',\n forcedColors: {\n isSelected: 'Highlight',\n isDisabled: 'GrayText'\n }\n },\n borderRadius: 'sm',\n gap: 'text-to-visual',\n height: {\n orientation: {\n horizontal: {\n density: {\n compact: 32,\n regular: 48\n }\n }\n }\n },\n minHeight: {\n orientation: {\n vertical: {\n density: {\n compact: 32,\n regular: 48\n }\n }\n }\n },\n alignItems: 'center',\n position: 'relative',\n cursor: 'default',\n textDecoration: 'none',\n flexShrink: 0,\n transition: 'default',\n paddingX: {\n labelBehavior: {\n hide: size(6)\n }\n },\n disableTapHighlight: true\n },\n getAllowedOverrides()\n);\n\nconst icon = style({\n display: 'block',\n flexShrink: 0,\n '--iconPrimary': {\n type: 'fill',\n value: 'currentColor'\n }\n});\n\nexport function Tab(props: TabProps): ReactNode {\n let {density, orientation, labelBehavior, baseId} = useContext(InternalTabsContext) ?? {};\n\n // Derive a stable content id from the shared baseId on InternalTabsContext.\n // Prevents infinite loop when rendering across multiple CollectionBuilder portals.\n let fallbackId = useId();\n let contentId = `${baseId ?? fallbackId}-content-${props.id ?? fallbackId}`;\n let ariaLabelledBy = props['aria-labelledby'] || '';\n\n return (\n <RACTab\n {...props}\n // @ts-ignore\n originalProps={props}\n aria-labelledby={`${labelBehavior === 'hide' ? contentId : ''} ${ariaLabelledBy}`}\n style={props.UNSAFE_style}\n className={renderProps =>\n (props.UNSAFE_className || '') +\n tab({...renderProps, density, labelBehavior, orientation}, props.styles)\n }>\n {({\n // @ts-ignore\n isMenu,\n isDisabled\n }) => {\n if (isMenu) {\n return props.children;\n } else {\n return (\n <Provider\n values={[\n [\n TextContext,\n {\n id: contentId,\n styles: style({\n order: 1,\n display: {\n labelBehavior: {\n hide: 'none'\n }\n }\n })({labelBehavior})\n }\n ],\n [\n IconContext,\n {\n render: centerBaseline({slot: 'icon', styles: style({order: 0})}),\n styles: icon\n }\n ]\n ]}>\n <TabInner orientation={orientation!} isDisabled={isDisabled}>\n {typeof props.children === 'string' ? (\n <Text>{props.children}</Text>\n ) : (\n props.children\n )}\n </TabInner>\n </Provider>\n );\n }\n }}\n </RACTab>\n );\n}\n\nfunction TabInner({\n isDisabled,\n orientation,\n children\n}: {\n isDisabled: boolean;\n orientation: Orientation;\n children: ReactNode;\n}) {\n let ref = useRef<HTMLDivElement | null>(null);\n let isHidden = useContext(HiddenTabsContext);\n\n return (\n <>\n {!isHidden && (\n <SelectionIndicator ref={ref} className={selectedIndicator({isDisabled, orientation})} />\n )}\n {children}\n </>\n );\n}\n\nconst tabPanel = style(\n {\n ...focusRing(),\n marginTop: 4,\n color: 'gray-800',\n flexGrow: 1,\n minHeight: 0,\n display: {\n default: 'block',\n isInert: 'none'\n }\n },\n getAllowedOverrides({height: true})\n);\n\nexport function TabPanel(props: TabPanelProps): ReactNode | null {\n let {showTabs} = useContext(CollapseContext);\n let {selectedKey} = useContext(InternalTabsContext);\n if (showTabs) {\n return (\n <AriaTabPanel\n {...props}\n style={props.UNSAFE_style}\n className={renderProps =>\n (props.UNSAFE_className ?? '') + tabPanel(renderProps, props.styles)\n }\n />\n );\n }\n\n if (props.id !== selectedKey) {\n return null;\n }\n\n return <CollapsedTabPanel {...props} />;\n}\n\nfunction CollapsedTabPanel(props: TabPanelProps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let {UNSAFE_style, UNSAFE_className = '', id, shouldForceMount, ...otherProps} = props;\n let {menuId, valueId} = useContext(CollapseContext);\n let ref = useRef(null);\n let tabIndex = useHasTabbableChild(ref) ? undefined : 0;\n\n return (\n <Group\n {...otherProps}\n ref={ref}\n aria-labelledby={menuId + ' ' + valueId}\n tabIndex={tabIndex}\n style={UNSAFE_style}\n className={renderProps => UNSAFE_className + tabPanel(renderProps, props.styles)}\n />\n );\n}\n\nfunction isEveryTabDisabled<T>(\n collection: Collection<Node<T>> | undefined,\n disabledKeys: Set<Key>\n) {\n let testKey: Key | null = null;\n if (collection && collection.size > 0) {\n testKey = collection.getFirstKey();\n\n let index = 0;\n while (testKey && index < collection.size) {\n // We have to check if the item in the collection has a key in disabledKeys or has the isDisabled prop set directly on it\n if (!disabledKeys.has(testKey) && !collection.getItem(testKey)?.props?.isDisabled) {\n return false;\n }\n\n testKey = collection.getKeyAfter(testKey);\n index++;\n }\n return true;\n }\n return false;\n}\n\nconst HiddenTabsContext = createContext(false);\n\nlet HiddenTabs = function (props: {\n listRef: RefObject<HTMLDivElement | null>;\n items: Array<Node<any>>;\n size?: string;\n density?: 'compact' | 'regular';\n}) {\n let {listRef, items = [], size, density} = props;\n\n return (\n <div\n // @ts-ignore\n inert={inertValue(true)}\n ref={listRef}\n className={style({\n display: 'inherit',\n flexDirection: 'inherit',\n gap: 'inherit',\n flexWrap: 'inherit',\n position: 'absolute',\n inset: 0,\n visibility: 'hidden',\n overflow: 'hidden',\n opacity: 0\n })}>\n <HiddenTabsContext.Provider value>\n {items.map(item => {\n // pull off individual props as an allow list, don't want refs or other props getting through\n return (\n <div\n data-hidden-tab\n style={item.props.UNSAFE_style}\n key={item.key}\n className={item.props.className({size, density})}>\n {item.props.children({size, density})}\n </div>\n );\n })}\n </HiddenTabsContext.Provider>\n </div>\n );\n};\n\nlet TabsMenu = (\n props: {\n valueId: string;\n items: Array<Node<any>>;\n onSelectionChange: TabsProps['onSelectionChange'];\n } & Omit<TabsProps, 'children'>\n) => {\n let {id, items, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, valueId} = props;\n let {\n density,\n onSelectionChange: _onSelectionChange,\n selectedKey,\n isDisabled,\n disabledKeys,\n labelBehavior\n } = useContext(InternalTabsContext);\n let onSelectionChange = useCallback(\n (key: Key | null) => {\n if (key != null) {\n _onSelectionChange?.(key);\n }\n },\n [_onSelectionChange]\n );\n let state = useContext(TabListStateContext);\n let allKeysDisabled = useMemo(() => {\n return isEveryTabDisabled(state?.collection, disabledKeys ? new Set(disabledKeys) : new Set());\n }, [state?.collection, disabledKeys]);\n let labelProps = useLabels({\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy\n });\n\n return (\n <div\n className={style({\n display: 'flex',\n flexShrink: 0,\n alignItems: 'center',\n height: {\n density: {\n compact: 32,\n regular: 48\n }\n }\n })({density})}>\n <Picker\n id={id}\n valueId={valueId}\n {...labelProps}\n aria-describedby={props['aria-describedby']}\n aria-details={props['aria-details']}\n isDisabled={isDisabled || allKeysDisabled}\n density={density!}\n labelBehavior={labelBehavior}\n items={items}\n disabledKeys={disabledKeys}\n selectedKey={selectedKey}\n onSelectionChange={onSelectionChange}>\n {(item: Node<any>) => {\n return (\n <PickerItem\n {...item.props.originalProps}\n isDisabled={isDisabled || allKeysDisabled}\n key={item.key}>\n {item.props.children({density, isMenu: true})}\n </PickerItem>\n );\n }}\n </Picker>\n </div>\n );\n};\n\nlet CollapsingTabs = ({\n collection,\n containerRef,\n ...props\n}: {collection: Collection<Node<unknown>>; containerRef: any} & TabsProps) => {\n let {orientation = 'horizontal', onSelectionChange} = props;\n let [showItems, _setShowItems] = useState(true);\n showItems = orientation === 'vertical' ? true : showItems;\n let setShowItems = useCallback(\n (value: boolean) => {\n if (orientation === 'vertical') {\n // if orientation is vertical, we always show the items\n _setShowItems(true);\n } else {\n _setShowItems(value);\n }\n },\n [orientation]\n );\n\n let {direction} = useLocale();\n\n let children = useMemo(() => [...collection], [collection]);\n\n let listRef = useRef<HTMLDivElement | null>(null);\n\n let updateOverflow = () => {\n if (orientation === 'vertical' || !listRef.current || !containerRef?.current) {\n return;\n }\n let container = listRef.current;\n let containerRect = container.getBoundingClientRect();\n let tabs = container.querySelectorAll('[data-hidden-tab]');\n let lastTab = tabs[tabs.length - 1];\n let lastTabRect = lastTab.getBoundingClientRect();\n if (direction === 'ltr') {\n setShowItems?.(lastTabRect.right <= containerRect.right);\n } else {\n setShowItems?.(lastTabRect.left >= containerRect.left);\n }\n };\n\n let updateOverflowEffect = useEffectEvent(updateOverflow);\n\n useResizeObserver({ref: containerRef, onResize: updateOverflow});\n\n useLayoutEffect(() => {\n if (collection.size > 0) {\n queueMicrotask(updateOverflowEffect);\n }\n }, [collection.size]);\n\n // start with null so that the first render won't have a flicker\n let prevOrientation = useRef<Orientation | null>(null);\n useLayoutEffect(() => {\n if (collection.size > 0 && prevOrientation.current !== orientation) {\n updateOverflowEffect();\n }\n prevOrientation.current = orientation;\n }, [collection.size, orientation]);\n\n useEffect(() => {\n // Recalculate visible tags when fonts are loaded.\n document.fonts?.ready.then(() => updateOverflowEffect());\n }, []);\n\n let menuId = useId();\n let valueId = useId();\n\n let contents: ReactNode;\n if (showItems) {\n contents = (\n <RACTabs {...props} className=\"\" style={{display: 'contents'}}>\n {props.children}\n </RACTabs>\n );\n } else {\n contents = (\n <>\n <CollapseContext.Provider\n value={{\n showTabs: false,\n tabs: children,\n menuId,\n valueId,\n listRef: listRef,\n onSelectionChange,\n ariaLabel: props['aria-label'],\n ariaDescribedBy: props['aria-labelledby']\n }}>\n {props.children}\n </CollapseContext.Provider>\n </>\n );\n }\n\n return (\n <div\n style={props.UNSAFE_style}\n className={(props.UNSAFE_className || '') + tabs({orientation}, props.styles)}\n ref={containerRef}>\n <CollapseContext.Provider\n value={{showTabs: true, menuId, valueId, tabs: children, listRef: listRef}}>\n {contents}\n </CollapseContext.Provider>\n </div>\n );\n};\n"],"names":[],"version":3,"file":"Tabs.mjs.map"}