@astryxdesign/core 0.1.2-canary.ac17c7f → 0.1.2-canary.ae2d146

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 (261) hide show
  1. package/dist/Avatar/Avatar.d.ts.map +1 -1
  2. package/dist/Avatar/Avatar.js +11 -5
  3. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  4. package/dist/Breadcrumbs/BreadcrumbItem.js +20 -4
  5. package/dist/Calendar/Calendar.d.ts.map +1 -1
  6. package/dist/Calendar/Calendar.js +43 -28
  7. package/dist/Calendar/styles.d.ts +3 -9
  8. package/dist/Calendar/styles.d.ts.map +1 -1
  9. package/dist/Calendar/styles.js +3 -11
  10. package/dist/Chat/ChatMessageList.d.ts +14 -1
  11. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  12. package/dist/Chat/ChatMessageList.js +2 -0
  13. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  14. package/dist/Chat/useTriggerMenu.js +4 -1
  15. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  16. package/dist/CheckboxInput/CheckboxInput.js +4 -2
  17. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  18. package/dist/CodeBlock/CodeBlock.js +49 -37
  19. package/dist/ContextMenu/ContextMenu.d.ts +6 -1
  20. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  21. package/dist/ContextMenu/ContextMenu.js +55 -3
  22. package/dist/DateInput/DateInput.d.ts.map +1 -1
  23. package/dist/DateInput/DateInput.js +17 -2
  24. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  25. package/dist/DateRangeInput/DateRangeInput.js +9 -4
  26. package/dist/DateTimeInput/DateTimeInput.d.ts +7 -1
  27. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  28. package/dist/DateTimeInput/DateTimeInput.js +15 -3
  29. package/dist/Dialog/Dialog.d.ts.map +1 -1
  30. package/dist/Dialog/Dialog.js +12 -0
  31. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  32. package/dist/DropdownMenu/DropdownMenu.js +38 -5
  33. package/dist/Field/Field.d.ts +19 -2
  34. package/dist/Field/Field.d.ts.map +1 -1
  35. package/dist/Field/Field.js +4 -0
  36. package/dist/Field/FieldLabel.d.ts +21 -2
  37. package/dist/Field/FieldLabel.d.ts.map +1 -1
  38. package/dist/Field/FieldLabel.js +37 -22
  39. package/dist/FileInput/FileInput.d.ts.map +1 -1
  40. package/dist/FileInput/FileInput.js +13 -5
  41. package/dist/InputGroup/InputGroup.d.ts.map +1 -1
  42. package/dist/InputGroup/InputGroup.js +4 -1
  43. package/dist/Kbd/Kbd.d.ts.map +1 -1
  44. package/dist/Kbd/Kbd.js +33 -1
  45. package/dist/Layer/layerAnimations.stylex.d.ts +4 -0
  46. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  47. package/dist/Layer/layerAnimations.stylex.js +8 -4
  48. package/dist/Layer/useLayer.d.ts +10 -0
  49. package/dist/Layer/useLayer.d.ts.map +1 -1
  50. package/dist/Layer/useLayer.js +41 -6
  51. package/dist/Layout/padding.stylex.d.ts +51 -0
  52. package/dist/Layout/padding.stylex.d.ts.map +1 -1
  53. package/dist/Layout/padding.stylex.js +63 -0
  54. package/dist/Link/Link.d.ts +7 -1
  55. package/dist/Link/Link.d.ts.map +1 -1
  56. package/dist/Link/Link.js +12 -4
  57. package/dist/Markdown/Markdown.d.ts.map +1 -1
  58. package/dist/Markdown/Markdown.js +5 -0
  59. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  60. package/dist/MultiSelector/MultiSelector.js +16 -1
  61. package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
  62. package/dist/NavMenu/NavHeadingMenu.js +17 -2
  63. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  64. package/dist/NumberInput/NumberInput.js +7 -1
  65. package/dist/Popover/usePopover.d.ts +25 -2
  66. package/dist/Popover/usePopover.d.ts.map +1 -1
  67. package/dist/Popover/usePopover.js +18 -6
  68. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  69. package/dist/PowerSearch/PowerSearch.js +4 -1
  70. package/dist/ProgressBar/ProgressBar.js +1 -1
  71. package/dist/RadioList/RadioList.d.ts +1 -1
  72. package/dist/RadioList/RadioList.d.ts.map +1 -1
  73. package/dist/RadioList/RadioList.js +76 -3
  74. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  75. package/dist/SegmentedControl/SegmentedControl.js +22 -0
  76. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  77. package/dist/SegmentedControl/SegmentedControlItem.js +6 -2
  78. package/dist/Selector/Selector.d.ts.map +1 -1
  79. package/dist/Selector/Selector.js +17 -1
  80. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  81. package/dist/SideNav/SideNavItem.js +1 -1
  82. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  83. package/dist/Skeleton/Skeleton.js +8 -2
  84. package/dist/Spinner/Spinner.d.ts.map +1 -1
  85. package/dist/Spinner/Spinner.js +1 -1
  86. package/dist/Stack/Stack.d.ts +28 -1
  87. package/dist/Stack/Stack.d.ts.map +1 -1
  88. package/dist/Stack/Stack.js +17 -1
  89. package/dist/Stack/StackItem.d.ts +12 -1
  90. package/dist/Stack/StackItem.d.ts.map +1 -1
  91. package/dist/Stack/StackItem.js +8 -1
  92. package/dist/TabList/Tab.d.ts.map +1 -1
  93. package/dist/TabList/Tab.js +6 -0
  94. package/dist/TabList/TabList.d.ts +14 -3
  95. package/dist/TabList/TabList.d.ts.map +1 -1
  96. package/dist/TabList/TabList.js +75 -4
  97. package/dist/TabList/TabListContext.d.ts +5 -0
  98. package/dist/TabList/TabListContext.d.ts.map +1 -1
  99. package/dist/TabList/TabListContext.js +5 -0
  100. package/dist/TabList/TabMenu.d.ts.map +1 -1
  101. package/dist/TabList/TabMenu.js +6 -1
  102. package/dist/Table/Table.d.ts.map +1 -1
  103. package/dist/Table/Table.js +7 -1
  104. package/dist/Toast/Toast.d.ts.map +1 -1
  105. package/dist/Toast/Toast.js +14 -0
  106. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  107. package/dist/Toast/ToastViewport.js +132 -3
  108. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  109. package/dist/Tooltip/useTooltip.js +56 -9
  110. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  111. package/dist/TreeList/TreeListItem.js +8 -3
  112. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  113. package/dist/Typeahead/BaseTypeahead.js +58 -4
  114. package/dist/VisuallyHidden/VisuallyHidden.d.ts +61 -0
  115. package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
  116. package/dist/VisuallyHidden/VisuallyHidden.js +65 -0
  117. package/dist/VisuallyHidden/index.d.ts +11 -0
  118. package/dist/VisuallyHidden/index.d.ts.map +1 -0
  119. package/dist/VisuallyHidden/index.js +13 -0
  120. package/dist/astryx.css +1 -0
  121. package/dist/astryx.umd.js +47 -47
  122. package/dist/astryx.umd.js.map +4 -4
  123. package/dist/hooks/focusableSelector.d.ts +22 -0
  124. package/dist/hooks/focusableSelector.d.ts.map +1 -0
  125. package/dist/hooks/focusableSelector.js +24 -0
  126. package/dist/hooks/index.d.ts +5 -1
  127. package/dist/hooks/index.d.ts.map +1 -1
  128. package/dist/hooks/index.js +3 -1
  129. package/dist/hooks/useAnnounce.d.ts +40 -0
  130. package/dist/hooks/useAnnounce.d.ts.map +1 -0
  131. package/dist/hooks/useAnnounce.js +142 -0
  132. package/dist/hooks/useClickableContainer.d.ts +16 -1
  133. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  134. package/dist/hooks/useClickableContainer.js +16 -4
  135. package/dist/hooks/useEntryAnimation.d.ts.map +1 -1
  136. package/dist/hooks/useEntryAnimation.js +4 -4
  137. package/dist/hooks/useFocusTrap.d.ts +18 -0
  138. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  139. package/dist/hooks/useFocusTrap.js +87 -3
  140. package/dist/hooks/useGridFocus.d.ts +32 -1
  141. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  142. package/dist/hooks/useGridFocus.js +143 -58
  143. package/dist/hooks/useListFocus.d.ts +1 -1
  144. package/dist/hooks/useListFocus.d.ts.map +1 -1
  145. package/dist/hooks/useListFocus.js +58 -19
  146. package/dist/hooks/useTypeahead.d.ts +63 -0
  147. package/dist/hooks/useTypeahead.d.ts.map +1 -0
  148. package/dist/hooks/useTypeahead.js +117 -0
  149. package/dist/index.d.ts +1 -0
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +1 -0
  152. package/package.json +6 -1
  153. package/src/Avatar/Avatar.test.tsx +37 -0
  154. package/src/Avatar/Avatar.tsx +10 -5
  155. package/src/Breadcrumbs/BreadcrumbItem.tsx +20 -5
  156. package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -10
  157. package/src/Calendar/Calendar.test.tsx +147 -4
  158. package/src/Calendar/Calendar.tsx +52 -43
  159. package/src/Calendar/styles.ts +4 -9
  160. package/src/Chat/ChatMessageList.doc.mjs +8 -0
  161. package/src/Chat/ChatMessageList.test.tsx +18 -0
  162. package/src/Chat/ChatMessageList.tsx +16 -0
  163. package/src/Chat/useTriggerMenu.tsx +3 -0
  164. package/src/CheckboxInput/CheckboxInput.test.tsx +14 -25
  165. package/src/CheckboxInput/CheckboxInput.tsx +4 -2
  166. package/src/CheckboxList/CheckboxList.test.tsx +11 -14
  167. package/src/CodeBlock/CodeBlock.test.tsx +115 -0
  168. package/src/CodeBlock/CodeBlock.tsx +61 -33
  169. package/src/ContextMenu/ContextMenu.doc.mjs +6 -0
  170. package/src/ContextMenu/ContextMenu.test.tsx +90 -0
  171. package/src/ContextMenu/ContextMenu.tsx +78 -9
  172. package/src/DateInput/DateInput.test.tsx +59 -0
  173. package/src/DateInput/DateInput.tsx +24 -7
  174. package/src/DateRangeInput/DateRangeInput.test.tsx +69 -18
  175. package/src/DateRangeInput/DateRangeInput.tsx +7 -3
  176. package/src/DateTimeInput/DateTimeInput.doc.mjs +7 -0
  177. package/src/DateTimeInput/DateTimeInput.test.tsx +99 -6
  178. package/src/DateTimeInput/DateTimeInput.tsx +32 -3
  179. package/src/Dialog/Dialog.tsx +12 -0
  180. package/src/DropdownMenu/DropdownMenu.test.tsx +56 -19
  181. package/src/DropdownMenu/DropdownMenu.tsx +48 -2
  182. package/src/Field/Field.test.tsx +32 -0
  183. package/src/Field/Field.tsx +23 -5
  184. package/src/Field/FieldLabel.tsx +53 -17
  185. package/src/FileInput/FileInput.test.tsx +36 -47
  186. package/src/FileInput/FileInput.tsx +9 -3
  187. package/src/InputGroup/InputGroup.test.tsx +21 -63
  188. package/src/InputGroup/InputGroup.tsx +4 -1
  189. package/src/Kbd/Kbd.test.tsx +22 -4
  190. package/src/Kbd/Kbd.tsx +35 -3
  191. package/src/Layer/layerAnimations.stylex.ts +20 -4
  192. package/src/Layer/useLayer.tsx +67 -6
  193. package/src/Layout/padding.stylex.ts +52 -0
  194. package/src/Link/Link.doc.mjs +14 -0
  195. package/src/Link/Link.test.tsx +32 -0
  196. package/src/Link/Link.tsx +23 -1
  197. package/src/Markdown/Markdown.test.tsx +11 -0
  198. package/src/Markdown/Markdown.tsx +5 -0
  199. package/src/MultiSelector/MultiSelector.test.tsx +34 -0
  200. package/src/MultiSelector/MultiSelector.tsx +16 -1
  201. package/src/NavMenu/NavHeadingMenu.test.tsx +32 -1
  202. package/src/NavMenu/NavHeadingMenu.tsx +30 -2
  203. package/src/NumberInput/NumberInput.test.tsx +72 -38
  204. package/src/NumberInput/NumberInput.tsx +12 -1
  205. package/src/Popover/usePopover.doc.mjs +7 -3
  206. package/src/Popover/usePopover.tsx +49 -6
  207. package/src/PowerSearch/PowerSearch.tsx +3 -0
  208. package/src/ProgressBar/ProgressBar.test.tsx +34 -26
  209. package/src/ProgressBar/ProgressBar.tsx +1 -1
  210. package/src/RadioList/RadioList.test.tsx +129 -14
  211. package/src/RadioList/RadioList.tsx +103 -8
  212. package/src/SegmentedControl/SegmentedControl.test.tsx +84 -40
  213. package/src/SegmentedControl/SegmentedControl.tsx +26 -0
  214. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -1
  215. package/src/Selector/Selector.test.tsx +46 -0
  216. package/src/Selector/Selector.tsx +16 -0
  217. package/src/SideNav/SideNav.test.tsx +16 -0
  218. package/src/SideNav/SideNavItem.tsx +2 -4
  219. package/src/Skeleton/Skeleton.test.tsx +25 -0
  220. package/src/Skeleton/Skeleton.tsx +11 -1
  221. package/src/Spinner/Spinner.tsx +7 -1
  222. package/src/Stack/Stack.doc.mjs +57 -0
  223. package/src/Stack/Stack.test.tsx +55 -5
  224. package/src/Stack/Stack.tsx +53 -1
  225. package/src/Stack/StackItem.test.tsx +23 -0
  226. package/src/Stack/StackItem.tsx +20 -0
  227. package/src/TabList/Tab.tsx +6 -0
  228. package/src/TabList/TabList.doc.mjs +6 -0
  229. package/src/TabList/TabList.test.tsx +167 -0
  230. package/src/TabList/TabList.tsx +103 -9
  231. package/src/TabList/TabListContext.ts +7 -3
  232. package/src/TabList/TabMenu.tsx +6 -3
  233. package/src/Table/Table.test.tsx +10 -0
  234. package/src/Table/Table.tsx +5 -0
  235. package/src/Toast/Toast.tsx +14 -0
  236. package/src/Toast/ToastViewport.test.tsx +204 -0
  237. package/src/Toast/ToastViewport.tsx +167 -21
  238. package/src/Tooltip/Tooltip.test.tsx +68 -0
  239. package/src/Tooltip/useTooltip.tsx +55 -8
  240. package/src/TreeList/TreeList.test.tsx +22 -6
  241. package/src/TreeList/TreeListItem.tsx +8 -3
  242. package/src/Typeahead/BaseTypeahead.tsx +69 -8
  243. package/src/Typeahead/Typeahead.test.tsx +160 -0
  244. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +80 -0
  245. package/src/VisuallyHidden/VisuallyHidden.test.tsx +76 -0
  246. package/src/VisuallyHidden/VisuallyHidden.tsx +113 -0
  247. package/src/VisuallyHidden/index.ts +15 -0
  248. package/src/hooks/focusableSelector.ts +25 -0
  249. package/src/hooks/index.ts +7 -1
  250. package/src/hooks/useAnnounce.test.tsx +101 -0
  251. package/src/hooks/useAnnounce.ts +168 -0
  252. package/src/hooks/useClickableContainer.ts +16 -4
  253. package/src/hooks/useEntryAnimation.ts +16 -4
  254. package/src/hooks/useFocusTrap.test.tsx +132 -0
  255. package/src/hooks/useFocusTrap.ts +98 -4
  256. package/src/hooks/useGridFocus.ts +184 -64
  257. package/src/hooks/useListFocus.test.tsx +106 -0
  258. package/src/hooks/useListFocus.ts +72 -19
  259. package/src/hooks/useTypeahead.test.tsx +109 -0
  260. package/src/hooks/useTypeahead.ts +183 -0
  261. package/src/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/Avatar/Avatar.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsC5C;;GAEG;AACH,KAAK,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExE;;GAEG;AACH,KAAK,iBAAiB,GAClB,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgBpD;AAqFD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAsCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,WAAW,EACX,IAAI,EACJ,IAAc,EACd,GAAG,EACH,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+BA8Eb;yBA3Fe,MAAM"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/Avatar/Avatar.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsC5C;;GAEG;AACH,KAAK,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExE;;GAEG;AACH,KAAK,iBAAiB,GAClB,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgBpD;AAqFD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAsCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,WAAW,EACX,IAAI,EACJ,IAAc,EACd,GAAG,EACH,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+BAmFb;yBAhGe,MAAM"}
@@ -247,7 +247,12 @@ export function Avatar({
247
247
  const showFallbackImage = !showImage && fallbackSrc && !fallbackError;
248
248
  const showInitials = !showImage && !showFallbackImage && name;
249
249
  const showIcon = !showImage && !showFallbackImage && !name;
250
- const accessibleName = alt || name || 'Avatar';
250
+
251
+ // A meaningful accessible name comes from `alt` or `name`. With neither, the
252
+ // avatar is decorative — expose it as `presentation`/`aria-hidden` rather than
253
+ // announcing a meaningless generic "Avatar" (obs-9).
254
+ const accessibleName = alt || name;
255
+ const isDecorative = !accessibleName;
251
256
  const avatarGroup = useAvatarGroup();
252
257
  const resolvedSize = avatarGroup?.size ?? size;
253
258
  const numericSize = useMemo(() => resolveSize(resolvedSize), [resolvedSize]);
@@ -255,8 +260,9 @@ export function Avatar({
255
260
  value: numericSize,
256
261
  children: /*#__PURE__*/_jsxs("div", {
257
262
  ref: ref,
258
- role: "img",
259
- "aria-label": accessibleName,
263
+ role: isDecorative ? 'presentation' : 'img',
264
+ "aria-label": isDecorative ? undefined : accessibleName,
265
+ "aria-hidden": isDecorative || undefined,
260
266
  "data-testid": testId,
261
267
  ...mergeProps(themeProps('avatar', {
262
268
  size: resolvedSize
@@ -266,14 +272,14 @@ export function Avatar({
266
272
  ...stylex.props(styles.content, dynamicStyles.size(numericSize)),
267
273
  children: [showImage && /*#__PURE__*/_jsx("img", {
268
274
  src: src,
269
- alt: accessibleName,
275
+ alt: "",
270
276
  onError: () => setImageError(true),
271
277
  ...{
272
278
  className: "xh8yej3 x5yr21d xl1xv1r"
273
279
  }
274
280
  }), showFallbackImage && /*#__PURE__*/_jsx("img", {
275
281
  src: fallbackSrc,
276
- alt: accessibleName,
282
+ alt: "",
277
283
  onError: () => setFallbackError(true),
278
284
  ...{
279
285
  className: "xh8yej3 x5yr21d xl1xv1r"
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAIZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAoFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,GACtB,EAAE,mBAAmB,qBAsIrB;yBAlJe,cAAc"}
1
+ {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAIZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAoFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,GACtB,EAAE,mBAAmB,qBAqJrB;yBAjKe,cAAc"}
@@ -88,12 +88,20 @@ export function BreadcrumbItem({
88
88
  const LinkComponent = useLinkComponent(as);
89
89
  const isSupporting = ctx.variant === 'supporting';
90
90
  const liRef = useRef(null);
91
+ // Points at the element we render to hold the item's content (the
92
+ // link/button/span in the auto-candidate path). Auto-current detection sets
93
+ // aria-current on this instead of guessing the <li>'s last child.
94
+ const contentRef = useRef(null);
91
95
  const isCurrent = isCurrentProp === true;
92
96
  const isAutoCandidate = isCurrentProp == null;
93
97
 
94
98
  // Auto-detect: if no sibling has aria-current="page" and this is the last
95
99
  // non-separator item, set aria-current on our content element.
96
100
  // Runs as useEffect (not layout) — only sets an aria attribute, no visual change.
101
+ // Placed on the item's content element (the link/button/span after the
102
+ // separator), matching where the explicit `isCurrent` path sets it, so
103
+ // aria-current lands on the actual interactive element — including when the
104
+ // last item is a link — rather than on the outer <li> (navigation-11).
97
105
  useEffect(() => {
98
106
  if (!isAutoCandidate) {
99
107
  return;
@@ -112,11 +120,16 @@ export function BreadcrumbItem({
112
120
  const isLast = items.length > 0 && items[items.length - 1] === li;
113
121
  const hasExplicit = ol.querySelector('[aria-current="page"]');
114
122
  if (isLast && !hasExplicit) {
115
- li.setAttribute('aria-current', 'page');
123
+ // We control the element that holds the content (see the auto-candidate
124
+ // render path below), so set aria-current on that ref rather than
125
+ // assuming a positional last child. Fall back to the <li> only if the
126
+ // ref is somehow unresolved.
127
+ const target = contentRef.current ?? li;
128
+ target.setAttribute('aria-current', 'page');
129
+ return () => {
130
+ target.removeAttribute('aria-current');
131
+ };
116
132
  }
117
- return () => {
118
- li.removeAttribute('aria-current');
119
- };
120
133
  });
121
134
  const content = /*#__PURE__*/_jsxs(_Fragment, {
122
135
  children: [startIcon && /*#__PURE__*/_jsx("span", {
@@ -165,6 +178,7 @@ export function BreadcrumbItem({
165
178
  },
166
179
  children: ctx.separator
167
180
  }), href != null ? /*#__PURE__*/_jsx(LinkComponent, {
181
+ ref: contentRef,
168
182
  href: href,
169
183
  onClick: onClick,
170
184
  ...{
@@ -177,6 +191,7 @@ export function BreadcrumbItem({
177
191
  }[!!isSupporting << 0],
178
192
  children: content
179
193
  }) : onClick != null ? /*#__PURE__*/_jsx("button", {
194
+ ref: contentRef,
180
195
  type: "button",
181
196
  onClick: onClick,
182
197
  ...{
@@ -189,6 +204,7 @@ export function BreadcrumbItem({
189
204
  }[!!isSupporting << 0],
190
205
  children: content
191
206
  }) : /*#__PURE__*/_jsx("span", {
207
+ ref: contentRef,
192
208
  ...{
193
209
  0: {
194
210
  className: "x78zum5 x6s0dn4 xzye2dw x1pd3egz x1tgivj0"
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8C5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAI5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BA4RtD;yBA5Re,QAAQ"}
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6C5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAI5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BA4RtD;yBA5Re,QAAQ"}
@@ -23,7 +23,7 @@ import { Icon } from "../Icon/index.js";
23
23
  import { useGridFocus } from "../hooks/index.js";
24
24
  import { useCalendarDays, useCalendarConstraints, useCalendarRovingTabindex } from "./hooks/index.js";
25
25
  import { calendarStyles, monthGridStyles, dayCellStyles, dayCellTheme } from "./styles.js";
26
- import { plainDateFromISO, plainDateToISO, plainDateToDate, plainDateFromDate, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateIsBefore, plainDateIsEqual, plainDateGetWeekNumber, plainDateFormat, DATE_FORMAT_WITH_WEEKDAY, DATE_FORMAT_MONTH_YEAR } from "../utils/plainDate.js";
26
+ import { plainDateFromISO, plainDateToISO, plainDateToDate, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateIsBefore, plainDateIsEqual, plainDateGetWeekNumber, plainDateFormat, DATE_FORMAT_WITH_WEEKDAY, DATE_FORMAT_MONTH_YEAR } from "../utils/plainDate.js";
27
27
  import { mergeProps } from "../utils/index.js";
28
28
  import { computeDayCellState, computeRangeRounding, computePreviewRounding, isEndpoint } from "./dayCellUtils.js";
29
29
 
@@ -361,21 +361,21 @@ function MonthGrid({
361
361
  selectedDate: selectedDateForTabindex
362
362
  });
363
363
 
364
- // Helper to get the focused date from the currently focused element
364
+ // Helper to get the focused date from the currently focused element.
365
+ // Reads the machine-readable `data-date` (ISO) attribute rather than parsing
366
+ // the human-readable `aria-label` with `new Date()`, which is locale/format
367
+ // dependent and returns Invalid Date in non-English locales (e.g. fr-FR,
368
+ // ja-JP), silently swallowing month-boundary arrow navigation (complex-4).
365
369
  const getFocusedDate = useCallback(() => {
366
370
  const activeElement = document.activeElement;
367
371
  if (!activeElement) {
368
372
  return null;
369
373
  }
370
- const ariaLabel = activeElement.getAttribute('aria-label');
371
- if (!ariaLabel) {
374
+ const iso = activeElement.getAttribute('data-date');
375
+ if (!iso) {
372
376
  return null;
373
377
  }
374
- const parsed = new Date(ariaLabel);
375
- if (isNaN(parsed.getTime())) {
376
- return null;
377
- }
378
- return plainDateToISO(plainDateFromDate(parsed));
378
+ return iso;
379
379
  }, []);
380
380
 
381
381
  // Handle navigation to previous month
@@ -408,13 +408,23 @@ function MonthGrid({
408
408
  }
409
409
  }, [getFocusedDate, onNavigateNext]);
410
410
 
411
- // Grid focus navigation
411
+ // Grid focus navigation.
412
+ //
413
+ // The hook enumerates ALL grid cells (every `role="gridcell"`, including
414
+ // disabled days and empty placeholder cells) so the true 7-column geometry is
415
+ // preserved. `isCellFocusable` / `getFocusTarget` tell the hook which cells
416
+ // can take focus (those containing an enabled day button) and where to send
417
+ // focus (the day button inside the cell). Arrow keys move to the target
418
+ // row/column and, if that cell is disabled, continue in the same direction to
419
+ // the next enabled cell.
412
420
  const {
413
421
  gridRef,
414
422
  handleKeyDown: handleGridKeyDown
415
423
  } = useGridFocus({
416
424
  columns: 7,
417
- cellSelector: 'button:not([disabled])',
425
+ cellSelector: '[role="gridcell"]',
426
+ isCellFocusable: cell => cell.querySelector('button:not([disabled])') !== null,
427
+ getFocusTarget: cell => cell.querySelector('button'),
418
428
  onNavigateBefore: handleNavigatePrevious,
419
429
  onNavigateAfter: handleNavigateNext,
420
430
  onPageUp: handlePageUp,
@@ -428,10 +438,10 @@ function MonthGrid({
428
438
  }
429
439
  const buttons = gridRef.current.querySelectorAll('button:not([disabled])');
430
440
  const targetPd = plainDateFromISO(pendingFocus);
431
- const targetLabel = plainDateFormat(targetPd, DATE_FORMAT_WITH_WEEKDAY);
441
+ const targetIso = plainDateToISO(targetPd);
432
442
  let targetButton = null;
433
443
  for (const button of buttons) {
434
- if (button.getAttribute('aria-label') === targetLabel) {
444
+ if (button.getAttribute('data-date') === targetIso) {
435
445
  targetButton = button;
436
446
  break;
437
447
  }
@@ -482,30 +492,32 @@ function MonthGrid({
482
492
  const monthLabel = useMemo(() => {
483
493
  return plainDateFormat(month, DATE_FORMAT_MONTH_YEAR);
484
494
  }, [month]);
485
- return /*#__PURE__*/_jsxs("div", {
495
+ return /*#__PURE__*/_jsx("div", {
486
496
  ...stylex.props(monthGridStyles.monthGrid),
487
- children: [/*#__PURE__*/_jsxs("div", {
488
- ...stylex.props(monthGridStyles.weekHeader, hasWeekNumbers && monthGridStyles.weekHeaderWithNumbers),
489
- children: [hasWeekNumbers && /*#__PURE__*/_jsx("div", {
490
- ...stylex.props(monthGridStyles.dayName, monthGridStyles.weekNumberHeader)
491
- }), dayNames.map(name => /*#__PURE__*/_jsx("div", {
492
- role: "columnheader",
493
- ...stylex.props(monthGridStyles.dayName),
494
- children: name
495
- }, name))]
496
- }), /*#__PURE__*/_jsx("div", {
497
+ children: /*#__PURE__*/_jsxs("div", {
497
498
  ref: gridRef,
498
499
  role: "grid",
499
500
  "aria-label": monthLabel,
500
501
  onKeyDown: handleGridKeyDown,
501
502
  ...stylex.props(monthGridStyles.daysGrid, hasWeekNumbers && monthGridStyles.daysGridWithNumbers),
502
- children: weeks.map(week => {
503
+ children: [/*#__PURE__*/_jsxs("div", {
504
+ role: "row",
505
+ ...stylex.props(monthGridStyles.weekRow),
506
+ children: [hasWeekNumbers && /*#__PURE__*/_jsx("div", {
507
+ ...stylex.props(monthGridStyles.dayName, monthGridStyles.weekNumberHeader)
508
+ }), dayNames.map(name => /*#__PURE__*/_jsx("div", {
509
+ role: "columnheader",
510
+ ...stylex.props(monthGridStyles.dayName),
511
+ children: name
512
+ }, name))]
513
+ }), weeks.map(week => {
503
514
  const weekDate = week.find(d => !d.isOutside)?.date || week[0].date;
504
515
  const weekNum = plainDateGetWeekNumber(weekDate);
505
516
  return /*#__PURE__*/_jsxs("div", {
506
517
  role: "row",
507
518
  ...stylex.props(monthGridStyles.weekRow),
508
519
  children: [hasWeekNumbers && /*#__PURE__*/_jsx("div", {
520
+ role: "rowheader",
509
521
  ...stylex.props(monthGridStyles.weekNumber),
510
522
  children: weekNum
511
523
  }), week.map((day, dayIndex) => /*#__PURE__*/_jsx(DayCell, {
@@ -525,8 +537,8 @@ function MonthGrid({
525
537
  onDayHover: onDayHover
526
538
  }, day.iso))]
527
539
  }, plainDateToISO(weekDate));
528
- })
529
- })]
540
+ })]
541
+ })
530
542
  });
531
543
  }
532
544
 
@@ -556,7 +568,10 @@ function DayCell({
556
568
  dayNumber
557
569
  } = day;
558
570
  if (isOutside && !hasOutsideDays) {
571
+ // Empty placeholder cell — still a gridcell so the grid geometry stays a
572
+ // clean 7-per-row set for keyboard navigation.
559
573
  return /*#__PURE__*/_jsx("div", {
574
+ role: "gridcell",
560
575
  ...stylex.props(dayCellStyles.cell)
561
576
  });
562
577
  }
@@ -577,6 +592,7 @@ function DayCell({
577
592
  const rangeRounding = computeRangeRounding(state);
578
593
  const previewRounding = computePreviewRounding(state);
579
594
  return /*#__PURE__*/_jsxs("div", {
595
+ role: "gridcell",
580
596
  ...stylex.props(dayCellStyles.cell),
581
597
  children: [state.isInRange && /*#__PURE__*/_jsx("div", {
582
598
  ...stylex.props(dayCellStyles.rangeBg, dayCellTheme.rangeBg, rangeRounding.roundLeft && dayCellStyles.rangeBgRadiusLeft, rangeRounding.roundRight && dayCellStyles.rangeBgRadiusRight, state.isRangeStart && dayCellStyles.rangeInsetLeft, state.isRangeStart && rangeRounding.roundRight && dayCellStyles.rangeInsetRight, state.isRangeEnd && dayCellStyles.rangeInsetRight, state.isRangeStart && rangeRounding.roundLeft && dayCellStyles.rangeInsetLeft)
@@ -584,7 +600,6 @@ function DayCell({
584
600
  ...stylex.props(dayCellStyles.previewBg, dayCellTheme.previewBg, previewRounding.roundLeft && dayCellStyles.previewBgRadiusLeft, previewRounding.roundRight && dayCellStyles.previewBgRadiusRight, state.isPreviewStart && dayCellStyles.previewStart, state.isPreviewEnd && dayCellStyles.previewEnd)
585
601
  }), /*#__PURE__*/_jsx("button", {
586
602
  type: "button",
587
- role: "gridcell",
588
603
  "data-date": day.iso,
589
604
  "aria-label": plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY),
590
605
  "aria-selected": state.isSelected || state.isInRange || undefined,
@@ -55,17 +55,11 @@ export declare const monthGridStyles: Readonly<{
55
55
  readonly monthGrid: Readonly<{
56
56
  readonly flex: stylex.StyleXClassNameFor<"flex", "1 1 0">;
57
57
  }>;
58
- readonly weekHeader: Readonly<{
59
- readonly display: stylex.StyleXClassNameFor<"display", "grid">;
60
- readonly gridTemplateColumns: stylex.StyleXClassNameFor<"gridTemplateColumns", "repeat(7, 1fr)">;
61
- readonly marginBottom: stylex.StyleXClassNameFor<"marginBottom", "4px">;
62
- }>;
63
- readonly weekHeaderWithNumbers: Readonly<{
64
- readonly gridTemplateColumns: stylex.StyleXClassNameFor<"gridTemplateColumns", "auto repeat(7, 1fr)">;
65
- }>;
66
58
  readonly dayName: Readonly<{
67
59
  readonly width: stylex.StyleXClassNameFor<"width", "32px">;
68
- readonly height: stylex.StyleXClassNameFor<"height", "32px">;
60
+ readonly height: stylex.StyleXClassNameFor<"height", `calc(${stylex.StyleXVar<"32px">} + ${stylex.StyleXVar<"4px">})`>;
61
+ readonly paddingBottom: stylex.StyleXClassNameFor<"paddingBottom", "4px">;
62
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
69
63
  readonly display: stylex.StyleXClassNameFor<"display", "flex">;
70
64
  readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
71
65
  readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCzB,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4C1B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GxB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoEvB,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCzB,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC1B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GxB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoEvB,CAAC"}
@@ -77,19 +77,11 @@ export const monthGridStyles = {
77
77
  kUk6DE: "x1cqoux5",
78
78
  $$css: true
79
79
  },
80
- weekHeader: {
81
- k1xSpc: "xrvj5dj",
82
- kumcoG: "x1mzazjb",
83
- k1K539: "x14cgwvg",
84
- $$css: true
85
- },
86
- weekHeaderWithNumbers: {
87
- kumcoG: "x1wthsqz",
88
- $$css: true
89
- },
90
80
  dayName: {
91
81
  kzqmXN: "x805d0l",
92
- kZKoxP: "x1ueg155",
82
+ kZKoxP: "x1u5rhrp",
83
+ kGO01o: "xy143xn",
84
+ kB7OPa: "x9f619",
93
85
  k1xSpc: "x78zum5",
94
86
  kGNEyG: "x6s0dn4",
95
87
  kjj79g: "xl56j7k",
@@ -52,6 +52,19 @@ export interface ChatMessageListProps extends BaseProps<HTMLDivElement> {
52
52
  * be grouped) and row spacing should be tuned separately from density.
53
53
  */
54
54
  gap?: SpacingStep;
55
+ /**
56
+ * Whether an assistant message is actively streaming into the list.
57
+ *
58
+ * The list is a `role="log"` / `aria-live="polite"` region, so while a
59
+ * message streams in token-by-token, screen readers would otherwise
60
+ * re-announce the accumulating partial text on every mutation. Set
61
+ * `isStreaming` to `true` for the duration of a stream: it marks the log
62
+ * `aria-busy="true"` so assistive tech waits and announces the completed
63
+ * message once, when `isStreaming` returns to `false`.
64
+ *
65
+ * @default false
66
+ */
67
+ isStreaming?: boolean;
55
68
  }
56
69
  /**
57
70
  * Presentational container for chat messages.
@@ -73,7 +86,7 @@ export interface ChatMessageListProps extends BaseProps<HTMLDivElement> {
73
86
  * </ChatMessageList>
74
87
  * ```
75
88
  */
76
- export declare function ChatMessageList({ children, emptyState, scrollToTopAction, density, gap, xstyle, className, style, 'data-testid': testId, ref, }: ChatMessageListProps): import("react").JSX.Element;
89
+ export declare function ChatMessageList({ children, emptyState, scrollToTopAction, density, gap, isStreaming, xstyle, className, style, 'data-testid': testId, ref, }: ChatMessageListProps): import("react").JSX.Element;
77
90
  export declare namespace ChatMessageList {
78
91
  var displayName: string;
79
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAGhF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AA4FD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,OAAoB,EACpB,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,oBAAoB,+BA2FtB;yBAtGe,eAAe"}
1
+ {"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAGhF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4FD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,OAAoB,EACpB,GAAG,EACH,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,oBAAoB,+BA4FtB;yBAxGe,eAAe"}
@@ -145,6 +145,7 @@ export function ChatMessageList({
145
145
  scrollToTopAction,
146
146
  density = 'balanced',
147
147
  gap,
148
+ isStreaming = false,
148
149
  xstyle,
149
150
  className,
150
151
  style,
@@ -195,6 +196,7 @@ export function ChatMessageList({
195
196
  ref: ref,
196
197
  role: "log",
197
198
  "aria-live": "polite",
199
+ "aria-busy": isStreaming || undefined,
198
200
  tabIndex: 0,
199
201
  "data-testid": testId,
200
202
  ...mergeProps(themeProps('chat-message-list', {
@@ -1 +1 @@
1
- {"version":3,"file":"useTriggerMenu.d.ts","sourceRoot":"","sources":["../../src/Chat/useTriggerMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,gEAAgE;IAChE,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,oEAAoE;IACpE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC;IACnD,sCAAsC;IACtC,UAAU,EAAE,MAAM,SAAS,CAAC;IAC5B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE;QACT,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,eAAe,CAAC,EAAE,SAAS,CAAC;KAC7B,CAAC;CACH;AA+JD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAwctB"}
1
+ {"version":3,"file":"useTriggerMenu.d.ts","sourceRoot":"","sources":["../../src/Chat/useTriggerMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,gEAAgE;IAChE,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,oEAAoE;IACpE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC;IACnD,sCAAsC;IACtC,UAAU,EAAE,MAAM,SAAS,CAAC;IAC5B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE;QACT,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,eAAe,CAAC,EAAE,SAAS,CAAC;KAC7B,CAAC;CACH;AA+JD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CA2ctB"}
@@ -159,7 +159,10 @@ export function useTriggerMenu(options) {
159
159
  }, [removeAnchorSpan]),
160
160
  hasLightDismiss: true,
161
161
  hasCloseButton: false,
162
- hasAutoFocus: false
162
+ hasAutoFocus: false,
163
+ // The popup's own role="listbox" is the exposed semantics; focus stays in
164
+ // the contenteditable composer, so a modal dialog wrapper is incorrect.
165
+ role: 'none'
163
166
  });
164
167
 
165
168
  // Cleanup on unmount
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAY3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA4IhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAmCH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,GACJ,EAAE,kBAAkB,+BAoKpB;yBA1Le,aAAa"}
1
+ {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAY3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA4IhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAmCH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,GACJ,EAAE,kBAAkB,+BAsKpB;yBA5Le,aAAa"}
@@ -227,7 +227,10 @@ export function CheckboxInput({
227
227
  const isChecked = optimisticValue === true;
228
228
  const isCheckedOrIndeterminate = isChecked || isIndeterminate;
229
229
 
230
- // Sync the native indeterminate DOM property (can't be set via JSX attribute)
230
+ // Sync the native indeterminate DOM property (can't be set via JSX
231
+ // attribute). On a native checkbox this is the authoritative way to expose
232
+ // the mixed state — a separate aria-checked="mixed" would be redundant and
233
+ // can desync from / override the native state (forms-16), so it is omitted.
231
234
  const indeterminateRef = useCallback(el => {
232
235
  if (el) {
233
236
  el.indeterminate = isIndeterminate;
@@ -275,7 +278,6 @@ export function CheckboxInput({
275
278
  },
276
279
  onFocus: onFocus,
277
280
  onBlur: onBlur,
278
- "aria-checked": isIndeterminate ? 'mixed' : undefined,
279
281
  "aria-readonly": isReadOnly || undefined,
280
282
  "aria-describedby": ariaDescribedBy,
281
283
  "aria-invalid": status?.type === 'error' ? true : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAyT5C,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC7C;AA6ND;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,aAAoB,EACpB,MAAM,EACN,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,qBAoLhB;yBA3Me,SAAS"}
1
+ {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsU5C,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC7C;AAgOD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,aAAoB,EACpB,MAAM,EACN,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,qBAgMhB;yBAvNe,SAAS"}
@@ -413,7 +413,9 @@ export function CodeBlock({
413
413
  });
414
414
  const copyButtonEl = hasCopyButton ? /*#__PURE__*/_jsx("button", {
415
415
  type: "button",
416
- onClick: () => {
416
+ onClick: e => {
417
+ // Stop propagation so copying does not toggle the collapsible header.
418
+ e.stopPropagation();
417
419
  void handleCopy();
418
420
  },
419
421
  "aria-label": copied ? 'Copied' : 'Copy code',
@@ -428,53 +430,63 @@ export function CodeBlock({
428
430
  children: copyIcon
429
431
  }) : null;
430
432
  const headerEl = showHeader ? /*#__PURE__*/_jsxs("div", {
431
- role: canCollapse ? 'button' : undefined,
432
- tabIndex: canCollapse ? 0 : undefined,
433
- "aria-expanded": canCollapse ? !isCollapsed : undefined,
434
- onClick: canCollapse ? () => setIsCollapsed(prev => !prev) : undefined,
435
- onKeyDown: canCollapse ? e => {
436
- if (e.key === 'Enter' || e.key === ' ') {
437
- e.preventDefault();
438
- setIsCollapsed(prev => !prev);
439
- }
440
- } : undefined,
441
433
  ...{
442
434
  0: {
443
435
  className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1"
444
436
  },
445
- 2: {
446
- className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x92x3c3 x1q0q8m5 xw8gpjh"
447
- },
448
437
  1: {
449
- className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x1ypdohk x87ps6o"
450
- },
451
- 3: {
452
- className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x92x3c3 x1q0q8m5 xw8gpjh x1ypdohk x87ps6o"
438
+ className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x92x3c3 x1q0q8m5 xw8gpjh"
453
439
  }
454
- }[!!hasLineNumbers << 1 | !!canCollapse << 0],
455
- children: [/*#__PURE__*/_jsxs("span", {
440
+ }[!!hasLineNumbers << 0],
441
+ children: [/*#__PURE__*/_jsx("div", {
442
+ role: canCollapse ? 'button' : undefined,
443
+ tabIndex: canCollapse ? 0 : undefined,
444
+ "aria-expanded": canCollapse ? !isCollapsed : undefined,
445
+ onClick: canCollapse ? () => setIsCollapsed(prev => !prev) : undefined,
446
+ onKeyDown: canCollapse ? e => {
447
+ if (e.key === 'Enter' || e.key === ' ') {
448
+ e.preventDefault();
449
+ setIsCollapsed(prev => !prev);
450
+ }
451
+ } : undefined,
456
452
  ...{
457
- className: "x78zum5 x6s0dn4 xzye2dw x141an7d x9m5x89 x1e4wzip x1mjzq1q x1ghz6dp x1ltkj2j"
458
- },
459
- children: [title, title && languageLabel ? ' — ' : '', languageLabel, canCollapse && /*#__PURE__*/_jsx("span", {
453
+ 0: {
454
+ className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h"
455
+ },
456
+ 1: {
457
+ className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h x1ypdohk x87ps6o"
458
+ }
459
+ }[!!canCollapse << 0],
460
+ children: /*#__PURE__*/_jsxs("span", {
460
461
  ...{
461
- 0: {
462
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92"
463
- },
464
- 1: {
465
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92 x19jd1h0"
466
- }
467
- }[!!isCollapsed << 0],
468
- children: /*#__PURE__*/_jsx(Icon, {
469
- icon: "chevronDown",
470
- size: "xsm",
471
- color: "inherit"
472
- })
473
- })]
462
+ className: "x78zum5 x6s0dn4 xzye2dw x141an7d x9m5x89 x1e4wzip x1mjzq1q x1ghz6dp x1ltkj2j"
463
+ },
464
+ children: [title, title && languageLabel ? ' — ' : '', languageLabel, canCollapse && /*#__PURE__*/_jsx("span", {
465
+ ...{
466
+ 0: {
467
+ className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92"
468
+ },
469
+ 1: {
470
+ className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92 x19jd1h0"
471
+ }
472
+ }[!!isCollapsed << 0],
473
+ children: /*#__PURE__*/_jsx(Icon, {
474
+ icon: "chevronDown",
475
+ size: "xsm",
476
+ color: "inherit"
477
+ })
478
+ })]
479
+ })
474
480
  }), copyButtonEl]
475
481
  }) : null;
476
482
  const codeBody = /*#__PURE__*/_jsx("div", {
477
- ref: scrollContainerRef,
483
+ ref: scrollContainerRef
484
+ // The scroll container is keyboard-focusable so keyboard users can
485
+ // scroll long or wide code that overflows the viewport.
486
+ ,
487
+ tabIndex: 0,
488
+ role: "region",
489
+ "aria-label": languageLabel ?? 'Code',
478
490
  ...mergeProps({
479
491
  className: "xw2csxc x1odjw0f"
480
492
  }, {
@@ -38,6 +38,11 @@ interface ContextMenuBaseProps extends BaseProps {
38
38
  menuWidth?: number | string;
39
39
  /** Size of menu items. @default 'md' */
40
40
  size?: 'sm' | 'md' | 'lg';
41
+ /**
42
+ * Accessible name for the menu surface, announced when it opens.
43
+ * @default 'Context menu'
44
+ */
45
+ label?: string;
41
46
  /**
42
47
  * Whether to auto-focus the first menu item when the menu opens.
43
48
  * Set to `false` for inline showcases or documentation previews.
@@ -84,7 +89,7 @@ export type ContextMenuProps = ContextMenuDataProps | ContextMenuCompoundProps;
84
89
  * </ContextMenu>
85
90
  * ```
86
91
  */
87
- export declare function ContextMenu({ children, menuWidth, size, hasAutoFocus, isDisabled, onOpenChange, ref, className, style, xstyle, 'data-testid': testId, ...props }: ContextMenuProps): React.JSX.Element;
92
+ export declare function ContextMenu({ children, menuWidth, size, label, hasAutoFocus, isDisabled, onOpenChange, ref, className, style, xstyle, 'data-testid': testId, ...props }: ContextMenuProps): React.JSX.Element;
88
93
  export declare namespace ContextMenu {
89
94
  var displayName: string;
90
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAmBrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAiCtC,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAMnD,UAAU,oBAAqB,SAAQ,SAAS;IAC9C,oDAAoD;IACpD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,CAAC;IACpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,wCAAwC;IACxC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,oBAAqB,SAAQ,oBAAoB;IACzD,gDAAgD;IAChD,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,UAAU,wBAAyB,SAAQ,oBAAoB;IAC7D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,MAAM,gBAAgB,GACxB,oBAAoB,GACpB,wBAAwB,CAAC;AAM7B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,IAAW,EACX,YAAmB,EACnB,UAAkB,EAClB,YAAY,EACZ,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,gBAAgB,qBAoIlB;yBAjJe,WAAW"}
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAoBrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAiCtC,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAMnD,UAAU,oBAAqB,SAAQ,SAAS;IAC9C,oDAAoD;IACpD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,CAAC;IACpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,wCAAwC;IACxC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,oBAAqB,SAAQ,oBAAoB;IACzD,gDAAgD;IAChD,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,UAAU,wBAAyB,SAAQ,oBAAoB;IAC7D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,wBAAwB,CAAC;AAM/E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,IAAW,EACX,KAAsB,EACtB,YAAmB,EACnB,UAAkB,EAClB,YAAY,EACZ,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,gBAAgB,qBAoMlB;yBAlNe,WAAW"}