@trimble-oss/moduswebcomponents-mcp 1.0.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.
Files changed (108) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +337 -0
  3. package/package.json +39 -0
  4. package/versions/1.0.0/component-docs/_all_components.json +56 -0
  5. package/versions/1.0.0/component-docs/modus-wc-autocomplete.json +415 -0
  6. package/versions/1.0.0/component-docs/modus-wc-date.json +227 -0
  7. package/versions/1.0.0/component-docs/modus-wc-dropdown-menu.json +164 -0
  8. package/versions/1.0.0/component-docs/modus-wc-logo.json +61 -0
  9. package/versions/1.0.0/component-docs/modus-wc-menu-item.json +165 -0
  10. package/versions/1.0.0/component-docs/modus-wc-menu.json +106 -0
  11. package/versions/1.0.0/component-docs/modus-wc-navbar.json +290 -0
  12. package/versions/1.0.0/component-docs/modus-wc-profile-menu.json +64 -0
  13. package/versions/1.0.0/component-docs/modus-wc-side-navigation.json +102 -0
  14. package/versions/1.0.0/component-docs/modus-wc-table.json +202 -0
  15. package/versions/1.0.0/component-docs/modus-wc-tooltip.json +94 -0
  16. package/versions/1.0.0/component-docs/modus-wc-typography.json +78 -0
  17. package/versions/1.0.0/docs/_all_docs.json +15 -0
  18. package/versions/1.0.0/docs/angular.mdx +374 -0
  19. package/versions/1.0.0/docs/getting-started.mdx +131 -0
  20. package/versions/1.0.7/component-docs/_all_components.json +55 -0
  21. package/versions/1.0.7/component-docs/modus-wc-autocomplete.json +405 -0
  22. package/versions/1.0.7/component-docs/modus-wc-table.json +202 -0
  23. package/versions/1.0.7/component-docs/modus-wc-tooltip.json +94 -0
  24. package/versions/1.0.7/docs/_all_docs.json +15 -0
  25. package/versions/1.0.7/docs/angular.mdx +374 -0
  26. package/versions/1.1.0/component-docs/_all_components.json +56 -0
  27. package/versions/1.1.0/component-docs/modus-wc-autocomplete.json +405 -0
  28. package/versions/1.1.0/component-docs/modus-wc-navbar.json +290 -0
  29. package/versions/1.1.0/component-docs/modus-wc-profile-menu.json +64 -0
  30. package/versions/1.1.0/component-docs/modus-wc-side-navigation.json +102 -0
  31. package/versions/1.1.0/component-docs/modus-wc-table.json +202 -0
  32. package/versions/1.1.0/component-docs/modus-wc-tooltip.json +94 -0
  33. package/versions/1.1.0/component-docs/modus-wc-typography.json +78 -0
  34. package/versions/1.1.0/docs/_all_docs.json +15 -0
  35. package/versions/1.1.0/docs/angular.mdx +374 -0
  36. package/versions/1.1.0/docs/getting-started.mdx +131 -0
  37. package/versions/1.1.1/component-docs/_all_components.json +56 -0
  38. package/versions/1.1.1/component-docs/modus-wc-autocomplete.json +405 -0
  39. package/versions/1.1.1/component-docs/modus-wc-navbar.json +290 -0
  40. package/versions/1.1.1/component-docs/modus-wc-profile-menu.json +64 -0
  41. package/versions/1.1.1/component-docs/modus-wc-side-navigation.json +102 -0
  42. package/versions/1.1.1/component-docs/modus-wc-table.json +202 -0
  43. package/versions/1.1.1/component-docs/modus-wc-tooltip.json +94 -0
  44. package/versions/1.1.1/component-docs/modus-wc-typography.json +78 -0
  45. package/versions/1.1.1/docs/_all_docs.json +15 -0
  46. package/versions/1.1.1/docs/angular.mdx +374 -0
  47. package/versions/1.1.1/docs/getting-started.mdx +131 -0
  48. package/versions/base/component-docs/_all_components.json +55 -0
  49. package/versions/base/component-docs/modus-wc-accordion.json +48 -0
  50. package/versions/base/component-docs/modus-wc-alert.json +112 -0
  51. package/versions/base/component-docs/modus-wc-autocomplete.json +397 -0
  52. package/versions/base/component-docs/modus-wc-avatar.json +83 -0
  53. package/versions/base/component-docs/modus-wc-badge.json +68 -0
  54. package/versions/base/component-docs/modus-wc-breadcrumbs.json +63 -0
  55. package/versions/base/component-docs/modus-wc-button-group.json +100 -0
  56. package/versions/base/component-docs/modus-wc-button.json +130 -0
  57. package/versions/base/component-docs/modus-wc-card.json +98 -0
  58. package/versions/base/component-docs/modus-wc-checkbox.json +149 -0
  59. package/versions/base/component-docs/modus-wc-chip.json +132 -0
  60. package/versions/base/component-docs/modus-wc-collapse.json +90 -0
  61. package/versions/base/component-docs/modus-wc-date.json +227 -0
  62. package/versions/base/component-docs/modus-wc-divider.json +85 -0
  63. package/versions/base/component-docs/modus-wc-dropdown-menu.json +154 -0
  64. package/versions/base/component-docs/modus-wc-file-dropzone.json +155 -0
  65. package/versions/base/component-docs/modus-wc-handle.json +135 -0
  66. package/versions/base/component-docs/modus-wc-icon.json +722 -0
  67. package/versions/base/component-docs/modus-wc-input-feedback.json +71 -0
  68. package/versions/base/component-docs/modus-wc-input-label.json +84 -0
  69. package/versions/base/component-docs/modus-wc-loader.json +65 -0
  70. package/versions/base/component-docs/modus-wc-logo.json +61 -0
  71. package/versions/base/component-docs/modus-wc-menu-item.json +173 -0
  72. package/versions/base/component-docs/modus-wc-menu.json +86 -0
  73. package/versions/base/component-docs/modus-wc-modal.json +108 -0
  74. package/versions/base/component-docs/modus-wc-navbar.json +280 -0
  75. package/versions/base/component-docs/modus-wc-number-input.json +219 -0
  76. package/versions/base/component-docs/modus-wc-pagination.json +103 -0
  77. package/versions/base/component-docs/modus-wc-panel.json +76 -0
  78. package/versions/base/component-docs/modus-wc-progress.json +86 -0
  79. package/versions/base/component-docs/modus-wc-radio.json +139 -0
  80. package/versions/base/component-docs/modus-wc-rating.json +117 -0
  81. package/versions/base/component-docs/modus-wc-select.json +159 -0
  82. package/versions/base/component-docs/modus-wc-side-navigation.json +102 -0
  83. package/versions/base/component-docs/modus-wc-skeleton.json +65 -0
  84. package/versions/base/component-docs/modus-wc-slider.json +163 -0
  85. package/versions/base/component-docs/modus-wc-stepper.json +47 -0
  86. package/versions/base/component-docs/modus-wc-switch.json +149 -0
  87. package/versions/base/component-docs/modus-wc-table.json +202 -0
  88. package/versions/base/component-docs/modus-wc-tabs.json +86 -0
  89. package/versions/base/component-docs/modus-wc-text-input.json +278 -0
  90. package/versions/base/component-docs/modus-wc-textarea.json +215 -0
  91. package/versions/base/component-docs/modus-wc-theme-switcher.json +49 -0
  92. package/versions/base/component-docs/modus-wc-time-input.json +211 -0
  93. package/versions/base/component-docs/modus-wc-toast.json +56 -0
  94. package/versions/base/component-docs/modus-wc-toolbar.json +44 -0
  95. package/versions/base/component-docs/modus-wc-tooltip.json +94 -0
  96. package/versions/base/component-docs/modus-wc-typography.json +73 -0
  97. package/versions/base/component-docs/modus-wc-utility-panel.json +86 -0
  98. package/versions/base/docs/_all_docs.json +15 -0
  99. package/versions/base/docs/accessibility.mdx +32 -0
  100. package/versions/base/docs/angular.mdx +346 -0
  101. package/versions/base/docs/form-inputs.mdx +86 -0
  102. package/versions/base/docs/getting-started.mdx +91 -0
  103. package/versions/base/docs/modus-figma-mcp-integration-guide.mdx +254 -0
  104. package/versions/base/docs/modus-icon-usage.mdx +210 -0
  105. package/versions/base/docs/react.mdx +129 -0
  106. package/versions/base/docs/styling.mdx +107 -0
  107. package/versions/base/docs/testing.mdx +18 -0
  108. package/versions/base/docs/vue.mdx +159 -0
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,337 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { readFileSync, readdirSync, existsSync } from "fs";
5
+ import { join, dirname } from "path";
6
+ import { fileURLToPath } from "url";
7
+ import { z } from "zod";
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ const VERSIONS_DIR = join(__dirname, "..", "versions");
10
+ const BASE_DIR = join(VERSIONS_DIR, "base");
11
+ // To change the base version (e.g. when dropping support for older versions):
12
+ // 1. Replace mcp/versions/base/ with the new base version's full data
13
+ // 2. Update BASE_VERSION below
14
+ // 3. Delete version folders older than the new base
15
+ // 4. Recompute deltas for remaining versions (diff each against new base,
16
+ // keep only changed files + _all_components.json)
17
+ // 5. Update the minimum version in both tool description strings
18
+ // See mcp/scripts/backfill.sh for automation helpers.
19
+ const BASE_VERSION = "1.0.6";
20
+ const SAFE_NAME = /^[a-z0-9_-]+$/;
21
+ const SAFE_VERSION = /^\d+\.\d+\.\d+$/;
22
+ const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
23
+ // ---------------------------------------------------------------------------
24
+ // Version resolution helpers
25
+ // ---------------------------------------------------------------------------
26
+ function compareSemver(a, b) {
27
+ const pa = a.split(".").map(Number);
28
+ const pb = b.split(".").map(Number);
29
+ for (let i = 0; i < 3; i++) {
30
+ if ((pa[i] ?? 0) !== (pb[i] ?? 0))
31
+ return (pa[i] ?? 0) - (pb[i] ?? 0);
32
+ }
33
+ return 0;
34
+ }
35
+ function getAvailableVersions() {
36
+ if (!existsSync(VERSIONS_DIR))
37
+ return [];
38
+ const versions = readdirSync(VERSIONS_DIR)
39
+ .filter((d) => SAFE_VERSION.test(d))
40
+ .sort(compareSemver);
41
+ if (!versions.includes(BASE_VERSION) && existsSync(BASE_DIR)) {
42
+ versions.push(BASE_VERSION);
43
+ versions.sort(compareSemver);
44
+ }
45
+ return versions;
46
+ }
47
+ function getLatestVersion() {
48
+ const versions = getAvailableVersions();
49
+ return versions[versions.length - 1];
50
+ }
51
+ function resolveVersion(requested) {
52
+ if (!SAFE_VERSION.test(requested))
53
+ return undefined;
54
+ const available = getAvailableVersions();
55
+ if (available.includes(requested)) {
56
+ return { resolved: requested, exact: true };
57
+ }
58
+ // Auto-fallback: try the MINOR baseline (X.Y.0)
59
+ const parts = requested.split(".");
60
+ const minorBase = `${parts[0]}.${parts[1]}.0`;
61
+ if (minorBase !== requested && available.includes(minorBase)) {
62
+ return { resolved: minorBase, exact: false };
63
+ }
64
+ return undefined;
65
+ }
66
+ // ---------------------------------------------------------------------------
67
+ // Delta-based doc helpers (version folder -> base fallback)
68
+ // ---------------------------------------------------------------------------
69
+ function findDoc(name, version) {
70
+ if (!SAFE_NAME.test(name))
71
+ return undefined;
72
+ // Gatekeeper: if this doc is not in the version's docs catalog, do not fall
73
+ // back to base (prevents serving removed docs from older base data).
74
+ const docsCatalog = getDocsCatalog(version);
75
+ if (docsCatalog && !docsCatalog.docs.includes(name))
76
+ return undefined;
77
+ if (version !== BASE_VERSION) {
78
+ const versionPath = join(VERSIONS_DIR, version, "docs", `${name}.mdx`);
79
+ if (existsSync(versionPath))
80
+ return versionPath;
81
+ }
82
+ const basePath = join(BASE_DIR, "docs", `${name}.mdx`);
83
+ if (existsSync(basePath))
84
+ return basePath;
85
+ return undefined;
86
+ }
87
+ function listAvailableDocs(version) {
88
+ const docsCatalog = getDocsCatalog(version);
89
+ if (docsCatalog)
90
+ return docsCatalog.docs;
91
+ // Fallback for robustness if _all_docs.json is missing.
92
+ const docs = new Set();
93
+ const baseDocsDir = join(BASE_DIR, "docs");
94
+ if (existsSync(baseDocsDir)) {
95
+ for (const f of readdirSync(baseDocsDir)) {
96
+ if (f.endsWith(".mdx"))
97
+ docs.add(f.replace(".mdx", ""));
98
+ }
99
+ }
100
+ if (version !== BASE_VERSION) {
101
+ const versionDocsDir = join(VERSIONS_DIR, version, "docs");
102
+ if (existsSync(versionDocsDir)) {
103
+ for (const f of readdirSync(versionDocsDir)) {
104
+ if (f.endsWith(".mdx"))
105
+ docs.add(f.replace(".mdx", ""));
106
+ }
107
+ }
108
+ }
109
+ return [...docs];
110
+ }
111
+ function getDocsCatalog(version) {
112
+ const docsCatalogPath = version === BASE_VERSION
113
+ ? join(BASE_DIR, "docs", "_all_docs.json")
114
+ : join(VERSIONS_DIR, version, "docs", "_all_docs.json");
115
+ if (!existsSync(docsCatalogPath))
116
+ return null;
117
+ return JSON.parse(readFileSync(docsCatalogPath, "utf-8"));
118
+ }
119
+ function getCatalog(version) {
120
+ const catalogPath = version === BASE_VERSION
121
+ ? join(BASE_DIR, "component-docs", "_all_components.json")
122
+ : join(VERSIONS_DIR, version, "component-docs", "_all_components.json");
123
+ if (!existsSync(catalogPath))
124
+ return null;
125
+ return JSON.parse(readFileSync(catalogPath, "utf-8"));
126
+ }
127
+ function findComponentDoc(componentName, version) {
128
+ if (componentName === "_all_components") {
129
+ if (version !== BASE_VERSION) {
130
+ const versionPath = join(VERSIONS_DIR, version, "component-docs", "_all_components.json");
131
+ if (existsSync(versionPath))
132
+ return versionPath;
133
+ }
134
+ const basePath = join(BASE_DIR, "component-docs", "_all_components.json");
135
+ if (existsSync(basePath))
136
+ return basePath;
137
+ return null;
138
+ }
139
+ // Gatekeeper: only return data if the component exists in this version's catalog
140
+ const catalog = getCatalog(version);
141
+ if (catalog && !catalog.components.includes(componentName))
142
+ return null;
143
+ if (version !== BASE_VERSION) {
144
+ const versionPath = join(VERSIONS_DIR, version, "component-docs", `${componentName}.json`);
145
+ if (existsSync(versionPath))
146
+ return versionPath;
147
+ }
148
+ const basePath = join(BASE_DIR, "component-docs", `${componentName}.json`);
149
+ if (existsSync(basePath))
150
+ return basePath;
151
+ return null;
152
+ }
153
+ // ---------------------------------------------------------------------------
154
+ // Shared version resolution logic for tool handlers
155
+ // ---------------------------------------------------------------------------
156
+ function resolveVersionOrError(requestedVersion) {
157
+ const available = getAvailableVersions();
158
+ if (!requestedVersion) {
159
+ const latest = getLatestVersion();
160
+ if (!latest) {
161
+ return {
162
+ error: "No versioned documentation is available yet.",
163
+ available_versions: [],
164
+ };
165
+ }
166
+ return { version: latest };
167
+ }
168
+ const result = resolveVersion(requestedVersion);
169
+ if (!result) {
170
+ return {
171
+ error: `Version '${requestedVersion}' is not available. Minimum supported version is ${available[0] ?? "unknown"}.`,
172
+ available_versions: available,
173
+ };
174
+ }
175
+ const warning = result.exact
176
+ ? undefined
177
+ : `Exact version '${requestedVersion}' not found; using '${result.resolved}' (nearest MINOR baseline).`;
178
+ return { version: result.resolved, warning };
179
+ }
180
+ // ---------------------------------------------------------------------------
181
+ // MCP server
182
+ // ---------------------------------------------------------------------------
183
+ const server = new McpServer({
184
+ name: "Modus Docs MCP Server",
185
+ version: pkg.version,
186
+ });
187
+ // ---------------------------------------------------------------------------
188
+ // Tool: get_modus_implementation_data
189
+ // ---------------------------------------------------------------------------
190
+ server.tool("get_modus_implementation_data", `Looks up and parses documentation from the Modus Web Components documentation repository.
191
+
192
+ Retrieves framework integration guides, getting started guides, and general documentation.
193
+
194
+ IMPORTANT: Before calling this tool, check the user's project package.json for the
195
+ @trimble-oss/moduswebcomponents dependency version. Pass that version as the 'version'
196
+ parameter to receive documentation matching their installed version. If their version is
197
+ below 1.0.6 (minimum supported), advise them to update their dependency.
198
+
199
+ Available documents:
200
+ - Framework Integration: "angular", "react", "vue"
201
+ - Guides: "getting-started", "accessibility", "form-inputs", "modus-icon-usage", "styling", "testing"`, {
202
+ docs_name: z.string().describe("The name of the document to retrieve (without .mdx extension). Examples: 'angular', 'react', 'vue', 'getting-started'"),
203
+ version: z.string().optional().describe("The version of @trimble-oss/moduswebcomponents installed in the user's project (e.g. '1.1.1'). " +
204
+ "Check the user's package.json before calling. Defaults to the latest available version."),
205
+ }, ({ docs_name, version }) => {
206
+ const versionResult = resolveVersionOrError(version);
207
+ if ("error" in versionResult) {
208
+ return {
209
+ content: [
210
+ {
211
+ type: "text",
212
+ text: JSON.stringify(versionResult, null, 2),
213
+ },
214
+ ],
215
+ };
216
+ }
217
+ const { version: resolvedVersion, warning } = versionResult;
218
+ const docPath = findDoc(docs_name, resolvedVersion);
219
+ if (!docPath) {
220
+ return {
221
+ content: [
222
+ {
223
+ type: "text",
224
+ text: JSON.stringify({
225
+ error: `Document '${docs_name}' not found in version ${resolvedVersion}`,
226
+ available_documents: listAvailableDocs(resolvedVersion),
227
+ requested: docs_name,
228
+ version: resolvedVersion,
229
+ ...(warning ? { warning } : {}),
230
+ }, null, 2),
231
+ },
232
+ ],
233
+ };
234
+ }
235
+ const content = readFileSync(docPath, "utf-8");
236
+ return {
237
+ content: [
238
+ {
239
+ type: "text",
240
+ text: JSON.stringify({
241
+ document_name: docs_name,
242
+ content,
243
+ type: "implementation_guide",
244
+ format: "mdx",
245
+ version: resolvedVersion,
246
+ ...(warning ? { warning } : {}),
247
+ }, null, 2),
248
+ },
249
+ ],
250
+ };
251
+ });
252
+ // ---------------------------------------------------------------------------
253
+ // Tool: get_modus_component_data
254
+ // ---------------------------------------------------------------------------
255
+ server.tool("get_modus_component_data", `Looks up and parses component documentation for Modus Web Components.
256
+
257
+ Retrieves component properties, events, methods, slots, usage examples, and story documentation.
258
+
259
+ IMPORTANT: Before calling this tool, check the user's project package.json for the
260
+ @trimble-oss/moduswebcomponents dependency version. Pass that version as the 'version'
261
+ parameter to receive documentation matching their installed version. If their version is
262
+ below 1.0.6 (minimum supported), advise them to update their dependency.
263
+
264
+ Special component names:
265
+ - "_all_components" - Returns catalog of all available components
266
+
267
+ Component naming format: "modus-wc-{component-name}"
268
+ Examples: "modus-wc-table", "modus-wc-button", "modus-wc-alert"`, {
269
+ component_name: z.string().describe("The name of the Modus component (e.g., 'modus-wc-table') or '_all_components' for the full catalog"),
270
+ version: z.string().optional().describe("The version of @trimble-oss/moduswebcomponents installed in the user's project (e.g. '1.1.1'). " +
271
+ "Check the user's package.json before calling. Defaults to the latest available version."),
272
+ }, ({ component_name, version }) => {
273
+ if (!SAFE_NAME.test(component_name)) {
274
+ return {
275
+ content: [{ type: "text", text: JSON.stringify({ error: "Invalid component name" }, null, 2) }],
276
+ };
277
+ }
278
+ const versionResult = resolveVersionOrError(version);
279
+ if ("error" in versionResult) {
280
+ return {
281
+ content: [
282
+ {
283
+ type: "text",
284
+ text: JSON.stringify(versionResult, null, 2),
285
+ },
286
+ ],
287
+ };
288
+ }
289
+ const { version: resolvedVersion, warning } = versionResult;
290
+ const docPath = findComponentDoc(component_name, resolvedVersion);
291
+ if (!docPath) {
292
+ const catalog = getCatalog(resolvedVersion);
293
+ const available = catalog?.components ?? [];
294
+ return {
295
+ content: [
296
+ {
297
+ type: "text",
298
+ text: JSON.stringify({
299
+ error: `Component '${component_name}' not found in version ${resolvedVersion}`,
300
+ available_components: available,
301
+ requested: component_name,
302
+ version: resolvedVersion,
303
+ ...(warning ? { warning } : {}),
304
+ }, null, 2),
305
+ },
306
+ ],
307
+ };
308
+ }
309
+ const content = JSON.parse(readFileSync(docPath, "utf-8"));
310
+ return {
311
+ content: [
312
+ {
313
+ type: "text",
314
+ text: JSON.stringify({
315
+ component_name,
316
+ data: content,
317
+ type: "component_documentation",
318
+ format: "json",
319
+ version: resolvedVersion,
320
+ ...(warning ? { warning } : {}),
321
+ }, null, 2),
322
+ },
323
+ ],
324
+ };
325
+ });
326
+ // ---------------------------------------------------------------------------
327
+ // Entry point
328
+ // ---------------------------------------------------------------------------
329
+ async function main() {
330
+ const transport = new StdioServerTransport();
331
+ await server.connect(transport);
332
+ process.stderr.write("Modus Docs MCP Server running on stdio\n");
333
+ }
334
+ main().catch((err) => {
335
+ process.stderr.write(`Fatal error: ${err}\n`);
336
+ process.exit(1);
337
+ });
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@trimble-oss/moduswebcomponents-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for Modus Web Components documentation",
5
+ "type": "module",
6
+ "bin": {
7
+ "moduswebcomponents-mcp": "./dist/index.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "files": [
11
+ "dist",
12
+ "versions"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "dev": "tsc --watch",
17
+ "extract-docs": "tsx scripts/extract-docs.ts",
18
+ "start": "node dist/index.js"
19
+ },
20
+ "dependencies": {
21
+ "@modelcontextprotocol/sdk": "^1.10.2"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^25.5.0",
25
+ "tsx": "^4.21.0",
26
+ "typescript": "^5.0.0"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
31
+ "keywords": [
32
+ "mcp",
33
+ "modus",
34
+ "trimble",
35
+ "web-components",
36
+ "documentation"
37
+ ],
38
+ "license": "MIT"
39
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "total": 50,
3
+ "components": [
4
+ "modus-wc-accordion",
5
+ "modus-wc-alert",
6
+ "modus-wc-autocomplete",
7
+ "modus-wc-avatar",
8
+ "modus-wc-badge",
9
+ "modus-wc-breadcrumbs",
10
+ "modus-wc-button",
11
+ "modus-wc-button-group",
12
+ "modus-wc-card",
13
+ "modus-wc-checkbox",
14
+ "modus-wc-chip",
15
+ "modus-wc-collapse",
16
+ "modus-wc-date",
17
+ "modus-wc-divider",
18
+ "modus-wc-dropdown-menu",
19
+ "modus-wc-file-dropzone",
20
+ "modus-wc-handle",
21
+ "modus-wc-icon",
22
+ "modus-wc-input-feedback",
23
+ "modus-wc-input-label",
24
+ "modus-wc-loader",
25
+ "modus-wc-logo",
26
+ "modus-wc-menu",
27
+ "modus-wc-menu-item",
28
+ "modus-wc-modal",
29
+ "modus-wc-navbar",
30
+ "modus-wc-number-input",
31
+ "modus-wc-pagination",
32
+ "modus-wc-panel",
33
+ "modus-wc-profile-menu",
34
+ "modus-wc-progress",
35
+ "modus-wc-radio",
36
+ "modus-wc-rating",
37
+ "modus-wc-select",
38
+ "modus-wc-side-navigation",
39
+ "modus-wc-skeleton",
40
+ "modus-wc-slider",
41
+ "modus-wc-stepper",
42
+ "modus-wc-switch",
43
+ "modus-wc-table",
44
+ "modus-wc-tabs",
45
+ "modus-wc-text-input",
46
+ "modus-wc-textarea",
47
+ "modus-wc-theme-switcher",
48
+ "modus-wc-time-input",
49
+ "modus-wc-toast",
50
+ "modus-wc-toolbar",
51
+ "modus-wc-tooltip",
52
+ "modus-wc-typography",
53
+ "modus-wc-utility-panel"
54
+ ],
55
+ "last_updated": "1774600205.807"
56
+ }