@fluentui/web-components 3.0.0-beta.99 → 3.0.0-rc.2

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 (546) hide show
  1. package/CHANGELOG.md +335 -2
  2. package/custom-elements.json +1886 -609
  3. package/dist/esm/accordion/accordion.js +3 -5
  4. package/dist/esm/accordion/accordion.js.map +1 -1
  5. package/dist/{dts → esm}/accordion-item/accordion-item.d.ts +1 -0
  6. package/dist/esm/accordion-item/accordion-item.js.map +1 -1
  7. package/dist/{dts → esm}/avatar/avatar.base.d.ts +20 -0
  8. package/dist/esm/avatar/avatar.base.js +37 -1
  9. package/dist/esm/avatar/avatar.base.js.map +1 -1
  10. package/dist/esm/avatar/avatar.js +1 -1
  11. package/dist/esm/avatar/avatar.js.map +1 -1
  12. package/dist/esm/avatar/avatar.template.js +2 -2
  13. package/dist/esm/avatar/avatar.template.js.map +1 -1
  14. package/dist/{dts → esm}/button/button.base.d.ts +3 -10
  15. package/dist/esm/button/button.base.js +25 -11
  16. package/dist/esm/button/button.base.js.map +1 -1
  17. package/dist/esm/button/button.template.js +0 -1
  18. package/dist/esm/button/button.template.js.map +1 -1
  19. package/dist/{dts → esm}/checkbox/checkbox.base.d.ts +10 -1
  20. package/dist/esm/checkbox/checkbox.base.js +24 -2
  21. package/dist/esm/checkbox/checkbox.base.js.map +1 -1
  22. package/dist/esm/checkbox/checkbox.template.js +0 -1
  23. package/dist/esm/checkbox/checkbox.template.js.map +1 -1
  24. package/dist/esm/compound-button/compound-button.styles.js +7 -1
  25. package/dist/esm/compound-button/compound-button.styles.js.map +1 -1
  26. package/dist/{dts → esm}/dialog/dialog.d.ts +3 -0
  27. package/dist/esm/dialog/dialog.js +22 -1
  28. package/dist/esm/dialog/dialog.js.map +1 -1
  29. package/dist/esm/dialog/dialog.options.d.ts +21 -0
  30. package/dist/esm/dialog/dialog.options.js +14 -0
  31. package/dist/esm/dialog/dialog.options.js.map +1 -1
  32. package/dist/esm/dialog/dialog.styles.js +7 -1
  33. package/dist/esm/dialog/dialog.styles.js.map +1 -1
  34. package/dist/esm/dialog/dialog.template.js +0 -4
  35. package/dist/esm/dialog/dialog.template.js.map +1 -1
  36. package/dist/{dts → esm}/dialog/index.d.ts +1 -1
  37. package/dist/esm/dialog/index.js +1 -1
  38. package/dist/esm/dialog/index.js.map +1 -1
  39. package/dist/{dts → esm}/dialog-body/dialog-body.d.ts +5 -3
  40. package/dist/esm/dialog-body/dialog-body.js +16 -12
  41. package/dist/esm/dialog-body/dialog-body.js.map +1 -1
  42. package/dist/esm/dialog-body/dialog-body.styles.js +24 -8
  43. package/dist/esm/dialog-body/dialog-body.styles.js.map +1 -1
  44. package/dist/esm/dialog-body/dialog-body.template.js +10 -35
  45. package/dist/esm/dialog-body/dialog-body.template.js.map +1 -1
  46. package/dist/{dts → esm}/divider/divider.options.d.ts +1 -4
  47. package/dist/{dts → esm}/drawer/drawer.d.ts +14 -0
  48. package/dist/esm/drawer/drawer.js +50 -0
  49. package/dist/esm/drawer/drawer.js.map +1 -1
  50. package/dist/esm/drawer/drawer.template.js +1 -4
  51. package/dist/esm/drawer/drawer.template.js.map +1 -1
  52. package/dist/{dts → esm}/drawer-body/drawer-body.d.ts +7 -0
  53. package/dist/esm/drawer-body/drawer-body.js +16 -0
  54. package/dist/esm/drawer-body/drawer-body.js.map +1 -1
  55. package/dist/esm/drawer-body/drawer-body.template.js +1 -1
  56. package/dist/esm/drawer-body/drawer-body.template.js.map +1 -1
  57. package/dist/{dts → esm}/dropdown/dropdown.base.d.ts +30 -16
  58. package/dist/esm/dropdown/dropdown.base.js +114 -62
  59. package/dist/esm/dropdown/dropdown.base.js.map +1 -1
  60. package/dist/esm/dropdown/dropdown.definition.js +0 -3
  61. package/dist/esm/dropdown/dropdown.definition.js.map +1 -1
  62. package/dist/esm/dropdown/dropdown.styles.js +28 -25
  63. package/dist/esm/dropdown/dropdown.styles.js.map +1 -1
  64. package/dist/esm/dropdown/dropdown.template.js +4 -2
  65. package/dist/esm/dropdown/dropdown.template.js.map +1 -1
  66. package/dist/{dts → esm}/field/field.base.d.ts +3 -0
  67. package/dist/esm/field/field.base.js +21 -10
  68. package/dist/esm/field/field.base.js.map +1 -1
  69. package/dist/esm/field/field.styles.js +13 -15
  70. package/dist/esm/field/field.styles.js.map +1 -1
  71. package/dist/esm/field/field.template.js +2 -10
  72. package/dist/esm/field/field.template.js.map +1 -1
  73. package/dist/{dts → esm}/index.d.ts +2 -2
  74. package/dist/esm/index.js +2 -2
  75. package/dist/esm/index.js.map +1 -1
  76. package/dist/esm/label/label.template.js +1 -1
  77. package/dist/esm/label/label.template.js.map +1 -1
  78. package/dist/{dts → esm}/listbox/listbox.d.ts +8 -2
  79. package/dist/esm/listbox/listbox.js +17 -5
  80. package/dist/esm/listbox/listbox.js.map +1 -1
  81. package/dist/esm/listbox/listbox.styles.js +38 -2
  82. package/dist/esm/listbox/listbox.styles.js.map +1 -1
  83. package/dist/{dts → esm}/listbox/listbox.template.d.ts +1 -2
  84. package/dist/esm/listbox/listbox.template.js +2 -9
  85. package/dist/esm/listbox/listbox.template.js.map +1 -1
  86. package/dist/esm/menu/menu.js +7 -3
  87. package/dist/esm/menu/menu.js.map +1 -1
  88. package/dist/{dts → esm}/menu-item/menu-item.options.d.ts +10 -0
  89. package/dist/esm/menu-item/menu-item.options.js +14 -0
  90. package/dist/esm/menu-item/menu-item.options.js.map +1 -1
  91. package/dist/esm/menu-item/menu-item.styles.js +1 -1
  92. package/dist/esm/menu-list/menu-list.js +3 -7
  93. package/dist/esm/menu-list/menu-list.js.map +1 -1
  94. package/dist/esm/option/option.js +1 -0
  95. package/dist/esm/option/option.js.map +1 -1
  96. package/dist/esm/option/option.styles.js +8 -2
  97. package/dist/esm/option/option.styles.js.map +1 -1
  98. package/dist/{dts → esm}/progress-bar/progress-bar.base.d.ts +4 -5
  99. package/dist/esm/progress-bar/progress-bar.base.js +26 -15
  100. package/dist/esm/progress-bar/progress-bar.base.js.map +1 -1
  101. package/dist/{dts → esm}/progress-bar/progress-bar.d.ts +1 -1
  102. package/dist/esm/progress-bar/progress-bar.styles.js +11 -0
  103. package/dist/esm/progress-bar/progress-bar.styles.js.map +1 -1
  104. package/dist/esm/progress-bar/progress-bar.template.js +2 -8
  105. package/dist/esm/progress-bar/progress-bar.template.js.map +1 -1
  106. package/dist/{dts → esm}/radio/radio.d.ts +0 -1
  107. package/dist/esm/radio/radio.js +0 -7
  108. package/dist/esm/radio/radio.js.map +1 -1
  109. package/dist/{dts → esm}/radio-group/radio-group.d.ts +15 -0
  110. package/dist/esm/radio-group/radio-group.js +46 -6
  111. package/dist/esm/radio-group/radio-group.js.map +1 -1
  112. package/dist/{dts → esm}/radio-group/radio-group.options.d.ts +1 -4
  113. package/dist/esm/radio-group/radio-group.styles.js +5 -1
  114. package/dist/esm/radio-group/radio-group.styles.js.map +1 -1
  115. package/dist/{dts → esm}/rating-display/rating-display.base.d.ts +20 -32
  116. package/dist/esm/rating-display/rating-display.base.js +63 -48
  117. package/dist/esm/rating-display/rating-display.base.js.map +1 -1
  118. package/dist/{dts → esm}/rating-display/rating-display.d.ts +1 -13
  119. package/dist/esm/rating-display/rating-display.js +0 -16
  120. package/dist/esm/rating-display/rating-display.js.map +1 -1
  121. package/dist/esm/rating-display/rating-display.styles.js +65 -38
  122. package/dist/esm/rating-display/rating-display.styles.js.map +1 -1
  123. package/dist/esm/rating-display/rating-display.template.d.ts +17 -0
  124. package/dist/esm/rating-display/rating-display.template.js +11 -15
  125. package/dist/esm/rating-display/rating-display.template.js.map +1 -1
  126. package/dist/esm/slider/slider.js +2 -2
  127. package/dist/esm/slider/slider.js.map +1 -1
  128. package/dist/esm/slider/slider.template.js +0 -1
  129. package/dist/esm/slider/slider.template.js.map +1 -1
  130. package/dist/{dts → esm}/styles/states/index.d.ts +5 -0
  131. package/dist/esm/styles/states/index.js +5 -0
  132. package/dist/esm/styles/states/index.js.map +1 -1
  133. package/dist/esm/switch/switch.styles.js +4 -0
  134. package/dist/esm/switch/switch.styles.js.map +1 -1
  135. package/dist/esm/switch/switch.template.js +0 -1
  136. package/dist/esm/switch/switch.template.js.map +1 -1
  137. package/dist/{dts → esm}/tab/index.d.ts +1 -0
  138. package/dist/esm/tab/index.js +1 -0
  139. package/dist/esm/tab/index.js.map +1 -1
  140. package/dist/esm/tab/tab.options.d.ts +10 -0
  141. package/dist/esm/tab/tab.options.js +15 -0
  142. package/dist/esm/tab/tab.options.js.map +1 -0
  143. package/dist/esm/tab/tab.styles.js +12 -7
  144. package/dist/esm/tab/tab.styles.js.map +1 -1
  145. package/dist/{dts → esm}/tablist/tablist.base.d.ts +13 -2
  146. package/dist/esm/tablist/tablist.base.js +23 -0
  147. package/dist/esm/tablist/tablist.base.js.map +1 -1
  148. package/dist/{dts → esm}/tablist/tablist.options.d.ts +1 -4
  149. package/dist/esm/tablist/tablist.styles.js +2 -2
  150. package/dist/esm/tablist/tablist.template.js +1 -1
  151. package/dist/esm/tablist/tablist.template.js.map +1 -1
  152. package/dist/esm/text/text.styles.js +0 -1
  153. package/dist/esm/text/text.styles.js.map +1 -1
  154. package/dist/{dts → esm}/textarea/textarea.base.d.ts +1 -0
  155. package/dist/esm/textarea/textarea.base.js +14 -6
  156. package/dist/esm/textarea/textarea.base.js.map +1 -1
  157. package/dist/esm/textarea/textarea.template.js +2 -14
  158. package/dist/esm/textarea/textarea.template.js.map +1 -1
  159. package/dist/{dts → esm}/tree/tree.base.d.ts +7 -1
  160. package/dist/esm/tree/tree.base.js +9 -0
  161. package/dist/esm/tree/tree.base.js.map +1 -1
  162. package/dist/{dts → esm}/tree/tree.d.ts +4 -4
  163. package/dist/esm/tree/tree.js +2 -2
  164. package/dist/esm/tree/tree.js.map +1 -1
  165. package/dist/esm/tree/tree.styles.js +2 -1
  166. package/dist/esm/tree/tree.styles.js.map +1 -1
  167. package/dist/esm/tree/tree.template.js +2 -7
  168. package/dist/esm/tree/tree.template.js.map +1 -1
  169. package/dist/{dts → esm}/tree-item/tree-item.base.d.ts +8 -1
  170. package/dist/esm/tree-item/tree-item.base.js +18 -0
  171. package/dist/esm/tree-item/tree-item.base.js.map +1 -1
  172. package/dist/{dts → esm}/tree-item/tree-item.d.ts +3 -3
  173. package/dist/esm/tree-item/tree-item.js +1 -1
  174. package/dist/esm/tree-item/tree-item.js.map +1 -1
  175. package/dist/esm/tree-item/tree-item.styles.js +5 -0
  176. package/dist/esm/tree-item/tree-item.styles.js.map +1 -1
  177. package/dist/esm/tree-item/tree-item.template.js +5 -13
  178. package/dist/esm/tree-item/tree-item.template.js.map +1 -1
  179. package/dist/{dts → esm}/tsdoc-metadata.json +1 -1
  180. package/dist/esm/utils/element-internals.js +0 -3
  181. package/dist/esm/utils/element-internals.js.map +1 -1
  182. package/dist/{dts → esm}/utils/language.d.ts +1 -1
  183. package/dist/esm/utils/request-idle-callback.d.ts +41 -0
  184. package/dist/esm/utils/request-idle-callback.js +72 -0
  185. package/dist/esm/utils/request-idle-callback.js.map +1 -0
  186. package/dist/web-components.d.ts +197 -105
  187. package/dist/web-components.js +802 -535
  188. package/dist/web-components.min.js +230 -219
  189. package/package.json +27 -55
  190. package/dist/dts/dialog/dialog.options.d.ts +0 -11
  191. package/dist/dts/rating-display/rating-display.template.d.ts +0 -14
  192. /package/dist/{dts → esm}/accordion/accordion.bench.d.ts +0 -0
  193. /package/dist/{dts → esm}/accordion/accordion.d.ts +0 -0
  194. /package/dist/{dts → esm}/accordion/accordion.definition.d.ts +0 -0
  195. /package/dist/{dts → esm}/accordion/accordion.options.d.ts +0 -0
  196. /package/dist/{dts → esm}/accordion/accordion.styles.d.ts +0 -0
  197. /package/dist/{dts → esm}/accordion/accordion.template.d.ts +0 -0
  198. /package/dist/{dts → esm}/accordion/define.d.ts +0 -0
  199. /package/dist/{dts → esm}/accordion/index.d.ts +0 -0
  200. /package/dist/{dts → esm}/accordion-item/accordion-item.base.d.ts +0 -0
  201. /package/dist/{dts → esm}/accordion-item/accordion-item.bench.d.ts +0 -0
  202. /package/dist/{dts → esm}/accordion-item/accordion-item.definition.d.ts +0 -0
  203. /package/dist/{dts → esm}/accordion-item/accordion-item.options.d.ts +0 -0
  204. /package/dist/{dts → esm}/accordion-item/accordion-item.styles.d.ts +0 -0
  205. /package/dist/{dts → esm}/accordion-item/accordion-item.template.d.ts +0 -0
  206. /package/dist/{dts → esm}/accordion-item/define.d.ts +0 -0
  207. /package/dist/{dts → esm}/accordion-item/index.d.ts +0 -0
  208. /package/dist/{dts → esm}/anchor-button/anchor-button.base.d.ts +0 -0
  209. /package/dist/{dts → esm}/anchor-button/anchor-button.bench.d.ts +0 -0
  210. /package/dist/{dts → esm}/anchor-button/anchor-button.d.ts +0 -0
  211. /package/dist/{dts → esm}/anchor-button/anchor-button.definition.d.ts +0 -0
  212. /package/dist/{dts → esm}/anchor-button/anchor-button.options.d.ts +0 -0
  213. /package/dist/{dts → esm}/anchor-button/anchor-button.styles.d.ts +0 -0
  214. /package/dist/{dts → esm}/anchor-button/anchor-button.template.d.ts +0 -0
  215. /package/dist/{dts → esm}/anchor-button/define.d.ts +0 -0
  216. /package/dist/{dts → esm}/anchor-button/index.d.ts +0 -0
  217. /package/dist/{dts → esm}/avatar/avatar.bench.d.ts +0 -0
  218. /package/dist/{dts → esm}/avatar/avatar.d.ts +0 -0
  219. /package/dist/{dts → esm}/avatar/avatar.definition.d.ts +0 -0
  220. /package/dist/{dts → esm}/avatar/avatar.options.d.ts +0 -0
  221. /package/dist/{dts → esm}/avatar/avatar.styles.d.ts +0 -0
  222. /package/dist/{dts → esm}/avatar/avatar.template.d.ts +0 -0
  223. /package/dist/{dts → esm}/avatar/define.d.ts +0 -0
  224. /package/dist/{dts → esm}/avatar/index.d.ts +0 -0
  225. /package/dist/{dts → esm}/badge/badge.bench.d.ts +0 -0
  226. /package/dist/{dts → esm}/badge/badge.d.ts +0 -0
  227. /package/dist/{dts → esm}/badge/badge.definition.d.ts +0 -0
  228. /package/dist/{dts → esm}/badge/badge.options.d.ts +0 -0
  229. /package/dist/{dts → esm}/badge/badge.styles.d.ts +0 -0
  230. /package/dist/{dts → esm}/badge/badge.template.d.ts +0 -0
  231. /package/dist/{dts → esm}/badge/define.d.ts +0 -0
  232. /package/dist/{dts → esm}/badge/index.d.ts +0 -0
  233. /package/dist/{dts → esm}/button/button.bench.d.ts +0 -0
  234. /package/dist/{dts → esm}/button/button.d.ts +0 -0
  235. /package/dist/{dts → esm}/button/button.definition.d.ts +0 -0
  236. /package/dist/{dts → esm}/button/button.options.d.ts +0 -0
  237. /package/dist/{dts → esm}/button/button.styles.d.ts +0 -0
  238. /package/dist/{dts → esm}/button/button.template.d.ts +0 -0
  239. /package/dist/{dts → esm}/button/define.d.ts +0 -0
  240. /package/dist/{dts → esm}/button/index.d.ts +0 -0
  241. /package/dist/{dts → esm}/checkbox/checkbox.bench.d.ts +0 -0
  242. /package/dist/{dts → esm}/checkbox/checkbox.d.ts +0 -0
  243. /package/dist/{dts → esm}/checkbox/checkbox.definition.d.ts +0 -0
  244. /package/dist/{dts → esm}/checkbox/checkbox.options.d.ts +0 -0
  245. /package/dist/{dts → esm}/checkbox/checkbox.styles.d.ts +0 -0
  246. /package/dist/{dts → esm}/checkbox/checkbox.template.d.ts +0 -0
  247. /package/dist/{dts → esm}/checkbox/define.d.ts +0 -0
  248. /package/dist/{dts → esm}/checkbox/index.d.ts +0 -0
  249. /package/dist/{dts → esm}/compound-button/compound-button.bench.d.ts +0 -0
  250. /package/dist/{dts → esm}/compound-button/compound-button.d.ts +0 -0
  251. /package/dist/{dts → esm}/compound-button/compound-button.definition.d.ts +0 -0
  252. /package/dist/{dts → esm}/compound-button/compound-button.options.d.ts +0 -0
  253. /package/dist/{dts → esm}/compound-button/compound-button.styles.d.ts +0 -0
  254. /package/dist/{dts → esm}/compound-button/compound-button.template.d.ts +0 -0
  255. /package/dist/{dts → esm}/compound-button/define.d.ts +0 -0
  256. /package/dist/{dts → esm}/compound-button/index.d.ts +0 -0
  257. /package/dist/{dts → esm}/counter-badge/counter-badge.bench.d.ts +0 -0
  258. /package/dist/{dts → esm}/counter-badge/counter-badge.d.ts +0 -0
  259. /package/dist/{dts → esm}/counter-badge/counter-badge.definition.d.ts +0 -0
  260. /package/dist/{dts → esm}/counter-badge/counter-badge.options.d.ts +0 -0
  261. /package/dist/{dts → esm}/counter-badge/counter-badge.styles.d.ts +0 -0
  262. /package/dist/{dts → esm}/counter-badge/counter-badge.template.d.ts +0 -0
  263. /package/dist/{dts → esm}/counter-badge/define.d.ts +0 -0
  264. /package/dist/{dts → esm}/counter-badge/index.d.ts +0 -0
  265. /package/dist/{dts → esm}/dialog/define.d.ts +0 -0
  266. /package/dist/{dts → esm}/dialog/dialog.bench.d.ts +0 -0
  267. /package/dist/{dts → esm}/dialog/dialog.definition.d.ts +0 -0
  268. /package/dist/{dts → esm}/dialog/dialog.styles.d.ts +0 -0
  269. /package/dist/{dts → esm}/dialog/dialog.template.d.ts +0 -0
  270. /package/dist/{dts → esm}/dialog-body/define.d.ts +0 -0
  271. /package/dist/{dts → esm}/dialog-body/dialog-body.bench.d.ts +0 -0
  272. /package/dist/{dts → esm}/dialog-body/dialog-body.definition.d.ts +0 -0
  273. /package/dist/{dts → esm}/dialog-body/dialog-body.styles.d.ts +0 -0
  274. /package/dist/{dts → esm}/dialog-body/dialog-body.template.d.ts +0 -0
  275. /package/dist/{dts → esm}/dialog-body/index.d.ts +0 -0
  276. /package/dist/{dts → esm}/divider/define.d.ts +0 -0
  277. /package/dist/{dts → esm}/divider/divider.base.d.ts +0 -0
  278. /package/dist/{dts → esm}/divider/divider.bench.d.ts +0 -0
  279. /package/dist/{dts → esm}/divider/divider.d.ts +0 -0
  280. /package/dist/{dts → esm}/divider/divider.definition.d.ts +0 -0
  281. /package/dist/{dts → esm}/divider/divider.styles.d.ts +0 -0
  282. /package/dist/{dts → esm}/divider/divider.template.d.ts +0 -0
  283. /package/dist/{dts → esm}/divider/index.d.ts +0 -0
  284. /package/dist/{dts → esm}/drawer/define.d.ts +0 -0
  285. /package/dist/{dts → esm}/drawer/drawer.definition.d.ts +0 -0
  286. /package/dist/{dts → esm}/drawer/drawer.options.d.ts +0 -0
  287. /package/dist/{dts → esm}/drawer/drawer.styles.d.ts +0 -0
  288. /package/dist/{dts → esm}/drawer/drawer.template.d.ts +0 -0
  289. /package/dist/{dts → esm}/drawer/index.d.ts +0 -0
  290. /package/dist/{dts → esm}/drawer-body/define.d.ts +0 -0
  291. /package/dist/{dts → esm}/drawer-body/drawer-body.definition.d.ts +0 -0
  292. /package/dist/{dts → esm}/drawer-body/drawer-body.styles.d.ts +0 -0
  293. /package/dist/{dts → esm}/drawer-body/drawer-body.template.d.ts +0 -0
  294. /package/dist/{dts → esm}/drawer-body/index.d.ts +0 -0
  295. /package/dist/{dts → esm}/dropdown/define.d.ts +0 -0
  296. /package/dist/{dts → esm}/dropdown/dropdown.d.ts +0 -0
  297. /package/dist/{dts → esm}/dropdown/dropdown.definition.d.ts +0 -0
  298. /package/dist/{dts → esm}/dropdown/dropdown.options.d.ts +0 -0
  299. /package/dist/{dts → esm}/dropdown/dropdown.styles.d.ts +0 -0
  300. /package/dist/{dts → esm}/dropdown/dropdown.template.d.ts +0 -0
  301. /package/dist/{dts → esm}/dropdown/index.d.ts +0 -0
  302. /package/dist/{dts → esm}/field/define.d.ts +0 -0
  303. /package/dist/{dts → esm}/field/field.bench.d.ts +0 -0
  304. /package/dist/{dts → esm}/field/field.d.ts +0 -0
  305. /package/dist/{dts → esm}/field/field.definition.d.ts +0 -0
  306. /package/dist/{dts → esm}/field/field.options.d.ts +0 -0
  307. /package/dist/{dts → esm}/field/field.styles.d.ts +0 -0
  308. /package/dist/{dts → esm}/field/field.template.d.ts +0 -0
  309. /package/dist/{dts → esm}/field/index.d.ts +0 -0
  310. /package/dist/{dts → esm}/fluent-design-system.d.ts +0 -0
  311. /package/dist/{dts → esm}/image/define.d.ts +0 -0
  312. /package/dist/{dts → esm}/image/image.bench.d.ts +0 -0
  313. /package/dist/{dts → esm}/image/image.d.ts +0 -0
  314. /package/dist/{dts → esm}/image/image.definition.d.ts +0 -0
  315. /package/dist/{dts → esm}/image/image.options.d.ts +0 -0
  316. /package/dist/{dts → esm}/image/image.styles.d.ts +0 -0
  317. /package/dist/{dts → esm}/image/image.template.d.ts +0 -0
  318. /package/dist/{dts → esm}/image/index.d.ts +0 -0
  319. /package/dist/{dts → esm}/index-rollup.d.ts +0 -0
  320. /package/dist/{dts → esm}/label/define.d.ts +0 -0
  321. /package/dist/{dts → esm}/label/index.d.ts +0 -0
  322. /package/dist/{dts → esm}/label/label.bench.d.ts +0 -0
  323. /package/dist/{dts → esm}/label/label.d.ts +0 -0
  324. /package/dist/{dts → esm}/label/label.definition.d.ts +0 -0
  325. /package/dist/{dts → esm}/label/label.options.d.ts +0 -0
  326. /package/dist/{dts → esm}/label/label.styles.d.ts +0 -0
  327. /package/dist/{dts → esm}/label/label.template.d.ts +0 -0
  328. /package/dist/{dts → esm}/link/define.d.ts +0 -0
  329. /package/dist/{dts → esm}/link/index.d.ts +0 -0
  330. /package/dist/{dts → esm}/link/link.bench.d.ts +0 -0
  331. /package/dist/{dts → esm}/link/link.d.ts +0 -0
  332. /package/dist/{dts → esm}/link/link.definition.d.ts +0 -0
  333. /package/dist/{dts → esm}/link/link.options.d.ts +0 -0
  334. /package/dist/{dts → esm}/link/link.styles.d.ts +0 -0
  335. /package/dist/{dts → esm}/link/link.template.d.ts +0 -0
  336. /package/dist/{dts → esm}/listbox/define.d.ts +0 -0
  337. /package/dist/{dts → esm}/listbox/index.d.ts +0 -0
  338. /package/dist/{dts → esm}/listbox/listbox.definition.d.ts +0 -0
  339. /package/dist/{dts → esm}/listbox/listbox.options.d.ts +0 -0
  340. /package/dist/{dts → esm}/listbox/listbox.styles.d.ts +0 -0
  341. /package/dist/{dts → esm}/menu/define.d.ts +0 -0
  342. /package/dist/{dts → esm}/menu/index.d.ts +0 -0
  343. /package/dist/{dts → esm}/menu/menu.bench.d.ts +0 -0
  344. /package/dist/{dts → esm}/menu/menu.d.ts +0 -0
  345. /package/dist/{dts → esm}/menu/menu.definition.d.ts +0 -0
  346. /package/dist/{dts → esm}/menu/menu.styles.d.ts +0 -0
  347. /package/dist/{dts → esm}/menu/menu.template.d.ts +0 -0
  348. /package/dist/{dts → esm}/menu-button/define.d.ts +0 -0
  349. /package/dist/{dts → esm}/menu-button/index.d.ts +0 -0
  350. /package/dist/{dts → esm}/menu-button/menu-button.bench.d.ts +0 -0
  351. /package/dist/{dts → esm}/menu-button/menu-button.d.ts +0 -0
  352. /package/dist/{dts → esm}/menu-button/menu-button.definition.d.ts +0 -0
  353. /package/dist/{dts → esm}/menu-button/menu-button.options.d.ts +0 -0
  354. /package/dist/{dts → esm}/menu-button/menu-button.template.d.ts +0 -0
  355. /package/dist/{dts → esm}/menu-item/define.d.ts +0 -0
  356. /package/dist/{dts → esm}/menu-item/index.d.ts +0 -0
  357. /package/dist/{dts → esm}/menu-item/menu-item.bench.d.ts +0 -0
  358. /package/dist/{dts → esm}/menu-item/menu-item.d.ts +0 -0
  359. /package/dist/{dts → esm}/menu-item/menu-item.definition.d.ts +0 -0
  360. /package/dist/{dts → esm}/menu-item/menu-item.styles.d.ts +0 -0
  361. /package/dist/{dts → esm}/menu-item/menu-item.template.d.ts +0 -0
  362. /package/dist/{dts → esm}/menu-list/define.d.ts +0 -0
  363. /package/dist/{dts → esm}/menu-list/index.d.ts +0 -0
  364. /package/dist/{dts → esm}/menu-list/menu-list.bench.d.ts +0 -0
  365. /package/dist/{dts → esm}/menu-list/menu-list.d.ts +0 -0
  366. /package/dist/{dts → esm}/menu-list/menu-list.definition.d.ts +0 -0
  367. /package/dist/{dts → esm}/menu-list/menu-list.styles.d.ts +0 -0
  368. /package/dist/{dts → esm}/menu-list/menu-list.template.d.ts +0 -0
  369. /package/dist/{dts → esm}/message-bar/define.d.ts +0 -0
  370. /package/dist/{dts → esm}/message-bar/index.d.ts +0 -0
  371. /package/dist/{dts → esm}/message-bar/message-bar.bench.d.ts +0 -0
  372. /package/dist/{dts → esm}/message-bar/message-bar.d.ts +0 -0
  373. /package/dist/{dts → esm}/message-bar/message-bar.definition.d.ts +0 -0
  374. /package/dist/{dts → esm}/message-bar/message-bar.options.d.ts +0 -0
  375. /package/dist/{dts → esm}/message-bar/message-bar.styles.d.ts +0 -0
  376. /package/dist/{dts → esm}/message-bar/message-bar.template.d.ts +0 -0
  377. /package/dist/{dts → esm}/option/define.d.ts +0 -0
  378. /package/dist/{dts → esm}/option/index.d.ts +0 -0
  379. /package/dist/{dts → esm}/option/option.d.ts +0 -0
  380. /package/dist/{dts → esm}/option/option.definition.d.ts +0 -0
  381. /package/dist/{dts → esm}/option/option.options.d.ts +0 -0
  382. /package/dist/{dts → esm}/option/option.styles.d.ts +0 -0
  383. /package/dist/{dts → esm}/option/option.template.d.ts +0 -0
  384. /package/dist/{dts → esm}/patterns/aria-globals.d.ts +0 -0
  385. /package/dist/{dts → esm}/patterns/index.d.ts +0 -0
  386. /package/dist/{dts → esm}/patterns/start-end.d.ts +0 -0
  387. /package/dist/{dts → esm}/progress-bar/define.d.ts +0 -0
  388. /package/dist/{dts → esm}/progress-bar/index.d.ts +0 -0
  389. /package/dist/{dts → esm}/progress-bar/progress-bar.bench.d.ts +0 -0
  390. /package/dist/{dts → esm}/progress-bar/progress-bar.definition.d.ts +0 -0
  391. /package/dist/{dts → esm}/progress-bar/progress-bar.options.d.ts +0 -0
  392. /package/dist/{dts → esm}/progress-bar/progress-bar.styles.d.ts +0 -0
  393. /package/dist/{dts → esm}/progress-bar/progress-bar.template.d.ts +0 -0
  394. /package/dist/{dts → esm}/radio/define.d.ts +0 -0
  395. /package/dist/{dts → esm}/radio/index.d.ts +0 -0
  396. /package/dist/{dts → esm}/radio/radio.bench.d.ts +0 -0
  397. /package/dist/{dts → esm}/radio/radio.definition.d.ts +0 -0
  398. /package/dist/{dts → esm}/radio/radio.options.d.ts +0 -0
  399. /package/dist/{dts → esm}/radio/radio.styles.d.ts +0 -0
  400. /package/dist/{dts → esm}/radio/radio.template.d.ts +0 -0
  401. /package/dist/{dts → esm}/radio-group/define.d.ts +0 -0
  402. /package/dist/{dts → esm}/radio-group/index.d.ts +0 -0
  403. /package/dist/{dts → esm}/radio-group/radio-group.bench.d.ts +0 -0
  404. /package/dist/{dts → esm}/radio-group/radio-group.definition.d.ts +0 -0
  405. /package/dist/{dts → esm}/radio-group/radio-group.styles.d.ts +0 -0
  406. /package/dist/{dts → esm}/radio-group/radio-group.template.d.ts +0 -0
  407. /package/dist/{dts → esm}/rating-display/define.d.ts +0 -0
  408. /package/dist/{dts → esm}/rating-display/index.d.ts +0 -0
  409. /package/dist/{dts → esm}/rating-display/rating-display.definition.d.ts +0 -0
  410. /package/dist/{dts → esm}/rating-display/rating-display.options.d.ts +0 -0
  411. /package/dist/{dts → esm}/rating-display/rating-display.styles.d.ts +0 -0
  412. /package/dist/{dts → esm}/slider/define.d.ts +0 -0
  413. /package/dist/{dts → esm}/slider/index.d.ts +0 -0
  414. /package/dist/{dts → esm}/slider/slider-utilities.d.ts +0 -0
  415. /package/dist/{dts → esm}/slider/slider.bench.d.ts +0 -0
  416. /package/dist/{dts → esm}/slider/slider.d.ts +0 -0
  417. /package/dist/{dts → esm}/slider/slider.definition.d.ts +0 -0
  418. /package/dist/{dts → esm}/slider/slider.options.d.ts +0 -0
  419. /package/dist/{dts → esm}/slider/slider.styles.d.ts +0 -0
  420. /package/dist/{dts → esm}/slider/slider.template.d.ts +0 -0
  421. /package/dist/{dts → esm}/spinner/define.d.ts +0 -0
  422. /package/dist/{dts → esm}/spinner/index.d.ts +0 -0
  423. /package/dist/{dts → esm}/spinner/spinner.base.d.ts +0 -0
  424. /package/dist/{dts → esm}/spinner/spinner.bench.d.ts +0 -0
  425. /package/dist/{dts → esm}/spinner/spinner.d.ts +0 -0
  426. /package/dist/{dts → esm}/spinner/spinner.definition.d.ts +0 -0
  427. /package/dist/{dts → esm}/spinner/spinner.options.d.ts +0 -0
  428. /package/dist/{dts → esm}/spinner/spinner.styles.d.ts +0 -0
  429. /package/dist/{dts → esm}/spinner/spinner.template.d.ts +0 -0
  430. /package/dist/{dts → esm}/styles/index.d.ts +0 -0
  431. /package/dist/{dts → esm}/styles/partials/badge.partials.d.ts +0 -0
  432. /package/dist/{dts → esm}/styles/partials/index.d.ts +0 -0
  433. /package/dist/{dts → esm}/styles/partials/typography.partials.d.ts +0 -0
  434. /package/dist/{dts → esm}/switch/define.d.ts +0 -0
  435. /package/dist/{dts → esm}/switch/index.d.ts +0 -0
  436. /package/dist/{dts → esm}/switch/switch.bench.d.ts +0 -0
  437. /package/dist/{dts → esm}/switch/switch.d.ts +0 -0
  438. /package/dist/{dts → esm}/switch/switch.definition.d.ts +0 -0
  439. /package/dist/{dts → esm}/switch/switch.options.d.ts +0 -0
  440. /package/dist/{dts → esm}/switch/switch.styles.d.ts +0 -0
  441. /package/dist/{dts → esm}/switch/switch.template.d.ts +0 -0
  442. /package/dist/{dts → esm}/tab/define.d.ts +0 -0
  443. /package/dist/{dts → esm}/tab/tab.bench.d.ts +0 -0
  444. /package/dist/{dts → esm}/tab/tab.d.ts +0 -0
  445. /package/dist/{dts → esm}/tab/tab.definition.d.ts +0 -0
  446. /package/dist/{dts → esm}/tab/tab.styles.d.ts +0 -0
  447. /package/dist/{dts → esm}/tab/tab.template.d.ts +0 -0
  448. /package/dist/{dts → esm}/tab-panel/define.d.ts +0 -0
  449. /package/dist/{dts → esm}/tab-panel/index.d.ts +0 -0
  450. /package/dist/{dts → esm}/tab-panel/tab-panel.bench.d.ts +0 -0
  451. /package/dist/{dts → esm}/tab-panel/tab-panel.d.ts +0 -0
  452. /package/dist/{dts → esm}/tab-panel/tab-panel.definition.d.ts +0 -0
  453. /package/dist/{dts → esm}/tab-panel/tab-panel.styles.d.ts +0 -0
  454. /package/dist/{dts → esm}/tab-panel/tab-panel.template.d.ts +0 -0
  455. /package/dist/{dts → esm}/tablist/define.d.ts +0 -0
  456. /package/dist/{dts → esm}/tablist/index.d.ts +0 -0
  457. /package/dist/{dts → esm}/tablist/tablist.bench.d.ts +0 -0
  458. /package/dist/{dts → esm}/tablist/tablist.d.ts +0 -0
  459. /package/dist/{dts → esm}/tablist/tablist.definition.d.ts +0 -0
  460. /package/dist/{dts → esm}/tablist/tablist.styles.d.ts +0 -0
  461. /package/dist/{dts → esm}/tablist/tablist.template.d.ts +0 -0
  462. /package/dist/{dts → esm}/tabs/define.d.ts +0 -0
  463. /package/dist/{dts → esm}/tabs/index.d.ts +0 -0
  464. /package/dist/{dts → esm}/tabs/tabs.base.d.ts +0 -0
  465. /package/dist/{dts → esm}/tabs/tabs.bench.d.ts +0 -0
  466. /package/dist/{dts → esm}/tabs/tabs.d.ts +0 -0
  467. /package/dist/{dts → esm}/tabs/tabs.definition.d.ts +0 -0
  468. /package/dist/{dts → esm}/tabs/tabs.options.d.ts +0 -0
  469. /package/dist/{dts → esm}/tabs/tabs.styles.d.ts +0 -0
  470. /package/dist/{dts → esm}/tabs/tabs.template.d.ts +0 -0
  471. /package/dist/{dts → esm}/text/define.d.ts +0 -0
  472. /package/dist/{dts → esm}/text/index.d.ts +0 -0
  473. /package/dist/{dts → esm}/text/text.bench.d.ts +0 -0
  474. /package/dist/{dts → esm}/text/text.d.ts +0 -0
  475. /package/dist/{dts → esm}/text/text.definition.d.ts +0 -0
  476. /package/dist/{dts → esm}/text/text.options.d.ts +0 -0
  477. /package/dist/{dts → esm}/text/text.styles.d.ts +0 -0
  478. /package/dist/{dts → esm}/text/text.template.d.ts +0 -0
  479. /package/dist/{dts → esm}/text-input/define.d.ts +0 -0
  480. /package/dist/{dts → esm}/text-input/index.d.ts +0 -0
  481. /package/dist/{dts → esm}/text-input/text-input.base.d.ts +0 -0
  482. /package/dist/{dts → esm}/text-input/text-input.bench.d.ts +0 -0
  483. /package/dist/{dts → esm}/text-input/text-input.d.ts +0 -0
  484. /package/dist/{dts → esm}/text-input/text-input.definition.d.ts +0 -0
  485. /package/dist/{dts → esm}/text-input/text-input.options.d.ts +0 -0
  486. /package/dist/{dts → esm}/text-input/text-input.styles.d.ts +0 -0
  487. /package/dist/{dts → esm}/text-input/text-input.template.d.ts +0 -0
  488. /package/dist/{dts → esm}/textarea/define.d.ts +0 -0
  489. /package/dist/{dts → esm}/textarea/index.d.ts +0 -0
  490. /package/dist/{dts → esm}/textarea/textarea.bench.d.ts +0 -0
  491. /package/dist/{dts → esm}/textarea/textarea.d.ts +0 -0
  492. /package/dist/{dts → esm}/textarea/textarea.definition.d.ts +0 -0
  493. /package/dist/{dts → esm}/textarea/textarea.options.d.ts +0 -0
  494. /package/dist/{dts → esm}/textarea/textarea.styles.d.ts +0 -0
  495. /package/dist/{dts → esm}/textarea/textarea.template.d.ts +0 -0
  496. /package/dist/{dts → esm}/theme/design-tokens.d.ts +0 -0
  497. /package/dist/{dts → esm}/theme/index.d.ts +0 -0
  498. /package/dist/{dts → esm}/theme/set-theme.d.ts +0 -0
  499. /package/dist/{dts → esm}/theme/set-theme.global.bench.d.ts +0 -0
  500. /package/dist/{dts → esm}/theme/set-theme.local.bench.d.ts +0 -0
  501. /package/dist/{dts → esm}/theme/set-theme.shadow.bench.d.ts +0 -0
  502. /package/dist/{dts → esm}/toggle-button/define.d.ts +0 -0
  503. /package/dist/{dts → esm}/toggle-button/index.d.ts +0 -0
  504. /package/dist/{dts → esm}/toggle-button/toggle-button.bench.d.ts +0 -0
  505. /package/dist/{dts → esm}/toggle-button/toggle-button.d.ts +0 -0
  506. /package/dist/{dts → esm}/toggle-button/toggle-button.definition.d.ts +0 -0
  507. /package/dist/{dts → esm}/toggle-button/toggle-button.options.d.ts +0 -0
  508. /package/dist/{dts → esm}/toggle-button/toggle-button.styles.d.ts +0 -0
  509. /package/dist/{dts → esm}/toggle-button/toggle-button.template.d.ts +0 -0
  510. /package/dist/{dts → esm}/tooltip/define.d.ts +0 -0
  511. /package/dist/{dts → esm}/tooltip/index.d.ts +0 -0
  512. /package/dist/{dts → esm}/tooltip/tooltip.d.ts +0 -0
  513. /package/dist/{dts → esm}/tooltip/tooltip.definition.d.ts +0 -0
  514. /package/dist/{dts → esm}/tooltip/tooltip.options.d.ts +0 -0
  515. /package/dist/{dts → esm}/tooltip/tooltip.styles.d.ts +0 -0
  516. /package/dist/{dts → esm}/tooltip/tooltip.template.d.ts +0 -0
  517. /package/dist/{dts → esm}/tree/define.d.ts +0 -0
  518. /package/dist/{dts → esm}/tree/index.d.ts +0 -0
  519. /package/dist/{dts → esm}/tree/tree.bench.d.ts +0 -0
  520. /package/dist/{dts → esm}/tree/tree.definition.d.ts +0 -0
  521. /package/dist/{dts → esm}/tree/tree.styles.d.ts +0 -0
  522. /package/dist/{dts → esm}/tree/tree.template.d.ts +0 -0
  523. /package/dist/{dts → esm}/tree-item/define.d.ts +0 -0
  524. /package/dist/{dts → esm}/tree-item/index.d.ts +0 -0
  525. /package/dist/{dts → esm}/tree-item/tree-item.bench.d.ts +0 -0
  526. /package/dist/{dts → esm}/tree-item/tree-item.definition.d.ts +0 -0
  527. /package/dist/{dts → esm}/tree-item/tree-item.options.d.ts +0 -0
  528. /package/dist/{dts → esm}/tree-item/tree-item.styles.d.ts +0 -0
  529. /package/dist/{dts → esm}/tree-item/tree-item.template.d.ts +0 -0
  530. /package/dist/{dts → esm}/utils/apply-mixins.d.ts +0 -0
  531. /package/dist/{dts → esm}/utils/behaviors/match-media-stylesheet-behavior.d.ts +0 -0
  532. /package/dist/{dts → esm}/utils/benchmark-dependencies/tokens.d.ts +0 -0
  533. /package/dist/{dts → esm}/utils/benchmark-wrapper.d.ts +0 -0
  534. /package/dist/{dts → esm}/utils/converters.d.ts +0 -0
  535. /package/dist/{dts → esm}/utils/direction.d.ts +0 -0
  536. /package/dist/{dts → esm}/utils/display.d.ts +0 -0
  537. /package/dist/{dts → esm}/utils/element-internals.d.ts +0 -0
  538. /package/dist/{dts → esm}/utils/focusable-element.d.ts +0 -0
  539. /package/dist/{dts → esm}/utils/get-initials.d.ts +0 -0
  540. /package/dist/{dts → esm}/utils/index.d.ts +0 -0
  541. /package/dist/{dts → esm}/utils/root-active-element.d.ts +0 -0
  542. /package/dist/{dts → esm}/utils/support.d.ts +0 -0
  543. /package/dist/{dts → esm}/utils/template-helpers.d.ts +0 -0
  544. /package/dist/{dts → esm}/utils/typings.d.ts +0 -0
  545. /package/dist/{dts → esm}/utils/unique-id.d.ts +0 -0
  546. /package/dist/{dts → esm}/utils/whitespace-filter.d.ts +0 -0
@@ -2438,7 +2438,7 @@ function compileNode(context, parentId, node, nodeIndex) {
2438
2438
  // comment
2439
2439
  const parts = Parser.parse(node.data, context.directives);
2440
2440
  if (parts !== null) {
2441
- context.addFactory( /* eslint-disable-next-line @typescript-eslint/no-use-before-define */
2441
+ context.addFactory(/* eslint-disable-next-line @typescript-eslint/no-use-before-define */
2442
2442
  Compiler.aggregate(parts), parentId, nodeId, nodeIndex, null);
2443
2443
  }
2444
2444
  break;
@@ -2872,74 +2872,6 @@ function slotted(propertyOrOptions) {
2872
2872
  return new SlottedDirective(propertyOrOptions);
2873
2873
  }
2874
2874
 
2875
- /**
2876
- * The runtime behavior for child node observation.
2877
- * @public
2878
- */
2879
- class ChildrenDirective extends NodeObservationDirective {
2880
- /**
2881
- * Creates an instance of ChildrenDirective.
2882
- * @param options - The options to use in configuring the child observation behavior.
2883
- */
2884
- constructor(options) {
2885
- super(options);
2886
- this.observerProperty = Symbol();
2887
- this.handleEvent = (mutations, observer) => {
2888
- const target = observer.target;
2889
- this.updateTarget(this.getSource(target), this.computeNodes(target));
2890
- };
2891
- options.childList = true;
2892
- }
2893
- /**
2894
- * Begins observation of the nodes.
2895
- * @param target - The target to observe.
2896
- */
2897
- observe(target) {
2898
- let observer = target[this.observerProperty];
2899
- if (!observer) {
2900
- observer = new MutationObserver(this.handleEvent);
2901
- observer.toJSON = noop;
2902
- target[this.observerProperty] = observer;
2903
- }
2904
- observer.target = target;
2905
- observer.observe(target, this.options);
2906
- }
2907
- /**
2908
- * Disconnects observation of the nodes.
2909
- * @param target - The target to unobserve.
2910
- */
2911
- disconnect(target) {
2912
- const observer = target[this.observerProperty];
2913
- observer.target = null;
2914
- observer.disconnect();
2915
- }
2916
- /**
2917
- * Retrieves the raw nodes that should be assigned to the source property.
2918
- * @param target - The target to get the node to.
2919
- */
2920
- getNodes(target) {
2921
- if ("selector" in this.options) {
2922
- return Array.from(target.querySelectorAll(this.options.selector));
2923
- }
2924
- return Array.from(target.childNodes);
2925
- }
2926
- }
2927
- HTMLDirective.define(ChildrenDirective);
2928
- /**
2929
- * A directive that observes the `childNodes` of an element and updates a property
2930
- * whenever they change.
2931
- * @param propertyOrOptions - The options used to configure child node observation.
2932
- * @public
2933
- */
2934
- function children(propertyOrOptions) {
2935
- if (isString(propertyOrOptions)) {
2936
- propertyOrOptions = {
2937
- property: propertyOrOptions
2938
- };
2939
- }
2940
- return new ChildrenDirective(propertyOrOptions);
2941
- }
2942
-
2943
2875
  const booleanMode = "boolean";
2944
2876
  const reflectMode = "reflect";
2945
2877
  /**
@@ -4011,70 +3943,70 @@ const FASTElement = Object.assign(createFASTElement(HTMLElement), {
4011
3943
  compose
4012
3944
  });
4013
3945
 
4014
- var __defProp$S = Object.defineProperty;
4015
- var __getOwnPropDesc$S = Object.getOwnPropertyDescriptor;
4016
- var __decorateClass$S = (decorators, target, key, kind) => {
4017
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$S(target, key) : target;
3946
+ var __defProp$R = Object.defineProperty;
3947
+ var __getOwnPropDesc$R = Object.getOwnPropertyDescriptor;
3948
+ var __decorateClass$R = (decorators, target, key, kind) => {
3949
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$R(target, key) : target;
4018
3950
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
4019
- if (kind && result) __defProp$S(target, key, result);
3951
+ if (kind && result) __defProp$R(target, key, result);
4020
3952
  return result;
4021
3953
  };
4022
3954
  class ARIAGlobalStatesAndProperties {}
4023
- __decorateClass$S([attr({
3955
+ __decorateClass$R([attr({
4024
3956
  attribute: "aria-atomic"
4025
3957
  })], ARIAGlobalStatesAndProperties.prototype, "ariaAtomic", 2);
4026
- __decorateClass$S([attr({
3958
+ __decorateClass$R([attr({
4027
3959
  attribute: "aria-busy"
4028
3960
  })], ARIAGlobalStatesAndProperties.prototype, "ariaBusy", 2);
4029
- __decorateClass$S([attr({
3961
+ __decorateClass$R([attr({
4030
3962
  attribute: "aria-controls"
4031
3963
  })], ARIAGlobalStatesAndProperties.prototype, "ariaControls", 2);
4032
- __decorateClass$S([attr({
3964
+ __decorateClass$R([attr({
4033
3965
  attribute: "aria-current"
4034
3966
  })], ARIAGlobalStatesAndProperties.prototype, "ariaCurrent", 2);
4035
- __decorateClass$S([attr({
3967
+ __decorateClass$R([attr({
4036
3968
  attribute: "aria-describedby"
4037
3969
  })], ARIAGlobalStatesAndProperties.prototype, "ariaDescribedby", 2);
4038
- __decorateClass$S([attr({
3970
+ __decorateClass$R([attr({
4039
3971
  attribute: "aria-details"
4040
3972
  })], ARIAGlobalStatesAndProperties.prototype, "ariaDetails", 2);
4041
- __decorateClass$S([attr({
3973
+ __decorateClass$R([attr({
4042
3974
  attribute: "aria-disabled"
4043
3975
  })], ARIAGlobalStatesAndProperties.prototype, "ariaDisabled", 2);
4044
- __decorateClass$S([attr({
3976
+ __decorateClass$R([attr({
4045
3977
  attribute: "aria-errormessage"
4046
3978
  })], ARIAGlobalStatesAndProperties.prototype, "ariaErrormessage", 2);
4047
- __decorateClass$S([attr({
3979
+ __decorateClass$R([attr({
4048
3980
  attribute: "aria-flowto"
4049
3981
  })], ARIAGlobalStatesAndProperties.prototype, "ariaFlowto", 2);
4050
- __decorateClass$S([attr({
3982
+ __decorateClass$R([attr({
4051
3983
  attribute: "aria-haspopup"
4052
3984
  })], ARIAGlobalStatesAndProperties.prototype, "ariaHaspopup", 2);
4053
- __decorateClass$S([attr({
3985
+ __decorateClass$R([attr({
4054
3986
  attribute: "aria-hidden"
4055
3987
  })], ARIAGlobalStatesAndProperties.prototype, "ariaHidden", 2);
4056
- __decorateClass$S([attr({
3988
+ __decorateClass$R([attr({
4057
3989
  attribute: "aria-invalid"
4058
3990
  })], ARIAGlobalStatesAndProperties.prototype, "ariaInvalid", 2);
4059
- __decorateClass$S([attr({
3991
+ __decorateClass$R([attr({
4060
3992
  attribute: "aria-keyshortcuts"
4061
3993
  })], ARIAGlobalStatesAndProperties.prototype, "ariaKeyshortcuts", 2);
4062
- __decorateClass$S([attr({
3994
+ __decorateClass$R([attr({
4063
3995
  attribute: "aria-label"
4064
3996
  })], ARIAGlobalStatesAndProperties.prototype, "ariaLabel", 2);
4065
- __decorateClass$S([attr({
3997
+ __decorateClass$R([attr({
4066
3998
  attribute: "aria-labelledby"
4067
3999
  })], ARIAGlobalStatesAndProperties.prototype, "ariaLabelledby", 2);
4068
- __decorateClass$S([attr({
4000
+ __decorateClass$R([attr({
4069
4001
  attribute: "aria-live"
4070
4002
  })], ARIAGlobalStatesAndProperties.prototype, "ariaLive", 2);
4071
- __decorateClass$S([attr({
4003
+ __decorateClass$R([attr({
4072
4004
  attribute: "aria-owns"
4073
4005
  })], ARIAGlobalStatesAndProperties.prototype, "ariaOwns", 2);
4074
- __decorateClass$S([attr({
4006
+ __decorateClass$R([attr({
4075
4007
  attribute: "aria-relevant"
4076
4008
  })], ARIAGlobalStatesAndProperties.prototype, "ariaRelevant", 2);
4077
- __decorateClass$S([attr({
4009
+ __decorateClass$R([attr({
4078
4010
  attribute: "aria-roledescription"
4079
4011
  })], ARIAGlobalStatesAndProperties.prototype, "ariaRoledescription", 2);
4080
4012
 
@@ -4341,12 +4273,12 @@ function applyMixins(derivedCtor, ...baseCtors) {
4341
4273
  });
4342
4274
  }
4343
4275
 
4344
- var __defProp$R = Object.defineProperty;
4345
- var __getOwnPropDesc$R = Object.getOwnPropertyDescriptor;
4346
- var __decorateClass$R = (decorators, target, key, kind) => {
4347
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$R(target, key) : target;
4276
+ var __defProp$Q = Object.defineProperty;
4277
+ var __getOwnPropDesc$Q = Object.getOwnPropertyDescriptor;
4278
+ var __decorateClass$Q = (decorators, target, key, kind) => {
4279
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$Q(target, key) : target;
4348
4280
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
4349
- if (kind && result) __defProp$R(target, key, result);
4281
+ if (kind && result) __defProp$Q(target, key, result);
4350
4282
  return result;
4351
4283
  };
4352
4284
  class BaseAccordionItem extends FASTElement {
@@ -4364,25 +4296,25 @@ class BaseAccordionItem extends FASTElement {
4364
4296
  this.id = uniqueId$1("accordion-");
4365
4297
  }
4366
4298
  }
4367
- __decorateClass$R([attr({
4299
+ __decorateClass$Q([attr({
4368
4300
  attribute: "heading-level",
4369
4301
  mode: "fromView",
4370
4302
  converter: nullableNumberConverter
4371
4303
  })], BaseAccordionItem.prototype, "headinglevel", 2);
4372
- __decorateClass$R([attr({
4304
+ __decorateClass$Q([attr({
4373
4305
  mode: "boolean"
4374
4306
  })], BaseAccordionItem.prototype, "expanded", 2);
4375
- __decorateClass$R([attr({
4307
+ __decorateClass$Q([attr({
4376
4308
  mode: "boolean"
4377
4309
  })], BaseAccordionItem.prototype, "disabled", 2);
4378
- __decorateClass$R([attr], BaseAccordionItem.prototype, "id", 2);
4310
+ __decorateClass$Q([attr], BaseAccordionItem.prototype, "id", 2);
4379
4311
 
4380
- var __defProp$Q = Object.defineProperty;
4381
- var __getOwnPropDesc$Q = Object.getOwnPropertyDescriptor;
4382
- var __decorateClass$Q = (decorators, target, key, kind) => {
4383
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$Q(target, key) : target;
4312
+ var __defProp$P = Object.defineProperty;
4313
+ var __getOwnPropDesc$P = Object.getOwnPropertyDescriptor;
4314
+ var __decorateClass$P = (decorators, target, key, kind) => {
4315
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$P(target, key) : target;
4384
4316
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
4385
- if (kind && result) __defProp$Q(target, key, result);
4317
+ if (kind && result) __defProp$P(target, key, result);
4386
4318
  return result;
4387
4319
  };
4388
4320
  class AccordionItem extends BaseAccordionItem {
@@ -4391,11 +4323,11 @@ class AccordionItem extends BaseAccordionItem {
4391
4323
  this.block = false;
4392
4324
  }
4393
4325
  }
4394
- __decorateClass$Q([attr], AccordionItem.prototype, "size", 2);
4395
- __decorateClass$Q([attr({
4326
+ __decorateClass$P([attr], AccordionItem.prototype, "size", 2);
4327
+ __decorateClass$P([attr({
4396
4328
  attribute: "marker-position"
4397
4329
  })], AccordionItem.prototype, "markerPosition", 2);
4398
- __decorateClass$Q([attr({
4330
+ __decorateClass$P([attr({
4399
4331
  mode: "boolean"
4400
4332
  })], AccordionItem.prototype, "block", 2);
4401
4333
  applyMixins(AccordionItem, StartEnd);
@@ -4509,7 +4441,7 @@ const colorPaletteYellowBackground3 = "var(--colorPaletteYellowBackground3)";
4509
4441
  const colorPaletteYellowBorder1 = "var(--colorPaletteYellowBorder1)";
4510
4442
  const colorPaletteYellowForeground2 = "var(--colorPaletteYellowForeground2)";
4511
4443
  const colorPaletteMarigoldBackground2 = "var(--colorPaletteMarigoldBackground2)";
4512
- const colorPaletteMarigoldBackground3 = "var(--colorPaletteMarigoldBackground3)";
4444
+ const colorPaletteMarigoldBorderActive = "var(--colorPaletteMarigoldBorderActive)";
4513
4445
  const colorPaletteMarigoldForeground2 = "var(--colorPaletteMarigoldForeground2)";
4514
4446
  const colorPaletteAnchorBackground2 = "var(--colorPaletteAnchorBackground2)";
4515
4447
  const colorPaletteAnchorForeground2 = "var(--colorPaletteAnchorForeground2)";
@@ -4700,12 +4632,12 @@ const AccordionExpandMode = {
4700
4632
  multi: "multi"
4701
4633
  };
4702
4634
 
4703
- var __defProp$P = Object.defineProperty;
4704
- var __getOwnPropDesc$P = Object.getOwnPropertyDescriptor;
4705
- var __decorateClass$P = (decorators, target, key, kind) => {
4706
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$P(target, key) : target;
4635
+ var __defProp$O = Object.defineProperty;
4636
+ var __getOwnPropDesc$O = Object.getOwnPropertyDescriptor;
4637
+ var __decorateClass$O = (decorators, target, key, kind) => {
4638
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$O(target, key) : target;
4707
4639
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
4708
- if (kind && result) __defProp$P(target, key, result);
4640
+ if (kind && result) __defProp$O(target, key, result);
4709
4641
  return result;
4710
4642
  };
4711
4643
  class Accordion extends FASTElement {
@@ -4727,10 +4659,8 @@ class Accordion extends FASTElement {
4727
4659
  children.forEach(child => Observable.getNotifier(child).subscribe(this, "disabled"));
4728
4660
  this.accordionItems = children.filter(child => !child.hasAttribute("disabled"));
4729
4661
  this.accordionItems.forEach((item, index) => {
4730
- if (item instanceof BaseAccordionItem) {
4731
- item.addEventListener("click", this.expandedChangedHandler);
4732
- Observable.getNotifier(item).subscribe(this, "expanded");
4733
- }
4662
+ item.addEventListener("click", this.expandedChangedHandler);
4663
+ Observable.getNotifier(item).subscribe(this, "expanded");
4734
4664
  });
4735
4665
  if (this.isSingleExpandMode()) {
4736
4666
  const expandedItem = this.findExpandedItem();
@@ -4844,10 +4774,10 @@ class Accordion extends FASTElement {
4844
4774
  });
4845
4775
  }
4846
4776
  }
4847
- __decorateClass$P([attr({
4777
+ __decorateClass$O([attr({
4848
4778
  attribute: "expand-mode"
4849
4779
  })], Accordion.prototype, "expandmode", 2);
4850
- __decorateClass$P([observable], Accordion.prototype, "slottedAccordionItems", 2);
4780
+ __decorateClass$O([observable], Accordion.prototype, "slottedAccordionItems", 2);
4851
4781
 
4852
4782
  const styles$F = css`
4853
4783
  ${display("flex")}
@@ -4943,12 +4873,12 @@ const AnchorAttributes = {
4943
4873
  type: "type"
4944
4874
  };
4945
4875
 
4946
- var __defProp$O = Object.defineProperty;
4947
- var __getOwnPropDesc$O = Object.getOwnPropertyDescriptor;
4948
- var __decorateClass$O = (decorators, target, key, kind) => {
4949
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$O(target, key) : target;
4876
+ var __defProp$N = Object.defineProperty;
4877
+ var __getOwnPropDesc$N = Object.getOwnPropertyDescriptor;
4878
+ var __decorateClass$N = (decorators, target, key, kind) => {
4879
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$N(target, key) : target;
4950
4880
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
4951
- if (kind && result) __defProp$O(target, key, result);
4881
+ if (kind && result) __defProp$N(target, key, result);
4952
4882
  return result;
4953
4883
  };
4954
4884
  class BaseAnchor extends FASTElement {
@@ -5056,21 +4986,21 @@ class BaseAnchor extends FASTElement {
5056
4986
  return proxy;
5057
4987
  }
5058
4988
  }
5059
- __decorateClass$O([attr], BaseAnchor.prototype, "download", 2);
5060
- __decorateClass$O([attr], BaseAnchor.prototype, "href", 2);
5061
- __decorateClass$O([attr], BaseAnchor.prototype, "hreflang", 2);
5062
- __decorateClass$O([attr], BaseAnchor.prototype, "ping", 2);
5063
- __decorateClass$O([attr], BaseAnchor.prototype, "referrerpolicy", 2);
5064
- __decorateClass$O([attr], BaseAnchor.prototype, "rel", 2);
5065
- __decorateClass$O([attr], BaseAnchor.prototype, "target", 2);
5066
- __decorateClass$O([attr], BaseAnchor.prototype, "type", 2);
4989
+ __decorateClass$N([attr], BaseAnchor.prototype, "download", 2);
4990
+ __decorateClass$N([attr], BaseAnchor.prototype, "href", 2);
4991
+ __decorateClass$N([attr], BaseAnchor.prototype, "hreflang", 2);
4992
+ __decorateClass$N([attr], BaseAnchor.prototype, "ping", 2);
4993
+ __decorateClass$N([attr], BaseAnchor.prototype, "referrerpolicy", 2);
4994
+ __decorateClass$N([attr], BaseAnchor.prototype, "rel", 2);
4995
+ __decorateClass$N([attr], BaseAnchor.prototype, "target", 2);
4996
+ __decorateClass$N([attr], BaseAnchor.prototype, "type", 2);
5067
4997
 
5068
- var __defProp$N = Object.defineProperty;
5069
- var __getOwnPropDesc$N = Object.getOwnPropertyDescriptor;
5070
- var __decorateClass$N = (decorators, target, key, kind) => {
5071
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$N(target, key) : target;
4998
+ var __defProp$M = Object.defineProperty;
4999
+ var __getOwnPropDesc$M = Object.getOwnPropertyDescriptor;
5000
+ var __decorateClass$M = (decorators, target, key, kind) => {
5001
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$M(target, key) : target;
5072
5002
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
5073
- if (kind && result) __defProp$N(target, key, result);
5003
+ if (kind && result) __defProp$M(target, key, result);
5074
5004
  return result;
5075
5005
  };
5076
5006
  class AnchorButton extends BaseAnchor {
@@ -5111,10 +5041,10 @@ class AnchorButton extends BaseAnchor {
5111
5041
  toggleState(this.elementInternals, "icon", !!next);
5112
5042
  }
5113
5043
  }
5114
- __decorateClass$N([attr], AnchorButton.prototype, "appearance", 2);
5115
- __decorateClass$N([attr], AnchorButton.prototype, "shape", 2);
5116
- __decorateClass$N([attr], AnchorButton.prototype, "size", 2);
5117
- __decorateClass$N([attr({
5044
+ __decorateClass$M([attr], AnchorButton.prototype, "appearance", 2);
5045
+ __decorateClass$M([attr], AnchorButton.prototype, "shape", 2);
5046
+ __decorateClass$M([attr], AnchorButton.prototype, "size", 2);
5047
+ __decorateClass$M([attr({
5118
5048
  attribute: "icon-only",
5119
5049
  mode: "boolean"
5120
5050
  })], AnchorButton.prototype, "iconOnly", 2);
@@ -5190,12 +5120,12 @@ function getInitials(displayName, isRtl, options) {
5190
5120
  return getInitialsLatin(displayName, isRtl, options?.firstInitialOnly);
5191
5121
  }
5192
5122
 
5193
- var __defProp$M = Object.defineProperty;
5194
- var __getOwnPropDesc$M = Object.getOwnPropertyDescriptor;
5195
- var __decorateClass$M = (decorators, target, key, kind) => {
5196
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$M(target, key) : target;
5123
+ var __defProp$L = Object.defineProperty;
5124
+ var __getOwnPropDesc$L = Object.getOwnPropertyDescriptor;
5125
+ var __decorateClass$L = (decorators, target, key, kind) => {
5126
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$L(target, key) : target;
5197
5127
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
5198
- if (kind && result) __defProp$M(target, key, result);
5128
+ if (kind && result) __defProp$L(target, key, result);
5199
5129
  return result;
5200
5130
  };
5201
5131
  class BaseAvatar extends FASTElement {
@@ -5209,9 +5139,43 @@ class BaseAvatar extends FASTElement {
5209
5139
  this.elementInternals = this.attachInternals();
5210
5140
  this.elementInternals.role = "img";
5211
5141
  }
5142
+ connectedCallback() {
5143
+ super.connectedCallback();
5144
+ this.slotchangeHandler();
5145
+ }
5146
+ disconnectedCallback() {
5147
+ this.abortSignal?.abort();
5148
+ this.abortSignal = void 0;
5149
+ super.disconnectedCallback();
5150
+ }
5151
+ /**
5152
+ * Removes any empty text nodes from the default slot when the slotted content changes.
5153
+ *
5154
+ * @param e - The event object
5155
+ * @internal
5156
+ */
5157
+ slotchangeHandler() {
5158
+ this.normalize();
5159
+ const elements = this.defaultSlot.assignedElements();
5160
+ if (!elements.length && !this.innerText.trim()) {
5161
+ const nodes = this.defaultSlot.assignedNodes();
5162
+ nodes.filter(node => node.nodeType === Node.TEXT_NODE).forEach(node => {
5163
+ this.removeChild(node);
5164
+ });
5165
+ }
5166
+ Updates.enqueue(() => {
5167
+ if (!this.abortSignal || this.abortSignal.signal.aborted) {
5168
+ this.abortSignal = new AbortController();
5169
+ }
5170
+ this.defaultSlot.addEventListener("slotchange", () => this.slotchangeHandler(), {
5171
+ once: true,
5172
+ signal: this.abortSignal.signal
5173
+ });
5174
+ });
5175
+ }
5212
5176
  }
5213
- __decorateClass$M([attr], BaseAvatar.prototype, "name", 2);
5214
- __decorateClass$M([attr], BaseAvatar.prototype, "initials", 2);
5177
+ __decorateClass$L([attr], BaseAvatar.prototype, "name", 2);
5178
+ __decorateClass$L([attr], BaseAvatar.prototype, "initials", 2);
5215
5179
 
5216
5180
  const AvatarNamedColor = {
5217
5181
  darkRed: "dark-red",
@@ -5252,12 +5216,12 @@ const AvatarColor = {
5252
5216
  ...AvatarNamedColor
5253
5217
  };
5254
5218
 
5255
- var __defProp$L = Object.defineProperty;
5256
- var __getOwnPropDesc$L = Object.getOwnPropertyDescriptor;
5257
- var __decorateClass$L = (decorators, target, key, kind) => {
5258
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$L(target, key) : target;
5219
+ var __defProp$K = Object.defineProperty;
5220
+ var __getOwnPropDesc$K = Object.getOwnPropertyDescriptor;
5221
+ var __decorateClass$K = (decorators, target, key, kind) => {
5222
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$K(target, key) : target;
5259
5223
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
5260
- if (kind && result) __defProp$L(target, key, result);
5224
+ if (kind && result) __defProp$K(target, key, result);
5261
5225
  return result;
5262
5226
  };
5263
5227
  const _Avatar = class _Avatar extends BaseAvatar {
@@ -5284,7 +5248,7 @@ const _Avatar = class _Avatar extends BaseAvatar {
5284
5248
  return;
5285
5249
  }
5286
5250
  const size = this.size ?? 32;
5287
- return this.initials ?? getInitials(this.name, window.getComputedStyle(this).direction === "rtl", {
5251
+ return this.initials || getInitials(this.name, window.getComputedStyle(this).direction === "rtl", {
5288
5252
  firstInitialOnly: size <= 16
5289
5253
  });
5290
5254
  }
@@ -5312,14 +5276,14 @@ const _Avatar = class _Avatar extends BaseAvatar {
5312
5276
  * An array of the available Avatar named colors
5313
5277
  */
5314
5278
  _Avatar.colors = Object.values(AvatarNamedColor);
5315
- __decorateClass$L([attr], _Avatar.prototype, "active", 2);
5316
- __decorateClass$L([attr], _Avatar.prototype, "shape", 2);
5317
- __decorateClass$L([attr], _Avatar.prototype, "appearance", 2);
5318
- __decorateClass$L([attr({
5279
+ __decorateClass$K([attr], _Avatar.prototype, "active", 2);
5280
+ __decorateClass$K([attr], _Avatar.prototype, "shape", 2);
5281
+ __decorateClass$K([attr], _Avatar.prototype, "appearance", 2);
5282
+ __decorateClass$K([attr({
5319
5283
  converter: nullableNumberConverter
5320
5284
  })], _Avatar.prototype, "size", 2);
5321
- __decorateClass$L([attr], _Avatar.prototype, "color", 2);
5322
- __decorateClass$L([attr({
5285
+ __decorateClass$K([attr], _Avatar.prototype, "color", 2);
5286
+ __decorateClass$K([attr({
5323
5287
  attribute: "color-id"
5324
5288
  })], _Avatar.prototype, "colorId", 2);
5325
5289
  let Avatar = _Avatar;
@@ -5349,7 +5313,7 @@ const styles$C = css`
5349
5313
 
5350
5314
  const defaultIconTemplate = html`<svg width="1em" height="1em" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" class="default-icon" fill="currentcolor" aria-hidden="true"><path d="M10 2a4 4 0 100 8 4 4 0 000-8zM7 6a3 3 0 116 0 3 3 0 01-6 0zm-2 5a2 2 0 00-2 2c0 1.7.83 2.97 2.13 3.8A9.14 9.14 0 0010 18c1.85 0 3.58-.39 4.87-1.2A4.35 4.35 0 0017 13a2 2 0 00-2-2H5zm-1 2a1 1 0 011-1h10a1 1 0 011 1c0 1.3-.62 2.28-1.67 2.95A8.16 8.16 0 0110 17a8.16 8.16 0 01-4.33-1.05A3.36 3.36 0 014 13z"></path></svg>`;
5351
5315
  function avatarTemplate() {
5352
- return html`<slot>${x => x.name || x.initials ? x.generateInitials() : defaultIconTemplate}</slot><slot name="badge"></slot>`;
5316
+ return html`<slot ${ref("defaultSlot")}>${x => x.name || x.initials ? x.generateInitials() : defaultIconTemplate}</slot><slot name="badge"></slot>`;
5353
5317
  }
5354
5318
  const template$E = avatarTemplate();
5355
5319
 
@@ -5378,12 +5342,12 @@ const BadgeColor = {
5378
5342
  warning: "warning"
5379
5343
  };
5380
5344
 
5381
- var __defProp$K = Object.defineProperty;
5382
- var __getOwnPropDesc$K = Object.getOwnPropertyDescriptor;
5383
- var __decorateClass$K = (decorators, target, key, kind) => {
5384
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$K(target, key) : target;
5345
+ var __defProp$J = Object.defineProperty;
5346
+ var __getOwnPropDesc$J = Object.getOwnPropertyDescriptor;
5347
+ var __decorateClass$J = (decorators, target, key, kind) => {
5348
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$J(target, key) : target;
5385
5349
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
5386
- if (kind && result) __defProp$K(target, key, result);
5350
+ if (kind && result) __defProp$J(target, key, result);
5387
5351
  return result;
5388
5352
  };
5389
5353
  class Badge extends FASTElement {
@@ -5393,10 +5357,10 @@ class Badge extends FASTElement {
5393
5357
  this.color = BadgeColor.brand;
5394
5358
  }
5395
5359
  }
5396
- __decorateClass$K([attr], Badge.prototype, "appearance", 2);
5397
- __decorateClass$K([attr], Badge.prototype, "color", 2);
5398
- __decorateClass$K([attr], Badge.prototype, "shape", 2);
5399
- __decorateClass$K([attr], Badge.prototype, "size", 2);
5360
+ __decorateClass$J([attr], Badge.prototype, "appearance", 2);
5361
+ __decorateClass$J([attr], Badge.prototype, "color", 2);
5362
+ __decorateClass$J([attr], Badge.prototype, "shape", 2);
5363
+ __decorateClass$J([attr], Badge.prototype, "size", 2);
5400
5364
  applyMixins(Badge, StartEnd);
5401
5365
 
5402
5366
  const badgeBaseStyles = css.partial`
@@ -5773,19 +5737,19 @@ const definition$D = Badge.compose({
5773
5737
 
5774
5738
  definition$D.define(FluentDesignSystem.registry);
5775
5739
 
5776
- var __defProp$J = Object.defineProperty;
5777
- var __getOwnPropDesc$J = Object.getOwnPropertyDescriptor;
5778
- var __decorateClass$J = (decorators, target, key, kind) => {
5779
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$J(target, key) : target;
5740
+ var __defProp$I = Object.defineProperty;
5741
+ var __getOwnPropDesc$I = Object.getOwnPropertyDescriptor;
5742
+ var __decorateClass$I = (decorators, target, key, kind) => {
5743
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$I(target, key) : target;
5780
5744
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
5781
- if (kind && result) __defProp$J(target, key, result);
5745
+ if (kind && result) __defProp$I(target, key, result);
5782
5746
  return result;
5783
5747
  };
5784
5748
  class BaseButton extends FASTElement {
5785
5749
  constructor() {
5786
5750
  super();
5751
+ this.disabled = false;
5787
5752
  this.disabledFocusable = false;
5788
- this.tabIndex = 0;
5789
5753
  /**
5790
5754
  * The internal {@link https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
5791
5755
  *
@@ -5794,6 +5758,16 @@ class BaseButton extends FASTElement {
5794
5758
  this.elementInternals = this.attachInternals();
5795
5759
  this.elementInternals.role = "button";
5796
5760
  }
5761
+ disabledChanged() {
5762
+ if (!this.$fastController.isConnected) {
5763
+ return;
5764
+ }
5765
+ if (this.disabled) {
5766
+ this.removeAttribute("tabindex");
5767
+ } else {
5768
+ this.tabIndex = Number(this.getAttribute("tabindex") ?? 0) < 0 ? -1 : 0;
5769
+ }
5770
+ }
5797
5771
  /**
5798
5772
  * Sets the element's internal disabled state when the element is focusable while disabled.
5799
5773
  *
@@ -5852,6 +5826,7 @@ class BaseButton extends FASTElement {
5852
5826
  connectedCallback() {
5853
5827
  super.connectedCallback();
5854
5828
  this.elementInternals.ariaDisabled = `${!!this.disabledFocusable}`;
5829
+ this.disabledChanged();
5855
5830
  }
5856
5831
  /**
5857
5832
  * This fallback creates a new slot, then creates a submit button to mirror the custom element's
@@ -5961,7 +5936,7 @@ class BaseButton extends FASTElement {
5961
5936
  if (!this.elementInternals.form || this.disabled || this.type !== ButtonType.submit) {
5962
5937
  return;
5963
5938
  }
5964
- if (!this.name && !this.formAction && !this.formEnctype && !this.form && !this.formMethod && !this.formNoValidate && !this.formTarget) {
5939
+ if (!this.name && !this.formAction && !this.formEnctype && !this.formAttribute && !this.formMethod && !this.formNoValidate && !this.formTarget) {
5965
5940
  this.elementInternals.form.requestSubmit();
5966
5941
  return;
5967
5942
  }
@@ -5982,51 +5957,46 @@ class BaseButton extends FASTElement {
5982
5957
  * @public
5983
5958
  */
5984
5959
  BaseButton.formAssociated = true;
5985
- __decorateClass$J([attr({
5960
+ __decorateClass$I([attr({
5986
5961
  mode: "boolean"
5987
5962
  })], BaseButton.prototype, "autofocus", 2);
5988
- __decorateClass$J([observable], BaseButton.prototype, "defaultSlottedContent", 2);
5989
- __decorateClass$J([attr({
5963
+ __decorateClass$I([observable], BaseButton.prototype, "defaultSlottedContent", 2);
5964
+ __decorateClass$I([attr({
5990
5965
  mode: "boolean"
5991
5966
  })], BaseButton.prototype, "disabled", 2);
5992
- __decorateClass$J([attr({
5967
+ __decorateClass$I([attr({
5993
5968
  attribute: "disabled-focusable",
5994
5969
  mode: "boolean"
5995
5970
  })], BaseButton.prototype, "disabledFocusable", 2);
5996
- __decorateClass$J([attr({
5997
- attribute: "tabindex",
5998
- mode: "fromView",
5999
- converter: nullableNumberConverter
6000
- })], BaseButton.prototype, "tabIndex", 2);
6001
- __decorateClass$J([attr({
5971
+ __decorateClass$I([attr({
6002
5972
  attribute: "formaction"
6003
5973
  })], BaseButton.prototype, "formAction", 2);
6004
- __decorateClass$J([attr({
5974
+ __decorateClass$I([attr({
6005
5975
  attribute: "form"
6006
5976
  })], BaseButton.prototype, "formAttribute", 2);
6007
- __decorateClass$J([attr({
5977
+ __decorateClass$I([attr({
6008
5978
  attribute: "formenctype"
6009
5979
  })], BaseButton.prototype, "formEnctype", 2);
6010
- __decorateClass$J([attr({
5980
+ __decorateClass$I([attr({
6011
5981
  attribute: "formmethod"
6012
5982
  })], BaseButton.prototype, "formMethod", 2);
6013
- __decorateClass$J([attr({
5983
+ __decorateClass$I([attr({
6014
5984
  attribute: "formnovalidate",
6015
5985
  mode: "boolean"
6016
5986
  })], BaseButton.prototype, "formNoValidate", 2);
6017
- __decorateClass$J([attr({
5987
+ __decorateClass$I([attr({
6018
5988
  attribute: "formtarget"
6019
5989
  })], BaseButton.prototype, "formTarget", 2);
6020
- __decorateClass$J([attr], BaseButton.prototype, "name", 2);
6021
- __decorateClass$J([attr], BaseButton.prototype, "type", 2);
6022
- __decorateClass$J([attr], BaseButton.prototype, "value", 2);
5990
+ __decorateClass$I([attr], BaseButton.prototype, "name", 2);
5991
+ __decorateClass$I([attr], BaseButton.prototype, "type", 2);
5992
+ __decorateClass$I([attr], BaseButton.prototype, "value", 2);
6023
5993
 
6024
- var __defProp$I = Object.defineProperty;
6025
- var __getOwnPropDesc$I = Object.getOwnPropertyDescriptor;
6026
- var __decorateClass$I = (decorators, target, key, kind) => {
6027
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$I(target, key) : target;
5994
+ var __defProp$H = Object.defineProperty;
5995
+ var __getOwnPropDesc$H = Object.getOwnPropertyDescriptor;
5996
+ var __decorateClass$H = (decorators, target, key, kind) => {
5997
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$H(target, key) : target;
6028
5998
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
6029
- if (kind && result) __defProp$I(target, key, result);
5999
+ if (kind && result) __defProp$H(target, key, result);
6030
6000
  return result;
6031
6001
  };
6032
6002
  class Button extends BaseButton {
@@ -6035,17 +6005,17 @@ class Button extends BaseButton {
6035
6005
  this.iconOnly = false;
6036
6006
  }
6037
6007
  }
6038
- __decorateClass$I([attr], Button.prototype, "appearance", 2);
6039
- __decorateClass$I([attr], Button.prototype, "shape", 2);
6040
- __decorateClass$I([attr], Button.prototype, "size", 2);
6041
- __decorateClass$I([attr({
6008
+ __decorateClass$H([attr], Button.prototype, "appearance", 2);
6009
+ __decorateClass$H([attr], Button.prototype, "shape", 2);
6010
+ __decorateClass$H([attr], Button.prototype, "size", 2);
6011
+ __decorateClass$H([attr({
6042
6012
  attribute: "icon-only",
6043
6013
  mode: "boolean"
6044
6014
  })], Button.prototype, "iconOnly", 2);
6045
6015
  applyMixins(Button, StartEnd);
6046
6016
 
6047
6017
  function buttonTemplate$1(options = {}) {
6048
- return html`<template tabindex="${x => x.disabled ? null : x.tabIndex ?? 0}" @click="${(x, c) => x.clickHandler(c.event)}" @keypress="${(x, c) => x.keypressHandler(c.event)}">${startSlotTemplate(options)}<span class="content" part="content"><slot ${slotted("defaultSlottedContent")}></slot></span>${endSlotTemplate(options)}</template>`;
6018
+ return html`<template @click="${(x, c) => x.clickHandler(c.event)}" @keypress="${(x, c) => x.keypressHandler(c.event)}">${startSlotTemplate(options)}<span class="content" part="content"><slot ${slotted("defaultSlottedContent")}></slot></span>${endSlotTemplate(options)}</template>`;
6049
6019
  }
6050
6020
  const template$C = buttonTemplate$1();
6051
6021
 
@@ -6057,18 +6027,26 @@ const definition$C = Button.compose({
6057
6027
 
6058
6028
  definition$C.define(FluentDesignSystem.registry);
6059
6029
 
6060
- var __defProp$H = Object.defineProperty;
6061
- var __getOwnPropDesc$H = Object.getOwnPropertyDescriptor;
6062
- var __decorateClass$H = (decorators, target, key, kind) => {
6063
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$H(target, key) : target;
6030
+ var __defProp$G = Object.defineProperty;
6031
+ var __getOwnPropDesc$G = Object.getOwnPropertyDescriptor;
6032
+ var __decorateClass$G = (decorators, target, key, kind) => {
6033
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$G(target, key) : target;
6064
6034
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
6065
- if (kind && result) __defProp$H(target, key, result);
6035
+ if (kind && result) __defProp$G(target, key, result);
6066
6036
  return result;
6067
6037
  };
6068
6038
  class BaseCheckbox extends FASTElement {
6069
6039
  constructor() {
6070
6040
  super(...arguments);
6071
6041
  this.initialValue = "on";
6042
+ /**
6043
+ * Tracks whether the space key was pressed down while the checkbox was focused.
6044
+ * This is used to prevent inadvertently checking a required, unchecked checkbox when the space key is pressed on a
6045
+ * submit button and field validation is triggered.
6046
+ *
6047
+ * @internal
6048
+ */
6049
+ this._keydownPressed = false;
6072
6050
  /**
6073
6051
  * Indicates that the checked state has been changed by the user.
6074
6052
  *
@@ -6117,6 +6095,11 @@ class BaseCheckbox extends FASTElement {
6117
6095
  * @internal
6118
6096
  */
6119
6097
  disabledChanged(prev, next) {
6098
+ if (this.disabled) {
6099
+ this.removeAttribute("tabindex");
6100
+ } else {
6101
+ this.tabIndex = Number(this.getAttribute("tabindex") ?? 0) < 0 ? -1 : 0;
6102
+ }
6120
6103
  this.elementInternals.ariaDisabled = this.disabled ? "true" : "false";
6121
6104
  toggleState(this.elementInternals, "disabled", this.disabled);
6122
6105
  }
@@ -6272,6 +6255,7 @@ class BaseCheckbox extends FASTElement {
6272
6255
  }
6273
6256
  connectedCallback() {
6274
6257
  super.connectedCallback();
6258
+ this.disabled = !!this.disabledAttribute;
6275
6259
  this.setAriaChecked();
6276
6260
  this.setValidity();
6277
6261
  }
@@ -6287,7 +6271,8 @@ class BaseCheckbox extends FASTElement {
6287
6271
  return true;
6288
6272
  }
6289
6273
  /**
6290
- * Prevents scrolling when the user presses the space key.
6274
+ * Prevents scrolling when the user presses the space key, and sets a flag to indicate that the space key was pressed
6275
+ * down while the checkbox was focused.
6291
6276
  *
6292
6277
  * @param e - the event object
6293
6278
  * @internal
@@ -6296,6 +6281,7 @@ class BaseCheckbox extends FASTElement {
6296
6281
  if (e.key !== " ") {
6297
6282
  return true;
6298
6283
  }
6284
+ this._keydownPressed = true;
6299
6285
  }
6300
6286
  /**
6301
6287
  * Toggles the checked state when the user releases the space key.
@@ -6304,9 +6290,10 @@ class BaseCheckbox extends FASTElement {
6304
6290
  * @internal
6305
6291
  */
6306
6292
  keyupHandler(e) {
6307
- if (e.key !== " ") {
6293
+ if (!this._keydownPressed || e.key !== " ") {
6308
6294
  return true;
6309
6295
  }
6296
+ this._keydownPressed = false;
6310
6297
  this.click();
6311
6298
  }
6312
6299
  /**
@@ -6396,36 +6383,36 @@ class BaseCheckbox extends FASTElement {
6396
6383
  * @public
6397
6384
  */
6398
6385
  BaseCheckbox.formAssociated = true;
6399
- __decorateClass$H([attr({
6386
+ __decorateClass$G([attr({
6400
6387
  mode: "boolean"
6401
6388
  })], BaseCheckbox.prototype, "autofocus", 2);
6402
- __decorateClass$H([observable], BaseCheckbox.prototype, "disabled", 2);
6403
- __decorateClass$H([attr({
6389
+ __decorateClass$G([observable], BaseCheckbox.prototype, "disabled", 2);
6390
+ __decorateClass$G([attr({
6404
6391
  attribute: "disabled",
6405
6392
  mode: "boolean"
6406
6393
  })], BaseCheckbox.prototype, "disabledAttribute", 2);
6407
- __decorateClass$H([attr({
6394
+ __decorateClass$G([attr({
6408
6395
  attribute: "form"
6409
6396
  })], BaseCheckbox.prototype, "formAttribute", 2);
6410
- __decorateClass$H([attr({
6397
+ __decorateClass$G([attr({
6411
6398
  attribute: "checked",
6412
6399
  mode: "boolean"
6413
6400
  })], BaseCheckbox.prototype, "initialChecked", 2);
6414
- __decorateClass$H([attr({
6401
+ __decorateClass$G([attr({
6415
6402
  attribute: "value",
6416
6403
  mode: "fromView"
6417
6404
  })], BaseCheckbox.prototype, "initialValue", 2);
6418
- __decorateClass$H([attr], BaseCheckbox.prototype, "name", 2);
6419
- __decorateClass$H([attr({
6405
+ __decorateClass$G([attr], BaseCheckbox.prototype, "name", 2);
6406
+ __decorateClass$G([attr({
6420
6407
  mode: "boolean"
6421
6408
  })], BaseCheckbox.prototype, "required", 2);
6422
6409
 
6423
- var __defProp$G = Object.defineProperty;
6424
- var __getOwnPropDesc$G = Object.getOwnPropertyDescriptor;
6425
- var __decorateClass$G = (decorators, target, key, kind) => {
6426
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$G(target, key) : target;
6410
+ var __defProp$F = Object.defineProperty;
6411
+ var __getOwnPropDesc$F = Object.getOwnPropertyDescriptor;
6412
+ var __decorateClass$F = (decorators, target, key, kind) => {
6413
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$F(target, key) : target;
6427
6414
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
6428
- if (kind && result) __defProp$G(target, key, result);
6415
+ if (kind && result) __defProp$F(target, key, result);
6429
6416
  return result;
6430
6417
  };
6431
6418
  class Checkbox extends BaseCheckbox {
@@ -6468,9 +6455,9 @@ class Checkbox extends BaseCheckbox {
6468
6455
  super.toggleChecked(force);
6469
6456
  }
6470
6457
  }
6471
- __decorateClass$G([observable], Checkbox.prototype, "indeterminate", 2);
6472
- __decorateClass$G([attr], Checkbox.prototype, "shape", 2);
6473
- __decorateClass$G([attr], Checkbox.prototype, "size", 2);
6458
+ __decorateClass$F([observable], Checkbox.prototype, "indeterminate", 2);
6459
+ __decorateClass$F([attr], Checkbox.prototype, "shape", 2);
6460
+ __decorateClass$F([attr], Checkbox.prototype, "size", 2);
6474
6461
 
6475
6462
  const activeState = stateSelector("active");
6476
6463
  const badInputState = stateSelector("bad-input");
@@ -6481,7 +6468,7 @@ const disabledState = stateSelector("disabled");
6481
6468
  stateSelector("error");
6482
6469
  const flipBlockState = stateSelector("flip-block");
6483
6470
  const focusVisibleState = stateSelector("focus-visible");
6484
- const hasMessageState = stateSelector("has-message");
6471
+ stateSelector("has-message");
6485
6472
  const indeterminateState = stateSelector("indeterminate");
6486
6473
  const multipleState = stateSelector("multiple");
6487
6474
  const openState = stateSelector("open");
@@ -6490,6 +6477,7 @@ const placeholderShownState = stateSelector("placeholder-shown");
6490
6477
  const pressedState = stateSelector("pressed");
6491
6478
  const rangeOverflowState = stateSelector("range-overflow");
6492
6479
  const rangeUnderflowState = stateSelector("range-underflow");
6480
+ const requiredState = stateSelector("required");
6493
6481
  const selectedState = stateSelector("selected");
6494
6482
  const stepMismatchState = stateSelector("step-mismatch");
6495
6483
  const submenuState = stateSelector("submenu");
@@ -6506,7 +6494,7 @@ const styles$A = css`
6506
6494
  :host{--size:16px;background-color:${colorNeutralBackground1};border-radius:${borderRadiusSmall};border:${strokeWidthThin} solid ${colorNeutralStrokeAccessible};box-sizing:border-box;cursor:pointer;position:relative;width:var(--size)}:host,.indeterminate-indicator,.checked-indicator{aspect-ratio:1}:host(:hover){border-color:${colorNeutralStrokeAccessibleHover}}:host(:active){border-color:${colorNeutralStrokeAccessiblePressed}}:host(${checkedState}:hover){background-color:${colorCompoundBrandBackgroundHover};border-color:${colorCompoundBrandStrokeHover}}:host(${checkedState}:active){background-color:${colorCompoundBrandBackgroundPressed};border-color:${colorCompoundBrandStrokePressed}}:host(:focus-visible){outline:none}:host(:not([slot='input']))::after{content:'';position:absolute;inset:-8px;box-sizing:border-box;outline:none;border:${strokeWidthThick} solid ${colorTransparentStroke};border-radius:${borderRadiusMedium}}:host(:not([slot='input']):focus-visible)::after{border-color:${colorStrokeFocus2}}.indeterminate-indicator,.checked-indicator{color:${colorNeutralForegroundInverted};inset:0;margin:auto;position:absolute}::slotted([slot='checked-indicator']),.checked-indicator{fill:currentColor;display:inline-flex;flex:1 0 auto;width:12px}:host(:not(${checkedState})) *:is(::slotted([slot='checked-indicator']),.checked-indicator){display:none}:host(${checkedState}),:host(${indeterminateState}){border-color:${colorCompoundBrandStroke}}:host(${checkedState}),:host(${indeterminateState}) .indeterminate-indicator{background-color:${colorCompoundBrandBackground}}:host(${indeterminateState}) .indeterminate-indicator{border-radius:${borderRadiusSmall};position:absolute;width:calc(var(--size) / 2);inset:0}:host([size='large']){--size:20px}:host([size='large']) ::slotted([slot='checked-indicator']),:host([size='large']) .checked-indicator{width:16px}:host([shape='circular']),:host([shape='circular']) .indeterminate-indicator{border-radius:${borderRadiusCircular}}:host([disabled]),:host([disabled]${checkedState}){background-color:${colorNeutralBackgroundDisabled};border-color:${colorNeutralStrokeDisabled}}:host([disabled]){cursor:unset}:host([disabled]${indeterminateState}) .indeterminate-indicator{background-color:${colorNeutralStrokeDisabled}}:host([disabled]${checkedState}) .checked-indicator{color:${colorNeutralStrokeDisabled}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
6507
6495
  :host{border-color:FieldText}:host(:not([slot='input']:focus-visible))::after{border-color:Canvas}:host(:not([disabled]):hover),:host(${checkedState}:not([disabled]):hover),:host(:not([slot='input']):focus-visible)::after{border-color:Highlight}.indeterminate-indicator,.checked-indicator{color:HighlightText}:host(${checkedState}),:host(${indeterminateState}) .indeterminate-indicator{background-color:FieldText}:host(${checkedState}:not([disabled]):hover),:host(${indeterminateState}:not([disabled]):hover) .indeterminate-indicator{background-color:Highlight}:host([disabled]){border-color:GrayText}:host([disabled]${indeterminateState}) .indeterminate-indicator{background-color:GrayText}:host([disabled]),:host([disabled]${checkedState}) .checked-indicator{color:GrayText}`));
6508
6496
 
6509
- const checkedIndicator$2 = html.partial( /* html */
6497
+ const checkedIndicator$2 = html.partial(/* html */
6510
6498
  `
6511
6499
  <svg
6512
6500
  fill="currentColor"
@@ -6519,12 +6507,12 @@ const checkedIndicator$2 = html.partial( /* html */
6519
6507
  <path d="M9.76 3.2c.3.29.32.76.04 1.06l-4.25 4.5a.75.75 0 0 1-1.08.02L2.22 6.53a.75.75 0 0 1 1.06-1.06l1.7 1.7L8.7 3.24a.75.75 0 0 1 1.06-.04Z" fill="currentColor"></path>
6520
6508
  </svg>
6521
6509
  `);
6522
- const indeterminateIndicator = html.partial( /* html */
6510
+ const indeterminateIndicator = html.partial(/* html */
6523
6511
  `
6524
6512
  <span class="indeterminate-indicator"></span>
6525
6513
  `);
6526
6514
  function checkboxTemplate(options = {}) {
6527
- return html`<template tabindex="${x => !x.disabled ? 0 : void 0}" @click="${(x, c) => x.clickHandler(c.event)}" @input="${(x, c) => x.inputHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}" @keyup="${(x, c) => x.keyupHandler(c.event)}"><slot name="checked-indicator">${staticallyCompose(options.checkedIndicator)}</slot><slot name="indeterminate-indicator">${staticallyCompose(options.indeterminateIndicator)}</slot></template>`;
6515
+ return html`<template @click="${(x, c) => x.clickHandler(c.event)}" @input="${(x, c) => x.inputHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}" @keyup="${(x, c) => x.keyupHandler(c.event)}"><slot name="checked-indicator">${staticallyCompose(options.checkedIndicator)}</slot><slot name="indeterminate-indicator">${staticallyCompose(options.indeterminateIndicator)}</slot></template>`;
6528
6516
  }
6529
6517
  const template$B = checkboxTemplate({
6530
6518
  checkedIndicator: checkedIndicator$2,
@@ -6546,7 +6534,9 @@ const styles$z = css`
6546
6534
 
6547
6535
  :host,:host(:is([size])){gap:12px;height:auto;padding-top:14px;padding-inline:12px;padding-bottom:16px;font-size:${fontSizeBase300};line-height:${lineHeightBase300}}.content{display:flex;flex-direction:column;text-align:start}::slotted([slot='description']){color:${colorNeutralForeground2};line-height:100%;font-size:${fontSizeBase200};font-weight:${fontWeightRegular}}::slotted(svg),:host([size='large']) ::slotted(svg){font-size:40px;height:40px;width:40px}:host(:hover) ::slotted([slot='description']){color:${colorNeutralForeground2Hover}}:host(:active) ::slotted([slot='description']){color:${colorNeutralForeground2Pressed}}:host(:is([appearance='primary'],[appearance='primary']:is(:hover,:active))) ::slotted([slot='description']){color:${colorNeutralForegroundOnBrand}}:host(:is([appearance='transparent'],[appearance='subtle'],[appearance='subtle']:is(:hover,:active)))
6548
6536
  ::slotted([slot='description']){color:${colorNeutralForeground2}}:host([appearance='transparent']:hover) ::slotted([slot='description']){color:${colorNeutralForeground2BrandHover}}:host([appearance='transparent']:active) ::slotted([slot='description']){color:${colorNeutralForeground2BrandPressed}}:host(:is(:disabled,:disabled[appearance],[disabled-focusable],[disabled-focusable][appearance]))
6549
- ::slotted([slot='description']){color:${colorNeutralForegroundDisabled}}:host([size='small']){padding:8px;padding-bottom:10px}:host([icon-only]){min-width:52px;max-width:52px;padding:${spacingHorizontalSNudge}}:host([icon-only][size='small']){min-width:48px;max-width:48px;padding:${spacingHorizontalXS}}:host([icon-only][size='large']){min-width:56px;max-width:56px;padding:${spacingHorizontalS}}:host([size='large']){padding-top:18px;padding-inline:16px;padding-bottom:20px;font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host([size='large']) ::slotted([slot='description']){font-size:${fontSizeBase300}}`;
6537
+ ::slotted([slot='description']){color:${colorNeutralForegroundDisabled}}:host([size='small']){padding:8px;padding-bottom:10px}:host([icon-only]){min-width:52px;max-width:52px;padding:${spacingHorizontalSNudge}}:host([icon-only][size='small']){min-width:48px;max-width:48px;padding:${spacingHorizontalXS}}:host([icon-only][size='large']){min-width:56px;max-width:56px;padding:${spacingHorizontalS}}:host([size='large']){padding-top:18px;padding-inline:16px;padding-bottom:20px;font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host([size='large']) ::slotted([slot='description']){font-size:${fontSizeBase300}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
6538
+ :host([appearance='primary']:not(:hover,:focus-visible,:disabled,[disabled-focusable]))
6539
+ ::slotted([slot='description']){color:HighlightText}`));
6550
6540
 
6551
6541
  function buttonTemplate(options = {}) {
6552
6542
  return html`<template ?disabled="${x => x.disabled}" tabindex="${x => x.disabled ? null : x.tabIndex ?? 0}">${startSlotTemplate(options)}<span class="content" part="content"><slot ${slotted("defaultSlottedContent")}></slot><slot name="description"></slot></span>${endSlotTemplate(options)}</template>`;
@@ -6561,12 +6551,12 @@ const definition$A = CompoundButton.compose({
6561
6551
 
6562
6552
  definition$A.define(FluentDesignSystem.registry);
6563
6553
 
6564
- var __defProp$F = Object.defineProperty;
6565
- var __getOwnPropDesc$F = Object.getOwnPropertyDescriptor;
6566
- var __decorateClass$F = (decorators, target, key, kind) => {
6567
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$F(target, key) : target;
6554
+ var __defProp$E = Object.defineProperty;
6555
+ var __getOwnPropDesc$E = Object.getOwnPropertyDescriptor;
6556
+ var __decorateClass$E = (decorators, target, key, kind) => {
6557
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$E(target, key) : target;
6568
6558
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
6569
- if (kind && result) __defProp$F(target, key, result);
6559
+ if (kind && result) __defProp$E(target, key, result);
6570
6560
  return result;
6571
6561
  };
6572
6562
  class CounterBadge extends FASTElement {
@@ -6603,22 +6593,22 @@ class CounterBadge extends FASTElement {
6603
6593
  return;
6604
6594
  }
6605
6595
  }
6606
- __decorateClass$F([attr], CounterBadge.prototype, "appearance", 2);
6607
- __decorateClass$F([attr], CounterBadge.prototype, "color", 2);
6608
- __decorateClass$F([attr], CounterBadge.prototype, "shape", 2);
6609
- __decorateClass$F([attr], CounterBadge.prototype, "size", 2);
6610
- __decorateClass$F([attr({
6596
+ __decorateClass$E([attr], CounterBadge.prototype, "appearance", 2);
6597
+ __decorateClass$E([attr], CounterBadge.prototype, "color", 2);
6598
+ __decorateClass$E([attr], CounterBadge.prototype, "shape", 2);
6599
+ __decorateClass$E([attr], CounterBadge.prototype, "size", 2);
6600
+ __decorateClass$E([attr({
6611
6601
  converter: nullableNumberConverter
6612
6602
  })], CounterBadge.prototype, "count", 2);
6613
- __decorateClass$F([attr({
6603
+ __decorateClass$E([attr({
6614
6604
  attribute: "overflow-count",
6615
6605
  converter: nullableNumberConverter
6616
6606
  })], CounterBadge.prototype, "overflowCount", 2);
6617
- __decorateClass$F([attr({
6607
+ __decorateClass$E([attr({
6618
6608
  attribute: "show-zero",
6619
6609
  mode: "boolean"
6620
6610
  })], CounterBadge.prototype, "showZero", 2);
6621
- __decorateClass$F([attr({
6611
+ __decorateClass$E([attr({
6622
6612
  mode: "boolean"
6623
6613
  })], CounterBadge.prototype, "dot", 2);
6624
6614
  applyMixins(CounterBadge, StartEnd);
@@ -6651,13 +6641,19 @@ const DialogType = {
6651
6641
  nonModal: "non-modal",
6652
6642
  alert: "alert"
6653
6643
  };
6644
+ function isDialog(element, tagName = "-dialog") {
6645
+ if (element?.nodeType !== Node.ELEMENT_NODE) {
6646
+ return false;
6647
+ }
6648
+ return element.tagName.toLowerCase().endsWith(tagName);
6649
+ }
6654
6650
 
6655
- var __defProp$E = Object.defineProperty;
6656
- var __getOwnPropDesc$E = Object.getOwnPropertyDescriptor;
6657
- var __decorateClass$E = (decorators, target, key, kind) => {
6658
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$E(target, key) : target;
6651
+ var __defProp$D = Object.defineProperty;
6652
+ var __getOwnPropDesc$D = Object.getOwnPropertyDescriptor;
6653
+ var __decorateClass$D = (decorators, target, key, kind) => {
6654
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$D(target, key) : target;
6659
6655
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
6660
- if (kind && result) __defProp$E(target, key, result);
6656
+ if (kind && result) __defProp$D(target, key, result);
6661
6657
  return result;
6662
6658
  };
6663
6659
  class Dialog extends FASTElement {
@@ -6687,6 +6683,26 @@ class Dialog extends FASTElement {
6687
6683
  });
6688
6684
  };
6689
6685
  }
6686
+ typeChanged(prev, next) {
6687
+ if (!this.dialog) {
6688
+ return;
6689
+ }
6690
+ if (next === DialogType.alert) {
6691
+ this.dialog.setAttribute("role", "alertdialog");
6692
+ } else {
6693
+ this.dialog.removeAttribute("role");
6694
+ }
6695
+ if (next !== DialogType.nonModal) {
6696
+ this.dialog.setAttribute("aria-modal", "true");
6697
+ } else {
6698
+ this.dialog.removeAttribute("aria-modal");
6699
+ }
6700
+ }
6701
+ /** @internal */
6702
+ connectedCallback() {
6703
+ super.connectedCallback();
6704
+ this.typeChanged(void 0, this.type);
6705
+ }
6690
6706
  /**
6691
6707
  * @public
6692
6708
  * Method to show the dialog
@@ -6718,26 +6734,25 @@ class Dialog extends FASTElement {
6718
6734
  * @returns boolean
6719
6735
  */
6720
6736
  clickHandler(event) {
6721
- event.preventDefault();
6722
6737
  if (this.dialog.open && this.type !== DialogType.alert && event.target === this.dialog) {
6723
6738
  this.hide();
6724
6739
  }
6725
6740
  return true;
6726
6741
  }
6727
6742
  }
6728
- __decorateClass$E([observable], Dialog.prototype, "dialog", 2);
6729
- __decorateClass$E([attr({
6743
+ __decorateClass$D([observable], Dialog.prototype, "dialog", 2);
6744
+ __decorateClass$D([attr({
6730
6745
  attribute: "aria-describedby"
6731
6746
  })], Dialog.prototype, "ariaDescribedby", 2);
6732
- __decorateClass$E([attr({
6747
+ __decorateClass$D([attr({
6733
6748
  attribute: "aria-labelledby"
6734
6749
  })], Dialog.prototype, "ariaLabelledby", 2);
6735
- __decorateClass$E([attr], Dialog.prototype, "type", 2);
6750
+ __decorateClass$D([attr], Dialog.prototype, "type", 2);
6736
6751
 
6737
- const template$y = html`<dialog role="${x => x.type === DialogType.alert ? "alertdialog" : "dialog"}" type="${x => x.type}" class="dialog" part="dialog" aria-modal="${x => x.type === DialogType.modal || x.type === DialogType.alert ? "true" : void 0}" aria-describedby="${x => x.ariaDescribedby}" aria-labelledby="${x => x.ariaLabelledby}" aria-label="${x => x.ariaLabel}" @click="${(x, c) => x.clickHandler(c.event)}" @cancel="${x => x.hide()}" ${ref("dialog")}><slot></slot></dialog>`;
6752
+ const template$y = html`<dialog class="dialog" part="dialog" aria-describedby="${x => x.ariaDescribedby}" aria-labelledby="${x => x.ariaLabelledby}" aria-label="${x => x.ariaLabel}" @click="${(x, c) => x.clickHandler(c.event)}" @cancel="${x => x.hide()}" ${ref("dialog")}><slot></slot></dialog>`;
6738
6753
 
6739
6754
  const styles$x = css`
6740
- @layer base{:host{--dialog-backdrop:${colorBackgroundOverlay};--dialog-starting-scale:0.85}::backdrop{background:var(--dialog-backdrop,rgba(0,0,0,0.4))}dialog{background:${colorNeutralBackground1};border-radius:${borderRadiusXLarge};border:none;box-shadow:${shadow64};color:${colorNeutralForeground1};max-height:calc(-48px + 100vh);padding:0;width:100%;max-width:600px}:host([type='non-modal']) dialog{inset:0;position:fixed;z-index:2;overflow:auto}}@layer animations{@media (prefers-reduced-motion:no-preference){dialog,::backdrop{transition:display allow-discrete,opacity,overlay allow-discrete,scale;transition-duration:${durationGentle};transition-timing-function:${curveDecelerateMid};opacity:0}::backdrop{transition-timing-function:${curveLinear}}[open],[open]::backdrop{opacity:1}dialog:not([open]){scale:var(--dialog-starting-scale);transition-timing-function:${curveAccelerateMid}}}@starting-style{[open],[open]::backdrop{opacity:0}dialog{scale:var(--dialog-starting-scale)}}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
6755
+ @layer base{:host{--dialog-backdrop:${colorBackgroundOverlay};--dialog-starting-scale:0.85}::backdrop{background:var(--dialog-backdrop,rgba(0,0,0,0.4))}dialog{background:${colorNeutralBackground1};border-radius:${borderRadiusXLarge};border:none;box-shadow:${shadow64};color:${colorNeutralForeground1};max-height:100vh;padding:0;width:100%;max-width:600px}:host([type='non-modal']) dialog{inset:0;position:fixed;z-index:2;overflow:auto}@supports (max-height:1dvh){dialog{max-height:100dvh}}}@layer animations{@media (prefers-reduced-motion:no-preference){dialog,::backdrop{transition:display allow-discrete,opacity,overlay allow-discrete,scale;transition-duration:${durationGentle};transition-timing-function:${curveDecelerateMid};opacity:0}::backdrop{transition-timing-function:${curveLinear}}[open],[open]::backdrop{opacity:1}dialog:not([open]){scale:var(--dialog-starting-scale);transition-timing-function:${curveAccelerateMid}}}@starting-style{[open],[open]::backdrop{opacity:0}dialog{scale:var(--dialog-starting-scale)}}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
6741
6756
  @layer base{dialog{border:${strokeWidthThin} solid ${colorTransparentStroke}}}`));
6742
6757
 
6743
6758
  const definition$y = Dialog.compose({
@@ -6748,45 +6763,30 @@ const definition$y = Dialog.compose({
6748
6763
 
6749
6764
  definition$y.define(FluentDesignSystem.registry);
6750
6765
 
6751
- var __defProp$D = Object.defineProperty;
6752
- var __getOwnPropDesc$D = Object.getOwnPropertyDescriptor;
6753
- var __decorateClass$D = (decorators, target, key, kind) => {
6754
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$D(target, key) : target;
6755
- for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
6756
- if (kind && result) __defProp$D(target, key, result);
6757
- return result;
6758
- };
6759
6766
  class DialogBody extends FASTElement {
6760
- constructor() {
6761
- super(...arguments);
6762
- this.noTitleAction = false;
6767
+ /**
6768
+ * Handles click event for the close slot
6769
+ *
6770
+ * @param e - the click event
6771
+ * @internal
6772
+ */
6773
+ clickHandler(event) {
6774
+ if (!event.defaultPrevented) {
6775
+ const dialog = this.parentElement;
6776
+ if (isDialog(dialog)) {
6777
+ dialog.hide();
6778
+ }
6779
+ }
6780
+ return true;
6763
6781
  }
6764
6782
  }
6765
- __decorateClass$D([attr({
6766
- mode: "boolean",
6767
- attribute: "no-title-action"
6768
- })], DialogBody.prototype, "noTitleAction", 2);
6769
6783
 
6770
- const dismissed16Regular = html.partial(`
6771
- <svg
6772
- fill="currentColor"
6773
- aria-hidden="true"
6774
- width="20"
6775
- height="20"
6776
- viewBox="0 0 20 20"
6777
- xmlns="http://www.w3.org/2000/svg"
6778
- >
6779
- <path
6780
- d="m4.09 4.22.06-.07a.5.5 0 0 1 .63-.06l.07.06L10 9.29l5.15-5.14a.5.5 0 0 1 .63-.06l.07.06c.18.17.2.44.06.63l-.06.07L10.71 10l5.14 5.15c.18.17.2.44.06.63l-.06.07a.5.5 0 0 1-.63.06l-.07-.06L10 10.71l-5.15 5.14a.5.5 0 0 1-.63.06l-.07-.06a.5.5 0 0 1-.06-.63l.06-.07L9.29 10 4.15 4.85a.5.5 0 0 1-.06-.63l.06-.07-.06.07Z"
6781
- fill="currentColor"
6782
- ></path>
6783
- </svg>`);
6784
- const template$x = html`<div class="title" part="title"><slot name="title"></slot><slot name="title-action"><fluent-button ?hidden=${x => x.noTitleAction || x.parentNode?.type === DialogType.alert} tabindex="0" part="title-action" class="title-action" appearance="transparent" icon-only @click=${x => x.parentNode?.hide()} ${ref("defaultTitleAction")}>${dismissed16Regular}</fluent-button></slot></div><div class="content" part="content"><slot></slot></div><div class="actions" part="actions"><slot name="action"></slot></div>`;
6784
+ const template$x = html`<template><div class="title" part="title"><slot name="title"></slot><slot name="title-action"></slot><slot name="close" @click="${(x, c) => x.clickHandler(c.event)}"></slot></div><div class="content" part="content"><slot></slot></div><div class="actions" part="actions"><slot name="action"></slot></div></template>`;
6785
6785
 
6786
6786
  const styles$w = css`
6787
6787
  ${display("grid")}
6788
6788
 
6789
- :host{background:${colorNeutralBackground1};box-sizing:border-box;gap:${spacingVerticalS};padding:${spacingVerticalXXL} ${spacingHorizontalXXL};container:dialog-body / inline-size}.title{box-sizing:border-box;align-items:flex-start;background:${colorNeutralBackground1};color:${colorNeutralForeground1};column-gap:8px;display:flex;font-family:${fontFamilyBase};font-size:${fontSizeBase500};font-weight:${fontWeightSemibold};inset-block-start:0;justify-content:space-between;line-height:${lineHeightBase500};margin-block-end:calc(${spacingVerticalS} * -1);margin-block-start:calc(${spacingVerticalXXL} * -1);padding-block-end:${spacingVerticalS};padding-block-start:${spacingVerticalXXL};position:sticky;z-index:1}.content{box-sizing:border-box;color:${colorNeutralForeground1};font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};line-height:${lineHeightBase300};min-height:32px}.actions{box-sizing:border-box;background:${colorNeutralBackground1};display:flex;flex-direction:column;gap:${spacingVerticalS};inset-block-end:0;margin-block-end:calc(${spacingVerticalXXL} * -1);padding-block-end:${spacingVerticalXXL};padding-block-start:${spacingVerticalL};position:sticky;z-index:2}:not(:has(:is([slot='title'],[slot='title-action']))) .title:not(:has(.title-action)),:not(:has([slot='action'])) .actions{display:none}@container (min-width:480px){.actions{align-items:center;flex-direction:row;justify-content:flex-end;margin-block-start:calc(${spacingVerticalS} * -1);padding-block-start:${spacingVerticalS}}}`;
6789
+ :host{background:${colorNeutralBackground1};box-sizing:border-box;gap:${spacingVerticalS};padding:${spacingVerticalXXL} ${spacingHorizontalXXL};container:dialog-body / inline-size}.title{box-sizing:border-box;align-items:flex-start;background:${colorNeutralBackground1};color:${colorNeutralForeground1};column-gap:8px;display:flex;font-family:${fontFamilyBase};font-size:${fontSizeBase500};font-weight:${fontWeightSemibold};inset-block-start:0;justify-content:space-between;line-height:${lineHeightBase500};margin-block-end:calc(${spacingVerticalS} * -1);margin-block-start:calc(${spacingVerticalXXL} * -1);padding-block-end:${spacingVerticalS};padding-block-start:${spacingVerticalXXL}}.content{box-sizing:border-box;color:${colorNeutralForeground1};font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};line-height:${lineHeightBase300};min-height:32px}.actions{box-sizing:border-box;background:${colorNeutralBackground1};display:flex;flex-direction:column;gap:${spacingVerticalS};inset-block-end:0;margin-block-end:calc(${spacingVerticalXXL} * -1);padding-block-end:${spacingVerticalXXL};padding-block-start:${spacingVerticalL}}::slotted([slot='title-action']){margin-inline-start:auto}::slotted([slot='title']){font:inherit;padding:0;margin:0}:not(:has(:is([slot='title'],[slot='title-action']))) .title{justify-content:end}@container (min-width:480px){.actions{align-items:center;flex-direction:row;justify-content:flex-end;margin-block-start:calc(${spacingVerticalS} * -1);padding-block-start:${spacingVerticalS}}}@media (min-height:480px){.title{position:sticky;z-index:1}.actions{position:sticky;z-index:2}`;
6790
6790
 
6791
6791
  const definition$x = DialogBody.compose({
6792
6792
  name: `${FluentDesignSystem.prefix}-dialog-body`,
@@ -6952,6 +6952,28 @@ class Drawer extends FASTElement {
6952
6952
  });
6953
6953
  };
6954
6954
  }
6955
+ typeChanged() {
6956
+ if (!this.dialog) {
6957
+ return;
6958
+ }
6959
+ this.updateDialogRole();
6960
+ if (this.type === DrawerType.modal) {
6961
+ this.dialog.setAttribute("aria-modal", "true");
6962
+ } else {
6963
+ this.dialog.removeAttribute("aria-modal");
6964
+ }
6965
+ }
6966
+ /** @internal */
6967
+ connectedCallback() {
6968
+ super.connectedCallback();
6969
+ this.typeChanged();
6970
+ this.observeRoleAttr();
6971
+ }
6972
+ /** @internal */
6973
+ disconnectedCallback() {
6974
+ super.disconnectedCallback();
6975
+ this.roleAttrObserver.disconnect();
6976
+ }
6955
6977
  /**
6956
6978
  * @public
6957
6979
  * Method to show the drawer
@@ -6989,6 +7011,32 @@ class Drawer extends FASTElement {
6989
7011
  }
6990
7012
  return true;
6991
7013
  }
7014
+ /**
7015
+ * @public
7016
+ * Handles cancel events on the drawer.
7017
+ */
7018
+ cancelHandler() {
7019
+ this.hide();
7020
+ }
7021
+ observeRoleAttr() {
7022
+ if (this.roleAttrObserver) {
7023
+ return;
7024
+ }
7025
+ this.roleAttrObserver = new MutationObserver(() => {
7026
+ this.updateDialogRole();
7027
+ });
7028
+ this.roleAttrObserver.observe(this, {
7029
+ attributes: true,
7030
+ attributeFilter: ["role"]
7031
+ });
7032
+ }
7033
+ updateDialogRole() {
7034
+ console.log(this.role);
7035
+ if (!this.dialog) {
7036
+ return;
7037
+ }
7038
+ this.dialog.role = this.type === DrawerType.modal ? "dialog" : this.role;
7039
+ }
6992
7040
  }
6993
7041
  __decorateClass$A([attr], Drawer.prototype, "type", 2);
6994
7042
  __decorateClass$A([attr({
@@ -7009,7 +7057,7 @@ const styles$u = css`
7009
7057
  :host{--dialog-backdrop:${colorBackgroundOverlay}}:host([type='non-modal']) dialog[open]::backdrop{display:none}:host([type='non-modal']) dialog{position:fixed;top:0;bottom:0}:host([type='inline']){height:100%;width:fit-content}:host([type='inline']) dialog[open]{box-shadow:none;position:relative}:host([size='small']) dialog{width:320px;max-width:320px}:host([size='large']) dialog{width:940px;max-width:940px}:host([size='full']) dialog{width:100%;max-width:100%}:host([position='end']) dialog{margin-inline-start:auto;margin-inline-end:0}dialog{box-sizing:border-box;z-index:var(--drawer-elevation,1000);font-size:${fontSizeBase300};line-height:${lineHeightBase300};font-family:${fontFamilyBase};font-weight:${fontWeightRegular};color:${colorNeutralForeground1};max-width:var(--drawer-width,592px);max-height:100vh;height:100%;margin-inline-start:0;margin-inline-end:auto;border-inline-end-color:${colorTransparentStroke};border-inline-start-color:var(--drawer-separator,${colorTransparentStroke});outline:none;top:0;bottom:0;width:var(--drawer-width,592px);border-radius:0;padding:0;max-width:var(--drawer-width,592px);box-shadow:${shadow64};border:${strokeWidthThin} solid ${colorTransparentStroke};background:${colorNeutralBackground1}}dialog::backdrop{background:var(--dialog-backdrop)}@layer animations{@media (prefers-reduced-motion:no-preference){dialog{transition:display allow-discrete,opacity,overlay allow-discrete,transform;transition-duration:${durationGentle};transition-timing-function:${curveDecelerateMid}}:host dialog:not([open]){transform:translateX(-100%);transition-timing-function:${curveAccelerateMid}}:host([position='end']) dialog:not([open]){transform:translateX(100%);transition-timing-function:${curveAccelerateMid}}dialog[open]{transform:translateX(0)}dialog::backdrop{transition:display allow-discrete,opacity,overlay allow-discrete,scale;transition-duration:${durationGentle};transition-timing-function:${curveDecelerateMid};background:var(--dialog-backdrop,${colorBackgroundOverlay});opacity:0}dialog[open]::backdrop{opacity:1}dialog::backdrop{transition-timing-function:${curveLinear}}}@starting-style{dialog[open]{transform:translateX(-100%)}:host([position='end']) dialog[open]{transform:translateX(100%)}dialog[open]::backdrop{opacity:0}}}`;
7010
7058
 
7011
7059
  function drawerTemplate() {
7012
- return html`<dialog class="dialog" part="dialog" role="${x => x.type === "modal" ? "dialog" : x.role}" aria-modal="${x => x.type === "modal" ? "true" : void 0}" aria-describedby="${x => x.ariaDescribedby}" aria-labelledby="${x => x.ariaLabelledby}" aria-label="${x => x.ariaLabel}" size="${x => x.size}" position="${x => x.position}" type="${x => x.type}" @click="${(x, c) => x.clickHandler(c.event)}" @cancel="${(x, c) => x.hide()}" ${ref("dialog")}><slot></slot></dialog>`;
7060
+ return html`<dialog class="dialog" part="dialog" aria-describedby="${x => x.ariaDescribedby}" aria-labelledby="${x => x.ariaLabelledby}" aria-label="${x => x.ariaLabel}" size="${x => x.size}" position="${x => x.position}" @click="${(x, c) => x.clickHandler(c.event)}" @cancel="${x => x.cancelHandler()}" ${ref("dialog")}><slot></slot></dialog>`;
7013
7061
  }
7014
7062
  const template$v = drawerTemplate();
7015
7063
 
@@ -7021,14 +7069,30 @@ const definition$v = Drawer.compose({
7021
7069
 
7022
7070
  definition$v.define(FluentDesignSystem.registry);
7023
7071
 
7024
- class DrawerBody extends FASTElement {}
7072
+ class DrawerBody extends FASTElement {
7073
+ /**
7074
+ * Handles click event for the close slot
7075
+ *
7076
+ * @param e - the click event
7077
+ * @internal
7078
+ */
7079
+ clickHandler(event) {
7080
+ if (!event.defaultPrevented) {
7081
+ const dialog = this.parentElement;
7082
+ if (isDialog(dialog, "-drawer")) {
7083
+ dialog.hide();
7084
+ }
7085
+ }
7086
+ return true;
7087
+ }
7088
+ }
7025
7089
 
7026
7090
  const styles$t = css`
7027
7091
  ${display("grid")}
7028
7092
  :host{box-sizing:border-box;grid-template-rows:min-content auto min-content;position:relative;height:100%;padding:${spacingHorizontalXL};max-height:100svh}.header{display:flex;justify-content:space-between;align-items:center;${typographySubtitle1Styles}}.footer{display:flex;justify-content:flex-start;gap:${spacingHorizontalM}}::slotted([slot='title']){font:inherit;padding:0;margin:0}`;
7029
7093
 
7030
7094
  function drawerBodyTemplate() {
7031
- return html`<div class="header" part="header"><slot name="title"></slot><slot name="close"></slot></div><div class="content" part="content"><slot></slot></div><div class="footer" part="footer"><slot name="footer"></slot></div>`;
7095
+ return html`<div class="header" part="header"><slot name="title"></slot><slot name="close" @click="${(x, c) => x.clickHandler(c.event)}"></slot></div><div class="content" part="content"><slot></slot></div><div class="footer" part="footer"><slot name="footer"></slot></div>`;
7032
7096
  }
7033
7097
  const template$u = drawerBodyTemplate();
7034
7098
 
@@ -7064,6 +7128,46 @@ function uniqueId(prefix = "id-") {
7064
7128
  return document.getElementById(str) ? uniqueId(prefix) : str;
7065
7129
  }
7066
7130
 
7131
+ function requestIdleCallback(callback, options) {
7132
+ if ("requestIdleCallback" in globalThis) {
7133
+ return globalThis.requestIdleCallback(callback, options);
7134
+ }
7135
+ const start = Date.now();
7136
+ return setTimeout(() => {
7137
+ callback({
7138
+ didTimeout: options?.timeout ? Date.now() - start >= options.timeout : false,
7139
+ timeRemaining: () => 0
7140
+ });
7141
+ }, 1);
7142
+ }
7143
+ function cancelIdleCallback(id) {
7144
+ if ("cancelIdleCallback" in globalThis) {
7145
+ globalThis.cancelIdleCallback(id);
7146
+ } else {
7147
+ clearTimeout(id);
7148
+ }
7149
+ }
7150
+ function waitForConnectedDescendants(target, callback, options) {
7151
+ let idleCallbackId;
7152
+ const shallow = options?.shallow ?? false;
7153
+ const query = `${shallow ? ":scope > " : ""}:not(:defined)`;
7154
+ const timeout = options?.timeout ?? 50;
7155
+ const scheduleCheck = deadline => {
7156
+ if (idleCallbackId) {
7157
+ cancelIdleCallback(idleCallbackId);
7158
+ idleCallbackId = void 0;
7159
+ }
7160
+ if (!target.querySelector(query) || deadline && deadline.timeRemaining() <= 0) {
7161
+ callback();
7162
+ return;
7163
+ }
7164
+ idleCallbackId = requestIdleCallback(scheduleCheck, {
7165
+ timeout
7166
+ });
7167
+ };
7168
+ scheduleCheck();
7169
+ }
7170
+
7067
7171
  const DropdownAppearance = {
7068
7172
  filledDarker: "filled-darker",
7069
7173
  filledLighter: "filled-lighter",
@@ -7076,11 +7180,11 @@ const DropdownType = {
7076
7180
  select: "select"
7077
7181
  };
7078
7182
 
7079
- const dropdownIndicatorTemplate = html`<svg class="chevron-down-20-regular" role="button" slot="indicator" viewBox="0 0 20 20" ${ref("indicator")}><path d="M15.85 7.65a.5.5 0 0 1 0 .7l-5.46 5.49a.55.55 0 0 1-.78 0L4.15 8.35a.5.5 0 1 1 .7-.7L10 12.8l5.15-5.16a.5.5 0 0 1 .7 0" fill="currentColor" /></svg>`;
7080
- const dropdownInputTemplate = html`<input @input="${(x, c) => x.inputHandler(c.event)}" @change="${(x, c) => x.changeHandler(c.event)}" aria-activedescendant="${x => x.activeDescendant}" aria-controls="${x => x.listbox?.id ?? null}" aria-labelledby="${x => x.ariaLabelledBy}" aria-expanded="${x => x.open}" aria-haspopup="listbox" placeholder="${x => x.placeholder}" role="combobox" ?disabled="${x => x.disabled}" type="${x => x.type}" value="${x => x.valueAttribute}" ${ref("control")} />`;
7081
- const dropdownButtonTemplate = html`<button aria-activedescendant="${x => x.activeDescendant}" aria-controls="${x => x.listbox?.id ?? null}" aria-expanded="${x => x.open}" aria-haspopup="listbox" role="combobox" ?disabled="${x => x.disabled}" type="button" ${ref("control")}>${x => x.displayValue}</button>`;
7183
+ const dropdownIndicatorTemplate = html`<svg class="chevron-down-20-regular" aria-hidden="true" slot="indicator" viewBox="0 0 20 20" ${ref("indicator")}><path d="M15.85 7.65a.5.5 0 0 1 0 .7l-5.46 5.49a.55.55 0 0 1-.78 0L4.15 8.35a.5.5 0 1 1 .7-.7L10 12.8l5.15-5.16a.5.5 0 0 1 .7 0" fill="currentColor" /></svg>`;
7184
+ const dropdownInputTemplate = html`<input @input="${(x, c) => x.inputHandler(c.event)}" @change="${(x, c) => x.changeHandler(c.event)}" aria-activedescendant="${x => x.activeDescendant}" aria-controls="${x => x.listbox?.id ?? null}" aria-labelledby="${x => x.ariaLabelledBy}" aria-expanded="${x => x.open}" aria-haspopup="listbox" placeholder="${x => x.placeholder}" role="combobox" ?disabled="${x => x.disabled}" type="${x => x.type}" value="${x => x.valueAttribute}" slot="control" ${ref("control")} />`;
7185
+ const dropdownButtonTemplate = html`<button aria-activedescendant="${x => x.activeDescendant}" aria-controls="${x => x.listbox?.id ?? null}" aria-expanded="${x => x.open}" aria-haspopup="listbox" role="combobox" ?disabled="${x => x.disabled}" type="button" slot="control" ${ref("control")}>${x => x.displayValue}</button>`;
7082
7186
  function dropdownTemplate(options = {}) {
7083
- return html`<template @click="${(x, c) => x.clickHandler(c.event)}" @focusout="${(x, c) => x.focusoutHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}" @mousedown="${(x, c) => x.mousedownHandler(c.event)}"><div class="control"><slot name="control" ${ref("controlSlot")}></slot><slot name="indicator" ${ref("indicatorSlot")}>${staticallyCompose(options.indicator)}</slot></div><slot ${ref("listboxSlot")}></slot></template>`;
7187
+ return html`<template @click="${(x, c) => x.clickHandler(c.event)}" @focusout="${(x, c) => x.focusoutHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}" @mousedown="${(x, c) => x.mousedownHandler(c.event)}"><div class="control"><slot name="control" ${ref("controlSlot")}></slot><slot name="indicator" ${ref("indicatorSlot")}>${staticallyCompose(options.indicator)}</slot></div><slot @slotchange="${(x, c) => x.slotchangeHandler(c.event)}"></slot></template>`;
7084
7188
  }
7085
7189
  const template$t = dropdownTemplate({
7086
7190
  indicator: dropdownIndicatorTemplate
@@ -7102,6 +7206,31 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7102
7206
  this.required = false;
7103
7207
  this.type = DropdownType.dropdown;
7104
7208
  this.valueAttribute = "";
7209
+ /**
7210
+ * Repositions the listbox to align with the control element. Used when the browser does not support CSS anchor
7211
+ * positioning.
7212
+ *
7213
+ * @internal
7214
+ */
7215
+ this.repositionListbox = () => {
7216
+ if (this.frameId) {
7217
+ cancelAnimationFrame(this.frameId);
7218
+ }
7219
+ this.frameId = requestAnimationFrame(() => {
7220
+ const controlRect = this.getBoundingClientRect();
7221
+ const right = window.innerWidth - controlRect.right;
7222
+ const left = controlRect.left;
7223
+ this.listbox.style.minWidth = `${controlRect.width}px`;
7224
+ this.listbox.style.top = `${controlRect.top}px`;
7225
+ if (left + controlRect.width > window.innerWidth || getDirection(this) === "rtl" && right - controlRect.width > 0) {
7226
+ this.listbox.style.right = `${right}px`;
7227
+ this.listbox.style.left = "unset";
7228
+ } else {
7229
+ this.listbox.style.left = `${left}px`;
7230
+ this.listbox.style.right = "unset";
7231
+ }
7232
+ });
7233
+ };
7105
7234
  /**
7106
7235
  * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
7107
7236
  *
@@ -7109,7 +7238,6 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7109
7238
  */
7110
7239
  this.elementInternals = this.attachInternals();
7111
7240
  this.elementInternals.role = "presentation";
7112
- this.addEventListener("connected", this.listboxConnectedHandler);
7113
7241
  Updates.enqueue(() => {
7114
7242
  this.insertControl();
7115
7243
  });
@@ -7152,7 +7280,6 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7152
7280
  controlChanged(prev, next) {
7153
7281
  if (next) {
7154
7282
  next.id = next.id || uniqueId("input-");
7155
- this.controlSlot?.assign(next);
7156
7283
  }
7157
7284
  }
7158
7285
  /**
@@ -7201,7 +7328,7 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7201
7328
  if (next) {
7202
7329
  next.dropdown = this;
7203
7330
  next.popover = "manual";
7204
- this.listboxSlot.assign(next);
7331
+ next.tabIndex = -1;
7205
7332
  const notifier = Observable.getNotifier(this);
7206
7333
  notifier.subscribe(next);
7207
7334
  for (const key of ["disabled", "multiple"]) {
@@ -7213,6 +7340,11 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7213
7340
  });
7214
7341
  this.setValidity();
7215
7342
  });
7343
+ if (AnchorPositioningCSSSupported) {
7344
+ const anchorName = uniqueId("--dropdown-anchor-");
7345
+ this.style.setProperty("anchor-name", anchorName);
7346
+ this.listbox.style.setProperty("position-anchor", anchorName);
7347
+ }
7216
7348
  }
7217
7349
  }
7218
7350
  /**
@@ -7252,11 +7384,9 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7252
7384
  toggleState(this.elementInternals, "open", next);
7253
7385
  this.elementInternals.ariaExpanded = next ? "true" : "false";
7254
7386
  this.activeIndex = this.selectedIndex ?? -1;
7255
- if (next) {
7256
- _BaseDropdown.AnchorPositionFallbackObserver?.observe(this.listbox);
7257
- return;
7387
+ if (!AnchorPositioningCSSSupported) {
7388
+ this.anchorPositionFallback(next);
7258
7389
  }
7259
- _BaseDropdown.AnchorPositionFallbackObserver?.unobserve(this.listbox);
7260
7390
  }
7261
7391
  /**
7262
7392
  * Changes the slotted control element based on the dropdown type.
@@ -7277,25 +7407,6 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7277
7407
  get enabledOptions() {
7278
7408
  return this.listbox?.enabledOptions ?? [];
7279
7409
  }
7280
- /**
7281
- * Resets the form value to its initial value when the form is reset.
7282
- *
7283
- * @internal
7284
- */
7285
- formResetCallback() {
7286
- this.enabledOptions.forEach((x, i) => {
7287
- if (this.multiple) {
7288
- x.selected = !!x.defaultSelected;
7289
- return;
7290
- }
7291
- if (!x.defaultSelected) {
7292
- x.selected = false;
7293
- return;
7294
- }
7295
- this.selectOption(i);
7296
- });
7297
- this.setValidity();
7298
- }
7299
7410
  /**
7300
7411
  * A reference to the first freeform option, if present.
7301
7412
  *
@@ -7445,7 +7556,7 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7445
7556
  }
7446
7557
  const target = e.target;
7447
7558
  this.focus();
7448
- if (target === this.control && !this.isCombobox) {
7559
+ if ((target === this.control || e.composedPath().includes(this.indicator)) && !this.isCombobox) {
7449
7560
  this.listbox.togglePopover();
7450
7561
  return true;
7451
7562
  }
@@ -7511,6 +7622,25 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7511
7622
  }
7512
7623
  return true;
7513
7624
  }
7625
+ /**
7626
+ * Resets the form value to its initial value when the form is reset.
7627
+ *
7628
+ * @internal
7629
+ */
7630
+ formResetCallback() {
7631
+ this.enabledOptions.forEach((x, i) => {
7632
+ if (this.multiple) {
7633
+ x.selected = !!x.defaultSelected;
7634
+ return;
7635
+ }
7636
+ if (!x.defaultSelected) {
7637
+ x.selected = false;
7638
+ return;
7639
+ }
7640
+ this.selectOption(i);
7641
+ });
7642
+ this.setValidity();
7643
+ }
7514
7644
  /**
7515
7645
  * Ensures the active index is within bounds of the enabled options. Out-of-bounds indices are wrapped to the opposite
7516
7646
  * end of the range.
@@ -7683,6 +7813,22 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7683
7813
  }, message ?? this.validationMessage, anchor ?? this.control);
7684
7814
  }
7685
7815
  }
7816
+ /**
7817
+ * Handles the `slotchange` event for the dropdown.
7818
+ * Sets the `listbox` property when a valid listbox is assigned to the default slot.
7819
+ *
7820
+ * @param e - the slot change event
7821
+ * @internal
7822
+ */
7823
+ slotchangeHandler(e) {
7824
+ const target = e.target;
7825
+ waitForConnectedDescendants(this, () => {
7826
+ const listbox = target.assignedElements().find(el => isListbox(el));
7827
+ if (listbox) {
7828
+ this.listbox = listbox;
7829
+ }
7830
+ });
7831
+ }
7686
7832
  /**
7687
7833
  * Updates the freeform option with the provided value.
7688
7834
  *
@@ -7702,52 +7848,60 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
7702
7848
  this.freeformOption.value = value;
7703
7849
  this.freeformOption.hidden = false;
7704
7850
  }
7705
- connectedCallback() {
7706
- super.connectedCallback();
7707
- this.anchorPositionFallback();
7708
- }
7709
7851
  disconnectedCallback() {
7710
- _BaseDropdown.AnchorPositionFallbackObserver?.unobserve(this.listbox);
7852
+ _BaseDropdown.AnchorPositionFallbackObserver?.disconnect();
7853
+ this.debounceController?.abort();
7711
7854
  super.disconnectedCallback();
7712
7855
  }
7713
- /**
7714
- * Handles the connected event for the listbox.
7715
- *
7716
- * @param e - the event object
7717
- * @internal
7718
- */
7719
- listboxConnectedHandler(e) {
7720
- const target = e.target;
7721
- if (isListbox(target)) {
7722
- this.listbox = target;
7723
- }
7724
- }
7725
7856
  /**
7726
7857
  * When anchor positioning isn't supported, an intersection observer is used to flip the listbox when it hits the
7727
7858
  * viewport bounds. One static observer is used for all dropdowns.
7728
7859
  *
7729
7860
  * @internal
7730
7861
  */
7731
- anchorPositionFallback() {
7732
- _BaseDropdown.AnchorPositionFallbackObserver = _BaseDropdown.AnchorPositionFallbackObserver ?? new IntersectionObserver(entries => {
7733
- entries.forEach(({
7734
- boundingClientRect,
7735
- isIntersecting,
7736
- target
7737
- }) => {
7738
- if (isListbox(target) && !isIntersecting) {
7739
- if (boundingClientRect.bottom > window.innerHeight) {
7740
- toggleState(target.dropdown.elementInternals, "flip-block", true);
7741
- return;
7742
- }
7743
- if (boundingClientRect.top < 0) {
7744
- toggleState(target.dropdown.elementInternals, "flip-block", false);
7862
+ anchorPositionFallback(shouldObserve) {
7863
+ if (!_BaseDropdown.AnchorPositionFallbackObserver) {
7864
+ _BaseDropdown.AnchorPositionFallbackObserver = new IntersectionObserver(entries => {
7865
+ entries.forEach(({
7866
+ boundingClientRect,
7867
+ isIntersecting,
7868
+ target
7869
+ }) => {
7870
+ if (isListbox(target)) {
7871
+ if (boundingClientRect.bottom > window.innerHeight) {
7872
+ toggleState(target.elementInternals, "flip-block", true);
7873
+ return;
7874
+ }
7875
+ if (boundingClientRect.top < 0) {
7876
+ toggleState(target.elementInternals, "flip-block", false);
7877
+ }
7745
7878
  }
7746
- }
7879
+ });
7880
+ }, {
7881
+ threshold: 1
7747
7882
  });
7748
- }, {
7749
- threshold: 1
7750
- });
7883
+ }
7884
+ if (shouldObserve) {
7885
+ this.debounceController = new AbortController();
7886
+ _BaseDropdown.AnchorPositionFallbackObserver.observe(this.listbox);
7887
+ window.addEventListener("scroll", this.repositionListbox, {
7888
+ passive: true,
7889
+ capture: true,
7890
+ signal: this.debounceController.signal
7891
+ });
7892
+ window.addEventListener("resize", this.repositionListbox, {
7893
+ passive: true,
7894
+ signal: this.debounceController.signal
7895
+ });
7896
+ this.repositionListbox();
7897
+ return;
7898
+ }
7899
+ _BaseDropdown.AnchorPositionFallbackObserver.unobserve(this.listbox);
7900
+ this.debounceController?.abort();
7901
+ if (this.frameId) {
7902
+ cancelAnimationFrame(this.frameId);
7903
+ this.frameId = void 0;
7904
+ }
7751
7905
  }
7752
7906
  };
7753
7907
  /**
@@ -7778,7 +7932,6 @@ __decorateClass$z([attr({
7778
7932
  mode: "fromView"
7779
7933
  })], _BaseDropdown.prototype, "initialValue", 2);
7780
7934
  __decorateClass$z([observable], _BaseDropdown.prototype, "listbox", 2);
7781
- __decorateClass$z([observable], _BaseDropdown.prototype, "listboxSlot", 2);
7782
7935
  __decorateClass$z([attr({
7783
7936
  mode: "boolean"
7784
7937
  })], _BaseDropdown.prototype, "multiple", 2);
@@ -7814,15 +7967,12 @@ __decorateClass$y([attr], Dropdown.prototype, "size", 2);
7814
7967
  const styles$s = css`
7815
7968
  ${display("inline-flex")}
7816
7969
 
7817
- :host{anchor-name:--dropdown-trigger;box-sizing:border-box;color:${colorNeutralForeground1};cursor:pointer}:host(${placeholderShownState}){color:${colorNeutralForeground4}}.control{appearance:none;background-color:${colorNeutralBackground1};border-radius:${borderRadiusMedium};border:none;box-shadow:inset 0 0 0 ${strokeWidthThin} var(--control-border-color);box-sizing:border-box;color:inherit;column-gap:${spacingHorizontalXXS};display:inline-flex;justify-content:space-between;min-width:160px;overflow:hidden;padding:${spacingVerticalSNudge} ${spacingHorizontalMNudge};position:relative;text-align:start;width:100%;z-index:1;${typographyBody1Styles}}:host([size='small']) .control{column-gap:${spacingHorizontalXXS};padding:${spacingVerticalXS} ${spacingHorizontalSNudge};${typographyCaption1Styles}}:host([size='large']) .control{column-gap:${spacingHorizontalS};padding:${spacingVerticalS} ${spacingHorizontalM};${typographyBody2Styles}}::slotted(:is(input,button)){all:unset;flex:1 1 auto}::slotted(button){cursor:pointer}::slotted(input){cursor:text}:where(slot[name='indicator'] > *,::slotted([slot='indicator'])){all:unset;align-items:center;appearance:none;aspect-ratio:1;color:${colorNeutralForeground3};display:inline-flex;justify-content:center;width:20px}:host([size='small']) :where(slot[name='indicator'] > *,::slotted([slot='indicator'])){width:16px}:host([size='large']) :where(slot[name='indicator'] > *,::slotted([slot='indicator'])){width:24px}.control::after,.control::before{content:'' / '';inset:auto 0 0;pointer-events:none;position:absolute}.control::before{height:${strokeWidthThin}}.control::after{background-color:${colorCompoundBrandStroke};height:${strokeWidthThick};scale:0 1;transition:scale ${durationUltraFast} ${curveDecelerateMid}}:host(:where(${openState},:focus-within)) .control::after{scale:1 1;transition-duration:${durationNormal};transition-timing-function:${curveAccelerateMid}}:host(:where([appearance='outline'],[appearance='transparent'])) .control::before{background-color:${colorNeutralStrokeAccessible}}:host([appearance='transparent']) .control{--control-border-color:${colorTransparentStrokeInteractive};background-color:${colorTransparentBackground};border-radius:${borderRadiusNone}}:host([appearance='outline']) .control{--control-border-color:${colorNeutralStroke1}}:host([appearance='outline']) .control:hover{--control-border-color:${colorNeutralStroke1Hover}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:hover::before{background-color:${colorNeutralStrokeAccessibleHover}}:host([appearance='outline']) .control:hover::after{background-color:${colorCompoundBrandBackgroundHover}}:host([appearance='outline']) .control:active{--control-border-color:${colorNeutralStroke1Pressed}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:active::before{background-color:${colorNeutralStrokeAccessiblePressed}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:active::after{background-color:${colorCompoundBrandBackgroundPressed}}:host([appearance='filled-darker']) .control{background-color:${colorNeutralBackground3}}:host(:where([appearance='filled-lighter'],[appearance='filled-darker'])) .control{--control-border-color:${colorTransparentStroke}}:host(:disabled),:host(:disabled) ::slotted(:where(button,input)){cursor:not-allowed}:host(:disabled) .control::before,:host(:disabled) .control::after{content:none}:host(:disabled) .control:is(*,:active,:hover),:host(:disabled) :where(slot[name='indicator'] > *,::slotted([slot='indicator'])){--control-border-color:${colorNeutralStrokeDisabled};background-color:${colorNeutralBackgroundDisabled};color:${colorNeutralForegroundDisabled}}::slotted([popover]){inset:unset;position:absolute;position-anchor:--dropdown-trigger;position-area:block-end span-inline-end;position-try-fallbacks:flip-inline,flip-block,block-start;max-height:var(--listbox-max-height,calc(50vh - anchor-size(self-block)));min-width:anchor-size(width);overflow:auto}::slotted([popover]:not(:popover-open)){display:none}@supports not (anchor-name:--anchor){::slotted([popover]){margin-block-start:calc(${lineHeightBase300} + (${spacingVerticalSNudge} * 2) + ${strokeWidthThin});max-height:50vh}:host([size='small']) ::slotted([popover]){margin-block-start:calc(${lineHeightBase200} + (${spacingVerticalXS} * 2) + ${strokeWidthThin})}:host([size='large']) ::slotted([popover]){margin-block-start:calc(${lineHeightBase400} + (${spacingVerticalS} * 2) + ${strokeWidthThin})}:host(${flipBlockState}) ::slotted([popover]){margin-block-start:revert;transform:translate(0,-100%)}}`;
7970
+ :host{anchor-name:--dropdown-trigger;box-sizing:border-box;color:${colorNeutralForeground1};cursor:pointer}:host(${placeholderShownState}){color:${colorNeutralForeground4}}.control{appearance:none;background-color:${colorNeutralBackground1};border-radius:${borderRadiusMedium};border:${strokeWidthThin} solid ${colorTransparentStroke};box-shadow:inset 0 0 0 ${strokeWidthThin} var(--control-border-color);box-sizing:border-box;color:inherit;column-gap:${spacingHorizontalXXS};display:inline-flex;justify-content:space-between;min-width:160px;overflow:hidden;padding:${spacingVerticalSNudge} ${spacingHorizontalMNudge};position:relative;text-align:start;width:100%;z-index:1;${typographyBody1Styles}}:host([size='small']) .control{column-gap:${spacingHorizontalXXS};padding:${spacingVerticalXS} ${spacingHorizontalSNudge};${typographyCaption1Styles}}:host([size='large']) .control{column-gap:${spacingHorizontalS};padding:${spacingVerticalS} ${spacingHorizontalM};${typographyBody2Styles}}::slotted(:is(input,button)){all:unset;flex:1 1 auto}::slotted(button){cursor:pointer}::slotted(input){cursor:text}:where(slot[name='indicator'] > *,::slotted([slot='indicator'])){all:unset;align-items:center;appearance:none;aspect-ratio:1;color:${colorNeutralForeground3};display:inline-flex;justify-content:center;width:20px}:host([size='small']) :where(slot[name='indicator'] > *,::slotted([slot='indicator'])){width:16px}:host([size='large']) :where(slot[name='indicator'] > *,::slotted([slot='indicator'])){width:24px}.control::after,.control::before{content:'' / '';inset:auto 0 0;pointer-events:none;position:absolute}.control::before{height:${strokeWidthThin}}.control::after{background-color:${colorCompoundBrandStroke};height:${strokeWidthThick};scale:0 1;transition:scale ${durationUltraFast} ${curveDecelerateMid}}:host(:where(:focus-within)) .control{border-radius:${borderRadiusMedium};box-shadow:inset 0 0 0 1px ${colorStrokeFocus1};outline:${strokeWidthThick} solid ${colorStrokeFocus2}}:host(:where(${openState},:focus-within)) .control::after{scale:1 1;transition-duration:${durationNormal};transition-timing-function:${curveAccelerateMid}}:host(:where([appearance='outline'],[appearance='transparent'])) .control::before{background-color:${colorNeutralStrokeAccessible}}:host([appearance='transparent']) .control{--control-border-color:${colorTransparentStrokeInteractive};background-color:${colorTransparentBackground};border-radius:${borderRadiusNone}}:host([appearance='outline']) .control{--control-border-color:${colorNeutralStroke1}}:host([appearance='outline']) .control:hover{--control-border-color:${colorNeutralStroke1Hover}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:hover::before{background-color:${colorNeutralStrokeAccessibleHover}}:host([appearance='outline']) .control:hover::after{background-color:${colorCompoundBrandBackgroundHover}}:host([appearance='outline']) .control:active{--control-border-color:${colorNeutralStroke1Pressed}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:active::before{background-color:${colorNeutralStrokeAccessiblePressed}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:active::after{background-color:${colorCompoundBrandBackgroundPressed}}:host([appearance='filled-darker']) .control{background-color:${colorNeutralBackground3}}:host(:where([appearance='filled-lighter'],[appearance='filled-darker'])) .control{--control-border-color:${colorTransparentStroke}}:host(:disabled),:host(:disabled) ::slotted(:where(button,input)){cursor:not-allowed}:host(:disabled) .control::before,:host(:disabled) .control::after{content:none}:host(:disabled) .control:is(*,:active,:hover),:host(:disabled) :where(slot[name='indicator'] > *,::slotted([slot='indicator'])){--control-border-color:${colorNeutralStrokeDisabled};background-color:${colorNeutralBackgroundDisabled};color:${colorNeutralForegroundDisabled}}::slotted([popover]:not(:popover-open)){display:none}@supports not (anchor-name:--anchor){:host{--listbox-max-height:50vh;--margin-offset:calc(${lineHeightBase300} + (${spacingVerticalSNudge} * 2) + ${strokeWidthThin})}:host([size='small']){--margin-offset:calc(${lineHeightBase200} + (${spacingVerticalXS} * 2) + ${strokeWidthThin})}:host([size='large']){--margin-offset:calc(${lineHeightBase400} + (${spacingVerticalS} * 2) + ${strokeWidthThin})}}@media (forced-colors:active){:host(:disabled) .control{border-color:GrayText}:host(:disabled) :where(slot[name='indicator'] > *,::slotted([slot='indicator'])){color:GrayText}`;
7818
7971
 
7819
7972
  const definition$t = Dropdown.compose({
7820
7973
  name: `${FluentDesignSystem.prefix}-dropdown`,
7821
7974
  template: template$t,
7822
- styles: styles$s,
7823
- shadowOptions: {
7824
- slotAssignment: "manual"
7825
- }
7975
+ styles: styles$s
7826
7976
  });
7827
7977
 
7828
7978
  definition$t.define(FluentDesignSystem.registry);
@@ -7887,15 +8037,6 @@ class BaseField extends FASTElement {
7887
8037
  */
7888
8038
  messageSlotChanged(prev, next) {
7889
8039
  toggleState(this.elementInternals, "has-message", !!next.length);
7890
- if (!next.length) {
7891
- this.removeEventListener("invalid", this.invalidHandler, {
7892
- capture: true
7893
- });
7894
- return;
7895
- }
7896
- this.addEventListener("invalid", this.invalidHandler, {
7897
- capture: true
7898
- });
7899
8040
  }
7900
8041
  /**
7901
8042
  * Sets the `input` property to the first slotted input.
@@ -7905,9 +8046,9 @@ class BaseField extends FASTElement {
7905
8046
  * @internal
7906
8047
  */
7907
8048
  slottedInputsChanged(prev, next) {
7908
- if (next?.length) {
7909
- this.input = next?.[0];
7910
- this.setStates();
8049
+ const filtered = next?.filter(node => node.nodeType === Node.ELEMENT_NODE) ?? [];
8050
+ if (filtered?.length) {
8051
+ this.input = filtered?.[0];
7911
8052
  }
7912
8053
  }
7913
8054
  /**
@@ -7920,6 +8061,11 @@ class BaseField extends FASTElement {
7920
8061
  if (next) {
7921
8062
  this.setStates();
7922
8063
  this.setLabelProperties();
8064
+ this.slottedInputObserver.observe(this.input, {
8065
+ attributes: true,
8066
+ attributeFilter: ["disabled", "required", "readonly"],
8067
+ subtree: true
8068
+ });
7923
8069
  }
7924
8070
  }
7925
8071
  /**
@@ -7945,6 +8091,22 @@ class BaseField extends FASTElement {
7945
8091
  }
7946
8092
  return true;
7947
8093
  }
8094
+ connectedCallback() {
8095
+ super.connectedCallback();
8096
+ this.addEventListener("invalid", this.invalidHandler, {
8097
+ capture: true
8098
+ });
8099
+ this.slottedInputObserver = new MutationObserver(() => {
8100
+ this.setStates();
8101
+ });
8102
+ }
8103
+ disconnectedCallback() {
8104
+ this.slottedInputObserver.disconnect();
8105
+ this.removeEventListener("invalid", this.invalidHandler, {
8106
+ capture: true
8107
+ });
8108
+ super.disconnectedCallback();
8109
+ }
7948
8110
  /**
7949
8111
  * Applies the `focus-visible` state to the element when the slotted input receives visible focus.
7950
8112
  *
@@ -7991,7 +8153,6 @@ class BaseField extends FASTElement {
7991
8153
  if (label instanceof HTMLLabelElement) {
7992
8154
  label.htmlFor = label.htmlFor || this.input.id;
7993
8155
  label.id = label.id || `${this.input.id}--label`;
7994
- label.setAttribute("aria-hidden", "true");
7995
8156
  this.input.setAttribute("aria-labelledby", label.id);
7996
8157
  }
7997
8158
  });
@@ -8011,7 +8172,7 @@ class BaseField extends FASTElement {
8011
8172
  }
8012
8173
  }
8013
8174
  setValidationStates() {
8014
- if (!this.input.validity) {
8175
+ if (!this.input?.validity) {
8015
8176
  return;
8016
8177
  }
8017
8178
  for (const [flag, value] of Object.entries(ValidationFlags)) {
@@ -8045,16 +8206,9 @@ __decorateClass$w([attr({
8045
8206
  const styles$r = css`
8046
8207
  ${display("inline-grid")}
8047
8208
 
8048
- :host{color:${colorNeutralForeground1};align-items:center;gap:0 ${spacingHorizontalM};justify-items:start;position:relative}:has([slot='message']){color:${colorNeutralForeground1};row-gap:${spacingVerticalS}}:not(::slotted([slot='label'])){gap:0}:host([label-position='before']){grid-template-areas:'label input' 'label message'}:host([label-position='after']){gap:0;grid-template-areas:'input label' 'message message';grid-template-columns:auto 1fr}:host([label-position='after']) ::slotted([slot='input']){margin-inline-end:${spacingHorizontalM}}:host([label-position='above']){grid-template-areas:'label' 'input' 'message';row-gap:${spacingVerticalXXS}}:host([label-position='below']){grid-template-areas:'input' 'label' 'message';justify-items:center}:host([label-position='below']) ::slotted([slot='label']){margin-block-start:${spacingVerticalM}}:host([label-position='below']:not(${hasMessageState})){grid-template-areas:'input' 'label'}::slotted([slot='label'])::after{content:'';display:block;position:absolute;inset:0}::slotted([slot='input']){grid-area:input;position:relative;z-index:1}::slotted([slot='message']){margin-block-start:${spacingVerticalXXS};grid-area:message}:host(${focusVisibleState}:focus-within){border-radius:${borderRadiusMedium};outline:${strokeWidthThick} solid ${colorStrokeFocus2}}::slotted(label),::slotted([slot='label']){cursor:inherit;display:inline-flex;font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};grid-area:label;line-height:${lineHeightBase300};user-select:none}:host([size='small']) ::slotted(label){font-size:${fontSizeBase200};line-height:${lineHeightBase200}}:host([size='large']) ::slotted(label){font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host([size='large']) ::slotted(label),:host([weight='semibold']) ::slotted(label){font-weight:${fontWeightSemibold}}:host(${disabledState}){cursor:default}::slotted([flag]){display:none}:host(${badInputState}) ::slotted([flag='${ValidationFlags.badInput}']),:host(${customErrorState}) ::slotted([flag='${ValidationFlags.customError}']),:host(${patternMismatchState}) ::slotted([flag='${ValidationFlags.patternMismatch}']),:host(${rangeOverflowState}) ::slotted([flag='${ValidationFlags.rangeOverflow}']),:host(${rangeUnderflowState}) ::slotted([flag='${ValidationFlags.rangeUnderflow}']),:host(${stepMismatchState}) ::slotted([flag='${ValidationFlags.stepMismatch}']),:host(${tooLongState}) ::slotted([flag='${ValidationFlags.tooLong}']),:host(${tooShortState}) ::slotted([flag='${ValidationFlags.tooShort}']),:host(${typeMismatchState}) ::slotted([flag='${ValidationFlags.typeMismatch}']),:host(${valueMissingState}) ::slotted([flag='${ValidationFlags.valueMissing}']),:host(${validState}) ::slotted([flag='${ValidationFlags.valid}']){display:block}`;
8209
+ :host{color:${colorNeutralForeground1};align-items:center;gap:0 ${spacingHorizontalM};justify-items:start}:has([slot='message']){color:${colorNeutralForeground1};row-gap:${spacingVerticalS}}:not(::slotted([slot='label'])){gap:0}:host([label-position='before']){grid-template-areas:'label input' 'label message'}:host([label-position='after']){gap:0;grid-template-areas:'input label' 'message message';grid-template-columns:auto 1fr}:host([label-position='after']) ::slotted([slot='input']){margin-inline-end:${spacingHorizontalM}}:host([label-position='above']){grid-template-areas:'label' 'input' 'message';row-gap:${spacingVerticalXXS}}:host([label-position='below']){grid-template-areas:'input' 'label' 'message';justify-items:center}:host([label-position='below']) ::slotted([slot='label']){margin-block-start:${spacingVerticalM}}:host(${requiredState}) ::slotted([slot='label'])::after{content:'*' / '';color:${colorPaletteRedForeground1};margin-inline-start:${spacingHorizontalXS}}::slotted([slot='input']){grid-area:input}::slotted([slot='message']){color:${colorNeutralForeground3};font-family:${fontFamilyBase};font-size:${fontSizeBase200};font-weight:${fontWeightRegular};grid-area:message;line-height:${lineHeightBase200};margin-block-start:${spacingVerticalXXS}}:host(${focusVisibleState}:focus-within){border-radius:${borderRadiusMedium};outline:${strokeWidthThick} solid ${colorStrokeFocus2}}::slotted(label),::slotted([slot='label']){cursor:inherit;display:inline-flex;font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};grid-area:label;line-height:${lineHeightBase300};justify-self:stretch;user-select:none}:host([size='small']) ::slotted(label){font-size:${fontSizeBase200};line-height:${lineHeightBase200}}:host([size='large']) ::slotted(label){font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host([size='large']) ::slotted(label),:host([weight='semibold']) ::slotted(label){font-weight:${fontWeightSemibold}}:host(${disabledState}){cursor:default}::slotted([flag]){display:none}:host(${badInputState}) ::slotted([flag='${ValidationFlags.badInput}']),:host(${customErrorState}) ::slotted([flag='${ValidationFlags.customError}']),:host(${patternMismatchState}) ::slotted([flag='${ValidationFlags.patternMismatch}']),:host(${rangeOverflowState}) ::slotted([flag='${ValidationFlags.rangeOverflow}']),:host(${rangeUnderflowState}) ::slotted([flag='${ValidationFlags.rangeUnderflow}']),:host(${stepMismatchState}) ::slotted([flag='${ValidationFlags.stepMismatch}']),:host(${tooLongState}) ::slotted([flag='${ValidationFlags.tooLong}']),:host(${tooShortState}) ::slotted([flag='${ValidationFlags.tooShort}']),:host(${typeMismatchState}) ::slotted([flag='${ValidationFlags.typeMismatch}']),:host(${valueMissingState}) ::slotted([flag='${ValidationFlags.valueMissing}']),:host(${validState}) ::slotted([flag='${ValidationFlags.valid}']){display:block}`;
8049
8210
 
8050
- const template$s = html`<template @click="${(x, c) => x.clickHandler(c.event)}" @change="${(x, c) => x.changeHandler(c.event)}" @focusin="${(x, c) => x.focusinHandler(c.event)}" @focusout="${(x, c) => x.focusoutHandler(c.event)}" ${children({
8051
- property: "slottedInputs",
8052
- attributes: true,
8053
- attributeFilter: ["disabled", "required", "readonly"],
8054
- subtree: true,
8055
- selector: '[slot="input"]',
8056
- filter: elements()
8057
- })}><slot name="label" part="label" ${slotted("labelSlot")}></slot><slot name="input" part="input"></slot><slot name="message" part="message" ${slotted({
8211
+ const template$s = html`<template @click="${(x, c) => x.clickHandler(c.event)}" @change="${(x, c) => x.changeHandler(c.event)}" @focusin="${(x, c) => x.focusinHandler(c.event)}" @focusout="${(x, c) => x.focusoutHandler(c.event)}"><slot name="label" part="label" ${slotted("labelSlot")}></slot><slot name="input" part="input" ${slotted("slottedInputs")}></slot><slot name="message" part="message" ${slotted({
8058
8212
  property: "messageSlot",
8059
8213
  filter: elements("[flag]")
8060
8214
  })}></slot></template>`;
@@ -8134,7 +8288,7 @@ const styles$p = css`
8134
8288
  :host{color:${colorNeutralForeground1};cursor:pointer;font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};line-height:${lineHeightBase300};user-select:none}.asterisk{color:${colorPaletteRedForeground1};margin-inline-start:${spacingHorizontalXS}}:host([size='small']){font-size:${fontSizeBase200};line-height:${lineHeightBase200}}:host([size='large']){font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host(:is([size='large'],[weight='semibold'])){font-weight:${fontWeightSemibold}}:host([disabled]),:host([disabled]) .asterisk{color:${colorNeutralForegroundDisabled}}`;
8135
8289
 
8136
8290
  function labelTemplate() {
8137
- return html`<slot></slot><span part="asterisk" class="asterisk" ?hidden="${x => !x.required}">*</span>`;
8291
+ return html`<slot></slot><span part="asterisk" class="asterisk" aria-hidden="true" ?hidden="${x => !x.required}">*</span>`;
8138
8292
  }
8139
8293
  const template$q = labelTemplate();
8140
8294
 
@@ -8283,10 +8437,6 @@ class Listbox extends FASTElement {
8283
8437
  }
8284
8438
  return true;
8285
8439
  }
8286
- connectedCallback() {
8287
- super.connectedCallback();
8288
- this.$emit("connected");
8289
- }
8290
8440
  /**
8291
8441
  * Handles observable subscriptions for the listbox.
8292
8442
  *
@@ -8326,6 +8476,20 @@ class Listbox extends FASTElement {
8326
8476
  }
8327
8477
  this.selectedIndex = selectedIndex;
8328
8478
  }
8479
+ /**
8480
+ * Handles the `slotchange` event for the default slot.
8481
+ * Sets the `options` property to the list of slotted options.
8482
+ *
8483
+ * @param e - The slotchange event
8484
+ * @public
8485
+ */
8486
+ slotchangeHandler(e) {
8487
+ const target = e.target;
8488
+ waitForConnectedDescendants(this, () => {
8489
+ const options = target.assignedElements().filter(option => isDropdownOption(option));
8490
+ this.options = options;
8491
+ });
8492
+ }
8329
8493
  }
8330
8494
  __decorateClass$s([attr({
8331
8495
  attribute: "id",
@@ -8339,13 +8503,10 @@ __decorateClass$s([observable], Listbox.prototype, "dropdown", 2);
8339
8503
  const styles$n = css`
8340
8504
  ${display("inline-flex")}
8341
8505
 
8342
- :host{background-color:${colorNeutralBackground1};border-radius:${borderRadiusMedium};border:none;box-shadow:${shadow16};box-sizing:border-box;flex-direction:column;margin:0;min-width:160px;padding:${spacingHorizontalXS};row-gap:${spacingHorizontalXXS};width:auto}`;
8506
+ :host{background-color:${colorNeutralBackground1};border-radius:${borderRadiusMedium};border:${strokeWidthThin} solid ${colorTransparentStroke};box-shadow:${shadow16};box-sizing:border-box;flex-direction:column;margin:0;min-width:160px;padding:${spacingHorizontalXS};row-gap:${spacingHorizontalXXS};width:auto}:host([popover]){inset:unset;overflow:auto}@supports (anchor-name:--anchor){:host([popover]){position:absolute;margin-block-start:0;max-height:var(--listbox-max-height,calc(50vh - anchor-size(self-block)));min-width:anchor-size(width);position-anchor:--dropdown;position-area:block-end span-inline-end;position-try-fallbacks:flip-inline,flip-block,--flip-block,block-start}@position-try --flip-block{bottom:anchor(top);top:unset}}@supports not (anchor-name:--anchor){:host([popover]){margin-block-start:var(--margin-offset,0);max-height:var(--listbox-max-height,50vh);position:fixed}:host([popover]${flipBlockState}){margin-block-start:revert;translate:0 -100%}}`;
8343
8507
 
8344
8508
  function listboxTemplate() {
8345
- return html`<template id="${x => x.id}" @beforetoggle="${(x, c) => x.beforetoggleHandler(c.event)}" @click="${(x, c) => x.clickHandler(c.event)}"><slot ${slotted({
8346
- property: "options",
8347
- filter: node => isDropdownOption(node)
8348
- })}></slot></template>`;
8509
+ return html`<template id="${x => x.id}" @beforetoggle="${(x, c) => x.beforetoggleHandler(c.event)}" @click="${(x, c) => x.clickHandler(c.event)}"><slot @slotchange="${(x, c) => x.slotchangeHandler(c.event)}"></slot></template>`;
8349
8510
  }
8350
8511
  const template$o = listboxTemplate();
8351
8512
 
@@ -8360,7 +8521,7 @@ definition$o.define(FluentDesignSystem.registry);
8360
8521
  class MenuButton extends Button {}
8361
8522
 
8362
8523
  const template$n = buttonTemplate$1({
8363
- end: html.partial( /* html */
8524
+ end: html.partial(/* html */
8364
8525
  `
8365
8526
  <svg slot="end" fill="currentColor" aria-hidden="true" width="1em" height="1em" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
8366
8527
  <path d="M15.85 7.65c.2.2.2.5 0 .7l-5.46 5.49a.55.55 0 0 1-.78 0L4.15 8.35a.5.5 0 1 1 .7-.7L10 12.8l5.15-5.16c.2-.2.5-.2.7 0Z" fill="currentColor"></path>
@@ -8395,6 +8556,12 @@ const MenuItemRole = {
8395
8556
  [MenuItemRole.menuitemcheckbox]: "menuitemcheckbox",
8396
8557
  [MenuItemRole.menuitemradio]: "menuitemradio"
8397
8558
  });
8559
+ function isMenuItem(element, tagName = "-menu-item") {
8560
+ if (element?.nodeType !== Node.ELEMENT_NODE) {
8561
+ return false;
8562
+ }
8563
+ return element.tagName.toLowerCase().endsWith(tagName);
8564
+ }
8398
8565
 
8399
8566
  var __defProp$r = Object.defineProperty;
8400
8567
  var __getOwnPropDesc$r = Object.getOwnPropertyDescriptor;
@@ -8607,7 +8774,7 @@ applyMixins(MenuItem, StartEnd);
8607
8774
  const styles$m = css`
8608
8775
  ${display("grid")}
8609
8776
 
8610
- :host{--indent:0;align-items:center;background:${colorNeutralBackground1};border-radius:${borderRadiusMedium};color:${colorNeutralForeground2};contain:layout;cursor:pointer;flex-shrink:0;font:${fontWeightRegular} ${fontSizeBase300} / ${lineHeightBase300} ${fontFamilyBase};grid-gap:4px;grid-template-columns:20px 20px auto 20px;height:32px;overflow:visible;padding:0 10px}:host(:hover){background:${colorNeutralBackground1Hover};color:${colorNeutralForeground2Hover}}:host(:active){background-color:${colorNeutralBackground1Selected};color:${colorNeutralForeground2Pressed}}:host(:active) ::slotted([slot='start']){color:${colorCompoundBrandForeground1Pressed}}:host(${disabledState}){background-color:${colorNeutralBackgroundDisabled};color:${colorNeutralForegroundDisabled}}:host(${disabledState}) ::slotted([slot='start']),:host(${disabledState}) ::slotted([slot='end']){color:${colorNeutralForegroundDisabled}}:host(:focus-visible){border-radius:${borderRadiusMedium};outline:2px solid ${colorStrokeFocus2}}.content{white-space:nowrap;flex-grow:1;grid-column:auto / span 2;padding:0 2px}:host(:not(${checkedState})) .indicator,:host(:not(${checkedState})) ::slotted([slot='indicator']),:host(:not(${submenuState})) .submenu-glyph,:host(:not(${submenuState})) ::slotted([slot='submenu-glyph']){display:none}::slotted([slot='end']){color:${colorNeutralForeground3};font:${fontWeightRegular} ${fontSizeBase200} / ${lineHeightBase200} ${fontFamilyBase};white-space:nowrap}:host([data-indent='1']){--indent:1}:host([data-indent='2']){--indent:2;grid-template-columns:20px 20px auto auto}:host(${submenuState}){grid-template-columns:20px auto auto 20px}:host([data-indent='2']${submenuState}){grid-template-columns:20px 20px auto auto 20px}.indicator,::slotted([slot='indicator']){grid-column:1 / span 1;width:20px}::slotted([slot='start']){display:inline-flex;grid-column:calc(var(--indent)) / span 1}.content{grid-column:calc(var(--indent) + 1) / span 1}::slotted([slot='end']){grid-column:calc(var(--indent) + 2) / span 1;justify-self:end}.submenu-glyph,::slotted([slot='submenu-glyph']){grid-column:-2 / span 1;justify-self:end}@layer popover{:host{anchor-name:--menu-trigger;position:relative}::slotted([popover]){margin:0;max-height:var(--menu-max-height,auto);position:absolute;position-anchor:--menu-trigger;position-area:inline-end span-block-end;position-try-fallbacks:flip-inline;z-index:1}::slotted([popover]:not(:popover-open)){display:none}::slotted([popover]:popover-open){inset:unset}@supports not (anchor-name:--menu-trigger){::slotted([popover]){align-self:start}}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
8777
+ :host{--indent:0;align-items:center;background:${colorNeutralBackground1};border-radius:${borderRadiusMedium};color:${colorNeutralForeground2};contain:layout;cursor:pointer;flex-shrink:0;font:${fontWeightRegular} ${fontSizeBase300} / ${lineHeightBase300} ${fontFamilyBase};grid-gap:4px;grid-template-columns:20px 20px auto 20px;height:32px;overflow:visible;padding:0 10px}:host(:hover){background:${colorNeutralBackground1Hover};color:${colorNeutralForeground2Hover}}:host(:active){background-color:${colorNeutralBackground1Selected};color:${colorNeutralForeground2Pressed}}:host(:active) ::slotted([slot='start']){color:${colorCompoundBrandForeground1Pressed}}:host(${disabledState}){background-color:${colorNeutralBackgroundDisabled};color:${colorNeutralForegroundDisabled}}:host(${disabledState}) ::slotted([slot='start']),:host(${disabledState}) ::slotted([slot='end']){color:${colorNeutralForegroundDisabled}}:host(:focus-visible){border-radius:${borderRadiusMedium};outline:2px solid ${colorStrokeFocus2}}.content{white-space:nowrap;flex-grow:1;grid-column:auto / span 2;padding:0 2px}:host(:not(${checkedState})) .indicator,:host(:not(${checkedState})) ::slotted([slot='indicator']),:host(:not(${submenuState})) .submenu-glyph,:host(:not(${submenuState})) ::slotted([slot='submenu-glyph']){display:none}::slotted([slot='end']){color:${colorNeutralForeground3};font:${fontWeightRegular} ${fontSizeBase200} / ${lineHeightBase200} ${fontFamilyBase};white-space:nowrap}:host([data-indent='1']){--indent:1}:host([data-indent='2']){--indent:2;grid-template-columns:20px 20px auto auto}:host(${submenuState}){grid-template-columns:20px auto auto 20px}:host([data-indent='2']${submenuState}){grid-template-columns:20px 20px auto auto 20px}.indicator,::slotted([slot='indicator']){grid-column:1 / span 1;width:20px}::slotted([slot='start']){display:inline-flex;grid-column:calc(var(--indent)) / span 1}.content{grid-column:calc(var(--indent) + 1) / span 1}::slotted([slot='end']){grid-column:calc(var(--indent) + 2) / span 1;justify-self:end}.submenu-glyph,::slotted([slot='submenu-glyph']){grid-column:-2 / span 1;justify-self:end}@layer popover{:host{anchor-name:--menu-trigger;position:relative}::slotted([popover]){margin:0;max-height:var(--menu-max-height,auto);position:absolute;position-anchor:--menu-trigger;position-area:inline-end span-block-end;position-try-fallbacks:flip-inline,block-start,block-end;z-index:1}::slotted([popover]:not(:popover-open)){display:none}::slotted([popover]:popover-open){inset:unset}@supports not (anchor-name:--menu-trigger){::slotted([popover]){align-self:start}}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
8611
8778
  :host(${disabledState}),:host(${disabledState}) ::slotted([slot='start']),:host(${disabledState}) ::slotted([slot='end']){color:GrayText}`));
8612
8779
 
8613
8780
  const Checkmark16Filled = html.partial(`<svg class="indicator" fill="currentColor" aria-hidden="true" width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.05 3.49c.28.3.27.77-.04 1.06l-7.93 7.47A.85.85 0 014.9 12L2.22 9.28a.75.75 0 111.06-1.06l2.24 2.27 7.47-7.04a.75.75 0 011.06.04z" fill="currentColor"></path></svg>`);
@@ -8718,7 +8885,7 @@ const _MenuList = class _MenuList extends FASTElement {
8718
8885
  * check if the item is a menu item
8719
8886
  */
8720
8887
  this.isMenuItemElement = el => {
8721
- return el instanceof MenuItem || isHTMLElement(el) && el.getAttribute("role") in _MenuList.focusableElementRoles;
8888
+ return isMenuItem(el) || isHTMLElement(el) && el.getAttribute("role") in _MenuList.focusableElementRoles;
8722
8889
  };
8723
8890
  /**
8724
8891
  * check if the item is focusable
@@ -8818,9 +8985,7 @@ const _MenuList = class _MenuList extends FASTElement {
8818
8985
  return Math.max(accum, elementValue);
8819
8986
  }, 0);
8820
8987
  filteredMenuListItems?.forEach(item => {
8821
- if (item instanceof MenuItem) {
8822
- item.setAttribute("data-indent", `${indent}`);
8823
- }
8988
+ item.dataset.indent = `${indent}`;
8824
8989
  });
8825
8990
  }
8826
8991
  /**
@@ -8931,10 +9096,12 @@ class Menu extends FASTElement {
8931
9096
  */
8932
9097
  this.toggleHandler = e => {
8933
9098
  if (e.type === "toggle" && e.newState) {
8934
- const newState = e.newState === "open" ? true : false;
9099
+ const newState = e.newState === "open";
8935
9100
  this._trigger?.setAttribute("aria-expanded", `${newState}`);
8936
9101
  this._open = newState;
8937
- this.focusMenuList();
9102
+ if (this._open) {
9103
+ this.focusMenuList();
9104
+ }
8938
9105
  }
8939
9106
  };
8940
9107
  /**
@@ -8977,7 +9144,9 @@ class Menu extends FASTElement {
8977
9144
  */
8978
9145
  connectedCallback() {
8979
9146
  super.connectedCallback();
8980
- Updates.enqueue(() => this.setComponent());
9147
+ queueMicrotask(() => {
9148
+ this.setComponent();
9149
+ });
8981
9150
  }
8982
9151
  /**
8983
9152
  * Called when the element is disconnected from the DOM.
@@ -9332,6 +9501,7 @@ class DropdownOption extends FASTElement {
9332
9501
  disabledChanged(prev, next) {
9333
9502
  this.elementInternals.ariaDisabled = this.disabled ? "true" : "false";
9334
9503
  toggleState(this.elementInternals, "disabled", this.disabled);
9504
+ this.setFormValue(!this.disabled && this.selected ? this.value : null);
9335
9505
  }
9336
9506
  /**
9337
9507
  * Sets the disabled state when the `disabled` attribute changes.
@@ -9510,10 +9680,10 @@ const styles$i = css`
9510
9680
  ${display("inline-grid")}
9511
9681
 
9512
9682
  :host{-webkit-tap-highlight-color:transparent;${typographyBody1Styles}
9513
- align-items:center;background-color:${colorNeutralBackground1};border-radius:${borderRadiusMedium};border:${strokeWidthThick} solid ${colorTransparentStroke};box-sizing:border-box;color:${colorNeutralForeground2};column-gap:${spacingHorizontalXS};cursor:pointer;grid-template-areas:'indicator start content';grid-template-columns:auto auto 1fr;min-height:32px;padding:${spacingHorizontalSNudge}}.content{grid-area:content;line-height:1}::slotted([slot='start']){grid-area:start}:host(:hover){background-color:${colorNeutralBackground1Hover};color:${colorNeutralForeground2Hover}}:host(:active){background-color:${colorNeutralBackground1Pressed};color:${colorNeutralForeground2Pressed}}:host(:disabled){background-color:${colorNeutralBackground1};color:${colorNeutralForegroundDisabled};cursor:default}.checkmark-16-filled{fill:currentColor;width:16px}slot[name='checked-indicator'] > *,::slotted([slot='checked-indicator']){aspect-ratio:1;flex:0 0 auto;grid-area:indicator;visibility:hidden}:host(${selectedState}) :is(slot[name='checked-indicator'] > *,::slotted([slot='checked-indicator'])){visibility:visible}:host(${multipleState}) .checkmark-16-filled,:host(:not(${multipleState})) .checkmark-12-regular{display:none}:host(${multipleState}) .checkmark-12-regular{background-color:${colorNeutralBackground1};border-radius:${borderRadiusSmall};border:${strokeWidthThin} solid ${colorNeutralStrokeAccessible};box-sizing:border-box;cursor:pointer;fill:transparent;position:relative;visibility:visible;width:16px}:host(${multipleState}${selectedState}) .checkmark-12-regular{background-color:${colorCompoundBrandBackground};border-color:${colorCompoundBrandStroke};fill:${colorNeutralForegroundInverted}}:host(:disabled${multipleState}) .checkmark-12-regular{border-color:${colorNeutralStrokeDisabled}}:host(:disabled${multipleState}${selectedState}) .checkmark-12-regular{background-color:${colorNeutralBackgroundDisabled}}:host(${activeState}){border:${strokeWidthThick} solid ${colorStrokeFocus2}}@supports (selector(:host(:has(*)))){:host(:has([slot='start']:not([size='16']))){column-gap:${spacingHorizontalSNudge}}}:host(${descriptionState}){column-gap:${spacingHorizontalSNudge};grid-template-areas:'indicator start content'
9514
- 'indicator start description'}::slotted([slot='description']){color:${colorNeutralForeground3};grid-area:description;${typographyCaption1Styles}}`;
9683
+ align-items:center;background-color:${colorNeutralBackground1};border-radius:${borderRadiusMedium};box-sizing:border-box;color:${colorNeutralForeground2};column-gap:${spacingHorizontalXS};cursor:pointer;grid-template-areas:'indicator start content';grid-template-columns:auto auto 1fr;min-height:32px;padding:${spacingHorizontalSNudge};text-align:start}.content{grid-area:content;line-height:1}::slotted([slot='start']){grid-area:start}:host(:hover){background-color:${colorNeutralBackground1Hover};color:${colorNeutralForeground2Hover}}:host(:active){background-color:${colorNeutralBackground1Pressed};color:${colorNeutralForeground2Pressed}}:host(:disabled){background-color:${colorNeutralBackground1};color:${colorNeutralForegroundDisabled};cursor:default}.checkmark-16-filled{fill:currentColor;width:16px}slot[name='checked-indicator'] > *,::slotted([slot='checked-indicator']){aspect-ratio:1;flex:0 0 auto;grid-area:indicator;visibility:hidden}:host(${selectedState}) :is(slot[name='checked-indicator'] > *,::slotted([slot='checked-indicator'])){visibility:visible}:host(${multipleState}) .checkmark-16-filled,:host(:not(${multipleState})) .checkmark-12-regular{display:none}:host(${multipleState}) .checkmark-12-regular{background-color:${colorNeutralBackground1};border-radius:${borderRadiusSmall};border:${strokeWidthThin} solid ${colorNeutralStrokeAccessible};box-sizing:border-box;cursor:pointer;fill:transparent;position:relative;visibility:visible;width:16px}:host(${multipleState}${selectedState}) .checkmark-12-regular{background-color:${colorCompoundBrandBackground};border-color:${colorCompoundBrandStroke};fill:${colorNeutralForegroundInverted}}:host(:disabled${multipleState}) .checkmark-12-regular{border-color:${colorNeutralStrokeDisabled}}:host(:disabled${multipleState}${selectedState}) .checkmark-12-regular{background-color:${colorNeutralBackgroundDisabled}}:host(${activeState}){border:${strokeWidthThick} solid ${colorStrokeFocus2}}@supports (selector(:host(:has(*)))){:host(:has([slot='start']:not([size='16']))){column-gap:${spacingHorizontalSNudge}}}:host(${descriptionState}){column-gap:${spacingHorizontalSNudge};grid-template-areas:'indicator start content'
9684
+ 'indicator start description'}::slotted([slot='description']){color:${colorNeutralForeground3};grid-area:description;${typographyCaption1Styles}}@media (forced-colors:active){:host(:disabled){color:GrayText}}`;
9515
9685
 
9516
- const checkedIndicator$1 = html.partial( /* html */
9686
+ const checkedIndicator$1 = html.partial(/* html */
9517
9687
  `
9518
9688
  <svg aria-hidden="true" class="checkmark-16-filled" viewBox="0 0 16 16">
9519
9689
  <path
@@ -9585,6 +9755,7 @@ class BaseProgressBar extends FASTElement {
9585
9755
  */
9586
9756
  valueChanged(prev, next) {
9587
9757
  this.elementInternals.ariaValueNow = typeof next === "number" ? `${next}` : null;
9758
+ this.setIndicatorWidth();
9588
9759
  }
9589
9760
  /**
9590
9761
  * Updates the percent complete when the `min` property changes.
@@ -9594,6 +9765,7 @@ class BaseProgressBar extends FASTElement {
9594
9765
  */
9595
9766
  minChanged(prev, next) {
9596
9767
  this.elementInternals.ariaValueMin = typeof next === "number" ? `${next}` : null;
9768
+ this.setIndicatorWidth();
9597
9769
  }
9598
9770
  /**
9599
9771
  * Updates the percent complete when the `max` property changes.
@@ -9604,15 +9776,29 @@ class BaseProgressBar extends FASTElement {
9604
9776
  */
9605
9777
  maxChanged(prev, next) {
9606
9778
  this.elementInternals.ariaValueMax = typeof next === "number" ? `${next}` : null;
9779
+ this.setIndicatorWidth();
9780
+ }
9781
+ connectedCallback() {
9782
+ super.connectedCallback();
9783
+ this.setIndicatorWidth();
9607
9784
  }
9608
- get percentComplete() {
9785
+ setIndicatorWidth() {
9786
+ if (!this.$fastController.isConnected || CSS.supports("width: attr(value type(<number>))")) {
9787
+ return;
9788
+ }
9789
+ if (typeof this.value !== "number") {
9790
+ this.indicator.style.removeProperty("width");
9791
+ return;
9792
+ }
9609
9793
  const min = this.min ?? 0;
9610
9794
  const max = this.max ?? 100;
9611
9795
  const value = this.value ?? 0;
9612
9796
  const range = max - min;
9613
- return range === 0 ? 0 : Math.fround((value - min) / range * 100);
9797
+ const width = range === 0 ? 0 : Math.fround((value - min) / range * 100);
9798
+ this.indicator.style.setProperty("width", `${width}%`);
9614
9799
  }
9615
9800
  }
9801
+ __decorateClass$m([observable], BaseProgressBar.prototype, "indicator", 2);
9616
9802
  __decorateClass$m([attr({
9617
9803
  attribute: "validation-state"
9618
9804
  })], BaseProgressBar.prototype, "validationState", 2);
@@ -9625,7 +9811,6 @@ __decorateClass$m([attr({
9625
9811
  __decorateClass$m([attr({
9626
9812
  converter: nullableNumberConverter
9627
9813
  })], BaseProgressBar.prototype, "max", 2);
9628
- __decorateClass$m([volatile], BaseProgressBar.prototype, "percentComplete", 1);
9629
9814
 
9630
9815
  var __defProp$l = Object.defineProperty;
9631
9816
  var __getOwnPropDesc$l = Object.getOwnPropertyDescriptor;
@@ -9642,13 +9827,13 @@ __decorateClass$l([attr], ProgressBar.prototype, "shape", 2);
9642
9827
  const styles$h = css`
9643
9828
  ${display("block")}
9644
9829
 
9645
- :host{width:100%;height:2px;overflow-x:hidden;background-color:${colorNeutralBackground6};border-radius:${borderRadiusMedium};contain:content}:host([thickness='large']){height:4px}:host([shape='square']){border-radius:${borderRadiusNone}}.indicator{background-color:${colorCompoundBrandBackground};border-radius:inherit;height:100%}:host([value]) .indicator{transition:all 0.2s ease-in-out}:host(:not([value])) .indicator{position:relative;width:33%;background-image:linear-gradient(
9830
+ :host{width:100%;height:2px;overflow-x:hidden;background-color:${colorNeutralBackground6};border-radius:${borderRadiusMedium};contain:content;@supports (width:attr(value type(<number>))){--max:attr(max type(<number>),100);--min:attr(min type(<number>),0);--value:attr(value type(<number>),0);--indicator-width:clamp(0%,calc((var(--value) - var(--min)) / (var(--max) - var(--min)) * 100%),100%)}}:host([thickness='large']){height:4px}:host([shape='square']){border-radius:${borderRadiusNone}}.indicator{background-color:${colorCompoundBrandBackground};border-radius:inherit;height:100%}:host([value]) .indicator{transition:all 0.2s ease-in-out;@supports (width:attr(value type(<number>))){width:var(--indicator-width)}}:host(:not([value])) .indicator{position:relative;width:33%;background-image:linear-gradient(
9646
9831
  to right,${colorNeutralBackground6} 0%,${colorTransparentBackground} 50%,${colorNeutralBackground6} 100%
9647
9832
  );animation-name:indeterminate;animation-duration:3s;animation-timing-function:linear;animation-iteration-count:infinite}:host([validation-state='error']) .indicator{background-color:${colorPaletteRedBackground3}}:host([validation-state='warning']) .indicator{background-color:${colorPaletteDarkOrangeBackground3}}:host([validation-state='success']) .indicator{background-color:${colorPaletteGreenBackground3}}@layer animations{@media (prefers-reduced-motion:no-preference){:host([value]){transition:none}:host(:not([value])) .indicator{animation-duration:0.01ms;animation-iteration-count:1}}}@keyframes indeterminate{0%{inset-inline-start:-33%}100%{inset-inline-start:100%}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
9648
9833
  :host{background-color:CanvasText}.indicator,:host(:is([validation-state='success'],[validation-state='warning'],[validation-state='error'])) .indicator{background-color:Highlight}`));
9649
9834
 
9650
9835
  function progressTemplate() {
9651
- return html`<div class="indicator" part="indicator" style="${x => typeof x.value === "number" ? `width: ${x.percentComplete}%` : void 0}"></div>`;
9836
+ return html`<div class="indicator" part="indicator" ${ref("indicator")}></div>`;
9652
9837
  }
9653
9838
  const template$h = progressTemplate();
9654
9839
 
@@ -9661,10 +9846,6 @@ const definition$h = ProgressBar.compose({
9661
9846
  definition$h.define(FluentDesignSystem.registry);
9662
9847
 
9663
9848
  class Radio extends BaseCheckbox {
9664
- connectedCallback() {
9665
- super.connectedCallback();
9666
- this.tabIndex = this.disabled ? -1 : 0;
9667
- }
9668
9849
  constructor() {
9669
9850
  super();
9670
9851
  this.elementInternals.role = "radio";
@@ -9679,9 +9860,6 @@ class Radio extends BaseCheckbox {
9679
9860
  */
9680
9861
  disabledChanged(prev, next) {
9681
9862
  super.disabledChanged(prev, next);
9682
- if (next) {
9683
- this.tabIndex = -1;
9684
- }
9685
9863
  this.$emit("disabled", next, {
9686
9864
  bubbles: true
9687
9865
  });
@@ -9792,7 +9970,7 @@ class RadioGroup extends FASTElement {
9792
9970
  if (this.$fastController.isConnected) {
9793
9971
  this.checkedIndex = -1;
9794
9972
  this.radios?.forEach(radio => {
9795
- radio.disabled = radio.disabledAttribute || this.disabled;
9973
+ radio.disabled = !!radio.disabledAttribute || !!this.disabled;
9796
9974
  });
9797
9975
  this.restrictFocus();
9798
9976
  }
@@ -9852,12 +10030,20 @@ class RadioGroup extends FASTElement {
9852
10030
  radio.checked = index === checkedIndex;
9853
10031
  }
9854
10032
  radio.name = this.name ?? radio.name;
9855
- radio.disabled = this.disabled || radio.disabledAttribute;
10033
+ radio.disabled = !!this.disabled || !!radio.disabledAttribute;
9856
10034
  });
9857
10035
  if (!this.dirtyState && this.initialValue) {
9858
10036
  this.value = this.initialValue;
9859
10037
  }
9860
- if (!this.value) {
10038
+ if (!this.value ||
10039
+ // This logic covers the case when the RadioGroup doesn't have a `value`
10040
+ // attribute, but does have a checked child Radio. Without this condition,
10041
+ // the checked Radio's value will be assigned to `this.value`, and
10042
+ // `checkedIndex` will be the checked Radio's index, but `this.checkedIndex`
10043
+ // will remain `undefined`, which would cause the RadioGroup to add
10044
+ // `tabindex=-1` to the checked Radio, and effectively makes the whole
10045
+ // RadioGroup unfocusable.
10046
+ this.value && typeof this.checkedIndex !== "number" && checkedIndex >= 0) {
9861
10047
  this.checkedIndex = checkedIndex;
9862
10048
  }
9863
10049
  const radioIds = next.map(radio => radio.id).join(" ").trim();
@@ -10145,17 +10331,43 @@ class RadioGroup extends FASTElement {
10145
10331
  * @param anchor - Optional anchor to use for the validation message.
10146
10332
  *
10147
10333
  * @internal
10334
+ * @remarks
10335
+ * RadioGroup validation is reported through the individual Radio elements rather than the RadioGroup itself.
10336
+ * This is necessary because:
10337
+ * 1. Each Radio is form-associated (extends BaseCheckbox which has `formAssociated = true`)
10338
+ * 2. Browser validation UIs and screen readers announce validation against individual form controls
10339
+ * 3. For groups like RadioGroup, the browser needs to report the error on a specific member of the group
10340
+ * 4. We anchor the error to the first Radio so it receives focus and announcement
10341
+ *
10342
+ * When the group is invalid (required but no selection):
10343
+ * - Only the first Radio gets the invalid state with the validation message
10344
+ * - Other Radios are kept valid since selecting any of them would satisfy the requirement
10345
+ *
10346
+ * When the group becomes valid (user selects any Radio):
10347
+ * - All Radios are cleared back to valid state
10348
+ * - This allows form submission to proceed
10148
10349
  */
10149
10350
  setValidity(flags, message, anchor) {
10150
10351
  if (this.$fastController.isConnected) {
10151
- if (this.disabled || !this.required) {
10152
- this.elementInternals.setValidity({});
10352
+ const isInvalid = this.required && !this.value && !this.disabled;
10353
+ if (!isInvalid) {
10354
+ this.enabledRadios?.forEach(radio => {
10355
+ radio.elementInternals.setValidity({});
10356
+ });
10153
10357
  return;
10154
10358
  }
10155
- this.elementInternals.setValidity({
10156
- valueMissing: this.required && !this.value,
10359
+ const validationFlags = {
10360
+ valueMissing: true,
10157
10361
  ...flags
10158
- }, message ?? this.validationMessage, anchor ?? this.enabledRadios[0]);
10362
+ };
10363
+ const validationMessage = message ?? this.validationMessage;
10364
+ this.enabledRadios?.forEach((radio, index) => {
10365
+ if (index === 0) {
10366
+ radio.elementInternals.setValidity(validationFlags, validationMessage, radio);
10367
+ } else {
10368
+ radio.elementInternals.setValidity({});
10369
+ }
10370
+ });
10159
10371
  }
10160
10372
  }
10161
10373
  /**
@@ -10196,7 +10408,7 @@ __decorateClass$k([attr({
10196
10408
  const styles$g = css`
10197
10409
  ${display("flex")}
10198
10410
 
10199
- :host{-webkit-tap-highlight-color:transparent;cursor:pointer;gap:${spacingVerticalL}}:host([orientation='vertical']){flex-direction:column;justify-content:flex-start}:host([orientation='horizontal']){flex-direction:row}::slotted(*){color:${colorNeutralForeground3}}::slotted(:hover){color:${colorNeutralForeground2}}::slotted(:active){color:${colorNeutralForeground1}}::slotted(${disabledState}){color:${colorNeutralForegroundDisabled}}::slotted(${checkedState}){color:${colorNeutralForeground1}}`;
10411
+ :host{-webkit-tap-highlight-color:transparent;cursor:pointer;gap:${spacingVerticalL}}:host([orientation='vertical']){flex-direction:column;justify-content:flex-start}:host([orientation='horizontal']){flex-direction:row}::slotted(*){color:${colorNeutralForeground3}}::slotted(:hover){color:${colorNeutralForeground2}}::slotted(:active){color:${colorNeutralForeground1}}::slotted(${disabledState}){color:${colorNeutralForegroundDisabled}}::slotted(${checkedState}){color:${colorNeutralForeground1}}:host([slot='input']){margin:${spacingVerticalS} ${spacingHorizontalS}}`;
10200
10412
 
10201
10413
  function radioGroupTemplate() {
10202
10414
  return html`<template @disabled="${(x, c) => x.disabledRadioHandler(c.event)}" @change="${(x, c) => x.changeHandler(c.event)}" @click="${(x, c) => x.clickHandler(c.event)}" @focusin="${(x, c) => x.focusinHandler(c.event)}" @focusout="${(x, c) => x.focusoutHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}"><slot @slotchange="${(x, c) => x.slotchangeHandler(c.event)}"></slot></template>`;
@@ -10217,7 +10429,7 @@ const styles$f = css`
10217
10429
  :host{--size:16px;aspect-ratio:1;background-color:${colorNeutralBackground1};border:${strokeWidthThin} solid ${colorNeutralStrokeAccessible};border-radius:${borderRadiusCircular};box-sizing:border-box;position:relative;width:var(--size)}:host([size='large']){--size:20px}.checked-indicator{aspect-ratio:1;border-radius:${borderRadiusCircular};color:${colorNeutralForegroundInverted};inset:0;margin:auto;position:absolute;width:calc(var(--size) * 0.625)}:host(:not([slot='input']))::after{content:'' / '';position:absolute;display:block;inset:-8px;box-sizing:border-box;outline:none;border:${strokeWidthThick} solid ${colorTransparentStroke};border-radius:${borderRadiusMedium}}:host(:not([slot='input']):focus-visible)::after{border-color:${colorStrokeFocus2}}:host(:hover){border-color:${colorNeutralStrokeAccessibleHover}}:host(${checkedState}){border-color:${colorCompoundBrandStroke}}:host(${checkedState}) .checked-indicator{background-color:${colorCompoundBrandBackground}}:host(${checkedState}:hover) .checked-indicator{background-color:${colorCompoundBrandBackgroundHover}}:host(:active){border-color:${colorNeutralStrokeAccessiblePressed}}:host(${checkedState}:active) .checked-indicator{background-color:${colorCompoundBrandBackgroundPressed}}:host(:focus-visible){outline:none}:host(${disabledState}){background-color:${colorNeutralBackgroundDisabled};border-color:${colorNeutralStrokeDisabled}}:host(${checkedState}${disabledState}) .checked-indicator{background-color:${colorNeutralStrokeDisabled}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
10218
10430
  :host{border-color:FieldText}:host(:not([slot='input']:focus-visible))::after{border-color:Canvas}:host(:not(${disabledState}):hover),:host(:not([slot='input']):focus-visible)::after{border-color:Highlight}.checked-indicator{color:HighlightText}:host(${checkedState}) .checked-indicator{background-color:FieldText}:host(${checkedState}:not(${disabledState}):hover) .checked-indicator{background-color:Highlight}:host(${disabledState}){border-color:GrayText;color:GrayText}:host(${disabledState}${checkedState}) .checked-indicator{background-color:GrayText}`));
10219
10431
 
10220
- const checkedIndicator = html.partial( /* html */
10432
+ const checkedIndicator = html.partial(/* html */
10221
10433
  `
10222
10434
  <span part="checked-indicator" class="checked-indicator" role="presentation"></span>
10223
10435
  `);
@@ -10244,6 +10456,19 @@ var __decorateClass$j = (decorators, target, key, kind) => {
10244
10456
  if (kind && result) __defProp$j(target, key, result);
10245
10457
  return result;
10246
10458
  };
10459
+ const SUPPORTS_ATTR_TYPE = CSS.supports("width: attr(value type(<number>))");
10460
+ const CUSTOM_PROPERTY_NAME = {
10461
+ max: "--_attr-max",
10462
+ value: "--_attr-value",
10463
+ maskImageFilled: "--_mask-image-filled",
10464
+ maskImageOutlined: "--_mask-image-outlined"
10465
+ };
10466
+ function svgToDataURI(svg) {
10467
+ if (!svg) {
10468
+ return "";
10469
+ }
10470
+ return ["data:image/svg+xml", encodeURIComponent(svg.replace(/\n/g, "").replace(/\s+/g, " "))].join(",");
10471
+ }
10247
10472
  class BaseRatingDisplay extends FASTElement {
10248
10473
  constructor() {
10249
10474
  super();
@@ -10253,16 +10478,20 @@ class BaseRatingDisplay extends FASTElement {
10253
10478
  * @internal
10254
10479
  */
10255
10480
  this.elementInternals = this.attachInternals();
10256
- this.intlNumberFormatter = new Intl.NumberFormat();
10481
+ this.defaultCustomIconViewBox = "0 0 20 20";
10257
10482
  this.elementInternals.role = "img";
10483
+ this.numberFormatter = new Intl.NumberFormat();
10258
10484
  }
10259
- /**
10260
- * @internal
10261
- */
10262
- slottedIconChanged() {
10263
- if (this.$fastController.isConnected) {
10264
- this.customIcon = this.slottedIcon[0]?.outerHTML;
10265
- }
10485
+ maxChanged() {
10486
+ this.setCustomPropertyValue("max");
10487
+ }
10488
+ valueChanged() {
10489
+ this.setCustomPropertyValue("value");
10490
+ }
10491
+ connectedCallback() {
10492
+ super.connectedCallback();
10493
+ this.setCustomPropertyValue("value");
10494
+ this.setCustomPropertyValue("max");
10266
10495
  }
10267
10496
  /**
10268
10497
  * Returns "count" as string, formatted according to the locale.
@@ -10270,41 +10499,47 @@ class BaseRatingDisplay extends FASTElement {
10270
10499
  * @internal
10271
10500
  */
10272
10501
  get formattedCount() {
10273
- return this.count ? this.intlNumberFormatter.format(this.count) : "";
10274
- }
10275
- /**
10276
- * Gets the selected value
10277
- *
10278
- * @protected
10279
- */
10280
- getSelectedValue() {
10281
- return Math.round((this.value ?? 0) * 2) / 2;
10282
- }
10283
- /**
10284
- * Gets the maximum icons to render
10285
- *
10286
- * @protected
10287
- */
10288
- getMaxIcons() {
10289
- return (this.max ?? 5) * 2;
10502
+ return this.count ? this.numberFormatter.format(this.count) : "";
10290
10503
  }
10291
- /**
10292
- * Generates the icon SVG elements based on the "max" attribute.
10293
- *
10294
- * @internal
10295
- */
10296
- generateIcons() {
10297
- let htmlString = "";
10298
- let customIcon;
10299
- if (this.customIcon) {
10300
- customIcon = /<svg[^>]*>([\s\S]*?)<\/svg>/.exec(this.customIcon)?.[1] ?? "";
10504
+ /** @internal */
10505
+ handleSlotChange() {
10506
+ const icon = this.iconSlot.assignedElements()?.find(el => el.nodeName.toLowerCase() === "svg");
10507
+ this.renderSlottedIcon(icon ?? null);
10508
+ }
10509
+ renderSlottedIcon(svg) {
10510
+ if (!svg) {
10511
+ this.display.style.removeProperty(CUSTOM_PROPERTY_NAME.maskImageFilled);
10512
+ this.display.style.removeProperty(CUSTOM_PROPERTY_NAME.maskImageOutlined);
10513
+ return;
10514
+ }
10515
+ const innerSvg = svg.innerHTML;
10516
+ const viewBox = svg.getAttribute("viewBox") ?? this.iconViewBox ?? this.defaultCustomIconViewBox;
10517
+ const customSvgFilled = `
10518
+ <svg
10519
+ viewBox="${viewBox}"
10520
+ xmlns="http://www.w3.org/2000/svg"
10521
+ >${innerSvg}</svg>`;
10522
+ const customSvgOutlined = `
10523
+ <svg
10524
+ viewBox="${viewBox}"
10525
+ xmlns="http://www.w3.org/2000/svg"
10526
+ fill="none"
10527
+ stroke="black"
10528
+ stroke-width="2"
10529
+ >${innerSvg}</svg>`;
10530
+ this.display.style.setProperty(CUSTOM_PROPERTY_NAME.maskImageFilled, `url(${svgToDataURI(customSvgFilled)})`);
10531
+ this.display.style.setProperty(CUSTOM_PROPERTY_NAME.maskImageOutlined, `url(${svgToDataURI(customSvgOutlined)})`);
10532
+ }
10533
+ setCustomPropertyValue(propertyName) {
10534
+ if (!this.display || SUPPORTS_ATTR_TYPE) {
10535
+ return;
10301
10536
  }
10302
- const selectedValue = this.getSelectedValue();
10303
- for (let i = 0; i < this.getMaxIcons(); i++) {
10304
- const iconValue = (i + 1) / 2;
10305
- htmlString += `<svg aria-hidden="true" viewBox="${this.iconViewBox ?? "0 0 20 20"}" ${iconValue === selectedValue ? "selected" : ""}>${customIcon ?? '<use href="#star"></use>'}</svg>`;
10537
+ const propertyValue = this[propertyName];
10538
+ if (typeof propertyValue !== "number" || Number.isNaN(propertyValue)) {
10539
+ this.display.style.removeProperty(CUSTOM_PROPERTY_NAME[propertyName]);
10540
+ } else {
10541
+ this.display.style.setProperty(CUSTOM_PROPERTY_NAME[propertyName], `${propertyValue}`);
10306
10542
  }
10307
- return htmlString;
10308
10543
  }
10309
10544
  }
10310
10545
  __decorateClass$j([attr({
@@ -10319,8 +10554,6 @@ __decorateClass$j([attr({
10319
10554
  __decorateClass$j([attr({
10320
10555
  converter: nullableNumberConverter
10321
10556
  })], BaseRatingDisplay.prototype, "value", 2);
10322
- __decorateClass$j([observable], BaseRatingDisplay.prototype, "slottedIcon", 2);
10323
- __decorateClass$j([observable], BaseRatingDisplay.prototype, "customIcon", 2);
10324
10557
 
10325
10558
  var __defProp$i = Object.defineProperty;
10326
10559
  var __getOwnPropDesc$i = Object.getOwnPropertyDescriptor;
@@ -10335,22 +10568,6 @@ class RatingDisplay extends BaseRatingDisplay {
10335
10568
  super(...arguments);
10336
10569
  this.compact = false;
10337
10570
  }
10338
- /**
10339
- * Overrides the selected value and returns 1 if compact is true.
10340
- *
10341
- * @override
10342
- */
10343
- getSelectedValue() {
10344
- return Math.round((this.compact ? 1 : this.value ?? 0) * 2) / 2;
10345
- }
10346
- /**
10347
- * Overrides the maximum icons and returns a max of 1 if compact is true.
10348
- *
10349
- * @override
10350
- */
10351
- getMaxIcons() {
10352
- return (this.compact ? 1 : this.max ?? 5) * 2;
10353
- }
10354
10571
  }
10355
10572
  __decorateClass$i([attr], RatingDisplay.prototype, "color", 2);
10356
10573
  __decorateClass$i([attr], RatingDisplay.prototype, "size", 2);
@@ -10358,21 +10575,30 @@ __decorateClass$i([attr({
10358
10575
  mode: "boolean"
10359
10576
  })], RatingDisplay.prototype, "compact", 2);
10360
10577
 
10361
- const styles$e = css`
10362
- ${display("inline-flex")}
10363
-
10364
- :host{--icon-size:16px;--icon-color-filled:${colorPaletteMarigoldBackground3};--icon-color-empty:${colorPaletteMarigoldBackground2};align-items:center;color:${colorNeutralForeground1};font-family:${fontFamilyBase};font-size:${fontSizeBase200};line-height:${lineHeightBase200};contain:layout style;user-select:none}:host([size='small']){--icon-size:12px}:host([size='large']){--icon-size:20px;font-size:${fontSizeBase300};line-height:${lineHeightBase300}}::slotted([slot='icon']){display:none}svg{width:var(--icon-size);height:var(--icon-size);fill:var(--icon-color-filled);margin-inline-end:${spacingHorizontalXXS}}svg:nth-child(odd){clip-path:inset(0 50% 0 0);margin-inline-end:calc(0px - var(--icon-size))}:host([color='neutral']) svg{--icon-color-filled:${colorNeutralForeground1}}:host([color='brand']) svg{--icon-color-filled:${colorBrandBackground}}:host(:is([value^='-'],[value='0'])) svg,:host(:not([value])) svg,svg[selected] ~ svg{fill:var(--icon-color-empty)}:host([color='neutral']:is([value^='-'],[value='0'],:not([value]))) svg,:host([color='neutral']) svg[selected] ~ svg{--icon-color-empty:${colorNeutralBackground1Pressed}}:host([color='brand']:is([value^='-'],[value='0'],:not([value]))) svg,:host([color='brand']) svg[selected] ~ svg{--icon-color-empty:${colorBrandStroke2}}.value-label,::slotted([slot='value']){display:block;margin-inline-start:${spacingHorizontalXS};font-weight:${fontWeightSemibold}}:host([size='small']) .value-label,:host([size='small']) ::slotted([slot='value']){margin-inline-start:${spacingHorizontalXXS}}:host([size='large']) .value-label,:host([size='large']) ::slotted([slot='value']){margin-inline-start:${spacingHorizontalSNudge}}:host(:not([count])) .count-label{display:none}.count-label::before,::slotted([slot='count'])::before{content:'·';margin-inline:${spacingHorizontalXS}}:host([size='small']) .count-label::before,:host([size='small']) ::slotted([slot='count'])::before{margin-inline:${spacingHorizontalXXS}}:host([size='large']) .count-label::before,:host([size='large']) ::slotted([slot='count'])::before{margin-inline:${spacingHorizontalSNudge}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
10365
- :host([color]) svg{fill:CanvasText}:host([color]:is([value^='-'],[value='0'])) svg,:host(:not([value])) svg,:host([color]) svg[selected] ~ svg{fill:Canvas;stroke:CanvasText}`));
10366
-
10367
- const star = html`<svg xmlns="http://www.w3.org/2000/svg" style="display: none"><symbol id="star"><path d="M9.10433 2.89874C9.47114 2.15549 10.531 2.1555 10.8978 2.89874L12.8282 6.81024L17.1448 7.43748C17.9651 7.55666 18.2926 8.56464 17.699 9.14317L14.5755 12.1878L15.3129 16.487C15.453 17.3039 14.5956 17.9269 13.8619 17.5412L10.0011 15.5114L6.14018 17.5412C5.40655 17.9269 4.54913 17.3039 4.68924 16.487L5.4266 12.1878L2.30308 9.14317C1.70956 8.56463 2.03708 7.55666 2.8573 7.43748L7.17389 6.81024L9.10433 2.89874Z" /></symbol></svg>`;
10578
+ const defaultIconPath = `<path d="M5.28347 1.54605C5.57692 0.951448 6.42479 0.951449 6.71825 1.54605L7.82997 3.79866L10.3159 4.15988C10.9721 4.25523 11.2341 5.0616 10.7592 5.52443L8.96043 7.27785L9.38507 9.7537C9.49716 10.4072 8.81122 10.9056 8.22431 10.597L6.00086 9.4281L3.7774 10.597C3.19049 10.9056 2.50455 10.4072 2.61664 9.7537L3.04128 7.27784L1.24246 5.52443C0.767651 5.0616 1.02966 4.25523 1.68584 4.15988L4.17174 3.79865L5.28347 1.54605Z" />`;
10579
+ const defaultIconFilled = `
10580
+ <svg viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">${defaultIconPath}</svg>
10581
+ `;
10582
+ const defaultIconOutlined = `
10583
+ <svg viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg"
10584
+ fill="none" stroke="black" stroke-width="2"
10585
+ >${defaultIconPath}</svg>
10586
+ `;
10368
10587
  function ratingDisplayTemplate() {
10369
- return html` ${x => html`${staticallyCompose(x.generateIcons())}`}<slot name="icon" ${slotted({
10370
- property: "slottedIcon",
10371
- filter: elements("svg")
10372
- })}>${star}</slot><slot name="value"><span class="value-label" aria-hidden="true">${x => x.value}</span></slot><slot name="count"><span class="count-label" aria-hidden="true">${x => x.formattedCount}</span></slot>`;
10588
+ return html`<div ${ref("display")} class="display" aria-hidden="true"></div><slot name="icon" ${ref("iconSlot")} @slotchange="${x => x.handleSlotChange()}"></slot><slot name="value"><span class="value-label" aria-hidden="true">${x => x.value}</span></slot><slot name="count"><span class="count-label" aria-hidden="true">${x => x.formattedCount}</span></slot>`;
10373
10589
  }
10374
10590
  const template$e = ratingDisplayTemplate();
10375
10591
 
10592
+ const styles$e = css`
10593
+ ${display("inline-flex")}
10594
+
10595
+ :host{--_icon-size:16px;--_icon-gradient-degree:90deg;--_icon-color-value:${colorPaletteMarigoldBorderActive};--_icon-color-empty:${colorPaletteMarigoldBackground2};--_default-value:0;--_default-max:5;--_mask-image-filled:url(${svgToDataURI(defaultIconFilled)});--_mask-image-outlined:url(${svgToDataURI(defaultIconOutlined)});--_mask-position-x:left;align-items:center;color:${colorNeutralForeground1};font-family:${fontFamilyBase};font-size:${fontSizeBase200};line-height:${lineHeightBase200};contain:layout style;user-select:none}:host(:dir(rtl)){--_icon-gradient-degree:-90deg;--_mask-position-x:right}:host([size='small']){--_icon-size:12px}:host([size='large']){--_icon-size:20px;font-size:${fontSizeBase300};line-height:${lineHeightBase300}}::slotted([slot='icon']){display:none}:host([color='neutral']){--_icon-color-value:${colorNeutralForeground1};--_icon-color-empty:${colorNeutralBackground6}}:host([color='brand']){--_icon-color-value:${colorBrandForeground1};--_icon-color-empty:${colorBrandBackground2}}@supports (width:attr(value type(<number>))){:host{--_attr-value:attr(value type(<number>));--_attr-max:attr(max type(<number>))}}:host([compact]) .display{--_max:1}.display{--_value:max(0,round(var(--_attr-value,var(--_default-value)) * 2) / 2);--_max:max(1,var(--_attr-max,var(--_default-max)));--_mask-inline-size:calc(var(--_icon-size) + ${spacingHorizontalXXS});--_icon-gradient-stop-visual-adjustment:0px;--_icon-gradient-stop:calc(
10596
+ var(--_mask-inline-size) * var(--_value) - var(--_icon-gradient-stop-visual-adjustment)
10597
+ );background-image:linear-gradient(
10598
+ var(--_icon-gradient-degree),var(--_icon-color-value) var(--_icon-gradient-stop),var(--_icon-color-empty) calc(var(--_icon-gradient-stop) + 0.5px)
10599
+ );block-size:var(--_icon-size);display:grid;inline-size:calc(var(--_max) * var(--_mask-inline-size) - ${spacingHorizontalXXS} / 2);mask-image:var(--_mask-image-filled);mask-repeat:repeat no-repeat;mask-size:var(--_mask-inline-size) var(--_icon-size);mask-position:var(--_mask-position-x) center}.value-label,::slotted([slot='value']){display:block;margin-inline-start:${spacingHorizontalXS};font-weight:${fontWeightSemibold}}:host([size='small']) .value-label,:host([size='small']) ::slotted([slot='value']){margin-inline-start:${spacingHorizontalXXS}}:host([size='large']) .value-label,:host([size='large']) ::slotted([slot='value']){margin-inline-start:${spacingHorizontalSNudge}}:host(:not([count])) .count-label{display:none}.count-label::before,::slotted([slot='count'])::before{content:'·';margin-inline:${spacingHorizontalXS}}:host([size='small']) .count-label::before,:host([size='small']) ::slotted([slot='count'])::before{margin-inline:${spacingHorizontalXXS}}:host([size='large']) .count-label::before,:host([size='large']) ::slotted([slot='count'])::before{margin-inline:${spacingHorizontalSNudge}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
10600
+ .display{--_icon-color-value:CanvasText;--_icon-color-empty:Canvas;--_icon-gradient-stop-visual-adjustment:0.5px;forced-color-adjust:none}.display::before{background-color:var(--_icon-color-value);content:'';grid-area:1 / 1 / -1 / -1;mask:inherit;mask-image:var(--_mask-image-outlined)}`));
10601
+
10376
10602
  const definition$e = RatingDisplay.compose({
10377
10603
  name: `${FluentDesignSystem.prefix}-rating-display`,
10378
10604
  template: template$e,
@@ -10853,7 +11079,7 @@ class Slider extends FASTElement {
10853
11079
  * Places the thumb based on the current value
10854
11080
  */
10855
11081
  setSliderPosition() {
10856
- const newPct = convertPixelToPercent(parseFloat(this.value), this.minAsNumber, this.maxAsNumber, this.direction);
11082
+ const newPct = convertPixelToPercent(parseFloat(this.value), this.minAsNumber, this.maxAsNumber, this.orientation === Orientation.vertical ? void 0 : this.direction);
10857
11083
  const percentage = newPct * 100;
10858
11084
  this.position = `--slider-thumb: ${percentage}%; --slider-progress: ${percentage}%`;
10859
11085
  }
@@ -10888,7 +11114,7 @@ class Slider extends FASTElement {
10888
11114
  */
10889
11115
  calculateNewValue(rawValue) {
10890
11116
  this.setupTrackConstraints();
10891
- const newPosition = convertPixelToPercent(rawValue, this.orientation === Orientation.vertical ? this.trackMinHeight : this.trackMinWidth, this.orientation === Orientation.vertical ? this.trackHeight : this.trackWidth, this.direction);
11117
+ const newPosition = convertPixelToPercent(rawValue, this.orientation === Orientation.vertical ? this.trackMinHeight : this.trackMinWidth, this.orientation === Orientation.vertical ? this.trackHeight : this.trackWidth, this.orientation === Orientation.vertical ? void 0 : this.direction);
10892
11118
  const newValue = (this.maxAsNumber - this.minAsNumber) * newPosition + this.minAsNumber;
10893
11119
  return this.convertToConstrainedValue(newValue);
10894
11120
  }
@@ -10960,7 +11186,7 @@ const styles$d = css`
10960
11186
  .track:hover,.track:active,.track{background:WindowText}.thumb:hover,.thumb:active,.thumb{background:ButtonText}:host(:hover) .track::before,:host(:active) .track::before,.track::before{background:Highlight}`));
10961
11187
 
10962
11188
  function sliderTemplate(options = {}) {
10963
- return html`<template tabindex="${x => x.disabled ? null : 0}" @pointerdown="${(x, c) => x.handlePointerDown(c.event)}" @keydown="${(x, c) => x.handleKeydown(c.event)}"><div ${ref("track")} part="track-container" class="track" style="${x => x.position}"></div><div ${ref("thumb")} part="thumb-container" class="thumb-container" style="${x => x.position}" @pointerdown="${(x, c) => x.handleThumbPointerDown(c.event)}"><slot name="thumb">${staticallyCompose(options.thumb)}</slot></div></template>`;
11189
+ return html`<template @pointerdown="${(x, c) => x.handlePointerDown(c.event)}" @keydown="${(x, c) => x.handleKeydown(c.event)}"><div ${ref("track")} part="track-container" class="track" style="${x => x.position}"></div><div ${ref("thumb")} part="thumb-container" class="thumb-container" style="${x => x.position}" @pointerdown="${(x, c) => x.handleThumbPointerDown(c.event)}"><slot name="thumb">${staticallyCompose(options.thumb)}</slot></div></template>`;
10964
11190
  }
10965
11191
  const template$d = sliderTemplate({
10966
11192
  thumb: `<div class="thumb"></div>`
@@ -11023,7 +11249,7 @@ class Switch extends BaseCheckbox {
11023
11249
  }
11024
11250
 
11025
11251
  function switchTemplate(options = {}) {
11026
- return html`<template tabindex="${x => !x.disabled ? 0 : void 0}" @click="${(x, c) => x.clickHandler(c.event)}" @input="${(x, c) => x.inputHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}" @keyup="${(x, c) => x.keyupHandler(c.event)}"><slot name="switch">${staticallyCompose(options.switch)}</slot></template>`;
11252
+ return html`<template @click="${(x, c) => x.clickHandler(c.event)}" @input="${(x, c) => x.inputHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}" @keyup="${(x, c) => x.keyupHandler(c.event)}"><slot name="switch">${staticallyCompose(options.switch)}</slot></template>`;
11027
11253
  }
11028
11254
  const template$b = switchTemplate({
11029
11255
  switch: `<span class="checked-indicator" part="checked-indicator"></span>`
@@ -11032,7 +11258,7 @@ const template$b = switchTemplate({
11032
11258
  const styles$b = css`
11033
11259
  ${display("inline-flex")}
11034
11260
 
11035
- :host{box-sizing:border-box;align-items:center;flex-direction:row;outline:none;user-select:none;contain:content;padding:0 ${spacingHorizontalXXS};width:40px;height:20px;background-color:${colorTransparentBackground};border:1px solid ${colorNeutralStrokeAccessible};border-radius:${borderRadiusCircular};cursor:pointer}:host(:hover){background:none;border-color:${colorNeutralStrokeAccessibleHover}}:host(:active){border-color:${colorNeutralStrokeAccessiblePressed}}:host(:disabled),:host([readonly]){border:1px solid ${colorNeutralStrokeDisabled};background-color:none;pointer:default}:host(${checkedState}){background:${colorCompoundBrandBackground};border-color:${colorCompoundBrandBackground}}:host(${checkedState}:hover){background:${colorCompoundBrandBackgroundHover};border-color:${colorCompoundBrandBackgroundHover}}:host(${checkedState}:active){background:${colorCompoundBrandBackgroundPressed};border-color:${colorCompoundBrandBackgroundPressed}}:host(${checkedState}:disabled){background:${colorNeutralBackgroundDisabled};border-color:${colorNeutralStrokeDisabled}}.checked-indicator{height:14px;width:14px;border-radius:50%;margin-inline-start:0;background-color:${colorNeutralForeground3};transition-duration:${durationNormal};transition-timing-function:${curveEasyEase};transition-property:margin-inline-start}:host(${checkedState}) .checked-indicator{background-color:${colorNeutralForegroundInverted};margin-inline-start:calc(100% - 14px)}:host(${checkedState}:hover) .checked-indicator{background:${colorNeutralForegroundInvertedHover}}:host(${checkedState}:active) .checked-indicator{background:${colorNeutralForegroundInvertedPressed}}:host(:hover) .checked-indicator{background-color:${colorNeutralForeground3Hover}}:host(:active) .checked-indicator{background-color:${colorNeutralForeground3Pressed}}:host(:disabled) .checked-indicator,:host([readonly]) .checked-indicator{background:${colorNeutralForegroundDisabled}}:host(${checkedState}:disabled) .checked-indicator{background:${colorNeutralForegroundDisabled}}:host(:focus-visible){outline:none}:host(:not([slot='input']):focus-visible){border-color:${colorTransparentStroke};outline:${strokeWidthThick} solid ${colorTransparentStroke};box-shadow:${shadow4},0 0 0 2px ${colorStrokeFocus2}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
11261
+ :host{box-sizing:border-box;align-items:center;flex-direction:row;outline:none;user-select:none;contain:content;padding:0 ${spacingHorizontalXXS};width:40px;height:20px;background-color:${colorTransparentBackground};border:1px solid ${colorNeutralStrokeAccessible};border-radius:${borderRadiusCircular}}:host(:enabled){cursor:pointer}:host(:hover){background:none;border-color:${colorNeutralStrokeAccessibleHover}}:host(:active){border-color:${colorNeutralStrokeAccessiblePressed}}:host(:disabled),:host([readonly]){border:1px solid ${colorNeutralStrokeDisabled};background-color:none;pointer:default}:host(${checkedState}){background:${colorCompoundBrandBackground};border-color:${colorCompoundBrandBackground}}:host(${checkedState}:hover){background:${colorCompoundBrandBackgroundHover};border-color:${colorCompoundBrandBackgroundHover}}:host(${checkedState}:active){background:${colorCompoundBrandBackgroundPressed};border-color:${colorCompoundBrandBackgroundPressed}}:host(${checkedState}:disabled){background:${colorNeutralBackgroundDisabled};border-color:${colorNeutralStrokeDisabled}}.checked-indicator{height:14px;width:14px;border-radius:50%;margin-inline-start:0;background-color:${colorNeutralForeground3};transition-duration:${durationNormal};transition-timing-function:${curveEasyEase};transition-property:margin-inline-start}:host(${checkedState}) .checked-indicator{background-color:${colorNeutralForegroundInverted};margin-inline-start:calc(100% - 14px)}:host(${checkedState}:hover) .checked-indicator{background:${colorNeutralForegroundInvertedHover}}:host(${checkedState}:active) .checked-indicator{background:${colorNeutralForegroundInvertedPressed}}:host(:hover) .checked-indicator{background-color:${colorNeutralForeground3Hover}}:host(:active) .checked-indicator{background-color:${colorNeutralForeground3Pressed}}:host(:disabled) .checked-indicator,:host([readonly]) .checked-indicator{background:${colorNeutralForegroundDisabled}}:host(${checkedState}:disabled) .checked-indicator{background:${colorNeutralForegroundDisabled}}:host(:focus-visible){outline:none}:host(:not([slot='input']):focus-visible){border-color:${colorTransparentStroke};outline:${strokeWidthThick} solid ${colorTransparentStroke};outline-offset:1px;box-shadow:${shadow4},0 0 0 2px ${colorStrokeFocus2}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
11036
11262
  :host{border-color:InactiveBorder}:host(${checkedState}),:host(${checkedState}:active),:host(${checkedState}:hover){background:Highlight;border-color:Highlight}.checked-indicator,:host(:hover) .checked-indicator,:host(:active) .checked-indicator{background-color:ActiveCaption}:host(${checkedState}) .checked-indicator,:host(${checkedState}:hover) .checked-indicator,:host(${checkedState}:active) .checked-indicator{background-color:ButtonFace}:host(:disabled) .checked-indicator,:host(${checkedState}:disabled) .checked-indicator{background-color:GrayText}`));
11037
11263
 
11038
11264
  const definition$b = Switch.compose({
@@ -11095,7 +11321,7 @@ const template$9 = tabTemplate({});
11095
11321
  const styles$9 = css`
11096
11322
  ${display("inline-flex")}
11097
11323
 
11098
- :host{position:relative;flex-direction:column;cursor:pointer;box-sizing:border-box;justify-content:center;line-height:${lineHeightBase300};font-family:${fontFamilyBase};font-size:${fontSizeBase300};color:${colorNeutralForeground2};fill:currentcolor;grid-row:1;padding:${spacingHorizontalM} ${spacingHorizontalMNudge};border-radius:${borderRadiusMedium}}:host .tab-content{display:inline-flex;flex-direction:column;padding:0 2px}:host([aria-selected='true']){color:${colorNeutralForeground1};font-weight:${fontWeightSemibold}}:host .tab-content::after{content:var(--textContent);visibility:hidden;height:0;line-height:${lineHeightBase300};font-weight:${fontWeightSemibold}}:host([aria-selected='true'])::after{background-color:${colorCompoundBrandStroke};border-radius:${borderRadiusCircular};content:'';inset:0;position:absolute;z-index:2}:host([aria-selected='false']:hover)::after{background-color:${colorNeutralStroke1Hover};border-radius:${borderRadiusCircular};content:'';inset:0;position:absolute;z-index:1}:host([aria-selected='true'][disabled])::after{background-color:${colorNeutralForegroundDisabled}}::slotted([slot='start']),::slotted([slot='end']){display:flex}::slotted([slot='start']){margin-inline-end:11px}::slotted([slot='end']){margin-inline-start:11px}:host([disabled]){cursor:not-allowed;fill:${colorNeutralForegroundDisabled};color:${colorNeutralForegroundDisabled}}:host([disabled]:hover)::after{background-color:unset}:host(:focus){outline:none}:host(:focus-visible){border-radius:${borderRadiusSmall};box-shadow:0 0 0 3px ${colorStrokeFocus2};outline:1px solid ${colorStrokeFocus1}}`.withBehaviors(forcedColorsStylesheetBehavior(css`
11324
+ :host{position:relative;flex-direction:row;align-items:center;cursor:pointer;box-sizing:border-box;justify-content:center;line-height:${lineHeightBase300};font-family:${fontFamilyBase};font-size:${fontSizeBase300};color:${colorNeutralForeground2};fill:currentcolor;grid-row:1;padding:${spacingHorizontalM} ${spacingHorizontalMNudge};border-radius:${borderRadiusMedium};gap:4px}:host .tab-content{display:inline-flex;flex-direction:column;padding:0 2px}:host([aria-selected='true']){color:${colorNeutralForeground1};font-weight:${fontWeightSemibold}}:host .tab-content::after{content:var(--textContent);visibility:hidden;height:0;line-height:${lineHeightBase300};font-weight:${fontWeightSemibold}}:host([aria-selected='true'])::after{background-color:${colorCompoundBrandStroke};border-radius:${borderRadiusCircular};content:'';inset:0;position:absolute;z-index:2}:host([aria-selected='false']:hover)::after{background-color:${colorNeutralStroke1Hover};border-radius:${borderRadiusCircular};content:'';inset:0;position:absolute;z-index:1}:host([aria-selected='true'][disabled])::after{background-color:${colorNeutralForegroundDisabled}}::slotted([slot='start']),::slotted([slot='end']){display:flex}:host([disabled]){cursor:not-allowed;fill:${colorNeutralForegroundDisabled};color:${colorNeutralForegroundDisabled}}:host([disabled]:hover)::after{background-color:unset}:host(:focus){outline:none}:host(:focus-visible){border-radius:${borderRadiusSmall};box-shadow:0 0 0 3px ${colorStrokeFocus2};outline:1px solid ${colorStrokeFocus1}}:host([data-hasIndent]){display:grid;grid-template-columns:20px 1fr auto}:host([data-hasIndent]) .tab-content{grid-column:2}`.withBehaviors(forcedColorsStylesheetBehavior(css`
11099
11325
  :host([aria-selected='true'])::after{background-color:Highlight}`));
11100
11326
 
11101
11327
  const definition$9 = Tab.compose({
@@ -11557,6 +11783,13 @@ const isFocusableElement = el => {
11557
11783
  return !isARIADisabledElement(el) && !isHiddenElement(el);
11558
11784
  };
11559
11785
 
11786
+ function isTab(element, tagName = "-tab") {
11787
+ if (element?.nodeType !== Node.ELEMENT_NODE) {
11788
+ return false;
11789
+ }
11790
+ return element.tagName.toLowerCase().endsWith(tagName);
11791
+ }
11792
+
11560
11793
  const TablistAppearance = {
11561
11794
  subtle: "subtle",
11562
11795
  transparent: "transparent"
@@ -11647,6 +11880,9 @@ class BaseTablist extends FASTElement {
11647
11880
  */
11648
11881
  disabledChanged(prev, next) {
11649
11882
  toggleState(this.elementInternals, "disabled", next);
11883
+ if (this.$fastController.isConnected) {
11884
+ this.setTabs();
11885
+ }
11650
11886
  }
11651
11887
  /**
11652
11888
  * @internal
@@ -11683,6 +11919,13 @@ class BaseTablist extends FASTElement {
11683
11919
  }
11684
11920
  }
11685
11921
  }
11922
+ /**
11923
+ * Updates the tabs property when content in the tabs slot changes.
11924
+ * @internal
11925
+ */
11926
+ slottedTabsChanged(prev, next) {
11927
+ this.tabs = next?.filter(tab => isTab(tab)) ?? [];
11928
+ }
11686
11929
  /**
11687
11930
  * @internal
11688
11931
  */
@@ -11717,10 +11960,15 @@ class BaseTablist extends FASTElement {
11717
11960
  */
11718
11961
  setTabs() {
11719
11962
  this.activeTabIndex = this.getActiveIndex();
11963
+ const hasStartSlot = this.tabs.some(tab => !!tab.querySelector("[slot='start']"));
11720
11964
  this.tabs.forEach((tab, index) => {
11721
11965
  if (tab.slot === "tab") {
11722
11966
  const isActiveTab = this.activeTabIndex === index && isFocusableElement(tab);
11723
11967
  const tabId = this.tabIds[index];
11968
+ console.log("disabled", this.disabled);
11969
+ if (!tab.disabled) {
11970
+ this.disabled ? tab.setAttribute("aria-disabled", "true") : tab.removeAttribute("aria-disabled");
11971
+ }
11724
11972
  tab.setAttribute("id", tabId);
11725
11973
  tab.setAttribute("aria-selected", isActiveTab ? "true" : "false");
11726
11974
  tab.addEventListener("click", this.handleTabClick);
@@ -11730,6 +11978,9 @@ class BaseTablist extends FASTElement {
11730
11978
  this.activetab = tab;
11731
11979
  this.activeid = tabId;
11732
11980
  }
11981
+ if (hasStartSlot && this.orientation === TablistOrientation.vertical) {
11982
+ tab.setAttribute("data-hasIndent", "");
11983
+ }
11733
11984
  }
11734
11985
  });
11735
11986
  }
@@ -11787,6 +12038,7 @@ __decorateClass$c([attr({
11787
12038
  })], BaseTablist.prototype, "disabled", 2);
11788
12039
  __decorateClass$c([attr], BaseTablist.prototype, "orientation", 2);
11789
12040
  __decorateClass$c([attr], BaseTablist.prototype, "activeid", 2);
12041
+ __decorateClass$c([observable], BaseTablist.prototype, "slottedTabs", 2);
11790
12042
  __decorateClass$c([observable], BaseTablist.prototype, "tabs", 2);
11791
12043
 
11792
12044
  var __defProp$b = Object.defineProperty;
@@ -11939,12 +12191,12 @@ class Tablist extends BaseTablist {
11939
12191
  __decorateClass$b([attr], Tablist.prototype, "appearance", 2);
11940
12192
  __decorateClass$b([attr], Tablist.prototype, "size", 2);
11941
12193
 
11942
- const template$7 = html`<template role="tablist"><slot name="tab" ${slotted("tabs")}></slot></template>`;
12194
+ const template$7 = html`<template role="tablist"><slot name="tab" ${slotted("slottedTabs")}></slot></template>`;
11943
12195
 
11944
12196
  const styles$7 = css`
11945
12197
  ${display("flex")}
11946
12198
 
11947
- :host{--tabPaddingInline:inherit;--tabPaddingBlock:inherit;--tabIndicatorInsetInline:0;--tabIndicatorInsetBlock:0;box-sizing:border-box;color:${colorNeutralForeground2};flex-direction:row}:host([orientation='vertical']){flex-direction:column}:host ::slotted([role='tab']){align-items:flex-start}:host ::slotted([slot='tab'][data-animate='true'])::after{transition-property:transform;transition-duration:${durationSlow};transition-timing-function:${curveDecelerateMax}}:host ::slotted([slot='tab'])::after{height:${strokeWidthThicker};margin-block-start:auto;transform-origin:left;transform:translateX(var(--tabIndicatorOffset)) scaleX(var(--tabIndicatorScale))}:host([orientation='vertical']) ::slotted([slot='tab'])::after{width:${strokeWidthThicker};height:unset;margin-block-start:unset;transform-origin:top;transform:translateY(var(--tabIndicatorOffset)) scaleY(var(--tabIndicatorScale))}:host ::slotted([slot='tab'])::before{height:${strokeWidthThicker};border-radius:${borderRadiusCircular};content:'';inset-inline:var(--tabIndicatorInsetInline);inset-block:var(--tabIndicatorInsetBlock);position:absolute;margin-top:auto}:host ::slotted([slot='tab'])::before{inset-inline:var(--tabIndicatorInsetInline);inset-block:var(--tabIndicatorInsetBlock)}:host ::slotted([slot='tab'][aria-selected='true'])::before{background-color:${colorNeutralForegroundDisabled}}:host ::slotted([slot='tab'][aria-selected='false']:hover)::after{height:${strokeWidthThicker};margin-block-start:auto;transform-origin:left}:host([orientation='vertical']) ::slotted([slot='tab'])::before,:host([orientation='vertical']) ::slotted([slot='tab'][aria-selected='false']:hover)::after{height:unset;width:${strokeWidthThicker};margin-inline-end:auto;transform-origin:top}:host(:where([size='small'],[size='large'])) ::slotted([slot='tab']){padding-inline:var(--tabPaddingInline);padding-block:var(--tabPaddingBlock)}:host([size='small']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalSNudge};--tabPaddingInline:${spacingHorizontalSNudge};font-size:${fontSizeBase300};line-height:${lineHeightBase300}}:host([size='large']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalL};--tabPaddingInline:${spacingHorizontalMNudge};font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host ::slotted([slot='tab'])::after,:host ::slotted([slot='tab'])::before,:host ::slotted([slot='tab']:hover)::after{inset-inline:var(--tabIndicatorInsetInline)}:host ::slotted([slot='tab']){--tabIndicatorInsetInline:${spacingHorizontalMNudge}}:host([size='small']) ::slotted([slot='tab']){--tabIndicatorInsetInline:${spacingHorizontalSNudge}}:host([size='large']) ::slotted([slot='tab']){--tabIndicatorInsetInline:${spacingHorizontalMNudge}}:host([orientation='vertical']) ::slotted([slot='tab']){padding-block:var(--tabPaddingBlock)}:host([orientation='vertical']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalS}}:host([orientation='vertical'][size='small']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalXXS}}:host([orientation='vertical'][size='large']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalS}}:host([orientation='vertical']) ::slotted([slot='tab'])::after,:host([orientation='vertical']) ::slotted([slot='tab'])::before,:host([orientation='vertical']) ::slotted([slot='tab']:hover)::after{inset-inline:0;inset-block:var(--tabIndicatorInsetBlock)}:host([orientation='vertical']){--tabIndicatorInsetBlock:${spacingVerticalS}}:host([orientation='vertical'][size='small']){--tabIndicatorInsetBlock:${spacingVerticalSNudge}}:host([orientation='vertical'][size='large']){--tabIndicatorInsetBlock:${spacingVerticalMNudge}}:host([disabled]){cursor:not-allowed;color:${colorNeutralForegroundDisabled}}:host([disabled]) ::slotted([slot='tab']){pointer-events:none;cursor:not-allowed;color:${colorNeutralForegroundDisabled}}:host([disabled]) ::slotted([slot='tab']:after){background-color:${colorNeutralForegroundDisabled}}:host([disabled]) ::slotted([slot='tab'][aria-selected='true'])::after{background-color:${colorNeutralForegroundDisabled}}:host([disabled]) ::slotted([slot='tab']:hover):before{content:unset}:host([appearance='subtle']) ::slotted([slot='tab']:hover){background-color:${colorSubtleBackgroundHover};color:${colorNeutralForeground1Hover};fill:${colorCompoundBrandForeground1Hover}}:host([appearance='subtle']) ::slotted([slot='tab']:active){background-color:${colorSubtleBackgroundPressed};fill:${colorSubtleBackgroundPressed};color:${colorNeutralForeground1}}`;
12199
+ :host{--tabPaddingInline:inherit;--tabPaddingBlock:inherit;--tabIndicatorInsetInline:0;--tabIndicatorInsetBlock:0;box-sizing:border-box;color:${colorNeutralForeground2};flex-direction:row}:host([orientation='vertical']){flex-direction:column}:host([orientation='vertical']) ::slotted([role='tab']){justify-content:flex-start}:host ::slotted([slot='tab'][data-animate='true'])::after{transition-property:transform;transition-duration:${durationSlow};transition-timing-function:${curveDecelerateMax}}:host ::slotted([slot='tab'])::after{height:${strokeWidthThicker};margin-block-start:auto;transform-origin:left;transform:translateX(var(--tabIndicatorOffset)) scaleX(var(--tabIndicatorScale))}:host([orientation='vertical']) ::slotted([slot='tab'])::after{width:${strokeWidthThicker};height:unset;margin-block-start:unset;transform-origin:top;transform:translateY(var(--tabIndicatorOffset)) scaleY(var(--tabIndicatorScale))}:host ::slotted([slot='tab'])::before{height:${strokeWidthThicker};border-radius:${borderRadiusCircular};content:'';inset-inline:var(--tabIndicatorInsetInline);inset-block:var(--tabIndicatorInsetBlock);position:absolute;margin-top:auto}:host ::slotted([slot='tab'])::before{inset-inline:var(--tabIndicatorInsetInline);inset-block:var(--tabIndicatorInsetBlock)}:host ::slotted([slot='tab'][aria-selected='true'])::before{background-color:${colorNeutralForegroundDisabled}}:host ::slotted([slot='tab'][aria-selected='false']:hover)::after{height:${strokeWidthThicker};margin-block-start:auto;transform-origin:left}:host([orientation='vertical']) ::slotted([slot='tab'])::before,:host([orientation='vertical']) ::slotted([slot='tab'][aria-selected='false']:hover)::after{height:unset;width:${strokeWidthThicker};margin-inline-end:auto;transform-origin:top}:host(:where([size='small'],[size='large'])) ::slotted([slot='tab']){padding-inline:var(--tabPaddingInline);padding-block:var(--tabPaddingBlock)}:host([size='small']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalSNudge};--tabPaddingInline:${spacingHorizontalSNudge};font-size:${fontSizeBase300};line-height:${lineHeightBase300}}:host([size='large']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalL};--tabPaddingInline:${spacingHorizontalMNudge};font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host ::slotted([slot='tab'])::after,:host ::slotted([slot='tab'])::before,:host ::slotted([slot='tab']:hover)::after{inset-inline:var(--tabIndicatorInsetInline)}:host ::slotted([slot='tab']){--tabIndicatorInsetInline:${spacingHorizontalMNudge}}:host([size='small']) ::slotted([slot='tab']){--tabIndicatorInsetInline:${spacingHorizontalSNudge}}:host([size='large']) ::slotted([slot='tab']){--tabIndicatorInsetInline:${spacingHorizontalMNudge}}:host([orientation='vertical']) ::slotted([slot='tab']){padding-block:var(--tabPaddingBlock)}:host([orientation='vertical']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalS}}:host([orientation='vertical'][size='small']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalXXS}}:host([orientation='vertical'][size='large']) ::slotted([slot='tab']){--tabPaddingBlock:${spacingVerticalS}}:host([orientation='vertical']) ::slotted([slot='tab'])::after,:host([orientation='vertical']) ::slotted([slot='tab'])::before,:host([orientation='vertical']) ::slotted([slot='tab']:hover)::after{inset-inline:0;inset-block:var(--tabIndicatorInsetBlock)}:host([orientation='vertical']){--tabIndicatorInsetBlock:${spacingVerticalS}}:host([orientation='vertical'][size='small']){--tabIndicatorInsetBlock:${spacingVerticalSNudge}}:host([orientation='vertical'][size='large']){--tabIndicatorInsetBlock:${spacingVerticalMNudge}}:host([disabled]){cursor:not-allowed;color:${colorNeutralForegroundDisabled}}:host([disabled]) ::slotted([slot='tab']){pointer-events:none;cursor:not-allowed;color:${colorNeutralForegroundDisabled}}:host([disabled]) ::slotted([slot='tab']:after){background-color:${colorNeutralForegroundDisabled}}:host([disabled]) ::slotted([slot='tab'][aria-selected='true'])::after{background-color:${colorNeutralForegroundDisabled}}:host([disabled]) ::slotted([slot='tab']:hover):before{content:unset}:host([appearance='subtle']) ::slotted([slot='tab']:hover){background-color:${colorSubtleBackgroundHover};color:${colorNeutralForeground1Hover};fill:${colorCompoundBrandForeground1Hover}}:host([appearance='subtle']) ::slotted([slot='tab']:active){background-color:${colorSubtleBackgroundPressed};fill:${colorSubtleBackgroundPressed};color:${colorNeutralForeground1}}`;
11948
12200
 
11949
12201
  const definition$7 = Tablist.compose({
11950
12202
  name: `${FluentDesignSystem.prefix}-tablist`,
@@ -11983,6 +12235,8 @@ class BaseTextArea extends FASTElement {
11983
12235
  * @internal
11984
12236
  */
11985
12237
  this.elementInternals = this.attachInternals();
12238
+ this.filteredLabelSlottedNodes = [];
12239
+ this.labelSlottedNodes = [];
11986
12240
  this.userInteracted = false;
11987
12241
  this.preConnectControlEl = document.createElement("textarea");
11988
12242
  this.autoResize = false;
@@ -11999,10 +12253,11 @@ class BaseTextArea extends FASTElement {
11999
12253
  this.value = next;
12000
12254
  }
12001
12255
  labelSlottedNodesChanged() {
12256
+ this.filteredLabelSlottedNodes = this.labelSlottedNodes.filter(whitespaceFilter);
12002
12257
  if (this.labelEl) {
12003
- this.labelEl.hidden = !this.labelSlottedNodes.length;
12258
+ this.labelEl.hidden = !this.filteredLabelSlottedNodes.length;
12004
12259
  }
12005
- this.labelSlottedNodes.forEach(node => {
12260
+ this.filteredLabelSlottedNodes.forEach(node => {
12006
12261
  node.disabled = this.disabled;
12007
12262
  node.required = this.required;
12008
12263
  });
@@ -12036,8 +12291,8 @@ class BaseTextArea extends FASTElement {
12036
12291
  }
12037
12292
  requiredChanged() {
12038
12293
  this.elementInternals.ariaRequired = `${!!this.required}`;
12039
- if (this.labelSlottedNodes?.length) {
12040
- this.labelSlottedNodes.forEach(node => node.required = this.required);
12294
+ if (this.filteredLabelSlottedNodes?.length) {
12295
+ this.filteredLabelSlottedNodes.forEach(node => node.required = this.required);
12041
12296
  }
12042
12297
  }
12043
12298
  resizeChanged(prev, next) {
@@ -12272,8 +12527,8 @@ class BaseTextArea extends FASTElement {
12272
12527
  if (this.controlEl) {
12273
12528
  this.controlEl.disabled = disabled;
12274
12529
  }
12275
- if (this.labelSlottedNodes?.length) {
12276
- this.labelSlottedNodes.forEach(node => node.disabled = this.disabled);
12530
+ if (this.filteredLabelSlottedNodes?.length) {
12531
+ this.filteredLabelSlottedNodes.forEach(node => node.disabled = this.disabled);
12277
12532
  }
12278
12533
  }
12279
12534
  toggleUserValidityState() {
@@ -12446,13 +12701,7 @@ const styles$6 = css`
12446
12701
  :host{--border-color:FieldText;--border-block-end-color:FieldText;--focus-indicator-color:Highlight;--placeholder-color:FieldText}:host(:hover),:host(:active),:host(:focus-within){--border-color:Highlight;--border-block-end-color:Highlight}:host(:disabled){--color:GrayText;--border-color:GrayText;--border-block-end-color:GrayText;--placeholder-color:GrayText}`));
12447
12702
 
12448
12703
  function textAreaTemplate() {
12449
- return html`<template><label ${ref("labelEl")} for="control" part="label"><slot name="label" ${slotted({
12450
- property: "labelSlottedNodes",
12451
- filter: whitespaceFilter
12452
- })}></slot></label><div class="root" part="root"><textarea ${ref("controlEl")} id="control" class="control" part="control" ?required="${x => x.required}" ?disabled="${x => x.disabled}" ?readonly="${x => x.readOnly}" ?spellcheck="${x => x.spellcheck}" autocomplete="${x => x.autocomplete}" maxlength="${x => x.maxLength}" minlength="${x => x.minLength}" placeholder="${x => x.placeholder}" @change="${x => x.handleControlChange()}" @select="${x => x.handleControlSelect()}" @input="${x => x.handleControlInput()}"></textarea></div><div hidden><slot ${slotted({
12453
- property: "defaultSlottedNodes",
12454
- filter: whitespaceFilter
12455
- })}></slot></div></template>`;
12704
+ return html`<template><label ${ref("labelEl")} for="control" part="label"><slot name="label" ${slotted("labelSlottedNodes")}></slot></label><div class="root" part="root"><textarea ${ref("controlEl")} id="control" class="control" part="control" ?required="${x => x.required}" ?disabled="${x => x.disabled}" ?readonly="${x => x.readOnly}" ?spellcheck="${x => x.spellcheck}" autocomplete="${x => x.autocomplete}" maxlength="${x => x.maxLength}" minlength="${x => x.minLength}" placeholder="${x => x.placeholder}" @change="${x => x.handleControlChange()}" @select="${x => x.handleControlSelect()}" @input="${x => x.handleControlInput()}"></textarea></div><div hidden><slot ${slotted("defaultSlottedNodes")}></slot></div></template>`;
12456
12705
  }
12457
12706
  const template$6 = textAreaTemplate();
12458
12707
 
@@ -12955,7 +13204,7 @@ __decorateClass$6([attr], Text.prototype, "align", 2);
12955
13204
  const styles$4 = css`
12956
13205
  ${display("inline")}
12957
13206
 
12958
- :host{contain:content;font-family:${fontFamilyBase};font-size:${fontSizeBase300};line-height:${lineHeightBase300};font-weight:${fontWeightRegular};text-align:start}:host([nowrap]),:host([nowrap]) ::slotted(*){white-space:nowrap;overflow:hidden}:host([truncate]),:host([truncate]) ::slotted(*){text-overflow:ellipsis}:host([block]){display:block}:host([italic]){font-style:italic}:host([underline]){text-decoration-line:underline}:host([strikethrough]){text-decoration-line:line-through}:host([underline][strikethrough]){text-decoration-line:line-through underline}:host([size='100']){font-size:${fontSizeBase100};line-height:${lineHeightBase100}}:host([size='200']){font-size:${fontSizeBase200};line-height:${lineHeightBase200}}:host([size='400']){font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host([size='500']){font-size:${fontSizeBase500};line-height:${lineHeightBase500}}:host([size='600']){font-size:${fontSizeBase600};line-height:${lineHeightBase600}}:host([size='700']){font-size:${fontSizeHero700};line-height:${lineHeightHero700}}:host([size='800']){font-size:${fontSizeHero800};line-height:${lineHeightHero800}}:host([size='900']){font-size:${fontSizeHero900};line-height:${lineHeightHero900}}:host([size='1000']){font-size:${fontSizeHero1000};line-height:${lineHeightHero1000}}:host([font='monospace']){font-family:${fontFamilyMonospace}}:host([font='numeric']){font-family:${fontFamilyNumeric}}:host([weight='medium']){font-weight:${fontWeightMedium}}:host([weight='semibold']){font-weight:${fontWeightSemibold}}:host([weight='bold']){font-weight:${fontWeightBold}}:host([align='center']){text-align:center}:host([align='end']){text-align:end}:host([align='justify']){text-align:justify}::slotted(*){font:inherit;line-height:inherit;text-decoration-line:inherit;text-align:inherit;text-decoration-line:inherit;margin:0}`;
13207
+ :host{font-family:${fontFamilyBase};font-size:${fontSizeBase300};line-height:${lineHeightBase300};font-weight:${fontWeightRegular};text-align:start}:host([nowrap]),:host([nowrap]) ::slotted(*){white-space:nowrap;overflow:hidden}:host([truncate]),:host([truncate]) ::slotted(*){text-overflow:ellipsis}:host([block]){display:block}:host([italic]){font-style:italic}:host([underline]){text-decoration-line:underline}:host([strikethrough]){text-decoration-line:line-through}:host([underline][strikethrough]){text-decoration-line:line-through underline}:host([size='100']){font-size:${fontSizeBase100};line-height:${lineHeightBase100}}:host([size='200']){font-size:${fontSizeBase200};line-height:${lineHeightBase200}}:host([size='400']){font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host([size='500']){font-size:${fontSizeBase500};line-height:${lineHeightBase500}}:host([size='600']){font-size:${fontSizeBase600};line-height:${lineHeightBase600}}:host([size='700']){font-size:${fontSizeHero700};line-height:${lineHeightHero700}}:host([size='800']){font-size:${fontSizeHero800};line-height:${lineHeightHero800}}:host([size='900']){font-size:${fontSizeHero900};line-height:${lineHeightHero900}}:host([size='1000']){font-size:${fontSizeHero1000};line-height:${lineHeightHero1000}}:host([font='monospace']){font-family:${fontFamilyMonospace}}:host([font='numeric']){font-family:${fontFamilyNumeric}}:host([weight='medium']){font-weight:${fontWeightMedium}}:host([weight='semibold']){font-weight:${fontWeightSemibold}}:host([weight='bold']){font-weight:${fontWeightBold}}:host([align='center']){text-align:center}:host([align='end']){text-align:end}:host([align='justify']){text-align:justify}::slotted(*){font:inherit;line-height:inherit;text-decoration-line:inherit;text-align:inherit;text-decoration-line:inherit;margin:0}`;
12959
13208
 
12960
13209
  const template$4 = html`<slot></slot>`;
12961
13210
 
@@ -13295,6 +13544,7 @@ class BaseTree extends FASTElement {
13295
13544
  this.childTreeItems = [];
13296
13545
  this.elementInternals.role = "tree";
13297
13546
  }
13547
+ /** @internal */
13298
13548
  childTreeItemsChanged() {
13299
13549
  this.updateCurrentSelected();
13300
13550
  }
@@ -13391,6 +13641,9 @@ class BaseTree extends FASTElement {
13391
13641
  }
13392
13642
  if (e.target === this) {
13393
13643
  this.currentFocused = this.getValidFocusableItem();
13644
+ if (this.currentFocused && this.currentFocused.tabIndex < 0) {
13645
+ this.currentFocused.tabIndex = 0;
13646
+ }
13394
13647
  this.currentFocused?.focus();
13395
13648
  return;
13396
13649
  }
@@ -13478,6 +13731,10 @@ class BaseTree extends FASTElement {
13478
13731
  focusItem.focus();
13479
13732
  }
13480
13733
  }
13734
+ /** @internal */
13735
+ handleDefaultSlotChange() {
13736
+ this.childTreeItems = this.defaultSlot.assignedElements().filter(el => isTreeItem(el));
13737
+ }
13481
13738
  }
13482
13739
  __decorateClass$3([observable], BaseTree.prototype, "currentSelected", 2);
13483
13740
  __decorateClass$3([observable], BaseTree.prototype, "childTreeItems", 2);
@@ -13529,12 +13786,10 @@ __decorateClass$2([attr], Tree.prototype, "appearance", 2);
13529
13786
 
13530
13787
  const styles$1 = css`
13531
13788
  ${display("block")}
13789
+
13532
13790
  :host{outline:none}`;
13533
13791
 
13534
- const template$1 = html`<template tabindex="0" @click="${(x, c) => x.clickHandler(c.event)}" @focusin="${(x, c) => x.focusHandler(c.event)}" @focusout="${(x, c) => x.blurHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}" @change="${(x, c) => x.changeHandler(c.event)}" ${children({
13535
- property: "childTreeItems",
13536
- filter: node => isTreeItem(node)
13537
- })}><slot></slot></template>`;
13792
+ const template$1 = html`<template tabindex="0" @click="${(x, c) => x.clickHandler(c.event)}" @focusin="${(x, c) => x.focusHandler(c.event)}" @focusout="${(x, c) => x.blurHandler(c.event)}" @keydown="${(x, c) => x.keydownHandler(c.event)}" @change="${(x, c) => x.changeHandler(c.event)}"><slot ${ref("defaultSlot")} @slotchange="${x => x.handleDefaultSlotChange()}"></slot></template>`;
13538
13793
 
13539
13794
  const definition$1 = Tree.compose({
13540
13795
  name: `${FluentDesignSystem.prefix}-tree`,
@@ -13592,6 +13847,7 @@ class BaseTreeItem extends FASTElement {
13592
13847
  * @internal
13593
13848
  */
13594
13849
  selectedChanged(prev, next) {
13850
+ this.updateTabindexBySelected();
13595
13851
  this.$emit("change");
13596
13852
  toggleState(this.elementInternals, "selected", next);
13597
13853
  this.elementInternals.ariaSelected = next ? "true" : "false";
@@ -13613,6 +13869,10 @@ class BaseTreeItem extends FASTElement {
13613
13869
  this.empty = this.childTreeItems?.length === 0;
13614
13870
  this.updateChildTreeItems();
13615
13871
  }
13872
+ connectedCallback() {
13873
+ super.connectedCallback();
13874
+ this.updateTabindexBySelected();
13875
+ }
13616
13876
  /**
13617
13877
  * Updates the childrens indent
13618
13878
  *
@@ -13653,7 +13913,17 @@ class BaseTreeItem extends FASTElement {
13653
13913
  get isNestedItem() {
13654
13914
  return isTreeItem(this.parentElement);
13655
13915
  }
13916
+ updateTabindexBySelected() {
13917
+ if (this.$fastController.isConnected) {
13918
+ this.tabIndex = this.selected ? 0 : -1;
13919
+ }
13920
+ }
13921
+ /** @internal */
13922
+ handleItemSlotChange() {
13923
+ this.childTreeItems = this.itemSlot.assignedElements().filter(el => isTreeItem(el));
13924
+ }
13656
13925
  }
13926
+ __decorateClass$1([observable], BaseTreeItem.prototype, "itemSlot", 2);
13657
13927
  __decorateClass$1([attr({
13658
13928
  mode: "boolean"
13659
13929
  })], BaseTreeItem.prototype, "expanded", 2);
@@ -13729,13 +13999,10 @@ const styles = css`
13729
13999
  ${display("block")}
13730
14000
 
13731
14001
  :host{outline:none;font-size:${fontSizeBase300};line-height:${lineHeightBase300}}:host(:focus-visible) .positioning-region{box-shadow:${spacingVerticalNone} ${spacingVerticalNone} ${spacingVerticalNone} ${spacingVerticalXXS}
13732
- ${colorStrokeFocus2} inset}.positioning-region{display:flex;align-items:center;justify-content:space-between;cursor:pointer;height:${spacingVerticalXXXL};padding-inline-start:calc(var(--indent) * ${spacingHorizontalXXL});padding-inline-end:${spacingVerticalS};border-radius:${borderRadiusMedium};background-color:${colorSubtleBackground};color:${colorNeutralForeground2};gap:${spacingHorizontalXS}}@media (prefers-contrast:more){:host(:focus-visible) .positioning-region{outline:1px solid ${colorStrokeFocus2}}}.content{display:flex;align-items:center;gap:${spacingHorizontalXS}}.chevron{display:flex;align-items:center;flex-shrink:0;justify-content:center;width:${spacingHorizontalXXL};height:${spacingVerticalXXL};transition:transform ${durationFaster} ${curveEasyEaseMax};transform:rotate(0deg)}.chevron:dir(rtl){transform:rotate(180deg)}.aside{display:flex;align-items:center}.positioning-region:hover{background-color:${colorSubtleBackgroundHover};color:${colorNeutralForeground2Hover}}.positioning-region:active{background-color:${colorSubtleBackgroundPressed};color:${colorNeutralForeground2Pressed}}::slotted([slot='start']),::slotted([slot='end']),::slotted(:not([slot])){display:flex;align-items:center;min-width:0}::slotted([slot='start']){flex-shrink:0}::slotted(:not([slot])){padding-inline:${spacingHorizontalXXS}}.items{display:none}:host([expanded]) .items{display:block}:host([empty]) .chevron,:host([empty]) .items{visibility:hidden}:host([selected]) .positioning-region{background-color:${colorSubtleBackgroundSelected};color:${colorNeutralForeground2Selected}}:host([selected]) .content,:host([selected]) .chevron{color:${colorNeutralForeground3Selected}}:host([size='small']) .positioning-region{height:${spacingVerticalXXL};padding-inline-start:calc(var(--indent) * ${spacingHorizontalM})}:host([appearance='subtle-alpha']) .positioning-region:hover{background-color:${colorSubtleBackgroundLightAlphaHover}}:host([appearance='subtle-alpha']) .positioning-region:active{background-color:${colorSubtleBackgroundLightAlphaPressed}}:host([appearance='subtle-alpha'][selected]) .positioning-region{background-color:${colorSubtleBackgroundLightAlphaSelected};color:${colorNeutralForeground2Selected}}:host([appearance='transparent']) .positioning-region{background-color:${colorTransparentBackground}}:host([appearance='transparent']) .positioning-region:hover{background-color:${colorTransparentBackgroundHover}}:host([appearance='transparent']) .positioning-region:active{background-color:${colorTransparentBackgroundPressed}}:host([appearance='transparent'][selected]) .positioning-region{background-color:${colorTransparentBackgroundSelected};color:${colorNeutralForeground2Selected}}:host([expanded]) .chevron{transform:rotate(90deg)}`;
14002
+ ${colorStrokeFocus2} inset}.positioning-region{display:flex;align-items:center;justify-content:space-between;cursor:pointer;height:${spacingVerticalXXXL};padding-inline-start:calc(var(--indent) * ${spacingHorizontalXXL});padding-inline-end:${spacingVerticalS};border-radius:${borderRadiusMedium};background-color:${colorSubtleBackground};color:${colorNeutralForeground2};gap:${spacingHorizontalXS}}@media (prefers-contrast:more){:host(:focus-visible) .positioning-region{outline:1px solid ${colorStrokeFocus2}}}.content{display:flex;align-items:center;gap:${spacingHorizontalXS}}.chevron{display:flex;align-items:center;flex-shrink:0;justify-content:center;width:${spacingHorizontalXXL};height:${spacingVerticalXXL};transition:transform ${durationFaster} ${curveEasyEaseMax};transform:rotate(0deg)}.chevron:dir(rtl){transform:rotate(180deg)}.chevron svg{inline-size:12px;block-size:12px}.aside{display:flex;align-items:center}.positioning-region:hover{background-color:${colorSubtleBackgroundHover};color:${colorNeutralForeground2Hover}}.positioning-region:active{background-color:${colorSubtleBackgroundPressed};color:${colorNeutralForeground2Pressed}}::slotted([slot='start']),::slotted([slot='end']),::slotted(:not([slot])){display:flex;align-items:center;min-width:0}::slotted([slot='start']){flex-shrink:0}::slotted(:not([slot])){padding-inline:${spacingHorizontalXXS}}.items{display:none}:host([expanded]) .items{display:block}:host([empty]) .chevron,:host([empty]) .items{visibility:hidden}:host([selected]) .positioning-region{background-color:${colorSubtleBackgroundSelected};color:${colorNeutralForeground2Selected}}:host([selected]) .content,:host([selected]) .chevron{color:${colorNeutralForeground3Selected}}:host([size='small']) .positioning-region{height:${spacingVerticalXXL};padding-inline-start:calc(var(--indent) * ${spacingHorizontalM})}:host([appearance='subtle-alpha']) .positioning-region:hover{background-color:${colorSubtleBackgroundLightAlphaHover}}:host([appearance='subtle-alpha']) .positioning-region:active{background-color:${colorSubtleBackgroundLightAlphaPressed}}:host([appearance='subtle-alpha'][selected]) .positioning-region{background-color:${colorSubtleBackgroundLightAlphaSelected};color:${colorNeutralForeground2Selected}}:host([appearance='transparent']) .positioning-region{background-color:${colorTransparentBackground}}:host([appearance='transparent']) .positioning-region:hover{background-color:${colorTransparentBackgroundHover}}:host([appearance='transparent']) .positioning-region:active{background-color:${colorTransparentBackgroundPressed}}:host([appearance='transparent'][selected]) .positioning-region{background-color:${colorTransparentBackgroundSelected};color:${colorNeutralForeground2Selected}}:host([expanded]) .chevron{transform:rotate(90deg)}`;
13733
14003
 
13734
- const chevronIcon = html`<svg width="12" height="12" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M4.65 2.15a.5.5 0 000 .7L7.79 6 4.65 9.15a.5.5 0 10.7.7l3.5-3.5a.5.5 0 000-.7l-3.5-3.5a.5.5 0 00-.7 0z"></path></svg>`;
13735
- const template = html`<template tabindex="${x => x.selected ? 0 : -1}" slot="${x => x.isNestedItem ? "item" : void 0}" ${children({
13736
- property: "childTreeItems",
13737
- filter: node => isTreeItem(node)
13738
- })}><div class="positioning-region" part="positioning-region"><div class="content" part="content"><span class="chevron" part="chevron"><slot name="chevron">${chevronIcon}</slot></span><slot name="start"></slot><slot></slot><slot name="end"></slot></div><div class="aside" part="aside"><slot name="aside"></slot></div></div><div role="group" class="items" part="items"><slot name="item"></slot></div></template>`;
14004
+ const chevronIcon = html`<svg viewBox="0 0 12 12" fill="currentColor"><path d="M4.65 2.15a.5.5 0 000 .7L7.79 6 4.65 9.15a.5.5 0 10.7.7l3.5-3.5a.5.5 0 000-.7l-3.5-3.5a.5.5 0 00-.7 0z"></path></svg>`;
14005
+ const template = html`<template slot="${x => x.isNestedItem ? "item" : void 0}"><div class="positioning-region" part="positioning-region"><div class="content" part="content"><span class="chevron" part="chevron" aria-hidden="true"><slot name="chevron">${chevronIcon}</slot></span><slot name="start"></slot><slot></slot><slot name="end"></slot></div><div class="aside" part="aside"><slot name="aside"></slot></div></div><div role="group" class="items" part="items"><slot name="item" ${ref("itemSlot")} @slotchange="${x => x.handleItemSlotChange()}"></slot></div></template>`;
13739
14006
 
13740
14007
  const definition = TreeItem.compose({
13741
14008
  name: `${FluentDesignSystem.prefix}-tree-item`,