@astryxdesign/core 0.6.2-canary.a4bcbeb → 0.6.2-canary.a7f992d
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/BottomSheet/BottomSheet.d.ts +1 -1
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +3 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts +7 -5
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +56 -19
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +10 -5
- package/dist/Chat/ChatComposerDrawer.d.ts +7 -1
- package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
- package/dist/Chat/ChatComposerDrawer.js +29 -9
- package/dist/Chat/ChatComposerInput.d.ts +11 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +63 -16
- package/dist/Chat/ChatDictationButton.d.ts +3 -2
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +6 -4
- package/dist/Chat/ChatSendButton.js +1 -1
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +12 -2
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +6 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +1 -1
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +4 -4
- package/dist/DateInput/NativeDateField.d.ts.map +1 -1
- package/dist/DateInput/NativeDateField.js +16 -16
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +2 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +4 -4
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +8 -8
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +4 -4
- package/dist/DateTimeInput/nativePickerSegmentStyles.d.ts +9 -3
- package/dist/DateTimeInput/nativePickerSegmentStyles.d.ts.map +1 -1
- package/dist/DateTimeInput/nativePickerSegmentStyles.js +3 -3
- package/dist/Field/InputClearButton.d.ts +4 -2
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +4 -2
- package/dist/Field/PanelSearchInput.d.ts.map +1 -1
- package/dist/Field/PanelSearchInput.js +1 -1
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +7 -7
- package/dist/Kbd/Kbd.d.ts +5 -3
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +36 -42
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +6 -2
- package/dist/Markdown/Markdown.d.ts +8 -2
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.fr23.bench.d.ts +2 -0
- package/dist/Markdown/Markdown.fr23.bench.d.ts.map +1 -0
- package/dist/Markdown/Markdown.fr23.bench.js +150 -0
- package/dist/Markdown/Markdown.fr23.sampling.d.ts +2 -0
- package/dist/Markdown/Markdown.fr23.sampling.d.ts.map +1 -0
- package/dist/Markdown/Markdown.fr23.sampling.js +43 -0
- package/dist/Markdown/Markdown.js +262 -109
- package/dist/Markdown/ast.d.ts +162 -0
- package/dist/Markdown/ast.d.ts.map +1 -0
- package/dist/Markdown/ast.js +74 -0
- package/dist/Markdown/index.d.ts +5 -3
- package/dist/Markdown/index.d.ts.map +1 -1
- package/dist/Markdown/index.js +3 -2
- package/dist/Markdown/parser/index.d.ts +10 -0
- package/dist/Markdown/parser/index.d.ts.map +1 -0
- package/dist/Markdown/parser/index.js +10 -0
- package/dist/Markdown/parser.d.ts +126 -58
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +716 -167
- package/dist/Markdown/plugins/frontmatter.d.ts +32 -0
- package/dist/Markdown/plugins/frontmatter.d.ts.map +1 -0
- package/dist/Markdown/plugins/frontmatter.js +132 -0
- package/dist/Markdown/plugins/index.d.ts +16 -0
- package/dist/Markdown/plugins/index.d.ts.map +1 -0
- package/dist/Markdown/plugins/index.js +13 -0
- package/dist/Markdown/plugins/protocol.d.ts +191 -0
- package/dist/Markdown/plugins/protocol.d.ts.map +1 -0
- package/dist/Markdown/plugins/protocol.js +957 -0
- package/dist/Markdown/plugins/semanticFence.d.ts +36 -0
- package/dist/Markdown/plugins/semanticFence.d.ts.map +1 -0
- package/dist/Markdown/plugins/semanticFence.js +213 -0
- package/dist/Markdown/plugins/sourceDecoration.d.ts +76 -0
- package/dist/Markdown/plugins/sourceDecoration.d.ts.map +1 -0
- package/dist/Markdown/plugins/sourceDecoration.js +393 -0
- package/dist/Markdown/plugins/textTransform.d.ts +30 -0
- package/dist/Markdown/plugins/textTransform.d.ts.map +1 -0
- package/dist/Markdown/plugins/textTransform.js +374 -0
- package/dist/Markdown/remark.d.ts +196 -0
- package/dist/Markdown/remark.d.ts.map +1 -0
- package/dist/Markdown/remark.js +1062 -0
- package/dist/Markdown/url.d.ts +4 -0
- package/dist/Markdown/url.d.ts.map +1 -0
- package/dist/Markdown/url.js +25 -0
- package/dist/Markdown/utils.d.ts +4 -2
- package/dist/Markdown/utils.d.ts.map +1 -1
- package/dist/Markdown/utils.js +2 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +4 -4
- package/dist/Outline/index.d.ts +1 -0
- package/dist/Outline/index.d.ts.map +1 -1
- package/dist/Outline/parseOutlineFromMarkdown.d.ts +7 -1
- package/dist/Outline/parseOutlineFromMarkdown.d.ts.map +1 -1
- package/dist/Outline/parseOutlineFromMarkdown.js +14 -8
- package/dist/Outline/useOutlineFromMarkdown.d.ts +3 -1
- package/dist/Outline/useOutlineFromMarkdown.d.ts.map +1 -1
- package/dist/Outline/useOutlineFromMarkdown.js +8 -3
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +46 -30
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +36 -31
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +13 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +5 -5
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +1 -1
- package/dist/SideNav/SideNav.d.ts +2 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +9 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +14 -8
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +23 -7
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +11 -0
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +20 -7
- package/dist/Table/Table.d.ts +1 -0
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +29 -13
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +1 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +2 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +4 -4
- package/dist/ToggleButton/ToggleButton.d.ts +2 -1
- package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +7 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +3 -0
- package/dist/TreeList/TreeListItem.d.ts +6 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +12 -2
- package/dist/TreeList/TreeListTypes.d.ts +8 -1
- package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +16 -7
- package/dist/astryx.css +17 -7
- package/dist/hooks/scrollKeyboardDelegation.d.ts +3 -0
- package/dist/hooks/scrollKeyboardDelegation.d.ts.map +1 -0
- package/dist/hooks/scrollKeyboardDelegation.js +146 -0
- package/dist/hooks/useScrollableArea.d.ts +6 -2
- package/dist/hooks/useScrollableArea.d.ts.map +1 -1
- package/dist/hooks/useScrollableArea.js +17 -5
- package/dist/utils/interactionOverlay.stylex.d.ts +8 -0
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +9 -0
- package/locales/af-ZA.json +2 -1
- package/locales/ar-SA.json +2 -1
- package/locales/ca-ES.json +2 -1
- package/locales/cs-CZ.json +2 -1
- package/locales/da-DK.json +2 -1
- package/locales/de-DE.json +2 -1
- package/locales/el-GR.json +2 -1
- package/locales/es-ES.json +2 -1
- package/locales/fi-FI.json +2 -1
- package/locales/fr-FR.json +2 -9
- package/locales/he-IL.json +2 -1
- package/locales/hu-HU.json +2 -1
- package/locales/it-IT.json +2 -1
- package/locales/ja-JP.json +2 -1
- package/locales/ko-KR.json +2 -1
- package/locales/nl-NL.json +2 -1
- package/locales/no-NO.json +2 -1
- package/locales/pl-PL.json +2 -1
- package/locales/pt-BR.json +2 -1
- package/locales/pt-PT.json +2 -1
- package/locales/ro-RO.json +2 -1
- package/locales/ru-RU.json +2 -1
- package/locales/sr-SP.json +2 -1
- package/locales/sv-SE.json +2 -1
- package/locales/tr-TR.json +2 -1
- package/locales/uk-UA.json +2 -1
- package/locales/vi-VN.json +2 -1
- package/locales/zh-CN.json +2 -1
- package/locales/zh-TW.json +2 -1
- package/package.json +18 -3
- package/src/BottomSheet/BottomSheet.doc.mjs +8 -1
- package/src/BottomSheet/BottomSheet.spec.md +46 -20
- package/src/BottomSheet/BottomSheet.test.tsx +6 -3
- package/src/BottomSheet/BottomSheet.tsx +3 -1
- package/src/BottomSheet/BottomSheetKeyboard.test.tsx +195 -0
- package/src/BottomSheet/BottomSheetPanel.test.tsx +11 -1
- package/src/BottomSheet/BottomSheetPanel.tsx +49 -16
- package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +344 -0
- package/src/Button/__tests__/Button.a11y.chromium.spec.ts +17 -1
- package/src/Button/__tests__/Button.a11y.known-failures.ts +0 -29
- package/src/Button/__tests__/Button.a11y.renders.tsx +9 -2
- package/src/Button/__tests__/Button.a11y.states.ts +9 -0
- package/src/Chat/ChatComposer.doc.mjs +14 -0
- package/src/Chat/ChatComposer.spec.md +230 -0
- package/src/Chat/ChatComposer.test.tsx +57 -0
- package/src/Chat/ChatComposer.tsx +21 -9
- package/src/Chat/ChatComposerDrawer.doc.mjs +53 -2
- package/src/Chat/ChatComposerDrawer.spec.md +267 -0
- package/src/Chat/ChatComposerDrawer.test.tsx +37 -14
- package/src/Chat/ChatComposerDrawer.tsx +13 -2
- package/src/Chat/ChatComposerInput.doc.mjs +114 -26
- package/src/Chat/ChatComposerInput.spec.md +185 -0
- package/src/Chat/ChatComposerInput.test.tsx +113 -3
- package/src/Chat/ChatComposerInput.tsx +78 -13
- package/src/Chat/ChatComposerTokenElement.spec.md +152 -0
- package/src/Chat/ChatComposerTokenElement.test.tsx +85 -0
- package/src/Chat/ChatDictationButton.doc.mjs +3 -3
- package/src/Chat/ChatDictationButton.spec.md +160 -0
- package/src/Chat/ChatDictationButton.test.tsx +92 -27
- package/src/Chat/ChatDictationButton.tsx +8 -6
- package/src/Chat/ChatSendButton.test.tsx +1 -4
- package/src/Chat/ChatSendButton.tsx +1 -1
- package/src/Chat/index.ts +1 -0
- package/src/CheckboxInput/CheckboxInput.doc.mjs +11 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +34 -0
- package/src/CheckboxInput/CheckboxInput.tsx +21 -1
- package/src/ClickableCard/ClickableCard.test.tsx +102 -5
- package/src/Collapsible/Collapsible.doc.mjs +11 -0
- package/src/Collapsible/Collapsible.test.tsx +21 -0
- package/src/Collapsible/Collapsible.tsx +5 -0
- package/src/CommandPalette/CommandPaletteInput.tsx +6 -1
- package/src/ComplexSelector/ComplexSelector.tsx +6 -1
- package/src/DateInput/DateInput.tsx +6 -1
- package/src/DateInput/NativeDateField.tsx +24 -8
- package/src/DateInput/TouchDateField.tsx +6 -2
- package/src/DateRangeInput/DateRangeInput.tsx +6 -1
- package/src/DateTimeInput/DateTimeInput.tsx +6 -1
- package/src/DateTimeInput/TouchDateTimeField.tsx +6 -1
- package/src/DateTimeInput/nativePickerSegmentStyles.ts +24 -8
- package/src/Field/InputClearButton.test.tsx +17 -3
- package/src/Field/InputClearButton.tsx +5 -2
- package/src/Field/PanelSearchInput.tsx +5 -2
- package/src/FieldStatus/__tests__/StatusMessage.a11y.states.ts +1 -1
- package/src/FileInput/FileInput.tsx +11 -2
- package/src/Kbd/Kbd.doc.mjs +3 -3
- package/src/Kbd/Kbd.test.tsx +57 -1
- package/src/Kbd/Kbd.tsx +57 -37
- package/src/Layout/LayoutFooter.doc.mjs +17 -0
- package/src/Link/Link.doc.mjs +11 -0
- package/src/Link/Link.test.tsx +24 -0
- package/src/Link/Link.tsx +5 -0
- package/src/List/List.spec.md +200 -0
- package/src/Markdown/Markdown.doc.mjs +272 -0
- package/src/Markdown/Markdown.fr23.bench.ts +174 -0
- package/src/Markdown/Markdown.fr23.perf.test.ts +249 -0
- package/src/Markdown/Markdown.fr23.sampling.ts +49 -0
- package/src/Markdown/Markdown.helpers.perf.test.ts +489 -0
- package/src/Markdown/Markdown.public.test.ts +126 -3
- package/src/Markdown/Markdown.spec.md +197 -44
- package/src/Markdown/Markdown.test.tsx +11 -0
- package/src/Markdown/Markdown.tsx +414 -135
- package/src/Markdown/ast.test.ts +307 -0
- package/src/Markdown/ast.ts +337 -0
- package/src/Markdown/incremental.test.ts +12 -0
- package/src/Markdown/index.ts +37 -1
- package/src/Markdown/modules/remark.spec.md +269 -0
- package/src/Markdown/parser/index.ts +64 -0
- package/src/Markdown/parser.public.test.ts +103 -0
- package/src/Markdown/parser.ts +1180 -235
- package/src/Markdown/plugins/frontmatter.test.tsx +125 -0
- package/src/Markdown/plugins/frontmatter.ts +198 -0
- package/src/Markdown/plugins/index.ts +53 -0
- package/src/Markdown/plugins/protocol.test.tsx +1022 -0
- package/src/Markdown/plugins/protocol.ts +1618 -0
- package/src/Markdown/plugins/semanticFence.test.tsx +546 -0
- package/src/Markdown/plugins/semanticFence.ts +424 -0
- package/src/Markdown/plugins/sourceDecoration.test.tsx +799 -0
- package/src/Markdown/plugins/sourceDecoration.ts +539 -0
- package/src/Markdown/plugins/textTransform.test.ts +467 -0
- package/src/Markdown/plugins/textTransform.ts +554 -0
- package/src/Markdown/remark.test.tsx +1877 -0
- package/src/Markdown/remark.ts +1574 -0
- package/src/Markdown/url.ts +30 -0
- package/src/Markdown/utils.ts +13 -1
- package/src/MultiSelector/MultiSelector.test.tsx +1 -35
- package/src/MultiSelector/__tests__/MultiSelector.listbox.a11y.test.tsx +128 -0
- package/src/NumberInput/NumberInput.tsx +6 -1
- package/src/Outline/Outline.doc.mjs +7 -5
- package/src/Outline/Outline.spec.md +1 -1
- package/src/Outline/index.ts +1 -0
- package/src/Outline/modules/parseOutlineFromMarkdown.spec.md +142 -0
- package/src/Outline/parseOutlineFromMarkdown.ts +40 -10
- package/src/Outline/useOutlineFromMarkdown.ts +15 -3
- package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +150 -1
- package/src/PowerSearch/PowerSearchEditPopover.tsx +51 -28
- package/src/ProgressBar/ProgressBar.test.tsx +29 -11
- package/src/ProgressBar/ProgressBar.tsx +59 -72
- package/src/RadioList/RadioList.doc.mjs +11 -0
- package/src/RadioList/RadioList.test.tsx +32 -0
- package/src/RadioList/RadioListItem.tsx +25 -1
- package/src/ScrollableArea/modules/useScrollableArea.spec.md +50 -22
- package/src/SegmentedControl/SegmentedControl.doc.mjs +2 -2
- package/src/SegmentedControl/SegmentedControl.test.tsx +31 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +6 -9
- package/src/Selector/Selector.spec.md +12 -9
- package/src/Selector/Selector.tsx +6 -1
- package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +130 -0
- package/src/Selector/__tests__/Listbox.a11y.dom.ts +38 -0
- package/src/Selector/__tests__/Listbox.a11y.inventory.test.ts +63 -0
- package/src/Selector/__tests__/Listbox.a11y.known-failures.ts +37 -0
- package/src/Selector/__tests__/Listbox.a11y.states.ts +232 -0
- package/src/Selector/__tests__/Selector.listbox.a11y.test.tsx +121 -0
- package/src/SideNav/SideNav.doc.mjs +1 -1
- package/src/SideNav/SideNav.test.tsx +10 -0
- package/src/SideNav/SideNav.tsx +14 -2
- package/src/Slider/Slider.doc.mjs +11 -0
- package/src/Slider/Slider.test.tsx +128 -0
- package/src/Slider/Slider.tsx +25 -7
- package/src/Spinner/Spinner.test.tsx +4 -0
- package/src/Spinner/Spinner.tsx +31 -18
- package/src/Switch/Switch.doc.mjs +11 -0
- package/src/Switch/Switch.test.tsx +16 -0
- package/src/Switch/Switch.tsx +28 -0
- package/src/TabList/Tab.tsx +35 -7
- package/src/TabList/TabList.doc.mjs +11 -0
- package/src/TabList/TabList.spec.md +204 -0
- package/src/TabList/TabList.test.tsx +66 -0
- package/src/TabList/__tests__/Tabs.a11y.known-failures.ts +1 -34
- package/src/Table/Table.doc.mjs +1 -1
- package/src/Table/Table.spec.md +54 -40
- package/src/Table/Table.test.tsx +83 -10
- package/src/Table/Table.tsx +30 -22
- package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +137 -0
- package/src/TextArea/TextArea.tsx +6 -1
- package/src/TextInput/TextInput.test.tsx +20 -1
- package/src/TextInput/TextInput.tsx +6 -1
- package/src/TimeInput/TimeInput.tsx +6 -1
- package/src/ToggleButton/ToggleButton.test.tsx +133 -0
- package/src/ToggleButton/ToggleButton.tsx +9 -2
- package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +209 -0
- package/src/Tokenizer/Tokenizer.spec.md +142 -75
- package/src/TreeList/TreeList.doc.mjs +3 -3
- package/src/TreeList/TreeList.spec.md +123 -75
- package/src/TreeList/TreeList.test.tsx +29 -0
- package/src/TreeList/TreeList.tsx +3 -0
- package/src/TreeList/TreeListItem.tsx +15 -1
- package/src/TreeList/TreeListTypes.ts +11 -1
- package/src/Typeahead/BaseTypeahead.spec.md +4 -3
- package/src/Typeahead/BaseTypeahead.tsx +21 -7
- package/src/Typeahead/Typeahead.test.tsx +53 -0
- package/src/__tests__/PressedState.a11y.chromium.spec.ts +813 -0
- package/src/__tests__/pressState.ts +93 -0
- package/src/hooks/scrollKeyboardDelegation.test.ts +155 -0
- package/src/hooks/scrollKeyboardDelegation.ts +233 -0
- package/src/hooks/useScrollableArea.doc.mjs +15 -3
- package/src/hooks/useScrollableArea.test.tsx +59 -1
- package/src/hooks/useScrollableArea.ts +34 -10
- package/src/inputFontFloor.test.ts +106 -0
- package/src/utils/interactionOverlay.stylex.ts +20 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file BottomSheet.tsx
|
|
3
|
-
* @input Uses React, StyleX, core hooks/utils, BottomSheetPanel, BottomSheetSwitcherContext
|
|
3
|
+
* @input Uses React, StyleX, core hooks/utils, named BottomSheetPanel, BottomSheetSwitcherContext
|
|
4
4
|
* @output Exports BottomSheet component and BottomSheetProps
|
|
5
5
|
* @position Public BottomSheet router plus private standalone/switcher hosts
|
|
6
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAgB7C,YAAY,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAyEhF,UAAU,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB,wGAAwG;IACxG,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAC1B,0BAA0B,GAAG,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAgB7C,YAAY,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAyEhF,UAAU,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB,wGAAwG;IACxG,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAC1B,0BAA0B,GAAG,wBAAwB,CAAC;AA8XxD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6BlD;yBA7Be,WAAW"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file BottomSheet.tsx
|
|
7
|
-
* @input Uses React, StyleX, core hooks/utils, BottomSheetPanel, BottomSheetSwitcherContext
|
|
7
|
+
* @input Uses React, StyleX, core hooks/utils, named BottomSheetPanel, BottomSheetSwitcherContext
|
|
8
8
|
* @output Exports BottomSheet component and BottomSheetProps
|
|
9
9
|
* @position Public BottomSheet router plus private standalone/switcher hosts
|
|
10
10
|
*
|
|
@@ -266,6 +266,7 @@ function StandaloneBottomSheet({
|
|
|
266
266
|
ref: ref,
|
|
267
267
|
state: panelState,
|
|
268
268
|
height: height,
|
|
269
|
+
label: label,
|
|
269
270
|
snapPoints: snapPoints,
|
|
270
271
|
isSwipeDismissAllowed: purpose === 'info',
|
|
271
272
|
isPageScrollLocked: shouldPresent && hasScrim,
|
|
@@ -397,6 +398,7 @@ function SwitcherBottomSheetItem({
|
|
|
397
398
|
ref: ref,
|
|
398
399
|
state: panelState,
|
|
399
400
|
height: height,
|
|
401
|
+
label: label,
|
|
400
402
|
snapPoints: snapPoints,
|
|
401
403
|
isSwipeDismissAllowed: purpose === 'info',
|
|
402
404
|
isPageScrollLocked: hasScrim,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file BottomSheetPanel.tsx
|
|
3
|
-
* @input Uses React, StyleX, theme tokens,
|
|
4
|
-
* @output Internal BottomSheetPanel
|
|
3
|
+
* @input Uses React, StyleX, theme tokens, sheet gestures, shared scroll behavior, and the host label
|
|
4
|
+
* @output Internal BottomSheetPanel with a keyboard-reachable scrolling body and motion-state types
|
|
5
5
|
* @position Shared presentation layer for standalone and switcher BottomSheets
|
|
6
6
|
*
|
|
7
7
|
* This component owns everything intrinsic to a sheet surface: height budgets,
|
|
8
8
|
* drag and snap gestures, the handle and scrolling body, motion styles, and
|
|
9
|
-
* transition completion. It
|
|
10
|
-
* state,
|
|
9
|
+
* transition completion. It owns the body's keyboard access; dialog focus
|
|
10
|
+
* entry/return, inert state, and switcher registration belong to the host.
|
|
11
11
|
*
|
|
12
12
|
* SYNC: When modified, update these files to stay in sync:
|
|
13
13
|
* - /packages/core/src/BottomSheet/BottomSheet.tsx
|
|
@@ -44,6 +44,8 @@ interface BottomSheetPanelProps extends BaseProps<HTMLDivElement> {
|
|
|
44
44
|
ref?: React.Ref<HTMLDivElement>;
|
|
45
45
|
state: BottomSheetPanelState;
|
|
46
46
|
height: BottomSheetHeight | number | string;
|
|
47
|
+
/** Existing host name, reused for the keyboard scrolling group. */
|
|
48
|
+
label: string;
|
|
47
49
|
children: ReactNode;
|
|
48
50
|
snapPoints?: ReadonlyArray<BottomSheetSnapPoint>;
|
|
49
51
|
isSwipeDismissAllowed?: boolean;
|
|
@@ -56,7 +58,7 @@ interface BottomSheetPanelProps extends BaseProps<HTMLDivElement> {
|
|
|
56
58
|
onMotionComplete?: (motion: BottomSheetPanelMotion) => void;
|
|
57
59
|
}
|
|
58
60
|
/** Internal visual and gesture surface shared by every BottomSheet host. */
|
|
59
|
-
export declare function BottomSheetPanel({ ref, state, height, children, snapPoints, className, style, tabIndex, xstyle, isSwipeDismissAllowed, isPageScrollLocked, onDismiss, onScrimOpacity, onElementChange, onMotionStart, onMotionComplete, ...props }: BottomSheetPanelProps): import("react").JSX.Element;
|
|
61
|
+
export declare function BottomSheetPanel({ ref, state, height, label, children, snapPoints, className, style, tabIndex, xstyle, isSwipeDismissAllowed, isPageScrollLocked, onDismiss, onScrimOpacity, onElementChange, onMotionStart, onMotionComplete, ...props }: BottomSheetPanelProps): import("react").JSX.Element;
|
|
60
62
|
export declare namespace BottomSheetPanel {
|
|
61
63
|
var displayName: string;
|
|
62
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetPanel.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetPanel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"BottomSheetPanel.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetPanel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiB5C,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAIvB,QAAA,MAAM,cAAc;;;;CAIV,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,cAAc,CAAC;AAC5D,YAAY,EAAC,oBAAoB,EAAC,CAAC;AAsMnC,MAAM,MAAM,sBAAsB,GAChC,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAC7B;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC,GAChB;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAC,GACjC;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;CACzB,GACD;IAAC,IAAI,EAAE,SAAS,CAAA;CAAC,CAAC;AAEtB,UAAU,qBAAsB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5C,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC7D;AA+GD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,KAAK,EACL,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,qBAA4B,EAC5B,kBAA0B,EAC1B,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,GAAG,KAAK,EACT,EAAE,qBAAqB,+BAyRvB;yBA5Se,gBAAgB"}
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file BottomSheetPanel.tsx
|
|
7
|
-
* @input Uses React, StyleX, theme tokens,
|
|
8
|
-
* @output Internal BottomSheetPanel
|
|
7
|
+
* @input Uses React, StyleX, theme tokens, sheet gestures, shared scroll behavior, and the host label
|
|
8
|
+
* @output Internal BottomSheetPanel with a keyboard-reachable scrolling body and motion-state types
|
|
9
9
|
* @position Shared presentation layer for standalone and switcher BottomSheets
|
|
10
10
|
*
|
|
11
11
|
* This component owns everything intrinsic to a sheet surface: height budgets,
|
|
12
12
|
* drag and snap gestures, the handle and scrolling body, motion styles, and
|
|
13
|
-
* transition completion. It
|
|
14
|
-
* state,
|
|
13
|
+
* transition completion. It owns the body's keyboard access; dialog focus
|
|
14
|
+
* entry/return, inert state, and switcher registration belong to the host.
|
|
15
15
|
*
|
|
16
16
|
* SYNC: When modified, update these files to stay in sync:
|
|
17
17
|
* - /packages/core/src/BottomSheet/BottomSheet.tsx
|
|
@@ -23,9 +23,11 @@
|
|
|
23
23
|
import { useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef } from 'react';
|
|
24
24
|
import * as stylex from '@stylexjs/stylex';
|
|
25
25
|
import { useDevWarning } from "../hooks/index.js";
|
|
26
|
+
import { useScrollableArea } from "../hooks/useScrollableArea.js";
|
|
26
27
|
import "../theme/tokens.stylex.js";
|
|
27
|
-
import { borderVars, colorVars, durationVars, easeVars, radiusVars, shadowVars, sizeVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
28
|
+
import { borderVars, colorVars, durationVars, easeVars, focusVars, radiusVars, shadowVars, sizeVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
28
29
|
import { mergeProps, themeProps } from "../utils/index.js";
|
|
30
|
+
import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
|
|
29
31
|
import { overlayPaddingReset } from "../Layout/padding.stylex.js";
|
|
30
32
|
import { isValidSnapPoint, resolveSnapPoints } from "./snapOffsets.js";
|
|
31
33
|
import { useMobileKeyboard } from "./useMobileKeyboard.js";
|
|
@@ -120,6 +122,24 @@ const styles = {
|
|
|
120
122
|
kfzvcC: "x47corl",
|
|
121
123
|
$$css: true
|
|
122
124
|
},
|
|
125
|
+
body: {
|
|
126
|
+
kzQI83: "x1iyjqo2",
|
|
127
|
+
kAzted: "x2lwn1j",
|
|
128
|
+
kB7OPa: "x9f619",
|
|
129
|
+
kFalU9: "xx69xxh",
|
|
130
|
+
kInvED: "x1wfwxd8 x1nw7mhf",
|
|
131
|
+
kWkggS: "x10xzikg",
|
|
132
|
+
kGO01o: "x18d9i69",
|
|
133
|
+
$$css: true
|
|
134
|
+
},
|
|
135
|
+
tallKeyboardBody: {
|
|
136
|
+
kFlMNQ: "xrw9175",
|
|
137
|
+
k5JduY: "x1s928wv",
|
|
138
|
+
kc3QkE: "xhkezso",
|
|
139
|
+
k4zj60: "xu6fald",
|
|
140
|
+
kloYau: "x2q1x1w",
|
|
141
|
+
$$css: true
|
|
142
|
+
},
|
|
123
143
|
budget: {
|
|
124
144
|
kZKoxP: "x1tpcejd",
|
|
125
145
|
$$css: true
|
|
@@ -222,6 +242,7 @@ export function BottomSheetPanel({
|
|
|
222
242
|
ref,
|
|
223
243
|
state,
|
|
224
244
|
height,
|
|
245
|
+
label,
|
|
225
246
|
children,
|
|
226
247
|
snapPoints,
|
|
227
248
|
className,
|
|
@@ -312,6 +333,22 @@ export function BottomSheetPanel({
|
|
|
312
333
|
snapHeights,
|
|
313
334
|
onScrimOpacity
|
|
314
335
|
});
|
|
336
|
+
const {
|
|
337
|
+
getViewportProps,
|
|
338
|
+
getContentProps
|
|
339
|
+
} = useScrollableArea({
|
|
340
|
+
// The previous overflow-y:auto also computed overflow-x:auto. Keep wide
|
|
341
|
+
// content reachable instead of clipping that existing inline scroll path.
|
|
342
|
+
axis: 'both',
|
|
343
|
+
keyboardAccess: {
|
|
344
|
+
owner: 'contentOrViewport',
|
|
345
|
+
label
|
|
346
|
+
},
|
|
347
|
+
overscroll: 'contain',
|
|
348
|
+
// The sheet body deliberately remains the boundary for sheet-local sticky
|
|
349
|
+
// content while fitting, as it was before shared scroll adoption.
|
|
350
|
+
stickyContainment: 'always'
|
|
351
|
+
});
|
|
315
352
|
const setElement = useCallback(element => {
|
|
316
353
|
sheetRef(element);
|
|
317
354
|
elementRef.current = element;
|
|
@@ -438,20 +475,20 @@ export function BottomSheetPanel({
|
|
|
438
475
|
}
|
|
439
476
|
})
|
|
440
477
|
}), /*#__PURE__*/_jsx("div", {
|
|
441
|
-
...
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
478
|
+
...getViewportProps({
|
|
479
|
+
...bodyProps,
|
|
480
|
+
...mergeProps(stylex.props(focusOutlineStyles.focusVisible, styles.body, height === 'tall' && styles.tallKeyboardBody), scrollPreservationInset > 0 ? {
|
|
481
|
+
style: {
|
|
482
|
+
paddingBlockEnd: `${scrollPreservationInset}px`
|
|
483
|
+
}
|
|
484
|
+
} : {})
|
|
485
|
+
}),
|
|
486
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
487
|
+
...getContentProps({
|
|
488
|
+
className: "xufnvkl x9f619 x5yr21d x121v3j4"
|
|
489
|
+
}),
|
|
490
|
+
children: children
|
|
491
|
+
})
|
|
455
492
|
})]
|
|
456
493
|
});
|
|
457
494
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA+B5C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,UAAU,CACxB;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAI3B,6GAA6G;IAC7G,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yHAAyH;IACzH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,yGAAyG;IACzG,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gHAAgH;IAChH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,gHAAgH;IAChH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,oDAAoD;IACpD,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CACnC;
|
|
1
|
+
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA+B5C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,UAAU,CACxB;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAI3B,6GAA6G;IAC7G,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yHAAyH;IACzH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,yGAAyG;IACzG,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gHAAgH;IAChH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,gHAAgH;IAChH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,oDAAoD;IACpD,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CACnC;AAmND;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAkNpD;yBAlNe,YAAY"}
|
|
@@ -150,14 +150,14 @@ export function ChatComposer(props) {
|
|
|
150
150
|
}
|
|
151
151
|
onChange?.(newValue);
|
|
152
152
|
}, [isControlled, onChange]);
|
|
153
|
-
const handleSubmit = useCallback(
|
|
154
|
-
const trimmed =
|
|
153
|
+
const handleSubmit = useCallback(value => {
|
|
154
|
+
const trimmed = value.trim();
|
|
155
155
|
if (!trimmed || isDisabled) {
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
158
|
onSubmit(trimmed);
|
|
159
159
|
updateValue('');
|
|
160
|
-
}, [
|
|
160
|
+
}, [isDisabled, onSubmit, updateValue]);
|
|
161
161
|
const canSend = currentValue.trim().length > 0 && !isDisabled;
|
|
162
162
|
const bodyRef = useRef(null);
|
|
163
163
|
|
|
@@ -289,8 +289,13 @@ export function ChatComposer(props) {
|
|
|
289
289
|
children: footerActions
|
|
290
290
|
}), /*#__PURE__*/_jsxs("div", {
|
|
291
291
|
...{
|
|
292
|
-
|
|
293
|
-
|
|
292
|
+
0: {
|
|
293
|
+
className: "x78zum5 x6s0dn4 xzye2dw"
|
|
294
|
+
},
|
|
295
|
+
1: {
|
|
296
|
+
className: "x78zum5 x6s0dn4 xzye2dw x67bb7w"
|
|
297
|
+
}
|
|
298
|
+
}[!!(isDisabled && isStopShown) << 0],
|
|
294
299
|
children: [sendActions, sendButton ?? /*#__PURE__*/_jsx(ChatSendButton, {})]
|
|
295
300
|
})]
|
|
296
301
|
})]
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
* the content region (disclosure pattern).
|
|
10
10
|
*
|
|
11
11
|
* SYNC: When modified, update:
|
|
12
|
+
* - /packages/core/src/Chat/ChatComposerDrawer.test.tsx
|
|
13
|
+
* - /packages/core/src/Chat/ChatComposerDrawer.doc.mjs
|
|
14
|
+
* - /packages/core/src/Chat/ChatComposerDrawer.spec.md
|
|
15
|
+
* - /apps/storybook/stories/ChatComposerDrawer.stories.tsx
|
|
12
16
|
* - /packages/core/src/Chat/index.ts (exports)
|
|
13
17
|
* - /packages/cli/assets/templates/blocks/components/ChatComposerDrawer/ (block examples)
|
|
14
18
|
*/
|
|
@@ -52,7 +56,9 @@ export interface ChatComposerDrawerProps extends BaseProps<HTMLDivElement> {
|
|
|
52
56
|
* @example
|
|
53
57
|
* ```
|
|
54
58
|
* const styles = stylex.create({ wrapper: { marginTop: 8 } });
|
|
55
|
-
* <ChatComposerDrawer xstyle={styles.wrapper}
|
|
59
|
+
* <ChatComposerDrawer xstyle={styles.wrapper}>
|
|
60
|
+
* <AttachmentThumbnail />
|
|
61
|
+
* </ChatComposerDrawer>
|
|
56
62
|
* ```
|
|
57
63
|
*/
|
|
58
64
|
xstyle?: StyleXStyles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatComposerDrawer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposerDrawer.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"ChatComposerDrawer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposerDrawer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAkB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAYnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,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;;;;;;;;;;;OAWG;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;AAmID;;;;;;;;;;;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,CAiG9C;yBA9Ge,kBAAkB"}
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
* the content region (disclosure pattern).
|
|
14
14
|
*
|
|
15
15
|
* SYNC: When modified, update:
|
|
16
|
+
* - /packages/core/src/Chat/ChatComposerDrawer.test.tsx
|
|
17
|
+
* - /packages/core/src/Chat/ChatComposerDrawer.doc.mjs
|
|
18
|
+
* - /packages/core/src/Chat/ChatComposerDrawer.spec.md
|
|
19
|
+
* - /apps/storybook/stories/ChatComposerDrawer.stories.tsx
|
|
16
20
|
* - /packages/core/src/Chat/index.ts (exports)
|
|
17
21
|
* - /packages/cli/assets/templates/blocks/components/ChatComposerDrawer/ (block examples)
|
|
18
22
|
*/
|
|
@@ -23,6 +27,7 @@ import { colorVars, spacingVars, radiusVars, durationVars, easeVars, typeScaleVa
|
|
|
23
27
|
import { Badge } from "../Badge/index.js";
|
|
24
28
|
import { mergeProps } from "../utils/index.js";
|
|
25
29
|
import { themeProps } from "../utils/themeProps.js";
|
|
30
|
+
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
26
31
|
import { useTranslator } from "../i18n/index.js";
|
|
27
32
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
28
33
|
const styles = {
|
|
@@ -41,6 +46,20 @@ const styles = {
|
|
|
41
46
|
krdFHd: "x1n70msy",
|
|
42
47
|
kfmiAY: "xg0tfu",
|
|
43
48
|
$$css: true
|
|
49
|
+
},
|
|
50
|
+
toggleRow: {
|
|
51
|
+
k1xSpc: "xrvj5dj",
|
|
52
|
+
kumcoG: "x1y6fwsi",
|
|
53
|
+
kGNEyG: "x6s0dn4",
|
|
54
|
+
kZKoxP: "x1grt7ep",
|
|
55
|
+
kg3NbH: "x1pzlopt",
|
|
56
|
+
kUOVxO: "x1ng9b9t",
|
|
57
|
+
kkrTdU: "x1ypdohk x16khyan",
|
|
58
|
+
kfSwDN: "x87ps6o",
|
|
59
|
+
$$css: true
|
|
60
|
+
},
|
|
61
|
+
toggleCollapsed: {
|
|
62
|
+
$$css: true
|
|
44
63
|
}
|
|
45
64
|
};
|
|
46
65
|
|
|
@@ -97,14 +116,10 @@ export function ChatComposerDrawer({
|
|
|
97
116
|
}), stylex.props(styles.root, xstyle), className, style),
|
|
98
117
|
...htmlProps,
|
|
99
118
|
children: [canCollapse && /*#__PURE__*/_jsxs("div", {
|
|
100
|
-
...{
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
1: {
|
|
105
|
-
className: "xrvj5dj x1y6fwsi x6s0dn4 x1grt7ep x1pzlopt x1ng9b9t x1ypdohk x16khyan x87ps6o x-default-marker"
|
|
106
|
-
}
|
|
107
|
-
}[!!isCollapsed << 0],
|
|
119
|
+
...focusOutlineProps.focusVisible(styles.toggleRow, isCollapsed && styles.toggleCollapsed, {
|
|
120
|
+
"x-default-marker": "x-default-marker",
|
|
121
|
+
$$css: true
|
|
122
|
+
}),
|
|
108
123
|
role: "button",
|
|
109
124
|
tabIndex: 0,
|
|
110
125
|
"aria-expanded": !isCollapsed,
|
|
@@ -150,7 +165,12 @@ export function ChatComposerDrawer({
|
|
|
150
165
|
}[!!isCollapsed << 0]
|
|
151
166
|
})]
|
|
152
167
|
}), /*#__PURE__*/_jsx("div", {
|
|
153
|
-
id: contentId
|
|
168
|
+
id: contentId
|
|
169
|
+
// The 0fr row keeps the collapse animation in place. `inert` also
|
|
170
|
+
// removes visually hidden descendants from keyboard and assistive-
|
|
171
|
+
// technology navigation until the drawer expands again.
|
|
172
|
+
,
|
|
173
|
+
inert: canCollapse && isCollapsed ? true : undefined,
|
|
154
174
|
...{
|
|
155
175
|
0: {
|
|
156
176
|
className: "xrvj5dj x1tu4anv x1qn9uv2 x80gvsz xlr8y92"
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
*
|
|
15
15
|
*
|
|
16
16
|
* SYNC: When modified, update:
|
|
17
|
+
* - /packages/core/src/Chat/ChatComposerInput.test.tsx
|
|
18
|
+
* - /packages/core/src/Chat/ChatComposerInput.doc.mjs
|
|
19
|
+
* - /packages/core/src/Chat/ChatComposerInput.spec.md
|
|
20
|
+
* - /apps/storybook/stories/ChatComposerInput.stories.tsx
|
|
17
21
|
* - /packages/core/src/Chat/index.ts
|
|
18
22
|
* - /apps/storybook/stories/ChatComposer.stories.tsx
|
|
19
23
|
* - /packages/cli/assets/templates/blocks/components/ChatComposerInput/ (block examples)
|
|
@@ -58,6 +62,12 @@ export type ChatComposerTokenCustom = {
|
|
|
58
62
|
* Use for tooltips, hovercards, or any content beyond a badge.
|
|
59
63
|
*/
|
|
60
64
|
export type ChatComposerToken = ChatComposerTokenBadge | ChatComposerTokenCustom;
|
|
65
|
+
export interface ChatComposerTokenElementProps extends BaseProps<HTMLSpanElement> {
|
|
66
|
+
/** Ref forwarded to the token wrapper. */
|
|
67
|
+
ref?: React.Ref<HTMLSpanElement>;
|
|
68
|
+
/** Token rendered as a Badge or by its custom render function. */
|
|
69
|
+
token: ChatComposerToken;
|
|
70
|
+
}
|
|
61
71
|
export type ChatComposerTriggerItem = SearchableItem;
|
|
62
72
|
export type ChatComposerTrigger = {
|
|
63
73
|
/** Character that activates this trigger menu (e.g. '@', '/') */
|
|
@@ -159,9 +169,7 @@ export declare function ChatComposerInput(props: ChatComposerInputProps): import
|
|
|
159
169
|
export declare namespace ChatComposerInput {
|
|
160
170
|
var displayName: string;
|
|
161
171
|
}
|
|
162
|
-
export declare function ChatComposerTokenElement(
|
|
163
|
-
token: ChatComposerToken;
|
|
164
|
-
}): import("react").JSX.Element;
|
|
172
|
+
export declare function ChatComposerTokenElement(props: ChatComposerTokenElementProps): import("react").JSX.Element;
|
|
165
173
|
export declare namespace ChatComposerTokenElement {
|
|
166
174
|
var displayName: string;
|
|
167
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatComposerInput.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposerInput.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"ChatComposerInput.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposerInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
*
|
|
19
19
|
*
|
|
20
20
|
* SYNC: When modified, update:
|
|
21
|
+
* - /packages/core/src/Chat/ChatComposerInput.test.tsx
|
|
22
|
+
* - /packages/core/src/Chat/ChatComposerInput.doc.mjs
|
|
23
|
+
* - /packages/core/src/Chat/ChatComposerInput.spec.md
|
|
24
|
+
* - /apps/storybook/stories/ChatComposerInput.stories.tsx
|
|
21
25
|
* - /packages/core/src/Chat/index.ts
|
|
22
26
|
* - /apps/storybook/stories/ChatComposer.stories.tsx
|
|
23
27
|
* - /packages/cli/assets/templates/blocks/components/ChatComposerInput/ (block examples)
|
|
@@ -75,6 +79,11 @@ const styles = {
|
|
|
75
79
|
kSiTet: "xbyyjgo",
|
|
76
80
|
kfzvcC: "x47corl",
|
|
77
81
|
$$css: true
|
|
82
|
+
},
|
|
83
|
+
tokenSpan: {
|
|
84
|
+
k1xSpc: "x3nfvp2",
|
|
85
|
+
kXLuUW: "xxymvpz",
|
|
86
|
+
$$css: true
|
|
78
87
|
}
|
|
79
88
|
};
|
|
80
89
|
|
|
@@ -303,6 +312,7 @@ export function ChatComposerInput(props) {
|
|
|
303
312
|
}
|
|
304
313
|
}, [controlledValue]);
|
|
305
314
|
const cleanupPortalsRef = useRef(null);
|
|
315
|
+
const emitChangeVersionRef = useRef(0);
|
|
306
316
|
const emitChange = useCallback(() => {
|
|
307
317
|
if (!editableRef.current) {
|
|
308
318
|
return;
|
|
@@ -315,6 +325,7 @@ export function ChatComposerInput(props) {
|
|
|
315
325
|
const nextValue = trimmedEmpty ? '' : text;
|
|
316
326
|
pendingEchoValueRef.current = nextValue;
|
|
317
327
|
setIsEmpty(trimmedEmpty);
|
|
328
|
+
emitChangeVersionRef.current += 1;
|
|
318
329
|
onChange?.(nextValue);
|
|
319
330
|
cleanupPortalsRef.current?.();
|
|
320
331
|
}, [onChange]);
|
|
@@ -331,13 +342,17 @@ export function ChatComposerInput(props) {
|
|
|
331
342
|
inputRef: selfRef
|
|
332
343
|
});
|
|
333
344
|
const pasteAsToken = pasteAsTokenProp === false ? null : pasteAsTokenProp ?? defaultPasteAsToken;
|
|
334
|
-
const
|
|
345
|
+
const insertTextWithoutEmit = useCallback(text => {
|
|
335
346
|
const editable = editableRef.current;
|
|
336
347
|
if (!editable) {
|
|
337
348
|
return;
|
|
338
349
|
}
|
|
339
350
|
insertTextAtCursor(editable, text);
|
|
340
351
|
}, []);
|
|
352
|
+
const insertText = useCallback(text => {
|
|
353
|
+
insertTextWithoutEmit(text);
|
|
354
|
+
emitChange();
|
|
355
|
+
}, [emitChange, insertTextWithoutEmit]);
|
|
341
356
|
|
|
342
357
|
// Keep stable refs in sync for imperative handle
|
|
343
358
|
insertTokenRef.current = tokens.insertToken;
|
|
@@ -348,7 +363,7 @@ export function ChatComposerInput(props) {
|
|
|
348
363
|
triggers,
|
|
349
364
|
editableRef,
|
|
350
365
|
onInsertToken: tokens.insertToken,
|
|
351
|
-
onInsertText:
|
|
366
|
+
onInsertText: insertTextWithoutEmit,
|
|
352
367
|
onEmitChange: emitChange,
|
|
353
368
|
debounceMs
|
|
354
369
|
});
|
|
@@ -513,21 +528,44 @@ export function ChatComposerInput(props) {
|
|
|
513
528
|
e.preventDefault();
|
|
514
529
|
const text = e.clipboardData.getData('text/plain');
|
|
515
530
|
|
|
516
|
-
//
|
|
517
|
-
|
|
518
|
-
|
|
531
|
+
// Consumer onPaste gets first refusal over plain text. Return true after
|
|
532
|
+
// handling it so the built-in insertion paths do not run. A consumer may
|
|
533
|
+
// use the observable imperative handle while handling the event; emit only
|
|
534
|
+
// if that path did not already publish the change.
|
|
535
|
+
const versionBeforeConsumer = emitChangeVersionRef.current;
|
|
536
|
+
const handled = onPasteProp?.(e, text);
|
|
537
|
+
if (handled) {
|
|
538
|
+
if (emitChangeVersionRef.current === versionBeforeConsumer) {
|
|
539
|
+
emitChange();
|
|
540
|
+
}
|
|
519
541
|
return;
|
|
520
542
|
}
|
|
521
543
|
|
|
522
|
-
//
|
|
523
|
-
|
|
524
|
-
if (handled) {
|
|
544
|
+
// Paste-as-token: convert long pastes to token chips.
|
|
545
|
+
if (pasteAsToken?.onPaste(e, text)) {
|
|
525
546
|
emitChange();
|
|
526
547
|
return;
|
|
527
548
|
}
|
|
528
549
|
insertTextAtCursor(editable, text);
|
|
529
550
|
emitChange();
|
|
530
551
|
}, [onFiles, onPasteProp, emitChange, tokens, pasteAsToken]);
|
|
552
|
+
const handleDragOver = useCallback(e => {
|
|
553
|
+
if (Array.from(e.dataTransfer.types).includes('Files')) {
|
|
554
|
+
e.preventDefault();
|
|
555
|
+
}
|
|
556
|
+
}, []);
|
|
557
|
+
const handleDrop = useCallback(e => {
|
|
558
|
+
const files = Array.from(e.dataTransfer.files);
|
|
559
|
+
if (files.length === 0) {
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
562
|
+
// File drops navigate the page by default. The input owns that drop
|
|
563
|
+
// target even when no callback is supplied, so keep the user in place.
|
|
564
|
+
e.preventDefault();
|
|
565
|
+
if (!isDisabled) {
|
|
566
|
+
onFiles?.(files);
|
|
567
|
+
}
|
|
568
|
+
}, [isDisabled, onFiles]);
|
|
531
569
|
const maxHeight = maxRows * LINE_HEIGHT_PX;
|
|
532
570
|
return /*#__PURE__*/_jsxs("div", {
|
|
533
571
|
ref: ref,
|
|
@@ -535,7 +573,7 @@ export function ChatComposerInput(props) {
|
|
|
535
573
|
...rest,
|
|
536
574
|
children: [isEmpty && /*#__PURE__*/_jsx("div", {
|
|
537
575
|
...{
|
|
538
|
-
className: "x10l6tqk x13vifvy x1o0tod xtijo5x x47corl xv1l7n4 xjm74w1
|
|
576
|
+
className: "x10l6tqk x13vifvy x1o0tod xtijo5x x47corl xv1l7n4 xjm74w1 xf9zqsd x19v9tvf x9ynric x87ps6o x9epnlk"
|
|
539
577
|
},
|
|
540
578
|
"aria-hidden": "true",
|
|
541
579
|
children: placeholder
|
|
@@ -547,9 +585,12 @@ export function ChatComposerInput(props) {
|
|
|
547
585
|
onInput: handleInput,
|
|
548
586
|
onKeyDown: handleKeyDown,
|
|
549
587
|
onPaste: handlePaste,
|
|
588
|
+
onDragOver: handleDragOver,
|
|
589
|
+
onDrop: handleDrop,
|
|
550
590
|
...triggerMenu.ariaProps,
|
|
591
|
+
"aria-disabled": isDisabled || undefined,
|
|
551
592
|
...mergeProps({
|
|
552
|
-
className: "x1a2a7pz x126k92a x13faqbe x1odjw0f xjm74w1
|
|
593
|
+
className: "x1a2a7pz x126k92a x13faqbe x1odjw0f xjm74w1 xf9zqsd x19v9tvf x9ynric x1tgivj0 xxugrtn x9epnlk"
|
|
553
594
|
}, {
|
|
554
595
|
style: {
|
|
555
596
|
maxHeight: `${maxHeight}px`
|
|
@@ -579,16 +620,22 @@ ChatComposerInput.displayName = 'ChatComposerInput';
|
|
|
579
620
|
// Token element helper (for custom rendering in stories/consumers)
|
|
580
621
|
// =============================================================================
|
|
581
622
|
|
|
582
|
-
export function ChatComposerTokenElement({
|
|
583
|
-
|
|
584
|
-
|
|
623
|
+
export function ChatComposerTokenElement(props) {
|
|
624
|
+
const {
|
|
625
|
+
token,
|
|
626
|
+
ref,
|
|
627
|
+
xstyle,
|
|
628
|
+
className,
|
|
629
|
+
style,
|
|
630
|
+
...rest
|
|
631
|
+
} = props;
|
|
585
632
|
return /*#__PURE__*/_jsx("span", {
|
|
633
|
+
ref: ref,
|
|
634
|
+
...mergeProps(stylex.props(styles.tokenSpan, xstyle), className, style),
|
|
635
|
+
...rest,
|
|
586
636
|
"data-astryx-token": "",
|
|
587
637
|
"data-astryx-token-value": token.value,
|
|
588
638
|
contentEditable: false,
|
|
589
|
-
...{
|
|
590
|
-
className: "x3nfvp2 xxymvpz"
|
|
591
|
-
},
|
|
592
639
|
children: isCustomToken(token) ? token.render() : /*#__PURE__*/_jsx(Badge, {
|
|
593
640
|
label: token.label,
|
|
594
641
|
variant: token.variant,
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* A toggle button that connects to useChatDictation. Shows a microphone
|
|
8
8
|
* icon when idle. When listening, replaces the icon with volume-reactive
|
|
9
9
|
* frequency bars (equalizer style) that respond to real mic input.
|
|
10
|
-
* Bars use the accent color and
|
|
10
|
+
* Bars use the accent color and blend toward the semantic error color when
|
|
11
|
+
* volume clips past 20%.
|
|
11
12
|
*
|
|
12
13
|
* SYNC: When modified, update:
|
|
13
14
|
* - /packages/core/src/Chat/index.ts (exports)
|
|
@@ -22,7 +23,7 @@ export interface ChatDictationButtonProps extends BaseProps<HTMLSpanElement> {
|
|
|
22
23
|
dictation: UseSpeechRecognitionReturn;
|
|
23
24
|
/** Button size. @default "md" */
|
|
24
25
|
size?: 'sm' | 'md';
|
|
25
|
-
/** Hide the button when SpeechRecognition is
|
|
26
|
+
/** Hide the button when SpeechRecognition is unsupported. When false, the unsupported button remains visible but disabled. @default true */
|
|
26
27
|
isHiddenWhenUnsupported?: boolean;
|
|
27
28
|
/** Accessible label override. */
|
|
28
29
|
label?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatDictationButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatDictationButton.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"ChatDictationButton.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatDictationButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,wBAAwB,CAAC;AAMvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,eAAe,CAAC;IAC1E,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjC,sEAAsE;IACtE,SAAS,EAAE,0BAA0B,CAAC;IACtC,iCAAiC;IACjC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,4IAA4I;IAC5I,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiDD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,SAAS,EACT,IAAW,EACX,uBAA8B,EAC9B,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,wBAAwB,4BA0E1B;yBApFe,mBAAmB"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* A toggle button that connects to useChatDictation. Shows a microphone
|
|
12
12
|
* icon when idle. When listening, replaces the icon with volume-reactive
|
|
13
13
|
* frequency bars (equalizer style) that respond to real mic input.
|
|
14
|
-
* Bars use the accent color and
|
|
14
|
+
* Bars use the accent color and blend toward the semantic error color when
|
|
15
|
+
* volume clips past 20%.
|
|
15
16
|
*
|
|
16
17
|
* SYNC: When modified, update:
|
|
17
18
|
* - /packages/core/src/Chat/index.ts (exports)
|
|
@@ -102,10 +103,10 @@ export function ChatDictationButton({
|
|
|
102
103
|
// Boost each band for visibility — quiet speech (0-10%) maps to full visual range
|
|
103
104
|
const boostedBands = bands.map(b => Math.min(Math.pow(b / 0.2, 0.5), 1));
|
|
104
105
|
|
|
105
|
-
//
|
|
106
|
+
// Blend toward the theme's semantic error color as clipping increases.
|
|
106
107
|
const isClipping = rawVolume >= 0.2;
|
|
107
|
-
const
|
|
108
|
-
const barColor = isClipping ? `
|
|
108
|
+
const clippingStrength = Math.min((rawVolume - 0.2) / 0.1, 1) * 100;
|
|
109
|
+
const barColor = isClipping ? `color-mix(in srgb, ${colorVars['--color-accent']}, ${colorVars['--color-error']} ${clippingStrength}%)` : colorVars['--color-accent'];
|
|
109
110
|
const {
|
|
110
111
|
barWidth,
|
|
111
112
|
barGap,
|
|
@@ -150,6 +151,7 @@ export function ChatDictationButton({
|
|
|
150
151
|
size: size
|
|
151
152
|
}),
|
|
152
153
|
isIconOnly: true,
|
|
154
|
+
isDisabled: !dictation.isSupported,
|
|
153
155
|
onClick: dictation.toggle
|
|
154
156
|
})]
|
|
155
157
|
});
|
|
@@ -73,7 +73,7 @@ export function ChatSendButton(props) {
|
|
|
73
73
|
ref,
|
|
74
74
|
...rest
|
|
75
75
|
} = props;
|
|
76
|
-
const handleSend = onSend ?? (() => context?.onSubmit(
|
|
76
|
+
const handleSend = onSend ?? (() => context?.onSubmit(context.value));
|
|
77
77
|
const defaultStopIcon = useIcon('stop');
|
|
78
78
|
const defaultSendIcon = useIcon('arrowUp');
|
|
79
79
|
return /*#__PURE__*/_jsx(Button, {
|