@godxjp/ui 20.2.1 → 21.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.
Files changed (59) hide show
  1. package/dist/components/data-display/chat-bubble.d.ts +30 -0
  2. package/dist/components/data-display/chat-bubble.js +229 -0
  3. package/dist/components/data-display/descriptions.js +4 -1
  4. package/dist/components/data-display/index.d.ts +4 -2
  5. package/dist/components/data-display/index.js +5 -2
  6. package/dist/components/data-display/popover.js +3 -2
  7. package/dist/components/data-display/scroll-area.js +26 -1
  8. package/dist/components/data-display/tree.d.ts +8 -0
  9. package/dist/components/data-display/tree.js +426 -0
  10. package/dist/components/data-entry/chat-composer.d.ts +50 -0
  11. package/dist/components/data-entry/chat-composer.js +163 -0
  12. package/dist/components/data-entry/chat-suggestion.d.ts +28 -0
  13. package/dist/components/data-entry/chat-suggestion.js +285 -0
  14. package/dist/components/data-entry/index.d.ts +4 -0
  15. package/dist/components/data-entry/index.js +4 -0
  16. package/dist/components/data-entry/textarea.js +3 -1
  17. package/dist/components/data-entry/tree-utils.d.ts +10 -48
  18. package/dist/components/data-entry/tree-utils.js +1 -154
  19. package/dist/i18n/messages/en.json +45 -0
  20. package/dist/i18n/messages/ja.json +43 -0
  21. package/dist/i18n/messages/vi.json +44 -0
  22. package/dist/lib/tree.d.ts +53 -0
  23. package/dist/lib/tree.js +155 -0
  24. package/dist/props/components/data-display.prop.d.ts +187 -1
  25. package/dist/props/components/data-entry.prop.d.ts +127 -0
  26. package/dist/props/registry.d.ts +140 -3
  27. package/dist/props/registry.js +202 -3
  28. package/dist/styles/control.css +7 -0
  29. package/dist/styles/data-display-layout.css +309 -55
  30. package/dist/styles/data-entry-layout.css +64 -0
  31. package/dist/styles/shell-layout.css +2 -1
  32. package/dist/tokens/base.css +3 -0
  33. package/dist/tokens/components/chat-bubble.css +36 -0
  34. package/dist/tokens/components/chat-composer.css +19 -0
  35. package/dist/tokens/components/data-display.css +0 -6
  36. package/dist/tokens/components/descriptions.css +4 -0
  37. package/dist/tokens/components/shell.css +1 -0
  38. package/dist/tokens/components/tree.css +27 -0
  39. package/docs/FRAME-COVERAGE-LEDGER.md +1 -1
  40. package/docs/FRAME-COVERAGE-REPORT.md +8 -3
  41. package/docs/data-display/chat-bubble.tsx +397 -0
  42. package/docs/data-display/timeline.tsx +46 -0
  43. package/docs/data-display/tree.tsx +394 -0
  44. package/docs/data-entry/chat-composer.tsx +464 -0
  45. package/docs/data-entry/chat-suggestion.tsx +301 -0
  46. package/docs/roadmap/ai-chat-components.md +207 -0
  47. package/docs/roadmap/antd-parity.md +154 -0
  48. package/docs/roadmap/badge-tag-chip-count.md +172 -0
  49. package/docs/roadmap/list-masonry.md +159 -0
  50. package/docs/roadmap/parity-audit-data-display-feedback.md +567 -0
  51. package/docs/roadmap/parity-audit-data-entry.md +344 -0
  52. package/docs/roadmap/parity-audit-layout-navigation-general.md +464 -0
  53. package/docs/roadmap/parity-backlog.md +79 -0
  54. package/docs/roadmap/tree-components.md +151 -0
  55. package/docs/showcase/table-tree-rows.tsx +4 -4
  56. package/package.json +5 -3
  57. package/dist/components/data-display/tree-list.d.ts +0 -13
  58. package/dist/components/data-display/tree-list.js +0 -26
  59. package/docs/data-display/tree-list.tsx +0 -107
@@ -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 TreeListProp: {
2215
+ readonly ChatBubblePlacementProp: {
2216
2216
  readonly group: "data-display";
2217
- readonly file: "components/data-display/tree-list.tsx";
2218
- readonly vocabulary: readonly ["ClassNameProp"];
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. */
@@ -2570,10 +2570,152 @@ const COMPONENT_PROP_REGISTRY = {
2570
2570
  }
2571
2571
  ]
2572
2572
  },
2573
- TreeListProp: {
2573
+ ChatBubblePlacementProp: {
2574
2574
  group: "data-display",
2575
- file: "components/data-display/tree-list.tsx",
2576
- vocabulary: ["ClassNameProp"]
2575
+ file: "components/data-display.prop.ts",
2576
+ vocabulary: [
2577
+ {
2578
+ field: "placement",
2579
+ local: true,
2580
+ 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.'
2581
+ }
2582
+ ]
2583
+ },
2584
+ ChatBubbleVariantProp: {
2585
+ group: "data-display",
2586
+ file: "components/data-display.prop.ts",
2587
+ vocabulary: [
2588
+ {
2589
+ field: "variant",
2590
+ local: true,
2591
+ 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."
2592
+ }
2593
+ ]
2594
+ },
2595
+ ChatBubbleToneProp: {
2596
+ group: "data-display",
2597
+ file: "components/data-display.prop.ts",
2598
+ vocabulary: ["ToneProp"]
2599
+ },
2600
+ ChatBubbleTypingProp: {
2601
+ group: "data-display",
2602
+ file: "components/data-display.prop.ts",
2603
+ vocabulary: [
2604
+ {
2605
+ field: "typing",
2606
+ local: true,
2607
+ 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)."
2608
+ }
2609
+ ]
2610
+ },
2611
+ ChatBubbleProp: {
2612
+ group: "data-display",
2613
+ file: "components/data-display.prop.ts",
2614
+ vocabulary: [
2615
+ "ChildrenProp",
2616
+ "SizeProp",
2617
+ "ToneProp",
2618
+ "PendingProp",
2619
+ "ClassNameProp",
2620
+ "IdProp",
2621
+ {
2622
+ field: "placement",
2623
+ local: true,
2624
+ reason: "See ChatBubblePlacementProp, the conversation-side vocabulary."
2625
+ },
2626
+ {
2627
+ field: "variant",
2628
+ local: true,
2629
+ reason: "See ChatBubbleVariantProp, the message-body treatment vocabulary."
2630
+ },
2631
+ {
2632
+ field: "avatar",
2633
+ local: true,
2634
+ 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."
2635
+ },
2636
+ {
2637
+ field: "header",
2638
+ local: true,
2639
+ 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."
2640
+ },
2641
+ {
2642
+ field: "footer",
2643
+ local: true,
2644
+ reason: "Line below the body (timestamp, per-message actions). Not FooterProp, which is a page-level action bar."
2645
+ },
2646
+ {
2647
+ field: "typing",
2648
+ local: true,
2649
+ reason: "See ChatBubbleTypingProp, the stream-in animation vocabulary."
2650
+ }
2651
+ ]
2652
+ },
2653
+ ChatMessageProp: {
2654
+ group: "data-display",
2655
+ file: "components/data-display.prop.ts",
2656
+ vocabulary: [
2657
+ "IdProp",
2658
+ "ChildrenProp",
2659
+ {
2660
+ field: "role",
2661
+ local: true,
2662
+ reason: 'Key into ChatBubbleList\'s `roles` map ("user" | "assistant" | "system" | a product\'s own). A data field, not the ARIA `role` attribute.'
2663
+ },
2664
+ {
2665
+ field: "content",
2666
+ local: true,
2667
+ reason: "The message body. Spelled `content` rather than `children` because a data item in an array is not a JSX child."
2668
+ }
2669
+ ]
2670
+ },
2671
+ ChatBubbleListProp: {
2672
+ group: "data-display",
2673
+ file: "components/data-display.prop.ts",
2674
+ vocabulary: [
2675
+ "LabelProp",
2676
+ "ClassNameProp",
2677
+ "IdProp",
2678
+ {
2679
+ field: "items",
2680
+ local: true,
2681
+ reason: "Consumer-supplied messages in conversation order (see ChatMessageProp)."
2682
+ },
2683
+ {
2684
+ field: "roles",
2685
+ local: true,
2686
+ 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."
2687
+ },
2688
+ {
2689
+ field: "autoScroll",
2690
+ local: true,
2691
+ 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.'
2692
+ }
2693
+ ]
2694
+ },
2695
+ TreeNodeProp: {
2696
+ group: "data-display",
2697
+ file: "components/data-display.prop.ts",
2698
+ vocabulary: [
2699
+ { field: "icon", local: true, reason: "Per-node glyph drawn when Tree's showIcon is on." },
2700
+ {
2701
+ field: "children",
2702
+ local: true,
2703
+ reason: "The node's own child nodes \u2014 the hierarchy itself, not a slot."
2704
+ }
2705
+ ]
2706
+ },
2707
+ TreeProp: {
2708
+ group: "data-display",
2709
+ file: "components/data-display.prop.ts",
2710
+ vocabulary: [
2711
+ "ValueProp",
2712
+ "DefaultValueProp",
2713
+ "OnValueChangeProp",
2714
+ "DisabledProp",
2715
+ "SizeProp",
2716
+ "ClassNameProp",
2717
+ "IdProp"
2718
+ ]
2577
2719
  },
2578
2720
  CardProp: {
2579
2721
  group: "data-display",
@@ -3010,6 +3152,63 @@ const COMPONENT_PROP_REGISTRY = {
3010
3152
  reason: "Forwarded MasterDetail stacking threshold override."
3011
3153
  }
3012
3154
  ]
3155
+ },
3156
+ ChatComposerSubmitTypeProp: {
3157
+ group: "data-entry",
3158
+ file: "components/data-entry.prop.ts",
3159
+ vocabulary: []
3160
+ },
3161
+ ChatComposerProp: {
3162
+ group: "data-entry",
3163
+ file: "components/data-entry.prop.ts",
3164
+ vocabulary: [
3165
+ "ValueProp",
3166
+ "DefaultValueProp",
3167
+ "OnValueChangeProp",
3168
+ "PlaceholderProp",
3169
+ "DisabledProp",
3170
+ "PendingProp",
3171
+ "SizeProp",
3172
+ "ControlStatusProp",
3173
+ "NameProp",
3174
+ "IdProp",
3175
+ "ClassNameProp"
3176
+ ]
3177
+ },
3178
+ ChatSuggestionItemProp: {
3179
+ group: "data-entry",
3180
+ file: "components/data-entry.prop.ts",
3181
+ vocabulary: ["ValueProp", "LabelProp", "DisabledProp"]
3182
+ },
3183
+ ChatSuggestionRenderProp: {
3184
+ group: "data-entry",
3185
+ file: "components/data-entry.prop.ts",
3186
+ vocabulary: [
3187
+ {
3188
+ field: "onTrigger",
3189
+ local: true,
3190
+ reason: "Render-prop callback the composer calls to re-read the caret; not a value change."
3191
+ },
3192
+ {
3193
+ field: "onKeyDown",
3194
+ local: true,
3195
+ reason: "Render-prop keydown forwarder \u2014 the composer's own DOM handler, not a state axis."
3196
+ }
3197
+ ]
3198
+ },
3199
+ ChatSuggestionProp: {
3200
+ group: "data-entry",
3201
+ file: "components/data-entry.prop.ts",
3202
+ vocabulary: [
3203
+ "OnValueChangeProp",
3204
+ "OpenProp",
3205
+ "DefaultOpenProp",
3206
+ "OnOpenChangeProp",
3207
+ "ChildrenProp",
3208
+ "EmptyMessageProp",
3209
+ "IdProp",
3210
+ "ClassNameProp"
3211
+ ]
3013
3212
  }
3014
3213
  };
3015
3214
  const PROP_ALIASES_FORBIDDEN = {
@@ -1840,6 +1840,13 @@
1840
1840
  }
1841
1841
  }
1842
1842
 
1843
+ @layer components {
1844
+
1845
+ .ui-chat-suggestion-panel {
1846
+ --popover-surface-inline-size: var(--radix-popover-trigger-width);
1847
+ }
1848
+ }
1849
+
1843
1850
  @layer components {
1844
1851
 
1845
1852
  .ui-tree-select-popover {