@godxjp/ui 20.2.1 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/app-provider.js +2 -1
- package/dist/components/data-display/badge.d.ts +28 -1
- package/dist/components/data-display/badge.js +2 -0
- package/dist/components/data-display/chat-bubble.d.ts +30 -0
- package/dist/components/data-display/chat-bubble.js +229 -0
- package/dist/components/data-display/data-table.d.ts +18 -2
- package/dist/components/data-display/data-table.js +4 -0
- package/dist/components/data-display/descriptions.js +4 -1
- package/dist/components/data-display/index.d.ts +5 -3
- package/dist/components/data-display/index.js +5 -2
- package/dist/components/data-display/popover.d.ts +19 -1
- package/dist/components/data-display/popover.js +12 -3
- package/dist/components/data-display/progress.d.ts +37 -0
- package/dist/components/data-display/progress.js +57 -5
- package/dist/components/data-display/scroll-area.js +26 -1
- package/dist/components/data-display/tree.d.ts +8 -0
- package/dist/components/data-display/tree.js +426 -0
- package/dist/components/data-entry/chat-composer.d.ts +50 -0
- package/dist/components/data-entry/chat-composer.js +163 -0
- package/dist/components/data-entry/chat-suggestion.d.ts +28 -0
- package/dist/components/data-entry/chat-suggestion.js +285 -0
- package/dist/components/data-entry/date-picker.d.ts +10 -3
- package/dist/components/data-entry/date-picker.js +503 -238
- package/dist/components/data-entry/form-field.d.ts +1 -1
- package/dist/components/data-entry/form-field.js +4 -1
- package/dist/components/data-entry/form.js +10 -1
- package/dist/components/data-entry/index.d.ts +4 -6
- package/dist/components/data-entry/index.js +4 -6
- package/dist/components/data-entry/label.d.ts +14 -1
- package/dist/components/data-entry/label.js +6 -1
- package/dist/components/data-entry/radio.d.ts +27 -6
- package/dist/components/data-entry/radio.js +88 -43
- package/dist/components/data-entry/search-select.js +8 -1
- package/dist/components/data-entry/select.js +2 -0
- package/dist/components/data-entry/switch.d.ts +6 -3
- package/dist/components/data-entry/switch.js +34 -11
- package/dist/components/data-entry/textarea.js +3 -1
- package/dist/components/data-entry/tree-utils.d.ts +10 -48
- package/dist/components/data-entry/tree-utils.js +1 -154
- package/dist/components/layout/mobile-shell.d.ts +1 -1
- package/dist/components/layout/mobile-shell.js +2 -0
- package/dist/components/navigation/menubar.d.ts +10 -3
- package/dist/components/navigation/steps.d.ts +1 -1
- package/dist/components/navigation/steps.js +3 -1
- package/dist/components/navigation/tabs-scroll.d.ts +27 -0
- package/dist/components/navigation/tabs-scroll.js +52 -1
- package/dist/components/navigation/tabs.d.ts +2 -2
- package/dist/components/navigation/tabs.js +88 -23
- package/dist/components/ui/index.d.ts +0 -1
- package/dist/components/ui/index.js +0 -1
- package/dist/components/ui/segmented.d.ts +15 -1
- package/dist/components/ui/segmented.js +13 -6
- package/dist/i18n/messages/en.json +48 -2
- package/dist/i18n/messages/ja.json +46 -2
- package/dist/i18n/messages/vi.json +47 -2
- package/dist/lib/datetime/picker-format.d.ts +18 -0
- package/dist/lib/datetime/picker-format.js +35 -1
- package/dist/lib/field-a11y.d.ts +12 -0
- package/dist/lib/field-a11y.js +14 -1
- package/dist/lib/tree.d.ts +53 -0
- package/dist/lib/tree.js +155 -0
- package/dist/props/components/data-display.prop.d.ts +194 -1
- package/dist/props/components/data-entry.prop.d.ts +307 -99
- package/dist/props/components/index.d.ts +1 -1
- package/dist/props/components/layout.prop.d.ts +12 -1
- package/dist/props/components/navigation.prop.d.ts +76 -1
- package/dist/props/registry.d.ts +156 -19
- package/dist/props/registry.js +218 -18
- package/dist/props/vocabulary/data.prop.d.ts +12 -0
- package/dist/props/vocabulary/index.d.ts +2 -2
- package/dist/props/vocabulary/layout.prop.d.ts +11 -0
- package/dist/styles/badge-layout.css +4 -0
- package/dist/styles/card-layout.css +6 -6
- package/dist/styles/control.css +22 -6
- package/dist/styles/data-display-layout.css +385 -68
- package/dist/styles/data-entry-layout.css +64 -0
- package/dist/styles/focus-ring.css +4 -2
- package/dist/styles/navigation-layout.css +25 -0
- package/dist/styles/shell-layout.css +7 -1
- package/dist/styles/table-layout.css +34 -0
- package/dist/tokens/base.css +3 -0
- package/dist/tokens/components/chat-bubble.css +36 -0
- package/dist/tokens/components/chat-composer.css +19 -0
- package/dist/tokens/components/data-display.css +9 -6
- package/dist/tokens/components/descriptions.css +4 -0
- package/dist/tokens/components/navigation.css +6 -0
- package/dist/tokens/components/segmented.css +0 -2
- package/dist/tokens/components/shell.css +3 -0
- package/dist/tokens/components/table.css +3 -0
- package/dist/tokens/components/tree.css +27 -0
- package/dist/tokens/foundation.css +7 -0
- package/docs/COMPONENTS.md +14 -14
- package/docs/CONSUMER-RULES.md +24 -1
- package/docs/FRAME-COVERAGE-LEDGER.md +1 -1
- package/docs/FRAME-COVERAGE-REPORT.md +9 -7
- package/docs/TOKENS.md +65 -0
- package/docs/data-display/badge.tsx +37 -0
- package/docs/data-display/chat-bubble.tsx +397 -0
- package/docs/data-display/data-table/index.tsx +18 -0
- package/docs/data-display/popover.tsx +41 -1
- package/docs/data-display/progress.tsx +28 -0
- package/docs/data-display/timeline.tsx +46 -0
- package/docs/data-display/tree.tsx +394 -0
- package/docs/data-entry/calendar.tsx +2 -2
- package/docs/data-entry/chat-composer.tsx +464 -0
- package/docs/data-entry/chat-suggestion.tsx +301 -0
- package/docs/data-entry/date-picker.tsx +143 -3
- package/docs/data-entry/form/examples/invoice-form.tsx +2 -2
- package/docs/data-entry/form-field/examples/a11y-contract.tsx +3 -5
- package/docs/data-entry/form.tsx +4 -4
- package/docs/data-entry/number-input.tsx +31 -0
- package/docs/data-entry/segmented.tsx +103 -1
- package/docs/layout/mobile-shell.tsx +5 -0
- package/docs/navigation/tabs.tsx +149 -0
- package/docs/roadmap/ai-chat-components.md +207 -0
- package/docs/roadmap/antd-parity.md +155 -0
- package/docs/roadmap/badge-tag-chip-count.md +172 -0
- package/docs/roadmap/list-masonry.md +159 -0
- package/docs/roadmap/parity-audit-data-display-feedback.md +567 -0
- package/docs/roadmap/parity-audit-data-entry.md +357 -0
- package/docs/roadmap/parity-audit-layout-navigation-general.md +464 -0
- package/docs/roadmap/parity-backlog.md +78 -0
- package/docs/roadmap/tree-components.md +151 -0
- package/docs/showcase/acme-portal.tsx +7 -0
- package/docs/showcase/table-tree-rows.tsx +4 -4
- package/package.json +13 -23
- package/scripts/ui-audit.mjs +17 -4
- package/dist/components/data-display/tree-list.d.ts +0 -13
- package/dist/components/data-display/tree-list.js +0 -26
- package/dist/components/data-entry/date-range-picker.d.ts +0 -11
- package/dist/components/data-entry/date-range-picker.js +0 -349
- package/dist/components/data-entry/month-picker.d.ts +0 -10
- package/dist/components/data-entry/month-picker.js +0 -241
- package/dist/components/data-entry/month-range-picker.d.ts +0 -10
- package/dist/components/data-entry/month-range-picker.js +0 -301
- package/dist/components/ui/date-range-picker.d.ts +0 -1
- package/dist/components/ui/date-range-picker.js +0 -2
- package/docs/data-display/tree-list.tsx +0 -107
- package/docs/data-entry/date-range-picker.tsx +0 -175
- package/docs/data-entry/month-picker.tsx +0 -101
- package/docs/data-entry/month-range-picker.tsx +0 -115
package/dist/props/registry.d.ts
CHANGED
|
@@ -244,6 +244,11 @@ export declare const VOCABULARY_REGISTRY: {
|
|
|
244
244
|
readonly category: "layout";
|
|
245
245
|
readonly description: "MobileShell block-size contract — viewport (100dvh root, the real app) | fill (fills a bounded parent, e.g. a device-frame preview)";
|
|
246
246
|
};
|
|
247
|
+
readonly MobileShellWidthProp: {
|
|
248
|
+
readonly file: "vocabulary/layout.prop.ts";
|
|
249
|
+
readonly category: "layout";
|
|
250
|
+
readonly description: "MobileShell inline-size contract — fill (takes the whole inline size, the default) | phone (caps at the handheld measure and centres, for a handheld screen on a wider viewport)";
|
|
251
|
+
};
|
|
247
252
|
readonly CenteredShellPresetProp: {
|
|
248
253
|
readonly file: "vocabulary/layout.prop.ts";
|
|
249
254
|
readonly category: "layout";
|
|
@@ -841,7 +846,7 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
841
846
|
readonly MobileShellProp: {
|
|
842
847
|
readonly group: "layout";
|
|
843
848
|
readonly file: "components/layout.prop.ts";
|
|
844
|
-
readonly vocabulary: readonly ["ChildrenProp", "ClassNameProp", "ActionProp", "MobileShellHeightProp", {
|
|
849
|
+
readonly vocabulary: readonly ["ChildrenProp", "ClassNameProp", "ActionProp", "MobileShellHeightProp", "MobileShellWidthProp", {
|
|
845
850
|
readonly field: "header";
|
|
846
851
|
readonly local: true;
|
|
847
852
|
readonly reason: "MobileShell app-bar band — the screen title row; it absorbs the top safe-area inset when no statusBar precedes it.";
|
|
@@ -1304,21 +1309,6 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1304
1309
|
readonly file: "components/data-entry.prop.ts";
|
|
1305
1310
|
readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"];
|
|
1306
1311
|
};
|
|
1307
|
-
readonly MonthPickerProp: {
|
|
1308
|
-
readonly group: "data-entry";
|
|
1309
|
-
readonly file: "components/data-entry.prop.ts";
|
|
1310
|
-
readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"];
|
|
1311
|
-
};
|
|
1312
|
-
readonly MonthRangePickerProp: {
|
|
1313
|
-
readonly group: "data-entry";
|
|
1314
|
-
readonly file: "components/data-entry.prop.ts";
|
|
1315
|
-
readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"];
|
|
1316
|
-
};
|
|
1317
|
-
readonly DateRangePickerProp: {
|
|
1318
|
-
readonly group: "data-entry";
|
|
1319
|
-
readonly file: "components/data-entry.prop.ts";
|
|
1320
|
-
readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"];
|
|
1321
|
-
};
|
|
1322
1312
|
readonly CalendarCellRenderProp: {
|
|
1323
1313
|
readonly group: "data-entry";
|
|
1324
1314
|
readonly file: "components/data-entry.prop.ts";
|
|
@@ -2012,6 +2002,16 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
2012
2002
|
readonly file: "components/navigation.prop.ts";
|
|
2013
2003
|
readonly vocabulary: readonly ["HandlerProp"];
|
|
2014
2004
|
};
|
|
2005
|
+
readonly TabsOnTabClickProp: {
|
|
2006
|
+
readonly group: "navigation";
|
|
2007
|
+
readonly file: "components/navigation.prop.ts";
|
|
2008
|
+
readonly vocabulary: readonly ["HandlerProp"];
|
|
2009
|
+
};
|
|
2010
|
+
readonly TabsOverflowProp: {
|
|
2011
|
+
readonly group: "navigation";
|
|
2012
|
+
readonly file: "components/navigation.prop.ts";
|
|
2013
|
+
readonly vocabulary: readonly [];
|
|
2014
|
+
};
|
|
2015
2015
|
readonly TabItemProp: {
|
|
2016
2016
|
readonly group: "navigation";
|
|
2017
2017
|
readonly file: "components/navigation.prop.ts";
|
|
@@ -2212,10 +2212,114 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
2212
2212
|
readonly reason: "Block click handler carrying the event; its presence turns every block into a real button.";
|
|
2213
2213
|
}];
|
|
2214
2214
|
};
|
|
2215
|
-
readonly
|
|
2215
|
+
readonly ChatBubblePlacementProp: {
|
|
2216
2216
|
readonly group: "data-display";
|
|
2217
|
-
readonly file: "components/data-display
|
|
2218
|
-
readonly vocabulary: readonly [
|
|
2217
|
+
readonly file: "components/data-display.prop.ts";
|
|
2218
|
+
readonly vocabulary: readonly [{
|
|
2219
|
+
readonly field: "placement";
|
|
2220
|
+
readonly local: true;
|
|
2221
|
+
readonly reason: 'Side of the conversation a message sits on ("start" | "end"), spelled on the LOGICAL inline axis so a feed flips under dir="rtl" with no per-locale branch.';
|
|
2222
|
+
}];
|
|
2223
|
+
};
|
|
2224
|
+
readonly ChatBubbleVariantProp: {
|
|
2225
|
+
readonly group: "data-display";
|
|
2226
|
+
readonly file: "components/data-display.prop.ts";
|
|
2227
|
+
readonly vocabulary: readonly [{
|
|
2228
|
+
readonly field: "variant";
|
|
2229
|
+
readonly local: true;
|
|
2230
|
+
readonly reason: "Structural treatment of the message body (filled | borderless | outlined). Status colour stays on `tone`; Ant Design X's `shadow` is absent because this system has no drop shadows.";
|
|
2231
|
+
}];
|
|
2232
|
+
};
|
|
2233
|
+
readonly ChatBubbleToneProp: {
|
|
2234
|
+
readonly group: "data-display";
|
|
2235
|
+
readonly file: "components/data-display.prop.ts";
|
|
2236
|
+
readonly vocabulary: readonly ["ToneProp"];
|
|
2237
|
+
};
|
|
2238
|
+
readonly ChatBubbleTypingProp: {
|
|
2239
|
+
readonly group: "data-display";
|
|
2240
|
+
readonly file: "components/data-display.prop.ts";
|
|
2241
|
+
readonly vocabulary: readonly [{
|
|
2242
|
+
readonly field: "typing";
|
|
2243
|
+
readonly local: true;
|
|
2244
|
+
readonly reason: "Stream-in animation: `true` or `{ step, interval }`. Dropped entirely under prefers-reduced-motion, which renders the full text at once (WCAG 2.3.3).";
|
|
2245
|
+
}];
|
|
2246
|
+
};
|
|
2247
|
+
readonly ChatBubbleProp: {
|
|
2248
|
+
readonly group: "data-display";
|
|
2249
|
+
readonly file: "components/data-display.prop.ts";
|
|
2250
|
+
readonly vocabulary: readonly ["ChildrenProp", "SizeProp", "ToneProp", "PendingProp", "ClassNameProp", "IdProp", {
|
|
2251
|
+
readonly field: "placement";
|
|
2252
|
+
readonly local: true;
|
|
2253
|
+
readonly reason: "See ChatBubblePlacementProp, the conversation-side vocabulary.";
|
|
2254
|
+
}, {
|
|
2255
|
+
readonly field: "variant";
|
|
2256
|
+
readonly local: true;
|
|
2257
|
+
readonly reason: "See ChatBubbleVariantProp, the message-body treatment vocabulary.";
|
|
2258
|
+
}, {
|
|
2259
|
+
readonly field: "avatar";
|
|
2260
|
+
readonly local: true;
|
|
2261
|
+
readonly reason: "The author's mark — a real <Avatar> node. A slot, not a label: the accessible name comes from `header`, so a decorative avatar is aria-hidden at the call site.";
|
|
2262
|
+
}, {
|
|
2263
|
+
readonly field: "header";
|
|
2264
|
+
readonly local: true;
|
|
2265
|
+
readonly reason: "Line above the body naming the turn's author. Distinct from TitleProp: it is the bubble's ACCESSIBLE NAME, not a heading in the document outline.";
|
|
2266
|
+
}, {
|
|
2267
|
+
readonly field: "footer";
|
|
2268
|
+
readonly local: true;
|
|
2269
|
+
readonly reason: "Line below the body (timestamp, per-message actions). Not FooterProp, which is a page-level action bar.";
|
|
2270
|
+
}, {
|
|
2271
|
+
readonly field: "typing";
|
|
2272
|
+
readonly local: true;
|
|
2273
|
+
readonly reason: "See ChatBubbleTypingProp, the stream-in animation vocabulary.";
|
|
2274
|
+
}];
|
|
2275
|
+
};
|
|
2276
|
+
readonly ChatMessageProp: {
|
|
2277
|
+
readonly group: "data-display";
|
|
2278
|
+
readonly file: "components/data-display.prop.ts";
|
|
2279
|
+
readonly vocabulary: readonly ["IdProp", "ChildrenProp", {
|
|
2280
|
+
readonly field: "role";
|
|
2281
|
+
readonly local: true;
|
|
2282
|
+
readonly reason: 'Key into ChatBubbleList\'s `roles` map ("user" | "assistant" | "system" | a product\'s own). A data field, not the ARIA `role` attribute.';
|
|
2283
|
+
}, {
|
|
2284
|
+
readonly field: "content";
|
|
2285
|
+
readonly local: true;
|
|
2286
|
+
readonly reason: "The message body. Spelled `content` rather than `children` because a data item in an array is not a JSX child.";
|
|
2287
|
+
}];
|
|
2288
|
+
};
|
|
2289
|
+
readonly ChatBubbleListProp: {
|
|
2290
|
+
readonly group: "data-display";
|
|
2291
|
+
readonly file: "components/data-display.prop.ts";
|
|
2292
|
+
readonly vocabulary: readonly ["LabelProp", "ClassNameProp", "IdProp", {
|
|
2293
|
+
readonly field: "items";
|
|
2294
|
+
readonly local: true;
|
|
2295
|
+
readonly reason: "Consumer-supplied messages in conversation order (see ChatMessageProp).";
|
|
2296
|
+
}, {
|
|
2297
|
+
readonly field: "roles";
|
|
2298
|
+
readonly local: true;
|
|
2299
|
+
readonly reason: "Per-role bubble defaults merged UNDER each message's own props, so a feed's shape is declared once instead of on every message.";
|
|
2300
|
+
}, {
|
|
2301
|
+
readonly field: "autoScroll";
|
|
2302
|
+
readonly local: true;
|
|
2303
|
+
readonly reason: 'Stick-to-bottom while the reader is already at the bottom. Not a generic boolean flag: revoking the pin the moment they scroll up is the behaviour, and it drives the "jump to latest" affordance.';
|
|
2304
|
+
}];
|
|
2305
|
+
};
|
|
2306
|
+
readonly TreeNodeProp: {
|
|
2307
|
+
readonly group: "data-display";
|
|
2308
|
+
readonly file: "components/data-display.prop.ts";
|
|
2309
|
+
readonly vocabulary: readonly [{
|
|
2310
|
+
readonly field: "icon";
|
|
2311
|
+
readonly local: true;
|
|
2312
|
+
readonly reason: "Per-node glyph drawn when Tree's showIcon is on.";
|
|
2313
|
+
}, {
|
|
2314
|
+
readonly field: "children";
|
|
2315
|
+
readonly local: true;
|
|
2316
|
+
readonly reason: "The node's own child nodes — the hierarchy itself, not a slot.";
|
|
2317
|
+
}];
|
|
2318
|
+
};
|
|
2319
|
+
readonly TreeProp: {
|
|
2320
|
+
readonly group: "data-display";
|
|
2321
|
+
readonly file: "components/data-display.prop.ts";
|
|
2322
|
+
readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp", "DisabledProp", "SizeProp", "ClassNameProp", "IdProp"];
|
|
2219
2323
|
};
|
|
2220
2324
|
readonly CardProp: {
|
|
2221
2325
|
readonly group: "data-display";
|
|
@@ -2562,6 +2666,39 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
2562
2666
|
readonly reason: "Forwarded MasterDetail stacking threshold override.";
|
|
2563
2667
|
}];
|
|
2564
2668
|
};
|
|
2669
|
+
readonly ChatComposerSubmitTypeProp: {
|
|
2670
|
+
readonly group: "data-entry";
|
|
2671
|
+
readonly file: "components/data-entry.prop.ts";
|
|
2672
|
+
readonly vocabulary: readonly [];
|
|
2673
|
+
};
|
|
2674
|
+
readonly ChatComposerProp: {
|
|
2675
|
+
readonly group: "data-entry";
|
|
2676
|
+
readonly file: "components/data-entry.prop.ts";
|
|
2677
|
+
readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "PendingProp", "SizeProp", "ControlStatusProp", "NameProp", "IdProp", "ClassNameProp"];
|
|
2678
|
+
};
|
|
2679
|
+
readonly ChatSuggestionItemProp: {
|
|
2680
|
+
readonly group: "data-entry";
|
|
2681
|
+
readonly file: "components/data-entry.prop.ts";
|
|
2682
|
+
readonly vocabulary: readonly ["ValueProp", "LabelProp", "DisabledProp"];
|
|
2683
|
+
};
|
|
2684
|
+
readonly ChatSuggestionRenderProp: {
|
|
2685
|
+
readonly group: "data-entry";
|
|
2686
|
+
readonly file: "components/data-entry.prop.ts";
|
|
2687
|
+
readonly vocabulary: readonly [{
|
|
2688
|
+
readonly field: "onTrigger";
|
|
2689
|
+
readonly local: true;
|
|
2690
|
+
readonly reason: "Render-prop callback the composer calls to re-read the caret; not a value change.";
|
|
2691
|
+
}, {
|
|
2692
|
+
readonly field: "onKeyDown";
|
|
2693
|
+
readonly local: true;
|
|
2694
|
+
readonly reason: "Render-prop keydown forwarder — the composer's own DOM handler, not a state axis.";
|
|
2695
|
+
}];
|
|
2696
|
+
};
|
|
2697
|
+
readonly ChatSuggestionProp: {
|
|
2698
|
+
readonly group: "data-entry";
|
|
2699
|
+
readonly file: "components/data-entry.prop.ts";
|
|
2700
|
+
readonly vocabulary: readonly ["OnValueChangeProp", "OpenProp", "DefaultOpenProp", "OnOpenChangeProp", "ChildrenProp", "EmptyMessageProp", "IdProp", "ClassNameProp"];
|
|
2701
|
+
};
|
|
2565
2702
|
};
|
|
2566
2703
|
export type ComponentPropName = keyof typeof COMPONENT_PROP_REGISTRY;
|
|
2567
2704
|
/** Forbidden duplicate concepts — use the canonical name on the left. */
|
package/dist/props/registry.js
CHANGED
|
@@ -242,6 +242,11 @@ const VOCABULARY_REGISTRY = {
|
|
|
242
242
|
category: "layout",
|
|
243
243
|
description: "MobileShell block-size contract \u2014 viewport (100dvh root, the real app) | fill (fills a bounded parent, e.g. a device-frame preview)"
|
|
244
244
|
},
|
|
245
|
+
MobileShellWidthProp: {
|
|
246
|
+
file: "vocabulary/layout.prop.ts",
|
|
247
|
+
category: "layout",
|
|
248
|
+
description: "MobileShell inline-size contract \u2014 fill (takes the whole inline size, the default) | phone (caps at the handheld measure and centres, for a handheld screen on a wider viewport)"
|
|
249
|
+
},
|
|
245
250
|
CenteredShellPresetProp: {
|
|
246
251
|
file: "vocabulary/layout.prop.ts",
|
|
247
252
|
category: "layout",
|
|
@@ -861,6 +866,7 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
861
866
|
"ClassNameProp",
|
|
862
867
|
"ActionProp",
|
|
863
868
|
"MobileShellHeightProp",
|
|
869
|
+
"MobileShellWidthProp",
|
|
864
870
|
{
|
|
865
871
|
field: "header",
|
|
866
872
|
local: true,
|
|
@@ -1472,21 +1478,6 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1472
1478
|
file: "components/data-entry.prop.ts",
|
|
1473
1479
|
vocabulary: ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"]
|
|
1474
1480
|
},
|
|
1475
|
-
MonthPickerProp: {
|
|
1476
|
-
group: "data-entry",
|
|
1477
|
-
file: "components/data-entry.prop.ts",
|
|
1478
|
-
vocabulary: ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"]
|
|
1479
|
-
},
|
|
1480
|
-
MonthRangePickerProp: {
|
|
1481
|
-
group: "data-entry",
|
|
1482
|
-
file: "components/data-entry.prop.ts",
|
|
1483
|
-
vocabulary: ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"]
|
|
1484
|
-
},
|
|
1485
|
-
DateRangePickerProp: {
|
|
1486
|
-
group: "data-entry",
|
|
1487
|
-
file: "components/data-entry.prop.ts",
|
|
1488
|
-
vocabulary: ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"]
|
|
1489
|
-
},
|
|
1490
1481
|
CalendarCellRenderProp: {
|
|
1491
1482
|
group: "data-entry",
|
|
1492
1483
|
file: "components/data-entry.prop.ts",
|
|
@@ -2316,6 +2307,16 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
2316
2307
|
file: "components/navigation.prop.ts",
|
|
2317
2308
|
vocabulary: ["HandlerProp"]
|
|
2318
2309
|
},
|
|
2310
|
+
TabsOnTabClickProp: {
|
|
2311
|
+
group: "navigation",
|
|
2312
|
+
file: "components/navigation.prop.ts",
|
|
2313
|
+
vocabulary: ["HandlerProp"]
|
|
2314
|
+
},
|
|
2315
|
+
TabsOverflowProp: {
|
|
2316
|
+
group: "navigation",
|
|
2317
|
+
file: "components/navigation.prop.ts",
|
|
2318
|
+
vocabulary: []
|
|
2319
|
+
},
|
|
2319
2320
|
TabItemProp: {
|
|
2320
2321
|
group: "navigation",
|
|
2321
2322
|
file: "components/navigation.prop.ts",
|
|
@@ -2570,10 +2571,152 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
2570
2571
|
}
|
|
2571
2572
|
]
|
|
2572
2573
|
},
|
|
2573
|
-
|
|
2574
|
+
ChatBubblePlacementProp: {
|
|
2574
2575
|
group: "data-display",
|
|
2575
|
-
file: "components/data-display
|
|
2576
|
-
vocabulary: [
|
|
2576
|
+
file: "components/data-display.prop.ts",
|
|
2577
|
+
vocabulary: [
|
|
2578
|
+
{
|
|
2579
|
+
field: "placement",
|
|
2580
|
+
local: true,
|
|
2581
|
+
reason: 'Side of the conversation a message sits on ("start" | "end"), spelled on the LOGICAL inline axis so a feed flips under dir="rtl" with no per-locale branch.'
|
|
2582
|
+
}
|
|
2583
|
+
]
|
|
2584
|
+
},
|
|
2585
|
+
ChatBubbleVariantProp: {
|
|
2586
|
+
group: "data-display",
|
|
2587
|
+
file: "components/data-display.prop.ts",
|
|
2588
|
+
vocabulary: [
|
|
2589
|
+
{
|
|
2590
|
+
field: "variant",
|
|
2591
|
+
local: true,
|
|
2592
|
+
reason: "Structural treatment of the message body (filled | borderless | outlined). Status colour stays on `tone`; Ant Design X's `shadow` is absent because this system has no drop shadows."
|
|
2593
|
+
}
|
|
2594
|
+
]
|
|
2595
|
+
},
|
|
2596
|
+
ChatBubbleToneProp: {
|
|
2597
|
+
group: "data-display",
|
|
2598
|
+
file: "components/data-display.prop.ts",
|
|
2599
|
+
vocabulary: ["ToneProp"]
|
|
2600
|
+
},
|
|
2601
|
+
ChatBubbleTypingProp: {
|
|
2602
|
+
group: "data-display",
|
|
2603
|
+
file: "components/data-display.prop.ts",
|
|
2604
|
+
vocabulary: [
|
|
2605
|
+
{
|
|
2606
|
+
field: "typing",
|
|
2607
|
+
local: true,
|
|
2608
|
+
reason: "Stream-in animation: `true` or `{ step, interval }`. Dropped entirely under prefers-reduced-motion, which renders the full text at once (WCAG 2.3.3)."
|
|
2609
|
+
}
|
|
2610
|
+
]
|
|
2611
|
+
},
|
|
2612
|
+
ChatBubbleProp: {
|
|
2613
|
+
group: "data-display",
|
|
2614
|
+
file: "components/data-display.prop.ts",
|
|
2615
|
+
vocabulary: [
|
|
2616
|
+
"ChildrenProp",
|
|
2617
|
+
"SizeProp",
|
|
2618
|
+
"ToneProp",
|
|
2619
|
+
"PendingProp",
|
|
2620
|
+
"ClassNameProp",
|
|
2621
|
+
"IdProp",
|
|
2622
|
+
{
|
|
2623
|
+
field: "placement",
|
|
2624
|
+
local: true,
|
|
2625
|
+
reason: "See ChatBubblePlacementProp, the conversation-side vocabulary."
|
|
2626
|
+
},
|
|
2627
|
+
{
|
|
2628
|
+
field: "variant",
|
|
2629
|
+
local: true,
|
|
2630
|
+
reason: "See ChatBubbleVariantProp, the message-body treatment vocabulary."
|
|
2631
|
+
},
|
|
2632
|
+
{
|
|
2633
|
+
field: "avatar",
|
|
2634
|
+
local: true,
|
|
2635
|
+
reason: "The author's mark \u2014 a real <Avatar> node. A slot, not a label: the accessible name comes from `header`, so a decorative avatar is aria-hidden at the call site."
|
|
2636
|
+
},
|
|
2637
|
+
{
|
|
2638
|
+
field: "header",
|
|
2639
|
+
local: true,
|
|
2640
|
+
reason: "Line above the body naming the turn's author. Distinct from TitleProp: it is the bubble's ACCESSIBLE NAME, not a heading in the document outline."
|
|
2641
|
+
},
|
|
2642
|
+
{
|
|
2643
|
+
field: "footer",
|
|
2644
|
+
local: true,
|
|
2645
|
+
reason: "Line below the body (timestamp, per-message actions). Not FooterProp, which is a page-level action bar."
|
|
2646
|
+
},
|
|
2647
|
+
{
|
|
2648
|
+
field: "typing",
|
|
2649
|
+
local: true,
|
|
2650
|
+
reason: "See ChatBubbleTypingProp, the stream-in animation vocabulary."
|
|
2651
|
+
}
|
|
2652
|
+
]
|
|
2653
|
+
},
|
|
2654
|
+
ChatMessageProp: {
|
|
2655
|
+
group: "data-display",
|
|
2656
|
+
file: "components/data-display.prop.ts",
|
|
2657
|
+
vocabulary: [
|
|
2658
|
+
"IdProp",
|
|
2659
|
+
"ChildrenProp",
|
|
2660
|
+
{
|
|
2661
|
+
field: "role",
|
|
2662
|
+
local: true,
|
|
2663
|
+
reason: 'Key into ChatBubbleList\'s `roles` map ("user" | "assistant" | "system" | a product\'s own). A data field, not the ARIA `role` attribute.'
|
|
2664
|
+
},
|
|
2665
|
+
{
|
|
2666
|
+
field: "content",
|
|
2667
|
+
local: true,
|
|
2668
|
+
reason: "The message body. Spelled `content` rather than `children` because a data item in an array is not a JSX child."
|
|
2669
|
+
}
|
|
2670
|
+
]
|
|
2671
|
+
},
|
|
2672
|
+
ChatBubbleListProp: {
|
|
2673
|
+
group: "data-display",
|
|
2674
|
+
file: "components/data-display.prop.ts",
|
|
2675
|
+
vocabulary: [
|
|
2676
|
+
"LabelProp",
|
|
2677
|
+
"ClassNameProp",
|
|
2678
|
+
"IdProp",
|
|
2679
|
+
{
|
|
2680
|
+
field: "items",
|
|
2681
|
+
local: true,
|
|
2682
|
+
reason: "Consumer-supplied messages in conversation order (see ChatMessageProp)."
|
|
2683
|
+
},
|
|
2684
|
+
{
|
|
2685
|
+
field: "roles",
|
|
2686
|
+
local: true,
|
|
2687
|
+
reason: "Per-role bubble defaults merged UNDER each message's own props, so a feed's shape is declared once instead of on every message."
|
|
2688
|
+
},
|
|
2689
|
+
{
|
|
2690
|
+
field: "autoScroll",
|
|
2691
|
+
local: true,
|
|
2692
|
+
reason: 'Stick-to-bottom while the reader is already at the bottom. Not a generic boolean flag: revoking the pin the moment they scroll up is the behaviour, and it drives the "jump to latest" affordance.'
|
|
2693
|
+
}
|
|
2694
|
+
]
|
|
2695
|
+
},
|
|
2696
|
+
TreeNodeProp: {
|
|
2697
|
+
group: "data-display",
|
|
2698
|
+
file: "components/data-display.prop.ts",
|
|
2699
|
+
vocabulary: [
|
|
2700
|
+
{ field: "icon", local: true, reason: "Per-node glyph drawn when Tree's showIcon is on." },
|
|
2701
|
+
{
|
|
2702
|
+
field: "children",
|
|
2703
|
+
local: true,
|
|
2704
|
+
reason: "The node's own child nodes \u2014 the hierarchy itself, not a slot."
|
|
2705
|
+
}
|
|
2706
|
+
]
|
|
2707
|
+
},
|
|
2708
|
+
TreeProp: {
|
|
2709
|
+
group: "data-display",
|
|
2710
|
+
file: "components/data-display.prop.ts",
|
|
2711
|
+
vocabulary: [
|
|
2712
|
+
"ValueProp",
|
|
2713
|
+
"DefaultValueProp",
|
|
2714
|
+
"OnValueChangeProp",
|
|
2715
|
+
"DisabledProp",
|
|
2716
|
+
"SizeProp",
|
|
2717
|
+
"ClassNameProp",
|
|
2718
|
+
"IdProp"
|
|
2719
|
+
]
|
|
2577
2720
|
},
|
|
2578
2721
|
CardProp: {
|
|
2579
2722
|
group: "data-display",
|
|
@@ -3010,6 +3153,63 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
3010
3153
|
reason: "Forwarded MasterDetail stacking threshold override."
|
|
3011
3154
|
}
|
|
3012
3155
|
]
|
|
3156
|
+
},
|
|
3157
|
+
ChatComposerSubmitTypeProp: {
|
|
3158
|
+
group: "data-entry",
|
|
3159
|
+
file: "components/data-entry.prop.ts",
|
|
3160
|
+
vocabulary: []
|
|
3161
|
+
},
|
|
3162
|
+
ChatComposerProp: {
|
|
3163
|
+
group: "data-entry",
|
|
3164
|
+
file: "components/data-entry.prop.ts",
|
|
3165
|
+
vocabulary: [
|
|
3166
|
+
"ValueProp",
|
|
3167
|
+
"DefaultValueProp",
|
|
3168
|
+
"OnValueChangeProp",
|
|
3169
|
+
"PlaceholderProp",
|
|
3170
|
+
"DisabledProp",
|
|
3171
|
+
"PendingProp",
|
|
3172
|
+
"SizeProp",
|
|
3173
|
+
"ControlStatusProp",
|
|
3174
|
+
"NameProp",
|
|
3175
|
+
"IdProp",
|
|
3176
|
+
"ClassNameProp"
|
|
3177
|
+
]
|
|
3178
|
+
},
|
|
3179
|
+
ChatSuggestionItemProp: {
|
|
3180
|
+
group: "data-entry",
|
|
3181
|
+
file: "components/data-entry.prop.ts",
|
|
3182
|
+
vocabulary: ["ValueProp", "LabelProp", "DisabledProp"]
|
|
3183
|
+
},
|
|
3184
|
+
ChatSuggestionRenderProp: {
|
|
3185
|
+
group: "data-entry",
|
|
3186
|
+
file: "components/data-entry.prop.ts",
|
|
3187
|
+
vocabulary: [
|
|
3188
|
+
{
|
|
3189
|
+
field: "onTrigger",
|
|
3190
|
+
local: true,
|
|
3191
|
+
reason: "Render-prop callback the composer calls to re-read the caret; not a value change."
|
|
3192
|
+
},
|
|
3193
|
+
{
|
|
3194
|
+
field: "onKeyDown",
|
|
3195
|
+
local: true,
|
|
3196
|
+
reason: "Render-prop keydown forwarder \u2014 the composer's own DOM handler, not a state axis."
|
|
3197
|
+
}
|
|
3198
|
+
]
|
|
3199
|
+
},
|
|
3200
|
+
ChatSuggestionProp: {
|
|
3201
|
+
group: "data-entry",
|
|
3202
|
+
file: "components/data-entry.prop.ts",
|
|
3203
|
+
vocabulary: [
|
|
3204
|
+
"OnValueChangeProp",
|
|
3205
|
+
"OpenProp",
|
|
3206
|
+
"DefaultOpenProp",
|
|
3207
|
+
"OnOpenChangeProp",
|
|
3208
|
+
"ChildrenProp",
|
|
3209
|
+
"EmptyMessageProp",
|
|
3210
|
+
"IdProp",
|
|
3211
|
+
"ClassNameProp"
|
|
3212
|
+
]
|
|
3013
3213
|
}
|
|
3014
3214
|
};
|
|
3015
3215
|
const PROP_ALIASES_FORBIDDEN = {
|
|
@@ -100,6 +100,18 @@ export type SelectedIdsProp = Set<string>;
|
|
|
100
100
|
export type OnSelectChangeProp = (next: Set<string>) => void;
|
|
101
101
|
/** Table density change callback. */
|
|
102
102
|
export type OnTableDensityChangeProp = (density: TableDensityProp) => void;
|
|
103
|
+
/**
|
|
104
|
+
* A row's STATE, drawn as a leading-edge rail plus a wash — the same six tones, with the same
|
|
105
|
+
* names and the same meanings, that `Card accent` already carries. A row that needs attention and
|
|
106
|
+
* a card that needs attention should not be two vocabularies.
|
|
107
|
+
*
|
|
108
|
+
* It is a state, never a category: colour is not the only signal a row may carry (WCAG 1.4.1), so
|
|
109
|
+
* the reason still belongs in a cell — a Badge, a status column, an icon with a label. The rail
|
|
110
|
+
* is what makes that cell findable in a long table, not a replacement for it.
|
|
111
|
+
*/
|
|
112
|
+
export type TableRowToneProp = "primary" | "success" | "warning" | "info" | "attention" | "destructive";
|
|
113
|
+
/** Per-row tone resolver — return `undefined` for a row in the ordinary state. */
|
|
114
|
+
export type RowToneProp<T> = (row: T) => TableRowToneProp | undefined;
|
|
103
115
|
/** Sort change callback — undefined clears sort. */
|
|
104
116
|
export type OnSortChangeProp = (sort: {
|
|
105
117
|
key: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Barrel — all vocabulary prop types. */
|
|
2
2
|
export type { ClassNameProp, ChildrenProp, IdProp, OpenProp, DefaultOpenProp, OnOpenChangeProp, HandlerProp, PendingProp, RequiredProp, DisabledProp, LabelProp, HelperProp, ErrorProp, ErrorBagProp, PlaceholderProp, NameProp, ValueProp, DefaultValueProp, OnValueChangeProp, OnChangeProp, OnClickProp, AsChildProp, FlushProp, WidthProp, ControlWidthProp, AllowClearProp, MaxTagCountProp, MaxTagPlaceholderProp, NotFoundContentProp, PopupMatchWidthProp, } from "./shared.prop.js";
|
|
3
3
|
export type { TitleProp, SubtitleProp, StatusProp, DescriptionProp, ExtraProp, FooterProp, ActionProp, IconProp, ConfirmLabelProp, CancelLabelProp, ActionsProp, EmptyMessageProp, } from "./content.prop.js";
|
|
4
|
-
export type { PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, OrientationProp, TableDensityProp, DensityProp, GapNameProp, PadProp, PadRawProp, PadSides, GapProp, GapStepProp, } from "./layout.prop.js";
|
|
4
|
+
export type { PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, MobileShellWidthProp, OrientationProp, TableDensityProp, DensityProp, GapNameProp, PadProp, PadRawProp, PadSides, GapProp, GapStepProp, } from "./layout.prop.js";
|
|
5
5
|
export type { ButtonVariantProp, ButtonSizeProp, BadgeVariantProp, AppSettingPickerAppearanceProp, AppSettingToggleAppearanceProp, ShapeProp, AvatarShapeProp, TextSizeProp, TextToneProp, FontWeightProp, HeadingLevelProp, TextAlignProp, TextWhitespaceProp, SizeProp, ControlStatusProp, ControlVariantProp, FormLayoutProp, DescriptionsLayoutProp, BreakpointProp, ConfirmVariantProp, ToneProp, AlertVariantProp, SortDirectionProp, ColumnAlignProp, SortStateProp, RevealDelayProp, ActivityVariantProp, ActivityAnnounceProp, } from "./interaction.prop.js";
|
|
6
6
|
export type { BreadcrumbItemProp, BreadcrumbProp, BreadcrumbItemMenuProp, BreadcrumbItemMenuEntryProp, BreadcrumbSeparatorProp, BreadcrumbItemRenderProp, } from "./navigation.prop.js";
|
|
7
|
-
export type { GetRowIdProp, OnRowClickProp, ColumnDefProp, TablePresetProp, TableColumnPriorityProp, TableCellIndentProp, SelectedIdsProp, OnSelectChangeProp, OnTableDensityChangeProp, OnSortChangeProp, OnSearchChangeProp, OnClearFiltersProp, HasActiveFiltersProp, StickyProp, ColumnFixedProp, ColumnFilterValueProp, ColumnFilterItemProp, ColumnFilterStateProp, OnColumnFilterChangeProp, ColumnCompareProp, ColumnSorterProp, TableSelectionItemProp, TableRowSelectionProp, TableExpandableProp, TableSummaryProp, TableScrollProp, TableStickyProp, OnRowProp, TablePaginationProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, } from "./data.prop.js";
|
|
7
|
+
export type { GetRowIdProp, OnRowClickProp, ColumnDefProp, TablePresetProp, TableColumnPriorityProp, TableCellIndentProp, SelectedIdsProp, OnSelectChangeProp, OnTableDensityChangeProp, TableRowToneProp, RowToneProp, OnSortChangeProp, OnSearchChangeProp, OnClearFiltersProp, HasActiveFiltersProp, StickyProp, ColumnFixedProp, ColumnFilterValueProp, ColumnFilterItemProp, ColumnFilterStateProp, OnColumnFilterChangeProp, ColumnCompareProp, ColumnSorterProp, TableSelectionItemProp, TableRowSelectionProp, TableExpandableProp, TableSummaryProp, TableScrollProp, TableStickyProp, OnRowProp, TablePaginationProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, } from "./data.prop.js";
|
|
@@ -26,6 +26,17 @@ export type CenteredShellAlignProp = "start" | "center";
|
|
|
26
26
|
* where a viewport-tall root would overflow its frame. Nothing else differs between the two.
|
|
27
27
|
*/
|
|
28
28
|
export type MobileShellHeightProp = "viewport" | "fill";
|
|
29
|
+
/**
|
|
30
|
+
* MobileShell inline-size contract — the axis `height` had and `width` did not.
|
|
31
|
+
* `"fill"` (default, and what the shell has always done) takes the whole inline size it is given.
|
|
32
|
+
* `"phone"` caps it at the handheld measure (`--mobile-shell-max-inline-size`) and centres the
|
|
33
|
+
* column, for the case the shell's own docstring already names on the block axis: a handheld
|
|
34
|
+
* screen rendered on a viewport wider than a handheld — a device-frame preview, a desktop browser
|
|
35
|
+
* opening a mobile route, a phone view embedded in a wider page. Measured at a 1280px viewport
|
|
36
|
+
* before this existed: the shell drew 1232px wide with `max-inline-size: none`, so a 44px tab bar
|
|
37
|
+
* spread its four destinations across a metre of screen.
|
|
38
|
+
*/
|
|
39
|
+
export type MobileShellWidthProp = "fill" | "phone";
|
|
29
40
|
/**
|
|
30
41
|
* ErrorSurface shell contract — WHERE the exception surface lives, not how it looks.
|
|
31
42
|
* `"application"` (403 / 404): the failure happened INSIDE the authenticated app, so the surface
|
|
@@ -44,27 +44,27 @@
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
[data-slot="card"][data-accent="primary"] {
|
|
47
|
-
--card-accent-color: hsl(var(--primary));
|
|
47
|
+
--card-accent-color: hsl(var(--mark-primary));
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
[data-slot="card"][data-accent="success"] {
|
|
51
|
-
--card-accent-color: hsl(var(--success));
|
|
51
|
+
--card-accent-color: hsl(var(--mark-success));
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
[data-slot="card"][data-accent="warning"] {
|
|
55
|
-
--card-accent-color: hsl(var(--warning));
|
|
55
|
+
--card-accent-color: hsl(var(--mark-warning));
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
[data-slot="card"][data-accent="info"] {
|
|
59
|
-
--card-accent-color: hsl(var(--info));
|
|
59
|
+
--card-accent-color: hsl(var(--mark-info));
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
[data-slot="card"][data-accent="attention"] {
|
|
63
|
-
--card-accent-color: hsl(var(--attention));
|
|
63
|
+
--card-accent-color: hsl(var(--mark-attention));
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
[data-slot="card"][data-accent="destructive"] {
|
|
67
|
-
--card-accent-color: hsl(var(--destructive));
|
|
67
|
+
--card-accent-color: hsl(var(--mark-destructive));
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
[data-slot="card"][data-accent] {
|