@astryxdesign/core 0.1.6-canary.dd1d655 → 0.1.6-canary.e65bbd4

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 (215) hide show
  1. package/dist/Banner/Banner.d.ts.map +1 -1
  2. package/dist/Banner/Banner.js +4 -4
  3. package/dist/Button/Button.d.ts.map +1 -1
  4. package/dist/Button/Button.js +34 -4
  5. package/dist/ButtonGroup/ButtonGroup.d.ts +20 -5
  6. package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  7. package/dist/ButtonGroup/ButtonGroup.js +27 -11
  8. package/dist/Calendar/Calendar.d.ts.map +1 -1
  9. package/dist/Calendar/Calendar.js +25 -5
  10. package/dist/Carousel/Carousel.js +2 -2
  11. package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
  12. package/dist/Chat/ChatComposerDrawer.js +5 -1
  13. package/dist/Chat/ChatLayout.d.ts +1 -1
  14. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  15. package/dist/Chat/ChatLayout.js +6 -2
  16. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  17. package/dist/Chat/ChatLayoutScrollButton.js +4 -2
  18. package/dist/Chat/ChatMessage.d.ts +1 -1
  19. package/dist/Chat/ChatMessage.d.ts.map +1 -1
  20. package/dist/Chat/ChatMessage.js +8 -2
  21. package/dist/Chat/ChatMessageBubble.d.ts +1 -1
  22. package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
  23. package/dist/Chat/ChatMessageBubble.js +3 -1
  24. package/dist/Chat/ChatMessageList.d.ts +1 -1
  25. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  26. package/dist/Chat/ChatMessageList.js +3 -1
  27. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  28. package/dist/Chat/ChatSendButton.js +3 -1
  29. package/dist/Chat/index.d.ts +1 -1
  30. package/dist/Chat/index.d.ts.map +1 -1
  31. package/dist/Chat/useChatStreamScroll.d.ts +12 -1
  32. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  33. package/dist/Chat/useChatStreamScroll.js +43 -6
  34. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  35. package/dist/Chat/useTriggerMenu.js +4 -2
  36. package/dist/CheckboxList/CheckboxList.d.ts +1 -1
  37. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  38. package/dist/CheckboxList/CheckboxList.js +3 -1
  39. package/dist/Citation/Citation.d.ts.map +1 -1
  40. package/dist/Citation/Citation.js +10 -2
  41. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  42. package/dist/CodeBlock/CodeBlock.js +4 -2
  43. package/dist/DateInput/DateInput.d.ts.map +1 -1
  44. package/dist/DateInput/DateInput.js +4 -2
  45. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  46. package/dist/DateRangeInput/DateRangeInput.js +4 -2
  47. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  48. package/dist/DateTimeInput/DateTimeInput.js +7 -3
  49. package/dist/Dialog/Dialog.d.ts.map +1 -1
  50. package/dist/Dialog/Dialog.js +15 -12
  51. package/dist/Dialog/DialogHeader.d.ts +1 -1
  52. package/dist/Dialog/DialogHeader.d.ts.map +1 -1
  53. package/dist/Dialog/DialogHeader.js +3 -1
  54. package/dist/FileInput/FileInput.d.ts.map +1 -1
  55. package/dist/FileInput/FileInput.js +11 -1
  56. package/dist/Lightbox/Lightbox.js +1 -1
  57. package/dist/MobileNav/MobileNav.js +1 -1
  58. package/dist/MultiSelector/MultiSelector.js +3 -1
  59. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  60. package/dist/NumberInput/NumberInput.js +5 -1
  61. package/dist/Selector/Selector.d.ts.map +1 -1
  62. package/dist/Selector/Selector.js +45 -11
  63. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  64. package/dist/SideNav/SideNavCollapseButton.js +3 -1
  65. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  66. package/dist/SideNav/SideNavItem.js +7 -1
  67. package/dist/Table/BaseTable.d.ts.map +1 -1
  68. package/dist/Table/BaseTable.js +26 -15
  69. package/dist/Table/Table.js +2 -2
  70. package/dist/Table/plugins/columnResize/useTableColumnResize.js +1 -1
  71. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  72. package/dist/Table/plugins/filtering/useTableFiltering.js +47 -14
  73. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  74. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +11 -4
  75. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  76. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +8 -6
  77. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -2
  78. package/dist/Table/types.d.ts +17 -10
  79. package/dist/Table/types.d.ts.map +1 -1
  80. package/dist/TextInput/TextInput.d.ts.map +1 -1
  81. package/dist/TextInput/TextInput.js +5 -1
  82. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  83. package/dist/Thumbnail/Thumbnail.js +8 -2
  84. package/dist/TimeInput/TimeInput.js +3 -1
  85. package/dist/Token/Token.d.ts.map +1 -1
  86. package/dist/Token/Token.js +8 -2
  87. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -0
  88. package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  89. package/dist/VisuallyHidden/VisuallyHidden.js +1 -0
  90. package/dist/astryx.css +3 -1
  91. package/dist/astryx.umd.js +45 -45
  92. package/dist/astryx.umd.js.map +3 -3
  93. package/dist/authoring/doc.d.ts +145 -0
  94. package/dist/authoring/doc.d.ts.map +1 -0
  95. package/dist/authoring/doc.js +100 -0
  96. package/dist/authoring/index.d.ts +29 -0
  97. package/dist/authoring/index.d.ts.map +1 -0
  98. package/dist/authoring/index.js +28 -0
  99. package/dist/authoring/integration.d.ts +35 -0
  100. package/dist/authoring/integration.d.ts.map +1 -0
  101. package/dist/authoring/integration.js +30 -0
  102. package/dist/authoring/template.d.ts +66 -0
  103. package/dist/authoring/template.d.ts.map +1 -0
  104. package/dist/authoring/template.js +55 -0
  105. package/dist/config.d.ts +80 -0
  106. package/dist/config.d.ts.map +1 -0
  107. package/dist/config.js +40 -0
  108. package/dist/utils/color.d.ts +13 -1
  109. package/dist/utils/color.d.ts.map +1 -1
  110. package/dist/utils/color.js +23 -1
  111. package/dist/utils/index.d.ts +1 -1
  112. package/dist/utils/index.d.ts.map +1 -1
  113. package/dist/utils/index.js +1 -1
  114. package/locales/en.json +160 -0
  115. package/locales/pseudo.json +120 -0
  116. package/package.json +11 -1
  117. package/src/AppShell/AppShell.doc.mjs +8 -2
  118. package/src/Banner/Banner.tsx +6 -3
  119. package/src/Button/Button.tsx +34 -4
  120. package/src/ButtonGroup/ButtonGroup.test.tsx +386 -2
  121. package/src/ButtonGroup/ButtonGroup.tsx +27 -11
  122. package/src/Calendar/Calendar.test.tsx +103 -2
  123. package/src/Calendar/Calendar.tsx +25 -4
  124. package/src/Card/Card.doc.mjs +3 -3
  125. package/src/Carousel/Carousel.tsx +4 -4
  126. package/src/Chat/ChatComposerDrawer.tsx +5 -1
  127. package/src/Chat/ChatLayout.test.tsx +127 -2
  128. package/src/Chat/ChatLayout.tsx +5 -1
  129. package/src/Chat/ChatLayoutScrollButton.tsx +4 -2
  130. package/src/Chat/ChatMessage.tsx +5 -1
  131. package/src/Chat/ChatMessageBubble.tsx +2 -0
  132. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  133. package/src/Chat/ChatMessageList.tsx +2 -0
  134. package/src/Chat/ChatSendButton.tsx +3 -1
  135. package/src/Chat/ChatToolCalls.doc.mjs +1 -1
  136. package/src/Chat/index.ts +1 -0
  137. package/src/Chat/useChatStreamScroll.test.tsx +168 -0
  138. package/src/Chat/useChatStreamScroll.ts +67 -11
  139. package/src/Chat/useTriggerMenu.tsx +4 -2
  140. package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
  141. package/src/CheckboxList/CheckboxList.tsx +2 -0
  142. package/src/Citation/Citation.tsx +4 -2
  143. package/src/ClickableCard/ClickableCard.doc.mjs +1 -1
  144. package/src/CodeBlock/CodeBlock.tsx +4 -2
  145. package/src/DateInput/DateInput.doc.mjs +2 -2
  146. package/src/DateInput/DateInput.test.tsx +17 -5
  147. package/src/DateInput/DateInput.tsx +6 -2
  148. package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
  149. package/src/DateRangeInput/DateRangeInput.tsx +6 -2
  150. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -2
  151. package/src/DateTimeInput/DateTimeInput.tsx +7 -3
  152. package/src/Dialog/Dialog.tsx +11 -15
  153. package/src/Dialog/DialogHeader.tsx +3 -1
  154. package/src/Field/Field.doc.mjs +2 -2
  155. package/src/FileInput/FileInput.test.tsx +40 -1
  156. package/src/FileInput/FileInput.tsx +12 -1
  157. package/src/Grid/Grid.doc.mjs +5 -5
  158. package/src/InputGroup/InputGroup.doc.mjs +1 -1
  159. package/src/Lightbox/Lightbox.doc.mjs +7 -2
  160. package/src/Lightbox/Lightbox.tsx +1 -1
  161. package/src/MobileNav/MobileNav.tsx +1 -1
  162. package/src/MultiSelector/MultiSelector.tsx +1 -1
  163. package/src/NumberInput/NumberInput.tsx +3 -1
  164. package/src/OverflowList/OverflowList.doc.mjs +2 -2
  165. package/src/PowerSearch/PowerSearch.doc.mjs +4 -4
  166. package/src/PowerSearch/formatFilterValue.test.ts +282 -0
  167. package/src/RadioList/RadioList.doc.mjs +1 -1
  168. package/src/Section/Section.doc.mjs +4 -4
  169. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  170. package/src/Selector/Selector.doc.mjs +6 -3
  171. package/src/Selector/Selector.test.tsx +102 -4
  172. package/src/Selector/Selector.tsx +58 -12
  173. package/src/SideNav/SideNavCollapseButton.tsx +3 -1
  174. package/src/SideNav/SideNavItem.tsx +3 -1
  175. package/src/Slider/Slider.doc.mjs +2 -2
  176. package/src/Stack/Stack.doc.mjs +10 -10
  177. package/src/Switch/Switch.doc.mjs +2 -2
  178. package/src/Table/BaseTable.tsx +28 -18
  179. package/src/Table/Table.test.tsx +132 -1
  180. package/src/Table/Table.tsx +3 -3
  181. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -1
  182. package/src/Table/plugins/filtering/useTableFiltering.tsx +19 -14
  183. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +6 -4
  184. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +9 -8
  185. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +4 -4
  186. package/src/Table/types.ts +18 -12
  187. package/src/Table/useTableFiltering.doc.mjs +2 -2
  188. package/src/Table/useTableSortable.doc.mjs +11 -11
  189. package/src/Text/Text.doc.mjs +2 -2
  190. package/src/TextInput/TextInput.tsx +3 -1
  191. package/src/Thumbnail/Thumbnail.tsx +4 -2
  192. package/src/TimeInput/TimeInput.doc.mjs +2 -2
  193. package/src/TimeInput/TimeInput.tsx +1 -1
  194. package/src/Timestamp/Timestamp.doc.mjs +4 -4
  195. package/src/Token/Token.tsx +4 -2
  196. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  197. package/src/Toolbar/Toolbar.doc.mjs +1 -1
  198. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  199. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -0
  200. package/src/authoring/doc.ts +166 -0
  201. package/src/authoring/index.test.ts +52 -0
  202. package/src/authoring/index.ts +50 -0
  203. package/src/authoring/integration.ts +42 -0
  204. package/src/authoring/template.ts +74 -0
  205. package/src/config.test.ts +16 -0
  206. package/src/config.ts +92 -0
  207. package/src/docPropLiterals.test.ts +938 -0
  208. package/src/i18n/useTranslator.doc.mjs +4 -0
  209. package/src/utils/color.test.ts +101 -1
  210. package/src/utils/color.ts +23 -1
  211. package/src/utils/index.ts +8 -1
  212. package/dist/NavItem/index.d.ts +0 -9
  213. package/dist/NavItem/index.d.ts.map +0 -1
  214. package/dist/NavItem/index.js +0 -10
  215. package/src/NavItem/index.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/Banner/Banner.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAkB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuB5C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA2JD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAI,EACJ,aAAqB,EACrB,SAAS,EACT,UAAU,EACV,SAAkB,EAClB,iBAAyB,EACzB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,WAAW,sCAkIb;yBAlJe,MAAM"}
1
+ {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/Banner/Banner.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAkB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuB5C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA8JD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAI,EACJ,aAAqB,EACrB,SAAS,EACT,UAAU,EACV,SAAkB,EAClB,iBAAyB,EACzB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,WAAW,sCAkIb;yBAlJe,MAAM"}
@@ -321,15 +321,15 @@ export function Banner({
321
321
  children: [endContent, hasChildren && /*#__PURE__*/_jsx(Button, {
322
322
  variant: "ghost",
323
323
  size: "sm",
324
- label: isExpanded ? 'Collapse' : 'Expand',
325
- tooltip: isExpanded ? 'Collapse' : 'Expand',
324
+ label: isExpanded ? t('@astryx.banner.collapse') : t('@astryx.banner.expand'),
325
+ tooltip: isExpanded ? t('@astryx.banner.collapse') : t('@astryx.banner.expand'),
326
326
  icon: /*#__PURE__*/_jsx("span", {
327
327
  ...{
328
328
  0: {
329
- className: "x3nfvp2 x11xpdln xuedmi6 xlr8y92"
329
+ className: "x3nfvp2 x11xpdln xuedmi6 x12w9bfk xlr8y92"
330
330
  },
331
331
  1: {
332
- className: "x3nfvp2 x11xpdln xuedmi6 xlr8y92 x19jd1h0"
332
+ className: "x3nfvp2 x11xpdln xuedmi6 x12w9bfk xlr8y92 x19jd1h0"
333
333
  }
334
334
  }[!!isExpanded << 0],
335
335
  children: /*#__PURE__*/_jsx(Icon, {
@@ -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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"}
@@ -228,12 +228,42 @@ const loadingStyles = {
228
228
  $$css: true
229
229
  }
230
230
  };
231
+
232
+ /**
233
+ * "I am the last member of the group" — the trailing end cap.
234
+ *
235
+ * NOT `:last-child`: several members render an invisible layer element AFTER
236
+ * their button (a tooltip'd Button returns button + layer; DropdownMenu returns
237
+ * trigger + popover). `useLayer` renders those inline rather than portaling
238
+ * them, so the layer — not the button — took the `:last-child` slot and the real
239
+ * trailing button silently kept square corners (#2508).
240
+ *
241
+ * Layers always carry the native `popover` attribute (useLayer.tsx), and a
242
+ * popover is never an in-flow member — it is `display: none` until shown, then
243
+ * promoted to the top layer. So "last member" is: no following element sibling
244
+ * that isn't a popover.
245
+ *
246
+ * Reading it the other way round — marking the *buttons* and testing for a
247
+ * marked sibling — is the trap: it silently reclassifies anything it doesn't
248
+ * recognise as "not a member", so a member wrapped in a `display: contents`
249
+ * wrapper (Tooltip, HoverCard) or a raw child would make the button BEFORE it
250
+ * round mid-group. Ignoring known layers keeps the predicate conservative: an
251
+ * unrecognised sibling still counts, exactly as `:last-child` did, so the worst
252
+ * case degrades to the old behaviour instead of a wrong corner.
253
+ *
254
+ * Kept as a same-file const: StyleX only statically evaluates a selector key
255
+ * from a const in the same file.
256
+ *
257
+ * The leading edge still uses `:first-child` — a member's button always precedes
258
+ * its own layer, so the first button is genuinely `:first-child`.
259
+ */
260
+ const IS_LAST_ITEM = ':not(:has(~ *:not([popover])))';
231
261
  const groupStyles = {
232
262
  horizontal: {
233
263
  krdFHd: "x15mokao x8eehn2",
234
264
  kVL7Gh: "xbiv7yw x1xrp5p4",
235
- kfmiAY: "x1ga7v0g x11xp8u1",
236
- kT0f0o: "x16uus16 x747jw7",
265
+ kfmiAY: "x1ga7v0g xbfdvlp",
266
+ kT0f0o: "x16uus16 xajhecq",
237
267
  k2ei4v: "xgbv0en x1pjv70x",
238
268
  kVhnKS: "x1t7ytsu xyf0ibl",
239
269
  kGJrpR: "x1j92z86",
@@ -242,8 +272,8 @@ const groupStyles = {
242
272
  vertical: {
243
273
  krdFHd: "x15mokao x8eehn2",
244
274
  kfmiAY: "x1ga7v0g x2qxyot",
245
- kVL7Gh: "xbiv7yw x1yp72r9",
246
- kT0f0o: "x16uus16 x747jw7",
275
+ kVL7Gh: "xbiv7yw x12tyzlf",
276
+ kT0f0o: "x16uus16 xajhecq",
247
277
  kEafiO: "x11xkdxz x1g31smg",
248
278
  kPef9Z: "x13fuv20 x1d9v4yf",
249
279
  kLZC3w: "x1pc3f07",
@@ -4,9 +4,10 @@
4
4
  * @output Exports ButtonGroup component, context, and types
5
5
  * @position Groups buttons with connected styling; consumed by index.ts
6
6
  *
7
- * Children (Button, IconButton) consume the ButtonGroup context to
8
- * apply position-aware styles using CSS :first-child / :last-child
9
- * pseudo-classes — no cloneElement or wrapper divs needed.
7
+ * Children (Button, IconButton) consume the ButtonGroup context to apply
8
+ * position-aware styles in pure CSS — no cloneElement or wrapper divs needed.
9
+ * The end-cap radius rules live in Button.tsx; see IS_LAST_ITEM there for why
10
+ * the trailing edge cannot use :last-child (#2508).
10
11
  *
11
12
  * SYNC: When modified, update these files to stay in sync:
12
13
  * - /packages/core/src/ButtonGroup/ButtonGroup.doc.mjs (props table, features)
@@ -56,7 +57,10 @@ export interface ButtonGroupProps extends BaseProps<HTMLDivElement> {
56
57
  * handling (only on outer edges), and horizontal or vertical orientation.
57
58
  *
58
59
  * Children automatically detect the group via context and apply position-aware
59
- * styles using CSS :first-child / :last-child pseudo-classes.
60
+ * styles in pure CSS.
61
+ *
62
+ * Members that render their own layer — a Button with a `tooltip`, or a
63
+ * DropdownMenu — compose correctly, including as the trailing member.
60
64
  *
61
65
  * @example
62
66
  * ```
@@ -66,8 +70,19 @@ export interface ButtonGroupProps extends BaseProps<HTMLDivElement> {
66
70
  * <Button label="Paste" />
67
71
  * </ButtonGroup>
68
72
  * ```
73
+ *
74
+ * @example
75
+ * ```
76
+ * <ButtonGroup label="Approve action">
77
+ * <Button label="Allow once" variant="primary" />
78
+ * <DropdownMenu
79
+ * button={{label: 'Allow options', variant: 'primary', isIconOnly: true, icon: <Icon icon="chevronDown" />}}
80
+ * items={[{label: 'Allow for 30 minutes'}, {label: 'Always allow'}]}
81
+ * />
82
+ * </ButtonGroup>
83
+ * ```
69
84
  */
70
- export declare function ButtonGroup({ children, label, orientation, size: sizeProp, isDisabled, xstyle, className, style, ref, 'data-testid': testId, ...props }: ButtonGroupProps): ReactNode;
85
+ export declare function ButtonGroup({ children, label, orientation, size: sizeProp, isDisabled, xstyle, className, style, ref, 'data-testid': testId, onKeyDown, ...props }: ButtonGroupProps): ReactNode;
71
86
  export declare namespace ButtonGroup {
72
87
  var displayName: string;
73
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAI1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAOjE,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAErC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAoBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAA0B,EAC1B,IAAI,EAAE,QAAQ,EACd,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,SAAS,CAuC9B;yBAnDe,WAAW"}
1
+ {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAI1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAOjE,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAErC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAA0B,EAC1B,IAAI,EAAE,QAAQ,EACd,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,SAAS,CAuC9B;yBApDe,WAAW"}
@@ -8,9 +8,10 @@
8
8
  * @output Exports ButtonGroup component, context, and types
9
9
  * @position Groups buttons with connected styling; consumed by index.ts
10
10
  *
11
- * Children (Button, IconButton) consume the ButtonGroup context to
12
- * apply position-aware styles using CSS :first-child / :last-child
13
- * pseudo-classes — no cloneElement or wrapper divs needed.
11
+ * Children (Button, IconButton) consume the ButtonGroup context to apply
12
+ * position-aware styles in pure CSS — no cloneElement or wrapper divs needed.
13
+ * The end-cap radius rules live in Button.tsx; see IS_LAST_ITEM there for why
14
+ * the trailing edge cannot use :last-child (#2508).
14
15
  *
15
16
  * SYNC: When modified, update these files to stay in sync:
16
17
  * - /packages/core/src/ButtonGroup/ButtonGroup.doc.mjs (props table, features)
@@ -23,7 +24,7 @@ import { useMemo } from 'react';
23
24
  import * as stylex from '@stylexjs/stylex';
24
25
  import { SizeProvider, useSize } from "../SizeContext/SizeContext.js";
25
26
  import { useListFocus } from "../hooks/useListFocus.js";
26
- import { mergeProps, mergeRefs } from "../utils/index.js";
27
+ import { mergeProps, mergeRefs, composeEventHandlers } from "../utils/index.js";
27
28
  import { ButtonGroupContext } from "./ButtonGroupContext.js";
28
29
  import { themeProps } from "../utils/themeProps.js";
29
30
 
@@ -56,7 +57,10 @@ const styles = {
56
57
  * handling (only on outer edges), and horizontal or vertical orientation.
57
58
  *
58
59
  * Children automatically detect the group via context and apply position-aware
59
- * styles using CSS :first-child / :last-child pseudo-classes.
60
+ * styles in pure CSS.
61
+ *
62
+ * Members that render their own layer — a Button with a `tooltip`, or a
63
+ * DropdownMenu — compose correctly, including as the trailing member.
60
64
  *
61
65
  * @example
62
66
  * ```
@@ -66,6 +70,17 @@ const styles = {
66
70
  * <Button label="Paste" />
67
71
  * </ButtonGroup>
68
72
  * ```
73
+ *
74
+ * @example
75
+ * ```
76
+ * <ButtonGroup label="Approve action">
77
+ * <Button label="Allow once" variant="primary" />
78
+ * <DropdownMenu
79
+ * button={{label: 'Allow options', variant: 'primary', isIconOnly: true, icon: <Icon icon="chevronDown" />}}
80
+ * items={[{label: 'Allow for 30 minutes'}, {label: 'Always allow'}]}
81
+ * />
82
+ * </ButtonGroup>
83
+ * ```
69
84
  */
70
85
  export function ButtonGroup({
71
86
  children,
@@ -78,6 +93,7 @@ export function ButtonGroup({
78
93
  style,
79
94
  ref,
80
95
  'data-testid': testId,
96
+ onKeyDown,
81
97
  ...props
82
98
  }) {
83
99
  const size = useSize(sizeProp, 'md');
@@ -98,16 +114,16 @@ export function ButtonGroup({
98
114
  value: size,
99
115
  children: /*#__PURE__*/_jsx("div", {
100
116
  ref: mergeRefs(ref, listRef),
101
- role: "group",
102
- "aria-label": label,
103
- onKeyDown: handleKeyDown,
104
- "aria-disabled": isDisabled || undefined,
105
- "data-testid": testId,
117
+ ...props,
106
118
  ...mergeProps(themeProps('button-group', {
107
119
  size,
108
120
  orientation
109
121
  }), stylex.props(styles.group, orientation === 'vertical' && styles.vertical, xstyle), className, style),
110
- ...props,
122
+ role: "group",
123
+ "aria-label": label,
124
+ onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),
125
+ "aria-disabled": isDisabled || undefined,
126
+ "data-testid": testId,
111
127
  children: children
112
128
  })
113
129
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8C5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAK5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BA6StD;yBA7Se,QAAQ"}
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8C5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAK5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BAiUtD;yBAjUe,QAAQ"}
@@ -16,15 +16,15 @@
16
16
  * - /apps/storybook/stories/Calendar.stories.tsx (storybook stories)
17
17
  * - /packages/cli/templates/blocks/components/Calendar/ (showcase blocks)
18
18
  */
19
- import { useState, useMemo, useCallback, useEffect, useImperativeHandle } from 'react';
19
+ import { useState, useMemo, useCallback, useEffect, useImperativeHandle, useRef } from 'react';
20
20
  import * as stylex from '@stylexjs/stylex';
21
21
  import { Button } from "../Button/index.js";
22
22
  import { Icon } from "../Icon/index.js";
23
- import { useGridFocus } from "../hooks/index.js";
23
+ import { useAnnounce, useGridFocus } from "../hooks/index.js";
24
24
  import { useCalendarDays, useCalendarConstraints } from "./hooks/index.js";
25
25
  import { calendarStyles, monthGridStyles, dayCellStyles, dayCellTheme } from "./styles.js";
26
26
  import { plainDateFromISO, plainDateToISO, plainDateToDate, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateIsBefore, plainDateIsEqual, plainDateGetWeekNumber, plainDateFormat, DATE_FORMAT_WITH_WEEKDAY, DATE_FORMAT_MONTH_YEAR } from "../utils/plainDate.js";
27
- import { mergeProps } from "../utils/index.js";
27
+ import { mergeProps, composeEventHandlers } from "../utils/index.js";
28
28
  import { computeDayCellState, computeRangeRounding, computePreviewRounding, computeDayNeighborContinuity, isEndpoint } from "./dayCellUtils.js";
29
29
 
30
30
  // =============================================================================
@@ -77,6 +77,7 @@ export function Calendar({
77
77
  xstyle,
78
78
  className,
79
79
  style,
80
+ onKeyDown,
80
81
  ...rest
81
82
  } = props;
82
83
 
@@ -159,6 +160,25 @@ export function Calendar({
159
160
  return visibleMonths.map(m => plainDateFormat(m, DATE_FORMAT_MONTH_YEAR)).join(' – ');
160
161
  }, [visibleMonths, numberOfMonths]);
161
162
 
163
+ // Announce the newly visible month to screen readers whenever it changes.
164
+ // The visible month label (`<span>`) carries no live semantics, so paging the
165
+ // grid — via the header prev/next buttons, keyboard grid paging (arrow keys
166
+ // across a month boundary, PageUp/PageDown), the `navigateTo` handle, or a
167
+ // controlled `focusDate` change — otherwise updates the grid silently. Keying
168
+ // off `monthYearLabel` reuses the existing single-/multi-month formatting and
169
+ // only fires when the visible month actually changes (so selecting a date,
170
+ // which does not move the grid, stays silent). The first-render guard avoids
171
+ // announcing the initial month on mount.
172
+ const announce = useAnnounce();
173
+ const isInitialRenderRef = useRef(true);
174
+ useEffect(() => {
175
+ if (isInitialRenderRef.current) {
176
+ isInitialRenderRef.current = false;
177
+ return;
178
+ }
179
+ announce(monthYearLabel);
180
+ }, [monthYearLabel, announce]);
181
+
162
182
  // Determine if prev/next navigation is possible based on min/max
163
183
  const canNavigatePrevious = useMemo(() => {
164
184
  if (!min) {
@@ -243,11 +263,11 @@ export function Calendar({
243
263
  }, [mode, onChange, rangeSelectionStart]);
244
264
  return /*#__PURE__*/_jsxs("div", {
245
265
  ref: ref,
266
+ ...rest,
246
267
  ...mergeProps(themeProps('calendar', {
247
268
  mode
248
269
  }), stylex.props(calendarStyles.calendar, xstyle), className, style),
249
- onKeyDown: handleCalendarKeyDown,
250
- ...rest,
270
+ onKeyDown: composeEventHandlers(onKeyDown, handleCalendarKeyDown),
251
271
  children: [/*#__PURE__*/_jsxs("div", {
252
272
  ...stylex.props(calendarStyles.header),
253
273
  children: [/*#__PURE__*/_jsx(Button, {
@@ -263,11 +263,11 @@ export function Carousel({
263
263
  return /*#__PURE__*/_jsxs("div", {
264
264
  ref: mergeRefs(ref, layer.ref),
265
265
  "data-testid": testId,
266
+ ...htmlProps,
267
+ ...mergeProps(themeProps('carousel'), stylex.props(styles.root, xstyle), className, style),
266
268
  role: "region",
267
269
  "aria-label": ariaLabel,
268
270
  "aria-roledescription": "carousel",
269
- ...mergeProps(themeProps('carousel'), stylex.props(styles.root, xstyle), className, style),
270
- ...htmlProps,
271
271
  children: [/*#__PURE__*/_jsx("div", {
272
272
  ref: composedRef,
273
273
  tabIndex: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"ChatComposerDrawer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposerDrawer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAYnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,MAAM,WAAW,uBAAwB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACxE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnD;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgID;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,mBAAmB,EAChC,kBAA0B,EAC1B,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,SAAS,EACb,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,CAiF9C;yBA9Fe,kBAAkB"}
1
+ {"version":3,"file":"ChatComposerDrawer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposerDrawer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAYnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,MAAM,WAAW,uBAAwB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACxE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnD;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgID;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,mBAAmB,EAChC,kBAA0B,EAC1B,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,SAAS,EACb,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,CAqF9C;yBAlGe,kBAAkB"}
@@ -100,7 +100,11 @@ export function ChatComposerDrawer({
100
100
  role: "button",
101
101
  tabIndex: 0,
102
102
  "aria-expanded": !isCollapsed,
103
- "aria-label": isCollapsed ? `Expand ${label}` : `Collapse ${label}`,
103
+ "aria-label": isCollapsed ? t('@astryx.chatComposerDrawer.expand', {
104
+ label
105
+ }) : t('@astryx.chatComposerDrawer.collapse', {
106
+ label
107
+ }),
104
108
  onClick: toggle,
105
109
  onKeyDown: e => {
106
110
  if (e.key === 'Enter' || e.key === ' ') {
@@ -63,7 +63,7 @@ export interface ChatLayoutProps extends BaseProps<HTMLDivElement> {
63
63
  */
64
64
  density?: Density;
65
65
  }
66
- export declare function ChatLayout({ children, composer, density, emptyState, scrollButton, scrollRef: externalScrollRef, xstyle, className, style, 'data-testid': testId, ref, }: ChatLayoutProps): import("react").JSX.Element;
66
+ export declare function ChatLayout({ children, composer, density, emptyState, scrollButton, scrollRef: externalScrollRef, xstyle, className, style, 'data-testid': testId, ref, ...rest }: ChatLayoutProps): import("react").JSX.Element;
67
67
  export declare namespace ChatLayout {
68
68
  var displayName: string;
69
69
  }
@@ -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;AAY5C,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,GACJ,EAAE,eAAe,+BAwGjB;yBApHe,UAAU"}
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,+BA0GjB;yBAvHe,UAAU"}
@@ -31,6 +31,7 @@ import { useChatNewMessages } from "./useChatNewMessages.js";
31
31
  import { ChatLayoutScrollButton } from "./ChatLayoutScrollButton.js";
32
32
  import { ChatLayoutContext } from "./ChatContext.js";
33
33
  import { themeProps } from "../utils/themeProps.js";
34
+ import { useTranslator } from "../i18n/index.js";
34
35
 
35
36
  // =============================================================================
36
37
  // Types
@@ -183,8 +184,10 @@ export function ChatLayout({
183
184
  className,
184
185
  style,
185
186
  'data-testid': testId,
186
- ref
187
+ ref,
188
+ ...rest
187
189
  }) {
190
+ const t = useTranslator();
188
191
  const rootRef = useRef(null);
189
192
  const scrollContainerRef = externalScrollRef ?? rootRef;
190
193
  const isSelfScrolling = !externalScrollRef;
@@ -199,7 +202,7 @@ export function ChatLayout({
199
202
  });
200
203
  const defaultScrollButton = /*#__PURE__*/_jsx(ChatLayoutScrollButton, {
201
204
  isVisible: scroll.isScrolledUp || newMsgs.hasNewMessages,
202
- label: newMsgs.hasNewMessages ? 'New messages' : undefined,
205
+ label: newMsgs.hasNewMessages ? t('@astryx.chatLayout.newMessages') : undefined,
203
206
  onClick: () => {
204
207
  newMsgs.dismiss();
205
208
  scroll.scrollToBottom();
@@ -238,6 +241,7 @@ export function ChatLayout({
238
241
  return /*#__PURE__*/_jsx(ChatLayoutContext, {
239
242
  value: layoutContext,
240
243
  children: /*#__PURE__*/_jsxs("div", {
244
+ ...rest,
241
245
  ref: mergeRefs(ref, rootRef),
242
246
  "data-testid": testId,
243
247
  ...mergeProps(themeProps('chat-layout', {
@@ -1 +1 @@
1
- {"version":3,"file":"ChatLayoutScrollButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayoutScrollButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CACvD,SAAS,CAAC,cAAc,CAAC,EACzB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAwDD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACH,SAAS,EACT,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,2BAA2B,qBAyB7B;yBAlCe,sBAAsB"}
1
+ {"version":3,"file":"ChatLayoutScrollButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayoutScrollButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CACvD,SAAS,CAAC,cAAc,CAAC,EACzB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAwDD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACH,SAAS,EACT,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,2BAA2B,qBA0B7B;yBAnCe,sBAAsB"}
@@ -22,6 +22,7 @@ import { colorVars, spacingVars, radiusVars, shadowVars, durationVars, easeVars
22
22
  import { Icon } from "../Icon/index.js";
23
23
  import { Button } from "../Button/index.js";
24
24
  import { mergeProps } from "../utils/index.js";
25
+ import { useTranslator } from "../i18n/index.js";
25
26
 
26
27
  // =============================================================================
27
28
  // Types
@@ -72,6 +73,7 @@ export function ChatLayoutScrollButton({
72
73
  style,
73
74
  ...rest
74
75
  }) {
76
+ const t = useTranslator();
75
77
  return /*#__PURE__*/_jsx("div", {
76
78
  ref: ref,
77
79
  ...mergeProps(stylex.props(styles.wrapper, xstyle), className, style),
@@ -92,8 +94,8 @@ export function ChatLayoutScrollButton({
92
94
  }
93
95
  }[!!isVisible << 1 | !!label << 0],
94
96
  children: /*#__PURE__*/_jsx(Button, {
95
- label: label ?? 'Scroll to bottom',
96
- "aria-label": label ?? 'Scroll to bottom',
97
+ label: label ?? t('@astryx.chatLayoutScrollButton.scrollToBottom'),
98
+ "aria-label": label ?? t('@astryx.chatLayoutScrollButton.scrollToBottom'),
97
99
  icon: /*#__PURE__*/_jsx(Icon, {
98
100
  icon: "chevronDown",
99
101
  size: "md"
@@ -52,7 +52,7 @@ export interface ChatMessageProps extends BaseProps<HTMLElement> {
52
52
  * </ChatMessage>
53
53
  * ```
54
54
  */
55
- export declare function ChatMessage({ sender, children, avatar, name, metadata, density: densityProp, xstyle, className, style: styleProp, 'data-testid': testId, ref, }: ChatMessageProps): import("react").JSX.Element;
55
+ export declare function ChatMessage({ sender, children, avatar, name, metadata, density: densityProp, xstyle, className, style: styleProp, 'data-testid': testId, ref, ...rest }: ChatMessageProps): import("react").JSX.Element;
56
56
  export declare namespace ChatMessage {
57
57
  var displayName: string;
58
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessage.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessage.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAiB,MAAM,OAAO,CAAC;AAQrD,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC9D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAoFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,OAAO,EAAE,WAAW,EACpB,MAAM,EACN,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,gBAAgB,+BAuFlB;yBAnGe,WAAW"}
1
+ {"version":3,"file":"ChatMessage.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessage.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAiB,MAAM,OAAO,CAAC;AAQrD,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC9D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAoFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,OAAO,EAAE,WAAW,EACpB,MAAM,EACN,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,gBAAgB,+BAyFlB;yBAtGe,WAAW"}
@@ -25,6 +25,7 @@ import { colorVars, spacingVars, typeScaleVars, fontWeightVars } from "../theme/
25
25
  import { ChatMessageContext, useChatListContext } from "./ChatContext.js";
26
26
  import { mergeProps } from "../utils/index.js";
27
27
  import { themeProps } from "../utils/themeProps.js";
28
+ import { useTranslator } from "../i18n/index.js";
28
29
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
29
30
  const styles = {
30
31
  root: {
@@ -138,8 +139,10 @@ export function ChatMessage({
138
139
  className,
139
140
  style: styleProp,
140
141
  'data-testid': testId,
141
- ref
142
+ ref,
143
+ ...rest
142
144
  }) {
145
+ const t = useTranslator();
143
146
  const listContext = useChatListContext();
144
147
  const density = densityProp ?? listContext?.density ?? 'balanced';
145
148
  const contextValue = useMemo(() => ({
@@ -158,9 +161,12 @@ export function ChatMessage({
158
161
  return /*#__PURE__*/_jsx(ChatMessageContext, {
159
162
  value: contextValue,
160
163
  children: /*#__PURE__*/_jsxs("article", {
164
+ ...rest,
161
165
  ref: ref,
162
166
  "data-testid": testId,
163
- "aria-label": !hasName ? `Message from ${sender}` : undefined,
167
+ "aria-label": !hasName ? t('@astryx.chatMessage.messageFrom', {
168
+ sender
169
+ }) : undefined,
164
170
  "aria-labelledby": hasName ? nameId : undefined,
165
171
  ...mergeProps(themeProps('chat-message', {
166
172
  sender,
@@ -78,7 +78,7 @@ export interface ChatMessageBubbleProps extends BaseProps<HTMLDivElement> {
78
78
  * </ChatMessage>
79
79
  * ```
80
80
  */
81
- export declare function ChatMessageBubble({ children, variant, name, metadata, group, xstyle, className, style: styleProp, 'data-testid': testId, ref, }: ChatMessageBubbleProps): import("react").JSX.Element;
81
+ export declare function ChatMessageBubble({ children, variant, name, metadata, group, xstyle, className, style: styleProp, 'data-testid': testId, ref, ...rest }: ChatMessageBubbleProps): import("react").JSX.Element;
82
82
  export declare namespace ChatMessageBubble {
83
83
  var displayName: string;
84
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessageBubble.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageBubble.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAWrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACvE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IAEnC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAyGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAkB,EAClB,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,sBAAsB,+BAwFxB;yBAnGe,iBAAiB"}
1
+ {"version":3,"file":"ChatMessageBubble.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageBubble.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAWrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACvE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IAEnC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAyGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAkB,EAClB,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,sBAAsB,+BAyFxB;yBArGe,iBAAiB"}
@@ -175,7 +175,8 @@ export function ChatMessageBubble({
175
175
  className,
176
176
  style: styleProp,
177
177
  'data-testid': testId,
178
- ref
178
+ ref,
179
+ ...rest
179
180
  }) {
180
181
  const msgContext = useChatMessageContext();
181
182
  const sender = msgContext?.sender ?? 'assistant';
@@ -191,6 +192,7 @@ export function ChatMessageBubble({
191
192
  ...stylex.props(metadataPaddingStyle, styles.nameRow, styles.headerReducedGap, isUser && styles.alignEnd),
192
193
  children: name
193
194
  }), /*#__PURE__*/_jsx("div", {
195
+ ...rest,
194
196
  ref: ref,
195
197
  "data-testid": testId,
196
198
  ...mergeProps(themeProps('chat-message-bubble', {
@@ -86,7 +86,7 @@ export interface ChatMessageListProps extends BaseProps<HTMLDivElement> {
86
86
  * </ChatMessageList>
87
87
  * ```
88
88
  */
89
- export declare function ChatMessageList({ children, emptyState, scrollToTopAction, density, gap, isStreaming, xstyle, className, style, 'data-testid': testId, ref, }: ChatMessageListProps): import("react").JSX.Element;
89
+ export declare function ChatMessageList({ children, emptyState, scrollToTopAction, density, gap, isStreaming, xstyle, className, style, 'data-testid': testId, ref, ...rest }: ChatMessageListProps): import("react").JSX.Element;
90
90
  export declare namespace ChatMessageList {
91
91
  var displayName: string;
92
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAGhF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4FD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,OAAoB,EACpB,GAAG,EACH,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,oBAAoB,+BA4FtB;yBAxGe,eAAe"}
1
+ {"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAGhF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4FD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,OAAoB,EACpB,GAAG,EACH,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,oBAAoB,+BA6FtB;yBA1Ge,eAAe"}
@@ -150,7 +150,8 @@ export function ChatMessageList({
150
150
  className,
151
151
  style,
152
152
  'data-testid': testId,
153
- ref
153
+ ref,
154
+ ...rest
154
155
  }) {
155
156
  const layoutContext = useChatLayoutContext();
156
157
  const sentinelRef = useRef(null);
@@ -193,6 +194,7 @@ export function ChatMessageList({
193
194
  return /*#__PURE__*/_jsx(ChatListContext, {
194
195
  value: contextValue,
195
196
  children: /*#__PURE__*/_jsx("div", {
197
+ ...rest,
196
198
  ref: ref,
197
199
  role: "log",
198
200
  "aria-live": "polite",
@@ -1 +1 @@
1
- {"version":3,"file":"ChatSendButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatSendButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAM5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,MAAM,WAAW,mBAAoB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACvE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iCAAiC;IACjC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAmCpE;yBAnCe,cAAc"}
1
+ {"version":3,"file":"ChatSendButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatSendButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAM5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,MAAM,WAAW,mBAAoB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACvE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iCAAiC;IACjC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAoCpE;yBApCe,cAAc"}
@@ -22,6 +22,7 @@ import { Button } from "../Button/index.js";
22
22
  import { getIcon } from "../Icon/globalIconRegistry.js";
23
23
  import { useChatComposerContext } from "./ChatContext.js";
24
24
  import { themeProps } from "../utils/themeProps.js";
25
+ import { useTranslator } from "../i18n/index.js";
25
26
 
26
27
  // =============================================================================
27
28
  // Types
@@ -55,6 +56,7 @@ const styles = {
55
56
  * ```
56
57
  */
57
58
  export function ChatSendButton(props) {
59
+ const t = useTranslator();
58
60
  const context = useChatComposerContext();
59
61
  const {
60
62
  isStopShown = context?.isStopShown ?? false,
@@ -70,7 +72,7 @@ export function ChatSendButton(props) {
70
72
  const handleSend = onSend ?? (() => context?.onSubmit(''));
71
73
  return /*#__PURE__*/_jsx(Button, {
72
74
  ref: ref,
73
- label: isStopShown ? 'Stop' : 'Send',
75
+ label: isStopShown ? t('@astryx.chatSendButton.stop') : t('@astryx.chatSendButton.send'),
74
76
  variant: isStopShown ? 'secondary' : 'primary',
75
77
  size: size,
76
78
  icon: isStopShown ? stopIcon ?? getIcon('stop') : sendIcon ?? getIcon('arrowUp'),
@@ -24,7 +24,7 @@ export type { ChatMessageMetadataProps, ChatMessageStatus, } from './ChatMessage
24
24
  export { ChatSystemMessage } from './ChatSystemMessage';
25
25
  export type { ChatSystemMessageProps, ChatSystemMessageVariant, } from './ChatSystemMessage';
26
26
  export { useChatStreamScroll } from './useChatStreamScroll';
27
- export type { UseChatStreamScrollOptions, UseChatStreamScrollReturn, } from './useChatStreamScroll';
27
+ export type { ChatScrollToBottomOptions, UseChatStreamScrollOptions, UseChatStreamScrollReturn, } from './useChatStreamScroll';
28
28
  export { useChatNewMessages } from './useChatNewMessages';
29
29
  export type { UseChatNewMessagesOptions, UseChatNewMessagesReturn, } from './useChatNewMessages';
30
30
  export { useChatPasteAsToken } from './useChatPasteAsToken';