@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,42 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useTranslation } from "../../i18n/use-translation.js";
|
|
4
|
-
import { cn } from "../../lib/utils.js";
|
|
5
|
-
function AuthShell({
|
|
6
|
-
brand,
|
|
7
|
-
actions,
|
|
8
|
-
footer,
|
|
9
|
-
children,
|
|
10
|
-
variant = "default",
|
|
11
|
-
preset = "default",
|
|
12
|
-
measure = "default",
|
|
13
|
-
align,
|
|
14
|
-
density,
|
|
15
|
-
className
|
|
16
|
-
}) {
|
|
17
|
-
const { t } = useTranslation();
|
|
18
|
-
const resolvedDensity = density ?? (variant === "canonical" ? "compact" : "comfortable");
|
|
19
|
-
return /* @__PURE__ */ jsxs(
|
|
20
|
-
"div",
|
|
21
|
-
{
|
|
22
|
-
"data-slot": "auth-shell",
|
|
23
|
-
"data-variant": variant,
|
|
24
|
-
"data-preset": preset === "default" ? void 0 : preset,
|
|
25
|
-
"data-measure": measure === "default" ? void 0 : measure,
|
|
26
|
-
"data-align": align,
|
|
27
|
-
"data-density": resolvedDensity,
|
|
28
|
-
className: cn("ui-auth-shell", className),
|
|
29
|
-
children: [
|
|
30
|
-
(brand !== void 0 || actions !== void 0) && /* @__PURE__ */ jsxs("header", { className: "ui-auth-shell-bar", "aria-label": t("layout.authShell.brandLabel"), children: [
|
|
31
|
-
brand,
|
|
32
|
-
actions !== void 0 && /* @__PURE__ */ jsx("div", { className: "ui-auth-shell-bar-actions", children: actions })
|
|
33
|
-
] }),
|
|
34
|
-
/* @__PURE__ */ jsx("main", { className: "ui-auth-shell-main", "aria-label": t("layout.authShell.mainLabel"), children: /* @__PURE__ */ jsx("div", { className: "ui-auth-shell-card", children }) }),
|
|
35
|
-
footer !== void 0 && /* @__PURE__ */ jsx("footer", { className: "ui-auth-shell-footer", "aria-label": t("layout.authShell.footerLabel"), children: footer })
|
|
36
|
-
]
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
export {
|
|
41
|
-
AuthShell
|
|
42
|
-
};
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { type JSX } from "react";
|
|
2
|
-
import type { SpaceCompactProp } from "../../props/components/layout.prop.js";
|
|
3
|
-
export type { SpaceCompactProp, SpaceCompactProp as SpaceCompactProps, } from "../../props/components/layout.prop.js";
|
|
4
|
-
/**
|
|
5
|
-
* SpaceCompact — antd `Space.Compact`: weld a row of controls into one visual unit.
|
|
6
|
-
*
|
|
7
|
-
* A plain `<div>`, matching antd's own DOM (no ARIA role by default — each child keeps its own
|
|
8
|
-
* accessible name; this is a visual join, not a semantic group, exactly like antd's
|
|
9
|
-
* `Space.Compact`). The corner radii and shared border seam are zeroed/collapsed in CSS — the
|
|
10
|
-
* "not expressible from primitives + tokens" case `docs/roadmap/parity-audit-layout-navigation-
|
|
11
|
-
* general.md` §4.1 describes: doing this at the call site would need `[&>*:not(:first-child)]`
|
|
12
|
-
* utilities, which `ui-audit`'s `no-utility-layout` rule blocks.
|
|
13
|
-
*
|
|
14
|
-
* ## ONE label for the pair (`FormField` wrapping a `SpaceCompact`)
|
|
15
|
-
*
|
|
16
|
-
* `FormField` lands its label contract on its single direct child (`docs/FORMS.md`). Cloned
|
|
17
|
-
* `aria-label`/`aria-labelledby` onto a role-less `<div>` would be inert (axe `aria-allowed-attr`
|
|
18
|
-
* disagrees, and no AT reads a name off a generic element) — so, like `Flex` (which `FormField`
|
|
19
|
-
* already lands on for a range/`年/月` pair), a NAMED `SpaceCompact` with no explicit `role`
|
|
20
|
-
* becomes `role="group"` and keeps only the aria a group allows: `aria-errormessage` folds
|
|
21
|
-
* into `aria-describedby`, and the widget-only `aria-required`/`aria-invalid` are dropped. Pass an
|
|
22
|
-
* explicit `role` to opt out and own the attribute set yourself.
|
|
23
|
-
*
|
|
24
|
-
* NOT quite "exactly like `Flex`" any more: since gh#916 `Flex` skips that promotion when its `as`
|
|
25
|
-
* renders an element that already has a role (`ul`, `ol`, `li`), because a name should improve
|
|
26
|
-
* such a role rather than replace it. This component always renders a `<div>`, which has no role
|
|
27
|
-
* to lose, so the promotion is unconditional here and the two agree on every case `Flex` still
|
|
28
|
-
* promotes.
|
|
29
|
-
*
|
|
30
|
-
* ## ONE WRAPPER PER CHILD, and why removing it re-breaks the headline case (gh#919)
|
|
31
|
-
*
|
|
32
|
-
* Every rule in `src/styles/layout.css` — the `flex` basis, the negative seam margin, the
|
|
33
|
-
* `position: relative` + `z-index` raise, and the `:not(:first-child)`/`:not(:last-child)` corner
|
|
34
|
-
* zeroing — used to key on `> *`, the DIRECT ELEMENT children. That silently assumed one child
|
|
35
|
-
* element == one flex item, and `Select` breaks the assumption on purpose: `.ui-select-root` is
|
|
36
|
-
* `display: contents` (`src/styles/control.css`) precisely so the TRIGGER is the box a flex row
|
|
37
|
-
* sees, and react-aria renders a `<template>` beside it. So `> *` matched a root that generates no
|
|
38
|
-
* box at all — flex, margin, position and z-index all landed on nothing, the trigger inherited
|
|
39
|
-
* none of them and kept its own `w-full`, and the `<template>` shifted first/last-child by one.
|
|
40
|
-
* Measured by the guinea-pig consumer on `NumberInput` + `Select`, the pattern in this component's
|
|
41
|
-
* own catalog entry: trigger 562px (the whole row), spinbutton 54px with its step buttons pushed
|
|
42
|
-
* outside the box.
|
|
43
|
-
*
|
|
44
|
-
* Wrapping each child in a box this component owns makes "one child, one flex item" true no matter
|
|
45
|
-
* what the child renders, which is the property every one of those rules needed in the first place.
|
|
46
|
-
* The radius knobs still reach the control because custom properties inherit — through the wrapper
|
|
47
|
-
* and through `display: contents` alike. antd solves the same problem the other way, by passing
|
|
48
|
-
* position down `SpaceCompactItemContext` for each child to apply to its own root; that needs every
|
|
49
|
-
* control to participate, which is the port `docs/roadmap/parity-audit-layout-navigation-general.md`
|
|
50
|
-
* §4.2 records as not done.
|
|
51
|
-
*
|
|
52
|
-
* ## `orientation="vertical"` — a written-down partial port
|
|
53
|
-
*
|
|
54
|
-
* Layout (column stacking, border collapse) works on both axes. Corner-zeroing currently only
|
|
55
|
-
* covers the INLINE seam (`orientation="horizontal"`, the default and the only axis the shipping
|
|
56
|
-
* use case needs): it reads the same `--input-radius-start`/`--input-radius-end` and
|
|
57
|
-
* `--control-trigger-radius-start`/`--control-trigger-radius-end` knobs the Input and trigger
|
|
58
|
-
* families already expose, and both pairs are inline-only. A BLOCK-axis pair does not exist on
|
|
59
|
-
* either family yet, so a vertical stack collapses its shared border but each child keeps all
|
|
60
|
-
* four of its own corners rounded. Follow-up, not a silent gap.
|
|
61
|
-
*/
|
|
62
|
-
export declare function SpaceCompact({ children, orientation, vertical, fullWidth, density, className, ...props }: SpaceCompactProp): JSX.Element;
|
|
63
|
-
export declare namespace SpaceCompact {
|
|
64
|
-
var displayName: string;
|
|
65
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Children } from "react";
|
|
4
|
-
import { mergeAriaIds } from "../../lib/field-a11y.js";
|
|
5
|
-
import { cn } from "../../lib/utils.js";
|
|
6
|
-
function SpaceCompact({
|
|
7
|
-
children,
|
|
8
|
-
orientation,
|
|
9
|
-
vertical,
|
|
10
|
-
fullWidth,
|
|
11
|
-
density,
|
|
12
|
-
className,
|
|
13
|
-
...props
|
|
14
|
-
}) {
|
|
15
|
-
const resolvedOrientation = orientation ?? (vertical ? "vertical" : "horizontal");
|
|
16
|
-
let domProps = props;
|
|
17
|
-
if (props.role === void 0 && (props["aria-label"] !== void 0 || props["aria-labelledby"] !== void 0)) {
|
|
18
|
-
const {
|
|
19
|
-
"aria-required": _ariaRequired,
|
|
20
|
-
"aria-invalid": _ariaInvalid,
|
|
21
|
-
"aria-errormessage": ariaErrorMessage,
|
|
22
|
-
...allowed
|
|
23
|
-
} = props;
|
|
24
|
-
domProps = {
|
|
25
|
-
...allowed,
|
|
26
|
-
role: "group",
|
|
27
|
-
"aria-describedby": mergeAriaIds(props["aria-describedby"], ariaErrorMessage)
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
return /* @__PURE__ */ jsx(
|
|
31
|
-
"div",
|
|
32
|
-
{
|
|
33
|
-
"data-slot": "space-compact",
|
|
34
|
-
"data-orientation": resolvedOrientation,
|
|
35
|
-
"data-full-width": fullWidth ? "true" : void 0,
|
|
36
|
-
className: cn("ui-space-compact", density && `ui-density-${density}`, className),
|
|
37
|
-
...domProps,
|
|
38
|
-
children: Children.toArray(children).map((child, index) => /* @__PURE__ */ jsx(
|
|
39
|
-
"div",
|
|
40
|
-
{
|
|
41
|
-
"data-slot": "space-compact-item",
|
|
42
|
-
children: child
|
|
43
|
-
},
|
|
44
|
-
index
|
|
45
|
-
))
|
|
46
|
-
}
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
SpaceCompact.displayName = "SpaceCompact";
|
|
50
|
-
export {
|
|
51
|
-
SpaceCompact
|
|
52
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import type { ConversationsProp } from "../../props/components/navigation.prop.js";
|
|
3
|
-
export type { ConversationsProp, ConversationsProp as ConversationsProps, ConversationsItemProp, ConversationsDividerProp, ConversationsEntryProp, ConversationsMenuProp, ConversationsMenuItemProp, ConversationsGroupableProp, ConversationsCreationProp, } from "../../props/components/navigation.prop.js";
|
|
4
|
-
/**
|
|
5
|
-
* Conversations — the session rail of a chat surface (Ant Design X `Conversations`).
|
|
6
|
-
*
|
|
7
|
-
* ## What is ported, and the one half that is deliberately not
|
|
8
|
-
*
|
|
9
|
-
* Every prop a caller passes keeps Ant X's spelling and semantics: `items` (conversations and
|
|
10
|
-
* `{ type: "divider" }` rules), `activeKey` / `defaultActiveKey` / `onActiveChange`, `menu` (flat
|
|
11
|
-
* or per-row), `groupable` (with `label`, `collapsible` and the `expandedKeys` triad) and
|
|
12
|
-
* `creation`. The two knobs left out are `styles` / `classNames` — the semantic style maps — and
|
|
13
|
-
* they are left out by a standing decision of this repository, not by omission: a free-form style
|
|
14
|
-
* hole freezes internal DOM slot names into public API and is unmeasurable by the audit
|
|
15
|
-
* (docs/WHAT-BELONGS-HERE.md · "Lỗ kiểu dáng tự do"; docs/DESIGN-AUTHORITY.md · "A knob that only
|
|
16
|
-
* a fork could reach is not parity either"). The rail is retuned through
|
|
17
|
-
* `src/tokens/components/conversations.css` instead. `prefixCls`, `rootClassName`,
|
|
18
|
-
* `menu.getPopupContainer`, `menu.trigger` and `shortcutKeys` are out for the same reason or
|
|
19
|
-
* because the subsystem behind them does not exist here (see the PR for the per-prop ledger).
|
|
20
|
-
*
|
|
21
|
-
* ## What this adds, because Ant X's rail has no keyboard model at all
|
|
22
|
-
*
|
|
23
|
-
* Measured in `@ant-design/x@2.9.0`: `es/conversations/Item.js` renders a bare
|
|
24
|
-
* `<li title … onClick>`. No `role`, no `tabIndex`, no key handling — the rail is unreachable by
|
|
25
|
-
* keyboard, and a screen reader meets twelve list items with no hint that any of them is a
|
|
26
|
-
* control or that one of them is current. Neither is the hand-rolled alternative the issue
|
|
27
|
-
* describes (a stack of `Button`s) any better on the axis that matters: it is one tab stop PER
|
|
28
|
-
* conversation.
|
|
29
|
-
*
|
|
30
|
-
* So the rows here are real `Button`s under ONE roving tabindex, the APG composite-widget rule:
|
|
31
|
-
*
|
|
32
|
-
* - the whole rail — group headings included — is a single tab stop;
|
|
33
|
-
* - `↑` / `↓` walk it and wrap, `Home` / `End` jump to its ends;
|
|
34
|
-
* - the logical FORWARD arrow (`→` in LTR, `←` in RTL) steps from a row onto its overflow menu,
|
|
35
|
-
* and the backward arrow steps back, so a row's second action costs no extra tab stop;
|
|
36
|
-
* - the current conversation carries `aria-current="true"`, which is what makes "current" survive
|
|
37
|
-
* a theme that does not tint (WCAG 1.4.1 — never colour alone).
|
|
38
|
-
*/
|
|
39
|
-
export declare const Conversations: React.ForwardRefExoticComponent<ConversationsProp & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,371 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { ChevronDown, MoreHorizontal, Plus } from "lucide-react";
|
|
5
|
-
import { useTranslation } from "../../i18n/use-translation.js";
|
|
6
|
-
import { formatDate } from "../../lib/datetime/format-date.js";
|
|
7
|
-
import { cn } from "../../lib/utils.js";
|
|
8
|
-
import { Button } from "../general/button.js";
|
|
9
|
-
import { Text } from "../general/typography.js";
|
|
10
|
-
import { Separator } from "../layout/separator.js";
|
|
11
|
-
import {
|
|
12
|
-
DropdownMenu,
|
|
13
|
-
DropdownMenuContent,
|
|
14
|
-
DropdownMenuItem,
|
|
15
|
-
DropdownMenuTrigger
|
|
16
|
-
} from "./dropdown-menu.js";
|
|
17
|
-
function isDivider(entry) {
|
|
18
|
-
return "type" in entry && entry.type === "divider";
|
|
19
|
-
}
|
|
20
|
-
function isRtl(element) {
|
|
21
|
-
return element?.closest("[dir]")?.getAttribute("dir")?.toLowerCase() === "rtl";
|
|
22
|
-
}
|
|
23
|
-
function toSections(items, groupable) {
|
|
24
|
-
const collapsibleOption = typeof groupable === "object" ? groupable.collapsible : void 0;
|
|
25
|
-
const sections = [];
|
|
26
|
-
for (const entry of items) {
|
|
27
|
-
const group = !groupable || isDivider(entry) ? void 0 : entry.group;
|
|
28
|
-
if (group === void 0) {
|
|
29
|
-
const tail = sections[sections.length - 1];
|
|
30
|
-
if (tail && tail.group === void 0) {
|
|
31
|
-
tail.entries.push(entry);
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
sections.push({ entries: [entry], collapsible: false });
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
const existing = sections.find((section) => section.group === group);
|
|
38
|
-
if (existing) {
|
|
39
|
-
existing.entries.push(entry);
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
sections.push({
|
|
43
|
-
group,
|
|
44
|
-
entries: [entry],
|
|
45
|
-
collapsible: typeof collapsibleOption === "function" ? collapsibleOption(group) : collapsibleOption ?? false
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
return sections;
|
|
49
|
-
}
|
|
50
|
-
const groupNavKey = (group) => `group:${group}`;
|
|
51
|
-
const rowNavKey = (key) => `row:${key}`;
|
|
52
|
-
const Conversations = React.forwardRef(
|
|
53
|
-
({
|
|
54
|
-
items = [],
|
|
55
|
-
activeKey,
|
|
56
|
-
defaultActiveKey,
|
|
57
|
-
onActiveChange,
|
|
58
|
-
menu,
|
|
59
|
-
groupable,
|
|
60
|
-
creation,
|
|
61
|
-
label,
|
|
62
|
-
id,
|
|
63
|
-
className,
|
|
64
|
-
...rest
|
|
65
|
-
}, ref) => {
|
|
66
|
-
const { t } = useTranslation();
|
|
67
|
-
const rootRef = React.useRef(null);
|
|
68
|
-
const setRootRef = React.useCallback(
|
|
69
|
-
(node) => {
|
|
70
|
-
rootRef.current = node;
|
|
71
|
-
if (typeof ref === "function") ref(node);
|
|
72
|
-
else if (ref) ref.current = node;
|
|
73
|
-
},
|
|
74
|
-
[ref]
|
|
75
|
-
);
|
|
76
|
-
const [uncontrolledActive, setUncontrolledActive] = React.useState(defaultActiveKey);
|
|
77
|
-
const mergedActiveKey = activeKey ?? uncontrolledActive;
|
|
78
|
-
const sections = React.useMemo(() => toSections(items, groupable), [items, groupable]);
|
|
79
|
-
const groupOptions = typeof groupable === "object" ? groupable : {};
|
|
80
|
-
const collapsibleGroups = React.useMemo(
|
|
81
|
-
() => sections.filter((section) => section.collapsible && section.group).map((s) => s.group),
|
|
82
|
-
[sections]
|
|
83
|
-
);
|
|
84
|
-
const [uncontrolledExpanded, setUncontrolledExpanded] = React.useState(() => [
|
|
85
|
-
...groupOptions.defaultExpandedKeys ?? collapsibleGroups
|
|
86
|
-
]);
|
|
87
|
-
const expandedKeys = groupOptions.expandedKeys ? [...groupOptions.expandedKeys] : uncontrolledExpanded;
|
|
88
|
-
const toggleGroup = (group) => {
|
|
89
|
-
const next = expandedKeys.includes(group) ? expandedKeys.filter((key) => key !== group) : [...expandedKeys, group];
|
|
90
|
-
if (!groupOptions.expandedKeys) setUncontrolledExpanded(next);
|
|
91
|
-
groupOptions.onExpand?.(next);
|
|
92
|
-
};
|
|
93
|
-
const navKeys = [];
|
|
94
|
-
for (const section of sections) {
|
|
95
|
-
if (section.group && section.collapsible) {
|
|
96
|
-
navKeys.push(groupNavKey(section.group));
|
|
97
|
-
if (!expandedKeys.includes(section.group)) continue;
|
|
98
|
-
}
|
|
99
|
-
for (const entry of section.entries) {
|
|
100
|
-
if (!isDivider(entry) && !entry.disabled) navKeys.push(rowNavKey(entry.key));
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
const [focusKey, setFocusKey] = React.useState(null);
|
|
104
|
-
const activeNavKey = mergedActiveKey ? rowNavKey(mergedActiveKey) : void 0;
|
|
105
|
-
const tabStop = focusKey && navKeys.includes(focusKey) ? focusKey : activeNavKey && navKeys.includes(activeNavKey) ? activeNavKey : navKeys[0];
|
|
106
|
-
const nodes = React.useRef(/* @__PURE__ */ new Map());
|
|
107
|
-
const registerNode = (key) => (node) => {
|
|
108
|
-
if (node) nodes.current.set(key, node);
|
|
109
|
-
else nodes.current.delete(key);
|
|
110
|
-
};
|
|
111
|
-
const moveTo = (key) => {
|
|
112
|
-
if (!key) return;
|
|
113
|
-
setFocusKey(key);
|
|
114
|
-
nodes.current.get(key)?.focus();
|
|
115
|
-
};
|
|
116
|
-
const step = (from, delta) => {
|
|
117
|
-
if (navKeys.length === 0) return;
|
|
118
|
-
const index = navKeys.indexOf(from);
|
|
119
|
-
const next = index === -1 ? 0 : (index + delta + navKeys.length) % navKeys.length;
|
|
120
|
-
moveTo(navKeys[next]);
|
|
121
|
-
};
|
|
122
|
-
const handleNavKeyDown = (navKey) => (event) => {
|
|
123
|
-
const rtl = isRtl(event.currentTarget);
|
|
124
|
-
const forward = rtl ? "ArrowLeft" : "ArrowRight";
|
|
125
|
-
const backward = rtl ? "ArrowRight" : "ArrowLeft";
|
|
126
|
-
switch (event.key) {
|
|
127
|
-
case "ArrowDown":
|
|
128
|
-
event.preventDefault();
|
|
129
|
-
step(navKey, 1);
|
|
130
|
-
return;
|
|
131
|
-
case "ArrowUp":
|
|
132
|
-
event.preventDefault();
|
|
133
|
-
step(navKey, -1);
|
|
134
|
-
return;
|
|
135
|
-
case "Home":
|
|
136
|
-
event.preventDefault();
|
|
137
|
-
moveTo(navKeys[0]);
|
|
138
|
-
return;
|
|
139
|
-
case "End":
|
|
140
|
-
event.preventDefault();
|
|
141
|
-
moveTo(navKeys[navKeys.length - 1]);
|
|
142
|
-
return;
|
|
143
|
-
case forward: {
|
|
144
|
-
const trigger = nodes.current.get(`menu:${navKey}`);
|
|
145
|
-
if (!trigger) return;
|
|
146
|
-
event.preventDefault();
|
|
147
|
-
trigger.focus();
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
case backward: {
|
|
151
|
-
if (!navKey.startsWith("menu:")) return;
|
|
152
|
-
event.preventDefault();
|
|
153
|
-
moveTo(navKey.slice("menu:".length));
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
default:
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
const selectConversation = (item) => {
|
|
160
|
-
if (item.disabled) return;
|
|
161
|
-
if (activeKey === void 0) setUncontrolledActive(item.key);
|
|
162
|
-
onActiveChange?.(
|
|
163
|
-
item.key,
|
|
164
|
-
items.find((entry) => !isDivider(entry) && entry.key === item.key)
|
|
165
|
-
);
|
|
166
|
-
};
|
|
167
|
-
const menuFor = (item) => {
|
|
168
|
-
const resolved = typeof menu === "function" ? menu(item) : menu;
|
|
169
|
-
return resolved && resolved.items.length > 0 ? resolved : void 0;
|
|
170
|
-
};
|
|
171
|
-
const renderEntry = (entry, index) => {
|
|
172
|
-
if (isDivider(entry)) {
|
|
173
|
-
return /* @__PURE__ */ jsx("li", { className: "ui-conversations-rule", children: /* @__PURE__ */ jsx(
|
|
174
|
-
Separator,
|
|
175
|
-
{
|
|
176
|
-
"data-dashed": entry.dashed ? "true" : void 0,
|
|
177
|
-
className: "ui-conversations-separator"
|
|
178
|
-
}
|
|
179
|
-
) }, entry.key ?? `divider-${index}`);
|
|
180
|
-
}
|
|
181
|
-
const navKey = rowNavKey(entry.key);
|
|
182
|
-
const active = mergedActiveKey === entry.key;
|
|
183
|
-
const rowMenu = entry.disabled ? void 0 : menuFor(entry);
|
|
184
|
-
const labelText = typeof entry.label === "string" ? entry.label : entry.key;
|
|
185
|
-
return /* @__PURE__ */ jsxs(
|
|
186
|
-
"li",
|
|
187
|
-
{
|
|
188
|
-
"data-slot": "conversations-item",
|
|
189
|
-
"data-active": active ? "true" : void 0,
|
|
190
|
-
className: "ui-conversations-item",
|
|
191
|
-
children: [
|
|
192
|
-
/* @__PURE__ */ jsxs(
|
|
193
|
-
Button,
|
|
194
|
-
{
|
|
195
|
-
ref: registerNode(navKey),
|
|
196
|
-
type: "button",
|
|
197
|
-
variant: "ghost",
|
|
198
|
-
fullWidth: true,
|
|
199
|
-
align: "start",
|
|
200
|
-
disabled: entry.disabled,
|
|
201
|
-
"aria-current": active ? "true" : void 0,
|
|
202
|
-
tabIndex: tabStop === navKey ? 0 : -1,
|
|
203
|
-
className: "ui-conversations-row",
|
|
204
|
-
onFocus: () => setFocusKey(navKey),
|
|
205
|
-
onClick: () => selectConversation(entry),
|
|
206
|
-
onKeyDown: handleNavKeyDown(navKey),
|
|
207
|
-
children: [
|
|
208
|
-
entry.icon ? /* @__PURE__ */ jsx("span", { className: "ui-conversations-icon", "aria-hidden": "true", children: entry.icon }) : null,
|
|
209
|
-
/* @__PURE__ */ jsxs("span", { className: "ui-conversations-line", children: [
|
|
210
|
-
/* @__PURE__ */ jsx(Text, { truncate: true, children: entry.label }),
|
|
211
|
-
entry.timestamp === void 0 ? null : (
|
|
212
|
-
/*
|
|
213
|
-
* Through `formatDate`, never through `toLocaleString` or a sliced ISO string.
|
|
214
|
-
* `docs/DATETIME.md` rule 1 forbids the alternatives for a measured reason: the
|
|
215
|
-
* tenant's locale, timezone and 12/24h choice live in AppProvider, so the same
|
|
216
|
-
* epoch has to read 2026/03/15 in a Japanese tenant and 15/03/2026 in a
|
|
217
|
-
* Vietnamese one. A component that formats its own dates cannot do that.
|
|
218
|
-
*/
|
|
219
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", tone: "muted", tabular: true, className: "ui-conversations-timestamp", children: formatDate(new Date(entry.timestamp)) })
|
|
220
|
-
)
|
|
221
|
-
] })
|
|
222
|
-
]
|
|
223
|
-
}
|
|
224
|
-
),
|
|
225
|
-
rowMenu ? /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
226
|
-
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
227
|
-
Button,
|
|
228
|
-
{
|
|
229
|
-
ref: registerNode(`menu:${navKey}`),
|
|
230
|
-
type: "button",
|
|
231
|
-
variant: "ghost",
|
|
232
|
-
size: "icon-sm",
|
|
233
|
-
tabIndex: -1,
|
|
234
|
-
className: "ui-conversations-menu-trigger",
|
|
235
|
-
"aria-label": rowMenu.triggerLabel?.(entry) ?? t("navigation.conversations.rowActions", { label: labelText }),
|
|
236
|
-
onKeyDown: handleNavKeyDown(`menu:${navKey}`),
|
|
237
|
-
children: /* @__PURE__ */ jsx(MoreHorizontal, { "aria-hidden": "true" })
|
|
238
|
-
}
|
|
239
|
-
) }),
|
|
240
|
-
/* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", children: rowMenu.items.map((command) => /* @__PURE__ */ jsxs(
|
|
241
|
-
DropdownMenuItem,
|
|
242
|
-
{
|
|
243
|
-
disabled: command.disabled,
|
|
244
|
-
variant: command.danger ? "destructive" : void 0,
|
|
245
|
-
onSelect: () => rowMenu.onClick?.({ key: command.key, conversation: entry }),
|
|
246
|
-
children: [
|
|
247
|
-
command.icon,
|
|
248
|
-
command.label
|
|
249
|
-
]
|
|
250
|
-
},
|
|
251
|
-
command.key
|
|
252
|
-
)) })
|
|
253
|
-
] }) : null
|
|
254
|
-
]
|
|
255
|
-
},
|
|
256
|
-
entry.key
|
|
257
|
-
);
|
|
258
|
-
};
|
|
259
|
-
const railLabel = label ?? t("navigation.conversations.label");
|
|
260
|
-
return /* @__PURE__ */ jsxs(
|
|
261
|
-
"div",
|
|
262
|
-
{
|
|
263
|
-
ref: setRootRef,
|
|
264
|
-
id,
|
|
265
|
-
"data-slot": "conversations",
|
|
266
|
-
className: cn("ui-conversations", className),
|
|
267
|
-
...rest,
|
|
268
|
-
children: [
|
|
269
|
-
creation ? /* @__PURE__ */ jsx(CreationButton, { creation }) : null,
|
|
270
|
-
sections.map((section, sectionIndex) => {
|
|
271
|
-
if (!section.group) {
|
|
272
|
-
return /* @__PURE__ */ jsx(
|
|
273
|
-
"ul",
|
|
274
|
-
{
|
|
275
|
-
"aria-label": railLabel,
|
|
276
|
-
className: "ui-conversations-list",
|
|
277
|
-
children: section.entries.map(renderEntry)
|
|
278
|
-
},
|
|
279
|
-
`run-${sectionIndex}`
|
|
280
|
-
);
|
|
281
|
-
}
|
|
282
|
-
const heading = typeof groupOptions.label === "function" ? groupOptions.label(section.group) : groupOptions.label ?? section.group;
|
|
283
|
-
const navKey = groupNavKey(section.group);
|
|
284
|
-
const expanded = expandedKeys.includes(section.group);
|
|
285
|
-
const listId = `${id ?? "ui-conversations"}-${section.group}`;
|
|
286
|
-
return /* @__PURE__ */ jsxs(
|
|
287
|
-
"div",
|
|
288
|
-
{
|
|
289
|
-
"data-slot": "conversations-group",
|
|
290
|
-
className: "ui-conversations-group",
|
|
291
|
-
children: [
|
|
292
|
-
section.collapsible ? /* @__PURE__ */ jsxs(
|
|
293
|
-
Button,
|
|
294
|
-
{
|
|
295
|
-
ref: registerNode(navKey),
|
|
296
|
-
type: "button",
|
|
297
|
-
variant: "ghost",
|
|
298
|
-
size: "sm",
|
|
299
|
-
fullWidth: true,
|
|
300
|
-
align: "start",
|
|
301
|
-
"aria-expanded": expanded,
|
|
302
|
-
"aria-controls": listId,
|
|
303
|
-
tabIndex: tabStop === navKey ? 0 : -1,
|
|
304
|
-
className: "ui-conversations-group-trigger",
|
|
305
|
-
onFocus: () => setFocusKey(navKey),
|
|
306
|
-
onClick: () => toggleGroup(section.group),
|
|
307
|
-
onKeyDown: handleNavKeyDown(navKey),
|
|
308
|
-
children: [
|
|
309
|
-
/* @__PURE__ */ jsx(
|
|
310
|
-
ChevronDown,
|
|
311
|
-
{
|
|
312
|
-
"aria-hidden": "true",
|
|
313
|
-
className: "ui-conversations-group-chevron",
|
|
314
|
-
"data-expanded": expanded ? "true" : void 0
|
|
315
|
-
}
|
|
316
|
-
),
|
|
317
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", tone: "muted", weight: "medium", truncate: true, children: heading })
|
|
318
|
-
]
|
|
319
|
-
}
|
|
320
|
-
) : /* @__PURE__ */ jsx(
|
|
321
|
-
Text,
|
|
322
|
-
{
|
|
323
|
-
size: "xs",
|
|
324
|
-
tone: "muted",
|
|
325
|
-
weight: "medium",
|
|
326
|
-
className: "ui-conversations-group-label",
|
|
327
|
-
children: heading
|
|
328
|
-
}
|
|
329
|
-
),
|
|
330
|
-
section.collapsible && !expanded ? null : /* @__PURE__ */ jsx(
|
|
331
|
-
"ul",
|
|
332
|
-
{
|
|
333
|
-
id: listId,
|
|
334
|
-
"aria-label": typeof heading === "string" ? heading : section.group,
|
|
335
|
-
className: "ui-conversations-list",
|
|
336
|
-
children: section.entries.map(renderEntry)
|
|
337
|
-
}
|
|
338
|
-
)
|
|
339
|
-
]
|
|
340
|
-
},
|
|
341
|
-
section.group
|
|
342
|
-
);
|
|
343
|
-
})
|
|
344
|
-
]
|
|
345
|
-
}
|
|
346
|
-
);
|
|
347
|
-
}
|
|
348
|
-
);
|
|
349
|
-
Conversations.displayName = "Conversations";
|
|
350
|
-
function CreationButton({ creation }) {
|
|
351
|
-
const { t } = useTranslation();
|
|
352
|
-
return /* @__PURE__ */ jsxs(
|
|
353
|
-
Button,
|
|
354
|
-
{
|
|
355
|
-
type: "button",
|
|
356
|
-
variant: "outline",
|
|
357
|
-
fullWidth: true,
|
|
358
|
-
align: "start",
|
|
359
|
-
disabled: creation.disabled,
|
|
360
|
-
className: "ui-conversations-creation",
|
|
361
|
-
onClick: () => creation.onClick?.(),
|
|
362
|
-
children: [
|
|
363
|
-
creation.icon ?? /* @__PURE__ */ jsx(Plus, { "aria-hidden": "true" }),
|
|
364
|
-
creation.label ?? t("navigation.conversations.creation")
|
|
365
|
-
]
|
|
366
|
-
}
|
|
367
|
-
);
|
|
368
|
-
}
|
|
369
|
-
export {
|
|
370
|
-
Conversations
|
|
371
|
-
};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
interface AccordionBaseProps extends Omit<React.ComponentPropsWithRef<"div">, "dir"> {
|
|
3
|
-
/** Trục xếp mục — đổi cặp phím mũi tên điều hướng. */
|
|
4
|
-
orientation?: "vertical" | "horizontal";
|
|
5
|
-
/** Chiều viết; chỉ đổi mũi tên trái/phải khi `orientation="horizontal"`. */
|
|
6
|
-
dir?: "ltr" | "rtl";
|
|
7
|
-
/** Khoá mọi mục. */
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
}
|
|
10
|
-
interface AccordionSingleProps extends AccordionBaseProps {
|
|
11
|
-
/** Chỉ một mục mở tại một thời điểm. */
|
|
12
|
-
type: "single";
|
|
13
|
-
/** Mục đang mở, có kiểm soát. */
|
|
14
|
-
value?: string;
|
|
15
|
-
/** Mục mở ban đầu khi không kiểm soát. */
|
|
16
|
-
defaultValue?: string;
|
|
17
|
-
/** Gọi khi mục đang mở đổi; chuỗi rỗng nghĩa là đã đóng hết. */
|
|
18
|
-
onValueChange?: (value: string) => void;
|
|
19
|
-
/** Cho phép đóng chính mục đang mở. Mặc định sai, như Radix. */
|
|
20
|
-
collapsible?: boolean;
|
|
21
|
-
}
|
|
22
|
-
interface AccordionMultipleProps extends AccordionBaseProps {
|
|
23
|
-
/** Nhiều mục mở độc lập. */
|
|
24
|
-
type: "multiple";
|
|
25
|
-
/** Các mục đang mở, có kiểm soát. */
|
|
26
|
-
value?: string[];
|
|
27
|
-
/** Các mục mở ban đầu khi không kiểm soát. */
|
|
28
|
-
defaultValue?: string[];
|
|
29
|
-
/** Gọi khi tập mục đang mở đổi. */
|
|
30
|
-
onValueChange?: (value: string[]) => void;
|
|
31
|
-
}
|
|
32
|
-
type AccordionProps = AccordionSingleProps | AccordionMultipleProps;
|
|
33
|
-
export declare function Accordion(accordionProps: AccordionProps): React.JSX.Element;
|
|
34
|
-
interface AccordionItemProps extends React.ComponentPropsWithRef<"div"> {
|
|
35
|
-
/** Khoá riêng mục này. */
|
|
36
|
-
disabled?: boolean;
|
|
37
|
-
/** Khoá định danh của mục — khớp với `value` của `Accordion`. */
|
|
38
|
-
value: string;
|
|
39
|
-
}
|
|
40
|
-
export declare function AccordionItem({ className, disabled, value, children, ref, ...props }: AccordionItemProps): React.JSX.Element;
|
|
41
|
-
interface AccordionTriggerProps extends React.ComponentPropsWithRef<"button"> {
|
|
42
|
-
/** Mượn thẻ của con thay vì dựng `<button>` riêng. */
|
|
43
|
-
asChild?: boolean;
|
|
44
|
-
}
|
|
45
|
-
export declare function AccordionTrigger({ asChild, className, children, onClick, ...props }: AccordionTriggerProps): React.JSX.Element;
|
|
46
|
-
interface AccordionContentProps extends React.ComponentPropsWithRef<"div"> {
|
|
47
|
-
/** Giữ nội dung trong DOM cả khi đóng. */
|
|
48
|
-
forceMount?: true;
|
|
49
|
-
}
|
|
50
|
-
export declare function AccordionContent({ className, forceMount, children, ref, ...props }: AccordionContentProps): React.JSX.Element;
|
|
51
|
-
export {};
|