@astryxdesign/core 0.7.6-canary.eecd9c1 → 0.7.6-canary.f73623d

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 (182) hide show
  1. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  2. package/dist/DropdownMenu/DropdownMenu.js +28 -19
  3. package/dist/Outline/Outline.d.ts.map +1 -1
  4. package/dist/Outline/Outline.js +27 -0
  5. package/dist/Popover/usePopover.d.ts.map +1 -1
  6. package/dist/Popover/usePopover.js +10 -3
  7. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  8. package/dist/RadioList/RadioListItem.js +5 -2
  9. package/dist/Table/Table.d.ts.map +1 -1
  10. package/dist/Table/Table.js +36 -10
  11. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  12. package/dist/Table/plugins/sortable/useTableSortable.js +46 -58
  13. package/dist/ToggleButton/ToggleButtonGroup.d.ts +7 -1
  14. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  15. package/dist/ToggleButton/ToggleButtonGroup.js +16 -2
  16. package/dist/Token/Token.d.ts.map +1 -1
  17. package/dist/Token/Token.js +37 -5
  18. package/dist/Token/TokenLink.d.ts.map +1 -1
  19. package/dist/Token/TokenLink.js +14 -2
  20. package/dist/i18n/generated-locales/af-ZA.generated.d.ts.map +1 -1
  21. package/dist/i18n/generated-locales/af-ZA.generated.js +0 -5
  22. package/dist/i18n/generated-locales/ar-SA.generated.d.ts.map +1 -1
  23. package/dist/i18n/generated-locales/ar-SA.generated.js +0 -5
  24. package/dist/i18n/generated-locales/ca-ES.generated.d.ts.map +1 -1
  25. package/dist/i18n/generated-locales/ca-ES.generated.js +0 -5
  26. package/dist/i18n/generated-locales/cs-CZ.generated.d.ts.map +1 -1
  27. package/dist/i18n/generated-locales/cs-CZ.generated.js +0 -5
  28. package/dist/i18n/generated-locales/da-DK.generated.d.ts.map +1 -1
  29. package/dist/i18n/generated-locales/da-DK.generated.js +0 -5
  30. package/dist/i18n/generated-locales/de-DE.generated.d.ts.map +1 -1
  31. package/dist/i18n/generated-locales/de-DE.generated.js +0 -5
  32. package/dist/i18n/generated-locales/el-GR.generated.d.ts.map +1 -1
  33. package/dist/i18n/generated-locales/el-GR.generated.js +0 -5
  34. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  35. package/dist/i18n/generated-locales/en.generated.js +1 -5
  36. package/dist/i18n/generated-locales/es-ES.generated.d.ts.map +1 -1
  37. package/dist/i18n/generated-locales/es-ES.generated.js +0 -5
  38. package/dist/i18n/generated-locales/fi-FI.generated.d.ts.map +1 -1
  39. package/dist/i18n/generated-locales/fi-FI.generated.js +0 -5
  40. package/dist/i18n/generated-locales/fr-FR.generated.d.ts.map +1 -1
  41. package/dist/i18n/generated-locales/fr-FR.generated.js +0 -5
  42. package/dist/i18n/generated-locales/he-IL.generated.d.ts.map +1 -1
  43. package/dist/i18n/generated-locales/he-IL.generated.js +0 -5
  44. package/dist/i18n/generated-locales/hu-HU.generated.d.ts.map +1 -1
  45. package/dist/i18n/generated-locales/hu-HU.generated.js +0 -5
  46. package/dist/i18n/generated-locales/it-IT.generated.d.ts.map +1 -1
  47. package/dist/i18n/generated-locales/it-IT.generated.js +0 -5
  48. package/dist/i18n/generated-locales/ja-JP.generated.d.ts.map +1 -1
  49. package/dist/i18n/generated-locales/ja-JP.generated.js +0 -5
  50. package/dist/i18n/generated-locales/ko-KR.generated.d.ts.map +1 -1
  51. package/dist/i18n/generated-locales/ko-KR.generated.js +0 -5
  52. package/dist/i18n/generated-locales/nl-NL.generated.d.ts.map +1 -1
  53. package/dist/i18n/generated-locales/nl-NL.generated.js +0 -5
  54. package/dist/i18n/generated-locales/no-NO.generated.d.ts.map +1 -1
  55. package/dist/i18n/generated-locales/no-NO.generated.js +0 -5
  56. package/dist/i18n/generated-locales/pl-PL.generated.d.ts.map +1 -1
  57. package/dist/i18n/generated-locales/pl-PL.generated.js +0 -5
  58. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  59. package/dist/i18n/generated-locales/pseudo.generated.js +1 -5
  60. package/dist/i18n/generated-locales/pt-BR.generated.d.ts.map +1 -1
  61. package/dist/i18n/generated-locales/pt-BR.generated.js +0 -5
  62. package/dist/i18n/generated-locales/pt-PT.generated.d.ts.map +1 -1
  63. package/dist/i18n/generated-locales/pt-PT.generated.js +0 -5
  64. package/dist/i18n/generated-locales/ro-RO.generated.d.ts.map +1 -1
  65. package/dist/i18n/generated-locales/ro-RO.generated.js +0 -5
  66. package/dist/i18n/generated-locales/ru-RU.generated.d.ts.map +1 -1
  67. package/dist/i18n/generated-locales/ru-RU.generated.js +0 -5
  68. package/dist/i18n/generated-locales/sr-SP.generated.d.ts.map +1 -1
  69. package/dist/i18n/generated-locales/sr-SP.generated.js +0 -5
  70. package/dist/i18n/generated-locales/sv-SE.generated.d.ts.map +1 -1
  71. package/dist/i18n/generated-locales/sv-SE.generated.js +0 -5
  72. package/dist/i18n/generated-locales/tr-TR.generated.d.ts.map +1 -1
  73. package/dist/i18n/generated-locales/tr-TR.generated.js +0 -5
  74. package/dist/i18n/generated-locales/uk-UA.generated.d.ts.map +1 -1
  75. package/dist/i18n/generated-locales/uk-UA.generated.js +0 -5
  76. package/dist/i18n/generated-locales/vi-VN.generated.d.ts.map +1 -1
  77. package/dist/i18n/generated-locales/vi-VN.generated.js +0 -5
  78. package/dist/i18n/generated-locales/zh-CN.generated.d.ts.map +1 -1
  79. package/dist/i18n/generated-locales/zh-CN.generated.js +0 -5
  80. package/dist/i18n/generated-locales/zh-TW.generated.d.ts.map +1 -1
  81. package/dist/i18n/generated-locales/zh-TW.generated.js +0 -5
  82. package/locales/af-ZA.json +0 -21
  83. package/locales/ar-SA.json +0 -21
  84. package/locales/ca-ES.json +0 -21
  85. package/locales/cs-CZ.json +0 -21
  86. package/locales/da-DK.json +0 -21
  87. package/locales/de-DE.json +0 -21
  88. package/locales/el-GR.json +0 -21
  89. package/locales/en.json +3 -19
  90. package/locales/es-ES.json +0 -21
  91. package/locales/fi-FI.json +0 -21
  92. package/locales/fr-FR.json +0 -21
  93. package/locales/he-IL.json +0 -21
  94. package/locales/hu-HU.json +0 -21
  95. package/locales/it-IT.json +0 -21
  96. package/locales/ja-JP.json +0 -21
  97. package/locales/ko-KR.json +0 -21
  98. package/locales/nl-NL.json +0 -21
  99. package/locales/no-NO.json +0 -21
  100. package/locales/pl-PL.json +0 -21
  101. package/locales/pseudo.json +2 -14
  102. package/locales/pt-BR.json +0 -21
  103. package/locales/pt-PT.json +0 -21
  104. package/locales/ro-RO.json +0 -21
  105. package/locales/ru-RU.json +0 -21
  106. package/locales/sr-SP.json +0 -21
  107. package/locales/sv-SE.json +0 -21
  108. package/locales/tr-TR.json +0 -21
  109. package/locales/uk-UA.json +0 -21
  110. package/locales/vi-VN.json +0 -21
  111. package/locales/zh-CN.json +0 -21
  112. package/locales/zh-TW.json +0 -21
  113. package/package.json +4 -4
  114. package/src/Chat/ChatLayout.spec.md +41 -36
  115. package/src/Chat/ChatLayoutScrollButton.spec.md +87 -103
  116. package/src/Chat/ChatSendButton.spec.md +78 -67
  117. package/src/ContextMenu/ContextMenu.spec.md +84 -56
  118. package/src/ContextMenu/ContextMenuItem.spec.md +132 -0
  119. package/src/DropdownMenu/DropdownMenu.spec.md +198 -218
  120. package/src/DropdownMenu/DropdownMenu.test.tsx +117 -0
  121. package/src/DropdownMenu/DropdownMenu.tsx +33 -18
  122. package/src/DropdownMenu/DropdownMenuCheckboxItem.spec.md +192 -0
  123. package/src/DropdownMenu/DropdownMenuDivider.spec.md +25 -31
  124. package/src/DropdownMenu/DropdownMenuGroup.spec.md +145 -0
  125. package/src/DropdownMenu/DropdownMenuItem.spec.md +48 -42
  126. package/src/DropdownMenu/DropdownMenuRadioGroup.spec.md +34 -37
  127. package/src/DropdownMenu/DropdownMenuRadioItem.spec.md +54 -53
  128. package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +47 -41
  129. package/src/EmptyState/EmptyState.spec.md +35 -29
  130. package/src/Outline/Outline.spec.md +165 -69
  131. package/src/Outline/Outline.test.tsx +67 -2
  132. package/src/Outline/Outline.tsx +23 -0
  133. package/src/Outline/modules/parseOutlineFromMarkdown.spec.md +3 -4
  134. package/src/Popover/Popover.test.tsx +44 -0
  135. package/src/Popover/usePopover.tsx +10 -3
  136. package/src/RadioList/RadioList.test.tsx +56 -0
  137. package/src/RadioList/RadioListItem.tsx +5 -2
  138. package/src/Table/Table.spec.md +1 -1
  139. package/src/Table/Table.test.tsx +32 -0
  140. package/src/Table/Table.tsx +43 -11
  141. package/src/Table/__tests__/Table.a11y.states.ts +1 -5
  142. package/src/Table/plugins/sortable/useTableSortable.test.tsx +73 -144
  143. package/src/Table/plugins/sortable/useTableSortable.tsx +44 -73
  144. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +9 -21
  145. package/src/ToggleButton/ToggleButton.test.tsx +27 -0
  146. package/src/ToggleButton/ToggleButtonGroup.tsx +20 -1
  147. package/src/Token/Token.doc.mjs +2 -2
  148. package/src/Token/Token.spec.md +41 -51
  149. package/src/Token/Token.test.tsx +67 -0
  150. package/src/Token/Token.tsx +60 -5
  151. package/src/Token/TokenLink.tsx +21 -7
  152. package/src/i18n/generated-locales/af-ZA.generated.ts +0 -7
  153. package/src/i18n/generated-locales/ar-SA.generated.ts +0 -6
  154. package/src/i18n/generated-locales/ca-ES.generated.ts +0 -7
  155. package/src/i18n/generated-locales/cs-CZ.generated.ts +0 -6
  156. package/src/i18n/generated-locales/da-DK.generated.ts +0 -6
  157. package/src/i18n/generated-locales/de-DE.generated.ts +0 -6
  158. package/src/i18n/generated-locales/el-GR.generated.ts +0 -7
  159. package/src/i18n/generated-locales/en.generated.ts +1 -6
  160. package/src/i18n/generated-locales/es-ES.generated.ts +0 -7
  161. package/src/i18n/generated-locales/fi-FI.generated.ts +0 -6
  162. package/src/i18n/generated-locales/fr-FR.generated.ts +0 -7
  163. package/src/i18n/generated-locales/he-IL.generated.ts +0 -6
  164. package/src/i18n/generated-locales/hu-HU.generated.ts +0 -6
  165. package/src/i18n/generated-locales/it-IT.generated.ts +0 -7
  166. package/src/i18n/generated-locales/ja-JP.generated.ts +0 -6
  167. package/src/i18n/generated-locales/ko-KR.generated.ts +0 -6
  168. package/src/i18n/generated-locales/nl-NL.generated.ts +0 -6
  169. package/src/i18n/generated-locales/no-NO.generated.ts +0 -6
  170. package/src/i18n/generated-locales/pl-PL.generated.ts +0 -7
  171. package/src/i18n/generated-locales/pseudo.generated.ts +1 -6
  172. package/src/i18n/generated-locales/pt-BR.generated.ts +0 -7
  173. package/src/i18n/generated-locales/pt-PT.generated.ts +0 -7
  174. package/src/i18n/generated-locales/ro-RO.generated.ts +0 -6
  175. package/src/i18n/generated-locales/ru-RU.generated.ts +0 -7
  176. package/src/i18n/generated-locales/sr-SP.generated.ts +0 -6
  177. package/src/i18n/generated-locales/sv-SE.generated.ts +0 -6
  178. package/src/i18n/generated-locales/tr-TR.generated.ts +0 -7
  179. package/src/i18n/generated-locales/uk-UA.generated.ts +0 -7
  180. package/src/i18n/generated-locales/vi-VN.generated.ts +0 -6
  181. package/src/i18n/generated-locales/zh-CN.generated.ts +0 -6
  182. package/src/i18n/generated-locales/zh-TW.generated.ts +0 -6
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
@@ -509,11 +509,13 @@ function DropdownMenuBottomSheet({
509
509
  xstyle: [bottomSheetStyles.viewHeading, submenuPath.length === 0 && [bottomSheetStyles.rootHeading, menuBottomSheetStyles.headingAlone]],
510
510
  children: currentTitle
511
511
  });
512
+ // A stable ref: an inline one re-runs on every render (null, then the element).
513
+ const sheetTriggerRef = useCallback(el => {
514
+ buttonRef.current = el;
515
+ }, []);
512
516
  return /*#__PURE__*/_jsxs(_Fragment, {
513
517
  children: [renderTrigger != null ? renderTrigger({
514
- ref: el => {
515
- buttonRef.current = el;
516
- },
518
+ ref: sheetTriggerRef,
517
519
  id: triggerId,
518
520
  onClick: handleSheetTriggerClick,
519
521
  onClickCapture: () => {},
@@ -1178,11 +1180,29 @@ function DropdownMenuPopover({
1178
1180
  }) : /*#__PURE__*/_jsxs(_Fragment, {
1179
1181
  children: [menu, surfaceHostElement]
1180
1182
  });
1183
+
1184
+ // Stable trigger refs. An inline ref is a new function every render, so React
1185
+ // re-runs it on every commit (null, then the element), and each run moved the
1186
+ // popover's anchor off the trigger and back: two inline-style writes on the
1187
+ // trigger per render of the menu.
1188
+ const popoverTriggerRef = popover.triggerRef;
1189
+ const triggerRef = useCallback(el => {
1190
+ buttonRef.current = el;
1191
+ popoverTriggerRef(el);
1192
+ }, [popoverTriggerRef]);
1193
+ const consumerButtonRef = button.ref;
1194
+ const buttonTriggerRef = useCallback(el => {
1195
+ triggerRef(el);
1196
+ if (typeof consumerButtonRef === 'function') {
1197
+ consumerButtonRef(el);
1198
+ } else if (consumerButtonRef) {
1199
+ /* eslint-disable react-compiler/react-compiler -- ref callback: forwarding consumer ref object */
1200
+ consumerButtonRef.current = el;
1201
+ /* eslint-enable react-compiler/react-compiler */
1202
+ }
1203
+ }, [triggerRef, consumerButtonRef]);
1181
1204
  const triggerProps = {
1182
- ref: el => {
1183
- buttonRef.current = el;
1184
- popover.triggerRef(el);
1185
- },
1205
+ ref: triggerRef,
1186
1206
  id: triggerId,
1187
1207
  onClick: handleButtonClick,
1188
1208
  onClickCapture: handleTriggerClickCapture,
@@ -1200,18 +1220,7 @@ function DropdownMenuPopover({
1200
1220
  return /*#__PURE__*/_jsxs(_Fragment, {
1201
1221
  children: [renderTrigger != null ? renderTrigger(triggerProps) : /*#__PURE__*/_jsx(Button, {
1202
1222
  ...button,
1203
- ref: el => {
1204
- buttonRef.current = el;
1205
- popover.triggerRef(el);
1206
- const consumerRef = button.ref;
1207
- if (typeof consumerRef === 'function') {
1208
- consumerRef(el);
1209
- } else if (consumerRef) {
1210
- /* eslint-disable react-compiler/react-compiler -- ref callback: forwarding consumer ref object */
1211
- consumerRef.current = el;
1212
- /* eslint-enable react-compiler/react-compiler */
1213
- }
1214
- },
1223
+ ref: buttonTriggerRef,
1215
1224
  xstyle: [styles.triggerPressable, isOpen && styles.triggerOpen, button.xstyle, isFocusRingSuppressed && focusOutlineStyles.suppressed],
1216
1225
  tooltip: isOpen ? undefined : button.tooltip,
1217
1226
  endContent: resolvedEndContent,
@@ -1 +1 @@
1
- {"version":3,"file":"Outline.d.ts","sourceRoot":"","sources":["../../src/Outline/Outline.tsx"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAQzC,YAAY,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC1D,6CAA6C;IAC7C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B,+CAA+C;IAC/C,KAAK,EAAE,WAAW,EAAE,CAAC;IAErB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAEhC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,KAAK,EAAE,cAAc,EACrB,OAAmB,EACnB,eAAe,EACf,aAAa,EACb,MAAU,EACV,kBAAkB,EAClB,gBAAuB,EACvB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,YAAY,+BAoLd;yBArMe,OAAO"}
1
+ {"version":3,"file":"Outline.d.ts","sourceRoot":"","sources":["../../src/Outline/Outline.tsx"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAQzC,YAAY,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC1D,6CAA6C;IAC7C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B,+CAA+C;IAC/C,KAAK,EAAE,WAAW,EAAE,CAAC;IAErB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAEhC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,KAAK,EAAE,cAAc,EACrB,OAAmB,EACnB,eAAe,EACf,aAAa,EACb,MAAU,EACV,kBAAkB,EAClB,gBAAuB,EACvB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,YAAY,+BAqLd;yBAtMe,OAAO"}
@@ -127,6 +127,32 @@ function getIndentStyle(level) {
127
127
  }
128
128
  }
129
129
 
130
+ /**
131
+ * A followed in-page link moves the sequential focus starting point to its
132
+ * target, so the next Tab continues inside that section. Outline cancels the
133
+ * link's default to scroll itself, so it restores that by focusing the target
134
+ * without scrolling (WCAG 2.4.3). A target that is not focusable becomes
135
+ * programmatically focusable only.
136
+ */
137
+ function moveFocusTo(id) {
138
+ const target = document.getElementById(id);
139
+ if (target == null) {
140
+ return;
141
+ }
142
+ // A target that already takes focus (a link, a button) keeps its place in
143
+ // the Tab order; only one that refuses focus is made focusable by script.
144
+ target.focus({
145
+ preventScroll: true
146
+ });
147
+ // A caller's own tabindex is never overwritten.
148
+ if (document.activeElement !== target && !target.hasAttribute('tabindex')) {
149
+ target.setAttribute('tabindex', '-1');
150
+ target.focus({
151
+ preventScroll: true
152
+ });
153
+ }
154
+ }
155
+
130
156
  // =============================================================================
131
157
  // Component
132
158
  // =============================================================================
@@ -261,6 +287,7 @@ export function Outline({
261
287
  const navigate = id => {
262
288
  if (scrollTo(id)) {
263
289
  window.history.pushState(null, '', `#${id}`);
290
+ moveFocusTo(id);
264
291
  }
265
292
  };
266
293
 
@@ -1 +1 @@
1
- {"version":3,"file":"usePopover.d.ts","sourceRoot":"","sources":["../../src/Popover/usePopover.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAW,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAGpE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAgBnD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA+EhD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC;IAEpD;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,kBAAkB,KAAK,SAAS,CAAC;IAEvE;;OAEG;IACH,YAAY,EAAE;QACZ,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC;QACnC,eAAe,EAAE,OAAO,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAwPD,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAE5E"}
1
+ {"version":3,"file":"usePopover.d.ts","sourceRoot":"","sources":["../../src/Popover/usePopover.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAW,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAGpE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAgBnD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA+EhD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC;IAEpD;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,kBAAkB,KAAK,SAAS,CAAC;IAEvE;;OAEG;IACH,YAAY,EAAE;QACZ,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC;QACnC,eAAe,EAAE,OAAO,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AA+PD,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAE5E"}
@@ -203,11 +203,18 @@ function usePopoverImplementation(options = {}) {
203
203
  }
204
204
  }, [layer.isOpen, hasAutoFocus, focusInitialTarget]);
205
205
 
206
- // Combined ref for trigger element (layer anchor + our ref)
206
+ // Combined ref for trigger element (layer anchor + our ref). It is keyed on
207
+ // the layer's own ref, not the whole layer: the layer object changes with
208
+ // every new onShow or onHide, and a trigger ref that changed with it made
209
+ // React detach and reattach the trigger on every render. It reads nothing
210
+ // else from the layer, and layer.ref (useLayer's contextRef) reads only refs
211
+ // and its anchor name and anchor-clearance option, so nothing in it goes
212
+ // stale.
213
+ const layerRef = layer.ref;
207
214
  const triggerRef = useCallback(el => {
208
215
  triggerElementRef.current = el;
209
- layer.ref(el);
210
- }, [layer]);
216
+ layerRef(el);
217
+ }, [layerRef]);
211
218
 
212
219
  // Show function with optional focus preservation
213
220
  const show = useCallback(showOptions => {
@@ -1 +1 @@
1
- {"version":3,"file":"RadioListItem.d.ts","sourceRoot":"","sources":["../../src/RadioList/RadioListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AA0I7C,MAAM,WAAW,kBAAmB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,KAAK,EACL,WAAW,EACX,UAAU,EAAE,cAAsB,EAClC,YAAY,EACZ,UAAU,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,GAAG,IAAI,EACR,EAAE,kBAAkB,qBA2KpB;yBA1Le,aAAa"}
1
+ {"version":3,"file":"RadioListItem.d.ts","sourceRoot":"","sources":["../../src/RadioList/RadioListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AA0I7C,MAAM,WAAW,kBAAmB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,KAAK,EACL,WAAW,EACX,UAAU,EAAE,cAAsB,EAClC,YAAY,EACZ,UAAU,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,GAAG,IAAI,EACR,EAAE,kBAAkB,qBA8KpB;yBA7Le,aAAa"}
@@ -212,9 +212,12 @@ export function RadioListItem({
212
212
  }
213
213
  // A consumer onClick rides on the radio input itself, so it fires for
214
214
  // both direct control clicks and row-surface clicks the row delegates
215
- // to the input — the same routing CheckboxListItem uses.
215
+ // to the input — the same routing CheckboxListItem uses. A disabled
216
+ // radio that stays focusable (`aria-disabled`, not native `disabled`)
217
+ // is not silenced by the browser, so drop the handler here
218
+ // (`spec:AST-085` FR2), as CheckboxInput does.
216
219
  ,
217
- onClick: onClick
220
+ onClick: isDisabled ? undefined : onClick
218
221
  // The radio names itself from the visible label element, which works
219
222
  // for a rich label as well as a plain string. `aria-label` replaces
220
223
  // that name rather than adding to it, so the two are mutually
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table/Table.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAS3D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EAEZ,MAAM,SAAS,CAAC;AAQjB,oDAAoD;AAEpD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/D,kCAAkC;AAElC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE,8DAA8D;AAE9D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpD;;;;;GAKG;AAEH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,IAAI,CACzE,cAAc,CAAC,CAAC,CAAC,EACjB,SAAS,GAAG,YAAY,CACzB;IACC,uCAAuC;IACvC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C;AA2JD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,KAAK,EAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAC,KACjD,YAAY,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table/Table.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA8B,KAAK,YAAY,EAAE,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAS/E,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EAEZ,MAAM,SAAS,CAAC;AAQjB,oDAAoD;AAEpD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/D,kCAAkC;AAElC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE,8DAA8D;AAE9D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpD;;;;;GAKG;AAEH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,IAAI,CACzE,cAAc,CAAC,CAAC,CAAC,EACjB,SAAS,GAAG,YAAY,CACzB;IACC,uCAAuC;IACvC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C;AA2LD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,KAAK,EAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAC,KACjD,YAAY,CAAC"}
@@ -16,7 +16,7 @@
16
16
  * - /apps/storybook/stories/Table.stories.tsx (storybook stories)
17
17
  * - /packages/cli/assets/templates/blocks/components/Table/ (showcase blocks)
18
18
  */
19
- import { useMemo } from 'react';
19
+ import { createContext, use, useMemo } from 'react';
20
20
  import * as stylex from '@stylexjs/stylex';
21
21
  import "../theme/tokens.stylex.js";
22
22
  import { colorVars } from "../theme/tokens.stylex.js";
@@ -71,6 +71,14 @@ const scrollWrapperStyles = {
71
71
  $$css: true
72
72
  }
73
73
  };
74
+
75
+ /**
76
+ * The Table's own name, for the scroll region that names itself after it.
77
+ * Internal to Table: the scroll wrapper is not given it as a prop, so it adds
78
+ * nothing to the public table types.
79
+ */
80
+ const TableNameContext = /*#__PURE__*/createContext(null);
81
+ TableNameContext.displayName = 'TableNameContext';
74
82
  function TableScrollWrapper({
75
83
  children,
76
84
  htmlProps,
@@ -79,7 +87,14 @@ function TableScrollWrapper({
79
87
  afterTable
80
88
  }) {
81
89
  const t = useTranslator();
82
- const label = t('@astryx.table.label');
90
+ const tableName = use(TableNameContext);
91
+ // The focusable scroll region takes the table's own name (spec:AST-025
92
+ // FR12), so two tables are not two groups both named "Table". It is named
93
+ // the way the table is: `aria-labelledby` wins over `aria-label`, as it does
94
+ // in accessible-name computation; the generic name is the fallback for an
95
+ // unnamed table.
96
+ const labelledBy = tableName?.labelledBy;
97
+ const label = labelledBy != null ? undefined : tableName?.label ?? t('@astryx.table.label');
83
98
  const {
84
99
  getViewportProps,
85
100
  getContentProps,
@@ -98,6 +113,8 @@ function TableScrollWrapper({
98
113
  const viewportProps = getViewportProps({
99
114
  role: 'group',
100
115
  'aria-label': label,
116
+ // A plugin's explicit name stays authoritative (Table FR1).
117
+ 'aria-labelledby': restHtmlProps['aria-label'] == null ? labelledBy : undefined,
101
118
  ...(state.inline.isScrollable ? {
102
119
  tabIndex: 0
103
120
  } : {}),
@@ -163,16 +180,25 @@ function TableInner({
163
180
  verticalAlign,
164
181
  textOverflow
165
182
  }), [density, dividers, isStriped, hasHover, verticalAlign, textOverflow]);
183
+ const tableLabel = rest['aria-label'];
184
+ const tableLabelledBy = rest['aria-labelledby'];
185
+ const tableName = useMemo(() => ({
186
+ label: tableLabel,
187
+ labelledBy: tableLabelledBy
188
+ }), [tableLabel, tableLabelledBy]);
166
189
  return /*#__PURE__*/_jsx(TableContext, {
167
190
  value: contextValue,
168
- children: /*#__PURE__*/_jsx(BaseTable, {
169
- ref: ref,
170
- data: data,
171
- columns: columns,
172
- plugins: mergedPlugins,
173
- textOverflow: textOverflow,
174
- scrollWrapper: TableScrollWrapper,
175
- ...rest
191
+ children: /*#__PURE__*/_jsx(TableNameContext, {
192
+ value: tableName,
193
+ children: /*#__PURE__*/_jsx(BaseTable, {
194
+ ref: ref,
195
+ data: data,
196
+ columns: columns,
197
+ plugins: mergedPlugins,
198
+ textOverflow: textOverflow,
199
+ scrollWrapper: TableScrollWrapper,
200
+ ...rest
201
+ })
176
202
  })
177
203
  });
178
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSortable.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/sortable/useTableSortable.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAC9D,2EAA2E;IAC3E,OAAO,EAAE,QAAQ,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IACzD,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;AAM7B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IACtE,iEAAiE;IACjE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE/B;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAEvD;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAmPD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAChC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CA2F1D"}
1
+ {"version":3,"file":"useTableSortable.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/sortable/useTableSortable.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAC9D,2EAA2E;IAC3E,OAAO,EAAE,QAAQ,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IACzD,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;AAM7B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IACtE,iEAAiE;IACjE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE/B;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAEvD;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAsND;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAChC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CA2F1D"}
@@ -12,7 +12,7 @@
12
12
  * - /packages/core/src/Table/Table.doc.mjs (sort documentation)
13
13
  * - /packages/core/src/Table/index.ts (exports)
14
14
  */
15
- import { useRef, useMemo } from 'react';
15
+ import { useId, useRef, useMemo } from 'react';
16
16
  import * as stylex from '@stylexjs/stylex';
17
17
  import "../../../theme/tokens.stylex.js";
18
18
  import { colorVars, spacingVars, radiusVars } from "../../../theme/tokens.stylex.js";
@@ -68,7 +68,7 @@ import { useTranslator } from "../../../i18n/index.js";
68
68
  * <Table plugins={{ sort: sortPlugin }} columns={columns} data={data} />
69
69
  * ```
70
70
  */
71
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
71
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
72
72
  // =============================================================================
73
73
  // Styles
74
74
  // =============================================================================
@@ -118,36 +118,6 @@ function resolveSortKey(column) {
118
118
  }
119
119
  return sortable.sortKey ?? column.key;
120
120
  }
121
- function getHeaderLabel(column) {
122
- const {
123
- header
124
- } = column;
125
- if (typeof header === 'string') {
126
- return header;
127
- }
128
- return column.key;
129
- }
130
- function buildAriaLabel(t, column, direction, rank, total) {
131
- const label = getHeaderLabel(column);
132
- if (direction == null) {
133
- return t('@astryx.table.sort.sortBy', {
134
- label
135
- });
136
- }
137
- const directionLabel = direction === 'ascending' ? t('@astryx.table.sort.direction.ascending') : t('@astryx.table.sort.direction.descending');
138
- if (rank != null && total > 1) {
139
- return t('@astryx.table.sort.sortedByWithPriority', {
140
- label,
141
- direction: directionLabel,
142
- rank,
143
- total
144
- });
145
- }
146
- return t('@astryx.table.sort.sortedBy', {
147
- label,
148
- direction: directionLabel
149
- });
150
- }
151
121
  function getNextDirection(current, allowUnsortedState) {
152
122
  if (current == null) {
153
123
  return 'ascending';
@@ -177,7 +147,12 @@ function SortHeaderButton({
177
147
  const isMultiSort = config.isMultiSortEnabled === true && config.sort.length > 1;
178
148
  const rank = isMultiSort && entryIndex >= 0 ? entryIndex + 1 : null;
179
149
  const iconName = direction === 'ascending' ? 'arrowUp' : direction === 'descending' ? 'arrowDown' : 'arrowsUpDown';
180
- const ariaLabel = buildAriaLabel(t, column, direction, rank, config.sort.length);
150
+
151
+ // The button is named by its column's text, so the column header keeps
152
+ // that name; direction lives in the header's aria-sort. Only the multi-sort
153
+ // priority, which aria-sort cannot carry, is a description
154
+ // (spec:AST-020 FR15; WCAG 1.3.1).
155
+ const priorityId = useId();
181
156
  const handleClick = e => {
182
157
  const cfg = configRef.current;
183
158
  const isShift = e.shiftKey && cfg.isMultiSortEnabled;
@@ -221,33 +196,46 @@ function SortHeaderButton({
221
196
  }
222
197
  }
223
198
  };
224
- return /*#__PURE__*/_jsxs("button", {
225
- type: "button",
226
- ...focusOutlineProps.focusVisible(sortStyles.button, column.align === 'end' ? sortStyles.buttonAlignEnd : column.align === 'center' ? sortStyles.buttonAlignCenter : null),
227
- "aria-label": ariaLabel,
228
- onClick: handleClick,
229
- children: [/*#__PURE__*/_jsx("span", {
230
- children: children
231
- }), /*#__PURE__*/_jsx("span", {
232
- ...{
233
- 0: {
234
- className: "x3nfvp2 x3onkmb xof6bs x25t5g8"
199
+ return /*#__PURE__*/_jsxs(_Fragment, {
200
+ children: [/*#__PURE__*/_jsxs("button", {
201
+ type: "button",
202
+ ...focusOutlineProps.focusVisible(sortStyles.button, column.align === 'end' ? sortStyles.buttonAlignEnd : column.align === 'center' ? sortStyles.buttonAlignCenter : null),
203
+ "aria-describedby": rank != null ? priorityId : undefined,
204
+ onClick: handleClick,
205
+ children: [/*#__PURE__*/_jsx("span", {
206
+ children: children
207
+ }), /*#__PURE__*/_jsx("span", {
208
+ ...{
209
+ 0: {
210
+ className: "x3nfvp2 x3onkmb xof6bs x25t5g8"
211
+ },
212
+ 1: {
213
+ className: "x3nfvp2"
214
+ }
215
+ }[!!(direction != null) << 0],
216
+ children: /*#__PURE__*/_jsx(Icon, {
217
+ icon: iconName,
218
+ size: "xsm",
219
+ color: direction != null ? 'accent' : 'secondary'
220
+ })
221
+ }), rank != null && /*#__PURE__*/_jsx("span", {
222
+ ...{
223
+ className: "x1k6wstc xo5v014 xqwr325"
235
224
  },
236
- 1: {
237
- className: "x3nfvp2"
238
- }
239
- }[!!(direction != null) << 0],
240
- children: /*#__PURE__*/_jsx(Icon, {
241
- icon: iconName,
242
- size: "xsm",
243
- color: direction != null ? 'accent' : 'secondary'
225
+ "aria-hidden": "true",
226
+ children: rank
227
+ })]
228
+ }), rank != null &&
229
+ /*#__PURE__*/
230
+ // Hidden, so it adds nothing to the button's or the header's name;
231
+ // aria-describedby still reads it.
232
+ _jsx("span", {
233
+ id: priorityId,
234
+ hidden: true,
235
+ children: t('@astryx.table.sort.priority', {
236
+ rank,
237
+ total: config.sort.length
244
238
  })
245
- }), rank != null && /*#__PURE__*/_jsx("span", {
246
- ...{
247
- className: "x1k6wstc xo5v014 xqwr325"
248
- },
249
- "aria-hidden": "true",
250
- children: rank
251
239
  })]
252
240
  });
253
241
  }
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import { type ReactNode } from 'react';
17
17
  import type { ButtonSize } from '../Button/index.js';
18
+ import type { BaseProps } from '../BaseProps.js';
18
19
  import type { StyleXStyles } from '@stylexjs/stylex';
19
20
  interface ToggleButtonGroupContextValue {
20
21
  /** Currently selected value(s). */
@@ -31,7 +32,12 @@ interface ToggleButtonGroupContextValue {
31
32
  * Returns null when used outside a group.
32
33
  */
33
34
  export declare function useToggleButtonGroup(): ToggleButtonGroupContextValue | null;
34
- interface ToggleButtonGroupBaseProps {
35
+ /**
36
+ * Host props reach the group element (`architecture:public-component-api`
37
+ * INV5): `className`, `style`, `id`, `aria-*`, `data-*` and handlers. The group
38
+ * keeps its own `role`, `aria-label` and theme target.
39
+ */
40
+ interface ToggleButtonGroupBaseProps extends Omit<BaseProps<HTMLDivElement>, 'onChange' | 'defaultValue' | 'role' | 'aria-label'> {
35
41
  /** Toggle button children. */
36
42
  children: ReactNode;
37
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ToggleButton/ToggleButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA4B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAIhE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAOnD,UAAU,6BAA6B;IACrC,mCAAmC;IACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,6BAA6B,GAAG,IAAI,CAE3E;AAsBD,UAAU,0BAA0B;IAClC,8BAA8B;IAC9B,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC9E;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,+BAA+B;IAC/B,IAAI,EAAE,UAAU,CAAC;IAEjB,iCAAiC;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,MAAM,sBAAsB,GAChC,4BAA4B,GAAG,8BAA8B,CAAC;AAMhE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,CAgE1E;yBAhEe,iBAAiB"}
1
+ {"version":3,"file":"ToggleButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ToggleButton/ToggleButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA4B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAIhE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAOnD,UAAU,6BAA6B;IACrC,mCAAmC;IACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,6BAA6B,GAAG,IAAI,CAE3E;AAsBD;;;;GAIG;AACH,UAAU,0BAA2B,SAAQ,IAAI,CAC/C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,GAAG,MAAM,GAAG,YAAY,CACpD;IACC,8BAA8B;IAC9B,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC9E;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,+BAA+B;IAC/B,IAAI,EAAE,UAAU,CAAC;IAEjB,iCAAiC;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,MAAM,sBAAsB,GAChC,4BAA4B,GAAG,8BAA8B,CAAC;AAMhE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,CA0E1E;yBA1Ee,iBAAiB"}
@@ -62,6 +62,12 @@ const styles = {
62
62
  // Props — Discriminated Union
63
63
  // =============================================================================
64
64
 
65
+ /**
66
+ * Host props reach the group element (`architecture:public-component-api`
67
+ * INV5): `className`, `style`, `id`, `aria-*`, `data-*` and handlers. The group
68
+ * keeps its own `role`, `aria-label` and theme target.
69
+ */
70
+
65
71
  /**
66
72
  * Single-select group props.
67
73
  * Only one button can be active at a time. Clicking the active
@@ -103,7 +109,14 @@ export function ToggleButtonGroup(props) {
103
109
  size,
104
110
  isDisabled = false,
105
111
  xstyle,
106
- 'data-testid': testId
112
+ className,
113
+ style,
114
+ 'data-testid': testId,
115
+ // Read through `props` below, where the union narrows them by `type`.
116
+ type: _type,
117
+ value: _value,
118
+ onChange: _onChange,
119
+ ...hostProps
107
120
  } = props;
108
121
  const isMultiple = props.type === 'multiple';
109
122
  const selectedValues = useMemo(() => {
@@ -138,10 +151,11 @@ export function ToggleButtonGroup(props) {
138
151
  return /*#__PURE__*/_jsx(ToggleButtonGroupContext, {
139
152
  value: contextValue,
140
153
  children: /*#__PURE__*/_jsx("div", {
154
+ ...hostProps,
141
155
  role: "group",
142
156
  "aria-label": label,
143
157
  "data-testid": testId,
144
- ...mergeProps(themeProps('toggle-button-group'), stylex.props(styles.group, orientation === 'vertical' && styles.vertical, xstyle)),
158
+ ...mergeProps(themeProps('toggle-button-group'), stylex.props(styles.group, orientation === 'vertical' && styles.vertical, xstyle), className, style),
145
159
  children: children
146
160
  })
147
161
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/Token/Token.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAM5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAO3C;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,WAAW,UAAW,SAAQ,SAAS,CAAC,WAAW,CAAC;IACxD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA2JD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAW,EACX,KAAiB,EACjB,IAAI,EACJ,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,WAAW,EACX,UAAU,EACV,aAAqB,EACrB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,UAAU,+BAkMZ;yBApNe,KAAK"}
1
+ {"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/Token/Token.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAM5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAO3C;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,WAAW,UAAW,SAAQ,SAAS,CAAC,WAAW,CAAC;IACxD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA2JD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAW,EACX,KAAiB,EACjB,IAAI,EACJ,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,WAAW,EACX,UAAU,EACV,aAAqB,EACrB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,UAAU,+BAyPZ;yBA3Qe,KAAK"}
@@ -270,7 +270,35 @@ export function Token({
270
270
  'aria-description': description
271
271
  } : {})
272
272
  };
273
- if (role === 'link') {
273
+
274
+ // A disabled link keeps a focusable link with aria-disabled and no
275
+ // destination, as a disabled Link does (spec:AST-085 FR1, FR5;
276
+ // component:Link FR5). useInteractiveRole reports no link role once
277
+ // disabled, so the structure is chosen here.
278
+ const isDisabledLink = isDisabled && href != null && effectiveOnClick == null;
279
+ if (isDisabledLink && onRemove == null) {
280
+ // A disabled link is an <a> with no href, as Link renders one: nothing can
281
+ // navigate, it keeps a Tab stop and the link role (spec:AST-085 FR1, FR5).
282
+ // The router LinkComponent is skipped, since a custom router link may
283
+ // require a live href.
284
+ const DisabledAnchor = 'a';
285
+ return /*#__PURE__*/_jsx(DisabledAnchor, {
286
+ ref: ref,
287
+ role: "link",
288
+ "aria-disabled": true,
289
+ tabIndex: 0,
290
+ ...mergeProps(themeProps('token', {
291
+ color,
292
+ size,
293
+ disabled: 'disabled'
294
+ }), focusOutlineProps.focusVisible(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, styles.disabled, xstyle), className, style),
295
+ ...rest,
296
+ ...disabledInteractionProps(rest.onKeyDown),
297
+ ...sharedProps,
298
+ children: content
299
+ });
300
+ }
301
+ if (role === 'link' || isDisabledLink) {
274
302
  if (onRemove == null) {
275
303
  return /*#__PURE__*/_jsx(LinkComponent, {
276
304
  ref: ref,
@@ -278,7 +306,8 @@ export function Token({
278
306
  ...pressable,
279
307
  ...mergeProps(themeProps('token', {
280
308
  color,
281
- size
309
+ size,
310
+ disabled: isDisabled ? 'disabled' : null
282
311
  }), focusOutlineProps.focusVisible(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, interactionOverlayStyles.backgroundImage, isDisabled && styles.disabled, xstyle), className, style),
283
312
  ...rest,
284
313
  ...(isDisabled ? {
@@ -321,7 +350,8 @@ export function Token({
321
350
  }),
322
351
  ...mergeProps(themeProps('token', {
323
352
  color,
324
- size
353
+ size,
354
+ disabled: isDisabled ? 'disabled' : null
325
355
  }), focusOutlineProps.focusWithin(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, interactionOverlayStyles.backgroundImage, isDisabled && styles.disabled, xstyle), className, style),
326
356
  ...rest,
327
357
  ...sharedProps
@@ -341,7 +371,8 @@ export function Token({
341
371
  ...pressable,
342
372
  ...mergeProps(themeProps('token', {
343
373
  color,
344
- size
374
+ size,
375
+ disabled: isDisabled ? 'disabled' : null
345
376
  }), focusOutlineProps.focusWithin(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, interactionOverlayStyles.backgroundImage, isDisabled && styles.disabled, xstyle), className, style),
346
377
  ...rest,
347
378
  ...sharedProps,
@@ -371,7 +402,8 @@ export function Token({
371
402
  ref: ref,
372
403
  ...mergeProps(themeProps('token', {
373
404
  color,
374
- size
405
+ size,
406
+ disabled: isDisabled ? 'disabled' : null
375
407
  }), stylex.props(styles.base, sizeStyles[size], colorStyles[color], isDisabled && styles.disabled, xstyle), className, style),
376
408
  ...rest,
377
409
  ...sharedProps,
@@ -1 +1 @@
1
- {"version":3,"file":"TokenLink.d.ts","sourceRoot":"","sources":["../../src/Token/TokenLink.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAC,MAAM,OAAO,CAAC;AAGzE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAIrD,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,WAAW,CAAC;IACjE,8CAA8C;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,aAAa,EAAE,iBAAiB,CAAC;IACjC,mEAAmE;IACnE,cAAc,EAAE;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAC,CAAC;IAC5D,wEAAwE;IACxE,YAAY,EAAE,SAAS,CAAC;IACxB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kEAAkE;IAClE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,YAAY,EAAE,SAAS,CAAC;IACxB,kFAAkF;IAClF,CAAC,QAAQ,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,IAAI,EACJ,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,cAAc,EAClB,EAAE,cAAc,+BAmChB;yBAhDe,SAAS"}
1
+ {"version":3,"file":"TokenLink.d.ts","sourceRoot":"","sources":["../../src/Token/TokenLink.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAC,MAAM,OAAO,CAAC;AAGzE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAKrD,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,WAAW,CAAC;IACjE,8CAA8C;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,aAAa,EAAE,iBAAiB,CAAC;IACjC,mEAAmE;IACnE,cAAc,EAAE;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAC,CAAC;IAC5D,wEAAwE;IACxE,YAAY,EAAE,SAAS,CAAC;IACxB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kEAAkE;IAClE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,YAAY,EAAE,SAAS,CAAC;IACxB,kFAAkF;IAClF,CAAC,QAAQ,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,IAAI,EACJ,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,cAAc,EAClB,EAAE,cAAc,+BAgDhB;yBA7De,SAAS"}
@@ -28,6 +28,7 @@ import { useRef } from 'react';
28
28
  import { useClickableContainer } from "../hooks/useClickableContainer.js";
29
29
  import { composeEventHandlers } from "../utils/index.js";
30
30
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
31
+ import { disabledInteractionProps } from "../utils/disabledInteraction.js";
31
32
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
33
  /**
33
34
  * Interactive container for a Token that is both a link and removable.
@@ -67,10 +68,21 @@ export function TokenLink({
67
68
  ...containerProps,
68
69
  onClick: isDisabled ? onClickProp : composeEventHandlers(onClickProp, onClick),
69
70
  onMouseUp: isDisabled ? onMouseUpProp : composeEventHandlers(onMouseUpProp, onMouseUp),
70
- children: [icon, /*#__PURE__*/_jsx(LinkComponent, {
71
+ children: [icon, isDisabled ?
72
+ /*#__PURE__*/
73
+ // A disabled link stays a focusable link with no destination, as a
74
+ // disabled Link does (spec:AST-085 FR1, FR5; component:Link FR5).
75
+ _jsx("a", {
76
+ ref: linkRef,
77
+ role: "link",
78
+ "aria-disabled": true,
79
+ tabIndex: 0,
80
+ ...linkStyleProps,
81
+ ...disabledInteractionProps(),
82
+ children: labelContent
83
+ }) : /*#__PURE__*/_jsx(LinkComponent, {
71
84
  ref: linkRef,
72
85
  href: href,
73
- "aria-disabled": isDisabled || undefined,
74
86
  ...linkStyleProps,
75
87
  children: labelContent
76
88
  }), endContent, removeButton]
@@ -1 +1 @@
1
- {"version":3,"file":"af-ZA.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/af-ZA.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmapD,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"af-ZA.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/af-ZA.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4ZpD,CAAC;AAEF,eAAe,cAAc,CAAC"}