@astryxdesign/core 0.1.2-canary.f03e2cc → 0.1.2-canary.f57fb72
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/README.md +12 -12
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +11 -5
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +20 -4
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +43 -28
- package/dist/Calendar/styles.d.ts +3 -9
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +3 -11
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +17 -3
- package/dist/Chat/ChatMessageList.d.ts +14 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +2 -0
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +4 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +4 -2
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +12 -4
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +49 -37
- package/dist/ContextMenu/ContextMenu.d.ts +6 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +95 -7
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +17 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +9 -4
- package/dist/DateTimeInput/DateTimeInput.d.ts +7 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +15 -3
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +12 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +38 -5
- package/dist/Field/Field.d.ts +19 -2
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +4 -0
- package/dist/Field/FieldLabel.d.ts +21 -2
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +41 -26
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +27 -6
- package/dist/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/InputGroup/InputGroup.js +4 -1
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +33 -1
- package/dist/Layer/layerAnimations.stylex.d.ts +4 -0
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +8 -4
- package/dist/Layer/useLayer.d.ts +10 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +41 -6
- package/dist/Layout/padding.stylex.d.ts +51 -0
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +63 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +4 -2
- package/dist/Link/Link.d.ts +7 -1
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +15 -7
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +5 -0
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +61 -14
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +34 -3
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +7 -1
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +15 -1
- package/dist/Popover/usePopover.d.ts +25 -2
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +18 -6
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +4 -1
- package/dist/ProgressBar/ProgressBar.js +1 -1
- package/dist/RadioList/RadioList.d.ts +1 -1
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +76 -3
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +22 -0
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +6 -2
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +39 -10
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +8 -2
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Stack/Stack.d.ts +28 -1
- package/dist/Stack/Stack.d.ts.map +1 -1
- package/dist/Stack/Stack.js +17 -1
- package/dist/Stack/StackItem.d.ts +12 -1
- package/dist/Stack/StackItem.d.ts.map +1 -1
- package/dist/Stack/StackItem.js +8 -1
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +6 -0
- package/dist/TabList/TabList.d.ts +14 -3
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +75 -4
- package/dist/TabList/TabListContext.d.ts +5 -0
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +5 -0
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +6 -1
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +7 -1
- package/dist/Table/plugins/pagination/paginateData.d.ts +2 -1
- package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/paginateData.js +8 -3
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +6 -1
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +14 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +132 -3
- package/dist/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar/Toolbar.js +7 -3
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +56 -9
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +78 -2
- package/dist/TreeList/TreeListItem.d.ts +10 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +51 -12
- package/dist/TreeList/treeListItem.markers.stylex.d.ts +16 -0
- package/dist/TreeList/treeListItem.markers.stylex.d.ts.map +1 -0
- package/dist/TreeList/treeListItem.markers.stylex.js +22 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +58 -4
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +61 -0
- package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
- package/dist/VisuallyHidden/VisuallyHidden.js +65 -0
- package/dist/VisuallyHidden/index.d.ts +11 -0
- package/dist/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/VisuallyHidden/index.js +13 -0
- package/dist/astryx.css +7 -0
- package/dist/astryx.umd.js +48 -48
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/focusableSelector.d.ts +22 -0
- package/dist/hooks/focusableSelector.d.ts.map +1 -0
- package/dist/hooks/focusableSelector.js +24 -0
- package/dist/hooks/index.d.ts +10 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +6 -2
- package/dist/hooks/useAnnounce.d.ts +40 -0
- package/dist/hooks/useAnnounce.d.ts.map +1 -0
- package/dist/hooks/useAnnounce.js +142 -0
- package/dist/hooks/useClickableContainer.d.ts +16 -1
- package/dist/hooks/useClickableContainer.d.ts.map +1 -1
- package/dist/hooks/useClickableContainer.js +16 -4
- package/dist/hooks/useEntryAnimation.d.ts.map +1 -1
- package/dist/hooks/useEntryAnimation.js +4 -4
- package/dist/hooks/useFocusTrap.d.ts +18 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +87 -3
- package/dist/hooks/useGridFocus.d.ts +32 -1
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +143 -58
- package/dist/hooks/useListFocus.d.ts +78 -7
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +305 -52
- package/dist/hooks/useLongPress.d.ts +21 -0
- package/dist/hooks/useLongPress.d.ts.map +1 -0
- package/dist/hooks/useLongPress.js +89 -0
- package/dist/hooks/useTreeFocus.d.ts +133 -0
- package/dist/hooks/useTreeFocus.d.ts.map +1 -0
- package/dist/hooks/useTreeFocus.js +274 -0
- package/dist/hooks/useTypeahead.d.ts +63 -0
- package/dist/hooks/useTypeahead.d.ts.map +1 -0
- package/dist/hooks/useTypeahead.js +117 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/package.json +11 -5
- package/src/Avatar/Avatar.test.tsx +37 -0
- package/src/Avatar/Avatar.tsx +10 -5
- package/src/Breadcrumbs/BreadcrumbItem.tsx +20 -5
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -10
- package/src/Calendar/Calendar.doc.mjs +1 -1
- package/src/Calendar/Calendar.test.tsx +147 -4
- package/src/Calendar/Calendar.tsx +52 -43
- package/src/Calendar/styles.ts +4 -9
- package/src/Carousel/Carousel.test.tsx +20 -0
- package/src/Carousel/Carousel.tsx +16 -1
- package/src/Chat/ChatMessageList.doc.mjs +8 -0
- package/src/Chat/ChatMessageList.test.tsx +18 -0
- package/src/Chat/ChatMessageList.tsx +16 -0
- package/src/Chat/useTriggerMenu.tsx +3 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +14 -25
- package/src/CheckboxInput/CheckboxInput.tsx +4 -2
- package/src/CheckboxList/CheckboxList.test.tsx +30 -14
- package/src/CheckboxList/CheckboxList.tsx +18 -3
- package/src/CodeBlock/CodeBlock.test.tsx +115 -0
- package/src/CodeBlock/CodeBlock.tsx +61 -33
- package/src/ContextMenu/ContextMenu.doc.mjs +6 -0
- package/src/ContextMenu/ContextMenu.test.tsx +157 -1
- package/src/ContextMenu/ContextMenu.tsx +116 -7
- package/src/DateInput/DateInput.test.tsx +59 -0
- package/src/DateInput/DateInput.tsx +24 -7
- package/src/DateRangeInput/DateRangeInput.test.tsx +69 -18
- package/src/DateRangeInput/DateRangeInput.tsx +7 -3
- package/src/DateTimeInput/DateTimeInput.doc.mjs +7 -0
- package/src/DateTimeInput/DateTimeInput.test.tsx +99 -6
- package/src/DateTimeInput/DateTimeInput.tsx +32 -3
- package/src/Dialog/Dialog.tsx +12 -0
- package/src/DropdownMenu/DropdownMenu.test.tsx +56 -19
- package/src/DropdownMenu/DropdownMenu.tsx +48 -2
- package/src/Field/Field.test.tsx +32 -0
- package/src/Field/Field.tsx +23 -5
- package/src/Field/FieldLabel.tsx +55 -17
- package/src/FileInput/FileInput.test.tsx +104 -49
- package/src/FileInput/FileInput.tsx +27 -3
- package/src/InputGroup/InputGroup.test.tsx +21 -63
- package/src/InputGroup/InputGroup.tsx +4 -1
- package/src/Kbd/Kbd.test.tsx +22 -4
- package/src/Kbd/Kbd.tsx +35 -3
- package/src/Layer/layerAnimations.stylex.ts +20 -4
- package/src/Layer/useLayer.doc.mjs +5 -0
- package/src/Layer/useLayer.tsx +67 -6
- package/src/Layout/padding.stylex.ts +52 -0
- package/src/Lightbox/Lightbox.test.tsx +53 -5
- package/src/Lightbox/Lightbox.tsx +9 -4
- package/src/Link/Link.doc.mjs +14 -0
- package/src/Link/Link.test.tsx +32 -0
- package/src/Link/Link.tsx +41 -4
- package/src/Markdown/Markdown.test.tsx +11 -0
- package/src/Markdown/Markdown.tsx +5 -0
- package/src/MetadataList/MetadataListItem.doc.mjs +4 -0
- package/src/MultiSelector/MultiSelector.test.tsx +172 -8
- package/src/MultiSelector/MultiSelector.tsx +73 -11
- package/src/NavMenu/NavHeadingMenu.test.tsx +77 -1
- package/src/NavMenu/NavHeadingMenu.tsx +50 -3
- package/src/NumberInput/NumberInput.test.tsx +72 -38
- package/src/NumberInput/NumberInput.tsx +12 -1
- package/src/Pagination/Pagination.doc.mjs +3 -3
- package/src/Pagination/Pagination.test.tsx +117 -5
- package/src/Pagination/Pagination.tsx +21 -1
- package/src/Popover/usePopover.doc.mjs +7 -3
- package/src/Popover/usePopover.tsx +49 -6
- package/src/PowerSearch/PowerSearch.tsx +3 -0
- package/src/ProgressBar/ProgressBar.test.tsx +34 -26
- package/src/ProgressBar/ProgressBar.tsx +1 -1
- package/src/RadioList/RadioList.test.tsx +129 -14
- package/src/RadioList/RadioList.tsx +103 -8
- package/src/SegmentedControl/SegmentedControl.test.tsx +84 -40
- package/src/SegmentedControl/SegmentedControl.tsx +26 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +4 -1
- package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
- package/src/Selector/Selector.test.tsx +146 -14
- package/src/Selector/Selector.tsx +59 -30
- package/src/SideNav/SideNav.test.tsx +16 -0
- package/src/SideNav/SideNavItem.tsx +2 -4
- package/src/Skeleton/Skeleton.test.tsx +25 -0
- package/src/Skeleton/Skeleton.tsx +11 -1
- package/src/Spinner/Spinner.tsx +7 -1
- package/src/Stack/Stack.doc.mjs +57 -0
- package/src/Stack/Stack.test.tsx +55 -5
- package/src/Stack/Stack.tsx +53 -1
- package/src/Stack/StackItem.test.tsx +23 -0
- package/src/Stack/StackItem.tsx +20 -0
- package/src/TabList/Tab.tsx +6 -0
- package/src/TabList/TabList.doc.mjs +6 -0
- package/src/TabList/TabList.test.tsx +167 -0
- package/src/TabList/TabList.tsx +103 -9
- package/src/TabList/TabListContext.ts +7 -3
- package/src/TabList/TabMenu.tsx +6 -3
- package/src/Table/Table.test.tsx +10 -0
- package/src/Table/Table.tsx +5 -0
- package/src/Table/plugins/pagination/paginateData.ts +10 -3
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +16 -0
- package/src/Table/plugins/pagination/useTablePagination.tsx +8 -1
- package/src/Toast/Toast.tsx +14 -0
- package/src/Toast/ToastViewport.test.tsx +204 -0
- package/src/Toast/ToastViewport.tsx +167 -21
- package/src/Toolbar/Toolbar.test.tsx +45 -0
- package/src/Toolbar/Toolbar.tsx +5 -2
- package/src/Tooltip/Tooltip.test.tsx +68 -0
- package/src/Tooltip/useTooltip.tsx +55 -8
- package/src/TreeList/TreeList.test.tsx +295 -6
- package/src/TreeList/TreeList.tsx +84 -1
- package/src/TreeList/TreeListItem.tsx +50 -5
- package/src/TreeList/treeListItem.markers.stylex.ts +20 -0
- package/src/Typeahead/BaseTypeahead.tsx +69 -8
- package/src/Typeahead/Typeahead.test.tsx +160 -0
- package/src/VisuallyHidden/VisuallyHidden.doc.mjs +80 -0
- package/src/VisuallyHidden/VisuallyHidden.test.tsx +76 -0
- package/src/VisuallyHidden/VisuallyHidden.tsx +113 -0
- package/src/VisuallyHidden/index.ts +15 -0
- package/src/hooks/focusableSelector.ts +25 -0
- package/src/hooks/index.ts +21 -2
- package/src/hooks/useAnnounce.test.tsx +101 -0
- package/src/hooks/useAnnounce.ts +168 -0
- package/src/hooks/useClickableContainer.ts +16 -4
- package/src/hooks/useEntryAnimation.ts +16 -4
- package/src/hooks/useFocusTrap.test.tsx +132 -0
- package/src/hooks/useFocusTrap.ts +98 -4
- package/src/hooks/useGridFocus.ts +184 -64
- package/src/hooks/useListFocus.doc.mjs +49 -10
- package/src/hooks/useListFocus.test.tsx +375 -0
- package/src/hooks/useListFocus.ts +395 -57
- package/src/hooks/useLongPress.test.tsx +134 -0
- package/src/hooks/useLongPress.ts +119 -0
- package/src/hooks/useTreeFocus.doc.mjs +126 -0
- package/src/hooks/useTreeFocus.test.tsx +214 -0
- package/src/hooks/useTreeFocus.ts +464 -0
- package/src/hooks/useTypeahead.test.tsx +109 -0
- package/src/hooks/useTypeahead.ts +183 -0
- package/src/index.ts +1 -0
- package/src/utils/index.ts +7 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @astryxdesign/core
|
|
2
2
|
|
|
3
|
-
Core UI components, theme system, and utilities for the
|
|
3
|
+
Core UI components, theme system, and utilities for the Astryx design system. For project setup, see [Quick Start](#quick-start) below.
|
|
4
4
|
|
|
5
5
|
## Component Docs
|
|
6
6
|
|
|
@@ -15,9 +15,9 @@ node node_modules/@astryxdesign/core/docs.mjs --list --brief # brief summaries
|
|
|
15
15
|
## Page Layouts
|
|
16
16
|
|
|
17
17
|
Building a full page? Start with a template rather than composing from scratch.
|
|
18
|
-
Templates are content-only; they compose `
|
|
18
|
+
Templates are content-only; they compose `Layout` with header, content, and
|
|
19
19
|
panel slots into common page patterns (dashboards, settings, forms, detail pages).
|
|
20
|
-
Wrap them in your own app chrome (`
|
|
20
|
+
Wrap them in your own app chrome (`AppShell`, `TopNav`, `SideNav`) to add
|
|
21
21
|
global navigation.
|
|
22
22
|
|
|
23
23
|
Requires `@astryxdesign/cli` (`npm install -D @astryxdesign/cli`):
|
|
@@ -28,7 +28,7 @@ npx astryx template dashboard # emit full page source
|
|
|
28
28
|
npx astryx template settings --skeleton # layout skeleton with spatial annotations
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## Astryx CLI
|
|
32
32
|
|
|
33
33
|
The CLI (`@astryxdesign/cli`) provides additional tooling:
|
|
34
34
|
|
|
@@ -38,11 +38,11 @@ npx astryx component Button # full docs + related block templates
|
|
|
38
38
|
npx astryx docs # reference docs (principles, tokens, theming, styling)
|
|
39
39
|
npx astryx docs theme # theming guide (Theme, defineTheme, light/dark)
|
|
40
40
|
npx astryx docs tokens # spacing, color, radius, typography token reference
|
|
41
|
-
npx astryx init # initialize
|
|
41
|
+
npx astryx init # initialize Astryx in your project
|
|
42
42
|
npx astryx theme build # build theme CSS for production
|
|
43
43
|
npx astryx swizzle Button # eject component source for customization
|
|
44
44
|
npx astryx upgrade --apply # run codemods to migrate between versions
|
|
45
|
-
npx astryx discover # discover external
|
|
45
|
+
npx astryx discover # discover external Astryx packages
|
|
46
46
|
npx astryx gap-report # report a missing capability
|
|
47
47
|
```
|
|
48
48
|
|
|
@@ -62,7 +62,7 @@ npx astryx gap-report # report a missing capability
|
|
|
62
62
|
|
|
63
63
|
## Quick Start
|
|
64
64
|
|
|
65
|
-
Install
|
|
65
|
+
Install Astryx and a theme:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
68
|
npm install @astryxdesign/core @astryxdesign/theme-neutral
|
|
@@ -122,7 +122,7 @@ export default function RootLayout({children}: {children: React.ReactNode}) {
|
|
|
122
122
|
|
|
123
123
|
### Next.js + Tailwind
|
|
124
124
|
|
|
125
|
-
No build plugins needed;
|
|
125
|
+
No build plugins needed; Astryx ships pre-built CSS that works alongside Tailwind.
|
|
126
126
|
|
|
127
127
|
**`src/app/globals.css`**
|
|
128
128
|
|
|
@@ -150,7 +150,7 @@ The `tailwind-theme.css` import maps system tokens to Tailwind utilities via `@t
|
|
|
150
150
|
|
|
151
151
|
Some useful mappings:
|
|
152
152
|
|
|
153
|
-
| Tailwind class |
|
|
153
|
+
| Tailwind class | Astryx token |
|
|
154
154
|
| --------------------------------------------------------- | ------------------------------------------------- |
|
|
155
155
|
| `text-primary` / `text-secondary` | `--color-text-primary` / `--color-text-secondary` |
|
|
156
156
|
| `bg-surface` / `bg-card` / `bg-body` | `--color-background-surface` / `card` / `body` |
|
|
@@ -160,7 +160,7 @@ Some useful mappings:
|
|
|
160
160
|
| `rounded-sm` / `rounded-md` / `rounded-lg` | `--radius-inner` / `element` / `container` |
|
|
161
161
|
| `shadow-sm` / `shadow-md` / `shadow-lg` | `--shadow-low` / `med` / `high` |
|
|
162
162
|
|
|
163
|
-
Spacing references `var(--spacing-1)` as the base unit, so `p-4` = 16px, matching
|
|
163
|
+
Spacing references `var(--spacing-1)` as the base unit, so `p-4` = 16px, matching Astryx's `--spacing-4`. Arbitrary values still work as an escape hatch: `bg-[var(--color-background-surface)]`.
|
|
164
164
|
|
|
165
165
|
**`src/app/providers.tsx`**
|
|
166
166
|
|
|
@@ -204,7 +204,7 @@ That's it. Start using components:
|
|
|
204
204
|
import {Button} from '@astryxdesign/core/Button';
|
|
205
205
|
|
|
206
206
|
export default function Page() {
|
|
207
|
-
return <Button label="Hello
|
|
207
|
+
return <Button label="Hello Astryx" variant="primary" />;
|
|
208
208
|
}
|
|
209
209
|
```
|
|
210
210
|
|
|
@@ -232,7 +232,7 @@ Providers and layout are the same as the Tailwind example (use `@astryxdesign/th
|
|
|
232
232
|
npm install @astryxdesign/core @astryxdesign/theme-neutral
|
|
233
233
|
```
|
|
234
234
|
|
|
235
|
-
Same CSS imports and providers as above. No build plugins needed;
|
|
235
|
+
Same CSS imports and providers as above. No build plugins needed; Astryx ships pre-built.
|
|
236
236
|
|
|
237
237
|
### No build step (CDN)
|
|
238
238
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/Avatar/Avatar.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsC5C;;GAEG;AACH,KAAK,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExE;;GAEG;AACH,KAAK,iBAAiB,GAClB,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgBpD;AAqFD,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;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAsCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,WAAW,EACX,IAAI,EACJ,IAAc,EACd,GAAG,EACH,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/Avatar/Avatar.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsC5C;;GAEG;AACH,KAAK,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExE;;GAEG;AACH,KAAK,iBAAiB,GAClB,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgBpD;AAqFD,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;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAsCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,WAAW,EACX,IAAI,EACJ,IAAc,EACd,GAAG,EACH,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+BAmFb;yBAhGe,MAAM"}
|
package/dist/Avatar/Avatar.js
CHANGED
|
@@ -247,7 +247,12 @@ export function Avatar({
|
|
|
247
247
|
const showFallbackImage = !showImage && fallbackSrc && !fallbackError;
|
|
248
248
|
const showInitials = !showImage && !showFallbackImage && name;
|
|
249
249
|
const showIcon = !showImage && !showFallbackImage && !name;
|
|
250
|
-
|
|
250
|
+
|
|
251
|
+
// A meaningful accessible name comes from `alt` or `name`. With neither, the
|
|
252
|
+
// avatar is decorative — expose it as `presentation`/`aria-hidden` rather than
|
|
253
|
+
// announcing a meaningless generic "Avatar" (obs-9).
|
|
254
|
+
const accessibleName = alt || name;
|
|
255
|
+
const isDecorative = !accessibleName;
|
|
251
256
|
const avatarGroup = useAvatarGroup();
|
|
252
257
|
const resolvedSize = avatarGroup?.size ?? size;
|
|
253
258
|
const numericSize = useMemo(() => resolveSize(resolvedSize), [resolvedSize]);
|
|
@@ -255,8 +260,9 @@ export function Avatar({
|
|
|
255
260
|
value: numericSize,
|
|
256
261
|
children: /*#__PURE__*/_jsxs("div", {
|
|
257
262
|
ref: ref,
|
|
258
|
-
role:
|
|
259
|
-
"aria-label": accessibleName,
|
|
263
|
+
role: isDecorative ? 'presentation' : 'img',
|
|
264
|
+
"aria-label": isDecorative ? undefined : accessibleName,
|
|
265
|
+
"aria-hidden": isDecorative || undefined,
|
|
260
266
|
"data-testid": testId,
|
|
261
267
|
...mergeProps(themeProps('avatar', {
|
|
262
268
|
size: resolvedSize
|
|
@@ -266,14 +272,14 @@ export function Avatar({
|
|
|
266
272
|
...stylex.props(styles.content, dynamicStyles.size(numericSize)),
|
|
267
273
|
children: [showImage && /*#__PURE__*/_jsx("img", {
|
|
268
274
|
src: src,
|
|
269
|
-
alt:
|
|
275
|
+
alt: "",
|
|
270
276
|
onError: () => setImageError(true),
|
|
271
277
|
...{
|
|
272
278
|
className: "xh8yej3 x5yr21d xl1xv1r"
|
|
273
279
|
}
|
|
274
280
|
}), showFallbackImage && /*#__PURE__*/_jsx("img", {
|
|
275
281
|
src: fallbackSrc,
|
|
276
|
-
alt:
|
|
282
|
+
alt: "",
|
|
277
283
|
onError: () => setFallbackError(true),
|
|
278
284
|
...{
|
|
279
285
|
className: "xh8yej3 x5yr21d xl1xv1r"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAIZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAoFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,GACtB,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAIZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAoFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,GACtB,EAAE,mBAAmB,qBAqJrB;yBAjKe,cAAc"}
|
|
@@ -88,12 +88,20 @@ export function BreadcrumbItem({
|
|
|
88
88
|
const LinkComponent = useLinkComponent(as);
|
|
89
89
|
const isSupporting = ctx.variant === 'supporting';
|
|
90
90
|
const liRef = useRef(null);
|
|
91
|
+
// Points at the element we render to hold the item's content (the
|
|
92
|
+
// link/button/span in the auto-candidate path). Auto-current detection sets
|
|
93
|
+
// aria-current on this instead of guessing the <li>'s last child.
|
|
94
|
+
const contentRef = useRef(null);
|
|
91
95
|
const isCurrent = isCurrentProp === true;
|
|
92
96
|
const isAutoCandidate = isCurrentProp == null;
|
|
93
97
|
|
|
94
98
|
// Auto-detect: if no sibling has aria-current="page" and this is the last
|
|
95
99
|
// non-separator item, set aria-current on our content element.
|
|
96
100
|
// Runs as useEffect (not layout) — only sets an aria attribute, no visual change.
|
|
101
|
+
// Placed on the item's content element (the link/button/span after the
|
|
102
|
+
// separator), matching where the explicit `isCurrent` path sets it, so
|
|
103
|
+
// aria-current lands on the actual interactive element — including when the
|
|
104
|
+
// last item is a link — rather than on the outer <li> (navigation-11).
|
|
97
105
|
useEffect(() => {
|
|
98
106
|
if (!isAutoCandidate) {
|
|
99
107
|
return;
|
|
@@ -112,11 +120,16 @@ export function BreadcrumbItem({
|
|
|
112
120
|
const isLast = items.length > 0 && items[items.length - 1] === li;
|
|
113
121
|
const hasExplicit = ol.querySelector('[aria-current="page"]');
|
|
114
122
|
if (isLast && !hasExplicit) {
|
|
115
|
-
|
|
123
|
+
// We control the element that holds the content (see the auto-candidate
|
|
124
|
+
// render path below), so set aria-current on that ref rather than
|
|
125
|
+
// assuming a positional last child. Fall back to the <li> only if the
|
|
126
|
+
// ref is somehow unresolved.
|
|
127
|
+
const target = contentRef.current ?? li;
|
|
128
|
+
target.setAttribute('aria-current', 'page');
|
|
129
|
+
return () => {
|
|
130
|
+
target.removeAttribute('aria-current');
|
|
131
|
+
};
|
|
116
132
|
}
|
|
117
|
-
return () => {
|
|
118
|
-
li.removeAttribute('aria-current');
|
|
119
|
-
};
|
|
120
133
|
});
|
|
121
134
|
const content = /*#__PURE__*/_jsxs(_Fragment, {
|
|
122
135
|
children: [startIcon && /*#__PURE__*/_jsx("span", {
|
|
@@ -165,6 +178,7 @@ export function BreadcrumbItem({
|
|
|
165
178
|
},
|
|
166
179
|
children: ctx.separator
|
|
167
180
|
}), href != null ? /*#__PURE__*/_jsx(LinkComponent, {
|
|
181
|
+
ref: contentRef,
|
|
168
182
|
href: href,
|
|
169
183
|
onClick: onClick,
|
|
170
184
|
...{
|
|
@@ -177,6 +191,7 @@ export function BreadcrumbItem({
|
|
|
177
191
|
}[!!isSupporting << 0],
|
|
178
192
|
children: content
|
|
179
193
|
}) : onClick != null ? /*#__PURE__*/_jsx("button", {
|
|
194
|
+
ref: contentRef,
|
|
180
195
|
type: "button",
|
|
181
196
|
onClick: onClick,
|
|
182
197
|
...{
|
|
@@ -189,6 +204,7 @@ export function BreadcrumbItem({
|
|
|
189
204
|
}[!!isSupporting << 0],
|
|
190
205
|
children: content
|
|
191
206
|
}) : /*#__PURE__*/_jsx("span", {
|
|
207
|
+
ref: contentRef,
|
|
192
208
|
...{
|
|
193
209
|
0: {
|
|
194
210
|
className: "x78zum5 x6s0dn4 xzye2dw x1pd3egz x1tgivj0"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6C5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAI5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BA4RtD;yBA5Re,QAAQ"}
|
|
@@ -23,7 +23,7 @@ import { Icon } from "../Icon/index.js";
|
|
|
23
23
|
import { useGridFocus } from "../hooks/index.js";
|
|
24
24
|
import { useCalendarDays, useCalendarConstraints, useCalendarRovingTabindex } from "./hooks/index.js";
|
|
25
25
|
import { calendarStyles, monthGridStyles, dayCellStyles, dayCellTheme } from "./styles.js";
|
|
26
|
-
import { plainDateFromISO, plainDateToISO, plainDateToDate,
|
|
26
|
+
import { plainDateFromISO, plainDateToISO, plainDateToDate, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateIsBefore, plainDateIsEqual, plainDateGetWeekNumber, plainDateFormat, DATE_FORMAT_WITH_WEEKDAY, DATE_FORMAT_MONTH_YEAR } from "../utils/plainDate.js";
|
|
27
27
|
import { mergeProps } from "../utils/index.js";
|
|
28
28
|
import { computeDayCellState, computeRangeRounding, computePreviewRounding, isEndpoint } from "./dayCellUtils.js";
|
|
29
29
|
|
|
@@ -361,21 +361,21 @@ function MonthGrid({
|
|
|
361
361
|
selectedDate: selectedDateForTabindex
|
|
362
362
|
});
|
|
363
363
|
|
|
364
|
-
// Helper to get the focused date from the currently focused element
|
|
364
|
+
// Helper to get the focused date from the currently focused element.
|
|
365
|
+
// Reads the machine-readable `data-date` (ISO) attribute rather than parsing
|
|
366
|
+
// the human-readable `aria-label` with `new Date()`, which is locale/format
|
|
367
|
+
// dependent and returns Invalid Date in non-English locales (e.g. fr-FR,
|
|
368
|
+
// ja-JP), silently swallowing month-boundary arrow navigation (complex-4).
|
|
365
369
|
const getFocusedDate = useCallback(() => {
|
|
366
370
|
const activeElement = document.activeElement;
|
|
367
371
|
if (!activeElement) {
|
|
368
372
|
return null;
|
|
369
373
|
}
|
|
370
|
-
const
|
|
371
|
-
if (!
|
|
374
|
+
const iso = activeElement.getAttribute('data-date');
|
|
375
|
+
if (!iso) {
|
|
372
376
|
return null;
|
|
373
377
|
}
|
|
374
|
-
|
|
375
|
-
if (isNaN(parsed.getTime())) {
|
|
376
|
-
return null;
|
|
377
|
-
}
|
|
378
|
-
return plainDateToISO(plainDateFromDate(parsed));
|
|
378
|
+
return iso;
|
|
379
379
|
}, []);
|
|
380
380
|
|
|
381
381
|
// Handle navigation to previous month
|
|
@@ -408,13 +408,23 @@ function MonthGrid({
|
|
|
408
408
|
}
|
|
409
409
|
}, [getFocusedDate, onNavigateNext]);
|
|
410
410
|
|
|
411
|
-
// Grid focus navigation
|
|
411
|
+
// Grid focus navigation.
|
|
412
|
+
//
|
|
413
|
+
// The hook enumerates ALL grid cells (every `role="gridcell"`, including
|
|
414
|
+
// disabled days and empty placeholder cells) so the true 7-column geometry is
|
|
415
|
+
// preserved. `isCellFocusable` / `getFocusTarget` tell the hook which cells
|
|
416
|
+
// can take focus (those containing an enabled day button) and where to send
|
|
417
|
+
// focus (the day button inside the cell). Arrow keys move to the target
|
|
418
|
+
// row/column and, if that cell is disabled, continue in the same direction to
|
|
419
|
+
// the next enabled cell.
|
|
412
420
|
const {
|
|
413
421
|
gridRef,
|
|
414
422
|
handleKeyDown: handleGridKeyDown
|
|
415
423
|
} = useGridFocus({
|
|
416
424
|
columns: 7,
|
|
417
|
-
cellSelector: '
|
|
425
|
+
cellSelector: '[role="gridcell"]',
|
|
426
|
+
isCellFocusable: cell => cell.querySelector('button:not([disabled])') !== null,
|
|
427
|
+
getFocusTarget: cell => cell.querySelector('button'),
|
|
418
428
|
onNavigateBefore: handleNavigatePrevious,
|
|
419
429
|
onNavigateAfter: handleNavigateNext,
|
|
420
430
|
onPageUp: handlePageUp,
|
|
@@ -428,10 +438,10 @@ function MonthGrid({
|
|
|
428
438
|
}
|
|
429
439
|
const buttons = gridRef.current.querySelectorAll('button:not([disabled])');
|
|
430
440
|
const targetPd = plainDateFromISO(pendingFocus);
|
|
431
|
-
const
|
|
441
|
+
const targetIso = plainDateToISO(targetPd);
|
|
432
442
|
let targetButton = null;
|
|
433
443
|
for (const button of buttons) {
|
|
434
|
-
if (button.getAttribute('
|
|
444
|
+
if (button.getAttribute('data-date') === targetIso) {
|
|
435
445
|
targetButton = button;
|
|
436
446
|
break;
|
|
437
447
|
}
|
|
@@ -482,30 +492,32 @@ function MonthGrid({
|
|
|
482
492
|
const monthLabel = useMemo(() => {
|
|
483
493
|
return plainDateFormat(month, DATE_FORMAT_MONTH_YEAR);
|
|
484
494
|
}, [month]);
|
|
485
|
-
return /*#__PURE__*/
|
|
495
|
+
return /*#__PURE__*/_jsx("div", {
|
|
486
496
|
...stylex.props(monthGridStyles.monthGrid),
|
|
487
|
-
children:
|
|
488
|
-
...stylex.props(monthGridStyles.weekHeader, hasWeekNumbers && monthGridStyles.weekHeaderWithNumbers),
|
|
489
|
-
children: [hasWeekNumbers && /*#__PURE__*/_jsx("div", {
|
|
490
|
-
...stylex.props(monthGridStyles.dayName, monthGridStyles.weekNumberHeader)
|
|
491
|
-
}), dayNames.map(name => /*#__PURE__*/_jsx("div", {
|
|
492
|
-
role: "columnheader",
|
|
493
|
-
...stylex.props(monthGridStyles.dayName),
|
|
494
|
-
children: name
|
|
495
|
-
}, name))]
|
|
496
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
497
|
+
children: /*#__PURE__*/_jsxs("div", {
|
|
497
498
|
ref: gridRef,
|
|
498
499
|
role: "grid",
|
|
499
500
|
"aria-label": monthLabel,
|
|
500
501
|
onKeyDown: handleGridKeyDown,
|
|
501
502
|
...stylex.props(monthGridStyles.daysGrid, hasWeekNumbers && monthGridStyles.daysGridWithNumbers),
|
|
502
|
-
children:
|
|
503
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
504
|
+
role: "row",
|
|
505
|
+
...stylex.props(monthGridStyles.weekRow),
|
|
506
|
+
children: [hasWeekNumbers && /*#__PURE__*/_jsx("div", {
|
|
507
|
+
...stylex.props(monthGridStyles.dayName, monthGridStyles.weekNumberHeader)
|
|
508
|
+
}), dayNames.map(name => /*#__PURE__*/_jsx("div", {
|
|
509
|
+
role: "columnheader",
|
|
510
|
+
...stylex.props(monthGridStyles.dayName),
|
|
511
|
+
children: name
|
|
512
|
+
}, name))]
|
|
513
|
+
}), weeks.map(week => {
|
|
503
514
|
const weekDate = week.find(d => !d.isOutside)?.date || week[0].date;
|
|
504
515
|
const weekNum = plainDateGetWeekNumber(weekDate);
|
|
505
516
|
return /*#__PURE__*/_jsxs("div", {
|
|
506
517
|
role: "row",
|
|
507
518
|
...stylex.props(monthGridStyles.weekRow),
|
|
508
519
|
children: [hasWeekNumbers && /*#__PURE__*/_jsx("div", {
|
|
520
|
+
role: "rowheader",
|
|
509
521
|
...stylex.props(monthGridStyles.weekNumber),
|
|
510
522
|
children: weekNum
|
|
511
523
|
}), week.map((day, dayIndex) => /*#__PURE__*/_jsx(DayCell, {
|
|
@@ -525,8 +537,8 @@ function MonthGrid({
|
|
|
525
537
|
onDayHover: onDayHover
|
|
526
538
|
}, day.iso))]
|
|
527
539
|
}, plainDateToISO(weekDate));
|
|
528
|
-
})
|
|
529
|
-
})
|
|
540
|
+
})]
|
|
541
|
+
})
|
|
530
542
|
});
|
|
531
543
|
}
|
|
532
544
|
|
|
@@ -556,7 +568,10 @@ function DayCell({
|
|
|
556
568
|
dayNumber
|
|
557
569
|
} = day;
|
|
558
570
|
if (isOutside && !hasOutsideDays) {
|
|
571
|
+
// Empty placeholder cell — still a gridcell so the grid geometry stays a
|
|
572
|
+
// clean 7-per-row set for keyboard navigation.
|
|
559
573
|
return /*#__PURE__*/_jsx("div", {
|
|
574
|
+
role: "gridcell",
|
|
560
575
|
...stylex.props(dayCellStyles.cell)
|
|
561
576
|
});
|
|
562
577
|
}
|
|
@@ -577,6 +592,7 @@ function DayCell({
|
|
|
577
592
|
const rangeRounding = computeRangeRounding(state);
|
|
578
593
|
const previewRounding = computePreviewRounding(state);
|
|
579
594
|
return /*#__PURE__*/_jsxs("div", {
|
|
595
|
+
role: "gridcell",
|
|
580
596
|
...stylex.props(dayCellStyles.cell),
|
|
581
597
|
children: [state.isInRange && /*#__PURE__*/_jsx("div", {
|
|
582
598
|
...stylex.props(dayCellStyles.rangeBg, dayCellTheme.rangeBg, rangeRounding.roundLeft && dayCellStyles.rangeBgRadiusLeft, rangeRounding.roundRight && dayCellStyles.rangeBgRadiusRight, state.isRangeStart && dayCellStyles.rangeInsetLeft, state.isRangeStart && rangeRounding.roundRight && dayCellStyles.rangeInsetRight, state.isRangeEnd && dayCellStyles.rangeInsetRight, state.isRangeStart && rangeRounding.roundLeft && dayCellStyles.rangeInsetLeft)
|
|
@@ -584,7 +600,6 @@ function DayCell({
|
|
|
584
600
|
...stylex.props(dayCellStyles.previewBg, dayCellTheme.previewBg, previewRounding.roundLeft && dayCellStyles.previewBgRadiusLeft, previewRounding.roundRight && dayCellStyles.previewBgRadiusRight, state.isPreviewStart && dayCellStyles.previewStart, state.isPreviewEnd && dayCellStyles.previewEnd)
|
|
585
601
|
}), /*#__PURE__*/_jsx("button", {
|
|
586
602
|
type: "button",
|
|
587
|
-
role: "gridcell",
|
|
588
603
|
"data-date": day.iso,
|
|
589
604
|
"aria-label": plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY),
|
|
590
605
|
"aria-selected": state.isSelected || state.isInRange || undefined,
|
|
@@ -55,17 +55,11 @@ export declare const monthGridStyles: Readonly<{
|
|
|
55
55
|
readonly monthGrid: Readonly<{
|
|
56
56
|
readonly flex: stylex.StyleXClassNameFor<"flex", "1 1 0">;
|
|
57
57
|
}>;
|
|
58
|
-
readonly weekHeader: Readonly<{
|
|
59
|
-
readonly display: stylex.StyleXClassNameFor<"display", "grid">;
|
|
60
|
-
readonly gridTemplateColumns: stylex.StyleXClassNameFor<"gridTemplateColumns", "repeat(7, 1fr)">;
|
|
61
|
-
readonly marginBottom: stylex.StyleXClassNameFor<"marginBottom", "4px">;
|
|
62
|
-
}>;
|
|
63
|
-
readonly weekHeaderWithNumbers: Readonly<{
|
|
64
|
-
readonly gridTemplateColumns: stylex.StyleXClassNameFor<"gridTemplateColumns", "auto repeat(7, 1fr)">;
|
|
65
|
-
}>;
|
|
66
58
|
readonly dayName: Readonly<{
|
|
67
59
|
readonly width: stylex.StyleXClassNameFor<"width", "32px">;
|
|
68
|
-
readonly height: stylex.StyleXClassNameFor<"height", "32px"
|
|
60
|
+
readonly height: stylex.StyleXClassNameFor<"height", `calc(${stylex.StyleXVar<"32px">} + ${stylex.StyleXVar<"4px">})`>;
|
|
61
|
+
readonly paddingBottom: stylex.StyleXClassNameFor<"paddingBottom", "4px">;
|
|
62
|
+
readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
|
|
69
63
|
readonly display: stylex.StyleXClassNameFor<"display", "flex">;
|
|
70
64
|
readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
|
|
71
65
|
readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCzB,CAAC;AAMH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCzB,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC1B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GxB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoEvB,CAAC"}
|
package/dist/Calendar/styles.js
CHANGED
|
@@ -77,19 +77,11 @@ export const monthGridStyles = {
|
|
|
77
77
|
kUk6DE: "x1cqoux5",
|
|
78
78
|
$$css: true
|
|
79
79
|
},
|
|
80
|
-
weekHeader: {
|
|
81
|
-
k1xSpc: "xrvj5dj",
|
|
82
|
-
kumcoG: "x1mzazjb",
|
|
83
|
-
k1K539: "x14cgwvg",
|
|
84
|
-
$$css: true
|
|
85
|
-
},
|
|
86
|
-
weekHeaderWithNumbers: {
|
|
87
|
-
kumcoG: "x1wthsqz",
|
|
88
|
-
$$css: true
|
|
89
|
-
},
|
|
90
80
|
dayName: {
|
|
91
81
|
kzqmXN: "x805d0l",
|
|
92
|
-
kZKoxP: "
|
|
82
|
+
kZKoxP: "x1u5rhrp",
|
|
83
|
+
kGO01o: "xy143xn",
|
|
84
|
+
kB7OPa: "x9f619",
|
|
93
85
|
k1xSpc: "x78zum5",
|
|
94
86
|
kGNEyG: "x6s0dn4",
|
|
95
87
|
kjj79g: "xl56j7k",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../src/Carousel/Carousel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA2C,MAAM,OAAO,CAAC;AAc/E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,kEAAkE;IAClE,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAyJD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,QAAQ,EACR,GAAO,EACP,UAAiB,EACjB,WAAkB,EAClB,OAAe,EACf,OAAO,EACP,YAAY,EAAE,SAAsB,EACpC,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,SAAS,EACb,EAAE,aAAa,+
|
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../src/Carousel/Carousel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA2C,MAAM,OAAO,CAAC;AAc/E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,kEAAkE;IAClE,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAyJD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,QAAQ,EACR,GAAO,EACP,UAAiB,EACjB,WAAkB,EAClB,OAAe,EACf,OAAO,EACP,YAAY,EAAE,SAAsB,EACpC,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,SAAS,EACb,EAAE,aAAa,+BA+If;yBA7Je,QAAQ"}
|
|
@@ -239,9 +239,13 @@ export function Carousel({
|
|
|
239
239
|
const firstChild = el.firstElementChild;
|
|
240
240
|
const itemWidth = firstChild ? firstChild.offsetWidth : 0;
|
|
241
241
|
const amount = el.clientWidth - itemWidth * 0.5;
|
|
242
|
+
// Respect the user's reduced-motion preference — mirrors the CSS
|
|
243
|
+
// scroll-behavior override so button-driven scrolling doesn't animate
|
|
244
|
+
// for users who opted out of motion.
|
|
245
|
+
const prefersReducedMotion = typeof window !== 'undefined' && typeof window.matchMedia === 'function' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
242
246
|
el.scrollBy({
|
|
243
247
|
left: direction * Math.max(amount, itemWidth),
|
|
244
|
-
behavior: 'smooth'
|
|
248
|
+
behavior: prefersReducedMotion ? 'auto' : 'smooth'
|
|
245
249
|
});
|
|
246
250
|
}, []);
|
|
247
251
|
const fadeStyle = hasEdgeFade ? overflowStart && overflowEnd ? styles.fadeBoth : overflowStart ? styles.fadeStart : overflowEnd ? styles.fadeEnd : null : null;
|
|
@@ -285,7 +289,13 @@ export function Carousel({
|
|
|
285
289
|
label: "Scroll left",
|
|
286
290
|
variant: "ghost",
|
|
287
291
|
size: "sm",
|
|
288
|
-
isIconOnly: true
|
|
292
|
+
isIconOnly: true
|
|
293
|
+
// Disabled when there's nothing to scroll toward. Keeps the
|
|
294
|
+
// button mounted (stable layout/focus) but removes it from the
|
|
295
|
+
// tab order and a11y tree while it's visually hidden, so
|
|
296
|
+
// keyboard users don't land on an invisible control.
|
|
297
|
+
,
|
|
298
|
+
isDisabled: !overflowStart,
|
|
289
299
|
onClick: () => scrollBy(-1),
|
|
290
300
|
xstyle: styles.buttonRadiusOverride
|
|
291
301
|
})
|
|
@@ -306,7 +316,11 @@ export function Carousel({
|
|
|
306
316
|
label: "Scroll right",
|
|
307
317
|
variant: "ghost",
|
|
308
318
|
size: "sm",
|
|
309
|
-
isIconOnly: true
|
|
319
|
+
isIconOnly: true
|
|
320
|
+
// See "Scroll left" — disabled while visually hidden so the
|
|
321
|
+
// button stays mounted but out of the tab order / a11y tree.
|
|
322
|
+
,
|
|
323
|
+
isDisabled: !overflowEnd,
|
|
310
324
|
onClick: () => scrollBy(1),
|
|
311
325
|
xstyle: styles.buttonRadiusOverride
|
|
312
326
|
})
|
|
@@ -52,6 +52,19 @@ export interface ChatMessageListProps extends BaseProps<HTMLDivElement> {
|
|
|
52
52
|
* be grouped) and row spacing should be tuned separately from density.
|
|
53
53
|
*/
|
|
54
54
|
gap?: SpacingStep;
|
|
55
|
+
/**
|
|
56
|
+
* Whether an assistant message is actively streaming into the list.
|
|
57
|
+
*
|
|
58
|
+
* The list is a `role="log"` / `aria-live="polite"` region, so while a
|
|
59
|
+
* message streams in token-by-token, screen readers would otherwise
|
|
60
|
+
* re-announce the accumulating partial text on every mutation. Set
|
|
61
|
+
* `isStreaming` to `true` for the duration of a stream: it marks the log
|
|
62
|
+
* `aria-busy="true"` so assistive tech waits and announces the completed
|
|
63
|
+
* message once, when `isStreaming` returns to `false`.
|
|
64
|
+
*
|
|
65
|
+
* @default false
|
|
66
|
+
*/
|
|
67
|
+
isStreaming?: boolean;
|
|
55
68
|
}
|
|
56
69
|
/**
|
|
57
70
|
* Presentational container for chat messages.
|
|
@@ -73,7 +86,7 @@ export interface ChatMessageListProps extends BaseProps<HTMLDivElement> {
|
|
|
73
86
|
* </ChatMessageList>
|
|
74
87
|
* ```
|
|
75
88
|
*/
|
|
76
|
-
export declare function ChatMessageList({ children, emptyState, scrollToTopAction, density, gap, xstyle, className, style, 'data-testid': testId, ref, }: ChatMessageListProps): import("react").JSX.Element;
|
|
89
|
+
export declare function ChatMessageList({ children, emptyState, scrollToTopAction, density, gap, isStreaming, xstyle, className, style, 'data-testid': testId, ref, }: ChatMessageListProps): import("react").JSX.Element;
|
|
77
90
|
export declare namespace ChatMessageList {
|
|
78
91
|
var displayName: string;
|
|
79
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAGhF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAGhF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4FD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,OAAoB,EACpB,GAAG,EACH,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,oBAAoB,+BA4FtB;yBAxGe,eAAe"}
|
|
@@ -145,6 +145,7 @@ export function ChatMessageList({
|
|
|
145
145
|
scrollToTopAction,
|
|
146
146
|
density = 'balanced',
|
|
147
147
|
gap,
|
|
148
|
+
isStreaming = false,
|
|
148
149
|
xstyle,
|
|
149
150
|
className,
|
|
150
151
|
style,
|
|
@@ -195,6 +196,7 @@ export function ChatMessageList({
|
|
|
195
196
|
ref: ref,
|
|
196
197
|
role: "log",
|
|
197
198
|
"aria-live": "polite",
|
|
199
|
+
"aria-busy": isStreaming || undefined,
|
|
198
200
|
tabIndex: 0,
|
|
199
201
|
"data-testid": testId,
|
|
200
202
|
...mergeProps(themeProps('chat-message-list', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTriggerMenu.d.ts","sourceRoot":"","sources":["../../src/Chat/useTriggerMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,gEAAgE;IAChE,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,oEAAoE;IACpE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC;IACnD,sCAAsC;IACtC,UAAU,EAAE,MAAM,SAAS,CAAC;IAC5B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE;QACT,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,eAAe,CAAC,EAAE,SAAS,CAAC;KAC7B,CAAC;CACH;AA+JD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,
|
|
1
|
+
{"version":3,"file":"useTriggerMenu.d.ts","sourceRoot":"","sources":["../../src/Chat/useTriggerMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,gEAAgE;IAChE,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,oEAAoE;IACpE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC;IACnD,sCAAsC;IACtC,UAAU,EAAE,MAAM,SAAS,CAAC;IAC5B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE;QACT,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,eAAe,CAAC,EAAE,SAAS,CAAC;KAC7B,CAAC;CACH;AA+JD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CA2ctB"}
|
|
@@ -159,7 +159,10 @@ export function useTriggerMenu(options) {
|
|
|
159
159
|
}, [removeAnchorSpan]),
|
|
160
160
|
hasLightDismiss: true,
|
|
161
161
|
hasCloseButton: false,
|
|
162
|
-
hasAutoFocus: false
|
|
162
|
+
hasAutoFocus: false,
|
|
163
|
+
// The popup's own role="listbox" is the exposed semantics; focus stays in
|
|
164
|
+
// the contenteditable composer, so a modal dialog wrapper is incorrect.
|
|
165
|
+
role: 'none'
|
|
163
166
|
});
|
|
164
167
|
|
|
165
168
|
// Cleanup on unmount
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAY3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA4IhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAmCH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,GACJ,EAAE,kBAAkB,+
|
|
1
|
+
{"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAY3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA4IhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAmCH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,GACJ,EAAE,kBAAkB,+BAsKpB;yBA5Le,aAAa"}
|
|
@@ -227,7 +227,10 @@ export function CheckboxInput({
|
|
|
227
227
|
const isChecked = optimisticValue === true;
|
|
228
228
|
const isCheckedOrIndeterminate = isChecked || isIndeterminate;
|
|
229
229
|
|
|
230
|
-
// Sync the native indeterminate DOM property (can't be set via JSX
|
|
230
|
+
// Sync the native indeterminate DOM property (can't be set via JSX
|
|
231
|
+
// attribute). On a native checkbox this is the authoritative way to expose
|
|
232
|
+
// the mixed state — a separate aria-checked="mixed" would be redundant and
|
|
233
|
+
// can desync from / override the native state (forms-16), so it is omitted.
|
|
231
234
|
const indeterminateRef = useCallback(el => {
|
|
232
235
|
if (el) {
|
|
233
236
|
el.indeterminate = isIndeterminate;
|
|
@@ -275,7 +278,6 @@ export function CheckboxInput({
|
|
|
275
278
|
},
|
|
276
279
|
onFocus: onFocus,
|
|
277
280
|
onBlur: onBlur,
|
|
278
|
-
"aria-checked": isIndeterminate ? 'mixed' : undefined,
|
|
279
281
|
"aria-readonly": isReadOnly || undefined,
|
|
280
282
|
"aria-describedby": ariaDescribedBy,
|
|
281
283
|
"aria-invalid": status?.type === 'error' ? true : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxList.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAUrD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,MAAM,EACN,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,OAAoB,EACpB,WAAmB,EACnB,UAAkB,EAClB,UAAkB,EAClB,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,UAAU,GAC1B,EAAE,iBAAiB,+
|
|
1
|
+
{"version":3,"file":"CheckboxList.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAUrD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,MAAM,EACN,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,OAAoB,EACpB,WAAmB,EACnB,UAAkB,EAClB,UAAkB,EAClB,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,UAAU,GAC1B,EAAE,iBAAiB,+BAkGnB;yBArHe,YAAY"}
|