@godxjp/ui 31.31.8 → 32.0.0
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/tokens.generated.d.ts +6 -6
- package/dist/email/tokens.generated.js +6 -6
- 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.css +43 -0
- package/dist/themes/godx.d.ts +13 -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 +98 -0
- package/package.json +58 -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 +522 -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,5 +1,108 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
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 "./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
|
+
});
|
|
3
106
|
export {
|
|
4
107
|
Segmented
|
|
5
108
|
};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { AllowClearProp, ControlStatusProp, ControlVariantProp, MaxTagCountProp, MaxTagPlaceholderProp, SizeProp } from "../../props/vocabulary/index.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The INLINE presentation of `<Select mode="tags" open={false}>` — a free-text chip field whose
|
|
5
|
+
* list never opens (antd's own spelling of "a tags input with no dropdown"). It was the public
|
|
6
|
+
* `TagInput` until v32 folded it into Select (#1223); the props below are the subset of Select's
|
|
7
|
+
* tags contract this presentation reads, with the same token-level knobs antd puts on that mode.
|
|
6
8
|
*/
|
|
7
|
-
|
|
9
|
+
type SelectTagsInlineProps = {
|
|
8
10
|
value?: string[];
|
|
9
11
|
defaultValue?: string[];
|
|
10
12
|
onValueChange?: (tags: string[]) => void;
|
|
@@ -65,4 +67,5 @@ export type TagInputProps = {
|
|
|
65
67
|
*/
|
|
66
68
|
tokenSeparators?: string[];
|
|
67
69
|
};
|
|
68
|
-
export declare const
|
|
70
|
+
export declare const SelectTagsInline: React.ForwardRefExoticComponent<SelectTagsInlineProps & React.RefAttributes<HTMLInputElement>>;
|
|
71
|
+
export {};
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
controlSurfaceAttrs,
|
|
11
11
|
resolveAllowClear,
|
|
12
12
|
splitByTokenSeparators
|
|
13
|
-
} from "
|
|
14
|
-
const
|
|
13
|
+
} from "./control-surface.js";
|
|
14
|
+
const SelectTagsInline = React.forwardRef(
|
|
15
15
|
({
|
|
16
16
|
value,
|
|
17
17
|
defaultValue = [],
|
|
@@ -210,7 +210,7 @@ const TagInput = React.forwardRef(
|
|
|
210
210
|
);
|
|
211
211
|
}
|
|
212
212
|
);
|
|
213
|
-
|
|
213
|
+
SelectTagsInline.displayName = "SelectTagsInline";
|
|
214
214
|
export {
|
|
215
|
-
|
|
215
|
+
SelectTagsInline
|
|
216
216
|
};
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
import { useOverlayPortalContainer } from "../../lib/overlay-portal.js";
|
|
28
28
|
import { radixSurfaceState, toPlacement } from "../navigation/dropdown-menu.js";
|
|
29
29
|
import { SearchSelect } from "./search-select.js";
|
|
30
|
+
import { SelectTagsInline } from "./select-tags-inline.js";
|
|
30
31
|
import { useTranslation } from "../../i18n/use-translation.js";
|
|
31
32
|
import { normalizeSelectOptions } from "../../lib/select-options.js";
|
|
32
33
|
function isDataSelect(props) {
|
|
@@ -138,6 +139,9 @@ function SelectRoot({
|
|
|
138
139
|
);
|
|
139
140
|
}
|
|
140
141
|
function Select(props) {
|
|
142
|
+
if (props.mode === "tags" && props.open === false && !props.labelInValue) {
|
|
143
|
+
return /* @__PURE__ */ jsx(SelectTagsInline, { ...props });
|
|
144
|
+
}
|
|
141
145
|
if (isDataSelect(props)) {
|
|
142
146
|
if (props.labelInValue) return /* @__PURE__ */ jsx(LabelInValueSelect, { ...props });
|
|
143
147
|
return /* @__PURE__ */ jsx(DataSelect, { ...props });
|
|
@@ -1,2 +1,108 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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,5 +1,193 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
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";
|
|
3
191
|
export {
|
|
4
192
|
ToggleGroup,
|
|
5
193
|
ToggleGroupItem
|
|
@@ -1,2 +1,86 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const toggleVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "outline" | "soft" | null | undefined;
|
|
5
|
+
size?: "lg" | "md" | "sm" | "xs" | null | undefined;
|
|
6
|
+
shape?: "default" | "pill" | "sharp" | null | undefined;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Not exported on its own — it is folded into `ToggleProp` and `ToggleGroupItemProp` so there is
|
|
10
|
+
* one public name per component.
|
|
11
|
+
*/
|
|
12
|
+
type ToggleCountFields = {
|
|
13
|
+
/**
|
|
14
|
+
* Optional numeric count rendered as a borderless counter pill after the label — the SAME
|
|
15
|
+
* vocabulary `Button` already defines, so a counted segmented toggle and a counted filter tab
|
|
16
|
+
* read identically. Formatted with `Intl.NumberFormat` in the active locale (never `String(n)`,
|
|
17
|
+
* never a hand-rolled thousands separator).
|
|
18
|
+
*/
|
|
19
|
+
count?: number;
|
|
20
|
+
/** Cap for `count` — beyond it the pill shows `{overflowCount}+` (e.g. `99+`). */
|
|
21
|
+
overflowCount?: number;
|
|
22
|
+
/** Render the pill when `count` is 0. Default `true`, matching Button. */
|
|
23
|
+
showZero?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Localized description of what the count MEANS, folded into the accessible name so the control
|
|
26
|
+
* never announces as a bare number ("👍 3" → "thumbs up, 3 reactions"). Supply it whenever the
|
|
27
|
+
* visible label is an icon or an emoji; with a text label the label itself already carries the
|
|
28
|
+
* meaning.
|
|
29
|
+
*/
|
|
30
|
+
countLabel?: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* The repo's two-state vocabulary, kept VERBATIM from the Radix era. React Aria spells the same
|
|
34
|
+
* four things `isSelected` / `defaultSelected` / `onChange` / `isDisabled`; the translation lives
|
|
35
|
+
* inside this file so no consumer ever has to learn RAC's names.
|
|
36
|
+
*/
|
|
37
|
+
type TogglePressedFields = {
|
|
38
|
+
/** Controlled pressed state — RAC `isSelected`. */
|
|
39
|
+
pressed?: boolean;
|
|
40
|
+
/** Uncontrolled initial pressed state — RAC `defaultSelected`. */
|
|
41
|
+
defaultPressed?: boolean;
|
|
42
|
+
/** Fired with the NEW pressed state — RAC `onChange`. */
|
|
43
|
+
onPressedChange?: (pressed: boolean) => void;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Counter pill shared by `Toggle`, `ToggleGroupItem` and `Tabs` items. ACCESSIBLE NAME.
|
|
47
|
+
*
|
|
48
|
+
* `slot` names the hooks the pill emits (`data-slot="<slot>-count"` / `.ui-<slot>-count`) so a
|
|
49
|
+
* third component can reuse the whole construction — the Intl formatting, the `overflowCount`
|
|
50
|
+
* cap, and above all the `aria-hidden` + `sr-only` split that keeps «未対応12» out of the
|
|
51
|
+
* accessible name (gh#734) — without a second counting API growing beside this one (gh#762).
|
|
52
|
+
* It defaults to `toggle`, so every existing call emits the identical markup it always has.
|
|
53
|
+
*/
|
|
54
|
+
declare function useCounterPill({ count, overflowCount, showZero, countLabel, ariaLabel, slot, }: ToggleCountFields & {
|
|
55
|
+
ariaLabel?: string;
|
|
56
|
+
slot?: string;
|
|
57
|
+
}): {
|
|
58
|
+
pill: null;
|
|
59
|
+
resolvedAriaLabel: string | undefined;
|
|
60
|
+
} | {
|
|
61
|
+
pill: React.JSX.Element;
|
|
62
|
+
resolvedAriaLabel: string | undefined;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* RAC's `filterDOMProps` forwards only `id`, `data-*`, the four labelling `aria-*` and the global
|
|
66
|
+
* mouse/pointer events; `title`, `tabIndex` and the rarer DOM props are dropped silently, and
|
|
67
|
+
* Radix forwarded ALL of them. `render` is RAC's own escape hatch: the raw props go on first, RAC's
|
|
68
|
+
* merged ones second so its `type`/`disabled`/`aria-pressed`/handlers always win.
|
|
69
|
+
*
|
|
70
|
+
* Two exceptions, both of which Radix owned: `tabIndex` stays the caller's, and so does `id` —
|
|
71
|
+
* inside a ToggleButtonGroup RAC spends `id` as the selection KEY and blanks the DOM attribute,
|
|
72
|
+
* which would otherwise silently drop the id off every grouped item.
|
|
73
|
+
*/
|
|
74
|
+
declare function restoreDomProps<P extends {
|
|
75
|
+
id?: string;
|
|
76
|
+
tabIndex?: number;
|
|
77
|
+
}>(raw: P, domProps: React.JSX.IntrinsicElements["button"]): React.JSX.Element;
|
|
78
|
+
export type ToggleProp = React.ComponentPropsWithoutRef<"button"> & TogglePressedFields & VariantProps<typeof toggleVariants> & ToggleCountFields;
|
|
79
|
+
export type ToggleProps = ToggleProp;
|
|
80
|
+
export declare const Toggle: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & TogglePressedFields & VariantProps<(props?: ({
|
|
81
|
+
variant?: "default" | "outline" | "soft" | null | undefined;
|
|
82
|
+
size?: "lg" | "md" | "sm" | "xs" | null | undefined;
|
|
83
|
+
shape?: "default" | "pill" | "sharp" | null | undefined;
|
|
84
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & ToggleCountFields & React.RefAttributes<HTMLButtonElement>>;
|
|
85
|
+
export { toggleVariants, useCounterPill, restoreDomProps };
|
|
86
|
+
export type { ToggleCountFields, TogglePressedFields };
|