@treeui/mcp 0.4.0 → 0.5.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/README.md +27 -3
- package/dist/{chunk-K6NB25EB.js → chunk-TRJAXZUC.js} +1547 -52
- package/dist/cli.cjs +1545 -52
- package/dist/cli.js +1 -1
- package/dist/index.cjs +1888 -103
- package/dist/index.d.cts +24 -1
- package/dist/index.d.ts +24 -1
- package/dist/index.js +295 -4
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/generated/treeui.catalog.json
|
|
2
2
|
var treeui_catalog_default = {
|
|
3
|
-
generatedAt: "2026-07-
|
|
3
|
+
generatedAt: "2026-07-18T23:35:26.876Z",
|
|
4
4
|
packageName: "@treeui/vue",
|
|
5
|
-
packageVersion: "0.
|
|
5
|
+
packageVersion: "0.16.0",
|
|
6
6
|
decisionGuides: [
|
|
7
7
|
{
|
|
8
8
|
id: "single-choice",
|
|
@@ -152,6 +152,44 @@ var treeui_catalog_default = {
|
|
|
152
152
|
}
|
|
153
153
|
]
|
|
154
154
|
},
|
|
155
|
+
{
|
|
156
|
+
id: "navigate-or-act",
|
|
157
|
+
question: "Navigate somewhere vs. perform an action",
|
|
158
|
+
options: [
|
|
159
|
+
{
|
|
160
|
+
use: "TLink",
|
|
161
|
+
when: [
|
|
162
|
+
"Activating it changes the URL \u2014 an external link, a route, or an in-page anchor.",
|
|
163
|
+
"It should be openable in a new tab, copyable, and crawlable."
|
|
164
|
+
],
|
|
165
|
+
notes: []
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
use: "TButton",
|
|
169
|
+
when: [
|
|
170
|
+
"Activating it runs behavior on the current page \u2014 submit, open an overlay, delete, toggle.",
|
|
171
|
+
"It needs sizes, action variants, or a loading state."
|
|
172
|
+
],
|
|
173
|
+
notes: [
|
|
174
|
+
'Use `variant="ghost"` when an action needs to look understated like a link.'
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
use: "TNavMenu",
|
|
179
|
+
when: [
|
|
180
|
+
"The links are app-section navigation inside a shell or sidebar."
|
|
181
|
+
],
|
|
182
|
+
notes: []
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
use: "TBreadcrumb",
|
|
186
|
+
when: [
|
|
187
|
+
"The links express where the current page sits in a hierarchy."
|
|
188
|
+
],
|
|
189
|
+
notes: []
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
},
|
|
155
193
|
{
|
|
156
194
|
id: "feedback-choice",
|
|
157
195
|
question: "Communicate status or feedback",
|
|
@@ -946,6 +984,22 @@ var treeui_catalog_default = {
|
|
|
946
984
|
type: "boolean",
|
|
947
985
|
default: "true"
|
|
948
986
|
},
|
|
987
|
+
{
|
|
988
|
+
name: "showCollapseButton",
|
|
989
|
+
type: "boolean",
|
|
990
|
+
default: "true",
|
|
991
|
+
note: "Renders the built-in collapse toggle in the sidebar footer. Desktop only, and only when `collapsible` is set \u2014 no need to wire your own."
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
name: "collapseLabel",
|
|
995
|
+
type: "string",
|
|
996
|
+
default: "Collapse sidebar"
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
name: "expandLabel",
|
|
1000
|
+
type: "string",
|
|
1001
|
+
default: "Expand sidebar"
|
|
1002
|
+
},
|
|
949
1003
|
{
|
|
950
1004
|
name: "menuLabel",
|
|
951
1005
|
type: "string",
|
|
@@ -980,14 +1034,26 @@ var treeui_catalog_default = {
|
|
|
980
1034
|
{
|
|
981
1035
|
name: "header"
|
|
982
1036
|
},
|
|
1037
|
+
{
|
|
1038
|
+
name: "header-start"
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
name: "sidebar-header"
|
|
1042
|
+
},
|
|
983
1043
|
{
|
|
984
1044
|
name: "sidebar"
|
|
985
1045
|
},
|
|
1046
|
+
{
|
|
1047
|
+
name: "sidebar-footer"
|
|
1048
|
+
},
|
|
986
1049
|
{
|
|
987
1050
|
name: "default"
|
|
988
1051
|
},
|
|
989
1052
|
{
|
|
990
1053
|
name: "menu-icon"
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
name: "collapse-icon"
|
|
991
1057
|
}
|
|
992
1058
|
],
|
|
993
1059
|
a11y: [
|
|
@@ -1015,7 +1081,10 @@ var treeui_catalog_default = {
|
|
|
1015
1081
|
"left_and_right_variants: true",
|
|
1016
1082
|
"locks_body_scroll_while_drawer_open: true",
|
|
1017
1083
|
"overlay_click_closes_when_enabled: true",
|
|
1018
|
-
"exposes_slot_props_with_mobile_collapsed_and_toggles: true"
|
|
1084
|
+
"exposes_slot_props_with_mobile_collapsed_and_toggles: true",
|
|
1085
|
+
"sidebar_footer_pinned_to_bottom: true",
|
|
1086
|
+
"sidebar_header_and_footer_inset_to_align_with_nav_icons: true",
|
|
1087
|
+
"header_mirrors_shell_columns_when_header_start_is_used: true"
|
|
1019
1088
|
],
|
|
1020
1089
|
selection: {
|
|
1021
1090
|
keywords: [
|
|
@@ -1324,6 +1393,18 @@ var treeui_catalog_default = {
|
|
|
1324
1393
|
name: "type",
|
|
1325
1394
|
type: "button | submit | reset",
|
|
1326
1395
|
default: "button"
|
|
1396
|
+
},
|
|
1397
|
+
{
|
|
1398
|
+
name: "block",
|
|
1399
|
+
type: "boolean",
|
|
1400
|
+
default: "false",
|
|
1401
|
+
note: "Stretches the button to the full width of its container. Useful for menu rows and mobile CTAs."
|
|
1402
|
+
},
|
|
1403
|
+
{
|
|
1404
|
+
name: "align",
|
|
1405
|
+
type: "start | center | end",
|
|
1406
|
+
default: "center",
|
|
1407
|
+
note: "Content alignment; only meaningful together with `block`. Use `start` for left-aligned icon+label menu rows."
|
|
1327
1408
|
}
|
|
1328
1409
|
],
|
|
1329
1410
|
events: [
|
|
@@ -1389,7 +1470,6 @@ var treeui_catalog_default = {
|
|
|
1389
1470
|
values: [
|
|
1390
1471
|
"outline",
|
|
1391
1472
|
"soft",
|
|
1392
|
-
"solid",
|
|
1393
1473
|
"inset"
|
|
1394
1474
|
]
|
|
1395
1475
|
},
|
|
@@ -1428,7 +1508,8 @@ var treeui_catalog_default = {
|
|
|
1428
1508
|
a11y: [],
|
|
1429
1509
|
behavior: [
|
|
1430
1510
|
"body_wrapper_class: t-card__body",
|
|
1431
|
-
"
|
|
1511
|
+
'variant_effects: {"outline":"Base surface with a default border. The styling baseline \u2014 the `t-card--outline` class is emitted but carries no CSS rule of its own.","soft":"Subtle tinted surface (bg-subtle), same border and shadow as outline.","inset":"Same tinted surface as soft, but with no shadow, so it reads as recessed inside another surface."}',
|
|
1512
|
+
"note: No card variant inverts its surface, so nested content inherits the normal color tokens. For a high-emphasis card, use a brand-colored border rather than an inverted background."
|
|
1432
1513
|
],
|
|
1433
1514
|
selection: {
|
|
1434
1515
|
keywords: [
|
|
@@ -1757,6 +1838,92 @@ var treeui_catalog_default = {
|
|
|
1757
1838
|
},
|
|
1758
1839
|
recipes: []
|
|
1759
1840
|
},
|
|
1841
|
+
{
|
|
1842
|
+
name: "TColorSwatch",
|
|
1843
|
+
aliases: [],
|
|
1844
|
+
package: "@treeui/vue",
|
|
1845
|
+
kind: "form",
|
|
1846
|
+
category: "Data Entry",
|
|
1847
|
+
status: "available",
|
|
1848
|
+
purpose: "Pick a colour from a row of preset swatches, with an optional native colour input for an arbitrary value. Built for accent/brand pickers.",
|
|
1849
|
+
sourceFile: "packages/vue/src/components/TColorSwatch.vue",
|
|
1850
|
+
storyFile: "apps/docs/src/stories/ColorSwatch.stories.ts",
|
|
1851
|
+
storyTitle: "Components/Data Entry/ColorSwatch",
|
|
1852
|
+
manifestFile: "docs/ai/COMPONENTS/color-swatch.yaml",
|
|
1853
|
+
props: [
|
|
1854
|
+
{
|
|
1855
|
+
name: "modelValue",
|
|
1856
|
+
type: "string",
|
|
1857
|
+
default: "undefined",
|
|
1858
|
+
note: "Selected colour as a hex string. Matching is case-insensitive."
|
|
1859
|
+
},
|
|
1860
|
+
{
|
|
1861
|
+
name: "options",
|
|
1862
|
+
type: "TColorSwatchOption[]",
|
|
1863
|
+
default: "[]",
|
|
1864
|
+
note: "Preset swatches, each `{ label, value }`. `label` becomes the button's accessible name."
|
|
1865
|
+
},
|
|
1866
|
+
{
|
|
1867
|
+
name: "allowCustom",
|
|
1868
|
+
type: "boolean",
|
|
1869
|
+
default: "false",
|
|
1870
|
+
note: 'Appends a native `<input type="color">` for values outside the presets.'
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
name: "size",
|
|
1874
|
+
type: "TSize",
|
|
1875
|
+
default: "md",
|
|
1876
|
+
values: [
|
|
1877
|
+
"sm",
|
|
1878
|
+
"md",
|
|
1879
|
+
"lg"
|
|
1880
|
+
]
|
|
1881
|
+
},
|
|
1882
|
+
{
|
|
1883
|
+
name: "label",
|
|
1884
|
+
type: "string",
|
|
1885
|
+
default: "Color",
|
|
1886
|
+
note: 'Accessible label for the swatch group (`role="group"`).'
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
name: "customLabel",
|
|
1890
|
+
type: "string",
|
|
1891
|
+
default: "Custom color"
|
|
1892
|
+
},
|
|
1893
|
+
{
|
|
1894
|
+
name: "disabled",
|
|
1895
|
+
type: "boolean",
|
|
1896
|
+
default: "false"
|
|
1897
|
+
}
|
|
1898
|
+
],
|
|
1899
|
+
events: [
|
|
1900
|
+
{
|
|
1901
|
+
name: "update:modelValue"
|
|
1902
|
+
}
|
|
1903
|
+
],
|
|
1904
|
+
slots: [],
|
|
1905
|
+
a11y: [
|
|
1906
|
+
'Wrapper is `role="group"` labelled by `label`.',
|
|
1907
|
+
"Each swatch is a native button with `aria-pressed` reflecting selection and `aria-label` from the option label.",
|
|
1908
|
+
"Selection is conveyed by an outline (not colour alone), since the swatch's own colour is the content."
|
|
1909
|
+
],
|
|
1910
|
+
behavior: [
|
|
1911
|
+
"emits_on_preset_click: true",
|
|
1912
|
+
"emits_on_custom_input: true",
|
|
1913
|
+
"blocks_interaction_when_disabled: true"
|
|
1914
|
+
],
|
|
1915
|
+
selection: {
|
|
1916
|
+
keywords: [],
|
|
1917
|
+
useWhen: [],
|
|
1918
|
+
avoidWhen: [],
|
|
1919
|
+
alternatives: []
|
|
1920
|
+
},
|
|
1921
|
+
setup: {
|
|
1922
|
+
required: [],
|
|
1923
|
+
notes: []
|
|
1924
|
+
},
|
|
1925
|
+
recipes: []
|
|
1926
|
+
},
|
|
1760
1927
|
{
|
|
1761
1928
|
name: "TCombobox",
|
|
1762
1929
|
aliases: [],
|
|
@@ -2107,12 +2274,14 @@ var treeui_catalog_default = {
|
|
|
2107
2274
|
{
|
|
2108
2275
|
name: "padded",
|
|
2109
2276
|
type: "boolean",
|
|
2110
|
-
default: "true"
|
|
2277
|
+
default: "true",
|
|
2278
|
+
note: "Adds `.is-padded`, i.e. an inline padding of `clamp(var(--tree-space-4), 3vw, var(--tree-space-6))`.\n"
|
|
2111
2279
|
},
|
|
2112
2280
|
{
|
|
2113
2281
|
name: "centered",
|
|
2114
2282
|
type: "boolean",
|
|
2115
|
-
default: "true"
|
|
2283
|
+
default: "true",
|
|
2284
|
+
note: "Adds `.is-centered`, i.e. `margin-inline: auto`."
|
|
2116
2285
|
}
|
|
2117
2286
|
],
|
|
2118
2287
|
events: [],
|
|
@@ -3007,6 +3176,7 @@ var treeui_catalog_default = {
|
|
|
3007
3176
|
"role: menu",
|
|
3008
3177
|
"trigger_aria_haspopup: menu",
|
|
3009
3178
|
"trigger_aria_expanded: true",
|
|
3179
|
+
"trigger_aria_controls: menu id, while open",
|
|
3010
3180
|
"aria_disabled_on_disabled_items: true",
|
|
3011
3181
|
"focus_visible_on_trigger: true",
|
|
3012
3182
|
"keyboard_arrow_navigation: true",
|
|
@@ -3016,9 +3186,11 @@ var treeui_catalog_default = {
|
|
|
3016
3186
|
],
|
|
3017
3187
|
behavior: [
|
|
3018
3188
|
"outside_click_closes_menu: true",
|
|
3019
|
-
"
|
|
3189
|
+
"outside_click_restores_focus: false",
|
|
3020
3190
|
"chevron_rotates_when_open: true",
|
|
3021
|
-
"menu_grows_to_fit_items_without_wrapping: true"
|
|
3191
|
+
"menu_grows_to_fit_items_without_wrapping: true",
|
|
3192
|
+
"opening_focuses_first_enabled_item: true",
|
|
3193
|
+
'focus_restores_on_close: {"value":true,"detail":"Focus returns to the trigger when the menu closes from inside it \u2014 selecting an item or pressing Escape. It deliberately does NOT move focus on an outside click, where the pointer has already placed focus elsewhere.\\n","applies_to_custom_trigger":true}'
|
|
3022
3194
|
],
|
|
3023
3195
|
selection: {
|
|
3024
3196
|
keywords: [
|
|
@@ -3414,7 +3586,7 @@ var treeui_catalog_default = {
|
|
|
3414
3586
|
name: "htmlFor",
|
|
3415
3587
|
type: "string",
|
|
3416
3588
|
required: false,
|
|
3417
|
-
description: "
|
|
3589
|
+
description: "Rendered verbatim as the <label for> attribute. There is no id generation: when omitted, the label carries no `for` and is NOT associated with any control. The consumer must pass this AND set the same value as `id` on the child control.\n"
|
|
3418
3590
|
},
|
|
3419
3591
|
{
|
|
3420
3592
|
name: "error",
|
|
@@ -3472,10 +3644,11 @@ var treeui_catalog_default = {
|
|
|
3472
3644
|
}
|
|
3473
3645
|
],
|
|
3474
3646
|
a11y: [
|
|
3475
|
-
"
|
|
3647
|
+
"Renders a native <label> element, but ONLY when `label` or the `label` slot is provided.",
|
|
3476
3648
|
"Error messages are wrapped in role='alert' for screen reader announcements.",
|
|
3477
3649
|
"Required indicator (*) is aria-hidden to avoid redundant announcements; use aria-required on the input itself.",
|
|
3478
|
-
"Error takes precedence over hint to avoid conflicting messages."
|
|
3650
|
+
"Error takes precedence over hint to avoid conflicting messages.",
|
|
3651
|
+
"Extra attrs land on the root <div> (inheritAttrs: false), not on the child control."
|
|
3479
3652
|
],
|
|
3480
3653
|
behavior: [],
|
|
3481
3654
|
selection: {
|
|
@@ -3740,6 +3913,20 @@ var treeui_catalog_default = {
|
|
|
3740
3913
|
"lg"
|
|
3741
3914
|
]
|
|
3742
3915
|
},
|
|
3916
|
+
{
|
|
3917
|
+
name: "width",
|
|
3918
|
+
type: "TFieldWidth",
|
|
3919
|
+
default: "full",
|
|
3920
|
+
values: [
|
|
3921
|
+
"xs",
|
|
3922
|
+
"sm",
|
|
3923
|
+
"md",
|
|
3924
|
+
"lg",
|
|
3925
|
+
"xl",
|
|
3926
|
+
"full"
|
|
3927
|
+
],
|
|
3928
|
+
note: "Inline-size cap (max-inline-size). Fluid by default; use instead of an inline width style."
|
|
3929
|
+
},
|
|
3743
3930
|
{
|
|
3744
3931
|
name: "disabled",
|
|
3745
3932
|
type: "boolean",
|
|
@@ -3824,6 +4011,43 @@ var treeui_catalog_default = {
|
|
|
3824
4011
|
"tag-input"
|
|
3825
4012
|
]
|
|
3826
4013
|
},
|
|
4014
|
+
{
|
|
4015
|
+
name: "TKbd",
|
|
4016
|
+
aliases: [],
|
|
4017
|
+
package: "@treeui/vue",
|
|
4018
|
+
kind: "primitive",
|
|
4019
|
+
category: "Data Display",
|
|
4020
|
+
status: "available",
|
|
4021
|
+
purpose: "Keyboard-key hint (e.g. \u2318K, Esc, Ctrl) rendered as a native <kbd> with the library's chip styling.",
|
|
4022
|
+
sourceFile: "packages/vue/src/components/TKbd.vue",
|
|
4023
|
+
storyFile: "apps/docs/src/stories/Kbd.stories.ts",
|
|
4024
|
+
storyTitle: "Components/Data Display/Kbd",
|
|
4025
|
+
manifestFile: "docs/ai/COMPONENTS/kbd.yaml",
|
|
4026
|
+
props: [],
|
|
4027
|
+
events: [],
|
|
4028
|
+
slots: [
|
|
4029
|
+
{
|
|
4030
|
+
name: "default"
|
|
4031
|
+
}
|
|
4032
|
+
],
|
|
4033
|
+
a11y: [
|
|
4034
|
+
"Uses the native <kbd> element so assistive tech announces it as keyboard input."
|
|
4035
|
+
],
|
|
4036
|
+
behavior: [
|
|
4037
|
+
"renders_native_kbd_element: true"
|
|
4038
|
+
],
|
|
4039
|
+
selection: {
|
|
4040
|
+
keywords: [],
|
|
4041
|
+
useWhen: [],
|
|
4042
|
+
avoidWhen: [],
|
|
4043
|
+
alternatives: []
|
|
4044
|
+
},
|
|
4045
|
+
setup: {
|
|
4046
|
+
required: [],
|
|
4047
|
+
notes: []
|
|
4048
|
+
},
|
|
4049
|
+
recipes: []
|
|
4050
|
+
},
|
|
3827
4051
|
{
|
|
3828
4052
|
name: "TLink",
|
|
3829
4053
|
aliases: [],
|
|
@@ -3885,10 +4109,39 @@ var treeui_catalog_default = {
|
|
|
3885
4109
|
],
|
|
3886
4110
|
behavior: [],
|
|
3887
4111
|
selection: {
|
|
3888
|
-
keywords: [
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
4112
|
+
keywords: [
|
|
4113
|
+
"link",
|
|
4114
|
+
"anchor",
|
|
4115
|
+
"hyperlink",
|
|
4116
|
+
"navigation",
|
|
4117
|
+
"router link",
|
|
4118
|
+
"external link",
|
|
4119
|
+
"href",
|
|
4120
|
+
"to"
|
|
4121
|
+
],
|
|
4122
|
+
useWhen: [
|
|
4123
|
+
"The action navigates somewhere \u2014 a URL, a route, or an anchor on the page.",
|
|
4124
|
+
"You want consistent link styling with `default`, `muted`, or `danger` emphasis.",
|
|
4125
|
+
"You want a component that renders RouterLink when vue-router is installed and a plain <a> when it is not, without branching in the template."
|
|
4126
|
+
],
|
|
4127
|
+
avoidWhen: [
|
|
4128
|
+
"The control performs an action rather than navigating (submit, open a dialog, delete) \u2014 that is a button, even if it looks like a link.",
|
|
4129
|
+
"You need a full call-to-action surface with variants, sizes, and a loading state."
|
|
4130
|
+
],
|
|
4131
|
+
alternatives: [
|
|
4132
|
+
{
|
|
4133
|
+
component: "TButton",
|
|
4134
|
+
when: 'The control performs an action. Use `variant="ghost"` for a low-emphasis, link-like button.'
|
|
4135
|
+
},
|
|
4136
|
+
{
|
|
4137
|
+
component: "TBreadcrumb",
|
|
4138
|
+
when: "The links form a hierarchy trail."
|
|
4139
|
+
},
|
|
4140
|
+
{
|
|
4141
|
+
component: "TNavMenu",
|
|
4142
|
+
when: "The links are app-section navigation in a shell or sidebar."
|
|
4143
|
+
}
|
|
4144
|
+
]
|
|
3892
4145
|
},
|
|
3893
4146
|
setup: {
|
|
3894
4147
|
required: [],
|
|
@@ -3902,7 +4155,8 @@ var treeui_catalog_default = {
|
|
|
3902
4155
|
package: "@treeui/vue",
|
|
3903
4156
|
category: "Form",
|
|
3904
4157
|
status: "stable",
|
|
3905
|
-
description: "A
|
|
4158
|
+
description: "A Markdown editor with an always-visible side-by-side live preview, toolbar formatting, keyboard shortcuts, and image paste/drop upload support.\n",
|
|
4159
|
+
sourceFile: "packages/vue/src/components/TMarkdownEditor.vue",
|
|
3906
4160
|
storyFile: "apps/docs/src/stories/MarkdownEditor.stories.ts",
|
|
3907
4161
|
storyTitle: "Components/Form/MarkdownEditor",
|
|
3908
4162
|
manifestFile: "docs/ai/COMPONENTS/markdown-editor.yaml",
|
|
@@ -3938,6 +4192,12 @@ var treeui_catalog_default = {
|
|
|
3938
4192
|
type: "(file: File) => Promise<string>",
|
|
3939
4193
|
default: "undefined",
|
|
3940
4194
|
description: "Async function that receives a File and returns the uploaded image URL. When not provided, pasting an image inserts an empty markdown image tag.\n"
|
|
4195
|
+
},
|
|
4196
|
+
{
|
|
4197
|
+
name: "sanitize",
|
|
4198
|
+
type: "(html: string) => string",
|
|
4199
|
+
default: "undefined",
|
|
4200
|
+
description: "Optional extra sanitizer applied to the rendered preview HTML as the final step, after the built-in rendering. It is an ADDITIVE escape hatch, not a toggle: pass DOMPurify or a stricter policy of your own instead of forking the component.\n"
|
|
3941
4201
|
}
|
|
3942
4202
|
],
|
|
3943
4203
|
events: [
|
|
@@ -3964,12 +4224,12 @@ var treeui_catalog_default = {
|
|
|
3964
4224
|
}
|
|
3965
4225
|
],
|
|
3966
4226
|
a11y: [
|
|
3967
|
-
'Toolbar has role="toolbar" with aria-label.',
|
|
3968
|
-
'
|
|
3969
|
-
'Preview pane
|
|
4227
|
+
'Toolbar has role="toolbar" with aria-label="Markdown formatting".',
|
|
4228
|
+
'Toolbar groups are separated by elements with role="separator".',
|
|
4229
|
+
'Preview pane carries aria-label="Markdown preview".',
|
|
3970
4230
|
'Upload status bar uses role="status" and aria-live="polite".',
|
|
3971
4231
|
"All toolbar buttons have title attributes describing the action.",
|
|
3972
|
-
"Textarea has aria-label
|
|
4232
|
+
"Textarea has aria-label (mirrors the placeholder text)."
|
|
3973
4233
|
],
|
|
3974
4234
|
behavior: [],
|
|
3975
4235
|
selection: {
|
|
@@ -5045,7 +5305,7 @@ var treeui_catalog_default = {
|
|
|
5045
5305
|
props: [
|
|
5046
5306
|
{
|
|
5047
5307
|
name: "plans",
|
|
5048
|
-
type: "
|
|
5308
|
+
type: "TPricingPlan[]",
|
|
5049
5309
|
required: true,
|
|
5050
5310
|
description: "Array of plan objects. Each plan supports the same props as PricingCard (title, description, price, currency, period, features, highlighted, badge, buttonText, disabled).\n"
|
|
5051
5311
|
},
|
|
@@ -5066,14 +5326,14 @@ var treeui_catalog_default = {
|
|
|
5066
5326
|
{
|
|
5067
5327
|
name: "select",
|
|
5068
5328
|
description: "Emitted when any plan's CTA is clicked. Provides the plan data and index.",
|
|
5069
|
-
payload: "[plan:
|
|
5329
|
+
payload: "[plan: TPricingPlan, index: number]"
|
|
5070
5330
|
}
|
|
5071
5331
|
],
|
|
5072
5332
|
slots: [
|
|
5073
5333
|
{
|
|
5074
5334
|
name: "plan",
|
|
5075
5335
|
description: "Custom rendering for each plan card.",
|
|
5076
|
-
note: "{ plan:
|
|
5336
|
+
note: "{ plan: TPricingPlan, index: number }"
|
|
5077
5337
|
}
|
|
5078
5338
|
],
|
|
5079
5339
|
a11y: [
|
|
@@ -5232,7 +5492,7 @@ var treeui_catalog_default = {
|
|
|
5232
5492
|
package: "@treeui/vue",
|
|
5233
5493
|
category: "Feedback",
|
|
5234
5494
|
status: "draft",
|
|
5235
|
-
description: "Determinate and indeterminate progress indicator.
|
|
5495
|
+
description: "Determinate and indeterminate progress indicator. Renders a linear bar only \u2014 there is no circular, ring, or radial variant, and no `variant`/`shape`/`type` prop. Compose one yourself if you need it.\n",
|
|
5236
5496
|
storyFile: "apps/docs/src/stories/Progress.stories.ts",
|
|
5237
5497
|
storyTitle: "Components/Feedback/Progress",
|
|
5238
5498
|
manifestFile: "docs/ai/COMPONENTS/progress.yaml",
|
|
@@ -5272,7 +5532,8 @@ var treeui_catalog_default = {
|
|
|
5272
5532
|
"role: progressbar",
|
|
5273
5533
|
'attributes: ["aria-valuenow (omitted when indeterminate)","aria-valuemin (always 0)","aria-valuemax (always 100)","aria-label"]',
|
|
5274
5534
|
"keyboard:",
|
|
5275
|
-
"notes: Indeterminate state omits aria-valuenow so assistive tech announces the bar as indeterminate."
|
|
5535
|
+
"notes: Indeterminate state omits aria-valuenow so assistive tech announces the bar as indeterminate.",
|
|
5536
|
+
"value_is_normalized: aria-valuenow is `value / max` expressed as a 0\u2013100 percentage, not the raw `value`. aria-valuemax stays 100 regardless of the `max` prop, so the two always agree. The `label` is also repeated in a visually hidden span."
|
|
5276
5537
|
],
|
|
5277
5538
|
behavior: [],
|
|
5278
5539
|
selection: {
|
|
@@ -5474,6 +5735,20 @@ var treeui_catalog_default = {
|
|
|
5474
5735
|
"lg"
|
|
5475
5736
|
]
|
|
5476
5737
|
},
|
|
5738
|
+
{
|
|
5739
|
+
name: "width",
|
|
5740
|
+
type: "TFieldWidth",
|
|
5741
|
+
default: "full",
|
|
5742
|
+
values: [
|
|
5743
|
+
"xs",
|
|
5744
|
+
"sm",
|
|
5745
|
+
"md",
|
|
5746
|
+
"lg",
|
|
5747
|
+
"xl",
|
|
5748
|
+
"full"
|
|
5749
|
+
],
|
|
5750
|
+
note: "Inline-size cap (max-inline-size). Fluid by default; use instead of an inline width style."
|
|
5751
|
+
},
|
|
5477
5752
|
{
|
|
5478
5753
|
name: "disabled",
|
|
5479
5754
|
type: "boolean",
|
|
@@ -5628,10 +5903,13 @@ var treeui_catalog_default = {
|
|
|
5628
5903
|
],
|
|
5629
5904
|
slots: [
|
|
5630
5905
|
{
|
|
5631
|
-
name: "item"
|
|
5906
|
+
name: "item",
|
|
5907
|
+
description: `Replaces the default row body (indicator, label, description, meta). Renders INSIDE the row's <button role="option">.
|
|
5908
|
+
`
|
|
5632
5909
|
},
|
|
5633
5910
|
{
|
|
5634
|
-
name: "empty"
|
|
5911
|
+
name: "empty",
|
|
5912
|
+
description: "Replaces `emptyText` when `items` is empty."
|
|
5635
5913
|
}
|
|
5636
5914
|
],
|
|
5637
5915
|
a11y: [
|
|
@@ -5644,7 +5922,8 @@ var treeui_catalog_default = {
|
|
|
5644
5922
|
],
|
|
5645
5923
|
behavior: [
|
|
5646
5924
|
"can_be_controlled_or_uncontrolled: true",
|
|
5647
|
-
"
|
|
5925
|
+
"supports_presentational_row_slot: true",
|
|
5926
|
+
"supports_interactive_content_in_rows: false",
|
|
5648
5927
|
"empty_state_text_supported: true"
|
|
5649
5928
|
],
|
|
5650
5929
|
selection: {
|
|
@@ -5888,6 +6167,46 @@ var treeui_catalog_default = {
|
|
|
5888
6167
|
},
|
|
5889
6168
|
recipes: []
|
|
5890
6169
|
},
|
|
6170
|
+
{
|
|
6171
|
+
name: "TSpacer",
|
|
6172
|
+
aliases: [],
|
|
6173
|
+
package: "@treeui/vue",
|
|
6174
|
+
kind: "layout",
|
|
6175
|
+
category: "Layout",
|
|
6176
|
+
status: "available",
|
|
6177
|
+
purpose: "Flexible spacer that absorbs free space between siblings in a flex layout (e.g. TStack), replacing hand-written margin:auto / flex:1.",
|
|
6178
|
+
sourceFile: "packages/vue/src/components/TSpacer.vue",
|
|
6179
|
+
storyFile: "apps/docs/src/stories/Spacer.stories.ts",
|
|
6180
|
+
storyTitle: "Components/Layout/Spacer",
|
|
6181
|
+
manifestFile: "docs/ai/COMPONENTS/spacer.yaml",
|
|
6182
|
+
props: [
|
|
6183
|
+
{
|
|
6184
|
+
name: "as",
|
|
6185
|
+
type: "string",
|
|
6186
|
+
default: "div"
|
|
6187
|
+
}
|
|
6188
|
+
],
|
|
6189
|
+
events: [],
|
|
6190
|
+
slots: [],
|
|
6191
|
+
a11y: [
|
|
6192
|
+
"Rendered with aria-hidden='true'; it is a layout-only element with no content."
|
|
6193
|
+
],
|
|
6194
|
+
behavior: [
|
|
6195
|
+
"grows_to_fill_free_space: true",
|
|
6196
|
+
"pushes_siblings_apart_or_to_ends: true"
|
|
6197
|
+
],
|
|
6198
|
+
selection: {
|
|
6199
|
+
keywords: [],
|
|
6200
|
+
useWhen: [],
|
|
6201
|
+
avoidWhen: [],
|
|
6202
|
+
alternatives: []
|
|
6203
|
+
},
|
|
6204
|
+
setup: {
|
|
6205
|
+
required: [],
|
|
6206
|
+
notes: []
|
|
6207
|
+
},
|
|
6208
|
+
recipes: []
|
|
6209
|
+
},
|
|
5891
6210
|
{
|
|
5892
6211
|
name: "TSparkline",
|
|
5893
6212
|
aliases: [],
|
|
@@ -6061,49 +6380,125 @@ var treeui_catalog_default = {
|
|
|
6061
6380
|
recipes: []
|
|
6062
6381
|
},
|
|
6063
6382
|
{
|
|
6064
|
-
name: "
|
|
6383
|
+
name: "TSplit",
|
|
6065
6384
|
aliases: [],
|
|
6066
6385
|
package: "@treeui/vue",
|
|
6067
6386
|
kind: "layout",
|
|
6068
6387
|
category: "Layout",
|
|
6069
6388
|
status: "available",
|
|
6070
|
-
purpose: "
|
|
6071
|
-
sourceFile: "packages/vue/src/components/
|
|
6072
|
-
storyFile: "apps/docs/src/stories/
|
|
6073
|
-
storyTitle: "Components/Layout/
|
|
6074
|
-
manifestFile: "docs/ai/COMPONENTS/
|
|
6389
|
+
purpose: "Responsive two-pane layout (a wider main pane + a narrower aside) that sits side by side and stacks to one column when narrow \u2014 no media query.",
|
|
6390
|
+
sourceFile: "packages/vue/src/components/TSplit.vue",
|
|
6391
|
+
storyFile: "apps/docs/src/stories/Split.stories.ts",
|
|
6392
|
+
storyTitle: "Components/Layout/Split",
|
|
6393
|
+
manifestFile: "docs/ai/COMPONENTS/split.yaml",
|
|
6075
6394
|
props: [
|
|
6076
6395
|
{
|
|
6077
6396
|
name: "as",
|
|
6078
6397
|
type: "string",
|
|
6079
6398
|
default: "div"
|
|
6080
6399
|
},
|
|
6081
|
-
{
|
|
6082
|
-
name: "direction",
|
|
6083
|
-
type: "TStackDirection",
|
|
6084
|
-
default: "vertical",
|
|
6085
|
-
values: [
|
|
6086
|
-
"vertical",
|
|
6087
|
-
"horizontal"
|
|
6088
|
-
]
|
|
6089
|
-
},
|
|
6090
6400
|
{
|
|
6091
6401
|
name: "gap",
|
|
6092
6402
|
type: "string",
|
|
6093
|
-
default: "var(--tree-space-
|
|
6403
|
+
default: "var(--tree-space-5)"
|
|
6094
6404
|
},
|
|
6095
6405
|
{
|
|
6096
|
-
name: "
|
|
6097
|
-
type: "
|
|
6098
|
-
default: "
|
|
6406
|
+
name: "ratio",
|
|
6407
|
+
type: "number",
|
|
6408
|
+
default: "2",
|
|
6409
|
+
note: "How many times faster the main pane grows than the aside pane."
|
|
6099
6410
|
},
|
|
6100
6411
|
{
|
|
6101
|
-
name: "
|
|
6412
|
+
name: "minWidth",
|
|
6102
6413
|
type: "string",
|
|
6103
|
-
default: "
|
|
6414
|
+
default: "18rem",
|
|
6415
|
+
note: "Min width each pane keeps before the layout wraps to a single column (flex-wrap, no @media)."
|
|
6104
6416
|
},
|
|
6105
6417
|
{
|
|
6106
|
-
name: "
|
|
6418
|
+
name: "side",
|
|
6419
|
+
type: "start | end",
|
|
6420
|
+
default: "end",
|
|
6421
|
+
note: "Which side the aside pane sits on when side by side."
|
|
6422
|
+
},
|
|
6423
|
+
{
|
|
6424
|
+
name: "align",
|
|
6425
|
+
type: "string",
|
|
6426
|
+
default: "start",
|
|
6427
|
+
note: "Cross-axis alignment (align-items)."
|
|
6428
|
+
}
|
|
6429
|
+
],
|
|
6430
|
+
events: [],
|
|
6431
|
+
slots: [
|
|
6432
|
+
{
|
|
6433
|
+
name: "default"
|
|
6434
|
+
},
|
|
6435
|
+
{
|
|
6436
|
+
name: "aside"
|
|
6437
|
+
}
|
|
6438
|
+
],
|
|
6439
|
+
a11y: [
|
|
6440
|
+
"Layout-only wrapper; semantics come from the slotted content."
|
|
6441
|
+
],
|
|
6442
|
+
behavior: [
|
|
6443
|
+
"wraps_to_single_column_when_narrow: true",
|
|
6444
|
+
"media_query_free: true"
|
|
6445
|
+
],
|
|
6446
|
+
selection: {
|
|
6447
|
+
keywords: [],
|
|
6448
|
+
useWhen: [],
|
|
6449
|
+
avoidWhen: [],
|
|
6450
|
+
alternatives: []
|
|
6451
|
+
},
|
|
6452
|
+
setup: {
|
|
6453
|
+
required: [],
|
|
6454
|
+
notes: []
|
|
6455
|
+
},
|
|
6456
|
+
recipes: []
|
|
6457
|
+
},
|
|
6458
|
+
{
|
|
6459
|
+
name: "TStack",
|
|
6460
|
+
aliases: [],
|
|
6461
|
+
package: "@treeui/vue",
|
|
6462
|
+
kind: "layout",
|
|
6463
|
+
category: "Layout",
|
|
6464
|
+
status: "available",
|
|
6465
|
+
purpose: "One-dimensional spacing and alignment wrapper for vertical or horizontal compositions.",
|
|
6466
|
+
sourceFile: "packages/vue/src/components/TStack.vue",
|
|
6467
|
+
storyFile: "apps/docs/src/stories/Stack.stories.ts",
|
|
6468
|
+
storyTitle: "Components/Layout/Stack",
|
|
6469
|
+
manifestFile: "docs/ai/COMPONENTS/stack.yaml",
|
|
6470
|
+
props: [
|
|
6471
|
+
{
|
|
6472
|
+
name: "as",
|
|
6473
|
+
type: "string",
|
|
6474
|
+
default: "div"
|
|
6475
|
+
},
|
|
6476
|
+
{
|
|
6477
|
+
name: "direction",
|
|
6478
|
+
type: "TStackDirection",
|
|
6479
|
+
default: "vertical",
|
|
6480
|
+
values: [
|
|
6481
|
+
"vertical",
|
|
6482
|
+
"horizontal"
|
|
6483
|
+
]
|
|
6484
|
+
},
|
|
6485
|
+
{
|
|
6486
|
+
name: "gap",
|
|
6487
|
+
type: "string",
|
|
6488
|
+
default: "var(--tree-space-4)"
|
|
6489
|
+
},
|
|
6490
|
+
{
|
|
6491
|
+
name: "align",
|
|
6492
|
+
type: "string",
|
|
6493
|
+
default: "stretch"
|
|
6494
|
+
},
|
|
6495
|
+
{
|
|
6496
|
+
name: "justify",
|
|
6497
|
+
type: "string",
|
|
6498
|
+
default: "flex-start"
|
|
6499
|
+
},
|
|
6500
|
+
{
|
|
6501
|
+
name: "wrap",
|
|
6107
6502
|
type: "boolean",
|
|
6108
6503
|
default: "false"
|
|
6109
6504
|
},
|
|
@@ -6111,6 +6506,12 @@ var treeui_catalog_default = {
|
|
|
6111
6506
|
name: "reverse",
|
|
6112
6507
|
type: "boolean",
|
|
6113
6508
|
default: "false"
|
|
6509
|
+
},
|
|
6510
|
+
{
|
|
6511
|
+
name: "grow",
|
|
6512
|
+
type: "boolean",
|
|
6513
|
+
default: "false",
|
|
6514
|
+
note: "Expands the stack to fill available space along its parent's main axis (flex: 1 with min-size 0). Use it to make a sidebar column fill its container height."
|
|
6114
6515
|
}
|
|
6115
6516
|
],
|
|
6116
6517
|
events: [],
|
|
@@ -6158,6 +6559,80 @@ var treeui_catalog_default = {
|
|
|
6158
6559
|
"chart-surface"
|
|
6159
6560
|
]
|
|
6160
6561
|
},
|
|
6562
|
+
{
|
|
6563
|
+
name: "TStackItem",
|
|
6564
|
+
aliases: [],
|
|
6565
|
+
package: "@treeui/vue",
|
|
6566
|
+
kind: "layout",
|
|
6567
|
+
category: "Layout",
|
|
6568
|
+
status: "available",
|
|
6569
|
+
purpose: "Per-child flex control inside a TStack \u2014 grow, shrink, basis, min width and align-self \u2014 so one item can fill the row without hand-written CSS.",
|
|
6570
|
+
sourceFile: "packages/vue/src/components/TStackItem.vue",
|
|
6571
|
+
storyFile: "apps/docs/src/stories/StackItem.stories.ts",
|
|
6572
|
+
storyTitle: "Components/Layout/StackItem",
|
|
6573
|
+
manifestFile: "docs/ai/COMPONENTS/stack-item.yaml",
|
|
6574
|
+
props: [
|
|
6575
|
+
{
|
|
6576
|
+
name: "as",
|
|
6577
|
+
type: "string",
|
|
6578
|
+
default: "div"
|
|
6579
|
+
},
|
|
6580
|
+
{
|
|
6581
|
+
name: "grow",
|
|
6582
|
+
type: "boolean | number",
|
|
6583
|
+
default: "false",
|
|
6584
|
+
note: "true = flex-grow 1; a number sets the grow factor."
|
|
6585
|
+
},
|
|
6586
|
+
{
|
|
6587
|
+
name: "shrink",
|
|
6588
|
+
type: "boolean | number",
|
|
6589
|
+
default: "undefined",
|
|
6590
|
+
note: "false prevents shrinking; a number sets the shrink factor."
|
|
6591
|
+
},
|
|
6592
|
+
{
|
|
6593
|
+
name: "basis",
|
|
6594
|
+
type: "string",
|
|
6595
|
+
default: "undefined",
|
|
6596
|
+
note: "flex-basis (initial main-axis size)."
|
|
6597
|
+
},
|
|
6598
|
+
{
|
|
6599
|
+
name: "minWidth",
|
|
6600
|
+
type: "string",
|
|
6601
|
+
default: "undefined",
|
|
6602
|
+
note: "Minimum main-axis size before it wraps/shrinks."
|
|
6603
|
+
},
|
|
6604
|
+
{
|
|
6605
|
+
name: "align",
|
|
6606
|
+
type: "string",
|
|
6607
|
+
default: "undefined",
|
|
6608
|
+
note: "Per-item cross-axis alignment (align-self)."
|
|
6609
|
+
}
|
|
6610
|
+
],
|
|
6611
|
+
events: [],
|
|
6612
|
+
slots: [
|
|
6613
|
+
{
|
|
6614
|
+
name: "default"
|
|
6615
|
+
}
|
|
6616
|
+
],
|
|
6617
|
+
a11y: [
|
|
6618
|
+
"Layout-only wrapper; semantics come from the slotted content."
|
|
6619
|
+
],
|
|
6620
|
+
behavior: [
|
|
6621
|
+
"controls_single_flex_child: true",
|
|
6622
|
+
"defaults_min_inline_size_zero: true"
|
|
6623
|
+
],
|
|
6624
|
+
selection: {
|
|
6625
|
+
keywords: [],
|
|
6626
|
+
useWhen: [],
|
|
6627
|
+
avoidWhen: [],
|
|
6628
|
+
alternatives: []
|
|
6629
|
+
},
|
|
6630
|
+
setup: {
|
|
6631
|
+
required: [],
|
|
6632
|
+
notes: []
|
|
6633
|
+
},
|
|
6634
|
+
recipes: []
|
|
6635
|
+
},
|
|
6161
6636
|
{
|
|
6162
6637
|
name: "TStat",
|
|
6163
6638
|
aliases: [],
|
|
@@ -6629,7 +7104,7 @@ var treeui_catalog_default = {
|
|
|
6629
7104
|
],
|
|
6630
7105
|
slots: [
|
|
6631
7106
|
{
|
|
6632
|
-
name: "
|
|
7107
|
+
name: "default"
|
|
6633
7108
|
}
|
|
6634
7109
|
],
|
|
6635
7110
|
a11y: [
|
|
@@ -6760,6 +7235,95 @@ var treeui_catalog_default = {
|
|
|
6760
7235
|
"tag-input"
|
|
6761
7236
|
]
|
|
6762
7237
|
},
|
|
7238
|
+
{
|
|
7239
|
+
name: "TText",
|
|
7240
|
+
aliases: [],
|
|
7241
|
+
package: "@treeui/vue",
|
|
7242
|
+
kind: "primitive",
|
|
7243
|
+
category: "Data Display",
|
|
7244
|
+
status: "available",
|
|
7245
|
+
purpose: "Typography primitive for body text, labels and headings \u2014 size, tone, weight and truncation from tokens, with no hand-written CSS.",
|
|
7246
|
+
sourceFile: "packages/vue/src/components/TText.vue",
|
|
7247
|
+
storyFile: "apps/docs/src/stories/Text.stories.ts",
|
|
7248
|
+
storyTitle: "Components/Data Display/Text",
|
|
7249
|
+
manifestFile: "docs/ai/COMPONENTS/text.yaml",
|
|
7250
|
+
props: [
|
|
7251
|
+
{
|
|
7252
|
+
name: "as",
|
|
7253
|
+
type: "string",
|
|
7254
|
+
default: "span",
|
|
7255
|
+
note: "Render element. Use `p`, `h1`\u2013`h6`, `label`, `small`, `strong`, \u2026 for correct semantics."
|
|
7256
|
+
},
|
|
7257
|
+
{
|
|
7258
|
+
name: "size",
|
|
7259
|
+
type: "TTextSize",
|
|
7260
|
+
default: "undefined",
|
|
7261
|
+
values: [
|
|
7262
|
+
"xs",
|
|
7263
|
+
"sm",
|
|
7264
|
+
"md",
|
|
7265
|
+
"lg",
|
|
7266
|
+
"xl",
|
|
7267
|
+
"2xl",
|
|
7268
|
+
"3xl"
|
|
7269
|
+
],
|
|
7270
|
+
note: "Maps to --tree-font-size-*. Omitted = inherit."
|
|
7271
|
+
},
|
|
7272
|
+
{
|
|
7273
|
+
name: "tone",
|
|
7274
|
+
type: "TTextTone",
|
|
7275
|
+
default: "default",
|
|
7276
|
+
values: [
|
|
7277
|
+
"default",
|
|
7278
|
+
"muted",
|
|
7279
|
+
"inverse",
|
|
7280
|
+
"brand"
|
|
7281
|
+
],
|
|
7282
|
+
note: "`default` inherits the current colour; others map to --tree-color-text-* / brand."
|
|
7283
|
+
},
|
|
7284
|
+
{
|
|
7285
|
+
name: "weight",
|
|
7286
|
+
type: "TTextWeight",
|
|
7287
|
+
default: "undefined",
|
|
7288
|
+
values: [
|
|
7289
|
+
"regular",
|
|
7290
|
+
"medium",
|
|
7291
|
+
"semibold",
|
|
7292
|
+
"bold"
|
|
7293
|
+
]
|
|
7294
|
+
},
|
|
7295
|
+
{
|
|
7296
|
+
name: "truncate",
|
|
7297
|
+
type: "boolean",
|
|
7298
|
+
default: "false",
|
|
7299
|
+
note: "Clip to a single line with an ellipsis."
|
|
7300
|
+
}
|
|
7301
|
+
],
|
|
7302
|
+
events: [],
|
|
7303
|
+
slots: [
|
|
7304
|
+
{
|
|
7305
|
+
name: "default"
|
|
7306
|
+
}
|
|
7307
|
+
],
|
|
7308
|
+
a11y: [
|
|
7309
|
+
"Choose `as` to convey the correct semantics (e.g. headings via h1\u2013h6); TText adds only visual styling."
|
|
7310
|
+
],
|
|
7311
|
+
behavior: [
|
|
7312
|
+
"semantic_element_controlled_by_as: true",
|
|
7313
|
+
"token_driven_size_tone_weight: true"
|
|
7314
|
+
],
|
|
7315
|
+
selection: {
|
|
7316
|
+
keywords: [],
|
|
7317
|
+
useWhen: [],
|
|
7318
|
+
avoidWhen: [],
|
|
7319
|
+
alternatives: []
|
|
7320
|
+
},
|
|
7321
|
+
setup: {
|
|
7322
|
+
required: [],
|
|
7323
|
+
notes: []
|
|
7324
|
+
},
|
|
7325
|
+
recipes: []
|
|
7326
|
+
},
|
|
6763
7327
|
{
|
|
6764
7328
|
name: "TTextarea",
|
|
6765
7329
|
aliases: [],
|
|
@@ -6788,6 +7352,20 @@ var treeui_catalog_default = {
|
|
|
6788
7352
|
"lg"
|
|
6789
7353
|
]
|
|
6790
7354
|
},
|
|
7355
|
+
{
|
|
7356
|
+
name: "width",
|
|
7357
|
+
type: "TFieldWidth",
|
|
7358
|
+
default: "full",
|
|
7359
|
+
values: [
|
|
7360
|
+
"xs",
|
|
7361
|
+
"sm",
|
|
7362
|
+
"md",
|
|
7363
|
+
"lg",
|
|
7364
|
+
"xl",
|
|
7365
|
+
"full"
|
|
7366
|
+
],
|
|
7367
|
+
note: "Inline-size cap (max-inline-size). Fluid by default; use instead of an inline width style."
|
|
7368
|
+
},
|
|
6791
7369
|
{
|
|
6792
7370
|
name: "disabled",
|
|
6793
7371
|
type: "boolean",
|
|
@@ -7337,6 +7915,847 @@ var treeui_catalog_default = {
|
|
|
7337
7915
|
"hierarchy-picker"
|
|
7338
7916
|
]
|
|
7339
7917
|
}
|
|
7918
|
+
],
|
|
7919
|
+
tokens: [
|
|
7920
|
+
{
|
|
7921
|
+
cssVar: "--tree-font-family-sans",
|
|
7922
|
+
path: "font.family.sans",
|
|
7923
|
+
value: "'Google Sans Flex', 'Segoe UI', sans-serif",
|
|
7924
|
+
category: "font",
|
|
7925
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7926
|
+
},
|
|
7927
|
+
{
|
|
7928
|
+
cssVar: "--tree-font-family-mono",
|
|
7929
|
+
path: "font.family.mono",
|
|
7930
|
+
value: "'Google Sans Code', 'SFMono-Regular', monospace",
|
|
7931
|
+
category: "font",
|
|
7932
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7933
|
+
},
|
|
7934
|
+
{
|
|
7935
|
+
cssVar: "--tree-font-size-xs",
|
|
7936
|
+
path: "font.size.xs",
|
|
7937
|
+
value: "0.6875rem",
|
|
7938
|
+
category: "font",
|
|
7939
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7940
|
+
},
|
|
7941
|
+
{
|
|
7942
|
+
cssVar: "--tree-font-size-sm",
|
|
7943
|
+
path: "font.size.sm",
|
|
7944
|
+
value: "0.8125rem",
|
|
7945
|
+
category: "font",
|
|
7946
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7947
|
+
},
|
|
7948
|
+
{
|
|
7949
|
+
cssVar: "--tree-font-size-md",
|
|
7950
|
+
path: "font.size.md",
|
|
7951
|
+
value: "0.9375rem",
|
|
7952
|
+
category: "font",
|
|
7953
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7954
|
+
},
|
|
7955
|
+
{
|
|
7956
|
+
cssVar: "--tree-font-size-base",
|
|
7957
|
+
path: "font.size.base",
|
|
7958
|
+
value: "0.9375rem",
|
|
7959
|
+
category: "font",
|
|
7960
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7961
|
+
},
|
|
7962
|
+
{
|
|
7963
|
+
cssVar: "--tree-font-size-lg",
|
|
7964
|
+
path: "font.size.lg",
|
|
7965
|
+
value: "1.125rem",
|
|
7966
|
+
category: "font",
|
|
7967
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7968
|
+
},
|
|
7969
|
+
{
|
|
7970
|
+
cssVar: "--tree-font-size-xl",
|
|
7971
|
+
path: "font.size.xl",
|
|
7972
|
+
value: "1.375rem",
|
|
7973
|
+
category: "font",
|
|
7974
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7975
|
+
},
|
|
7976
|
+
{
|
|
7977
|
+
cssVar: "--tree-font-size-2xl",
|
|
7978
|
+
path: "font.size.2xl",
|
|
7979
|
+
value: "1.375rem",
|
|
7980
|
+
category: "font",
|
|
7981
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7982
|
+
},
|
|
7983
|
+
{
|
|
7984
|
+
cssVar: "--tree-font-size-3xl",
|
|
7985
|
+
path: "font.size.3xl",
|
|
7986
|
+
value: "1.75rem",
|
|
7987
|
+
category: "font",
|
|
7988
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7989
|
+
},
|
|
7990
|
+
{
|
|
7991
|
+
cssVar: "--tree-font-size-4xl",
|
|
7992
|
+
path: "font.size.4xl",
|
|
7993
|
+
value: "2.25rem",
|
|
7994
|
+
category: "font",
|
|
7995
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7996
|
+
},
|
|
7997
|
+
{
|
|
7998
|
+
cssVar: "--tree-font-size-5xl",
|
|
7999
|
+
path: "font.size.5xl",
|
|
8000
|
+
value: "3rem",
|
|
8001
|
+
category: "font",
|
|
8002
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8003
|
+
},
|
|
8004
|
+
{
|
|
8005
|
+
cssVar: "--tree-font-weight-regular",
|
|
8006
|
+
path: "font.weight.regular",
|
|
8007
|
+
value: "400",
|
|
8008
|
+
category: "font",
|
|
8009
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8010
|
+
},
|
|
8011
|
+
{
|
|
8012
|
+
cssVar: "--tree-font-weight-medium",
|
|
8013
|
+
path: "font.weight.medium",
|
|
8014
|
+
value: "500",
|
|
8015
|
+
category: "font",
|
|
8016
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8017
|
+
},
|
|
8018
|
+
{
|
|
8019
|
+
cssVar: "--tree-font-weight-semibold",
|
|
8020
|
+
path: "font.weight.semibold",
|
|
8021
|
+
value: "600",
|
|
8022
|
+
category: "font",
|
|
8023
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8024
|
+
},
|
|
8025
|
+
{
|
|
8026
|
+
cssVar: "--tree-font-weight-bold",
|
|
8027
|
+
path: "font.weight.bold",
|
|
8028
|
+
value: "700",
|
|
8029
|
+
category: "font",
|
|
8030
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8031
|
+
},
|
|
8032
|
+
{
|
|
8033
|
+
cssVar: "--tree-font-weight-extrabold",
|
|
8034
|
+
path: "font.weight.extrabold",
|
|
8035
|
+
value: "800",
|
|
8036
|
+
category: "font",
|
|
8037
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8038
|
+
},
|
|
8039
|
+
{
|
|
8040
|
+
cssVar: "--tree-font-lineHeight-compact",
|
|
8041
|
+
path: "font.lineHeight.compact",
|
|
8042
|
+
value: "1.1",
|
|
8043
|
+
category: "font",
|
|
8044
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8045
|
+
},
|
|
8046
|
+
{
|
|
8047
|
+
cssVar: "--tree-font-lineHeight-ui",
|
|
8048
|
+
path: "font.lineHeight.ui",
|
|
8049
|
+
value: "1.15",
|
|
8050
|
+
category: "font",
|
|
8051
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8052
|
+
},
|
|
8053
|
+
{
|
|
8054
|
+
cssVar: "--tree-font-lineHeight-tight",
|
|
8055
|
+
path: "font.lineHeight.tight",
|
|
8056
|
+
value: "1.25",
|
|
8057
|
+
category: "font",
|
|
8058
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8059
|
+
},
|
|
8060
|
+
{
|
|
8061
|
+
cssVar: "--tree-font-lineHeight-heading",
|
|
8062
|
+
path: "font.lineHeight.heading",
|
|
8063
|
+
value: "1.3",
|
|
8064
|
+
category: "font",
|
|
8065
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8066
|
+
},
|
|
8067
|
+
{
|
|
8068
|
+
cssVar: "--tree-font-lineHeight-base",
|
|
8069
|
+
path: "font.lineHeight.base",
|
|
8070
|
+
value: "1.5",
|
|
8071
|
+
category: "font",
|
|
8072
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8073
|
+
},
|
|
8074
|
+
{
|
|
8075
|
+
cssVar: "--tree-font-lineHeight-body",
|
|
8076
|
+
path: "font.lineHeight.body",
|
|
8077
|
+
value: "1.6",
|
|
8078
|
+
category: "font",
|
|
8079
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8080
|
+
},
|
|
8081
|
+
{
|
|
8082
|
+
cssVar: "--tree-font-lineHeight-relaxed",
|
|
8083
|
+
path: "font.lineHeight.relaxed",
|
|
8084
|
+
value: "1.65",
|
|
8085
|
+
category: "font",
|
|
8086
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8087
|
+
},
|
|
8088
|
+
{
|
|
8089
|
+
cssVar: "--tree-space-0",
|
|
8090
|
+
path: "space.0",
|
|
8091
|
+
value: "0",
|
|
8092
|
+
category: "space",
|
|
8093
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8094
|
+
},
|
|
8095
|
+
{
|
|
8096
|
+
cssVar: "--tree-space-1",
|
|
8097
|
+
path: "space.1",
|
|
8098
|
+
value: "0.25rem",
|
|
8099
|
+
category: "space",
|
|
8100
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8101
|
+
},
|
|
8102
|
+
{
|
|
8103
|
+
cssVar: "--tree-space-2",
|
|
8104
|
+
path: "space.2",
|
|
8105
|
+
value: "0.5rem",
|
|
8106
|
+
category: "space",
|
|
8107
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8108
|
+
},
|
|
8109
|
+
{
|
|
8110
|
+
cssVar: "--tree-space-3",
|
|
8111
|
+
path: "space.3",
|
|
8112
|
+
value: "0.75rem",
|
|
8113
|
+
category: "space",
|
|
8114
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8115
|
+
},
|
|
8116
|
+
{
|
|
8117
|
+
cssVar: "--tree-space-4",
|
|
8118
|
+
path: "space.4",
|
|
8119
|
+
value: "1rem",
|
|
8120
|
+
category: "space",
|
|
8121
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8122
|
+
},
|
|
8123
|
+
{
|
|
8124
|
+
cssVar: "--tree-space-5",
|
|
8125
|
+
path: "space.5",
|
|
8126
|
+
value: "1.25rem",
|
|
8127
|
+
category: "space",
|
|
8128
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8129
|
+
},
|
|
8130
|
+
{
|
|
8131
|
+
cssVar: "--tree-space-6",
|
|
8132
|
+
path: "space.6",
|
|
8133
|
+
value: "1.5rem",
|
|
8134
|
+
category: "space",
|
|
8135
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8136
|
+
},
|
|
8137
|
+
{
|
|
8138
|
+
cssVar: "--tree-space-8",
|
|
8139
|
+
path: "space.8",
|
|
8140
|
+
value: "2rem",
|
|
8141
|
+
category: "space",
|
|
8142
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8143
|
+
},
|
|
8144
|
+
{
|
|
8145
|
+
cssVar: "--tree-space-12",
|
|
8146
|
+
path: "space.12",
|
|
8147
|
+
value: "3rem",
|
|
8148
|
+
category: "space",
|
|
8149
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8150
|
+
},
|
|
8151
|
+
{
|
|
8152
|
+
cssVar: "--tree-space-16",
|
|
8153
|
+
path: "space.16",
|
|
8154
|
+
value: "4rem",
|
|
8155
|
+
category: "space",
|
|
8156
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8157
|
+
},
|
|
8158
|
+
{
|
|
8159
|
+
cssVar: "--tree-radius-sm",
|
|
8160
|
+
path: "radius.sm",
|
|
8161
|
+
value: "0.375rem",
|
|
8162
|
+
category: "radius",
|
|
8163
|
+
description: "Corner radius scale step."
|
|
8164
|
+
},
|
|
8165
|
+
{
|
|
8166
|
+
cssVar: "--tree-radius-md",
|
|
8167
|
+
path: "radius.md",
|
|
8168
|
+
value: "0.625rem",
|
|
8169
|
+
category: "radius",
|
|
8170
|
+
description: "Corner radius scale step."
|
|
8171
|
+
},
|
|
8172
|
+
{
|
|
8173
|
+
cssVar: "--tree-radius-lg",
|
|
8174
|
+
path: "radius.lg",
|
|
8175
|
+
value: "0.875rem",
|
|
8176
|
+
category: "radius",
|
|
8177
|
+
description: "Corner radius scale step."
|
|
8178
|
+
},
|
|
8179
|
+
{
|
|
8180
|
+
cssVar: "--tree-radius-pill",
|
|
8181
|
+
path: "radius.pill",
|
|
8182
|
+
value: "999px",
|
|
8183
|
+
category: "radius",
|
|
8184
|
+
description: "Corner radius scale step."
|
|
8185
|
+
},
|
|
8186
|
+
{
|
|
8187
|
+
cssVar: "--tree-shadow-xs",
|
|
8188
|
+
path: "shadow.xs",
|
|
8189
|
+
value: "0 1px 2px rgba(15, 23, 42, 0.06)",
|
|
8190
|
+
category: "shadow",
|
|
8191
|
+
description: "Elevation shadow."
|
|
8192
|
+
},
|
|
8193
|
+
{
|
|
8194
|
+
cssVar: "--tree-shadow-sm",
|
|
8195
|
+
path: "shadow.sm",
|
|
8196
|
+
value: "0 6px 18px rgba(15, 23, 42, 0.08)",
|
|
8197
|
+
category: "shadow",
|
|
8198
|
+
description: "Elevation shadow."
|
|
8199
|
+
},
|
|
8200
|
+
{
|
|
8201
|
+
cssVar: "--tree-shadow-md",
|
|
8202
|
+
path: "shadow.md",
|
|
8203
|
+
value: "0 14px 34px rgba(15, 23, 42, 0.12)",
|
|
8204
|
+
category: "shadow",
|
|
8205
|
+
description: "Elevation shadow."
|
|
8206
|
+
},
|
|
8207
|
+
{
|
|
8208
|
+
cssVar: "--tree-gradient-brand",
|
|
8209
|
+
path: "gradient.brand",
|
|
8210
|
+
value: "linear-gradient(135deg, var(--tree-color-brand-primary), var(--tree-color-brand-hover))",
|
|
8211
|
+
category: "gradient",
|
|
8212
|
+
description: "Gradient composed from the themed brand variables."
|
|
8213
|
+
},
|
|
8214
|
+
{
|
|
8215
|
+
cssVar: "--tree-border-width-subtle",
|
|
8216
|
+
path: "border.width.subtle",
|
|
8217
|
+
value: "1px",
|
|
8218
|
+
category: "border",
|
|
8219
|
+
description: "Border width step."
|
|
8220
|
+
},
|
|
8221
|
+
{
|
|
8222
|
+
cssVar: "--tree-border-width-strong",
|
|
8223
|
+
path: "border.width.strong",
|
|
8224
|
+
value: "1.5px",
|
|
8225
|
+
category: "border",
|
|
8226
|
+
description: "Border width step."
|
|
8227
|
+
},
|
|
8228
|
+
{
|
|
8229
|
+
cssVar: "--tree-motion-duration-fast",
|
|
8230
|
+
path: "motion.duration.fast",
|
|
8231
|
+
value: "100ms",
|
|
8232
|
+
category: "motion",
|
|
8233
|
+
description: "Motion duration or easing curve."
|
|
8234
|
+
},
|
|
8235
|
+
{
|
|
8236
|
+
cssVar: "--tree-motion-duration-moderate",
|
|
8237
|
+
path: "motion.duration.moderate",
|
|
8238
|
+
value: "200ms",
|
|
8239
|
+
category: "motion",
|
|
8240
|
+
description: "Motion duration or easing curve."
|
|
8241
|
+
},
|
|
8242
|
+
{
|
|
8243
|
+
cssVar: "--tree-motion-duration-normal",
|
|
8244
|
+
path: "motion.duration.normal",
|
|
8245
|
+
value: "300ms",
|
|
8246
|
+
category: "motion",
|
|
8247
|
+
description: "Motion duration or easing curve."
|
|
8248
|
+
},
|
|
8249
|
+
{
|
|
8250
|
+
cssVar: "--tree-motion-duration-slow",
|
|
8251
|
+
path: "motion.duration.slow",
|
|
8252
|
+
value: "400ms",
|
|
8253
|
+
category: "motion",
|
|
8254
|
+
description: "Motion duration or easing curve."
|
|
8255
|
+
},
|
|
8256
|
+
{
|
|
8257
|
+
cssVar: "--tree-motion-duration-slower",
|
|
8258
|
+
path: "motion.duration.slower",
|
|
8259
|
+
value: "500ms",
|
|
8260
|
+
category: "motion",
|
|
8261
|
+
description: "Motion duration or easing curve."
|
|
8262
|
+
},
|
|
8263
|
+
{
|
|
8264
|
+
cssVar: "--tree-motion-easing-standard",
|
|
8265
|
+
path: "motion.easing.standard",
|
|
8266
|
+
value: "cubic-bezier(0.2, 0, 0, 1)",
|
|
8267
|
+
category: "motion",
|
|
8268
|
+
description: "Motion duration or easing curve."
|
|
8269
|
+
},
|
|
8270
|
+
{
|
|
8271
|
+
cssVar: "--tree-motion-easing-easeOut",
|
|
8272
|
+
path: "motion.easing.easeOut",
|
|
8273
|
+
value: "cubic-bezier(0, 0, 0.2, 1)",
|
|
8274
|
+
category: "motion",
|
|
8275
|
+
description: "Motion duration or easing curve."
|
|
8276
|
+
},
|
|
8277
|
+
{
|
|
8278
|
+
cssVar: "--tree-motion-easing-easeInOut",
|
|
8279
|
+
path: "motion.easing.easeInOut",
|
|
8280
|
+
value: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
8281
|
+
category: "motion",
|
|
8282
|
+
description: "Motion duration or easing curve."
|
|
8283
|
+
},
|
|
8284
|
+
{
|
|
8285
|
+
cssVar: "--tree-motion-easing-easeIn",
|
|
8286
|
+
path: "motion.easing.easeIn",
|
|
8287
|
+
value: "cubic-bezier(0.4, 0, 1, 1)",
|
|
8288
|
+
category: "motion",
|
|
8289
|
+
description: "Motion duration or easing curve."
|
|
8290
|
+
},
|
|
8291
|
+
{
|
|
8292
|
+
cssVar: "--tree-size-control-sm",
|
|
8293
|
+
path: "size.control.sm",
|
|
8294
|
+
value: "2rem",
|
|
8295
|
+
category: "size",
|
|
8296
|
+
description: "Control and icon sizing scale step."
|
|
8297
|
+
},
|
|
8298
|
+
{
|
|
8299
|
+
cssVar: "--tree-size-control-md",
|
|
8300
|
+
path: "size.control.md",
|
|
8301
|
+
value: "2.5rem",
|
|
8302
|
+
category: "size",
|
|
8303
|
+
description: "Control and icon sizing scale step."
|
|
8304
|
+
},
|
|
8305
|
+
{
|
|
8306
|
+
cssVar: "--tree-size-control-lg",
|
|
8307
|
+
path: "size.control.lg",
|
|
8308
|
+
value: "3rem",
|
|
8309
|
+
category: "size",
|
|
8310
|
+
description: "Control and icon sizing scale step."
|
|
8311
|
+
},
|
|
8312
|
+
{
|
|
8313
|
+
cssVar: "--tree-size-icon-sm",
|
|
8314
|
+
path: "size.icon.sm",
|
|
8315
|
+
value: "1rem",
|
|
8316
|
+
category: "size",
|
|
8317
|
+
description: "Control and icon sizing scale step."
|
|
8318
|
+
},
|
|
8319
|
+
{
|
|
8320
|
+
cssVar: "--tree-size-icon-md",
|
|
8321
|
+
path: "size.icon.md",
|
|
8322
|
+
value: "1.25rem",
|
|
8323
|
+
category: "size",
|
|
8324
|
+
description: "Control and icon sizing scale step."
|
|
8325
|
+
},
|
|
8326
|
+
{
|
|
8327
|
+
cssVar: "--tree-size-icon-lg",
|
|
8328
|
+
path: "size.icon.lg",
|
|
8329
|
+
value: "1.5rem",
|
|
8330
|
+
category: "size",
|
|
8331
|
+
description: "Control and icon sizing scale step."
|
|
8332
|
+
},
|
|
8333
|
+
{
|
|
8334
|
+
cssVar: "--tree-size-icon-xl",
|
|
8335
|
+
path: "size.icon.xl",
|
|
8336
|
+
value: "2rem",
|
|
8337
|
+
category: "size",
|
|
8338
|
+
description: "Control and icon sizing scale step."
|
|
8339
|
+
},
|
|
8340
|
+
{
|
|
8341
|
+
cssVar: "--tree-size-icon-2xl",
|
|
8342
|
+
path: "size.icon.2xl",
|
|
8343
|
+
value: "3rem",
|
|
8344
|
+
category: "size",
|
|
8345
|
+
description: "Control and icon sizing scale step."
|
|
8346
|
+
},
|
|
8347
|
+
{
|
|
8348
|
+
cssVar: "--tree-layout-grid-columns",
|
|
8349
|
+
path: "layout.grid.columns",
|
|
8350
|
+
value: "12",
|
|
8351
|
+
category: "layout",
|
|
8352
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8353
|
+
},
|
|
8354
|
+
{
|
|
8355
|
+
cssVar: "--tree-layout-grid-base",
|
|
8356
|
+
path: "layout.grid.base",
|
|
8357
|
+
value: "8px",
|
|
8358
|
+
category: "layout",
|
|
8359
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8360
|
+
},
|
|
8361
|
+
{
|
|
8362
|
+
cssVar: "--tree-layout-gutter-sm",
|
|
8363
|
+
path: "layout.gutter.sm",
|
|
8364
|
+
value: "1rem",
|
|
8365
|
+
category: "layout",
|
|
8366
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8367
|
+
},
|
|
8368
|
+
{
|
|
8369
|
+
cssVar: "--tree-layout-gutter-md",
|
|
8370
|
+
path: "layout.gutter.md",
|
|
8371
|
+
value: "1.5rem",
|
|
8372
|
+
category: "layout",
|
|
8373
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8374
|
+
},
|
|
8375
|
+
{
|
|
8376
|
+
cssVar: "--tree-layout-margin-sm",
|
|
8377
|
+
path: "layout.margin.sm",
|
|
8378
|
+
value: "1.5rem",
|
|
8379
|
+
category: "layout",
|
|
8380
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8381
|
+
},
|
|
8382
|
+
{
|
|
8383
|
+
cssVar: "--tree-layout-margin-md",
|
|
8384
|
+
path: "layout.margin.md",
|
|
8385
|
+
value: "2rem",
|
|
8386
|
+
category: "layout",
|
|
8387
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8388
|
+
},
|
|
8389
|
+
{
|
|
8390
|
+
cssVar: "--tree-layout-margin-lg",
|
|
8391
|
+
path: "layout.margin.lg",
|
|
8392
|
+
value: "3rem",
|
|
8393
|
+
category: "layout",
|
|
8394
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8395
|
+
},
|
|
8396
|
+
{
|
|
8397
|
+
cssVar: "--tree-z-base",
|
|
8398
|
+
path: "z.base",
|
|
8399
|
+
value: "1",
|
|
8400
|
+
category: "z",
|
|
8401
|
+
description: "Stacking layer (z-index)."
|
|
8402
|
+
},
|
|
8403
|
+
{
|
|
8404
|
+
cssVar: "--tree-z-dropdown",
|
|
8405
|
+
path: "z.dropdown",
|
|
8406
|
+
value: "1000",
|
|
8407
|
+
category: "z",
|
|
8408
|
+
description: "Stacking layer (z-index)."
|
|
8409
|
+
},
|
|
8410
|
+
{
|
|
8411
|
+
cssVar: "--tree-z-popover",
|
|
8412
|
+
path: "z.popover",
|
|
8413
|
+
value: "1050",
|
|
8414
|
+
category: "z",
|
|
8415
|
+
description: "Stacking layer (z-index)."
|
|
8416
|
+
},
|
|
8417
|
+
{
|
|
8418
|
+
cssVar: "--tree-z-sticky",
|
|
8419
|
+
path: "z.sticky",
|
|
8420
|
+
value: "1100",
|
|
8421
|
+
category: "z",
|
|
8422
|
+
description: "Stacking layer (z-index)."
|
|
8423
|
+
},
|
|
8424
|
+
{
|
|
8425
|
+
cssVar: "--tree-z-overlay",
|
|
8426
|
+
path: "z.overlay",
|
|
8427
|
+
value: "1200",
|
|
8428
|
+
category: "z",
|
|
8429
|
+
description: "Stacking layer (z-index)."
|
|
8430
|
+
},
|
|
8431
|
+
{
|
|
8432
|
+
cssVar: "--tree-z-modal",
|
|
8433
|
+
path: "z.modal",
|
|
8434
|
+
value: "1300",
|
|
8435
|
+
category: "z",
|
|
8436
|
+
description: "Stacking layer (z-index)."
|
|
8437
|
+
},
|
|
8438
|
+
{
|
|
8439
|
+
cssVar: "--tree-z-toast",
|
|
8440
|
+
path: "z.toast",
|
|
8441
|
+
value: "1400",
|
|
8442
|
+
category: "z",
|
|
8443
|
+
description: "Stacking layer (z-index)."
|
|
8444
|
+
},
|
|
8445
|
+
{
|
|
8446
|
+
cssVar: "--tree-breakpoint-sm",
|
|
8447
|
+
path: "breakpoint.sm",
|
|
8448
|
+
value: "640px",
|
|
8449
|
+
category: "breakpoint",
|
|
8450
|
+
description: "Responsive breakpoint width."
|
|
8451
|
+
},
|
|
8452
|
+
{
|
|
8453
|
+
cssVar: "--tree-breakpoint-md",
|
|
8454
|
+
path: "breakpoint.md",
|
|
8455
|
+
value: "768px",
|
|
8456
|
+
category: "breakpoint",
|
|
8457
|
+
description: "Responsive breakpoint width."
|
|
8458
|
+
},
|
|
8459
|
+
{
|
|
8460
|
+
cssVar: "--tree-breakpoint-lg",
|
|
8461
|
+
path: "breakpoint.lg",
|
|
8462
|
+
value: "1024px",
|
|
8463
|
+
category: "breakpoint",
|
|
8464
|
+
description: "Responsive breakpoint width."
|
|
8465
|
+
},
|
|
8466
|
+
{
|
|
8467
|
+
cssVar: "--tree-breakpoint-xl",
|
|
8468
|
+
path: "breakpoint.xl",
|
|
8469
|
+
value: "1280px",
|
|
8470
|
+
category: "breakpoint",
|
|
8471
|
+
description: "Responsive breakpoint width."
|
|
8472
|
+
},
|
|
8473
|
+
{
|
|
8474
|
+
cssVar: "--tree-color-bg-primary",
|
|
8475
|
+
path: "color.bg.primary",
|
|
8476
|
+
value: "#f6f8fa",
|
|
8477
|
+
category: "color",
|
|
8478
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8479
|
+
themeValues: {
|
|
8480
|
+
light: "#f6f8fa",
|
|
8481
|
+
dark: "#1c2128"
|
|
8482
|
+
}
|
|
8483
|
+
},
|
|
8484
|
+
{
|
|
8485
|
+
cssVar: "--tree-color-bg-surface",
|
|
8486
|
+
path: "color.bg.surface",
|
|
8487
|
+
value: "#ffffff",
|
|
8488
|
+
category: "color",
|
|
8489
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8490
|
+
themeValues: {
|
|
8491
|
+
light: "#ffffff",
|
|
8492
|
+
dark: "#22272e"
|
|
8493
|
+
}
|
|
8494
|
+
},
|
|
8495
|
+
{
|
|
8496
|
+
cssVar: "--tree-color-bg-subtle",
|
|
8497
|
+
path: "color.bg.subtle",
|
|
8498
|
+
value: "#eff2f5",
|
|
8499
|
+
category: "color",
|
|
8500
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8501
|
+
themeValues: {
|
|
8502
|
+
light: "#eff2f5",
|
|
8503
|
+
dark: "#2d333b"
|
|
8504
|
+
}
|
|
8505
|
+
},
|
|
8506
|
+
{
|
|
8507
|
+
cssVar: "--tree-color-border-default",
|
|
8508
|
+
path: "color.border.default",
|
|
8509
|
+
value: "#d0d7de",
|
|
8510
|
+
category: "color",
|
|
8511
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8512
|
+
themeValues: {
|
|
8513
|
+
light: "#d0d7de",
|
|
8514
|
+
dark: "#444c56"
|
|
8515
|
+
}
|
|
8516
|
+
},
|
|
8517
|
+
{
|
|
8518
|
+
cssVar: "--tree-color-border-strong",
|
|
8519
|
+
path: "color.border.strong",
|
|
8520
|
+
value: "#afb8c1",
|
|
8521
|
+
category: "color",
|
|
8522
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8523
|
+
themeValues: {
|
|
8524
|
+
light: "#afb8c1",
|
|
8525
|
+
dark: "#576270"
|
|
8526
|
+
}
|
|
8527
|
+
},
|
|
8528
|
+
{
|
|
8529
|
+
cssVar: "--tree-color-text-primary",
|
|
8530
|
+
path: "color.text.primary",
|
|
8531
|
+
value: "#1f2328",
|
|
8532
|
+
category: "color",
|
|
8533
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8534
|
+
themeValues: {
|
|
8535
|
+
light: "#1f2328",
|
|
8536
|
+
dark: "#adbac7"
|
|
8537
|
+
}
|
|
8538
|
+
},
|
|
8539
|
+
{
|
|
8540
|
+
cssVar: "--tree-color-text-muted",
|
|
8541
|
+
path: "color.text.muted",
|
|
8542
|
+
value: "#59636e",
|
|
8543
|
+
category: "color",
|
|
8544
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8545
|
+
themeValues: {
|
|
8546
|
+
light: "#59636e",
|
|
8547
|
+
dark: "#95a3b2"
|
|
8548
|
+
}
|
|
8549
|
+
},
|
|
8550
|
+
{
|
|
8551
|
+
cssVar: "--tree-color-text-inverse",
|
|
8552
|
+
path: "color.text.inverse",
|
|
8553
|
+
value: "#ffffff",
|
|
8554
|
+
category: "color",
|
|
8555
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8556
|
+
themeValues: {
|
|
8557
|
+
light: "#ffffff",
|
|
8558
|
+
dark: "#1c2128"
|
|
8559
|
+
}
|
|
8560
|
+
},
|
|
8561
|
+
{
|
|
8562
|
+
cssVar: "--tree-color-brand-primary",
|
|
8563
|
+
path: "color.brand.primary",
|
|
8564
|
+
value: "#0969da",
|
|
8565
|
+
category: "color",
|
|
8566
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8567
|
+
themeValues: {
|
|
8568
|
+
light: "#0969da",
|
|
8569
|
+
dark: "#539bf5"
|
|
8570
|
+
}
|
|
8571
|
+
},
|
|
8572
|
+
{
|
|
8573
|
+
cssVar: "--tree-color-brand-hover",
|
|
8574
|
+
path: "color.brand.hover",
|
|
8575
|
+
value: "#0550ae",
|
|
8576
|
+
category: "color",
|
|
8577
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8578
|
+
themeValues: {
|
|
8579
|
+
light: "#0550ae",
|
|
8580
|
+
dark: "#6cabf7"
|
|
8581
|
+
}
|
|
8582
|
+
},
|
|
8583
|
+
{
|
|
8584
|
+
cssVar: "--tree-color-brand-soft",
|
|
8585
|
+
path: "color.brand.soft",
|
|
8586
|
+
value: "#ddf4ff",
|
|
8587
|
+
category: "color",
|
|
8588
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8589
|
+
themeValues: {
|
|
8590
|
+
light: "#ddf4ff",
|
|
8591
|
+
dark: "#1a3453"
|
|
8592
|
+
}
|
|
8593
|
+
},
|
|
8594
|
+
{
|
|
8595
|
+
cssVar: "--tree-color-brand-contrast",
|
|
8596
|
+
path: "color.brand.contrast",
|
|
8597
|
+
value: "#ffffff",
|
|
8598
|
+
category: "color",
|
|
8599
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8600
|
+
themeValues: {
|
|
8601
|
+
light: "#ffffff",
|
|
8602
|
+
dark: "#0a1a2f"
|
|
8603
|
+
}
|
|
8604
|
+
},
|
|
8605
|
+
{
|
|
8606
|
+
cssVar: "--tree-color-status-success",
|
|
8607
|
+
path: "color.status.success",
|
|
8608
|
+
value: "#1a7f37",
|
|
8609
|
+
category: "color",
|
|
8610
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8611
|
+
themeValues: {
|
|
8612
|
+
light: "#1a7f37",
|
|
8613
|
+
dark: "#57ab5a"
|
|
8614
|
+
}
|
|
8615
|
+
},
|
|
8616
|
+
{
|
|
8617
|
+
cssVar: "--tree-color-status-warning",
|
|
8618
|
+
path: "color.status.warning",
|
|
8619
|
+
value: "#9a6700",
|
|
8620
|
+
category: "color",
|
|
8621
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8622
|
+
themeValues: {
|
|
8623
|
+
light: "#9a6700",
|
|
8624
|
+
dark: "#c69026"
|
|
8625
|
+
}
|
|
8626
|
+
},
|
|
8627
|
+
{
|
|
8628
|
+
cssVar: "--tree-color-status-error",
|
|
8629
|
+
path: "color.status.error",
|
|
8630
|
+
value: "#d1242f",
|
|
8631
|
+
category: "color",
|
|
8632
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8633
|
+
themeValues: {
|
|
8634
|
+
light: "#d1242f",
|
|
8635
|
+
dark: "#f47067"
|
|
8636
|
+
}
|
|
8637
|
+
},
|
|
8638
|
+
{
|
|
8639
|
+
cssVar: "--tree-color-status-info",
|
|
8640
|
+
path: "color.status.info",
|
|
8641
|
+
value: "#0969da",
|
|
8642
|
+
category: "color",
|
|
8643
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8644
|
+
themeValues: {
|
|
8645
|
+
light: "#0969da",
|
|
8646
|
+
dark: "#6cb6ff"
|
|
8647
|
+
}
|
|
8648
|
+
},
|
|
8649
|
+
{
|
|
8650
|
+
cssVar: "--tree-color-chart-1",
|
|
8651
|
+
path: "color.chart.1",
|
|
8652
|
+
value: "#2a78d6",
|
|
8653
|
+
category: "color",
|
|
8654
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8655
|
+
themeValues: {
|
|
8656
|
+
light: "#2a78d6",
|
|
8657
|
+
dark: "#3987e5"
|
|
8658
|
+
}
|
|
8659
|
+
},
|
|
8660
|
+
{
|
|
8661
|
+
cssVar: "--tree-color-chart-2",
|
|
8662
|
+
path: "color.chart.2",
|
|
8663
|
+
value: "#1baf7a",
|
|
8664
|
+
category: "color",
|
|
8665
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8666
|
+
themeValues: {
|
|
8667
|
+
light: "#1baf7a",
|
|
8668
|
+
dark: "#199e70"
|
|
8669
|
+
}
|
|
8670
|
+
},
|
|
8671
|
+
{
|
|
8672
|
+
cssVar: "--tree-color-chart-3",
|
|
8673
|
+
path: "color.chart.3",
|
|
8674
|
+
value: "#eda100",
|
|
8675
|
+
category: "color",
|
|
8676
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8677
|
+
themeValues: {
|
|
8678
|
+
light: "#eda100",
|
|
8679
|
+
dark: "#c98500"
|
|
8680
|
+
}
|
|
8681
|
+
},
|
|
8682
|
+
{
|
|
8683
|
+
cssVar: "--tree-color-chart-4",
|
|
8684
|
+
path: "color.chart.4",
|
|
8685
|
+
value: "#008300",
|
|
8686
|
+
category: "color",
|
|
8687
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8688
|
+
themeValues: {
|
|
8689
|
+
light: "#008300",
|
|
8690
|
+
dark: "#008300"
|
|
8691
|
+
}
|
|
8692
|
+
},
|
|
8693
|
+
{
|
|
8694
|
+
cssVar: "--tree-color-chart-5",
|
|
8695
|
+
path: "color.chart.5",
|
|
8696
|
+
value: "#4a3aa7",
|
|
8697
|
+
category: "color",
|
|
8698
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8699
|
+
themeValues: {
|
|
8700
|
+
light: "#4a3aa7",
|
|
8701
|
+
dark: "#9085e9"
|
|
8702
|
+
}
|
|
8703
|
+
},
|
|
8704
|
+
{
|
|
8705
|
+
cssVar: "--tree-color-chart-6",
|
|
8706
|
+
path: "color.chart.6",
|
|
8707
|
+
value: "#e34948",
|
|
8708
|
+
category: "color",
|
|
8709
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8710
|
+
themeValues: {
|
|
8711
|
+
light: "#e34948",
|
|
8712
|
+
dark: "#e66767"
|
|
8713
|
+
}
|
|
8714
|
+
},
|
|
8715
|
+
{
|
|
8716
|
+
cssVar: "--tree-color-chart-7",
|
|
8717
|
+
path: "color.chart.7",
|
|
8718
|
+
value: "#e87ba4",
|
|
8719
|
+
category: "color",
|
|
8720
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8721
|
+
themeValues: {
|
|
8722
|
+
light: "#e87ba4",
|
|
8723
|
+
dark: "#d55181"
|
|
8724
|
+
}
|
|
8725
|
+
},
|
|
8726
|
+
{
|
|
8727
|
+
cssVar: "--tree-color-chart-8",
|
|
8728
|
+
path: "color.chart.8",
|
|
8729
|
+
value: "#eb6834",
|
|
8730
|
+
category: "color",
|
|
8731
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8732
|
+
themeValues: {
|
|
8733
|
+
light: "#eb6834",
|
|
8734
|
+
dark: "#d95926"
|
|
8735
|
+
}
|
|
8736
|
+
},
|
|
8737
|
+
{
|
|
8738
|
+
cssVar: "--tree-color-overlay",
|
|
8739
|
+
path: "color.overlay",
|
|
8740
|
+
value: "rgba(31, 35, 40, 0.5)",
|
|
8741
|
+
category: "color",
|
|
8742
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8743
|
+
themeValues: {
|
|
8744
|
+
light: "rgba(31, 35, 40, 0.5)",
|
|
8745
|
+
dark: "rgba(13, 17, 23, 0.6)"
|
|
8746
|
+
}
|
|
8747
|
+
},
|
|
8748
|
+
{
|
|
8749
|
+
cssVar: "--tree-color-focus-ring",
|
|
8750
|
+
path: "color.focus-ring",
|
|
8751
|
+
value: "rgba(9, 105, 218, 0.32)",
|
|
8752
|
+
category: "color",
|
|
8753
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8754
|
+
themeValues: {
|
|
8755
|
+
light: "rgba(9, 105, 218, 0.32)",
|
|
8756
|
+
dark: "rgba(83, 155, 245, 0.32)"
|
|
8757
|
+
}
|
|
8758
|
+
}
|
|
7340
8759
|
]
|
|
7341
8760
|
};
|
|
7342
8761
|
|
|
@@ -7582,6 +9001,43 @@ var searchRecipes = (query, limit = 6) => catalog.recipes.map((recipe) => ({
|
|
|
7582
9001
|
recipe,
|
|
7583
9002
|
score: scoreMatch(query, recipeSearchText(recipe))
|
|
7584
9003
|
})).filter((result) => result.score > 0).sort((left, right) => right.score - left.score || left.recipe.name.localeCompare(right.recipe.name)).slice(0, limit);
|
|
9004
|
+
var tokenValues = (token) => [
|
|
9005
|
+
token.value,
|
|
9006
|
+
...Object.values(token.themeValues ?? {})
|
|
9007
|
+
];
|
|
9008
|
+
var REM_ROOT_PX = 16;
|
|
9009
|
+
var lengthAliases = (query) => {
|
|
9010
|
+
const match = query.trim().match(/^(\d*\.?\d+)(rem|px)$/i);
|
|
9011
|
+
if (!match) {
|
|
9012
|
+
return [];
|
|
9013
|
+
}
|
|
9014
|
+
const amount = Number(match[1]);
|
|
9015
|
+
if (!Number.isFinite(amount)) {
|
|
9016
|
+
return [];
|
|
9017
|
+
}
|
|
9018
|
+
const unit = match[2].toLowerCase();
|
|
9019
|
+
const converted = unit === "rem" ? amount * REM_ROOT_PX : amount / REM_ROOT_PX;
|
|
9020
|
+
return [`${Number(converted.toFixed(4))}${unit === "rem" ? "px" : "rem"}`];
|
|
9021
|
+
};
|
|
9022
|
+
var scoreToken = (token, query) => {
|
|
9023
|
+
const identity = normalizeText(stringifyFields([token.cssVar, token.path]));
|
|
9024
|
+
const category = normalizeText(token.category);
|
|
9025
|
+
const values = normalizeText(stringifyFields(tokenValues(token)));
|
|
9026
|
+
const description = normalizeText(token.description ?? "");
|
|
9027
|
+
const valueScore = Math.max(
|
|
9028
|
+
...[query, ...lengthAliases(query)].map((candidate) => scoreMatch(candidate, values))
|
|
9029
|
+
);
|
|
9030
|
+
let score = 0;
|
|
9031
|
+
score += scoreMatch(query, identity) * 3;
|
|
9032
|
+
score += scoreMatch(query, category) * 2;
|
|
9033
|
+
score += valueScore * 2;
|
|
9034
|
+
score += scoreMatch(query, description);
|
|
9035
|
+
return Math.max(score, 0);
|
|
9036
|
+
};
|
|
9037
|
+
var searchTokens = (query, limit = 12) => catalog.tokens.map((token) => ({
|
|
9038
|
+
token,
|
|
9039
|
+
score: scoreToken(token, query)
|
|
9040
|
+
})).filter((result) => result.score > 0).sort((left, right) => right.score - left.score || left.token.cssVar.localeCompare(right.token.cssVar)).slice(0, limit);
|
|
7585
9041
|
var formatFieldList = (label, values) => values.length > 0 ? `${label}: ${values.join(", ")}` : void 0;
|
|
7586
9042
|
var formatComponentSummary = (component) => {
|
|
7587
9043
|
const lines = [
|
|
@@ -7626,6 +9082,12 @@ var formatRecipeResults = (results) => results.length > 0 ? results.map((result,
|
|
|
7626
9082
|
const useWhen = result.recipe.useWhen[0];
|
|
7627
9083
|
return `${index + 1}. ${result.recipe.name}: ${useWhen ?? "No recipe summary available."} Components: ${result.recipe.compose.join(", ")}.`;
|
|
7628
9084
|
}).join("\n") : "No matching TreeUI recipes found.";
|
|
9085
|
+
var formatTokenResults = (results) => results.length > 0 ? results.map((result, index) => {
|
|
9086
|
+
const { token } = result;
|
|
9087
|
+
const themeValues = token.themeValues ? Object.entries(token.themeValues).map(([theme, value]) => `${theme} ${value}`).join(" | ") : void 0;
|
|
9088
|
+
const description = token.description ? ` ${token.description}` : "";
|
|
9089
|
+
return `${index + 1}. ${token.cssVar}: ${themeValues ?? token.value} (${token.category} | ${token.path}).${description}`;
|
|
9090
|
+
}).join("\n") : "No matching TreeUI design tokens found.";
|
|
7629
9091
|
var formatSetupGuide = (componentName) => {
|
|
7630
9092
|
if (!componentName) {
|
|
7631
9093
|
return [
|
|
@@ -7682,6 +9144,12 @@ var resourceList = [
|
|
|
7682
9144
|
description: "Reusable multi-component composition recipes.",
|
|
7683
9145
|
mimeType: "application/json"
|
|
7684
9146
|
},
|
|
9147
|
+
{
|
|
9148
|
+
uri: "treeui://tokens",
|
|
9149
|
+
name: "TreeUI design tokens",
|
|
9150
|
+
description: "Flat list of --tree-* design tokens with per-theme values.",
|
|
9151
|
+
mimeType: "application/json"
|
|
9152
|
+
},
|
|
7685
9153
|
...catalog.components.map((component) => ({
|
|
7686
9154
|
uri: `treeui://components/${component.name}`,
|
|
7687
9155
|
name: component.name,
|
|
@@ -7709,6 +9177,9 @@ var readResourcePayload = (uri) => {
|
|
|
7709
9177
|
if (uri === "treeui://recipes") {
|
|
7710
9178
|
return catalog.recipes;
|
|
7711
9179
|
}
|
|
9180
|
+
if (uri === "treeui://tokens") {
|
|
9181
|
+
return catalog.tokens;
|
|
9182
|
+
}
|
|
7712
9183
|
const componentMatch = uri.match(/^treeui:\/\/components\/([^/]+)$/);
|
|
7713
9184
|
if (componentMatch) {
|
|
7714
9185
|
const component = findComponent(componentMatch[1]);
|
|
@@ -7810,6 +9281,21 @@ var createTreeuiMcpServer = () => {
|
|
|
7810
9281
|
},
|
|
7811
9282
|
required: ["query"]
|
|
7812
9283
|
}
|
|
9284
|
+
},
|
|
9285
|
+
{
|
|
9286
|
+
name: "search_tokens",
|
|
9287
|
+
description: "Search TreeUI design tokens by CSS variable, category, path, or shipped value. Use this before hardcoding any color, spacing, radius, or breakpoint value.",
|
|
9288
|
+
inputSchema: {
|
|
9289
|
+
type: "object",
|
|
9290
|
+
properties: {
|
|
9291
|
+
query: {
|
|
9292
|
+
type: "string",
|
|
9293
|
+
description: "A CSS variable such as --tree-gradient-brand, a category or path such as space or color.status, or a literal value such as 64rem or #0969da."
|
|
9294
|
+
},
|
|
9295
|
+
limit: { type: "number", description: "Maximum number of tokens to return." }
|
|
9296
|
+
},
|
|
9297
|
+
required: ["query"]
|
|
9298
|
+
}
|
|
7813
9299
|
}
|
|
7814
9300
|
]
|
|
7815
9301
|
}));
|
|
@@ -7850,6 +9336,13 @@ var createTreeuiMcpServer = () => {
|
|
|
7850
9336
|
}
|
|
7851
9337
|
return asTextContent(formatRecipeResults(searchRecipes(query, readNumberArg(args, "limit", 6))));
|
|
7852
9338
|
}
|
|
9339
|
+
if (name === "search_tokens") {
|
|
9340
|
+
const query = readStringArg(args, "query");
|
|
9341
|
+
if (!query) {
|
|
9342
|
+
return asErrorTextContent('The "query" argument is required.');
|
|
9343
|
+
}
|
|
9344
|
+
return asTextContent(formatTokenResults(searchTokens(query, readNumberArg(args, "limit", 12))));
|
|
9345
|
+
}
|
|
7853
9346
|
return asErrorTextContent(`Unknown tool: ${name}`);
|
|
7854
9347
|
});
|
|
7855
9348
|
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
@@ -7879,9 +9372,11 @@ export {
|
|
|
7879
9372
|
searchComponents,
|
|
7880
9373
|
recommendComponents,
|
|
7881
9374
|
searchRecipes,
|
|
9375
|
+
searchTokens,
|
|
7882
9376
|
formatComponentSummary,
|
|
7883
9377
|
formatSearchResults,
|
|
7884
9378
|
formatRecipeResults,
|
|
9379
|
+
formatTokenResults,
|
|
7885
9380
|
formatSetupGuide,
|
|
7886
9381
|
createTreeuiMcpServer
|
|
7887
9382
|
};
|