@astryxdesign/core 0.2.0-canary.f306f13 → 0.2.0-canary.f7ec5f5

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 (219) hide show
  1. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
  2. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  3. package/dist/AvatarGroup/AvatarGroupOverflow.js +6 -2
  4. package/dist/Button/Button.d.ts +1 -1
  5. package/dist/Button/Button.d.ts.map +1 -1
  6. package/dist/Button/Button.js +4 -2
  7. package/dist/Chat/ChatLayout.d.ts +7 -0
  8. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  9. package/dist/Chat/ChatLayout.js +14 -3
  10. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  11. package/dist/CheckboxInput/CheckboxInput.js +2 -2
  12. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  13. package/dist/CheckboxList/CheckboxListItem.js +19 -4
  14. package/dist/CodeBlock/CodeBlock.js +2 -2
  15. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  16. package/dist/ContextMenu/ContextMenu.js +10 -1
  17. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
  18. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  19. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
  20. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +8 -11
  21. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
  22. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +3 -1
  23. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +1 -1
  24. package/dist/DropdownMenu/DropdownMenuRadioItem.js +1 -1
  25. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  26. package/dist/DropdownMenu/DropdownMenuSubMenu.js +9 -1
  27. package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
  28. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  29. package/dist/DropdownMenu/menuItemHover.js +1 -0
  30. package/dist/Field/FieldLabel.d.ts +2 -1
  31. package/dist/Field/FieldLabel.d.ts.map +1 -1
  32. package/dist/Field/FieldLabel.js +7 -3
  33. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  34. package/dist/FieldStatus/FieldStatus.js +12 -2
  35. package/dist/Heading/Heading.d.ts.map +1 -1
  36. package/dist/Heading/Heading.js +3 -2
  37. package/dist/Item/Item.d.ts +16 -3
  38. package/dist/Item/Item.d.ts.map +1 -1
  39. package/dist/Item/Item.js +31 -6
  40. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  41. package/dist/Lightbox/Lightbox.js +15 -2
  42. package/dist/List/ListItem.d.ts +11 -1
  43. package/dist/List/ListItem.d.ts.map +1 -1
  44. package/dist/List/ListItem.js +2 -0
  45. package/dist/MetadataList/MetadataList.d.ts +1 -1
  46. package/dist/MetadataList/MetadataList.d.ts.map +1 -1
  47. package/dist/MetadataList/MetadataList.js +4 -2
  48. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  49. package/dist/MultiSelector/MultiSelector.js +20 -5
  50. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  51. package/dist/RadioList/RadioListItem.js +1 -1
  52. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  53. package/dist/SegmentedControl/SegmentedControlItem.js +3 -2
  54. package/dist/Selector/Selector.d.ts.map +1 -1
  55. package/dist/Selector/Selector.js +11 -2
  56. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  57. package/dist/Skeleton/Skeleton.js +2 -2
  58. package/dist/Switch/Switch.d.ts.map +1 -1
  59. package/dist/Switch/Switch.js +15 -4
  60. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
  61. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  62. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -4
  63. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  64. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  65. package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
  66. package/dist/Text/Text.d.ts +10 -1
  67. package/dist/Text/Text.d.ts.map +1 -1
  68. package/dist/Text/Text.js +25 -2
  69. package/dist/Text/index.d.ts +2 -2
  70. package/dist/Text/index.d.ts.map +1 -1
  71. package/dist/TextArea/TextArea.d.ts.map +1 -1
  72. package/dist/TextArea/TextArea.js +106 -38
  73. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  74. package/dist/Thumbnail/Thumbnail.js +51 -45
  75. package/dist/Timestamp/Timestamp.js +1 -1
  76. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  77. package/dist/Toast/ToastViewport.js +61 -9
  78. package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
  79. package/dist/ToggleButton/ToggleButton.js +3 -1
  80. package/dist/Token/Token.d.ts +4 -1
  81. package/dist/Token/Token.d.ts.map +1 -1
  82. package/dist/Token/Token.js +68 -43
  83. package/dist/Token/TokenLink.d.ts +62 -0
  84. package/dist/Token/TokenLink.d.ts.map +1 -0
  85. package/dist/Token/TokenLink.js +76 -0
  86. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  87. package/dist/TopNav/TopNavMegaMenu.js +9 -3
  88. package/dist/Typeahead/BaseTypeahead.d.ts +9 -0
  89. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  90. package/dist/Typeahead/BaseTypeahead.js +2 -0
  91. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  92. package/dist/Typeahead/Typeahead.js +8 -1
  93. package/dist/astryx.css +61 -8
  94. package/dist/astryx.umd.js +50 -50
  95. package/dist/astryx.umd.js.map +4 -4
  96. package/dist/hooks/containerReveal.pool.stylex.d.ts +281 -0
  97. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
  98. package/dist/hooks/containerReveal.pool.stylex.js +281 -0
  99. package/dist/hooks/index.d.ts +2 -0
  100. package/dist/hooks/index.d.ts.map +1 -1
  101. package/dist/hooks/index.js +2 -1
  102. package/dist/hooks/useContainerReveal.d.ts +83 -0
  103. package/dist/hooks/useContainerReveal.d.ts.map +1 -0
  104. package/dist/hooks/useContainerReveal.js +123 -0
  105. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  106. package/dist/hooks/useInputStatusIcon.js +11 -0
  107. package/dist/hooks/useKeyboardHint.d.ts +1 -1
  108. package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
  109. package/dist/hooks/useKeyboardHint.js +4 -2
  110. package/dist/theme/defineTheme.d.ts +6 -0
  111. package/dist/theme/defineTheme.d.ts.map +1 -1
  112. package/dist/theme/expandColorScale.d.ts +19 -2
  113. package/dist/theme/expandColorScale.d.ts.map +1 -1
  114. package/dist/theme/expandColorScale.js +38 -10
  115. package/dist/theme/index.d.ts +3 -3
  116. package/dist/theme/index.d.ts.map +1 -1
  117. package/dist/theme/types.d.ts +39 -2
  118. package/dist/theme/types.d.ts.map +1 -1
  119. package/locales/en.json +40 -0
  120. package/locales/pseudo.json +30 -0
  121. package/package.json +3 -3
  122. package/src/AvatarGroup/AvatarGroup.test.tsx +21 -1
  123. package/src/AvatarGroup/AvatarGroupOverflow.tsx +4 -2
  124. package/src/Breadcrumbs/Breadcrumbs.test.tsx +1 -1
  125. package/src/Button/Button.test.tsx +16 -0
  126. package/src/Button/Button.tsx +4 -2
  127. package/src/Chat/ChatLayout.test.tsx +57 -0
  128. package/src/Chat/ChatLayout.tsx +22 -1
  129. package/src/CheckboxInput/CheckboxInput.test.tsx +23 -0
  130. package/src/CheckboxInput/CheckboxInput.tsx +17 -2
  131. package/src/CheckboxList/CheckboxList.test.tsx +94 -3
  132. package/src/CheckboxList/CheckboxListItem.tsx +17 -10
  133. package/src/CodeBlock/CodeBlock.test.tsx +17 -0
  134. package/src/CodeBlock/CodeBlock.tsx +2 -2
  135. package/src/ContextMenu/ContextMenu.test.tsx +17 -2
  136. package/src/ContextMenu/ContextMenu.tsx +10 -1
  137. package/src/DropdownMenu/DropdownMenu.doc.mjs +0 -5
  138. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
  139. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +4 -12
  140. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
  141. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +1 -1
  142. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +51 -2
  143. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +29 -1
  144. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +13 -5
  145. package/src/DropdownMenu/menuItemHover.ts +1 -0
  146. package/src/Field/Field.doc.mjs +4 -0
  147. package/src/Field/FieldLabel.test.tsx +25 -0
  148. package/src/Field/FieldLabel.tsx +11 -2
  149. package/src/FieldStatus/FieldStatus.doc.mjs +1 -0
  150. package/src/FieldStatus/FieldStatus.test.tsx +61 -0
  151. package/src/FieldStatus/FieldStatus.tsx +14 -3
  152. package/src/Heading/Heading.tsx +2 -1
  153. package/src/Item/Item.doc.mjs +5 -0
  154. package/src/Item/Item.test.tsx +88 -0
  155. package/src/Item/Item.tsx +57 -11
  156. package/src/Lightbox/Lightbox.test.tsx +33 -0
  157. package/src/Lightbox/Lightbox.tsx +15 -3
  158. package/src/List/ListItem.doc.mjs +12 -0
  159. package/src/List/ListItem.tsx +13 -0
  160. package/src/MetadataList/MetadataList.test.tsx +24 -0
  161. package/src/MetadataList/MetadataList.tsx +6 -2
  162. package/src/MultiSelector/MultiSelector.test.tsx +110 -0
  163. package/src/MultiSelector/MultiSelector.tsx +35 -10
  164. package/src/RadioList/RadioList.test.tsx +26 -4
  165. package/src/RadioList/RadioListItem.tsx +8 -1
  166. package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
  167. package/src/SegmentedControl/SegmentedControlItem.tsx +20 -2
  168. package/src/Selector/Selector.test.tsx +52 -0
  169. package/src/Selector/Selector.tsx +15 -4
  170. package/src/Skeleton/Skeleton.test.tsx +16 -0
  171. package/src/Skeleton/Skeleton.tsx +13 -1
  172. package/src/Switch/Switch.test.tsx +37 -0
  173. package/src/Switch/Switch.tsx +52 -3
  174. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
  175. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +24 -4
  176. package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
  177. package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
  178. package/src/Table/useTableRowExpansion.doc.mjs +55 -2
  179. package/src/Table/useTableTreeData.doc.mjs +9 -0
  180. package/src/Text/Heading.doc.mjs +3 -3
  181. package/src/Text/Text.doc.mjs +1 -1
  182. package/src/Text/Text.test.tsx +42 -0
  183. package/src/Text/Text.tsx +25 -1
  184. package/src/Text/index.ts +2 -6
  185. package/src/TextArea/TextArea.doc.mjs +2 -2
  186. package/src/TextArea/TextArea.test.tsx +112 -7
  187. package/src/TextArea/TextArea.tsx +142 -49
  188. package/src/Thumbnail/Thumbnail.test.tsx +24 -1
  189. package/src/Thumbnail/Thumbnail.tsx +27 -34
  190. package/src/Toast/ToastViewport.test.tsx +218 -8
  191. package/src/Toast/ToastViewport.tsx +71 -12
  192. package/src/ToggleButton/ToggleButton.test.tsx +24 -0
  193. package/src/ToggleButton/ToggleButton.tsx +19 -1
  194. package/src/Token/Token.test.tsx +145 -0
  195. package/src/Token/Token.tsx +73 -33
  196. package/src/Token/TokenLink.tsx +107 -0
  197. package/src/TopNav/TopNavMegaMenu.tsx +26 -2
  198. package/src/Typeahead/BaseTypeahead.tsx +12 -0
  199. package/src/Typeahead/Typeahead.test.tsx +62 -0
  200. package/src/Typeahead/Typeahead.tsx +6 -0
  201. package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
  202. package/src/__tests__/forcedColors.ts +60 -0
  203. package/src/hooks/containerReveal.pool.stylex.ts +464 -0
  204. package/src/hooks/index.ts +7 -0
  205. package/src/hooks/useContainerReveal.test.tsx +116 -0
  206. package/src/hooks/useContainerReveal.ts +180 -0
  207. package/src/hooks/useInputStatusIcon.test.tsx +59 -0
  208. package/src/hooks/useInputStatusIcon.tsx +12 -1
  209. package/src/hooks/useKeyboardHint.test.tsx +22 -0
  210. package/src/hooks/useKeyboardHint.tsx +6 -2
  211. package/src/theme/defineTheme.ts +6 -0
  212. package/src/theme/expandColorScale.test.ts +144 -0
  213. package/src/theme/expandColorScale.ts +53 -15
  214. package/src/theme/index.ts +4 -8
  215. package/src/theme/types.ts +43 -13
  216. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
  217. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
  218. package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
  219. package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @file AvatarGroupOverflow.tsx
3
- * @input Uses React, StyleX, AvatarGroupContext
3
+ * @input Uses React, StyleX, AvatarGroupContext, i18n (useTranslator)
4
4
  * @output Exports AvatarGroupOverflow for overflow indicator
5
5
  * @position Slot component used inside AvatarGroup
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroupOverflow.d.ts","sourceRoot":"","sources":["../../src/AvatarGroup/AvatarGroupOverflow.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAW5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAM5C,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,SAAS,CAAC,WAAW,CAAC,EACtB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA4ED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,wBAAwB,GAAG,SAAS,CAyDtC;yBAlEe,mBAAmB"}
1
+ {"version":3,"file":"AvatarGroupOverflow.d.ts","sourceRoot":"","sources":["../../src/AvatarGroup/AvatarGroupOverflow.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAW5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,SAAS,CAAC,WAAW,CAAC,EACtB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA4ED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,wBAAwB,GAAG,SAAS,CA0DtC;yBAnEe,mBAAmB"}
@@ -3,7 +3,7 @@
3
3
 
4
4
  /**
5
5
  * @file AvatarGroupOverflow.tsx
6
- * @input Uses React, StyleX, AvatarGroupContext
6
+ * @input Uses React, StyleX, AvatarGroupContext, i18n (useTranslator)
7
7
  * @output Exports AvatarGroupOverflow for overflow indicator
8
8
  * @position Slot component used inside AvatarGroup
9
9
  *
@@ -19,6 +19,7 @@ import { colorVars, typographyVars, fontWeightVars, radiusVars, spacingVars } fr
19
19
  import { mergeProps } from "../utils/index.js";
20
20
  import { useAvatarGroup } from "./AvatarGroupContext.js";
21
21
  import { themeProps } from "../utils/themeProps.js";
22
+ import { useTranslator } from "../i18n/index.js";
22
23
  import { jsx as _jsx } from "react/jsx-runtime";
23
24
  const BORDER_WIDTH = 2;
24
25
  const OVERFLOW_FONT_RATIO = 0.35;
@@ -105,10 +106,13 @@ export function AvatarGroupOverflow({
105
106
  style,
106
107
  ...rest
107
108
  }) {
109
+ const t = useTranslator();
108
110
  const group = useAvatarGroup();
109
111
  const numericSize = group?.numericSize ?? 36;
110
112
  const overlap = group?.overlap ?? 0;
111
- const label = `${count} more`;
113
+ const label = t('@astryx.avatarGroup.overflow', {
114
+ count
115
+ });
112
116
  const content = children ?? `+${count}`;
113
117
  if (onClick) {
114
118
  return /*#__PURE__*/_jsx("button", {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @file Button.tsx
3
- * @input Uses React, ButtonHTMLAttributes, ReactNode
3
+ * @input Uses React, ButtonHTMLAttributes, ReactNode, i18n (useTranslator)
4
4
  * @output Exports Button component, ButtonProps, ButtonVariant types
5
5
  * @position Core implementation; consumed by index.ts, tested by Button.test.tsx
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
 
5
5
  /**
6
6
  * @file Button.tsx
7
- * @input Uses React, ButtonHTMLAttributes, ReactNode
7
+ * @input Uses React, ButtonHTMLAttributes, ReactNode, i18n (useTranslator)
8
8
  * @output Exports Button component, ButtonProps, ButtonVariant types
9
9
  * @position Core implementation; consumed by index.ts, tested by Button.test.tsx
10
10
  *
@@ -30,6 +30,7 @@ import { useButtonGroup } from "../ButtonGroup/ButtonGroupContext.js";
30
30
  import { mergeProps, mergeRefs } from "../utils/index.js";
31
31
  import { useLinkComponent } from "../Link/useLinkComponent.js";
32
32
  import { themeProps } from "../utils/themeProps.js";
33
+ import { useTranslator } from "../i18n/index.js";
33
34
 
34
35
  /**
35
36
  * Base button styles
@@ -376,6 +377,7 @@ export function Button({
376
377
  ref,
377
378
  ...props
378
379
  }) {
380
+ const t = useTranslator();
379
381
  const size = useSize(sizeProp, 'md');
380
382
  const buttonGroup = useButtonGroup();
381
383
  const [isPending, startTransition] = useTransition();
@@ -498,7 +500,7 @@ export function Button({
498
500
  }), /*#__PURE__*/_jsx(VisuallyHidden, {
499
501
  role: "status",
500
502
  "aria-live": "polite",
501
- children: isLoadingState ? 'Loading' : ''
503
+ children: isLoadingState ? t('@astryx.button.loading') : ''
502
504
  })]
503
505
  });
504
506
 
@@ -8,6 +8,13 @@
8
8
  * Provides the scroll container ref and content ref, renders the
9
9
  * scroll-to-bottom button, frosted glass dock, and message area.
10
10
  *
11
+ * Layout contract: the root is a flex column. The message area flexes
12
+ * (grow 1, shrink 0) to fill the space the dock doesn't need; the sticky
13
+ * dock keeps its natural height in flow. Short content therefore fills
14
+ * exactly 100% with no overflow, and long content grows past the root so
15
+ * self-scroll mode scrolls (#2573). In external-scrollRef mode the dock
16
+ * is position: fixed (out of flow) and the message area fills the root.
17
+ *
11
18
  * Density (compact/balanced/spacious) is controlled via a prop with
12
19
  * 'balanced' as the default. No JS measurement or ResizeObserver needed.
13
20
  * The container-type on root enables container queries in child components.
@@ -1 +1 @@
1
- {"version":3,"file":"ChatLayout.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayout.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAkB,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAa5C,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAEhC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEhD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA8JD,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,OAAoB,EACpB,UAAU,EACV,YAAY,EACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,eAAe,+BA4GjB;yBAzHe,UAAU"}
1
+ {"version":3,"file":"ChatLayout.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayout.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAkB,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAa5C,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAEhC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEhD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4KD,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,OAAoB,EACpB,UAAU,EACV,YAAY,EACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,eAAe,+BA4GjB;yBAzHe,UAAU"}
@@ -12,6 +12,13 @@
12
12
  * Provides the scroll container ref and content ref, renders the
13
13
  * scroll-to-bottom button, frosted glass dock, and message area.
14
14
  *
15
+ * Layout contract: the root is a flex column. The message area flexes
16
+ * (grow 1, shrink 0) to fill the space the dock doesn't need; the sticky
17
+ * dock keeps its natural height in flow. Short content therefore fills
18
+ * exactly 100% with no overflow, and long content grows past the root so
19
+ * self-scroll mode scrolls (#2573). In external-scrollRef mode the dock
20
+ * is position: fixed (out of flow) and the message area fills the root.
21
+ *
15
22
  * Density (compact/balanced/spacious) is controlled via a prop with
16
23
  * 'balanced' as the default. No JS measurement or ResizeObserver needed.
17
24
  * The container-type on root enables container queries in child components.
@@ -47,6 +54,8 @@ const styles = {
47
54
  k9g6sI: "x12h1iku",
48
55
  kAzted: "x2lwn1j",
49
56
  kUk6DE: "x98rzlu",
57
+ k1xSpc: "x78zum5",
58
+ kXwgrk: "xdt5ytf",
50
59
  $$css: true
51
60
  },
52
61
  rootScrollable: {
@@ -59,7 +68,9 @@ const styles = {
59
68
  k1xSpc: "x78zum5",
60
69
  kXwgrk: "xdt5ytf",
61
70
  kUOVxO: "xvueqy4",
62
- kAzted: "x1us19tq",
71
+ kzQI83: "x1iyjqo2",
72
+ kmuXW: "x2lah0s",
73
+ kCS8Yb: "xdl72j9",
63
74
  kGO01o: "xjpqqx5",
64
75
  kzqmXN: "xh8yej3",
65
76
  ks0D6T: "x193iq5w",
@@ -258,10 +269,10 @@ export function ChatLayout({
258
269
  }), /*#__PURE__*/_jsxs("div", {
259
270
  ...{
260
271
  0: {
261
- className: "x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl xixxii4"
272
+ className: "x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x2lah0s xixxii4"
262
273
  },
263
274
  1: {
264
- className: "x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x7wzq59"
275
+ className: "x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x2lah0s x7wzq59"
265
276
  }
266
277
  }[!!isSelfScrolling << 0],
267
278
  children: [scrollButton === undefined ? defaultScrollButton : scrollButton, /*#__PURE__*/_jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAML,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;AA8IhD,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;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;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,QAAQ,EACR,eAAe,EACf,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,EACH,GAAG,IAAI,EACR,EAAE,kBAAkB,+BA0NpB;yBAnPe,aAAa"}
1
+ {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAML,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;AA6JhD,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;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;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,QAAQ,EACR,eAAe,EACf,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,EACH,GAAG,IAAI,EACR,EAAE,kBAAkB,+BA0NpB;yBAnPe,aAAa"}
@@ -102,7 +102,7 @@ const styles = {
102
102
  },
103
103
  checkmark: {
104
104
  k1xSpc: "x1s85apg",
105
- kMwMTN: "x17wrial",
105
+ kMwMTN: "x17wrial xs5hli",
106
106
  $$css: true
107
107
  },
108
108
  checkmarkVisible: {
@@ -111,7 +111,7 @@ const styles = {
111
111
  },
112
112
  indeterminateMark: {
113
113
  k1xSpc: "x1s85apg",
114
- kWkggS: "x1azo05",
114
+ kWkggS: "x1azo05 xwvh9j7",
115
115
  kaIpWk: "xjspbzw",
116
116
  $$css: true
117
117
  },
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxListItem.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAuB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI3D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuB5C,MAAM,WAAW,qBAAsB,SAAQ,SAAS,CAAC,aAAa,CAAC;IACrE;;;;;;OAMG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAChC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,KAAK,EACL,WAAW,EACX,UAAU,EACV,UAAU,EAAE,cAAsB,EAClC,SAAS,EAAE,aAAqB,EAChC,SAAS,EACT,OAAO,EACP,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,GAAG,SAAS,EACb,EAAE,qBAAqB,+BA6HvB;yBA7Ie,gBAAgB"}
1
+ {"version":3,"file":"CheckboxListItem.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAc,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAIlD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsB5C,MAAM,WAAW,qBAAsB,SAAQ,SAAS,CAAC,aAAa,CAAC;IACrE;;;;;;OAMG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAChC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,KAAK,EACL,WAAW,EACX,UAAU,EACV,UAAU,EAAE,cAAsB,EAClC,SAAS,EAAE,aAAqB,EAChC,SAAS,EACT,OAAO,EACP,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,GAAG,SAAS,EACb,EAAE,qBAAqB,+BAqIvB;yBArJe,gBAAgB"}
@@ -15,11 +15,10 @@
15
15
  * - /apps/storybook/stories/CheckboxList.stories.tsx
16
16
  * - /packages/cli/templates/blocks/components/CheckboxList/ (showcase blocks)
17
17
  */
18
- import { use } from 'react';
18
+ import { use, useRef } from 'react';
19
19
  import * as stylex from '@stylexjs/stylex';
20
20
  import "../theme/tokens.stylex.js";
21
21
  import { colorVars } from "../theme/tokens.stylex.js";
22
- import { composeEventHandlers } from "../utils/index.js";
23
22
  import { useDevWarning } from "../hooks/useDevWarning.js";
24
23
  import { CheckboxInput } from "../CheckboxInput/CheckboxInput.js";
25
24
  import { ListItem } from "../List/ListItem.js";
@@ -122,6 +121,14 @@ export function CheckboxListItem({
122
121
 
123
122
  // Whether this item is interactive (has a toggle handler)
124
123
  const isInteractive = !effectiveReadOnly && (ctx != null || onCheck != null);
124
+
125
+ // The checkbox is the row's single keyboard control and action. The row is
126
+ // an enlarged click/tap target that delegates surface clicks to it via
127
+ // ListItem's `interactiveRef` (useClickableContainer), so each option is
128
+ // exactly one tab stop. Delegate whenever the row should respond to clicks:
129
+ // a toggleable item, or one carrying a consumer `onClick`.
130
+ const checkboxRef = useRef(null);
131
+ const hasRowInteraction = isInteractive || onClickProp != null;
125
132
  const handleToggle = () => {
126
133
  if (effectiveDisabled || effectiveReadOnly || isBusy) {
127
134
  return;
@@ -147,17 +154,25 @@ export function CheckboxListItem({
147
154
  label: label,
148
155
  description: description,
149
156
  endContent: endContent,
150
- isDisabled: effectiveDisabled,
151
- onClick: isInteractive || onClickProp ? composeEventHandlers(onClickProp, isInteractive ? handleToggle : undefined) : undefined,
157
+ isDisabled: effectiveDisabled
158
+ // Delegate row clicks to the checkbox instead of wiring onClick (which
159
+ // would add an invisible row button = a second tab stop). The checkbox
160
+ // stays the option's sole focusable control (WCAG 4.1.2 / APG checkbox
161
+ // pattern). A consumer onClick rides on the checkbox itself (below), so
162
+ // it still fires for both direct and delegated (row-surface) clicks.
163
+ ,
164
+ interactiveRef: hasRowInteraction ? checkboxRef : undefined,
152
165
  "aria-busy": isBusy || undefined,
153
166
  xstyle: [resolvedChecked === true && !effectiveDisabled && !effectiveReadOnly && styles.selected, xstyle],
154
167
  className: className,
155
168
  style: style,
156
169
  startContent: /*#__PURE__*/_jsx(CheckboxInput, {
170
+ ref: checkboxRef,
157
171
  label: checkboxLabel,
158
172
  isLabelHidden: true,
159
173
  value: resolvedChecked,
160
174
  onChange: () => handleToggle(),
175
+ onClick: onClickProp,
161
176
  isDisabled: effectiveDisabled,
162
177
  isReadOnly: effectiveReadOnly,
163
178
  isLoading: isBusy,
@@ -437,7 +437,7 @@ export function CodeBlock({
437
437
  setCopied(true);
438
438
  // Swapping the button's aria-label alone isn't reliably announced by
439
439
  // screen readers, so confirm the copy via a polite live region.
440
- announce('Copied');
440
+ announce(t('@astryx.codeBlock.copied'));
441
441
  onCopy?.();
442
442
  // Restart the reset timer on every copy — otherwise a rapid re-copy
443
443
  // is reverted early by the previous click's timer.
@@ -451,7 +451,7 @@ export function CodeBlock({
451
451
  } catch {
452
452
  // Clipboard failures leave the copied state unchanged.
453
453
  }
454
- }, [code, onCopy, announce]);
454
+ }, [code, onCopy, announce, t]);
455
455
  const sizeStyle = size === 'sm' ? styles.sizeSm : styles.sizeMd;
456
456
  // Digits in the largest line number — sizes the gutter column width.
457
457
  const maxLineDigits = String(lines.length).length;
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AA0BrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAqDtC,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;;;;;OAKG;IACH,aAAa,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IAC9C,+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,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,KAAK,EAAE,cAAc,EACrB,UAAkB,EAClB,YAAY,EACZ,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,aAAa,EACb,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,gBAAgB,qBAmRlB;yBAjSe,WAAW"}
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AA0BrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAqDtC,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;;;;;OAKG;IACH,aAAa,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IAC9C,+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,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,KAAK,EAAE,cAAc,EACrB,UAAkB,EAClB,YAAY,EACZ,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,aAAa,EACb,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,gBAAgB,qBA4RlB;yBA1Se,WAAW"}
@@ -253,12 +253,21 @@ export function ContextMenu({
253
253
  }
254
254
  return;
255
255
  }
256
+ // APG menu pattern: Tab closes the menu. Menu items are tabIndex={-1}
257
+ // so Tab would otherwise leak focus into the page while the menu stayed
258
+ // open (menus-5). Do NOT preventDefault — closing restores focus to the
259
+ // previously focused element, and the browser's default Tab then
260
+ // continues from there to the next element.
261
+ if (e.key === 'Tab') {
262
+ closeMenu();
263
+ return;
264
+ }
256
265
  if (typeahead.onKeyDown(e)) {
257
266
  e.preventDefault();
258
267
  return;
259
268
  }
260
269
  listNavKeyDown(e);
261
- }, [listNavKeyDown, typeahead, ownsEvent]);
270
+ }, [listNavKeyDown, closeMenu, typeahead, ownsEvent]);
262
271
 
263
272
  // Place the zero-size cursor anchor at a point in the trigger's local
264
273
  // coordinate space and open the menu. Positioning the anchor inside the
@@ -1,22 +1,28 @@
1
1
  /**
2
2
  * @file DropdownMenuCheckboxItem.tsx
3
- * @input React, stylex, Item + Icon + DropdownMenu context + tokens from core
3
+ * @input React, stylex, Item + CheckboxInput + DropdownMenu context + tokens from core
4
4
  * @output DropdownMenuCheckboxItem — a standalone checkable menu item.
5
5
  * @position Sub-component; used inside DropdownMenu.
6
6
  *
7
7
  * A menu item that toggles an independent boolean (role="menuitemcheckbox").
8
- * Unlike CheckboxInput, there is no nested native <input>: the row itself owns
9
- * the role and aria-checked, per the WAI-ARIA menuitemcheckbox pattern.
10
- * Keyboard navigation (arrows/typeahead) and Enter/Space activation come from
11
- * the parent DropdownMenu's useListFocus + activation path, which matches
12
- * menuitemcheckbox alongside plain menuitem rows.
8
+ * Unlike CheckboxInput, there is no nested native <input> that participates in
9
+ * accessibility: the row itself owns the role and aria-checked, per the
10
+ * WAI-ARIA menuitemcheckbox pattern. Keyboard navigation (arrows/typeahead) and
11
+ * Enter/Space activation come from the parent DropdownMenu's useListFocus +
12
+ * activation path, which matches menuitemcheckbox alongside plain menuitem rows.
13
13
  *
14
- * The square checkbox visual is decorative (aria-hidden) — the row owns the
15
- * checked state. Its size is derived from the menu's item size (a `sm` menu
16
- * gets the compact control; `md`/`lg` get the standard one) and it swaps to the
17
- * inline-end of the row on coarse-pointer (touch) devices via CSS `order`, so
18
- * it lands where selection toggles are conventionally placed on mobile. The
19
- * checkmark uses the `check` icon from the active theme's icon registry.
14
+ * The checkbox visual composes the real CheckboxInput primitive so its checkmark
15
+ * matches CheckboxListItem and picks up the standard `checkbox` theming slots.
16
+ * It is purely decorative: the composed control is wrapped in an element that is
17
+ * both `aria-hidden` and `inert`, so it contributes nothing to the row's
18
+ * accessible name, and its native <input> and sr-only label stay out of the tab
19
+ * order and the accessibility tree while pointer clicks fall through to the row
20
+ * — the same shim MultiSelector uses. The row owns the checked state and
21
+ * accessible name. The control size is derived from the menu's item size (a
22
+ * `sm` menu gets the compact control; `md`/`lg` get the standard one) and it
23
+ * swaps to the inline-end of the row on coarse-pointer (touch) devices via CSS
24
+ * `order`, so it lands where selection toggles are conventionally placed on
25
+ * mobile.
20
26
  */
21
27
  import { type ReactNode } from 'react';
22
28
  import { type IconType } from '../Icon';
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuCheckboxItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuCheckboxItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAa5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA4D5C,MAAM,WAAW,6BAA8B,SAAQ,IAAI,CACzD,SAAS,EACT,UAAU,GAAG,MAAM,GAAG,cAAc,GAAG,UAAU,CAClD;IACC;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,WAAW,EACX,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,UAAkB,EAClB,gBAAwB,EACxB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,6BAA6B,+BA8D/B;yBA3Ee,wBAAwB"}
1
+ {"version":3,"file":"DropdownMenuCheckboxItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuCheckboxItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAOtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsC5C,MAAM,WAAW,6BAA8B,SAAQ,IAAI,CACzD,SAAS,EACT,UAAU,GAAG,MAAM,GAAG,cAAc,GAAG,UAAU,CAClD;IACC;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,WAAW,EACX,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,UAAkB,EAClB,gBAAwB,EACxB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,6BAA6B,+BA6D/B;yBA1Ee,wBAAwB"}
@@ -4,32 +4,39 @@
4
4
 
5
5
  /**
6
6
  * @file DropdownMenuCheckboxItem.tsx
7
- * @input React, stylex, Item + Icon + DropdownMenu context + tokens from core
7
+ * @input React, stylex, Item + CheckboxInput + DropdownMenu context + tokens from core
8
8
  * @output DropdownMenuCheckboxItem — a standalone checkable menu item.
9
9
  * @position Sub-component; used inside DropdownMenu.
10
10
  *
11
11
  * A menu item that toggles an independent boolean (role="menuitemcheckbox").
12
- * Unlike CheckboxInput, there is no nested native <input>: the row itself owns
13
- * the role and aria-checked, per the WAI-ARIA menuitemcheckbox pattern.
14
- * Keyboard navigation (arrows/typeahead) and Enter/Space activation come from
15
- * the parent DropdownMenu's useListFocus + activation path, which matches
16
- * menuitemcheckbox alongside plain menuitem rows.
12
+ * Unlike CheckboxInput, there is no nested native <input> that participates in
13
+ * accessibility: the row itself owns the role and aria-checked, per the
14
+ * WAI-ARIA menuitemcheckbox pattern. Keyboard navigation (arrows/typeahead) and
15
+ * Enter/Space activation come from the parent DropdownMenu's useListFocus +
16
+ * activation path, which matches menuitemcheckbox alongside plain menuitem rows.
17
17
  *
18
- * The square checkbox visual is decorative (aria-hidden) — the row owns the
19
- * checked state. Its size is derived from the menu's item size (a `sm` menu
20
- * gets the compact control; `md`/`lg` get the standard one) and it swaps to the
21
- * inline-end of the row on coarse-pointer (touch) devices via CSS `order`, so
22
- * it lands where selection toggles are conventionally placed on mobile. The
23
- * checkmark uses the `check` icon from the active theme's icon registry.
18
+ * The checkbox visual composes the real CheckboxInput primitive so its checkmark
19
+ * matches CheckboxListItem and picks up the standard `checkbox` theming slots.
20
+ * It is purely decorative: the composed control is wrapped in an element that is
21
+ * both `aria-hidden` and `inert`, so it contributes nothing to the row's
22
+ * accessible name, and its native <input> and sr-only label stay out of the tab
23
+ * order and the accessibility tree while pointer clicks fall through to the row
24
+ * — the same shim MultiSelector uses. The row owns the checked state and
25
+ * accessible name. The control size is derived from the menu's item size (a
26
+ * `sm` menu gets the compact control; `md`/`lg` get the standard one) and it
27
+ * swaps to the inline-end of the row on coarse-pointer (touch) devices via CSS
28
+ * `order`, so it lands where selection toggles are conventionally placed on
29
+ * mobile.
24
30
  */
25
31
  import { useCallback } from 'react';
26
32
  import * as stylex from '@stylexjs/stylex';
27
- import { Icon, renderIconSlot } from "../Icon/index.js";
33
+ import { renderIconSlot } from "../Icon/index.js";
34
+ import { CheckboxInput } from "../CheckboxInput/CheckboxInput.js";
28
35
  import { Item } from "../Item/index.js";
29
36
  import { useDropdownMenuContext } from "./DropdownMenuContext.js";
30
37
  import { focusMenuItemOnHover } from "./menuItemHover.js";
31
38
  import "../theme/tokens.stylex.js";
32
- import { colorVars, spacingVars, radiusVars, durationVars, easeVars, borderVars } from "../theme/tokens.stylex.js";
39
+ import { colorVars, spacingVars } from "../theme/tokens.stylex.js";
33
40
  import { mergeProps, themeProps } from "../utils/index.js";
34
41
  import { jsx as _jsx } from "react/jsx-runtime";
35
42
  const styles = {
@@ -46,45 +53,6 @@ const styles = {
46
53
  kSiTet: "xbyyjgo",
47
54
  kkrTdU: "x1h6gzvc",
48
55
  $$css: true
49
- },
50
- box: {
51
- k1xSpc: "x78zum5",
52
- kGNEyG: "x6s0dn4",
53
- kjj79g: "xl56j7k",
54
- kmuXW: "x2lah0s",
55
- kB7OPa: "x9f619",
56
- kMzoRj: "x1litavf",
57
- ksu8eU: "x1y0btm7",
58
- kaIpWk: "xx3sua9",
59
- kMwMTN: "x17wrial",
60
- k1ekBW: "xts7igz",
61
- kIyJzY: "xuedmi6 x12w9bfk",
62
- kAMwcw: "xlr8y92",
63
- kayTVb: "x1g77sc7 xozvky",
64
- keTefX: "x1lziwak x1jymrmb",
65
- $$css: true
66
- },
67
- unchecked: {
68
- kVAM5u: "xvy26l8",
69
- kWkggS: "x10xzikg",
70
- $$css: true
71
- },
72
- checked: {
73
- kVAM5u: "xad5do",
74
- kWkggS: "x1ewilqj",
75
- $$css: true
76
- }
77
- };
78
- const boxSizeStyles = {
79
- sm: {
80
- kzqmXN: "x1xp8n7a",
81
- kZKoxP: "xmix8c7",
82
- $$css: true
83
- },
84
- md: {
85
- kzqmXN: "x17z2i9w",
86
- kZKoxP: "x17rw0jw",
87
- $$css: true
88
56
  }
89
57
  };
90
58
  /**
@@ -122,6 +90,12 @@ export function DropdownMenuCheckboxItem({
122
90
  const ctx = useDropdownMenuContext();
123
91
  const menuSize = ctx?.menuSize ?? 'md';
124
92
  const controlSize = menuSize === 'sm' ? 'sm' : 'md';
93
+
94
+ // The composed checkbox is decorative and inert, so its label never reaches
95
+ // the accessibility tree — the row's `label` prop provides the announced
96
+ // name. CheckboxInput still requires a string label, so pass one through when
97
+ // the row label is a plain string.
98
+ const checkboxLabel = typeof label === 'string' ? label : '';
125
99
  const handleClick = useCallback(() => {
126
100
  if (isDisabled) {
127
101
  return;
@@ -138,17 +112,18 @@ export function DropdownMenuCheckboxItem({
138
112
  "aria-checked": value,
139
113
  tabIndex: isDisabled ? undefined : -1,
140
114
  onPointerMove: handlePointerMove,
141
- marker: /*#__PURE__*/_jsx("span", {
115
+ marker: /*#__PURE__*/_jsx("div", {
142
116
  "aria-hidden": "true",
143
- ...mergeProps(themeProps('dropdown-menu-checkbox', {
144
- size: controlSize,
145
- checked: value ? 'checked' : null,
146
- disabled: isDisabled ? 'disabled' : null
147
- }), stylex.props(styles.box, boxSizeStyles[controlSize], value ? styles.checked : styles.unchecked)),
148
- children: value && /*#__PURE__*/_jsx(Icon, {
149
- icon: "check",
150
- size: "sm",
151
- color: "inherit"
117
+ inert: true,
118
+ ...{
119
+ className: "x78zum5 x2lah0s x47corl x1g77sc7 xozvky x1lziwak x1jymrmb"
120
+ },
121
+ children: /*#__PURE__*/_jsx(CheckboxInput, {
122
+ label: checkboxLabel,
123
+ isLabelHidden: true,
124
+ value: value,
125
+ isDisabled: isDisabled,
126
+ size: controlSize
152
127
  })
153
128
  }),
154
129
  startContent: icon ? renderIconSlot(icon, {
@@ -22,16 +22,13 @@ export interface DropdownMenuRadioGroupProps extends Omit<BaseProps, 'onChange'>
22
22
  */
23
23
  onChange: (value: string) => void;
24
24
  /**
25
- * Accessible label for the group. Required (together with `aria-labelledby`,
26
- * one of the two) so screen readers announce the radios as a named set,
27
- * e.g. "Sort by".
25
+ * Accessible name for the group, announced by screen readers so the radios
26
+ * read as a named set (e.g. "Sort by"). Applied as the group's `aria-label`.
27
+ * Required -- an unnamed radio group is an accessibility defect. Pass
28
+ * `aria-labelledby` (via base props) instead if the name already exists as a
29
+ * visible element on the page.
28
30
  */
29
- 'aria-label'?: string;
30
- /**
31
- * The id of an element that labels the group, as an alternative to
32
- * `aria-label`.
33
- */
34
- 'aria-labelledby'?: string;
31
+ label: string;
35
32
  /**
36
33
  * Whether selecting a value closes the menu. Radio items default to closing
37
34
  * on selection (a single-choice commit), unlike checkbox items which stay
@@ -54,14 +51,14 @@ export interface DropdownMenuRadioGroupProps extends Omit<BaseProps, 'onChange'>
54
51
  * DropdownMenuRadioItem,
55
52
  * } from '@astryxdesign/core/DropdownMenu';
56
53
  * <DropdownMenu button={{label: 'Sort'}}>
57
- * <DropdownMenuRadioGroup value={sort} onChange={setSort} aria-label="Sort by">
54
+ * <DropdownMenuRadioGroup value={sort} onChange={setSort} label="Sort by">
58
55
  * <DropdownMenuRadioItem value="newest" label="Newest" />
59
56
  * <DropdownMenuRadioItem value="oldest" label="Oldest" />
60
57
  * </DropdownMenuRadioGroup>
61
58
  * </DropdownMenu>
62
59
  * ```
63
60
  */
64
- export declare function DropdownMenuRadioGroup({ value, onChange, hasCloseOnSelect, children, className, style, ...rest }: DropdownMenuRadioGroupProps): import("react").JSX.Element;
61
+ export declare function DropdownMenuRadioGroup({ value, onChange, label, hasCloseOnSelect, children, className, style, ...rest }: DropdownMenuRadioGroupProps): import("react").JSX.Element;
65
62
  export declare namespace DropdownMenuRadioGroup {
66
63
  var displayName: string;
67
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuRadioGroup.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuRadioGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiB5C,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CACvD,SAAS,EACT,UAAU,CACX;IACC;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,QAAQ,EACR,gBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,2BAA2B,+BAgB7B;yBAxBe,sBAAsB"}
1
+ {"version":3,"file":"DropdownMenuRadioGroup.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuRadioGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiB5C,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CACvD,SAAS,EACT,UAAU,CACX;IACC;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,gBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,2BAA2B,+BAiB7B;yBA1Be,sBAAsB"}
@@ -30,7 +30,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
30
30
  * DropdownMenuRadioItem,
31
31
  * } from '@astryxdesign/core/DropdownMenu';
32
32
  * <DropdownMenu button={{label: 'Sort'}}>
33
- * <DropdownMenuRadioGroup value={sort} onChange={setSort} aria-label="Sort by">
33
+ * <DropdownMenuRadioGroup value={sort} onChange={setSort} label="Sort by">
34
34
  * <DropdownMenuRadioItem value="newest" label="Newest" />
35
35
  * <DropdownMenuRadioItem value="oldest" label="Oldest" />
36
36
  * </DropdownMenuRadioGroup>
@@ -40,6 +40,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
40
40
  export function DropdownMenuRadioGroup({
41
41
  value,
42
42
  onChange,
43
+ label,
43
44
  hasCloseOnSelect = true,
44
45
  children,
45
46
  className,
@@ -54,6 +55,7 @@ export function DropdownMenuRadioGroup({
54
55
  return /*#__PURE__*/_jsx("div", {
55
56
  ...rest,
56
57
  role: "group",
58
+ "aria-label": label,
57
59
  ...mergeProps({
58
60
  className: "x78zum5 xdt5ytf x1lsbc85"
59
61
  }, {
@@ -56,7 +56,7 @@ export interface DropdownMenuRadioItemProps extends Omit<BaseProps, 'role' | 'ar
56
56
  *
57
57
  * @example
58
58
  * ```
59
- * <DropdownMenuRadioGroup value={sort} onChange={setSort} aria-label="Sort by">
59
+ * <DropdownMenuRadioGroup value={sort} onChange={setSort} label="Sort by">
60
60
  * <DropdownMenuRadioItem value="newest" label="Newest" />
61
61
  * <DropdownMenuRadioItem value="oldest" label="Oldest" icon="clock" />
62
62
  * </DropdownMenuRadioGroup>
@@ -107,7 +107,7 @@ const dotSizeStyles = {
107
107
  *
108
108
  * @example
109
109
  * ```
110
- * <DropdownMenuRadioGroup value={sort} onChange={setSort} aria-label="Sort by">
110
+ * <DropdownMenuRadioGroup value={sort} onChange={setSort} label="Sort by">
111
111
  * <DropdownMenuRadioItem value="newest" label="Newest" />
112
112
  * <DropdownMenuRadioItem value="oldest" label="Oldest" icon="clock" />
113
113
  * </DropdownMenuRadioGroup>
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuSubMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuSubMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAc,EAMZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAoB5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8F5C,UAAU,4BAA6B,SAAQ,IAAI,CACjD,SAAS,EACT,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B;IAC5E;;;;;;;;OAQG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,SAAS,CAgUX;yBAlUe,mBAAmB"}
1
+ {"version":3,"file":"DropdownMenuSubMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuSubMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAc,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAoB5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA0F5C,UAAU,4BAA6B,SAAQ,IAAI,CACjD,SAAS,EACT,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B;IAC5E;;;;;;;;OAQG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,SAAS,CA2UX;yBA7Ue,mBAAmB"}