@astryxdesign/core 0.6.3-canary.01fa439 → 0.6.3-canary.039a67e
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.
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +33 -12
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +13 -28
- package/dist/Chat/ChatLayout.d.ts +19 -0
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +19 -0
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +44 -34
- package/dist/Chat/ChatMessageBubble.d.ts +2 -0
- package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
- package/dist/Chat/ChatMessageBubble.js +5 -3
- package/dist/Chat/ChatMessageList.d.ts +2 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +4 -3
- package/dist/Chat/ChatMessageMetadata.d.ts +5 -4
- package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
- package/dist/Chat/ChatMessageMetadata.js +12 -9
- package/dist/Chat/ChatSendButton.d.ts +2 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +5 -3
- package/dist/Chat/ChatSystemMessage.d.ts +3 -3
- package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
- package/dist/Chat/ChatSystemMessage.js +2 -2
- package/dist/Chat/ChatTokenizedText.d.ts +6 -6
- package/dist/Chat/ChatTokenizedText.js +10 -6
- package/dist/Chat/ChatToolCalls.d.ts +7 -9
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +43 -26
- package/dist/Citation/Citation.d.ts +1 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +3 -2
- package/dist/CodeBlock/highlightRanges.d.ts.map +1 -1
- package/dist/CodeBlock/highlightRanges.js +14 -3
- package/dist/DateInput/DateInput.d.ts +25 -5
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +25 -13
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts +32 -15
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +47 -22
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +4 -4
- package/dist/Icon/Icon.d.ts +6 -31
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +8 -71
- package/dist/Icon/IconDefaultSizeContext.d.ts +4 -0
- package/dist/Icon/IconDefaultSizeContext.d.ts.map +1 -0
- package/dist/Icon/IconDefaultSizeContext.js +18 -0
- package/dist/Icon/IconSize.stylex.d.ts +65 -0
- package/dist/Icon/IconSize.stylex.d.ts.map +1 -0
- package/dist/Icon/IconSize.stylex.js +75 -0
- package/dist/Item/Item.d.ts +1 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -3
- package/dist/Link/useLinkComponent.d.ts +5 -15
- package/dist/Link/useLinkComponent.d.ts.map +1 -1
- package/dist/Link/useLinkComponent.js +34 -51
- package/dist/List/List.d.ts +19 -1
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +9 -2
- package/dist/List/ListContext.d.ts +1 -0
- package/dist/List/ListContext.d.ts.map +1 -1
- package/dist/List/ListContext.js +2 -1
- package/dist/List/ListItem.d.ts +1 -1
- package/dist/List/ListItem.d.ts.map +1 -1
- package/dist/List/ListItem.js +9 -2
- package/dist/Markdown/Markdown.js +2 -2
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +15 -15
- package/dist/Markdown/plugins/index.d.ts +1 -0
- package/dist/Markdown/plugins/index.d.ts.map +1 -1
- package/dist/Markdown/plugins/index.js +2 -1
- package/dist/Markdown/plugins/softBreaks.d.ts +3 -0
- package/dist/Markdown/plugins/softBreaks.d.ts.map +1 -0
- package/dist/Markdown/plugins/softBreaks.js +172 -0
- package/dist/Markdown/url.d.ts +2 -0
- package/dist/Markdown/url.d.ts.map +1 -1
- package/dist/Markdown/url.js +8 -2
- package/dist/MetadataList/MetadataList.js +3 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +5 -0
- package/dist/ScrollableArea/ScrollableArea.d.ts +1 -0
- package/dist/ScrollableArea/ScrollableArea.d.ts.map +1 -1
- package/dist/ScrollableArea/ScrollableArea.js +1 -0
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +1 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +9 -2
- package/dist/TimeInput/TimeInput.d.ts +30 -14
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +57 -9
- package/dist/TimeInput/TouchTimeField.d.ts +11 -0
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -0
- package/dist/TimeInput/TouchTimeField.js +417 -0
- package/dist/TimeInput/index.d.ts +1 -1
- package/dist/TimeInput/index.d.ts.map +1 -1
- package/dist/Timer/Timer.d.ts +49 -0
- package/dist/Timer/Timer.d.ts.map +1 -0
- package/dist/Timer/Timer.js +158 -0
- package/dist/Timer/index.d.ts +9 -0
- package/dist/Timer/index.d.ts.map +1 -0
- package/dist/Timer/index.js +10 -0
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +3 -2
- package/dist/astryx.css +9 -4
- package/dist/hooks/useClickableContainer.d.ts +10 -1
- package/dist/hooks/useClickableContainer.d.ts.map +1 -1
- package/dist/hooks/useClickableContainer.js +15 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/theme/declarationBoundary.d.ts +17 -0
- package/dist/theme/declarationBoundary.d.ts.map +1 -0
- package/dist/theme/declarationBoundary.js +343 -0
- package/dist/theme/defineTheme.d.ts +3 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +4 -1
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +4 -0
- package/dist/theme/generateThemeRules.d.ts +15 -7
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +134 -36
- package/dist/theme/themeAdaptations.d.ts +5 -3
- package/dist/theme/themeAdaptations.d.ts.map +1 -1
- package/dist/theme/themeAdaptations.js +33 -5
- package/dist/utils/inputPresentation.d.ts +55 -0
- package/dist/utils/inputPresentation.d.ts.map +1 -0
- package/dist/utils/inputPresentation.js +108 -0
- package/dist/utils/safeUrl.d.ts +11 -0
- package/dist/utils/safeUrl.d.ts.map +1 -0
- package/dist/utils/safeUrl.js +78 -0
- package/package.json +8 -3
- package/src/Avatar/Avatar.doc.mjs +1 -1
- package/src/Avatar/Avatar.test.tsx +30 -0
- package/src/Avatar/Avatar.tsx +38 -14
- package/src/Button/Button.doc.mjs +5 -5
- package/src/Button/Button.tsx +15 -13
- package/src/Chat/ChatLayout.doc.mjs +12 -4
- package/src/Chat/ChatLayout.spec.md +271 -0
- package/src/Chat/ChatLayout.test.tsx +28 -0
- package/src/Chat/ChatLayout.tsx +19 -0
- package/src/Chat/ChatLayoutScrollButton.spec.md +338 -0
- package/src/Chat/ChatLayoutScrollButton.test.tsx +31 -0
- package/src/Chat/ChatLayoutScrollButton.tsx +31 -14
- package/src/Chat/ChatMessageBubble.doc.mjs +28 -15
- package/src/Chat/ChatMessageBubble.spec.md +263 -0
- package/src/Chat/ChatMessageBubble.test.tsx +93 -0
- package/src/Chat/ChatMessageBubble.tsx +8 -3
- package/src/Chat/ChatMessageList.spec.md +222 -0
- package/src/Chat/ChatMessageList.test.tsx +64 -2
- package/src/Chat/ChatMessageList.tsx +4 -3
- package/src/Chat/ChatMessageMetadata.doc.mjs +57 -3
- package/src/Chat/ChatMessageMetadata.spec.md +220 -0
- package/src/Chat/ChatMessageMetadata.test.tsx +34 -0
- package/src/Chat/ChatMessageMetadata.tsx +13 -13
- package/src/Chat/ChatSendButton.doc.mjs +32 -0
- package/src/Chat/ChatSendButton.spec.md +227 -0
- package/src/Chat/ChatSendButton.test.tsx +127 -4
- package/src/Chat/ChatSendButton.tsx +5 -3
- package/src/Chat/ChatSystemMessage.doc.mjs +115 -12
- package/src/Chat/ChatSystemMessage.spec.md +225 -0
- package/src/Chat/ChatSystemMessage.test.tsx +112 -20
- package/src/Chat/ChatSystemMessage.tsx +4 -6
- package/src/Chat/ChatTokenizedText.doc.mjs +96 -9
- package/src/Chat/ChatTokenizedText.spec.md +190 -0
- package/src/Chat/ChatTokenizedText.test.tsx +60 -1
- package/src/Chat/ChatTokenizedText.tsx +14 -8
- package/src/Chat/ChatToolCalls.doc.mjs +4 -1
- package/src/Chat/ChatToolCalls.spec.md +194 -0
- package/src/Chat/ChatToolCalls.test.tsx +83 -0
- package/src/Chat/ChatToolCalls.tsx +46 -21
- package/src/Chat/__tests__/ChatLayoutScrollButton.a11y.chromium.spec.ts +514 -0
- package/src/Chat/__tests__/ChatLayoutScrollButtonSurface.a11y.chromium.spec.ts +740 -0
- package/src/Chat/__tests__/ChatMessageBubble.a11y.chromium.spec.ts +457 -0
- package/src/Chat/__tests__/ChatMessageBubble.auditProvenance.test.ts +91 -0
- package/src/Chat/__tests__/ChatMessageBubble.auditProvenance.ts +91 -0
- package/src/Chat/__tests__/ChatMessageList.a11y.chromium.spec.ts +456 -0
- package/src/Chat/__tests__/ChatMessageMetadata.a11y.chromium.spec.ts +413 -0
- package/src/Chat/__tests__/ChatSendButton.a11y.chromium.spec.ts +1522 -0
- package/src/Chat/__tests__/ChatSystemMessage.a11y.chromium.spec.ts +1004 -0
- package/src/Chat/__tests__/ChatTokenizedText.a11y.chromium.spec.ts +573 -0
- package/src/Citation/Citation.doc.mjs +2 -2
- package/src/Citation/Citation.test.tsx +17 -0
- package/src/Citation/Citation.tsx +4 -2
- package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
- package/src/CodeBlock/highlightRanges.test.ts +143 -1
- package/src/CodeBlock/highlightRanges.ts +15 -5
- package/src/DateInput/DateInput.doc.mjs +38 -9
- package/src/DateInput/DateInput.tsx +53 -16
- package/src/DateInput/Presentation.test.tsx +121 -0
- package/src/DateInput/index.ts +1 -0
- package/src/DateTimeInput/DateTimeInput.doc.mjs +28 -12
- package/src/DateTimeInput/DateTimeInput.tsx +87 -36
- package/src/DateTimeInput/Presentation.test.tsx +89 -0
- package/src/DateTimeInput/index.ts +1 -0
- package/src/Dialog/Dialog.doc.mjs +2 -0
- package/src/Dialog/DialogHeader.doc.mjs +10 -0
- package/src/Dialog/DialogHeader.test.tsx +70 -3
- package/src/Dialog/DialogHeader.tsx +14 -5
- package/src/Dialog/modules/DialogHeader.spec.md +62 -40
- package/src/DropdownMenu/DropdownMenu.test.tsx +5 -2
- package/src/Icon/Icon.doc.mjs +7 -5
- package/src/Icon/Icon.spec.md +81 -40
- package/src/Icon/Icon.test.tsx +6 -3
- package/src/Icon/Icon.tsx +20 -68
- package/src/Icon/IconDefaultSizeContext.ts +23 -0
- package/src/Icon/IconSize.stylex.ts +70 -0
- package/src/IconButton/IconButton.doc.mjs +3 -3
- package/src/IconButton/IconButton.test.tsx +40 -0
- package/src/Item/Item.doc.mjs +6 -2
- package/src/Item/Item.tsx +9 -3
- package/src/Link/Link.doc.mjs +6 -4
- package/src/Link/LinkProvider.doc.mjs +2 -2
- package/src/Link/__tests__/Link.navigation.a11y.chromium.spec.ts +261 -0
- package/src/Link/useLinkComponent.test.tsx +333 -0
- package/src/Link/useLinkComponent.ts +29 -57
- package/src/List/List.doc.mjs +6 -0
- package/src/List/List.test.tsx +117 -1
- package/src/List/List.tsx +22 -2
- package/src/List/ListContext.tsx +3 -1
- package/src/List/ListItem.doc.mjs +2 -2
- package/src/List/ListItem.source-build.test.mjs +41 -0
- package/src/List/ListItem.tsx +26 -2
- package/src/Markdown/Markdown.doc.mjs +28 -2
- package/src/Markdown/Markdown.public.test.ts +4 -0
- package/src/Markdown/Markdown.renderBoundary.test.tsx +72 -0
- package/src/Markdown/Markdown.spec.md +30 -18
- package/src/Markdown/Markdown.test.tsx +76 -3
- package/src/Markdown/Markdown.tsx +2 -2
- package/src/Markdown/incremental.test.ts +31 -0
- package/src/Markdown/modules/softBreaks.spec.md +137 -0
- package/src/Markdown/parser.test.ts +38 -6
- package/src/Markdown/parser.ts +45 -11
- package/src/Markdown/plugins/index.ts +1 -0
- package/src/Markdown/plugins/softBreaks.test.tsx +172 -0
- package/src/Markdown/plugins/softBreaks.ts +169 -0
- package/src/Markdown/url.ts +9 -3
- package/src/MetadataList/MetadataList.test.tsx +4 -2
- package/src/MetadataList/MetadataList.tsx +3 -3
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +51 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +4 -0
- package/src/ScrollableArea/ScrollableArea.tsx +1 -0
- package/src/SegmentedControl/SegmentedControl.test.tsx +30 -0
- package/src/SegmentedControl/SegmentedControl.tsx +2 -1
- package/src/Selector/Selector.doc.mjs +1 -1
- package/src/Selector/Selector.tsx +11 -1
- package/src/Selector/__tests__/Selector.a11y.chromium.spec.ts +45 -0
- package/src/TimeInput/NativeTimeInput.test.tsx +36 -3
- package/src/TimeInput/Presentation.test.tsx +148 -0
- package/src/TimeInput/TimeInput.doc.mjs +21 -5
- package/src/TimeInput/TimeInput.tsx +96 -10
- package/src/TimeInput/TouchTimeField.tsx +572 -0
- package/src/TimeInput/index.ts +1 -0
- package/src/Timer/Timer.doc.mjs +183 -0
- package/src/Timer/Timer.spec.md +215 -0
- package/src/Timer/Timer.test.tsx +302 -0
- package/src/Timer/Timer.tsx +258 -0
- package/src/Timer/index.ts +11 -0
- package/src/Token/Token.doc.mjs +2 -2
- package/src/TopNav/TopNavMenu.doc.mjs +2 -2
- package/src/TopNav/TopNavMenu.test.tsx +30 -0
- package/src/TopNav/TopNavMenu.tsx +7 -2
- package/src/hooks/useClickableContainer.test.tsx +236 -0
- package/src/hooks/useClickableContainer.ts +20 -4
- package/src/index.ts +3 -0
- package/src/theme/Theme.test.tsx +32 -0
- package/src/theme/declarationBoundary.test.ts +126 -0
- package/src/theme/declarationBoundary.ts +347 -0
- package/src/theme/defineTheme.ts +4 -0
- package/src/theme/derivedVarRegistry.test.ts +7 -0
- package/src/theme/derivedVarRegistry.ts +1 -0
- package/src/theme/generateThemeRules.test.ts +497 -2
- package/src/theme/generateThemeRules.ts +222 -51
- package/src/theme/themeAdaptations.test.ts +211 -1
- package/src/theme/themeAdaptations.ts +50 -4
- package/src/theme/tokenValueCompat.test.ts +4 -1
- package/src/utils/inputPresentation.ts +143 -0
- package/src/utils/safeUrl.test.ts +88 -0
- package/src/utils/safeUrl.ts +85 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/Avatar/Avatar.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAqB3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AA4BrD;;;;;;GAMG;AACH,KAAK,eAAe,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD;;GAEG;AACH,KAAK,iBAAiB,GACpB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgBpD;AASD,eAAO,MAAM,WAAW;;;;;;;;;;EAUtB,CAAC;AA6IH,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAChD;
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/Avatar/Avatar.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAqB3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AA4BrD;;;;;;GAMG;AACH,KAAK,eAAe,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD;;GAEG;AACH,KAAK,iBAAiB,GACpB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgBpD;AASD,eAAO,MAAM,WAAW;;;;;;;;;;EAUtB,CAAC;AA6IH,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAChD;AA6ID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,WAAW,EACX,IAAI,EACJ,IAAW,EACX,KAAgB,EAChB,GAAG,EACH,MAAM,EACN,OAAc,EACd,IAAI,EACJ,EAAE,EACF,MAAM,EACN,GAAG,EACH,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+BAyVb;yBA7We,MAAM"}
|
package/dist/Avatar/Avatar.js
CHANGED
|
@@ -230,23 +230,41 @@ const groupDynamicStyles = {
|
|
|
230
230
|
}]
|
|
231
231
|
};
|
|
232
232
|
/**
|
|
233
|
-
*
|
|
234
|
-
*
|
|
233
|
+
* A character that can stand for a word in initials: a letter, a digit, or an
|
|
234
|
+
* emoji. Punctuation and other symbols, such as `(`, `"` or `-`, cannot.
|
|
235
|
+
*/
|
|
236
|
+
const INITIAL_CHARACTER = /[\p{L}\p{N}\p{Extended_Pictographic}\p{Regional_Indicator}]/u;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* The first character of a word that can stand for it in initials, skipping
|
|
240
|
+
* leading punctuation, or '' when the word has none (a lone `-` or `()`).
|
|
241
|
+
*/
|
|
242
|
+
function initialCharacter(word) {
|
|
243
|
+
const index = word.search(INITIAL_CHARACTER);
|
|
244
|
+
return index === -1 ? '' : firstCharacter(word.slice(index));
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Generates initials from a name string: the first letter, digit or emoji of
|
|
249
|
+
* the first and last words. Words with none of those, such as a lone `-`, are
|
|
250
|
+
* skipped, and leading punctuation within a word is ignored. Returns '' when
|
|
251
|
+
* no word yields an initial.
|
|
235
252
|
* @example
|
|
236
253
|
* ```
|
|
237
|
-
* getInitials('John Doe')
|
|
238
|
-
* getInitials('Alice')
|
|
254
|
+
* getInitials('John Doe') // 'JD'
|
|
255
|
+
* getInitials('Alice') // 'A'
|
|
256
|
+
* getInitials('Northwind Workbench (automation)') // 'NA'
|
|
239
257
|
* ```
|
|
240
258
|
*/
|
|
241
259
|
function getInitials(name) {
|
|
242
|
-
const
|
|
243
|
-
if (
|
|
260
|
+
const initials = name.trim().split(/\s+/).map(initialCharacter).filter(initial => initial !== '');
|
|
261
|
+
if (initials.length === 0) {
|
|
244
262
|
return '';
|
|
245
263
|
}
|
|
246
|
-
if (
|
|
247
|
-
return
|
|
264
|
+
if (initials.length === 1) {
|
|
265
|
+
return initials[0].toUpperCase();
|
|
248
266
|
}
|
|
249
|
-
return (
|
|
267
|
+
return (initials[0] + initials[initials.length - 1]).toUpperCase();
|
|
250
268
|
}
|
|
251
269
|
|
|
252
270
|
/**
|
|
@@ -390,8 +408,11 @@ export function Avatar({
|
|
|
390
408
|
// truthy), leaving an empty plate behind a blank accessible name.
|
|
391
409
|
const meaningfulName = meaningful(name);
|
|
392
410
|
const meaningfulAlt = meaningful(alt);
|
|
393
|
-
|
|
394
|
-
|
|
411
|
+
// A name made only of punctuation ("—", "()") still names the avatar, but
|
|
412
|
+
// yields no initials; it falls back to the default icon, not an empty plate.
|
|
413
|
+
const initials = meaningfulName ? getInitials(meaningfulName) : '';
|
|
414
|
+
const showInitials = !showImage && !showFallbackImage && initials !== '';
|
|
415
|
+
const showIcon = !showImage && !showFallbackImage && initials === '';
|
|
395
416
|
|
|
396
417
|
// A meaningful accessible name comes from `alt`/`name`, composed with the
|
|
397
418
|
// status element's `label` when one is present ("Jane Doe, Online") — the
|
|
@@ -540,7 +561,7 @@ export function Avatar({
|
|
|
540
561
|
...mergeProps(themeProps('avatar-fallback', {
|
|
541
562
|
size: resolvedSize
|
|
542
563
|
}), stylex.props(styles.fallback, dynamicStyles.fontSize(numericSize))),
|
|
543
|
-
children:
|
|
564
|
+
children: initials
|
|
544
565
|
}), showIcon && /*#__PURE__*/_jsx("div", {
|
|
545
566
|
...mergeProps(themeProps('avatar-fallback', {
|
|
546
567
|
size: resolvedSize
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AA0B3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAKrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AA4G9C,QAAA,MAAM,UAAU;;;;;;;;;;EAUd,CAAC;AA2CH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,UAAU,CAAC;AAQjD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,oDAAoD;IACpD,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KACnC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAuJD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,OAAqB,EACrB,IAAI,EAAE,QAAQ,EACd,IAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,eAAuB,EACvB,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,KAAK,EACL,SAAkB,EAClB,QAAQ,EACR,UAAU,EACV,OAAO,EACP,IAAI,EACJ,EAAE,EACF,MAAM,EACN,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,SAAS,CA8PzB;yBAvRe,MAAM"}
|
package/dist/Button/Button.js
CHANGED
|
@@ -24,6 +24,8 @@ import "../theme/tokens.stylex.js";
|
|
|
24
24
|
import { colorVars, sizeVars, spacingVars, radiusVars, borderVars, durationVars, easeVars, fontWeightVars, typeScaleVars, shadowVars, focusVars } from "../theme/tokens.stylex.js";
|
|
25
25
|
import { Spinner } from "../Spinner/index.js";
|
|
26
26
|
import { VisuallyHidden } from "../VisuallyHidden/index.js";
|
|
27
|
+
import { IconDefaultSizeProvider } from "../Icon/IconDefaultSizeContext.js";
|
|
28
|
+
import { iconBoxSizeStyles } from "../Icon/IconSize.stylex.js";
|
|
27
29
|
import { EDGE_COMP_ATTR } from "../Layout/edgeCompensation.stylex.js";
|
|
28
30
|
import { useSize } from "../SizeContext/SizeContext.js";
|
|
29
31
|
import { useButtonGroup } from "../ButtonGroup/ButtonGroupContext.js";
|
|
@@ -132,32 +134,6 @@ const sizeStyles = {
|
|
|
132
134
|
}
|
|
133
135
|
};
|
|
134
136
|
|
|
135
|
-
/**
|
|
136
|
-
* Icon size per button size.
|
|
137
|
-
* Matches Icon sizing: sm/md=16px, lg=20px.
|
|
138
|
-
* fontSize is set so emoji and text-based icons scale correctly.
|
|
139
|
-
*/
|
|
140
|
-
const iconSizeStyles = {
|
|
141
|
-
sm: {
|
|
142
|
-
kzqmXN: "x1kky2od",
|
|
143
|
-
kZKoxP: "xlup9mm",
|
|
144
|
-
kGuDYH: "x1j61zf2",
|
|
145
|
-
$$css: true
|
|
146
|
-
},
|
|
147
|
-
md: {
|
|
148
|
-
kzqmXN: "x1kky2od",
|
|
149
|
-
kZKoxP: "xlup9mm",
|
|
150
|
-
kGuDYH: "x1j61zf2",
|
|
151
|
-
$$css: true
|
|
152
|
-
},
|
|
153
|
-
lg: {
|
|
154
|
-
kzqmXN: "xw4jnvo",
|
|
155
|
-
kZKoxP: "x1qx5ct2",
|
|
156
|
-
kGuDYH: "xwsyq91",
|
|
157
|
-
$$css: true
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
|
|
161
137
|
/**
|
|
162
138
|
* Resting elevation for floating buttons (e.g. a FAB). `none` is the default
|
|
163
139
|
* flat button; `low`/`med`/`high` map to the shadow token scale. 'none' stays
|
|
@@ -221,6 +197,11 @@ const variants = {
|
|
|
221
197
|
* Button size type derived from the sizeStyles StyleX object
|
|
222
198
|
*/
|
|
223
199
|
|
|
200
|
+
const iconSizeByButtonSize = {
|
|
201
|
+
sm: 'sm',
|
|
202
|
+
md: 'sm',
|
|
203
|
+
lg: 'md'
|
|
204
|
+
};
|
|
224
205
|
const spinnerReveal = "x18re5ia-B";
|
|
225
206
|
const contentHide = "x188b6p3-B";
|
|
226
207
|
|
|
@@ -457,6 +438,7 @@ export function Button({
|
|
|
457
438
|
size,
|
|
458
439
|
elevation: buttonGroup ? 'none' : elevation
|
|
459
440
|
}), sharedStylexProps, className, style);
|
|
441
|
+
const iconSize = iconSizeByButtonSize[size];
|
|
460
442
|
const buttonContent = /*#__PURE__*/_jsxs(_Fragment, {
|
|
461
443
|
children: [isLoadingState && /*#__PURE__*/_jsx("span", {
|
|
462
444
|
...{
|
|
@@ -476,8 +458,11 @@ export function Button({
|
|
|
476
458
|
...stylex.props(styles.contentWrapper, isLoadingState && (delaySpinner ? loadingStyles.hiddenContentDelayed : loadingStyles.hiddenContent)),
|
|
477
459
|
"aria-hidden": isLoadingState || undefined,
|
|
478
460
|
children: [icon && /*#__PURE__*/_jsx("span", {
|
|
479
|
-
...stylex.props(styles.iconWrapper,
|
|
480
|
-
children:
|
|
461
|
+
...stylex.props(styles.iconWrapper, iconBoxSizeStyles[iconSize]),
|
|
462
|
+
children: /*#__PURE__*/_jsx(IconDefaultSizeProvider, {
|
|
463
|
+
value: iconSize,
|
|
464
|
+
children: icon
|
|
465
|
+
})
|
|
481
466
|
}), isIconOnly ? null : /*#__PURE__*/_jsx("span", {
|
|
482
467
|
...{
|
|
483
468
|
className: "xb3r6kr xlyipyv xeuugli"
|
|
@@ -70,6 +70,25 @@ export interface ChatLayoutProps extends BaseProps<HTMLDivElement> {
|
|
|
70
70
|
*/
|
|
71
71
|
density?: Density;
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Layout shell for a full chat interface: messages in page flow, composer
|
|
75
|
+
* docked to the bottom behind a frosted glass layer, with auto-scroll and a
|
|
76
|
+
* scroll-to-bottom button wired in.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```
|
|
80
|
+
* <ChatLayout
|
|
81
|
+
* density="spacious"
|
|
82
|
+
* composer={<ChatComposer onSubmit={send} />}
|
|
83
|
+
* emptyState={<EmptyState title="No messages yet" />}>
|
|
84
|
+
* <ChatMessageList>
|
|
85
|
+
* <ChatMessage sender="assistant">
|
|
86
|
+
* <ChatMessageBubble>How can I help?</ChatMessageBubble>
|
|
87
|
+
* </ChatMessage>
|
|
88
|
+
* </ChatMessageList>
|
|
89
|
+
* </ChatLayout>
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
73
92
|
export declare function ChatLayout({ children, composer, density, emptyState, scrollButton, scrollRef: externalScrollRef, xstyle, className, style, 'data-testid': testId, ref, ...rest }: ChatLayoutProps): import("react").JSX.Element;
|
|
74
93
|
export declare namespace ChatLayout {
|
|
75
94
|
var displayName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatLayout.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayout.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAkB,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAEhC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEhD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4KD,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,OAAoB,EACpB,UAAU,EACV,YAAY,EACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,eAAe,+BA4GjB;yBAzHe,UAAU"}
|
|
1
|
+
{"version":3,"file":"ChatLayout.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayout.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAkB,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAEhC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEhD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4KD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,OAAoB,EACpB,UAAU,EACV,YAAY,EACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,eAAe,+BA4GjB;yBAzHe,UAAU"}
|
package/dist/Chat/ChatLayout.js
CHANGED
|
@@ -184,6 +184,25 @@ function hasVisibleContent(children) {
|
|
|
184
184
|
// Component
|
|
185
185
|
// =============================================================================
|
|
186
186
|
|
|
187
|
+
/**
|
|
188
|
+
* Layout shell for a full chat interface: messages in page flow, composer
|
|
189
|
+
* docked to the bottom behind a frosted glass layer, with auto-scroll and a
|
|
190
|
+
* scroll-to-bottom button wired in.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```
|
|
194
|
+
* <ChatLayout
|
|
195
|
+
* density="spacious"
|
|
196
|
+
* composer={<ChatComposer onSubmit={send} />}
|
|
197
|
+
* emptyState={<EmptyState title="No messages yet" />}>
|
|
198
|
+
* <ChatMessageList>
|
|
199
|
+
* <ChatMessage sender="assistant">
|
|
200
|
+
* <ChatMessageBubble>How can I help?</ChatMessageBubble>
|
|
201
|
+
* </ChatMessage>
|
|
202
|
+
* </ChatMessageList>
|
|
203
|
+
* </ChatLayout>
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
187
206
|
export function ChatLayout({
|
|
188
207
|
children,
|
|
189
208
|
composer,
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"ChatLayoutScrollButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatLayoutScrollButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,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;AAsED;;;;;;;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,qBAuC7B;yBAhDe,sBAAsB"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import React from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
20
20
|
import "../theme/tokens.stylex.js";
|
|
21
|
-
import { colorVars, spacingVars, radiusVars, shadowVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
|
|
21
|
+
import { colorVars, spacingVars, radiusVars, shadowVars, sizeVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
|
|
22
22
|
import { Icon } from "../Icon/index.js";
|
|
23
23
|
import { Button } from "../Button/index.js";
|
|
24
24
|
import { mergeProps } from "../utils/index.js";
|
|
@@ -75,40 +75,50 @@ export function ChatLayoutScrollButton({
|
|
|
75
75
|
...rest
|
|
76
76
|
}) {
|
|
77
77
|
const t = useTranslator();
|
|
78
|
-
return
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
78
|
+
return (
|
|
79
|
+
/*#__PURE__*/
|
|
80
|
+
// Two elements, two responsibilities. The outer one centres the pill and
|
|
81
|
+
// holds the gap above the composer — spacing outside the pill's border
|
|
82
|
+
// box, which the pill cannot own itself. The inner one is the pill: it is
|
|
83
|
+
// what a reader sees, so it carries the painted surface AND the public
|
|
84
|
+
// theming target. Keeping the target on the outer element would satisfy
|
|
85
|
+
// every automated check while leaving a theme styling an invisible
|
|
86
|
+
// full-width row (architecture:component-theming-surface INV4).
|
|
87
|
+
_jsx("div", {
|
|
88
|
+
ref: ref,
|
|
89
|
+
...mergeProps(stylex.props(styles.wrapper, xstyle), className, style),
|
|
90
|
+
...rest,
|
|
91
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
92
|
+
...mergeProps(themeProps('chat-layout-scroll-button'), {
|
|
93
|
+
0: {
|
|
94
|
+
className: "xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x1ueg155 xrgg2z9 xlr8y92 x2rcmwa x12w9bfk xg01cxk x47corl xlshs6z x1jys5uj"
|
|
95
|
+
},
|
|
96
|
+
2: {
|
|
97
|
+
className: "xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x1ueg155 xrgg2z9 xlr8y92 x2rcmwa x12w9bfk x1hc1fzr x67bb7w xnpuxes x1jys5uj"
|
|
98
|
+
},
|
|
99
|
+
1: {
|
|
100
|
+
className: "xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x1ueg155 xrgg2z9 xlr8y92 x2rcmwa x12w9bfk xg01cxk x47corl xlshs6z x1ncir08"
|
|
101
|
+
},
|
|
102
|
+
3: {
|
|
103
|
+
className: "xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x1ueg155 xrgg2z9 xlr8y92 x2rcmwa x12w9bfk x1hc1fzr x67bb7w xnpuxes x1ncir08"
|
|
104
|
+
}
|
|
105
|
+
}[!!isVisible << 1 | !!label << 0]),
|
|
106
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
107
|
+
label: label ?? t('@astryx.chatLayoutScrollButton.scrollToBottom'),
|
|
108
|
+
"aria-label": label ?? t('@astryx.chatLayoutScrollButton.scrollToBottom'),
|
|
109
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
|
110
|
+
icon: "chevronDown",
|
|
111
|
+
size: "md"
|
|
112
|
+
}),
|
|
113
|
+
variant: "ghost",
|
|
114
|
+
size: "md",
|
|
115
|
+
isIconOnly: !label,
|
|
116
|
+
onClick: onClick,
|
|
117
|
+
xstyle: [styles.button, label ? styles.buttonWithLabel : null],
|
|
118
|
+
children: label ?? undefined
|
|
119
|
+
})
|
|
110
120
|
})
|
|
111
121
|
})
|
|
112
|
-
|
|
122
|
+
);
|
|
113
123
|
}
|
|
114
124
|
ChatLayoutScrollButton.displayName = 'ChatLayoutScrollButton';
|
|
@@ -43,6 +43,7 @@ export interface ChatMessageBubbleProps extends BaseProps<HTMLDivElement> {
|
|
|
43
43
|
variant?: ChatMessageBubbleVariant;
|
|
44
44
|
/**
|
|
45
45
|
* Sender name rendered above the bubble, aligned with bubble text padding.
|
|
46
|
+
* Non-rendering scalar values omit the aligned wrapper; numeric zero remains.
|
|
46
47
|
* Use when the first content in a message is a bubble.
|
|
47
48
|
* If the first content is raw (no bubble), use ChatMessage's `name`
|
|
48
49
|
* prop instead.
|
|
@@ -50,6 +51,7 @@ export interface ChatMessageBubbleProps extends BaseProps<HTMLDivElement> {
|
|
|
50
51
|
name?: ReactNode;
|
|
51
52
|
/**
|
|
52
53
|
* Metadata content rendered below the bubble, aligned with bubble text padding.
|
|
54
|
+
* Non-rendering scalar values omit the aligned wrapper; numeric zero remains.
|
|
53
55
|
* Use when the last content in a message is a bubble.
|
|
54
56
|
* If the last content is raw (no bubble), use ChatMessage's `metadata`
|
|
55
57
|
* prop instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessageBubble.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageBubble.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAWrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAC9C,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
|
|
1
|
+
{"version":3,"file":"ChatMessageBubble.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageBubble.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAWrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAC9C,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;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEpC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAwHD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAkB,EAClB,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,sBAAsB,+BA6FxB;yBA1Ge,iBAAiB"}
|
|
@@ -31,7 +31,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
31
31
|
import "../theme/tokens.stylex.js";
|
|
32
32
|
import { colorVars, spacingVars, radiusVars, typeScaleVars, typographyVars } from "../theme/tokens.stylex.js";
|
|
33
33
|
import { useChatMessageContext } from "./ChatContext.js";
|
|
34
|
-
import { mergeProps } from "../utils/index.js";
|
|
34
|
+
import { isRenderable, mergeProps } from "../utils/index.js";
|
|
35
35
|
import { themeProps } from "../utils/themeProps.js";
|
|
36
36
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
37
37
|
// =============================================================================
|
|
@@ -204,8 +204,10 @@ export function ChatMessageBubble({
|
|
|
204
204
|
const senderStyle = variant === 'ghost' ? styles.ghost : isUser ? styles.user : styles.assistant;
|
|
205
205
|
const groupStyle = group === 'first' ? isUser ? styles.groupFirstUser : styles.groupFirstAssistant : group === 'middle' ? isUser ? styles.groupMiddleUser : styles.groupMiddleAssistant : group === 'last' ? isUser ? styles.groupLastUser : styles.groupLastAssistant : null;
|
|
206
206
|
const metadataPaddingStyle = density === 'compact' ? styles.metadataPaddingCompact : density === 'spacious' ? styles.metadataPaddingSpacious : styles.metadataPaddingBalanced;
|
|
207
|
+
const hasName = isRenderable(name);
|
|
208
|
+
const hasMetadata = isRenderable(metadata);
|
|
207
209
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
208
|
-
children: [
|
|
210
|
+
children: [hasName && /*#__PURE__*/_jsx("div", {
|
|
209
211
|
"data-chat-name": true,
|
|
210
212
|
...stylex.props(metadataPaddingStyle, styles.nameRow, styles.headerReducedGap, isUser && styles.alignEnd),
|
|
211
213
|
children: name
|
|
@@ -219,7 +221,7 @@ export function ChatMessageBubble({
|
|
|
219
221
|
density
|
|
220
222
|
}), stylex.props(styles.content, density === 'compact' && styles.radiusCompact, senderStyle, paddingStyle, variant === 'ghost' && styles.paddingBlockNone, groupStyle, width != null && dynamicStyles.sizing(width), xstyle), className, styleProp),
|
|
221
223
|
children: children
|
|
222
|
-
}),
|
|
224
|
+
}), hasMetadata && /*#__PURE__*/_jsx("div", {
|
|
223
225
|
...stylex.props(metadataPaddingStyle, styles.metadataReducedGap, isUser && styles.alignEnd),
|
|
224
226
|
children: metadata
|
|
225
227
|
})]
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file ChatMessageList.tsx
|
|
3
|
-
* @input Uses React, StyleX, ChatListContext, theme tokens, spacing step utilities
|
|
3
|
+
* @input Uses React, StyleX, ChatListContext, theme tokens, spacing step utilities,
|
|
4
|
+
* and isRenderable to preserve accepted empty-state content
|
|
4
5
|
* @output Exports ChatMessageList component and ChatMessageListProps
|
|
5
6
|
* @position Presentational message container — holds ChatMessage children
|
|
6
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;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;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4FD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,OAAoB,EACpB,GAAG,EACH,KAAgB,EAChB,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,oBAAoB,+BAgGtB;yBA9Ge,eAAe"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file ChatMessageList.tsx
|
|
7
|
-
* @input Uses React, StyleX, ChatListContext, theme tokens, spacing step utilities
|
|
7
|
+
* @input Uses React, StyleX, ChatListContext, theme tokens, spacing step utilities,
|
|
8
|
+
* and isRenderable to preserve accepted empty-state content
|
|
8
9
|
* @output Exports ChatMessageList component and ChatMessageListProps
|
|
9
10
|
* @position Presentational message container — holds ChatMessage children
|
|
10
11
|
*
|
|
@@ -27,7 +28,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
27
28
|
import "../theme/tokens.stylex.js";
|
|
28
29
|
import { spacingVars } from "../theme/tokens.stylex.js";
|
|
29
30
|
import { ChatListContext, useChatLayoutContext } from "./ChatContext.js";
|
|
30
|
-
import { mergeProps } from "../utils/index.js";
|
|
31
|
+
import { isRenderable, mergeProps } from "../utils/index.js";
|
|
31
32
|
import { Spinner } from "../Spinner/index.js";
|
|
32
33
|
import { themeProps } from "../utils/themeProps.js";
|
|
33
34
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -225,7 +226,7 @@ export function ChatMessageList({
|
|
|
225
226
|
className: "x98rzlu x2lwn1j"
|
|
226
227
|
},
|
|
227
228
|
"aria-hidden": true
|
|
228
|
-
}), hasChildren ? children : emptyState ? /*#__PURE__*/_jsx("div", {
|
|
229
|
+
}), hasChildren ? children : isRenderable(emptyState) ? /*#__PURE__*/_jsx("div", {
|
|
229
230
|
...{
|
|
230
231
|
className: "x78zum5 x6s0dn4 xl56j7k x98rzlu x2lwn1j"
|
|
231
232
|
},
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file ChatMessageMetadata.tsx
|
|
3
|
-
* @input Uses React, StyleX, ChatContext, Icon, theme tokens
|
|
3
|
+
* @input Uses React, StyleX, ChatContext, Icon, theme tokens, and isRenderable
|
|
4
4
|
* @output Exports ChatMessageMetadata component
|
|
5
5
|
* @position Shared metadata row used by composing inside ChatMessage
|
|
6
6
|
*
|
|
7
|
-
* Renders
|
|
8
|
-
* Direction reverses for user sender.
|
|
7
|
+
* Renders timestamp, footer, and status values with separators determined by
|
|
8
|
+
* scalar presence. Direction reverses for user sender.
|
|
9
9
|
*/
|
|
10
10
|
import React, { type ReactNode } from 'react';
|
|
11
11
|
import type { BaseProps } from '../BaseProps';
|
|
@@ -23,7 +23,8 @@ export interface ChatMessageMetadataProps extends BaseProps<HTMLDivElement> {
|
|
|
23
23
|
* Composable metadata row for chat messages.
|
|
24
24
|
*
|
|
25
25
|
* Renders: timestamp · footer · status
|
|
26
|
-
* Renders nothing
|
|
26
|
+
* Renders nothing when neither slot passes the scalar-presence check and no
|
|
27
|
+
* status is set. Composite React nodes remain caller-owned.
|
|
27
28
|
*
|
|
28
29
|
* @example
|
|
29
30
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessageMetadata.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageMetadata.tsx"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAY5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,MAAM,MAAM,iBAAiB,GAC3B,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAsDtD,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACzE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uDAAuD;IACvD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED
|
|
1
|
+
{"version":3,"file":"ChatMessageMetadata.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageMetadata.tsx"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAY5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,MAAM,MAAM,iBAAiB,GAC3B,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAsDtD,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACzE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uDAAuD;IACvD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,wBAAwB,4BAkD1B;yBA3De,mBAAmB"}
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file ChatMessageMetadata.tsx
|
|
7
|
-
* @input Uses React, StyleX, ChatContext, Icon, theme tokens
|
|
7
|
+
* @input Uses React, StyleX, ChatContext, Icon, theme tokens, and isRenderable
|
|
8
8
|
* @output Exports ChatMessageMetadata component
|
|
9
9
|
* @position Shared metadata row used by composing inside ChatMessage
|
|
10
10
|
*
|
|
11
|
-
* Renders
|
|
12
|
-
* Direction reverses for user sender.
|
|
11
|
+
* Renders timestamp, footer, and status values with separators determined by
|
|
12
|
+
* scalar presence. Direction reverses for user sender.
|
|
13
13
|
*/
|
|
14
14
|
import React from 'react';
|
|
15
15
|
import * as stylex from '@stylexjs/stylex';
|
|
@@ -17,7 +17,7 @@ import "../theme/tokens.stylex.js";
|
|
|
17
17
|
import { colorVars, spacingVars, typeScaleVars, fontWeightVars } from "../theme/tokens.stylex.js";
|
|
18
18
|
import { useChatMessageContext } from "./ChatContext.js";
|
|
19
19
|
import { Icon } from "../Icon/index.js";
|
|
20
|
-
import { mergeProps } from "../utils/index.js";
|
|
20
|
+
import { isRenderable, mergeProps } from "../utils/index.js";
|
|
21
21
|
import { themeProps } from "../utils/themeProps.js";
|
|
22
22
|
import { useTranslator } from "../i18n/index.js";
|
|
23
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -69,7 +69,8 @@ const styles = {
|
|
|
69
69
|
* Composable metadata row for chat messages.
|
|
70
70
|
*
|
|
71
71
|
* Renders: timestamp · footer · status
|
|
72
|
-
* Renders nothing
|
|
72
|
+
* Renders nothing when neither slot passes the scalar-presence check and no
|
|
73
|
+
* status is set. Composite React nodes remain caller-owned.
|
|
73
74
|
*
|
|
74
75
|
* @example
|
|
75
76
|
* ```
|
|
@@ -94,7 +95,9 @@ export function ChatMessageMetadata({
|
|
|
94
95
|
const sender = msgContext?.sender ?? 'assistant';
|
|
95
96
|
const statusConfig = status != null ? STATUS_CONFIG[status] : null;
|
|
96
97
|
const statusLabel = statusConfig != null ? t(statusConfig.i18nKey) : '';
|
|
97
|
-
const
|
|
98
|
+
const hasTimestamp = isRenderable(timestamp);
|
|
99
|
+
const hasFooter = isRenderable(footer);
|
|
100
|
+
const hasContent = hasTimestamp || hasFooter || statusConfig != null;
|
|
98
101
|
if (!hasContent) {
|
|
99
102
|
return null;
|
|
100
103
|
}
|
|
@@ -102,11 +105,11 @@ export function ChatMessageMetadata({
|
|
|
102
105
|
ref: ref,
|
|
103
106
|
...mergeProps(themeProps('chat-message-metadata'), stylex.props(styles.meta, sender === 'user' ? styles.metaUser : styles.metaAssistant, xstyle), className, style),
|
|
104
107
|
...rest,
|
|
105
|
-
children: [
|
|
108
|
+
children: [hasTimestamp && /*#__PURE__*/_jsx("span", {
|
|
106
109
|
children: timestamp
|
|
107
|
-
}),
|
|
110
|
+
}), hasTimestamp && (hasFooter || statusConfig != null) && /*#__PURE__*/_jsx("span", {
|
|
108
111
|
children: "\xB7"
|
|
109
|
-
}),
|
|
112
|
+
}), hasFooter && footer, hasFooter && statusConfig != null && /*#__PURE__*/_jsx("span", {
|
|
110
113
|
children: "\xB7"
|
|
111
114
|
}), statusConfig != null && /*#__PURE__*/_jsxs("span", {
|
|
112
115
|
title: statusLabel,
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Reads composer state from ChatComposerContext by default so it "just
|
|
8
8
|
* works" inside ChatComposer. All context-derived values can be
|
|
9
|
-
* overridden via props for standalone usage.
|
|
9
|
+
* overridden via props for standalone usage. Accepted `onClick` handlers
|
|
10
|
+
* compose after the selected send or stop action.
|
|
10
11
|
*
|
|
11
12
|
* States:
|
|
12
13
|
* - **Send** — accent/primary, arrowUp icon, disabled when nothing to send.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatSendButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatSendButton.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"ChatSendButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatSendButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAM5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,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,CA+CpE;yBA/Ce,cAAc"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Reads composer state from ChatComposerContext by default so it "just
|
|
12
12
|
* works" inside ChatComposer. All context-derived values can be
|
|
13
|
-
* overridden via props for standalone usage.
|
|
13
|
+
* overridden via props for standalone usage. Accepted `onClick` handlers
|
|
14
|
+
* compose after the selected send or stop action.
|
|
14
15
|
*
|
|
15
16
|
* States:
|
|
16
17
|
* - **Send** — accent/primary, arrowUp icon, disabled when nothing to send.
|
|
@@ -21,7 +22,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
21
22
|
import { Button } from "../Button/index.js";
|
|
22
23
|
import { useIcon } from "../Icon/index.js";
|
|
23
24
|
import { useChatComposerContext } from "./ChatContext.js";
|
|
24
|
-
import { mergeProps } from "../utils/index.js";
|
|
25
|
+
import { composeEventHandlers, mergeProps } from "../utils/index.js";
|
|
25
26
|
import { themeProps } from "../utils/themeProps.js";
|
|
26
27
|
import { useTranslator } from "../i18n/index.js";
|
|
27
28
|
|
|
@@ -64,6 +65,7 @@ export function ChatSendButton(props) {
|
|
|
64
65
|
isDisabled = !(context?.canSend ?? false),
|
|
65
66
|
onSend,
|
|
66
67
|
onStop = context?.onStop,
|
|
68
|
+
onClick,
|
|
67
69
|
sendIcon,
|
|
68
70
|
stopIcon,
|
|
69
71
|
size = 'md',
|
|
@@ -84,7 +86,7 @@ export function ChatSendButton(props) {
|
|
|
84
86
|
icon: isStopShown ? stopIcon ?? defaultStopIcon : sendIcon ?? defaultSendIcon,
|
|
85
87
|
isIconOnly: true,
|
|
86
88
|
isDisabled: !isStopShown && isDisabled,
|
|
87
|
-
onClick: isStopShown ? onStop : handleSend,
|
|
89
|
+
onClick: composeEventHandlers(isStopShown ? onStop : handleSend, onClick),
|
|
88
90
|
...rest,
|
|
89
91
|
...mergeProps(themeProps('chat-send-button'), {
|
|
90
92
|
className
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @file ChatSystemMessage.tsx
|
|
3
3
|
* @input Uses React, StyleX, theme tokens
|
|
4
4
|
* @output Exports ChatSystemMessage component and ChatSystemMessageProps
|
|
5
|
-
* @position Centered system/notice message in a chat thread
|
|
5
|
+
* @position Centered, wrapping system/notice message in a chat thread
|
|
6
6
|
*
|
|
7
7
|
* Renders centered, muted system messages like "conversation started",
|
|
8
8
|
* date separators, or status updates. Not a sender message — no avatar,
|
|
@@ -32,8 +32,8 @@ export interface ChatSystemMessageProps extends BaseProps<HTMLDivElement> {
|
|
|
32
32
|
*/
|
|
33
33
|
variant?: ChatSystemMessageVariant;
|
|
34
34
|
/**
|
|
35
|
-
* Optional icon
|
|
36
|
-
* Accepts any ReactNode
|
|
35
|
+
* Optional caller-provided icon content associated with the message.
|
|
36
|
+
* Accepts any ReactNode, typically an Icon.
|
|
37
37
|
*/
|
|
38
38
|
icon?: ReactNode;
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatSystemMessage.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatSystemMessage.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAWrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,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;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"ChatSystemMessage.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatSystemMessage.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAWrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,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;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAwCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAmB,EACnB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,sBAAsB,+BAmCxB;yBA5Ce,iBAAiB"}
|