@treeui/mcp 0.1.1 → 0.3.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/{chunk-LDH2IV6Q.js → chunk-QO4S3UWW.js} +1113 -377
- package/dist/cli.cjs +1113 -377
- package/dist/cli.js +1 -1
- package/dist/index.cjs +1116 -382
- package/dist/index.js +4 -6
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -47,9 +47,9 @@ module.exports = __toCommonJS(index_exports);
|
|
|
47
47
|
|
|
48
48
|
// src/generated/treeui.catalog.json
|
|
49
49
|
var treeui_catalog_default = {
|
|
50
|
-
generatedAt: "2026-
|
|
50
|
+
generatedAt: "2026-07-15T22:47:49.302Z",
|
|
51
51
|
packageName: "@treeui/vue",
|
|
52
|
-
packageVersion: "0.
|
|
52
|
+
packageVersion: "0.13.0",
|
|
53
53
|
decisionGuides: [
|
|
54
54
|
{
|
|
55
55
|
id: "single-choice",
|
|
@@ -247,6 +247,50 @@ var treeui_catalog_default = {
|
|
|
247
247
|
notes: []
|
|
248
248
|
}
|
|
249
249
|
]
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
id: "data-viz-choice",
|
|
253
|
+
question: "Visualize numeric data",
|
|
254
|
+
options: [
|
|
255
|
+
{
|
|
256
|
+
use: "TStat",
|
|
257
|
+
when: [
|
|
258
|
+
"The story is a single headline number, optionally with a trend and delta.",
|
|
259
|
+
"It is not a plot \u2014 prefer the number over a chart when one value says it."
|
|
260
|
+
],
|
|
261
|
+
notes: []
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
use: "TSparkline",
|
|
265
|
+
when: [
|
|
266
|
+
"You want an inline micro-trend next to a value, in a table cell, or in text.",
|
|
267
|
+
"No axes, legend, or tooltip are needed."
|
|
268
|
+
],
|
|
269
|
+
notes: []
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
use: "TChart",
|
|
273
|
+
when: [
|
|
274
|
+
"You need line, area, or bar plots with axes, gridlines, legend, and hover tooltip.",
|
|
275
|
+
"There are one or more series over shared categories."
|
|
276
|
+
],
|
|
277
|
+
notes: []
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
use: "TDonutChart",
|
|
281
|
+
when: [
|
|
282
|
+
"The data is a part-of-whole breakdown (donut or pie)."
|
|
283
|
+
],
|
|
284
|
+
notes: []
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
use: "TProgress",
|
|
288
|
+
when: [
|
|
289
|
+
"You are showing completion toward a single target, not a distribution or trend."
|
|
290
|
+
],
|
|
291
|
+
notes: []
|
|
292
|
+
}
|
|
293
|
+
]
|
|
250
294
|
}
|
|
251
295
|
],
|
|
252
296
|
recipes: [
|
|
@@ -296,11 +340,28 @@ var treeui_catalog_default = {
|
|
|
296
340
|
"Set end `min` from the selected start time when appropriate."
|
|
297
341
|
]
|
|
298
342
|
},
|
|
343
|
+
{
|
|
344
|
+
id: "app-shell",
|
|
345
|
+
name: "Full-viewport application shell",
|
|
346
|
+
useWhen: [
|
|
347
|
+
"The app needs a header plus side navigation that fills the whole screen and adapts to mobile.",
|
|
348
|
+
"The layout must use the full page width on large monitors, not a centered column."
|
|
349
|
+
],
|
|
350
|
+
compose: [
|
|
351
|
+
"TAppShell",
|
|
352
|
+
"TNavMenu"
|
|
353
|
+
],
|
|
354
|
+
notes: [
|
|
355
|
+
"`TAppShell` orchestrates the header, sidebar, and fluid content in one component; put a `TNavMenu` in its `sidebar` slot and it inherits collapsed state automatically.",
|
|
356
|
+
"Leave `mobile` unset to auto-switch at `breakpoint` (default 768px), or bind it to force mobile; the sidebar becomes an off-canvas drawer with a header menu button.",
|
|
357
|
+
"Mount it at the app root. Wrap only inner regions in `TContainer` if a specific area needs a constrained reading width."
|
|
358
|
+
]
|
|
359
|
+
},
|
|
299
360
|
{
|
|
300
361
|
id: "sidebar-shell",
|
|
301
362
|
name: "Sidebar application shell",
|
|
302
363
|
useWhen: [
|
|
303
|
-
"The screen needs persistent section navigation."
|
|
364
|
+
"The screen needs persistent section navigation and you are composing the shell by hand."
|
|
304
365
|
],
|
|
305
366
|
compose: [
|
|
306
367
|
"TSidebar",
|
|
@@ -309,7 +370,8 @@ var treeui_catalog_default = {
|
|
|
309
370
|
"TContainer"
|
|
310
371
|
],
|
|
311
372
|
notes: [
|
|
312
|
-
"Let `TNavMenu` inherit collapsed state from `TSidebar` when possible."
|
|
373
|
+
"Let `TNavMenu` inherit collapsed state from `TSidebar` when possible.",
|
|
374
|
+
"Prefer `TAppShell` (recipe `app-shell`) when you also need full-viewport sizing and a responsive mobile drawer."
|
|
313
375
|
]
|
|
314
376
|
},
|
|
315
377
|
{
|
|
@@ -407,15 +469,38 @@ var treeui_catalog_default = {
|
|
|
407
469
|
id: "chart-surface",
|
|
408
470
|
name: "Chart surface",
|
|
409
471
|
useWhen: [
|
|
410
|
-
"A screen needs data visualization
|
|
472
|
+
"A screen needs data visualization inside a framed, titled surface."
|
|
411
473
|
],
|
|
412
474
|
compose: [
|
|
413
475
|
"TCard",
|
|
414
476
|
"TStack",
|
|
415
|
-
"
|
|
477
|
+
"TChart",
|
|
478
|
+
"TSelect"
|
|
416
479
|
],
|
|
417
480
|
notes: [
|
|
418
|
-
"
|
|
481
|
+
"Prefer the native TChart / TDonutChart / TSparkline \u2014 no external charting library is required.",
|
|
482
|
+
"Use TreeUI for the surrounding surface, headings, badges, range filters, and empty/loading states.",
|
|
483
|
+
"TChart has its own loading and empty slots; you can still wrap it in TCard for the frame.",
|
|
484
|
+
"Only reach for an external chart engine for chart types TreeUI does not cover yet (e.g. scatter, heatmap)."
|
|
485
|
+
]
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
id: "metric-dashboard",
|
|
489
|
+
name: "Metric dashboard",
|
|
490
|
+
useWhen: [
|
|
491
|
+
"A dashboard shows KPIs alongside trends and breakdowns."
|
|
492
|
+
],
|
|
493
|
+
compose: [
|
|
494
|
+
"TStat",
|
|
495
|
+
"TSparkline",
|
|
496
|
+
"TChart",
|
|
497
|
+
"TDonutChart",
|
|
498
|
+
"TGrid"
|
|
499
|
+
],
|
|
500
|
+
notes: [
|
|
501
|
+
"Lead with TStat tiles; embed a TSparkline in a stat's meta slot for the inline trend.",
|
|
502
|
+
"Use one TChart for the main time series and a TDonutChart for a part-of-whole split.",
|
|
503
|
+
"Keep series colors stable across the dashboard \u2014 rely on the --tree-color-chart-* order, do not remap by rank."
|
|
419
504
|
]
|
|
420
505
|
},
|
|
421
506
|
{
|
|
@@ -490,7 +575,7 @@ var treeui_catalog_default = {
|
|
|
490
575
|
},
|
|
491
576
|
globalRules: [
|
|
492
577
|
"Always import `@treeui/vue/style.css` once in the consuming application.",
|
|
493
|
-
"
|
|
578
|
+
"All components use the `T<Name>` export prefix; there are no `Tree<Name>` aliases.",
|
|
494
579
|
"Form controls use `modelValue` + `update:modelValue`.",
|
|
495
580
|
"Overlay-style components generally support controlled and uncontrolled open state.",
|
|
496
581
|
"Date-only values use `YYYY-MM-DD`.",
|
|
@@ -565,17 +650,27 @@ var treeui_catalog_default = {
|
|
|
565
650
|
"Use `accept`, `multiple`, and size limits in the app layer to constrain uploads."
|
|
566
651
|
]
|
|
567
652
|
},
|
|
653
|
+
TAppShell: {
|
|
654
|
+
required: [],
|
|
655
|
+
notes: [
|
|
656
|
+
"Mount at the app root; it fills the viewport (100dvh, full width) and scrolls its content region independently.",
|
|
657
|
+
"Put navigation in the `sidebar` slot (e.g. `TNavMenu`) \u2014 it inherits collapsed state from the shell provider like `TSidebar`.",
|
|
658
|
+
"Leave `mobile` unset to auto-switch to an off-canvas drawer at `breakpoint`, or bind `mobile` to control it explicitly.",
|
|
659
|
+
"Use `v-model:collapsed` for the desktop rail and `v-model:sidebarOpen` for the mobile drawer when the app persists layout state."
|
|
660
|
+
]
|
|
661
|
+
},
|
|
568
662
|
TSidebar: {
|
|
569
663
|
required: [],
|
|
570
664
|
notes: [
|
|
571
665
|
"Pair with `TNavMenu` for app-section navigation.",
|
|
572
|
-
"Use controlled `collapsed` state when the app shell persists layout preferences."
|
|
666
|
+
"Use controlled `collapsed` state when the app shell persists layout preferences.",
|
|
667
|
+
"Prefer `TAppShell` when you also want full-viewport sizing, a top header, and a responsive mobile drawer."
|
|
573
668
|
]
|
|
574
669
|
},
|
|
575
670
|
TNavMenu: {
|
|
576
671
|
required: [],
|
|
577
672
|
notes: [
|
|
578
|
-
"When nested inside `TSidebar`, `collapsed` can be inherited from the sidebar provider."
|
|
673
|
+
"When nested inside `TSidebar` or `TAppShell`, `collapsed` can be inherited from the sidebar provider."
|
|
579
674
|
]
|
|
580
675
|
},
|
|
581
676
|
TTreeView: {
|
|
@@ -609,6 +704,32 @@ var treeui_catalog_default = {
|
|
|
609
704
|
"Use `href` for native links.",
|
|
610
705
|
"Use `to` when the app has vue-router and breadcrumb items should render RouterLink."
|
|
611
706
|
]
|
|
707
|
+
},
|
|
708
|
+
TChart: {
|
|
709
|
+
required: [],
|
|
710
|
+
notes: [
|
|
711
|
+
"Pass `series` as `{ name, data, color? }[]` and `labels` as a parallel `string[]` (one label per data index).",
|
|
712
|
+
"Set `type` to `line`, `area`, or `bar`; use `stacked` only with `bar`.",
|
|
713
|
+
"Series colors come from `--tree-color-chart-1..8` in order; pass `color` per series to override \u2014 do not remap colors when the series set changes.",
|
|
714
|
+
"Pass `valueFormat: (n) => string` to format axis and tooltip values (currency, compact, etc.).",
|
|
715
|
+
"No charting library or provider is required \u2014 the SVG and geometry are built in."
|
|
716
|
+
]
|
|
717
|
+
},
|
|
718
|
+
TSparkline: {
|
|
719
|
+
required: [],
|
|
720
|
+
notes: [
|
|
721
|
+
"Pass `data` as `number[]`; there are no axes, legend, or tooltip by design.",
|
|
722
|
+
"Size it with `width`/`height`; use it inside `TStat`, table cells, or text.",
|
|
723
|
+
"Always keep a visible number nearby \u2014 a sparkline supplements a value, it does not replace it."
|
|
724
|
+
]
|
|
725
|
+
},
|
|
726
|
+
TDonutChart: {
|
|
727
|
+
required: [],
|
|
728
|
+
notes: [
|
|
729
|
+
"Pass `segments` as `{ label, value, color? }[]`; non-positive values are dropped.",
|
|
730
|
+
"Set `thickness: 0` for a full pie; keep the default for a donut with a center readout.",
|
|
731
|
+
"Use the `center` slot (donut only) for a custom center; otherwise it shows the total or the hovered slice."
|
|
732
|
+
]
|
|
612
733
|
}
|
|
613
734
|
},
|
|
614
735
|
appPatterns: {
|
|
@@ -622,6 +743,9 @@ var treeui_catalog_default = {
|
|
|
622
743
|
commonCompositions: [
|
|
623
744
|
"TFormField + input-like control",
|
|
624
745
|
"TGrid + TStat",
|
|
746
|
+
"TStat + TSparkline",
|
|
747
|
+
"TCard + TChart",
|
|
748
|
+
"TAppShell + TNavMenu",
|
|
625
749
|
"TSidebar + TNavMenu",
|
|
626
750
|
"TTable + TPagination",
|
|
627
751
|
"TPricing + TPricingCard"
|
|
@@ -631,16 +755,13 @@ var treeui_catalog_default = {
|
|
|
631
755
|
components: [
|
|
632
756
|
{
|
|
633
757
|
name: "TAccordion",
|
|
634
|
-
|
|
635
|
-
aliases: [
|
|
636
|
-
"TreeAccordion"
|
|
637
|
-
],
|
|
758
|
+
aliases: [],
|
|
638
759
|
package: "@treeui/vue",
|
|
639
760
|
kind: "disclosure",
|
|
640
761
|
category: "Data Display",
|
|
641
762
|
status: "available",
|
|
642
763
|
purpose: "Organized content sections with expandable/collapsible behavior. Supports single-open and multi-open modes.\n",
|
|
643
|
-
sourceFile: "packages/vue/src/components/
|
|
764
|
+
sourceFile: "packages/vue/src/components/TAccordion.vue",
|
|
644
765
|
storyFile: "apps/docs/src/stories/Accordion.stories.ts",
|
|
645
766
|
storyTitle: "Components/Data Display/Accordion",
|
|
646
767
|
manifestFile: "docs/ai/COMPONENTS/accordion.yaml",
|
|
@@ -687,16 +808,13 @@ var treeui_catalog_default = {
|
|
|
687
808
|
},
|
|
688
809
|
{
|
|
689
810
|
name: "TAlert",
|
|
690
|
-
|
|
691
|
-
aliases: [
|
|
692
|
-
"TreeAlert"
|
|
693
|
-
],
|
|
811
|
+
aliases: [],
|
|
694
812
|
package: "@treeui/vue",
|
|
695
813
|
kind: "feedback",
|
|
696
814
|
category: "Feedback",
|
|
697
815
|
status: "available",
|
|
698
816
|
purpose: "Inline status banner for info, success, warning, and danger messages.",
|
|
699
|
-
sourceFile: "packages/vue/src/components/
|
|
817
|
+
sourceFile: "packages/vue/src/components/TAlert.vue",
|
|
700
818
|
storyFile: "apps/docs/src/stories/Alert.stories.ts",
|
|
701
819
|
storyTitle: "Components/Feedback/Alert",
|
|
702
820
|
manifestFile: "docs/ai/COMPONENTS/alert.yaml",
|
|
@@ -714,7 +832,7 @@ var treeui_catalog_default = {
|
|
|
714
832
|
},
|
|
715
833
|
{
|
|
716
834
|
name: "size",
|
|
717
|
-
type: "
|
|
835
|
+
type: "TSize",
|
|
718
836
|
default: "md",
|
|
719
837
|
values: [
|
|
720
838
|
"sm",
|
|
@@ -789,15 +907,217 @@ var treeui_catalog_default = {
|
|
|
789
907
|
recipes: []
|
|
790
908
|
},
|
|
791
909
|
{
|
|
792
|
-
name: "
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
910
|
+
name: "TAppShell",
|
|
911
|
+
aliases: [],
|
|
912
|
+
package: "@treeui/vue",
|
|
913
|
+
kind: "layout",
|
|
914
|
+
category: "Layout",
|
|
915
|
+
status: "available",
|
|
916
|
+
purpose: "Full-viewport application shell with a top header, a persistent side navigation, and a fluid content area that collapses the sidebar into an off-canvas drawer on small screens.",
|
|
917
|
+
sourceFile: "packages/vue/src/components/TAppShell.vue",
|
|
918
|
+
storyFile: "apps/docs/src/stories/AppShell.stories.ts",
|
|
919
|
+
storyTitle: "Components/Layout/AppShell",
|
|
920
|
+
manifestFile: "docs/ai/COMPONENTS/app-shell.yaml",
|
|
921
|
+
props: [
|
|
922
|
+
{
|
|
923
|
+
name: "as",
|
|
924
|
+
type: "string",
|
|
925
|
+
default: "div"
|
|
926
|
+
},
|
|
927
|
+
{
|
|
928
|
+
name: "side",
|
|
929
|
+
type: "TSidebarSide",
|
|
930
|
+
default: "left",
|
|
931
|
+
values: [
|
|
932
|
+
"left",
|
|
933
|
+
"right"
|
|
934
|
+
]
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
name: "sidebarWidth",
|
|
938
|
+
type: "string",
|
|
939
|
+
default: "17.5rem"
|
|
940
|
+
},
|
|
941
|
+
{
|
|
942
|
+
name: "collapsedWidth",
|
|
943
|
+
type: "string",
|
|
944
|
+
default: "4.75rem"
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
name: "collapsible",
|
|
948
|
+
type: "boolean",
|
|
949
|
+
default: "false"
|
|
950
|
+
},
|
|
951
|
+
{
|
|
952
|
+
name: "collapsed",
|
|
953
|
+
type: "boolean",
|
|
954
|
+
default: "undefined"
|
|
955
|
+
},
|
|
956
|
+
{
|
|
957
|
+
name: "defaultCollapsed",
|
|
958
|
+
type: "boolean",
|
|
959
|
+
default: "false"
|
|
960
|
+
},
|
|
961
|
+
{
|
|
962
|
+
name: "mobile",
|
|
963
|
+
type: "boolean",
|
|
964
|
+
default: "undefined"
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
name: "breakpoint",
|
|
968
|
+
type: "string",
|
|
969
|
+
default: "768px"
|
|
970
|
+
},
|
|
971
|
+
{
|
|
972
|
+
name: "sidebarOpen",
|
|
973
|
+
type: "boolean",
|
|
974
|
+
default: "undefined"
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
name: "defaultSidebarOpen",
|
|
978
|
+
type: "boolean",
|
|
979
|
+
default: "false"
|
|
980
|
+
},
|
|
981
|
+
{
|
|
982
|
+
name: "closeOnEscape",
|
|
983
|
+
type: "boolean",
|
|
984
|
+
default: "true"
|
|
985
|
+
},
|
|
986
|
+
{
|
|
987
|
+
name: "closeOnOverlay",
|
|
988
|
+
type: "boolean",
|
|
989
|
+
default: "true"
|
|
990
|
+
},
|
|
991
|
+
{
|
|
992
|
+
name: "showMenuButton",
|
|
993
|
+
type: "boolean",
|
|
994
|
+
default: "true"
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
name: "menuLabel",
|
|
998
|
+
type: "string",
|
|
999
|
+
default: "Open menu"
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
name: "closeLabel",
|
|
1003
|
+
type: "string",
|
|
1004
|
+
default: "Close menu"
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
name: "sidebarLabel",
|
|
1008
|
+
type: "string",
|
|
1009
|
+
default: "Sidebar"
|
|
1010
|
+
}
|
|
796
1011
|
],
|
|
1012
|
+
events: [
|
|
1013
|
+
{
|
|
1014
|
+
name: "update:collapsed"
|
|
1015
|
+
},
|
|
1016
|
+
{
|
|
1017
|
+
name: "collapse-change"
|
|
1018
|
+
},
|
|
1019
|
+
{
|
|
1020
|
+
name: "update:sidebarOpen"
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
name: "sidebar-open-change"
|
|
1024
|
+
}
|
|
1025
|
+
],
|
|
1026
|
+
slots: [
|
|
1027
|
+
{
|
|
1028
|
+
name: "header"
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
name: "sidebar"
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
name: "default"
|
|
1035
|
+
},
|
|
1036
|
+
{
|
|
1037
|
+
name: "menu-icon"
|
|
1038
|
+
}
|
|
1039
|
+
],
|
|
1040
|
+
a11y: [
|
|
1041
|
+
"role: dialog",
|
|
1042
|
+
"aria_modal: true",
|
|
1043
|
+
"focus_trap: true",
|
|
1044
|
+
"restores_focus_on_close: true",
|
|
1045
|
+
"escape_closes_when_enabled: true",
|
|
1046
|
+
"menu_button_aria_expanded: true",
|
|
1047
|
+
"menu_button_aria_controls_drawer: true",
|
|
1048
|
+
"sidebar_labelled_by_sidebar_label: true"
|
|
1049
|
+
],
|
|
1050
|
+
behavior: [
|
|
1051
|
+
"fills_viewport_full_width_and_height: true",
|
|
1052
|
+
"header_spans_full_width_above_sidebar_and_content: true",
|
|
1053
|
+
"content_area_scrolls_independently: true",
|
|
1054
|
+
"auto_switches_to_mobile_at_breakpoint_when_mobile_undefined: true",
|
|
1055
|
+
"mobile_prop_forces_mobile_mode: true",
|
|
1056
|
+
"mobile_sidebar_becomes_off_canvas_drawer: true",
|
|
1057
|
+
"auto_menu_button_in_header_on_mobile: true",
|
|
1058
|
+
"controlled_and_uncontrolled_collapsed_state: true",
|
|
1059
|
+
"controlled_and_uncontrolled_sidebar_open_state: true",
|
|
1060
|
+
"provides_collapsed_state_to_descendants: true",
|
|
1061
|
+
"drawer_reports_collapsed_false_to_descendants_and_slots: true",
|
|
1062
|
+
"left_and_right_variants: true",
|
|
1063
|
+
"locks_body_scroll_while_drawer_open: true",
|
|
1064
|
+
"overlay_click_closes_when_enabled: true",
|
|
1065
|
+
"exposes_slot_props_with_mobile_collapsed_and_toggles: true"
|
|
1066
|
+
],
|
|
1067
|
+
selection: {
|
|
1068
|
+
keywords: [
|
|
1069
|
+
"app shell",
|
|
1070
|
+
"layout",
|
|
1071
|
+
"dashboard",
|
|
1072
|
+
"admin",
|
|
1073
|
+
"header sidebar",
|
|
1074
|
+
"full screen",
|
|
1075
|
+
"responsive shell",
|
|
1076
|
+
"off-canvas"
|
|
1077
|
+
],
|
|
1078
|
+
useWhen: [
|
|
1079
|
+
"You need a full-viewport application layout with a header, a side navigation, and a fluid content area.",
|
|
1080
|
+
"The layout should use the entire page width (not a centered max-width) and switch the sidebar to an off-canvas drawer on small screens."
|
|
1081
|
+
],
|
|
1082
|
+
avoidWhen: [
|
|
1083
|
+
"You only need one region (just a top bar, or just a side rail) \u2014 compose TNavbar or TSidebar directly.",
|
|
1084
|
+
"The page content should be centered with a readable max width \u2014 use TContainer inside the shell content instead."
|
|
1085
|
+
],
|
|
1086
|
+
alternatives: [
|
|
1087
|
+
{
|
|
1088
|
+
component: "TSidebar",
|
|
1089
|
+
when: "You want a standalone collapsible side rail without the header/content orchestration or responsive drawer."
|
|
1090
|
+
},
|
|
1091
|
+
{
|
|
1092
|
+
component: "TNavbar",
|
|
1093
|
+
when: "You only need the top application bar."
|
|
1094
|
+
},
|
|
1095
|
+
{
|
|
1096
|
+
component: "TDrawer",
|
|
1097
|
+
when: "You need a general temporary overlay panel rather than the shell's responsive navigation."
|
|
1098
|
+
}
|
|
1099
|
+
]
|
|
1100
|
+
},
|
|
1101
|
+
setup: {
|
|
1102
|
+
required: [],
|
|
1103
|
+
notes: [
|
|
1104
|
+
"Mount at the app root; it fills the viewport (100dvh, full width) and scrolls its content region independently.",
|
|
1105
|
+
"Put navigation in the `sidebar` slot (e.g. `TNavMenu`) \u2014 it inherits collapsed state from the shell provider like `TSidebar`.",
|
|
1106
|
+
"Leave `mobile` unset to auto-switch to an off-canvas drawer at `breakpoint`, or bind `mobile` to control it explicitly.",
|
|
1107
|
+
"Use `v-model:collapsed` for the desktop rail and `v-model:sidebarOpen` for the mobile drawer when the app persists layout state."
|
|
1108
|
+
]
|
|
1109
|
+
},
|
|
1110
|
+
recipes: [
|
|
1111
|
+
"app-shell"
|
|
1112
|
+
]
|
|
1113
|
+
},
|
|
1114
|
+
{
|
|
1115
|
+
name: "TAvatar",
|
|
1116
|
+
aliases: [],
|
|
797
1117
|
package: "@treeui/vue",
|
|
798
1118
|
category: "Data Display",
|
|
799
1119
|
description: "User image with fallback initials and optional status indicator dot.",
|
|
800
|
-
sourceFile: "packages/vue/src/components/
|
|
1120
|
+
sourceFile: "packages/vue/src/components/TAvatar.vue",
|
|
801
1121
|
storyFile: "apps/docs/src/stories/Avatar.stories.ts",
|
|
802
1122
|
storyTitle: "Components/Data Display/Avatar",
|
|
803
1123
|
manifestFile: "docs/ai/COMPONENTS/avatar.yaml",
|
|
@@ -822,7 +1142,7 @@ var treeui_catalog_default = {
|
|
|
822
1142
|
},
|
|
823
1143
|
{
|
|
824
1144
|
name: "size",
|
|
825
|
-
type: "
|
|
1145
|
+
type: "TSize",
|
|
826
1146
|
default: "md",
|
|
827
1147
|
values: [
|
|
828
1148
|
"sm",
|
|
@@ -832,7 +1152,7 @@ var treeui_catalog_default = {
|
|
|
832
1152
|
},
|
|
833
1153
|
{
|
|
834
1154
|
name: "status",
|
|
835
|
-
type: "
|
|
1155
|
+
type: "TAvatarStatus",
|
|
836
1156
|
required: false,
|
|
837
1157
|
values: [
|
|
838
1158
|
"online",
|
|
@@ -870,23 +1190,20 @@ var treeui_catalog_default = {
|
|
|
870
1190
|
},
|
|
871
1191
|
{
|
|
872
1192
|
name: "TBadge",
|
|
873
|
-
|
|
874
|
-
aliases: [
|
|
875
|
-
"TreeBadge"
|
|
876
|
-
],
|
|
1193
|
+
aliases: [],
|
|
877
1194
|
package: "@treeui/vue",
|
|
878
1195
|
kind: "display",
|
|
879
1196
|
category: "Data Display",
|
|
880
1197
|
status: "available",
|
|
881
1198
|
purpose: "Compact status or metadata label with optional icon.",
|
|
882
|
-
sourceFile: "packages/vue/src/components/
|
|
1199
|
+
sourceFile: "packages/vue/src/components/TBadge.vue",
|
|
883
1200
|
storyFile: "apps/docs/src/stories/Badge.stories.ts",
|
|
884
1201
|
storyTitle: "Components/Data Display/Badge",
|
|
885
1202
|
manifestFile: "docs/ai/COMPONENTS/badge.yaml",
|
|
886
1203
|
props: [
|
|
887
1204
|
{
|
|
888
1205
|
name: "variant",
|
|
889
|
-
type: "
|
|
1206
|
+
type: "TVariant",
|
|
890
1207
|
default: "soft",
|
|
891
1208
|
values: [
|
|
892
1209
|
"solid",
|
|
@@ -898,7 +1215,7 @@ var treeui_catalog_default = {
|
|
|
898
1215
|
},
|
|
899
1216
|
{
|
|
900
1217
|
name: "tone",
|
|
901
|
-
type: "
|
|
1218
|
+
type: "TBadgeTone",
|
|
902
1219
|
default: "neutral",
|
|
903
1220
|
values: [
|
|
904
1221
|
"neutral",
|
|
@@ -911,7 +1228,7 @@ var treeui_catalog_default = {
|
|
|
911
1228
|
},
|
|
912
1229
|
{
|
|
913
1230
|
name: "size",
|
|
914
|
-
type: "
|
|
1231
|
+
type: "TSize",
|
|
915
1232
|
default: "md",
|
|
916
1233
|
values: [
|
|
917
1234
|
"sm",
|
|
@@ -950,16 +1267,13 @@ var treeui_catalog_default = {
|
|
|
950
1267
|
},
|
|
951
1268
|
{
|
|
952
1269
|
name: "TBreadcrumb",
|
|
953
|
-
|
|
954
|
-
aliases: [
|
|
955
|
-
"TreeBreadcrumb"
|
|
956
|
-
],
|
|
1270
|
+
aliases: [],
|
|
957
1271
|
package: "@treeui/vue",
|
|
958
1272
|
kind: "navigation",
|
|
959
1273
|
category: "Navigation",
|
|
960
1274
|
status: "available",
|
|
961
1275
|
purpose: "Hierarchical navigation trail showing the user's current location within a site or application.",
|
|
962
|
-
sourceFile: "packages/vue/src/components/
|
|
1276
|
+
sourceFile: "packages/vue/src/components/TBreadcrumb.vue",
|
|
963
1277
|
storyFile: "apps/docs/src/stories/Breadcrumb.stories.ts",
|
|
964
1278
|
storyTitle: "Components/Navigation/Breadcrumb",
|
|
965
1279
|
manifestFile: "docs/ai/COMPONENTS/breadcrumb.yaml",
|
|
@@ -1002,16 +1316,13 @@ var treeui_catalog_default = {
|
|
|
1002
1316
|
},
|
|
1003
1317
|
{
|
|
1004
1318
|
name: "TButton",
|
|
1005
|
-
|
|
1006
|
-
aliases: [
|
|
1007
|
-
"TreeButton"
|
|
1008
|
-
],
|
|
1319
|
+
aliases: [],
|
|
1009
1320
|
package: "@treeui/vue",
|
|
1010
1321
|
kind: "primitive",
|
|
1011
1322
|
category: "Actions",
|
|
1012
1323
|
status: "available",
|
|
1013
1324
|
purpose: "Clickable action trigger with variants, sizes, optional polymorphism, and loading state.",
|
|
1014
|
-
sourceFile: "packages/vue/src/components/
|
|
1325
|
+
sourceFile: "packages/vue/src/components/TButton.vue",
|
|
1015
1326
|
storyFile: "apps/docs/src/stories/Button.stories.ts",
|
|
1016
1327
|
storyTitle: "Components/Actions/Button",
|
|
1017
1328
|
manifestFile: "docs/ai/COMPONENTS/button.yaml",
|
|
@@ -1023,7 +1334,7 @@ var treeui_catalog_default = {
|
|
|
1023
1334
|
},
|
|
1024
1335
|
{
|
|
1025
1336
|
name: "variant",
|
|
1026
|
-
type: "
|
|
1337
|
+
type: "TVariant",
|
|
1027
1338
|
default: "solid",
|
|
1028
1339
|
values: [
|
|
1029
1340
|
"solid",
|
|
@@ -1035,7 +1346,7 @@ var treeui_catalog_default = {
|
|
|
1035
1346
|
},
|
|
1036
1347
|
{
|
|
1037
1348
|
name: "size",
|
|
1038
|
-
type: "
|
|
1349
|
+
type: "TSize",
|
|
1039
1350
|
default: "md",
|
|
1040
1351
|
values: [
|
|
1041
1352
|
"sm",
|
|
@@ -1100,16 +1411,13 @@ var treeui_catalog_default = {
|
|
|
1100
1411
|
},
|
|
1101
1412
|
{
|
|
1102
1413
|
name: "TCard",
|
|
1103
|
-
|
|
1104
|
-
aliases: [
|
|
1105
|
-
"TreeCard"
|
|
1106
|
-
],
|
|
1414
|
+
aliases: [],
|
|
1107
1415
|
package: "@treeui/vue",
|
|
1108
1416
|
kind: "layout",
|
|
1109
1417
|
category: "Data Display",
|
|
1110
1418
|
status: "available",
|
|
1111
1419
|
purpose: "Surface container with optional header and footer slots.",
|
|
1112
|
-
sourceFile: "packages/vue/src/components/
|
|
1420
|
+
sourceFile: "packages/vue/src/components/TCard.vue",
|
|
1113
1421
|
storyFile: "apps/docs/src/stories/Card.stories.ts",
|
|
1114
1422
|
storyTitle: "Components/Data Display/Card",
|
|
1115
1423
|
manifestFile: "docs/ai/COMPONENTS/card.yaml",
|
|
@@ -1121,7 +1429,7 @@ var treeui_catalog_default = {
|
|
|
1121
1429
|
},
|
|
1122
1430
|
{
|
|
1123
1431
|
name: "variant",
|
|
1124
|
-
type: "
|
|
1432
|
+
type: "TCardVariant",
|
|
1125
1433
|
default: "outline",
|
|
1126
1434
|
values: [
|
|
1127
1435
|
"outline",
|
|
@@ -1132,7 +1440,7 @@ var treeui_catalog_default = {
|
|
|
1132
1440
|
},
|
|
1133
1441
|
{
|
|
1134
1442
|
name: "size",
|
|
1135
|
-
type: "
|
|
1443
|
+
type: "TSize",
|
|
1136
1444
|
default: "md",
|
|
1137
1445
|
values: [
|
|
1138
1446
|
"sm",
|
|
@@ -1164,7 +1472,8 @@ var treeui_catalog_default = {
|
|
|
1164
1472
|
],
|
|
1165
1473
|
a11y: [],
|
|
1166
1474
|
behavior: [
|
|
1167
|
-
"body_wrapper_class:
|
|
1475
|
+
"body_wrapper_class: t-card__body",
|
|
1476
|
+
"solid_variant_rescopes_color_tokens_for_nested_content: true"
|
|
1168
1477
|
],
|
|
1169
1478
|
selection: {
|
|
1170
1479
|
keywords: [
|
|
@@ -1200,17 +1509,210 @@ var treeui_catalog_default = {
|
|
|
1200
1509
|
]
|
|
1201
1510
|
},
|
|
1202
1511
|
{
|
|
1203
|
-
name: "
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1512
|
+
name: "TChart",
|
|
1513
|
+
aliases: [],
|
|
1514
|
+
package: "@treeui/vue",
|
|
1515
|
+
kind: "data-display",
|
|
1516
|
+
category: "Data Display",
|
|
1517
|
+
status: "available",
|
|
1518
|
+
purpose: "Lightweight cartesian chart (line, area, bar) for multi-series data, with axes, gridlines, hover tooltip, legend, and an accessible data table. No external charting dependency.",
|
|
1519
|
+
sourceFile: "packages/vue/src/components/TChart.vue",
|
|
1520
|
+
storyFile: "apps/docs/src/stories/Chart.stories.ts",
|
|
1521
|
+
storyTitle: "Components/Data Display/Chart",
|
|
1522
|
+
manifestFile: "docs/ai/COMPONENTS/chart.yaml",
|
|
1523
|
+
props: [
|
|
1524
|
+
{
|
|
1525
|
+
name: "type",
|
|
1526
|
+
type: "TChartType",
|
|
1527
|
+
default: "line",
|
|
1528
|
+
values: [
|
|
1529
|
+
"line",
|
|
1530
|
+
"area",
|
|
1531
|
+
"bar"
|
|
1532
|
+
]
|
|
1533
|
+
},
|
|
1534
|
+
{
|
|
1535
|
+
name: "series",
|
|
1536
|
+
type: "TChartSeries[]",
|
|
1537
|
+
default: "[]",
|
|
1538
|
+
note: "Each item is { name: string; data: number[]; color?: string }."
|
|
1539
|
+
},
|
|
1540
|
+
{
|
|
1541
|
+
name: "labels",
|
|
1542
|
+
type: "string[]",
|
|
1543
|
+
default: "[]",
|
|
1544
|
+
note: "X-axis categories, aligned index-for-index to each series' data."
|
|
1545
|
+
},
|
|
1546
|
+
{
|
|
1547
|
+
name: "height",
|
|
1548
|
+
type: "number",
|
|
1549
|
+
default: "260",
|
|
1550
|
+
note: "Width is fluid (measured via ResizeObserver)."
|
|
1551
|
+
},
|
|
1552
|
+
{
|
|
1553
|
+
name: "smooth",
|
|
1554
|
+
type: "boolean",
|
|
1555
|
+
default: "false",
|
|
1556
|
+
note: "Curved line/area."
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
name: "stacked",
|
|
1560
|
+
type: "boolean",
|
|
1561
|
+
default: "false",
|
|
1562
|
+
note: "Stacks bar series; ignored for line/area. Negative values are clamped to 0 in stacked mode (grouped mode renders them)."
|
|
1563
|
+
},
|
|
1564
|
+
{
|
|
1565
|
+
name: "showGrid",
|
|
1566
|
+
type: "boolean",
|
|
1567
|
+
default: "true"
|
|
1568
|
+
},
|
|
1569
|
+
{
|
|
1570
|
+
name: "showLegend",
|
|
1571
|
+
type: "boolean",
|
|
1572
|
+
default: "auto (true when more than one series)"
|
|
1573
|
+
},
|
|
1574
|
+
{
|
|
1575
|
+
name: "showXAxis",
|
|
1576
|
+
type: "boolean",
|
|
1577
|
+
default: "true"
|
|
1578
|
+
},
|
|
1579
|
+
{
|
|
1580
|
+
name: "showYAxis",
|
|
1581
|
+
type: "boolean",
|
|
1582
|
+
default: "true"
|
|
1583
|
+
},
|
|
1584
|
+
{
|
|
1585
|
+
name: "showTooltip",
|
|
1586
|
+
type: "boolean",
|
|
1587
|
+
default: "true"
|
|
1588
|
+
},
|
|
1589
|
+
{
|
|
1590
|
+
name: "showPoints",
|
|
1591
|
+
type: "boolean",
|
|
1592
|
+
default: "false",
|
|
1593
|
+
note: "Always draw markers on line/area points."
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
name: "yTicks",
|
|
1597
|
+
type: "number",
|
|
1598
|
+
default: "5"
|
|
1599
|
+
},
|
|
1600
|
+
{
|
|
1601
|
+
name: "valueFormat",
|
|
1602
|
+
type: "(value: number) => string",
|
|
1603
|
+
default: "locale integers for |value| >= 1000"
|
|
1604
|
+
},
|
|
1605
|
+
{
|
|
1606
|
+
name: "minY",
|
|
1607
|
+
type: "number",
|
|
1608
|
+
default: "auto"
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
name: "maxY",
|
|
1612
|
+
type: "number",
|
|
1613
|
+
default: "auto"
|
|
1614
|
+
},
|
|
1615
|
+
{
|
|
1616
|
+
name: "animated",
|
|
1617
|
+
type: "boolean",
|
|
1618
|
+
default: "true",
|
|
1619
|
+
note: "Draw-in animation; disabled under prefers-reduced-motion."
|
|
1620
|
+
},
|
|
1621
|
+
{
|
|
1622
|
+
name: "loading",
|
|
1623
|
+
type: "boolean",
|
|
1624
|
+
default: "false"
|
|
1625
|
+
},
|
|
1626
|
+
{
|
|
1627
|
+
name: "ariaLabel",
|
|
1628
|
+
type: "string",
|
|
1629
|
+
default: "auto-generated summary"
|
|
1630
|
+
}
|
|
1631
|
+
],
|
|
1632
|
+
events: [
|
|
1633
|
+
{
|
|
1634
|
+
name: "point-click",
|
|
1635
|
+
payload: "{ index: number; label: string; values: { name: string; value: number; color: string }[] }"
|
|
1636
|
+
}
|
|
1637
|
+
],
|
|
1638
|
+
slots: [
|
|
1639
|
+
{
|
|
1640
|
+
name: "legend"
|
|
1641
|
+
},
|
|
1642
|
+
{
|
|
1643
|
+
name: "tooltip"
|
|
1644
|
+
},
|
|
1645
|
+
{
|
|
1646
|
+
name: "empty"
|
|
1647
|
+
}
|
|
1648
|
+
],
|
|
1649
|
+
a11y: [
|
|
1650
|
+
"SVG is aria-hidden; a visually-hidden <table> mirrors the series data for assistive tech.",
|
|
1651
|
+
"Legend defaults on for multiple series so identity is not color-only.",
|
|
1652
|
+
"Provide a meaningful ariaLabel describing what the chart shows."
|
|
1207
1653
|
],
|
|
1654
|
+
behavior: [
|
|
1655
|
+
"colors_auto_assign_from_chart_palette: --tree-color-chart-1..8, cycling; per-series color overrides",
|
|
1656
|
+
"bar_zero_baseline: true",
|
|
1657
|
+
"line_domain_uses_nice_ticks: true",
|
|
1658
|
+
"hover_shows_crosshair_and_tooltip: true"
|
|
1659
|
+
],
|
|
1660
|
+
selection: {
|
|
1661
|
+
keywords: [
|
|
1662
|
+
"chart",
|
|
1663
|
+
"graph",
|
|
1664
|
+
"line chart",
|
|
1665
|
+
"area chart",
|
|
1666
|
+
"bar chart",
|
|
1667
|
+
"plot",
|
|
1668
|
+
"dashboard",
|
|
1669
|
+
"time series",
|
|
1670
|
+
"analytics"
|
|
1671
|
+
],
|
|
1672
|
+
useWhen: [
|
|
1673
|
+
"You need a line, area, or bar chart with axes, gridlines, legend, and a hover tooltip.",
|
|
1674
|
+
"One or more series share a set of category labels."
|
|
1675
|
+
],
|
|
1676
|
+
avoidWhen: [
|
|
1677
|
+
"A single value tells the story \u2014 use TStat.",
|
|
1678
|
+
"You only need an inline trend with no axes \u2014 use TSparkline.",
|
|
1679
|
+
"The data is a part-of-whole breakdown \u2014 use TDonutChart."
|
|
1680
|
+
],
|
|
1681
|
+
alternatives: [
|
|
1682
|
+
{
|
|
1683
|
+
component: "TSparkline",
|
|
1684
|
+
when: "The trend should be inline and axis-less."
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
component: "TDonutChart",
|
|
1688
|
+
when: "The data is proportional (parts of a whole)."
|
|
1689
|
+
}
|
|
1690
|
+
]
|
|
1691
|
+
},
|
|
1692
|
+
setup: {
|
|
1693
|
+
required: [],
|
|
1694
|
+
notes: [
|
|
1695
|
+
"Pass `series` as `{ name, data, color? }[]` and `labels` as a parallel `string[]` (one label per data index).",
|
|
1696
|
+
"Set `type` to `line`, `area`, or `bar`; use `stacked` only with `bar`.",
|
|
1697
|
+
"Series colors come from `--tree-color-chart-1..8` in order; pass `color` per series to override \u2014 do not remap colors when the series set changes.",
|
|
1698
|
+
"Pass `valueFormat: (n) => string` to format axis and tooltip values (currency, compact, etc.).",
|
|
1699
|
+
"No charting library or provider is required \u2014 the SVG and geometry are built in."
|
|
1700
|
+
]
|
|
1701
|
+
},
|
|
1702
|
+
recipes: [
|
|
1703
|
+
"chart-surface",
|
|
1704
|
+
"metric-dashboard"
|
|
1705
|
+
]
|
|
1706
|
+
},
|
|
1707
|
+
{
|
|
1708
|
+
name: "TCheckbox",
|
|
1709
|
+
aliases: [],
|
|
1208
1710
|
package: "@treeui/vue",
|
|
1209
1711
|
kind: "primitive",
|
|
1210
1712
|
category: "Data Entry",
|
|
1211
1713
|
status: "available",
|
|
1212
1714
|
purpose: "Boolean toggle with indeterminate state; supports v-model via modelValue.",
|
|
1213
|
-
sourceFile: "packages/vue/src/components/
|
|
1715
|
+
sourceFile: "packages/vue/src/components/TCheckbox.vue",
|
|
1214
1716
|
storyFile: "apps/docs/src/stories/Checkbox.stories.ts",
|
|
1215
1717
|
storyTitle: "Components/Data Entry/Checkbox",
|
|
1216
1718
|
manifestFile: "docs/ai/COMPONENTS/checkbox.yaml",
|
|
@@ -1222,7 +1724,7 @@ var treeui_catalog_default = {
|
|
|
1222
1724
|
},
|
|
1223
1725
|
{
|
|
1224
1726
|
name: "size",
|
|
1225
|
-
type: "
|
|
1727
|
+
type: "TSize",
|
|
1226
1728
|
default: "md",
|
|
1227
1729
|
values: [
|
|
1228
1730
|
"sm",
|
|
@@ -1302,16 +1804,13 @@ var treeui_catalog_default = {
|
|
|
1302
1804
|
},
|
|
1303
1805
|
{
|
|
1304
1806
|
name: "TCombobox",
|
|
1305
|
-
|
|
1306
|
-
aliases: [
|
|
1307
|
-
"TreeCombobox"
|
|
1308
|
-
],
|
|
1807
|
+
aliases: [],
|
|
1309
1808
|
package: "@treeui/vue",
|
|
1310
1809
|
kind: "primitive",
|
|
1311
1810
|
category: "Data Entry",
|
|
1312
1811
|
status: "available",
|
|
1313
1812
|
purpose: "Searchable combobox / autocomplete input with local filtering, controlled selection, and shared open-state behavior.",
|
|
1314
|
-
sourceFile: "packages/vue/src/components/
|
|
1813
|
+
sourceFile: "packages/vue/src/components/TCombobox.vue",
|
|
1315
1814
|
storyFile: "apps/docs/src/stories/Combobox.stories.ts",
|
|
1316
1815
|
storyTitle: "Components/Data Entry/Combobox",
|
|
1317
1816
|
manifestFile: "docs/ai/COMPONENTS/combobox.yaml",
|
|
@@ -1323,7 +1822,7 @@ var treeui_catalog_default = {
|
|
|
1323
1822
|
},
|
|
1324
1823
|
{
|
|
1325
1824
|
name: "options",
|
|
1326
|
-
type: "
|
|
1825
|
+
type: "TComboboxOption[]",
|
|
1327
1826
|
default: "[]",
|
|
1328
1827
|
note: "Array of { label: string; value: string; description?: string; keywords?: string[]; disabled?: boolean }"
|
|
1329
1828
|
},
|
|
@@ -1339,7 +1838,7 @@ var treeui_catalog_default = {
|
|
|
1339
1838
|
},
|
|
1340
1839
|
{
|
|
1341
1840
|
name: "size",
|
|
1342
|
-
type: "
|
|
1841
|
+
type: "TSize",
|
|
1343
1842
|
default: "md",
|
|
1344
1843
|
values: [
|
|
1345
1844
|
"sm",
|
|
@@ -1456,16 +1955,13 @@ var treeui_catalog_default = {
|
|
|
1456
1955
|
},
|
|
1457
1956
|
{
|
|
1458
1957
|
name: "TConfirmDialog",
|
|
1459
|
-
|
|
1460
|
-
aliases: [
|
|
1461
|
-
"TreeConfirmDialog"
|
|
1462
|
-
],
|
|
1958
|
+
aliases: [],
|
|
1463
1959
|
package: "@treeui/vue",
|
|
1464
1960
|
kind: "overlay",
|
|
1465
1961
|
category: "Overlay",
|
|
1466
1962
|
status: "available",
|
|
1467
1963
|
purpose: "High-level confirmation dialog built on the shared modal contract, with default confirm and cancel actions.",
|
|
1468
|
-
sourceFile: "packages/vue/src/components/
|
|
1964
|
+
sourceFile: "packages/vue/src/components/TConfirmDialog.vue",
|
|
1469
1965
|
storyFile: "apps/docs/src/stories/ConfirmDialog.stories.ts",
|
|
1470
1966
|
storyTitle: "Components/Overlay/ConfirmDialog",
|
|
1471
1967
|
manifestFile: "docs/ai/COMPONENTS/confirm-dialog.yaml",
|
|
@@ -1487,7 +1983,7 @@ var treeui_catalog_default = {
|
|
|
1487
1983
|
},
|
|
1488
1984
|
{
|
|
1489
1985
|
name: "size",
|
|
1490
|
-
type: "
|
|
1986
|
+
type: "TSize",
|
|
1491
1987
|
default: "sm",
|
|
1492
1988
|
values: [
|
|
1493
1989
|
"sm",
|
|
@@ -1517,7 +2013,7 @@ var treeui_catalog_default = {
|
|
|
1517
2013
|
},
|
|
1518
2014
|
{
|
|
1519
2015
|
name: "confirmVariant",
|
|
1520
|
-
type: "
|
|
2016
|
+
type: "TVariant",
|
|
1521
2017
|
default: "danger"
|
|
1522
2018
|
},
|
|
1523
2019
|
{
|
|
@@ -1625,16 +2121,13 @@ var treeui_catalog_default = {
|
|
|
1625
2121
|
},
|
|
1626
2122
|
{
|
|
1627
2123
|
name: "TContainer",
|
|
1628
|
-
|
|
1629
|
-
aliases: [
|
|
1630
|
-
"TreeContainer"
|
|
1631
|
-
],
|
|
2124
|
+
aliases: [],
|
|
1632
2125
|
package: "@treeui/vue",
|
|
1633
2126
|
kind: "layout",
|
|
1634
2127
|
category: "Layout",
|
|
1635
2128
|
status: "available",
|
|
1636
2129
|
purpose: "Width-constrained layout wrapper for readable page content and app sections.",
|
|
1637
|
-
sourceFile: "packages/vue/src/components/
|
|
2130
|
+
sourceFile: "packages/vue/src/components/TContainer.vue",
|
|
1638
2131
|
storyFile: "apps/docs/src/stories/Container.stories.ts",
|
|
1639
2132
|
storyTitle: "Components/Layout/Container",
|
|
1640
2133
|
manifestFile: "docs/ai/COMPONENTS/container.yaml",
|
|
@@ -1646,7 +2139,7 @@ var treeui_catalog_default = {
|
|
|
1646
2139
|
},
|
|
1647
2140
|
{
|
|
1648
2141
|
name: "size",
|
|
1649
|
-
type: "
|
|
2142
|
+
type: "TContainerSize",
|
|
1650
2143
|
default: "lg",
|
|
1651
2144
|
values: [
|
|
1652
2145
|
"sm",
|
|
@@ -1717,10 +2210,7 @@ var treeui_catalog_default = {
|
|
|
1717
2210
|
},
|
|
1718
2211
|
{
|
|
1719
2212
|
name: "TContextMenu",
|
|
1720
|
-
|
|
1721
|
-
aliases: [
|
|
1722
|
-
"TreeContextMenu"
|
|
1723
|
-
],
|
|
2213
|
+
aliases: [],
|
|
1724
2214
|
package: "@treeui/vue",
|
|
1725
2215
|
category: "Overlay",
|
|
1726
2216
|
status: "stable",
|
|
@@ -1730,7 +2220,7 @@ var treeui_catalog_default = {
|
|
|
1730
2220
|
props: [
|
|
1731
2221
|
{
|
|
1732
2222
|
name: "items",
|
|
1733
|
-
type: "
|
|
2223
|
+
type: "TContextMenuItem[]",
|
|
1734
2224
|
default: "[]",
|
|
1735
2225
|
description: "Menu items to render."
|
|
1736
2226
|
},
|
|
@@ -1754,7 +2244,7 @@ var treeui_catalog_default = {
|
|
|
1754
2244
|
},
|
|
1755
2245
|
{
|
|
1756
2246
|
name: "size",
|
|
1757
|
-
type: "
|
|
2247
|
+
type: "TSize",
|
|
1758
2248
|
default: "md",
|
|
1759
2249
|
description: "Item sizing variant."
|
|
1760
2250
|
}
|
|
@@ -1827,16 +2317,13 @@ var treeui_catalog_default = {
|
|
|
1827
2317
|
},
|
|
1828
2318
|
{
|
|
1829
2319
|
name: "TDatePicker",
|
|
1830
|
-
|
|
1831
|
-
aliases: [
|
|
1832
|
-
"TreeDatePicker"
|
|
1833
|
-
],
|
|
2320
|
+
aliases: [],
|
|
1834
2321
|
package: "@treeui/vue",
|
|
1835
2322
|
kind: "form_overlay",
|
|
1836
2323
|
category: "Data Entry",
|
|
1837
2324
|
status: "available",
|
|
1838
2325
|
purpose: "Date input with calendar popover and keyboard navigation.",
|
|
1839
|
-
sourceFile: "packages/vue/src/components/
|
|
2326
|
+
sourceFile: "packages/vue/src/components/TDatePicker.vue",
|
|
1840
2327
|
storyFile: "apps/docs/src/stories/DatePicker.stories.ts",
|
|
1841
2328
|
storyTitle: "Components/Data Entry/DatePicker",
|
|
1842
2329
|
manifestFile: "docs/ai/COMPONENTS/date-picker.yaml",
|
|
@@ -1858,7 +2345,7 @@ var treeui_catalog_default = {
|
|
|
1858
2345
|
},
|
|
1859
2346
|
{
|
|
1860
2347
|
name: "size",
|
|
1861
|
-
type: "
|
|
2348
|
+
type: "TSize",
|
|
1862
2349
|
default: "md",
|
|
1863
2350
|
values: [
|
|
1864
2351
|
"sm",
|
|
@@ -1979,16 +2466,13 @@ var treeui_catalog_default = {
|
|
|
1979
2466
|
},
|
|
1980
2467
|
{
|
|
1981
2468
|
name: "TDateTimePicker",
|
|
1982
|
-
|
|
1983
|
-
aliases: [
|
|
1984
|
-
"TreeDateTimePicker"
|
|
1985
|
-
],
|
|
2469
|
+
aliases: [],
|
|
1986
2470
|
package: "@treeui/vue",
|
|
1987
2471
|
kind: "form",
|
|
1988
2472
|
category: "Data Entry",
|
|
1989
2473
|
status: "available",
|
|
1990
2474
|
purpose: "Date and time picker with a calendar grid, time selection, and overlay trigger.",
|
|
1991
|
-
sourceFile: "packages/vue/src/components/
|
|
2475
|
+
sourceFile: "packages/vue/src/components/TDateTimePicker.vue",
|
|
1992
2476
|
storyFile: "apps/docs/src/stories/DateTimePicker.stories.ts",
|
|
1993
2477
|
storyTitle: "Components/Data Entry/DateTimePicker",
|
|
1994
2478
|
manifestFile: "docs/ai/COMPONENTS/date-time-picker.yaml",
|
|
@@ -2011,7 +2495,7 @@ var treeui_catalog_default = {
|
|
|
2011
2495
|
},
|
|
2012
2496
|
{
|
|
2013
2497
|
name: "size",
|
|
2014
|
-
type: "
|
|
2498
|
+
type: "TSize",
|
|
2015
2499
|
default: "md",
|
|
2016
2500
|
values: [
|
|
2017
2501
|
"sm",
|
|
@@ -2140,14 +2624,11 @@ var treeui_catalog_default = {
|
|
|
2140
2624
|
},
|
|
2141
2625
|
{
|
|
2142
2626
|
name: "TDivider",
|
|
2143
|
-
|
|
2144
|
-
aliases: [
|
|
2145
|
-
"TreeDivider"
|
|
2146
|
-
],
|
|
2627
|
+
aliases: [],
|
|
2147
2628
|
package: "@treeui/vue",
|
|
2148
2629
|
category: "Layout",
|
|
2149
2630
|
description: "Horizontal or vertical visual separator.",
|
|
2150
|
-
sourceFile: "packages/vue/src/components/
|
|
2631
|
+
sourceFile: "packages/vue/src/components/TDivider.vue",
|
|
2151
2632
|
storyFile: "apps/docs/src/stories/Divider.stories.ts",
|
|
2152
2633
|
storyTitle: "Components/Layout/Divider",
|
|
2153
2634
|
manifestFile: "docs/ai/COMPONENTS/divider.yaml",
|
|
@@ -2162,50 +2643,183 @@ var treeui_catalog_default = {
|
|
|
2162
2643
|
]
|
|
2163
2644
|
},
|
|
2164
2645
|
{
|
|
2165
|
-
name: "decorative",
|
|
2646
|
+
name: "decorative",
|
|
2647
|
+
type: "boolean",
|
|
2648
|
+
default: "true",
|
|
2649
|
+
description: "When true, renders role='none' (purely visual). When false, renders as role='separator'."
|
|
2650
|
+
},
|
|
2651
|
+
{
|
|
2652
|
+
name: "label",
|
|
2653
|
+
type: "string",
|
|
2654
|
+
required: false,
|
|
2655
|
+
description: "Accessible label for non-decorative dividers."
|
|
2656
|
+
}
|
|
2657
|
+
],
|
|
2658
|
+
events: [],
|
|
2659
|
+
slots: [],
|
|
2660
|
+
a11y: [
|
|
2661
|
+
"role: none (decorative) or separator (semantic)",
|
|
2662
|
+
"aria-orientation: Set when non-decorative.",
|
|
2663
|
+
"aria-label: Set from `label` prop when non-decorative."
|
|
2664
|
+
],
|
|
2665
|
+
behavior: [],
|
|
2666
|
+
selection: {
|
|
2667
|
+
keywords: [],
|
|
2668
|
+
useWhen: [],
|
|
2669
|
+
avoidWhen: [],
|
|
2670
|
+
alternatives: []
|
|
2671
|
+
},
|
|
2672
|
+
setup: {
|
|
2673
|
+
required: [],
|
|
2674
|
+
notes: []
|
|
2675
|
+
},
|
|
2676
|
+
recipes: []
|
|
2677
|
+
},
|
|
2678
|
+
{
|
|
2679
|
+
name: "TDonutChart",
|
|
2680
|
+
aliases: [],
|
|
2681
|
+
package: "@treeui/vue",
|
|
2682
|
+
kind: "data-display",
|
|
2683
|
+
category: "Data Display",
|
|
2684
|
+
status: "available",
|
|
2685
|
+
purpose: "Part-of-whole chart rendered as a donut (default) or full pie, with a legend, percentages, an interactive center readout, and an accessible label.",
|
|
2686
|
+
sourceFile: "packages/vue/src/components/TDonutChart.vue",
|
|
2687
|
+
storyFile: "apps/docs/src/stories/DonutChart.stories.ts",
|
|
2688
|
+
storyTitle: "Components/Data Display/Donut Chart",
|
|
2689
|
+
manifestFile: "docs/ai/COMPONENTS/donut-chart.yaml",
|
|
2690
|
+
props: [
|
|
2691
|
+
{
|
|
2692
|
+
name: "segments",
|
|
2693
|
+
type: "TDonutSegment[]",
|
|
2694
|
+
default: "[]",
|
|
2695
|
+
note: "Each item is { label: string; value: number; color?: string }. Non-positive values are omitted."
|
|
2696
|
+
},
|
|
2697
|
+
{
|
|
2698
|
+
name: "size",
|
|
2699
|
+
type: "number",
|
|
2700
|
+
default: "200",
|
|
2701
|
+
note: "Square canvas in px."
|
|
2702
|
+
},
|
|
2703
|
+
{
|
|
2704
|
+
name: "thickness",
|
|
2705
|
+
type: "number",
|
|
2706
|
+
default: "26",
|
|
2707
|
+
note: "Ring thickness; 0 renders a full pie."
|
|
2708
|
+
},
|
|
2709
|
+
{
|
|
2710
|
+
name: "gap",
|
|
2711
|
+
type: "number",
|
|
2712
|
+
default: "2",
|
|
2713
|
+
note: "Gap between slices, in degrees."
|
|
2714
|
+
},
|
|
2715
|
+
{
|
|
2716
|
+
name: "rounded",
|
|
2717
|
+
type: "boolean",
|
|
2718
|
+
default: "false",
|
|
2719
|
+
note: "Round the ends of donut segments (widens the gap to make room). Best with a thinner ring."
|
|
2720
|
+
},
|
|
2721
|
+
{
|
|
2722
|
+
name: "showLegend",
|
|
2723
|
+
type: "boolean",
|
|
2724
|
+
default: "true"
|
|
2725
|
+
},
|
|
2726
|
+
{
|
|
2727
|
+
name: "showPercent",
|
|
2728
|
+
type: "boolean",
|
|
2729
|
+
default: "true"
|
|
2730
|
+
},
|
|
2731
|
+
{
|
|
2732
|
+
name: "centerLabel",
|
|
2733
|
+
type: "string",
|
|
2734
|
+
default: "Total",
|
|
2735
|
+
note: "Donut only; ignored for pie."
|
|
2736
|
+
},
|
|
2737
|
+
{
|
|
2738
|
+
name: "centerValue",
|
|
2739
|
+
type: "string | number",
|
|
2740
|
+
default: "auto (sum of values)"
|
|
2741
|
+
},
|
|
2742
|
+
{
|
|
2743
|
+
name: "valueFormat",
|
|
2744
|
+
type: "(value: number) => string",
|
|
2745
|
+
default: "locale integers for |value| >= 1000"
|
|
2746
|
+
},
|
|
2747
|
+
{
|
|
2748
|
+
name: "loading",
|
|
2166
2749
|
type: "boolean",
|
|
2167
|
-
default: "
|
|
2168
|
-
description: "When true, renders role='none' (purely visual). When false, renders as role='separator'."
|
|
2750
|
+
default: "false"
|
|
2169
2751
|
},
|
|
2170
2752
|
{
|
|
2171
|
-
name: "
|
|
2753
|
+
name: "ariaLabel",
|
|
2172
2754
|
type: "string",
|
|
2173
|
-
|
|
2174
|
-
description: "Accessible label for non-decorative dividers."
|
|
2755
|
+
default: "auto-generated summary"
|
|
2175
2756
|
}
|
|
2176
2757
|
],
|
|
2177
2758
|
events: [],
|
|
2178
|
-
slots: [
|
|
2759
|
+
slots: [
|
|
2760
|
+
{
|
|
2761
|
+
name: "center"
|
|
2762
|
+
},
|
|
2763
|
+
{
|
|
2764
|
+
name: "empty"
|
|
2765
|
+
}
|
|
2766
|
+
],
|
|
2179
2767
|
a11y: [
|
|
2180
|
-
"role
|
|
2181
|
-
"
|
|
2182
|
-
|
|
2768
|
+
"Renders role=img with an aria-label summarizing the chart.",
|
|
2769
|
+
"Legend + percentages give a non-visual reading of each slice."
|
|
2770
|
+
],
|
|
2771
|
+
behavior: [
|
|
2772
|
+
"colors_auto_assign_from_chart_palette: --tree-color-chart-1..8, cycling; per-segment color overrides",
|
|
2773
|
+
"hovering_a_slice_dims_the_rest_and_updates_center: true",
|
|
2774
|
+
"center_shows_total_or_the_hovered_segment: true"
|
|
2183
2775
|
],
|
|
2184
|
-
behavior: [],
|
|
2185
2776
|
selection: {
|
|
2186
|
-
keywords: [
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2777
|
+
keywords: [
|
|
2778
|
+
"donut",
|
|
2779
|
+
"doughnut",
|
|
2780
|
+
"pie",
|
|
2781
|
+
"proportion",
|
|
2782
|
+
"share",
|
|
2783
|
+
"breakdown",
|
|
2784
|
+
"part of whole",
|
|
2785
|
+
"percentage"
|
|
2786
|
+
],
|
|
2787
|
+
useWhen: [
|
|
2788
|
+
"You are showing how a total splits into a handful of categories.",
|
|
2789
|
+
"A donut center readout (total or hovered slice) is useful."
|
|
2790
|
+
],
|
|
2791
|
+
avoidWhen: [
|
|
2792
|
+
"There are many categories or precise comparison matters \u2014 use TChart bars.",
|
|
2793
|
+
"The data is a trend over time \u2014 use TChart or TSparkline."
|
|
2794
|
+
],
|
|
2795
|
+
alternatives: [
|
|
2796
|
+
{
|
|
2797
|
+
component: "TChart",
|
|
2798
|
+
when: "Precise magnitude comparison across categories is needed (bars)."
|
|
2799
|
+
}
|
|
2800
|
+
]
|
|
2190
2801
|
},
|
|
2191
2802
|
setup: {
|
|
2192
2803
|
required: [],
|
|
2193
|
-
notes: [
|
|
2804
|
+
notes: [
|
|
2805
|
+
"Pass `segments` as `{ label, value, color? }[]`; non-positive values are dropped.",
|
|
2806
|
+
"Set `thickness: 0` for a full pie; keep the default for a donut with a center readout.",
|
|
2807
|
+
"Use the `center` slot (donut only) for a custom center; otherwise it shows the total or the hovered slice."
|
|
2808
|
+
]
|
|
2194
2809
|
},
|
|
2195
|
-
recipes: [
|
|
2810
|
+
recipes: [
|
|
2811
|
+
"metric-dashboard"
|
|
2812
|
+
]
|
|
2196
2813
|
},
|
|
2197
2814
|
{
|
|
2198
2815
|
name: "TDrawer",
|
|
2199
|
-
|
|
2200
|
-
aliases: [
|
|
2201
|
-
"TreeDrawer"
|
|
2202
|
-
],
|
|
2816
|
+
aliases: [],
|
|
2203
2817
|
package: "@treeui/vue",
|
|
2204
2818
|
kind: "overlay",
|
|
2205
2819
|
category: "Overlay",
|
|
2206
2820
|
status: "available",
|
|
2207
2821
|
purpose: "Side-anchored panel for secondary content, navigation, or forms.",
|
|
2208
|
-
sourceFile: "packages/vue/src/components/
|
|
2822
|
+
sourceFile: "packages/vue/src/components/TDrawer.vue",
|
|
2209
2823
|
storyFile: "apps/docs/src/stories/Drawer.stories.ts",
|
|
2210
2824
|
storyTitle: "Components/Overlay/Drawer",
|
|
2211
2825
|
manifestFile: "docs/ai/COMPONENTS/drawer.yaml",
|
|
@@ -2227,7 +2841,7 @@ var treeui_catalog_default = {
|
|
|
2227
2841
|
},
|
|
2228
2842
|
{
|
|
2229
2843
|
name: "size",
|
|
2230
|
-
type: "
|
|
2844
|
+
type: "TSize",
|
|
2231
2845
|
default: "md",
|
|
2232
2846
|
values: [
|
|
2233
2847
|
"sm",
|
|
@@ -2237,7 +2851,7 @@ var treeui_catalog_default = {
|
|
|
2237
2851
|
},
|
|
2238
2852
|
{
|
|
2239
2853
|
name: "side",
|
|
2240
|
-
type: "
|
|
2854
|
+
type: "TDrawerSide",
|
|
2241
2855
|
default: "right",
|
|
2242
2856
|
values: [
|
|
2243
2857
|
"top",
|
|
@@ -2352,23 +2966,20 @@ var treeui_catalog_default = {
|
|
|
2352
2966
|
},
|
|
2353
2967
|
{
|
|
2354
2968
|
name: "TDropdown",
|
|
2355
|
-
|
|
2356
|
-
aliases: [
|
|
2357
|
-
"TreeDropdown"
|
|
2358
|
-
],
|
|
2969
|
+
aliases: [],
|
|
2359
2970
|
package: "@treeui/vue",
|
|
2360
2971
|
kind: "overlay",
|
|
2361
2972
|
category: "Overlay",
|
|
2362
2973
|
status: "available",
|
|
2363
2974
|
purpose: "Trigger + floating menu with keyboard navigation for action lists.",
|
|
2364
|
-
sourceFile: "packages/vue/src/components/
|
|
2975
|
+
sourceFile: "packages/vue/src/components/TDropdown.vue",
|
|
2365
2976
|
storyFile: "apps/docs/src/stories/Dropdown.stories.ts",
|
|
2366
2977
|
storyTitle: "Components/Overlay/Dropdown",
|
|
2367
2978
|
manifestFile: "docs/ai/COMPONENTS/dropdown.yaml",
|
|
2368
2979
|
props: [
|
|
2369
2980
|
{
|
|
2370
2981
|
name: "items",
|
|
2371
|
-
type: "
|
|
2982
|
+
type: "TDropdownItem[]",
|
|
2372
2983
|
default: "[]",
|
|
2373
2984
|
note: "Array of { label: string; value: string; disabled?: boolean }"
|
|
2374
2985
|
},
|
|
@@ -2389,7 +3000,7 @@ var treeui_catalog_default = {
|
|
|
2389
3000
|
},
|
|
2390
3001
|
{
|
|
2391
3002
|
name: "size",
|
|
2392
|
-
type: "
|
|
3003
|
+
type: "TSize",
|
|
2393
3004
|
default: "md",
|
|
2394
3005
|
values: [
|
|
2395
3006
|
"sm",
|
|
@@ -2401,6 +3012,16 @@ var treeui_catalog_default = {
|
|
|
2401
3012
|
name: "label",
|
|
2402
3013
|
type: "string",
|
|
2403
3014
|
default: ""
|
|
3015
|
+
},
|
|
3016
|
+
{
|
|
3017
|
+
name: "align",
|
|
3018
|
+
type: "TDropdownAlign",
|
|
3019
|
+
default: "start",
|
|
3020
|
+
values: [
|
|
3021
|
+
"start",
|
|
3022
|
+
"end"
|
|
3023
|
+
],
|
|
3024
|
+
note: "Horizontal alignment of the menu relative to the trigger. Use `end` when the trigger sits near the right edge of a clipping container (e.g. a table actions column)."
|
|
2404
3025
|
}
|
|
2405
3026
|
],
|
|
2406
3027
|
events: [
|
|
@@ -2436,7 +3057,8 @@ var treeui_catalog_default = {
|
|
|
2436
3057
|
behavior: [
|
|
2437
3058
|
"outside_click_closes_menu: true",
|
|
2438
3059
|
"focus_restores_on_close: true",
|
|
2439
|
-
"chevron_rotates_when_open: true"
|
|
3060
|
+
"chevron_rotates_when_open: true",
|
|
3061
|
+
"menu_grows_to_fit_items_without_wrapping: true"
|
|
2440
3062
|
],
|
|
2441
3063
|
selection: {
|
|
2442
3064
|
keywords: [
|
|
@@ -2469,16 +3091,13 @@ var treeui_catalog_default = {
|
|
|
2469
3091
|
},
|
|
2470
3092
|
{
|
|
2471
3093
|
name: "TEmptyState",
|
|
2472
|
-
|
|
2473
|
-
aliases: [
|
|
2474
|
-
"TreeEmptyState"
|
|
2475
|
-
],
|
|
3094
|
+
aliases: [],
|
|
2476
3095
|
package: "@treeui/vue",
|
|
2477
3096
|
kind: "feedback",
|
|
2478
3097
|
category: "Feedback",
|
|
2479
3098
|
status: "available",
|
|
2480
3099
|
purpose: "Structured empty, no-results, and first-run placeholder block with optional icon, body content, and actions.",
|
|
2481
|
-
sourceFile: "packages/vue/src/components/
|
|
3100
|
+
sourceFile: "packages/vue/src/components/TEmptyState.vue",
|
|
2482
3101
|
storyFile: "apps/docs/src/stories/EmptyState.stories.ts",
|
|
2483
3102
|
storyTitle: "Components/Feedback/EmptyState",
|
|
2484
3103
|
manifestFile: "docs/ai/COMPONENTS/empty-state.yaml",
|
|
@@ -2490,7 +3109,7 @@ var treeui_catalog_default = {
|
|
|
2490
3109
|
},
|
|
2491
3110
|
{
|
|
2492
3111
|
name: "size",
|
|
2493
|
-
type: "
|
|
3112
|
+
type: "TSize",
|
|
2494
3113
|
default: "md",
|
|
2495
3114
|
values: [
|
|
2496
3115
|
"sm",
|
|
@@ -2564,16 +3183,13 @@ var treeui_catalog_default = {
|
|
|
2564
3183
|
},
|
|
2565
3184
|
{
|
|
2566
3185
|
name: "TFileUpload",
|
|
2567
|
-
|
|
2568
|
-
aliases: [
|
|
2569
|
-
"TreeFileUpload"
|
|
2570
|
-
],
|
|
3186
|
+
aliases: [],
|
|
2571
3187
|
package: "@treeui/vue",
|
|
2572
3188
|
kind: "form",
|
|
2573
3189
|
category: "Form",
|
|
2574
3190
|
status: "available",
|
|
2575
3191
|
purpose: "Composable dropzone and file picker with browse, drag-and-drop, and Ctrl+V paste support.",
|
|
2576
|
-
sourceFile: "packages/vue/src/components/
|
|
3192
|
+
sourceFile: "packages/vue/src/components/TFileUpload.vue",
|
|
2577
3193
|
storyFile: "apps/docs/src/stories/FileUpload.stories.ts",
|
|
2578
3194
|
storyTitle: "Components/Form/FileUpload",
|
|
2579
3195
|
manifestFile: "docs/ai/COMPONENTS/file-upload.yaml",
|
|
@@ -2585,7 +3201,7 @@ var treeui_catalog_default = {
|
|
|
2585
3201
|
},
|
|
2586
3202
|
{
|
|
2587
3203
|
name: "size",
|
|
2588
|
-
type: "
|
|
3204
|
+
type: "TSize",
|
|
2589
3205
|
default: "md",
|
|
2590
3206
|
values: [
|
|
2591
3207
|
"sm",
|
|
@@ -2718,15 +3334,12 @@ var treeui_catalog_default = {
|
|
|
2718
3334
|
},
|
|
2719
3335
|
{
|
|
2720
3336
|
name: "TFormField",
|
|
2721
|
-
|
|
2722
|
-
aliases: [
|
|
2723
|
-
"TreeFormField"
|
|
2724
|
-
],
|
|
3337
|
+
aliases: [],
|
|
2725
3338
|
package: "@treeui/vue",
|
|
2726
3339
|
category: "Data Entry",
|
|
2727
3340
|
status: "milestone-1",
|
|
2728
3341
|
description: "Label + input wrapper with error and hint slots. Provides consistent layout, labelling, and validation messaging for any form control.\n",
|
|
2729
|
-
sourceFile: "packages/vue/src/components/
|
|
3342
|
+
sourceFile: "packages/vue/src/components/TFormField.vue",
|
|
2730
3343
|
storyFile: "apps/docs/src/stories/FormField.stories.ts",
|
|
2731
3344
|
storyTitle: "Components/Data Entry/FormField",
|
|
2732
3345
|
manifestFile: "docs/ai/COMPONENTS/form-field.yaml",
|
|
@@ -2769,7 +3382,7 @@ var treeui_catalog_default = {
|
|
|
2769
3382
|
},
|
|
2770
3383
|
{
|
|
2771
3384
|
name: "size",
|
|
2772
|
-
type: "
|
|
3385
|
+
type: "TSize",
|
|
2773
3386
|
default: "md",
|
|
2774
3387
|
values: [
|
|
2775
3388
|
"sm",
|
|
@@ -2850,16 +3463,13 @@ var treeui_catalog_default = {
|
|
|
2850
3463
|
},
|
|
2851
3464
|
{
|
|
2852
3465
|
name: "TGrid",
|
|
2853
|
-
|
|
2854
|
-
aliases: [
|
|
2855
|
-
"TreeGrid"
|
|
2856
|
-
],
|
|
3466
|
+
aliases: [],
|
|
2857
3467
|
package: "@treeui/vue",
|
|
2858
3468
|
kind: "layout",
|
|
2859
3469
|
category: "Layout",
|
|
2860
3470
|
status: "available",
|
|
2861
3471
|
purpose: "Responsive grid wrapper for cards, forms, stats, and other multi-column layouts.",
|
|
2862
|
-
sourceFile: "packages/vue/src/components/
|
|
3472
|
+
sourceFile: "packages/vue/src/components/TGrid.vue",
|
|
2863
3473
|
storyFile: "apps/docs/src/stories/Grid.stories.ts",
|
|
2864
3474
|
storyTitle: "Components/Layout/Grid",
|
|
2865
3475
|
manifestFile: "docs/ai/COMPONENTS/grid.yaml",
|
|
@@ -2948,21 +3558,109 @@ var treeui_catalog_default = {
|
|
|
2948
3558
|
},
|
|
2949
3559
|
recipes: [
|
|
2950
3560
|
"date-range-form",
|
|
2951
|
-
"stat-grid"
|
|
3561
|
+
"stat-grid",
|
|
3562
|
+
"metric-dashboard"
|
|
2952
3563
|
]
|
|
2953
3564
|
},
|
|
2954
3565
|
{
|
|
2955
|
-
name: "
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
3566
|
+
name: "TIcon",
|
|
3567
|
+
aliases: [],
|
|
3568
|
+
package: "@treeui/vue",
|
|
3569
|
+
kind: "display",
|
|
3570
|
+
category: "Data Display",
|
|
3571
|
+
status: "available",
|
|
3572
|
+
purpose: "Render a registered TreeUI icon by name with consistent sizing and accessibility defaults.",
|
|
3573
|
+
sourceFile: "packages/vue/src/components/TIcon.vue",
|
|
3574
|
+
storyFile: "apps/docs/src/stories/Icon.stories.ts",
|
|
3575
|
+
storyTitle: "Components/Data Display/Icon",
|
|
3576
|
+
manifestFile: "docs/ai/COMPONENTS/icon.yaml",
|
|
3577
|
+
props: [
|
|
3578
|
+
{
|
|
3579
|
+
name: "name",
|
|
3580
|
+
type: "TIconName",
|
|
3581
|
+
required: true,
|
|
3582
|
+
values: [
|
|
3583
|
+
"alert-circle",
|
|
3584
|
+
"calendar",
|
|
3585
|
+
"check",
|
|
3586
|
+
"chevron-left",
|
|
3587
|
+
"chevron-down",
|
|
3588
|
+
"chevron-right",
|
|
3589
|
+
"info",
|
|
3590
|
+
"loader-circle",
|
|
3591
|
+
"search",
|
|
3592
|
+
"x"
|
|
3593
|
+
],
|
|
3594
|
+
description: "Icon identifier from the @treeui/icons registry."
|
|
3595
|
+
},
|
|
3596
|
+
{
|
|
3597
|
+
name: "size",
|
|
3598
|
+
type: "number | string",
|
|
3599
|
+
default: "20",
|
|
3600
|
+
description: "Pixel size for both width and height of the rendered svg."
|
|
3601
|
+
},
|
|
3602
|
+
{
|
|
3603
|
+
name: "strokeWidth",
|
|
3604
|
+
type: "number | string",
|
|
3605
|
+
default: "2"
|
|
3606
|
+
},
|
|
3607
|
+
{
|
|
3608
|
+
name: "absoluteStrokeWidth",
|
|
3609
|
+
type: "boolean",
|
|
3610
|
+
default: "true",
|
|
3611
|
+
description: "When true, stroke width stays visually constant across sizes."
|
|
3612
|
+
},
|
|
3613
|
+
{
|
|
3614
|
+
name: "label",
|
|
3615
|
+
type: "string",
|
|
3616
|
+
default: "undefined",
|
|
3617
|
+
description: 'Accessible label. When set, the icon becomes role="img" with aria-label; otherwise it is aria-hidden.'
|
|
3618
|
+
}
|
|
3619
|
+
],
|
|
3620
|
+
events: [],
|
|
3621
|
+
slots: [],
|
|
3622
|
+
a11y: [
|
|
3623
|
+
"decorative_by_default: true",
|
|
3624
|
+
"becomes_image_when_labeled: true",
|
|
3625
|
+
"rule: Provide `label` only when the icon conveys meaning that is not already in adjacent text."
|
|
2959
3626
|
],
|
|
3627
|
+
behavior: [],
|
|
3628
|
+
selection: {
|
|
3629
|
+
keywords: [
|
|
3630
|
+
"icon",
|
|
3631
|
+
"svg",
|
|
3632
|
+
"glyph",
|
|
3633
|
+
"pictogram"
|
|
3634
|
+
],
|
|
3635
|
+
useWhen: [
|
|
3636
|
+
"You need to render a registered TreeUI icon by name.",
|
|
3637
|
+
"You want consistent sizing and a11y defaults without importing the icon component directly."
|
|
3638
|
+
],
|
|
3639
|
+
avoidWhen: [
|
|
3640
|
+
"The icon is not in the @treeui/icons registry \u2014 import or register it instead."
|
|
3641
|
+
],
|
|
3642
|
+
alternatives: [
|
|
3643
|
+
{
|
|
3644
|
+
component: "named import from @treeui/icons",
|
|
3645
|
+
when: "You need tree-shaken, statically-imported icon components."
|
|
3646
|
+
}
|
|
3647
|
+
]
|
|
3648
|
+
},
|
|
3649
|
+
setup: {
|
|
3650
|
+
required: [],
|
|
3651
|
+
notes: []
|
|
3652
|
+
},
|
|
3653
|
+
recipes: []
|
|
3654
|
+
},
|
|
3655
|
+
{
|
|
3656
|
+
name: "TInput",
|
|
3657
|
+
aliases: [],
|
|
2960
3658
|
package: "@treeui/vue",
|
|
2961
3659
|
kind: "primitive",
|
|
2962
3660
|
category: "Data Entry",
|
|
2963
3661
|
status: "available",
|
|
2964
3662
|
purpose: "Text input with size, loading, invalid, and prefix or suffix slots.",
|
|
2965
|
-
sourceFile: "packages/vue/src/components/
|
|
3663
|
+
sourceFile: "packages/vue/src/components/TInput.vue",
|
|
2966
3664
|
storyFile: "apps/docs/src/stories/Input.stories.ts",
|
|
2967
3665
|
storyTitle: "Components/Data Entry/Input",
|
|
2968
3666
|
manifestFile: "docs/ai/COMPONENTS/input.yaml",
|
|
@@ -2974,7 +3672,7 @@ var treeui_catalog_default = {
|
|
|
2974
3672
|
},
|
|
2975
3673
|
{
|
|
2976
3674
|
name: "size",
|
|
2977
|
-
type: "
|
|
3675
|
+
type: "TSize",
|
|
2978
3676
|
default: "md",
|
|
2979
3677
|
values: [
|
|
2980
3678
|
"sm",
|
|
@@ -3068,16 +3766,13 @@ var treeui_catalog_default = {
|
|
|
3068
3766
|
},
|
|
3069
3767
|
{
|
|
3070
3768
|
name: "TLink",
|
|
3071
|
-
|
|
3072
|
-
aliases: [
|
|
3073
|
-
"TreeLink"
|
|
3074
|
-
],
|
|
3769
|
+
aliases: [],
|
|
3075
3770
|
package: "@treeui/vue",
|
|
3076
3771
|
kind: "navigation",
|
|
3077
3772
|
category: "Navigation",
|
|
3078
3773
|
status: "available",
|
|
3079
3774
|
purpose: "Inline link with consistent styling, optional RouterLink rendering, and external link support.",
|
|
3080
|
-
sourceFile: "packages/vue/src/components/
|
|
3775
|
+
sourceFile: "packages/vue/src/components/TLink.vue",
|
|
3081
3776
|
storyFile: "apps/docs/src/stories/Link.stories.ts",
|
|
3082
3777
|
storyTitle: "Components/Navigation/Link",
|
|
3083
3778
|
manifestFile: "docs/ai/COMPONENTS/link.yaml",
|
|
@@ -3107,7 +3802,7 @@ var treeui_catalog_default = {
|
|
|
3107
3802
|
},
|
|
3108
3803
|
{
|
|
3109
3804
|
name: "variant",
|
|
3110
|
-
type: "
|
|
3805
|
+
type: "TLinkVariant",
|
|
3111
3806
|
default: "default",
|
|
3112
3807
|
values: [
|
|
3113
3808
|
"default",
|
|
@@ -3143,10 +3838,7 @@ var treeui_catalog_default = {
|
|
|
3143
3838
|
},
|
|
3144
3839
|
{
|
|
3145
3840
|
name: "TMarkdownEditor",
|
|
3146
|
-
|
|
3147
|
-
aliases: [
|
|
3148
|
-
"TreeMarkdownEditor"
|
|
3149
|
-
],
|
|
3841
|
+
aliases: [],
|
|
3150
3842
|
package: "@treeui/vue",
|
|
3151
3843
|
category: "Form",
|
|
3152
3844
|
status: "stable",
|
|
@@ -3163,7 +3855,7 @@ var treeui_catalog_default = {
|
|
|
3163
3855
|
},
|
|
3164
3856
|
{
|
|
3165
3857
|
name: "size",
|
|
3166
|
-
type: "
|
|
3858
|
+
type: "TSize",
|
|
3167
3859
|
default: "md",
|
|
3168
3860
|
values: [
|
|
3169
3861
|
"sm",
|
|
@@ -3248,16 +3940,13 @@ var treeui_catalog_default = {
|
|
|
3248
3940
|
},
|
|
3249
3941
|
{
|
|
3250
3942
|
name: "TModal",
|
|
3251
|
-
|
|
3252
|
-
aliases: [
|
|
3253
|
-
"TreeModal"
|
|
3254
|
-
],
|
|
3943
|
+
aliases: [],
|
|
3255
3944
|
package: "@treeui/vue",
|
|
3256
3945
|
kind: "overlay",
|
|
3257
3946
|
category: "Overlay",
|
|
3258
3947
|
status: "available",
|
|
3259
3948
|
purpose: "Accessible modal dialog for focused tasks and confirmations.",
|
|
3260
|
-
sourceFile: "packages/vue/src/components/
|
|
3949
|
+
sourceFile: "packages/vue/src/components/TModal.vue",
|
|
3261
3950
|
storyFile: "apps/docs/src/stories/Modal.stories.ts",
|
|
3262
3951
|
storyTitle: "Components/Overlay/Modal",
|
|
3263
3952
|
manifestFile: "docs/ai/COMPONENTS/modal.yaml",
|
|
@@ -3279,7 +3968,7 @@ var treeui_catalog_default = {
|
|
|
3279
3968
|
},
|
|
3280
3969
|
{
|
|
3281
3970
|
name: "size",
|
|
3282
|
-
type: "
|
|
3971
|
+
type: "TSize",
|
|
3283
3972
|
default: "md",
|
|
3284
3973
|
values: [
|
|
3285
3974
|
"sm",
|
|
@@ -3399,16 +4088,13 @@ var treeui_catalog_default = {
|
|
|
3399
4088
|
},
|
|
3400
4089
|
{
|
|
3401
4090
|
name: "TMultiSelect",
|
|
3402
|
-
|
|
3403
|
-
aliases: [
|
|
3404
|
-
"TreeMultiSelect"
|
|
3405
|
-
],
|
|
4091
|
+
aliases: [],
|
|
3406
4092
|
package: "@treeui/vue",
|
|
3407
4093
|
kind: "form",
|
|
3408
4094
|
category: "Data Entry",
|
|
3409
4095
|
status: "available",
|
|
3410
4096
|
purpose: "Searchable multi-select control that renders selected values as tags.",
|
|
3411
|
-
sourceFile: "packages/vue/src/components/
|
|
4097
|
+
sourceFile: "packages/vue/src/components/TMultiSelect.vue",
|
|
3412
4098
|
storyFile: "apps/docs/src/stories/MultiSelect.stories.ts",
|
|
3413
4099
|
storyTitle: "Components/Data Entry/MultiSelect",
|
|
3414
4100
|
manifestFile: "docs/ai/COMPONENTS/multi-select.yaml",
|
|
@@ -3420,7 +4106,7 @@ var treeui_catalog_default = {
|
|
|
3420
4106
|
},
|
|
3421
4107
|
{
|
|
3422
4108
|
name: "options",
|
|
3423
|
-
type: "
|
|
4109
|
+
type: "TMultiSelectOption[]",
|
|
3424
4110
|
default: "[]",
|
|
3425
4111
|
note: "Array of `{ label, value, description?, keywords?, disabled? }`."
|
|
3426
4112
|
},
|
|
@@ -3436,7 +4122,7 @@ var treeui_catalog_default = {
|
|
|
3436
4122
|
},
|
|
3437
4123
|
{
|
|
3438
4124
|
name: "size",
|
|
3439
|
-
type: "
|
|
4125
|
+
type: "TSize",
|
|
3440
4126
|
default: "md",
|
|
3441
4127
|
values: [
|
|
3442
4128
|
"sm",
|
|
@@ -3561,18 +4247,15 @@ var treeui_catalog_default = {
|
|
|
3561
4247
|
},
|
|
3562
4248
|
{
|
|
3563
4249
|
name: "TNavbar",
|
|
3564
|
-
legacyAlias: "TreeAppBar",
|
|
3565
4250
|
aliases: [
|
|
3566
|
-
"TAppBar"
|
|
3567
|
-
"TreeAppBar",
|
|
3568
|
-
"TreeNavbar"
|
|
4251
|
+
"TAppBar"
|
|
3569
4252
|
],
|
|
3570
4253
|
package: "@treeui/vue",
|
|
3571
4254
|
kind: "layout",
|
|
3572
4255
|
category: "Layout",
|
|
3573
4256
|
status: "available",
|
|
3574
4257
|
purpose: "Top application bar with start, center, and end content areas.",
|
|
3575
|
-
sourceFile: "packages/vue/src/components/
|
|
4258
|
+
sourceFile: "packages/vue/src/components/TNavbar.vue",
|
|
3576
4259
|
storyFile: "apps/docs/src/stories/Navbar.stories.ts",
|
|
3577
4260
|
storyTitle: "Components/Layout/Navbar",
|
|
3578
4261
|
manifestFile: "docs/ai/COMPONENTS/navbar.yaml",
|
|
@@ -3584,7 +4267,7 @@ var treeui_catalog_default = {
|
|
|
3584
4267
|
},
|
|
3585
4268
|
{
|
|
3586
4269
|
name: "size",
|
|
3587
|
-
type: "
|
|
4270
|
+
type: "TSize",
|
|
3588
4271
|
default: "md",
|
|
3589
4272
|
values: [
|
|
3590
4273
|
"sm",
|
|
@@ -3662,16 +4345,13 @@ var treeui_catalog_default = {
|
|
|
3662
4345
|
},
|
|
3663
4346
|
{
|
|
3664
4347
|
name: "TNavMenu",
|
|
3665
|
-
|
|
3666
|
-
aliases: [
|
|
3667
|
-
"TreeNavMenu"
|
|
3668
|
-
],
|
|
4348
|
+
aliases: [],
|
|
3669
4349
|
package: "@treeui/vue",
|
|
3670
4350
|
kind: "navigation",
|
|
3671
4351
|
category: "Layout",
|
|
3672
4352
|
status: "available",
|
|
3673
4353
|
purpose: "Vertical navigation menu with selection state, keyboard navigation, optional RouterLink rendering, and sidebar integration.",
|
|
3674
|
-
sourceFile: "packages/vue/src/components/
|
|
4354
|
+
sourceFile: "packages/vue/src/components/TNavMenu.vue",
|
|
3675
4355
|
storyFile: "apps/docs/src/stories/NavMenu.stories.ts",
|
|
3676
4356
|
storyTitle: "Components/Layout/NavMenu",
|
|
3677
4357
|
manifestFile: "docs/ai/COMPONENTS/nav-menu.yaml",
|
|
@@ -3688,13 +4368,13 @@ var treeui_catalog_default = {
|
|
|
3688
4368
|
},
|
|
3689
4369
|
{
|
|
3690
4370
|
name: "items",
|
|
3691
|
-
type: "
|
|
4371
|
+
type: "TNavMenuItem[]",
|
|
3692
4372
|
default: "[]",
|
|
3693
4373
|
note: "Array of `{ label, value, shortLabel?, description?, icon?, to?, badge?, disabled? }`."
|
|
3694
4374
|
},
|
|
3695
4375
|
{
|
|
3696
4376
|
name: "size",
|
|
3697
|
-
type: "
|
|
4377
|
+
type: "TSize",
|
|
3698
4378
|
default: "md",
|
|
3699
4379
|
values: [
|
|
3700
4380
|
"sm",
|
|
@@ -3769,25 +4449,23 @@ var treeui_catalog_default = {
|
|
|
3769
4449
|
setup: {
|
|
3770
4450
|
required: [],
|
|
3771
4451
|
notes: [
|
|
3772
|
-
"When nested inside `TSidebar`, `collapsed` can be inherited from the sidebar provider."
|
|
4452
|
+
"When nested inside `TSidebar` or `TAppShell`, `collapsed` can be inherited from the sidebar provider."
|
|
3773
4453
|
]
|
|
3774
4454
|
},
|
|
3775
4455
|
recipes: [
|
|
4456
|
+
"app-shell",
|
|
3776
4457
|
"sidebar-shell"
|
|
3777
4458
|
]
|
|
3778
4459
|
},
|
|
3779
4460
|
{
|
|
3780
4461
|
name: "TNumberInput",
|
|
3781
|
-
|
|
3782
|
-
aliases: [
|
|
3783
|
-
"TreeNumberInput"
|
|
3784
|
-
],
|
|
4462
|
+
aliases: [],
|
|
3785
4463
|
package: "@treeui/vue",
|
|
3786
4464
|
kind: "form",
|
|
3787
4465
|
category: "Data Entry",
|
|
3788
4466
|
status: "available",
|
|
3789
4467
|
purpose: "Numeric input with optional increment and decrement controls.",
|
|
3790
|
-
sourceFile: "packages/vue/src/components/
|
|
4468
|
+
sourceFile: "packages/vue/src/components/TNumberInput.vue",
|
|
3791
4469
|
storyFile: "apps/docs/src/stories/NumberInput.stories.ts",
|
|
3792
4470
|
storyTitle: "Components/Data Entry/NumberInput",
|
|
3793
4471
|
manifestFile: "docs/ai/COMPONENTS/number-input.yaml",
|
|
@@ -3813,7 +4491,7 @@ var treeui_catalog_default = {
|
|
|
3813
4491
|
},
|
|
3814
4492
|
{
|
|
3815
4493
|
name: "size",
|
|
3816
|
-
type: "
|
|
4494
|
+
type: "TSize",
|
|
3817
4495
|
default: "md",
|
|
3818
4496
|
values: [
|
|
3819
4497
|
"sm",
|
|
@@ -3888,16 +4566,13 @@ var treeui_catalog_default = {
|
|
|
3888
4566
|
},
|
|
3889
4567
|
{
|
|
3890
4568
|
name: "TPagination",
|
|
3891
|
-
|
|
3892
|
-
aliases: [
|
|
3893
|
-
"TreePagination"
|
|
3894
|
-
],
|
|
4569
|
+
aliases: [],
|
|
3895
4570
|
package: "@treeui/vue",
|
|
3896
4571
|
kind: "primitive",
|
|
3897
4572
|
category: "Navigation",
|
|
3898
4573
|
status: "available",
|
|
3899
4574
|
purpose: "Page controls with previous/next navigation, numbered page buttons, and ellipsis for large page ranges. Supports v-model for the active page.\n",
|
|
3900
|
-
sourceFile: "packages/vue/src/components/
|
|
4575
|
+
sourceFile: "packages/vue/src/components/TPagination.vue",
|
|
3901
4576
|
storyFile: "apps/docs/src/stories/Pagination.stories.ts",
|
|
3902
4577
|
storyTitle: "Components/Navigation/Pagination",
|
|
3903
4578
|
manifestFile: "docs/ai/COMPONENTS/pagination.yaml",
|
|
@@ -3922,7 +4597,7 @@ var treeui_catalog_default = {
|
|
|
3922
4597
|
},
|
|
3923
4598
|
{
|
|
3924
4599
|
name: "size",
|
|
3925
|
-
type: "
|
|
4600
|
+
type: "TSize",
|
|
3926
4601
|
default: "md",
|
|
3927
4602
|
values: [
|
|
3928
4603
|
"sm",
|
|
@@ -4004,10 +4679,7 @@ var treeui_catalog_default = {
|
|
|
4004
4679
|
},
|
|
4005
4680
|
{
|
|
4006
4681
|
name: "TPopover",
|
|
4007
|
-
|
|
4008
|
-
aliases: [
|
|
4009
|
-
"TreePopover"
|
|
4010
|
-
],
|
|
4682
|
+
aliases: [],
|
|
4011
4683
|
package: "@treeui/vue",
|
|
4012
4684
|
category: "Overlay",
|
|
4013
4685
|
status: "stable",
|
|
@@ -4110,10 +4782,7 @@ var treeui_catalog_default = {
|
|
|
4110
4782
|
},
|
|
4111
4783
|
{
|
|
4112
4784
|
name: "TPricing",
|
|
4113
|
-
|
|
4114
|
-
aliases: [
|
|
4115
|
-
"TreePricing"
|
|
4116
|
-
],
|
|
4785
|
+
aliases: [],
|
|
4117
4786
|
package: "@treeui/vue",
|
|
4118
4787
|
status: "stable",
|
|
4119
4788
|
description: "Grid wrapper that renders multiple PricingCard components from an array of plan objects.\n",
|
|
@@ -4129,7 +4798,7 @@ var treeui_catalog_default = {
|
|
|
4129
4798
|
},
|
|
4130
4799
|
{
|
|
4131
4800
|
name: "size",
|
|
4132
|
-
type: "
|
|
4801
|
+
type: "TSize",
|
|
4133
4802
|
default: "md",
|
|
4134
4803
|
description: "Size applied to all child pricing cards."
|
|
4135
4804
|
},
|
|
@@ -4177,10 +4846,7 @@ var treeui_catalog_default = {
|
|
|
4177
4846
|
},
|
|
4178
4847
|
{
|
|
4179
4848
|
name: "TPricingCard",
|
|
4180
|
-
|
|
4181
|
-
aliases: [
|
|
4182
|
-
"TreePricingCard"
|
|
4183
|
-
],
|
|
4849
|
+
aliases: [],
|
|
4184
4850
|
package: "@treeui/vue",
|
|
4185
4851
|
category: "Data Display",
|
|
4186
4852
|
status: "stable",
|
|
@@ -4245,7 +4911,7 @@ var treeui_catalog_default = {
|
|
|
4245
4911
|
},
|
|
4246
4912
|
{
|
|
4247
4913
|
name: "size",
|
|
4248
|
-
type: "
|
|
4914
|
+
type: "TSize",
|
|
4249
4915
|
default: "md",
|
|
4250
4916
|
description: "Card size \u2014 affects padding, font sizes."
|
|
4251
4917
|
},
|
|
@@ -4290,7 +4956,7 @@ var treeui_catalog_default = {
|
|
|
4290
4956
|
"Uses <h3> for plan title.",
|
|
4291
4957
|
'Feature list uses role="list" with <ul>/<li>.',
|
|
4292
4958
|
'Feature icons are aria-hidden="true".',
|
|
4293
|
-
"CTA button inherits
|
|
4959
|
+
"CTA button inherits TButton a11y (disabled, aria-busy)."
|
|
4294
4960
|
],
|
|
4295
4961
|
behavior: [],
|
|
4296
4962
|
selection: {
|
|
@@ -4309,10 +4975,7 @@ var treeui_catalog_default = {
|
|
|
4309
4975
|
},
|
|
4310
4976
|
{
|
|
4311
4977
|
name: "TProgress",
|
|
4312
|
-
|
|
4313
|
-
aliases: [
|
|
4314
|
-
"TreeProgress"
|
|
4315
|
-
],
|
|
4978
|
+
aliases: [],
|
|
4316
4979
|
package: "@treeui/vue",
|
|
4317
4980
|
category: "Feedback",
|
|
4318
4981
|
status: "draft",
|
|
@@ -4335,7 +4998,7 @@ var treeui_catalog_default = {
|
|
|
4335
4998
|
},
|
|
4336
4999
|
{
|
|
4337
5000
|
name: "size",
|
|
4338
|
-
type: "
|
|
5001
|
+
type: "TSize",
|
|
4339
5002
|
default: "md",
|
|
4340
5003
|
values: [
|
|
4341
5004
|
"sm",
|
|
@@ -4373,15 +5036,12 @@ var treeui_catalog_default = {
|
|
|
4373
5036
|
},
|
|
4374
5037
|
{
|
|
4375
5038
|
name: "TRadio",
|
|
4376
|
-
|
|
4377
|
-
aliases: [
|
|
4378
|
-
"TreeRadio"
|
|
4379
|
-
],
|
|
5039
|
+
aliases: [],
|
|
4380
5040
|
package: "@treeui/vue",
|
|
4381
5041
|
kind: "primitive",
|
|
4382
5042
|
status: "available",
|
|
4383
5043
|
purpose: "Single radio option within a TRadioGroup; renders a native radio input.",
|
|
4384
|
-
sourceFile: "packages/vue/src/components/
|
|
5044
|
+
sourceFile: "packages/vue/src/components/TRadio.vue",
|
|
4385
5045
|
manifestFile: "docs/ai/COMPONENTS/radio.yaml",
|
|
4386
5046
|
props: [
|
|
4387
5047
|
{
|
|
@@ -4401,7 +5061,7 @@ var treeui_catalog_default = {
|
|
|
4401
5061
|
},
|
|
4402
5062
|
{
|
|
4403
5063
|
name: "size",
|
|
4404
|
-
type: "
|
|
5064
|
+
type: "TSize",
|
|
4405
5065
|
default: "inherited_from_group",
|
|
4406
5066
|
values: [
|
|
4407
5067
|
"sm",
|
|
@@ -4444,16 +5104,13 @@ var treeui_catalog_default = {
|
|
|
4444
5104
|
},
|
|
4445
5105
|
{
|
|
4446
5106
|
name: "TRadioGroup",
|
|
4447
|
-
|
|
4448
|
-
aliases: [
|
|
4449
|
-
"TreeRadioGroup"
|
|
4450
|
-
],
|
|
5107
|
+
aliases: [],
|
|
4451
5108
|
package: "@treeui/vue",
|
|
4452
5109
|
kind: "primitive",
|
|
4453
5110
|
category: "Data Entry",
|
|
4454
5111
|
status: "available",
|
|
4455
5112
|
purpose: "Container for TRadio options; manages v-model for single-select from a group.",
|
|
4456
|
-
sourceFile: "packages/vue/src/components/
|
|
5113
|
+
sourceFile: "packages/vue/src/components/TRadioGroup.vue",
|
|
4457
5114
|
storyFile: "apps/docs/src/stories/Radio.stories.ts",
|
|
4458
5115
|
storyTitle: "Components/Data Entry/Radio",
|
|
4459
5116
|
manifestFile: "docs/ai/COMPONENTS/radio.yaml",
|
|
@@ -4480,7 +5137,7 @@ var treeui_catalog_default = {
|
|
|
4480
5137
|
},
|
|
4481
5138
|
{
|
|
4482
5139
|
name: "size",
|
|
4483
|
-
type: "
|
|
5140
|
+
type: "TSize",
|
|
4484
5141
|
default: "md",
|
|
4485
5142
|
values: [
|
|
4486
5143
|
"sm",
|
|
@@ -4522,16 +5179,13 @@ var treeui_catalog_default = {
|
|
|
4522
5179
|
},
|
|
4523
5180
|
{
|
|
4524
5181
|
name: "TSelect",
|
|
4525
|
-
|
|
4526
|
-
aliases: [
|
|
4527
|
-
"TreeSelect"
|
|
4528
|
-
],
|
|
5182
|
+
aliases: [],
|
|
4529
5183
|
package: "@treeui/vue",
|
|
4530
5184
|
kind: "primitive",
|
|
4531
5185
|
category: "Data Entry",
|
|
4532
5186
|
status: "available",
|
|
4533
5187
|
purpose: "Custom styled dropdown select with listbox; controlled and uncontrolled via v-model and open/defaultOpen.",
|
|
4534
|
-
sourceFile: "packages/vue/src/components/
|
|
5188
|
+
sourceFile: "packages/vue/src/components/TSelect.vue",
|
|
4535
5189
|
storyFile: "apps/docs/src/stories/Select.stories.ts",
|
|
4536
5190
|
storyTitle: "Components/Data Entry/Select",
|
|
4537
5191
|
manifestFile: "docs/ai/COMPONENTS/select.yaml",
|
|
@@ -4543,7 +5197,7 @@ var treeui_catalog_default = {
|
|
|
4543
5197
|
},
|
|
4544
5198
|
{
|
|
4545
5199
|
name: "options",
|
|
4546
|
-
type: "
|
|
5200
|
+
type: "TSelectOption[]",
|
|
4547
5201
|
default: "[]",
|
|
4548
5202
|
note: "Array of { label: string; value: string | number; disabled?: boolean }"
|
|
4549
5203
|
},
|
|
@@ -4559,7 +5213,7 @@ var treeui_catalog_default = {
|
|
|
4559
5213
|
},
|
|
4560
5214
|
{
|
|
4561
5215
|
name: "size",
|
|
4562
|
-
type: "
|
|
5216
|
+
type: "TSize",
|
|
4563
5217
|
default: "md",
|
|
4564
5218
|
values: [
|
|
4565
5219
|
"sm",
|
|
@@ -4626,7 +5280,8 @@ var treeui_catalog_default = {
|
|
|
4626
5280
|
"check_icon_on_selected_option: true",
|
|
4627
5281
|
"outside_click_closes_dropdown: true",
|
|
4628
5282
|
"focus_restores_on_close: true",
|
|
4629
|
-
"numeric_values_supported_without_string_coercion: true"
|
|
5283
|
+
"numeric_values_supported_without_string_coercion: true",
|
|
5284
|
+
"listbox_flips_above_trigger_when_space_below_is_insufficient: true"
|
|
4630
5285
|
],
|
|
4631
5286
|
selection: {
|
|
4632
5287
|
keywords: [
|
|
@@ -4659,20 +5314,19 @@ var treeui_catalog_default = {
|
|
|
4659
5314
|
"Use `placeholder` when no selection has been made."
|
|
4660
5315
|
]
|
|
4661
5316
|
},
|
|
4662
|
-
recipes: [
|
|
5317
|
+
recipes: [
|
|
5318
|
+
"chart-surface"
|
|
5319
|
+
]
|
|
4663
5320
|
},
|
|
4664
5321
|
{
|
|
4665
5322
|
name: "TSelectableList",
|
|
4666
|
-
|
|
4667
|
-
aliases: [
|
|
4668
|
-
"TreeSelectableList"
|
|
4669
|
-
],
|
|
5323
|
+
aliases: [],
|
|
4670
5324
|
package: "@treeui/vue",
|
|
4671
5325
|
kind: "selection",
|
|
4672
5326
|
category: "Navigation & Disclosure",
|
|
4673
5327
|
status: "available",
|
|
4674
5328
|
purpose: "Rich single-selection list for options with description and metadata.",
|
|
4675
|
-
sourceFile: "packages/vue/src/components/
|
|
5329
|
+
sourceFile: "packages/vue/src/components/TSelectableList.vue",
|
|
4676
5330
|
storyFile: "apps/docs/src/stories/SelectableList.stories.ts",
|
|
4677
5331
|
storyTitle: "Components/Navigation & Disclosure/SelectableList",
|
|
4678
5332
|
manifestFile: "docs/ai/COMPONENTS/selectable-list.yaml",
|
|
@@ -4689,13 +5343,13 @@ var treeui_catalog_default = {
|
|
|
4689
5343
|
},
|
|
4690
5344
|
{
|
|
4691
5345
|
name: "items",
|
|
4692
|
-
type: "
|
|
5346
|
+
type: "TSelectableListItem[]",
|
|
4693
5347
|
default: "[]",
|
|
4694
5348
|
note: "Array of `{ label, value, description?, meta?, disabled? }`."
|
|
4695
5349
|
},
|
|
4696
5350
|
{
|
|
4697
5351
|
name: "size",
|
|
4698
|
-
type: "
|
|
5352
|
+
type: "TSize",
|
|
4699
5353
|
default: "md",
|
|
4700
5354
|
values: [
|
|
4701
5355
|
"sm",
|
|
@@ -4772,16 +5426,13 @@ var treeui_catalog_default = {
|
|
|
4772
5426
|
},
|
|
4773
5427
|
{
|
|
4774
5428
|
name: "TSidebar",
|
|
4775
|
-
|
|
4776
|
-
aliases: [
|
|
4777
|
-
"TreeSidebar"
|
|
4778
|
-
],
|
|
5429
|
+
aliases: [],
|
|
4779
5430
|
package: "@treeui/vue",
|
|
4780
5431
|
kind: "layout",
|
|
4781
5432
|
category: "Layout",
|
|
4782
5433
|
status: "available",
|
|
4783
5434
|
purpose: "Persistent or collapsible side shell for app navigation and secondary workspace controls.",
|
|
4784
|
-
sourceFile: "packages/vue/src/components/
|
|
5435
|
+
sourceFile: "packages/vue/src/components/TSidebar.vue",
|
|
4785
5436
|
storyFile: "apps/docs/src/stories/Sidebar.stories.ts",
|
|
4786
5437
|
storyTitle: "Components/Layout/Sidebar",
|
|
4787
5438
|
manifestFile: "docs/ai/COMPONENTS/sidebar.yaml",
|
|
@@ -4808,7 +5459,7 @@ var treeui_catalog_default = {
|
|
|
4808
5459
|
},
|
|
4809
5460
|
{
|
|
4810
5461
|
name: "size",
|
|
4811
|
-
type: "
|
|
5462
|
+
type: "TSize",
|
|
4812
5463
|
default: "md",
|
|
4813
5464
|
values: [
|
|
4814
5465
|
"sm",
|
|
@@ -4818,7 +5469,7 @@ var treeui_catalog_default = {
|
|
|
4818
5469
|
},
|
|
4819
5470
|
{
|
|
4820
5471
|
name: "side",
|
|
4821
|
-
type: "
|
|
5472
|
+
type: "TSidebarSide",
|
|
4822
5473
|
default: "left",
|
|
4823
5474
|
values: [
|
|
4824
5475
|
"left",
|
|
@@ -4887,7 +5538,8 @@ var treeui_catalog_default = {
|
|
|
4887
5538
|
"controlled_and_uncontrolled_collapsed_state: true",
|
|
4888
5539
|
"provides_collapsed_state_to_descendants: true",
|
|
4889
5540
|
"left_and_right_variants: true",
|
|
4890
|
-
"exposes_slot_props_with_collapsed_state: true"
|
|
5541
|
+
"exposes_slot_props_with_collapsed_state: true",
|
|
5542
|
+
"collapsed_state_centers_header_and_footer_content: true"
|
|
4891
5543
|
],
|
|
4892
5544
|
selection: {
|
|
4893
5545
|
keywords: [
|
|
@@ -4912,7 +5564,8 @@ var treeui_catalog_default = {
|
|
|
4912
5564
|
required: [],
|
|
4913
5565
|
notes: [
|
|
4914
5566
|
"Pair with `TNavMenu` for app-section navigation.",
|
|
4915
|
-
"Use controlled `collapsed` state when the app shell persists layout preferences."
|
|
5567
|
+
"Use controlled `collapsed` state when the app shell persists layout preferences.",
|
|
5568
|
+
"Prefer `TAppShell` when you also want full-viewport sizing, a top header, and a responsive mobile drawer."
|
|
4916
5569
|
]
|
|
4917
5570
|
},
|
|
4918
5571
|
recipes: [
|
|
@@ -4921,16 +5574,13 @@ var treeui_catalog_default = {
|
|
|
4921
5574
|
},
|
|
4922
5575
|
{
|
|
4923
5576
|
name: "TSkeleton",
|
|
4924
|
-
|
|
4925
|
-
aliases: [
|
|
4926
|
-
"TreeSkeleton"
|
|
4927
|
-
],
|
|
5577
|
+
aliases: [],
|
|
4928
5578
|
package: "@treeui/vue",
|
|
4929
5579
|
kind: "feedback",
|
|
4930
5580
|
category: "Feedback",
|
|
4931
5581
|
status: "available",
|
|
4932
5582
|
purpose: "Placeholder shimmer for loading states. Renders an animated block that indicates content is being loaded.",
|
|
4933
|
-
sourceFile: "packages/vue/src/components/
|
|
5583
|
+
sourceFile: "packages/vue/src/components/TSkeleton.vue",
|
|
4934
5584
|
storyFile: "apps/docs/src/stories/Skeleton.stories.ts",
|
|
4935
5585
|
storyTitle: "Components/Feedback/Skeleton",
|
|
4936
5586
|
manifestFile: "docs/ai/COMPONENTS/skeleton.yaml",
|
|
@@ -4986,24 +5636,144 @@ var treeui_catalog_default = {
|
|
|
4986
5636
|
recipes: []
|
|
4987
5637
|
},
|
|
4988
5638
|
{
|
|
4989
|
-
name: "
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
5639
|
+
name: "TSparkline",
|
|
5640
|
+
aliases: [],
|
|
5641
|
+
package: "@treeui/vue",
|
|
5642
|
+
kind: "data-display",
|
|
5643
|
+
category: "Data Display",
|
|
5644
|
+
status: "available",
|
|
5645
|
+
purpose: "Tiny, axis-less inline trend chart (line, area, or bar) sized for stat tiles, table cells, and running text.",
|
|
5646
|
+
sourceFile: "packages/vue/src/components/TSparkline.vue",
|
|
5647
|
+
storyFile: "apps/docs/src/stories/Sparkline.stories.ts",
|
|
5648
|
+
storyTitle: "Components/Data Display/Sparkline",
|
|
5649
|
+
manifestFile: "docs/ai/COMPONENTS/sparkline.yaml",
|
|
5650
|
+
props: [
|
|
5651
|
+
{
|
|
5652
|
+
name: "data",
|
|
5653
|
+
type: "number[]",
|
|
5654
|
+
default: "[]"
|
|
5655
|
+
},
|
|
5656
|
+
{
|
|
5657
|
+
name: "type",
|
|
5658
|
+
type: "line | area | bar",
|
|
5659
|
+
default: "line"
|
|
5660
|
+
},
|
|
5661
|
+
{
|
|
5662
|
+
name: "color",
|
|
5663
|
+
type: "string",
|
|
5664
|
+
default: "var(--tree-color-chart-1)",
|
|
5665
|
+
note: "Any CSS color."
|
|
5666
|
+
},
|
|
5667
|
+
{
|
|
5668
|
+
name: "width",
|
|
5669
|
+
type: "number",
|
|
5670
|
+
default: "120"
|
|
5671
|
+
},
|
|
5672
|
+
{
|
|
5673
|
+
name: "height",
|
|
5674
|
+
type: "number",
|
|
5675
|
+
default: "32"
|
|
5676
|
+
},
|
|
5677
|
+
{
|
|
5678
|
+
name: "smooth",
|
|
5679
|
+
type: "boolean",
|
|
5680
|
+
default: "false",
|
|
5681
|
+
note: "Curved line/area."
|
|
5682
|
+
},
|
|
5683
|
+
{
|
|
5684
|
+
name: "strokeWidth",
|
|
5685
|
+
type: "number",
|
|
5686
|
+
default: "2",
|
|
5687
|
+
note: "Line/area only."
|
|
5688
|
+
},
|
|
5689
|
+
{
|
|
5690
|
+
name: "min",
|
|
5691
|
+
type: "number",
|
|
5692
|
+
default: "data min"
|
|
5693
|
+
},
|
|
5694
|
+
{
|
|
5695
|
+
name: "max",
|
|
5696
|
+
type: "number",
|
|
5697
|
+
default: "data max"
|
|
5698
|
+
},
|
|
5699
|
+
{
|
|
5700
|
+
name: "showLastPoint",
|
|
5701
|
+
type: "boolean",
|
|
5702
|
+
default: "false",
|
|
5703
|
+
note: "Marker on the final point (line/area)."
|
|
5704
|
+
},
|
|
5705
|
+
{
|
|
5706
|
+
name: "ariaLabel",
|
|
5707
|
+
type: "string",
|
|
5708
|
+
default: "Trend sparkline"
|
|
5709
|
+
}
|
|
4993
5710
|
],
|
|
5711
|
+
events: [],
|
|
5712
|
+
slots: [],
|
|
5713
|
+
a11y: [
|
|
5714
|
+
"Renders role=img with an aria-label; pass a specific one for meaningful trends.",
|
|
5715
|
+
"Pair with a visible number \u2014 a sparkline supplements a value, it does not replace it."
|
|
5716
|
+
],
|
|
5717
|
+
behavior: [
|
|
5718
|
+
"no_axes_or_legend: true",
|
|
5719
|
+
"flat_series_renders_centered: true",
|
|
5720
|
+
"scales_to_intrinsic_width_and_height: true"
|
|
5721
|
+
],
|
|
5722
|
+
selection: {
|
|
5723
|
+
keywords: [
|
|
5724
|
+
"sparkline",
|
|
5725
|
+
"mini chart",
|
|
5726
|
+
"inline chart",
|
|
5727
|
+
"micro trend",
|
|
5728
|
+
"trend line",
|
|
5729
|
+
"table chart"
|
|
5730
|
+
],
|
|
5731
|
+
useWhen: [
|
|
5732
|
+
"You want a compact trend beside a value, in a table cell, or inline in text.",
|
|
5733
|
+
"No axes, legend, or tooltip are required."
|
|
5734
|
+
],
|
|
5735
|
+
avoidWhen: [
|
|
5736
|
+
"You need axes, multiple labeled series, or a tooltip \u2014 use TChart."
|
|
5737
|
+
],
|
|
5738
|
+
alternatives: [
|
|
5739
|
+
{
|
|
5740
|
+
component: "TChart",
|
|
5741
|
+
when: "The chart needs axes, a legend, or a tooltip."
|
|
5742
|
+
},
|
|
5743
|
+
{
|
|
5744
|
+
component: "TStat",
|
|
5745
|
+
when: "A single value with a trend badge is enough."
|
|
5746
|
+
}
|
|
5747
|
+
]
|
|
5748
|
+
},
|
|
5749
|
+
setup: {
|
|
5750
|
+
required: [],
|
|
5751
|
+
notes: [
|
|
5752
|
+
"Pass `data` as `number[]`; there are no axes, legend, or tooltip by design.",
|
|
5753
|
+
"Size it with `width`/`height`; use it inside `TStat`, table cells, or text.",
|
|
5754
|
+
"Always keep a visible number nearby \u2014 a sparkline supplements a value, it does not replace it."
|
|
5755
|
+
]
|
|
5756
|
+
},
|
|
5757
|
+
recipes: [
|
|
5758
|
+
"metric-dashboard"
|
|
5759
|
+
]
|
|
5760
|
+
},
|
|
5761
|
+
{
|
|
5762
|
+
name: "TSpinner",
|
|
5763
|
+
aliases: [],
|
|
4994
5764
|
package: "@treeui/vue",
|
|
4995
5765
|
kind: "feedback",
|
|
4996
5766
|
category: "Feedback",
|
|
4997
5767
|
status: "available",
|
|
4998
5768
|
purpose: "Accessible loading indicator.",
|
|
4999
|
-
sourceFile: "packages/vue/src/components/
|
|
5769
|
+
sourceFile: "packages/vue/src/components/TSpinner.vue",
|
|
5000
5770
|
storyFile: "apps/docs/src/stories/Spinner.stories.ts",
|
|
5001
5771
|
storyTitle: "Components/Feedback/Spinner",
|
|
5002
5772
|
manifestFile: "docs/ai/COMPONENTS/spinner.yaml",
|
|
5003
5773
|
props: [
|
|
5004
5774
|
{
|
|
5005
5775
|
name: "size",
|
|
5006
|
-
type: "
|
|
5776
|
+
type: "TSize",
|
|
5007
5777
|
default: "md",
|
|
5008
5778
|
values: [
|
|
5009
5779
|
"sm",
|
|
@@ -5039,16 +5809,13 @@ var treeui_catalog_default = {
|
|
|
5039
5809
|
},
|
|
5040
5810
|
{
|
|
5041
5811
|
name: "TStack",
|
|
5042
|
-
|
|
5043
|
-
aliases: [
|
|
5044
|
-
"TreeStack"
|
|
5045
|
-
],
|
|
5812
|
+
aliases: [],
|
|
5046
5813
|
package: "@treeui/vue",
|
|
5047
5814
|
kind: "layout",
|
|
5048
5815
|
category: "Layout",
|
|
5049
5816
|
status: "available",
|
|
5050
5817
|
purpose: "One-dimensional spacing and alignment wrapper for vertical or horizontal compositions.",
|
|
5051
|
-
sourceFile: "packages/vue/src/components/
|
|
5818
|
+
sourceFile: "packages/vue/src/components/TStack.vue",
|
|
5052
5819
|
storyFile: "apps/docs/src/stories/Stack.stories.ts",
|
|
5053
5820
|
storyTitle: "Components/Layout/Stack",
|
|
5054
5821
|
manifestFile: "docs/ai/COMPONENTS/stack.yaml",
|
|
@@ -5060,7 +5827,7 @@ var treeui_catalog_default = {
|
|
|
5060
5827
|
},
|
|
5061
5828
|
{
|
|
5062
5829
|
name: "direction",
|
|
5063
|
-
type: "
|
|
5830
|
+
type: "TStackDirection",
|
|
5064
5831
|
default: "vertical",
|
|
5065
5832
|
values: [
|
|
5066
5833
|
"vertical",
|
|
@@ -5140,16 +5907,13 @@ var treeui_catalog_default = {
|
|
|
5140
5907
|
},
|
|
5141
5908
|
{
|
|
5142
5909
|
name: "TStat",
|
|
5143
|
-
|
|
5144
|
-
aliases: [
|
|
5145
|
-
"TreeStat"
|
|
5146
|
-
],
|
|
5910
|
+
aliases: [],
|
|
5147
5911
|
package: "@treeui/vue",
|
|
5148
5912
|
kind: "data-display",
|
|
5149
5913
|
category: "Data Display",
|
|
5150
5914
|
status: "available",
|
|
5151
5915
|
purpose: "Compact KPI display with label, value, trend, metadata, and optional icon.",
|
|
5152
|
-
sourceFile: "packages/vue/src/components/
|
|
5916
|
+
sourceFile: "packages/vue/src/components/TStat.vue",
|
|
5153
5917
|
storyFile: "apps/docs/src/stories/Stat.stories.ts",
|
|
5154
5918
|
storyTitle: "Components/Data Display/Stat",
|
|
5155
5919
|
manifestFile: "docs/ai/COMPONENTS/stat.yaml",
|
|
@@ -5176,7 +5940,7 @@ var treeui_catalog_default = {
|
|
|
5176
5940
|
},
|
|
5177
5941
|
{
|
|
5178
5942
|
name: "tone",
|
|
5179
|
-
type: "
|
|
5943
|
+
type: "TStatTone",
|
|
5180
5944
|
default: "neutral",
|
|
5181
5945
|
values: [
|
|
5182
5946
|
"neutral",
|
|
@@ -5188,7 +5952,7 @@ var treeui_catalog_default = {
|
|
|
5188
5952
|
},
|
|
5189
5953
|
{
|
|
5190
5954
|
name: "trendDirection",
|
|
5191
|
-
type: "
|
|
5955
|
+
type: "TStatTrendDirection",
|
|
5192
5956
|
default: "neutral",
|
|
5193
5957
|
values: [
|
|
5194
5958
|
"up",
|
|
@@ -5247,6 +6011,10 @@ var treeui_catalog_default = {
|
|
|
5247
6011
|
{
|
|
5248
6012
|
component: "TCard",
|
|
5249
6013
|
when: "The content is not a metric."
|
|
6014
|
+
},
|
|
6015
|
+
{
|
|
6016
|
+
component: "TSparkline",
|
|
6017
|
+
when: "You want to show the metric's trend as an inline mini-chart."
|
|
5250
6018
|
}
|
|
5251
6019
|
]
|
|
5252
6020
|
},
|
|
@@ -5255,23 +6023,21 @@ var treeui_catalog_default = {
|
|
|
5255
6023
|
notes: []
|
|
5256
6024
|
},
|
|
5257
6025
|
recipes: [
|
|
5258
|
-
"stat-grid"
|
|
6026
|
+
"stat-grid",
|
|
6027
|
+
"metric-dashboard"
|
|
5259
6028
|
]
|
|
5260
6029
|
},
|
|
5261
6030
|
{
|
|
5262
6031
|
name: "TSteps",
|
|
5263
|
-
legacyAlias: "TreeStepper",
|
|
5264
6032
|
aliases: [
|
|
5265
|
-
"TStepper"
|
|
5266
|
-
"TreeStepper",
|
|
5267
|
-
"TreeSteps"
|
|
6033
|
+
"TStepper"
|
|
5268
6034
|
],
|
|
5269
6035
|
package: "@treeui/vue",
|
|
5270
6036
|
kind: "navigation",
|
|
5271
6037
|
category: "Navigation & Disclosure",
|
|
5272
6038
|
status: "available",
|
|
5273
6039
|
purpose: "Stepper component for visualizing workflow progress, with optional interactive selection.",
|
|
5274
|
-
sourceFile: "packages/vue/src/components/
|
|
6040
|
+
sourceFile: "packages/vue/src/components/TSteps.vue",
|
|
5275
6041
|
storyFile: "apps/docs/src/stories/Steps.stories.ts",
|
|
5276
6042
|
storyTitle: "Components/Navigation & Disclosure/Steps",
|
|
5277
6043
|
manifestFile: "docs/ai/COMPONENTS/steps.yaml",
|
|
@@ -5288,13 +6054,13 @@ var treeui_catalog_default = {
|
|
|
5288
6054
|
},
|
|
5289
6055
|
{
|
|
5290
6056
|
name: "items",
|
|
5291
|
-
type: "
|
|
6057
|
+
type: "TStepItem[]",
|
|
5292
6058
|
default: "[]",
|
|
5293
6059
|
note: "Array of `{ label, value, description?, meta?, status?, disabled? }`."
|
|
5294
6060
|
},
|
|
5295
6061
|
{
|
|
5296
6062
|
name: "size",
|
|
5297
|
-
type: "
|
|
6063
|
+
type: "TSize",
|
|
5298
6064
|
default: "md",
|
|
5299
6065
|
values: [
|
|
5300
6066
|
"sm",
|
|
@@ -5304,7 +6070,7 @@ var treeui_catalog_default = {
|
|
|
5304
6070
|
},
|
|
5305
6071
|
{
|
|
5306
6072
|
name: "orientation",
|
|
5307
|
-
type: "
|
|
6073
|
+
type: "TStepOrientation",
|
|
5308
6074
|
default: "horizontal",
|
|
5309
6075
|
values: [
|
|
5310
6076
|
"horizontal",
|
|
@@ -5367,16 +6133,13 @@ var treeui_catalog_default = {
|
|
|
5367
6133
|
},
|
|
5368
6134
|
{
|
|
5369
6135
|
name: "TSwitch",
|
|
5370
|
-
|
|
5371
|
-
aliases: [
|
|
5372
|
-
"TreeSwitch"
|
|
5373
|
-
],
|
|
6136
|
+
aliases: [],
|
|
5374
6137
|
package: "@treeui/vue",
|
|
5375
6138
|
kind: "primitive",
|
|
5376
6139
|
category: "Data Entry",
|
|
5377
6140
|
status: "available",
|
|
5378
6141
|
purpose: "On/off toggle; semantic alternative to checkbox for settings. Supports v-model via modelValue.",
|
|
5379
|
-
sourceFile: "packages/vue/src/components/
|
|
6142
|
+
sourceFile: "packages/vue/src/components/TSwitch.vue",
|
|
5380
6143
|
storyFile: "apps/docs/src/stories/Switch.stories.ts",
|
|
5381
6144
|
storyTitle: "Components/Data Entry/Switch",
|
|
5382
6145
|
manifestFile: "docs/ai/COMPONENTS/switch.yaml",
|
|
@@ -5388,7 +6151,7 @@ var treeui_catalog_default = {
|
|
|
5388
6151
|
},
|
|
5389
6152
|
{
|
|
5390
6153
|
name: "size",
|
|
5391
|
-
type: "
|
|
6154
|
+
type: "TSize",
|
|
5392
6155
|
default: "md",
|
|
5393
6156
|
values: [
|
|
5394
6157
|
"sm",
|
|
@@ -5459,21 +6222,18 @@ var treeui_catalog_default = {
|
|
|
5459
6222
|
},
|
|
5460
6223
|
{
|
|
5461
6224
|
name: "TTable",
|
|
5462
|
-
|
|
5463
|
-
aliases: [
|
|
5464
|
-
"TreeTable"
|
|
5465
|
-
],
|
|
6225
|
+
aliases: [],
|
|
5466
6226
|
package: "@treeui/vue",
|
|
5467
6227
|
category: "Data Display",
|
|
5468
6228
|
description: "Sortable, accessible data table with column definitions and row data.",
|
|
5469
|
-
sourceFile: "packages/vue/src/components/
|
|
6229
|
+
sourceFile: "packages/vue/src/components/TTable.vue",
|
|
5470
6230
|
storyFile: "apps/docs/src/stories/Table.stories.ts",
|
|
5471
6231
|
storyTitle: "Components/Data Display/Table",
|
|
5472
6232
|
manifestFile: "docs/ai/COMPONENTS/table.yaml",
|
|
5473
6233
|
props: [
|
|
5474
6234
|
{
|
|
5475
6235
|
name: "columns",
|
|
5476
|
-
type: "
|
|
6236
|
+
type: "TTableColumn[]",
|
|
5477
6237
|
required: true,
|
|
5478
6238
|
description: "Array of column definitions with key, label, sortable, align, and width."
|
|
5479
6239
|
},
|
|
@@ -5485,7 +6245,7 @@ var treeui_catalog_default = {
|
|
|
5485
6245
|
},
|
|
5486
6246
|
{
|
|
5487
6247
|
name: "size",
|
|
5488
|
-
type: "
|
|
6248
|
+
type: "TSize",
|
|
5489
6249
|
default: "md",
|
|
5490
6250
|
values: [
|
|
5491
6251
|
"sm",
|
|
@@ -5495,7 +6255,7 @@ var treeui_catalog_default = {
|
|
|
5495
6255
|
},
|
|
5496
6256
|
{
|
|
5497
6257
|
name: "sortBy",
|
|
5498
|
-
type: "
|
|
6258
|
+
type: "TTableSortState",
|
|
5499
6259
|
required: false,
|
|
5500
6260
|
description: "Controlled sort state. When provided, overrides internal sort tracking."
|
|
5501
6261
|
}
|
|
@@ -5504,7 +6264,7 @@ var treeui_catalog_default = {
|
|
|
5504
6264
|
{
|
|
5505
6265
|
name: "sort",
|
|
5506
6266
|
description: "Emitted when a sortable column header is clicked.",
|
|
5507
|
-
payload: "
|
|
6267
|
+
payload: "TTableSortState"
|
|
5508
6268
|
}
|
|
5509
6269
|
],
|
|
5510
6270
|
slots: [
|
|
@@ -5563,16 +6323,13 @@ var treeui_catalog_default = {
|
|
|
5563
6323
|
},
|
|
5564
6324
|
{
|
|
5565
6325
|
name: "TTabs",
|
|
5566
|
-
|
|
5567
|
-
aliases: [
|
|
5568
|
-
"TreeTabs"
|
|
5569
|
-
],
|
|
6326
|
+
aliases: [],
|
|
5570
6327
|
package: "@treeui/vue",
|
|
5571
6328
|
kind: "navigation",
|
|
5572
6329
|
category: "Navigation",
|
|
5573
6330
|
status: "available",
|
|
5574
6331
|
purpose: "Tabbed panel navigation with full keyboard support and automatic/manual activation modes.",
|
|
5575
|
-
sourceFile: "packages/vue/src/components/
|
|
6332
|
+
sourceFile: "packages/vue/src/components/TTabs.vue",
|
|
5576
6333
|
storyFile: "apps/docs/src/stories/Tabs.stories.ts",
|
|
5577
6334
|
storyTitle: "Components/Navigation/Tabs",
|
|
5578
6335
|
manifestFile: "docs/ai/COMPONENTS/tabs.yaml",
|
|
@@ -5591,7 +6348,7 @@ var treeui_catalog_default = {
|
|
|
5591
6348
|
},
|
|
5592
6349
|
{
|
|
5593
6350
|
name: "size",
|
|
5594
|
-
type: "
|
|
6351
|
+
type: "TSize",
|
|
5595
6352
|
default: "md",
|
|
5596
6353
|
values: [
|
|
5597
6354
|
"sm",
|
|
@@ -5672,21 +6429,18 @@ var treeui_catalog_default = {
|
|
|
5672
6429
|
},
|
|
5673
6430
|
{
|
|
5674
6431
|
name: "TTag",
|
|
5675
|
-
|
|
5676
|
-
aliases: [
|
|
5677
|
-
"TreeTag"
|
|
5678
|
-
],
|
|
6432
|
+
aliases: [],
|
|
5679
6433
|
package: "@treeui/vue",
|
|
5680
6434
|
category: "Data Display",
|
|
5681
6435
|
description: "Removable label/chip for filters and selections.",
|
|
5682
|
-
sourceFile: "packages/vue/src/components/
|
|
6436
|
+
sourceFile: "packages/vue/src/components/TTag.vue",
|
|
5683
6437
|
storyFile: "apps/docs/src/stories/Tag.stories.ts",
|
|
5684
6438
|
storyTitle: "Components/Data Display/Tag",
|
|
5685
6439
|
manifestFile: "docs/ai/COMPONENTS/tag.yaml",
|
|
5686
6440
|
props: [
|
|
5687
6441
|
{
|
|
5688
6442
|
name: "variant",
|
|
5689
|
-
type: "
|
|
6443
|
+
type: "TTagVariant",
|
|
5690
6444
|
default: "soft",
|
|
5691
6445
|
values: [
|
|
5692
6446
|
"solid",
|
|
@@ -5696,7 +6450,7 @@ var treeui_catalog_default = {
|
|
|
5696
6450
|
},
|
|
5697
6451
|
{
|
|
5698
6452
|
name: "size",
|
|
5699
|
-
type: "
|
|
6453
|
+
type: "TSize",
|
|
5700
6454
|
default: "md",
|
|
5701
6455
|
values: [
|
|
5702
6456
|
"sm",
|
|
@@ -5755,16 +6509,13 @@ var treeui_catalog_default = {
|
|
|
5755
6509
|
},
|
|
5756
6510
|
{
|
|
5757
6511
|
name: "TTextarea",
|
|
5758
|
-
|
|
5759
|
-
aliases: [
|
|
5760
|
-
"TreeTextarea"
|
|
5761
|
-
],
|
|
6512
|
+
aliases: [],
|
|
5762
6513
|
package: "@treeui/vue",
|
|
5763
6514
|
kind: "primitive",
|
|
5764
6515
|
category: "Data Entry",
|
|
5765
6516
|
status: "available",
|
|
5766
6517
|
purpose: "Multi-line text field with size, loading, invalid states, and auto-grow option.",
|
|
5767
|
-
sourceFile: "packages/vue/src/components/
|
|
6518
|
+
sourceFile: "packages/vue/src/components/TTextarea.vue",
|
|
5768
6519
|
storyFile: "apps/docs/src/stories/Textarea.stories.ts",
|
|
5769
6520
|
storyTitle: "Components/Data Entry/Textarea",
|
|
5770
6521
|
manifestFile: "docs/ai/COMPONENTS/textarea.yaml",
|
|
@@ -5776,7 +6527,7 @@ var treeui_catalog_default = {
|
|
|
5776
6527
|
},
|
|
5777
6528
|
{
|
|
5778
6529
|
name: "size",
|
|
5779
|
-
type: "
|
|
6530
|
+
type: "TSize",
|
|
5780
6531
|
default: "md",
|
|
5781
6532
|
values: [
|
|
5782
6533
|
"sm",
|
|
@@ -5861,28 +6612,25 @@ var treeui_catalog_default = {
|
|
|
5861
6612
|
},
|
|
5862
6613
|
{
|
|
5863
6614
|
name: "TTimeline",
|
|
5864
|
-
|
|
5865
|
-
aliases: [
|
|
5866
|
-
"TreeTimeline"
|
|
5867
|
-
],
|
|
6615
|
+
aliases: [],
|
|
5868
6616
|
package: "@treeui/vue",
|
|
5869
6617
|
kind: "data_display",
|
|
5870
6618
|
status: "available",
|
|
5871
6619
|
purpose: "Vertical timeline for activity history, audits, release events, and chronological product updates.",
|
|
5872
|
-
sourceFile: "packages/vue/src/components/
|
|
6620
|
+
sourceFile: "packages/vue/src/components/TTimeline.vue",
|
|
5873
6621
|
storyFile: "apps/docs/src/stories/Timeline.stories.ts",
|
|
5874
6622
|
storyTitle: "Release queued for review",
|
|
5875
6623
|
manifestFile: "docs/ai/COMPONENTS/timeline.yaml",
|
|
5876
6624
|
props: [
|
|
5877
6625
|
{
|
|
5878
6626
|
name: "items",
|
|
5879
|
-
type: "
|
|
6627
|
+
type: "TTimelineItem[]",
|
|
5880
6628
|
default: "[]",
|
|
5881
6629
|
note: "Array of { id?: string | number; title: string; description?: string; meta?: string; timestamp?: string; datetime?: string; tone?: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' }"
|
|
5882
6630
|
},
|
|
5883
6631
|
{
|
|
5884
6632
|
name: "size",
|
|
5885
|
-
type: "
|
|
6633
|
+
type: "TSize",
|
|
5886
6634
|
default: "md",
|
|
5887
6635
|
values: [
|
|
5888
6636
|
"sm",
|
|
@@ -5924,15 +6672,12 @@ var treeui_catalog_default = {
|
|
|
5924
6672
|
},
|
|
5925
6673
|
{
|
|
5926
6674
|
name: "TToast",
|
|
5927
|
-
|
|
5928
|
-
aliases: [
|
|
5929
|
-
"TreeToast"
|
|
5930
|
-
],
|
|
6675
|
+
aliases: [],
|
|
5931
6676
|
package: "@treeui/vue",
|
|
5932
6677
|
kind: "feedback",
|
|
5933
6678
|
status: "available",
|
|
5934
6679
|
purpose: "Ephemeral notification stack driven by a composable. Renders toast items inside a positioned container with auto-dismiss and manual close.",
|
|
5935
|
-
sourceFile: "packages/vue/src/components/
|
|
6680
|
+
sourceFile: "packages/vue/src/components/TToast.vue",
|
|
5936
6681
|
manifestFile: "docs/ai/COMPONENTS/toast.yaml",
|
|
5937
6682
|
props: [],
|
|
5938
6683
|
events: [
|
|
@@ -5990,16 +6735,13 @@ var treeui_catalog_default = {
|
|
|
5990
6735
|
},
|
|
5991
6736
|
{
|
|
5992
6737
|
name: "TToggleGroup",
|
|
5993
|
-
|
|
5994
|
-
aliases: [
|
|
5995
|
-
"TreeToggleGroup"
|
|
5996
|
-
],
|
|
6738
|
+
aliases: [],
|
|
5997
6739
|
package: "@treeui/vue",
|
|
5998
6740
|
kind: "selection",
|
|
5999
6741
|
category: "Data Entry",
|
|
6000
6742
|
status: "available",
|
|
6001
6743
|
purpose: "Segmented button group for single or multiple visible choices.",
|
|
6002
|
-
sourceFile: "packages/vue/src/components/
|
|
6744
|
+
sourceFile: "packages/vue/src/components/TToggleGroup.vue",
|
|
6003
6745
|
storyFile: "apps/docs/src/stories/ToggleGroup.stories.ts",
|
|
6004
6746
|
storyTitle: "Components/Data Entry/ToggleGroup",
|
|
6005
6747
|
manifestFile: "docs/ai/COMPONENTS/toggle-group.yaml",
|
|
@@ -6011,13 +6753,13 @@ var treeui_catalog_default = {
|
|
|
6011
6753
|
},
|
|
6012
6754
|
{
|
|
6013
6755
|
name: "options",
|
|
6014
|
-
type: "
|
|
6756
|
+
type: "TToggleGroupOption[]",
|
|
6015
6757
|
default: "[]",
|
|
6016
6758
|
note: "Array of `{ label, value, disabled? }`."
|
|
6017
6759
|
},
|
|
6018
6760
|
{
|
|
6019
6761
|
name: "selectionMode",
|
|
6020
|
-
type: "
|
|
6762
|
+
type: "TToggleGroupSelectionMode",
|
|
6021
6763
|
default: "single",
|
|
6022
6764
|
values: [
|
|
6023
6765
|
"single",
|
|
@@ -6026,7 +6768,7 @@ var treeui_catalog_default = {
|
|
|
6026
6768
|
},
|
|
6027
6769
|
{
|
|
6028
6770
|
name: "size",
|
|
6029
|
-
type: "
|
|
6771
|
+
type: "TSize",
|
|
6030
6772
|
default: "md",
|
|
6031
6773
|
values: [
|
|
6032
6774
|
"sm",
|
|
@@ -6036,7 +6778,7 @@ var treeui_catalog_default = {
|
|
|
6036
6778
|
},
|
|
6037
6779
|
{
|
|
6038
6780
|
name: "variant",
|
|
6039
|
-
type: "
|
|
6781
|
+
type: "TToggleGroupVariant",
|
|
6040
6782
|
default: "outline",
|
|
6041
6783
|
values: [
|
|
6042
6784
|
"outline",
|
|
@@ -6110,16 +6852,13 @@ var treeui_catalog_default = {
|
|
|
6110
6852
|
},
|
|
6111
6853
|
{
|
|
6112
6854
|
name: "TTooltip",
|
|
6113
|
-
|
|
6114
|
-
aliases: [
|
|
6115
|
-
"TreeTooltip"
|
|
6116
|
-
],
|
|
6855
|
+
aliases: [],
|
|
6117
6856
|
package: "@treeui/vue",
|
|
6118
6857
|
kind: "overlay",
|
|
6119
6858
|
category: "Overlay",
|
|
6120
6859
|
status: "available",
|
|
6121
6860
|
purpose: "Small contextual overlay shown on hover or focus.",
|
|
6122
|
-
sourceFile: "packages/vue/src/components/
|
|
6861
|
+
sourceFile: "packages/vue/src/components/TTooltip.vue",
|
|
6123
6862
|
storyFile: "apps/docs/src/stories/Tooltip.stories.ts",
|
|
6124
6863
|
storyTitle: "Components/Overlay/Tooltip",
|
|
6125
6864
|
manifestFile: "docs/ai/COMPONENTS/tooltip.yaml",
|
|
@@ -6146,7 +6885,7 @@ var treeui_catalog_default = {
|
|
|
6146
6885
|
},
|
|
6147
6886
|
{
|
|
6148
6887
|
name: "side",
|
|
6149
|
-
type: "
|
|
6888
|
+
type: "TTooltipSide",
|
|
6150
6889
|
default: "top",
|
|
6151
6890
|
values: [
|
|
6152
6891
|
"top",
|
|
@@ -6225,18 +6964,15 @@ var treeui_catalog_default = {
|
|
|
6225
6964
|
},
|
|
6226
6965
|
{
|
|
6227
6966
|
name: "TTreeView",
|
|
6228
|
-
|
|
6229
|
-
aliases: [
|
|
6230
|
-
"TreeTreeView"
|
|
6231
|
-
],
|
|
6967
|
+
aliases: [],
|
|
6232
6968
|
package: "@treeui/vue",
|
|
6233
6969
|
kind: "selection",
|
|
6234
6970
|
category: "Navigation & Disclosure",
|
|
6235
6971
|
status: "available",
|
|
6236
6972
|
purpose: "Hierarchical tree view with expansion, keyboard navigation, and single or multiple selection.",
|
|
6237
|
-
sourceFile: "packages/vue/src/components/
|
|
6973
|
+
sourceFile: "packages/vue/src/components/TTreeView.vue",
|
|
6238
6974
|
storyFile: "apps/docs/src/stories/TreeView.stories.ts",
|
|
6239
|
-
storyTitle: "Components/Navigation & Disclosure/
|
|
6975
|
+
storyTitle: "Components/Navigation & Disclosure/TView",
|
|
6240
6976
|
manifestFile: "docs/ai/COMPONENTS/tree-view.yaml",
|
|
6241
6977
|
props: [
|
|
6242
6978
|
{
|
|
@@ -6251,13 +6987,13 @@ var treeui_catalog_default = {
|
|
|
6251
6987
|
},
|
|
6252
6988
|
{
|
|
6253
6989
|
name: "nodes",
|
|
6254
|
-
type: "
|
|
6990
|
+
type: "TTreeViewNode[]",
|
|
6255
6991
|
default: "[]",
|
|
6256
6992
|
note: "Array of `{ id, label, description?, meta?, disabled?, children? }`."
|
|
6257
6993
|
},
|
|
6258
6994
|
{
|
|
6259
6995
|
name: "selectionMode",
|
|
6260
|
-
type: "
|
|
6996
|
+
type: "TTreeViewSelectionMode",
|
|
6261
6997
|
default: "single",
|
|
6262
6998
|
values: [
|
|
6263
6999
|
"single",
|
|
@@ -6928,11 +7664,9 @@ var buildCatalogFromRepo = (repoRoot) => {
|
|
|
6928
7664
|
const setup2 = normalizeSetupEntry(componentSetup[name]);
|
|
6929
7665
|
const aliases = Array.from(
|
|
6930
7666
|
new Set(
|
|
6931
|
-
[
|
|
6932
|
-
|
|
6933
|
-
|
|
6934
|
-
name.startsWith("T") ? `Tree${name.slice(1)}` : void 0
|
|
6935
|
-
].filter((value) => Boolean(value))
|
|
7667
|
+
[...normalizeStringList(document.aliases), aliasMap[name]].filter(
|
|
7668
|
+
(value) => Boolean(value)
|
|
7669
|
+
)
|
|
6936
7670
|
)
|
|
6937
7671
|
);
|
|
6938
7672
|
const componentRecipes = recipes.filter((recipe) => recipe.compose.includes(name)).map((recipe) => recipe.id);
|
|
@@ -7136,7 +7870,7 @@ var createTreeuiMcpServer = () => {
|
|
|
7136
7870
|
inputSchema: {
|
|
7137
7871
|
type: "object",
|
|
7138
7872
|
properties: {
|
|
7139
|
-
name: { type: "string", description: "Component name or alias, such as TSelect or
|
|
7873
|
+
name: { type: "string", description: "Component name or alias, such as TSelect or TSelect." }
|
|
7140
7874
|
},
|
|
7141
7875
|
required: ["name"]
|
|
7142
7876
|
}
|