@lumeo-ui/mcp-server 3.17.0 → 3.18.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumeo-ui/mcp-server",
3
- "version": "3.17.0",
3
+ "version": "3.18.0",
4
4
  "description": "Model Context Protocol server for the Lumeo Blazor component library. Lets LLMs (Claude, Copilot, Cursor) author correct Lumeo markup.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "$schema": "https://lumeo.nativ.sh/components-api-schema.json",
3
- "version": "3.17.0",
4
- "generated": "2026-06-18T10:13:10.1991980Z",
3
+ "version": "3.18.0",
4
+ "generated": "2026-06-18T11:36:26.8009093Z",
5
5
  "stats": {
6
6
  "componentCount": 163,
7
- "totalParameters": 4076,
7
+ "totalParameters": 4099,
8
8
  "totalEnums": 74,
9
- "totalRecords": 70,
9
+ "totalRecords": 71,
10
10
  "serviceCount": 33,
11
11
  "thinFallbacks": []
12
12
  },
@@ -7644,6 +7644,14 @@
7644
7644
  "isCascading": false,
7645
7645
  "captureUnmatched": false
7646
7646
  },
7647
+ {
7648
+ "name": "Href",
7649
+ "type": "string?",
7650
+ "default": null,
7651
+ "description": "When set, the button renders as an <a href> styled exactly like a button — the Blazor-idiomatic polymorphism for the common \"link that looks like a button\" case (#269). All visual props (Variant/Size/icons) still apply; Disabled/IsLoading map to aria-disabled + non-interactive styling since a link can't be natively disabled. Leave null for a normal <button>.",
7652
+ "isCascading": false,
7653
+ "captureUnmatched": false
7654
+ },
7647
7655
  {
7648
7656
  "name": "Type",
7649
7657
  "type": "ButtonType",
@@ -17338,6 +17346,30 @@
17338
17346
  "isCascading": false,
17339
17347
  "captureUnmatched": false
17340
17348
  },
17349
+ {
17350
+ "name": "Source",
17351
+ "type": "string?",
17352
+ "default": null,
17353
+ "description": "Raw source to render (block variant). When set together with Highlighter the output is syntax-highlighted; otherwise the source is rendered as escaped plain text. Falls back to ChildContent when null. (#196)",
17354
+ "isCascading": false,
17355
+ "captureUnmatched": false
17356
+ },
17357
+ {
17358
+ "name": "Language",
17359
+ "type": "string?",
17360
+ "default": null,
17361
+ "description": "Language hint (e.g. \"csharp\", \"ts\") — emitted as data-language and passed to Highlighter.",
17362
+ "isCascading": false,
17363
+ "captureUnmatched": false
17364
+ },
17365
+ {
17366
+ "name": "Highlighter",
17367
+ "type": "Func<string, string?, MarkupString>?",
17368
+ "default": null,
17369
+ "description": "Pluggable syntax highlighter: (code, language) =&gt; safe HTML. Plug in Prism / Shiki / highlight.js (or a server-side highlighter). The delegate MUST return SAFE HTML — escape untrusted source. Core ships no built-in highlighter on purpose (dependency-free), mirroring StreamingText.MarkdownRenderer. Ignored unless Source is set.",
17370
+ "isCascading": false,
17371
+ "captureUnmatched": false
17372
+ },
17341
17373
  {
17342
17374
  "name": "ChildContent",
17343
17375
  "type": "RenderFragment?",
@@ -27921,6 +27953,22 @@
27921
27953
  "isCascading": false,
27922
27954
  "captureUnmatched": false
27923
27955
  },
27956
+ {
27957
+ "name": "Filters",
27958
+ "type": "IReadOnlyList<FilterDescriptor>?",
27959
+ "default": null,
27960
+ "description": "Data-driven filter model (#319): when supplied, the bar renders a dismissable FilterPill per descriptor (Field / Operator / Value) and raises OnRemoveFilter on dismiss. The Pills slot still works and renders alongside, so this is purely additive.",
27961
+ "isCascading": false,
27962
+ "captureUnmatched": false
27963
+ },
27964
+ {
27965
+ "name": "OnRemoveFilter",
27966
+ "type": "EventCallback<FilterDescriptor>",
27967
+ "default": null,
27968
+ "description": null,
27969
+ "isCascading": false,
27970
+ "captureUnmatched": false
27971
+ },
27924
27972
  {
27925
27973
  "name": "Class",
27926
27974
  "type": "string?",
@@ -27938,9 +27986,21 @@
27938
27986
  "captureUnmatched": true
27939
27987
  }
27940
27988
  ],
27941
- "events": [],
27989
+ "events": [
27990
+ {
27991
+ "name": "OnRemoveFilter",
27992
+ "type": "EventCallback<FilterDescriptor>",
27993
+ "description": null
27994
+ }
27995
+ ],
27942
27996
  "enums": [],
27943
- "records": [],
27997
+ "records": [
27998
+ {
27999
+ "name": "FilterDescriptor",
28000
+ "signature": "FilterDescriptor(string Field, string? Operator = null, string? Value = null)",
28001
+ "description": "A single active filter: a field, an optional comparison operator (e.g. \"=\", \"&gt;\", \"contains\"), and a display value."
28002
+ }
28003
+ ],
27944
28004
  "gotchas": [],
27945
28005
  "cssVars": [
27946
28006
  "--color-muted",
@@ -27981,6 +28041,14 @@
27981
28041
  "isCascading": false,
27982
28042
  "captureUnmatched": false
27983
28043
  },
28044
+ {
28045
+ "name": "Operator",
28046
+ "type": "string?",
28047
+ "default": null,
28048
+ "description": "Optional comparison operator shown between Label and Value (e.g. \"=\", \"&gt;\", \"contains\"). When null the pill reads \"Label: Value\". (#319)",
28049
+ "isCascading": false,
28050
+ "captureUnmatched": false
28051
+ },
27984
28052
  {
27985
28053
  "name": "Value",
27986
28054
  "type": "string",
@@ -28877,6 +28945,14 @@
28877
28945
  "isCascading": false,
28878
28946
  "captureUnmatched": false
28879
28947
  },
28948
+ {
28949
+ "name": "LabelContent",
28950
+ "type": "RenderFragment?",
28951
+ "default": null,
28952
+ "description": "Custom center/label content — overrides the default text. Drop in a &lt;NumberTicker&gt; (Lumeo.Motion) here for an animated value, instead of duplicating count-up animation in core. (#277)",
28953
+ "isCascading": false,
28954
+ "captureUnmatched": false
28955
+ },
28880
28956
  {
28881
28957
  "name": "ShowValue",
28882
28958
  "type": "bool",
@@ -29099,6 +29175,14 @@
29099
29175
  "isCascading": false,
29100
29176
  "captureUnmatched": false
29101
29177
  },
29178
+ {
29179
+ "name": "As",
29180
+ "type": "string?",
29181
+ "default": null,
29182
+ "description": "Render the heading's visual styling on this element tag instead of the semantic h{Level} (e.g. \"p\", \"div\", \"span\") — the asChild-style escape hatch for \"looks like a heading, isn't one in the document outline\". Visual only; supply role/aria-level via attributes for heading semantics. Null = the normal h{Level}. (#295)",
29183
+ "isCascading": false,
29184
+ "captureUnmatched": false
29185
+ },
29102
29186
  {
29103
29187
  "name": "Size",
29104
29188
  "type": "string?",
@@ -35516,6 +35600,62 @@
35516
35600
  "isCascading": false,
35517
35601
  "captureUnmatched": false
35518
35602
  },
35603
+ {
35604
+ "name": "Page",
35605
+ "type": "int?",
35606
+ "default": null,
35607
+ "description": null,
35608
+ "isCascading": false,
35609
+ "captureUnmatched": false
35610
+ },
35611
+ {
35612
+ "name": "PageChanged",
35613
+ "type": "EventCallback<int>",
35614
+ "default": null,
35615
+ "description": null,
35616
+ "isCascading": false,
35617
+ "captureUnmatched": false
35618
+ },
35619
+ {
35620
+ "name": "TotalPages",
35621
+ "type": "int?",
35622
+ "default": null,
35623
+ "description": null,
35624
+ "isCascading": false,
35625
+ "captureUnmatched": false
35626
+ },
35627
+ {
35628
+ "name": "TotalItems",
35629
+ "type": "int?",
35630
+ "default": null,
35631
+ "description": null,
35632
+ "isCascading": false,
35633
+ "captureUnmatched": false
35634
+ },
35635
+ {
35636
+ "name": "PageSize",
35637
+ "type": "int",
35638
+ "default": "10",
35639
+ "description": null,
35640
+ "isCascading": false,
35641
+ "captureUnmatched": false
35642
+ },
35643
+ {
35644
+ "name": "SiblingCount",
35645
+ "type": "int",
35646
+ "default": "1",
35647
+ "description": "Pages shown on each side of the current page (default 1).",
35648
+ "isCascading": false,
35649
+ "captureUnmatched": false
35650
+ },
35651
+ {
35652
+ "name": "BoundaryCount",
35653
+ "type": "int",
35654
+ "default": "1",
35655
+ "description": "Pages always shown at the very start/end (default 1).",
35656
+ "isCascading": false,
35657
+ "captureUnmatched": false
35658
+ },
35519
35659
  {
35520
35660
  "name": "Class",
35521
35661
  "type": "string?",
@@ -35533,7 +35673,13 @@
35533
35673
  "captureUnmatched": true
35534
35674
  }
35535
35675
  ],
35536
- "events": [],
35676
+ "events": [
35677
+ {
35678
+ "name": "PageChanged",
35679
+ "type": "EventCallback<int>",
35680
+ "description": null
35681
+ }
35682
+ ],
35537
35683
  "enums": [],
35538
35684
  "records": [],
35539
35685
  "gotchas": [],
@@ -43753,6 +43899,46 @@
43753
43899
  "isCascading": false,
43754
43900
  "captureUnmatched": false
43755
43901
  },
43902
+ {
43903
+ "name": "Type",
43904
+ "type": "Sparkline.SparkType",
43905
+ "default": "Sparkline.SparkType.Line",
43906
+ "description": "Inline sparkline shape (Line / Area / Bars). (#276)",
43907
+ "isCascading": false,
43908
+ "captureUnmatched": false
43909
+ },
43910
+ {
43911
+ "name": "ShowArea",
43912
+ "type": "bool",
43913
+ "default": null,
43914
+ "description": "Fill the area under a line sparkline. (#276)",
43915
+ "isCascading": false,
43916
+ "captureUnmatched": false
43917
+ },
43918
+ {
43919
+ "name": "ShowLast",
43920
+ "type": "bool",
43921
+ "default": null,
43922
+ "description": "Mark the most recent point. (#276)",
43923
+ "isCascading": false,
43924
+ "captureUnmatched": false
43925
+ },
43926
+ {
43927
+ "name": "ShowTooltips",
43928
+ "type": "bool",
43929
+ "default": null,
43930
+ "description": "Per-point markers + hover tooltips on the inline sparkline. (#276)",
43931
+ "isCascading": false,
43932
+ "captureUnmatched": false
43933
+ },
43934
+ {
43935
+ "name": "SparkColor",
43936
+ "type": "string?",
43937
+ "default": null,
43938
+ "description": "Override the sparkline color (CSS color / var). (#276)",
43939
+ "isCascading": false,
43940
+ "captureUnmatched": false
43941
+ },
43756
43942
  {
43757
43943
  "name": "Class",
43758
43944
  "type": "string?",
@@ -43981,6 +44167,14 @@
43981
44167
  "isCascading": false,
43982
44168
  "captureUnmatched": false
43983
44169
  },
44170
+ {
44171
+ "name": "ShowTooltips",
44172
+ "type": "bool",
44173
+ "default": null,
44174
+ "description": "Render a marker dot at every data point with a native SVG &lt;title&gt; (hover tooltip showing the value) — point highlight + tooltips with no JS. Off by default. (#275)",
44175
+ "isCascading": false,
44176
+ "captureUnmatched": false
44177
+ },
43984
44178
  {
43985
44179
  "name": "StrokeWidth",
43986
44180
  "type": "double",
@@ -44760,6 +44954,14 @@
44760
44954
  "isCascading": false,
44761
44955
  "captureUnmatched": false
44762
44956
  },
44957
+ {
44958
+ "name": "ValueContent",
44959
+ "type": "RenderFragment?",
44960
+ "default": null,
44961
+ "description": "Custom value content — overrides Value. Drop in a &lt;NumberTicker&gt; (Lumeo.Motion) here for an animated count-up, rather than duplicating animation logic in core. (#273)",
44962
+ "isCascading": false,
44963
+ "captureUnmatched": false
44964
+ },
44763
44965
  {
44764
44966
  "name": "Prefix",
44765
44967
  "type": "RenderFragment?",
package/src/registry.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://lumeo.nativ.sh/registry-schema.json",
3
- "version": "3.17.0",
4
- "generated": "2026-06-18T10:13:08.5380673Z",
3
+ "version": "3.18.0",
4
+ "generated": "2026-06-18T11:36:25.3532160Z",
5
5
  "components": {
6
6
  "accordion": {
7
7
  "name": "Accordion",
@@ -3476,7 +3476,9 @@
3476
3476
  "files": [
3477
3477
  "UI/SparkCard/SparkCard.razor"
3478
3478
  ],
3479
- "dependencies": [],
3479
+ "dependencies": [
3480
+ "sparkline"
3481
+ ],
3480
3482
  "packageDependencies": [],
3481
3483
  "cssVars": [
3482
3484
  "--color-border",