@treeui/mcp 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-LDH2IV6Q.js → chunk-QO4S3UWW.js} +1113 -377
- package/dist/cli.cjs +1113 -377
- package/dist/cli.js +1 -1
- package/dist/index.cjs +1116 -382
- package/dist/index.js +4 -6
- package/package.json +2 -2
package/dist/cli.cjs
CHANGED
|
@@ -34,9 +34,9 @@ var import_server = require("@modelcontextprotocol/sdk/server/index.js");
|
|
|
34
34
|
|
|
35
35
|
// src/generated/treeui.catalog.json
|
|
36
36
|
var treeui_catalog_default = {
|
|
37
|
-
generatedAt: "2026-
|
|
37
|
+
generatedAt: "2026-07-15T22:47:49.302Z",
|
|
38
38
|
packageName: "@treeui/vue",
|
|
39
|
-
packageVersion: "0.
|
|
39
|
+
packageVersion: "0.13.0",
|
|
40
40
|
decisionGuides: [
|
|
41
41
|
{
|
|
42
42
|
id: "single-choice",
|
|
@@ -234,6 +234,50 @@ var treeui_catalog_default = {
|
|
|
234
234
|
notes: []
|
|
235
235
|
}
|
|
236
236
|
]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
id: "data-viz-choice",
|
|
240
|
+
question: "Visualize numeric data",
|
|
241
|
+
options: [
|
|
242
|
+
{
|
|
243
|
+
use: "TStat",
|
|
244
|
+
when: [
|
|
245
|
+
"The story is a single headline number, optionally with a trend and delta.",
|
|
246
|
+
"It is not a plot \u2014 prefer the number over a chart when one value says it."
|
|
247
|
+
],
|
|
248
|
+
notes: []
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
use: "TSparkline",
|
|
252
|
+
when: [
|
|
253
|
+
"You want an inline micro-trend next to a value, in a table cell, or in text.",
|
|
254
|
+
"No axes, legend, or tooltip are needed."
|
|
255
|
+
],
|
|
256
|
+
notes: []
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
use: "TChart",
|
|
260
|
+
when: [
|
|
261
|
+
"You need line, area, or bar plots with axes, gridlines, legend, and hover tooltip.",
|
|
262
|
+
"There are one or more series over shared categories."
|
|
263
|
+
],
|
|
264
|
+
notes: []
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
use: "TDonutChart",
|
|
268
|
+
when: [
|
|
269
|
+
"The data is a part-of-whole breakdown (donut or pie)."
|
|
270
|
+
],
|
|
271
|
+
notes: []
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
use: "TProgress",
|
|
275
|
+
when: [
|
|
276
|
+
"You are showing completion toward a single target, not a distribution or trend."
|
|
277
|
+
],
|
|
278
|
+
notes: []
|
|
279
|
+
}
|
|
280
|
+
]
|
|
237
281
|
}
|
|
238
282
|
],
|
|
239
283
|
recipes: [
|
|
@@ -283,11 +327,28 @@ var treeui_catalog_default = {
|
|
|
283
327
|
"Set end `min` from the selected start time when appropriate."
|
|
284
328
|
]
|
|
285
329
|
},
|
|
330
|
+
{
|
|
331
|
+
id: "app-shell",
|
|
332
|
+
name: "Full-viewport application shell",
|
|
333
|
+
useWhen: [
|
|
334
|
+
"The app needs a header plus side navigation that fills the whole screen and adapts to mobile.",
|
|
335
|
+
"The layout must use the full page width on large monitors, not a centered column."
|
|
336
|
+
],
|
|
337
|
+
compose: [
|
|
338
|
+
"TAppShell",
|
|
339
|
+
"TNavMenu"
|
|
340
|
+
],
|
|
341
|
+
notes: [
|
|
342
|
+
"`TAppShell` orchestrates the header, sidebar, and fluid content in one component; put a `TNavMenu` in its `sidebar` slot and it inherits collapsed state automatically.",
|
|
343
|
+
"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.",
|
|
344
|
+
"Mount it at the app root. Wrap only inner regions in `TContainer` if a specific area needs a constrained reading width."
|
|
345
|
+
]
|
|
346
|
+
},
|
|
286
347
|
{
|
|
287
348
|
id: "sidebar-shell",
|
|
288
349
|
name: "Sidebar application shell",
|
|
289
350
|
useWhen: [
|
|
290
|
-
"The screen needs persistent section navigation."
|
|
351
|
+
"The screen needs persistent section navigation and you are composing the shell by hand."
|
|
291
352
|
],
|
|
292
353
|
compose: [
|
|
293
354
|
"TSidebar",
|
|
@@ -296,7 +357,8 @@ var treeui_catalog_default = {
|
|
|
296
357
|
"TContainer"
|
|
297
358
|
],
|
|
298
359
|
notes: [
|
|
299
|
-
"Let `TNavMenu` inherit collapsed state from `TSidebar` when possible."
|
|
360
|
+
"Let `TNavMenu` inherit collapsed state from `TSidebar` when possible.",
|
|
361
|
+
"Prefer `TAppShell` (recipe `app-shell`) when you also need full-viewport sizing and a responsive mobile drawer."
|
|
300
362
|
]
|
|
301
363
|
},
|
|
302
364
|
{
|
|
@@ -394,15 +456,38 @@ var treeui_catalog_default = {
|
|
|
394
456
|
id: "chart-surface",
|
|
395
457
|
name: "Chart surface",
|
|
396
458
|
useWhen: [
|
|
397
|
-
"A screen needs data visualization
|
|
459
|
+
"A screen needs data visualization inside a framed, titled surface."
|
|
398
460
|
],
|
|
399
461
|
compose: [
|
|
400
462
|
"TCard",
|
|
401
463
|
"TStack",
|
|
402
|
-
"
|
|
464
|
+
"TChart",
|
|
465
|
+
"TSelect"
|
|
403
466
|
],
|
|
404
467
|
notes: [
|
|
405
|
-
"
|
|
468
|
+
"Prefer the native TChart / TDonutChart / TSparkline \u2014 no external charting library is required.",
|
|
469
|
+
"Use TreeUI for the surrounding surface, headings, badges, range filters, and empty/loading states.",
|
|
470
|
+
"TChart has its own loading and empty slots; you can still wrap it in TCard for the frame.",
|
|
471
|
+
"Only reach for an external chart engine for chart types TreeUI does not cover yet (e.g. scatter, heatmap)."
|
|
472
|
+
]
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
id: "metric-dashboard",
|
|
476
|
+
name: "Metric dashboard",
|
|
477
|
+
useWhen: [
|
|
478
|
+
"A dashboard shows KPIs alongside trends and breakdowns."
|
|
479
|
+
],
|
|
480
|
+
compose: [
|
|
481
|
+
"TStat",
|
|
482
|
+
"TSparkline",
|
|
483
|
+
"TChart",
|
|
484
|
+
"TDonutChart",
|
|
485
|
+
"TGrid"
|
|
486
|
+
],
|
|
487
|
+
notes: [
|
|
488
|
+
"Lead with TStat tiles; embed a TSparkline in a stat's meta slot for the inline trend.",
|
|
489
|
+
"Use one TChart for the main time series and a TDonutChart for a part-of-whole split.",
|
|
490
|
+
"Keep series colors stable across the dashboard \u2014 rely on the --tree-color-chart-* order, do not remap by rank."
|
|
406
491
|
]
|
|
407
492
|
},
|
|
408
493
|
{
|
|
@@ -477,7 +562,7 @@ var treeui_catalog_default = {
|
|
|
477
562
|
},
|
|
478
563
|
globalRules: [
|
|
479
564
|
"Always import `@treeui/vue/style.css` once in the consuming application.",
|
|
480
|
-
"
|
|
565
|
+
"All components use the `T<Name>` export prefix; there are no `Tree<Name>` aliases.",
|
|
481
566
|
"Form controls use `modelValue` + `update:modelValue`.",
|
|
482
567
|
"Overlay-style components generally support controlled and uncontrolled open state.",
|
|
483
568
|
"Date-only values use `YYYY-MM-DD`.",
|
|
@@ -552,17 +637,27 @@ var treeui_catalog_default = {
|
|
|
552
637
|
"Use `accept`, `multiple`, and size limits in the app layer to constrain uploads."
|
|
553
638
|
]
|
|
554
639
|
},
|
|
640
|
+
TAppShell: {
|
|
641
|
+
required: [],
|
|
642
|
+
notes: [
|
|
643
|
+
"Mount at the app root; it fills the viewport (100dvh, full width) and scrolls its content region independently.",
|
|
644
|
+
"Put navigation in the `sidebar` slot (e.g. `TNavMenu`) \u2014 it inherits collapsed state from the shell provider like `TSidebar`.",
|
|
645
|
+
"Leave `mobile` unset to auto-switch to an off-canvas drawer at `breakpoint`, or bind `mobile` to control it explicitly.",
|
|
646
|
+
"Use `v-model:collapsed` for the desktop rail and `v-model:sidebarOpen` for the mobile drawer when the app persists layout state."
|
|
647
|
+
]
|
|
648
|
+
},
|
|
555
649
|
TSidebar: {
|
|
556
650
|
required: [],
|
|
557
651
|
notes: [
|
|
558
652
|
"Pair with `TNavMenu` for app-section navigation.",
|
|
559
|
-
"Use controlled `collapsed` state when the app shell persists layout preferences."
|
|
653
|
+
"Use controlled `collapsed` state when the app shell persists layout preferences.",
|
|
654
|
+
"Prefer `TAppShell` when you also want full-viewport sizing, a top header, and a responsive mobile drawer."
|
|
560
655
|
]
|
|
561
656
|
},
|
|
562
657
|
TNavMenu: {
|
|
563
658
|
required: [],
|
|
564
659
|
notes: [
|
|
565
|
-
"When nested inside `TSidebar`, `collapsed` can be inherited from the sidebar provider."
|
|
660
|
+
"When nested inside `TSidebar` or `TAppShell`, `collapsed` can be inherited from the sidebar provider."
|
|
566
661
|
]
|
|
567
662
|
},
|
|
568
663
|
TTreeView: {
|
|
@@ -596,6 +691,32 @@ var treeui_catalog_default = {
|
|
|
596
691
|
"Use `href` for native links.",
|
|
597
692
|
"Use `to` when the app has vue-router and breadcrumb items should render RouterLink."
|
|
598
693
|
]
|
|
694
|
+
},
|
|
695
|
+
TChart: {
|
|
696
|
+
required: [],
|
|
697
|
+
notes: [
|
|
698
|
+
"Pass `series` as `{ name, data, color? }[]` and `labels` as a parallel `string[]` (one label per data index).",
|
|
699
|
+
"Set `type` to `line`, `area`, or `bar`; use `stacked` only with `bar`.",
|
|
700
|
+
"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.",
|
|
701
|
+
"Pass `valueFormat: (n) => string` to format axis and tooltip values (currency, compact, etc.).",
|
|
702
|
+
"No charting library or provider is required \u2014 the SVG and geometry are built in."
|
|
703
|
+
]
|
|
704
|
+
},
|
|
705
|
+
TSparkline: {
|
|
706
|
+
required: [],
|
|
707
|
+
notes: [
|
|
708
|
+
"Pass `data` as `number[]`; there are no axes, legend, or tooltip by design.",
|
|
709
|
+
"Size it with `width`/`height`; use it inside `TStat`, table cells, or text.",
|
|
710
|
+
"Always keep a visible number nearby \u2014 a sparkline supplements a value, it does not replace it."
|
|
711
|
+
]
|
|
712
|
+
},
|
|
713
|
+
TDonutChart: {
|
|
714
|
+
required: [],
|
|
715
|
+
notes: [
|
|
716
|
+
"Pass `segments` as `{ label, value, color? }[]`; non-positive values are dropped.",
|
|
717
|
+
"Set `thickness: 0` for a full pie; keep the default for a donut with a center readout.",
|
|
718
|
+
"Use the `center` slot (donut only) for a custom center; otherwise it shows the total or the hovered slice."
|
|
719
|
+
]
|
|
599
720
|
}
|
|
600
721
|
},
|
|
601
722
|
appPatterns: {
|
|
@@ -609,6 +730,9 @@ var treeui_catalog_default = {
|
|
|
609
730
|
commonCompositions: [
|
|
610
731
|
"TFormField + input-like control",
|
|
611
732
|
"TGrid + TStat",
|
|
733
|
+
"TStat + TSparkline",
|
|
734
|
+
"TCard + TChart",
|
|
735
|
+
"TAppShell + TNavMenu",
|
|
612
736
|
"TSidebar + TNavMenu",
|
|
613
737
|
"TTable + TPagination",
|
|
614
738
|
"TPricing + TPricingCard"
|
|
@@ -618,16 +742,13 @@ var treeui_catalog_default = {
|
|
|
618
742
|
components: [
|
|
619
743
|
{
|
|
620
744
|
name: "TAccordion",
|
|
621
|
-
|
|
622
|
-
aliases: [
|
|
623
|
-
"TreeAccordion"
|
|
624
|
-
],
|
|
745
|
+
aliases: [],
|
|
625
746
|
package: "@treeui/vue",
|
|
626
747
|
kind: "disclosure",
|
|
627
748
|
category: "Data Display",
|
|
628
749
|
status: "available",
|
|
629
750
|
purpose: "Organized content sections with expandable/collapsible behavior. Supports single-open and multi-open modes.\n",
|
|
630
|
-
sourceFile: "packages/vue/src/components/
|
|
751
|
+
sourceFile: "packages/vue/src/components/TAccordion.vue",
|
|
631
752
|
storyFile: "apps/docs/src/stories/Accordion.stories.ts",
|
|
632
753
|
storyTitle: "Components/Data Display/Accordion",
|
|
633
754
|
manifestFile: "docs/ai/COMPONENTS/accordion.yaml",
|
|
@@ -674,16 +795,13 @@ var treeui_catalog_default = {
|
|
|
674
795
|
},
|
|
675
796
|
{
|
|
676
797
|
name: "TAlert",
|
|
677
|
-
|
|
678
|
-
aliases: [
|
|
679
|
-
"TreeAlert"
|
|
680
|
-
],
|
|
798
|
+
aliases: [],
|
|
681
799
|
package: "@treeui/vue",
|
|
682
800
|
kind: "feedback",
|
|
683
801
|
category: "Feedback",
|
|
684
802
|
status: "available",
|
|
685
803
|
purpose: "Inline status banner for info, success, warning, and danger messages.",
|
|
686
|
-
sourceFile: "packages/vue/src/components/
|
|
804
|
+
sourceFile: "packages/vue/src/components/TAlert.vue",
|
|
687
805
|
storyFile: "apps/docs/src/stories/Alert.stories.ts",
|
|
688
806
|
storyTitle: "Components/Feedback/Alert",
|
|
689
807
|
manifestFile: "docs/ai/COMPONENTS/alert.yaml",
|
|
@@ -701,7 +819,7 @@ var treeui_catalog_default = {
|
|
|
701
819
|
},
|
|
702
820
|
{
|
|
703
821
|
name: "size",
|
|
704
|
-
type: "
|
|
822
|
+
type: "TSize",
|
|
705
823
|
default: "md",
|
|
706
824
|
values: [
|
|
707
825
|
"sm",
|
|
@@ -776,15 +894,217 @@ var treeui_catalog_default = {
|
|
|
776
894
|
recipes: []
|
|
777
895
|
},
|
|
778
896
|
{
|
|
779
|
-
name: "
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
897
|
+
name: "TAppShell",
|
|
898
|
+
aliases: [],
|
|
899
|
+
package: "@treeui/vue",
|
|
900
|
+
kind: "layout",
|
|
901
|
+
category: "Layout",
|
|
902
|
+
status: "available",
|
|
903
|
+
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.",
|
|
904
|
+
sourceFile: "packages/vue/src/components/TAppShell.vue",
|
|
905
|
+
storyFile: "apps/docs/src/stories/AppShell.stories.ts",
|
|
906
|
+
storyTitle: "Components/Layout/AppShell",
|
|
907
|
+
manifestFile: "docs/ai/COMPONENTS/app-shell.yaml",
|
|
908
|
+
props: [
|
|
909
|
+
{
|
|
910
|
+
name: "as",
|
|
911
|
+
type: "string",
|
|
912
|
+
default: "div"
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
name: "side",
|
|
916
|
+
type: "TSidebarSide",
|
|
917
|
+
default: "left",
|
|
918
|
+
values: [
|
|
919
|
+
"left",
|
|
920
|
+
"right"
|
|
921
|
+
]
|
|
922
|
+
},
|
|
923
|
+
{
|
|
924
|
+
name: "sidebarWidth",
|
|
925
|
+
type: "string",
|
|
926
|
+
default: "17.5rem"
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
name: "collapsedWidth",
|
|
930
|
+
type: "string",
|
|
931
|
+
default: "4.75rem"
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
name: "collapsible",
|
|
935
|
+
type: "boolean",
|
|
936
|
+
default: "false"
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
name: "collapsed",
|
|
940
|
+
type: "boolean",
|
|
941
|
+
default: "undefined"
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
name: "defaultCollapsed",
|
|
945
|
+
type: "boolean",
|
|
946
|
+
default: "false"
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
name: "mobile",
|
|
950
|
+
type: "boolean",
|
|
951
|
+
default: "undefined"
|
|
952
|
+
},
|
|
953
|
+
{
|
|
954
|
+
name: "breakpoint",
|
|
955
|
+
type: "string",
|
|
956
|
+
default: "768px"
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
name: "sidebarOpen",
|
|
960
|
+
type: "boolean",
|
|
961
|
+
default: "undefined"
|
|
962
|
+
},
|
|
963
|
+
{
|
|
964
|
+
name: "defaultSidebarOpen",
|
|
965
|
+
type: "boolean",
|
|
966
|
+
default: "false"
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
name: "closeOnEscape",
|
|
970
|
+
type: "boolean",
|
|
971
|
+
default: "true"
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
name: "closeOnOverlay",
|
|
975
|
+
type: "boolean",
|
|
976
|
+
default: "true"
|
|
977
|
+
},
|
|
978
|
+
{
|
|
979
|
+
name: "showMenuButton",
|
|
980
|
+
type: "boolean",
|
|
981
|
+
default: "true"
|
|
982
|
+
},
|
|
983
|
+
{
|
|
984
|
+
name: "menuLabel",
|
|
985
|
+
type: "string",
|
|
986
|
+
default: "Open menu"
|
|
987
|
+
},
|
|
988
|
+
{
|
|
989
|
+
name: "closeLabel",
|
|
990
|
+
type: "string",
|
|
991
|
+
default: "Close menu"
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
name: "sidebarLabel",
|
|
995
|
+
type: "string",
|
|
996
|
+
default: "Sidebar"
|
|
997
|
+
}
|
|
783
998
|
],
|
|
999
|
+
events: [
|
|
1000
|
+
{
|
|
1001
|
+
name: "update:collapsed"
|
|
1002
|
+
},
|
|
1003
|
+
{
|
|
1004
|
+
name: "collapse-change"
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
name: "update:sidebarOpen"
|
|
1008
|
+
},
|
|
1009
|
+
{
|
|
1010
|
+
name: "sidebar-open-change"
|
|
1011
|
+
}
|
|
1012
|
+
],
|
|
1013
|
+
slots: [
|
|
1014
|
+
{
|
|
1015
|
+
name: "header"
|
|
1016
|
+
},
|
|
1017
|
+
{
|
|
1018
|
+
name: "sidebar"
|
|
1019
|
+
},
|
|
1020
|
+
{
|
|
1021
|
+
name: "default"
|
|
1022
|
+
},
|
|
1023
|
+
{
|
|
1024
|
+
name: "menu-icon"
|
|
1025
|
+
}
|
|
1026
|
+
],
|
|
1027
|
+
a11y: [
|
|
1028
|
+
"role: dialog",
|
|
1029
|
+
"aria_modal: true",
|
|
1030
|
+
"focus_trap: true",
|
|
1031
|
+
"restores_focus_on_close: true",
|
|
1032
|
+
"escape_closes_when_enabled: true",
|
|
1033
|
+
"menu_button_aria_expanded: true",
|
|
1034
|
+
"menu_button_aria_controls_drawer: true",
|
|
1035
|
+
"sidebar_labelled_by_sidebar_label: true"
|
|
1036
|
+
],
|
|
1037
|
+
behavior: [
|
|
1038
|
+
"fills_viewport_full_width_and_height: true",
|
|
1039
|
+
"header_spans_full_width_above_sidebar_and_content: true",
|
|
1040
|
+
"content_area_scrolls_independently: true",
|
|
1041
|
+
"auto_switches_to_mobile_at_breakpoint_when_mobile_undefined: true",
|
|
1042
|
+
"mobile_prop_forces_mobile_mode: true",
|
|
1043
|
+
"mobile_sidebar_becomes_off_canvas_drawer: true",
|
|
1044
|
+
"auto_menu_button_in_header_on_mobile: true",
|
|
1045
|
+
"controlled_and_uncontrolled_collapsed_state: true",
|
|
1046
|
+
"controlled_and_uncontrolled_sidebar_open_state: true",
|
|
1047
|
+
"provides_collapsed_state_to_descendants: true",
|
|
1048
|
+
"drawer_reports_collapsed_false_to_descendants_and_slots: true",
|
|
1049
|
+
"left_and_right_variants: true",
|
|
1050
|
+
"locks_body_scroll_while_drawer_open: true",
|
|
1051
|
+
"overlay_click_closes_when_enabled: true",
|
|
1052
|
+
"exposes_slot_props_with_mobile_collapsed_and_toggles: true"
|
|
1053
|
+
],
|
|
1054
|
+
selection: {
|
|
1055
|
+
keywords: [
|
|
1056
|
+
"app shell",
|
|
1057
|
+
"layout",
|
|
1058
|
+
"dashboard",
|
|
1059
|
+
"admin",
|
|
1060
|
+
"header sidebar",
|
|
1061
|
+
"full screen",
|
|
1062
|
+
"responsive shell",
|
|
1063
|
+
"off-canvas"
|
|
1064
|
+
],
|
|
1065
|
+
useWhen: [
|
|
1066
|
+
"You need a full-viewport application layout with a header, a side navigation, and a fluid content area.",
|
|
1067
|
+
"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."
|
|
1068
|
+
],
|
|
1069
|
+
avoidWhen: [
|
|
1070
|
+
"You only need one region (just a top bar, or just a side rail) \u2014 compose TNavbar or TSidebar directly.",
|
|
1071
|
+
"The page content should be centered with a readable max width \u2014 use TContainer inside the shell content instead."
|
|
1072
|
+
],
|
|
1073
|
+
alternatives: [
|
|
1074
|
+
{
|
|
1075
|
+
component: "TSidebar",
|
|
1076
|
+
when: "You want a standalone collapsible side rail without the header/content orchestration or responsive drawer."
|
|
1077
|
+
},
|
|
1078
|
+
{
|
|
1079
|
+
component: "TNavbar",
|
|
1080
|
+
when: "You only need the top application bar."
|
|
1081
|
+
},
|
|
1082
|
+
{
|
|
1083
|
+
component: "TDrawer",
|
|
1084
|
+
when: "You need a general temporary overlay panel rather than the shell's responsive navigation."
|
|
1085
|
+
}
|
|
1086
|
+
]
|
|
1087
|
+
},
|
|
1088
|
+
setup: {
|
|
1089
|
+
required: [],
|
|
1090
|
+
notes: [
|
|
1091
|
+
"Mount at the app root; it fills the viewport (100dvh, full width) and scrolls its content region independently.",
|
|
1092
|
+
"Put navigation in the `sidebar` slot (e.g. `TNavMenu`) \u2014 it inherits collapsed state from the shell provider like `TSidebar`.",
|
|
1093
|
+
"Leave `mobile` unset to auto-switch to an off-canvas drawer at `breakpoint`, or bind `mobile` to control it explicitly.",
|
|
1094
|
+
"Use `v-model:collapsed` for the desktop rail and `v-model:sidebarOpen` for the mobile drawer when the app persists layout state."
|
|
1095
|
+
]
|
|
1096
|
+
},
|
|
1097
|
+
recipes: [
|
|
1098
|
+
"app-shell"
|
|
1099
|
+
]
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
name: "TAvatar",
|
|
1103
|
+
aliases: [],
|
|
784
1104
|
package: "@treeui/vue",
|
|
785
1105
|
category: "Data Display",
|
|
786
1106
|
description: "User image with fallback initials and optional status indicator dot.",
|
|
787
|
-
sourceFile: "packages/vue/src/components/
|
|
1107
|
+
sourceFile: "packages/vue/src/components/TAvatar.vue",
|
|
788
1108
|
storyFile: "apps/docs/src/stories/Avatar.stories.ts",
|
|
789
1109
|
storyTitle: "Components/Data Display/Avatar",
|
|
790
1110
|
manifestFile: "docs/ai/COMPONENTS/avatar.yaml",
|
|
@@ -809,7 +1129,7 @@ var treeui_catalog_default = {
|
|
|
809
1129
|
},
|
|
810
1130
|
{
|
|
811
1131
|
name: "size",
|
|
812
|
-
type: "
|
|
1132
|
+
type: "TSize",
|
|
813
1133
|
default: "md",
|
|
814
1134
|
values: [
|
|
815
1135
|
"sm",
|
|
@@ -819,7 +1139,7 @@ var treeui_catalog_default = {
|
|
|
819
1139
|
},
|
|
820
1140
|
{
|
|
821
1141
|
name: "status",
|
|
822
|
-
type: "
|
|
1142
|
+
type: "TAvatarStatus",
|
|
823
1143
|
required: false,
|
|
824
1144
|
values: [
|
|
825
1145
|
"online",
|
|
@@ -857,23 +1177,20 @@ var treeui_catalog_default = {
|
|
|
857
1177
|
},
|
|
858
1178
|
{
|
|
859
1179
|
name: "TBadge",
|
|
860
|
-
|
|
861
|
-
aliases: [
|
|
862
|
-
"TreeBadge"
|
|
863
|
-
],
|
|
1180
|
+
aliases: [],
|
|
864
1181
|
package: "@treeui/vue",
|
|
865
1182
|
kind: "display",
|
|
866
1183
|
category: "Data Display",
|
|
867
1184
|
status: "available",
|
|
868
1185
|
purpose: "Compact status or metadata label with optional icon.",
|
|
869
|
-
sourceFile: "packages/vue/src/components/
|
|
1186
|
+
sourceFile: "packages/vue/src/components/TBadge.vue",
|
|
870
1187
|
storyFile: "apps/docs/src/stories/Badge.stories.ts",
|
|
871
1188
|
storyTitle: "Components/Data Display/Badge",
|
|
872
1189
|
manifestFile: "docs/ai/COMPONENTS/badge.yaml",
|
|
873
1190
|
props: [
|
|
874
1191
|
{
|
|
875
1192
|
name: "variant",
|
|
876
|
-
type: "
|
|
1193
|
+
type: "TVariant",
|
|
877
1194
|
default: "soft",
|
|
878
1195
|
values: [
|
|
879
1196
|
"solid",
|
|
@@ -885,7 +1202,7 @@ var treeui_catalog_default = {
|
|
|
885
1202
|
},
|
|
886
1203
|
{
|
|
887
1204
|
name: "tone",
|
|
888
|
-
type: "
|
|
1205
|
+
type: "TBadgeTone",
|
|
889
1206
|
default: "neutral",
|
|
890
1207
|
values: [
|
|
891
1208
|
"neutral",
|
|
@@ -898,7 +1215,7 @@ var treeui_catalog_default = {
|
|
|
898
1215
|
},
|
|
899
1216
|
{
|
|
900
1217
|
name: "size",
|
|
901
|
-
type: "
|
|
1218
|
+
type: "TSize",
|
|
902
1219
|
default: "md",
|
|
903
1220
|
values: [
|
|
904
1221
|
"sm",
|
|
@@ -937,16 +1254,13 @@ var treeui_catalog_default = {
|
|
|
937
1254
|
},
|
|
938
1255
|
{
|
|
939
1256
|
name: "TBreadcrumb",
|
|
940
|
-
|
|
941
|
-
aliases: [
|
|
942
|
-
"TreeBreadcrumb"
|
|
943
|
-
],
|
|
1257
|
+
aliases: [],
|
|
944
1258
|
package: "@treeui/vue",
|
|
945
1259
|
kind: "navigation",
|
|
946
1260
|
category: "Navigation",
|
|
947
1261
|
status: "available",
|
|
948
1262
|
purpose: "Hierarchical navigation trail showing the user's current location within a site or application.",
|
|
949
|
-
sourceFile: "packages/vue/src/components/
|
|
1263
|
+
sourceFile: "packages/vue/src/components/TBreadcrumb.vue",
|
|
950
1264
|
storyFile: "apps/docs/src/stories/Breadcrumb.stories.ts",
|
|
951
1265
|
storyTitle: "Components/Navigation/Breadcrumb",
|
|
952
1266
|
manifestFile: "docs/ai/COMPONENTS/breadcrumb.yaml",
|
|
@@ -989,16 +1303,13 @@ var treeui_catalog_default = {
|
|
|
989
1303
|
},
|
|
990
1304
|
{
|
|
991
1305
|
name: "TButton",
|
|
992
|
-
|
|
993
|
-
aliases: [
|
|
994
|
-
"TreeButton"
|
|
995
|
-
],
|
|
1306
|
+
aliases: [],
|
|
996
1307
|
package: "@treeui/vue",
|
|
997
1308
|
kind: "primitive",
|
|
998
1309
|
category: "Actions",
|
|
999
1310
|
status: "available",
|
|
1000
1311
|
purpose: "Clickable action trigger with variants, sizes, optional polymorphism, and loading state.",
|
|
1001
|
-
sourceFile: "packages/vue/src/components/
|
|
1312
|
+
sourceFile: "packages/vue/src/components/TButton.vue",
|
|
1002
1313
|
storyFile: "apps/docs/src/stories/Button.stories.ts",
|
|
1003
1314
|
storyTitle: "Components/Actions/Button",
|
|
1004
1315
|
manifestFile: "docs/ai/COMPONENTS/button.yaml",
|
|
@@ -1010,7 +1321,7 @@ var treeui_catalog_default = {
|
|
|
1010
1321
|
},
|
|
1011
1322
|
{
|
|
1012
1323
|
name: "variant",
|
|
1013
|
-
type: "
|
|
1324
|
+
type: "TVariant",
|
|
1014
1325
|
default: "solid",
|
|
1015
1326
|
values: [
|
|
1016
1327
|
"solid",
|
|
@@ -1022,7 +1333,7 @@ var treeui_catalog_default = {
|
|
|
1022
1333
|
},
|
|
1023
1334
|
{
|
|
1024
1335
|
name: "size",
|
|
1025
|
-
type: "
|
|
1336
|
+
type: "TSize",
|
|
1026
1337
|
default: "md",
|
|
1027
1338
|
values: [
|
|
1028
1339
|
"sm",
|
|
@@ -1087,16 +1398,13 @@ var treeui_catalog_default = {
|
|
|
1087
1398
|
},
|
|
1088
1399
|
{
|
|
1089
1400
|
name: "TCard",
|
|
1090
|
-
|
|
1091
|
-
aliases: [
|
|
1092
|
-
"TreeCard"
|
|
1093
|
-
],
|
|
1401
|
+
aliases: [],
|
|
1094
1402
|
package: "@treeui/vue",
|
|
1095
1403
|
kind: "layout",
|
|
1096
1404
|
category: "Data Display",
|
|
1097
1405
|
status: "available",
|
|
1098
1406
|
purpose: "Surface container with optional header and footer slots.",
|
|
1099
|
-
sourceFile: "packages/vue/src/components/
|
|
1407
|
+
sourceFile: "packages/vue/src/components/TCard.vue",
|
|
1100
1408
|
storyFile: "apps/docs/src/stories/Card.stories.ts",
|
|
1101
1409
|
storyTitle: "Components/Data Display/Card",
|
|
1102
1410
|
manifestFile: "docs/ai/COMPONENTS/card.yaml",
|
|
@@ -1108,7 +1416,7 @@ var treeui_catalog_default = {
|
|
|
1108
1416
|
},
|
|
1109
1417
|
{
|
|
1110
1418
|
name: "variant",
|
|
1111
|
-
type: "
|
|
1419
|
+
type: "TCardVariant",
|
|
1112
1420
|
default: "outline",
|
|
1113
1421
|
values: [
|
|
1114
1422
|
"outline",
|
|
@@ -1119,7 +1427,7 @@ var treeui_catalog_default = {
|
|
|
1119
1427
|
},
|
|
1120
1428
|
{
|
|
1121
1429
|
name: "size",
|
|
1122
|
-
type: "
|
|
1430
|
+
type: "TSize",
|
|
1123
1431
|
default: "md",
|
|
1124
1432
|
values: [
|
|
1125
1433
|
"sm",
|
|
@@ -1151,7 +1459,8 @@ var treeui_catalog_default = {
|
|
|
1151
1459
|
],
|
|
1152
1460
|
a11y: [],
|
|
1153
1461
|
behavior: [
|
|
1154
|
-
"body_wrapper_class:
|
|
1462
|
+
"body_wrapper_class: t-card__body",
|
|
1463
|
+
"solid_variant_rescopes_color_tokens_for_nested_content: true"
|
|
1155
1464
|
],
|
|
1156
1465
|
selection: {
|
|
1157
1466
|
keywords: [
|
|
@@ -1187,17 +1496,210 @@ var treeui_catalog_default = {
|
|
|
1187
1496
|
]
|
|
1188
1497
|
},
|
|
1189
1498
|
{
|
|
1190
|
-
name: "
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1499
|
+
name: "TChart",
|
|
1500
|
+
aliases: [],
|
|
1501
|
+
package: "@treeui/vue",
|
|
1502
|
+
kind: "data-display",
|
|
1503
|
+
category: "Data Display",
|
|
1504
|
+
status: "available",
|
|
1505
|
+
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.",
|
|
1506
|
+
sourceFile: "packages/vue/src/components/TChart.vue",
|
|
1507
|
+
storyFile: "apps/docs/src/stories/Chart.stories.ts",
|
|
1508
|
+
storyTitle: "Components/Data Display/Chart",
|
|
1509
|
+
manifestFile: "docs/ai/COMPONENTS/chart.yaml",
|
|
1510
|
+
props: [
|
|
1511
|
+
{
|
|
1512
|
+
name: "type",
|
|
1513
|
+
type: "TChartType",
|
|
1514
|
+
default: "line",
|
|
1515
|
+
values: [
|
|
1516
|
+
"line",
|
|
1517
|
+
"area",
|
|
1518
|
+
"bar"
|
|
1519
|
+
]
|
|
1520
|
+
},
|
|
1521
|
+
{
|
|
1522
|
+
name: "series",
|
|
1523
|
+
type: "TChartSeries[]",
|
|
1524
|
+
default: "[]",
|
|
1525
|
+
note: "Each item is { name: string; data: number[]; color?: string }."
|
|
1526
|
+
},
|
|
1527
|
+
{
|
|
1528
|
+
name: "labels",
|
|
1529
|
+
type: "string[]",
|
|
1530
|
+
default: "[]",
|
|
1531
|
+
note: "X-axis categories, aligned index-for-index to each series' data."
|
|
1532
|
+
},
|
|
1533
|
+
{
|
|
1534
|
+
name: "height",
|
|
1535
|
+
type: "number",
|
|
1536
|
+
default: "260",
|
|
1537
|
+
note: "Width is fluid (measured via ResizeObserver)."
|
|
1538
|
+
},
|
|
1539
|
+
{
|
|
1540
|
+
name: "smooth",
|
|
1541
|
+
type: "boolean",
|
|
1542
|
+
default: "false",
|
|
1543
|
+
note: "Curved line/area."
|
|
1544
|
+
},
|
|
1545
|
+
{
|
|
1546
|
+
name: "stacked",
|
|
1547
|
+
type: "boolean",
|
|
1548
|
+
default: "false",
|
|
1549
|
+
note: "Stacks bar series; ignored for line/area. Negative values are clamped to 0 in stacked mode (grouped mode renders them)."
|
|
1550
|
+
},
|
|
1551
|
+
{
|
|
1552
|
+
name: "showGrid",
|
|
1553
|
+
type: "boolean",
|
|
1554
|
+
default: "true"
|
|
1555
|
+
},
|
|
1556
|
+
{
|
|
1557
|
+
name: "showLegend",
|
|
1558
|
+
type: "boolean",
|
|
1559
|
+
default: "auto (true when more than one series)"
|
|
1560
|
+
},
|
|
1561
|
+
{
|
|
1562
|
+
name: "showXAxis",
|
|
1563
|
+
type: "boolean",
|
|
1564
|
+
default: "true"
|
|
1565
|
+
},
|
|
1566
|
+
{
|
|
1567
|
+
name: "showYAxis",
|
|
1568
|
+
type: "boolean",
|
|
1569
|
+
default: "true"
|
|
1570
|
+
},
|
|
1571
|
+
{
|
|
1572
|
+
name: "showTooltip",
|
|
1573
|
+
type: "boolean",
|
|
1574
|
+
default: "true"
|
|
1575
|
+
},
|
|
1576
|
+
{
|
|
1577
|
+
name: "showPoints",
|
|
1578
|
+
type: "boolean",
|
|
1579
|
+
default: "false",
|
|
1580
|
+
note: "Always draw markers on line/area points."
|
|
1581
|
+
},
|
|
1582
|
+
{
|
|
1583
|
+
name: "yTicks",
|
|
1584
|
+
type: "number",
|
|
1585
|
+
default: "5"
|
|
1586
|
+
},
|
|
1587
|
+
{
|
|
1588
|
+
name: "valueFormat",
|
|
1589
|
+
type: "(value: number) => string",
|
|
1590
|
+
default: "locale integers for |value| >= 1000"
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
name: "minY",
|
|
1594
|
+
type: "number",
|
|
1595
|
+
default: "auto"
|
|
1596
|
+
},
|
|
1597
|
+
{
|
|
1598
|
+
name: "maxY",
|
|
1599
|
+
type: "number",
|
|
1600
|
+
default: "auto"
|
|
1601
|
+
},
|
|
1602
|
+
{
|
|
1603
|
+
name: "animated",
|
|
1604
|
+
type: "boolean",
|
|
1605
|
+
default: "true",
|
|
1606
|
+
note: "Draw-in animation; disabled under prefers-reduced-motion."
|
|
1607
|
+
},
|
|
1608
|
+
{
|
|
1609
|
+
name: "loading",
|
|
1610
|
+
type: "boolean",
|
|
1611
|
+
default: "false"
|
|
1612
|
+
},
|
|
1613
|
+
{
|
|
1614
|
+
name: "ariaLabel",
|
|
1615
|
+
type: "string",
|
|
1616
|
+
default: "auto-generated summary"
|
|
1617
|
+
}
|
|
1618
|
+
],
|
|
1619
|
+
events: [
|
|
1620
|
+
{
|
|
1621
|
+
name: "point-click",
|
|
1622
|
+
payload: "{ index: number; label: string; values: { name: string; value: number; color: string }[] }"
|
|
1623
|
+
}
|
|
1624
|
+
],
|
|
1625
|
+
slots: [
|
|
1626
|
+
{
|
|
1627
|
+
name: "legend"
|
|
1628
|
+
},
|
|
1629
|
+
{
|
|
1630
|
+
name: "tooltip"
|
|
1631
|
+
},
|
|
1632
|
+
{
|
|
1633
|
+
name: "empty"
|
|
1634
|
+
}
|
|
1635
|
+
],
|
|
1636
|
+
a11y: [
|
|
1637
|
+
"SVG is aria-hidden; a visually-hidden <table> mirrors the series data for assistive tech.",
|
|
1638
|
+
"Legend defaults on for multiple series so identity is not color-only.",
|
|
1639
|
+
"Provide a meaningful ariaLabel describing what the chart shows."
|
|
1194
1640
|
],
|
|
1641
|
+
behavior: [
|
|
1642
|
+
"colors_auto_assign_from_chart_palette: --tree-color-chart-1..8, cycling; per-series color overrides",
|
|
1643
|
+
"bar_zero_baseline: true",
|
|
1644
|
+
"line_domain_uses_nice_ticks: true",
|
|
1645
|
+
"hover_shows_crosshair_and_tooltip: true"
|
|
1646
|
+
],
|
|
1647
|
+
selection: {
|
|
1648
|
+
keywords: [
|
|
1649
|
+
"chart",
|
|
1650
|
+
"graph",
|
|
1651
|
+
"line chart",
|
|
1652
|
+
"area chart",
|
|
1653
|
+
"bar chart",
|
|
1654
|
+
"plot",
|
|
1655
|
+
"dashboard",
|
|
1656
|
+
"time series",
|
|
1657
|
+
"analytics"
|
|
1658
|
+
],
|
|
1659
|
+
useWhen: [
|
|
1660
|
+
"You need a line, area, or bar chart with axes, gridlines, legend, and a hover tooltip.",
|
|
1661
|
+
"One or more series share a set of category labels."
|
|
1662
|
+
],
|
|
1663
|
+
avoidWhen: [
|
|
1664
|
+
"A single value tells the story \u2014 use TStat.",
|
|
1665
|
+
"You only need an inline trend with no axes \u2014 use TSparkline.",
|
|
1666
|
+
"The data is a part-of-whole breakdown \u2014 use TDonutChart."
|
|
1667
|
+
],
|
|
1668
|
+
alternatives: [
|
|
1669
|
+
{
|
|
1670
|
+
component: "TSparkline",
|
|
1671
|
+
when: "The trend should be inline and axis-less."
|
|
1672
|
+
},
|
|
1673
|
+
{
|
|
1674
|
+
component: "TDonutChart",
|
|
1675
|
+
when: "The data is proportional (parts of a whole)."
|
|
1676
|
+
}
|
|
1677
|
+
]
|
|
1678
|
+
},
|
|
1679
|
+
setup: {
|
|
1680
|
+
required: [],
|
|
1681
|
+
notes: [
|
|
1682
|
+
"Pass `series` as `{ name, data, color? }[]` and `labels` as a parallel `string[]` (one label per data index).",
|
|
1683
|
+
"Set `type` to `line`, `area`, or `bar`; use `stacked` only with `bar`.",
|
|
1684
|
+
"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.",
|
|
1685
|
+
"Pass `valueFormat: (n) => string` to format axis and tooltip values (currency, compact, etc.).",
|
|
1686
|
+
"No charting library or provider is required \u2014 the SVG and geometry are built in."
|
|
1687
|
+
]
|
|
1688
|
+
},
|
|
1689
|
+
recipes: [
|
|
1690
|
+
"chart-surface",
|
|
1691
|
+
"metric-dashboard"
|
|
1692
|
+
]
|
|
1693
|
+
},
|
|
1694
|
+
{
|
|
1695
|
+
name: "TCheckbox",
|
|
1696
|
+
aliases: [],
|
|
1195
1697
|
package: "@treeui/vue",
|
|
1196
1698
|
kind: "primitive",
|
|
1197
1699
|
category: "Data Entry",
|
|
1198
1700
|
status: "available",
|
|
1199
1701
|
purpose: "Boolean toggle with indeterminate state; supports v-model via modelValue.",
|
|
1200
|
-
sourceFile: "packages/vue/src/components/
|
|
1702
|
+
sourceFile: "packages/vue/src/components/TCheckbox.vue",
|
|
1201
1703
|
storyFile: "apps/docs/src/stories/Checkbox.stories.ts",
|
|
1202
1704
|
storyTitle: "Components/Data Entry/Checkbox",
|
|
1203
1705
|
manifestFile: "docs/ai/COMPONENTS/checkbox.yaml",
|
|
@@ -1209,7 +1711,7 @@ var treeui_catalog_default = {
|
|
|
1209
1711
|
},
|
|
1210
1712
|
{
|
|
1211
1713
|
name: "size",
|
|
1212
|
-
type: "
|
|
1714
|
+
type: "TSize",
|
|
1213
1715
|
default: "md",
|
|
1214
1716
|
values: [
|
|
1215
1717
|
"sm",
|
|
@@ -1289,16 +1791,13 @@ var treeui_catalog_default = {
|
|
|
1289
1791
|
},
|
|
1290
1792
|
{
|
|
1291
1793
|
name: "TCombobox",
|
|
1292
|
-
|
|
1293
|
-
aliases: [
|
|
1294
|
-
"TreeCombobox"
|
|
1295
|
-
],
|
|
1794
|
+
aliases: [],
|
|
1296
1795
|
package: "@treeui/vue",
|
|
1297
1796
|
kind: "primitive",
|
|
1298
1797
|
category: "Data Entry",
|
|
1299
1798
|
status: "available",
|
|
1300
1799
|
purpose: "Searchable combobox / autocomplete input with local filtering, controlled selection, and shared open-state behavior.",
|
|
1301
|
-
sourceFile: "packages/vue/src/components/
|
|
1800
|
+
sourceFile: "packages/vue/src/components/TCombobox.vue",
|
|
1302
1801
|
storyFile: "apps/docs/src/stories/Combobox.stories.ts",
|
|
1303
1802
|
storyTitle: "Components/Data Entry/Combobox",
|
|
1304
1803
|
manifestFile: "docs/ai/COMPONENTS/combobox.yaml",
|
|
@@ -1310,7 +1809,7 @@ var treeui_catalog_default = {
|
|
|
1310
1809
|
},
|
|
1311
1810
|
{
|
|
1312
1811
|
name: "options",
|
|
1313
|
-
type: "
|
|
1812
|
+
type: "TComboboxOption[]",
|
|
1314
1813
|
default: "[]",
|
|
1315
1814
|
note: "Array of { label: string; value: string; description?: string; keywords?: string[]; disabled?: boolean }"
|
|
1316
1815
|
},
|
|
@@ -1326,7 +1825,7 @@ var treeui_catalog_default = {
|
|
|
1326
1825
|
},
|
|
1327
1826
|
{
|
|
1328
1827
|
name: "size",
|
|
1329
|
-
type: "
|
|
1828
|
+
type: "TSize",
|
|
1330
1829
|
default: "md",
|
|
1331
1830
|
values: [
|
|
1332
1831
|
"sm",
|
|
@@ -1443,16 +1942,13 @@ var treeui_catalog_default = {
|
|
|
1443
1942
|
},
|
|
1444
1943
|
{
|
|
1445
1944
|
name: "TConfirmDialog",
|
|
1446
|
-
|
|
1447
|
-
aliases: [
|
|
1448
|
-
"TreeConfirmDialog"
|
|
1449
|
-
],
|
|
1945
|
+
aliases: [],
|
|
1450
1946
|
package: "@treeui/vue",
|
|
1451
1947
|
kind: "overlay",
|
|
1452
1948
|
category: "Overlay",
|
|
1453
1949
|
status: "available",
|
|
1454
1950
|
purpose: "High-level confirmation dialog built on the shared modal contract, with default confirm and cancel actions.",
|
|
1455
|
-
sourceFile: "packages/vue/src/components/
|
|
1951
|
+
sourceFile: "packages/vue/src/components/TConfirmDialog.vue",
|
|
1456
1952
|
storyFile: "apps/docs/src/stories/ConfirmDialog.stories.ts",
|
|
1457
1953
|
storyTitle: "Components/Overlay/ConfirmDialog",
|
|
1458
1954
|
manifestFile: "docs/ai/COMPONENTS/confirm-dialog.yaml",
|
|
@@ -1474,7 +1970,7 @@ var treeui_catalog_default = {
|
|
|
1474
1970
|
},
|
|
1475
1971
|
{
|
|
1476
1972
|
name: "size",
|
|
1477
|
-
type: "
|
|
1973
|
+
type: "TSize",
|
|
1478
1974
|
default: "sm",
|
|
1479
1975
|
values: [
|
|
1480
1976
|
"sm",
|
|
@@ -1504,7 +2000,7 @@ var treeui_catalog_default = {
|
|
|
1504
2000
|
},
|
|
1505
2001
|
{
|
|
1506
2002
|
name: "confirmVariant",
|
|
1507
|
-
type: "
|
|
2003
|
+
type: "TVariant",
|
|
1508
2004
|
default: "danger"
|
|
1509
2005
|
},
|
|
1510
2006
|
{
|
|
@@ -1612,16 +2108,13 @@ var treeui_catalog_default = {
|
|
|
1612
2108
|
},
|
|
1613
2109
|
{
|
|
1614
2110
|
name: "TContainer",
|
|
1615
|
-
|
|
1616
|
-
aliases: [
|
|
1617
|
-
"TreeContainer"
|
|
1618
|
-
],
|
|
2111
|
+
aliases: [],
|
|
1619
2112
|
package: "@treeui/vue",
|
|
1620
2113
|
kind: "layout",
|
|
1621
2114
|
category: "Layout",
|
|
1622
2115
|
status: "available",
|
|
1623
2116
|
purpose: "Width-constrained layout wrapper for readable page content and app sections.",
|
|
1624
|
-
sourceFile: "packages/vue/src/components/
|
|
2117
|
+
sourceFile: "packages/vue/src/components/TContainer.vue",
|
|
1625
2118
|
storyFile: "apps/docs/src/stories/Container.stories.ts",
|
|
1626
2119
|
storyTitle: "Components/Layout/Container",
|
|
1627
2120
|
manifestFile: "docs/ai/COMPONENTS/container.yaml",
|
|
@@ -1633,7 +2126,7 @@ var treeui_catalog_default = {
|
|
|
1633
2126
|
},
|
|
1634
2127
|
{
|
|
1635
2128
|
name: "size",
|
|
1636
|
-
type: "
|
|
2129
|
+
type: "TContainerSize",
|
|
1637
2130
|
default: "lg",
|
|
1638
2131
|
values: [
|
|
1639
2132
|
"sm",
|
|
@@ -1704,10 +2197,7 @@ var treeui_catalog_default = {
|
|
|
1704
2197
|
},
|
|
1705
2198
|
{
|
|
1706
2199
|
name: "TContextMenu",
|
|
1707
|
-
|
|
1708
|
-
aliases: [
|
|
1709
|
-
"TreeContextMenu"
|
|
1710
|
-
],
|
|
2200
|
+
aliases: [],
|
|
1711
2201
|
package: "@treeui/vue",
|
|
1712
2202
|
category: "Overlay",
|
|
1713
2203
|
status: "stable",
|
|
@@ -1717,7 +2207,7 @@ var treeui_catalog_default = {
|
|
|
1717
2207
|
props: [
|
|
1718
2208
|
{
|
|
1719
2209
|
name: "items",
|
|
1720
|
-
type: "
|
|
2210
|
+
type: "TContextMenuItem[]",
|
|
1721
2211
|
default: "[]",
|
|
1722
2212
|
description: "Menu items to render."
|
|
1723
2213
|
},
|
|
@@ -1741,7 +2231,7 @@ var treeui_catalog_default = {
|
|
|
1741
2231
|
},
|
|
1742
2232
|
{
|
|
1743
2233
|
name: "size",
|
|
1744
|
-
type: "
|
|
2234
|
+
type: "TSize",
|
|
1745
2235
|
default: "md",
|
|
1746
2236
|
description: "Item sizing variant."
|
|
1747
2237
|
}
|
|
@@ -1814,16 +2304,13 @@ var treeui_catalog_default = {
|
|
|
1814
2304
|
},
|
|
1815
2305
|
{
|
|
1816
2306
|
name: "TDatePicker",
|
|
1817
|
-
|
|
1818
|
-
aliases: [
|
|
1819
|
-
"TreeDatePicker"
|
|
1820
|
-
],
|
|
2307
|
+
aliases: [],
|
|
1821
2308
|
package: "@treeui/vue",
|
|
1822
2309
|
kind: "form_overlay",
|
|
1823
2310
|
category: "Data Entry",
|
|
1824
2311
|
status: "available",
|
|
1825
2312
|
purpose: "Date input with calendar popover and keyboard navigation.",
|
|
1826
|
-
sourceFile: "packages/vue/src/components/
|
|
2313
|
+
sourceFile: "packages/vue/src/components/TDatePicker.vue",
|
|
1827
2314
|
storyFile: "apps/docs/src/stories/DatePicker.stories.ts",
|
|
1828
2315
|
storyTitle: "Components/Data Entry/DatePicker",
|
|
1829
2316
|
manifestFile: "docs/ai/COMPONENTS/date-picker.yaml",
|
|
@@ -1845,7 +2332,7 @@ var treeui_catalog_default = {
|
|
|
1845
2332
|
},
|
|
1846
2333
|
{
|
|
1847
2334
|
name: "size",
|
|
1848
|
-
type: "
|
|
2335
|
+
type: "TSize",
|
|
1849
2336
|
default: "md",
|
|
1850
2337
|
values: [
|
|
1851
2338
|
"sm",
|
|
@@ -1966,16 +2453,13 @@ var treeui_catalog_default = {
|
|
|
1966
2453
|
},
|
|
1967
2454
|
{
|
|
1968
2455
|
name: "TDateTimePicker",
|
|
1969
|
-
|
|
1970
|
-
aliases: [
|
|
1971
|
-
"TreeDateTimePicker"
|
|
1972
|
-
],
|
|
2456
|
+
aliases: [],
|
|
1973
2457
|
package: "@treeui/vue",
|
|
1974
2458
|
kind: "form",
|
|
1975
2459
|
category: "Data Entry",
|
|
1976
2460
|
status: "available",
|
|
1977
2461
|
purpose: "Date and time picker with a calendar grid, time selection, and overlay trigger.",
|
|
1978
|
-
sourceFile: "packages/vue/src/components/
|
|
2462
|
+
sourceFile: "packages/vue/src/components/TDateTimePicker.vue",
|
|
1979
2463
|
storyFile: "apps/docs/src/stories/DateTimePicker.stories.ts",
|
|
1980
2464
|
storyTitle: "Components/Data Entry/DateTimePicker",
|
|
1981
2465
|
manifestFile: "docs/ai/COMPONENTS/date-time-picker.yaml",
|
|
@@ -1998,7 +2482,7 @@ var treeui_catalog_default = {
|
|
|
1998
2482
|
},
|
|
1999
2483
|
{
|
|
2000
2484
|
name: "size",
|
|
2001
|
-
type: "
|
|
2485
|
+
type: "TSize",
|
|
2002
2486
|
default: "md",
|
|
2003
2487
|
values: [
|
|
2004
2488
|
"sm",
|
|
@@ -2127,14 +2611,11 @@ var treeui_catalog_default = {
|
|
|
2127
2611
|
},
|
|
2128
2612
|
{
|
|
2129
2613
|
name: "TDivider",
|
|
2130
|
-
|
|
2131
|
-
aliases: [
|
|
2132
|
-
"TreeDivider"
|
|
2133
|
-
],
|
|
2614
|
+
aliases: [],
|
|
2134
2615
|
package: "@treeui/vue",
|
|
2135
2616
|
category: "Layout",
|
|
2136
2617
|
description: "Horizontal or vertical visual separator.",
|
|
2137
|
-
sourceFile: "packages/vue/src/components/
|
|
2618
|
+
sourceFile: "packages/vue/src/components/TDivider.vue",
|
|
2138
2619
|
storyFile: "apps/docs/src/stories/Divider.stories.ts",
|
|
2139
2620
|
storyTitle: "Components/Layout/Divider",
|
|
2140
2621
|
manifestFile: "docs/ai/COMPONENTS/divider.yaml",
|
|
@@ -2149,50 +2630,183 @@ var treeui_catalog_default = {
|
|
|
2149
2630
|
]
|
|
2150
2631
|
},
|
|
2151
2632
|
{
|
|
2152
|
-
name: "decorative",
|
|
2633
|
+
name: "decorative",
|
|
2634
|
+
type: "boolean",
|
|
2635
|
+
default: "true",
|
|
2636
|
+
description: "When true, renders role='none' (purely visual). When false, renders as role='separator'."
|
|
2637
|
+
},
|
|
2638
|
+
{
|
|
2639
|
+
name: "label",
|
|
2640
|
+
type: "string",
|
|
2641
|
+
required: false,
|
|
2642
|
+
description: "Accessible label for non-decorative dividers."
|
|
2643
|
+
}
|
|
2644
|
+
],
|
|
2645
|
+
events: [],
|
|
2646
|
+
slots: [],
|
|
2647
|
+
a11y: [
|
|
2648
|
+
"role: none (decorative) or separator (semantic)",
|
|
2649
|
+
"aria-orientation: Set when non-decorative.",
|
|
2650
|
+
"aria-label: Set from `label` prop when non-decorative."
|
|
2651
|
+
],
|
|
2652
|
+
behavior: [],
|
|
2653
|
+
selection: {
|
|
2654
|
+
keywords: [],
|
|
2655
|
+
useWhen: [],
|
|
2656
|
+
avoidWhen: [],
|
|
2657
|
+
alternatives: []
|
|
2658
|
+
},
|
|
2659
|
+
setup: {
|
|
2660
|
+
required: [],
|
|
2661
|
+
notes: []
|
|
2662
|
+
},
|
|
2663
|
+
recipes: []
|
|
2664
|
+
},
|
|
2665
|
+
{
|
|
2666
|
+
name: "TDonutChart",
|
|
2667
|
+
aliases: [],
|
|
2668
|
+
package: "@treeui/vue",
|
|
2669
|
+
kind: "data-display",
|
|
2670
|
+
category: "Data Display",
|
|
2671
|
+
status: "available",
|
|
2672
|
+
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.",
|
|
2673
|
+
sourceFile: "packages/vue/src/components/TDonutChart.vue",
|
|
2674
|
+
storyFile: "apps/docs/src/stories/DonutChart.stories.ts",
|
|
2675
|
+
storyTitle: "Components/Data Display/Donut Chart",
|
|
2676
|
+
manifestFile: "docs/ai/COMPONENTS/donut-chart.yaml",
|
|
2677
|
+
props: [
|
|
2678
|
+
{
|
|
2679
|
+
name: "segments",
|
|
2680
|
+
type: "TDonutSegment[]",
|
|
2681
|
+
default: "[]",
|
|
2682
|
+
note: "Each item is { label: string; value: number; color?: string }. Non-positive values are omitted."
|
|
2683
|
+
},
|
|
2684
|
+
{
|
|
2685
|
+
name: "size",
|
|
2686
|
+
type: "number",
|
|
2687
|
+
default: "200",
|
|
2688
|
+
note: "Square canvas in px."
|
|
2689
|
+
},
|
|
2690
|
+
{
|
|
2691
|
+
name: "thickness",
|
|
2692
|
+
type: "number",
|
|
2693
|
+
default: "26",
|
|
2694
|
+
note: "Ring thickness; 0 renders a full pie."
|
|
2695
|
+
},
|
|
2696
|
+
{
|
|
2697
|
+
name: "gap",
|
|
2698
|
+
type: "number",
|
|
2699
|
+
default: "2",
|
|
2700
|
+
note: "Gap between slices, in degrees."
|
|
2701
|
+
},
|
|
2702
|
+
{
|
|
2703
|
+
name: "rounded",
|
|
2704
|
+
type: "boolean",
|
|
2705
|
+
default: "false",
|
|
2706
|
+
note: "Round the ends of donut segments (widens the gap to make room). Best with a thinner ring."
|
|
2707
|
+
},
|
|
2708
|
+
{
|
|
2709
|
+
name: "showLegend",
|
|
2710
|
+
type: "boolean",
|
|
2711
|
+
default: "true"
|
|
2712
|
+
},
|
|
2713
|
+
{
|
|
2714
|
+
name: "showPercent",
|
|
2715
|
+
type: "boolean",
|
|
2716
|
+
default: "true"
|
|
2717
|
+
},
|
|
2718
|
+
{
|
|
2719
|
+
name: "centerLabel",
|
|
2720
|
+
type: "string",
|
|
2721
|
+
default: "Total",
|
|
2722
|
+
note: "Donut only; ignored for pie."
|
|
2723
|
+
},
|
|
2724
|
+
{
|
|
2725
|
+
name: "centerValue",
|
|
2726
|
+
type: "string | number",
|
|
2727
|
+
default: "auto (sum of values)"
|
|
2728
|
+
},
|
|
2729
|
+
{
|
|
2730
|
+
name: "valueFormat",
|
|
2731
|
+
type: "(value: number) => string",
|
|
2732
|
+
default: "locale integers for |value| >= 1000"
|
|
2733
|
+
},
|
|
2734
|
+
{
|
|
2735
|
+
name: "loading",
|
|
2153
2736
|
type: "boolean",
|
|
2154
|
-
default: "
|
|
2155
|
-
description: "When true, renders role='none' (purely visual). When false, renders as role='separator'."
|
|
2737
|
+
default: "false"
|
|
2156
2738
|
},
|
|
2157
2739
|
{
|
|
2158
|
-
name: "
|
|
2740
|
+
name: "ariaLabel",
|
|
2159
2741
|
type: "string",
|
|
2160
|
-
|
|
2161
|
-
description: "Accessible label for non-decorative dividers."
|
|
2742
|
+
default: "auto-generated summary"
|
|
2162
2743
|
}
|
|
2163
2744
|
],
|
|
2164
2745
|
events: [],
|
|
2165
|
-
slots: [
|
|
2746
|
+
slots: [
|
|
2747
|
+
{
|
|
2748
|
+
name: "center"
|
|
2749
|
+
},
|
|
2750
|
+
{
|
|
2751
|
+
name: "empty"
|
|
2752
|
+
}
|
|
2753
|
+
],
|
|
2166
2754
|
a11y: [
|
|
2167
|
-
"role
|
|
2168
|
-
"
|
|
2169
|
-
|
|
2755
|
+
"Renders role=img with an aria-label summarizing the chart.",
|
|
2756
|
+
"Legend + percentages give a non-visual reading of each slice."
|
|
2757
|
+
],
|
|
2758
|
+
behavior: [
|
|
2759
|
+
"colors_auto_assign_from_chart_palette: --tree-color-chart-1..8, cycling; per-segment color overrides",
|
|
2760
|
+
"hovering_a_slice_dims_the_rest_and_updates_center: true",
|
|
2761
|
+
"center_shows_total_or_the_hovered_segment: true"
|
|
2170
2762
|
],
|
|
2171
|
-
behavior: [],
|
|
2172
2763
|
selection: {
|
|
2173
|
-
keywords: [
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2764
|
+
keywords: [
|
|
2765
|
+
"donut",
|
|
2766
|
+
"doughnut",
|
|
2767
|
+
"pie",
|
|
2768
|
+
"proportion",
|
|
2769
|
+
"share",
|
|
2770
|
+
"breakdown",
|
|
2771
|
+
"part of whole",
|
|
2772
|
+
"percentage"
|
|
2773
|
+
],
|
|
2774
|
+
useWhen: [
|
|
2775
|
+
"You are showing how a total splits into a handful of categories.",
|
|
2776
|
+
"A donut center readout (total or hovered slice) is useful."
|
|
2777
|
+
],
|
|
2778
|
+
avoidWhen: [
|
|
2779
|
+
"There are many categories or precise comparison matters \u2014 use TChart bars.",
|
|
2780
|
+
"The data is a trend over time \u2014 use TChart or TSparkline."
|
|
2781
|
+
],
|
|
2782
|
+
alternatives: [
|
|
2783
|
+
{
|
|
2784
|
+
component: "TChart",
|
|
2785
|
+
when: "Precise magnitude comparison across categories is needed (bars)."
|
|
2786
|
+
}
|
|
2787
|
+
]
|
|
2177
2788
|
},
|
|
2178
2789
|
setup: {
|
|
2179
2790
|
required: [],
|
|
2180
|
-
notes: [
|
|
2791
|
+
notes: [
|
|
2792
|
+
"Pass `segments` as `{ label, value, color? }[]`; non-positive values are dropped.",
|
|
2793
|
+
"Set `thickness: 0` for a full pie; keep the default for a donut with a center readout.",
|
|
2794
|
+
"Use the `center` slot (donut only) for a custom center; otherwise it shows the total or the hovered slice."
|
|
2795
|
+
]
|
|
2181
2796
|
},
|
|
2182
|
-
recipes: [
|
|
2797
|
+
recipes: [
|
|
2798
|
+
"metric-dashboard"
|
|
2799
|
+
]
|
|
2183
2800
|
},
|
|
2184
2801
|
{
|
|
2185
2802
|
name: "TDrawer",
|
|
2186
|
-
|
|
2187
|
-
aliases: [
|
|
2188
|
-
"TreeDrawer"
|
|
2189
|
-
],
|
|
2803
|
+
aliases: [],
|
|
2190
2804
|
package: "@treeui/vue",
|
|
2191
2805
|
kind: "overlay",
|
|
2192
2806
|
category: "Overlay",
|
|
2193
2807
|
status: "available",
|
|
2194
2808
|
purpose: "Side-anchored panel for secondary content, navigation, or forms.",
|
|
2195
|
-
sourceFile: "packages/vue/src/components/
|
|
2809
|
+
sourceFile: "packages/vue/src/components/TDrawer.vue",
|
|
2196
2810
|
storyFile: "apps/docs/src/stories/Drawer.stories.ts",
|
|
2197
2811
|
storyTitle: "Components/Overlay/Drawer",
|
|
2198
2812
|
manifestFile: "docs/ai/COMPONENTS/drawer.yaml",
|
|
@@ -2214,7 +2828,7 @@ var treeui_catalog_default = {
|
|
|
2214
2828
|
},
|
|
2215
2829
|
{
|
|
2216
2830
|
name: "size",
|
|
2217
|
-
type: "
|
|
2831
|
+
type: "TSize",
|
|
2218
2832
|
default: "md",
|
|
2219
2833
|
values: [
|
|
2220
2834
|
"sm",
|
|
@@ -2224,7 +2838,7 @@ var treeui_catalog_default = {
|
|
|
2224
2838
|
},
|
|
2225
2839
|
{
|
|
2226
2840
|
name: "side",
|
|
2227
|
-
type: "
|
|
2841
|
+
type: "TDrawerSide",
|
|
2228
2842
|
default: "right",
|
|
2229
2843
|
values: [
|
|
2230
2844
|
"top",
|
|
@@ -2339,23 +2953,20 @@ var treeui_catalog_default = {
|
|
|
2339
2953
|
},
|
|
2340
2954
|
{
|
|
2341
2955
|
name: "TDropdown",
|
|
2342
|
-
|
|
2343
|
-
aliases: [
|
|
2344
|
-
"TreeDropdown"
|
|
2345
|
-
],
|
|
2956
|
+
aliases: [],
|
|
2346
2957
|
package: "@treeui/vue",
|
|
2347
2958
|
kind: "overlay",
|
|
2348
2959
|
category: "Overlay",
|
|
2349
2960
|
status: "available",
|
|
2350
2961
|
purpose: "Trigger + floating menu with keyboard navigation for action lists.",
|
|
2351
|
-
sourceFile: "packages/vue/src/components/
|
|
2962
|
+
sourceFile: "packages/vue/src/components/TDropdown.vue",
|
|
2352
2963
|
storyFile: "apps/docs/src/stories/Dropdown.stories.ts",
|
|
2353
2964
|
storyTitle: "Components/Overlay/Dropdown",
|
|
2354
2965
|
manifestFile: "docs/ai/COMPONENTS/dropdown.yaml",
|
|
2355
2966
|
props: [
|
|
2356
2967
|
{
|
|
2357
2968
|
name: "items",
|
|
2358
|
-
type: "
|
|
2969
|
+
type: "TDropdownItem[]",
|
|
2359
2970
|
default: "[]",
|
|
2360
2971
|
note: "Array of { label: string; value: string; disabled?: boolean }"
|
|
2361
2972
|
},
|
|
@@ -2376,7 +2987,7 @@ var treeui_catalog_default = {
|
|
|
2376
2987
|
},
|
|
2377
2988
|
{
|
|
2378
2989
|
name: "size",
|
|
2379
|
-
type: "
|
|
2990
|
+
type: "TSize",
|
|
2380
2991
|
default: "md",
|
|
2381
2992
|
values: [
|
|
2382
2993
|
"sm",
|
|
@@ -2388,6 +2999,16 @@ var treeui_catalog_default = {
|
|
|
2388
2999
|
name: "label",
|
|
2389
3000
|
type: "string",
|
|
2390
3001
|
default: ""
|
|
3002
|
+
},
|
|
3003
|
+
{
|
|
3004
|
+
name: "align",
|
|
3005
|
+
type: "TDropdownAlign",
|
|
3006
|
+
default: "start",
|
|
3007
|
+
values: [
|
|
3008
|
+
"start",
|
|
3009
|
+
"end"
|
|
3010
|
+
],
|
|
3011
|
+
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)."
|
|
2391
3012
|
}
|
|
2392
3013
|
],
|
|
2393
3014
|
events: [
|
|
@@ -2423,7 +3044,8 @@ var treeui_catalog_default = {
|
|
|
2423
3044
|
behavior: [
|
|
2424
3045
|
"outside_click_closes_menu: true",
|
|
2425
3046
|
"focus_restores_on_close: true",
|
|
2426
|
-
"chevron_rotates_when_open: true"
|
|
3047
|
+
"chevron_rotates_when_open: true",
|
|
3048
|
+
"menu_grows_to_fit_items_without_wrapping: true"
|
|
2427
3049
|
],
|
|
2428
3050
|
selection: {
|
|
2429
3051
|
keywords: [
|
|
@@ -2456,16 +3078,13 @@ var treeui_catalog_default = {
|
|
|
2456
3078
|
},
|
|
2457
3079
|
{
|
|
2458
3080
|
name: "TEmptyState",
|
|
2459
|
-
|
|
2460
|
-
aliases: [
|
|
2461
|
-
"TreeEmptyState"
|
|
2462
|
-
],
|
|
3081
|
+
aliases: [],
|
|
2463
3082
|
package: "@treeui/vue",
|
|
2464
3083
|
kind: "feedback",
|
|
2465
3084
|
category: "Feedback",
|
|
2466
3085
|
status: "available",
|
|
2467
3086
|
purpose: "Structured empty, no-results, and first-run placeholder block with optional icon, body content, and actions.",
|
|
2468
|
-
sourceFile: "packages/vue/src/components/
|
|
3087
|
+
sourceFile: "packages/vue/src/components/TEmptyState.vue",
|
|
2469
3088
|
storyFile: "apps/docs/src/stories/EmptyState.stories.ts",
|
|
2470
3089
|
storyTitle: "Components/Feedback/EmptyState",
|
|
2471
3090
|
manifestFile: "docs/ai/COMPONENTS/empty-state.yaml",
|
|
@@ -2477,7 +3096,7 @@ var treeui_catalog_default = {
|
|
|
2477
3096
|
},
|
|
2478
3097
|
{
|
|
2479
3098
|
name: "size",
|
|
2480
|
-
type: "
|
|
3099
|
+
type: "TSize",
|
|
2481
3100
|
default: "md",
|
|
2482
3101
|
values: [
|
|
2483
3102
|
"sm",
|
|
@@ -2551,16 +3170,13 @@ var treeui_catalog_default = {
|
|
|
2551
3170
|
},
|
|
2552
3171
|
{
|
|
2553
3172
|
name: "TFileUpload",
|
|
2554
|
-
|
|
2555
|
-
aliases: [
|
|
2556
|
-
"TreeFileUpload"
|
|
2557
|
-
],
|
|
3173
|
+
aliases: [],
|
|
2558
3174
|
package: "@treeui/vue",
|
|
2559
3175
|
kind: "form",
|
|
2560
3176
|
category: "Form",
|
|
2561
3177
|
status: "available",
|
|
2562
3178
|
purpose: "Composable dropzone and file picker with browse, drag-and-drop, and Ctrl+V paste support.",
|
|
2563
|
-
sourceFile: "packages/vue/src/components/
|
|
3179
|
+
sourceFile: "packages/vue/src/components/TFileUpload.vue",
|
|
2564
3180
|
storyFile: "apps/docs/src/stories/FileUpload.stories.ts",
|
|
2565
3181
|
storyTitle: "Components/Form/FileUpload",
|
|
2566
3182
|
manifestFile: "docs/ai/COMPONENTS/file-upload.yaml",
|
|
@@ -2572,7 +3188,7 @@ var treeui_catalog_default = {
|
|
|
2572
3188
|
},
|
|
2573
3189
|
{
|
|
2574
3190
|
name: "size",
|
|
2575
|
-
type: "
|
|
3191
|
+
type: "TSize",
|
|
2576
3192
|
default: "md",
|
|
2577
3193
|
values: [
|
|
2578
3194
|
"sm",
|
|
@@ -2705,15 +3321,12 @@ var treeui_catalog_default = {
|
|
|
2705
3321
|
},
|
|
2706
3322
|
{
|
|
2707
3323
|
name: "TFormField",
|
|
2708
|
-
|
|
2709
|
-
aliases: [
|
|
2710
|
-
"TreeFormField"
|
|
2711
|
-
],
|
|
3324
|
+
aliases: [],
|
|
2712
3325
|
package: "@treeui/vue",
|
|
2713
3326
|
category: "Data Entry",
|
|
2714
3327
|
status: "milestone-1",
|
|
2715
3328
|
description: "Label + input wrapper with error and hint slots. Provides consistent layout, labelling, and validation messaging for any form control.\n",
|
|
2716
|
-
sourceFile: "packages/vue/src/components/
|
|
3329
|
+
sourceFile: "packages/vue/src/components/TFormField.vue",
|
|
2717
3330
|
storyFile: "apps/docs/src/stories/FormField.stories.ts",
|
|
2718
3331
|
storyTitle: "Components/Data Entry/FormField",
|
|
2719
3332
|
manifestFile: "docs/ai/COMPONENTS/form-field.yaml",
|
|
@@ -2756,7 +3369,7 @@ var treeui_catalog_default = {
|
|
|
2756
3369
|
},
|
|
2757
3370
|
{
|
|
2758
3371
|
name: "size",
|
|
2759
|
-
type: "
|
|
3372
|
+
type: "TSize",
|
|
2760
3373
|
default: "md",
|
|
2761
3374
|
values: [
|
|
2762
3375
|
"sm",
|
|
@@ -2837,16 +3450,13 @@ var treeui_catalog_default = {
|
|
|
2837
3450
|
},
|
|
2838
3451
|
{
|
|
2839
3452
|
name: "TGrid",
|
|
2840
|
-
|
|
2841
|
-
aliases: [
|
|
2842
|
-
"TreeGrid"
|
|
2843
|
-
],
|
|
3453
|
+
aliases: [],
|
|
2844
3454
|
package: "@treeui/vue",
|
|
2845
3455
|
kind: "layout",
|
|
2846
3456
|
category: "Layout",
|
|
2847
3457
|
status: "available",
|
|
2848
3458
|
purpose: "Responsive grid wrapper for cards, forms, stats, and other multi-column layouts.",
|
|
2849
|
-
sourceFile: "packages/vue/src/components/
|
|
3459
|
+
sourceFile: "packages/vue/src/components/TGrid.vue",
|
|
2850
3460
|
storyFile: "apps/docs/src/stories/Grid.stories.ts",
|
|
2851
3461
|
storyTitle: "Components/Layout/Grid",
|
|
2852
3462
|
manifestFile: "docs/ai/COMPONENTS/grid.yaml",
|
|
@@ -2935,21 +3545,109 @@ var treeui_catalog_default = {
|
|
|
2935
3545
|
},
|
|
2936
3546
|
recipes: [
|
|
2937
3547
|
"date-range-form",
|
|
2938
|
-
"stat-grid"
|
|
3548
|
+
"stat-grid",
|
|
3549
|
+
"metric-dashboard"
|
|
2939
3550
|
]
|
|
2940
3551
|
},
|
|
2941
3552
|
{
|
|
2942
|
-
name: "
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
3553
|
+
name: "TIcon",
|
|
3554
|
+
aliases: [],
|
|
3555
|
+
package: "@treeui/vue",
|
|
3556
|
+
kind: "display",
|
|
3557
|
+
category: "Data Display",
|
|
3558
|
+
status: "available",
|
|
3559
|
+
purpose: "Render a registered TreeUI icon by name with consistent sizing and accessibility defaults.",
|
|
3560
|
+
sourceFile: "packages/vue/src/components/TIcon.vue",
|
|
3561
|
+
storyFile: "apps/docs/src/stories/Icon.stories.ts",
|
|
3562
|
+
storyTitle: "Components/Data Display/Icon",
|
|
3563
|
+
manifestFile: "docs/ai/COMPONENTS/icon.yaml",
|
|
3564
|
+
props: [
|
|
3565
|
+
{
|
|
3566
|
+
name: "name",
|
|
3567
|
+
type: "TIconName",
|
|
3568
|
+
required: true,
|
|
3569
|
+
values: [
|
|
3570
|
+
"alert-circle",
|
|
3571
|
+
"calendar",
|
|
3572
|
+
"check",
|
|
3573
|
+
"chevron-left",
|
|
3574
|
+
"chevron-down",
|
|
3575
|
+
"chevron-right",
|
|
3576
|
+
"info",
|
|
3577
|
+
"loader-circle",
|
|
3578
|
+
"search",
|
|
3579
|
+
"x"
|
|
3580
|
+
],
|
|
3581
|
+
description: "Icon identifier from the @treeui/icons registry."
|
|
3582
|
+
},
|
|
3583
|
+
{
|
|
3584
|
+
name: "size",
|
|
3585
|
+
type: "number | string",
|
|
3586
|
+
default: "20",
|
|
3587
|
+
description: "Pixel size for both width and height of the rendered svg."
|
|
3588
|
+
},
|
|
3589
|
+
{
|
|
3590
|
+
name: "strokeWidth",
|
|
3591
|
+
type: "number | string",
|
|
3592
|
+
default: "2"
|
|
3593
|
+
},
|
|
3594
|
+
{
|
|
3595
|
+
name: "absoluteStrokeWidth",
|
|
3596
|
+
type: "boolean",
|
|
3597
|
+
default: "true",
|
|
3598
|
+
description: "When true, stroke width stays visually constant across sizes."
|
|
3599
|
+
},
|
|
3600
|
+
{
|
|
3601
|
+
name: "label",
|
|
3602
|
+
type: "string",
|
|
3603
|
+
default: "undefined",
|
|
3604
|
+
description: 'Accessible label. When set, the icon becomes role="img" with aria-label; otherwise it is aria-hidden.'
|
|
3605
|
+
}
|
|
3606
|
+
],
|
|
3607
|
+
events: [],
|
|
3608
|
+
slots: [],
|
|
3609
|
+
a11y: [
|
|
3610
|
+
"decorative_by_default: true",
|
|
3611
|
+
"becomes_image_when_labeled: true",
|
|
3612
|
+
"rule: Provide `label` only when the icon conveys meaning that is not already in adjacent text."
|
|
2946
3613
|
],
|
|
3614
|
+
behavior: [],
|
|
3615
|
+
selection: {
|
|
3616
|
+
keywords: [
|
|
3617
|
+
"icon",
|
|
3618
|
+
"svg",
|
|
3619
|
+
"glyph",
|
|
3620
|
+
"pictogram"
|
|
3621
|
+
],
|
|
3622
|
+
useWhen: [
|
|
3623
|
+
"You need to render a registered TreeUI icon by name.",
|
|
3624
|
+
"You want consistent sizing and a11y defaults without importing the icon component directly."
|
|
3625
|
+
],
|
|
3626
|
+
avoidWhen: [
|
|
3627
|
+
"The icon is not in the @treeui/icons registry \u2014 import or register it instead."
|
|
3628
|
+
],
|
|
3629
|
+
alternatives: [
|
|
3630
|
+
{
|
|
3631
|
+
component: "named import from @treeui/icons",
|
|
3632
|
+
when: "You need tree-shaken, statically-imported icon components."
|
|
3633
|
+
}
|
|
3634
|
+
]
|
|
3635
|
+
},
|
|
3636
|
+
setup: {
|
|
3637
|
+
required: [],
|
|
3638
|
+
notes: []
|
|
3639
|
+
},
|
|
3640
|
+
recipes: []
|
|
3641
|
+
},
|
|
3642
|
+
{
|
|
3643
|
+
name: "TInput",
|
|
3644
|
+
aliases: [],
|
|
2947
3645
|
package: "@treeui/vue",
|
|
2948
3646
|
kind: "primitive",
|
|
2949
3647
|
category: "Data Entry",
|
|
2950
3648
|
status: "available",
|
|
2951
3649
|
purpose: "Text input with size, loading, invalid, and prefix or suffix slots.",
|
|
2952
|
-
sourceFile: "packages/vue/src/components/
|
|
3650
|
+
sourceFile: "packages/vue/src/components/TInput.vue",
|
|
2953
3651
|
storyFile: "apps/docs/src/stories/Input.stories.ts",
|
|
2954
3652
|
storyTitle: "Components/Data Entry/Input",
|
|
2955
3653
|
manifestFile: "docs/ai/COMPONENTS/input.yaml",
|
|
@@ -2961,7 +3659,7 @@ var treeui_catalog_default = {
|
|
|
2961
3659
|
},
|
|
2962
3660
|
{
|
|
2963
3661
|
name: "size",
|
|
2964
|
-
type: "
|
|
3662
|
+
type: "TSize",
|
|
2965
3663
|
default: "md",
|
|
2966
3664
|
values: [
|
|
2967
3665
|
"sm",
|
|
@@ -3055,16 +3753,13 @@ var treeui_catalog_default = {
|
|
|
3055
3753
|
},
|
|
3056
3754
|
{
|
|
3057
3755
|
name: "TLink",
|
|
3058
|
-
|
|
3059
|
-
aliases: [
|
|
3060
|
-
"TreeLink"
|
|
3061
|
-
],
|
|
3756
|
+
aliases: [],
|
|
3062
3757
|
package: "@treeui/vue",
|
|
3063
3758
|
kind: "navigation",
|
|
3064
3759
|
category: "Navigation",
|
|
3065
3760
|
status: "available",
|
|
3066
3761
|
purpose: "Inline link with consistent styling, optional RouterLink rendering, and external link support.",
|
|
3067
|
-
sourceFile: "packages/vue/src/components/
|
|
3762
|
+
sourceFile: "packages/vue/src/components/TLink.vue",
|
|
3068
3763
|
storyFile: "apps/docs/src/stories/Link.stories.ts",
|
|
3069
3764
|
storyTitle: "Components/Navigation/Link",
|
|
3070
3765
|
manifestFile: "docs/ai/COMPONENTS/link.yaml",
|
|
@@ -3094,7 +3789,7 @@ var treeui_catalog_default = {
|
|
|
3094
3789
|
},
|
|
3095
3790
|
{
|
|
3096
3791
|
name: "variant",
|
|
3097
|
-
type: "
|
|
3792
|
+
type: "TLinkVariant",
|
|
3098
3793
|
default: "default",
|
|
3099
3794
|
values: [
|
|
3100
3795
|
"default",
|
|
@@ -3130,10 +3825,7 @@ var treeui_catalog_default = {
|
|
|
3130
3825
|
},
|
|
3131
3826
|
{
|
|
3132
3827
|
name: "TMarkdownEditor",
|
|
3133
|
-
|
|
3134
|
-
aliases: [
|
|
3135
|
-
"TreeMarkdownEditor"
|
|
3136
|
-
],
|
|
3828
|
+
aliases: [],
|
|
3137
3829
|
package: "@treeui/vue",
|
|
3138
3830
|
category: "Form",
|
|
3139
3831
|
status: "stable",
|
|
@@ -3150,7 +3842,7 @@ var treeui_catalog_default = {
|
|
|
3150
3842
|
},
|
|
3151
3843
|
{
|
|
3152
3844
|
name: "size",
|
|
3153
|
-
type: "
|
|
3845
|
+
type: "TSize",
|
|
3154
3846
|
default: "md",
|
|
3155
3847
|
values: [
|
|
3156
3848
|
"sm",
|
|
@@ -3235,16 +3927,13 @@ var treeui_catalog_default = {
|
|
|
3235
3927
|
},
|
|
3236
3928
|
{
|
|
3237
3929
|
name: "TModal",
|
|
3238
|
-
|
|
3239
|
-
aliases: [
|
|
3240
|
-
"TreeModal"
|
|
3241
|
-
],
|
|
3930
|
+
aliases: [],
|
|
3242
3931
|
package: "@treeui/vue",
|
|
3243
3932
|
kind: "overlay",
|
|
3244
3933
|
category: "Overlay",
|
|
3245
3934
|
status: "available",
|
|
3246
3935
|
purpose: "Accessible modal dialog for focused tasks and confirmations.",
|
|
3247
|
-
sourceFile: "packages/vue/src/components/
|
|
3936
|
+
sourceFile: "packages/vue/src/components/TModal.vue",
|
|
3248
3937
|
storyFile: "apps/docs/src/stories/Modal.stories.ts",
|
|
3249
3938
|
storyTitle: "Components/Overlay/Modal",
|
|
3250
3939
|
manifestFile: "docs/ai/COMPONENTS/modal.yaml",
|
|
@@ -3266,7 +3955,7 @@ var treeui_catalog_default = {
|
|
|
3266
3955
|
},
|
|
3267
3956
|
{
|
|
3268
3957
|
name: "size",
|
|
3269
|
-
type: "
|
|
3958
|
+
type: "TSize",
|
|
3270
3959
|
default: "md",
|
|
3271
3960
|
values: [
|
|
3272
3961
|
"sm",
|
|
@@ -3386,16 +4075,13 @@ var treeui_catalog_default = {
|
|
|
3386
4075
|
},
|
|
3387
4076
|
{
|
|
3388
4077
|
name: "TMultiSelect",
|
|
3389
|
-
|
|
3390
|
-
aliases: [
|
|
3391
|
-
"TreeMultiSelect"
|
|
3392
|
-
],
|
|
4078
|
+
aliases: [],
|
|
3393
4079
|
package: "@treeui/vue",
|
|
3394
4080
|
kind: "form",
|
|
3395
4081
|
category: "Data Entry",
|
|
3396
4082
|
status: "available",
|
|
3397
4083
|
purpose: "Searchable multi-select control that renders selected values as tags.",
|
|
3398
|
-
sourceFile: "packages/vue/src/components/
|
|
4084
|
+
sourceFile: "packages/vue/src/components/TMultiSelect.vue",
|
|
3399
4085
|
storyFile: "apps/docs/src/stories/MultiSelect.stories.ts",
|
|
3400
4086
|
storyTitle: "Components/Data Entry/MultiSelect",
|
|
3401
4087
|
manifestFile: "docs/ai/COMPONENTS/multi-select.yaml",
|
|
@@ -3407,7 +4093,7 @@ var treeui_catalog_default = {
|
|
|
3407
4093
|
},
|
|
3408
4094
|
{
|
|
3409
4095
|
name: "options",
|
|
3410
|
-
type: "
|
|
4096
|
+
type: "TMultiSelectOption[]",
|
|
3411
4097
|
default: "[]",
|
|
3412
4098
|
note: "Array of `{ label, value, description?, keywords?, disabled? }`."
|
|
3413
4099
|
},
|
|
@@ -3423,7 +4109,7 @@ var treeui_catalog_default = {
|
|
|
3423
4109
|
},
|
|
3424
4110
|
{
|
|
3425
4111
|
name: "size",
|
|
3426
|
-
type: "
|
|
4112
|
+
type: "TSize",
|
|
3427
4113
|
default: "md",
|
|
3428
4114
|
values: [
|
|
3429
4115
|
"sm",
|
|
@@ -3548,18 +4234,15 @@ var treeui_catalog_default = {
|
|
|
3548
4234
|
},
|
|
3549
4235
|
{
|
|
3550
4236
|
name: "TNavbar",
|
|
3551
|
-
legacyAlias: "TreeAppBar",
|
|
3552
4237
|
aliases: [
|
|
3553
|
-
"TAppBar"
|
|
3554
|
-
"TreeAppBar",
|
|
3555
|
-
"TreeNavbar"
|
|
4238
|
+
"TAppBar"
|
|
3556
4239
|
],
|
|
3557
4240
|
package: "@treeui/vue",
|
|
3558
4241
|
kind: "layout",
|
|
3559
4242
|
category: "Layout",
|
|
3560
4243
|
status: "available",
|
|
3561
4244
|
purpose: "Top application bar with start, center, and end content areas.",
|
|
3562
|
-
sourceFile: "packages/vue/src/components/
|
|
4245
|
+
sourceFile: "packages/vue/src/components/TNavbar.vue",
|
|
3563
4246
|
storyFile: "apps/docs/src/stories/Navbar.stories.ts",
|
|
3564
4247
|
storyTitle: "Components/Layout/Navbar",
|
|
3565
4248
|
manifestFile: "docs/ai/COMPONENTS/navbar.yaml",
|
|
@@ -3571,7 +4254,7 @@ var treeui_catalog_default = {
|
|
|
3571
4254
|
},
|
|
3572
4255
|
{
|
|
3573
4256
|
name: "size",
|
|
3574
|
-
type: "
|
|
4257
|
+
type: "TSize",
|
|
3575
4258
|
default: "md",
|
|
3576
4259
|
values: [
|
|
3577
4260
|
"sm",
|
|
@@ -3649,16 +4332,13 @@ var treeui_catalog_default = {
|
|
|
3649
4332
|
},
|
|
3650
4333
|
{
|
|
3651
4334
|
name: "TNavMenu",
|
|
3652
|
-
|
|
3653
|
-
aliases: [
|
|
3654
|
-
"TreeNavMenu"
|
|
3655
|
-
],
|
|
4335
|
+
aliases: [],
|
|
3656
4336
|
package: "@treeui/vue",
|
|
3657
4337
|
kind: "navigation",
|
|
3658
4338
|
category: "Layout",
|
|
3659
4339
|
status: "available",
|
|
3660
4340
|
purpose: "Vertical navigation menu with selection state, keyboard navigation, optional RouterLink rendering, and sidebar integration.",
|
|
3661
|
-
sourceFile: "packages/vue/src/components/
|
|
4341
|
+
sourceFile: "packages/vue/src/components/TNavMenu.vue",
|
|
3662
4342
|
storyFile: "apps/docs/src/stories/NavMenu.stories.ts",
|
|
3663
4343
|
storyTitle: "Components/Layout/NavMenu",
|
|
3664
4344
|
manifestFile: "docs/ai/COMPONENTS/nav-menu.yaml",
|
|
@@ -3675,13 +4355,13 @@ var treeui_catalog_default = {
|
|
|
3675
4355
|
},
|
|
3676
4356
|
{
|
|
3677
4357
|
name: "items",
|
|
3678
|
-
type: "
|
|
4358
|
+
type: "TNavMenuItem[]",
|
|
3679
4359
|
default: "[]",
|
|
3680
4360
|
note: "Array of `{ label, value, shortLabel?, description?, icon?, to?, badge?, disabled? }`."
|
|
3681
4361
|
},
|
|
3682
4362
|
{
|
|
3683
4363
|
name: "size",
|
|
3684
|
-
type: "
|
|
4364
|
+
type: "TSize",
|
|
3685
4365
|
default: "md",
|
|
3686
4366
|
values: [
|
|
3687
4367
|
"sm",
|
|
@@ -3756,25 +4436,23 @@ var treeui_catalog_default = {
|
|
|
3756
4436
|
setup: {
|
|
3757
4437
|
required: [],
|
|
3758
4438
|
notes: [
|
|
3759
|
-
"When nested inside `TSidebar`, `collapsed` can be inherited from the sidebar provider."
|
|
4439
|
+
"When nested inside `TSidebar` or `TAppShell`, `collapsed` can be inherited from the sidebar provider."
|
|
3760
4440
|
]
|
|
3761
4441
|
},
|
|
3762
4442
|
recipes: [
|
|
4443
|
+
"app-shell",
|
|
3763
4444
|
"sidebar-shell"
|
|
3764
4445
|
]
|
|
3765
4446
|
},
|
|
3766
4447
|
{
|
|
3767
4448
|
name: "TNumberInput",
|
|
3768
|
-
|
|
3769
|
-
aliases: [
|
|
3770
|
-
"TreeNumberInput"
|
|
3771
|
-
],
|
|
4449
|
+
aliases: [],
|
|
3772
4450
|
package: "@treeui/vue",
|
|
3773
4451
|
kind: "form",
|
|
3774
4452
|
category: "Data Entry",
|
|
3775
4453
|
status: "available",
|
|
3776
4454
|
purpose: "Numeric input with optional increment and decrement controls.",
|
|
3777
|
-
sourceFile: "packages/vue/src/components/
|
|
4455
|
+
sourceFile: "packages/vue/src/components/TNumberInput.vue",
|
|
3778
4456
|
storyFile: "apps/docs/src/stories/NumberInput.stories.ts",
|
|
3779
4457
|
storyTitle: "Components/Data Entry/NumberInput",
|
|
3780
4458
|
manifestFile: "docs/ai/COMPONENTS/number-input.yaml",
|
|
@@ -3800,7 +4478,7 @@ var treeui_catalog_default = {
|
|
|
3800
4478
|
},
|
|
3801
4479
|
{
|
|
3802
4480
|
name: "size",
|
|
3803
|
-
type: "
|
|
4481
|
+
type: "TSize",
|
|
3804
4482
|
default: "md",
|
|
3805
4483
|
values: [
|
|
3806
4484
|
"sm",
|
|
@@ -3875,16 +4553,13 @@ var treeui_catalog_default = {
|
|
|
3875
4553
|
},
|
|
3876
4554
|
{
|
|
3877
4555
|
name: "TPagination",
|
|
3878
|
-
|
|
3879
|
-
aliases: [
|
|
3880
|
-
"TreePagination"
|
|
3881
|
-
],
|
|
4556
|
+
aliases: [],
|
|
3882
4557
|
package: "@treeui/vue",
|
|
3883
4558
|
kind: "primitive",
|
|
3884
4559
|
category: "Navigation",
|
|
3885
4560
|
status: "available",
|
|
3886
4561
|
purpose: "Page controls with previous/next navigation, numbered page buttons, and ellipsis for large page ranges. Supports v-model for the active page.\n",
|
|
3887
|
-
sourceFile: "packages/vue/src/components/
|
|
4562
|
+
sourceFile: "packages/vue/src/components/TPagination.vue",
|
|
3888
4563
|
storyFile: "apps/docs/src/stories/Pagination.stories.ts",
|
|
3889
4564
|
storyTitle: "Components/Navigation/Pagination",
|
|
3890
4565
|
manifestFile: "docs/ai/COMPONENTS/pagination.yaml",
|
|
@@ -3909,7 +4584,7 @@ var treeui_catalog_default = {
|
|
|
3909
4584
|
},
|
|
3910
4585
|
{
|
|
3911
4586
|
name: "size",
|
|
3912
|
-
type: "
|
|
4587
|
+
type: "TSize",
|
|
3913
4588
|
default: "md",
|
|
3914
4589
|
values: [
|
|
3915
4590
|
"sm",
|
|
@@ -3991,10 +4666,7 @@ var treeui_catalog_default = {
|
|
|
3991
4666
|
},
|
|
3992
4667
|
{
|
|
3993
4668
|
name: "TPopover",
|
|
3994
|
-
|
|
3995
|
-
aliases: [
|
|
3996
|
-
"TreePopover"
|
|
3997
|
-
],
|
|
4669
|
+
aliases: [],
|
|
3998
4670
|
package: "@treeui/vue",
|
|
3999
4671
|
category: "Overlay",
|
|
4000
4672
|
status: "stable",
|
|
@@ -4097,10 +4769,7 @@ var treeui_catalog_default = {
|
|
|
4097
4769
|
},
|
|
4098
4770
|
{
|
|
4099
4771
|
name: "TPricing",
|
|
4100
|
-
|
|
4101
|
-
aliases: [
|
|
4102
|
-
"TreePricing"
|
|
4103
|
-
],
|
|
4772
|
+
aliases: [],
|
|
4104
4773
|
package: "@treeui/vue",
|
|
4105
4774
|
status: "stable",
|
|
4106
4775
|
description: "Grid wrapper that renders multiple PricingCard components from an array of plan objects.\n",
|
|
@@ -4116,7 +4785,7 @@ var treeui_catalog_default = {
|
|
|
4116
4785
|
},
|
|
4117
4786
|
{
|
|
4118
4787
|
name: "size",
|
|
4119
|
-
type: "
|
|
4788
|
+
type: "TSize",
|
|
4120
4789
|
default: "md",
|
|
4121
4790
|
description: "Size applied to all child pricing cards."
|
|
4122
4791
|
},
|
|
@@ -4164,10 +4833,7 @@ var treeui_catalog_default = {
|
|
|
4164
4833
|
},
|
|
4165
4834
|
{
|
|
4166
4835
|
name: "TPricingCard",
|
|
4167
|
-
|
|
4168
|
-
aliases: [
|
|
4169
|
-
"TreePricingCard"
|
|
4170
|
-
],
|
|
4836
|
+
aliases: [],
|
|
4171
4837
|
package: "@treeui/vue",
|
|
4172
4838
|
category: "Data Display",
|
|
4173
4839
|
status: "stable",
|
|
@@ -4232,7 +4898,7 @@ var treeui_catalog_default = {
|
|
|
4232
4898
|
},
|
|
4233
4899
|
{
|
|
4234
4900
|
name: "size",
|
|
4235
|
-
type: "
|
|
4901
|
+
type: "TSize",
|
|
4236
4902
|
default: "md",
|
|
4237
4903
|
description: "Card size \u2014 affects padding, font sizes."
|
|
4238
4904
|
},
|
|
@@ -4277,7 +4943,7 @@ var treeui_catalog_default = {
|
|
|
4277
4943
|
"Uses <h3> for plan title.",
|
|
4278
4944
|
'Feature list uses role="list" with <ul>/<li>.',
|
|
4279
4945
|
'Feature icons are aria-hidden="true".',
|
|
4280
|
-
"CTA button inherits
|
|
4946
|
+
"CTA button inherits TButton a11y (disabled, aria-busy)."
|
|
4281
4947
|
],
|
|
4282
4948
|
behavior: [],
|
|
4283
4949
|
selection: {
|
|
@@ -4296,10 +4962,7 @@ var treeui_catalog_default = {
|
|
|
4296
4962
|
},
|
|
4297
4963
|
{
|
|
4298
4964
|
name: "TProgress",
|
|
4299
|
-
|
|
4300
|
-
aliases: [
|
|
4301
|
-
"TreeProgress"
|
|
4302
|
-
],
|
|
4965
|
+
aliases: [],
|
|
4303
4966
|
package: "@treeui/vue",
|
|
4304
4967
|
category: "Feedback",
|
|
4305
4968
|
status: "draft",
|
|
@@ -4322,7 +4985,7 @@ var treeui_catalog_default = {
|
|
|
4322
4985
|
},
|
|
4323
4986
|
{
|
|
4324
4987
|
name: "size",
|
|
4325
|
-
type: "
|
|
4988
|
+
type: "TSize",
|
|
4326
4989
|
default: "md",
|
|
4327
4990
|
values: [
|
|
4328
4991
|
"sm",
|
|
@@ -4360,15 +5023,12 @@ var treeui_catalog_default = {
|
|
|
4360
5023
|
},
|
|
4361
5024
|
{
|
|
4362
5025
|
name: "TRadio",
|
|
4363
|
-
|
|
4364
|
-
aliases: [
|
|
4365
|
-
"TreeRadio"
|
|
4366
|
-
],
|
|
5026
|
+
aliases: [],
|
|
4367
5027
|
package: "@treeui/vue",
|
|
4368
5028
|
kind: "primitive",
|
|
4369
5029
|
status: "available",
|
|
4370
5030
|
purpose: "Single radio option within a TRadioGroup; renders a native radio input.",
|
|
4371
|
-
sourceFile: "packages/vue/src/components/
|
|
5031
|
+
sourceFile: "packages/vue/src/components/TRadio.vue",
|
|
4372
5032
|
manifestFile: "docs/ai/COMPONENTS/radio.yaml",
|
|
4373
5033
|
props: [
|
|
4374
5034
|
{
|
|
@@ -4388,7 +5048,7 @@ var treeui_catalog_default = {
|
|
|
4388
5048
|
},
|
|
4389
5049
|
{
|
|
4390
5050
|
name: "size",
|
|
4391
|
-
type: "
|
|
5051
|
+
type: "TSize",
|
|
4392
5052
|
default: "inherited_from_group",
|
|
4393
5053
|
values: [
|
|
4394
5054
|
"sm",
|
|
@@ -4431,16 +5091,13 @@ var treeui_catalog_default = {
|
|
|
4431
5091
|
},
|
|
4432
5092
|
{
|
|
4433
5093
|
name: "TRadioGroup",
|
|
4434
|
-
|
|
4435
|
-
aliases: [
|
|
4436
|
-
"TreeRadioGroup"
|
|
4437
|
-
],
|
|
5094
|
+
aliases: [],
|
|
4438
5095
|
package: "@treeui/vue",
|
|
4439
5096
|
kind: "primitive",
|
|
4440
5097
|
category: "Data Entry",
|
|
4441
5098
|
status: "available",
|
|
4442
5099
|
purpose: "Container for TRadio options; manages v-model for single-select from a group.",
|
|
4443
|
-
sourceFile: "packages/vue/src/components/
|
|
5100
|
+
sourceFile: "packages/vue/src/components/TRadioGroup.vue",
|
|
4444
5101
|
storyFile: "apps/docs/src/stories/Radio.stories.ts",
|
|
4445
5102
|
storyTitle: "Components/Data Entry/Radio",
|
|
4446
5103
|
manifestFile: "docs/ai/COMPONENTS/radio.yaml",
|
|
@@ -4467,7 +5124,7 @@ var treeui_catalog_default = {
|
|
|
4467
5124
|
},
|
|
4468
5125
|
{
|
|
4469
5126
|
name: "size",
|
|
4470
|
-
type: "
|
|
5127
|
+
type: "TSize",
|
|
4471
5128
|
default: "md",
|
|
4472
5129
|
values: [
|
|
4473
5130
|
"sm",
|
|
@@ -4509,16 +5166,13 @@ var treeui_catalog_default = {
|
|
|
4509
5166
|
},
|
|
4510
5167
|
{
|
|
4511
5168
|
name: "TSelect",
|
|
4512
|
-
|
|
4513
|
-
aliases: [
|
|
4514
|
-
"TreeSelect"
|
|
4515
|
-
],
|
|
5169
|
+
aliases: [],
|
|
4516
5170
|
package: "@treeui/vue",
|
|
4517
5171
|
kind: "primitive",
|
|
4518
5172
|
category: "Data Entry",
|
|
4519
5173
|
status: "available",
|
|
4520
5174
|
purpose: "Custom styled dropdown select with listbox; controlled and uncontrolled via v-model and open/defaultOpen.",
|
|
4521
|
-
sourceFile: "packages/vue/src/components/
|
|
5175
|
+
sourceFile: "packages/vue/src/components/TSelect.vue",
|
|
4522
5176
|
storyFile: "apps/docs/src/stories/Select.stories.ts",
|
|
4523
5177
|
storyTitle: "Components/Data Entry/Select",
|
|
4524
5178
|
manifestFile: "docs/ai/COMPONENTS/select.yaml",
|
|
@@ -4530,7 +5184,7 @@ var treeui_catalog_default = {
|
|
|
4530
5184
|
},
|
|
4531
5185
|
{
|
|
4532
5186
|
name: "options",
|
|
4533
|
-
type: "
|
|
5187
|
+
type: "TSelectOption[]",
|
|
4534
5188
|
default: "[]",
|
|
4535
5189
|
note: "Array of { label: string; value: string | number; disabled?: boolean }"
|
|
4536
5190
|
},
|
|
@@ -4546,7 +5200,7 @@ var treeui_catalog_default = {
|
|
|
4546
5200
|
},
|
|
4547
5201
|
{
|
|
4548
5202
|
name: "size",
|
|
4549
|
-
type: "
|
|
5203
|
+
type: "TSize",
|
|
4550
5204
|
default: "md",
|
|
4551
5205
|
values: [
|
|
4552
5206
|
"sm",
|
|
@@ -4613,7 +5267,8 @@ var treeui_catalog_default = {
|
|
|
4613
5267
|
"check_icon_on_selected_option: true",
|
|
4614
5268
|
"outside_click_closes_dropdown: true",
|
|
4615
5269
|
"focus_restores_on_close: true",
|
|
4616
|
-
"numeric_values_supported_without_string_coercion: true"
|
|
5270
|
+
"numeric_values_supported_without_string_coercion: true",
|
|
5271
|
+
"listbox_flips_above_trigger_when_space_below_is_insufficient: true"
|
|
4617
5272
|
],
|
|
4618
5273
|
selection: {
|
|
4619
5274
|
keywords: [
|
|
@@ -4646,20 +5301,19 @@ var treeui_catalog_default = {
|
|
|
4646
5301
|
"Use `placeholder` when no selection has been made."
|
|
4647
5302
|
]
|
|
4648
5303
|
},
|
|
4649
|
-
recipes: [
|
|
5304
|
+
recipes: [
|
|
5305
|
+
"chart-surface"
|
|
5306
|
+
]
|
|
4650
5307
|
},
|
|
4651
5308
|
{
|
|
4652
5309
|
name: "TSelectableList",
|
|
4653
|
-
|
|
4654
|
-
aliases: [
|
|
4655
|
-
"TreeSelectableList"
|
|
4656
|
-
],
|
|
5310
|
+
aliases: [],
|
|
4657
5311
|
package: "@treeui/vue",
|
|
4658
5312
|
kind: "selection",
|
|
4659
5313
|
category: "Navigation & Disclosure",
|
|
4660
5314
|
status: "available",
|
|
4661
5315
|
purpose: "Rich single-selection list for options with description and metadata.",
|
|
4662
|
-
sourceFile: "packages/vue/src/components/
|
|
5316
|
+
sourceFile: "packages/vue/src/components/TSelectableList.vue",
|
|
4663
5317
|
storyFile: "apps/docs/src/stories/SelectableList.stories.ts",
|
|
4664
5318
|
storyTitle: "Components/Navigation & Disclosure/SelectableList",
|
|
4665
5319
|
manifestFile: "docs/ai/COMPONENTS/selectable-list.yaml",
|
|
@@ -4676,13 +5330,13 @@ var treeui_catalog_default = {
|
|
|
4676
5330
|
},
|
|
4677
5331
|
{
|
|
4678
5332
|
name: "items",
|
|
4679
|
-
type: "
|
|
5333
|
+
type: "TSelectableListItem[]",
|
|
4680
5334
|
default: "[]",
|
|
4681
5335
|
note: "Array of `{ label, value, description?, meta?, disabled? }`."
|
|
4682
5336
|
},
|
|
4683
5337
|
{
|
|
4684
5338
|
name: "size",
|
|
4685
|
-
type: "
|
|
5339
|
+
type: "TSize",
|
|
4686
5340
|
default: "md",
|
|
4687
5341
|
values: [
|
|
4688
5342
|
"sm",
|
|
@@ -4759,16 +5413,13 @@ var treeui_catalog_default = {
|
|
|
4759
5413
|
},
|
|
4760
5414
|
{
|
|
4761
5415
|
name: "TSidebar",
|
|
4762
|
-
|
|
4763
|
-
aliases: [
|
|
4764
|
-
"TreeSidebar"
|
|
4765
|
-
],
|
|
5416
|
+
aliases: [],
|
|
4766
5417
|
package: "@treeui/vue",
|
|
4767
5418
|
kind: "layout",
|
|
4768
5419
|
category: "Layout",
|
|
4769
5420
|
status: "available",
|
|
4770
5421
|
purpose: "Persistent or collapsible side shell for app navigation and secondary workspace controls.",
|
|
4771
|
-
sourceFile: "packages/vue/src/components/
|
|
5422
|
+
sourceFile: "packages/vue/src/components/TSidebar.vue",
|
|
4772
5423
|
storyFile: "apps/docs/src/stories/Sidebar.stories.ts",
|
|
4773
5424
|
storyTitle: "Components/Layout/Sidebar",
|
|
4774
5425
|
manifestFile: "docs/ai/COMPONENTS/sidebar.yaml",
|
|
@@ -4795,7 +5446,7 @@ var treeui_catalog_default = {
|
|
|
4795
5446
|
},
|
|
4796
5447
|
{
|
|
4797
5448
|
name: "size",
|
|
4798
|
-
type: "
|
|
5449
|
+
type: "TSize",
|
|
4799
5450
|
default: "md",
|
|
4800
5451
|
values: [
|
|
4801
5452
|
"sm",
|
|
@@ -4805,7 +5456,7 @@ var treeui_catalog_default = {
|
|
|
4805
5456
|
},
|
|
4806
5457
|
{
|
|
4807
5458
|
name: "side",
|
|
4808
|
-
type: "
|
|
5459
|
+
type: "TSidebarSide",
|
|
4809
5460
|
default: "left",
|
|
4810
5461
|
values: [
|
|
4811
5462
|
"left",
|
|
@@ -4874,7 +5525,8 @@ var treeui_catalog_default = {
|
|
|
4874
5525
|
"controlled_and_uncontrolled_collapsed_state: true",
|
|
4875
5526
|
"provides_collapsed_state_to_descendants: true",
|
|
4876
5527
|
"left_and_right_variants: true",
|
|
4877
|
-
"exposes_slot_props_with_collapsed_state: true"
|
|
5528
|
+
"exposes_slot_props_with_collapsed_state: true",
|
|
5529
|
+
"collapsed_state_centers_header_and_footer_content: true"
|
|
4878
5530
|
],
|
|
4879
5531
|
selection: {
|
|
4880
5532
|
keywords: [
|
|
@@ -4899,7 +5551,8 @@ var treeui_catalog_default = {
|
|
|
4899
5551
|
required: [],
|
|
4900
5552
|
notes: [
|
|
4901
5553
|
"Pair with `TNavMenu` for app-section navigation.",
|
|
4902
|
-
"Use controlled `collapsed` state when the app shell persists layout preferences."
|
|
5554
|
+
"Use controlled `collapsed` state when the app shell persists layout preferences.",
|
|
5555
|
+
"Prefer `TAppShell` when you also want full-viewport sizing, a top header, and a responsive mobile drawer."
|
|
4903
5556
|
]
|
|
4904
5557
|
},
|
|
4905
5558
|
recipes: [
|
|
@@ -4908,16 +5561,13 @@ var treeui_catalog_default = {
|
|
|
4908
5561
|
},
|
|
4909
5562
|
{
|
|
4910
5563
|
name: "TSkeleton",
|
|
4911
|
-
|
|
4912
|
-
aliases: [
|
|
4913
|
-
"TreeSkeleton"
|
|
4914
|
-
],
|
|
5564
|
+
aliases: [],
|
|
4915
5565
|
package: "@treeui/vue",
|
|
4916
5566
|
kind: "feedback",
|
|
4917
5567
|
category: "Feedback",
|
|
4918
5568
|
status: "available",
|
|
4919
5569
|
purpose: "Placeholder shimmer for loading states. Renders an animated block that indicates content is being loaded.",
|
|
4920
|
-
sourceFile: "packages/vue/src/components/
|
|
5570
|
+
sourceFile: "packages/vue/src/components/TSkeleton.vue",
|
|
4921
5571
|
storyFile: "apps/docs/src/stories/Skeleton.stories.ts",
|
|
4922
5572
|
storyTitle: "Components/Feedback/Skeleton",
|
|
4923
5573
|
manifestFile: "docs/ai/COMPONENTS/skeleton.yaml",
|
|
@@ -4973,24 +5623,144 @@ var treeui_catalog_default = {
|
|
|
4973
5623
|
recipes: []
|
|
4974
5624
|
},
|
|
4975
5625
|
{
|
|
4976
|
-
name: "
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
5626
|
+
name: "TSparkline",
|
|
5627
|
+
aliases: [],
|
|
5628
|
+
package: "@treeui/vue",
|
|
5629
|
+
kind: "data-display",
|
|
5630
|
+
category: "Data Display",
|
|
5631
|
+
status: "available",
|
|
5632
|
+
purpose: "Tiny, axis-less inline trend chart (line, area, or bar) sized for stat tiles, table cells, and running text.",
|
|
5633
|
+
sourceFile: "packages/vue/src/components/TSparkline.vue",
|
|
5634
|
+
storyFile: "apps/docs/src/stories/Sparkline.stories.ts",
|
|
5635
|
+
storyTitle: "Components/Data Display/Sparkline",
|
|
5636
|
+
manifestFile: "docs/ai/COMPONENTS/sparkline.yaml",
|
|
5637
|
+
props: [
|
|
5638
|
+
{
|
|
5639
|
+
name: "data",
|
|
5640
|
+
type: "number[]",
|
|
5641
|
+
default: "[]"
|
|
5642
|
+
},
|
|
5643
|
+
{
|
|
5644
|
+
name: "type",
|
|
5645
|
+
type: "line | area | bar",
|
|
5646
|
+
default: "line"
|
|
5647
|
+
},
|
|
5648
|
+
{
|
|
5649
|
+
name: "color",
|
|
5650
|
+
type: "string",
|
|
5651
|
+
default: "var(--tree-color-chart-1)",
|
|
5652
|
+
note: "Any CSS color."
|
|
5653
|
+
},
|
|
5654
|
+
{
|
|
5655
|
+
name: "width",
|
|
5656
|
+
type: "number",
|
|
5657
|
+
default: "120"
|
|
5658
|
+
},
|
|
5659
|
+
{
|
|
5660
|
+
name: "height",
|
|
5661
|
+
type: "number",
|
|
5662
|
+
default: "32"
|
|
5663
|
+
},
|
|
5664
|
+
{
|
|
5665
|
+
name: "smooth",
|
|
5666
|
+
type: "boolean",
|
|
5667
|
+
default: "false",
|
|
5668
|
+
note: "Curved line/area."
|
|
5669
|
+
},
|
|
5670
|
+
{
|
|
5671
|
+
name: "strokeWidth",
|
|
5672
|
+
type: "number",
|
|
5673
|
+
default: "2",
|
|
5674
|
+
note: "Line/area only."
|
|
5675
|
+
},
|
|
5676
|
+
{
|
|
5677
|
+
name: "min",
|
|
5678
|
+
type: "number",
|
|
5679
|
+
default: "data min"
|
|
5680
|
+
},
|
|
5681
|
+
{
|
|
5682
|
+
name: "max",
|
|
5683
|
+
type: "number",
|
|
5684
|
+
default: "data max"
|
|
5685
|
+
},
|
|
5686
|
+
{
|
|
5687
|
+
name: "showLastPoint",
|
|
5688
|
+
type: "boolean",
|
|
5689
|
+
default: "false",
|
|
5690
|
+
note: "Marker on the final point (line/area)."
|
|
5691
|
+
},
|
|
5692
|
+
{
|
|
5693
|
+
name: "ariaLabel",
|
|
5694
|
+
type: "string",
|
|
5695
|
+
default: "Trend sparkline"
|
|
5696
|
+
}
|
|
4980
5697
|
],
|
|
5698
|
+
events: [],
|
|
5699
|
+
slots: [],
|
|
5700
|
+
a11y: [
|
|
5701
|
+
"Renders role=img with an aria-label; pass a specific one for meaningful trends.",
|
|
5702
|
+
"Pair with a visible number \u2014 a sparkline supplements a value, it does not replace it."
|
|
5703
|
+
],
|
|
5704
|
+
behavior: [
|
|
5705
|
+
"no_axes_or_legend: true",
|
|
5706
|
+
"flat_series_renders_centered: true",
|
|
5707
|
+
"scales_to_intrinsic_width_and_height: true"
|
|
5708
|
+
],
|
|
5709
|
+
selection: {
|
|
5710
|
+
keywords: [
|
|
5711
|
+
"sparkline",
|
|
5712
|
+
"mini chart",
|
|
5713
|
+
"inline chart",
|
|
5714
|
+
"micro trend",
|
|
5715
|
+
"trend line",
|
|
5716
|
+
"table chart"
|
|
5717
|
+
],
|
|
5718
|
+
useWhen: [
|
|
5719
|
+
"You want a compact trend beside a value, in a table cell, or inline in text.",
|
|
5720
|
+
"No axes, legend, or tooltip are required."
|
|
5721
|
+
],
|
|
5722
|
+
avoidWhen: [
|
|
5723
|
+
"You need axes, multiple labeled series, or a tooltip \u2014 use TChart."
|
|
5724
|
+
],
|
|
5725
|
+
alternatives: [
|
|
5726
|
+
{
|
|
5727
|
+
component: "TChart",
|
|
5728
|
+
when: "The chart needs axes, a legend, or a tooltip."
|
|
5729
|
+
},
|
|
5730
|
+
{
|
|
5731
|
+
component: "TStat",
|
|
5732
|
+
when: "A single value with a trend badge is enough."
|
|
5733
|
+
}
|
|
5734
|
+
]
|
|
5735
|
+
},
|
|
5736
|
+
setup: {
|
|
5737
|
+
required: [],
|
|
5738
|
+
notes: [
|
|
5739
|
+
"Pass `data` as `number[]`; there are no axes, legend, or tooltip by design.",
|
|
5740
|
+
"Size it with `width`/`height`; use it inside `TStat`, table cells, or text.",
|
|
5741
|
+
"Always keep a visible number nearby \u2014 a sparkline supplements a value, it does not replace it."
|
|
5742
|
+
]
|
|
5743
|
+
},
|
|
5744
|
+
recipes: [
|
|
5745
|
+
"metric-dashboard"
|
|
5746
|
+
]
|
|
5747
|
+
},
|
|
5748
|
+
{
|
|
5749
|
+
name: "TSpinner",
|
|
5750
|
+
aliases: [],
|
|
4981
5751
|
package: "@treeui/vue",
|
|
4982
5752
|
kind: "feedback",
|
|
4983
5753
|
category: "Feedback",
|
|
4984
5754
|
status: "available",
|
|
4985
5755
|
purpose: "Accessible loading indicator.",
|
|
4986
|
-
sourceFile: "packages/vue/src/components/
|
|
5756
|
+
sourceFile: "packages/vue/src/components/TSpinner.vue",
|
|
4987
5757
|
storyFile: "apps/docs/src/stories/Spinner.stories.ts",
|
|
4988
5758
|
storyTitle: "Components/Feedback/Spinner",
|
|
4989
5759
|
manifestFile: "docs/ai/COMPONENTS/spinner.yaml",
|
|
4990
5760
|
props: [
|
|
4991
5761
|
{
|
|
4992
5762
|
name: "size",
|
|
4993
|
-
type: "
|
|
5763
|
+
type: "TSize",
|
|
4994
5764
|
default: "md",
|
|
4995
5765
|
values: [
|
|
4996
5766
|
"sm",
|
|
@@ -5026,16 +5796,13 @@ var treeui_catalog_default = {
|
|
|
5026
5796
|
},
|
|
5027
5797
|
{
|
|
5028
5798
|
name: "TStack",
|
|
5029
|
-
|
|
5030
|
-
aliases: [
|
|
5031
|
-
"TreeStack"
|
|
5032
|
-
],
|
|
5799
|
+
aliases: [],
|
|
5033
5800
|
package: "@treeui/vue",
|
|
5034
5801
|
kind: "layout",
|
|
5035
5802
|
category: "Layout",
|
|
5036
5803
|
status: "available",
|
|
5037
5804
|
purpose: "One-dimensional spacing and alignment wrapper for vertical or horizontal compositions.",
|
|
5038
|
-
sourceFile: "packages/vue/src/components/
|
|
5805
|
+
sourceFile: "packages/vue/src/components/TStack.vue",
|
|
5039
5806
|
storyFile: "apps/docs/src/stories/Stack.stories.ts",
|
|
5040
5807
|
storyTitle: "Components/Layout/Stack",
|
|
5041
5808
|
manifestFile: "docs/ai/COMPONENTS/stack.yaml",
|
|
@@ -5047,7 +5814,7 @@ var treeui_catalog_default = {
|
|
|
5047
5814
|
},
|
|
5048
5815
|
{
|
|
5049
5816
|
name: "direction",
|
|
5050
|
-
type: "
|
|
5817
|
+
type: "TStackDirection",
|
|
5051
5818
|
default: "vertical",
|
|
5052
5819
|
values: [
|
|
5053
5820
|
"vertical",
|
|
@@ -5127,16 +5894,13 @@ var treeui_catalog_default = {
|
|
|
5127
5894
|
},
|
|
5128
5895
|
{
|
|
5129
5896
|
name: "TStat",
|
|
5130
|
-
|
|
5131
|
-
aliases: [
|
|
5132
|
-
"TreeStat"
|
|
5133
|
-
],
|
|
5897
|
+
aliases: [],
|
|
5134
5898
|
package: "@treeui/vue",
|
|
5135
5899
|
kind: "data-display",
|
|
5136
5900
|
category: "Data Display",
|
|
5137
5901
|
status: "available",
|
|
5138
5902
|
purpose: "Compact KPI display with label, value, trend, metadata, and optional icon.",
|
|
5139
|
-
sourceFile: "packages/vue/src/components/
|
|
5903
|
+
sourceFile: "packages/vue/src/components/TStat.vue",
|
|
5140
5904
|
storyFile: "apps/docs/src/stories/Stat.stories.ts",
|
|
5141
5905
|
storyTitle: "Components/Data Display/Stat",
|
|
5142
5906
|
manifestFile: "docs/ai/COMPONENTS/stat.yaml",
|
|
@@ -5163,7 +5927,7 @@ var treeui_catalog_default = {
|
|
|
5163
5927
|
},
|
|
5164
5928
|
{
|
|
5165
5929
|
name: "tone",
|
|
5166
|
-
type: "
|
|
5930
|
+
type: "TStatTone",
|
|
5167
5931
|
default: "neutral",
|
|
5168
5932
|
values: [
|
|
5169
5933
|
"neutral",
|
|
@@ -5175,7 +5939,7 @@ var treeui_catalog_default = {
|
|
|
5175
5939
|
},
|
|
5176
5940
|
{
|
|
5177
5941
|
name: "trendDirection",
|
|
5178
|
-
type: "
|
|
5942
|
+
type: "TStatTrendDirection",
|
|
5179
5943
|
default: "neutral",
|
|
5180
5944
|
values: [
|
|
5181
5945
|
"up",
|
|
@@ -5234,6 +5998,10 @@ var treeui_catalog_default = {
|
|
|
5234
5998
|
{
|
|
5235
5999
|
component: "TCard",
|
|
5236
6000
|
when: "The content is not a metric."
|
|
6001
|
+
},
|
|
6002
|
+
{
|
|
6003
|
+
component: "TSparkline",
|
|
6004
|
+
when: "You want to show the metric's trend as an inline mini-chart."
|
|
5237
6005
|
}
|
|
5238
6006
|
]
|
|
5239
6007
|
},
|
|
@@ -5242,23 +6010,21 @@ var treeui_catalog_default = {
|
|
|
5242
6010
|
notes: []
|
|
5243
6011
|
},
|
|
5244
6012
|
recipes: [
|
|
5245
|
-
"stat-grid"
|
|
6013
|
+
"stat-grid",
|
|
6014
|
+
"metric-dashboard"
|
|
5246
6015
|
]
|
|
5247
6016
|
},
|
|
5248
6017
|
{
|
|
5249
6018
|
name: "TSteps",
|
|
5250
|
-
legacyAlias: "TreeStepper",
|
|
5251
6019
|
aliases: [
|
|
5252
|
-
"TStepper"
|
|
5253
|
-
"TreeStepper",
|
|
5254
|
-
"TreeSteps"
|
|
6020
|
+
"TStepper"
|
|
5255
6021
|
],
|
|
5256
6022
|
package: "@treeui/vue",
|
|
5257
6023
|
kind: "navigation",
|
|
5258
6024
|
category: "Navigation & Disclosure",
|
|
5259
6025
|
status: "available",
|
|
5260
6026
|
purpose: "Stepper component for visualizing workflow progress, with optional interactive selection.",
|
|
5261
|
-
sourceFile: "packages/vue/src/components/
|
|
6027
|
+
sourceFile: "packages/vue/src/components/TSteps.vue",
|
|
5262
6028
|
storyFile: "apps/docs/src/stories/Steps.stories.ts",
|
|
5263
6029
|
storyTitle: "Components/Navigation & Disclosure/Steps",
|
|
5264
6030
|
manifestFile: "docs/ai/COMPONENTS/steps.yaml",
|
|
@@ -5275,13 +6041,13 @@ var treeui_catalog_default = {
|
|
|
5275
6041
|
},
|
|
5276
6042
|
{
|
|
5277
6043
|
name: "items",
|
|
5278
|
-
type: "
|
|
6044
|
+
type: "TStepItem[]",
|
|
5279
6045
|
default: "[]",
|
|
5280
6046
|
note: "Array of `{ label, value, description?, meta?, status?, disabled? }`."
|
|
5281
6047
|
},
|
|
5282
6048
|
{
|
|
5283
6049
|
name: "size",
|
|
5284
|
-
type: "
|
|
6050
|
+
type: "TSize",
|
|
5285
6051
|
default: "md",
|
|
5286
6052
|
values: [
|
|
5287
6053
|
"sm",
|
|
@@ -5291,7 +6057,7 @@ var treeui_catalog_default = {
|
|
|
5291
6057
|
},
|
|
5292
6058
|
{
|
|
5293
6059
|
name: "orientation",
|
|
5294
|
-
type: "
|
|
6060
|
+
type: "TStepOrientation",
|
|
5295
6061
|
default: "horizontal",
|
|
5296
6062
|
values: [
|
|
5297
6063
|
"horizontal",
|
|
@@ -5354,16 +6120,13 @@ var treeui_catalog_default = {
|
|
|
5354
6120
|
},
|
|
5355
6121
|
{
|
|
5356
6122
|
name: "TSwitch",
|
|
5357
|
-
|
|
5358
|
-
aliases: [
|
|
5359
|
-
"TreeSwitch"
|
|
5360
|
-
],
|
|
6123
|
+
aliases: [],
|
|
5361
6124
|
package: "@treeui/vue",
|
|
5362
6125
|
kind: "primitive",
|
|
5363
6126
|
category: "Data Entry",
|
|
5364
6127
|
status: "available",
|
|
5365
6128
|
purpose: "On/off toggle; semantic alternative to checkbox for settings. Supports v-model via modelValue.",
|
|
5366
|
-
sourceFile: "packages/vue/src/components/
|
|
6129
|
+
sourceFile: "packages/vue/src/components/TSwitch.vue",
|
|
5367
6130
|
storyFile: "apps/docs/src/stories/Switch.stories.ts",
|
|
5368
6131
|
storyTitle: "Components/Data Entry/Switch",
|
|
5369
6132
|
manifestFile: "docs/ai/COMPONENTS/switch.yaml",
|
|
@@ -5375,7 +6138,7 @@ var treeui_catalog_default = {
|
|
|
5375
6138
|
},
|
|
5376
6139
|
{
|
|
5377
6140
|
name: "size",
|
|
5378
|
-
type: "
|
|
6141
|
+
type: "TSize",
|
|
5379
6142
|
default: "md",
|
|
5380
6143
|
values: [
|
|
5381
6144
|
"sm",
|
|
@@ -5446,21 +6209,18 @@ var treeui_catalog_default = {
|
|
|
5446
6209
|
},
|
|
5447
6210
|
{
|
|
5448
6211
|
name: "TTable",
|
|
5449
|
-
|
|
5450
|
-
aliases: [
|
|
5451
|
-
"TreeTable"
|
|
5452
|
-
],
|
|
6212
|
+
aliases: [],
|
|
5453
6213
|
package: "@treeui/vue",
|
|
5454
6214
|
category: "Data Display",
|
|
5455
6215
|
description: "Sortable, accessible data table with column definitions and row data.",
|
|
5456
|
-
sourceFile: "packages/vue/src/components/
|
|
6216
|
+
sourceFile: "packages/vue/src/components/TTable.vue",
|
|
5457
6217
|
storyFile: "apps/docs/src/stories/Table.stories.ts",
|
|
5458
6218
|
storyTitle: "Components/Data Display/Table",
|
|
5459
6219
|
manifestFile: "docs/ai/COMPONENTS/table.yaml",
|
|
5460
6220
|
props: [
|
|
5461
6221
|
{
|
|
5462
6222
|
name: "columns",
|
|
5463
|
-
type: "
|
|
6223
|
+
type: "TTableColumn[]",
|
|
5464
6224
|
required: true,
|
|
5465
6225
|
description: "Array of column definitions with key, label, sortable, align, and width."
|
|
5466
6226
|
},
|
|
@@ -5472,7 +6232,7 @@ var treeui_catalog_default = {
|
|
|
5472
6232
|
},
|
|
5473
6233
|
{
|
|
5474
6234
|
name: "size",
|
|
5475
|
-
type: "
|
|
6235
|
+
type: "TSize",
|
|
5476
6236
|
default: "md",
|
|
5477
6237
|
values: [
|
|
5478
6238
|
"sm",
|
|
@@ -5482,7 +6242,7 @@ var treeui_catalog_default = {
|
|
|
5482
6242
|
},
|
|
5483
6243
|
{
|
|
5484
6244
|
name: "sortBy",
|
|
5485
|
-
type: "
|
|
6245
|
+
type: "TTableSortState",
|
|
5486
6246
|
required: false,
|
|
5487
6247
|
description: "Controlled sort state. When provided, overrides internal sort tracking."
|
|
5488
6248
|
}
|
|
@@ -5491,7 +6251,7 @@ var treeui_catalog_default = {
|
|
|
5491
6251
|
{
|
|
5492
6252
|
name: "sort",
|
|
5493
6253
|
description: "Emitted when a sortable column header is clicked.",
|
|
5494
|
-
payload: "
|
|
6254
|
+
payload: "TTableSortState"
|
|
5495
6255
|
}
|
|
5496
6256
|
],
|
|
5497
6257
|
slots: [
|
|
@@ -5550,16 +6310,13 @@ var treeui_catalog_default = {
|
|
|
5550
6310
|
},
|
|
5551
6311
|
{
|
|
5552
6312
|
name: "TTabs",
|
|
5553
|
-
|
|
5554
|
-
aliases: [
|
|
5555
|
-
"TreeTabs"
|
|
5556
|
-
],
|
|
6313
|
+
aliases: [],
|
|
5557
6314
|
package: "@treeui/vue",
|
|
5558
6315
|
kind: "navigation",
|
|
5559
6316
|
category: "Navigation",
|
|
5560
6317
|
status: "available",
|
|
5561
6318
|
purpose: "Tabbed panel navigation with full keyboard support and automatic/manual activation modes.",
|
|
5562
|
-
sourceFile: "packages/vue/src/components/
|
|
6319
|
+
sourceFile: "packages/vue/src/components/TTabs.vue",
|
|
5563
6320
|
storyFile: "apps/docs/src/stories/Tabs.stories.ts",
|
|
5564
6321
|
storyTitle: "Components/Navigation/Tabs",
|
|
5565
6322
|
manifestFile: "docs/ai/COMPONENTS/tabs.yaml",
|
|
@@ -5578,7 +6335,7 @@ var treeui_catalog_default = {
|
|
|
5578
6335
|
},
|
|
5579
6336
|
{
|
|
5580
6337
|
name: "size",
|
|
5581
|
-
type: "
|
|
6338
|
+
type: "TSize",
|
|
5582
6339
|
default: "md",
|
|
5583
6340
|
values: [
|
|
5584
6341
|
"sm",
|
|
@@ -5659,21 +6416,18 @@ var treeui_catalog_default = {
|
|
|
5659
6416
|
},
|
|
5660
6417
|
{
|
|
5661
6418
|
name: "TTag",
|
|
5662
|
-
|
|
5663
|
-
aliases: [
|
|
5664
|
-
"TreeTag"
|
|
5665
|
-
],
|
|
6419
|
+
aliases: [],
|
|
5666
6420
|
package: "@treeui/vue",
|
|
5667
6421
|
category: "Data Display",
|
|
5668
6422
|
description: "Removable label/chip for filters and selections.",
|
|
5669
|
-
sourceFile: "packages/vue/src/components/
|
|
6423
|
+
sourceFile: "packages/vue/src/components/TTag.vue",
|
|
5670
6424
|
storyFile: "apps/docs/src/stories/Tag.stories.ts",
|
|
5671
6425
|
storyTitle: "Components/Data Display/Tag",
|
|
5672
6426
|
manifestFile: "docs/ai/COMPONENTS/tag.yaml",
|
|
5673
6427
|
props: [
|
|
5674
6428
|
{
|
|
5675
6429
|
name: "variant",
|
|
5676
|
-
type: "
|
|
6430
|
+
type: "TTagVariant",
|
|
5677
6431
|
default: "soft",
|
|
5678
6432
|
values: [
|
|
5679
6433
|
"solid",
|
|
@@ -5683,7 +6437,7 @@ var treeui_catalog_default = {
|
|
|
5683
6437
|
},
|
|
5684
6438
|
{
|
|
5685
6439
|
name: "size",
|
|
5686
|
-
type: "
|
|
6440
|
+
type: "TSize",
|
|
5687
6441
|
default: "md",
|
|
5688
6442
|
values: [
|
|
5689
6443
|
"sm",
|
|
@@ -5742,16 +6496,13 @@ var treeui_catalog_default = {
|
|
|
5742
6496
|
},
|
|
5743
6497
|
{
|
|
5744
6498
|
name: "TTextarea",
|
|
5745
|
-
|
|
5746
|
-
aliases: [
|
|
5747
|
-
"TreeTextarea"
|
|
5748
|
-
],
|
|
6499
|
+
aliases: [],
|
|
5749
6500
|
package: "@treeui/vue",
|
|
5750
6501
|
kind: "primitive",
|
|
5751
6502
|
category: "Data Entry",
|
|
5752
6503
|
status: "available",
|
|
5753
6504
|
purpose: "Multi-line text field with size, loading, invalid states, and auto-grow option.",
|
|
5754
|
-
sourceFile: "packages/vue/src/components/
|
|
6505
|
+
sourceFile: "packages/vue/src/components/TTextarea.vue",
|
|
5755
6506
|
storyFile: "apps/docs/src/stories/Textarea.stories.ts",
|
|
5756
6507
|
storyTitle: "Components/Data Entry/Textarea",
|
|
5757
6508
|
manifestFile: "docs/ai/COMPONENTS/textarea.yaml",
|
|
@@ -5763,7 +6514,7 @@ var treeui_catalog_default = {
|
|
|
5763
6514
|
},
|
|
5764
6515
|
{
|
|
5765
6516
|
name: "size",
|
|
5766
|
-
type: "
|
|
6517
|
+
type: "TSize",
|
|
5767
6518
|
default: "md",
|
|
5768
6519
|
values: [
|
|
5769
6520
|
"sm",
|
|
@@ -5848,28 +6599,25 @@ var treeui_catalog_default = {
|
|
|
5848
6599
|
},
|
|
5849
6600
|
{
|
|
5850
6601
|
name: "TTimeline",
|
|
5851
|
-
|
|
5852
|
-
aliases: [
|
|
5853
|
-
"TreeTimeline"
|
|
5854
|
-
],
|
|
6602
|
+
aliases: [],
|
|
5855
6603
|
package: "@treeui/vue",
|
|
5856
6604
|
kind: "data_display",
|
|
5857
6605
|
status: "available",
|
|
5858
6606
|
purpose: "Vertical timeline for activity history, audits, release events, and chronological product updates.",
|
|
5859
|
-
sourceFile: "packages/vue/src/components/
|
|
6607
|
+
sourceFile: "packages/vue/src/components/TTimeline.vue",
|
|
5860
6608
|
storyFile: "apps/docs/src/stories/Timeline.stories.ts",
|
|
5861
6609
|
storyTitle: "Release queued for review",
|
|
5862
6610
|
manifestFile: "docs/ai/COMPONENTS/timeline.yaml",
|
|
5863
6611
|
props: [
|
|
5864
6612
|
{
|
|
5865
6613
|
name: "items",
|
|
5866
|
-
type: "
|
|
6614
|
+
type: "TTimelineItem[]",
|
|
5867
6615
|
default: "[]",
|
|
5868
6616
|
note: "Array of { id?: string | number; title: string; description?: string; meta?: string; timestamp?: string; datetime?: string; tone?: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' }"
|
|
5869
6617
|
},
|
|
5870
6618
|
{
|
|
5871
6619
|
name: "size",
|
|
5872
|
-
type: "
|
|
6620
|
+
type: "TSize",
|
|
5873
6621
|
default: "md",
|
|
5874
6622
|
values: [
|
|
5875
6623
|
"sm",
|
|
@@ -5911,15 +6659,12 @@ var treeui_catalog_default = {
|
|
|
5911
6659
|
},
|
|
5912
6660
|
{
|
|
5913
6661
|
name: "TToast",
|
|
5914
|
-
|
|
5915
|
-
aliases: [
|
|
5916
|
-
"TreeToast"
|
|
5917
|
-
],
|
|
6662
|
+
aliases: [],
|
|
5918
6663
|
package: "@treeui/vue",
|
|
5919
6664
|
kind: "feedback",
|
|
5920
6665
|
status: "available",
|
|
5921
6666
|
purpose: "Ephemeral notification stack driven by a composable. Renders toast items inside a positioned container with auto-dismiss and manual close.",
|
|
5922
|
-
sourceFile: "packages/vue/src/components/
|
|
6667
|
+
sourceFile: "packages/vue/src/components/TToast.vue",
|
|
5923
6668
|
manifestFile: "docs/ai/COMPONENTS/toast.yaml",
|
|
5924
6669
|
props: [],
|
|
5925
6670
|
events: [
|
|
@@ -5977,16 +6722,13 @@ var treeui_catalog_default = {
|
|
|
5977
6722
|
},
|
|
5978
6723
|
{
|
|
5979
6724
|
name: "TToggleGroup",
|
|
5980
|
-
|
|
5981
|
-
aliases: [
|
|
5982
|
-
"TreeToggleGroup"
|
|
5983
|
-
],
|
|
6725
|
+
aliases: [],
|
|
5984
6726
|
package: "@treeui/vue",
|
|
5985
6727
|
kind: "selection",
|
|
5986
6728
|
category: "Data Entry",
|
|
5987
6729
|
status: "available",
|
|
5988
6730
|
purpose: "Segmented button group for single or multiple visible choices.",
|
|
5989
|
-
sourceFile: "packages/vue/src/components/
|
|
6731
|
+
sourceFile: "packages/vue/src/components/TToggleGroup.vue",
|
|
5990
6732
|
storyFile: "apps/docs/src/stories/ToggleGroup.stories.ts",
|
|
5991
6733
|
storyTitle: "Components/Data Entry/ToggleGroup",
|
|
5992
6734
|
manifestFile: "docs/ai/COMPONENTS/toggle-group.yaml",
|
|
@@ -5998,13 +6740,13 @@ var treeui_catalog_default = {
|
|
|
5998
6740
|
},
|
|
5999
6741
|
{
|
|
6000
6742
|
name: "options",
|
|
6001
|
-
type: "
|
|
6743
|
+
type: "TToggleGroupOption[]",
|
|
6002
6744
|
default: "[]",
|
|
6003
6745
|
note: "Array of `{ label, value, disabled? }`."
|
|
6004
6746
|
},
|
|
6005
6747
|
{
|
|
6006
6748
|
name: "selectionMode",
|
|
6007
|
-
type: "
|
|
6749
|
+
type: "TToggleGroupSelectionMode",
|
|
6008
6750
|
default: "single",
|
|
6009
6751
|
values: [
|
|
6010
6752
|
"single",
|
|
@@ -6013,7 +6755,7 @@ var treeui_catalog_default = {
|
|
|
6013
6755
|
},
|
|
6014
6756
|
{
|
|
6015
6757
|
name: "size",
|
|
6016
|
-
type: "
|
|
6758
|
+
type: "TSize",
|
|
6017
6759
|
default: "md",
|
|
6018
6760
|
values: [
|
|
6019
6761
|
"sm",
|
|
@@ -6023,7 +6765,7 @@ var treeui_catalog_default = {
|
|
|
6023
6765
|
},
|
|
6024
6766
|
{
|
|
6025
6767
|
name: "variant",
|
|
6026
|
-
type: "
|
|
6768
|
+
type: "TToggleGroupVariant",
|
|
6027
6769
|
default: "outline",
|
|
6028
6770
|
values: [
|
|
6029
6771
|
"outline",
|
|
@@ -6097,16 +6839,13 @@ var treeui_catalog_default = {
|
|
|
6097
6839
|
},
|
|
6098
6840
|
{
|
|
6099
6841
|
name: "TTooltip",
|
|
6100
|
-
|
|
6101
|
-
aliases: [
|
|
6102
|
-
"TreeTooltip"
|
|
6103
|
-
],
|
|
6842
|
+
aliases: [],
|
|
6104
6843
|
package: "@treeui/vue",
|
|
6105
6844
|
kind: "overlay",
|
|
6106
6845
|
category: "Overlay",
|
|
6107
6846
|
status: "available",
|
|
6108
6847
|
purpose: "Small contextual overlay shown on hover or focus.",
|
|
6109
|
-
sourceFile: "packages/vue/src/components/
|
|
6848
|
+
sourceFile: "packages/vue/src/components/TTooltip.vue",
|
|
6110
6849
|
storyFile: "apps/docs/src/stories/Tooltip.stories.ts",
|
|
6111
6850
|
storyTitle: "Components/Overlay/Tooltip",
|
|
6112
6851
|
manifestFile: "docs/ai/COMPONENTS/tooltip.yaml",
|
|
@@ -6133,7 +6872,7 @@ var treeui_catalog_default = {
|
|
|
6133
6872
|
},
|
|
6134
6873
|
{
|
|
6135
6874
|
name: "side",
|
|
6136
|
-
type: "
|
|
6875
|
+
type: "TTooltipSide",
|
|
6137
6876
|
default: "top",
|
|
6138
6877
|
values: [
|
|
6139
6878
|
"top",
|
|
@@ -6212,18 +6951,15 @@ var treeui_catalog_default = {
|
|
|
6212
6951
|
},
|
|
6213
6952
|
{
|
|
6214
6953
|
name: "TTreeView",
|
|
6215
|
-
|
|
6216
|
-
aliases: [
|
|
6217
|
-
"TreeTreeView"
|
|
6218
|
-
],
|
|
6954
|
+
aliases: [],
|
|
6219
6955
|
package: "@treeui/vue",
|
|
6220
6956
|
kind: "selection",
|
|
6221
6957
|
category: "Navigation & Disclosure",
|
|
6222
6958
|
status: "available",
|
|
6223
6959
|
purpose: "Hierarchical tree view with expansion, keyboard navigation, and single or multiple selection.",
|
|
6224
|
-
sourceFile: "packages/vue/src/components/
|
|
6960
|
+
sourceFile: "packages/vue/src/components/TTreeView.vue",
|
|
6225
6961
|
storyFile: "apps/docs/src/stories/TreeView.stories.ts",
|
|
6226
|
-
storyTitle: "Components/Navigation & Disclosure/
|
|
6962
|
+
storyTitle: "Components/Navigation & Disclosure/TView",
|
|
6227
6963
|
manifestFile: "docs/ai/COMPONENTS/tree-view.yaml",
|
|
6228
6964
|
props: [
|
|
6229
6965
|
{
|
|
@@ -6238,13 +6974,13 @@ var treeui_catalog_default = {
|
|
|
6238
6974
|
},
|
|
6239
6975
|
{
|
|
6240
6976
|
name: "nodes",
|
|
6241
|
-
type: "
|
|
6977
|
+
type: "TTreeViewNode[]",
|
|
6242
6978
|
default: "[]",
|
|
6243
6979
|
note: "Array of `{ id, label, description?, meta?, disabled?, children? }`."
|
|
6244
6980
|
},
|
|
6245
6981
|
{
|
|
6246
6982
|
name: "selectionMode",
|
|
6247
|
-
type: "
|
|
6983
|
+
type: "TTreeViewSelectionMode",
|
|
6248
6984
|
default: "single",
|
|
6249
6985
|
values: [
|
|
6250
6986
|
"single",
|
|
@@ -6775,7 +7511,7 @@ var createTreeuiMcpServer = () => {
|
|
|
6775
7511
|
inputSchema: {
|
|
6776
7512
|
type: "object",
|
|
6777
7513
|
properties: {
|
|
6778
|
-
name: { type: "string", description: "Component name or alias, such as TSelect or
|
|
7514
|
+
name: { type: "string", description: "Component name or alias, such as TSelect or TSelect." }
|
|
6779
7515
|
},
|
|
6780
7516
|
required: ["name"]
|
|
6781
7517
|
}
|