@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
package/dist/cli.cjs
CHANGED
|
@@ -34,9 +34,9 @@ var import_server = require("@modelcontextprotocol/sdk/server/index.js");
|
|
|
34
34
|
|
|
35
35
|
// src/generated/treeui.catalog.json
|
|
36
36
|
var treeui_catalog_default = {
|
|
37
|
-
generatedAt: "2026-07-
|
|
37
|
+
generatedAt: "2026-07-18T23:35:26.876Z",
|
|
38
38
|
packageName: "@treeui/vue",
|
|
39
|
-
packageVersion: "0.
|
|
39
|
+
packageVersion: "0.16.0",
|
|
40
40
|
decisionGuides: [
|
|
41
41
|
{
|
|
42
42
|
id: "single-choice",
|
|
@@ -186,6 +186,44 @@ var treeui_catalog_default = {
|
|
|
186
186
|
}
|
|
187
187
|
]
|
|
188
188
|
},
|
|
189
|
+
{
|
|
190
|
+
id: "navigate-or-act",
|
|
191
|
+
question: "Navigate somewhere vs. perform an action",
|
|
192
|
+
options: [
|
|
193
|
+
{
|
|
194
|
+
use: "TLink",
|
|
195
|
+
when: [
|
|
196
|
+
"Activating it changes the URL \u2014 an external link, a route, or an in-page anchor.",
|
|
197
|
+
"It should be openable in a new tab, copyable, and crawlable."
|
|
198
|
+
],
|
|
199
|
+
notes: []
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
use: "TButton",
|
|
203
|
+
when: [
|
|
204
|
+
"Activating it runs behavior on the current page \u2014 submit, open an overlay, delete, toggle.",
|
|
205
|
+
"It needs sizes, action variants, or a loading state."
|
|
206
|
+
],
|
|
207
|
+
notes: [
|
|
208
|
+
'Use `variant="ghost"` when an action needs to look understated like a link.'
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
use: "TNavMenu",
|
|
213
|
+
when: [
|
|
214
|
+
"The links are app-section navigation inside a shell or sidebar."
|
|
215
|
+
],
|
|
216
|
+
notes: []
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
use: "TBreadcrumb",
|
|
220
|
+
when: [
|
|
221
|
+
"The links express where the current page sits in a hierarchy."
|
|
222
|
+
],
|
|
223
|
+
notes: []
|
|
224
|
+
}
|
|
225
|
+
]
|
|
226
|
+
},
|
|
189
227
|
{
|
|
190
228
|
id: "feedback-choice",
|
|
191
229
|
question: "Communicate status or feedback",
|
|
@@ -2270,12 +2308,14 @@ var treeui_catalog_default = {
|
|
|
2270
2308
|
{
|
|
2271
2309
|
name: "padded",
|
|
2272
2310
|
type: "boolean",
|
|
2273
|
-
default: "true"
|
|
2311
|
+
default: "true",
|
|
2312
|
+
note: "Adds `.is-padded`, i.e. an inline padding of `clamp(var(--tree-space-4), 3vw, var(--tree-space-6))`.\n"
|
|
2274
2313
|
},
|
|
2275
2314
|
{
|
|
2276
2315
|
name: "centered",
|
|
2277
2316
|
type: "boolean",
|
|
2278
|
-
default: "true"
|
|
2317
|
+
default: "true",
|
|
2318
|
+
note: "Adds `.is-centered`, i.e. `margin-inline: auto`."
|
|
2279
2319
|
}
|
|
2280
2320
|
],
|
|
2281
2321
|
events: [],
|
|
@@ -3170,6 +3210,7 @@ var treeui_catalog_default = {
|
|
|
3170
3210
|
"role: menu",
|
|
3171
3211
|
"trigger_aria_haspopup: menu",
|
|
3172
3212
|
"trigger_aria_expanded: true",
|
|
3213
|
+
"trigger_aria_controls: menu id, while open",
|
|
3173
3214
|
"aria_disabled_on_disabled_items: true",
|
|
3174
3215
|
"focus_visible_on_trigger: true",
|
|
3175
3216
|
"keyboard_arrow_navigation: true",
|
|
@@ -3179,9 +3220,11 @@ var treeui_catalog_default = {
|
|
|
3179
3220
|
],
|
|
3180
3221
|
behavior: [
|
|
3181
3222
|
"outside_click_closes_menu: true",
|
|
3182
|
-
"
|
|
3223
|
+
"outside_click_restores_focus: false",
|
|
3183
3224
|
"chevron_rotates_when_open: true",
|
|
3184
|
-
"menu_grows_to_fit_items_without_wrapping: true"
|
|
3225
|
+
"menu_grows_to_fit_items_without_wrapping: true",
|
|
3226
|
+
"opening_focuses_first_enabled_item: true",
|
|
3227
|
+
'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}'
|
|
3185
3228
|
],
|
|
3186
3229
|
selection: {
|
|
3187
3230
|
keywords: [
|
|
@@ -3577,7 +3620,7 @@ var treeui_catalog_default = {
|
|
|
3577
3620
|
name: "htmlFor",
|
|
3578
3621
|
type: "string",
|
|
3579
3622
|
required: false,
|
|
3580
|
-
description: "
|
|
3623
|
+
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"
|
|
3581
3624
|
},
|
|
3582
3625
|
{
|
|
3583
3626
|
name: "error",
|
|
@@ -3635,10 +3678,11 @@ var treeui_catalog_default = {
|
|
|
3635
3678
|
}
|
|
3636
3679
|
],
|
|
3637
3680
|
a11y: [
|
|
3638
|
-
"
|
|
3681
|
+
"Renders a native <label> element, but ONLY when `label` or the `label` slot is provided.",
|
|
3639
3682
|
"Error messages are wrapped in role='alert' for screen reader announcements.",
|
|
3640
3683
|
"Required indicator (*) is aria-hidden to avoid redundant announcements; use aria-required on the input itself.",
|
|
3641
|
-
"Error takes precedence over hint to avoid conflicting messages."
|
|
3684
|
+
"Error takes precedence over hint to avoid conflicting messages.",
|
|
3685
|
+
"Extra attrs land on the root <div> (inheritAttrs: false), not on the child control."
|
|
3642
3686
|
],
|
|
3643
3687
|
behavior: [],
|
|
3644
3688
|
selection: {
|
|
@@ -4099,10 +4143,39 @@ var treeui_catalog_default = {
|
|
|
4099
4143
|
],
|
|
4100
4144
|
behavior: [],
|
|
4101
4145
|
selection: {
|
|
4102
|
-
keywords: [
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4146
|
+
keywords: [
|
|
4147
|
+
"link",
|
|
4148
|
+
"anchor",
|
|
4149
|
+
"hyperlink",
|
|
4150
|
+
"navigation",
|
|
4151
|
+
"router link",
|
|
4152
|
+
"external link",
|
|
4153
|
+
"href",
|
|
4154
|
+
"to"
|
|
4155
|
+
],
|
|
4156
|
+
useWhen: [
|
|
4157
|
+
"The action navigates somewhere \u2014 a URL, a route, or an anchor on the page.",
|
|
4158
|
+
"You want consistent link styling with `default`, `muted`, or `danger` emphasis.",
|
|
4159
|
+
"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."
|
|
4160
|
+
],
|
|
4161
|
+
avoidWhen: [
|
|
4162
|
+
"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.",
|
|
4163
|
+
"You need a full call-to-action surface with variants, sizes, and a loading state."
|
|
4164
|
+
],
|
|
4165
|
+
alternatives: [
|
|
4166
|
+
{
|
|
4167
|
+
component: "TButton",
|
|
4168
|
+
when: 'The control performs an action. Use `variant="ghost"` for a low-emphasis, link-like button.'
|
|
4169
|
+
},
|
|
4170
|
+
{
|
|
4171
|
+
component: "TBreadcrumb",
|
|
4172
|
+
when: "The links form a hierarchy trail."
|
|
4173
|
+
},
|
|
4174
|
+
{
|
|
4175
|
+
component: "TNavMenu",
|
|
4176
|
+
when: "The links are app-section navigation in a shell or sidebar."
|
|
4177
|
+
}
|
|
4178
|
+
]
|
|
4106
4179
|
},
|
|
4107
4180
|
setup: {
|
|
4108
4181
|
required: [],
|
|
@@ -4116,7 +4189,8 @@ var treeui_catalog_default = {
|
|
|
4116
4189
|
package: "@treeui/vue",
|
|
4117
4190
|
category: "Form",
|
|
4118
4191
|
status: "stable",
|
|
4119
|
-
description: "A
|
|
4192
|
+
description: "A Markdown editor with an always-visible side-by-side live preview, toolbar formatting, keyboard shortcuts, and image paste/drop upload support.\n",
|
|
4193
|
+
sourceFile: "packages/vue/src/components/TMarkdownEditor.vue",
|
|
4120
4194
|
storyFile: "apps/docs/src/stories/MarkdownEditor.stories.ts",
|
|
4121
4195
|
storyTitle: "Components/Form/MarkdownEditor",
|
|
4122
4196
|
manifestFile: "docs/ai/COMPONENTS/markdown-editor.yaml",
|
|
@@ -4152,6 +4226,12 @@ var treeui_catalog_default = {
|
|
|
4152
4226
|
type: "(file: File) => Promise<string>",
|
|
4153
4227
|
default: "undefined",
|
|
4154
4228
|
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"
|
|
4229
|
+
},
|
|
4230
|
+
{
|
|
4231
|
+
name: "sanitize",
|
|
4232
|
+
type: "(html: string) => string",
|
|
4233
|
+
default: "undefined",
|
|
4234
|
+
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"
|
|
4155
4235
|
}
|
|
4156
4236
|
],
|
|
4157
4237
|
events: [
|
|
@@ -4178,12 +4258,12 @@ var treeui_catalog_default = {
|
|
|
4178
4258
|
}
|
|
4179
4259
|
],
|
|
4180
4260
|
a11y: [
|
|
4181
|
-
'Toolbar has role="toolbar" with aria-label.',
|
|
4182
|
-
'
|
|
4183
|
-
'Preview pane
|
|
4261
|
+
'Toolbar has role="toolbar" with aria-label="Markdown formatting".',
|
|
4262
|
+
'Toolbar groups are separated by elements with role="separator".',
|
|
4263
|
+
'Preview pane carries aria-label="Markdown preview".',
|
|
4184
4264
|
'Upload status bar uses role="status" and aria-live="polite".',
|
|
4185
4265
|
"All toolbar buttons have title attributes describing the action.",
|
|
4186
|
-
"Textarea has aria-label
|
|
4266
|
+
"Textarea has aria-label (mirrors the placeholder text)."
|
|
4187
4267
|
],
|
|
4188
4268
|
behavior: [],
|
|
4189
4269
|
selection: {
|
|
@@ -5259,7 +5339,7 @@ var treeui_catalog_default = {
|
|
|
5259
5339
|
props: [
|
|
5260
5340
|
{
|
|
5261
5341
|
name: "plans",
|
|
5262
|
-
type: "
|
|
5342
|
+
type: "TPricingPlan[]",
|
|
5263
5343
|
required: true,
|
|
5264
5344
|
description: "Array of plan objects. Each plan supports the same props as PricingCard (title, description, price, currency, period, features, highlighted, badge, buttonText, disabled).\n"
|
|
5265
5345
|
},
|
|
@@ -5280,14 +5360,14 @@ var treeui_catalog_default = {
|
|
|
5280
5360
|
{
|
|
5281
5361
|
name: "select",
|
|
5282
5362
|
description: "Emitted when any plan's CTA is clicked. Provides the plan data and index.",
|
|
5283
|
-
payload: "[plan:
|
|
5363
|
+
payload: "[plan: TPricingPlan, index: number]"
|
|
5284
5364
|
}
|
|
5285
5365
|
],
|
|
5286
5366
|
slots: [
|
|
5287
5367
|
{
|
|
5288
5368
|
name: "plan",
|
|
5289
5369
|
description: "Custom rendering for each plan card.",
|
|
5290
|
-
note: "{ plan:
|
|
5370
|
+
note: "{ plan: TPricingPlan, index: number }"
|
|
5291
5371
|
}
|
|
5292
5372
|
],
|
|
5293
5373
|
a11y: [
|
|
@@ -5446,7 +5526,7 @@ var treeui_catalog_default = {
|
|
|
5446
5526
|
package: "@treeui/vue",
|
|
5447
5527
|
category: "Feedback",
|
|
5448
5528
|
status: "draft",
|
|
5449
|
-
description: "Determinate and indeterminate progress indicator.
|
|
5529
|
+
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",
|
|
5450
5530
|
storyFile: "apps/docs/src/stories/Progress.stories.ts",
|
|
5451
5531
|
storyTitle: "Components/Feedback/Progress",
|
|
5452
5532
|
manifestFile: "docs/ai/COMPONENTS/progress.yaml",
|
|
@@ -5486,7 +5566,8 @@ var treeui_catalog_default = {
|
|
|
5486
5566
|
"role: progressbar",
|
|
5487
5567
|
'attributes: ["aria-valuenow (omitted when indeterminate)","aria-valuemin (always 0)","aria-valuemax (always 100)","aria-label"]',
|
|
5488
5568
|
"keyboard:",
|
|
5489
|
-
"notes: Indeterminate state omits aria-valuenow so assistive tech announces the bar as indeterminate."
|
|
5569
|
+
"notes: Indeterminate state omits aria-valuenow so assistive tech announces the bar as indeterminate.",
|
|
5570
|
+
"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."
|
|
5490
5571
|
],
|
|
5491
5572
|
behavior: [],
|
|
5492
5573
|
selection: {
|
|
@@ -5856,10 +5937,13 @@ var treeui_catalog_default = {
|
|
|
5856
5937
|
],
|
|
5857
5938
|
slots: [
|
|
5858
5939
|
{
|
|
5859
|
-
name: "item"
|
|
5940
|
+
name: "item",
|
|
5941
|
+
description: `Replaces the default row body (indicator, label, description, meta). Renders INSIDE the row's <button role="option">.
|
|
5942
|
+
`
|
|
5860
5943
|
},
|
|
5861
5944
|
{
|
|
5862
|
-
name: "empty"
|
|
5945
|
+
name: "empty",
|
|
5946
|
+
description: "Replaces `emptyText` when `items` is empty."
|
|
5863
5947
|
}
|
|
5864
5948
|
],
|
|
5865
5949
|
a11y: [
|
|
@@ -5872,7 +5956,8 @@ var treeui_catalog_default = {
|
|
|
5872
5956
|
],
|
|
5873
5957
|
behavior: [
|
|
5874
5958
|
"can_be_controlled_or_uncontrolled: true",
|
|
5875
|
-
"
|
|
5959
|
+
"supports_presentational_row_slot: true",
|
|
5960
|
+
"supports_interactive_content_in_rows: false",
|
|
5876
5961
|
"empty_state_text_supported: true"
|
|
5877
5962
|
],
|
|
5878
5963
|
selection: {
|
|
@@ -7053,7 +7138,7 @@ var treeui_catalog_default = {
|
|
|
7053
7138
|
],
|
|
7054
7139
|
slots: [
|
|
7055
7140
|
{
|
|
7056
|
-
name: "
|
|
7141
|
+
name: "default"
|
|
7057
7142
|
}
|
|
7058
7143
|
],
|
|
7059
7144
|
a11y: [
|
|
@@ -7864,6 +7949,847 @@ var treeui_catalog_default = {
|
|
|
7864
7949
|
"hierarchy-picker"
|
|
7865
7950
|
]
|
|
7866
7951
|
}
|
|
7952
|
+
],
|
|
7953
|
+
tokens: [
|
|
7954
|
+
{
|
|
7955
|
+
cssVar: "--tree-font-family-sans",
|
|
7956
|
+
path: "font.family.sans",
|
|
7957
|
+
value: "'Google Sans Flex', 'Segoe UI', sans-serif",
|
|
7958
|
+
category: "font",
|
|
7959
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7960
|
+
},
|
|
7961
|
+
{
|
|
7962
|
+
cssVar: "--tree-font-family-mono",
|
|
7963
|
+
path: "font.family.mono",
|
|
7964
|
+
value: "'Google Sans Code', 'SFMono-Regular', monospace",
|
|
7965
|
+
category: "font",
|
|
7966
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7967
|
+
},
|
|
7968
|
+
{
|
|
7969
|
+
cssVar: "--tree-font-size-xs",
|
|
7970
|
+
path: "font.size.xs",
|
|
7971
|
+
value: "0.6875rem",
|
|
7972
|
+
category: "font",
|
|
7973
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7974
|
+
},
|
|
7975
|
+
{
|
|
7976
|
+
cssVar: "--tree-font-size-sm",
|
|
7977
|
+
path: "font.size.sm",
|
|
7978
|
+
value: "0.8125rem",
|
|
7979
|
+
category: "font",
|
|
7980
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7981
|
+
},
|
|
7982
|
+
{
|
|
7983
|
+
cssVar: "--tree-font-size-md",
|
|
7984
|
+
path: "font.size.md",
|
|
7985
|
+
value: "0.9375rem",
|
|
7986
|
+
category: "font",
|
|
7987
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7988
|
+
},
|
|
7989
|
+
{
|
|
7990
|
+
cssVar: "--tree-font-size-base",
|
|
7991
|
+
path: "font.size.base",
|
|
7992
|
+
value: "0.9375rem",
|
|
7993
|
+
category: "font",
|
|
7994
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
7995
|
+
},
|
|
7996
|
+
{
|
|
7997
|
+
cssVar: "--tree-font-size-lg",
|
|
7998
|
+
path: "font.size.lg",
|
|
7999
|
+
value: "1.125rem",
|
|
8000
|
+
category: "font",
|
|
8001
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8002
|
+
},
|
|
8003
|
+
{
|
|
8004
|
+
cssVar: "--tree-font-size-xl",
|
|
8005
|
+
path: "font.size.xl",
|
|
8006
|
+
value: "1.375rem",
|
|
8007
|
+
category: "font",
|
|
8008
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8009
|
+
},
|
|
8010
|
+
{
|
|
8011
|
+
cssVar: "--tree-font-size-2xl",
|
|
8012
|
+
path: "font.size.2xl",
|
|
8013
|
+
value: "1.375rem",
|
|
8014
|
+
category: "font",
|
|
8015
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8016
|
+
},
|
|
8017
|
+
{
|
|
8018
|
+
cssVar: "--tree-font-size-3xl",
|
|
8019
|
+
path: "font.size.3xl",
|
|
8020
|
+
value: "1.75rem",
|
|
8021
|
+
category: "font",
|
|
8022
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8023
|
+
},
|
|
8024
|
+
{
|
|
8025
|
+
cssVar: "--tree-font-size-4xl",
|
|
8026
|
+
path: "font.size.4xl",
|
|
8027
|
+
value: "2.25rem",
|
|
8028
|
+
category: "font",
|
|
8029
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8030
|
+
},
|
|
8031
|
+
{
|
|
8032
|
+
cssVar: "--tree-font-size-5xl",
|
|
8033
|
+
path: "font.size.5xl",
|
|
8034
|
+
value: "3rem",
|
|
8035
|
+
category: "font",
|
|
8036
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8037
|
+
},
|
|
8038
|
+
{
|
|
8039
|
+
cssVar: "--tree-font-weight-regular",
|
|
8040
|
+
path: "font.weight.regular",
|
|
8041
|
+
value: "400",
|
|
8042
|
+
category: "font",
|
|
8043
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8044
|
+
},
|
|
8045
|
+
{
|
|
8046
|
+
cssVar: "--tree-font-weight-medium",
|
|
8047
|
+
path: "font.weight.medium",
|
|
8048
|
+
value: "500",
|
|
8049
|
+
category: "font",
|
|
8050
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8051
|
+
},
|
|
8052
|
+
{
|
|
8053
|
+
cssVar: "--tree-font-weight-semibold",
|
|
8054
|
+
path: "font.weight.semibold",
|
|
8055
|
+
value: "600",
|
|
8056
|
+
category: "font",
|
|
8057
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8058
|
+
},
|
|
8059
|
+
{
|
|
8060
|
+
cssVar: "--tree-font-weight-bold",
|
|
8061
|
+
path: "font.weight.bold",
|
|
8062
|
+
value: "700",
|
|
8063
|
+
category: "font",
|
|
8064
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8065
|
+
},
|
|
8066
|
+
{
|
|
8067
|
+
cssVar: "--tree-font-weight-extrabold",
|
|
8068
|
+
path: "font.weight.extrabold",
|
|
8069
|
+
value: "800",
|
|
8070
|
+
category: "font",
|
|
8071
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8072
|
+
},
|
|
8073
|
+
{
|
|
8074
|
+
cssVar: "--tree-font-lineHeight-compact",
|
|
8075
|
+
path: "font.lineHeight.compact",
|
|
8076
|
+
value: "1.1",
|
|
8077
|
+
category: "font",
|
|
8078
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8079
|
+
},
|
|
8080
|
+
{
|
|
8081
|
+
cssVar: "--tree-font-lineHeight-ui",
|
|
8082
|
+
path: "font.lineHeight.ui",
|
|
8083
|
+
value: "1.15",
|
|
8084
|
+
category: "font",
|
|
8085
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8086
|
+
},
|
|
8087
|
+
{
|
|
8088
|
+
cssVar: "--tree-font-lineHeight-tight",
|
|
8089
|
+
path: "font.lineHeight.tight",
|
|
8090
|
+
value: "1.25",
|
|
8091
|
+
category: "font",
|
|
8092
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8093
|
+
},
|
|
8094
|
+
{
|
|
8095
|
+
cssVar: "--tree-font-lineHeight-heading",
|
|
8096
|
+
path: "font.lineHeight.heading",
|
|
8097
|
+
value: "1.3",
|
|
8098
|
+
category: "font",
|
|
8099
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8100
|
+
},
|
|
8101
|
+
{
|
|
8102
|
+
cssVar: "--tree-font-lineHeight-base",
|
|
8103
|
+
path: "font.lineHeight.base",
|
|
8104
|
+
value: "1.5",
|
|
8105
|
+
category: "font",
|
|
8106
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8107
|
+
},
|
|
8108
|
+
{
|
|
8109
|
+
cssVar: "--tree-font-lineHeight-body",
|
|
8110
|
+
path: "font.lineHeight.body",
|
|
8111
|
+
value: "1.6",
|
|
8112
|
+
category: "font",
|
|
8113
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8114
|
+
},
|
|
8115
|
+
{
|
|
8116
|
+
cssVar: "--tree-font-lineHeight-relaxed",
|
|
8117
|
+
path: "font.lineHeight.relaxed",
|
|
8118
|
+
value: "1.65",
|
|
8119
|
+
category: "font",
|
|
8120
|
+
description: "Typography token: font family, size, weight, or line height."
|
|
8121
|
+
},
|
|
8122
|
+
{
|
|
8123
|
+
cssVar: "--tree-space-0",
|
|
8124
|
+
path: "space.0",
|
|
8125
|
+
value: "0",
|
|
8126
|
+
category: "space",
|
|
8127
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8128
|
+
},
|
|
8129
|
+
{
|
|
8130
|
+
cssVar: "--tree-space-1",
|
|
8131
|
+
path: "space.1",
|
|
8132
|
+
value: "0.25rem",
|
|
8133
|
+
category: "space",
|
|
8134
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8135
|
+
},
|
|
8136
|
+
{
|
|
8137
|
+
cssVar: "--tree-space-2",
|
|
8138
|
+
path: "space.2",
|
|
8139
|
+
value: "0.5rem",
|
|
8140
|
+
category: "space",
|
|
8141
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8142
|
+
},
|
|
8143
|
+
{
|
|
8144
|
+
cssVar: "--tree-space-3",
|
|
8145
|
+
path: "space.3",
|
|
8146
|
+
value: "0.75rem",
|
|
8147
|
+
category: "space",
|
|
8148
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8149
|
+
},
|
|
8150
|
+
{
|
|
8151
|
+
cssVar: "--tree-space-4",
|
|
8152
|
+
path: "space.4",
|
|
8153
|
+
value: "1rem",
|
|
8154
|
+
category: "space",
|
|
8155
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8156
|
+
},
|
|
8157
|
+
{
|
|
8158
|
+
cssVar: "--tree-space-5",
|
|
8159
|
+
path: "space.5",
|
|
8160
|
+
value: "1.25rem",
|
|
8161
|
+
category: "space",
|
|
8162
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8163
|
+
},
|
|
8164
|
+
{
|
|
8165
|
+
cssVar: "--tree-space-6",
|
|
8166
|
+
path: "space.6",
|
|
8167
|
+
value: "1.5rem",
|
|
8168
|
+
category: "space",
|
|
8169
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8170
|
+
},
|
|
8171
|
+
{
|
|
8172
|
+
cssVar: "--tree-space-8",
|
|
8173
|
+
path: "space.8",
|
|
8174
|
+
value: "2rem",
|
|
8175
|
+
category: "space",
|
|
8176
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8177
|
+
},
|
|
8178
|
+
{
|
|
8179
|
+
cssVar: "--tree-space-12",
|
|
8180
|
+
path: "space.12",
|
|
8181
|
+
value: "3rem",
|
|
8182
|
+
category: "space",
|
|
8183
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8184
|
+
},
|
|
8185
|
+
{
|
|
8186
|
+
cssVar: "--tree-space-16",
|
|
8187
|
+
path: "space.16",
|
|
8188
|
+
value: "4rem",
|
|
8189
|
+
category: "space",
|
|
8190
|
+
description: "Spacing scale step for padding, margin, and gap."
|
|
8191
|
+
},
|
|
8192
|
+
{
|
|
8193
|
+
cssVar: "--tree-radius-sm",
|
|
8194
|
+
path: "radius.sm",
|
|
8195
|
+
value: "0.375rem",
|
|
8196
|
+
category: "radius",
|
|
8197
|
+
description: "Corner radius scale step."
|
|
8198
|
+
},
|
|
8199
|
+
{
|
|
8200
|
+
cssVar: "--tree-radius-md",
|
|
8201
|
+
path: "radius.md",
|
|
8202
|
+
value: "0.625rem",
|
|
8203
|
+
category: "radius",
|
|
8204
|
+
description: "Corner radius scale step."
|
|
8205
|
+
},
|
|
8206
|
+
{
|
|
8207
|
+
cssVar: "--tree-radius-lg",
|
|
8208
|
+
path: "radius.lg",
|
|
8209
|
+
value: "0.875rem",
|
|
8210
|
+
category: "radius",
|
|
8211
|
+
description: "Corner radius scale step."
|
|
8212
|
+
},
|
|
8213
|
+
{
|
|
8214
|
+
cssVar: "--tree-radius-pill",
|
|
8215
|
+
path: "radius.pill",
|
|
8216
|
+
value: "999px",
|
|
8217
|
+
category: "radius",
|
|
8218
|
+
description: "Corner radius scale step."
|
|
8219
|
+
},
|
|
8220
|
+
{
|
|
8221
|
+
cssVar: "--tree-shadow-xs",
|
|
8222
|
+
path: "shadow.xs",
|
|
8223
|
+
value: "0 1px 2px rgba(15, 23, 42, 0.06)",
|
|
8224
|
+
category: "shadow",
|
|
8225
|
+
description: "Elevation shadow."
|
|
8226
|
+
},
|
|
8227
|
+
{
|
|
8228
|
+
cssVar: "--tree-shadow-sm",
|
|
8229
|
+
path: "shadow.sm",
|
|
8230
|
+
value: "0 6px 18px rgba(15, 23, 42, 0.08)",
|
|
8231
|
+
category: "shadow",
|
|
8232
|
+
description: "Elevation shadow."
|
|
8233
|
+
},
|
|
8234
|
+
{
|
|
8235
|
+
cssVar: "--tree-shadow-md",
|
|
8236
|
+
path: "shadow.md",
|
|
8237
|
+
value: "0 14px 34px rgba(15, 23, 42, 0.12)",
|
|
8238
|
+
category: "shadow",
|
|
8239
|
+
description: "Elevation shadow."
|
|
8240
|
+
},
|
|
8241
|
+
{
|
|
8242
|
+
cssVar: "--tree-gradient-brand",
|
|
8243
|
+
path: "gradient.brand",
|
|
8244
|
+
value: "linear-gradient(135deg, var(--tree-color-brand-primary), var(--tree-color-brand-hover))",
|
|
8245
|
+
category: "gradient",
|
|
8246
|
+
description: "Gradient composed from the themed brand variables."
|
|
8247
|
+
},
|
|
8248
|
+
{
|
|
8249
|
+
cssVar: "--tree-border-width-subtle",
|
|
8250
|
+
path: "border.width.subtle",
|
|
8251
|
+
value: "1px",
|
|
8252
|
+
category: "border",
|
|
8253
|
+
description: "Border width step."
|
|
8254
|
+
},
|
|
8255
|
+
{
|
|
8256
|
+
cssVar: "--tree-border-width-strong",
|
|
8257
|
+
path: "border.width.strong",
|
|
8258
|
+
value: "1.5px",
|
|
8259
|
+
category: "border",
|
|
8260
|
+
description: "Border width step."
|
|
8261
|
+
},
|
|
8262
|
+
{
|
|
8263
|
+
cssVar: "--tree-motion-duration-fast",
|
|
8264
|
+
path: "motion.duration.fast",
|
|
8265
|
+
value: "100ms",
|
|
8266
|
+
category: "motion",
|
|
8267
|
+
description: "Motion duration or easing curve."
|
|
8268
|
+
},
|
|
8269
|
+
{
|
|
8270
|
+
cssVar: "--tree-motion-duration-moderate",
|
|
8271
|
+
path: "motion.duration.moderate",
|
|
8272
|
+
value: "200ms",
|
|
8273
|
+
category: "motion",
|
|
8274
|
+
description: "Motion duration or easing curve."
|
|
8275
|
+
},
|
|
8276
|
+
{
|
|
8277
|
+
cssVar: "--tree-motion-duration-normal",
|
|
8278
|
+
path: "motion.duration.normal",
|
|
8279
|
+
value: "300ms",
|
|
8280
|
+
category: "motion",
|
|
8281
|
+
description: "Motion duration or easing curve."
|
|
8282
|
+
},
|
|
8283
|
+
{
|
|
8284
|
+
cssVar: "--tree-motion-duration-slow",
|
|
8285
|
+
path: "motion.duration.slow",
|
|
8286
|
+
value: "400ms",
|
|
8287
|
+
category: "motion",
|
|
8288
|
+
description: "Motion duration or easing curve."
|
|
8289
|
+
},
|
|
8290
|
+
{
|
|
8291
|
+
cssVar: "--tree-motion-duration-slower",
|
|
8292
|
+
path: "motion.duration.slower",
|
|
8293
|
+
value: "500ms",
|
|
8294
|
+
category: "motion",
|
|
8295
|
+
description: "Motion duration or easing curve."
|
|
8296
|
+
},
|
|
8297
|
+
{
|
|
8298
|
+
cssVar: "--tree-motion-easing-standard",
|
|
8299
|
+
path: "motion.easing.standard",
|
|
8300
|
+
value: "cubic-bezier(0.2, 0, 0, 1)",
|
|
8301
|
+
category: "motion",
|
|
8302
|
+
description: "Motion duration or easing curve."
|
|
8303
|
+
},
|
|
8304
|
+
{
|
|
8305
|
+
cssVar: "--tree-motion-easing-easeOut",
|
|
8306
|
+
path: "motion.easing.easeOut",
|
|
8307
|
+
value: "cubic-bezier(0, 0, 0.2, 1)",
|
|
8308
|
+
category: "motion",
|
|
8309
|
+
description: "Motion duration or easing curve."
|
|
8310
|
+
},
|
|
8311
|
+
{
|
|
8312
|
+
cssVar: "--tree-motion-easing-easeInOut",
|
|
8313
|
+
path: "motion.easing.easeInOut",
|
|
8314
|
+
value: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
8315
|
+
category: "motion",
|
|
8316
|
+
description: "Motion duration or easing curve."
|
|
8317
|
+
},
|
|
8318
|
+
{
|
|
8319
|
+
cssVar: "--tree-motion-easing-easeIn",
|
|
8320
|
+
path: "motion.easing.easeIn",
|
|
8321
|
+
value: "cubic-bezier(0.4, 0, 1, 1)",
|
|
8322
|
+
category: "motion",
|
|
8323
|
+
description: "Motion duration or easing curve."
|
|
8324
|
+
},
|
|
8325
|
+
{
|
|
8326
|
+
cssVar: "--tree-size-control-sm",
|
|
8327
|
+
path: "size.control.sm",
|
|
8328
|
+
value: "2rem",
|
|
8329
|
+
category: "size",
|
|
8330
|
+
description: "Control and icon sizing scale step."
|
|
8331
|
+
},
|
|
8332
|
+
{
|
|
8333
|
+
cssVar: "--tree-size-control-md",
|
|
8334
|
+
path: "size.control.md",
|
|
8335
|
+
value: "2.5rem",
|
|
8336
|
+
category: "size",
|
|
8337
|
+
description: "Control and icon sizing scale step."
|
|
8338
|
+
},
|
|
8339
|
+
{
|
|
8340
|
+
cssVar: "--tree-size-control-lg",
|
|
8341
|
+
path: "size.control.lg",
|
|
8342
|
+
value: "3rem",
|
|
8343
|
+
category: "size",
|
|
8344
|
+
description: "Control and icon sizing scale step."
|
|
8345
|
+
},
|
|
8346
|
+
{
|
|
8347
|
+
cssVar: "--tree-size-icon-sm",
|
|
8348
|
+
path: "size.icon.sm",
|
|
8349
|
+
value: "1rem",
|
|
8350
|
+
category: "size",
|
|
8351
|
+
description: "Control and icon sizing scale step."
|
|
8352
|
+
},
|
|
8353
|
+
{
|
|
8354
|
+
cssVar: "--tree-size-icon-md",
|
|
8355
|
+
path: "size.icon.md",
|
|
8356
|
+
value: "1.25rem",
|
|
8357
|
+
category: "size",
|
|
8358
|
+
description: "Control and icon sizing scale step."
|
|
8359
|
+
},
|
|
8360
|
+
{
|
|
8361
|
+
cssVar: "--tree-size-icon-lg",
|
|
8362
|
+
path: "size.icon.lg",
|
|
8363
|
+
value: "1.5rem",
|
|
8364
|
+
category: "size",
|
|
8365
|
+
description: "Control and icon sizing scale step."
|
|
8366
|
+
},
|
|
8367
|
+
{
|
|
8368
|
+
cssVar: "--tree-size-icon-xl",
|
|
8369
|
+
path: "size.icon.xl",
|
|
8370
|
+
value: "2rem",
|
|
8371
|
+
category: "size",
|
|
8372
|
+
description: "Control and icon sizing scale step."
|
|
8373
|
+
},
|
|
8374
|
+
{
|
|
8375
|
+
cssVar: "--tree-size-icon-2xl",
|
|
8376
|
+
path: "size.icon.2xl",
|
|
8377
|
+
value: "3rem",
|
|
8378
|
+
category: "size",
|
|
8379
|
+
description: "Control and icon sizing scale step."
|
|
8380
|
+
},
|
|
8381
|
+
{
|
|
8382
|
+
cssVar: "--tree-layout-grid-columns",
|
|
8383
|
+
path: "layout.grid.columns",
|
|
8384
|
+
value: "12",
|
|
8385
|
+
category: "layout",
|
|
8386
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8387
|
+
},
|
|
8388
|
+
{
|
|
8389
|
+
cssVar: "--tree-layout-grid-base",
|
|
8390
|
+
path: "layout.grid.base",
|
|
8391
|
+
value: "8px",
|
|
8392
|
+
category: "layout",
|
|
8393
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8394
|
+
},
|
|
8395
|
+
{
|
|
8396
|
+
cssVar: "--tree-layout-gutter-sm",
|
|
8397
|
+
path: "layout.gutter.sm",
|
|
8398
|
+
value: "1rem",
|
|
8399
|
+
category: "layout",
|
|
8400
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8401
|
+
},
|
|
8402
|
+
{
|
|
8403
|
+
cssVar: "--tree-layout-gutter-md",
|
|
8404
|
+
path: "layout.gutter.md",
|
|
8405
|
+
value: "1.5rem",
|
|
8406
|
+
category: "layout",
|
|
8407
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8408
|
+
},
|
|
8409
|
+
{
|
|
8410
|
+
cssVar: "--tree-layout-margin-sm",
|
|
8411
|
+
path: "layout.margin.sm",
|
|
8412
|
+
value: "1.5rem",
|
|
8413
|
+
category: "layout",
|
|
8414
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8415
|
+
},
|
|
8416
|
+
{
|
|
8417
|
+
cssVar: "--tree-layout-margin-md",
|
|
8418
|
+
path: "layout.margin.md",
|
|
8419
|
+
value: "2rem",
|
|
8420
|
+
category: "layout",
|
|
8421
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8422
|
+
},
|
|
8423
|
+
{
|
|
8424
|
+
cssVar: "--tree-layout-margin-lg",
|
|
8425
|
+
path: "layout.margin.lg",
|
|
8426
|
+
value: "3rem",
|
|
8427
|
+
category: "layout",
|
|
8428
|
+
description: "Layout grid, gutter, or margin measurement."
|
|
8429
|
+
},
|
|
8430
|
+
{
|
|
8431
|
+
cssVar: "--tree-z-base",
|
|
8432
|
+
path: "z.base",
|
|
8433
|
+
value: "1",
|
|
8434
|
+
category: "z",
|
|
8435
|
+
description: "Stacking layer (z-index)."
|
|
8436
|
+
},
|
|
8437
|
+
{
|
|
8438
|
+
cssVar: "--tree-z-dropdown",
|
|
8439
|
+
path: "z.dropdown",
|
|
8440
|
+
value: "1000",
|
|
8441
|
+
category: "z",
|
|
8442
|
+
description: "Stacking layer (z-index)."
|
|
8443
|
+
},
|
|
8444
|
+
{
|
|
8445
|
+
cssVar: "--tree-z-popover",
|
|
8446
|
+
path: "z.popover",
|
|
8447
|
+
value: "1050",
|
|
8448
|
+
category: "z",
|
|
8449
|
+
description: "Stacking layer (z-index)."
|
|
8450
|
+
},
|
|
8451
|
+
{
|
|
8452
|
+
cssVar: "--tree-z-sticky",
|
|
8453
|
+
path: "z.sticky",
|
|
8454
|
+
value: "1100",
|
|
8455
|
+
category: "z",
|
|
8456
|
+
description: "Stacking layer (z-index)."
|
|
8457
|
+
},
|
|
8458
|
+
{
|
|
8459
|
+
cssVar: "--tree-z-overlay",
|
|
8460
|
+
path: "z.overlay",
|
|
8461
|
+
value: "1200",
|
|
8462
|
+
category: "z",
|
|
8463
|
+
description: "Stacking layer (z-index)."
|
|
8464
|
+
},
|
|
8465
|
+
{
|
|
8466
|
+
cssVar: "--tree-z-modal",
|
|
8467
|
+
path: "z.modal",
|
|
8468
|
+
value: "1300",
|
|
8469
|
+
category: "z",
|
|
8470
|
+
description: "Stacking layer (z-index)."
|
|
8471
|
+
},
|
|
8472
|
+
{
|
|
8473
|
+
cssVar: "--tree-z-toast",
|
|
8474
|
+
path: "z.toast",
|
|
8475
|
+
value: "1400",
|
|
8476
|
+
category: "z",
|
|
8477
|
+
description: "Stacking layer (z-index)."
|
|
8478
|
+
},
|
|
8479
|
+
{
|
|
8480
|
+
cssVar: "--tree-breakpoint-sm",
|
|
8481
|
+
path: "breakpoint.sm",
|
|
8482
|
+
value: "640px",
|
|
8483
|
+
category: "breakpoint",
|
|
8484
|
+
description: "Responsive breakpoint width."
|
|
8485
|
+
},
|
|
8486
|
+
{
|
|
8487
|
+
cssVar: "--tree-breakpoint-md",
|
|
8488
|
+
path: "breakpoint.md",
|
|
8489
|
+
value: "768px",
|
|
8490
|
+
category: "breakpoint",
|
|
8491
|
+
description: "Responsive breakpoint width."
|
|
8492
|
+
},
|
|
8493
|
+
{
|
|
8494
|
+
cssVar: "--tree-breakpoint-lg",
|
|
8495
|
+
path: "breakpoint.lg",
|
|
8496
|
+
value: "1024px",
|
|
8497
|
+
category: "breakpoint",
|
|
8498
|
+
description: "Responsive breakpoint width."
|
|
8499
|
+
},
|
|
8500
|
+
{
|
|
8501
|
+
cssVar: "--tree-breakpoint-xl",
|
|
8502
|
+
path: "breakpoint.xl",
|
|
8503
|
+
value: "1280px",
|
|
8504
|
+
category: "breakpoint",
|
|
8505
|
+
description: "Responsive breakpoint width."
|
|
8506
|
+
},
|
|
8507
|
+
{
|
|
8508
|
+
cssVar: "--tree-color-bg-primary",
|
|
8509
|
+
path: "color.bg.primary",
|
|
8510
|
+
value: "#f6f8fa",
|
|
8511
|
+
category: "color",
|
|
8512
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8513
|
+
themeValues: {
|
|
8514
|
+
light: "#f6f8fa",
|
|
8515
|
+
dark: "#1c2128"
|
|
8516
|
+
}
|
|
8517
|
+
},
|
|
8518
|
+
{
|
|
8519
|
+
cssVar: "--tree-color-bg-surface",
|
|
8520
|
+
path: "color.bg.surface",
|
|
8521
|
+
value: "#ffffff",
|
|
8522
|
+
category: "color",
|
|
8523
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8524
|
+
themeValues: {
|
|
8525
|
+
light: "#ffffff",
|
|
8526
|
+
dark: "#22272e"
|
|
8527
|
+
}
|
|
8528
|
+
},
|
|
8529
|
+
{
|
|
8530
|
+
cssVar: "--tree-color-bg-subtle",
|
|
8531
|
+
path: "color.bg.subtle",
|
|
8532
|
+
value: "#eff2f5",
|
|
8533
|
+
category: "color",
|
|
8534
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8535
|
+
themeValues: {
|
|
8536
|
+
light: "#eff2f5",
|
|
8537
|
+
dark: "#2d333b"
|
|
8538
|
+
}
|
|
8539
|
+
},
|
|
8540
|
+
{
|
|
8541
|
+
cssVar: "--tree-color-border-default",
|
|
8542
|
+
path: "color.border.default",
|
|
8543
|
+
value: "#d0d7de",
|
|
8544
|
+
category: "color",
|
|
8545
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8546
|
+
themeValues: {
|
|
8547
|
+
light: "#d0d7de",
|
|
8548
|
+
dark: "#444c56"
|
|
8549
|
+
}
|
|
8550
|
+
},
|
|
8551
|
+
{
|
|
8552
|
+
cssVar: "--tree-color-border-strong",
|
|
8553
|
+
path: "color.border.strong",
|
|
8554
|
+
value: "#afb8c1",
|
|
8555
|
+
category: "color",
|
|
8556
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8557
|
+
themeValues: {
|
|
8558
|
+
light: "#afb8c1",
|
|
8559
|
+
dark: "#576270"
|
|
8560
|
+
}
|
|
8561
|
+
},
|
|
8562
|
+
{
|
|
8563
|
+
cssVar: "--tree-color-text-primary",
|
|
8564
|
+
path: "color.text.primary",
|
|
8565
|
+
value: "#1f2328",
|
|
8566
|
+
category: "color",
|
|
8567
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8568
|
+
themeValues: {
|
|
8569
|
+
light: "#1f2328",
|
|
8570
|
+
dark: "#adbac7"
|
|
8571
|
+
}
|
|
8572
|
+
},
|
|
8573
|
+
{
|
|
8574
|
+
cssVar: "--tree-color-text-muted",
|
|
8575
|
+
path: "color.text.muted",
|
|
8576
|
+
value: "#59636e",
|
|
8577
|
+
category: "color",
|
|
8578
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8579
|
+
themeValues: {
|
|
8580
|
+
light: "#59636e",
|
|
8581
|
+
dark: "#95a3b2"
|
|
8582
|
+
}
|
|
8583
|
+
},
|
|
8584
|
+
{
|
|
8585
|
+
cssVar: "--tree-color-text-inverse",
|
|
8586
|
+
path: "color.text.inverse",
|
|
8587
|
+
value: "#ffffff",
|
|
8588
|
+
category: "color",
|
|
8589
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8590
|
+
themeValues: {
|
|
8591
|
+
light: "#ffffff",
|
|
8592
|
+
dark: "#1c2128"
|
|
8593
|
+
}
|
|
8594
|
+
},
|
|
8595
|
+
{
|
|
8596
|
+
cssVar: "--tree-color-brand-primary",
|
|
8597
|
+
path: "color.brand.primary",
|
|
8598
|
+
value: "#0969da",
|
|
8599
|
+
category: "color",
|
|
8600
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8601
|
+
themeValues: {
|
|
8602
|
+
light: "#0969da",
|
|
8603
|
+
dark: "#539bf5"
|
|
8604
|
+
}
|
|
8605
|
+
},
|
|
8606
|
+
{
|
|
8607
|
+
cssVar: "--tree-color-brand-hover",
|
|
8608
|
+
path: "color.brand.hover",
|
|
8609
|
+
value: "#0550ae",
|
|
8610
|
+
category: "color",
|
|
8611
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8612
|
+
themeValues: {
|
|
8613
|
+
light: "#0550ae",
|
|
8614
|
+
dark: "#6cabf7"
|
|
8615
|
+
}
|
|
8616
|
+
},
|
|
8617
|
+
{
|
|
8618
|
+
cssVar: "--tree-color-brand-soft",
|
|
8619
|
+
path: "color.brand.soft",
|
|
8620
|
+
value: "#ddf4ff",
|
|
8621
|
+
category: "color",
|
|
8622
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8623
|
+
themeValues: {
|
|
8624
|
+
light: "#ddf4ff",
|
|
8625
|
+
dark: "#1a3453"
|
|
8626
|
+
}
|
|
8627
|
+
},
|
|
8628
|
+
{
|
|
8629
|
+
cssVar: "--tree-color-brand-contrast",
|
|
8630
|
+
path: "color.brand.contrast",
|
|
8631
|
+
value: "#ffffff",
|
|
8632
|
+
category: "color",
|
|
8633
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8634
|
+
themeValues: {
|
|
8635
|
+
light: "#ffffff",
|
|
8636
|
+
dark: "#0a1a2f"
|
|
8637
|
+
}
|
|
8638
|
+
},
|
|
8639
|
+
{
|
|
8640
|
+
cssVar: "--tree-color-status-success",
|
|
8641
|
+
path: "color.status.success",
|
|
8642
|
+
value: "#1a7f37",
|
|
8643
|
+
category: "color",
|
|
8644
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8645
|
+
themeValues: {
|
|
8646
|
+
light: "#1a7f37",
|
|
8647
|
+
dark: "#57ab5a"
|
|
8648
|
+
}
|
|
8649
|
+
},
|
|
8650
|
+
{
|
|
8651
|
+
cssVar: "--tree-color-status-warning",
|
|
8652
|
+
path: "color.status.warning",
|
|
8653
|
+
value: "#9a6700",
|
|
8654
|
+
category: "color",
|
|
8655
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8656
|
+
themeValues: {
|
|
8657
|
+
light: "#9a6700",
|
|
8658
|
+
dark: "#c69026"
|
|
8659
|
+
}
|
|
8660
|
+
},
|
|
8661
|
+
{
|
|
8662
|
+
cssVar: "--tree-color-status-error",
|
|
8663
|
+
path: "color.status.error",
|
|
8664
|
+
value: "#d1242f",
|
|
8665
|
+
category: "color",
|
|
8666
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8667
|
+
themeValues: {
|
|
8668
|
+
light: "#d1242f",
|
|
8669
|
+
dark: "#f47067"
|
|
8670
|
+
}
|
|
8671
|
+
},
|
|
8672
|
+
{
|
|
8673
|
+
cssVar: "--tree-color-status-info",
|
|
8674
|
+
path: "color.status.info",
|
|
8675
|
+
value: "#0969da",
|
|
8676
|
+
category: "color",
|
|
8677
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8678
|
+
themeValues: {
|
|
8679
|
+
light: "#0969da",
|
|
8680
|
+
dark: "#6cb6ff"
|
|
8681
|
+
}
|
|
8682
|
+
},
|
|
8683
|
+
{
|
|
8684
|
+
cssVar: "--tree-color-chart-1",
|
|
8685
|
+
path: "color.chart.1",
|
|
8686
|
+
value: "#2a78d6",
|
|
8687
|
+
category: "color",
|
|
8688
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8689
|
+
themeValues: {
|
|
8690
|
+
light: "#2a78d6",
|
|
8691
|
+
dark: "#3987e5"
|
|
8692
|
+
}
|
|
8693
|
+
},
|
|
8694
|
+
{
|
|
8695
|
+
cssVar: "--tree-color-chart-2",
|
|
8696
|
+
path: "color.chart.2",
|
|
8697
|
+
value: "#1baf7a",
|
|
8698
|
+
category: "color",
|
|
8699
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8700
|
+
themeValues: {
|
|
8701
|
+
light: "#1baf7a",
|
|
8702
|
+
dark: "#199e70"
|
|
8703
|
+
}
|
|
8704
|
+
},
|
|
8705
|
+
{
|
|
8706
|
+
cssVar: "--tree-color-chart-3",
|
|
8707
|
+
path: "color.chart.3",
|
|
8708
|
+
value: "#eda100",
|
|
8709
|
+
category: "color",
|
|
8710
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8711
|
+
themeValues: {
|
|
8712
|
+
light: "#eda100",
|
|
8713
|
+
dark: "#c98500"
|
|
8714
|
+
}
|
|
8715
|
+
},
|
|
8716
|
+
{
|
|
8717
|
+
cssVar: "--tree-color-chart-4",
|
|
8718
|
+
path: "color.chart.4",
|
|
8719
|
+
value: "#008300",
|
|
8720
|
+
category: "color",
|
|
8721
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8722
|
+
themeValues: {
|
|
8723
|
+
light: "#008300",
|
|
8724
|
+
dark: "#008300"
|
|
8725
|
+
}
|
|
8726
|
+
},
|
|
8727
|
+
{
|
|
8728
|
+
cssVar: "--tree-color-chart-5",
|
|
8729
|
+
path: "color.chart.5",
|
|
8730
|
+
value: "#4a3aa7",
|
|
8731
|
+
category: "color",
|
|
8732
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8733
|
+
themeValues: {
|
|
8734
|
+
light: "#4a3aa7",
|
|
8735
|
+
dark: "#9085e9"
|
|
8736
|
+
}
|
|
8737
|
+
},
|
|
8738
|
+
{
|
|
8739
|
+
cssVar: "--tree-color-chart-6",
|
|
8740
|
+
path: "color.chart.6",
|
|
8741
|
+
value: "#e34948",
|
|
8742
|
+
category: "color",
|
|
8743
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8744
|
+
themeValues: {
|
|
8745
|
+
light: "#e34948",
|
|
8746
|
+
dark: "#e66767"
|
|
8747
|
+
}
|
|
8748
|
+
},
|
|
8749
|
+
{
|
|
8750
|
+
cssVar: "--tree-color-chart-7",
|
|
8751
|
+
path: "color.chart.7",
|
|
8752
|
+
value: "#e87ba4",
|
|
8753
|
+
category: "color",
|
|
8754
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8755
|
+
themeValues: {
|
|
8756
|
+
light: "#e87ba4",
|
|
8757
|
+
dark: "#d55181"
|
|
8758
|
+
}
|
|
8759
|
+
},
|
|
8760
|
+
{
|
|
8761
|
+
cssVar: "--tree-color-chart-8",
|
|
8762
|
+
path: "color.chart.8",
|
|
8763
|
+
value: "#eb6834",
|
|
8764
|
+
category: "color",
|
|
8765
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8766
|
+
themeValues: {
|
|
8767
|
+
light: "#eb6834",
|
|
8768
|
+
dark: "#d95926"
|
|
8769
|
+
}
|
|
8770
|
+
},
|
|
8771
|
+
{
|
|
8772
|
+
cssVar: "--tree-color-overlay",
|
|
8773
|
+
path: "color.overlay",
|
|
8774
|
+
value: "rgba(31, 35, 40, 0.5)",
|
|
8775
|
+
category: "color",
|
|
8776
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8777
|
+
themeValues: {
|
|
8778
|
+
light: "rgba(31, 35, 40, 0.5)",
|
|
8779
|
+
dark: "rgba(13, 17, 23, 0.6)"
|
|
8780
|
+
}
|
|
8781
|
+
},
|
|
8782
|
+
{
|
|
8783
|
+
cssVar: "--tree-color-focus-ring",
|
|
8784
|
+
path: "color.focus-ring",
|
|
8785
|
+
value: "rgba(9, 105, 218, 0.32)",
|
|
8786
|
+
category: "color",
|
|
8787
|
+
description: "Themed semantic color, resolved per [data-tree-theme].",
|
|
8788
|
+
themeValues: {
|
|
8789
|
+
light: "rgba(9, 105, 218, 0.32)",
|
|
8790
|
+
dark: "rgba(83, 155, 245, 0.32)"
|
|
8791
|
+
}
|
|
8792
|
+
}
|
|
7867
8793
|
]
|
|
7868
8794
|
};
|
|
7869
8795
|
|
|
@@ -8109,6 +9035,43 @@ var searchRecipes = (query, limit = 6) => catalog.recipes.map((recipe) => ({
|
|
|
8109
9035
|
recipe,
|
|
8110
9036
|
score: scoreMatch(query, recipeSearchText(recipe))
|
|
8111
9037
|
})).filter((result) => result.score > 0).sort((left, right) => right.score - left.score || left.recipe.name.localeCompare(right.recipe.name)).slice(0, limit);
|
|
9038
|
+
var tokenValues = (token) => [
|
|
9039
|
+
token.value,
|
|
9040
|
+
...Object.values(token.themeValues ?? {})
|
|
9041
|
+
];
|
|
9042
|
+
var REM_ROOT_PX = 16;
|
|
9043
|
+
var lengthAliases = (query) => {
|
|
9044
|
+
const match = query.trim().match(/^(\d*\.?\d+)(rem|px)$/i);
|
|
9045
|
+
if (!match) {
|
|
9046
|
+
return [];
|
|
9047
|
+
}
|
|
9048
|
+
const amount = Number(match[1]);
|
|
9049
|
+
if (!Number.isFinite(amount)) {
|
|
9050
|
+
return [];
|
|
9051
|
+
}
|
|
9052
|
+
const unit = match[2].toLowerCase();
|
|
9053
|
+
const converted = unit === "rem" ? amount * REM_ROOT_PX : amount / REM_ROOT_PX;
|
|
9054
|
+
return [`${Number(converted.toFixed(4))}${unit === "rem" ? "px" : "rem"}`];
|
|
9055
|
+
};
|
|
9056
|
+
var scoreToken = (token, query) => {
|
|
9057
|
+
const identity = normalizeText(stringifyFields([token.cssVar, token.path]));
|
|
9058
|
+
const category = normalizeText(token.category);
|
|
9059
|
+
const values = normalizeText(stringifyFields(tokenValues(token)));
|
|
9060
|
+
const description = normalizeText(token.description ?? "");
|
|
9061
|
+
const valueScore = Math.max(
|
|
9062
|
+
...[query, ...lengthAliases(query)].map((candidate) => scoreMatch(candidate, values))
|
|
9063
|
+
);
|
|
9064
|
+
let score = 0;
|
|
9065
|
+
score += scoreMatch(query, identity) * 3;
|
|
9066
|
+
score += scoreMatch(query, category) * 2;
|
|
9067
|
+
score += valueScore * 2;
|
|
9068
|
+
score += scoreMatch(query, description);
|
|
9069
|
+
return Math.max(score, 0);
|
|
9070
|
+
};
|
|
9071
|
+
var searchTokens = (query, limit = 12) => catalog.tokens.map((token) => ({
|
|
9072
|
+
token,
|
|
9073
|
+
score: scoreToken(token, query)
|
|
9074
|
+
})).filter((result) => result.score > 0).sort((left, right) => right.score - left.score || left.token.cssVar.localeCompare(right.token.cssVar)).slice(0, limit);
|
|
8112
9075
|
var formatFieldList = (label, values) => values.length > 0 ? `${label}: ${values.join(", ")}` : void 0;
|
|
8113
9076
|
var formatComponentSummary = (component) => {
|
|
8114
9077
|
const lines = [
|
|
@@ -8153,6 +9116,12 @@ var formatRecipeResults = (results) => results.length > 0 ? results.map((result,
|
|
|
8153
9116
|
const useWhen = result.recipe.useWhen[0];
|
|
8154
9117
|
return `${index + 1}. ${result.recipe.name}: ${useWhen ?? "No recipe summary available."} Components: ${result.recipe.compose.join(", ")}.`;
|
|
8155
9118
|
}).join("\n") : "No matching TreeUI recipes found.";
|
|
9119
|
+
var formatTokenResults = (results) => results.length > 0 ? results.map((result, index) => {
|
|
9120
|
+
const { token } = result;
|
|
9121
|
+
const themeValues = token.themeValues ? Object.entries(token.themeValues).map(([theme, value]) => `${theme} ${value}`).join(" | ") : void 0;
|
|
9122
|
+
const description = token.description ? ` ${token.description}` : "";
|
|
9123
|
+
return `${index + 1}. ${token.cssVar}: ${themeValues ?? token.value} (${token.category} | ${token.path}).${description}`;
|
|
9124
|
+
}).join("\n") : "No matching TreeUI design tokens found.";
|
|
8156
9125
|
var formatSetupGuide = (componentName) => {
|
|
8157
9126
|
if (!componentName) {
|
|
8158
9127
|
return [
|
|
@@ -8202,6 +9171,12 @@ var resourceList = [
|
|
|
8202
9171
|
description: "Reusable multi-component composition recipes.",
|
|
8203
9172
|
mimeType: "application/json"
|
|
8204
9173
|
},
|
|
9174
|
+
{
|
|
9175
|
+
uri: "treeui://tokens",
|
|
9176
|
+
name: "TreeUI design tokens",
|
|
9177
|
+
description: "Flat list of --tree-* design tokens with per-theme values.",
|
|
9178
|
+
mimeType: "application/json"
|
|
9179
|
+
},
|
|
8205
9180
|
...catalog.components.map((component) => ({
|
|
8206
9181
|
uri: `treeui://components/${component.name}`,
|
|
8207
9182
|
name: component.name,
|
|
@@ -8229,6 +9204,9 @@ var readResourcePayload = (uri) => {
|
|
|
8229
9204
|
if (uri === "treeui://recipes") {
|
|
8230
9205
|
return catalog.recipes;
|
|
8231
9206
|
}
|
|
9207
|
+
if (uri === "treeui://tokens") {
|
|
9208
|
+
return catalog.tokens;
|
|
9209
|
+
}
|
|
8232
9210
|
const componentMatch = uri.match(/^treeui:\/\/components\/([^/]+)$/);
|
|
8233
9211
|
if (componentMatch) {
|
|
8234
9212
|
const component = findComponent(componentMatch[1]);
|
|
@@ -8330,6 +9308,21 @@ var createTreeuiMcpServer = () => {
|
|
|
8330
9308
|
},
|
|
8331
9309
|
required: ["query"]
|
|
8332
9310
|
}
|
|
9311
|
+
},
|
|
9312
|
+
{
|
|
9313
|
+
name: "search_tokens",
|
|
9314
|
+
description: "Search TreeUI design tokens by CSS variable, category, path, or shipped value. Use this before hardcoding any color, spacing, radius, or breakpoint value.",
|
|
9315
|
+
inputSchema: {
|
|
9316
|
+
type: "object",
|
|
9317
|
+
properties: {
|
|
9318
|
+
query: {
|
|
9319
|
+
type: "string",
|
|
9320
|
+
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."
|
|
9321
|
+
},
|
|
9322
|
+
limit: { type: "number", description: "Maximum number of tokens to return." }
|
|
9323
|
+
},
|
|
9324
|
+
required: ["query"]
|
|
9325
|
+
}
|
|
8333
9326
|
}
|
|
8334
9327
|
]
|
|
8335
9328
|
}));
|
|
@@ -8370,6 +9363,13 @@ var createTreeuiMcpServer = () => {
|
|
|
8370
9363
|
}
|
|
8371
9364
|
return asTextContent(formatRecipeResults(searchRecipes(query, readNumberArg(args, "limit", 6))));
|
|
8372
9365
|
}
|
|
9366
|
+
if (name === "search_tokens") {
|
|
9367
|
+
const query = readStringArg(args, "query");
|
|
9368
|
+
if (!query) {
|
|
9369
|
+
return asErrorTextContent('The "query" argument is required.');
|
|
9370
|
+
}
|
|
9371
|
+
return asTextContent(formatTokenResults(searchTokens(query, readNumberArg(args, "limit", 12))));
|
|
9372
|
+
}
|
|
8373
9373
|
return asErrorTextContent(`Unknown tool: ${name}`);
|
|
8374
9374
|
});
|
|
8375
9375
|
server.setRequestHandler(import_types.ListResourcesRequestSchema, async () => ({
|