@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/generated/treeui.catalog.json
|
|
2
2
|
var treeui_catalog_default = {
|
|
3
|
-
generatedAt: "2026-
|
|
3
|
+
generatedAt: "2026-07-15T22:47:49.302Z",
|
|
4
4
|
packageName: "@treeui/vue",
|
|
5
|
-
packageVersion: "0.
|
|
5
|
+
packageVersion: "0.13.0",
|
|
6
6
|
decisionGuides: [
|
|
7
7
|
{
|
|
8
8
|
id: "single-choice",
|
|
@@ -200,6 +200,50 @@ var treeui_catalog_default = {
|
|
|
200
200
|
notes: []
|
|
201
201
|
}
|
|
202
202
|
]
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
id: "data-viz-choice",
|
|
206
|
+
question: "Visualize numeric data",
|
|
207
|
+
options: [
|
|
208
|
+
{
|
|
209
|
+
use: "TStat",
|
|
210
|
+
when: [
|
|
211
|
+
"The story is a single headline number, optionally with a trend and delta.",
|
|
212
|
+
"It is not a plot \u2014 prefer the number over a chart when one value says it."
|
|
213
|
+
],
|
|
214
|
+
notes: []
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
use: "TSparkline",
|
|
218
|
+
when: [
|
|
219
|
+
"You want an inline micro-trend next to a value, in a table cell, or in text.",
|
|
220
|
+
"No axes, legend, or tooltip are needed."
|
|
221
|
+
],
|
|
222
|
+
notes: []
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
use: "TChart",
|
|
226
|
+
when: [
|
|
227
|
+
"You need line, area, or bar plots with axes, gridlines, legend, and hover tooltip.",
|
|
228
|
+
"There are one or more series over shared categories."
|
|
229
|
+
],
|
|
230
|
+
notes: []
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
use: "TDonutChart",
|
|
234
|
+
when: [
|
|
235
|
+
"The data is a part-of-whole breakdown (donut or pie)."
|
|
236
|
+
],
|
|
237
|
+
notes: []
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
use: "TProgress",
|
|
241
|
+
when: [
|
|
242
|
+
"You are showing completion toward a single target, not a distribution or trend."
|
|
243
|
+
],
|
|
244
|
+
notes: []
|
|
245
|
+
}
|
|
246
|
+
]
|
|
203
247
|
}
|
|
204
248
|
],
|
|
205
249
|
recipes: [
|
|
@@ -249,11 +293,28 @@ var treeui_catalog_default = {
|
|
|
249
293
|
"Set end `min` from the selected start time when appropriate."
|
|
250
294
|
]
|
|
251
295
|
},
|
|
296
|
+
{
|
|
297
|
+
id: "app-shell",
|
|
298
|
+
name: "Full-viewport application shell",
|
|
299
|
+
useWhen: [
|
|
300
|
+
"The app needs a header plus side navigation that fills the whole screen and adapts to mobile.",
|
|
301
|
+
"The layout must use the full page width on large monitors, not a centered column."
|
|
302
|
+
],
|
|
303
|
+
compose: [
|
|
304
|
+
"TAppShell",
|
|
305
|
+
"TNavMenu"
|
|
306
|
+
],
|
|
307
|
+
notes: [
|
|
308
|
+
"`TAppShell` orchestrates the header, sidebar, and fluid content in one component; put a `TNavMenu` in its `sidebar` slot and it inherits collapsed state automatically.",
|
|
309
|
+
"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.",
|
|
310
|
+
"Mount it at the app root. Wrap only inner regions in `TContainer` if a specific area needs a constrained reading width."
|
|
311
|
+
]
|
|
312
|
+
},
|
|
252
313
|
{
|
|
253
314
|
id: "sidebar-shell",
|
|
254
315
|
name: "Sidebar application shell",
|
|
255
316
|
useWhen: [
|
|
256
|
-
"The screen needs persistent section navigation."
|
|
317
|
+
"The screen needs persistent section navigation and you are composing the shell by hand."
|
|
257
318
|
],
|
|
258
319
|
compose: [
|
|
259
320
|
"TSidebar",
|
|
@@ -262,7 +323,8 @@ var treeui_catalog_default = {
|
|
|
262
323
|
"TContainer"
|
|
263
324
|
],
|
|
264
325
|
notes: [
|
|
265
|
-
"Let `TNavMenu` inherit collapsed state from `TSidebar` when possible."
|
|
326
|
+
"Let `TNavMenu` inherit collapsed state from `TSidebar` when possible.",
|
|
327
|
+
"Prefer `TAppShell` (recipe `app-shell`) when you also need full-viewport sizing and a responsive mobile drawer."
|
|
266
328
|
]
|
|
267
329
|
},
|
|
268
330
|
{
|
|
@@ -360,15 +422,38 @@ var treeui_catalog_default = {
|
|
|
360
422
|
id: "chart-surface",
|
|
361
423
|
name: "Chart surface",
|
|
362
424
|
useWhen: [
|
|
363
|
-
"A screen needs data visualization
|
|
425
|
+
"A screen needs data visualization inside a framed, titled surface."
|
|
364
426
|
],
|
|
365
427
|
compose: [
|
|
366
428
|
"TCard",
|
|
367
429
|
"TStack",
|
|
368
|
-
"
|
|
430
|
+
"TChart",
|
|
431
|
+
"TSelect"
|
|
369
432
|
],
|
|
370
433
|
notes: [
|
|
371
|
-
"
|
|
434
|
+
"Prefer the native TChart / TDonutChart / TSparkline \u2014 no external charting library is required.",
|
|
435
|
+
"Use TreeUI for the surrounding surface, headings, badges, range filters, and empty/loading states.",
|
|
436
|
+
"TChart has its own loading and empty slots; you can still wrap it in TCard for the frame.",
|
|
437
|
+
"Only reach for an external chart engine for chart types TreeUI does not cover yet (e.g. scatter, heatmap)."
|
|
438
|
+
]
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
id: "metric-dashboard",
|
|
442
|
+
name: "Metric dashboard",
|
|
443
|
+
useWhen: [
|
|
444
|
+
"A dashboard shows KPIs alongside trends and breakdowns."
|
|
445
|
+
],
|
|
446
|
+
compose: [
|
|
447
|
+
"TStat",
|
|
448
|
+
"TSparkline",
|
|
449
|
+
"TChart",
|
|
450
|
+
"TDonutChart",
|
|
451
|
+
"TGrid"
|
|
452
|
+
],
|
|
453
|
+
notes: [
|
|
454
|
+
"Lead with TStat tiles; embed a TSparkline in a stat's meta slot for the inline trend.",
|
|
455
|
+
"Use one TChart for the main time series and a TDonutChart for a part-of-whole split.",
|
|
456
|
+
"Keep series colors stable across the dashboard \u2014 rely on the --tree-color-chart-* order, do not remap by rank."
|
|
372
457
|
]
|
|
373
458
|
},
|
|
374
459
|
{
|
|
@@ -443,7 +528,7 @@ var treeui_catalog_default = {
|
|
|
443
528
|
},
|
|
444
529
|
globalRules: [
|
|
445
530
|
"Always import `@treeui/vue/style.css` once in the consuming application.",
|
|
446
|
-
"
|
|
531
|
+
"All components use the `T<Name>` export prefix; there are no `Tree<Name>` aliases.",
|
|
447
532
|
"Form controls use `modelValue` + `update:modelValue`.",
|
|
448
533
|
"Overlay-style components generally support controlled and uncontrolled open state.",
|
|
449
534
|
"Date-only values use `YYYY-MM-DD`.",
|
|
@@ -518,17 +603,27 @@ var treeui_catalog_default = {
|
|
|
518
603
|
"Use `accept`, `multiple`, and size limits in the app layer to constrain uploads."
|
|
519
604
|
]
|
|
520
605
|
},
|
|
606
|
+
TAppShell: {
|
|
607
|
+
required: [],
|
|
608
|
+
notes: [
|
|
609
|
+
"Mount at the app root; it fills the viewport (100dvh, full width) and scrolls its content region independently.",
|
|
610
|
+
"Put navigation in the `sidebar` slot (e.g. `TNavMenu`) \u2014 it inherits collapsed state from the shell provider like `TSidebar`.",
|
|
611
|
+
"Leave `mobile` unset to auto-switch to an off-canvas drawer at `breakpoint`, or bind `mobile` to control it explicitly.",
|
|
612
|
+
"Use `v-model:collapsed` for the desktop rail and `v-model:sidebarOpen` for the mobile drawer when the app persists layout state."
|
|
613
|
+
]
|
|
614
|
+
},
|
|
521
615
|
TSidebar: {
|
|
522
616
|
required: [],
|
|
523
617
|
notes: [
|
|
524
618
|
"Pair with `TNavMenu` for app-section navigation.",
|
|
525
|
-
"Use controlled `collapsed` state when the app shell persists layout preferences."
|
|
619
|
+
"Use controlled `collapsed` state when the app shell persists layout preferences.",
|
|
620
|
+
"Prefer `TAppShell` when you also want full-viewport sizing, a top header, and a responsive mobile drawer."
|
|
526
621
|
]
|
|
527
622
|
},
|
|
528
623
|
TNavMenu: {
|
|
529
624
|
required: [],
|
|
530
625
|
notes: [
|
|
531
|
-
"When nested inside `TSidebar`, `collapsed` can be inherited from the sidebar provider."
|
|
626
|
+
"When nested inside `TSidebar` or `TAppShell`, `collapsed` can be inherited from the sidebar provider."
|
|
532
627
|
]
|
|
533
628
|
},
|
|
534
629
|
TTreeView: {
|
|
@@ -562,6 +657,32 @@ var treeui_catalog_default = {
|
|
|
562
657
|
"Use `href` for native links.",
|
|
563
658
|
"Use `to` when the app has vue-router and breadcrumb items should render RouterLink."
|
|
564
659
|
]
|
|
660
|
+
},
|
|
661
|
+
TChart: {
|
|
662
|
+
required: [],
|
|
663
|
+
notes: [
|
|
664
|
+
"Pass `series` as `{ name, data, color? }[]` and `labels` as a parallel `string[]` (one label per data index).",
|
|
665
|
+
"Set `type` to `line`, `area`, or `bar`; use `stacked` only with `bar`.",
|
|
666
|
+
"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.",
|
|
667
|
+
"Pass `valueFormat: (n) => string` to format axis and tooltip values (currency, compact, etc.).",
|
|
668
|
+
"No charting library or provider is required \u2014 the SVG and geometry are built in."
|
|
669
|
+
]
|
|
670
|
+
},
|
|
671
|
+
TSparkline: {
|
|
672
|
+
required: [],
|
|
673
|
+
notes: [
|
|
674
|
+
"Pass `data` as `number[]`; there are no axes, legend, or tooltip by design.",
|
|
675
|
+
"Size it with `width`/`height`; use it inside `TStat`, table cells, or text.",
|
|
676
|
+
"Always keep a visible number nearby \u2014 a sparkline supplements a value, it does not replace it."
|
|
677
|
+
]
|
|
678
|
+
},
|
|
679
|
+
TDonutChart: {
|
|
680
|
+
required: [],
|
|
681
|
+
notes: [
|
|
682
|
+
"Pass `segments` as `{ label, value, color? }[]`; non-positive values are dropped.",
|
|
683
|
+
"Set `thickness: 0` for a full pie; keep the default for a donut with a center readout.",
|
|
684
|
+
"Use the `center` slot (donut only) for a custom center; otherwise it shows the total or the hovered slice."
|
|
685
|
+
]
|
|
565
686
|
}
|
|
566
687
|
},
|
|
567
688
|
appPatterns: {
|
|
@@ -575,6 +696,9 @@ var treeui_catalog_default = {
|
|
|
575
696
|
commonCompositions: [
|
|
576
697
|
"TFormField + input-like control",
|
|
577
698
|
"TGrid + TStat",
|
|
699
|
+
"TStat + TSparkline",
|
|
700
|
+
"TCard + TChart",
|
|
701
|
+
"TAppShell + TNavMenu",
|
|
578
702
|
"TSidebar + TNavMenu",
|
|
579
703
|
"TTable + TPagination",
|
|
580
704
|
"TPricing + TPricingCard"
|
|
@@ -584,16 +708,13 @@ var treeui_catalog_default = {
|
|
|
584
708
|
components: [
|
|
585
709
|
{
|
|
586
710
|
name: "TAccordion",
|
|
587
|
-
|
|
588
|
-
aliases: [
|
|
589
|
-
"TreeAccordion"
|
|
590
|
-
],
|
|
711
|
+
aliases: [],
|
|
591
712
|
package: "@treeui/vue",
|
|
592
713
|
kind: "disclosure",
|
|
593
714
|
category: "Data Display",
|
|
594
715
|
status: "available",
|
|
595
716
|
purpose: "Organized content sections with expandable/collapsible behavior. Supports single-open and multi-open modes.\n",
|
|
596
|
-
sourceFile: "packages/vue/src/components/
|
|
717
|
+
sourceFile: "packages/vue/src/components/TAccordion.vue",
|
|
597
718
|
storyFile: "apps/docs/src/stories/Accordion.stories.ts",
|
|
598
719
|
storyTitle: "Components/Data Display/Accordion",
|
|
599
720
|
manifestFile: "docs/ai/COMPONENTS/accordion.yaml",
|
|
@@ -640,16 +761,13 @@ var treeui_catalog_default = {
|
|
|
640
761
|
},
|
|
641
762
|
{
|
|
642
763
|
name: "TAlert",
|
|
643
|
-
|
|
644
|
-
aliases: [
|
|
645
|
-
"TreeAlert"
|
|
646
|
-
],
|
|
764
|
+
aliases: [],
|
|
647
765
|
package: "@treeui/vue",
|
|
648
766
|
kind: "feedback",
|
|
649
767
|
category: "Feedback",
|
|
650
768
|
status: "available",
|
|
651
769
|
purpose: "Inline status banner for info, success, warning, and danger messages.",
|
|
652
|
-
sourceFile: "packages/vue/src/components/
|
|
770
|
+
sourceFile: "packages/vue/src/components/TAlert.vue",
|
|
653
771
|
storyFile: "apps/docs/src/stories/Alert.stories.ts",
|
|
654
772
|
storyTitle: "Components/Feedback/Alert",
|
|
655
773
|
manifestFile: "docs/ai/COMPONENTS/alert.yaml",
|
|
@@ -667,7 +785,7 @@ var treeui_catalog_default = {
|
|
|
667
785
|
},
|
|
668
786
|
{
|
|
669
787
|
name: "size",
|
|
670
|
-
type: "
|
|
788
|
+
type: "TSize",
|
|
671
789
|
default: "md",
|
|
672
790
|
values: [
|
|
673
791
|
"sm",
|
|
@@ -742,15 +860,217 @@ var treeui_catalog_default = {
|
|
|
742
860
|
recipes: []
|
|
743
861
|
},
|
|
744
862
|
{
|
|
745
|
-
name: "
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
863
|
+
name: "TAppShell",
|
|
864
|
+
aliases: [],
|
|
865
|
+
package: "@treeui/vue",
|
|
866
|
+
kind: "layout",
|
|
867
|
+
category: "Layout",
|
|
868
|
+
status: "available",
|
|
869
|
+
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.",
|
|
870
|
+
sourceFile: "packages/vue/src/components/TAppShell.vue",
|
|
871
|
+
storyFile: "apps/docs/src/stories/AppShell.stories.ts",
|
|
872
|
+
storyTitle: "Components/Layout/AppShell",
|
|
873
|
+
manifestFile: "docs/ai/COMPONENTS/app-shell.yaml",
|
|
874
|
+
props: [
|
|
875
|
+
{
|
|
876
|
+
name: "as",
|
|
877
|
+
type: "string",
|
|
878
|
+
default: "div"
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
name: "side",
|
|
882
|
+
type: "TSidebarSide",
|
|
883
|
+
default: "left",
|
|
884
|
+
values: [
|
|
885
|
+
"left",
|
|
886
|
+
"right"
|
|
887
|
+
]
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
name: "sidebarWidth",
|
|
891
|
+
type: "string",
|
|
892
|
+
default: "17.5rem"
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
name: "collapsedWidth",
|
|
896
|
+
type: "string",
|
|
897
|
+
default: "4.75rem"
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
name: "collapsible",
|
|
901
|
+
type: "boolean",
|
|
902
|
+
default: "false"
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
name: "collapsed",
|
|
906
|
+
type: "boolean",
|
|
907
|
+
default: "undefined"
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
name: "defaultCollapsed",
|
|
911
|
+
type: "boolean",
|
|
912
|
+
default: "false"
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
name: "mobile",
|
|
916
|
+
type: "boolean",
|
|
917
|
+
default: "undefined"
|
|
918
|
+
},
|
|
919
|
+
{
|
|
920
|
+
name: "breakpoint",
|
|
921
|
+
type: "string",
|
|
922
|
+
default: "768px"
|
|
923
|
+
},
|
|
924
|
+
{
|
|
925
|
+
name: "sidebarOpen",
|
|
926
|
+
type: "boolean",
|
|
927
|
+
default: "undefined"
|
|
928
|
+
},
|
|
929
|
+
{
|
|
930
|
+
name: "defaultSidebarOpen",
|
|
931
|
+
type: "boolean",
|
|
932
|
+
default: "false"
|
|
933
|
+
},
|
|
934
|
+
{
|
|
935
|
+
name: "closeOnEscape",
|
|
936
|
+
type: "boolean",
|
|
937
|
+
default: "true"
|
|
938
|
+
},
|
|
939
|
+
{
|
|
940
|
+
name: "closeOnOverlay",
|
|
941
|
+
type: "boolean",
|
|
942
|
+
default: "true"
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
name: "showMenuButton",
|
|
946
|
+
type: "boolean",
|
|
947
|
+
default: "true"
|
|
948
|
+
},
|
|
949
|
+
{
|
|
950
|
+
name: "menuLabel",
|
|
951
|
+
type: "string",
|
|
952
|
+
default: "Open menu"
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
name: "closeLabel",
|
|
956
|
+
type: "string",
|
|
957
|
+
default: "Close menu"
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
name: "sidebarLabel",
|
|
961
|
+
type: "string",
|
|
962
|
+
default: "Sidebar"
|
|
963
|
+
}
|
|
749
964
|
],
|
|
965
|
+
events: [
|
|
966
|
+
{
|
|
967
|
+
name: "update:collapsed"
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
name: "collapse-change"
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
name: "update:sidebarOpen"
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
name: "sidebar-open-change"
|
|
977
|
+
}
|
|
978
|
+
],
|
|
979
|
+
slots: [
|
|
980
|
+
{
|
|
981
|
+
name: "header"
|
|
982
|
+
},
|
|
983
|
+
{
|
|
984
|
+
name: "sidebar"
|
|
985
|
+
},
|
|
986
|
+
{
|
|
987
|
+
name: "default"
|
|
988
|
+
},
|
|
989
|
+
{
|
|
990
|
+
name: "menu-icon"
|
|
991
|
+
}
|
|
992
|
+
],
|
|
993
|
+
a11y: [
|
|
994
|
+
"role: dialog",
|
|
995
|
+
"aria_modal: true",
|
|
996
|
+
"focus_trap: true",
|
|
997
|
+
"restores_focus_on_close: true",
|
|
998
|
+
"escape_closes_when_enabled: true",
|
|
999
|
+
"menu_button_aria_expanded: true",
|
|
1000
|
+
"menu_button_aria_controls_drawer: true",
|
|
1001
|
+
"sidebar_labelled_by_sidebar_label: true"
|
|
1002
|
+
],
|
|
1003
|
+
behavior: [
|
|
1004
|
+
"fills_viewport_full_width_and_height: true",
|
|
1005
|
+
"header_spans_full_width_above_sidebar_and_content: true",
|
|
1006
|
+
"content_area_scrolls_independently: true",
|
|
1007
|
+
"auto_switches_to_mobile_at_breakpoint_when_mobile_undefined: true",
|
|
1008
|
+
"mobile_prop_forces_mobile_mode: true",
|
|
1009
|
+
"mobile_sidebar_becomes_off_canvas_drawer: true",
|
|
1010
|
+
"auto_menu_button_in_header_on_mobile: true",
|
|
1011
|
+
"controlled_and_uncontrolled_collapsed_state: true",
|
|
1012
|
+
"controlled_and_uncontrolled_sidebar_open_state: true",
|
|
1013
|
+
"provides_collapsed_state_to_descendants: true",
|
|
1014
|
+
"drawer_reports_collapsed_false_to_descendants_and_slots: true",
|
|
1015
|
+
"left_and_right_variants: true",
|
|
1016
|
+
"locks_body_scroll_while_drawer_open: true",
|
|
1017
|
+
"overlay_click_closes_when_enabled: true",
|
|
1018
|
+
"exposes_slot_props_with_mobile_collapsed_and_toggles: true"
|
|
1019
|
+
],
|
|
1020
|
+
selection: {
|
|
1021
|
+
keywords: [
|
|
1022
|
+
"app shell",
|
|
1023
|
+
"layout",
|
|
1024
|
+
"dashboard",
|
|
1025
|
+
"admin",
|
|
1026
|
+
"header sidebar",
|
|
1027
|
+
"full screen",
|
|
1028
|
+
"responsive shell",
|
|
1029
|
+
"off-canvas"
|
|
1030
|
+
],
|
|
1031
|
+
useWhen: [
|
|
1032
|
+
"You need a full-viewport application layout with a header, a side navigation, and a fluid content area.",
|
|
1033
|
+
"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."
|
|
1034
|
+
],
|
|
1035
|
+
avoidWhen: [
|
|
1036
|
+
"You only need one region (just a top bar, or just a side rail) \u2014 compose TNavbar or TSidebar directly.",
|
|
1037
|
+
"The page content should be centered with a readable max width \u2014 use TContainer inside the shell content instead."
|
|
1038
|
+
],
|
|
1039
|
+
alternatives: [
|
|
1040
|
+
{
|
|
1041
|
+
component: "TSidebar",
|
|
1042
|
+
when: "You want a standalone collapsible side rail without the header/content orchestration or responsive drawer."
|
|
1043
|
+
},
|
|
1044
|
+
{
|
|
1045
|
+
component: "TNavbar",
|
|
1046
|
+
when: "You only need the top application bar."
|
|
1047
|
+
},
|
|
1048
|
+
{
|
|
1049
|
+
component: "TDrawer",
|
|
1050
|
+
when: "You need a general temporary overlay panel rather than the shell's responsive navigation."
|
|
1051
|
+
}
|
|
1052
|
+
]
|
|
1053
|
+
},
|
|
1054
|
+
setup: {
|
|
1055
|
+
required: [],
|
|
1056
|
+
notes: [
|
|
1057
|
+
"Mount at the app root; it fills the viewport (100dvh, full width) and scrolls its content region independently.",
|
|
1058
|
+
"Put navigation in the `sidebar` slot (e.g. `TNavMenu`) \u2014 it inherits collapsed state from the shell provider like `TSidebar`.",
|
|
1059
|
+
"Leave `mobile` unset to auto-switch to an off-canvas drawer at `breakpoint`, or bind `mobile` to control it explicitly.",
|
|
1060
|
+
"Use `v-model:collapsed` for the desktop rail and `v-model:sidebarOpen` for the mobile drawer when the app persists layout state."
|
|
1061
|
+
]
|
|
1062
|
+
},
|
|
1063
|
+
recipes: [
|
|
1064
|
+
"app-shell"
|
|
1065
|
+
]
|
|
1066
|
+
},
|
|
1067
|
+
{
|
|
1068
|
+
name: "TAvatar",
|
|
1069
|
+
aliases: [],
|
|
750
1070
|
package: "@treeui/vue",
|
|
751
1071
|
category: "Data Display",
|
|
752
1072
|
description: "User image with fallback initials and optional status indicator dot.",
|
|
753
|
-
sourceFile: "packages/vue/src/components/
|
|
1073
|
+
sourceFile: "packages/vue/src/components/TAvatar.vue",
|
|
754
1074
|
storyFile: "apps/docs/src/stories/Avatar.stories.ts",
|
|
755
1075
|
storyTitle: "Components/Data Display/Avatar",
|
|
756
1076
|
manifestFile: "docs/ai/COMPONENTS/avatar.yaml",
|
|
@@ -775,7 +1095,7 @@ var treeui_catalog_default = {
|
|
|
775
1095
|
},
|
|
776
1096
|
{
|
|
777
1097
|
name: "size",
|
|
778
|
-
type: "
|
|
1098
|
+
type: "TSize",
|
|
779
1099
|
default: "md",
|
|
780
1100
|
values: [
|
|
781
1101
|
"sm",
|
|
@@ -785,7 +1105,7 @@ var treeui_catalog_default = {
|
|
|
785
1105
|
},
|
|
786
1106
|
{
|
|
787
1107
|
name: "status",
|
|
788
|
-
type: "
|
|
1108
|
+
type: "TAvatarStatus",
|
|
789
1109
|
required: false,
|
|
790
1110
|
values: [
|
|
791
1111
|
"online",
|
|
@@ -823,23 +1143,20 @@ var treeui_catalog_default = {
|
|
|
823
1143
|
},
|
|
824
1144
|
{
|
|
825
1145
|
name: "TBadge",
|
|
826
|
-
|
|
827
|
-
aliases: [
|
|
828
|
-
"TreeBadge"
|
|
829
|
-
],
|
|
1146
|
+
aliases: [],
|
|
830
1147
|
package: "@treeui/vue",
|
|
831
1148
|
kind: "display",
|
|
832
1149
|
category: "Data Display",
|
|
833
1150
|
status: "available",
|
|
834
1151
|
purpose: "Compact status or metadata label with optional icon.",
|
|
835
|
-
sourceFile: "packages/vue/src/components/
|
|
1152
|
+
sourceFile: "packages/vue/src/components/TBadge.vue",
|
|
836
1153
|
storyFile: "apps/docs/src/stories/Badge.stories.ts",
|
|
837
1154
|
storyTitle: "Components/Data Display/Badge",
|
|
838
1155
|
manifestFile: "docs/ai/COMPONENTS/badge.yaml",
|
|
839
1156
|
props: [
|
|
840
1157
|
{
|
|
841
1158
|
name: "variant",
|
|
842
|
-
type: "
|
|
1159
|
+
type: "TVariant",
|
|
843
1160
|
default: "soft",
|
|
844
1161
|
values: [
|
|
845
1162
|
"solid",
|
|
@@ -851,7 +1168,7 @@ var treeui_catalog_default = {
|
|
|
851
1168
|
},
|
|
852
1169
|
{
|
|
853
1170
|
name: "tone",
|
|
854
|
-
type: "
|
|
1171
|
+
type: "TBadgeTone",
|
|
855
1172
|
default: "neutral",
|
|
856
1173
|
values: [
|
|
857
1174
|
"neutral",
|
|
@@ -864,7 +1181,7 @@ var treeui_catalog_default = {
|
|
|
864
1181
|
},
|
|
865
1182
|
{
|
|
866
1183
|
name: "size",
|
|
867
|
-
type: "
|
|
1184
|
+
type: "TSize",
|
|
868
1185
|
default: "md",
|
|
869
1186
|
values: [
|
|
870
1187
|
"sm",
|
|
@@ -903,16 +1220,13 @@ var treeui_catalog_default = {
|
|
|
903
1220
|
},
|
|
904
1221
|
{
|
|
905
1222
|
name: "TBreadcrumb",
|
|
906
|
-
|
|
907
|
-
aliases: [
|
|
908
|
-
"TreeBreadcrumb"
|
|
909
|
-
],
|
|
1223
|
+
aliases: [],
|
|
910
1224
|
package: "@treeui/vue",
|
|
911
1225
|
kind: "navigation",
|
|
912
1226
|
category: "Navigation",
|
|
913
1227
|
status: "available",
|
|
914
1228
|
purpose: "Hierarchical navigation trail showing the user's current location within a site or application.",
|
|
915
|
-
sourceFile: "packages/vue/src/components/
|
|
1229
|
+
sourceFile: "packages/vue/src/components/TBreadcrumb.vue",
|
|
916
1230
|
storyFile: "apps/docs/src/stories/Breadcrumb.stories.ts",
|
|
917
1231
|
storyTitle: "Components/Navigation/Breadcrumb",
|
|
918
1232
|
manifestFile: "docs/ai/COMPONENTS/breadcrumb.yaml",
|
|
@@ -955,16 +1269,13 @@ var treeui_catalog_default = {
|
|
|
955
1269
|
},
|
|
956
1270
|
{
|
|
957
1271
|
name: "TButton",
|
|
958
|
-
|
|
959
|
-
aliases: [
|
|
960
|
-
"TreeButton"
|
|
961
|
-
],
|
|
1272
|
+
aliases: [],
|
|
962
1273
|
package: "@treeui/vue",
|
|
963
1274
|
kind: "primitive",
|
|
964
1275
|
category: "Actions",
|
|
965
1276
|
status: "available",
|
|
966
1277
|
purpose: "Clickable action trigger with variants, sizes, optional polymorphism, and loading state.",
|
|
967
|
-
sourceFile: "packages/vue/src/components/
|
|
1278
|
+
sourceFile: "packages/vue/src/components/TButton.vue",
|
|
968
1279
|
storyFile: "apps/docs/src/stories/Button.stories.ts",
|
|
969
1280
|
storyTitle: "Components/Actions/Button",
|
|
970
1281
|
manifestFile: "docs/ai/COMPONENTS/button.yaml",
|
|
@@ -976,7 +1287,7 @@ var treeui_catalog_default = {
|
|
|
976
1287
|
},
|
|
977
1288
|
{
|
|
978
1289
|
name: "variant",
|
|
979
|
-
type: "
|
|
1290
|
+
type: "TVariant",
|
|
980
1291
|
default: "solid",
|
|
981
1292
|
values: [
|
|
982
1293
|
"solid",
|
|
@@ -988,7 +1299,7 @@ var treeui_catalog_default = {
|
|
|
988
1299
|
},
|
|
989
1300
|
{
|
|
990
1301
|
name: "size",
|
|
991
|
-
type: "
|
|
1302
|
+
type: "TSize",
|
|
992
1303
|
default: "md",
|
|
993
1304
|
values: [
|
|
994
1305
|
"sm",
|
|
@@ -1053,16 +1364,13 @@ var treeui_catalog_default = {
|
|
|
1053
1364
|
},
|
|
1054
1365
|
{
|
|
1055
1366
|
name: "TCard",
|
|
1056
|
-
|
|
1057
|
-
aliases: [
|
|
1058
|
-
"TreeCard"
|
|
1059
|
-
],
|
|
1367
|
+
aliases: [],
|
|
1060
1368
|
package: "@treeui/vue",
|
|
1061
1369
|
kind: "layout",
|
|
1062
1370
|
category: "Data Display",
|
|
1063
1371
|
status: "available",
|
|
1064
1372
|
purpose: "Surface container with optional header and footer slots.",
|
|
1065
|
-
sourceFile: "packages/vue/src/components/
|
|
1373
|
+
sourceFile: "packages/vue/src/components/TCard.vue",
|
|
1066
1374
|
storyFile: "apps/docs/src/stories/Card.stories.ts",
|
|
1067
1375
|
storyTitle: "Components/Data Display/Card",
|
|
1068
1376
|
manifestFile: "docs/ai/COMPONENTS/card.yaml",
|
|
@@ -1074,7 +1382,7 @@ var treeui_catalog_default = {
|
|
|
1074
1382
|
},
|
|
1075
1383
|
{
|
|
1076
1384
|
name: "variant",
|
|
1077
|
-
type: "
|
|
1385
|
+
type: "TCardVariant",
|
|
1078
1386
|
default: "outline",
|
|
1079
1387
|
values: [
|
|
1080
1388
|
"outline",
|
|
@@ -1085,7 +1393,7 @@ var treeui_catalog_default = {
|
|
|
1085
1393
|
},
|
|
1086
1394
|
{
|
|
1087
1395
|
name: "size",
|
|
1088
|
-
type: "
|
|
1396
|
+
type: "TSize",
|
|
1089
1397
|
default: "md",
|
|
1090
1398
|
values: [
|
|
1091
1399
|
"sm",
|
|
@@ -1117,7 +1425,8 @@ var treeui_catalog_default = {
|
|
|
1117
1425
|
],
|
|
1118
1426
|
a11y: [],
|
|
1119
1427
|
behavior: [
|
|
1120
|
-
"body_wrapper_class:
|
|
1428
|
+
"body_wrapper_class: t-card__body",
|
|
1429
|
+
"solid_variant_rescopes_color_tokens_for_nested_content: true"
|
|
1121
1430
|
],
|
|
1122
1431
|
selection: {
|
|
1123
1432
|
keywords: [
|
|
@@ -1153,17 +1462,210 @@ var treeui_catalog_default = {
|
|
|
1153
1462
|
]
|
|
1154
1463
|
},
|
|
1155
1464
|
{
|
|
1156
|
-
name: "
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1465
|
+
name: "TChart",
|
|
1466
|
+
aliases: [],
|
|
1467
|
+
package: "@treeui/vue",
|
|
1468
|
+
kind: "data-display",
|
|
1469
|
+
category: "Data Display",
|
|
1470
|
+
status: "available",
|
|
1471
|
+
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.",
|
|
1472
|
+
sourceFile: "packages/vue/src/components/TChart.vue",
|
|
1473
|
+
storyFile: "apps/docs/src/stories/Chart.stories.ts",
|
|
1474
|
+
storyTitle: "Components/Data Display/Chart",
|
|
1475
|
+
manifestFile: "docs/ai/COMPONENTS/chart.yaml",
|
|
1476
|
+
props: [
|
|
1477
|
+
{
|
|
1478
|
+
name: "type",
|
|
1479
|
+
type: "TChartType",
|
|
1480
|
+
default: "line",
|
|
1481
|
+
values: [
|
|
1482
|
+
"line",
|
|
1483
|
+
"area",
|
|
1484
|
+
"bar"
|
|
1485
|
+
]
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
name: "series",
|
|
1489
|
+
type: "TChartSeries[]",
|
|
1490
|
+
default: "[]",
|
|
1491
|
+
note: "Each item is { name: string; data: number[]; color?: string }."
|
|
1492
|
+
},
|
|
1493
|
+
{
|
|
1494
|
+
name: "labels",
|
|
1495
|
+
type: "string[]",
|
|
1496
|
+
default: "[]",
|
|
1497
|
+
note: "X-axis categories, aligned index-for-index to each series' data."
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
name: "height",
|
|
1501
|
+
type: "number",
|
|
1502
|
+
default: "260",
|
|
1503
|
+
note: "Width is fluid (measured via ResizeObserver)."
|
|
1504
|
+
},
|
|
1505
|
+
{
|
|
1506
|
+
name: "smooth",
|
|
1507
|
+
type: "boolean",
|
|
1508
|
+
default: "false",
|
|
1509
|
+
note: "Curved line/area."
|
|
1510
|
+
},
|
|
1511
|
+
{
|
|
1512
|
+
name: "stacked",
|
|
1513
|
+
type: "boolean",
|
|
1514
|
+
default: "false",
|
|
1515
|
+
note: "Stacks bar series; ignored for line/area. Negative values are clamped to 0 in stacked mode (grouped mode renders them)."
|
|
1516
|
+
},
|
|
1517
|
+
{
|
|
1518
|
+
name: "showGrid",
|
|
1519
|
+
type: "boolean",
|
|
1520
|
+
default: "true"
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
name: "showLegend",
|
|
1524
|
+
type: "boolean",
|
|
1525
|
+
default: "auto (true when more than one series)"
|
|
1526
|
+
},
|
|
1527
|
+
{
|
|
1528
|
+
name: "showXAxis",
|
|
1529
|
+
type: "boolean",
|
|
1530
|
+
default: "true"
|
|
1531
|
+
},
|
|
1532
|
+
{
|
|
1533
|
+
name: "showYAxis",
|
|
1534
|
+
type: "boolean",
|
|
1535
|
+
default: "true"
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
name: "showTooltip",
|
|
1539
|
+
type: "boolean",
|
|
1540
|
+
default: "true"
|
|
1541
|
+
},
|
|
1542
|
+
{
|
|
1543
|
+
name: "showPoints",
|
|
1544
|
+
type: "boolean",
|
|
1545
|
+
default: "false",
|
|
1546
|
+
note: "Always draw markers on line/area points."
|
|
1547
|
+
},
|
|
1548
|
+
{
|
|
1549
|
+
name: "yTicks",
|
|
1550
|
+
type: "number",
|
|
1551
|
+
default: "5"
|
|
1552
|
+
},
|
|
1553
|
+
{
|
|
1554
|
+
name: "valueFormat",
|
|
1555
|
+
type: "(value: number) => string",
|
|
1556
|
+
default: "locale integers for |value| >= 1000"
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
name: "minY",
|
|
1560
|
+
type: "number",
|
|
1561
|
+
default: "auto"
|
|
1562
|
+
},
|
|
1563
|
+
{
|
|
1564
|
+
name: "maxY",
|
|
1565
|
+
type: "number",
|
|
1566
|
+
default: "auto"
|
|
1567
|
+
},
|
|
1568
|
+
{
|
|
1569
|
+
name: "animated",
|
|
1570
|
+
type: "boolean",
|
|
1571
|
+
default: "true",
|
|
1572
|
+
note: "Draw-in animation; disabled under prefers-reduced-motion."
|
|
1573
|
+
},
|
|
1574
|
+
{
|
|
1575
|
+
name: "loading",
|
|
1576
|
+
type: "boolean",
|
|
1577
|
+
default: "false"
|
|
1578
|
+
},
|
|
1579
|
+
{
|
|
1580
|
+
name: "ariaLabel",
|
|
1581
|
+
type: "string",
|
|
1582
|
+
default: "auto-generated summary"
|
|
1583
|
+
}
|
|
1584
|
+
],
|
|
1585
|
+
events: [
|
|
1586
|
+
{
|
|
1587
|
+
name: "point-click",
|
|
1588
|
+
payload: "{ index: number; label: string; values: { name: string; value: number; color: string }[] }"
|
|
1589
|
+
}
|
|
1590
|
+
],
|
|
1591
|
+
slots: [
|
|
1592
|
+
{
|
|
1593
|
+
name: "legend"
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
name: "tooltip"
|
|
1597
|
+
},
|
|
1598
|
+
{
|
|
1599
|
+
name: "empty"
|
|
1600
|
+
}
|
|
1601
|
+
],
|
|
1602
|
+
a11y: [
|
|
1603
|
+
"SVG is aria-hidden; a visually-hidden <table> mirrors the series data for assistive tech.",
|
|
1604
|
+
"Legend defaults on for multiple series so identity is not color-only.",
|
|
1605
|
+
"Provide a meaningful ariaLabel describing what the chart shows."
|
|
1160
1606
|
],
|
|
1607
|
+
behavior: [
|
|
1608
|
+
"colors_auto_assign_from_chart_palette: --tree-color-chart-1..8, cycling; per-series color overrides",
|
|
1609
|
+
"bar_zero_baseline: true",
|
|
1610
|
+
"line_domain_uses_nice_ticks: true",
|
|
1611
|
+
"hover_shows_crosshair_and_tooltip: true"
|
|
1612
|
+
],
|
|
1613
|
+
selection: {
|
|
1614
|
+
keywords: [
|
|
1615
|
+
"chart",
|
|
1616
|
+
"graph",
|
|
1617
|
+
"line chart",
|
|
1618
|
+
"area chart",
|
|
1619
|
+
"bar chart",
|
|
1620
|
+
"plot",
|
|
1621
|
+
"dashboard",
|
|
1622
|
+
"time series",
|
|
1623
|
+
"analytics"
|
|
1624
|
+
],
|
|
1625
|
+
useWhen: [
|
|
1626
|
+
"You need a line, area, or bar chart with axes, gridlines, legend, and a hover tooltip.",
|
|
1627
|
+
"One or more series share a set of category labels."
|
|
1628
|
+
],
|
|
1629
|
+
avoidWhen: [
|
|
1630
|
+
"A single value tells the story \u2014 use TStat.",
|
|
1631
|
+
"You only need an inline trend with no axes \u2014 use TSparkline.",
|
|
1632
|
+
"The data is a part-of-whole breakdown \u2014 use TDonutChart."
|
|
1633
|
+
],
|
|
1634
|
+
alternatives: [
|
|
1635
|
+
{
|
|
1636
|
+
component: "TSparkline",
|
|
1637
|
+
when: "The trend should be inline and axis-less."
|
|
1638
|
+
},
|
|
1639
|
+
{
|
|
1640
|
+
component: "TDonutChart",
|
|
1641
|
+
when: "The data is proportional (parts of a whole)."
|
|
1642
|
+
}
|
|
1643
|
+
]
|
|
1644
|
+
},
|
|
1645
|
+
setup: {
|
|
1646
|
+
required: [],
|
|
1647
|
+
notes: [
|
|
1648
|
+
"Pass `series` as `{ name, data, color? }[]` and `labels` as a parallel `string[]` (one label per data index).",
|
|
1649
|
+
"Set `type` to `line`, `area`, or `bar`; use `stacked` only with `bar`.",
|
|
1650
|
+
"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.",
|
|
1651
|
+
"Pass `valueFormat: (n) => string` to format axis and tooltip values (currency, compact, etc.).",
|
|
1652
|
+
"No charting library or provider is required \u2014 the SVG and geometry are built in."
|
|
1653
|
+
]
|
|
1654
|
+
},
|
|
1655
|
+
recipes: [
|
|
1656
|
+
"chart-surface",
|
|
1657
|
+
"metric-dashboard"
|
|
1658
|
+
]
|
|
1659
|
+
},
|
|
1660
|
+
{
|
|
1661
|
+
name: "TCheckbox",
|
|
1662
|
+
aliases: [],
|
|
1161
1663
|
package: "@treeui/vue",
|
|
1162
1664
|
kind: "primitive",
|
|
1163
1665
|
category: "Data Entry",
|
|
1164
1666
|
status: "available",
|
|
1165
1667
|
purpose: "Boolean toggle with indeterminate state; supports v-model via modelValue.",
|
|
1166
|
-
sourceFile: "packages/vue/src/components/
|
|
1668
|
+
sourceFile: "packages/vue/src/components/TCheckbox.vue",
|
|
1167
1669
|
storyFile: "apps/docs/src/stories/Checkbox.stories.ts",
|
|
1168
1670
|
storyTitle: "Components/Data Entry/Checkbox",
|
|
1169
1671
|
manifestFile: "docs/ai/COMPONENTS/checkbox.yaml",
|
|
@@ -1175,7 +1677,7 @@ var treeui_catalog_default = {
|
|
|
1175
1677
|
},
|
|
1176
1678
|
{
|
|
1177
1679
|
name: "size",
|
|
1178
|
-
type: "
|
|
1680
|
+
type: "TSize",
|
|
1179
1681
|
default: "md",
|
|
1180
1682
|
values: [
|
|
1181
1683
|
"sm",
|
|
@@ -1255,16 +1757,13 @@ var treeui_catalog_default = {
|
|
|
1255
1757
|
},
|
|
1256
1758
|
{
|
|
1257
1759
|
name: "TCombobox",
|
|
1258
|
-
|
|
1259
|
-
aliases: [
|
|
1260
|
-
"TreeCombobox"
|
|
1261
|
-
],
|
|
1760
|
+
aliases: [],
|
|
1262
1761
|
package: "@treeui/vue",
|
|
1263
1762
|
kind: "primitive",
|
|
1264
1763
|
category: "Data Entry",
|
|
1265
1764
|
status: "available",
|
|
1266
1765
|
purpose: "Searchable combobox / autocomplete input with local filtering, controlled selection, and shared open-state behavior.",
|
|
1267
|
-
sourceFile: "packages/vue/src/components/
|
|
1766
|
+
sourceFile: "packages/vue/src/components/TCombobox.vue",
|
|
1268
1767
|
storyFile: "apps/docs/src/stories/Combobox.stories.ts",
|
|
1269
1768
|
storyTitle: "Components/Data Entry/Combobox",
|
|
1270
1769
|
manifestFile: "docs/ai/COMPONENTS/combobox.yaml",
|
|
@@ -1276,7 +1775,7 @@ var treeui_catalog_default = {
|
|
|
1276
1775
|
},
|
|
1277
1776
|
{
|
|
1278
1777
|
name: "options",
|
|
1279
|
-
type: "
|
|
1778
|
+
type: "TComboboxOption[]",
|
|
1280
1779
|
default: "[]",
|
|
1281
1780
|
note: "Array of { label: string; value: string; description?: string; keywords?: string[]; disabled?: boolean }"
|
|
1282
1781
|
},
|
|
@@ -1292,7 +1791,7 @@ var treeui_catalog_default = {
|
|
|
1292
1791
|
},
|
|
1293
1792
|
{
|
|
1294
1793
|
name: "size",
|
|
1295
|
-
type: "
|
|
1794
|
+
type: "TSize",
|
|
1296
1795
|
default: "md",
|
|
1297
1796
|
values: [
|
|
1298
1797
|
"sm",
|
|
@@ -1409,16 +1908,13 @@ var treeui_catalog_default = {
|
|
|
1409
1908
|
},
|
|
1410
1909
|
{
|
|
1411
1910
|
name: "TConfirmDialog",
|
|
1412
|
-
|
|
1413
|
-
aliases: [
|
|
1414
|
-
"TreeConfirmDialog"
|
|
1415
|
-
],
|
|
1911
|
+
aliases: [],
|
|
1416
1912
|
package: "@treeui/vue",
|
|
1417
1913
|
kind: "overlay",
|
|
1418
1914
|
category: "Overlay",
|
|
1419
1915
|
status: "available",
|
|
1420
1916
|
purpose: "High-level confirmation dialog built on the shared modal contract, with default confirm and cancel actions.",
|
|
1421
|
-
sourceFile: "packages/vue/src/components/
|
|
1917
|
+
sourceFile: "packages/vue/src/components/TConfirmDialog.vue",
|
|
1422
1918
|
storyFile: "apps/docs/src/stories/ConfirmDialog.stories.ts",
|
|
1423
1919
|
storyTitle: "Components/Overlay/ConfirmDialog",
|
|
1424
1920
|
manifestFile: "docs/ai/COMPONENTS/confirm-dialog.yaml",
|
|
@@ -1440,7 +1936,7 @@ var treeui_catalog_default = {
|
|
|
1440
1936
|
},
|
|
1441
1937
|
{
|
|
1442
1938
|
name: "size",
|
|
1443
|
-
type: "
|
|
1939
|
+
type: "TSize",
|
|
1444
1940
|
default: "sm",
|
|
1445
1941
|
values: [
|
|
1446
1942
|
"sm",
|
|
@@ -1470,7 +1966,7 @@ var treeui_catalog_default = {
|
|
|
1470
1966
|
},
|
|
1471
1967
|
{
|
|
1472
1968
|
name: "confirmVariant",
|
|
1473
|
-
type: "
|
|
1969
|
+
type: "TVariant",
|
|
1474
1970
|
default: "danger"
|
|
1475
1971
|
},
|
|
1476
1972
|
{
|
|
@@ -1578,16 +2074,13 @@ var treeui_catalog_default = {
|
|
|
1578
2074
|
},
|
|
1579
2075
|
{
|
|
1580
2076
|
name: "TContainer",
|
|
1581
|
-
|
|
1582
|
-
aliases: [
|
|
1583
|
-
"TreeContainer"
|
|
1584
|
-
],
|
|
2077
|
+
aliases: [],
|
|
1585
2078
|
package: "@treeui/vue",
|
|
1586
2079
|
kind: "layout",
|
|
1587
2080
|
category: "Layout",
|
|
1588
2081
|
status: "available",
|
|
1589
2082
|
purpose: "Width-constrained layout wrapper for readable page content and app sections.",
|
|
1590
|
-
sourceFile: "packages/vue/src/components/
|
|
2083
|
+
sourceFile: "packages/vue/src/components/TContainer.vue",
|
|
1591
2084
|
storyFile: "apps/docs/src/stories/Container.stories.ts",
|
|
1592
2085
|
storyTitle: "Components/Layout/Container",
|
|
1593
2086
|
manifestFile: "docs/ai/COMPONENTS/container.yaml",
|
|
@@ -1599,7 +2092,7 @@ var treeui_catalog_default = {
|
|
|
1599
2092
|
},
|
|
1600
2093
|
{
|
|
1601
2094
|
name: "size",
|
|
1602
|
-
type: "
|
|
2095
|
+
type: "TContainerSize",
|
|
1603
2096
|
default: "lg",
|
|
1604
2097
|
values: [
|
|
1605
2098
|
"sm",
|
|
@@ -1670,10 +2163,7 @@ var treeui_catalog_default = {
|
|
|
1670
2163
|
},
|
|
1671
2164
|
{
|
|
1672
2165
|
name: "TContextMenu",
|
|
1673
|
-
|
|
1674
|
-
aliases: [
|
|
1675
|
-
"TreeContextMenu"
|
|
1676
|
-
],
|
|
2166
|
+
aliases: [],
|
|
1677
2167
|
package: "@treeui/vue",
|
|
1678
2168
|
category: "Overlay",
|
|
1679
2169
|
status: "stable",
|
|
@@ -1683,7 +2173,7 @@ var treeui_catalog_default = {
|
|
|
1683
2173
|
props: [
|
|
1684
2174
|
{
|
|
1685
2175
|
name: "items",
|
|
1686
|
-
type: "
|
|
2176
|
+
type: "TContextMenuItem[]",
|
|
1687
2177
|
default: "[]",
|
|
1688
2178
|
description: "Menu items to render."
|
|
1689
2179
|
},
|
|
@@ -1707,7 +2197,7 @@ var treeui_catalog_default = {
|
|
|
1707
2197
|
},
|
|
1708
2198
|
{
|
|
1709
2199
|
name: "size",
|
|
1710
|
-
type: "
|
|
2200
|
+
type: "TSize",
|
|
1711
2201
|
default: "md",
|
|
1712
2202
|
description: "Item sizing variant."
|
|
1713
2203
|
}
|
|
@@ -1780,16 +2270,13 @@ var treeui_catalog_default = {
|
|
|
1780
2270
|
},
|
|
1781
2271
|
{
|
|
1782
2272
|
name: "TDatePicker",
|
|
1783
|
-
|
|
1784
|
-
aliases: [
|
|
1785
|
-
"TreeDatePicker"
|
|
1786
|
-
],
|
|
2273
|
+
aliases: [],
|
|
1787
2274
|
package: "@treeui/vue",
|
|
1788
2275
|
kind: "form_overlay",
|
|
1789
2276
|
category: "Data Entry",
|
|
1790
2277
|
status: "available",
|
|
1791
2278
|
purpose: "Date input with calendar popover and keyboard navigation.",
|
|
1792
|
-
sourceFile: "packages/vue/src/components/
|
|
2279
|
+
sourceFile: "packages/vue/src/components/TDatePicker.vue",
|
|
1793
2280
|
storyFile: "apps/docs/src/stories/DatePicker.stories.ts",
|
|
1794
2281
|
storyTitle: "Components/Data Entry/DatePicker",
|
|
1795
2282
|
manifestFile: "docs/ai/COMPONENTS/date-picker.yaml",
|
|
@@ -1811,7 +2298,7 @@ var treeui_catalog_default = {
|
|
|
1811
2298
|
},
|
|
1812
2299
|
{
|
|
1813
2300
|
name: "size",
|
|
1814
|
-
type: "
|
|
2301
|
+
type: "TSize",
|
|
1815
2302
|
default: "md",
|
|
1816
2303
|
values: [
|
|
1817
2304
|
"sm",
|
|
@@ -1932,16 +2419,13 @@ var treeui_catalog_default = {
|
|
|
1932
2419
|
},
|
|
1933
2420
|
{
|
|
1934
2421
|
name: "TDateTimePicker",
|
|
1935
|
-
|
|
1936
|
-
aliases: [
|
|
1937
|
-
"TreeDateTimePicker"
|
|
1938
|
-
],
|
|
2422
|
+
aliases: [],
|
|
1939
2423
|
package: "@treeui/vue",
|
|
1940
2424
|
kind: "form",
|
|
1941
2425
|
category: "Data Entry",
|
|
1942
2426
|
status: "available",
|
|
1943
2427
|
purpose: "Date and time picker with a calendar grid, time selection, and overlay trigger.",
|
|
1944
|
-
sourceFile: "packages/vue/src/components/
|
|
2428
|
+
sourceFile: "packages/vue/src/components/TDateTimePicker.vue",
|
|
1945
2429
|
storyFile: "apps/docs/src/stories/DateTimePicker.stories.ts",
|
|
1946
2430
|
storyTitle: "Components/Data Entry/DateTimePicker",
|
|
1947
2431
|
manifestFile: "docs/ai/COMPONENTS/date-time-picker.yaml",
|
|
@@ -1964,7 +2448,7 @@ var treeui_catalog_default = {
|
|
|
1964
2448
|
},
|
|
1965
2449
|
{
|
|
1966
2450
|
name: "size",
|
|
1967
|
-
type: "
|
|
2451
|
+
type: "TSize",
|
|
1968
2452
|
default: "md",
|
|
1969
2453
|
values: [
|
|
1970
2454
|
"sm",
|
|
@@ -2093,14 +2577,11 @@ var treeui_catalog_default = {
|
|
|
2093
2577
|
},
|
|
2094
2578
|
{
|
|
2095
2579
|
name: "TDivider",
|
|
2096
|
-
|
|
2097
|
-
aliases: [
|
|
2098
|
-
"TreeDivider"
|
|
2099
|
-
],
|
|
2580
|
+
aliases: [],
|
|
2100
2581
|
package: "@treeui/vue",
|
|
2101
2582
|
category: "Layout",
|
|
2102
2583
|
description: "Horizontal or vertical visual separator.",
|
|
2103
|
-
sourceFile: "packages/vue/src/components/
|
|
2584
|
+
sourceFile: "packages/vue/src/components/TDivider.vue",
|
|
2104
2585
|
storyFile: "apps/docs/src/stories/Divider.stories.ts",
|
|
2105
2586
|
storyTitle: "Components/Layout/Divider",
|
|
2106
2587
|
manifestFile: "docs/ai/COMPONENTS/divider.yaml",
|
|
@@ -2115,50 +2596,183 @@ var treeui_catalog_default = {
|
|
|
2115
2596
|
]
|
|
2116
2597
|
},
|
|
2117
2598
|
{
|
|
2118
|
-
name: "decorative",
|
|
2599
|
+
name: "decorative",
|
|
2600
|
+
type: "boolean",
|
|
2601
|
+
default: "true",
|
|
2602
|
+
description: "When true, renders role='none' (purely visual). When false, renders as role='separator'."
|
|
2603
|
+
},
|
|
2604
|
+
{
|
|
2605
|
+
name: "label",
|
|
2606
|
+
type: "string",
|
|
2607
|
+
required: false,
|
|
2608
|
+
description: "Accessible label for non-decorative dividers."
|
|
2609
|
+
}
|
|
2610
|
+
],
|
|
2611
|
+
events: [],
|
|
2612
|
+
slots: [],
|
|
2613
|
+
a11y: [
|
|
2614
|
+
"role: none (decorative) or separator (semantic)",
|
|
2615
|
+
"aria-orientation: Set when non-decorative.",
|
|
2616
|
+
"aria-label: Set from `label` prop when non-decorative."
|
|
2617
|
+
],
|
|
2618
|
+
behavior: [],
|
|
2619
|
+
selection: {
|
|
2620
|
+
keywords: [],
|
|
2621
|
+
useWhen: [],
|
|
2622
|
+
avoidWhen: [],
|
|
2623
|
+
alternatives: []
|
|
2624
|
+
},
|
|
2625
|
+
setup: {
|
|
2626
|
+
required: [],
|
|
2627
|
+
notes: []
|
|
2628
|
+
},
|
|
2629
|
+
recipes: []
|
|
2630
|
+
},
|
|
2631
|
+
{
|
|
2632
|
+
name: "TDonutChart",
|
|
2633
|
+
aliases: [],
|
|
2634
|
+
package: "@treeui/vue",
|
|
2635
|
+
kind: "data-display",
|
|
2636
|
+
category: "Data Display",
|
|
2637
|
+
status: "available",
|
|
2638
|
+
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.",
|
|
2639
|
+
sourceFile: "packages/vue/src/components/TDonutChart.vue",
|
|
2640
|
+
storyFile: "apps/docs/src/stories/DonutChart.stories.ts",
|
|
2641
|
+
storyTitle: "Components/Data Display/Donut Chart",
|
|
2642
|
+
manifestFile: "docs/ai/COMPONENTS/donut-chart.yaml",
|
|
2643
|
+
props: [
|
|
2644
|
+
{
|
|
2645
|
+
name: "segments",
|
|
2646
|
+
type: "TDonutSegment[]",
|
|
2647
|
+
default: "[]",
|
|
2648
|
+
note: "Each item is { label: string; value: number; color?: string }. Non-positive values are omitted."
|
|
2649
|
+
},
|
|
2650
|
+
{
|
|
2651
|
+
name: "size",
|
|
2652
|
+
type: "number",
|
|
2653
|
+
default: "200",
|
|
2654
|
+
note: "Square canvas in px."
|
|
2655
|
+
},
|
|
2656
|
+
{
|
|
2657
|
+
name: "thickness",
|
|
2658
|
+
type: "number",
|
|
2659
|
+
default: "26",
|
|
2660
|
+
note: "Ring thickness; 0 renders a full pie."
|
|
2661
|
+
},
|
|
2662
|
+
{
|
|
2663
|
+
name: "gap",
|
|
2664
|
+
type: "number",
|
|
2665
|
+
default: "2",
|
|
2666
|
+
note: "Gap between slices, in degrees."
|
|
2667
|
+
},
|
|
2668
|
+
{
|
|
2669
|
+
name: "rounded",
|
|
2670
|
+
type: "boolean",
|
|
2671
|
+
default: "false",
|
|
2672
|
+
note: "Round the ends of donut segments (widens the gap to make room). Best with a thinner ring."
|
|
2673
|
+
},
|
|
2674
|
+
{
|
|
2675
|
+
name: "showLegend",
|
|
2676
|
+
type: "boolean",
|
|
2677
|
+
default: "true"
|
|
2678
|
+
},
|
|
2679
|
+
{
|
|
2680
|
+
name: "showPercent",
|
|
2681
|
+
type: "boolean",
|
|
2682
|
+
default: "true"
|
|
2683
|
+
},
|
|
2684
|
+
{
|
|
2685
|
+
name: "centerLabel",
|
|
2686
|
+
type: "string",
|
|
2687
|
+
default: "Total",
|
|
2688
|
+
note: "Donut only; ignored for pie."
|
|
2689
|
+
},
|
|
2690
|
+
{
|
|
2691
|
+
name: "centerValue",
|
|
2692
|
+
type: "string | number",
|
|
2693
|
+
default: "auto (sum of values)"
|
|
2694
|
+
},
|
|
2695
|
+
{
|
|
2696
|
+
name: "valueFormat",
|
|
2697
|
+
type: "(value: number) => string",
|
|
2698
|
+
default: "locale integers for |value| >= 1000"
|
|
2699
|
+
},
|
|
2700
|
+
{
|
|
2701
|
+
name: "loading",
|
|
2119
2702
|
type: "boolean",
|
|
2120
|
-
default: "
|
|
2121
|
-
description: "When true, renders role='none' (purely visual). When false, renders as role='separator'."
|
|
2703
|
+
default: "false"
|
|
2122
2704
|
},
|
|
2123
2705
|
{
|
|
2124
|
-
name: "
|
|
2706
|
+
name: "ariaLabel",
|
|
2125
2707
|
type: "string",
|
|
2126
|
-
|
|
2127
|
-
description: "Accessible label for non-decorative dividers."
|
|
2708
|
+
default: "auto-generated summary"
|
|
2128
2709
|
}
|
|
2129
2710
|
],
|
|
2130
2711
|
events: [],
|
|
2131
|
-
slots: [
|
|
2712
|
+
slots: [
|
|
2713
|
+
{
|
|
2714
|
+
name: "center"
|
|
2715
|
+
},
|
|
2716
|
+
{
|
|
2717
|
+
name: "empty"
|
|
2718
|
+
}
|
|
2719
|
+
],
|
|
2132
2720
|
a11y: [
|
|
2133
|
-
"role
|
|
2134
|
-
"
|
|
2135
|
-
|
|
2721
|
+
"Renders role=img with an aria-label summarizing the chart.",
|
|
2722
|
+
"Legend + percentages give a non-visual reading of each slice."
|
|
2723
|
+
],
|
|
2724
|
+
behavior: [
|
|
2725
|
+
"colors_auto_assign_from_chart_palette: --tree-color-chart-1..8, cycling; per-segment color overrides",
|
|
2726
|
+
"hovering_a_slice_dims_the_rest_and_updates_center: true",
|
|
2727
|
+
"center_shows_total_or_the_hovered_segment: true"
|
|
2136
2728
|
],
|
|
2137
|
-
behavior: [],
|
|
2138
2729
|
selection: {
|
|
2139
|
-
keywords: [
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2730
|
+
keywords: [
|
|
2731
|
+
"donut",
|
|
2732
|
+
"doughnut",
|
|
2733
|
+
"pie",
|
|
2734
|
+
"proportion",
|
|
2735
|
+
"share",
|
|
2736
|
+
"breakdown",
|
|
2737
|
+
"part of whole",
|
|
2738
|
+
"percentage"
|
|
2739
|
+
],
|
|
2740
|
+
useWhen: [
|
|
2741
|
+
"You are showing how a total splits into a handful of categories.",
|
|
2742
|
+
"A donut center readout (total or hovered slice) is useful."
|
|
2743
|
+
],
|
|
2744
|
+
avoidWhen: [
|
|
2745
|
+
"There are many categories or precise comparison matters \u2014 use TChart bars.",
|
|
2746
|
+
"The data is a trend over time \u2014 use TChart or TSparkline."
|
|
2747
|
+
],
|
|
2748
|
+
alternatives: [
|
|
2749
|
+
{
|
|
2750
|
+
component: "TChart",
|
|
2751
|
+
when: "Precise magnitude comparison across categories is needed (bars)."
|
|
2752
|
+
}
|
|
2753
|
+
]
|
|
2143
2754
|
},
|
|
2144
2755
|
setup: {
|
|
2145
2756
|
required: [],
|
|
2146
|
-
notes: [
|
|
2757
|
+
notes: [
|
|
2758
|
+
"Pass `segments` as `{ label, value, color? }[]`; non-positive values are dropped.",
|
|
2759
|
+
"Set `thickness: 0` for a full pie; keep the default for a donut with a center readout.",
|
|
2760
|
+
"Use the `center` slot (donut only) for a custom center; otherwise it shows the total or the hovered slice."
|
|
2761
|
+
]
|
|
2147
2762
|
},
|
|
2148
|
-
recipes: [
|
|
2763
|
+
recipes: [
|
|
2764
|
+
"metric-dashboard"
|
|
2765
|
+
]
|
|
2149
2766
|
},
|
|
2150
2767
|
{
|
|
2151
2768
|
name: "TDrawer",
|
|
2152
|
-
|
|
2153
|
-
aliases: [
|
|
2154
|
-
"TreeDrawer"
|
|
2155
|
-
],
|
|
2769
|
+
aliases: [],
|
|
2156
2770
|
package: "@treeui/vue",
|
|
2157
2771
|
kind: "overlay",
|
|
2158
2772
|
category: "Overlay",
|
|
2159
2773
|
status: "available",
|
|
2160
2774
|
purpose: "Side-anchored panel for secondary content, navigation, or forms.",
|
|
2161
|
-
sourceFile: "packages/vue/src/components/
|
|
2775
|
+
sourceFile: "packages/vue/src/components/TDrawer.vue",
|
|
2162
2776
|
storyFile: "apps/docs/src/stories/Drawer.stories.ts",
|
|
2163
2777
|
storyTitle: "Components/Overlay/Drawer",
|
|
2164
2778
|
manifestFile: "docs/ai/COMPONENTS/drawer.yaml",
|
|
@@ -2180,7 +2794,7 @@ var treeui_catalog_default = {
|
|
|
2180
2794
|
},
|
|
2181
2795
|
{
|
|
2182
2796
|
name: "size",
|
|
2183
|
-
type: "
|
|
2797
|
+
type: "TSize",
|
|
2184
2798
|
default: "md",
|
|
2185
2799
|
values: [
|
|
2186
2800
|
"sm",
|
|
@@ -2190,7 +2804,7 @@ var treeui_catalog_default = {
|
|
|
2190
2804
|
},
|
|
2191
2805
|
{
|
|
2192
2806
|
name: "side",
|
|
2193
|
-
type: "
|
|
2807
|
+
type: "TDrawerSide",
|
|
2194
2808
|
default: "right",
|
|
2195
2809
|
values: [
|
|
2196
2810
|
"top",
|
|
@@ -2305,23 +2919,20 @@ var treeui_catalog_default = {
|
|
|
2305
2919
|
},
|
|
2306
2920
|
{
|
|
2307
2921
|
name: "TDropdown",
|
|
2308
|
-
|
|
2309
|
-
aliases: [
|
|
2310
|
-
"TreeDropdown"
|
|
2311
|
-
],
|
|
2922
|
+
aliases: [],
|
|
2312
2923
|
package: "@treeui/vue",
|
|
2313
2924
|
kind: "overlay",
|
|
2314
2925
|
category: "Overlay",
|
|
2315
2926
|
status: "available",
|
|
2316
2927
|
purpose: "Trigger + floating menu with keyboard navigation for action lists.",
|
|
2317
|
-
sourceFile: "packages/vue/src/components/
|
|
2928
|
+
sourceFile: "packages/vue/src/components/TDropdown.vue",
|
|
2318
2929
|
storyFile: "apps/docs/src/stories/Dropdown.stories.ts",
|
|
2319
2930
|
storyTitle: "Components/Overlay/Dropdown",
|
|
2320
2931
|
manifestFile: "docs/ai/COMPONENTS/dropdown.yaml",
|
|
2321
2932
|
props: [
|
|
2322
2933
|
{
|
|
2323
2934
|
name: "items",
|
|
2324
|
-
type: "
|
|
2935
|
+
type: "TDropdownItem[]",
|
|
2325
2936
|
default: "[]",
|
|
2326
2937
|
note: "Array of { label: string; value: string; disabled?: boolean }"
|
|
2327
2938
|
},
|
|
@@ -2342,7 +2953,7 @@ var treeui_catalog_default = {
|
|
|
2342
2953
|
},
|
|
2343
2954
|
{
|
|
2344
2955
|
name: "size",
|
|
2345
|
-
type: "
|
|
2956
|
+
type: "TSize",
|
|
2346
2957
|
default: "md",
|
|
2347
2958
|
values: [
|
|
2348
2959
|
"sm",
|
|
@@ -2354,6 +2965,16 @@ var treeui_catalog_default = {
|
|
|
2354
2965
|
name: "label",
|
|
2355
2966
|
type: "string",
|
|
2356
2967
|
default: ""
|
|
2968
|
+
},
|
|
2969
|
+
{
|
|
2970
|
+
name: "align",
|
|
2971
|
+
type: "TDropdownAlign",
|
|
2972
|
+
default: "start",
|
|
2973
|
+
values: [
|
|
2974
|
+
"start",
|
|
2975
|
+
"end"
|
|
2976
|
+
],
|
|
2977
|
+
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)."
|
|
2357
2978
|
}
|
|
2358
2979
|
],
|
|
2359
2980
|
events: [
|
|
@@ -2389,7 +3010,8 @@ var treeui_catalog_default = {
|
|
|
2389
3010
|
behavior: [
|
|
2390
3011
|
"outside_click_closes_menu: true",
|
|
2391
3012
|
"focus_restores_on_close: true",
|
|
2392
|
-
"chevron_rotates_when_open: true"
|
|
3013
|
+
"chevron_rotates_when_open: true",
|
|
3014
|
+
"menu_grows_to_fit_items_without_wrapping: true"
|
|
2393
3015
|
],
|
|
2394
3016
|
selection: {
|
|
2395
3017
|
keywords: [
|
|
@@ -2422,16 +3044,13 @@ var treeui_catalog_default = {
|
|
|
2422
3044
|
},
|
|
2423
3045
|
{
|
|
2424
3046
|
name: "TEmptyState",
|
|
2425
|
-
|
|
2426
|
-
aliases: [
|
|
2427
|
-
"TreeEmptyState"
|
|
2428
|
-
],
|
|
3047
|
+
aliases: [],
|
|
2429
3048
|
package: "@treeui/vue",
|
|
2430
3049
|
kind: "feedback",
|
|
2431
3050
|
category: "Feedback",
|
|
2432
3051
|
status: "available",
|
|
2433
3052
|
purpose: "Structured empty, no-results, and first-run placeholder block with optional icon, body content, and actions.",
|
|
2434
|
-
sourceFile: "packages/vue/src/components/
|
|
3053
|
+
sourceFile: "packages/vue/src/components/TEmptyState.vue",
|
|
2435
3054
|
storyFile: "apps/docs/src/stories/EmptyState.stories.ts",
|
|
2436
3055
|
storyTitle: "Components/Feedback/EmptyState",
|
|
2437
3056
|
manifestFile: "docs/ai/COMPONENTS/empty-state.yaml",
|
|
@@ -2443,7 +3062,7 @@ var treeui_catalog_default = {
|
|
|
2443
3062
|
},
|
|
2444
3063
|
{
|
|
2445
3064
|
name: "size",
|
|
2446
|
-
type: "
|
|
3065
|
+
type: "TSize",
|
|
2447
3066
|
default: "md",
|
|
2448
3067
|
values: [
|
|
2449
3068
|
"sm",
|
|
@@ -2517,16 +3136,13 @@ var treeui_catalog_default = {
|
|
|
2517
3136
|
},
|
|
2518
3137
|
{
|
|
2519
3138
|
name: "TFileUpload",
|
|
2520
|
-
|
|
2521
|
-
aliases: [
|
|
2522
|
-
"TreeFileUpload"
|
|
2523
|
-
],
|
|
3139
|
+
aliases: [],
|
|
2524
3140
|
package: "@treeui/vue",
|
|
2525
3141
|
kind: "form",
|
|
2526
3142
|
category: "Form",
|
|
2527
3143
|
status: "available",
|
|
2528
3144
|
purpose: "Composable dropzone and file picker with browse, drag-and-drop, and Ctrl+V paste support.",
|
|
2529
|
-
sourceFile: "packages/vue/src/components/
|
|
3145
|
+
sourceFile: "packages/vue/src/components/TFileUpload.vue",
|
|
2530
3146
|
storyFile: "apps/docs/src/stories/FileUpload.stories.ts",
|
|
2531
3147
|
storyTitle: "Components/Form/FileUpload",
|
|
2532
3148
|
manifestFile: "docs/ai/COMPONENTS/file-upload.yaml",
|
|
@@ -2538,7 +3154,7 @@ var treeui_catalog_default = {
|
|
|
2538
3154
|
},
|
|
2539
3155
|
{
|
|
2540
3156
|
name: "size",
|
|
2541
|
-
type: "
|
|
3157
|
+
type: "TSize",
|
|
2542
3158
|
default: "md",
|
|
2543
3159
|
values: [
|
|
2544
3160
|
"sm",
|
|
@@ -2671,15 +3287,12 @@ var treeui_catalog_default = {
|
|
|
2671
3287
|
},
|
|
2672
3288
|
{
|
|
2673
3289
|
name: "TFormField",
|
|
2674
|
-
|
|
2675
|
-
aliases: [
|
|
2676
|
-
"TreeFormField"
|
|
2677
|
-
],
|
|
3290
|
+
aliases: [],
|
|
2678
3291
|
package: "@treeui/vue",
|
|
2679
3292
|
category: "Data Entry",
|
|
2680
3293
|
status: "milestone-1",
|
|
2681
3294
|
description: "Label + input wrapper with error and hint slots. Provides consistent layout, labelling, and validation messaging for any form control.\n",
|
|
2682
|
-
sourceFile: "packages/vue/src/components/
|
|
3295
|
+
sourceFile: "packages/vue/src/components/TFormField.vue",
|
|
2683
3296
|
storyFile: "apps/docs/src/stories/FormField.stories.ts",
|
|
2684
3297
|
storyTitle: "Components/Data Entry/FormField",
|
|
2685
3298
|
manifestFile: "docs/ai/COMPONENTS/form-field.yaml",
|
|
@@ -2722,7 +3335,7 @@ var treeui_catalog_default = {
|
|
|
2722
3335
|
},
|
|
2723
3336
|
{
|
|
2724
3337
|
name: "size",
|
|
2725
|
-
type: "
|
|
3338
|
+
type: "TSize",
|
|
2726
3339
|
default: "md",
|
|
2727
3340
|
values: [
|
|
2728
3341
|
"sm",
|
|
@@ -2803,16 +3416,13 @@ var treeui_catalog_default = {
|
|
|
2803
3416
|
},
|
|
2804
3417
|
{
|
|
2805
3418
|
name: "TGrid",
|
|
2806
|
-
|
|
2807
|
-
aliases: [
|
|
2808
|
-
"TreeGrid"
|
|
2809
|
-
],
|
|
3419
|
+
aliases: [],
|
|
2810
3420
|
package: "@treeui/vue",
|
|
2811
3421
|
kind: "layout",
|
|
2812
3422
|
category: "Layout",
|
|
2813
3423
|
status: "available",
|
|
2814
3424
|
purpose: "Responsive grid wrapper for cards, forms, stats, and other multi-column layouts.",
|
|
2815
|
-
sourceFile: "packages/vue/src/components/
|
|
3425
|
+
sourceFile: "packages/vue/src/components/TGrid.vue",
|
|
2816
3426
|
storyFile: "apps/docs/src/stories/Grid.stories.ts",
|
|
2817
3427
|
storyTitle: "Components/Layout/Grid",
|
|
2818
3428
|
manifestFile: "docs/ai/COMPONENTS/grid.yaml",
|
|
@@ -2901,21 +3511,109 @@ var treeui_catalog_default = {
|
|
|
2901
3511
|
},
|
|
2902
3512
|
recipes: [
|
|
2903
3513
|
"date-range-form",
|
|
2904
|
-
"stat-grid"
|
|
3514
|
+
"stat-grid",
|
|
3515
|
+
"metric-dashboard"
|
|
2905
3516
|
]
|
|
2906
3517
|
},
|
|
2907
3518
|
{
|
|
2908
|
-
name: "
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
3519
|
+
name: "TIcon",
|
|
3520
|
+
aliases: [],
|
|
3521
|
+
package: "@treeui/vue",
|
|
3522
|
+
kind: "display",
|
|
3523
|
+
category: "Data Display",
|
|
3524
|
+
status: "available",
|
|
3525
|
+
purpose: "Render a registered TreeUI icon by name with consistent sizing and accessibility defaults.",
|
|
3526
|
+
sourceFile: "packages/vue/src/components/TIcon.vue",
|
|
3527
|
+
storyFile: "apps/docs/src/stories/Icon.stories.ts",
|
|
3528
|
+
storyTitle: "Components/Data Display/Icon",
|
|
3529
|
+
manifestFile: "docs/ai/COMPONENTS/icon.yaml",
|
|
3530
|
+
props: [
|
|
3531
|
+
{
|
|
3532
|
+
name: "name",
|
|
3533
|
+
type: "TIconName",
|
|
3534
|
+
required: true,
|
|
3535
|
+
values: [
|
|
3536
|
+
"alert-circle",
|
|
3537
|
+
"calendar",
|
|
3538
|
+
"check",
|
|
3539
|
+
"chevron-left",
|
|
3540
|
+
"chevron-down",
|
|
3541
|
+
"chevron-right",
|
|
3542
|
+
"info",
|
|
3543
|
+
"loader-circle",
|
|
3544
|
+
"search",
|
|
3545
|
+
"x"
|
|
3546
|
+
],
|
|
3547
|
+
description: "Icon identifier from the @treeui/icons registry."
|
|
3548
|
+
},
|
|
3549
|
+
{
|
|
3550
|
+
name: "size",
|
|
3551
|
+
type: "number | string",
|
|
3552
|
+
default: "20",
|
|
3553
|
+
description: "Pixel size for both width and height of the rendered svg."
|
|
3554
|
+
},
|
|
3555
|
+
{
|
|
3556
|
+
name: "strokeWidth",
|
|
3557
|
+
type: "number | string",
|
|
3558
|
+
default: "2"
|
|
3559
|
+
},
|
|
3560
|
+
{
|
|
3561
|
+
name: "absoluteStrokeWidth",
|
|
3562
|
+
type: "boolean",
|
|
3563
|
+
default: "true",
|
|
3564
|
+
description: "When true, stroke width stays visually constant across sizes."
|
|
3565
|
+
},
|
|
3566
|
+
{
|
|
3567
|
+
name: "label",
|
|
3568
|
+
type: "string",
|
|
3569
|
+
default: "undefined",
|
|
3570
|
+
description: 'Accessible label. When set, the icon becomes role="img" with aria-label; otherwise it is aria-hidden.'
|
|
3571
|
+
}
|
|
3572
|
+
],
|
|
3573
|
+
events: [],
|
|
3574
|
+
slots: [],
|
|
3575
|
+
a11y: [
|
|
3576
|
+
"decorative_by_default: true",
|
|
3577
|
+
"becomes_image_when_labeled: true",
|
|
3578
|
+
"rule: Provide `label` only when the icon conveys meaning that is not already in adjacent text."
|
|
2912
3579
|
],
|
|
3580
|
+
behavior: [],
|
|
3581
|
+
selection: {
|
|
3582
|
+
keywords: [
|
|
3583
|
+
"icon",
|
|
3584
|
+
"svg",
|
|
3585
|
+
"glyph",
|
|
3586
|
+
"pictogram"
|
|
3587
|
+
],
|
|
3588
|
+
useWhen: [
|
|
3589
|
+
"You need to render a registered TreeUI icon by name.",
|
|
3590
|
+
"You want consistent sizing and a11y defaults without importing the icon component directly."
|
|
3591
|
+
],
|
|
3592
|
+
avoidWhen: [
|
|
3593
|
+
"The icon is not in the @treeui/icons registry \u2014 import or register it instead."
|
|
3594
|
+
],
|
|
3595
|
+
alternatives: [
|
|
3596
|
+
{
|
|
3597
|
+
component: "named import from @treeui/icons",
|
|
3598
|
+
when: "You need tree-shaken, statically-imported icon components."
|
|
3599
|
+
}
|
|
3600
|
+
]
|
|
3601
|
+
},
|
|
3602
|
+
setup: {
|
|
3603
|
+
required: [],
|
|
3604
|
+
notes: []
|
|
3605
|
+
},
|
|
3606
|
+
recipes: []
|
|
3607
|
+
},
|
|
3608
|
+
{
|
|
3609
|
+
name: "TInput",
|
|
3610
|
+
aliases: [],
|
|
2913
3611
|
package: "@treeui/vue",
|
|
2914
3612
|
kind: "primitive",
|
|
2915
3613
|
category: "Data Entry",
|
|
2916
3614
|
status: "available",
|
|
2917
3615
|
purpose: "Text input with size, loading, invalid, and prefix or suffix slots.",
|
|
2918
|
-
sourceFile: "packages/vue/src/components/
|
|
3616
|
+
sourceFile: "packages/vue/src/components/TInput.vue",
|
|
2919
3617
|
storyFile: "apps/docs/src/stories/Input.stories.ts",
|
|
2920
3618
|
storyTitle: "Components/Data Entry/Input",
|
|
2921
3619
|
manifestFile: "docs/ai/COMPONENTS/input.yaml",
|
|
@@ -2927,7 +3625,7 @@ var treeui_catalog_default = {
|
|
|
2927
3625
|
},
|
|
2928
3626
|
{
|
|
2929
3627
|
name: "size",
|
|
2930
|
-
type: "
|
|
3628
|
+
type: "TSize",
|
|
2931
3629
|
default: "md",
|
|
2932
3630
|
values: [
|
|
2933
3631
|
"sm",
|
|
@@ -3021,16 +3719,13 @@ var treeui_catalog_default = {
|
|
|
3021
3719
|
},
|
|
3022
3720
|
{
|
|
3023
3721
|
name: "TLink",
|
|
3024
|
-
|
|
3025
|
-
aliases: [
|
|
3026
|
-
"TreeLink"
|
|
3027
|
-
],
|
|
3722
|
+
aliases: [],
|
|
3028
3723
|
package: "@treeui/vue",
|
|
3029
3724
|
kind: "navigation",
|
|
3030
3725
|
category: "Navigation",
|
|
3031
3726
|
status: "available",
|
|
3032
3727
|
purpose: "Inline link with consistent styling, optional RouterLink rendering, and external link support.",
|
|
3033
|
-
sourceFile: "packages/vue/src/components/
|
|
3728
|
+
sourceFile: "packages/vue/src/components/TLink.vue",
|
|
3034
3729
|
storyFile: "apps/docs/src/stories/Link.stories.ts",
|
|
3035
3730
|
storyTitle: "Components/Navigation/Link",
|
|
3036
3731
|
manifestFile: "docs/ai/COMPONENTS/link.yaml",
|
|
@@ -3060,7 +3755,7 @@ var treeui_catalog_default = {
|
|
|
3060
3755
|
},
|
|
3061
3756
|
{
|
|
3062
3757
|
name: "variant",
|
|
3063
|
-
type: "
|
|
3758
|
+
type: "TLinkVariant",
|
|
3064
3759
|
default: "default",
|
|
3065
3760
|
values: [
|
|
3066
3761
|
"default",
|
|
@@ -3096,10 +3791,7 @@ var treeui_catalog_default = {
|
|
|
3096
3791
|
},
|
|
3097
3792
|
{
|
|
3098
3793
|
name: "TMarkdownEditor",
|
|
3099
|
-
|
|
3100
|
-
aliases: [
|
|
3101
|
-
"TreeMarkdownEditor"
|
|
3102
|
-
],
|
|
3794
|
+
aliases: [],
|
|
3103
3795
|
package: "@treeui/vue",
|
|
3104
3796
|
category: "Form",
|
|
3105
3797
|
status: "stable",
|
|
@@ -3116,7 +3808,7 @@ var treeui_catalog_default = {
|
|
|
3116
3808
|
},
|
|
3117
3809
|
{
|
|
3118
3810
|
name: "size",
|
|
3119
|
-
type: "
|
|
3811
|
+
type: "TSize",
|
|
3120
3812
|
default: "md",
|
|
3121
3813
|
values: [
|
|
3122
3814
|
"sm",
|
|
@@ -3201,16 +3893,13 @@ var treeui_catalog_default = {
|
|
|
3201
3893
|
},
|
|
3202
3894
|
{
|
|
3203
3895
|
name: "TModal",
|
|
3204
|
-
|
|
3205
|
-
aliases: [
|
|
3206
|
-
"TreeModal"
|
|
3207
|
-
],
|
|
3896
|
+
aliases: [],
|
|
3208
3897
|
package: "@treeui/vue",
|
|
3209
3898
|
kind: "overlay",
|
|
3210
3899
|
category: "Overlay",
|
|
3211
3900
|
status: "available",
|
|
3212
3901
|
purpose: "Accessible modal dialog for focused tasks and confirmations.",
|
|
3213
|
-
sourceFile: "packages/vue/src/components/
|
|
3902
|
+
sourceFile: "packages/vue/src/components/TModal.vue",
|
|
3214
3903
|
storyFile: "apps/docs/src/stories/Modal.stories.ts",
|
|
3215
3904
|
storyTitle: "Components/Overlay/Modal",
|
|
3216
3905
|
manifestFile: "docs/ai/COMPONENTS/modal.yaml",
|
|
@@ -3232,7 +3921,7 @@ var treeui_catalog_default = {
|
|
|
3232
3921
|
},
|
|
3233
3922
|
{
|
|
3234
3923
|
name: "size",
|
|
3235
|
-
type: "
|
|
3924
|
+
type: "TSize",
|
|
3236
3925
|
default: "md",
|
|
3237
3926
|
values: [
|
|
3238
3927
|
"sm",
|
|
@@ -3352,16 +4041,13 @@ var treeui_catalog_default = {
|
|
|
3352
4041
|
},
|
|
3353
4042
|
{
|
|
3354
4043
|
name: "TMultiSelect",
|
|
3355
|
-
|
|
3356
|
-
aliases: [
|
|
3357
|
-
"TreeMultiSelect"
|
|
3358
|
-
],
|
|
4044
|
+
aliases: [],
|
|
3359
4045
|
package: "@treeui/vue",
|
|
3360
4046
|
kind: "form",
|
|
3361
4047
|
category: "Data Entry",
|
|
3362
4048
|
status: "available",
|
|
3363
4049
|
purpose: "Searchable multi-select control that renders selected values as tags.",
|
|
3364
|
-
sourceFile: "packages/vue/src/components/
|
|
4050
|
+
sourceFile: "packages/vue/src/components/TMultiSelect.vue",
|
|
3365
4051
|
storyFile: "apps/docs/src/stories/MultiSelect.stories.ts",
|
|
3366
4052
|
storyTitle: "Components/Data Entry/MultiSelect",
|
|
3367
4053
|
manifestFile: "docs/ai/COMPONENTS/multi-select.yaml",
|
|
@@ -3373,7 +4059,7 @@ var treeui_catalog_default = {
|
|
|
3373
4059
|
},
|
|
3374
4060
|
{
|
|
3375
4061
|
name: "options",
|
|
3376
|
-
type: "
|
|
4062
|
+
type: "TMultiSelectOption[]",
|
|
3377
4063
|
default: "[]",
|
|
3378
4064
|
note: "Array of `{ label, value, description?, keywords?, disabled? }`."
|
|
3379
4065
|
},
|
|
@@ -3389,7 +4075,7 @@ var treeui_catalog_default = {
|
|
|
3389
4075
|
},
|
|
3390
4076
|
{
|
|
3391
4077
|
name: "size",
|
|
3392
|
-
type: "
|
|
4078
|
+
type: "TSize",
|
|
3393
4079
|
default: "md",
|
|
3394
4080
|
values: [
|
|
3395
4081
|
"sm",
|
|
@@ -3514,18 +4200,15 @@ var treeui_catalog_default = {
|
|
|
3514
4200
|
},
|
|
3515
4201
|
{
|
|
3516
4202
|
name: "TNavbar",
|
|
3517
|
-
legacyAlias: "TreeAppBar",
|
|
3518
4203
|
aliases: [
|
|
3519
|
-
"TAppBar"
|
|
3520
|
-
"TreeAppBar",
|
|
3521
|
-
"TreeNavbar"
|
|
4204
|
+
"TAppBar"
|
|
3522
4205
|
],
|
|
3523
4206
|
package: "@treeui/vue",
|
|
3524
4207
|
kind: "layout",
|
|
3525
4208
|
category: "Layout",
|
|
3526
4209
|
status: "available",
|
|
3527
4210
|
purpose: "Top application bar with start, center, and end content areas.",
|
|
3528
|
-
sourceFile: "packages/vue/src/components/
|
|
4211
|
+
sourceFile: "packages/vue/src/components/TNavbar.vue",
|
|
3529
4212
|
storyFile: "apps/docs/src/stories/Navbar.stories.ts",
|
|
3530
4213
|
storyTitle: "Components/Layout/Navbar",
|
|
3531
4214
|
manifestFile: "docs/ai/COMPONENTS/navbar.yaml",
|
|
@@ -3537,7 +4220,7 @@ var treeui_catalog_default = {
|
|
|
3537
4220
|
},
|
|
3538
4221
|
{
|
|
3539
4222
|
name: "size",
|
|
3540
|
-
type: "
|
|
4223
|
+
type: "TSize",
|
|
3541
4224
|
default: "md",
|
|
3542
4225
|
values: [
|
|
3543
4226
|
"sm",
|
|
@@ -3615,16 +4298,13 @@ var treeui_catalog_default = {
|
|
|
3615
4298
|
},
|
|
3616
4299
|
{
|
|
3617
4300
|
name: "TNavMenu",
|
|
3618
|
-
|
|
3619
|
-
aliases: [
|
|
3620
|
-
"TreeNavMenu"
|
|
3621
|
-
],
|
|
4301
|
+
aliases: [],
|
|
3622
4302
|
package: "@treeui/vue",
|
|
3623
4303
|
kind: "navigation",
|
|
3624
4304
|
category: "Layout",
|
|
3625
4305
|
status: "available",
|
|
3626
4306
|
purpose: "Vertical navigation menu with selection state, keyboard navigation, optional RouterLink rendering, and sidebar integration.",
|
|
3627
|
-
sourceFile: "packages/vue/src/components/
|
|
4307
|
+
sourceFile: "packages/vue/src/components/TNavMenu.vue",
|
|
3628
4308
|
storyFile: "apps/docs/src/stories/NavMenu.stories.ts",
|
|
3629
4309
|
storyTitle: "Components/Layout/NavMenu",
|
|
3630
4310
|
manifestFile: "docs/ai/COMPONENTS/nav-menu.yaml",
|
|
@@ -3641,13 +4321,13 @@ var treeui_catalog_default = {
|
|
|
3641
4321
|
},
|
|
3642
4322
|
{
|
|
3643
4323
|
name: "items",
|
|
3644
|
-
type: "
|
|
4324
|
+
type: "TNavMenuItem[]",
|
|
3645
4325
|
default: "[]",
|
|
3646
4326
|
note: "Array of `{ label, value, shortLabel?, description?, icon?, to?, badge?, disabled? }`."
|
|
3647
4327
|
},
|
|
3648
4328
|
{
|
|
3649
4329
|
name: "size",
|
|
3650
|
-
type: "
|
|
4330
|
+
type: "TSize",
|
|
3651
4331
|
default: "md",
|
|
3652
4332
|
values: [
|
|
3653
4333
|
"sm",
|
|
@@ -3722,25 +4402,23 @@ var treeui_catalog_default = {
|
|
|
3722
4402
|
setup: {
|
|
3723
4403
|
required: [],
|
|
3724
4404
|
notes: [
|
|
3725
|
-
"When nested inside `TSidebar`, `collapsed` can be inherited from the sidebar provider."
|
|
4405
|
+
"When nested inside `TSidebar` or `TAppShell`, `collapsed` can be inherited from the sidebar provider."
|
|
3726
4406
|
]
|
|
3727
4407
|
},
|
|
3728
4408
|
recipes: [
|
|
4409
|
+
"app-shell",
|
|
3729
4410
|
"sidebar-shell"
|
|
3730
4411
|
]
|
|
3731
4412
|
},
|
|
3732
4413
|
{
|
|
3733
4414
|
name: "TNumberInput",
|
|
3734
|
-
|
|
3735
|
-
aliases: [
|
|
3736
|
-
"TreeNumberInput"
|
|
3737
|
-
],
|
|
4415
|
+
aliases: [],
|
|
3738
4416
|
package: "@treeui/vue",
|
|
3739
4417
|
kind: "form",
|
|
3740
4418
|
category: "Data Entry",
|
|
3741
4419
|
status: "available",
|
|
3742
4420
|
purpose: "Numeric input with optional increment and decrement controls.",
|
|
3743
|
-
sourceFile: "packages/vue/src/components/
|
|
4421
|
+
sourceFile: "packages/vue/src/components/TNumberInput.vue",
|
|
3744
4422
|
storyFile: "apps/docs/src/stories/NumberInput.stories.ts",
|
|
3745
4423
|
storyTitle: "Components/Data Entry/NumberInput",
|
|
3746
4424
|
manifestFile: "docs/ai/COMPONENTS/number-input.yaml",
|
|
@@ -3766,7 +4444,7 @@ var treeui_catalog_default = {
|
|
|
3766
4444
|
},
|
|
3767
4445
|
{
|
|
3768
4446
|
name: "size",
|
|
3769
|
-
type: "
|
|
4447
|
+
type: "TSize",
|
|
3770
4448
|
default: "md",
|
|
3771
4449
|
values: [
|
|
3772
4450
|
"sm",
|
|
@@ -3841,16 +4519,13 @@ var treeui_catalog_default = {
|
|
|
3841
4519
|
},
|
|
3842
4520
|
{
|
|
3843
4521
|
name: "TPagination",
|
|
3844
|
-
|
|
3845
|
-
aliases: [
|
|
3846
|
-
"TreePagination"
|
|
3847
|
-
],
|
|
4522
|
+
aliases: [],
|
|
3848
4523
|
package: "@treeui/vue",
|
|
3849
4524
|
kind: "primitive",
|
|
3850
4525
|
category: "Navigation",
|
|
3851
4526
|
status: "available",
|
|
3852
4527
|
purpose: "Page controls with previous/next navigation, numbered page buttons, and ellipsis for large page ranges. Supports v-model for the active page.\n",
|
|
3853
|
-
sourceFile: "packages/vue/src/components/
|
|
4528
|
+
sourceFile: "packages/vue/src/components/TPagination.vue",
|
|
3854
4529
|
storyFile: "apps/docs/src/stories/Pagination.stories.ts",
|
|
3855
4530
|
storyTitle: "Components/Navigation/Pagination",
|
|
3856
4531
|
manifestFile: "docs/ai/COMPONENTS/pagination.yaml",
|
|
@@ -3875,7 +4550,7 @@ var treeui_catalog_default = {
|
|
|
3875
4550
|
},
|
|
3876
4551
|
{
|
|
3877
4552
|
name: "size",
|
|
3878
|
-
type: "
|
|
4553
|
+
type: "TSize",
|
|
3879
4554
|
default: "md",
|
|
3880
4555
|
values: [
|
|
3881
4556
|
"sm",
|
|
@@ -3957,10 +4632,7 @@ var treeui_catalog_default = {
|
|
|
3957
4632
|
},
|
|
3958
4633
|
{
|
|
3959
4634
|
name: "TPopover",
|
|
3960
|
-
|
|
3961
|
-
aliases: [
|
|
3962
|
-
"TreePopover"
|
|
3963
|
-
],
|
|
4635
|
+
aliases: [],
|
|
3964
4636
|
package: "@treeui/vue",
|
|
3965
4637
|
category: "Overlay",
|
|
3966
4638
|
status: "stable",
|
|
@@ -4063,10 +4735,7 @@ var treeui_catalog_default = {
|
|
|
4063
4735
|
},
|
|
4064
4736
|
{
|
|
4065
4737
|
name: "TPricing",
|
|
4066
|
-
|
|
4067
|
-
aliases: [
|
|
4068
|
-
"TreePricing"
|
|
4069
|
-
],
|
|
4738
|
+
aliases: [],
|
|
4070
4739
|
package: "@treeui/vue",
|
|
4071
4740
|
status: "stable",
|
|
4072
4741
|
description: "Grid wrapper that renders multiple PricingCard components from an array of plan objects.\n",
|
|
@@ -4082,7 +4751,7 @@ var treeui_catalog_default = {
|
|
|
4082
4751
|
},
|
|
4083
4752
|
{
|
|
4084
4753
|
name: "size",
|
|
4085
|
-
type: "
|
|
4754
|
+
type: "TSize",
|
|
4086
4755
|
default: "md",
|
|
4087
4756
|
description: "Size applied to all child pricing cards."
|
|
4088
4757
|
},
|
|
@@ -4130,10 +4799,7 @@ var treeui_catalog_default = {
|
|
|
4130
4799
|
},
|
|
4131
4800
|
{
|
|
4132
4801
|
name: "TPricingCard",
|
|
4133
|
-
|
|
4134
|
-
aliases: [
|
|
4135
|
-
"TreePricingCard"
|
|
4136
|
-
],
|
|
4802
|
+
aliases: [],
|
|
4137
4803
|
package: "@treeui/vue",
|
|
4138
4804
|
category: "Data Display",
|
|
4139
4805
|
status: "stable",
|
|
@@ -4198,7 +4864,7 @@ var treeui_catalog_default = {
|
|
|
4198
4864
|
},
|
|
4199
4865
|
{
|
|
4200
4866
|
name: "size",
|
|
4201
|
-
type: "
|
|
4867
|
+
type: "TSize",
|
|
4202
4868
|
default: "md",
|
|
4203
4869
|
description: "Card size \u2014 affects padding, font sizes."
|
|
4204
4870
|
},
|
|
@@ -4243,7 +4909,7 @@ var treeui_catalog_default = {
|
|
|
4243
4909
|
"Uses <h3> for plan title.",
|
|
4244
4910
|
'Feature list uses role="list" with <ul>/<li>.',
|
|
4245
4911
|
'Feature icons are aria-hidden="true".',
|
|
4246
|
-
"CTA button inherits
|
|
4912
|
+
"CTA button inherits TButton a11y (disabled, aria-busy)."
|
|
4247
4913
|
],
|
|
4248
4914
|
behavior: [],
|
|
4249
4915
|
selection: {
|
|
@@ -4262,10 +4928,7 @@ var treeui_catalog_default = {
|
|
|
4262
4928
|
},
|
|
4263
4929
|
{
|
|
4264
4930
|
name: "TProgress",
|
|
4265
|
-
|
|
4266
|
-
aliases: [
|
|
4267
|
-
"TreeProgress"
|
|
4268
|
-
],
|
|
4931
|
+
aliases: [],
|
|
4269
4932
|
package: "@treeui/vue",
|
|
4270
4933
|
category: "Feedback",
|
|
4271
4934
|
status: "draft",
|
|
@@ -4288,7 +4951,7 @@ var treeui_catalog_default = {
|
|
|
4288
4951
|
},
|
|
4289
4952
|
{
|
|
4290
4953
|
name: "size",
|
|
4291
|
-
type: "
|
|
4954
|
+
type: "TSize",
|
|
4292
4955
|
default: "md",
|
|
4293
4956
|
values: [
|
|
4294
4957
|
"sm",
|
|
@@ -4326,15 +4989,12 @@ var treeui_catalog_default = {
|
|
|
4326
4989
|
},
|
|
4327
4990
|
{
|
|
4328
4991
|
name: "TRadio",
|
|
4329
|
-
|
|
4330
|
-
aliases: [
|
|
4331
|
-
"TreeRadio"
|
|
4332
|
-
],
|
|
4992
|
+
aliases: [],
|
|
4333
4993
|
package: "@treeui/vue",
|
|
4334
4994
|
kind: "primitive",
|
|
4335
4995
|
status: "available",
|
|
4336
4996
|
purpose: "Single radio option within a TRadioGroup; renders a native radio input.",
|
|
4337
|
-
sourceFile: "packages/vue/src/components/
|
|
4997
|
+
sourceFile: "packages/vue/src/components/TRadio.vue",
|
|
4338
4998
|
manifestFile: "docs/ai/COMPONENTS/radio.yaml",
|
|
4339
4999
|
props: [
|
|
4340
5000
|
{
|
|
@@ -4354,7 +5014,7 @@ var treeui_catalog_default = {
|
|
|
4354
5014
|
},
|
|
4355
5015
|
{
|
|
4356
5016
|
name: "size",
|
|
4357
|
-
type: "
|
|
5017
|
+
type: "TSize",
|
|
4358
5018
|
default: "inherited_from_group",
|
|
4359
5019
|
values: [
|
|
4360
5020
|
"sm",
|
|
@@ -4397,16 +5057,13 @@ var treeui_catalog_default = {
|
|
|
4397
5057
|
},
|
|
4398
5058
|
{
|
|
4399
5059
|
name: "TRadioGroup",
|
|
4400
|
-
|
|
4401
|
-
aliases: [
|
|
4402
|
-
"TreeRadioGroup"
|
|
4403
|
-
],
|
|
5060
|
+
aliases: [],
|
|
4404
5061
|
package: "@treeui/vue",
|
|
4405
5062
|
kind: "primitive",
|
|
4406
5063
|
category: "Data Entry",
|
|
4407
5064
|
status: "available",
|
|
4408
5065
|
purpose: "Container for TRadio options; manages v-model for single-select from a group.",
|
|
4409
|
-
sourceFile: "packages/vue/src/components/
|
|
5066
|
+
sourceFile: "packages/vue/src/components/TRadioGroup.vue",
|
|
4410
5067
|
storyFile: "apps/docs/src/stories/Radio.stories.ts",
|
|
4411
5068
|
storyTitle: "Components/Data Entry/Radio",
|
|
4412
5069
|
manifestFile: "docs/ai/COMPONENTS/radio.yaml",
|
|
@@ -4433,7 +5090,7 @@ var treeui_catalog_default = {
|
|
|
4433
5090
|
},
|
|
4434
5091
|
{
|
|
4435
5092
|
name: "size",
|
|
4436
|
-
type: "
|
|
5093
|
+
type: "TSize",
|
|
4437
5094
|
default: "md",
|
|
4438
5095
|
values: [
|
|
4439
5096
|
"sm",
|
|
@@ -4475,16 +5132,13 @@ var treeui_catalog_default = {
|
|
|
4475
5132
|
},
|
|
4476
5133
|
{
|
|
4477
5134
|
name: "TSelect",
|
|
4478
|
-
|
|
4479
|
-
aliases: [
|
|
4480
|
-
"TreeSelect"
|
|
4481
|
-
],
|
|
5135
|
+
aliases: [],
|
|
4482
5136
|
package: "@treeui/vue",
|
|
4483
5137
|
kind: "primitive",
|
|
4484
5138
|
category: "Data Entry",
|
|
4485
5139
|
status: "available",
|
|
4486
5140
|
purpose: "Custom styled dropdown select with listbox; controlled and uncontrolled via v-model and open/defaultOpen.",
|
|
4487
|
-
sourceFile: "packages/vue/src/components/
|
|
5141
|
+
sourceFile: "packages/vue/src/components/TSelect.vue",
|
|
4488
5142
|
storyFile: "apps/docs/src/stories/Select.stories.ts",
|
|
4489
5143
|
storyTitle: "Components/Data Entry/Select",
|
|
4490
5144
|
manifestFile: "docs/ai/COMPONENTS/select.yaml",
|
|
@@ -4496,7 +5150,7 @@ var treeui_catalog_default = {
|
|
|
4496
5150
|
},
|
|
4497
5151
|
{
|
|
4498
5152
|
name: "options",
|
|
4499
|
-
type: "
|
|
5153
|
+
type: "TSelectOption[]",
|
|
4500
5154
|
default: "[]",
|
|
4501
5155
|
note: "Array of { label: string; value: string | number; disabled?: boolean }"
|
|
4502
5156
|
},
|
|
@@ -4512,7 +5166,7 @@ var treeui_catalog_default = {
|
|
|
4512
5166
|
},
|
|
4513
5167
|
{
|
|
4514
5168
|
name: "size",
|
|
4515
|
-
type: "
|
|
5169
|
+
type: "TSize",
|
|
4516
5170
|
default: "md",
|
|
4517
5171
|
values: [
|
|
4518
5172
|
"sm",
|
|
@@ -4579,7 +5233,8 @@ var treeui_catalog_default = {
|
|
|
4579
5233
|
"check_icon_on_selected_option: true",
|
|
4580
5234
|
"outside_click_closes_dropdown: true",
|
|
4581
5235
|
"focus_restores_on_close: true",
|
|
4582
|
-
"numeric_values_supported_without_string_coercion: true"
|
|
5236
|
+
"numeric_values_supported_without_string_coercion: true",
|
|
5237
|
+
"listbox_flips_above_trigger_when_space_below_is_insufficient: true"
|
|
4583
5238
|
],
|
|
4584
5239
|
selection: {
|
|
4585
5240
|
keywords: [
|
|
@@ -4612,20 +5267,19 @@ var treeui_catalog_default = {
|
|
|
4612
5267
|
"Use `placeholder` when no selection has been made."
|
|
4613
5268
|
]
|
|
4614
5269
|
},
|
|
4615
|
-
recipes: [
|
|
5270
|
+
recipes: [
|
|
5271
|
+
"chart-surface"
|
|
5272
|
+
]
|
|
4616
5273
|
},
|
|
4617
5274
|
{
|
|
4618
5275
|
name: "TSelectableList",
|
|
4619
|
-
|
|
4620
|
-
aliases: [
|
|
4621
|
-
"TreeSelectableList"
|
|
4622
|
-
],
|
|
5276
|
+
aliases: [],
|
|
4623
5277
|
package: "@treeui/vue",
|
|
4624
5278
|
kind: "selection",
|
|
4625
5279
|
category: "Navigation & Disclosure",
|
|
4626
5280
|
status: "available",
|
|
4627
5281
|
purpose: "Rich single-selection list for options with description and metadata.",
|
|
4628
|
-
sourceFile: "packages/vue/src/components/
|
|
5282
|
+
sourceFile: "packages/vue/src/components/TSelectableList.vue",
|
|
4629
5283
|
storyFile: "apps/docs/src/stories/SelectableList.stories.ts",
|
|
4630
5284
|
storyTitle: "Components/Navigation & Disclosure/SelectableList",
|
|
4631
5285
|
manifestFile: "docs/ai/COMPONENTS/selectable-list.yaml",
|
|
@@ -4642,13 +5296,13 @@ var treeui_catalog_default = {
|
|
|
4642
5296
|
},
|
|
4643
5297
|
{
|
|
4644
5298
|
name: "items",
|
|
4645
|
-
type: "
|
|
5299
|
+
type: "TSelectableListItem[]",
|
|
4646
5300
|
default: "[]",
|
|
4647
5301
|
note: "Array of `{ label, value, description?, meta?, disabled? }`."
|
|
4648
5302
|
},
|
|
4649
5303
|
{
|
|
4650
5304
|
name: "size",
|
|
4651
|
-
type: "
|
|
5305
|
+
type: "TSize",
|
|
4652
5306
|
default: "md",
|
|
4653
5307
|
values: [
|
|
4654
5308
|
"sm",
|
|
@@ -4725,16 +5379,13 @@ var treeui_catalog_default = {
|
|
|
4725
5379
|
},
|
|
4726
5380
|
{
|
|
4727
5381
|
name: "TSidebar",
|
|
4728
|
-
|
|
4729
|
-
aliases: [
|
|
4730
|
-
"TreeSidebar"
|
|
4731
|
-
],
|
|
5382
|
+
aliases: [],
|
|
4732
5383
|
package: "@treeui/vue",
|
|
4733
5384
|
kind: "layout",
|
|
4734
5385
|
category: "Layout",
|
|
4735
5386
|
status: "available",
|
|
4736
5387
|
purpose: "Persistent or collapsible side shell for app navigation and secondary workspace controls.",
|
|
4737
|
-
sourceFile: "packages/vue/src/components/
|
|
5388
|
+
sourceFile: "packages/vue/src/components/TSidebar.vue",
|
|
4738
5389
|
storyFile: "apps/docs/src/stories/Sidebar.stories.ts",
|
|
4739
5390
|
storyTitle: "Components/Layout/Sidebar",
|
|
4740
5391
|
manifestFile: "docs/ai/COMPONENTS/sidebar.yaml",
|
|
@@ -4761,7 +5412,7 @@ var treeui_catalog_default = {
|
|
|
4761
5412
|
},
|
|
4762
5413
|
{
|
|
4763
5414
|
name: "size",
|
|
4764
|
-
type: "
|
|
5415
|
+
type: "TSize",
|
|
4765
5416
|
default: "md",
|
|
4766
5417
|
values: [
|
|
4767
5418
|
"sm",
|
|
@@ -4771,7 +5422,7 @@ var treeui_catalog_default = {
|
|
|
4771
5422
|
},
|
|
4772
5423
|
{
|
|
4773
5424
|
name: "side",
|
|
4774
|
-
type: "
|
|
5425
|
+
type: "TSidebarSide",
|
|
4775
5426
|
default: "left",
|
|
4776
5427
|
values: [
|
|
4777
5428
|
"left",
|
|
@@ -4840,7 +5491,8 @@ var treeui_catalog_default = {
|
|
|
4840
5491
|
"controlled_and_uncontrolled_collapsed_state: true",
|
|
4841
5492
|
"provides_collapsed_state_to_descendants: true",
|
|
4842
5493
|
"left_and_right_variants: true",
|
|
4843
|
-
"exposes_slot_props_with_collapsed_state: true"
|
|
5494
|
+
"exposes_slot_props_with_collapsed_state: true",
|
|
5495
|
+
"collapsed_state_centers_header_and_footer_content: true"
|
|
4844
5496
|
],
|
|
4845
5497
|
selection: {
|
|
4846
5498
|
keywords: [
|
|
@@ -4865,7 +5517,8 @@ var treeui_catalog_default = {
|
|
|
4865
5517
|
required: [],
|
|
4866
5518
|
notes: [
|
|
4867
5519
|
"Pair with `TNavMenu` for app-section navigation.",
|
|
4868
|
-
"Use controlled `collapsed` state when the app shell persists layout preferences."
|
|
5520
|
+
"Use controlled `collapsed` state when the app shell persists layout preferences.",
|
|
5521
|
+
"Prefer `TAppShell` when you also want full-viewport sizing, a top header, and a responsive mobile drawer."
|
|
4869
5522
|
]
|
|
4870
5523
|
},
|
|
4871
5524
|
recipes: [
|
|
@@ -4874,16 +5527,13 @@ var treeui_catalog_default = {
|
|
|
4874
5527
|
},
|
|
4875
5528
|
{
|
|
4876
5529
|
name: "TSkeleton",
|
|
4877
|
-
|
|
4878
|
-
aliases: [
|
|
4879
|
-
"TreeSkeleton"
|
|
4880
|
-
],
|
|
5530
|
+
aliases: [],
|
|
4881
5531
|
package: "@treeui/vue",
|
|
4882
5532
|
kind: "feedback",
|
|
4883
5533
|
category: "Feedback",
|
|
4884
5534
|
status: "available",
|
|
4885
5535
|
purpose: "Placeholder shimmer for loading states. Renders an animated block that indicates content is being loaded.",
|
|
4886
|
-
sourceFile: "packages/vue/src/components/
|
|
5536
|
+
sourceFile: "packages/vue/src/components/TSkeleton.vue",
|
|
4887
5537
|
storyFile: "apps/docs/src/stories/Skeleton.stories.ts",
|
|
4888
5538
|
storyTitle: "Components/Feedback/Skeleton",
|
|
4889
5539
|
manifestFile: "docs/ai/COMPONENTS/skeleton.yaml",
|
|
@@ -4939,24 +5589,144 @@ var treeui_catalog_default = {
|
|
|
4939
5589
|
recipes: []
|
|
4940
5590
|
},
|
|
4941
5591
|
{
|
|
4942
|
-
name: "
|
|
4943
|
-
|
|
4944
|
-
|
|
4945
|
-
|
|
5592
|
+
name: "TSparkline",
|
|
5593
|
+
aliases: [],
|
|
5594
|
+
package: "@treeui/vue",
|
|
5595
|
+
kind: "data-display",
|
|
5596
|
+
category: "Data Display",
|
|
5597
|
+
status: "available",
|
|
5598
|
+
purpose: "Tiny, axis-less inline trend chart (line, area, or bar) sized for stat tiles, table cells, and running text.",
|
|
5599
|
+
sourceFile: "packages/vue/src/components/TSparkline.vue",
|
|
5600
|
+
storyFile: "apps/docs/src/stories/Sparkline.stories.ts",
|
|
5601
|
+
storyTitle: "Components/Data Display/Sparkline",
|
|
5602
|
+
manifestFile: "docs/ai/COMPONENTS/sparkline.yaml",
|
|
5603
|
+
props: [
|
|
5604
|
+
{
|
|
5605
|
+
name: "data",
|
|
5606
|
+
type: "number[]",
|
|
5607
|
+
default: "[]"
|
|
5608
|
+
},
|
|
5609
|
+
{
|
|
5610
|
+
name: "type",
|
|
5611
|
+
type: "line | area | bar",
|
|
5612
|
+
default: "line"
|
|
5613
|
+
},
|
|
5614
|
+
{
|
|
5615
|
+
name: "color",
|
|
5616
|
+
type: "string",
|
|
5617
|
+
default: "var(--tree-color-chart-1)",
|
|
5618
|
+
note: "Any CSS color."
|
|
5619
|
+
},
|
|
5620
|
+
{
|
|
5621
|
+
name: "width",
|
|
5622
|
+
type: "number",
|
|
5623
|
+
default: "120"
|
|
5624
|
+
},
|
|
5625
|
+
{
|
|
5626
|
+
name: "height",
|
|
5627
|
+
type: "number",
|
|
5628
|
+
default: "32"
|
|
5629
|
+
},
|
|
5630
|
+
{
|
|
5631
|
+
name: "smooth",
|
|
5632
|
+
type: "boolean",
|
|
5633
|
+
default: "false",
|
|
5634
|
+
note: "Curved line/area."
|
|
5635
|
+
},
|
|
5636
|
+
{
|
|
5637
|
+
name: "strokeWidth",
|
|
5638
|
+
type: "number",
|
|
5639
|
+
default: "2",
|
|
5640
|
+
note: "Line/area only."
|
|
5641
|
+
},
|
|
5642
|
+
{
|
|
5643
|
+
name: "min",
|
|
5644
|
+
type: "number",
|
|
5645
|
+
default: "data min"
|
|
5646
|
+
},
|
|
5647
|
+
{
|
|
5648
|
+
name: "max",
|
|
5649
|
+
type: "number",
|
|
5650
|
+
default: "data max"
|
|
5651
|
+
},
|
|
5652
|
+
{
|
|
5653
|
+
name: "showLastPoint",
|
|
5654
|
+
type: "boolean",
|
|
5655
|
+
default: "false",
|
|
5656
|
+
note: "Marker on the final point (line/area)."
|
|
5657
|
+
},
|
|
5658
|
+
{
|
|
5659
|
+
name: "ariaLabel",
|
|
5660
|
+
type: "string",
|
|
5661
|
+
default: "Trend sparkline"
|
|
5662
|
+
}
|
|
4946
5663
|
],
|
|
5664
|
+
events: [],
|
|
5665
|
+
slots: [],
|
|
5666
|
+
a11y: [
|
|
5667
|
+
"Renders role=img with an aria-label; pass a specific one for meaningful trends.",
|
|
5668
|
+
"Pair with a visible number \u2014 a sparkline supplements a value, it does not replace it."
|
|
5669
|
+
],
|
|
5670
|
+
behavior: [
|
|
5671
|
+
"no_axes_or_legend: true",
|
|
5672
|
+
"flat_series_renders_centered: true",
|
|
5673
|
+
"scales_to_intrinsic_width_and_height: true"
|
|
5674
|
+
],
|
|
5675
|
+
selection: {
|
|
5676
|
+
keywords: [
|
|
5677
|
+
"sparkline",
|
|
5678
|
+
"mini chart",
|
|
5679
|
+
"inline chart",
|
|
5680
|
+
"micro trend",
|
|
5681
|
+
"trend line",
|
|
5682
|
+
"table chart"
|
|
5683
|
+
],
|
|
5684
|
+
useWhen: [
|
|
5685
|
+
"You want a compact trend beside a value, in a table cell, or inline in text.",
|
|
5686
|
+
"No axes, legend, or tooltip are required."
|
|
5687
|
+
],
|
|
5688
|
+
avoidWhen: [
|
|
5689
|
+
"You need axes, multiple labeled series, or a tooltip \u2014 use TChart."
|
|
5690
|
+
],
|
|
5691
|
+
alternatives: [
|
|
5692
|
+
{
|
|
5693
|
+
component: "TChart",
|
|
5694
|
+
when: "The chart needs axes, a legend, or a tooltip."
|
|
5695
|
+
},
|
|
5696
|
+
{
|
|
5697
|
+
component: "TStat",
|
|
5698
|
+
when: "A single value with a trend badge is enough."
|
|
5699
|
+
}
|
|
5700
|
+
]
|
|
5701
|
+
},
|
|
5702
|
+
setup: {
|
|
5703
|
+
required: [],
|
|
5704
|
+
notes: [
|
|
5705
|
+
"Pass `data` as `number[]`; there are no axes, legend, or tooltip by design.",
|
|
5706
|
+
"Size it with `width`/`height`; use it inside `TStat`, table cells, or text.",
|
|
5707
|
+
"Always keep a visible number nearby \u2014 a sparkline supplements a value, it does not replace it."
|
|
5708
|
+
]
|
|
5709
|
+
},
|
|
5710
|
+
recipes: [
|
|
5711
|
+
"metric-dashboard"
|
|
5712
|
+
]
|
|
5713
|
+
},
|
|
5714
|
+
{
|
|
5715
|
+
name: "TSpinner",
|
|
5716
|
+
aliases: [],
|
|
4947
5717
|
package: "@treeui/vue",
|
|
4948
5718
|
kind: "feedback",
|
|
4949
5719
|
category: "Feedback",
|
|
4950
5720
|
status: "available",
|
|
4951
5721
|
purpose: "Accessible loading indicator.",
|
|
4952
|
-
sourceFile: "packages/vue/src/components/
|
|
5722
|
+
sourceFile: "packages/vue/src/components/TSpinner.vue",
|
|
4953
5723
|
storyFile: "apps/docs/src/stories/Spinner.stories.ts",
|
|
4954
5724
|
storyTitle: "Components/Feedback/Spinner",
|
|
4955
5725
|
manifestFile: "docs/ai/COMPONENTS/spinner.yaml",
|
|
4956
5726
|
props: [
|
|
4957
5727
|
{
|
|
4958
5728
|
name: "size",
|
|
4959
|
-
type: "
|
|
5729
|
+
type: "TSize",
|
|
4960
5730
|
default: "md",
|
|
4961
5731
|
values: [
|
|
4962
5732
|
"sm",
|
|
@@ -4992,16 +5762,13 @@ var treeui_catalog_default = {
|
|
|
4992
5762
|
},
|
|
4993
5763
|
{
|
|
4994
5764
|
name: "TStack",
|
|
4995
|
-
|
|
4996
|
-
aliases: [
|
|
4997
|
-
"TreeStack"
|
|
4998
|
-
],
|
|
5765
|
+
aliases: [],
|
|
4999
5766
|
package: "@treeui/vue",
|
|
5000
5767
|
kind: "layout",
|
|
5001
5768
|
category: "Layout",
|
|
5002
5769
|
status: "available",
|
|
5003
5770
|
purpose: "One-dimensional spacing and alignment wrapper for vertical or horizontal compositions.",
|
|
5004
|
-
sourceFile: "packages/vue/src/components/
|
|
5771
|
+
sourceFile: "packages/vue/src/components/TStack.vue",
|
|
5005
5772
|
storyFile: "apps/docs/src/stories/Stack.stories.ts",
|
|
5006
5773
|
storyTitle: "Components/Layout/Stack",
|
|
5007
5774
|
manifestFile: "docs/ai/COMPONENTS/stack.yaml",
|
|
@@ -5013,7 +5780,7 @@ var treeui_catalog_default = {
|
|
|
5013
5780
|
},
|
|
5014
5781
|
{
|
|
5015
5782
|
name: "direction",
|
|
5016
|
-
type: "
|
|
5783
|
+
type: "TStackDirection",
|
|
5017
5784
|
default: "vertical",
|
|
5018
5785
|
values: [
|
|
5019
5786
|
"vertical",
|
|
@@ -5093,16 +5860,13 @@ var treeui_catalog_default = {
|
|
|
5093
5860
|
},
|
|
5094
5861
|
{
|
|
5095
5862
|
name: "TStat",
|
|
5096
|
-
|
|
5097
|
-
aliases: [
|
|
5098
|
-
"TreeStat"
|
|
5099
|
-
],
|
|
5863
|
+
aliases: [],
|
|
5100
5864
|
package: "@treeui/vue",
|
|
5101
5865
|
kind: "data-display",
|
|
5102
5866
|
category: "Data Display",
|
|
5103
5867
|
status: "available",
|
|
5104
5868
|
purpose: "Compact KPI display with label, value, trend, metadata, and optional icon.",
|
|
5105
|
-
sourceFile: "packages/vue/src/components/
|
|
5869
|
+
sourceFile: "packages/vue/src/components/TStat.vue",
|
|
5106
5870
|
storyFile: "apps/docs/src/stories/Stat.stories.ts",
|
|
5107
5871
|
storyTitle: "Components/Data Display/Stat",
|
|
5108
5872
|
manifestFile: "docs/ai/COMPONENTS/stat.yaml",
|
|
@@ -5129,7 +5893,7 @@ var treeui_catalog_default = {
|
|
|
5129
5893
|
},
|
|
5130
5894
|
{
|
|
5131
5895
|
name: "tone",
|
|
5132
|
-
type: "
|
|
5896
|
+
type: "TStatTone",
|
|
5133
5897
|
default: "neutral",
|
|
5134
5898
|
values: [
|
|
5135
5899
|
"neutral",
|
|
@@ -5141,7 +5905,7 @@ var treeui_catalog_default = {
|
|
|
5141
5905
|
},
|
|
5142
5906
|
{
|
|
5143
5907
|
name: "trendDirection",
|
|
5144
|
-
type: "
|
|
5908
|
+
type: "TStatTrendDirection",
|
|
5145
5909
|
default: "neutral",
|
|
5146
5910
|
values: [
|
|
5147
5911
|
"up",
|
|
@@ -5200,6 +5964,10 @@ var treeui_catalog_default = {
|
|
|
5200
5964
|
{
|
|
5201
5965
|
component: "TCard",
|
|
5202
5966
|
when: "The content is not a metric."
|
|
5967
|
+
},
|
|
5968
|
+
{
|
|
5969
|
+
component: "TSparkline",
|
|
5970
|
+
when: "You want to show the metric's trend as an inline mini-chart."
|
|
5203
5971
|
}
|
|
5204
5972
|
]
|
|
5205
5973
|
},
|
|
@@ -5208,23 +5976,21 @@ var treeui_catalog_default = {
|
|
|
5208
5976
|
notes: []
|
|
5209
5977
|
},
|
|
5210
5978
|
recipes: [
|
|
5211
|
-
"stat-grid"
|
|
5979
|
+
"stat-grid",
|
|
5980
|
+
"metric-dashboard"
|
|
5212
5981
|
]
|
|
5213
5982
|
},
|
|
5214
5983
|
{
|
|
5215
5984
|
name: "TSteps",
|
|
5216
|
-
legacyAlias: "TreeStepper",
|
|
5217
5985
|
aliases: [
|
|
5218
|
-
"TStepper"
|
|
5219
|
-
"TreeStepper",
|
|
5220
|
-
"TreeSteps"
|
|
5986
|
+
"TStepper"
|
|
5221
5987
|
],
|
|
5222
5988
|
package: "@treeui/vue",
|
|
5223
5989
|
kind: "navigation",
|
|
5224
5990
|
category: "Navigation & Disclosure",
|
|
5225
5991
|
status: "available",
|
|
5226
5992
|
purpose: "Stepper component for visualizing workflow progress, with optional interactive selection.",
|
|
5227
|
-
sourceFile: "packages/vue/src/components/
|
|
5993
|
+
sourceFile: "packages/vue/src/components/TSteps.vue",
|
|
5228
5994
|
storyFile: "apps/docs/src/stories/Steps.stories.ts",
|
|
5229
5995
|
storyTitle: "Components/Navigation & Disclosure/Steps",
|
|
5230
5996
|
manifestFile: "docs/ai/COMPONENTS/steps.yaml",
|
|
@@ -5241,13 +6007,13 @@ var treeui_catalog_default = {
|
|
|
5241
6007
|
},
|
|
5242
6008
|
{
|
|
5243
6009
|
name: "items",
|
|
5244
|
-
type: "
|
|
6010
|
+
type: "TStepItem[]",
|
|
5245
6011
|
default: "[]",
|
|
5246
6012
|
note: "Array of `{ label, value, description?, meta?, status?, disabled? }`."
|
|
5247
6013
|
},
|
|
5248
6014
|
{
|
|
5249
6015
|
name: "size",
|
|
5250
|
-
type: "
|
|
6016
|
+
type: "TSize",
|
|
5251
6017
|
default: "md",
|
|
5252
6018
|
values: [
|
|
5253
6019
|
"sm",
|
|
@@ -5257,7 +6023,7 @@ var treeui_catalog_default = {
|
|
|
5257
6023
|
},
|
|
5258
6024
|
{
|
|
5259
6025
|
name: "orientation",
|
|
5260
|
-
type: "
|
|
6026
|
+
type: "TStepOrientation",
|
|
5261
6027
|
default: "horizontal",
|
|
5262
6028
|
values: [
|
|
5263
6029
|
"horizontal",
|
|
@@ -5320,16 +6086,13 @@ var treeui_catalog_default = {
|
|
|
5320
6086
|
},
|
|
5321
6087
|
{
|
|
5322
6088
|
name: "TSwitch",
|
|
5323
|
-
|
|
5324
|
-
aliases: [
|
|
5325
|
-
"TreeSwitch"
|
|
5326
|
-
],
|
|
6089
|
+
aliases: [],
|
|
5327
6090
|
package: "@treeui/vue",
|
|
5328
6091
|
kind: "primitive",
|
|
5329
6092
|
category: "Data Entry",
|
|
5330
6093
|
status: "available",
|
|
5331
6094
|
purpose: "On/off toggle; semantic alternative to checkbox for settings. Supports v-model via modelValue.",
|
|
5332
|
-
sourceFile: "packages/vue/src/components/
|
|
6095
|
+
sourceFile: "packages/vue/src/components/TSwitch.vue",
|
|
5333
6096
|
storyFile: "apps/docs/src/stories/Switch.stories.ts",
|
|
5334
6097
|
storyTitle: "Components/Data Entry/Switch",
|
|
5335
6098
|
manifestFile: "docs/ai/COMPONENTS/switch.yaml",
|
|
@@ -5341,7 +6104,7 @@ var treeui_catalog_default = {
|
|
|
5341
6104
|
},
|
|
5342
6105
|
{
|
|
5343
6106
|
name: "size",
|
|
5344
|
-
type: "
|
|
6107
|
+
type: "TSize",
|
|
5345
6108
|
default: "md",
|
|
5346
6109
|
values: [
|
|
5347
6110
|
"sm",
|
|
@@ -5412,21 +6175,18 @@ var treeui_catalog_default = {
|
|
|
5412
6175
|
},
|
|
5413
6176
|
{
|
|
5414
6177
|
name: "TTable",
|
|
5415
|
-
|
|
5416
|
-
aliases: [
|
|
5417
|
-
"TreeTable"
|
|
5418
|
-
],
|
|
6178
|
+
aliases: [],
|
|
5419
6179
|
package: "@treeui/vue",
|
|
5420
6180
|
category: "Data Display",
|
|
5421
6181
|
description: "Sortable, accessible data table with column definitions and row data.",
|
|
5422
|
-
sourceFile: "packages/vue/src/components/
|
|
6182
|
+
sourceFile: "packages/vue/src/components/TTable.vue",
|
|
5423
6183
|
storyFile: "apps/docs/src/stories/Table.stories.ts",
|
|
5424
6184
|
storyTitle: "Components/Data Display/Table",
|
|
5425
6185
|
manifestFile: "docs/ai/COMPONENTS/table.yaml",
|
|
5426
6186
|
props: [
|
|
5427
6187
|
{
|
|
5428
6188
|
name: "columns",
|
|
5429
|
-
type: "
|
|
6189
|
+
type: "TTableColumn[]",
|
|
5430
6190
|
required: true,
|
|
5431
6191
|
description: "Array of column definitions with key, label, sortable, align, and width."
|
|
5432
6192
|
},
|
|
@@ -5438,7 +6198,7 @@ var treeui_catalog_default = {
|
|
|
5438
6198
|
},
|
|
5439
6199
|
{
|
|
5440
6200
|
name: "size",
|
|
5441
|
-
type: "
|
|
6201
|
+
type: "TSize",
|
|
5442
6202
|
default: "md",
|
|
5443
6203
|
values: [
|
|
5444
6204
|
"sm",
|
|
@@ -5448,7 +6208,7 @@ var treeui_catalog_default = {
|
|
|
5448
6208
|
},
|
|
5449
6209
|
{
|
|
5450
6210
|
name: "sortBy",
|
|
5451
|
-
type: "
|
|
6211
|
+
type: "TTableSortState",
|
|
5452
6212
|
required: false,
|
|
5453
6213
|
description: "Controlled sort state. When provided, overrides internal sort tracking."
|
|
5454
6214
|
}
|
|
@@ -5457,7 +6217,7 @@ var treeui_catalog_default = {
|
|
|
5457
6217
|
{
|
|
5458
6218
|
name: "sort",
|
|
5459
6219
|
description: "Emitted when a sortable column header is clicked.",
|
|
5460
|
-
payload: "
|
|
6220
|
+
payload: "TTableSortState"
|
|
5461
6221
|
}
|
|
5462
6222
|
],
|
|
5463
6223
|
slots: [
|
|
@@ -5516,16 +6276,13 @@ var treeui_catalog_default = {
|
|
|
5516
6276
|
},
|
|
5517
6277
|
{
|
|
5518
6278
|
name: "TTabs",
|
|
5519
|
-
|
|
5520
|
-
aliases: [
|
|
5521
|
-
"TreeTabs"
|
|
5522
|
-
],
|
|
6279
|
+
aliases: [],
|
|
5523
6280
|
package: "@treeui/vue",
|
|
5524
6281
|
kind: "navigation",
|
|
5525
6282
|
category: "Navigation",
|
|
5526
6283
|
status: "available",
|
|
5527
6284
|
purpose: "Tabbed panel navigation with full keyboard support and automatic/manual activation modes.",
|
|
5528
|
-
sourceFile: "packages/vue/src/components/
|
|
6285
|
+
sourceFile: "packages/vue/src/components/TTabs.vue",
|
|
5529
6286
|
storyFile: "apps/docs/src/stories/Tabs.stories.ts",
|
|
5530
6287
|
storyTitle: "Components/Navigation/Tabs",
|
|
5531
6288
|
manifestFile: "docs/ai/COMPONENTS/tabs.yaml",
|
|
@@ -5544,7 +6301,7 @@ var treeui_catalog_default = {
|
|
|
5544
6301
|
},
|
|
5545
6302
|
{
|
|
5546
6303
|
name: "size",
|
|
5547
|
-
type: "
|
|
6304
|
+
type: "TSize",
|
|
5548
6305
|
default: "md",
|
|
5549
6306
|
values: [
|
|
5550
6307
|
"sm",
|
|
@@ -5625,21 +6382,18 @@ var treeui_catalog_default = {
|
|
|
5625
6382
|
},
|
|
5626
6383
|
{
|
|
5627
6384
|
name: "TTag",
|
|
5628
|
-
|
|
5629
|
-
aliases: [
|
|
5630
|
-
"TreeTag"
|
|
5631
|
-
],
|
|
6385
|
+
aliases: [],
|
|
5632
6386
|
package: "@treeui/vue",
|
|
5633
6387
|
category: "Data Display",
|
|
5634
6388
|
description: "Removable label/chip for filters and selections.",
|
|
5635
|
-
sourceFile: "packages/vue/src/components/
|
|
6389
|
+
sourceFile: "packages/vue/src/components/TTag.vue",
|
|
5636
6390
|
storyFile: "apps/docs/src/stories/Tag.stories.ts",
|
|
5637
6391
|
storyTitle: "Components/Data Display/Tag",
|
|
5638
6392
|
manifestFile: "docs/ai/COMPONENTS/tag.yaml",
|
|
5639
6393
|
props: [
|
|
5640
6394
|
{
|
|
5641
6395
|
name: "variant",
|
|
5642
|
-
type: "
|
|
6396
|
+
type: "TTagVariant",
|
|
5643
6397
|
default: "soft",
|
|
5644
6398
|
values: [
|
|
5645
6399
|
"solid",
|
|
@@ -5649,7 +6403,7 @@ var treeui_catalog_default = {
|
|
|
5649
6403
|
},
|
|
5650
6404
|
{
|
|
5651
6405
|
name: "size",
|
|
5652
|
-
type: "
|
|
6406
|
+
type: "TSize",
|
|
5653
6407
|
default: "md",
|
|
5654
6408
|
values: [
|
|
5655
6409
|
"sm",
|
|
@@ -5708,16 +6462,13 @@ var treeui_catalog_default = {
|
|
|
5708
6462
|
},
|
|
5709
6463
|
{
|
|
5710
6464
|
name: "TTextarea",
|
|
5711
|
-
|
|
5712
|
-
aliases: [
|
|
5713
|
-
"TreeTextarea"
|
|
5714
|
-
],
|
|
6465
|
+
aliases: [],
|
|
5715
6466
|
package: "@treeui/vue",
|
|
5716
6467
|
kind: "primitive",
|
|
5717
6468
|
category: "Data Entry",
|
|
5718
6469
|
status: "available",
|
|
5719
6470
|
purpose: "Multi-line text field with size, loading, invalid states, and auto-grow option.",
|
|
5720
|
-
sourceFile: "packages/vue/src/components/
|
|
6471
|
+
sourceFile: "packages/vue/src/components/TTextarea.vue",
|
|
5721
6472
|
storyFile: "apps/docs/src/stories/Textarea.stories.ts",
|
|
5722
6473
|
storyTitle: "Components/Data Entry/Textarea",
|
|
5723
6474
|
manifestFile: "docs/ai/COMPONENTS/textarea.yaml",
|
|
@@ -5729,7 +6480,7 @@ var treeui_catalog_default = {
|
|
|
5729
6480
|
},
|
|
5730
6481
|
{
|
|
5731
6482
|
name: "size",
|
|
5732
|
-
type: "
|
|
6483
|
+
type: "TSize",
|
|
5733
6484
|
default: "md",
|
|
5734
6485
|
values: [
|
|
5735
6486
|
"sm",
|
|
@@ -5814,28 +6565,25 @@ var treeui_catalog_default = {
|
|
|
5814
6565
|
},
|
|
5815
6566
|
{
|
|
5816
6567
|
name: "TTimeline",
|
|
5817
|
-
|
|
5818
|
-
aliases: [
|
|
5819
|
-
"TreeTimeline"
|
|
5820
|
-
],
|
|
6568
|
+
aliases: [],
|
|
5821
6569
|
package: "@treeui/vue",
|
|
5822
6570
|
kind: "data_display",
|
|
5823
6571
|
status: "available",
|
|
5824
6572
|
purpose: "Vertical timeline for activity history, audits, release events, and chronological product updates.",
|
|
5825
|
-
sourceFile: "packages/vue/src/components/
|
|
6573
|
+
sourceFile: "packages/vue/src/components/TTimeline.vue",
|
|
5826
6574
|
storyFile: "apps/docs/src/stories/Timeline.stories.ts",
|
|
5827
6575
|
storyTitle: "Release queued for review",
|
|
5828
6576
|
manifestFile: "docs/ai/COMPONENTS/timeline.yaml",
|
|
5829
6577
|
props: [
|
|
5830
6578
|
{
|
|
5831
6579
|
name: "items",
|
|
5832
|
-
type: "
|
|
6580
|
+
type: "TTimelineItem[]",
|
|
5833
6581
|
default: "[]",
|
|
5834
6582
|
note: "Array of { id?: string | number; title: string; description?: string; meta?: string; timestamp?: string; datetime?: string; tone?: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' }"
|
|
5835
6583
|
},
|
|
5836
6584
|
{
|
|
5837
6585
|
name: "size",
|
|
5838
|
-
type: "
|
|
6586
|
+
type: "TSize",
|
|
5839
6587
|
default: "md",
|
|
5840
6588
|
values: [
|
|
5841
6589
|
"sm",
|
|
@@ -5877,15 +6625,12 @@ var treeui_catalog_default = {
|
|
|
5877
6625
|
},
|
|
5878
6626
|
{
|
|
5879
6627
|
name: "TToast",
|
|
5880
|
-
|
|
5881
|
-
aliases: [
|
|
5882
|
-
"TreeToast"
|
|
5883
|
-
],
|
|
6628
|
+
aliases: [],
|
|
5884
6629
|
package: "@treeui/vue",
|
|
5885
6630
|
kind: "feedback",
|
|
5886
6631
|
status: "available",
|
|
5887
6632
|
purpose: "Ephemeral notification stack driven by a composable. Renders toast items inside a positioned container with auto-dismiss and manual close.",
|
|
5888
|
-
sourceFile: "packages/vue/src/components/
|
|
6633
|
+
sourceFile: "packages/vue/src/components/TToast.vue",
|
|
5889
6634
|
manifestFile: "docs/ai/COMPONENTS/toast.yaml",
|
|
5890
6635
|
props: [],
|
|
5891
6636
|
events: [
|
|
@@ -5943,16 +6688,13 @@ var treeui_catalog_default = {
|
|
|
5943
6688
|
},
|
|
5944
6689
|
{
|
|
5945
6690
|
name: "TToggleGroup",
|
|
5946
|
-
|
|
5947
|
-
aliases: [
|
|
5948
|
-
"TreeToggleGroup"
|
|
5949
|
-
],
|
|
6691
|
+
aliases: [],
|
|
5950
6692
|
package: "@treeui/vue",
|
|
5951
6693
|
kind: "selection",
|
|
5952
6694
|
category: "Data Entry",
|
|
5953
6695
|
status: "available",
|
|
5954
6696
|
purpose: "Segmented button group for single or multiple visible choices.",
|
|
5955
|
-
sourceFile: "packages/vue/src/components/
|
|
6697
|
+
sourceFile: "packages/vue/src/components/TToggleGroup.vue",
|
|
5956
6698
|
storyFile: "apps/docs/src/stories/ToggleGroup.stories.ts",
|
|
5957
6699
|
storyTitle: "Components/Data Entry/ToggleGroup",
|
|
5958
6700
|
manifestFile: "docs/ai/COMPONENTS/toggle-group.yaml",
|
|
@@ -5964,13 +6706,13 @@ var treeui_catalog_default = {
|
|
|
5964
6706
|
},
|
|
5965
6707
|
{
|
|
5966
6708
|
name: "options",
|
|
5967
|
-
type: "
|
|
6709
|
+
type: "TToggleGroupOption[]",
|
|
5968
6710
|
default: "[]",
|
|
5969
6711
|
note: "Array of `{ label, value, disabled? }`."
|
|
5970
6712
|
},
|
|
5971
6713
|
{
|
|
5972
6714
|
name: "selectionMode",
|
|
5973
|
-
type: "
|
|
6715
|
+
type: "TToggleGroupSelectionMode",
|
|
5974
6716
|
default: "single",
|
|
5975
6717
|
values: [
|
|
5976
6718
|
"single",
|
|
@@ -5979,7 +6721,7 @@ var treeui_catalog_default = {
|
|
|
5979
6721
|
},
|
|
5980
6722
|
{
|
|
5981
6723
|
name: "size",
|
|
5982
|
-
type: "
|
|
6724
|
+
type: "TSize",
|
|
5983
6725
|
default: "md",
|
|
5984
6726
|
values: [
|
|
5985
6727
|
"sm",
|
|
@@ -5989,7 +6731,7 @@ var treeui_catalog_default = {
|
|
|
5989
6731
|
},
|
|
5990
6732
|
{
|
|
5991
6733
|
name: "variant",
|
|
5992
|
-
type: "
|
|
6734
|
+
type: "TToggleGroupVariant",
|
|
5993
6735
|
default: "outline",
|
|
5994
6736
|
values: [
|
|
5995
6737
|
"outline",
|
|
@@ -6063,16 +6805,13 @@ var treeui_catalog_default = {
|
|
|
6063
6805
|
},
|
|
6064
6806
|
{
|
|
6065
6807
|
name: "TTooltip",
|
|
6066
|
-
|
|
6067
|
-
aliases: [
|
|
6068
|
-
"TreeTooltip"
|
|
6069
|
-
],
|
|
6808
|
+
aliases: [],
|
|
6070
6809
|
package: "@treeui/vue",
|
|
6071
6810
|
kind: "overlay",
|
|
6072
6811
|
category: "Overlay",
|
|
6073
6812
|
status: "available",
|
|
6074
6813
|
purpose: "Small contextual overlay shown on hover or focus.",
|
|
6075
|
-
sourceFile: "packages/vue/src/components/
|
|
6814
|
+
sourceFile: "packages/vue/src/components/TTooltip.vue",
|
|
6076
6815
|
storyFile: "apps/docs/src/stories/Tooltip.stories.ts",
|
|
6077
6816
|
storyTitle: "Components/Overlay/Tooltip",
|
|
6078
6817
|
manifestFile: "docs/ai/COMPONENTS/tooltip.yaml",
|
|
@@ -6099,7 +6838,7 @@ var treeui_catalog_default = {
|
|
|
6099
6838
|
},
|
|
6100
6839
|
{
|
|
6101
6840
|
name: "side",
|
|
6102
|
-
type: "
|
|
6841
|
+
type: "TTooltipSide",
|
|
6103
6842
|
default: "top",
|
|
6104
6843
|
values: [
|
|
6105
6844
|
"top",
|
|
@@ -6178,18 +6917,15 @@ var treeui_catalog_default = {
|
|
|
6178
6917
|
},
|
|
6179
6918
|
{
|
|
6180
6919
|
name: "TTreeView",
|
|
6181
|
-
|
|
6182
|
-
aliases: [
|
|
6183
|
-
"TreeTreeView"
|
|
6184
|
-
],
|
|
6920
|
+
aliases: [],
|
|
6185
6921
|
package: "@treeui/vue",
|
|
6186
6922
|
kind: "selection",
|
|
6187
6923
|
category: "Navigation & Disclosure",
|
|
6188
6924
|
status: "available",
|
|
6189
6925
|
purpose: "Hierarchical tree view with expansion, keyboard navigation, and single or multiple selection.",
|
|
6190
|
-
sourceFile: "packages/vue/src/components/
|
|
6926
|
+
sourceFile: "packages/vue/src/components/TTreeView.vue",
|
|
6191
6927
|
storyFile: "apps/docs/src/stories/TreeView.stories.ts",
|
|
6192
|
-
storyTitle: "Components/Navigation & Disclosure/
|
|
6928
|
+
storyTitle: "Components/Navigation & Disclosure/TView",
|
|
6193
6929
|
manifestFile: "docs/ai/COMPONENTS/tree-view.yaml",
|
|
6194
6930
|
props: [
|
|
6195
6931
|
{
|
|
@@ -6204,13 +6940,13 @@ var treeui_catalog_default = {
|
|
|
6204
6940
|
},
|
|
6205
6941
|
{
|
|
6206
6942
|
name: "nodes",
|
|
6207
|
-
type: "
|
|
6943
|
+
type: "TTreeViewNode[]",
|
|
6208
6944
|
default: "[]",
|
|
6209
6945
|
note: "Array of `{ id, label, description?, meta?, disabled?, children? }`."
|
|
6210
6946
|
},
|
|
6211
6947
|
{
|
|
6212
6948
|
name: "selectionMode",
|
|
6213
|
-
type: "
|
|
6949
|
+
type: "TTreeViewSelectionMode",
|
|
6214
6950
|
default: "single",
|
|
6215
6951
|
values: [
|
|
6216
6952
|
"single",
|
|
@@ -6748,7 +7484,7 @@ var createTreeuiMcpServer = () => {
|
|
|
6748
7484
|
inputSchema: {
|
|
6749
7485
|
type: "object",
|
|
6750
7486
|
properties: {
|
|
6751
|
-
name: { type: "string", description: "Component name or alias, such as TSelect or
|
|
7487
|
+
name: { type: "string", description: "Component name or alias, such as TSelect or TSelect." }
|
|
6752
7488
|
},
|
|
6753
7489
|
required: ["name"]
|
|
6754
7490
|
}
|