@godxjp/ui 28.8.0 → 28.10.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/agent/START-HERE.md +193 -0
- package/agent/anti-ai-tells.json +158 -0
- package/agent/components/Accordion.json +60 -0
- package/agent/components/AccountChip.json +59 -0
- package/agent/components/Actions.json +78 -0
- package/agent/components/Activity.json +80 -0
- package/agent/components/Affix.json +78 -0
- package/agent/components/Alert.json +65 -0
- package/agent/components/AlertDialog.json +109 -0
- package/agent/components/AlertDialogRoot.json +52 -0
- package/agent/components/Anchor.json +119 -0
- package/agent/components/AppLauncher.json +95 -0
- package/agent/components/AppProvider.json +105 -0
- package/agent/components/AppSettingPicker.json +88 -0
- package/agent/components/AppSettingToggle.json +70 -0
- package/agent/components/AppShell.json +159 -0
- package/agent/components/AreaChart.json +105 -0
- package/agent/components/AspectRatio.json +38 -0
- package/agent/components/Attachments.json +76 -0
- package/agent/components/AuthAccountSummary.json +64 -0
- package/agent/components/AuthDivider.json +35 -0
- package/agent/components/AuthFooter.json +48 -0
- package/agent/components/AuthIdentity.json +42 -0
- package/agent/components/AuthShell.json +108 -0
- package/agent/components/AuthStack.json +21 -0
- package/agent/components/Avatar.json +89 -0
- package/agent/components/Badge.json +96 -0
- package/agent/components/Banner.json +48 -0
- package/agent/components/BarChart.json +108 -0
- package/agent/components/BranchScopePicker.json +89 -0
- package/agent/components/Breadcrumb.json +54 -0
- package/agent/components/Button.json +133 -0
- package/agent/components/Calendar.json +259 -0
- package/agent/components/Callout.json +46 -0
- package/agent/components/Card.json +112 -0
- package/agent/components/CardBar.json +49 -0
- package/agent/components/CardContent.json +51 -0
- package/agent/components/Carousel.json +50 -0
- package/agent/components/Cascader.json +209 -0
- package/agent/components/CenteredShell.json +66 -0
- package/agent/components/ChatBubble.json +100 -0
- package/agent/components/ChatBubbleList.json +64 -0
- package/agent/components/ChatComposer.json +160 -0
- package/agent/components/ChatSuggestion.json +86 -0
- package/agent/components/Checkbox.json +68 -0
- package/agent/components/CheckboxGroup.json +96 -0
- package/agent/components/CodeBlock.json +64 -0
- package/agent/components/Collapsible.json +74 -0
- package/agent/components/ColorPicker.json +87 -0
- package/agent/components/Command.json +168 -0
- package/agent/components/CommandPalette.json +84 -0
- package/agent/components/CompactBarTrend.json +101 -0
- package/agent/components/Conversations.json +82 -0
- package/agent/components/CredentialReveal.json +93 -0
- package/agent/components/DataState.json +79 -0
- package/agent/components/DataTable.json +268 -0
- package/agent/components/DatePicker.json +275 -0
- package/agent/components/Descriptions.json +67 -0
- package/agent/components/Dialog.json +78 -0
- package/agent/components/DraggablePanel.json +106 -0
- package/agent/components/DropdownMenu.json +102 -0
- package/agent/components/EmptyState.json +83 -0
- package/agent/components/ErrorSurface.json +128 -0
- package/agent/components/FeatureList.json +43 -0
- package/agent/components/Field.json +64 -0
- package/agent/components/FilterBar.json +99 -0
- package/agent/components/Flex.json +153 -0
- package/agent/components/FloatButton.json +91 -0
- package/agent/components/Form.json +87 -0
- package/agent/components/FormErrors.json +51 -0
- package/agent/components/FormField.json +137 -0
- package/agent/components/FormFieldArray.json +39 -0
- package/agent/components/FormFieldControl.json +129 -0
- package/agent/components/FormRoot.json +122 -0
- package/agent/components/Heading.json +61 -0
- package/agent/components/HoverCard.json +55 -0
- package/agent/components/Icon.json +60 -0
- package/agent/components/InfiniteQueryState.json +58 -0
- package/agent/components/Input.json +122 -0
- package/agent/components/InputOTP.json +106 -0
- package/agent/components/Label.json +43 -0
- package/agent/components/LegalDocumentShell.json +102 -0
- package/agent/components/Legend.json +42 -0
- package/agent/components/LineChart.json +103 -0
- package/agent/components/Link.json +41 -0
- package/agent/components/ListRow.json +92 -0
- package/agent/components/Logo.json +85 -0
- package/agent/components/Marquee.json +91 -0
- package/agent/components/Masonry.json +82 -0
- package/agent/components/MasterDetail.json +95 -0
- package/agent/components/MegaMenu.json +120 -0
- package/agent/components/MobileShell.json +73 -0
- package/agent/components/NavList.json +63 -0
- package/agent/components/NumberInput.json +158 -0
- package/agent/components/OrgSwitcher.json +89 -0
- package/agent/components/OverlayPortalProvider.json +42 -0
- package/agent/components/PageContainer.json +181 -0
- package/agent/components/Pagination.json +132 -0
- package/agent/components/Paragraph.json +40 -0
- package/agent/components/PasswordInput.json +79 -0
- package/agent/components/PasswordStrength.json +51 -0
- package/agent/components/PermissionMatrix.json +81 -0
- package/agent/components/PieChart.json +99 -0
- package/agent/components/Popover.json +110 -0
- package/agent/components/PrefetchLink.json +65 -0
- package/agent/components/Progress.json +79 -0
- package/agent/components/Prose.json +57 -0
- package/agent/components/QrCode.json +62 -0
- package/agent/components/Radio.json +98 -0
- package/agent/components/RadioGroup.json +91 -0
- package/agent/components/RangeTimeline.json +80 -0
- package/agent/components/Rating.json +92 -0
- package/agent/components/ResizablePanel.json +69 -0
- package/agent/components/ResponsiveGrid.json +77 -0
- package/agent/components/Reveal.json +70 -0
- package/agent/components/ScrollArea.json +104 -0
- package/agent/components/SearchInput.json +98 -0
- package/agent/components/Segmented.json +96 -0
- package/agent/components/Select.json +397 -0
- package/agent/components/Separator.json +86 -0
- package/agent/components/ServiceCatalogCta.json +46 -0
- package/agent/components/ServiceLauncherCard.json +86 -0
- package/agent/components/ServiceRolePanel.json +83 -0
- package/agent/components/Sheet.json +85 -0
- package/agent/components/Sidebar.json +118 -0
- package/agent/components/Skeleton.json +57 -0
- package/agent/components/SkeletonArticle.json +71 -0
- package/agent/components/SkeletonAvatar.json +50 -0
- package/agent/components/SkeletonButton.json +57 -0
- package/agent/components/SkeletonForm.json +52 -0
- package/agent/components/SkeletonImage.json +37 -0
- package/agent/components/SkeletonInput.json +51 -0
- package/agent/components/SkeletonNode.json +42 -0
- package/agent/components/SkeletonRows.json +49 -0
- package/agent/components/SkeletonTable.json +45 -0
- package/agent/components/Slider.json +160 -0
- package/agent/components/SplitPane.json +66 -0
- package/agent/components/StatCard.json +83 -0
- package/agent/components/Steps.json +95 -0
- package/agent/components/Swatch.json +41 -0
- package/agent/components/Switch.json +81 -0
- package/agent/components/Table.json +112 -0
- package/agent/components/Tabs.json +158 -0
- package/agent/components/TagInput.json +105 -0
- package/agent/components/Text.json +201 -0
- package/agent/components/Textarea.json +126 -0
- package/agent/components/ThoughtChain.json +76 -0
- package/agent/components/Thumbnail.json +70 -0
- package/agent/components/TimePicker.json +200 -0
- package/agent/components/TimeRangePicker.json +90 -0
- package/agent/components/Timeline.json +47 -0
- package/agent/components/TimelineGrid.json +92 -0
- package/agent/components/Title.json +67 -0
- package/agent/components/Toaster.json +42 -0
- package/agent/components/Toggle.json +90 -0
- package/agent/components/ToggleGroup.json +102 -0
- package/agent/components/Toolbar.json +120 -0
- package/agent/components/Tooltip.json +110 -0
- package/agent/components/Topbar.json +83 -0
- package/agent/components/TopbarItem.json +79 -0
- package/agent/components/Transfer.json +141 -0
- package/agent/components/Tree.json +185 -0
- package/agent/components/TreeSelect.json +232 -0
- package/agent/components/TwoFactorSetup.json +79 -0
- package/agent/components/Typography.json +42 -0
- package/agent/components/Upload.json +221 -0
- package/agent/components/UploadCropDialog.json +60 -0
- package/agent/components/VisuallyHidden.json +20 -0
- package/agent/components/Welcome.json +65 -0
- package/agent/components/formatDate.json +46 -0
- package/agent/components/inertiaUpload.json +32 -0
- package/agent/components/useZodForm.json +39 -0
- package/agent/components-index.json +884 -0
- package/agent/components.json +15507 -0
- package/agent/index.json +56 -0
- package/agent/llms.txt +32 -0
- package/agent/patterns/account-recovery-settings.json +19 -0
- package/agent/patterns/async-data-state.json +20 -0
- package/agent/patterns/auth-recovery-panels.json +29 -0
- package/agent/patterns/badge-coloring.json +14 -0
- package/agent/patterns/common-fixes.json +16 -0
- package/agent/patterns/confirm-destructive.json +11 -0
- package/agent/patterns/data-table-page.json +18 -0
- package/agent/patterns/deferred-loading.json +12 -0
- package/agent/patterns/error-pages.json +28 -0
- package/agent/patterns/inertia-detail-page.json +13 -0
- package/agent/patterns/inertia-list-page.json +15 -0
- package/agent/patterns/inertia-persistent-layout.json +14 -0
- package/agent/patterns/organization-memberships.json +19 -0
- package/agent/patterns/page-sections.json +18 -0
- package/agent/patterns/settings-page-responsive.json +18 -0
- package/agent/patterns/settings-section-rows.json +23 -0
- package/agent/patterns/signup-form.json +13 -0
- package/agent/patterns/topbar-account-chip.json +18 -0
- package/agent/patterns/transactional-email.json +22 -0
- package/agent/patterns-index.json +323 -0
- package/agent/patterns.json +342 -0
- package/agent/rules.json +237 -0
- package/agent/tokens.json +8422 -0
- package/agent/vocabulary.json +198 -0
- package/dist/components/data-entry/input.js +8 -1
- package/dist/components/layout/flex.d.ts +2 -2
- package/dist/components/layout/flex.js +2 -0
- package/dist/components/ui/tag-input.d.ts +10 -0
- package/dist/components/ui/tag-input.js +35 -2
- package/dist/contracts/measurement.json +1 -1
- package/dist/i18n/messages/en.json +23 -1
- package/dist/i18n/messages/ja.json +21 -1
- package/dist/i18n/messages/vi.json +21 -1
- package/dist/lib/variants.js +4 -1
- package/dist/props/components/data-entry.prop.d.ts +21 -2
- package/dist/props/components/layout.prop.d.ts +42 -0
- package/dist/props/registry.d.ts +9 -0
- package/dist/props/registry.js +6 -0
- package/dist/props/vocabulary/layout.prop.d.ts +1 -1
- package/dist/styles/base.css +47 -14
- package/dist/styles/card-layout.css +6 -6
- package/dist/styles/chart-layout.css +6 -6
- package/dist/styles/control.css +41 -6
- package/dist/styles/data-display-layout.css +21 -6
- package/dist/styles/density.css +2 -0
- package/dist/styles/dialog-layout.css +4 -1
- package/dist/styles/focus-ring.css +4 -1
- package/dist/styles/layout.css +30 -3
- package/dist/styles/navigation-layout.css +3 -1
- package/dist/styles/shell-layout.css +27 -21
- package/dist/styles/table-layout.css +50 -9
- package/dist/styles/text-layout.css +94 -23
- package/dist/tokens/components/activity.css +13 -4
- package/dist/tokens/components/attachments.css +1 -1
- package/dist/tokens/components/badge.css +1 -1
- package/dist/tokens/components/card.css +28 -7
- package/dist/tokens/components/chart.css +4 -1
- package/dist/tokens/components/chat-composer.css +4 -1
- package/dist/tokens/components/control.css +69 -30
- package/dist/tokens/components/conversations.css +4 -1
- package/dist/tokens/components/data-display.css +42 -15
- package/dist/tokens/components/data-entry.css +8 -2
- package/dist/tokens/components/descriptions.css +1 -1
- package/dist/tokens/components/feedback.css +8 -5
- package/dist/tokens/components/float-button.css +8 -2
- package/dist/tokens/components/legal-document.css +12 -3
- package/dist/tokens/components/logo.css +15 -6
- package/dist/tokens/components/mega-menu.css +14 -5
- package/dist/tokens/components/navigation.css +37 -13
- package/dist/tokens/components/segmented.css +9 -2
- package/dist/tokens/components/separator.css +4 -1
- package/dist/tokens/components/shell.css +96 -31
- package/dist/tokens/components/table.css +13 -6
- package/dist/tokens/components/thought-chain.css +4 -1
- package/dist/tokens/components/toggle.css +4 -1
- package/dist/tokens/components/tree.css +1 -1
- package/dist/tokens/components/upload.css +21 -9
- package/dist/tokens/foundation.css +24 -30
- package/dist/tokens/semantic/layout.css +19 -5
- package/docs/COMPOSITION-VS-COMPONENT.md +41 -0
- package/docs/DESIGN-AUTHORITY.md +14 -0
- package/docs/DEVELOPMENT.md +81 -6
- package/docs/TOKENS.md +16 -1
- package/docs/data-entry/tag-input.tsx +37 -0
- package/docs/layout/flex.tsx +40 -0
- package/docs/roadmap/website-components.md +34 -0
- package/docs/showcase/case4-login.tsx +10 -2
- package/docs/showcase/case5-shift-calendar.tsx +1 -1
- package/docs/showcase/case6-agency-handy.tsx +6 -6
- package/docs/showcase/futurelastic-web.tsx +7 -9
- package/docs/showcase/marketing-page.tsx +61 -52
- package/docs/showcase/table-expandable-rows.tsx +4 -1
- package/docs/showcase/table-pagination.tsx +88 -18
- package/docs/showcase/theme-customization.tsx +25 -2
- package/package.json +8 -5
|
@@ -0,0 +1,884 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"group": "data-entry",
|
|
4
|
+
"name": "inertiaUpload",
|
|
5
|
+
"tagline": "Bridge Inertia multipart visits to Upload progress, cancellation, retry and error recovery."
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"group": "data-entry",
|
|
9
|
+
"name": "FormRoot",
|
|
10
|
+
"tagline": "Client or server-adapted forms with shared layout, validation, submission, reset and error recovery."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"group": "data-entry",
|
|
14
|
+
"name": "FormFieldControl",
|
|
15
|
+
"tagline": "Bind a typed field to RHF or a server adapter, with shared FormField presentation and validation."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"group": "data-entry",
|
|
19
|
+
"name": "FormFieldArray",
|
|
20
|
+
"tagline": "Dynamic typed field collections with stable keys, nested validation and append/remove/reorder operations."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"group": "data-entry",
|
|
24
|
+
"name": "useZodForm",
|
|
25
|
+
"tagline": "Create a typed React Hook Form instance with Zod validation; reuse reset, setValue, trigger, formState and field errors."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"group": "data-display",
|
|
29
|
+
"name": "CardBar",
|
|
30
|
+
"tagline": "Inline card toolbar with scoped inset and divider edges."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"group": "data-entry",
|
|
34
|
+
"name": "TimeRangePicker",
|
|
35
|
+
"tagline": "Ordered time range with optional endpoints and canonical native fields."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"group": "general",
|
|
39
|
+
"name": "VisuallyHidden",
|
|
40
|
+
"tagline": "Accessible supporting text without a visible layout box."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"group": "data-display",
|
|
44
|
+
"name": "RangeTimeline",
|
|
45
|
+
"tagline": "Horizontal intervals with token-owned geometry and optional endpoint editing."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"group": "layout",
|
|
49
|
+
"name": "PageContainer",
|
|
50
|
+
"tagline": "Mandatory page shell — EVERY page wraps its content in PageContainer (title/subtitle/extra/footer/breadcrumb)."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"group": "layout",
|
|
54
|
+
"name": "Flex",
|
|
55
|
+
"tagline": "Token-spaced flex primitive with explicit direction, alignment, justification, and wrapping controls."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"group": "layout",
|
|
59
|
+
"name": "ResponsiveGrid",
|
|
60
|
+
"tagline": "Container-responsive card grid with configurable base, sm, md and lg columns."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"group": "layout",
|
|
64
|
+
"name": "AppShell",
|
|
65
|
+
"tagline": "Root application shell — composes sidebar, topbar rail, main content area, and optional footer."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"absorbed": [
|
|
69
|
+
"OrganizationChoiceList"
|
|
70
|
+
],
|
|
71
|
+
"group": "layout",
|
|
72
|
+
"name": "AuthShell",
|
|
73
|
+
"tagline": "Centred auth/login page shell — brand bar (top) + centred card (main) + footer, over min-h-dvh, at comfortable control density."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"group": "layout",
|
|
77
|
+
"name": "CenteredShell",
|
|
78
|
+
"tagline": "Authenticated, no-sidebar, centred-column page shell (hosted-ID My Page / account / standalone settings) — padded topbar with real actions + a width-tiered centred column, zero custom CSS."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"group": "layout",
|
|
82
|
+
"name": "MobileShell",
|
|
83
|
+
"tagline": "Handheld app shell (gh#354) — status band · app bar · the ONE scroll region · sticky action bar · bottom tab bar, with device safe-area insets and a document that never scrolls."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"group": "layout",
|
|
87
|
+
"name": "Sidebar",
|
|
88
|
+
"tagline": "Data-driven vertical nav rail with collapsible submenu groups and a collapsed icon-only mode — never build nav manually with raw buttons."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"group": "layout",
|
|
92
|
+
"name": "Topbar",
|
|
93
|
+
"tagline": "A PURE SLOT bar for the app shell — positions three clusters (start / center / end) and owns ONLY the bar layout. It bakes NO chrome: no product switcher, no search box, no notification bell, no language picker. The CONSUMER composes those from real primitives and drops them into a slot; whether a control is icon-only / labelled / bordered is that control's own config, never the shell's."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"group": "layout",
|
|
97
|
+
"name": "TopbarItem",
|
|
98
|
+
"tagline": "ONE interactive cell of a Topbar slot — the account button, a settings or notifications trigger. Full bar height, the bar's own hover surface, and the focus mark hosted INSIDE the cell. Use it INSTEAD OF a Button in a Topbar slot: a Button there is a --control-height pill floating in a taller bar, with its own hover fill and a ring drawn around the pill."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"group": "layout",
|
|
102
|
+
"name": "NavList",
|
|
103
|
+
"tagline": "Vertical route navigation for INSIDE a page — the shape a settings nav takes. Renders the same `.sb-nav-item` rows as the Sidebar rail (icon column, label, badge, active tokens, `aria-current=\"page\"`) in a `<nav>` landmark, without the AppShell grid the rail depends on."
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"group": "layout",
|
|
107
|
+
"name": "MasterDetail",
|
|
108
|
+
"tagline": "Responsive master-detail composition: a fluid list beside a token-owned 300px/320px fixed rail, with a themeable collapse threshold. `rail` picks which region is fixed — default `detail` (the canonical 1fr/320px list + detail rail); `master` for a leading navigator rail."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"group": "layout",
|
|
112
|
+
"name": "DraggablePanel",
|
|
113
|
+
"tagline": "A floating surface the person using it can MOVE — drag it by the title-bar handle, or focus the handle and nudge it with the arrow keys. Bounded to the viewport, position reported through onPositionChange and never stored by the library."
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"group": "layout",
|
|
117
|
+
"name": "SplitPane",
|
|
118
|
+
"tagline": "Two-column layout with a main content area and a fixed-width aside panel."
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"group": "layout",
|
|
122
|
+
"name": "ErrorSurface",
|
|
123
|
+
"tagline": "Package-owned semantic exception surface for 400 / 403 / 404 / 500 / 503. `mode` is the SHELL CONTRACT: \"application\" renders the body you put inside the AppShell the route already provides (chrome PRESERVED, never reconstructed); \"system\" owns the whole page via CenteredShell align=\"center\" (package-owned 1440/1024/390 geometry). Exactly one recovery action, plus semantic request-id / permission / organization / maintenance metadata slots."
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"group": "layout",
|
|
127
|
+
"name": "LegalDocumentShell",
|
|
128
|
+
"tagline": "Long-form legal/policy document surface (terms, privacy, DPA, cookie policy, SLA) — semantic article/nav/section landmarks, real anchors, a sticky table-of-contents rail, scroll-spy aria-current, hash deep links with a token-driven scroll offset and focus handoff. All legal text stays consumer-owned."
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"group": "layout",
|
|
132
|
+
"name": "Breadcrumb",
|
|
133
|
+
"tagline": "Standalone breadcrumb nav rendering an ordered trail of page segments."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"group": "general",
|
|
137
|
+
"name": "FloatButton",
|
|
138
|
+
"tagline": "Ant Design's corner action, ported whole — a control pinned to the viewport above the page, with FloatButton.Group (a stack, or a menu behind one trigger) and FloatButton.BackTop. The corner insets are tokens, so a service moves the mark without a media query."
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"group": "general",
|
|
142
|
+
"name": "Button",
|
|
143
|
+
"tagline": "Core button with variant + size presets, built on cva and Radix Slot (asChild)."
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"group": "general",
|
|
147
|
+
"name": "Text",
|
|
148
|
+
"tagline": "Typographic primitive — use INSTEAD of a hand-rolled `<span className=\"text-[13px] font-medium text-muted-foreground\">`. Size is a type-scale step (never px); tone/weight are tokens."
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"group": "general",
|
|
152
|
+
"name": "Heading",
|
|
153
|
+
"tagline": "Section heading sized from the --heading-h* tokens. `level` sets the size AND the semantic <h1..h4>; `size` overrides the size alone, and its top three steps are the display ramp a marketing hero needs."
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"group": "general",
|
|
157
|
+
"name": "Typography",
|
|
158
|
+
"tagline": "antd's prose container — a plain <article> that Title / Paragraph / Text / Link sit inside, and the compound root so `<Typography.Text>` from an antd codebase compiles here unchanged."
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"group": "general",
|
|
162
|
+
"name": "Title",
|
|
163
|
+
"tagline": "antd Typography.Title — a heading with five levels and the antd block behaviours (copyable, editable, ellipsis, the decorations). A SIBLING of `Heading`, which is this library's own four-level heading and is unchanged."
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"group": "general",
|
|
167
|
+
"name": "Paragraph",
|
|
168
|
+
"tagline": "antd Typography.Paragraph — a block of body text with the full ellipsis contract (rows + an expand control) and the antd block behaviours. Renders a <div>, matching antd."
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"group": "general",
|
|
172
|
+
"name": "Link",
|
|
173
|
+
"tagline": "antd Typography.Link — an anchor that already carries this library's inline link affordance (underline on hover AND on keyboard focus), plus antd's rel guard for target=\"_blank\"."
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"group": "general",
|
|
177
|
+
"name": "Logo",
|
|
178
|
+
"tagline": "The product brand mark — a glyph/identity box, or (with `wordmark`) the full mark + wordmark LOCKUP. Tokenised size/radius/type/gap, and `size` scales every branch (boxed glyph, identity mark, lockup); the boxed fill reads --primary, while the GoDX identity mark and wordmark read the --brand IDENTITY role instead, so an action-colour re-theme never recolours the brand."
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"group": "general",
|
|
182
|
+
"name": "Reveal",
|
|
183
|
+
"tagline": "The official entrance-motion primitive (staggered fade-up) — reads DS motion tokens and honours prefers-reduced-motion, replacing hand-rolled @keyframes + .app-reveal/.d1..d6 classes."
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"absorbed": [
|
|
187
|
+
"Spin",
|
|
188
|
+
"Spinner",
|
|
189
|
+
"Loading",
|
|
190
|
+
"LoadingIndicator"
|
|
191
|
+
],
|
|
192
|
+
"group": "general",
|
|
193
|
+
"name": "Activity",
|
|
194
|
+
"tagline": "The official AMBIENT-motion primitive and the standalone indeterminate indicator (antd `Spin`) — a continuous, unbounded 'something is happening right now, elsewhere' mark (someone typing, a sync running, a response streaming, a recording live). Loading a REGION is Skeleton; an in-flight ACTION is Button loading; a known percentage is Progress."
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"group": "general",
|
|
198
|
+
"name": "Icon",
|
|
199
|
+
"tagline": "A glyph on the --icon-size-* scale, and the ONLY supported way to render a standalone one. A lucide component ships width=\"24\" height=\"24\"; only four rules in this library override that (.ui-button svg, the menu row, the topbar cell, the ListRow leading slot), so everywhere else a glyph draws at 24px beside 14px text."
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"absorbed": [
|
|
203
|
+
"DataGrid"
|
|
204
|
+
],
|
|
205
|
+
"group": "data-display",
|
|
206
|
+
"name": "DataTable",
|
|
207
|
+
"tagline": "The one TanStack-powered compound admin list — sticky header, sorting, global search, column visibility ('set view'), bulk selection, BOTH cursor and numbered pagination, density, and built-in empty/loading states. Keep the SIMPLE `data` + lean `columns` (ColumnDef) API for the common case; opt into the full grid chrome via the compound parts. Internally driven by @tanstack/react-table (a real dependency). Lives on @godxjp/ui/data-display only (it is NOT on the runtime-neutral root/admin barrel because it pulls TanStack)."
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"group": "data-display",
|
|
211
|
+
"name": "Card",
|
|
212
|
+
"tagline": "Surface container with optional accent stripe, variant fill (including the Ant Design borderless edge), hoverable lift, and density. ⚠️ The bare <Card> has NO inner padding — body content MUST be wrapped in <CardContent> (titles in <CardHeader>), or it sits FLUSH against the card edges. Never hand-roll padding with className=\"p-4\"; use <CardContent>. Compose with CardHeader/CardTitle/CardContent/CardFooter. For Ant Design's card-head TAB STRIP (tabs under the title, inside the card border) use the `tabList`/`activeTabKey`/`defaultActiveTabKey`/`onTabChange`/`extra`/`tabProps` props — the Card renders the strip and the children become the selected tab's body. For a non-tab toolbar/filter strip (list controls, filter chips) use <CardBar extra={…}> — a positionable bar that auto-draws its separator from its position (top→bottom border, bottom→top border, middle→both) and pins `extra` content to the inline-end edge; place it as first/last child of the Card."
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"group": "data-display",
|
|
216
|
+
"name": "CardContent",
|
|
217
|
+
"tagline": "Card body. flush = edge-to-edge (for DataTable/tabs); tight = no top gap; solo = no header above. NEVER put a Toolbar inside flush (it loses padding)."
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"group": "data-display",
|
|
221
|
+
"name": "StatCard",
|
|
222
|
+
"tagline": "KPI tile. ⚠️ StatCard IS ALREADY a bordered Card — render it DIRECTLY in ResponsiveGrid. NEVER wrap it in <Card>/<CardContent> (that double-borders it → looks too thick). Use `accent` for a semantic leading-edge rail on a KPI needing attention."
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"group": "data-display",
|
|
226
|
+
"name": "ServiceLauncherCard",
|
|
227
|
+
"tagline": "Token-owned downstream-service launcher tile with semantic icon, status, metadata, action, disabled reason, matching skeleton, and companion catalog CTA."
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"group": "data-display",
|
|
231
|
+
"name": "ServiceCatalogCta",
|
|
232
|
+
"tagline": "Dashed companion tile that closes a launcher grid with the real catalog/add route — same Card geometry as ServiceLauncherCard, no status or metadata."
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"group": "data-display",
|
|
236
|
+
"name": "Badge",
|
|
237
|
+
"tagline": "Plain or lifecycle badge. Use `variant` for static chips, or `status` to auto-map lifecycle keys to semantic tone + icon. Labels never wrap."
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"group": "data-display",
|
|
241
|
+
"name": "Legend",
|
|
242
|
+
"tagline": "The KEY for a colour-coded surface: which tone means what, spelled out in words once — a square swatch per tone with its label."
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"group": "data-display",
|
|
246
|
+
"name": "Swatch",
|
|
247
|
+
"tagline": "A READ-ONLY sample of ONE colour a person chose — a brand's primary_color, a calendar category, a tag tint. The colour is a VALUE on the element, never a token in a stylesheet."
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"group": "data-display",
|
|
251
|
+
"name": "FeatureList",
|
|
252
|
+
"tagline": "A list of STATEMENTS, each with a leading state glyph (included ✓ / limited − / excluded ✗), an optional wrapping description, and the glyph aligned to the first text line."
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"group": "data-display",
|
|
256
|
+
"name": "Thumbnail",
|
|
257
|
+
"tagline": "A framed picture at a FIXED height with its own INTRINSIC width — the shape a wrapping row of screenshots with different aspect ratios needs."
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"group": "data-display",
|
|
261
|
+
"name": "ListRow",
|
|
262
|
+
"tagline": "Single-line entity row (leading · title/description · trailing action) for SHORT lists inside a Card — sessions, API tokens, linked accounts, passkeys, MFA factors, invitations."
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"group": "data-display",
|
|
266
|
+
"name": "CredentialReveal",
|
|
267
|
+
"tagline": "One-time secret surface — masked-by-default value with a show/hide toggle, a copy button that confirms the copy, optional download, and an optional acknowledge action to pair with Dialog. The GitHub/Stripe token-reveal pattern as a real primitive so consumers stop hand-rolling it."
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"group": "data-display",
|
|
271
|
+
"name": "QrCode",
|
|
272
|
+
"tagline": "Local-only SVG QR renderer for enrollment links, device pairing and other values that must never be sent to a third-party image service."
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"group": "data-display",
|
|
276
|
+
"name": "Descriptions",
|
|
277
|
+
"tagline": "Responsive definition grid for detail-page metadata. COMPOUND — value goes in Descriptions.Item children."
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"group": "data-display",
|
|
281
|
+
"name": "EmptyState",
|
|
282
|
+
"tagline": "Centred empty placeholder with icon, title, description, and optional CTA."
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"group": "data-display",
|
|
286
|
+
"name": "Progress",
|
|
287
|
+
"tagline": "Progress in two modes: a METER (`value` 0–100, optional tone, over-capacity striped state, drawn as a bar or — with `shape='ring'` — as an arc with the readout inside it) and a BREAKDOWN (`segments` — one total split into tone-coloured slices on a taller track)."
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"group": "data-display",
|
|
291
|
+
"name": "CodeBlock",
|
|
292
|
+
"tagline": "A block of preformatted text (request and response bodies, console output, snippets): mono, muted surface, soft-wrapped long lines by default, and an optional height cap that scrolls inside the block instead of pushing the page."
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"group": "data-display",
|
|
296
|
+
"name": "Prose",
|
|
297
|
+
"tagline": "Typography for rendered content (Markdown, CMS bodies, issue descriptions): styles the semantic HTML inside it from the tokens, with no opinion about where the HTML comes from."
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"group": "data-display",
|
|
301
|
+
"name": "Timeline",
|
|
302
|
+
"tagline": "Vertical event list with an icon rail. Current item gets a highlighted glyph. `variant` switches the rail to numbered (ordinal) or status-driven glyphs, and each item carries a 3-state `status` (done/current/pending) plus an optional per-item `icon`. The whole progress column is ONE hue: done dot, current dot and travelled line all paint `--primary`, exactly as `Steps` paints `finish` and `process`."
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"group": "data-display",
|
|
306
|
+
"name": "TimelineGrid",
|
|
307
|
+
"tagline": "The time-axis half of the Timeline family: a vertical hour axis, one column per day (or room, or machine) and event blocks placed by start time and duration. Overlapping events are laid out side by side automatically. NOT a calendar — no month view, no navigation, no drag-to-create, no recurrence, no timezone conversion."
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"group": "data-display",
|
|
311
|
+
"name": "Table",
|
|
312
|
+
"tagline": "Primitive table shell (Table/TableHeader/TableBody/TableRow/TableHead/TableCell). Prefer DataTable for admin lists; use these for custom one-off tables."
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"group": "data-display",
|
|
316
|
+
"name": "DataState",
|
|
317
|
+
"tagline": "TanStack Query lifecycle widget — skeleton / error / empty / success for one useQuery block. Import from @godxjp/ui/query."
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"group": "data-display",
|
|
321
|
+
"name": "InfiniteQueryState",
|
|
322
|
+
"tagline": "useInfiniteQuery widget — flatten pages, skeleton/empty/error, load-more footer. Import from @godxjp/ui/query."
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"group": "data-entry",
|
|
326
|
+
"name": "Form",
|
|
327
|
+
"tagline": "Ant-style layout container — renders <form> and pushes layout (vertical/horizontal), labelWidth/controlWidth, label alignment, responsive collapse, and multi-column grid down to every FormField (overridable per field)."
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"group": "data-entry",
|
|
331
|
+
"name": "FormField",
|
|
332
|
+
"tagline": "Wraps a control with label, helper, and error; injects the accessible name (aria-labelledby), description (aria-describedby) and validation (aria-errormessage/aria-invalid/aria-required) contract onto the child, which forwards it to its real semantic focus target. Reads the parent Form's layout (vertical/horizontal) — overridable per field."
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"group": "data-entry",
|
|
336
|
+
"name": "FormErrors",
|
|
337
|
+
"tagline": "The 'no field to stand on' error summary — renders the entries of the surrounding Form's server error bag that no mounted FormField name='…' claims: validation errors on hidden/derived fields (action_mode, page, a source-record id) that would otherwise fail silently. Composed on Alert tone='destructive' (role='alert'); renders nothing while every entry is claimed or the bag is empty."
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"group": "data-entry",
|
|
341
|
+
"name": "Input",
|
|
342
|
+
"tagline": "Styled wrapper around native <input>; accepts all HTML input attributes. Pair with FormField for labelled fields."
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"group": "data-entry",
|
|
346
|
+
"name": "NumberInput",
|
|
347
|
+
"tagline": "WAI-ARIA spinbutton for localized numeric entry — composes the real Input (role=spinbutton, inputMode=decimal) with stacked increment/decrement step Buttons. Type freely, Arrow/Shift-Arrow step, value commits clamped to min/max + rounded to precision."
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"group": "data-entry",
|
|
351
|
+
"name": "SearchInput",
|
|
352
|
+
"tagline": "Debounced search box with a clear button. Fires onSearch (NOT onChange) after the debounce. Controlled (value) or uncontrolled (defaultValue)."
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"absorbed": [
|
|
356
|
+
"Combobox",
|
|
357
|
+
"Autocomplete",
|
|
358
|
+
"CountrySelect",
|
|
359
|
+
"SearchSelect",
|
|
360
|
+
"Typeahead",
|
|
361
|
+
"AsyncSelect"
|
|
362
|
+
],
|
|
363
|
+
"group": "data-entry",
|
|
364
|
+
"name": "Select",
|
|
365
|
+
"tagline": "Polymorphic single-select: pass options/loadOptions for the data-driven (Ant-style) API, or compose sub-parts manually — never use a raw <select>."
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"group": "data-entry",
|
|
369
|
+
"name": "Switch",
|
|
370
|
+
"tagline": "Toggle switch (bare), on react-aria-components. For a labelled row use Field. `role=\"switch\"` is the real `<input>`; the painted track is the `<label>` around it, and that is where `data-state`/`data-size` live."
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"group": "data-entry",
|
|
374
|
+
"name": "Textarea",
|
|
375
|
+
"tagline": "Styled wrapper around native <textarea>. Pair with FormField for labelled fields."
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"group": "data-entry",
|
|
379
|
+
"name": "Label",
|
|
380
|
+
"tagline": "Styled Radix Label; use htmlFor to associate with a control."
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"group": "data-entry",
|
|
384
|
+
"name": "Checkbox",
|
|
385
|
+
"tagline": "Checkbox on react-aria-components; standalone or via CheckboxGroup with an options array. `role=\"checkbox\"` is the real `<input>`; the painted box is the `<label>` around it and carries `data-state`."
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"group": "data-entry",
|
|
389
|
+
"name": "RadioGroup",
|
|
390
|
+
"tagline": "Radio group accepting an options array or RadioItem children."
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"absorbed": [
|
|
394
|
+
"DateRangePicker"
|
|
395
|
+
],
|
|
396
|
+
"group": "data-entry",
|
|
397
|
+
"name": "DatePicker",
|
|
398
|
+
"tagline": "ONE date control: `picker` sets the granularity (day · week · month · quarter · year), `range` makes it a two-endpoint field, `multiple` a set. A real typeable input holds the value and submits ISO-8601 at the picker's own precision; the panel is the visual-only affordance."
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"group": "feedback",
|
|
402
|
+
"name": "Dialog",
|
|
403
|
+
"tagline": "Compound modal. Controlled via open + onOpenChange. Parts available flat (DialogTrigger/DialogContent/…) or as Dialog.Trigger/Dialog.Content. Rendered with role=dialog."
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"group": "feedback",
|
|
407
|
+
"name": "AlertDialog",
|
|
408
|
+
"tagline": "Canonical modal confirmation flow (destructive / high-stakes decisions). Preserves confirm semantics with `role=\"alertdialog\"` and built-in cancel/confirm handling."
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"group": "feedback",
|
|
412
|
+
"name": "AlertDialogRoot",
|
|
413
|
+
"tagline": "Compound alertdialog Root — the role=\"alertdialog\" mirror of Dialog's root. Wraps Radix AlertDialog.Root and supplies the context AlertDialogTitle/AlertDialogDescription/AlertDialogAction/AlertDialogCancel read. Parts: AlertDialogTrigger/AlertDialogPortal/AlertDialogOverlay/AlertDialogContent/AlertDialogHeader/AlertDialogFooter/AlertDialogTitle/AlertDialogDescription/AlertDialogAction/AlertDialogCancel."
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"group": "feedback",
|
|
417
|
+
"name": "Sheet",
|
|
418
|
+
"tagline": "Side-panel drawer / responsive detail panel (Radix Dialog). Parts: Sheet/SheetTrigger/SheetContent(side=right|left|top|bottom, responsive=auto|side|bottom)/SheetHeader/SheetBody/SheetTitle/SheetFooter."
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"group": "feedback",
|
|
422
|
+
"name": "Alert",
|
|
423
|
+
"tagline": "Inline alert banner with variant-aware icon + optional dismiss. Parts: Alert/AlertTitle/AlertDescription/AlertActions/AlertQueryError."
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"group": "feedback",
|
|
427
|
+
"name": "Banner",
|
|
428
|
+
"tagline": "Full-bleed page/shell attention strip (past-due subscription, support session, maintenance). Parts: Banner.Title/Description/Content/Actions."
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"group": "feedback",
|
|
432
|
+
"name": "Callout",
|
|
433
|
+
"tagline": "Static aside INSIDE a document body (docs admonition, CMS note, GitHub `> [!NOTE]`). role=\"note\", never a live region. Parts: Callout.Title/Description/Content/Actions."
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"group": "feedback",
|
|
437
|
+
"name": "SkeletonTable",
|
|
438
|
+
"tagline": "Loading placeholder matching the DataTable layout (header + N rows). Drop-in while data loads (deferred props)."
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"group": "feedback",
|
|
442
|
+
"name": "SkeletonRows",
|
|
443
|
+
"tagline": "Repeated flat loading lines on a responsive grid — the list-shaped placeholder when the final layout is rows of short bars, not a table header, not avatar + prose."
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"group": "feedback",
|
|
447
|
+
"name": "Toaster",
|
|
448
|
+
"tagline": "Mount once at app root to enable toasts. IMPORTANT: trigger toasts via `import { toast } from \"sonner\"` — NOT from @godxjp/ui."
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
"group": "navigation",
|
|
452
|
+
"name": "Tabs",
|
|
453
|
+
"tagline": "Radix tab container with optional Ant-style `items` API. Pass items for the common full TabsList/TabsContent set, or compose TabsList/TabsTrigger/TabsContent manually when you need per-panel control."
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"group": "navigation",
|
|
457
|
+
"name": "Pagination",
|
|
458
|
+
"tagline": "Offset/page-based pagination bar. Sits below a table card."
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"group": "navigation",
|
|
462
|
+
"name": "DropdownMenu",
|
|
463
|
+
"tagline": "Dropdown menu (react-aria). Compose DropdownMenu/DropdownMenuTrigger/DropdownMenuContent/DropdownMenuItem/DropdownMenuSeparator. `trigger` picks the gestures — click (default), hover, or contextMenu, which is what replaced the deleted ContextMenu component."
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"group": "navigation",
|
|
467
|
+
"name": "Steps",
|
|
468
|
+
"tagline": "Multi-step progress indicator — horizontal or vertical, default or dot style."
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"group": "navigation",
|
|
472
|
+
"name": "Toolbar",
|
|
473
|
+
"tagline": "List-page filter strip (the framework FilterBar) — SearchInput + labelled ToolbarGroup filter slots + a clear-all affordance, optionally sticky."
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"group": "providers",
|
|
477
|
+
"name": "AppProvider",
|
|
478
|
+
"tagline": "Root locale/timezone/date-time context — wrap the app ONCE. All pickers + formatDate read from it. Import from @godxjp/ui/app."
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"group": "providers",
|
|
482
|
+
"name": "OverlayPortalProvider",
|
|
483
|
+
"tagline": "Moves EVERY overlay in this library (Popover, Dialog, Sheet, Tooltip, DropdownMenu, HoverCard, Select, Cascader) into a container you name — the one thing an app mounted inside a SHADOW ROOT cannot do with props."
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"group": "providers",
|
|
487
|
+
"name": "formatDate",
|
|
488
|
+
"tagline": "MANDATORY for all date/time display. Auto-detects ISO date / HH:mm / instant; reads AppProvider context. Import from @godxjp/ui/datetime."
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
"group": "data-entry",
|
|
492
|
+
"name": "TimePicker",
|
|
493
|
+
"tagline": "Time combobox with hours, minutes, optional seconds, confirmation and 12-hour formatting. Native submission stays canonical 24-hour time."
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"group": "data-entry",
|
|
497
|
+
"name": "Cascader",
|
|
498
|
+
"tagline": "Multi-level hierarchical path picker (Popover + cascading columns); value is always a string[] path, never a flat ID — passing a bare string breaks it."
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
"group": "data-entry",
|
|
502
|
+
"name": "TreeSelect",
|
|
503
|
+
"tagline": "Hierarchical tree picker in a Popover (single or multi-select with checkboxes) — `onValueChange` receives `string` in single mode and `string[]` in multi/checkable mode; never use a raw `<select>` for tree-structured data."
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"group": "data-entry",
|
|
507
|
+
"name": "Transfer",
|
|
508
|
+
"tagline": "Dual-list shuttle that moves items between source and target via Checkbox selection — you own targetKeys state; never hand-roll a two-panel picker."
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"group": "data-entry",
|
|
512
|
+
"name": "Upload",
|
|
513
|
+
"tagline": "Drag-and-drop / button / avatar / picture file uploader in six variants — wire onUpload to your media-service and call collectUploadCommitActions on form submit; supports multipart forms and custom media storage."
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"group": "data-entry",
|
|
517
|
+
"name": "UploadCropDialog",
|
|
518
|
+
"tagline": "Modal crop dialog for a single image file — always controlled (open + file + onConfirm required); do NOT use standalone when Upload variant=\"avatar-crop\" already embeds it."
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
"group": "data-entry",
|
|
522
|
+
"name": "ColorPicker",
|
|
523
|
+
"tagline": "Native color-swatch picker with an optional editable hex input — always pass a valid 3- or 6-digit hex `value`; invalid hex is silently ignored and the previous value is restored."
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"group": "data-entry",
|
|
527
|
+
"name": "Slider",
|
|
528
|
+
"tagline": "Numeric slider on react-aria-components with the antd 6 API — one thumb over a point, or `range` for a span. `value` takes a plain number (antd) or a number[] (the Radix-era spelling); both still work."
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"group": "data-entry",
|
|
532
|
+
"name": "Calendar",
|
|
533
|
+
"tagline": "A styled react-day-picker grid for picking single dates, multiple dates, or date ranges — always embed it inside a Popover for full date-picker UX; use DatePicker (add `range` for a from/to pair) instead when you need a form-submittable input. `components={{ DayButton }}` is the documented seam for marking a day (a shift, a price, a badge): import `DayButton` and its types from `@godxjp/ui/data-entry` rather than from react-day-picker, so the type is this package's copy and not a second one (gh#797)."
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"group": "data-entry",
|
|
537
|
+
"name": "Command",
|
|
538
|
+
"tagline": "Accessible, keyboard-navigable command palette / combobox list built on cmdk — always pair CommandInput inside its own wrapper div, never render items outside CommandList."
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
"group": "data-entry",
|
|
542
|
+
"name": "CheckboxGroup",
|
|
543
|
+
"tagline": "Multi-select checkbox list from an options array or manual children — use `options` prop for the data-driven path, never hand-roll individual Checkbox items in a group."
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"group": "data-entry",
|
|
547
|
+
"name": "Radio",
|
|
548
|
+
"tagline": "Radio group on react-aria-components, with an options-array shorthand — always use Radio.Group, never a bare radio input. `role=\"radio\"` is the real `<input>`; the painted dot is the `<label>` around it and carries `data-state`."
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
"group": "data-display",
|
|
552
|
+
"name": "Popover",
|
|
553
|
+
"tagline": "Radix-backed floating panel anchored to a trigger — always compose with PopoverTrigger + PopoverContent; never use a raw div overlay."
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"group": "data-display",
|
|
557
|
+
"name": "ScrollArea",
|
|
558
|
+
"tagline": "A native scrolling box (no Radix since v23): one `overflow: auto` element whose scrollbar is styled from --scroll-area-* tokens. Always set an explicit height/max-height, or nothing overflows and no scrollbar appears. Owns the scrolling element, so it also owns reaching it (viewportRef) and bottom anchoring for a live stream (anchor)."
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
"group": "data-display",
|
|
562
|
+
"name": "Collapsible",
|
|
563
|
+
"tagline": "Three-part compound (Collapsible + CollapsibleTrigger + CollapsibleContent) that toggles a region open/closed — never use just one part alone."
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"group": "data-display",
|
|
567
|
+
"name": "Tree",
|
|
568
|
+
"tagline": "The standalone WAI-ARIA tree view on a page (antd `Tree` / `DirectoryTree`) — nested `treeData`, a disclosure triangle per branch, roving-tabindex arrow navigation, optional tri-state checkboxes and async `loadData`. Reach for it whenever nodes expand, collapse or are navigated by keyboard; TreeSelect is the same hierarchy inside a Popover."
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"group": "feedback",
|
|
572
|
+
"name": "Tooltip",
|
|
573
|
+
"tagline": "Radix-based hover/focus tooltip — self-providing, no app-level TooltipProvider required; compose Tooltip > TooltipTrigger > TooltipContent every time."
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
"group": "data-display",
|
|
577
|
+
"name": "PrefetchLink",
|
|
578
|
+
"tagline": "React Router Link that fires prefetchQuery on hover/focus so detail pages feel instant — requires a TanStack Query QueryClient in context."
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
"group": "data-display",
|
|
582
|
+
"name": "Avatar",
|
|
583
|
+
"tagline": "Radix Avatar wrapper with image and fallback slots for users, teams, and entities."
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
"group": "layout",
|
|
587
|
+
"name": "Separator",
|
|
588
|
+
"tagline": "Tokenized horizontal or vertical rule, optionally INTERRUPTED by a localized label (day divider, unread watermark, auth conjunction)."
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"group": "feedback",
|
|
592
|
+
"name": "Skeleton",
|
|
593
|
+
"tagline": "Base pulsing skeleton block, and the namespace the shaped presets hang off (Skeleton.Avatar / .Button / .Input / .Node / .Image / .Article)."
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"group": "feedback",
|
|
597
|
+
"name": "SkeletonArticle",
|
|
598
|
+
"tagline": "Avatar + heading line + paragraph placeholder — Ant Design's own <Skeleton> shape, for a comment, a profile block or a feed item."
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
"group": "feedback",
|
|
602
|
+
"name": "SkeletonAvatar",
|
|
603
|
+
"tagline": "Avatar-shaped placeholder (also Skeleton.Avatar) sized from the --control-height tier."
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"group": "feedback",
|
|
607
|
+
"name": "SkeletonButton",
|
|
608
|
+
"tagline": "Button-shaped placeholder (also Skeleton.Button) — two control-heights wide."
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
"group": "feedback",
|
|
612
|
+
"name": "SkeletonInput",
|
|
613
|
+
"tagline": "Field-shaped placeholder (also Skeleton.Input) — five control-heights wide."
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
"group": "feedback",
|
|
617
|
+
"name": "SkeletonForm",
|
|
618
|
+
"tagline": "The skeleton of a `Form columns={N}` — label + control PAIRS on the form's own ResponsiveGrid, not the flat line list SkeletonRows draws."
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
"group": "feedback",
|
|
622
|
+
"name": "SkeletonNode",
|
|
623
|
+
"tagline": "Square media/custom placeholder (also Skeleton.Node); children centre inside it."
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"group": "feedback",
|
|
627
|
+
"name": "SkeletonImage",
|
|
628
|
+
"tagline": "SkeletonNode carrying the image glyph (also Skeleton.Image)."
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"group": "data-entry",
|
|
632
|
+
"name": "Toggle",
|
|
633
|
+
"tagline": "Radix Toggle wrapper with default/outline variants and tokenized sizes."
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
"group": "data-entry",
|
|
637
|
+
"name": "ToggleGroup",
|
|
638
|
+
"tagline": "Single or multiple toggle selection on react-aria-components. On type=single the ARIA role follows `disallowEmptySelection`: omitted it is a `group` of `aria-pressed` buttons that MAY be all-off, set it is a `radiogroup` of `radio`s (gh#744)."
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
"group": "layout",
|
|
642
|
+
"name": "AspectRatio",
|
|
643
|
+
"tagline": "Radix AspectRatio wrapper for stable media and preview frames."
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
"group": "data-display",
|
|
647
|
+
"name": "Accordion",
|
|
648
|
+
"tagline": "Radix accordion — vertically stacked, collapsible sections. Compose Accordion > AccordionItem > AccordionTrigger + AccordionContent."
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
"group": "data-display",
|
|
652
|
+
"name": "HoverCard",
|
|
653
|
+
"tagline": "Radix hover card — a rich popover shown on hover/focus of a trigger (for sighted-pointer affordances; not a replacement for Tooltip's short text)."
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
"group": "data-entry",
|
|
657
|
+
"name": "PasswordInput",
|
|
658
|
+
"tagline": "Input for passwords with a built-in show/hide eye toggle. Accepts all Input props except `type`."
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
"group": "data-entry",
|
|
662
|
+
"name": "PasswordStrength",
|
|
663
|
+
"tagline": "Evaluates password quality with a 0-4 score and optional rule checklist. Use with PasswordInput in secure forms."
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
"group": "data-entry",
|
|
667
|
+
"name": "InputOTP",
|
|
668
|
+
"tagline": "One-time-code / 2FA input (input-otp) — N single-character slots that behave as one field. Compose InputOTP > InputOTPGroup > InputOTPSlot."
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"group": "data-entry",
|
|
672
|
+
"name": "Rating",
|
|
673
|
+
"tagline": "Star-rating input (radiogroup) — controlled via value/onValueChange, form-submittable via name, supports readOnly display."
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"group": "data-entry",
|
|
677
|
+
"name": "Segmented",
|
|
678
|
+
"tagline": "One-of-N from a small, closed, always-visible set — the enterprise Segmented / filter bar drawn on react-aria-components' RadioGroup. A track with the chosen item as a lifted slab. Reach for it INSTEAD OF a Select when there are 2-4 options and all of them fit on screen, and instead of ToggleGroup when exactly one must always be chosen."
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
"group": "data-entry",
|
|
682
|
+
"name": "TagInput",
|
|
683
|
+
"tagline": "Chips/tags input — type + Enter (or comma) to add a tag, Backspace to remove the last; controlled via value/onValueChange (string[])."
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"group": "layout",
|
|
687
|
+
"name": "ResizablePanel",
|
|
688
|
+
"tagline": "Resizable panel group/child/handle primitives from react-resizable-panels."
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
"group": "data-display",
|
|
692
|
+
"name": "Carousel",
|
|
693
|
+
"tagline": "Embla-backed carousel primitives: previous/next controls, CarouselDots indicators, and a context API."
|
|
694
|
+
},
|
|
695
|
+
{
|
|
696
|
+
"absorbed": [
|
|
697
|
+
"LocalePicker",
|
|
698
|
+
"LanguagePicker",
|
|
699
|
+
"TimezonePicker",
|
|
700
|
+
"DateFormatPicker",
|
|
701
|
+
"TimeFormatPicker",
|
|
702
|
+
"ThemePicker",
|
|
703
|
+
"DensityPicker"
|
|
704
|
+
],
|
|
705
|
+
"group": "navigation",
|
|
706
|
+
"name": "AppSettingPicker",
|
|
707
|
+
"tagline": "One provider-bound Select for a single AppProvider setting, chosen by `kind` (locale | timezone | dateFormat | timeFormat | theme | brand | density | fontSize) — covers locale/format AND the four theme axes. Throws if used without AppProvider AND without controlled value+onValueChange."
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
"group": "navigation",
|
|
711
|
+
"name": "AppSettingToggle",
|
|
712
|
+
"tagline": "ONE button that steps a single AppProvider setting to its NEXT value and shows that value as its glyph — theme (Sun/Moon/Monitor), density, fontSize, timeFormat. The no-menu counterpart to AppSettingPicker: same binding contract, same option order, one tap instead of open-then-choose. Renders disabled (never throws) outside AppProvider when uncontrolled."
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
"group": "data-entry",
|
|
716
|
+
"name": "Field",
|
|
717
|
+
"tagline": "Label + optional description laid out beside a single checkbox/radio/switch control — the inline alternative to FormField's full block layout."
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
"group": "data-display",
|
|
721
|
+
"name": "LineChart",
|
|
722
|
+
"tagline": "Trends over an ordered category axis — one or more series, locale-formatted ticks/tooltips, screen-reader text alternative built in. Data-visualization graph / plot."
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"group": "data-display",
|
|
726
|
+
"name": "BarChart",
|
|
727
|
+
"tagline": "Compare a value across categories — grouped or `stacked`, vertical or `horizontal`, with localized ticks/tooltips and a built-in text alternative. Data-visualization graph / plot / diagram."
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
"group": "data-display",
|
|
731
|
+
"name": "CompactBarTrend",
|
|
732
|
+
"tagline": "DEPENDENCY-FREE compact vertical bar trend for dashboard summary cards — N category/value pairs, muted marks plus ONE emphasized 'current' bar, all geometry from --chart-trend-* tokens. Needs NO recharts. Sparkline / micro-chart / activity pulse / KPI trend strip."
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"group": "data-display",
|
|
736
|
+
"name": "AreaChart",
|
|
737
|
+
"tagline": "Magnitude over an ordered category axis — overlay or `stacked` areas, optional `curved` smoothing, localized formatting + text alternative. Data-visualization graph / plot."
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"group": "data-display",
|
|
741
|
+
"name": "PieChart",
|
|
742
|
+
"tagline": "Part-to-whole composition across a small set of slices — `donut` option, localized tooltips, and a screen-reader breakdown of every slice. Data-visualization graph / diagram."
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
"group": "data-entry",
|
|
746
|
+
"name": "CommandPalette",
|
|
747
|
+
"tagline": "Searchable command dialog with controlled or uncontrolled open state and consumer-owned selection."
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
"group": "feedback",
|
|
751
|
+
"name": "TwoFactorSetup",
|
|
752
|
+
"tagline": "Canonical two-factor enrollment dialog for QR/manual-key verification and recovery-code acknowledgement."
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
"group": "layout",
|
|
756
|
+
"name": "AuthDivider",
|
|
757
|
+
"tagline": "The auth-scoped PRESET over `Separator label` — a localized conjunction between two equal rules."
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
"group": "layout",
|
|
761
|
+
"name": "AuthFooter",
|
|
762
|
+
"tagline": "Compact hosted-auth footer for consumer-owned product, legal, privacy, and locale content."
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"group": "layout",
|
|
766
|
+
"name": "AuthIdentity",
|
|
767
|
+
"tagline": "Hosted-auth identity heading with the shared mark (or the product's own lockup) and optional requesting-client context."
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
"group": "layout",
|
|
771
|
+
"name": "AccountChip",
|
|
772
|
+
"tagline": "Signed-in user for a PageContainer extra slot, Topbar or footer row: avatar, name and one ghost action at the control tier height — never a hand-rolled rounded-full border div."
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"group": "layout",
|
|
776
|
+
"name": "AuthAccountSummary",
|
|
777
|
+
"tagline": "Compact signed-in account row for hosted auth: avatar fallback, authoritative email and switch action."
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
"group": "layout",
|
|
781
|
+
"name": "AuthStack",
|
|
782
|
+
"tagline": "Token-spaced vertical stack for direct sections inside a canonical auth card."
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
"group": "layout",
|
|
786
|
+
"name": "OrgSwitcher",
|
|
787
|
+
"tagline": "Searchable organization switcher with canonical trigger geometry, desktop popover, and mobile sheet."
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
"group": "layout",
|
|
791
|
+
"name": "AppLauncher",
|
|
792
|
+
"tagline": "Nine-dot topbar app grid — the platform-standard way to switch app (the Google Workspace shape)."
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"group": "navigation",
|
|
796
|
+
"name": "FilterBar",
|
|
797
|
+
"tagline": "Domain-neutral list-page filter toolbar with optional clear action and labelled groups."
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"group": "data-display",
|
|
801
|
+
"name": "PermissionMatrix",
|
|
802
|
+
"tagline": "Domain data is 100% consumer-supplied."
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"group": "data-entry",
|
|
806
|
+
"name": "BranchScopePicker",
|
|
807
|
+
"tagline": "Canonical scope control: all branches vs an explicit subset."
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"group": "layout",
|
|
811
|
+
"name": "ServiceRolePanel",
|
|
812
|
+
"tagline": "Geometry (1440/1024 two-track, 390 stacked) is MasterDetail's tokens."
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
"group": "data-display",
|
|
816
|
+
"name": "ChatBubble",
|
|
817
|
+
"tagline": "One message in a conversation: an author mark, a header naming the turn, the body, and a footer. Renders as an <article> inside ChatBubbleList's log; `loading` shows Skeleton and `typing` streams a string in, dropping the animation entirely under prefers-reduced-motion."
|
|
818
|
+
},
|
|
819
|
+
{
|
|
820
|
+
"group": "data-display",
|
|
821
|
+
"name": "ChatBubbleList",
|
|
822
|
+
"tagline": "The message feed. It owns STICK-TO-BOTTOM (auto-scroll only while the reader is already at the bottom; the moment they scroll up the pin is revoked and a focusable jump-to-latest button appears), one aria-live=\"polite\" role=\"log\" region for the whole conversation, and per-role bubble defaults."
|
|
823
|
+
},
|
|
824
|
+
{
|
|
825
|
+
"group": "data-entry",
|
|
826
|
+
"name": "ChatComposer",
|
|
827
|
+
"tagline": "The message input of a conversation (Ant Design X Sender): an auto-growing Textarea plus exactly ONE trailing action — send, or cancel while a response streams. Enter / Shift+Enter / ⌘-or-Ctrl+Enter is configurable and never fires during an IME conversion."
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"group": "data-entry",
|
|
831
|
+
"name": "ChatSuggestion",
|
|
832
|
+
"tagline": "Trigger-character autocomplete over a ChatComposer (Ant Design X Suggestion): type / at a word boundary and a Command list opens against the composer, driven from the textarea without ever taking focus off it."
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"group": "navigation",
|
|
836
|
+
"name": "Conversations",
|
|
837
|
+
"tagline": "The session rail of a chat surface (Ant Design X Conversations): past conversations, the current one marked with aria-current, a per-row overflow menu, and recency buckets — the whole rail one roving-tabindex tab stop, not one tab stop per conversation."
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
"group": "navigation",
|
|
841
|
+
"name": "MegaMenu",
|
|
842
|
+
"tagline": "A primary site navigation whose top-level items disclose a full-width panel of grouped links (Ant Design `Menu mode=\"horizontal\"` whose SubMenu renders through popupRender). Implements the WAI-ARIA APG Disclosure Navigation pattern — NOT menu/menubar roles — with a roving tabindex across the bar, hover intent, Escape-to-trigger, and a narrow layout where the same disclosure lays out in flow."
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
"group": "data-display",
|
|
846
|
+
"name": "Welcome",
|
|
847
|
+
"tagline": "The greeting block at the head of an empty conversation (Ant Design X Welcome): glyph, greeting, one line under it, and a trailing slot ON THE TITLE ROW — which is the placement a hand-roll gets wrong."
|
|
848
|
+
},
|
|
849
|
+
{
|
|
850
|
+
"group": "general",
|
|
851
|
+
"name": "Actions",
|
|
852
|
+
"tagline": "The strip of actions under an assistant message (Ant Design X Actions): copy, retry, like, and a menu for the rest — a WAI-ARIA toolbar with ONE tab stop, where Ant X's own strip is <div onClick> with no role and no accessible name."
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"group": "data-display",
|
|
856
|
+
"name": "ThoughtChain",
|
|
857
|
+
"tagline": "The assistant's reasoning, step by step (Ant Design X ThoughtChain): an ORDERED list of steps, each with an ordinal or a glyph, a status, and a body it can collapse — where Ant X's own step is a <div onClick> with no role and no aria-expanded."
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
"group": "data-entry",
|
|
861
|
+
"name": "Attachments",
|
|
862
|
+
"tagline": "The chat-surface attachment collection (Ant Design X Attachments): file cards, inline placeholder, optional full-screen drop target, and ref.select/ref.upload — inherits antd Upload props but names the list `items`."
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
"group": "data-display",
|
|
866
|
+
"name": "Marquee",
|
|
867
|
+
"tagline": "A track of content that travels continuously, carrying the WCAG 2.2.2 pause control that makes it conformant. The clone count is MEASURED against the viewport and re-measured on resize; under prefers-reduced-motion it does not move at all."
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
"group": "layout",
|
|
871
|
+
"name": "Masonry",
|
|
872
|
+
"tagline": "Ant Design `Masonry` (6.0.0): tiles of UNEQUAL height packed into columns, each tile dropped into whichever column is shortest when its turn comes. DOM order stays `items` order at every width, so the reading order never follows the packing."
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
"group": "layout",
|
|
876
|
+
"name": "Affix",
|
|
877
|
+
"tagline": "Ant Design `Affix` (6.6.5): pin an element to its scrollport once the page scrolls past it, and REPORT that it is pinned. `position: sticky` pins and then says nothing, so a sticky header cannot shrink, swap its logo or raise its shadow; this one exposes the boolean as `data-affixed` for CSS and `onChange` for JavaScript, and holds the flow open with a MEASURED placeholder so the page does not jump by the bar's height at the moment it pins."
|
|
878
|
+
},
|
|
879
|
+
{
|
|
880
|
+
"group": "navigation",
|
|
881
|
+
"name": "Anchor",
|
|
882
|
+
"tagline": "Ant Design `Anchor` (6.6.5): the in-page section navigation, and the only thing in this library that COMPUTES which section is current. `NavList activeId` takes that answer as a prop. Resolves by antd's rule — the last section whose edge has crossed a single decision line — which is a pure function of scroll position and therefore cannot flicker, suppresses itself during the programmatic scroll a click starts, reads the landing hash before any scroll event, and jumps rather than tweens under `prefers-reduced-motion`."
|
|
883
|
+
}
|
|
884
|
+
]
|