@lumeo-ui/mcp-server 3.0.4 → 3.1.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.0.4",
3
+ "version": "3.1.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.0.4",
4
- "generated": "2026-05-22T05:14:06.7526261Z",
3
+ "version": "3.1.0",
4
+ "generated": "2026-05-22T09:36:50.7771470Z",
5
5
  "stats": {
6
- "componentCount": 149,
7
- "totalParameters": 3580,
6
+ "componentCount": 154,
7
+ "totalParameters": 3660,
8
8
  "totalEnums": 65,
9
- "totalRecords": 62,
9
+ "totalRecords": 63,
10
10
  "thinFallbacks": []
11
11
  },
12
12
  "themeTokens": [
@@ -1973,6 +1973,192 @@
1973
1973
  "parseFailed": false,
1974
1974
  "parseError": null
1975
1975
  },
1976
+ "AudioPlayer": {
1977
+ "name": "AudioPlayer",
1978
+ "category": "Utility",
1979
+ "subcategory": null,
1980
+ "description": "Audio Player component.",
1981
+ "nugetPackage": "Lumeo",
1982
+ "files": [
1983
+ "UI/AudioPlayer/AudioPlayer.razor"
1984
+ ],
1985
+ "namespace": "Lumeo",
1986
+ "inheritsFrom": null,
1987
+ "implements": [
1988
+ "IAsyncDisposable"
1989
+ ],
1990
+ "parameters": [
1991
+ {
1992
+ "name": "Src",
1993
+ "type": "string?",
1994
+ "default": null,
1995
+ "description": null,
1996
+ "isCascading": false,
1997
+ "captureUnmatched": false
1998
+ },
1999
+ {
2000
+ "name": "Autoplay",
2001
+ "type": "bool",
2002
+ "default": null,
2003
+ "description": null,
2004
+ "isCascading": false,
2005
+ "captureUnmatched": false
2006
+ },
2007
+ {
2008
+ "name": "Loop",
2009
+ "type": "bool",
2010
+ "default": null,
2011
+ "description": null,
2012
+ "isCascading": false,
2013
+ "captureUnmatched": false
2014
+ },
2015
+ {
2016
+ "name": "ShowDownload",
2017
+ "type": "bool",
2018
+ "default": null,
2019
+ "description": null,
2020
+ "isCascading": false,
2021
+ "captureUnmatched": false
2022
+ },
2023
+ {
2024
+ "name": "Title",
2025
+ "type": "string?",
2026
+ "default": null,
2027
+ "description": null,
2028
+ "isCascading": false,
2029
+ "captureUnmatched": false
2030
+ },
2031
+ {
2032
+ "name": "Artist",
2033
+ "type": "string?",
2034
+ "default": null,
2035
+ "description": null,
2036
+ "isCascading": false,
2037
+ "captureUnmatched": false
2038
+ },
2039
+ {
2040
+ "name": "Cover",
2041
+ "type": "RenderFragment?",
2042
+ "default": null,
2043
+ "description": null,
2044
+ "isCascading": false,
2045
+ "captureUnmatched": false
2046
+ },
2047
+ {
2048
+ "name": "PreloadMode",
2049
+ "type": "string?",
2050
+ "default": "\"metadata\"",
2051
+ "description": null,
2052
+ "isCascading": false,
2053
+ "captureUnmatched": false
2054
+ },
2055
+ {
2056
+ "name": "OnTimeUpdate",
2057
+ "type": "EventCallback<double>",
2058
+ "default": null,
2059
+ "description": null,
2060
+ "isCascading": false,
2061
+ "captureUnmatched": false
2062
+ },
2063
+ {
2064
+ "name": "OnEnded",
2065
+ "type": "EventCallback",
2066
+ "default": null,
2067
+ "description": null,
2068
+ "isCascading": false,
2069
+ "captureUnmatched": false
2070
+ },
2071
+ {
2072
+ "name": "OnPlay",
2073
+ "type": "EventCallback",
2074
+ "default": null,
2075
+ "description": null,
2076
+ "isCascading": false,
2077
+ "captureUnmatched": false
2078
+ },
2079
+ {
2080
+ "name": "OnPause",
2081
+ "type": "EventCallback",
2082
+ "default": null,
2083
+ "description": null,
2084
+ "isCascading": false,
2085
+ "captureUnmatched": false
2086
+ },
2087
+ {
2088
+ "name": "Class",
2089
+ "type": "string?",
2090
+ "default": null,
2091
+ "description": null,
2092
+ "isCascading": false,
2093
+ "captureUnmatched": false
2094
+ },
2095
+ {
2096
+ "name": "AdditionalAttributes",
2097
+ "type": "Dictionary<string, object>?",
2098
+ "default": null,
2099
+ "description": null,
2100
+ "isCascading": false,
2101
+ "captureUnmatched": true
2102
+ }
2103
+ ],
2104
+ "events": [
2105
+ {
2106
+ "name": "OnTimeUpdate",
2107
+ "type": "EventCallback<double>",
2108
+ "description": null
2109
+ },
2110
+ {
2111
+ "name": "OnEnded",
2112
+ "type": "EventCallback",
2113
+ "description": null
2114
+ },
2115
+ {
2116
+ "name": "OnPlay",
2117
+ "type": "EventCallback",
2118
+ "description": null
2119
+ },
2120
+ {
2121
+ "name": "OnPause",
2122
+ "type": "EventCallback",
2123
+ "description": null
2124
+ }
2125
+ ],
2126
+ "enums": [],
2127
+ "records": [],
2128
+ "cssVars": [
2129
+ "--color-accent",
2130
+ "--color-accent-foreground",
2131
+ "--color-border",
2132
+ "--color-card",
2133
+ "--color-foreground",
2134
+ "--color-muted",
2135
+ "--color-muted-foreground",
2136
+ "--color-primary",
2137
+ "--color-ring",
2138
+ "--radius"
2139
+ ],
2140
+ "examples": [
2141
+ {
2142
+ "title": "Basic",
2143
+ "code": "<AudioPlayer Src=\"https://www.kozco.com/tech/piano2-CoolEdit.mp3\"\n Title=\"Piano sample\"\n Artist=\"Cool Edit demo\" />"
2144
+ },
2145
+ {
2146
+ "title": "With cover art",
2147
+ "code": "<AudioPlayer Src=\"https://www.kozco.com/tech/piano2-CoolEdit.mp3\"\n Title=\"Piano sample\"\n Artist=\"Cool Edit demo\">\n <Cover>\n <Image Src=\"https://images.unsplash.com/photo-1511671782779-c97d3d27a1d4?w=160&h=160&fit=crop\"\n Alt=\"Album cover\"\n Class=\"h-16 w-16 rounded-md object-cover\" />\n </Cover>\n</AudioPlayer>"
2148
+ },
2149
+ {
2150
+ "title": "Looping + download",
2151
+ "code": "<AudioPlayer Src=\"https://www.kozco.com/tech/piano2-CoolEdit.mp3\"\n Title=\"Looping piano sample\"\n Artist=\"Cool Edit demo\"\n Loop=\"true\"\n Autoplay=\"false\"\n ShowDownload=\"true\" />"
2152
+ },
2153
+ {
2154
+ "title": "Playback events",
2155
+ "code": "<AudioPlayer Src=\"https://www.kozco.com/tech/piano2-CoolEdit.mp3\"\n Title=\"Tracked sample\"\n Artist=\"Cool Edit demo\"\n OnPlay=\"HandlePlay\"\n OnPause=\"HandlePause\"\n OnEnded=\"HandleEnded\" />\n\n@@code {\n private string _lastEvent = \"(none)\";\n private void HandlePlay() => _lastEvent = \"play\";\n private void HandlePause() => _lastEvent = \"pause\";\n private void HandleEnded() => _lastEvent = \"ended\";\n}"
2156
+ }
2157
+ ],
2158
+ "subComponents": {},
2159
+ "parseFailed": false,
2160
+ "parseError": null
2161
+ },
1976
2162
  "Avatar": {
1977
2163
  "name": "Avatar",
1978
2164
  "category": "Data Display",
@@ -13004,6 +13190,166 @@
13004
13190
  "parseFailed": false,
13005
13191
  "parseError": null
13006
13192
  },
13193
+ "CodeEditor": {
13194
+ "name": "CodeEditor",
13195
+ "category": "Forms",
13196
+ "subcategory": null,
13197
+ "description": "Source-code editor wrapping CodeMirror 6 with on-demand language packs, dark/light/auto theming, and line numbers.",
13198
+ "nugetPackage": "Lumeo.CodeEditor",
13199
+ "files": [
13200
+ "UI/CodeEditor/CodeEditor.razor"
13201
+ ],
13202
+ "namespace": "Lumeo",
13203
+ "inheritsFrom": null,
13204
+ "implements": [
13205
+ "IAsyncDisposable"
13206
+ ],
13207
+ "parameters": [
13208
+ {
13209
+ "name": "Value",
13210
+ "type": "string?",
13211
+ "default": null,
13212
+ "description": null,
13213
+ "isCascading": false,
13214
+ "captureUnmatched": false
13215
+ },
13216
+ {
13217
+ "name": "ValueChanged",
13218
+ "type": "EventCallback<string>",
13219
+ "default": null,
13220
+ "description": null,
13221
+ "isCascading": false,
13222
+ "captureUnmatched": false
13223
+ },
13224
+ {
13225
+ "name": "Language",
13226
+ "type": "string",
13227
+ "default": "\"plaintext\"",
13228
+ "description": "Source language. Currently supported: csharp, javascript, typescript, html, css, json, markdown, xml, sql, python, plaintext. Unknown values fall back to plaintext.",
13229
+ "isCascading": false,
13230
+ "captureUnmatched": false
13231
+ },
13232
+ {
13233
+ "name": "Theme",
13234
+ "type": "string",
13235
+ "default": "\"auto\"",
13236
+ "description": "light | dark | auto (follows page theme via the `dark` class on &lt;html&gt;).",
13237
+ "isCascading": false,
13238
+ "captureUnmatched": false
13239
+ },
13240
+ {
13241
+ "name": "Height",
13242
+ "type": "string",
13243
+ "default": "\"400px\"",
13244
+ "description": null,
13245
+ "isCascading": false,
13246
+ "captureUnmatched": false
13247
+ },
13248
+ {
13249
+ "name": "LineNumbers",
13250
+ "type": "bool",
13251
+ "default": "true",
13252
+ "description": null,
13253
+ "isCascading": false,
13254
+ "captureUnmatched": false
13255
+ },
13256
+ {
13257
+ "name": "ReadOnly",
13258
+ "type": "bool",
13259
+ "default": null,
13260
+ "description": null,
13261
+ "isCascading": false,
13262
+ "captureUnmatched": false
13263
+ },
13264
+ {
13265
+ "name": "ShowMinimap",
13266
+ "type": "bool",
13267
+ "default": null,
13268
+ "description": "CodeMirror 6 does not ship a native minimap. Kept for API symmetry with Monaco-style wrappers; today this is a no-op. A future revision may render a custom minimap using the scrollDOM viewport API.",
13269
+ "isCascading": false,
13270
+ "captureUnmatched": false
13271
+ },
13272
+ {
13273
+ "name": "TabSize",
13274
+ "type": "int",
13275
+ "default": "4",
13276
+ "description": null,
13277
+ "isCascading": false,
13278
+ "captureUnmatched": false
13279
+ },
13280
+ {
13281
+ "name": "UseTabs",
13282
+ "type": "bool",
13283
+ "default": null,
13284
+ "description": null,
13285
+ "isCascading": false,
13286
+ "captureUnmatched": false
13287
+ },
13288
+ {
13289
+ "name": "WordWrap",
13290
+ "type": "string",
13291
+ "default": "\"off\"",
13292
+ "description": "\"off\" | \"on\"",
13293
+ "isCascading": false,
13294
+ "captureUnmatched": false
13295
+ },
13296
+ {
13297
+ "name": "Placeholder",
13298
+ "type": "string?",
13299
+ "default": null,
13300
+ "description": null,
13301
+ "isCascading": false,
13302
+ "captureUnmatched": false
13303
+ },
13304
+ {
13305
+ "name": "OnChange",
13306
+ "type": "EventCallback<string>",
13307
+ "default": null,
13308
+ "description": "Fires alongside ValueChanged; provided for symmetry with Monaco-style APIs.",
13309
+ "isCascading": false,
13310
+ "captureUnmatched": false
13311
+ },
13312
+ {
13313
+ "name": "Class",
13314
+ "type": "string?",
13315
+ "default": null,
13316
+ "description": null,
13317
+ "isCascading": false,
13318
+ "captureUnmatched": false
13319
+ },
13320
+ {
13321
+ "name": "AdditionalAttributes",
13322
+ "type": "Dictionary<string, object>?",
13323
+ "default": null,
13324
+ "description": null,
13325
+ "isCascading": false,
13326
+ "captureUnmatched": true
13327
+ }
13328
+ ],
13329
+ "events": [
13330
+ {
13331
+ "name": "ValueChanged",
13332
+ "type": "EventCallback<string>",
13333
+ "description": null
13334
+ },
13335
+ {
13336
+ "name": "OnChange",
13337
+ "type": "EventCallback<string>",
13338
+ "description": "Fires alongside ValueChanged; provided for symmetry with Monaco-style APIs."
13339
+ }
13340
+ ],
13341
+ "enums": [],
13342
+ "records": [],
13343
+ "cssVars": [
13344
+ "--color-border",
13345
+ "--color-card",
13346
+ "--radius"
13347
+ ],
13348
+ "examples": [],
13349
+ "subComponents": {},
13350
+ "parseFailed": false,
13351
+ "parseError": null
13352
+ },
13007
13353
  "Collapsible": {
13008
13354
  "name": "Collapsible",
13009
13355
  "category": "Navigation",
@@ -16822,6 +17168,14 @@
16822
17168
  "isCascading": false,
16823
17169
  "captureUnmatched": false
16824
17170
  },
17171
+ {
17172
+ "name": "OnColumnPin",
17173
+ "type": "EventCallback<ColumnPinEventArgs>",
17174
+ "default": null,
17175
+ "description": null,
17176
+ "isCascading": false,
17177
+ "captureUnmatched": false
17178
+ },
16825
17179
  {
16826
17180
  "name": "Class",
16827
17181
  "type": "string?",
@@ -16849,6 +17203,11 @@
16849
17203
  "name": "OnColumnReorder",
16850
17204
  "type": "EventCallback<ColumnReorderEventArgs>",
16851
17205
  "description": null
17206
+ },
17207
+ {
17208
+ "name": "OnColumnPin",
17209
+ "type": "EventCallback<ColumnPinEventArgs>",
17210
+ "description": null
16852
17211
  }
16853
17212
  ],
16854
17213
  "enums": [],
@@ -19624,6 +19983,7 @@
19624
19983
  "--color-border",
19625
19984
  "--color-muted",
19626
19985
  "--color-muted-foreground",
19986
+ "--color-ring",
19627
19987
  "--radius"
19628
19988
  ],
19629
19989
  "examples": [
@@ -23893,6 +24253,7 @@
23893
24253
  "cssVars": [
23894
24254
  "--color-muted",
23895
24255
  "--color-muted-foreground",
24256
+ "--color-ring",
23896
24257
  "--radius"
23897
24258
  ],
23898
24259
  "examples": [
@@ -25594,6 +25955,239 @@
25594
25955
  "parseFailed": false,
25595
25956
  "parseError": null
25596
25957
  },
25958
+ "Map": {
25959
+ "name": "Map",
25960
+ "category": "Data Display",
25961
+ "subcategory": null,
25962
+ "description": "Interactive geographic map with declarative markers — Leaflet wrapper, open-source tiles, no API key required.",
25963
+ "nugetPackage": "Lumeo.Maps",
25964
+ "files": [
25965
+ "UI/Map/Map.razor",
25966
+ "UI/Map/MapMarker.razor"
25967
+ ],
25968
+ "namespace": "Lumeo",
25969
+ "inheritsFrom": null,
25970
+ "implements": [
25971
+ "IAsyncDisposable"
25972
+ ],
25973
+ "parameters": [
25974
+ {
25975
+ "name": "Center",
25976
+ "type": "(double Lat, double Lon)",
25977
+ "default": "(51.0, 10.4)",
25978
+ "description": null,
25979
+ "isCascading": false,
25980
+ "captureUnmatched": false
25981
+ },
25982
+ {
25983
+ "name": "CenterChanged",
25984
+ "type": "EventCallback<(double Lat, double Lon)>",
25985
+ "default": null,
25986
+ "description": null,
25987
+ "isCascading": false,
25988
+ "captureUnmatched": false
25989
+ },
25990
+ {
25991
+ "name": "Zoom",
25992
+ "type": "int",
25993
+ "default": "5",
25994
+ "description": null,
25995
+ "isCascading": false,
25996
+ "captureUnmatched": false
25997
+ },
25998
+ {
25999
+ "name": "ZoomChanged",
26000
+ "type": "EventCallback<int>",
26001
+ "default": null,
26002
+ "description": null,
26003
+ "isCascading": false,
26004
+ "captureUnmatched": false
26005
+ },
26006
+ {
26007
+ "name": "Height",
26008
+ "type": "string",
26009
+ "default": "\"400px\"",
26010
+ "description": null,
26011
+ "isCascading": false,
26012
+ "captureUnmatched": false
26013
+ },
26014
+ {
26015
+ "name": "TileLayer",
26016
+ "type": "string",
26017
+ "default": "\"OpenStreetMap\"",
26018
+ "description": "Accepts a preset name (\"OpenStreetMap\", \"CartoLight\", \"CartoDark\") or a raw tile URL template (e.g. \"https://your.tiles/{z}/{x}/{y}.png\").",
26019
+ "isCascading": false,
26020
+ "captureUnmatched": false
26021
+ },
26022
+ {
26023
+ "name": "ZoomControl",
26024
+ "type": "bool",
26025
+ "default": "true",
26026
+ "description": null,
26027
+ "isCascading": false,
26028
+ "captureUnmatched": false
26029
+ },
26030
+ {
26031
+ "name": "Attribution",
26032
+ "type": "bool",
26033
+ "default": "true",
26034
+ "description": null,
26035
+ "isCascading": false,
26036
+ "captureUnmatched": false
26037
+ },
26038
+ {
26039
+ "name": "ScrollWheelZoom",
26040
+ "type": "bool",
26041
+ "default": "true",
26042
+ "description": "Mirrors Leaflet's default (true). Set to false in dense scrollable page layouts to avoid trapping page scroll inside the map.",
26043
+ "isCascading": false,
26044
+ "captureUnmatched": false
26045
+ },
26046
+ {
26047
+ "name": "ChildContent",
26048
+ "type": "RenderFragment?",
26049
+ "default": null,
26050
+ "description": null,
26051
+ "isCascading": false,
26052
+ "captureUnmatched": false
26053
+ },
26054
+ {
26055
+ "name": "OnClick",
26056
+ "type": "EventCallback<(double Lat, double Lon)>",
26057
+ "default": null,
26058
+ "description": null,
26059
+ "isCascading": false,
26060
+ "captureUnmatched": false
26061
+ },
26062
+ {
26063
+ "name": "Class",
26064
+ "type": "string?",
26065
+ "default": null,
26066
+ "description": null,
26067
+ "isCascading": false,
26068
+ "captureUnmatched": false
26069
+ },
26070
+ {
26071
+ "name": "AdditionalAttributes",
26072
+ "type": "Dictionary<string, object>?",
26073
+ "default": null,
26074
+ "description": null,
26075
+ "isCascading": false,
26076
+ "captureUnmatched": true
26077
+ }
26078
+ ],
26079
+ "events": [
26080
+ {
26081
+ "name": "CenterChanged",
26082
+ "type": "EventCallback<(double Lat, double Lon)>",
26083
+ "description": null
26084
+ },
26085
+ {
26086
+ "name": "ZoomChanged",
26087
+ "type": "EventCallback<int>",
26088
+ "description": null
26089
+ },
26090
+ {
26091
+ "name": "OnClick",
26092
+ "type": "EventCallback<(double Lat, double Lon)>",
26093
+ "description": null
26094
+ }
26095
+ ],
26096
+ "enums": [],
26097
+ "records": [
26098
+ {
26099
+ "name": "MapContext",
26100
+ "signature": "MapContext(Map Owner)",
26101
+ "description": "Cascading context passed to MapMarker children so they can register themselves with the parent Map. Declared here so consumers don't need an extra using."
26102
+ }
26103
+ ],
26104
+ "cssVars": [
26105
+ "--color-foreground"
26106
+ ],
26107
+ "examples": [],
26108
+ "subComponents": {
26109
+ "MapMarker": {
26110
+ "componentName": "MapMarker",
26111
+ "fileName": "MapMarker.razor",
26112
+ "namespace": "Lumeo",
26113
+ "inheritsFrom": null,
26114
+ "implements": [
26115
+ "IDisposable"
26116
+ ],
26117
+ "parameters": [
26118
+ {
26119
+ "name": "Lat",
26120
+ "type": "double",
26121
+ "default": null,
26122
+ "description": null,
26123
+ "isCascading": false,
26124
+ "captureUnmatched": false
26125
+ },
26126
+ {
26127
+ "name": "Lon",
26128
+ "type": "double",
26129
+ "default": null,
26130
+ "description": null,
26131
+ "isCascading": false,
26132
+ "captureUnmatched": false
26133
+ },
26134
+ {
26135
+ "name": "Title",
26136
+ "type": "string?",
26137
+ "default": null,
26138
+ "description": null,
26139
+ "isCascading": false,
26140
+ "captureUnmatched": false
26141
+ },
26142
+ {
26143
+ "name": "IconUrl",
26144
+ "type": "string?",
26145
+ "default": null,
26146
+ "description": null,
26147
+ "isCascading": false,
26148
+ "captureUnmatched": false
26149
+ },
26150
+ {
26151
+ "name": "Popup",
26152
+ "type": "RenderFragment?",
26153
+ "default": null,
26154
+ "description": "Optional rich popup body. When present, it overrides the plain Title as the marker's popup content. The fragment renders into a hidden host div and Leaflet uses the host's innerHTML.",
26155
+ "isCascading": false,
26156
+ "captureUnmatched": false
26157
+ },
26158
+ {
26159
+ "name": "OnClick",
26160
+ "type": "EventCallback",
26161
+ "default": null,
26162
+ "description": null,
26163
+ "isCascading": false,
26164
+ "captureUnmatched": false
26165
+ },
26166
+ {
26167
+ "name": "MapCtx",
26168
+ "type": "Map.MapContext?",
26169
+ "default": null,
26170
+ "description": null,
26171
+ "isCascading": true,
26172
+ "captureUnmatched": false
26173
+ }
26174
+ ],
26175
+ "events": [
26176
+ {
26177
+ "name": "OnClick",
26178
+ "type": "EventCallback",
26179
+ "description": null
26180
+ }
26181
+ ],
26182
+ "enums": [],
26183
+ "records": [],
26184
+ "parseFailed": false,
26185
+ "parseError": null
26186
+ }
26187
+ },
26188
+ "parseFailed": false,
26189
+ "parseError": null
26190
+ },
25597
26191
  "Marquee": {
25598
26192
  "name": "Marquee",
25599
26193
  "category": "Motion",
@@ -28486,6 +29080,188 @@
28486
29080
  "parseFailed": false,
28487
29081
  "parseError": null
28488
29082
  },
29083
+ "PdfViewer": {
29084
+ "name": "PdfViewer",
29085
+ "category": "Data Display",
29086
+ "subcategory": null,
29087
+ "description": "Inline PDF document viewer powered by pdf.js — page navigation, zoom controls, optional text search, and download.",
29088
+ "nugetPackage": "Lumeo.PdfViewer",
29089
+ "files": [
29090
+ "UI/PdfViewer/PdfViewer.razor"
29091
+ ],
29092
+ "namespace": "Lumeo",
29093
+ "inheritsFrom": null,
29094
+ "implements": [
29095
+ "IAsyncDisposable"
29096
+ ],
29097
+ "parameters": [
29098
+ {
29099
+ "name": "Src",
29100
+ "type": "string?",
29101
+ "default": null,
29102
+ "description": null,
29103
+ "isCascading": false,
29104
+ "captureUnmatched": false
29105
+ },
29106
+ {
29107
+ "name": "Page",
29108
+ "type": "int",
29109
+ "default": "1",
29110
+ "description": null,
29111
+ "isCascading": false,
29112
+ "captureUnmatched": false
29113
+ },
29114
+ {
29115
+ "name": "PageChanged",
29116
+ "type": "EventCallback<int>",
29117
+ "default": null,
29118
+ "description": null,
29119
+ "isCascading": false,
29120
+ "captureUnmatched": false
29121
+ },
29122
+ {
29123
+ "name": "Zoom",
29124
+ "type": "double",
29125
+ "default": "1.0",
29126
+ "description": null,
29127
+ "isCascading": false,
29128
+ "captureUnmatched": false
29129
+ },
29130
+ {
29131
+ "name": "ZoomChanged",
29132
+ "type": "EventCallback<double>",
29133
+ "default": null,
29134
+ "description": null,
29135
+ "isCascading": false,
29136
+ "captureUnmatched": false
29137
+ },
29138
+ {
29139
+ "name": "ShowToolbar",
29140
+ "type": "bool",
29141
+ "default": "true",
29142
+ "description": null,
29143
+ "isCascading": false,
29144
+ "captureUnmatched": false
29145
+ },
29146
+ {
29147
+ "name": "ShowPageNav",
29148
+ "type": "bool",
29149
+ "default": "true",
29150
+ "description": null,
29151
+ "isCascading": false,
29152
+ "captureUnmatched": false
29153
+ },
29154
+ {
29155
+ "name": "ShowZoomControls",
29156
+ "type": "bool",
29157
+ "default": "true",
29158
+ "description": null,
29159
+ "isCascading": false,
29160
+ "captureUnmatched": false
29161
+ },
29162
+ {
29163
+ "name": "ShowDownload",
29164
+ "type": "bool",
29165
+ "default": "true",
29166
+ "description": null,
29167
+ "isCascading": false,
29168
+ "captureUnmatched": false
29169
+ },
29170
+ {
29171
+ "name": "ShowSearch",
29172
+ "type": "bool",
29173
+ "default": null,
29174
+ "description": null,
29175
+ "isCascading": false,
29176
+ "captureUnmatched": false
29177
+ },
29178
+ {
29179
+ "name": "OnLoaded",
29180
+ "type": "EventCallback<int>",
29181
+ "default": null,
29182
+ "description": null,
29183
+ "isCascading": false,
29184
+ "captureUnmatched": false
29185
+ },
29186
+ {
29187
+ "name": "OnPageChanged",
29188
+ "type": "EventCallback<int>",
29189
+ "default": null,
29190
+ "description": null,
29191
+ "isCascading": false,
29192
+ "captureUnmatched": false
29193
+ },
29194
+ {
29195
+ "name": "Class",
29196
+ "type": "string?",
29197
+ "default": null,
29198
+ "description": null,
29199
+ "isCascading": false,
29200
+ "captureUnmatched": false
29201
+ },
29202
+ {
29203
+ "name": "AdditionalAttributes",
29204
+ "type": "Dictionary<string, object>?",
29205
+ "default": null,
29206
+ "description": null,
29207
+ "isCascading": false,
29208
+ "captureUnmatched": true
29209
+ }
29210
+ ],
29211
+ "events": [
29212
+ {
29213
+ "name": "PageChanged",
29214
+ "type": "EventCallback<int>",
29215
+ "description": null
29216
+ },
29217
+ {
29218
+ "name": "ZoomChanged",
29219
+ "type": "EventCallback<double>",
29220
+ "description": null
29221
+ },
29222
+ {
29223
+ "name": "OnLoaded",
29224
+ "type": "EventCallback<int>",
29225
+ "description": null
29226
+ },
29227
+ {
29228
+ "name": "OnPageChanged",
29229
+ "type": "EventCallback<int>",
29230
+ "description": null
29231
+ }
29232
+ ],
29233
+ "enums": [],
29234
+ "records": [],
29235
+ "cssVars": [
29236
+ "--color-accent",
29237
+ "--color-accent-foreground",
29238
+ "--color-background",
29239
+ "--color-border",
29240
+ "--color-card",
29241
+ "--color-foreground",
29242
+ "--color-muted",
29243
+ "--color-muted-foreground",
29244
+ "--color-ring",
29245
+ "--radius"
29246
+ ],
29247
+ "examples": [
29248
+ {
29249
+ "title": "Basic",
29250
+ "code": "<PdfViewer Src=\"@SamplePdfUrl\"\n @bind-Page=\"_page\"\n @bind-Zoom=\"_zoom\"\n OnLoaded=\"HandleLoaded\"\n Class=\"h-[600px]\" />"
29251
+ },
29252
+ {
29253
+ "title": "With search bar",
29254
+ "code": "<PdfViewer Src=\"@SamplePdfUrl\"\n ShowSearch=\"true\"\n Class=\"h-[600px]\" />"
29255
+ },
29256
+ {
29257
+ "title": "Toolbar-less (chromeless embed)",
29258
+ "code": "<PdfViewer Src=\"@SamplePdfUrl\"\n ShowToolbar=\"false\"\n Class=\"h-[500px]\" />"
29259
+ }
29260
+ ],
29261
+ "subComponents": {},
29262
+ "parseFailed": false,
29263
+ "parseError": null
29264
+ },
28489
29265
  "PickList": {
28490
29266
  "name": "PickList",
28491
29267
  "category": "Dashboard",
@@ -33420,6 +34196,7 @@
33420
34196
  "--color-foreground",
33421
34197
  "--color-muted",
33422
34198
  "--color-muted-foreground",
34199
+ "--color-ring",
33423
34200
  "--radius"
33424
34201
  ],
33425
34202
  "examples": [
@@ -34584,6 +35361,198 @@
34584
35361
  "parseFailed": false,
34585
35362
  "parseError": null
34586
35363
  },
35364
+ "SignaturePad": {
35365
+ "name": "SignaturePad",
35366
+ "category": "Utility",
35367
+ "subcategory": null,
35368
+ "description": "Signature Pad component.",
35369
+ "nugetPackage": "Lumeo",
35370
+ "files": [
35371
+ "UI/SignaturePad/SignaturePad.razor"
35372
+ ],
35373
+ "namespace": "Lumeo",
35374
+ "inheritsFrom": null,
35375
+ "implements": [
35376
+ "IAsyncDisposable"
35377
+ ],
35378
+ "parameters": [
35379
+ {
35380
+ "name": "Value",
35381
+ "type": "string?",
35382
+ "default": null,
35383
+ "description": null,
35384
+ "isCascading": false,
35385
+ "captureUnmatched": false
35386
+ },
35387
+ {
35388
+ "name": "ValueChanged",
35389
+ "type": "EventCallback<string?>",
35390
+ "default": null,
35391
+ "description": null,
35392
+ "isCascading": false,
35393
+ "captureUnmatched": false
35394
+ },
35395
+ {
35396
+ "name": "Width",
35397
+ "type": "int",
35398
+ "default": "500",
35399
+ "description": null,
35400
+ "isCascading": false,
35401
+ "captureUnmatched": false
35402
+ },
35403
+ {
35404
+ "name": "Height",
35405
+ "type": "int",
35406
+ "default": "200",
35407
+ "description": null,
35408
+ "isCascading": false,
35409
+ "captureUnmatched": false
35410
+ },
35411
+ {
35412
+ "name": "StrokeColor",
35413
+ "type": "string",
35414
+ "default": "\"currentColor\"",
35415
+ "description": null,
35416
+ "isCascading": false,
35417
+ "captureUnmatched": false
35418
+ },
35419
+ {
35420
+ "name": "StrokeWidth",
35421
+ "type": "double",
35422
+ "default": "2.0",
35423
+ "description": null,
35424
+ "isCascading": false,
35425
+ "captureUnmatched": false
35426
+ },
35427
+ {
35428
+ "name": "BackgroundColor",
35429
+ "type": "string",
35430
+ "default": "\"transparent\"",
35431
+ "description": null,
35432
+ "isCascading": false,
35433
+ "captureUnmatched": false
35434
+ },
35435
+ {
35436
+ "name": "ShowClearButton",
35437
+ "type": "bool",
35438
+ "default": "true",
35439
+ "description": null,
35440
+ "isCascading": false,
35441
+ "captureUnmatched": false
35442
+ },
35443
+ {
35444
+ "name": "ShowDownloadButton",
35445
+ "type": "bool",
35446
+ "default": null,
35447
+ "description": null,
35448
+ "isCascading": false,
35449
+ "captureUnmatched": false
35450
+ },
35451
+ {
35452
+ "name": "Format",
35453
+ "type": "string",
35454
+ "default": "\"png\"",
35455
+ "description": "Export format for the emitted data URL. \"png\" is the safe default (universal browser support, transparent backgrounds work). \"svg\" would require capturing strokes as path data rather than raster pixels; not implemented in this initial 3.1.0 cut — falls back to PNG. TODO: real SVG export by recording pointer paths client-side.",
35456
+ "isCascading": false,
35457
+ "captureUnmatched": false
35458
+ },
35459
+ {
35460
+ "name": "Disabled",
35461
+ "type": "bool",
35462
+ "default": null,
35463
+ "description": null,
35464
+ "isCascading": false,
35465
+ "captureUnmatched": false
35466
+ },
35467
+ {
35468
+ "name": "OnSign",
35469
+ "type": "EventCallback",
35470
+ "default": null,
35471
+ "description": null,
35472
+ "isCascading": false,
35473
+ "captureUnmatched": false
35474
+ },
35475
+ {
35476
+ "name": "OnClear",
35477
+ "type": "EventCallback",
35478
+ "default": null,
35479
+ "description": null,
35480
+ "isCascading": false,
35481
+ "captureUnmatched": false
35482
+ },
35483
+ {
35484
+ "name": "Placeholder",
35485
+ "type": "string?",
35486
+ "default": "\"Sign here\"",
35487
+ "description": null,
35488
+ "isCascading": false,
35489
+ "captureUnmatched": false
35490
+ },
35491
+ {
35492
+ "name": "Class",
35493
+ "type": "string?",
35494
+ "default": null,
35495
+ "description": null,
35496
+ "isCascading": false,
35497
+ "captureUnmatched": false
35498
+ },
35499
+ {
35500
+ "name": "AdditionalAttributes",
35501
+ "type": "Dictionary<string, object>?",
35502
+ "default": null,
35503
+ "description": null,
35504
+ "isCascading": false,
35505
+ "captureUnmatched": true
35506
+ }
35507
+ ],
35508
+ "events": [
35509
+ {
35510
+ "name": "ValueChanged",
35511
+ "type": "EventCallback<string?>",
35512
+ "description": null
35513
+ },
35514
+ {
35515
+ "name": "OnSign",
35516
+ "type": "EventCallback",
35517
+ "description": null
35518
+ },
35519
+ {
35520
+ "name": "OnClear",
35521
+ "type": "EventCallback",
35522
+ "description": null
35523
+ }
35524
+ ],
35525
+ "enums": [],
35526
+ "records": [],
35527
+ "cssVars": [
35528
+ "--color-border",
35529
+ "--color-card",
35530
+ "--color-muted",
35531
+ "--color-muted-foreground",
35532
+ "--radius"
35533
+ ],
35534
+ "examples": [
35535
+ {
35536
+ "title": "Basic",
35537
+ "code": "<SignaturePad @bind-Value=\"_signature\" />\n\n@@if (!string.IsNullOrEmpty(_signature))\n{\n <Image Src=\"@_signature\" Alt=\"Captured signature\" />\n}\n\n@@code {\n private string? _signature;\n}"
35538
+ },
35539
+ {
35540
+ "title": "Custom stroke",
35541
+ "code": "<SignaturePad StrokeColor=\"#dc2626\"\n StrokeWidth=\"4\"\n BackgroundColor=\"white\" />"
35542
+ },
35543
+ {
35544
+ "title": "With download",
35545
+ "code": "<SignaturePad ShowDownloadButton=\"true\"\n Placeholder=\"Sign and click download\" />"
35546
+ },
35547
+ {
35548
+ "title": "Disabled / read-only",
35549
+ "code": "<SignaturePad Disabled=\"true\" Value=\"@_savedSignature\" />\n\n@@code {\n private string _savedSignature = \"data:image/png;base64,...\";\n}"
35550
+ }
35551
+ ],
35552
+ "subComponents": {},
35553
+ "parseFailed": false,
35554
+ "parseError": null
35555
+ },
34587
35556
  "Skeleton": {
34588
35557
  "name": "Skeleton",
34589
35558
  "category": "Feedback",
package/src/registry.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://lumeo.nativ.sh/registry-schema.json",
3
- "version": "3.0.4",
4
- "generated": "2026-05-22T05:14:05.4378927Z",
3
+ "version": "3.1.0",
4
+ "generated": "2026-05-22T09:36:49.7962064Z",
5
5
  "components": {
6
6
  "accordion": {
7
7
  "name": "Accordion",
@@ -190,6 +190,37 @@
190
190
  ],
191
191
  "registryUrl": "https://lumeo.nativ.sh/registry/aspect-ratio.json"
192
192
  },
193
+ "audio-player": {
194
+ "name": "AudioPlayer",
195
+ "category": "Utility",
196
+ "subcategory": null,
197
+ "description": "Audio Player component.",
198
+ "thumbnail": "/preview-cards/audio-player.png",
199
+ "hasDocsPage": true,
200
+ "nugetPackage": "Lumeo",
201
+ "files": [
202
+ "UI/AudioPlayer/AudioPlayer.razor"
203
+ ],
204
+ "dependencies": [
205
+ "button"
206
+ ],
207
+ "packageDependencies": [
208
+ "Blazicons.Lucide"
209
+ ],
210
+ "cssVars": [
211
+ "--color-accent",
212
+ "--color-accent-foreground",
213
+ "--color-border",
214
+ "--color-card",
215
+ "--color-foreground",
216
+ "--color-muted",
217
+ "--color-muted-foreground",
218
+ "--color-primary",
219
+ "--color-ring",
220
+ "--radius"
221
+ ],
222
+ "registryUrl": "https://lumeo.nativ.sh/registry/audio-player.json"
223
+ },
193
224
  "avatar": {
194
225
  "name": "Avatar",
195
226
  "category": "Data Display",
@@ -723,6 +754,26 @@
723
754
  ],
724
755
  "registryUrl": "https://lumeo.nativ.sh/registry/code.json"
725
756
  },
757
+ "code-editor": {
758
+ "name": "CodeEditor",
759
+ "category": "Forms",
760
+ "subcategory": null,
761
+ "description": "Source-code editor wrapping CodeMirror 6 with on-demand language packs, dark/light/auto theming, and line numbers.",
762
+ "thumbnail": "/preview-cards/code-editor.png",
763
+ "hasDocsPage": true,
764
+ "nugetPackage": "Lumeo.CodeEditor",
765
+ "files": [
766
+ "UI/CodeEditor/CodeEditor.razor"
767
+ ],
768
+ "dependencies": [],
769
+ "packageDependencies": [],
770
+ "cssVars": [
771
+ "--color-border",
772
+ "--color-card",
773
+ "--radius"
774
+ ],
775
+ "registryUrl": "https://lumeo.nativ.sh/registry/code-editor.json"
776
+ },
726
777
  "collapsible": {
727
778
  "name": "Collapsible",
728
779
  "category": "Navigation",
@@ -1000,6 +1051,7 @@
1000
1051
  "pagination",
1001
1052
  "select",
1002
1053
  "skeleton",
1054
+ "sortable",
1003
1055
  "toolbar"
1004
1056
  ],
1005
1057
  "packageDependencies": [
@@ -1187,7 +1239,9 @@
1187
1239
  "UI/Dialog/DialogTitle.razor",
1188
1240
  "UI/Dialog/DialogTrigger.razor"
1189
1241
  ],
1190
- "dependencies": [],
1242
+ "dependencies": [
1243
+ "button"
1244
+ ],
1191
1245
  "packageDependencies": [
1192
1246
  "Blazicons.Lucide"
1193
1247
  ],
@@ -1196,6 +1250,7 @@
1196
1250
  "--color-border",
1197
1251
  "--color-muted",
1198
1252
  "--color-muted-foreground",
1253
+ "--color-ring",
1199
1254
  "--radius"
1200
1255
  ],
1201
1256
  "registryUrl": "https://lumeo.nativ.sh/registry/dialog.json"
@@ -1624,6 +1679,7 @@
1624
1679
  "cssVars": [
1625
1680
  "--color-muted",
1626
1681
  "--color-muted-foreground",
1682
+ "--color-ring",
1627
1683
  "--radius"
1628
1684
  ],
1629
1685
  "registryUrl": "https://lumeo.nativ.sh/registry/image.json"
@@ -1866,6 +1922,25 @@
1866
1922
  ],
1867
1923
  "registryUrl": "https://lumeo.nativ.sh/registry/list.json"
1868
1924
  },
1925
+ "map": {
1926
+ "name": "Map",
1927
+ "category": "Data Display",
1928
+ "subcategory": null,
1929
+ "description": "Interactive geographic map with declarative markers — Leaflet wrapper, open-source tiles, no API key required.",
1930
+ "thumbnail": "/preview-cards/map.png",
1931
+ "hasDocsPage": true,
1932
+ "nugetPackage": "Lumeo.Maps",
1933
+ "files": [
1934
+ "UI/Map/Map.razor",
1935
+ "UI/Map/MapMarker.razor"
1936
+ ],
1937
+ "dependencies": [],
1938
+ "packageDependencies": [],
1939
+ "cssVars": [
1940
+ "--color-foreground"
1941
+ ],
1942
+ "registryUrl": "https://lumeo.nativ.sh/registry/map.json"
1943
+ },
1869
1944
  "marquee": {
1870
1945
  "name": "Marquee",
1871
1946
  "category": "Motion",
@@ -2169,6 +2244,39 @@
2169
2244
  ],
2170
2245
  "registryUrl": "https://lumeo.nativ.sh/registry/password-input.json"
2171
2246
  },
2247
+ "pdf-viewer": {
2248
+ "name": "PdfViewer",
2249
+ "category": "Data Display",
2250
+ "subcategory": null,
2251
+ "description": "Inline PDF document viewer powered by pdf.js — page navigation, zoom controls, optional text search, and download.",
2252
+ "thumbnail": "/preview-cards/pdf-viewer.png",
2253
+ "hasDocsPage": true,
2254
+ "nugetPackage": "Lumeo.PdfViewer",
2255
+ "files": [
2256
+ "UI/PdfViewer/PdfViewer.razor"
2257
+ ],
2258
+ "dependencies": [
2259
+ "empty-state",
2260
+ "icon",
2261
+ "spinner"
2262
+ ],
2263
+ "packageDependencies": [
2264
+ "Blazicons.Lucide"
2265
+ ],
2266
+ "cssVars": [
2267
+ "--color-accent",
2268
+ "--color-accent-foreground",
2269
+ "--color-background",
2270
+ "--color-border",
2271
+ "--color-card",
2272
+ "--color-foreground",
2273
+ "--color-muted",
2274
+ "--color-muted-foreground",
2275
+ "--color-ring",
2276
+ "--radius"
2277
+ ],
2278
+ "registryUrl": "https://lumeo.nativ.sh/registry/pdf-viewer.json"
2279
+ },
2172
2280
  "pick-list": {
2173
2281
  "name": "PickList",
2174
2282
  "category": "Dashboard",
@@ -2803,6 +2911,7 @@
2803
2911
  "--color-foreground",
2804
2912
  "--color-muted",
2805
2913
  "--color-muted-foreground",
2914
+ "--color-ring",
2806
2915
  "--radius"
2807
2916
  ],
2808
2917
  "registryUrl": "https://lumeo.nativ.sh/registry/sheet.json"
@@ -2874,6 +2983,33 @@
2874
2983
  ],
2875
2984
  "registryUrl": "https://lumeo.nativ.sh/registry/sidebar.json"
2876
2985
  },
2986
+ "signature-pad": {
2987
+ "name": "SignaturePad",
2988
+ "category": "Utility",
2989
+ "subcategory": null,
2990
+ "description": "Signature Pad component.",
2991
+ "thumbnail": "/preview-cards/signature-pad.png",
2992
+ "hasDocsPage": true,
2993
+ "nugetPackage": "Lumeo",
2994
+ "files": [
2995
+ "UI/SignaturePad/SignaturePad.razor"
2996
+ ],
2997
+ "dependencies": [
2998
+ "button",
2999
+ "flex"
3000
+ ],
3001
+ "packageDependencies": [
3002
+ "Blazicons.Lucide"
3003
+ ],
3004
+ "cssVars": [
3005
+ "--color-border",
3006
+ "--color-card",
3007
+ "--color-muted",
3008
+ "--color-muted-foreground",
3009
+ "--radius"
3010
+ ],
3011
+ "registryUrl": "https://lumeo.nativ.sh/registry/signature-pad.json"
3012
+ },
2877
3013
  "skeleton": {
2878
3014
  "name": "Skeleton",
2879
3015
  "category": "Feedback",