@slexkit/mcp 0.3.3 → 0.4.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.
@@ -0,0 +1,2116 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://slexkit.dev/standard/slex-expression.schema.json",
4
+ "title": "Slex Expression",
5
+ "description": "Structural schema for SlexKit logic-bearing Markdown UI artifacts. JavaScript expression semantics are defined by slex-logic-profile.json.",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "properties": {
9
+ "slex": {
10
+ "type": "string",
11
+ "const": "0.1",
12
+ "description": "Optional public Slex protocol marker."
13
+ },
14
+ "namespace": {
15
+ "type": "string",
16
+ "minLength": 1,
17
+ "description": "State namespace. Bare component trees default to namespace 'default'."
18
+ },
19
+ "g": {
20
+ "$ref": "#/$defs/stateObject"
21
+ },
22
+ "layout": {
23
+ "$ref": "#/$defs/layoutTree",
24
+ "description": "Component tree keyed by 'type:identifier'."
25
+ }
26
+ },
27
+ "patternProperties": {
28
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
29
+ "$ref": "#/$defs/componentNode"
30
+ }
31
+ },
32
+ "$defs": {
33
+ "componentKey": {
34
+ "type": "string",
35
+ "pattern": "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$"
36
+ },
37
+ "directive": {
38
+ "type": "string",
39
+ "description": "$if, $for, and $key directive expressions are JavaScript expression strings."
40
+ },
41
+ "readPipe": {
42
+ "type": "string",
43
+ "description": "JavaScript expression evaluated against g, std, api, component state, and loop context.",
44
+ "xSlexkitExpressionKind": "read"
45
+ },
46
+ "writePipe": {
47
+ "type": "string",
48
+ "description": "JavaScript statements executed with $event and the Slex expression context.",
49
+ "xSlexkitExpressionKind": "write"
50
+ },
51
+ "stateObject": {
52
+ "type": "object",
53
+ "additionalProperties": true,
54
+ "description": "Mutable artifact state and helper functions. Source form may contain JavaScript functions."
55
+ },
56
+ "layoutTree": {
57
+ "type": "object",
58
+ "propertyNames": {
59
+ "$ref": "#/$defs/componentKey"
60
+ },
61
+ "additionalProperties": {
62
+ "$ref": "#/$defs/componentNode"
63
+ }
64
+ },
65
+ "componentNode": {
66
+ "type": "object",
67
+ "additionalProperties": true,
68
+ "properties": {
69
+ "$if": {
70
+ "$ref": "#/$defs/directive"
71
+ },
72
+ "$for": {
73
+ "$ref": "#/$defs/directive"
74
+ },
75
+ "$key": {
76
+ "$ref": "#/$defs/directive"
77
+ }
78
+ },
79
+ "patternProperties": {
80
+ "^\\$[A-Za-z_$][\\w$-]*$": {
81
+ "$ref": "#/$defs/readPipe"
82
+ },
83
+ "^on[A-Za-z_$][\\w$-]*$": {
84
+ "$ref": "#/$defs/writePipe"
85
+ },
86
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
87
+ "$ref": "#/$defs/componentNode"
88
+ }
89
+ }
90
+ },
91
+ "components": {
92
+ "accordion": {
93
+ "type": "object",
94
+ "additionalProperties": true,
95
+ "properties": {
96
+ "value": {
97
+ "anyOf": [
98
+ {
99
+ "type": "string"
100
+ },
101
+ {
102
+ "type": "array",
103
+ "items": {
104
+ "type": "string"
105
+ }
106
+ }
107
+ ],
108
+ "description": "Current expanded item value; use an array when multiple is true."
109
+ },
110
+ "$value": {
111
+ "type": "string",
112
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
113
+ "xSlexkitExpressionKind": "read"
114
+ },
115
+ "multiple": {
116
+ "type": "boolean",
117
+ "description": "Allow multiple items to be expanded at the same time.",
118
+ "default": false
119
+ },
120
+ "items": {
121
+ "type": "array",
122
+ "description": "Panel definitions with value, label, content, and optional icon."
123
+ },
124
+ "items[].icon": {
125
+ "type": "string",
126
+ "description": "Icon name shown before an item trigger label."
127
+ },
128
+ "onchange": {
129
+ "type": "string",
130
+ "xSlexkitExpressionKind": "write",
131
+ "description": "Write expression invoked when expanded items change."
132
+ }
133
+ },
134
+ "required": [],
135
+ "patternProperties": {
136
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
137
+ "$ref": "#/$defs/componentNode"
138
+ },
139
+ "^on[A-Za-z_$][\\w$-]*$": {
140
+ "type": "string",
141
+ "description": "Write-pipe event handler expression.",
142
+ "xSlexkitExpressionKind": "write"
143
+ }
144
+ }
145
+ },
146
+ "badge": {
147
+ "type": "object",
148
+ "additionalProperties": true,
149
+ "properties": {
150
+ "label": {
151
+ "type": "string",
152
+ "description": "Badge text."
153
+ },
154
+ "$label": {
155
+ "type": "string",
156
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
157
+ "xSlexkitExpressionKind": "read"
158
+ },
159
+ "text": {
160
+ "type": "string",
161
+ "description": "Alias for label."
162
+ },
163
+ "$text": {
164
+ "type": "string",
165
+ "description": "Dynamic expression for 'text'. Evaluated with the Slex logic profile.",
166
+ "xSlexkitExpressionKind": "read"
167
+ },
168
+ "content": {
169
+ "type": "string",
170
+ "description": "Alias for label."
171
+ },
172
+ "$content": {
173
+ "type": "string",
174
+ "description": "Dynamic expression for 'content'. Evaluated with the Slex logic profile.",
175
+ "xSlexkitExpressionKind": "read"
176
+ },
177
+ "icon": {
178
+ "type": "string",
179
+ "description": "Icon name shown before the badge label."
180
+ },
181
+ "tone": {
182
+ "enum": [
183
+ "info",
184
+ "success",
185
+ "warning",
186
+ "danger",
187
+ "muted"
188
+ ],
189
+ "description": "Semantic tone applied to the badge.",
190
+ "default": "info"
191
+ },
192
+ "variant": {
193
+ "enum": [
194
+ "info",
195
+ "success",
196
+ "warning",
197
+ "danger",
198
+ "muted"
199
+ ],
200
+ "description": "Alias for tone."
201
+ }
202
+ },
203
+ "required": [],
204
+ "patternProperties": {
205
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
206
+ "$ref": "#/$defs/componentNode"
207
+ },
208
+ "^on[A-Za-z_$][\\w$-]*$": {
209
+ "type": "string",
210
+ "description": "Write-pipe event handler expression.",
211
+ "xSlexkitExpressionKind": "write"
212
+ }
213
+ }
214
+ },
215
+ "button": {
216
+ "type": "object",
217
+ "additionalProperties": true,
218
+ "properties": {
219
+ "label": {
220
+ "type": "string",
221
+ "description": "Visible button text and accessible name."
222
+ },
223
+ "$label": {
224
+ "type": "string",
225
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
226
+ "xSlexkitExpressionKind": "read"
227
+ },
228
+ "icon": {
229
+ "type": "string",
230
+ "description": "Icon name shown before the label."
231
+ },
232
+ "iconOnly": {
233
+ "type": "boolean",
234
+ "description": "Show only the icon while retaining label as the accessible name.",
235
+ "default": false
236
+ },
237
+ "variant": {
238
+ "enum": [
239
+ "primary",
240
+ "secondary",
241
+ "danger",
242
+ "ghost"
243
+ ],
244
+ "description": "Semantic action variant.",
245
+ "default": "primary"
246
+ },
247
+ "disabled": {
248
+ "type": "boolean",
249
+ "description": "Disable the action.",
250
+ "default": false
251
+ },
252
+ "$disabled": {
253
+ "type": "string",
254
+ "description": "Dynamic expression for 'disabled'. Evaluated with the Slex logic profile.",
255
+ "xSlexkitExpressionKind": "read"
256
+ },
257
+ "href": {
258
+ "type": "string",
259
+ "description": "Render the button surface as a link to this URL."
260
+ },
261
+ "$href": {
262
+ "type": "string",
263
+ "description": "Dynamic expression for 'href'. Evaluated with the Slex logic profile.",
264
+ "xSlexkitExpressionKind": "read"
265
+ },
266
+ "target": {
267
+ "type": "string",
268
+ "description": "Link target used when href is present."
269
+ },
270
+ "title": {
271
+ "type": "string",
272
+ "description": "Tooltip and accessible-label fallback."
273
+ },
274
+ "$title": {
275
+ "type": "string",
276
+ "description": "Dynamic expression for 'title'. Evaluated with the Slex logic profile.",
277
+ "xSlexkitExpressionKind": "read"
278
+ },
279
+ "selected": {
280
+ "type": "boolean",
281
+ "description": "Render the icon in its selected visual state."
282
+ },
283
+ "$selected": {
284
+ "type": "string",
285
+ "description": "Dynamic expression for 'selected'. Evaluated with the Slex logic profile.",
286
+ "xSlexkitExpressionKind": "read"
287
+ },
288
+ "active": {
289
+ "type": "boolean",
290
+ "description": "Render the icon in its active visual state."
291
+ },
292
+ "$active": {
293
+ "type": "string",
294
+ "description": "Dynamic expression for 'active'. Evaluated with the Slex logic profile.",
295
+ "xSlexkitExpressionKind": "read"
296
+ },
297
+ "pressed": {
298
+ "type": "boolean",
299
+ "description": "Expose pressed state and render the selected icon style."
300
+ },
301
+ "$pressed": {
302
+ "type": "string",
303
+ "description": "Dynamic expression for 'pressed'. Evaluated with the Slex logic profile.",
304
+ "xSlexkitExpressionKind": "read"
305
+ },
306
+ "onclick": {
307
+ "type": "string",
308
+ "xSlexkitExpressionKind": "write",
309
+ "description": "Write expression invoked when the button is clicked."
310
+ }
311
+ },
312
+ "required": [],
313
+ "patternProperties": {
314
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
315
+ "$ref": "#/$defs/componentNode"
316
+ },
317
+ "^on[A-Za-z_$][\\w$-]*$": {
318
+ "type": "string",
319
+ "description": "Write-pipe event handler expression.",
320
+ "xSlexkitExpressionKind": "write"
321
+ }
322
+ }
323
+ },
324
+ "callout": {
325
+ "type": "object",
326
+ "additionalProperties": true,
327
+ "properties": {
328
+ "title": {
329
+ "type": "string",
330
+ "description": "Callout title."
331
+ },
332
+ "$title": {
333
+ "type": "string",
334
+ "description": "Dynamic expression for 'title'. Evaluated with the Slex logic profile.",
335
+ "xSlexkitExpressionKind": "read"
336
+ },
337
+ "heading": {
338
+ "type": "string",
339
+ "description": "Alias for title."
340
+ },
341
+ "$heading": {
342
+ "type": "string",
343
+ "description": "Dynamic expression for 'heading'. Evaluated with the Slex logic profile.",
344
+ "xSlexkitExpressionKind": "read"
345
+ },
346
+ "label": {
347
+ "type": "string",
348
+ "description": "Alias for title."
349
+ },
350
+ "$label": {
351
+ "type": "string",
352
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
353
+ "xSlexkitExpressionKind": "read"
354
+ },
355
+ "icon": {
356
+ "type": "string",
357
+ "description": "Icon name shown before the title."
358
+ },
359
+ "text": {
360
+ "type": "string",
361
+ "description": "Callout body text."
362
+ },
363
+ "$text": {
364
+ "type": "string",
365
+ "description": "Dynamic expression for 'text'. Evaluated with the Slex logic profile.",
366
+ "xSlexkitExpressionKind": "read"
367
+ },
368
+ "message": {
369
+ "type": "string",
370
+ "description": "Alias for text."
371
+ },
372
+ "$message": {
373
+ "type": "string",
374
+ "description": "Dynamic expression for 'message'. Evaluated with the Slex logic profile.",
375
+ "xSlexkitExpressionKind": "read"
376
+ },
377
+ "content": {
378
+ "type": "string",
379
+ "description": "Alias for text."
380
+ },
381
+ "$content": {
382
+ "type": "string",
383
+ "description": "Dynamic expression for 'content'. Evaluated with the Slex logic profile.",
384
+ "xSlexkitExpressionKind": "read"
385
+ },
386
+ "tone": {
387
+ "enum": [
388
+ "info",
389
+ "success",
390
+ "warning",
391
+ "danger"
392
+ ],
393
+ "description": "Semantic tone for the callout.",
394
+ "default": "info"
395
+ }
396
+ },
397
+ "required": [],
398
+ "patternProperties": {
399
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
400
+ "$ref": "#/$defs/componentNode"
401
+ },
402
+ "^on[A-Za-z_$][\\w$-]*$": {
403
+ "type": "string",
404
+ "description": "Write-pipe event handler expression.",
405
+ "xSlexkitExpressionKind": "write"
406
+ }
407
+ }
408
+ },
409
+ "card": {
410
+ "type": "object",
411
+ "additionalProperties": true,
412
+ "properties": {
413
+ "title": {
414
+ "type": "string",
415
+ "description": "Card title."
416
+ },
417
+ "$title": {
418
+ "type": "string",
419
+ "description": "Dynamic expression for 'title'. Evaluated with the Slex logic profile.",
420
+ "xSlexkitExpressionKind": "read"
421
+ },
422
+ "icon": {
423
+ "type": "string",
424
+ "description": "Icon name shown before the title."
425
+ },
426
+ "tone": {
427
+ "enum": [
428
+ "info",
429
+ "success",
430
+ "warning",
431
+ "danger",
432
+ "muted"
433
+ ],
434
+ "description": "Optional semantic tone for the card surface."
435
+ },
436
+ "variant": {
437
+ "enum": [
438
+ "tool"
439
+ ],
440
+ "description": "Use tool for ToolHost input cards with compact chrome."
441
+ }
442
+ },
443
+ "required": [],
444
+ "patternProperties": {
445
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
446
+ "$ref": "#/$defs/componentNode"
447
+ },
448
+ "^on[A-Za-z_$][\\w$-]*$": {
449
+ "type": "string",
450
+ "description": "Write-pipe event handler expression.",
451
+ "xSlexkitExpressionKind": "write"
452
+ }
453
+ }
454
+ },
455
+ "checkbox": {
456
+ "type": "object",
457
+ "additionalProperties": true,
458
+ "properties": {
459
+ "checked": {
460
+ "type": "boolean",
461
+ "description": "Checked state.",
462
+ "default": false
463
+ },
464
+ "$checked": {
465
+ "type": "string",
466
+ "description": "Dynamic expression for 'checked'. Evaluated with the Slex logic profile.",
467
+ "xSlexkitExpressionKind": "read"
468
+ },
469
+ "label": {
470
+ "type": "string",
471
+ "description": "Checkbox label."
472
+ },
473
+ "$label": {
474
+ "type": "string",
475
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
476
+ "xSlexkitExpressionKind": "read"
477
+ },
478
+ "icon": {
479
+ "type": "string",
480
+ "description": "Icon name shown before the visible label."
481
+ },
482
+ "disabled": {
483
+ "type": "boolean",
484
+ "description": "Disable the checkbox.",
485
+ "default": false
486
+ },
487
+ "$disabled": {
488
+ "type": "string",
489
+ "description": "Dynamic expression for 'disabled'. Evaluated with the Slex logic profile.",
490
+ "xSlexkitExpressionKind": "read"
491
+ },
492
+ "haptic": {
493
+ "type": "boolean",
494
+ "description": "Enable vibration feedback on supported devices.",
495
+ "default": true
496
+ },
497
+ "haptics": {
498
+ "type": "boolean",
499
+ "description": "Alias for haptic.",
500
+ "default": true
501
+ },
502
+ "onchange": {
503
+ "type": "string",
504
+ "xSlexkitExpressionKind": "write",
505
+ "description": "Write expression invoked when checked state changes."
506
+ }
507
+ },
508
+ "required": [],
509
+ "patternProperties": {
510
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
511
+ "$ref": "#/$defs/componentNode"
512
+ },
513
+ "^on[A-Za-z_$][\\w$-]*$": {
514
+ "type": "string",
515
+ "description": "Write-pipe event handler expression.",
516
+ "xSlexkitExpressionKind": "write"
517
+ }
518
+ }
519
+ },
520
+ "code-block": {
521
+ "type": "object",
522
+ "additionalProperties": true,
523
+ "properties": {
524
+ "code": {
525
+ "type": "string",
526
+ "description": "Code text content."
527
+ },
528
+ "$code": {
529
+ "type": "string",
530
+ "description": "Dynamic expression for 'code'. Evaluated with the Slex logic profile.",
531
+ "xSlexkitExpressionKind": "read"
532
+ },
533
+ "source": {
534
+ "type": "string",
535
+ "description": "Alias for code."
536
+ },
537
+ "$source": {
538
+ "type": "string",
539
+ "description": "Dynamic expression for 'source'. Evaluated with the Slex logic profile.",
540
+ "xSlexkitExpressionKind": "read"
541
+ },
542
+ "content": {
543
+ "type": "string",
544
+ "description": "Alias for code."
545
+ },
546
+ "$content": {
547
+ "type": "string",
548
+ "description": "Dynamic expression for 'content'. Evaluated with the Slex logic profile.",
549
+ "xSlexkitExpressionKind": "read"
550
+ },
551
+ "language": {
552
+ "type": "string",
553
+ "description": "Language label."
554
+ },
555
+ "title": {
556
+ "type": "string",
557
+ "description": "Code block title."
558
+ },
559
+ "icon": {
560
+ "type": "string",
561
+ "description": "Icon name shown before the title."
562
+ },
563
+ "lineNumbers": {
564
+ "type": "boolean",
565
+ "description": "Show line numbers.",
566
+ "default": true
567
+ }
568
+ },
569
+ "required": [],
570
+ "patternProperties": {
571
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
572
+ "$ref": "#/$defs/componentNode"
573
+ },
574
+ "^on[A-Za-z_$][\\w$-]*$": {
575
+ "type": "string",
576
+ "description": "Write-pipe event handler expression.",
577
+ "xSlexkitExpressionKind": "write"
578
+ }
579
+ }
580
+ },
581
+ "collapsible": {
582
+ "type": "object",
583
+ "additionalProperties": true,
584
+ "properties": {
585
+ "open": {
586
+ "type": "boolean",
587
+ "description": "Expanded state.",
588
+ "default": false
589
+ },
590
+ "$open": {
591
+ "type": "string",
592
+ "description": "Dynamic expression for 'open'. Evaluated with the Slex logic profile.",
593
+ "xSlexkitExpressionKind": "read"
594
+ },
595
+ "trigger": {
596
+ "type": "string",
597
+ "description": "Trigger button text."
598
+ },
599
+ "$trigger": {
600
+ "type": "string",
601
+ "description": "Dynamic expression for 'trigger'. Evaluated with the Slex logic profile.",
602
+ "xSlexkitExpressionKind": "read"
603
+ },
604
+ "icon": {
605
+ "type": "string",
606
+ "description": "Icon name shown before trigger text."
607
+ },
608
+ "content": {
609
+ "type": "string",
610
+ "description": "Static body content."
611
+ },
612
+ "$content": {
613
+ "type": "string",
614
+ "description": "Dynamic expression for 'content'. Evaluated with the Slex logic profile.",
615
+ "xSlexkitExpressionKind": "read"
616
+ },
617
+ "onchange": {
618
+ "type": "string",
619
+ "xSlexkitExpressionKind": "write",
620
+ "description": "Write expression invoked when open state changes."
621
+ }
622
+ },
623
+ "required": [],
624
+ "patternProperties": {
625
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
626
+ "$ref": "#/$defs/componentNode"
627
+ },
628
+ "^on[A-Za-z_$][\\w$-]*$": {
629
+ "type": "string",
630
+ "description": "Write-pipe event handler expression.",
631
+ "xSlexkitExpressionKind": "write"
632
+ }
633
+ }
634
+ },
635
+ "column": {
636
+ "type": "object",
637
+ "additionalProperties": true,
638
+ "properties": {},
639
+ "required": [],
640
+ "patternProperties": {
641
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
642
+ "$ref": "#/$defs/componentNode"
643
+ },
644
+ "^on[A-Za-z_$][\\w$-]*$": {
645
+ "type": "string",
646
+ "description": "Write-pipe event handler expression.",
647
+ "xSlexkitExpressionKind": "write"
648
+ }
649
+ }
650
+ },
651
+ "divider": {
652
+ "type": "object",
653
+ "additionalProperties": true,
654
+ "properties": {
655
+ "label": {
656
+ "type": "string",
657
+ "description": "Text shown in the divider."
658
+ },
659
+ "$label": {
660
+ "type": "string",
661
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
662
+ "xSlexkitExpressionKind": "read"
663
+ },
664
+ "icon": {
665
+ "type": "string",
666
+ "description": "Icon name shown before the label."
667
+ }
668
+ },
669
+ "required": [],
670
+ "patternProperties": {
671
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
672
+ "$ref": "#/$defs/componentNode"
673
+ },
674
+ "^on[A-Za-z_$][\\w$-]*$": {
675
+ "type": "string",
676
+ "description": "Write-pipe event handler expression.",
677
+ "xSlexkitExpressionKind": "write"
678
+ }
679
+ }
680
+ },
681
+ "formula": {
682
+ "type": "object",
683
+ "additionalProperties": true,
684
+ "properties": {
685
+ "tex": {
686
+ "type": "string",
687
+ "description": "KaTeX source to render."
688
+ },
689
+ "$tex": {
690
+ "type": "string",
691
+ "description": "Dynamic expression for 'tex'. Evaluated with the Slex logic profile.",
692
+ "xSlexkitExpressionKind": "read"
693
+ },
694
+ "formula": {
695
+ "type": "string",
696
+ "description": "Alias for tex."
697
+ },
698
+ "$formula": {
699
+ "type": "string",
700
+ "description": "Dynamic expression for 'formula'. Evaluated with the Slex logic profile.",
701
+ "xSlexkitExpressionKind": "read"
702
+ },
703
+ "value": {
704
+ "type": "string",
705
+ "description": "Alias for tex."
706
+ },
707
+ "$value": {
708
+ "type": "string",
709
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
710
+ "xSlexkitExpressionKind": "read"
711
+ },
712
+ "displayMode": {
713
+ "type": "boolean",
714
+ "description": "Render as display math when true; inline math when false.",
715
+ "default": true
716
+ },
717
+ "display": {
718
+ "type": "boolean",
719
+ "description": "Alias for displayMode.",
720
+ "default": true
721
+ },
722
+ "block": {
723
+ "type": "boolean",
724
+ "description": "Alias for displayMode.",
725
+ "default": true
726
+ }
727
+ },
728
+ "required": [],
729
+ "patternProperties": {
730
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
731
+ "$ref": "#/$defs/componentNode"
732
+ },
733
+ "^on[A-Za-z_$][\\w$-]*$": {
734
+ "type": "string",
735
+ "description": "Write-pipe event handler expression.",
736
+ "xSlexkitExpressionKind": "write"
737
+ }
738
+ }
739
+ },
740
+ "grid": {
741
+ "type": "object",
742
+ "additionalProperties": true,
743
+ "properties": {
744
+ "columns": {
745
+ "type": "number",
746
+ "description": "Base column count.",
747
+ "default": 1
748
+ },
749
+ "$columns": {
750
+ "type": "string",
751
+ "description": "Dynamic expression for 'columns'. Evaluated with the Slex logic profile.",
752
+ "xSlexkitExpressionKind": "read"
753
+ },
754
+ "smColumns": {
755
+ "type": "number",
756
+ "description": "Column count at the small breakpoint."
757
+ },
758
+ "$smColumns": {
759
+ "type": "string",
760
+ "description": "Dynamic expression for 'smColumns'. Evaluated with the Slex logic profile.",
761
+ "xSlexkitExpressionKind": "read"
762
+ },
763
+ "mdColumns": {
764
+ "type": "number",
765
+ "description": "Column count at the medium breakpoint."
766
+ },
767
+ "$mdColumns": {
768
+ "type": "string",
769
+ "description": "Dynamic expression for 'mdColumns'. Evaluated with the Slex logic profile.",
770
+ "xSlexkitExpressionKind": "read"
771
+ },
772
+ "lgColumns": {
773
+ "type": "number",
774
+ "description": "Column count at the large breakpoint."
775
+ },
776
+ "$lgColumns": {
777
+ "type": "string",
778
+ "description": "Dynamic expression for 'lgColumns'. Evaluated with the Slex logic profile.",
779
+ "xSlexkitExpressionKind": "read"
780
+ },
781
+ "xlColumns": {
782
+ "type": "number",
783
+ "description": "Column count at the extra-large breakpoint."
784
+ },
785
+ "$xlColumns": {
786
+ "type": "string",
787
+ "description": "Dynamic expression for 'xlColumns'. Evaluated with the Slex logic profile.",
788
+ "xSlexkitExpressionKind": "read"
789
+ },
790
+ "gap": {
791
+ "type": "string",
792
+ "description": "Spacing between grid items."
793
+ },
794
+ "$gap": {
795
+ "type": "string",
796
+ "description": "Dynamic expression for 'gap'. Evaluated with the Slex logic profile.",
797
+ "xSlexkitExpressionKind": "read"
798
+ }
799
+ },
800
+ "required": [],
801
+ "patternProperties": {
802
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
803
+ "$ref": "#/$defs/componentNode"
804
+ },
805
+ "^on[A-Za-z_$][\\w$-]*$": {
806
+ "type": "string",
807
+ "description": "Write-pipe event handler expression.",
808
+ "xSlexkitExpressionKind": "write"
809
+ }
810
+ }
811
+ },
812
+ "icon": {
813
+ "type": "object",
814
+ "additionalProperties": true,
815
+ "properties": {
816
+ "icon": {
817
+ "type": "string",
818
+ "description": "Icon name resolved through the global icon manager."
819
+ },
820
+ "iconOnly": {
821
+ "type": "boolean",
822
+ "description": "Render only the icon while retaining an accessible label where supported."
823
+ },
824
+ "items[].icon": {
825
+ "type": "string",
826
+ "description": "Accordion item trigger icon."
827
+ },
828
+ "options[].icon": {
829
+ "type": "string",
830
+ "description": "Select or radio option icon."
831
+ },
832
+ "columns[].icon": {
833
+ "type": "string",
834
+ "description": "Table column header icon."
835
+ },
836
+ "tabs[].icon": {
837
+ "type": "string",
838
+ "description": "Tab trigger icon."
839
+ },
840
+ "tabs[].iconOnly": {
841
+ "type": "boolean",
842
+ "description": "Tab trigger icon-only mode."
843
+ }
844
+ },
845
+ "required": [],
846
+ "patternProperties": {
847
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
848
+ "$ref": "#/$defs/componentNode"
849
+ },
850
+ "^on[A-Za-z_$][\\w$-]*$": {
851
+ "type": "string",
852
+ "description": "Write-pipe event handler expression.",
853
+ "xSlexkitExpressionKind": "write"
854
+ }
855
+ }
856
+ },
857
+ "input": {
858
+ "type": "object",
859
+ "additionalProperties": true,
860
+ "properties": {
861
+ "value": {
862
+ "type": "string",
863
+ "description": "Current input value."
864
+ },
865
+ "$value": {
866
+ "type": "string",
867
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
868
+ "xSlexkitExpressionKind": "read"
869
+ },
870
+ "label": {
871
+ "type": "string",
872
+ "description": "Input label."
873
+ },
874
+ "$label": {
875
+ "type": "string",
876
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
877
+ "xSlexkitExpressionKind": "read"
878
+ },
879
+ "unit": {
880
+ "type": "string",
881
+ "description": "Trailing unit text."
882
+ },
883
+ "$unit": {
884
+ "type": "string",
885
+ "description": "Dynamic expression for 'unit'. Evaluated with the Slex logic profile.",
886
+ "xSlexkitExpressionKind": "read"
887
+ },
888
+ "description": {
889
+ "type": "string",
890
+ "description": "Assistive description below the input."
891
+ },
892
+ "$description": {
893
+ "type": "string",
894
+ "description": "Dynamic expression for 'description'. Evaluated with the Slex logic profile.",
895
+ "xSlexkitExpressionKind": "read"
896
+ },
897
+ "help": {
898
+ "type": "string",
899
+ "description": "Alias for description."
900
+ },
901
+ "$help": {
902
+ "type": "string",
903
+ "description": "Dynamic expression for 'help'. Evaluated with the Slex logic profile.",
904
+ "xSlexkitExpressionKind": "read"
905
+ },
906
+ "hint": {
907
+ "type": "string",
908
+ "description": "Alias for description."
909
+ },
910
+ "$hint": {
911
+ "type": "string",
912
+ "description": "Dynamic expression for 'hint'. Evaluated with the Slex logic profile.",
913
+ "xSlexkitExpressionKind": "read"
914
+ },
915
+ "error": {
916
+ "type": "string",
917
+ "description": "Error text shown below the input and linked with aria-describedby."
918
+ },
919
+ "$error": {
920
+ "type": "string",
921
+ "description": "Dynamic expression for 'error'. Evaluated with the Slex logic profile.",
922
+ "xSlexkitExpressionKind": "read"
923
+ },
924
+ "errorMessage": {
925
+ "type": "string",
926
+ "description": "Alias for error."
927
+ },
928
+ "$errorMessage": {
929
+ "type": "string",
930
+ "description": "Dynamic expression for 'errorMessage'. Evaluated with the Slex logic profile.",
931
+ "xSlexkitExpressionKind": "read"
932
+ },
933
+ "invalid": {
934
+ "type": "boolean",
935
+ "description": "Mark the input as invalid with aria-invalid and error styling.",
936
+ "default": false
937
+ },
938
+ "$invalid": {
939
+ "type": "string",
940
+ "description": "Dynamic expression for 'invalid'. Evaluated with the Slex logic profile.",
941
+ "xSlexkitExpressionKind": "read"
942
+ },
943
+ "placeholder": {
944
+ "type": "string",
945
+ "description": "Placeholder text for empty values."
946
+ },
947
+ "type": {
948
+ "type": "string",
949
+ "description": "Input value kind; use engineering for parsed engineering values.",
950
+ "default": "text"
951
+ },
952
+ "disabled": {
953
+ "type": "boolean",
954
+ "description": "Disable editing.",
955
+ "default": false
956
+ },
957
+ "$disabled": {
958
+ "type": "string",
959
+ "description": "Dynamic expression for 'disabled'. Evaluated with the Slex logic profile.",
960
+ "xSlexkitExpressionKind": "read"
961
+ },
962
+ "readonly": {
963
+ "type": "boolean",
964
+ "description": "Make the input read-only.",
965
+ "default": false
966
+ },
967
+ "$readonly": {
968
+ "type": "string",
969
+ "description": "Dynamic expression for 'readonly'. Evaluated with the Slex logic profile.",
970
+ "xSlexkitExpressionKind": "read"
971
+ },
972
+ "readOnly": {
973
+ "type": "boolean",
974
+ "description": "Alias for readonly.",
975
+ "default": false
976
+ },
977
+ "$readOnly": {
978
+ "type": "string",
979
+ "description": "Dynamic expression for 'readOnly'. Evaluated with the Slex logic profile.",
980
+ "xSlexkitExpressionKind": "read"
981
+ },
982
+ "required": {
983
+ "type": "boolean",
984
+ "description": "Mark the input as required.",
985
+ "default": false
986
+ },
987
+ "$required": {
988
+ "type": "string",
989
+ "description": "Dynamic expression for 'required'. Evaluated with the Slex logic profile.",
990
+ "xSlexkitExpressionKind": "read"
991
+ },
992
+ "id": {
993
+ "type": "string",
994
+ "description": "Native input id; defaults to a stable id derived from the component name."
995
+ },
996
+ "name": {
997
+ "type": "string",
998
+ "description": "Native input name attribute."
999
+ },
1000
+ "min": {
1001
+ "type": [
1002
+ "string",
1003
+ "number"
1004
+ ],
1005
+ "description": "Minimum value used by numeric input controls."
1006
+ },
1007
+ "$min": {
1008
+ "type": "string",
1009
+ "description": "Dynamic expression for 'min'. Evaluated with the Slex logic profile.",
1010
+ "xSlexkitExpressionKind": "read"
1011
+ },
1012
+ "max": {
1013
+ "type": [
1014
+ "string",
1015
+ "number"
1016
+ ],
1017
+ "description": "Maximum value used by numeric input controls."
1018
+ },
1019
+ "$max": {
1020
+ "type": "string",
1021
+ "description": "Dynamic expression for 'max'. Evaluated with the Slex logic profile.",
1022
+ "xSlexkitExpressionKind": "read"
1023
+ },
1024
+ "step": {
1025
+ "type": [
1026
+ "string",
1027
+ "number"
1028
+ ],
1029
+ "description": "Step size used by numeric input controls."
1030
+ },
1031
+ "$step": {
1032
+ "type": "string",
1033
+ "description": "Dynamic expression for 'step'. Evaluated with the Slex logic profile.",
1034
+ "xSlexkitExpressionKind": "read"
1035
+ },
1036
+ "onchange": {
1037
+ "type": "string",
1038
+ "xSlexkitExpressionKind": "write",
1039
+ "description": "Write expression invoked when the value changes."
1040
+ }
1041
+ },
1042
+ "required": [],
1043
+ "patternProperties": {
1044
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1045
+ "$ref": "#/$defs/componentNode"
1046
+ },
1047
+ "^on[A-Za-z_$][\\w$-]*$": {
1048
+ "type": "string",
1049
+ "description": "Write-pipe event handler expression.",
1050
+ "xSlexkitExpressionKind": "write"
1051
+ }
1052
+ }
1053
+ },
1054
+ "link": {
1055
+ "type": "object",
1056
+ "additionalProperties": true,
1057
+ "properties": {
1058
+ "href": {
1059
+ "type": "string",
1060
+ "description": "Target URL."
1061
+ },
1062
+ "text": {
1063
+ "type": "string",
1064
+ "description": "Visible link text."
1065
+ },
1066
+ "$text": {
1067
+ "type": "string",
1068
+ "description": "Dynamic expression for 'text'. Evaluated with the Slex logic profile.",
1069
+ "xSlexkitExpressionKind": "read"
1070
+ },
1071
+ "label": {
1072
+ "type": "string",
1073
+ "description": "Alias for text."
1074
+ },
1075
+ "$label": {
1076
+ "type": "string",
1077
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
1078
+ "xSlexkitExpressionKind": "read"
1079
+ },
1080
+ "content": {
1081
+ "type": "string",
1082
+ "description": "Alias for text."
1083
+ },
1084
+ "$content": {
1085
+ "type": "string",
1086
+ "description": "Dynamic expression for 'content'. Evaluated with the Slex logic profile.",
1087
+ "xSlexkitExpressionKind": "read"
1088
+ },
1089
+ "icon": {
1090
+ "type": "string",
1091
+ "description": "Icon name shown before link text."
1092
+ },
1093
+ "target": {
1094
+ "type": "string",
1095
+ "description": "Native link target attribute."
1096
+ },
1097
+ "variant": {
1098
+ "enum": [
1099
+ "default",
1100
+ "muted"
1101
+ ],
1102
+ "description": "Link visual variant.",
1103
+ "default": "default"
1104
+ }
1105
+ },
1106
+ "required": [],
1107
+ "patternProperties": {
1108
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1109
+ "$ref": "#/$defs/componentNode"
1110
+ },
1111
+ "^on[A-Za-z_$][\\w$-]*$": {
1112
+ "type": "string",
1113
+ "description": "Write-pipe event handler expression.",
1114
+ "xSlexkitExpressionKind": "write"
1115
+ }
1116
+ }
1117
+ },
1118
+ "playground": {
1119
+ "type": "object",
1120
+ "additionalProperties": true,
1121
+ "properties": {
1122
+ "source": {
1123
+ "anyOf": [
1124
+ {
1125
+ "type": "object",
1126
+ "additionalProperties": true
1127
+ },
1128
+ {
1129
+ "type": "string"
1130
+ }
1131
+ ],
1132
+ "description": "SlexKit or Markdown source to preview."
1133
+ },
1134
+ "sourceType": {
1135
+ "enum": [
1136
+ "slex",
1137
+ "markdown",
1138
+ "auto-markdown"
1139
+ ],
1140
+ "description": "Source parser mode.",
1141
+ "default": "slex"
1142
+ },
1143
+ "title": {
1144
+ "type": "string",
1145
+ "description": "Playground title."
1146
+ },
1147
+ "previewAlign": {
1148
+ "enum": [
1149
+ "center",
1150
+ "start"
1151
+ ],
1152
+ "description": "Vertical preview alignment in render mode.",
1153
+ "default": "center"
1154
+ },
1155
+ "alignPreview": {
1156
+ "enum": [
1157
+ "center",
1158
+ "start"
1159
+ ],
1160
+ "description": "Alias for previewAlign."
1161
+ },
1162
+ "previewPlacement": {
1163
+ "enum": [
1164
+ "center",
1165
+ "start"
1166
+ ],
1167
+ "description": "Alias for previewAlign."
1168
+ },
1169
+ "previewMinHeight": {
1170
+ "type": "string",
1171
+ "description": "Minimum preview area height."
1172
+ },
1173
+ "previewMaxWidth": {
1174
+ "type": "string",
1175
+ "description": "Maximum preview content width."
1176
+ },
1177
+ "themeToggle": {
1178
+ "type": "boolean",
1179
+ "description": "Show the theme toggle action.",
1180
+ "default": false
1181
+ },
1182
+ "showThemeToggle": {
1183
+ "type": "boolean",
1184
+ "description": "Alias for themeToggle.",
1185
+ "default": false
1186
+ },
1187
+ "enableThemeToggle": {
1188
+ "type": "boolean",
1189
+ "description": "Alias for themeToggle.",
1190
+ "default": false
1191
+ },
1192
+ "themeLabel": {
1193
+ "type": "string",
1194
+ "description": "Accessible label for the theme toggle action."
1195
+ },
1196
+ "themeToggleLabel": {
1197
+ "type": "string",
1198
+ "description": "Alias for themeLabel."
1199
+ },
1200
+ "sourceTypeLabel": {
1201
+ "type": "string",
1202
+ "description": "Accessible label for the source type selector."
1203
+ },
1204
+ "copyLabel": {
1205
+ "type": "string",
1206
+ "description": "Accessible label for the copy source action."
1207
+ },
1208
+ "openWebLabel": {
1209
+ "type": "string",
1210
+ "description": "Accessible label for opening the source in the standalone playground."
1211
+ },
1212
+ "webUrl": {
1213
+ "type": "string",
1214
+ "description": "Standalone playground URL used by the open action."
1215
+ },
1216
+ "playgroundUrl": {
1217
+ "type": "string",
1218
+ "description": "Alias for webUrl."
1219
+ }
1220
+ },
1221
+ "required": [],
1222
+ "patternProperties": {
1223
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1224
+ "$ref": "#/$defs/componentNode"
1225
+ },
1226
+ "^on[A-Za-z_$][\\w$-]*$": {
1227
+ "type": "string",
1228
+ "description": "Write-pipe event handler expression.",
1229
+ "xSlexkitExpressionKind": "write"
1230
+ }
1231
+ }
1232
+ },
1233
+ "progress": {
1234
+ "type": "object",
1235
+ "additionalProperties": true,
1236
+ "properties": {
1237
+ "value": {
1238
+ "type": "number",
1239
+ "description": "Progress percentage from 0 to 100.",
1240
+ "default": 0
1241
+ },
1242
+ "$value": {
1243
+ "type": "string",
1244
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
1245
+ "xSlexkitExpressionKind": "read"
1246
+ },
1247
+ "label": {
1248
+ "type": "string",
1249
+ "description": "Progress label."
1250
+ },
1251
+ "$label": {
1252
+ "type": "string",
1253
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
1254
+ "xSlexkitExpressionKind": "read"
1255
+ },
1256
+ "icon": {
1257
+ "type": "string",
1258
+ "description": "Icon name shown before the label."
1259
+ },
1260
+ "indeterminate": {
1261
+ "type": "boolean",
1262
+ "description": "Render an indeterminate progress state without aria-valuenow.",
1263
+ "default": false
1264
+ },
1265
+ "$indeterminate": {
1266
+ "type": "string",
1267
+ "description": "Dynamic expression for 'indeterminate'. Evaluated with the Slex logic profile.",
1268
+ "xSlexkitExpressionKind": "read"
1269
+ }
1270
+ },
1271
+ "required": [],
1272
+ "patternProperties": {
1273
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1274
+ "$ref": "#/$defs/componentNode"
1275
+ },
1276
+ "^on[A-Za-z_$][\\w$-]*$": {
1277
+ "type": "string",
1278
+ "description": "Write-pipe event handler expression.",
1279
+ "xSlexkitExpressionKind": "write"
1280
+ }
1281
+ }
1282
+ },
1283
+ "radio-group": {
1284
+ "type": "object",
1285
+ "additionalProperties": true,
1286
+ "properties": {
1287
+ "value": {
1288
+ "type": "string",
1289
+ "description": "Current selected value."
1290
+ },
1291
+ "$value": {
1292
+ "type": "string",
1293
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
1294
+ "xSlexkitExpressionKind": "read"
1295
+ },
1296
+ "label": {
1297
+ "type": "string",
1298
+ "description": "Group label."
1299
+ },
1300
+ "$label": {
1301
+ "type": "string",
1302
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
1303
+ "xSlexkitExpressionKind": "read"
1304
+ },
1305
+ "icon": {
1306
+ "type": "string",
1307
+ "description": "Icon name shown before the group label."
1308
+ },
1309
+ "options": {
1310
+ "type": "array",
1311
+ "description": "Options with label, value, and optional icon."
1312
+ },
1313
+ "options[].icon": {
1314
+ "type": "string",
1315
+ "description": "Icon name shown before a single option label."
1316
+ },
1317
+ "options[].description": {
1318
+ "type": "string",
1319
+ "description": "Secondary text shown below the option label."
1320
+ },
1321
+ "disabled": {
1322
+ "type": "boolean",
1323
+ "description": "Disable every radio option in the group.",
1324
+ "default": false
1325
+ },
1326
+ "$disabled": {
1327
+ "type": "string",
1328
+ "description": "Dynamic expression for 'disabled'. Evaluated with the Slex logic profile.",
1329
+ "xSlexkitExpressionKind": "read"
1330
+ },
1331
+ "orientation": {
1332
+ "enum": [
1333
+ "vertical",
1334
+ "horizontal"
1335
+ ],
1336
+ "description": "Radio option layout direction.",
1337
+ "default": "vertical"
1338
+ },
1339
+ "variant": {
1340
+ "enum": [
1341
+ "list"
1342
+ ],
1343
+ "description": "Use list for full-row option surfaces in ToolHost decision cards."
1344
+ },
1345
+ "haptic": {
1346
+ "type": "boolean",
1347
+ "description": "Enable vibration feedback on supported devices.",
1348
+ "default": true
1349
+ },
1350
+ "haptics": {
1351
+ "type": "boolean",
1352
+ "description": "Alias for haptic.",
1353
+ "default": true
1354
+ },
1355
+ "name": {
1356
+ "type": "string",
1357
+ "description": "Native radio group name shared by options."
1358
+ },
1359
+ "onchange": {
1360
+ "type": "string",
1361
+ "xSlexkitExpressionKind": "write",
1362
+ "description": "Write expression invoked when selection changes."
1363
+ }
1364
+ },
1365
+ "required": [],
1366
+ "patternProperties": {
1367
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1368
+ "$ref": "#/$defs/componentNode"
1369
+ },
1370
+ "^on[A-Za-z_$][\\w$-]*$": {
1371
+ "type": "string",
1372
+ "description": "Write-pipe event handler expression.",
1373
+ "xSlexkitExpressionKind": "write"
1374
+ }
1375
+ }
1376
+ },
1377
+ "row": {
1378
+ "type": "object",
1379
+ "additionalProperties": true,
1380
+ "properties": {
1381
+ "justify": {
1382
+ "enum": [
1383
+ "start",
1384
+ "center",
1385
+ "end",
1386
+ "space-between",
1387
+ "space-around"
1388
+ ],
1389
+ "description": "Main-axis distribution.",
1390
+ "default": "start"
1391
+ },
1392
+ "align": {
1393
+ "enum": [
1394
+ "start",
1395
+ "center",
1396
+ "end",
1397
+ "baseline",
1398
+ "stretch"
1399
+ ],
1400
+ "description": "Cross-axis alignment.",
1401
+ "default": "center"
1402
+ },
1403
+ "gap": {
1404
+ "type": "string",
1405
+ "description": "Spacing between children."
1406
+ },
1407
+ "$gap": {
1408
+ "type": "string",
1409
+ "description": "Dynamic expression for 'gap'. Evaluated with the Slex logic profile.",
1410
+ "xSlexkitExpressionKind": "read"
1411
+ },
1412
+ "variant": {
1413
+ "enum": [
1414
+ "actions"
1415
+ ],
1416
+ "description": "Use actions for compact ToolHost action rows."
1417
+ }
1418
+ },
1419
+ "required": [],
1420
+ "patternProperties": {
1421
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1422
+ "$ref": "#/$defs/componentNode"
1423
+ },
1424
+ "^on[A-Za-z_$][\\w$-]*$": {
1425
+ "type": "string",
1426
+ "description": "Write-pipe event handler expression.",
1427
+ "xSlexkitExpressionKind": "write"
1428
+ }
1429
+ }
1430
+ },
1431
+ "section": {
1432
+ "type": "object",
1433
+ "additionalProperties": true,
1434
+ "properties": {
1435
+ "title": {
1436
+ "type": "string",
1437
+ "description": "Section title."
1438
+ },
1439
+ "$title": {
1440
+ "type": "string",
1441
+ "description": "Dynamic expression for 'title'. Evaluated with the Slex logic profile.",
1442
+ "xSlexkitExpressionKind": "read"
1443
+ },
1444
+ "icon": {
1445
+ "type": "string",
1446
+ "description": "Icon name shown before the title."
1447
+ },
1448
+ "eyebrow": {
1449
+ "type": "string",
1450
+ "description": "Small label above the title."
1451
+ },
1452
+ "$eyebrow": {
1453
+ "type": "string",
1454
+ "description": "Dynamic expression for 'eyebrow'. Evaluated with the Slex logic profile.",
1455
+ "xSlexkitExpressionKind": "read"
1456
+ },
1457
+ "subtitle": {
1458
+ "type": "string",
1459
+ "description": "Subtitle text below the title."
1460
+ },
1461
+ "$subtitle": {
1462
+ "type": "string",
1463
+ "description": "Dynamic expression for 'subtitle'. Evaluated with the Slex logic profile.",
1464
+ "xSlexkitExpressionKind": "read"
1465
+ },
1466
+ "actionLabel": {
1467
+ "type": "string",
1468
+ "description": "Optional action link label."
1469
+ },
1470
+ "$actionLabel": {
1471
+ "type": "string",
1472
+ "description": "Dynamic expression for 'actionLabel'. Evaluated with the Slex logic profile.",
1473
+ "xSlexkitExpressionKind": "read"
1474
+ },
1475
+ "actionHref": {
1476
+ "type": "string",
1477
+ "description": "Optional action link target."
1478
+ }
1479
+ },
1480
+ "required": [],
1481
+ "patternProperties": {
1482
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1483
+ "$ref": "#/$defs/componentNode"
1484
+ },
1485
+ "^on[A-Za-z_$][\\w$-]*$": {
1486
+ "type": "string",
1487
+ "description": "Write-pipe event handler expression.",
1488
+ "xSlexkitExpressionKind": "write"
1489
+ }
1490
+ }
1491
+ },
1492
+ "select": {
1493
+ "type": "object",
1494
+ "additionalProperties": true,
1495
+ "properties": {
1496
+ "label": {
1497
+ "type": "string",
1498
+ "description": "Select label."
1499
+ },
1500
+ "$label": {
1501
+ "type": "string",
1502
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
1503
+ "xSlexkitExpressionKind": "read"
1504
+ },
1505
+ "icon": {
1506
+ "type": "string",
1507
+ "description": "Icon name shown before the top label."
1508
+ },
1509
+ "value": {
1510
+ "type": "string",
1511
+ "description": "Current selected value."
1512
+ },
1513
+ "$value": {
1514
+ "type": "string",
1515
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
1516
+ "xSlexkitExpressionKind": "read"
1517
+ },
1518
+ "options": {
1519
+ "type": "array",
1520
+ "description": "Options with label, value, and optional icon."
1521
+ },
1522
+ "options[].icon": {
1523
+ "type": "string",
1524
+ "description": "Icon name shown before an option label."
1525
+ },
1526
+ "placeholder": {
1527
+ "type": "string",
1528
+ "description": "Placeholder shown when no value is selected."
1529
+ },
1530
+ "disabled": {
1531
+ "type": "boolean",
1532
+ "description": "Disable the select trigger and native select.",
1533
+ "default": false
1534
+ },
1535
+ "$disabled": {
1536
+ "type": "string",
1537
+ "description": "Dynamic expression for 'disabled'. Evaluated with the Slex logic profile.",
1538
+ "xSlexkitExpressionKind": "read"
1539
+ },
1540
+ "required": {
1541
+ "type": "boolean",
1542
+ "description": "Require a non-placeholder value in the native select.",
1543
+ "default": false
1544
+ },
1545
+ "$required": {
1546
+ "type": "string",
1547
+ "description": "Dynamic expression for 'required'. Evaluated with the Slex logic profile.",
1548
+ "xSlexkitExpressionKind": "read"
1549
+ },
1550
+ "variant": {
1551
+ "enum": [
1552
+ "default",
1553
+ "toolbar"
1554
+ ],
1555
+ "description": "Select surface variant.",
1556
+ "default": "default"
1557
+ },
1558
+ "onchange": {
1559
+ "type": "string",
1560
+ "xSlexkitExpressionKind": "write",
1561
+ "description": "Write expression invoked when selection changes."
1562
+ }
1563
+ },
1564
+ "required": [],
1565
+ "patternProperties": {
1566
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1567
+ "$ref": "#/$defs/componentNode"
1568
+ },
1569
+ "^on[A-Za-z_$][\\w$-]*$": {
1570
+ "type": "string",
1571
+ "description": "Write-pipe event handler expression.",
1572
+ "xSlexkitExpressionKind": "write"
1573
+ }
1574
+ }
1575
+ },
1576
+ "slider": {
1577
+ "type": "object",
1578
+ "additionalProperties": true,
1579
+ "properties": {
1580
+ "label": {
1581
+ "type": "string",
1582
+ "description": "Slider label."
1583
+ },
1584
+ "$label": {
1585
+ "type": "string",
1586
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
1587
+ "xSlexkitExpressionKind": "read"
1588
+ },
1589
+ "icon": {
1590
+ "type": "string",
1591
+ "description": "Icon name shown before the label."
1592
+ },
1593
+ "value": {
1594
+ "type": "number",
1595
+ "description": "Current numeric value.",
1596
+ "default": 0
1597
+ },
1598
+ "$value": {
1599
+ "type": "string",
1600
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
1601
+ "xSlexkitExpressionKind": "read"
1602
+ },
1603
+ "min": {
1604
+ "type": "number",
1605
+ "description": "Minimum value.",
1606
+ "default": 0
1607
+ },
1608
+ "$min": {
1609
+ "type": "string",
1610
+ "description": "Dynamic expression for 'min'. Evaluated with the Slex logic profile.",
1611
+ "xSlexkitExpressionKind": "read"
1612
+ },
1613
+ "max": {
1614
+ "type": "number",
1615
+ "description": "Maximum value.",
1616
+ "default": 100
1617
+ },
1618
+ "$max": {
1619
+ "type": "string",
1620
+ "description": "Dynamic expression for 'max'. Evaluated with the Slex logic profile.",
1621
+ "xSlexkitExpressionKind": "read"
1622
+ },
1623
+ "step": {
1624
+ "type": "number",
1625
+ "description": "Step interval.",
1626
+ "default": 1
1627
+ },
1628
+ "$step": {
1629
+ "type": "string",
1630
+ "description": "Dynamic expression for 'step'. Evaluated with the Slex logic profile.",
1631
+ "xSlexkitExpressionKind": "read"
1632
+ },
1633
+ "unit": {
1634
+ "type": "string",
1635
+ "description": "Unit shown after the value."
1636
+ },
1637
+ "$unit": {
1638
+ "type": "string",
1639
+ "description": "Dynamic expression for 'unit'. Evaluated with the Slex logic profile.",
1640
+ "xSlexkitExpressionKind": "read"
1641
+ },
1642
+ "disabled": {
1643
+ "type": "boolean",
1644
+ "description": "Disable the range input.",
1645
+ "default": false
1646
+ },
1647
+ "$disabled": {
1648
+ "type": "string",
1649
+ "description": "Dynamic expression for 'disabled'. Evaluated with the Slex logic profile.",
1650
+ "xSlexkitExpressionKind": "read"
1651
+ },
1652
+ "orientation": {
1653
+ "enum": [
1654
+ "horizontal",
1655
+ "vertical"
1656
+ ],
1657
+ "description": "Slider orientation metadata used for styling.",
1658
+ "default": "horizontal"
1659
+ },
1660
+ "haptic": {
1661
+ "type": "boolean",
1662
+ "description": "Enable vibration feedback on supported devices.",
1663
+ "default": true
1664
+ },
1665
+ "haptics": {
1666
+ "type": "boolean",
1667
+ "description": "Alias for haptic.",
1668
+ "default": true
1669
+ },
1670
+ "onchange": {
1671
+ "type": "string",
1672
+ "xSlexkitExpressionKind": "write",
1673
+ "description": "Write expression invoked when the value changes."
1674
+ }
1675
+ },
1676
+ "required": [],
1677
+ "patternProperties": {
1678
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1679
+ "$ref": "#/$defs/componentNode"
1680
+ },
1681
+ "^on[A-Za-z_$][\\w$-]*$": {
1682
+ "type": "string",
1683
+ "description": "Write-pipe event handler expression.",
1684
+ "xSlexkitExpressionKind": "write"
1685
+ }
1686
+ }
1687
+ },
1688
+ "stat": {
1689
+ "type": "object",
1690
+ "additionalProperties": true,
1691
+ "properties": {
1692
+ "label": {
1693
+ "type": "string",
1694
+ "description": "Metric label."
1695
+ },
1696
+ "$label": {
1697
+ "type": "string",
1698
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
1699
+ "xSlexkitExpressionKind": "read"
1700
+ },
1701
+ "icon": {
1702
+ "type": "string",
1703
+ "description": "Icon name shown before the label."
1704
+ },
1705
+ "value": {
1706
+ "type": [
1707
+ "string",
1708
+ "number"
1709
+ ],
1710
+ "description": "Metric value."
1711
+ },
1712
+ "$value": {
1713
+ "type": "string",
1714
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
1715
+ "xSlexkitExpressionKind": "read"
1716
+ },
1717
+ "unit": {
1718
+ "type": "string",
1719
+ "description": "Unit shown after the value."
1720
+ },
1721
+ "$unit": {
1722
+ "type": "string",
1723
+ "description": "Dynamic expression for 'unit'. Evaluated with the Slex logic profile.",
1724
+ "xSlexkitExpressionKind": "read"
1725
+ },
1726
+ "tone": {
1727
+ "enum": [
1728
+ "info",
1729
+ "success",
1730
+ "warning",
1731
+ "danger",
1732
+ "muted"
1733
+ ],
1734
+ "description": "Optional semantic tone."
1735
+ },
1736
+ "animateInitial": {
1737
+ "type": "boolean",
1738
+ "description": "Animate the initial rendered value.",
1739
+ "default": false
1740
+ }
1741
+ },
1742
+ "required": [],
1743
+ "patternProperties": {
1744
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1745
+ "$ref": "#/$defs/componentNode"
1746
+ },
1747
+ "^on[A-Za-z_$][\\w$-]*$": {
1748
+ "type": "string",
1749
+ "description": "Write-pipe event handler expression.",
1750
+ "xSlexkitExpressionKind": "write"
1751
+ }
1752
+ }
1753
+ },
1754
+ "switch": {
1755
+ "type": "object",
1756
+ "additionalProperties": true,
1757
+ "properties": {
1758
+ "enabled": {
1759
+ "type": "boolean",
1760
+ "description": "Enabled state.",
1761
+ "default": false
1762
+ },
1763
+ "$enabled": {
1764
+ "type": "string",
1765
+ "description": "Dynamic expression for 'enabled'. Evaluated with the Slex logic profile.",
1766
+ "xSlexkitExpressionKind": "read"
1767
+ },
1768
+ "label": {
1769
+ "type": "string",
1770
+ "description": "Switch label."
1771
+ },
1772
+ "$label": {
1773
+ "type": "string",
1774
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
1775
+ "xSlexkitExpressionKind": "read"
1776
+ },
1777
+ "icon": {
1778
+ "type": "string",
1779
+ "description": "Icon name shown before the visible label."
1780
+ },
1781
+ "disabled": {
1782
+ "type": "boolean",
1783
+ "description": "Disable the switch.",
1784
+ "default": false
1785
+ },
1786
+ "$disabled": {
1787
+ "type": "string",
1788
+ "description": "Dynamic expression for 'disabled'. Evaluated with the Slex logic profile.",
1789
+ "xSlexkitExpressionKind": "read"
1790
+ },
1791
+ "haptic": {
1792
+ "type": "boolean",
1793
+ "description": "Enable vibration feedback on supported devices.",
1794
+ "default": true
1795
+ },
1796
+ "haptics": {
1797
+ "type": "boolean",
1798
+ "description": "Alias for haptic.",
1799
+ "default": true
1800
+ },
1801
+ "onchange": {
1802
+ "type": "string",
1803
+ "xSlexkitExpressionKind": "write",
1804
+ "description": "Write expression invoked when enabled state changes."
1805
+ }
1806
+ },
1807
+ "required": [],
1808
+ "patternProperties": {
1809
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1810
+ "$ref": "#/$defs/componentNode"
1811
+ },
1812
+ "^on[A-Za-z_$][\\w$-]*$": {
1813
+ "type": "string",
1814
+ "description": "Write-pipe event handler expression.",
1815
+ "xSlexkitExpressionKind": "write"
1816
+ }
1817
+ }
1818
+ },
1819
+ "table": {
1820
+ "type": "object",
1821
+ "additionalProperties": true,
1822
+ "properties": {
1823
+ "columns": {
1824
+ "type": "array",
1825
+ "description": "Column definitions with key, label, and optional icon."
1826
+ },
1827
+ "columns[].icon": {
1828
+ "type": "string",
1829
+ "description": "Icon name shown before a column label."
1830
+ },
1831
+ "rows": {
1832
+ "type": "array",
1833
+ "description": "Row data objects keyed by column key."
1834
+ },
1835
+ "items": {
1836
+ "type": "array",
1837
+ "description": "Alias for rows."
1838
+ }
1839
+ },
1840
+ "required": [],
1841
+ "patternProperties": {
1842
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1843
+ "$ref": "#/$defs/componentNode"
1844
+ },
1845
+ "^on[A-Za-z_$][\\w$-]*$": {
1846
+ "type": "string",
1847
+ "description": "Write-pipe event handler expression.",
1848
+ "xSlexkitExpressionKind": "write"
1849
+ }
1850
+ }
1851
+ },
1852
+ "tabs": {
1853
+ "type": "object",
1854
+ "additionalProperties": true,
1855
+ "properties": {
1856
+ "value": {
1857
+ "type": "string",
1858
+ "description": "Current active tab value."
1859
+ },
1860
+ "$value": {
1861
+ "type": "string",
1862
+ "description": "Dynamic expression for 'value'. Evaluated with the Slex logic profile.",
1863
+ "xSlexkitExpressionKind": "read"
1864
+ },
1865
+ "tabs": {
1866
+ "type": "array",
1867
+ "description": "Tab definitions with value, label, content, icon, and iconOnly."
1868
+ },
1869
+ "tabs[].icon": {
1870
+ "type": "string",
1871
+ "description": "Icon name shown before a tab trigger label."
1872
+ },
1873
+ "tabs[].iconOnly": {
1874
+ "type": "boolean",
1875
+ "description": "Show only the tab icon while retaining label as accessible text."
1876
+ },
1877
+ "orientation": {
1878
+ "enum": [
1879
+ "horizontal",
1880
+ "vertical"
1881
+ ],
1882
+ "description": "Tab list orientation.",
1883
+ "default": "horizontal"
1884
+ },
1885
+ "onchange": {
1886
+ "type": "string",
1887
+ "xSlexkitExpressionKind": "write",
1888
+ "description": "Write expression invoked when the active tab changes."
1889
+ }
1890
+ },
1891
+ "required": [],
1892
+ "patternProperties": {
1893
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1894
+ "$ref": "#/$defs/componentNode"
1895
+ },
1896
+ "^on[A-Za-z_$][\\w$-]*$": {
1897
+ "type": "string",
1898
+ "description": "Write-pipe event handler expression.",
1899
+ "xSlexkitExpressionKind": "write"
1900
+ }
1901
+ }
1902
+ },
1903
+ "text": {
1904
+ "type": "object",
1905
+ "additionalProperties": true,
1906
+ "properties": {
1907
+ "text": {
1908
+ "type": "string",
1909
+ "description": "Displayed text."
1910
+ },
1911
+ "$text": {
1912
+ "type": "string",
1913
+ "description": "Dynamic expression for 'text'. Evaluated with the Slex logic profile.",
1914
+ "xSlexkitExpressionKind": "read"
1915
+ },
1916
+ "content": {
1917
+ "type": "string",
1918
+ "description": "Alias for text."
1919
+ },
1920
+ "$content": {
1921
+ "type": "string",
1922
+ "description": "Dynamic expression for 'content'. Evaluated with the Slex logic profile.",
1923
+ "xSlexkitExpressionKind": "read"
1924
+ },
1925
+ "label": {
1926
+ "type": "string",
1927
+ "description": "Alias for text."
1928
+ },
1929
+ "$label": {
1930
+ "type": "string",
1931
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
1932
+ "xSlexkitExpressionKind": "read"
1933
+ },
1934
+ "variant": {
1935
+ "enum": [
1936
+ "default",
1937
+ "muted"
1938
+ ],
1939
+ "description": "Text visual variant.",
1940
+ "default": "default"
1941
+ },
1942
+ "color": {
1943
+ "type": "string",
1944
+ "description": "Optional CSS color for controlled previews."
1945
+ },
1946
+ "$color": {
1947
+ "type": "string",
1948
+ "description": "Dynamic expression for 'color'. Evaluated with the Slex logic profile.",
1949
+ "xSlexkitExpressionKind": "read"
1950
+ },
1951
+ "size": {
1952
+ "type": [
1953
+ "string",
1954
+ "number"
1955
+ ],
1956
+ "description": "Optional font size. Numbers are treated as px."
1957
+ },
1958
+ "$size": {
1959
+ "type": "string",
1960
+ "description": "Dynamic expression for 'size'. Evaluated with the Slex logic profile.",
1961
+ "xSlexkitExpressionKind": "read"
1962
+ },
1963
+ "class": {
1964
+ "type": "string",
1965
+ "description": "Additional host-controlled CSS class."
1966
+ }
1967
+ },
1968
+ "required": [],
1969
+ "patternProperties": {
1970
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
1971
+ "$ref": "#/$defs/componentNode"
1972
+ },
1973
+ "^on[A-Za-z_$][\\w$-]*$": {
1974
+ "type": "string",
1975
+ "description": "Write-pipe event handler expression.",
1976
+ "xSlexkitExpressionKind": "write"
1977
+ }
1978
+ }
1979
+ },
1980
+ "toast": {
1981
+ "type": "object",
1982
+ "additionalProperties": true,
1983
+ "properties": {
1984
+ "title": {
1985
+ "type": "string",
1986
+ "description": "Toast title."
1987
+ },
1988
+ "$title": {
1989
+ "type": "string",
1990
+ "description": "Dynamic expression for 'title'. Evaluated with the Slex logic profile.",
1991
+ "xSlexkitExpressionKind": "read"
1992
+ },
1993
+ "heading": {
1994
+ "type": "string",
1995
+ "description": "Alias for title."
1996
+ },
1997
+ "$heading": {
1998
+ "type": "string",
1999
+ "description": "Dynamic expression for 'heading'. Evaluated with the Slex logic profile.",
2000
+ "xSlexkitExpressionKind": "read"
2001
+ },
2002
+ "label": {
2003
+ "type": "string",
2004
+ "description": "Alias for title."
2005
+ },
2006
+ "$label": {
2007
+ "type": "string",
2008
+ "description": "Dynamic expression for 'label'. Evaluated with the Slex logic profile.",
2009
+ "xSlexkitExpressionKind": "read"
2010
+ },
2011
+ "icon": {
2012
+ "type": "string",
2013
+ "description": "Icon name shown at the left of the toast."
2014
+ },
2015
+ "description": {
2016
+ "type": "string",
2017
+ "description": "Toast body text."
2018
+ },
2019
+ "$description": {
2020
+ "type": "string",
2021
+ "description": "Dynamic expression for 'description'. Evaluated with the Slex logic profile.",
2022
+ "xSlexkitExpressionKind": "read"
2023
+ },
2024
+ "text": {
2025
+ "type": "string",
2026
+ "description": "Alias for description."
2027
+ },
2028
+ "$text": {
2029
+ "type": "string",
2030
+ "description": "Dynamic expression for 'text'. Evaluated with the Slex logic profile.",
2031
+ "xSlexkitExpressionKind": "read"
2032
+ },
2033
+ "message": {
2034
+ "type": "string",
2035
+ "description": "Alias for description."
2036
+ },
2037
+ "$message": {
2038
+ "type": "string",
2039
+ "description": "Dynamic expression for 'message'. Evaluated with the Slex logic profile.",
2040
+ "xSlexkitExpressionKind": "read"
2041
+ },
2042
+ "content": {
2043
+ "type": "string",
2044
+ "description": "Alias for description."
2045
+ },
2046
+ "$content": {
2047
+ "type": "string",
2048
+ "description": "Dynamic expression for 'content'. Evaluated with the Slex logic profile.",
2049
+ "xSlexkitExpressionKind": "read"
2050
+ },
2051
+ "type": {
2052
+ "enum": [
2053
+ "info",
2054
+ "success",
2055
+ "warning",
2056
+ "danger"
2057
+ ],
2058
+ "description": "Semantic notification type.",
2059
+ "default": "info"
2060
+ },
2061
+ "tone": {
2062
+ "enum": [
2063
+ "info",
2064
+ "success",
2065
+ "warning",
2066
+ "danger"
2067
+ ],
2068
+ "description": "Alias for type.",
2069
+ "default": "info"
2070
+ },
2071
+ "duration": {
2072
+ "type": "number",
2073
+ "description": "Auto-hide delay in milliseconds."
2074
+ },
2075
+ "dismissable": {
2076
+ "type": "boolean",
2077
+ "description": "Show a close button.",
2078
+ "default": true
2079
+ },
2080
+ "dismissible": {
2081
+ "type": "boolean",
2082
+ "description": "Alias for dismissable.",
2083
+ "default": true
2084
+ },
2085
+ "closeLabel": {
2086
+ "type": "string",
2087
+ "description": "Accessible close button label.",
2088
+ "default": "Close notification"
2089
+ },
2090
+ "closeAriaLabel": {
2091
+ "type": "string",
2092
+ "description": "Alias for closeLabel."
2093
+ }
2094
+ },
2095
+ "required": [],
2096
+ "patternProperties": {
2097
+ "^[a-z][a-z0-9-]*:[A-Za-z0-9_$-]*$": {
2098
+ "$ref": "#/$defs/componentNode"
2099
+ },
2100
+ "^on[A-Za-z_$][\\w$-]*$": {
2101
+ "type": "string",
2102
+ "description": "Write-pipe event handler expression.",
2103
+ "xSlexkitExpressionKind": "write"
2104
+ }
2105
+ }
2106
+ }
2107
+ }
2108
+ },
2109
+ "xSlexkit": {
2110
+ "packageVersion": "0.4.0",
2111
+ "schemaVersion": "2026-06",
2112
+ "protocolVersion": "0.1",
2113
+ "logicProfileVersion": "0.1",
2114
+ "sourceFormat": "JavaScript object literal embedded in explicit Markdown ```slex fences"
2115
+ }
2116
+ }