@treeui/mcp 0.4.1 → 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-UPSK3E4U.js → chunk-TRJAXZUC.js} +1029 -27
- package/dist/cli.cjs +1027 -27
- package/dist/cli.js +1 -1
- package/dist/index.cjs +1322 -30
- 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",
|
|
@@ -2236,12 +2274,14 @@ var treeui_catalog_default = {
|
|
|
2236
2274
|
{
|
|
2237
2275
|
name: "padded",
|
|
2238
2276
|
type: "boolean",
|
|
2239
|
-
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"
|
|
2240
2279
|
},
|
|
2241
2280
|
{
|
|
2242
2281
|
name: "centered",
|
|
2243
2282
|
type: "boolean",
|
|
2244
|
-
default: "true"
|
|
2283
|
+
default: "true",
|
|
2284
|
+
note: "Adds `.is-centered`, i.e. `margin-inline: auto`."
|
|
2245
2285
|
}
|
|
2246
2286
|
],
|
|
2247
2287
|
events: [],
|
|
@@ -3136,6 +3176,7 @@ var treeui_catalog_default = {
|
|
|
3136
3176
|
"role: menu",
|
|
3137
3177
|
"trigger_aria_haspopup: menu",
|
|
3138
3178
|
"trigger_aria_expanded: true",
|
|
3179
|
+
"trigger_aria_controls: menu id, while open",
|
|
3139
3180
|
"aria_disabled_on_disabled_items: true",
|
|
3140
3181
|
"focus_visible_on_trigger: true",
|
|
3141
3182
|
"keyboard_arrow_navigation: true",
|
|
@@ -3145,9 +3186,11 @@ var treeui_catalog_default = {
|
|
|
3145
3186
|
],
|
|
3146
3187
|
behavior: [
|
|
3147
3188
|
"outside_click_closes_menu: true",
|
|
3148
|
-
"
|
|
3189
|
+
"outside_click_restores_focus: false",
|
|
3149
3190
|
"chevron_rotates_when_open: true",
|
|
3150
|
-
"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}'
|
|
3151
3194
|
],
|
|
3152
3195
|
selection: {
|
|
3153
3196
|
keywords: [
|
|
@@ -3543,7 +3586,7 @@ var treeui_catalog_default = {
|
|
|
3543
3586
|
name: "htmlFor",
|
|
3544
3587
|
type: "string",
|
|
3545
3588
|
required: false,
|
|
3546
|
-
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"
|
|
3547
3590
|
},
|
|
3548
3591
|
{
|
|
3549
3592
|
name: "error",
|
|
@@ -3601,10 +3644,11 @@ var treeui_catalog_default = {
|
|
|
3601
3644
|
}
|
|
3602
3645
|
],
|
|
3603
3646
|
a11y: [
|
|
3604
|
-
"
|
|
3647
|
+
"Renders a native <label> element, but ONLY when `label` or the `label` slot is provided.",
|
|
3605
3648
|
"Error messages are wrapped in role='alert' for screen reader announcements.",
|
|
3606
3649
|
"Required indicator (*) is aria-hidden to avoid redundant announcements; use aria-required on the input itself.",
|
|
3607
|
-
"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."
|
|
3608
3652
|
],
|
|
3609
3653
|
behavior: [],
|
|
3610
3654
|
selection: {
|
|
@@ -4065,10 +4109,39 @@ var treeui_catalog_default = {
|
|
|
4065
4109
|
],
|
|
4066
4110
|
behavior: [],
|
|
4067
4111
|
selection: {
|
|
4068
|
-
keywords: [
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
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
|
+
]
|
|
4072
4145
|
},
|
|
4073
4146
|
setup: {
|
|
4074
4147
|
required: [],
|
|
@@ -4082,7 +4155,8 @@ var treeui_catalog_default = {
|
|
|
4082
4155
|
package: "@treeui/vue",
|
|
4083
4156
|
category: "Form",
|
|
4084
4157
|
status: "stable",
|
|
4085
|
-
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",
|
|
4086
4160
|
storyFile: "apps/docs/src/stories/MarkdownEditor.stories.ts",
|
|
4087
4161
|
storyTitle: "Components/Form/MarkdownEditor",
|
|
4088
4162
|
manifestFile: "docs/ai/COMPONENTS/markdown-editor.yaml",
|
|
@@ -4118,6 +4192,12 @@ var treeui_catalog_default = {
|
|
|
4118
4192
|
type: "(file: File) => Promise<string>",
|
|
4119
4193
|
default: "undefined",
|
|
4120
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"
|
|
4121
4201
|
}
|
|
4122
4202
|
],
|
|
4123
4203
|
events: [
|
|
@@ -4144,12 +4224,12 @@ var treeui_catalog_default = {
|
|
|
4144
4224
|
}
|
|
4145
4225
|
],
|
|
4146
4226
|
a11y: [
|
|
4147
|
-
'Toolbar has role="toolbar" with aria-label.',
|
|
4148
|
-
'
|
|
4149
|
-
'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".',
|
|
4150
4230
|
'Upload status bar uses role="status" and aria-live="polite".',
|
|
4151
4231
|
"All toolbar buttons have title attributes describing the action.",
|
|
4152
|
-
"Textarea has aria-label
|
|
4232
|
+
"Textarea has aria-label (mirrors the placeholder text)."
|
|
4153
4233
|
],
|
|
4154
4234
|
behavior: [],
|
|
4155
4235
|
selection: {
|
|
@@ -5225,7 +5305,7 @@ var treeui_catalog_default = {
|
|
|
5225
5305
|
props: [
|
|
5226
5306
|
{
|
|
5227
5307
|
name: "plans",
|
|
5228
|
-
type: "
|
|
5308
|
+
type: "TPricingPlan[]",
|
|
5229
5309
|
required: true,
|
|
5230
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"
|
|
5231
5311
|
},
|
|
@@ -5246,14 +5326,14 @@ var treeui_catalog_default = {
|
|
|
5246
5326
|
{
|
|
5247
5327
|
name: "select",
|
|
5248
5328
|
description: "Emitted when any plan's CTA is clicked. Provides the plan data and index.",
|
|
5249
|
-
payload: "[plan:
|
|
5329
|
+
payload: "[plan: TPricingPlan, index: number]"
|
|
5250
5330
|
}
|
|
5251
5331
|
],
|
|
5252
5332
|
slots: [
|
|
5253
5333
|
{
|
|
5254
5334
|
name: "plan",
|
|
5255
5335
|
description: "Custom rendering for each plan card.",
|
|
5256
|
-
note: "{ plan:
|
|
5336
|
+
note: "{ plan: TPricingPlan, index: number }"
|
|
5257
5337
|
}
|
|
5258
5338
|
],
|
|
5259
5339
|
a11y: [
|
|
@@ -5412,7 +5492,7 @@ var treeui_catalog_default = {
|
|
|
5412
5492
|
package: "@treeui/vue",
|
|
5413
5493
|
category: "Feedback",
|
|
5414
5494
|
status: "draft",
|
|
5415
|
-
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",
|
|
5416
5496
|
storyFile: "apps/docs/src/stories/Progress.stories.ts",
|
|
5417
5497
|
storyTitle: "Components/Feedback/Progress",
|
|
5418
5498
|
manifestFile: "docs/ai/COMPONENTS/progress.yaml",
|
|
@@ -5452,7 +5532,8 @@ var treeui_catalog_default = {
|
|
|
5452
5532
|
"role: progressbar",
|
|
5453
5533
|
'attributes: ["aria-valuenow (omitted when indeterminate)","aria-valuemin (always 0)","aria-valuemax (always 100)","aria-label"]',
|
|
5454
5534
|
"keyboard:",
|
|
5455
|
-
"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."
|
|
5456
5537
|
],
|
|
5457
5538
|
behavior: [],
|
|
5458
5539
|
selection: {
|
|
@@ -5822,10 +5903,13 @@ var treeui_catalog_default = {
|
|
|
5822
5903
|
],
|
|
5823
5904
|
slots: [
|
|
5824
5905
|
{
|
|
5825
|
-
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
|
+
`
|
|
5826
5909
|
},
|
|
5827
5910
|
{
|
|
5828
|
-
name: "empty"
|
|
5911
|
+
name: "empty",
|
|
5912
|
+
description: "Replaces `emptyText` when `items` is empty."
|
|
5829
5913
|
}
|
|
5830
5914
|
],
|
|
5831
5915
|
a11y: [
|
|
@@ -5838,7 +5922,8 @@ var treeui_catalog_default = {
|
|
|
5838
5922
|
],
|
|
5839
5923
|
behavior: [
|
|
5840
5924
|
"can_be_controlled_or_uncontrolled: true",
|
|
5841
|
-
"
|
|
5925
|
+
"supports_presentational_row_slot: true",
|
|
5926
|
+
"supports_interactive_content_in_rows: false",
|
|
5842
5927
|
"empty_state_text_supported: true"
|
|
5843
5928
|
],
|
|
5844
5929
|
selection: {
|
|
@@ -7019,7 +7104,7 @@ var treeui_catalog_default = {
|
|
|
7019
7104
|
],
|
|
7020
7105
|
slots: [
|
|
7021
7106
|
{
|
|
7022
|
-
name: "
|
|
7107
|
+
name: "default"
|
|
7023
7108
|
}
|
|
7024
7109
|
],
|
|
7025
7110
|
a11y: [
|
|
@@ -7830,6 +7915,847 @@ var treeui_catalog_default = {
|
|
|
7830
7915
|
"hierarchy-picker"
|
|
7831
7916
|
]
|
|
7832
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
|
+
}
|
|
7833
8759
|
]
|
|
7834
8760
|
};
|
|
7835
8761
|
|
|
@@ -8075,6 +9001,43 @@ var searchRecipes = (query, limit = 6) => catalog.recipes.map((recipe) => ({
|
|
|
8075
9001
|
recipe,
|
|
8076
9002
|
score: scoreMatch(query, recipeSearchText(recipe))
|
|
8077
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);
|
|
8078
9041
|
var formatFieldList = (label, values) => values.length > 0 ? `${label}: ${values.join(", ")}` : void 0;
|
|
8079
9042
|
var formatComponentSummary = (component) => {
|
|
8080
9043
|
const lines = [
|
|
@@ -8119,6 +9082,12 @@ var formatRecipeResults = (results) => results.length > 0 ? results.map((result,
|
|
|
8119
9082
|
const useWhen = result.recipe.useWhen[0];
|
|
8120
9083
|
return `${index + 1}. ${result.recipe.name}: ${useWhen ?? "No recipe summary available."} Components: ${result.recipe.compose.join(", ")}.`;
|
|
8121
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.";
|
|
8122
9091
|
var formatSetupGuide = (componentName) => {
|
|
8123
9092
|
if (!componentName) {
|
|
8124
9093
|
return [
|
|
@@ -8175,6 +9144,12 @@ var resourceList = [
|
|
|
8175
9144
|
description: "Reusable multi-component composition recipes.",
|
|
8176
9145
|
mimeType: "application/json"
|
|
8177
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
|
+
},
|
|
8178
9153
|
...catalog.components.map((component) => ({
|
|
8179
9154
|
uri: `treeui://components/${component.name}`,
|
|
8180
9155
|
name: component.name,
|
|
@@ -8202,6 +9177,9 @@ var readResourcePayload = (uri) => {
|
|
|
8202
9177
|
if (uri === "treeui://recipes") {
|
|
8203
9178
|
return catalog.recipes;
|
|
8204
9179
|
}
|
|
9180
|
+
if (uri === "treeui://tokens") {
|
|
9181
|
+
return catalog.tokens;
|
|
9182
|
+
}
|
|
8205
9183
|
const componentMatch = uri.match(/^treeui:\/\/components\/([^/]+)$/);
|
|
8206
9184
|
if (componentMatch) {
|
|
8207
9185
|
const component = findComponent(componentMatch[1]);
|
|
@@ -8303,6 +9281,21 @@ var createTreeuiMcpServer = () => {
|
|
|
8303
9281
|
},
|
|
8304
9282
|
required: ["query"]
|
|
8305
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
|
+
}
|
|
8306
9299
|
}
|
|
8307
9300
|
]
|
|
8308
9301
|
}));
|
|
@@ -8343,6 +9336,13 @@ var createTreeuiMcpServer = () => {
|
|
|
8343
9336
|
}
|
|
8344
9337
|
return asTextContent(formatRecipeResults(searchRecipes(query, readNumberArg(args, "limit", 6))));
|
|
8345
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
|
+
}
|
|
8346
9346
|
return asErrorTextContent(`Unknown tool: ${name}`);
|
|
8347
9347
|
});
|
|
8348
9348
|
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
@@ -8372,9 +9372,11 @@ export {
|
|
|
8372
9372
|
searchComponents,
|
|
8373
9373
|
recommendComponents,
|
|
8374
9374
|
searchRecipes,
|
|
9375
|
+
searchTokens,
|
|
8375
9376
|
formatComponentSummary,
|
|
8376
9377
|
formatSearchResults,
|
|
8377
9378
|
formatRecipeResults,
|
|
9379
|
+
formatTokenResults,
|
|
8378
9380
|
formatSetupGuide,
|
|
8379
9381
|
createTreeuiMcpServer
|
|
8380
9382
|
};
|