@godxjp/ui 31.31.8 → 32.0.1
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 +102 -121
- package/agent/START-HERE.md +10 -10
- package/agent/components/Accordion.json +2 -2
- package/agent/components/AccountChip.json +1 -1
- package/agent/components/Actions.json +1 -1
- package/agent/components/Activity.json +2 -2
- package/agent/components/Affix.json +1 -1
- package/agent/components/Alert.json +22 -6
- package/agent/components/AlertDialog.json +8 -1
- package/agent/components/Anchor.json +4 -3
- package/agent/components/AppLauncher.json +2 -2
- package/agent/components/AppProvider.json +19 -11
- package/agent/components/AppSettingPicker.json +18 -2
- package/agent/components/AppShell.json +4 -5
- package/agent/components/AreaChart.json +0 -1
- package/agent/components/AspectRatio.json +2 -2
- package/agent/components/Attachments.json +3 -3
- package/agent/components/AuthAccountSummary.json +1 -1
- package/agent/components/AuthDivider.json +1 -1
- package/agent/components/AuthExpiryProvider.json +0 -1
- package/agent/components/AuthFooter.json +2 -2
- package/agent/components/AuthIdentity.json +3 -3
- package/agent/components/AuthStack.json +1 -1
- package/agent/components/Avatar.json +2 -12
- package/agent/components/Badge.json +1 -1
- package/agent/components/BarChart.json +0 -1
- package/agent/components/BranchScopePicker.json +1 -1
- package/agent/components/Breadcrumb.json +1 -1
- package/agent/components/Button.json +3 -3
- package/agent/components/Calendar.json +1 -1
- package/agent/components/Card.json +2 -2
- package/agent/components/CardBar.json +0 -1
- package/agent/components/CardContent.json +0 -1
- package/agent/components/Carousel.json +4 -3
- package/agent/components/Cascader.json +1 -1
- package/agent/components/CenteredShell.json +78 -17
- package/agent/components/ChatBubble.json +3 -3
- package/agent/components/ChatBubbleList.json +3 -3
- package/agent/components/ChatComposer.json +3 -3
- package/agent/components/ChatSuggestion.json +3 -3
- package/agent/components/Checkbox.json +1 -1
- package/agent/components/CheckboxGroup.json +0 -1
- package/agent/components/CodeBlock.json +1 -1
- package/agent/components/Collapsible.json +4 -4
- package/agent/components/ColorPicker.json +1 -1
- package/agent/components/Command.json +5 -5
- package/agent/components/CommandPalette.json +1 -1
- package/agent/components/CompactBarTrend.json +1 -1
- package/agent/components/Conversations.json +3 -3
- package/agent/components/CredentialReveal.json +1 -1
- package/agent/components/DataState.json +2 -2
- package/agent/components/DataTable.json +1 -1
- package/agent/components/DatePicker.json +1 -1
- package/agent/components/Descriptions.json +1 -1
- package/agent/components/Dialog.json +2 -2
- package/agent/components/DraggablePanel.json +5 -4
- package/agent/components/DropdownMenu.json +1 -1
- package/agent/components/EmojiPicker.json +3 -2
- package/agent/components/EmptyState.json +1 -1
- package/agent/components/ErrorSurface.json +3 -3
- package/agent/components/FeatureList.json +1 -1
- package/agent/components/Field.json +0 -1
- package/agent/components/Flex.json +34 -4
- package/agent/components/FloatButton.json +6 -5
- package/agent/components/Form.json +1 -1
- package/agent/components/FormErrors.json +0 -1
- package/agent/components/FormField.json +6 -6
- package/agent/components/FormFieldArray.json +0 -1
- package/agent/components/FormFieldControl.json +0 -1
- package/agent/components/FormRoot.json +1 -1
- package/agent/components/Heading.json +3 -0
- package/agent/components/Icon.json +1 -1
- package/agent/components/Image.json +7 -4
- package/agent/components/InfiniteQueryState.json +1 -1
- package/agent/components/Input.json +1 -1
- package/agent/components/InputOTP.json +2 -2
- package/agent/components/Label.json +3 -3
- package/agent/components/LegalDocumentShell.json +5 -4
- package/agent/components/Legend.json +1 -1
- package/agent/components/LineChart.json +0 -1
- package/agent/components/Link.json +0 -1
- package/agent/components/ListRow.json +1 -1
- package/agent/components/Logo.json +5 -4
- package/agent/components/Marquee.json +4 -3
- package/agent/components/Masonry.json +4 -3
- package/agent/components/MasterDetail.json +1 -1
- package/agent/components/MegaMenu.json +4 -3
- package/agent/components/MobileShell.json +4 -4
- package/agent/components/NavList.json +1 -1
- package/agent/components/NumberInput.json +1 -1
- package/agent/components/OrgChart.json +4 -3
- package/agent/components/OrgSwitcher.json +1 -1
- package/agent/components/OverlayPortalProvider.json +0 -1
- package/agent/components/PageContainer.json +3 -3
- package/agent/components/PageCover.json +3 -2
- package/agent/components/Pagination.json +1 -1
- package/agent/components/PasswordInput.json +1 -1
- package/agent/components/PasswordStrength.json +1 -1
- package/agent/components/PermissionMatrix.json +1 -1
- package/agent/components/PieChart.json +0 -1
- package/agent/components/Popover.json +31 -6
- package/agent/components/PrefetchLink.json +1 -1
- package/agent/components/Progress.json +1 -1
- package/agent/components/Prose.json +1 -1
- package/agent/components/QrCode.json +1 -1
- package/agent/components/Radio.json +0 -1
- package/agent/components/RadioGroup.json +2 -2
- package/agent/components/RangeTimeline.json +2 -1
- package/agent/components/Rating.json +1 -1
- package/agent/components/RecordPicker.json +1 -1
- package/agent/components/ResizablePanel.json +1 -1
- package/agent/components/ResponsiveGrid.json +2 -2
- package/agent/components/Reveal.json +3 -3
- package/agent/components/ScrollArea.json +2 -2
- package/agent/components/SearchInput.json +1 -1
- package/agent/components/Segmented.json +1 -1
- package/agent/components/Select.json +7 -5
- package/agent/components/Separator.json +1 -1
- package/agent/components/ServiceCatalogCta.json +0 -1
- package/agent/components/ServiceLauncherCard.json +1 -1
- package/agent/components/ServiceRolePanel.json +1 -1
- package/agent/components/Sheet.json +5 -5
- package/agent/components/Sidebar.json +1 -1
- package/agent/components/Skeleton.json +26 -12
- package/agent/components/Slider.json +2 -2
- package/agent/components/SortableList.json +3 -2
- package/agent/components/SplitPane.json +1 -1
- package/agent/components/StatCard.json +1 -1
- package/agent/components/Steps.json +1 -1
- package/agent/components/Swatch.json +1 -1
- package/agent/components/Switch.json +1 -1
- package/agent/components/Table.json +1 -1
- package/agent/components/Tabs.json +3 -3
- package/agent/components/Text.json +5 -1
- package/agent/components/TextDiff.json +5 -4
- package/agent/components/Textarea.json +1 -1
- package/agent/components/ThemeScope.json +1 -1
- package/agent/components/ThoughtChain.json +3 -3
- package/agent/components/TimePicker.json +1 -1
- package/agent/components/Timeline.json +1 -1
- package/agent/components/TimelineGrid.json +5 -4
- package/agent/components/Toaster.json +0 -1
- package/agent/components/Toggle.json +3 -3
- package/agent/components/ToggleGroup.json +1 -1
- package/agent/components/Toolbar.json +10 -3
- package/agent/components/Tooltip.json +9 -9
- package/agent/components/Topbar.json +1 -1
- package/agent/components/TopbarItem.json +1 -1
- package/agent/components/Transfer.json +2 -2
- package/agent/components/Tree.json +1 -1
- package/agent/components/TreeSelect.json +1 -1
- package/agent/components/TwoFactorSetup.json +1 -1
- package/agent/components/Upload.json +1 -1
- package/agent/components/UploadCropDialog.json +1 -1
- package/agent/components/Welcome.json +3 -3
- package/agent/components/formatDate.json +2 -2
- package/agent/components/inertiaUpload.json +0 -1
- package/agent/components/useZodForm.json +0 -1
- package/agent/components-index.json +80 -154
- package/agent/components.json +541 -1737
- package/agent/index.json +10 -10
- package/agent/llms.txt +9 -9
- package/agent/patterns/account-recovery-settings.json +1 -1
- package/agent/patterns/auth-recovery-panels.json +2 -2
- package/agent/patterns/error-pages.json +1 -1
- package/agent/patterns/pricing-plans.json +17 -0
- package/agent/patterns-index.json +17 -1
- package/agent/patterns.json +21 -4
- package/agent/rules.json +30 -65
- package/agent/tokens.json +27 -57
- package/agent/vocabulary.json +3 -3
- package/dist/app/app-provider.d.ts +5 -3
- package/dist/app/app-provider.js +47 -12
- package/dist/app/date-format-labels.d.ts +3 -1
- package/dist/app/date-format-labels.js +2 -4
- package/dist/app/date-formats.d.ts +21 -2
- package/dist/app/date-formats.js +51 -2
- package/dist/app/index.d.ts +3 -1
- package/dist/app/index.js +5 -0
- package/dist/app/locales.d.ts +58 -3
- package/dist/app/locales.js +134 -8
- package/dist/app/preset.d.ts +25 -0
- package/dist/app/preset.js +10 -0
- package/dist/app/request-headers.d.ts +3 -3
- package/dist/app/request-headers.js +19 -10
- package/dist/app/settings-scope.d.ts +54 -0
- package/dist/app/settings-scope.js +46 -0
- package/dist/app/tenant-theme.js +8 -3
- package/dist/app/time-format-labels.d.ts +4 -1
- package/dist/app/time-format-labels.js +7 -1
- package/dist/app/types.d.ts +10 -2
- package/dist/app/use-formatting.d.ts +1 -1
- package/dist/components/admin/index.d.ts +1 -1
- package/dist/components/admin/index.js +1 -1
- package/dist/components/data-display/accordion.d.ts +51 -1
- package/dist/components/data-display/accordion.js +247 -1
- package/dist/components/data-display/avatar.d.ts +16 -1
- package/dist/components/data-display/avatar.js +109 -1
- package/dist/components/data-display/credential-reveal.d.ts +9 -2
- package/dist/components/data-display/credential-reveal.js +156 -1
- package/dist/components/data-display/image.js +5 -3
- package/dist/components/data-display/index.d.ts +0 -21
- package/dist/components/data-display/index.js +1 -43
- package/dist/components/data-display/popover.d.ts +15 -3
- package/dist/components/data-display/popover.js +168 -2
- package/dist/components/data-entry/branch-scope-picker.d.ts +1 -1
- package/dist/components/data-entry/index.d.ts +5 -12
- package/dist/components/data-entry/index.js +11 -12
- package/dist/components/data-entry/input-otp.d.ts +48 -2
- package/dist/components/data-entry/input-otp.js +94 -1
- package/dist/components/data-entry/number-input.d.ts +1 -1
- package/dist/components/data-entry/password-input.d.ts +38 -2
- package/dist/components/data-entry/password-input.js +56 -1
- package/dist/components/data-entry/rating.d.ts +38 -2
- package/dist/components/data-entry/rating.js +127 -1
- package/dist/components/data-entry/segmented.d.ts +94 -2
- package/dist/components/data-entry/segmented.js +104 -1
- package/dist/components/{ui/tag-input.d.ts → data-entry/select-tags-inline.d.ts} +7 -4
- package/dist/components/{ui/tag-input.js → data-entry/select-tags-inline.js} +4 -4
- package/dist/components/data-entry/select.js +4 -0
- package/dist/components/data-entry/toggle-group.d.ts +108 -2
- package/dist/components/data-entry/toggle-group.js +189 -1
- package/dist/components/data-entry/toggle.d.ts +86 -2
- package/dist/components/data-entry/toggle.js +153 -2
- package/dist/components/feedback/alert.d.ts +5 -3
- package/dist/components/feedback/alert.js +14 -2
- package/dist/components/feedback/index.d.ts +2 -6
- package/dist/components/feedback/index.js +1 -13
- package/dist/components/feedback/skeleton.d.ts +4 -17
- package/dist/components/feedback/skeleton.js +3 -40
- package/dist/components/general/index.d.ts +2 -4
- package/dist/components/general/index.js +1 -6
- package/dist/components/general/typography.d.ts +4 -58
- package/dist/components/general/typography.js +7 -141
- package/dist/components/layout/aspect-ratio.d.ts +24 -1
- package/dist/components/layout/aspect-ratio.js +18 -1
- package/dist/components/layout/auth-divider.js +1 -1
- package/dist/components/layout/auth-identity.js +6 -2
- package/dist/components/layout/centered-shell.d.ts +13 -8
- package/dist/components/layout/centered-shell.js +43 -1
- package/dist/components/layout/flex.d.ts +1 -1
- package/dist/components/layout/flex.js +73 -1
- package/dist/components/layout/index.d.ts +1 -13
- package/dist/components/layout/index.js +0 -12
- package/dist/components/layout/separator.d.ts +25 -2
- package/dist/components/layout/separator.js +71 -1
- package/dist/components/navigation/{app-setting-toggle.d.ts → app-setting-cycle.d.ts} +3 -4
- package/dist/components/navigation/{app-setting-toggle.js → app-setting-cycle.js} +3 -3
- package/dist/components/navigation/app-setting-picker.d.ts +6 -2
- package/dist/components/navigation/app-setting-picker.js +20 -2
- package/dist/components/navigation/index.d.ts +3 -11
- package/dist/components/navigation/index.js +1 -9
- package/dist/components/navigation/tabs.js +1 -1
- package/dist/components/ui/carousel.d.ts +1 -1
- package/dist/components/ui/carousel.js +1 -1
- package/dist/components/ui/index.d.ts +11 -5
- package/dist/components/ui/index.js +5 -5
- package/dist/contracts/measurement.json +2 -2
- package/dist/email/brand-mark.d.ts +3 -2
- package/dist/email/brand-mark.js +1 -1
- package/dist/email/color.d.ts +7 -0
- package/dist/email/color.js +14 -1
- package/dist/email/index.d.ts +10 -2
- package/dist/email/index.js +23 -2
- package/dist/email/tokens.generated.d.ts +120 -2
- package/dist/email/tokens.generated.js +119 -1
- package/dist/i18n/locale-tags.d.ts +25 -0
- package/dist/i18n/locale-tags.js +59 -0
- package/dist/i18n/translate.d.ts +20 -3
- package/dist/i18n/translate.js +25 -14
- package/dist/i18n/use-translation.d.ts +3 -3
- package/dist/i18n/use-translation.js +4 -2
- package/dist/{components/navigation → lab}/anchor.d.ts +2 -2
- package/dist/{components/navigation → lab}/anchor.js +5 -5
- package/dist/{components/data-display → lab}/carousel.js +2 -2
- package/dist/{components/layout → lab}/draggable-panel.d.ts +8 -8
- package/dist/{components/layout → lab}/draggable-panel.js +2 -2
- package/dist/{components/data-entry → lab}/emoji-picker.d.ts +2 -2
- package/dist/{components/data-entry → lab}/emoji-picker.js +6 -6
- package/dist/{components/general → lab}/float-button.d.ts +8 -8
- package/dist/{components/general → lab}/float-button.js +7 -7
- package/dist/lab/index.d.ts +39 -0
- package/dist/lab/index.js +48 -0
- package/dist/{components/layout → lab}/legal-document-shell.d.ts +2 -2
- package/dist/{components/layout → lab}/legal-document-shell.js +4 -4
- package/dist/{components/data-display → lab}/marquee.d.ts +5 -5
- package/dist/{components/data-display → lab}/marquee.js +5 -5
- package/dist/{components/layout → lab}/masonry.d.ts +2 -2
- package/dist/{components/layout → lab}/masonry.js +3 -3
- package/dist/{components/navigation → lab}/mega-menu.d.ts +4 -4
- package/dist/{components/navigation → lab}/mega-menu.js +2 -2
- package/dist/{components/data-display → lab}/org-chart.d.ts +2 -2
- package/dist/{components/data-display → lab}/org-chart.js +4 -4
- package/dist/{components/layout → lab}/page-cover.d.ts +2 -2
- package/dist/{components/layout → lab}/page-cover.js +2 -2
- package/dist/{components/data-display → lab}/range-timeline.d.ts +1 -1
- package/dist/{components/data-display → lab}/range-timeline.js +6 -6
- package/dist/{components/data-entry → lab}/sortable-list.d.ts +2 -2
- package/dist/{components/data-entry → lab}/sortable-list.js +3 -3
- package/dist/{components/data-display → lab}/text-diff.d.ts +3 -3
- package/dist/{components/data-display → lab}/text-diff.js +4 -4
- package/dist/{components/data-display → lab}/timeline-grid.d.ts +2 -2
- package/dist/{components/data-display → lab}/timeline-grid.js +1 -1
- package/dist/lib/control-styles.js +1 -1
- package/dist/lib/datetime/format.js +20 -6
- package/dist/lib/datetime/sync.d.ts +6 -2
- package/dist/lib/datetime/sync.js +14 -18
- package/dist/lib/platform.d.ts +1 -1
- package/dist/props/components/app.prop.d.ts +28 -13
- package/dist/props/components/data-display.prop.d.ts +19 -29
- package/dist/props/components/feedback.prop.d.ts +15 -44
- package/dist/props/components/general.prop.d.ts +2 -64
- package/dist/props/components/index.d.ts +9 -1
- package/dist/props/components/layout.prop.d.ts +41 -57
- package/dist/props/registry.d.ts +48 -101
- package/dist/props/registry.js +45 -129
- package/dist/props/vocabulary/index.d.ts +1 -1
- package/dist/props/vocabulary/interaction.prop.d.ts +3 -12
- package/dist/styles/alert-layout.css +0 -29
- package/dist/styles/data-display-layout.css +14 -22
- package/dist/styles/fonts/OFL.txt +93 -0
- package/dist/styles/form-layout.css +4 -0
- package/dist/styles/index.css +0 -2
- package/dist/styles/layers.json +44 -179
- package/dist/styles/text-layout.css +0 -15
- package/dist/styles.css +2 -0
- package/dist/themes/godx-tokens.css +41 -0
- package/dist/themes/godx.css +3 -0
- package/dist/themes/godx.d.ts +16 -0
- package/dist/themes/godx.js +12 -0
- package/dist/tokens/components/feedback.css +0 -6
- package/dist/tokens/derived.css +23 -22
- package/dist/tokens/foundation.css +4 -6
- package/docs/COMPOSITION-VS-COMPONENT.md +58 -33
- package/docs/CONSUMER-RULES.md +1 -1
- package/docs/CUSTOMER-THEMING.md +17 -53
- package/docs/migrations/v32.md +105 -0
- package/package.json +59 -19
- package/scripts/_agent-setup.mjs +54 -3
- package/scripts/brand-accent.generated.mjs +15 -2
- package/scripts/cli.mjs +36 -11
- package/scripts/codemod.mjs +542 -0
- package/scripts/consumer-rule.md +21 -43
- package/scripts/postinstall.mjs +10 -47
- package/scripts/prune-css.mjs +1 -1
- package/scripts/ui-audit.mjs +5 -2
- package/dist/components/data-display/chat-bubble.d.ts +0 -30
- package/dist/components/data-display/chat-bubble.js +0 -229
- package/dist/components/data-display/hover-card.d.ts +0 -1
- package/dist/components/data-display/hover-card.js +0 -7
- package/dist/components/data-display/thought-chain.d.ts +0 -42
- package/dist/components/data-display/thought-chain.js +0 -177
- package/dist/components/data-display/thumbnail.d.ts +0 -37
- package/dist/components/data-display/thumbnail.js +0 -20
- package/dist/components/data-display/welcome.d.ts +0 -26
- package/dist/components/data-display/welcome.js +0 -37
- package/dist/components/data-entry/attachments.d.ts +0 -19
- package/dist/components/data-entry/attachments.js +0 -366
- package/dist/components/data-entry/chat-composer.d.ts +0 -51
- package/dist/components/data-entry/chat-composer.js +0 -200
- package/dist/components/data-entry/chat-suggestion.d.ts +0 -28
- package/dist/components/data-entry/chat-suggestion.js +0 -309
- package/dist/components/data-entry/tag-input.d.ts +0 -2
- package/dist/components/data-entry/tag-input.js +0 -5
- package/dist/components/feedback/banner.d.ts +0 -21
- package/dist/components/feedback/banner.js +0 -19
- package/dist/components/feedback/callout.d.ts +0 -23
- package/dist/components/feedback/callout.js +0 -42
- package/dist/components/layout/auth-shell.d.ts +0 -10
- package/dist/components/layout/auth-shell.js +0 -42
- package/dist/components/layout/space-compact.d.ts +0 -65
- package/dist/components/layout/space-compact.js +0 -52
- package/dist/components/navigation/conversations.d.ts +0 -39
- package/dist/components/navigation/conversations.js +0 -371
- package/dist/components/ui/accordion.d.ts +0 -51
- package/dist/components/ui/accordion.js +0 -254
- package/dist/components/ui/aspect-ratio.d.ts +0 -24
- package/dist/components/ui/aspect-ratio.js +0 -21
- package/dist/components/ui/avatar.d.ts +0 -16
- package/dist/components/ui/avatar.js +0 -115
- package/dist/components/ui/credential-reveal.d.ts +0 -9
- package/dist/components/ui/credential-reveal.js +0 -160
- package/dist/components/ui/hover-card.d.ts +0 -47
- package/dist/components/ui/hover-card.js +0 -205
- package/dist/components/ui/input-otp.d.ts +0 -48
- package/dist/components/ui/input-otp.js +0 -101
- package/dist/components/ui/password-input.d.ts +0 -38
- package/dist/components/ui/password-input.js +0 -60
- package/dist/components/ui/rating.d.ts +0 -38
- package/dist/components/ui/rating.js +0 -131
- package/dist/components/ui/segmented.d.ts +0 -94
- package/dist/components/ui/segmented.js +0 -108
- package/dist/components/ui/separator.d.ts +0 -25
- package/dist/components/ui/separator.js +0 -74
- package/dist/components/ui/toggle-group.d.ts +0 -108
- package/dist/components/ui/toggle-group.js +0 -194
- package/dist/components/ui/toggle.d.ts +0 -86
- package/dist/components/ui/toggle.js +0 -156
- package/docs/CANONICAL-CONTRACTS.md +0 -206
- package/docs/COMPONENTS.md +0 -163
- package/docs/DATETIME.md +0 -78
- package/docs/DEVELOPMENT.md +0 -269
- package/docs/FRAME-A11Y-CI.md +0 -287
- package/docs/FRAME-COVERAGE-LEDGER.md +0 -123
- package/docs/FRAME-COVERAGE-REPORT.md +0 -228
- package/docs/FRAME-COVERAGE-STANDARD.md +0 -65
- package/docs/FRAME-COVERAGE.md +0 -29
- package/docs/MEASUREMENT-CONTRACT.md +0 -109
- package/docs/PROPS-REGISTRY.md +0 -61
- package/docs/PROPS-VOCABULARY.md +0 -100
- package/docs/REGISTRY.md +0 -70
- package/docs/TESTING.md +0 -107
- package/docs/THEME-API-COVERAGE.md +0 -538
- package/docs/WHAT-BELONGS-HERE.md +0 -179
- package/docs/asset-modules.d.ts +0 -53
- package/docs/assets/cover-terrain.svg +0 -6
- package/docs/assets/portrait-amber.svg +0 -5
- package/docs/assets/portrait-clay.svg +0 -5
- package/docs/assets/portrait-indigo.svg +0 -5
- package/docs/assets/portrait-iris.svg +0 -5
- package/docs/assets/portrait-moss.svg +0 -5
- package/docs/assets/portrait-plum.svg +0 -5
- package/docs/assets/portrait-slate.svg +0 -5
- package/docs/assets/service-mark-rose.svg +0 -6
- package/docs/assets/service-mark-teal.svg +0 -5
- package/docs/assets/shot-landscape.svg +0 -12
- package/docs/assets/shot-portrait.svg +0 -10
- package/docs/assets/tcgm/card-1.svg +0 -1
- package/docs/assets/tcgm/card-2.svg +0 -1
- package/docs/assets/tcgm/card-3.svg +0 -1
- package/docs/assets/tcgm/card-4.svg +0 -1
- package/docs/assets/tcgm/card-5.svg +0 -1
- package/docs/assets/tcgm/card-6.svg +0 -1
- package/docs/assets/tcgm/hero-prism.svg +0 -1
- package/docs/assets/tcgm/scene-1.svg +0 -1
- package/docs/assets/tcgm/scene-2.svg +0 -1
- package/docs/assets/tcgm/scene-3.svg +0 -1
- package/docs/assets/tcgm/scene-4.svg +0 -1
- package/docs/assets/tcgm/scene-5.svg +0 -1
- package/docs/assets/tcgm/tcgm-lockup-color.svg +0 -1
- package/docs/assets/tcgm/tcgm-symbol-color.svg +0 -1
- package/docs/charts/cjk-category-axis.tsx +0 -81
- package/docs/charts/compact-bar-trend.tsx +0 -327
- package/docs/charts/size-tiers.tsx +0 -192
- package/docs/data-display/accordion.tsx +0 -99
- package/docs/data-display/avatar.tsx +0 -502
- package/docs/data-display/badge.tsx +0 -335
- package/docs/data-display/card/examples/detail-panel.tsx +0 -106
- package/docs/data-display/card/examples/tab-list.tsx +0 -97
- package/docs/data-display/card/index.md +0 -3
- package/docs/data-display/card/index.tsx +0 -390
- package/docs/data-display/carousel.tsx +0 -160
- package/docs/data-display/charts.tsx +0 -278
- package/docs/data-display/chat-bubble.tsx +0 -397
- package/docs/data-display/code-block.tsx +0 -188
- package/docs/data-display/collapsible.tsx +0 -162
- package/docs/data-display/credential-reveal.tsx +0 -148
- package/docs/data-display/data-table/examples/antd-parity.tsx +0 -257
- package/docs/data-display/data-table/examples/approval-queue.tsx +0 -212
- package/docs/data-display/data-table/examples/grid-features.tsx +0 -158
- package/docs/data-display/data-table/examples/list-page.tsx +0 -175
- package/docs/data-display/data-table/examples/selectable-inbox.tsx +0 -113
- package/docs/data-display/data-table/examples/server-paged.tsx +0 -179
- package/docs/data-display/data-table/examples/striped-list.tsx +0 -173
- package/docs/data-display/data-table/index.md +0 -9
- package/docs/data-display/data-table/index.tsx +0 -407
- package/docs/data-display/descriptions.tsx +0 -263
- package/docs/data-display/empty-state.tsx +0 -164
- package/docs/data-display/feature-list.tsx +0 -159
- package/docs/data-display/hover-card.tsx +0 -181
- package/docs/data-display/image.tsx +0 -170
- package/docs/data-display/legend.tsx +0 -158
- package/docs/data-display/list-row.tsx +0 -441
- package/docs/data-display/markdown.tsx +0 -86
- package/docs/data-display/marquee.tsx +0 -254
- package/docs/data-display/org-chart.tsx +0 -165
- package/docs/data-display/permission-matrix.tsx +0 -188
- package/docs/data-display/popover-touch.tsx +0 -27
- package/docs/data-display/popover.tsx +0 -331
- package/docs/data-display/progress.tsx +0 -162
- package/docs/data-display/prose.tsx +0 -169
- package/docs/data-display/qr-code.tsx +0 -68
- package/docs/data-display/scroll-area.tsx +0 -420
- package/docs/data-display/service-launcher-card.tsx +0 -445
- package/docs/data-display/stat-card.tsx +0 -354
- package/docs/data-display/swatch.tsx +0 -107
- package/docs/data-display/table.tsx +0 -362
- package/docs/data-display/text-diff.tsx +0 -89
- package/docs/data-display/thought-chain.tsx +0 -176
- package/docs/data-display/thumbnail.tsx +0 -128
- package/docs/data-display/timeline-grid.tsx +0 -119
- package/docs/data-display/timeline.tsx +0 -671
- package/docs/data-display/touch-actions.tsx +0 -36
- package/docs/data-display/tree.tsx +0 -724
- package/docs/data-display/welcome.tsx +0 -115
- package/docs/data-entry/attachments.tsx +0 -160
- package/docs/data-entry/block-editor.tsx +0 -105
- package/docs/data-entry/branch-scope-picker.tsx +0 -128
- package/docs/data-entry/calendar.tsx +0 -226
- package/docs/data-entry/cascader.tsx +0 -380
- package/docs/data-entry/chat-composer.tsx +0 -619
- package/docs/data-entry/chat-suggestion.tsx +0 -301
- package/docs/data-entry/checkbox.tsx +0 -256
- package/docs/data-entry/color-picker.tsx +0 -189
- package/docs/data-entry/command-palette.tsx +0 -179
- package/docs/data-entry/command.tsx +0 -341
- package/docs/data-entry/country-picker-recipe.tsx +0 -175
- package/docs/data-entry/date-picker.tsx +0 -452
- package/docs/data-entry/emoji-picker.tsx +0 -35
- package/docs/data-entry/form/examples/employee-settings.tsx +0 -267
- package/docs/data-entry/form/examples/invoice-form.tsx +0 -387
- package/docs/data-entry/form-dynamic-fields.tsx +0 -199
- package/docs/data-entry/form-field/examples/a11y-contract.tsx +0 -242
- package/docs/data-entry/form-field/examples/create-form.tsx +0 -107
- package/docs/data-entry/form-field/index.md +0 -8
- package/docs/data-entry/form-field/index.tsx +0 -337
- package/docs/data-entry/form-inertia.tsx +0 -80
- package/docs/data-entry/form-root.tsx +0 -112
- package/docs/data-entry/form.tsx +0 -1498
- package/docs/data-entry/input-otp.tsx +0 -258
- package/docs/data-entry/input.tsx +0 -796
- package/docs/data-entry/label.tsx +0 -102
- package/docs/data-entry/markdown-editor.tsx +0 -69
- package/docs/data-entry/number-input.tsx +0 -279
- package/docs/data-entry/password-input.tsx +0 -102
- package/docs/data-entry/password-strength.tsx +0 -99
- package/docs/data-entry/radio-group.tsx +0 -316
- package/docs/data-entry/rating.tsx +0 -91
- package/docs/data-entry/record-picker.tsx +0 -209
- package/docs/data-entry/search-input.tsx +0 -121
- package/docs/data-entry/segmented-in-filter-row.tsx +0 -60
- package/docs/data-entry/segmented.tsx +0 -300
- package/docs/data-entry/select-async-contracts.tsx +0 -108
- package/docs/data-entry/select-matrix.tsx +0 -209
- package/docs/data-entry/select.tsx +0 -547
- package/docs/data-entry/slider.tsx +0 -212
- package/docs/data-entry/sortable-list.tsx +0 -76
- package/docs/data-entry/switch.tsx +0 -314
- package/docs/data-entry/tag-input.tsx +0 -145
- package/docs/data-entry/textarea.tsx +0 -249
- package/docs/data-entry/time-picker.tsx +0 -187
- package/docs/data-entry/time-range-picker.tsx +0 -55
- package/docs/data-entry/toggle-count.tsx +0 -348
- package/docs/data-entry/toggle-group.tsx +0 -438
- package/docs/data-entry/toggle.tsx +0 -217
- package/docs/data-entry/transfer.tsx +0 -115
- package/docs/data-entry/tree-select.tsx +0 -204
- package/docs/data-entry/upload-crop-dialog.tsx +0 -109
- package/docs/data-entry/upload.tsx +0 -310
- package/docs/feedback/alert-dialog.tsx +0 -270
- package/docs/feedback/alert.tsx +0 -248
- package/docs/feedback/auth-expiry.tsx +0 -104
- package/docs/feedback/banner.tsx +0 -183
- package/docs/feedback/callout.tsx +0 -220
- package/docs/feedback/danger-confirm.tsx +0 -91
- package/docs/feedback/dialog-touch.tsx +0 -24
- package/docs/feedback/dialog.tsx +0 -373
- package/docs/feedback/sheet.tsx +0 -510
- package/docs/feedback/skeleton.tsx +0 -168
- package/docs/feedback/toast.tsx +0 -135
- package/docs/feedback/tooltip.tsx +0 -171
- package/docs/feedback/two-factor-setup.tsx +0 -68
- package/docs/foundation/_email-specimen.ts +0 -274
- package/docs/foundation/_theme-editor-scope.ts +0 -222
- package/docs/foundation/colors.tsx +0 -207
- package/docs/foundation/density.tsx +0 -242
- package/docs/foundation/email-tokens.tsx +0 -323
- package/docs/foundation/radius-shadow.tsx +0 -154
- package/docs/foundation/spacing.tsx +0 -216
- package/docs/foundation/theme-editor.tsx +0 -654
- package/docs/foundation/typography.tsx +0 -147
- package/docs/general/actions.tsx +0 -175
- package/docs/general/activity.tsx +0 -289
- package/docs/general/button/examples/destructive-confirm.tsx +0 -90
- package/docs/general/button/examples/form-actions.tsx +0 -87
- package/docs/general/button/examples/toolbar.tsx +0 -160
- package/docs/general/button/index.md +0 -16
- package/docs/general/button/index.tsx +0 -236
- package/docs/general/float-button.tsx +0 -133
- package/docs/general/icon.tsx +0 -217
- package/docs/general/logo.tsx +0 -194
- package/docs/general/reveal.tsx +0 -309
- package/docs/general/typography.tsx +0 -542
- package/docs/i18n/messages/en.json +0 -1715
- package/docs/i18n/messages/ja.json +0 -1708
- package/docs/i18n/messages/vi.json +0 -1708
- package/docs/layout/account-chip.tsx +0 -72
- package/docs/layout/admin-collection.tsx +0 -122
- package/docs/layout/affix.tsx +0 -209
- package/docs/layout/app-launcher.tsx +0 -211
- package/docs/layout/app-shell-arrangements.tsx +0 -225
- package/docs/layout/app-shell-narrow-bar.tsx +0 -205
- package/docs/layout/app-shell-states.tsx +0 -171
- package/docs/layout/app-shell.tsx +0 -395
- package/docs/layout/aspect-ratio.tsx +0 -135
- package/docs/layout/auth-account-summary.tsx +0 -103
- package/docs/layout/auth-divider.tsx +0 -28
- package/docs/layout/auth-footer.tsx +0 -37
- package/docs/layout/auth-identity.tsx +0 -70
- package/docs/layout/auth-recovery/examples/mfa-challenge.md +0 -41
- package/docs/layout/auth-recovery/examples/mfa-challenge.tsx +0 -254
- package/docs/layout/auth-recovery/examples/mobile-390.md +0 -25
- package/docs/layout/auth-recovery/examples/mobile-390.tsx +0 -82
- package/docs/layout/auth-recovery/examples/password-recovery.md +0 -24
- package/docs/layout/auth-recovery/examples/password-recovery.tsx +0 -197
- package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.md +0 -27
- package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.tsx +0 -156
- package/docs/layout/auth-recovery/index.md +0 -140
- package/docs/layout/auth-recovery/index.tsx +0 -96
- package/docs/layout/auth-shell-context.tsx +0 -103
- package/docs/layout/auth-shell-device.tsx +0 -112
- package/docs/layout/auth-shell-registration.tsx +0 -338
- package/docs/layout/auth-shell-variants.tsx +0 -143
- package/docs/layout/auth-shell.tsx +0 -59
- package/docs/layout/auth-stack.tsx +0 -40
- package/docs/layout/centered-shell.tsx +0 -102
- package/docs/layout/draggable-panel.tsx +0 -127
- package/docs/layout/error-surface/examples/application-403.tsx +0 -84
- package/docs/layout/error-surface/examples/application-404.tsx +0 -77
- package/docs/layout/error-surface/examples/system-500.tsx +0 -47
- package/docs/layout/error-surface/examples/system-503.tsx +0 -48
- package/docs/layout/error-surface/index.md +0 -153
- package/docs/layout/error-surface/index.tsx +0 -239
- package/docs/layout/flex.tsx +0 -444
- package/docs/layout/legal-document-shell/_data.ts +0 -110
- package/docs/layout/legal-document-shell/examples/desktop-1440.md +0 -12
- package/docs/layout/legal-document-shell/examples/desktop-1440.tsx +0 -83
- package/docs/layout/legal-document-shell/examples/mobile-390.md +0 -22
- package/docs/layout/legal-document-shell/examples/mobile-390.tsx +0 -70
- package/docs/layout/legal-document-shell/examples/tablet-1024.md +0 -3
- package/docs/layout/legal-document-shell/examples/tablet-1024.tsx +0 -84
- package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.md +0 -18
- package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.tsx +0 -61
- package/docs/layout/legal-document-shell/index.md +0 -51
- package/docs/layout/legal-document-shell/index.tsx +0 -101
- package/docs/layout/masonry.tsx +0 -291
- package/docs/layout/master-detail.tsx +0 -390
- package/docs/layout/mobile-shell.tsx +0 -106
- package/docs/layout/nav-list.tsx +0 -584
- package/docs/layout/org-switcher.tsx +0 -131
- package/docs/layout/page-container.tsx +0 -1020
- package/docs/layout/page-cover.tsx +0 -56
- package/docs/layout/resizable-panel.tsx +0 -419
- package/docs/layout/responsive-grid.tsx +0 -403
- package/docs/layout/separator.tsx +0 -327
- package/docs/layout/service-role-panel.tsx +0 -144
- package/docs/layout/sidebar.tsx +0 -689
- package/docs/layout/space-compact.tsx +0 -202
- package/docs/layout/split-pane.tsx +0 -532
- package/docs/layout/topbar-item.tsx +0 -233
- package/docs/layout/topbar.tsx +0 -360
- package/docs/navigation/anchor.tsx +0 -295
- package/docs/navigation/app-setting-picker.tsx +0 -178
- package/docs/navigation/app-setting-toggle.tsx +0 -111
- package/docs/navigation/breadcrumb.tsx +0 -207
- package/docs/navigation/card-tabs.tsx +0 -344
- package/docs/navigation/conversations.tsx +0 -176
- package/docs/navigation/dropdown-menu.tsx +0 -345
- package/docs/navigation/filter-bar.tsx +0 -247
- package/docs/navigation/mega-menu-panel.tsx +0 -86
- package/docs/navigation/mega-menu.tsx +0 -254
- package/docs/navigation/pagination.tsx +0 -293
- package/docs/navigation/steps.tsx +0 -315
- package/docs/navigation/tabs-rtl.tsx +0 -28
- package/docs/navigation/tabs.tsx +0 -755
- package/docs/navigation/toolbar.tsx +0 -347
- package/docs/providers/app-provider.tsx +0 -191
- package/docs/providers/format-date.tsx +0 -230
- package/docs/providers/theme-scope.tsx +0 -186
- package/docs/query/button-refetch.tsx +0 -161
- package/docs/query/data-state.tsx +0 -262
- package/docs/query/infinite-query-state.tsx +0 -97
- package/docs/query/mutation-feedback.tsx +0 -128
- package/docs/query/touch-actions.tsx +0 -68
- package/docs/react-router/prefetch-link.tsx +0 -262
- package/docs/roadmap/ai-chat-components.md +0 -206
- package/docs/roadmap/antd-parity.md +0 -155
- package/docs/roadmap/badge-tag-chip-count.md +0 -172
- package/docs/roadmap/list-masonry.md +0 -159
- package/docs/roadmap/parity-audit-data-display-feedback.md +0 -567
- package/docs/roadmap/parity-audit-data-entry.md +0 -368
- package/docs/roadmap/parity-audit-layout-navigation-general.md +0 -459
- package/docs/roadmap/parity-backlog.md +0 -77
- package/docs/roadmap/tree-components.md +0 -151
- package/docs/roadmap/website-components.md +0 -813
- package/docs/showcase/acme-portal.tsx +0 -461
- package/docs/showcase/acme-website.tsx +0 -499
- package/docs/showcase/caimono-price-comparison.tsx +0 -919
- package/docs/showcase/case1-warehouse-dashboard.tsx +0 -358
- package/docs/showcase/case2-employee-me.tsx +0 -438
- package/docs/showcase/case3-approval-workflow.tsx +0 -531
- package/docs/showcase/case4-login.tsx +0 -312
- package/docs/showcase/case5-shift-calendar.tsx +0 -702
- package/docs/showcase/case6-agency-handy.tsx +0 -1120
- package/docs/showcase/futurelastic-web.tsx +0 -441
- package/docs/showcase/marketing-page.tsx +0 -895
- package/docs/showcase/org-switcher.tsx +0 -320
- package/docs/showcase/permission-matrix.tsx +0 -354
- package/docs/showcase/public-landing.tsx +0 -210
- package/docs/showcase/settings-account-sections.tsx +0 -559
- package/docs/showcase/settings-security-mfa.tsx +0 -145
- package/docs/showcase/table-approval-queue.tsx +0 -199
- package/docs/showcase/table-bulk-actions.tsx +0 -468
- package/docs/showcase/table-compact-kintone.tsx +0 -438
- package/docs/showcase/table-conditional-format.tsx +0 -367
- package/docs/showcase/table-crud-list.tsx +0 -544
- package/docs/showcase/table-density.tsx +0 -349
- package/docs/showcase/table-expandable-rows.tsx +0 -496
- package/docs/showcase/table-filter-chips.tsx +0 -468
- package/docs/showcase/table-footer-totals.tsx +0 -328
- package/docs/showcase/table-grouped-subtotals.tsx +0 -398
- package/docs/showcase/table-master-detail.tsx +0 -482
- package/docs/showcase/table-pagination.tsx +0 -409
- package/docs/showcase/table-states.tsx +0 -371
- package/docs/showcase/table-sticky-columns.tsx +0 -377
- package/docs/showcase/table-tree-rows.tsx +0 -451
- package/docs/showcase/table-view-tabs.tsx +0 -488
- package/docs/showcase/tcgm-website.tsx +0 -1047
- package/docs/showcase/tenant-brand-color.tsx +0 -338
- package/docs/showcase/theme-customization.tsx +0 -1292
- package/docs/showcase/theme-lab.tsx +0 -2125
- package/docs/themes/flat.css +0 -466
- package/docs/themes/glassmorphism.css +0 -960
- package/docs/themes/index.ts +0 -219
- package/docs/themes/neubrutalism.css +0 -481
- /package/dist/components/navigation/{filter-bar.d.ts → toolbar.d.ts} +0 -0
- /package/dist/components/navigation/{filter-bar.js → toolbar.js} +0 -0
- /package/dist/{components/data-display → lab}/carousel.d.ts +0 -0
- /package/dist/{components/data-entry → lab}/emoji-data.d.ts +0 -0
- /package/dist/{components/data-entry → lab}/emoji-data.js +0 -0
- /package/dist/{components/data-display → lab}/marquee-reveal.d.ts +0 -0
- /package/dist/{components/data-display → lab}/marquee-reveal.js +0 -0
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
/** Counter pill fields on {@link SegmentedOption} — same vocabulary as `Button` / `Toggle`. */
|
|
3
|
-
type SegmentedCountFields = {
|
|
4
|
-
/**
|
|
5
|
-
* Optional count rendered as a borderless pill after the label — do not nest `Badge` in `label`
|
|
6
|
-
* for this (gh#602): `Badge` `secondary` is `--muted`, which matches the Segmented track.
|
|
7
|
-
*/
|
|
8
|
-
count?: number | string;
|
|
9
|
-
/** Cap for numeric `count` — beyond it the pill shows `{overflowCount}+` (e.g. `99+`). */
|
|
10
|
-
overflowCount?: number;
|
|
11
|
-
/** Render the pill when numeric `count` is 0. Default `true`. */
|
|
12
|
-
showZero?: boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Localized description of what the count means, folded into the accessible name
|
|
15
|
-
* (`全件, 54 件` when supplied).
|
|
16
|
-
*/
|
|
17
|
-
countLabel?: string;
|
|
18
|
-
};
|
|
19
|
-
/** One choice in a {@link Segmented}. */
|
|
20
|
-
export type SegmentedOption = SegmentedCountFields & {
|
|
21
|
-
/** Wire value — what `onValueChange` reports and what a form submits. */
|
|
22
|
-
value: string;
|
|
23
|
-
/** Visible label. It is also the item's accessible name, so it is required. */
|
|
24
|
-
label: React.ReactNode;
|
|
25
|
-
/** Optional leading glyph, rendered `aria-hidden` beside the label. */
|
|
26
|
-
icon?: React.ReactNode;
|
|
27
|
-
/** Disable this one choice; the rest of the group stays operable. */
|
|
28
|
-
disabled?: boolean;
|
|
29
|
-
};
|
|
30
|
-
export type SegmentedProp = {
|
|
31
|
-
/** The closed set of choices, in reading order. */
|
|
32
|
-
options: readonly SegmentedOption[];
|
|
33
|
-
/** Controlled selection. */
|
|
34
|
-
value?: string;
|
|
35
|
-
/** Uncontrolled initial selection. */
|
|
36
|
-
defaultValue?: string;
|
|
37
|
-
onValueChange?: (value: string) => void;
|
|
38
|
-
/**
|
|
39
|
-
* antd `block` — stretch the bar to its container and share the width EQUALLY between the
|
|
40
|
-
* choices, so the selected pill does not resize as the label changes length.
|
|
41
|
-
*/
|
|
42
|
-
block?: boolean;
|
|
43
|
-
/** antd `vertical` — stack the choices in a column. Arrow keys follow the axis. */
|
|
44
|
-
vertical?: boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Control height tier: `md` (default), `xs`, `sm` or `lg` — the same `--control-height-*` tier
|
|
47
|
-
* every other control reads. `xs` is the fourth step (gh#719, the one Toggle/ToggleGroup took in
|
|
48
|
-
* gh#716): a 24px-dense row can carry a real segmented control instead of a hand-rolled row of
|
|
49
|
-
* Buttons.
|
|
50
|
-
*/
|
|
51
|
-
size?: "xs" | "sm" | "md" | "lg";
|
|
52
|
-
/** Disable the whole group. */
|
|
53
|
-
disabled?: boolean;
|
|
54
|
-
/** Form field name — submits the selected value with the form. */
|
|
55
|
-
name?: string;
|
|
56
|
-
id?: string;
|
|
57
|
-
className?: string;
|
|
58
|
-
/** Accessible name of the group. Required unless a visible label points at `id`. */
|
|
59
|
-
"aria-label"?: string;
|
|
60
|
-
"aria-labelledby"?: string;
|
|
61
|
-
};
|
|
62
|
-
export type SegmentedProps = SegmentedProp;
|
|
63
|
-
/**
|
|
64
|
-
* Segmented — one-of-N from a small, closed, always-visible set. The established enterprise
|
|
65
|
-
* `Segmented` control (docs/DESIGN-AUTHORITY.md) drawn on react-aria-components' RadioGroup,
|
|
66
|
-
* which is this repo's authority for behaviour primitives.
|
|
67
|
-
*
|
|
68
|
-
* WHY NOT `ToggleGroup`. A ToggleGroup is a row of PRESSED buttons: `aria-pressed`, independently
|
|
69
|
-
* togglable, and — even at `type="single"` — deselectable, so "no theme at all" is a state the
|
|
70
|
-
* markup permits. A segmented control is a radio group: exactly one member is always chosen, the
|
|
71
|
-
* arrow keys move between members rather than Tab, and a screen reader must say "Light, radio
|
|
72
|
-
* button, 1 of 3, selected" and not "Light, toggle button, pressed". WAI-ARIA APG owns that
|
|
73
|
-
* distinction and it is not a skin.
|
|
74
|
-
*
|
|
75
|
-
* The primitive gives roving tabindex, arrow-key traversal (RTL-aware), the radiogroup/radio roles
|
|
76
|
-
* and the hidden input a native form submit needs. This file adds that geometry and nothing
|
|
77
|
-
* else — the focus mark comes from `ui-focus-ring`, the ONE source in styles/focus-ring.css.
|
|
78
|
-
*
|
|
79
|
-
* "RTL-aware" IS true now, and it used not to be. On Radix it was: Radix read `dir` from its own
|
|
80
|
-
* `DirectionProvider`, this repo rendered none, and it never looked at `<html dir>` — measured in
|
|
81
|
-
* jsdom, with `document.documentElement.dir = "rtl"` ArrowLeft on the first option went to the
|
|
82
|
-
* LAST one, i.e. straight LTR traversal under a reversed layout, so the key that moves your eye
|
|
83
|
-
* left moved the selection right. The repair then was to hand Radix the ambient React Aria
|
|
84
|
-
* direction explicitly.
|
|
85
|
-
*
|
|
86
|
-
* On `react-aria-components` that hand-off is gone, because the primitive reads the SAME
|
|
87
|
-
* `useLocale()` itself. One source of truth, fed by `AppProvider`, nothing threaded through the
|
|
88
|
-
* call site — and `src/__tests__/rtl-arrow-direction.test.tsx` holds it: under an `ar-AE` locale
|
|
89
|
-
* ArrowLeft advances and ArrowRight retreats, and `<html dir="rtl">` alone still does not.
|
|
90
|
-
* `orientation` decides WHICH pair of arrows moves the focus; the locale decides which END of the
|
|
91
|
-
* row each of them means.
|
|
92
|
-
*/
|
|
93
|
-
export declare const Segmented: React.ForwardRefExoticComponent<SegmentedProp & React.RefAttributes<HTMLDivElement>>;
|
|
94
|
-
export {};
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { Radio as AriaRadio, RadioGroup as AriaRadioGroup } from "react-aria-components";
|
|
5
|
-
import { withOwnHitTarget } from "../data-entry/choice-hit-target.js";
|
|
6
|
-
import { cn } from "../../lib/utils.js";
|
|
7
|
-
import { useTranslation } from "../../i18n/use-translation.js";
|
|
8
|
-
import { numberFormat } from "../../lib/intl-cache.js";
|
|
9
|
-
function SegmentedCountPill({
|
|
10
|
-
count,
|
|
11
|
-
overflowCount = 99,
|
|
12
|
-
showZero = true,
|
|
13
|
-
countLabel
|
|
14
|
-
}) {
|
|
15
|
-
const { locale } = useTranslation();
|
|
16
|
-
const visible = count != null && count !== "" && (typeof count !== "number" || count !== 0 || showZero);
|
|
17
|
-
const formatted = React.useMemo(() => {
|
|
18
|
-
if (count == null || count === "") return "";
|
|
19
|
-
if (typeof count === "string") return count;
|
|
20
|
-
const format = numberFormat(locale);
|
|
21
|
-
return count > overflowCount ? `${format.format(overflowCount)}+` : format.format(count);
|
|
22
|
-
}, [count, locale, overflowCount]);
|
|
23
|
-
if (!visible) return null;
|
|
24
|
-
const spoken = countLabel ? `${formatted} ${countLabel}` : formatted;
|
|
25
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26
|
-
/* @__PURE__ */ jsx("span", { "data-slot": "segmented-count", className: "ui-segmented-count", "aria-hidden": "true", children: formatted }),
|
|
27
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children: `, ${spoken}` })
|
|
28
|
-
] });
|
|
29
|
-
}
|
|
30
|
-
const Segmented = React.forwardRef(function Segmented2({
|
|
31
|
-
options,
|
|
32
|
-
value,
|
|
33
|
-
defaultValue,
|
|
34
|
-
onValueChange,
|
|
35
|
-
disabled,
|
|
36
|
-
block = false,
|
|
37
|
-
vertical = false,
|
|
38
|
-
size,
|
|
39
|
-
name,
|
|
40
|
-
id,
|
|
41
|
-
className,
|
|
42
|
-
"aria-label": ariaLabel,
|
|
43
|
-
"aria-labelledby": ariaLabelledBy,
|
|
44
|
-
...props
|
|
45
|
-
}, ref) {
|
|
46
|
-
return /* @__PURE__ */ jsx(
|
|
47
|
-
AriaRadioGroup,
|
|
48
|
-
{
|
|
49
|
-
ref,
|
|
50
|
-
id,
|
|
51
|
-
"data-slot": "segmented",
|
|
52
|
-
"data-block": block ? "true" : void 0,
|
|
53
|
-
"data-size": size,
|
|
54
|
-
className: cn("ui-segmented", className),
|
|
55
|
-
orientation: vertical ? "vertical" : "horizontal",
|
|
56
|
-
value,
|
|
57
|
-
defaultValue,
|
|
58
|
-
onChange: onValueChange,
|
|
59
|
-
isDisabled: disabled,
|
|
60
|
-
name,
|
|
61
|
-
"aria-labelledby": ariaLabelledBy,
|
|
62
|
-
"aria-label": ariaLabelledBy ? void 0 : ariaLabel,
|
|
63
|
-
...props,
|
|
64
|
-
children: options.map((option) => /* @__PURE__ */ jsxs(
|
|
65
|
-
AriaRadio,
|
|
66
|
-
{
|
|
67
|
-
value: option.value,
|
|
68
|
-
isDisabled: option.disabled,
|
|
69
|
-
"data-slot": "segmented-item",
|
|
70
|
-
className: "ui-segmented-item ui-focus-ring",
|
|
71
|
-
render: (domProps, state) => /* @__PURE__ */ jsx(
|
|
72
|
-
"label",
|
|
73
|
-
{
|
|
74
|
-
...domProps,
|
|
75
|
-
"data-state": state.isSelected ? "checked" : "unchecked",
|
|
76
|
-
children: withOwnHitTarget(domProps.children)
|
|
77
|
-
}
|
|
78
|
-
),
|
|
79
|
-
children: [
|
|
80
|
-
option.icon == null ? null : /* @__PURE__ */ jsx(
|
|
81
|
-
"span",
|
|
82
|
-
{
|
|
83
|
-
"data-slot": "segmented-item-icon",
|
|
84
|
-
className: "ui-segmented-item-icon",
|
|
85
|
-
"aria-hidden": "true",
|
|
86
|
-
children: option.icon
|
|
87
|
-
}
|
|
88
|
-
),
|
|
89
|
-
/* @__PURE__ */ jsx("span", { "data-slot": "segmented-item-label", className: "ui-segmented-item-label", children: option.label }),
|
|
90
|
-
/* @__PURE__ */ jsx(
|
|
91
|
-
SegmentedCountPill,
|
|
92
|
-
{
|
|
93
|
-
count: option.count,
|
|
94
|
-
overflowCount: option.overflowCount,
|
|
95
|
-
showZero: option.showZero,
|
|
96
|
-
countLabel: option.countLabel
|
|
97
|
-
}
|
|
98
|
-
)
|
|
99
|
-
]
|
|
100
|
-
},
|
|
101
|
-
option.value
|
|
102
|
-
))
|
|
103
|
-
}
|
|
104
|
-
);
|
|
105
|
-
});
|
|
106
|
-
export {
|
|
107
|
-
Segmented
|
|
108
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export type { SeparatorProp, SeparatorProp as SeparatorProps, } from "../../props/components/layout.prop.js";
|
|
3
|
-
/**
|
|
4
|
-
* ACCESSIBILITY — the whole point of the labelled form is that the label is ANNOUNCED, exactly
|
|
5
|
-
* ONCE. Without a label the rule stays `decorative` (`role="none"`), which is right: a section
|
|
6
|
-
* rule carries no information.
|
|
7
|
-
*
|
|
8
|
-
* SUBSTRATE — React Aria Components. Its `Separator` has no `decorative` prop: `useSeparator`
|
|
9
|
-
* emits `role="separator"` unconditionally (and `aria-orientation="vertical"` on the vertical
|
|
10
|
-
* rule), and it drops `children` entirely. Both are handled in the `render` override below, which
|
|
11
|
-
* is RAC's supported escape hatch for owning the element: it hands us the computed DOM props and
|
|
12
|
-
* the ref, and we decide what element carries them.
|
|
13
|
-
*/
|
|
14
|
-
export declare const Separator: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
15
|
-
labelSize?: "2xs" | "xs" | "sm" | "md";
|
|
16
|
-
space?: import("../../props/index.js").GapProp;
|
|
17
|
-
hideBelow?: import("../../props/index.js").BreakpointProp;
|
|
18
|
-
hideFrom?: import("../../props/index.js").BreakpointProp;
|
|
19
|
-
orientation?: import("../../props/index.js").OrientationProp;
|
|
20
|
-
label?: string;
|
|
21
|
-
labelAlign?: import("../../props/index.js").TextAlignProp;
|
|
22
|
-
tone?: import("../../props/index.js").TextToneProp;
|
|
23
|
-
decorative?: boolean;
|
|
24
|
-
className?: import("../../props/index.js").ClassNameProp;
|
|
25
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { Separator as AriaSeparator } from "react-aria-components";
|
|
4
|
-
import { padStepToken } from "../../lib/variants.js";
|
|
5
|
-
import { cn } from "../../lib/utils.js";
|
|
6
|
-
import { isDevelopment } from "../../lib/dev.js";
|
|
7
|
-
const Separator = React.forwardRef(
|
|
8
|
-
({
|
|
9
|
-
className,
|
|
10
|
-
labelSize,
|
|
11
|
-
space,
|
|
12
|
-
hideBelow,
|
|
13
|
-
hideFrom,
|
|
14
|
-
style,
|
|
15
|
-
orientation = "horizontal",
|
|
16
|
-
decorative,
|
|
17
|
-
label,
|
|
18
|
-
labelAlign = "center",
|
|
19
|
-
tone = "default",
|
|
20
|
-
...props
|
|
21
|
-
}, ref) => {
|
|
22
|
-
const hasLabel = typeof label === "string" && label.trim() !== "";
|
|
23
|
-
const labelled = hasLabel && orientation === "horizontal";
|
|
24
|
-
if (isDevelopment()) {
|
|
25
|
-
if (hasLabel && orientation === "vertical") {
|
|
26
|
-
console.warn(
|
|
27
|
-
'Separator: `label` is rendered on orientation="horizontal" only; it was ignored. Use a horizontal rule for a day divider / unread watermark.'
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
const isDecorative = decorative ?? !labelled;
|
|
32
|
-
return /* @__PURE__ */ jsx(
|
|
33
|
-
AriaSeparator,
|
|
34
|
-
{
|
|
35
|
-
ref,
|
|
36
|
-
elementType: "div",
|
|
37
|
-
"data-slot": "separator",
|
|
38
|
-
"data-label-size": labelSize,
|
|
39
|
-
"data-hide-below": hideBelow,
|
|
40
|
-
"data-hide-from": hideFrom,
|
|
41
|
-
style: {
|
|
42
|
-
...style,
|
|
43
|
-
...space === void 0 ? void 0 : { marginBlock: padStepToken(space) }
|
|
44
|
-
},
|
|
45
|
-
"data-orientation": orientation,
|
|
46
|
-
"data-tone": tone,
|
|
47
|
-
"data-labelled": labelled ? "" : void 0,
|
|
48
|
-
"data-label-align": labelled ? labelAlign : void 0,
|
|
49
|
-
orientation,
|
|
50
|
-
"aria-label": labelled && !isDecorative ? label : void 0,
|
|
51
|
-
className: cn("ui-separator", className),
|
|
52
|
-
...props,
|
|
53
|
-
render: ({ role, "aria-orientation": ariaOrientation, ...domProps }) => /* @__PURE__ */ jsx(
|
|
54
|
-
"div",
|
|
55
|
-
{
|
|
56
|
-
role: isDecorative ? "none" : role,
|
|
57
|
-
"aria-orientation": isDecorative ? void 0 : ariaOrientation,
|
|
58
|
-
...props,
|
|
59
|
-
...domProps,
|
|
60
|
-
children: labelled ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
61
|
-
/* @__PURE__ */ jsx("span", { className: "ui-separator-rule", "aria-hidden": "true" }),
|
|
62
|
-
/* @__PURE__ */ jsx("span", { className: "ui-separator-label", "aria-hidden": isDecorative ? void 0 : true, children: label }),
|
|
63
|
-
/* @__PURE__ */ jsx("span", { className: "ui-separator-rule", "aria-hidden": "true" })
|
|
64
|
-
] }) : null
|
|
65
|
-
}
|
|
66
|
-
)
|
|
67
|
-
}
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
);
|
|
71
|
-
Separator.displayName = "Separator";
|
|
72
|
-
export {
|
|
73
|
-
Separator
|
|
74
|
-
};
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { type ToggleCountFields, type ToggleProp } from "./toggle.js";
|
|
3
|
-
type ToggleGroupVariant = ToggleProp["variant"];
|
|
4
|
-
type ToggleGroupSize = ToggleProp["size"];
|
|
5
|
-
type ToggleGroupShape = ToggleProp["shape"];
|
|
6
|
-
type ToggleGroupBaseProp = Omit<React.ComponentPropsWithoutRef<"div">, "defaultValue" | "dir"> & {
|
|
7
|
-
variant?: ToggleGroupVariant;
|
|
8
|
-
size?: ToggleGroupSize;
|
|
9
|
-
shape?: ToggleGroupShape;
|
|
10
|
-
/** Disable every item at once — RAC `isDisabled`. */
|
|
11
|
-
disabled?: boolean;
|
|
12
|
-
/** Which way the arrow keys walk the group. */
|
|
13
|
-
orientation?: "horizontal" | "vertical";
|
|
14
|
-
/**
|
|
15
|
-
* May the group end up with NOTHING selected? Omitted (`false`) it may, which is what a tag
|
|
16
|
-
* filter wants — pressing the selected chip again clears it and reports `""`. Set it and the
|
|
17
|
-
* selected item stays selected when it is pressed again.
|
|
18
|
-
*
|
|
19
|
-
* **It also decides the ARIA role of a `type="single"` group (gh#744)**, because emptiness is
|
|
20
|
-
* exactly what the two roles disagree about. ARIA has no "press again to deselect" for a radio:
|
|
21
|
-
* a radiogroup that has a selection always has exactly one checked item, so a radiogroup that
|
|
22
|
-
* the user just emptied is a state a screen reader cannot read out. Therefore:
|
|
23
|
-
*
|
|
24
|
-
* - omitted → `role="group"` + `aria-pressed` per item (a row of toggle buttons, which MAY be
|
|
25
|
-
* all-off) — this is the default, so no existing single group changes behaviour;
|
|
26
|
-
* - set → `role="radiogroup"` + `role="radio"` / `aria-checked` per item, and the arrow keys
|
|
27
|
-
* move the SELECTION as APG's radio-group pattern requires, not just the focus.
|
|
28
|
-
*
|
|
29
|
-
* The name is React Aria's own (`useToggleGroupState`, which this component is built on) —
|
|
30
|
-
* neither antd nor Radix names the capability. See `docs/DESIGN-AUTHORITY.md`.
|
|
31
|
-
*
|
|
32
|
-
* On `type="multiple"` it only keeps the last remaining item selected; the roles do not move
|
|
33
|
-
* (a row of `aria-pressed` buttons is already the right reading there).
|
|
34
|
-
*/
|
|
35
|
-
disallowEmptySelection?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Let the row break onto further lines instead of running past its rail (gh#741). Same name,
|
|
38
|
-
* same boolean shape and same `data-wrap` attribute as `Flex` — one spelling answers "what does
|
|
39
|
-
* this row do when it does not fit" across the library.
|
|
40
|
-
*
|
|
41
|
-
* OPT-IN (`false`), and deliberately the SAME default for every `variant`. `Flex`'s `wrap` is
|
|
42
|
-
* `false`, and one word must not mean two defaults. Measured in Chromium at a 320px rail:
|
|
43
|
-
* forcing `flex-wrap: wrap` on all 18 groups of the docs page left the 17 that FIT untouched
|
|
44
|
-
* (same line count, same height, at a 320px and a 1358px rail) — including every `soft` one, so
|
|
45
|
-
* paint is not the axis that decides. The only row it moves is the one that overflows, from
|
|
46
|
-
* 171.5px to 108px: a default of `true` reflows exactly those rows, silently, on an upgrade
|
|
47
|
-
* whose call sites did not change.
|
|
48
|
-
*
|
|
49
|
-
* Wrapping keeps the group's single `gap`, so the two axes stay equal (4px × 4px measured);
|
|
50
|
-
* `flex-wrap` reorders nothing, so arrow keys still walk the items in DOM order across lines.
|
|
51
|
-
*/
|
|
52
|
-
wrap?: boolean;
|
|
53
|
-
/**
|
|
54
|
-
* Writing direction. It still lands on the DOM node, but React Aria reads the direction it
|
|
55
|
-
* navigates by from the ambient locale (`I18nProvider`), NOT from this attribute — where Radix
|
|
56
|
-
* read this prop directly. An RTL app must set the locale, not just `dir`.
|
|
57
|
-
*/
|
|
58
|
-
dir?: "ltr" | "rtl";
|
|
59
|
-
/**
|
|
60
|
-
* Accepted for source compatibility with the Radix era, where it wrapped arrow-key focus around
|
|
61
|
-
* the ends. React Aria's toolbar navigation stops at the ends and has no equivalent switch, so
|
|
62
|
-
* this prop no longer changes anything.
|
|
63
|
-
*/
|
|
64
|
-
loop?: boolean;
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* `type` is the discriminant, exactly as it was under Radix: `"single"` reports the one selected
|
|
68
|
-
* value as a string (`""` once it is deselected), `"multiple"` reports an array. React Aria models
|
|
69
|
-
* both as `selectionMode` + a `Set` of keys — that Set is built and unpacked here so the public
|
|
70
|
-
* shape stays a string / an array of strings.
|
|
71
|
-
*/
|
|
72
|
-
type ToggleGroupSingleProp = ToggleGroupBaseProp & {
|
|
73
|
-
type: "single";
|
|
74
|
-
value?: string;
|
|
75
|
-
defaultValue?: string;
|
|
76
|
-
onValueChange?: (value: string) => void;
|
|
77
|
-
};
|
|
78
|
-
type ToggleGroupMultipleProp = ToggleGroupBaseProp & {
|
|
79
|
-
type: "multiple";
|
|
80
|
-
value?: string[];
|
|
81
|
-
defaultValue?: string[];
|
|
82
|
-
onValueChange?: (value: string[]) => void;
|
|
83
|
-
};
|
|
84
|
-
type ToggleGroupProp = ToggleGroupSingleProp | ToggleGroupMultipleProp;
|
|
85
|
-
export declare const ToggleGroup: React.ForwardRefExoticComponent<ToggleGroupProp & React.RefAttributes<HTMLDivElement>>;
|
|
86
|
-
/** Same vocabulary as `Toggle` and `Button` — one counter pill for the whole library. */
|
|
87
|
-
export type ToggleGroupItemProp = Omit<React.ComponentPropsWithoutRef<"button">, "value"> & ToggleCountFields & {
|
|
88
|
-
/**
|
|
89
|
-
* This item's key in the group's value. React Aria calls it `id` (the key it stores in
|
|
90
|
-
* `selectedKeys`); the public spelling stays `value`, as it was under Radix.
|
|
91
|
-
*/
|
|
92
|
-
value: string;
|
|
93
|
-
variant?: ToggleGroupVariant;
|
|
94
|
-
size?: ToggleGroupSize;
|
|
95
|
-
shape?: ToggleGroupShape;
|
|
96
|
-
};
|
|
97
|
-
export type ToggleGroupItemProps = ToggleGroupItemProp;
|
|
98
|
-
export declare const ToggleGroupItem: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "value"> & ToggleCountFields & {
|
|
99
|
-
/**
|
|
100
|
-
* This item's key in the group's value. React Aria calls it `id` (the key it stores in
|
|
101
|
-
* `selectedKeys`); the public spelling stays `value`, as it was under Radix.
|
|
102
|
-
*/
|
|
103
|
-
value: string;
|
|
104
|
-
variant?: ToggleGroupVariant;
|
|
105
|
-
size?: ToggleGroupSize;
|
|
106
|
-
shape?: ToggleGroupShape;
|
|
107
|
-
} & React.RefAttributes<HTMLButtonElement>>;
|
|
108
|
-
export {};
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import {
|
|
5
|
-
ToggleButton,
|
|
6
|
-
ToggleButtonGroup,
|
|
7
|
-
ToggleGroupStateContext
|
|
8
|
-
} from "react-aria-components";
|
|
9
|
-
import { cn } from "../../lib/utils.js";
|
|
10
|
-
import {
|
|
11
|
-
restoreDomProps,
|
|
12
|
-
toggleVariants,
|
|
13
|
-
useCounterPill
|
|
14
|
-
} from "./toggle.js";
|
|
15
|
-
const ToggleGroupContext = React.createContext({});
|
|
16
|
-
const ARROW_KEYS = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]);
|
|
17
|
-
function toSelectedKeys(value) {
|
|
18
|
-
if (value == null) {
|
|
19
|
-
return void 0;
|
|
20
|
-
}
|
|
21
|
-
if (Array.isArray(value)) {
|
|
22
|
-
return new Set(value);
|
|
23
|
-
}
|
|
24
|
-
return new Set(value === "" ? [] : [value]);
|
|
25
|
-
}
|
|
26
|
-
const ToggleGroup = React.forwardRef(
|
|
27
|
-
// No destructuring defaults: an unset prop must stay `undefined` so the emitted attribute is
|
|
28
|
-
// either absent or a declared union member.
|
|
29
|
-
// is NOT in the `sm | md | lg` size union — the group advertised an invalid value for its own
|
|
30
|
-
// type.) The real default lives in `toggleVariants`, applied per item.
|
|
31
|
-
({
|
|
32
|
-
className,
|
|
33
|
-
variant,
|
|
34
|
-
size,
|
|
35
|
-
shape,
|
|
36
|
-
wrap,
|
|
37
|
-
children,
|
|
38
|
-
type,
|
|
39
|
-
value,
|
|
40
|
-
defaultValue,
|
|
41
|
-
onValueChange,
|
|
42
|
-
disabled,
|
|
43
|
-
disallowEmptySelection,
|
|
44
|
-
loop: _loop,
|
|
45
|
-
...props
|
|
46
|
-
}, ref) => {
|
|
47
|
-
const radioSemantics = type === "single" && disallowEmptySelection === true;
|
|
48
|
-
const arrowNav = React.useRef(false);
|
|
49
|
-
const groupElement = React.useRef(null);
|
|
50
|
-
const [inToolbar, setInToolbar] = React.useState(false);
|
|
51
|
-
React.useLayoutEffect(() => {
|
|
52
|
-
setInToolbar(!!groupElement.current?.parentElement?.closest('[role="toolbar"]'));
|
|
53
|
-
}, []);
|
|
54
|
-
const context = React.useMemo(
|
|
55
|
-
() => ({ variant, size, shape, radioSemantics, arrowNav, inToolbar }),
|
|
56
|
-
[variant, size, shape, radioSemantics, inToolbar]
|
|
57
|
-
);
|
|
58
|
-
const selectedKeys = React.useMemo(() => toSelectedKeys(value), [value]);
|
|
59
|
-
const defaultSelectedKeys = React.useMemo(() => toSelectedKeys(defaultValue), [defaultValue]);
|
|
60
|
-
const handleSelectionChange = (keys) => {
|
|
61
|
-
const next = [...keys].map(String);
|
|
62
|
-
if (type === "single") {
|
|
63
|
-
onValueChange?.(next[0] ?? "");
|
|
64
|
-
} else {
|
|
65
|
-
onValueChange?.(next);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
return /* @__PURE__ */ jsx(
|
|
69
|
-
ToggleButtonGroup,
|
|
70
|
-
{
|
|
71
|
-
ref,
|
|
72
|
-
"data-slot": "toggle-group",
|
|
73
|
-
"data-variant": variant,
|
|
74
|
-
"data-size": size,
|
|
75
|
-
"data-shape": shape,
|
|
76
|
-
"data-wrap": wrap ? "true" : void 0,
|
|
77
|
-
className: cn("ui-toggle-group", className),
|
|
78
|
-
...props,
|
|
79
|
-
selectionMode: type,
|
|
80
|
-
selectedKeys,
|
|
81
|
-
defaultSelectedKeys,
|
|
82
|
-
onSelectionChange: handleSelectionChange,
|
|
83
|
-
isDisabled: disabled,
|
|
84
|
-
disallowEmptySelection,
|
|
85
|
-
render: (domProps) => /* @__PURE__ */ jsx(
|
|
86
|
-
"div",
|
|
87
|
-
{
|
|
88
|
-
...props,
|
|
89
|
-
...domProps,
|
|
90
|
-
ref: (node) => {
|
|
91
|
-
groupElement.current = node;
|
|
92
|
-
const aria = domProps.ref;
|
|
93
|
-
if (typeof aria === "function") aria(node);
|
|
94
|
-
else if (aria) aria.current = node;
|
|
95
|
-
},
|
|
96
|
-
...type === "single" && !radioSemantics ? { role: "group", "aria-orientation": void 0 } : null,
|
|
97
|
-
onKeyDownCapture: (event) => {
|
|
98
|
-
if (radioSemantics) {
|
|
99
|
-
arrowNav.current = ARROW_KEYS.has(event.key);
|
|
100
|
-
if (arrowNav.current) {
|
|
101
|
-
queueMicrotask(() => {
|
|
102
|
-
arrowNav.current = false;
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
domProps.onKeyDownCapture?.(event);
|
|
107
|
-
},
|
|
108
|
-
tabIndex: props.tabIndex ?? domProps.tabIndex
|
|
109
|
-
}
|
|
110
|
-
),
|
|
111
|
-
children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: context, children })
|
|
112
|
-
}
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
);
|
|
116
|
-
ToggleGroup.displayName = "ToggleGroup";
|
|
117
|
-
const ToggleGroupItem = React.forwardRef(
|
|
118
|
-
({
|
|
119
|
-
className,
|
|
120
|
-
variant,
|
|
121
|
-
size,
|
|
122
|
-
shape,
|
|
123
|
-
count,
|
|
124
|
-
overflowCount,
|
|
125
|
-
showZero,
|
|
126
|
-
countLabel,
|
|
127
|
-
children,
|
|
128
|
-
"aria-label": ariaLabel,
|
|
129
|
-
value,
|
|
130
|
-
disabled,
|
|
131
|
-
...props
|
|
132
|
-
}, ref) => {
|
|
133
|
-
const context = React.useContext(ToggleGroupContext);
|
|
134
|
-
const resolvedVariant = variant ?? context.variant;
|
|
135
|
-
const resolvedSize = size ?? context.size;
|
|
136
|
-
const resolvedShape = shape ?? context.shape;
|
|
137
|
-
const { pill, resolvedAriaLabel } = useCounterPill({
|
|
138
|
-
count,
|
|
139
|
-
overflowCount,
|
|
140
|
-
showZero,
|
|
141
|
-
countLabel,
|
|
142
|
-
ariaLabel
|
|
143
|
-
});
|
|
144
|
-
const groupState = React.useContext(ToggleGroupStateContext);
|
|
145
|
-
const isPressed = groupState?.selectedKeys.has(value) ?? false;
|
|
146
|
-
const isSingle = groupState?.selectionMode === "single";
|
|
147
|
-
const radioSemantics = context.radioSemantics === true;
|
|
148
|
-
const rovingTabIndex = radioSemantics && !context.inToolbar && groupState && groupState.selectedKeys.size > 0 ? isPressed ? 0 : -1 : void 0;
|
|
149
|
-
return /* @__PURE__ */ jsxs(
|
|
150
|
-
ToggleButton,
|
|
151
|
-
{
|
|
152
|
-
ref,
|
|
153
|
-
"data-slot": "toggle-group-item",
|
|
154
|
-
"data-state": isPressed ? "on" : "off",
|
|
155
|
-
"data-variant": resolvedVariant,
|
|
156
|
-
"data-size": resolvedSize,
|
|
157
|
-
"data-shape": resolvedShape,
|
|
158
|
-
"aria-label": resolvedAriaLabel,
|
|
159
|
-
className: cn(
|
|
160
|
-
toggleVariants({ variant: resolvedVariant, size: resolvedSize, shape: resolvedShape }),
|
|
161
|
-
className
|
|
162
|
-
),
|
|
163
|
-
...props,
|
|
164
|
-
id: value,
|
|
165
|
-
isDisabled: disabled,
|
|
166
|
-
render: (domProps) => restoreDomProps(props, {
|
|
167
|
-
...domProps,
|
|
168
|
-
...isSingle && !radioSemantics ? { role: void 0, "aria-checked": void 0, "aria-pressed": isPressed } : null,
|
|
169
|
-
...rovingTabIndex == null ? null : { tabIndex: rovingTabIndex },
|
|
170
|
-
// Selection follows focus, as APG requires of a radio group — but only when an arrow
|
|
171
|
-
// key is what moved it. Measured otherwise: RAC's toolbar Tab handler focuses the
|
|
172
|
-
// LAST item on the way out, which silently moved the selection to it.
|
|
173
|
-
...radioSemantics ? {
|
|
174
|
-
onFocus: (event) => {
|
|
175
|
-
if (context.arrowNav?.current && groupState && groupState.selectedKeys.size > 0 && !isPressed) {
|
|
176
|
-
groupState.setSelected(value, true);
|
|
177
|
-
}
|
|
178
|
-
domProps.onFocus?.(event);
|
|
179
|
-
}
|
|
180
|
-
} : null
|
|
181
|
-
}),
|
|
182
|
-
children: [
|
|
183
|
-
children,
|
|
184
|
-
pill
|
|
185
|
-
]
|
|
186
|
-
}
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
);
|
|
190
|
-
ToggleGroupItem.displayName = "ToggleGroupItem";
|
|
191
|
-
export {
|
|
192
|
-
ToggleGroup,
|
|
193
|
-
ToggleGroupItem
|
|
194
|
-
};
|