@smwb/ui-mcp-solid 0.2.2 → 0.3.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 (120) hide show
  1. package/README.md +13 -1
  2. package/component-meta/base/animateHeight/animateHeight.json +4 -0
  3. package/component-meta/base/icon/icon.json +4 -0
  4. package/component-meta/base/ripple/ripple.json +4 -0
  5. package/component-meta/clickAwayListener/clickAwayListener.json +4 -0
  6. package/component-meta/dataDisplay/accordion/accordion.json +4 -0
  7. package/component-meta/dataDisplay/avatar/avatar.avatarGroup.json +4 -0
  8. package/component-meta/dataDisplay/avatar/avatar.json +4 -0
  9. package/component-meta/dataDisplay/badge/badge.json +4 -0
  10. package/component-meta/dataDisplay/card/card.json +4 -0
  11. package/component-meta/dataDisplay/carousel/carousel.json +5 -0
  12. package/component-meta/dataDisplay/chat/chat.json +4 -0
  13. package/component-meta/dataDisplay/chat/chatAttachmentImage.json +5 -0
  14. package/component-meta/dataDisplay/chat/chatAttachments.json +4 -0
  15. package/component-meta/dataDisplay/chat/chatComposer.json +4 -0
  16. package/component-meta/dataDisplay/chat/chatHeader.json +4 -0
  17. package/component-meta/dataDisplay/chat/chatIconButton.json +4 -0
  18. package/component-meta/dataDisplay/chat/chatLayout.chatLayoutChat.json +4 -0
  19. package/component-meta/dataDisplay/chat/chatLayout.json +4 -0
  20. package/component-meta/dataDisplay/chat/chatMessageAvatar.json +4 -0
  21. package/component-meta/dataDisplay/chat/chatMessageBubble.json +4 -0
  22. package/component-meta/dataDisplay/chat/chatMessageIncoming.json +4 -0
  23. package/component-meta/dataDisplay/chat/chatMessageItem.json +4 -0
  24. package/component-meta/dataDisplay/chat/chatMessageOutgoing.json +4 -0
  25. package/component-meta/dataDisplay/chat/chatMessageSkeleton.json +4 -0
  26. package/component-meta/dataDisplay/chat/chatMessageStatus.json +4 -0
  27. package/component-meta/dataDisplay/chat/chatMessageSystem.json +4 -0
  28. package/component-meta/dataDisplay/chat/chatMessages.json +4 -0
  29. package/component-meta/dataDisplay/chat/chatOverlayLayout.chatOverlayLayoutChat.json +4 -0
  30. package/component-meta/dataDisplay/chat/chatOverlayLayout.json +4 -0
  31. package/component-meta/dataDisplay/chat/chatShell.json +5 -0
  32. package/component-meta/dataDisplay/chip/chip.json +4 -0
  33. package/component-meta/dataDisplay/expansionPanel/expansionPanel.json +5 -0
  34. package/component-meta/dataDisplay/imagesList/imagesList.json +4 -0
  35. package/component-meta/dataDisplay/imagesList/imagesListItem/imagesListItem.json +5 -0
  36. package/component-meta/dataDisplay/imagesList/imagesListItem/imagesListItemModal.json +5 -0
  37. package/component-meta/dataDisplay/list/list.json +4 -0
  38. package/component-meta/dataDisplay/list/listItem.json +4 -0
  39. package/component-meta/dataDisplay/table/table.json +4 -0
  40. package/component-meta/dataDisplay/table/tableBody.json +4 -0
  41. package/component-meta/dataDisplay/table/tableCell.json +4 -0
  42. package/component-meta/dataDisplay/table/tableHead.json +4 -0
  43. package/component-meta/dataDisplay/table/tableHeadCell.json +4 -0
  44. package/component-meta/dataDisplay/table/tablePagination/tablePagination.baseTablePagination.json +4 -0
  45. package/component-meta/dataDisplay/table/tablePagination/tablePagination.json +4 -0
  46. package/component-meta/dataDisplay/table/tableRow.json +4 -0
  47. package/component-meta/dataDisplay/treeView/treeView.json +4 -0
  48. package/component-meta/dataDisplay/typography/typography.json +4 -0
  49. package/component-meta/feedBack/message/message.json +4 -0
  50. package/component-meta/feedBack/modal/modal.json +5 -0
  51. package/component-meta/feedBack/modal/modal.modalSlot.json +4 -0
  52. package/component-meta/feedBack/progressIndicator/progressIndicator.circularProgress.json +4 -0
  53. package/component-meta/feedBack/progressIndicator/progressIndicator.json +4 -0
  54. package/component-meta/feedBack/skeleton/skeleton.json +4 -0
  55. package/component-meta/feedBack/snackbar/snackbar.json +5 -0
  56. package/component-meta/feedBack/snackbar/snackbar.snackbarsProvider.json +4 -0
  57. package/component-meta/feedBack/tooltip/tooltip.json +5 -0
  58. package/component-meta/inputs/button/button.json +4 -0
  59. package/component-meta/inputs/buttonGroups/buttonGroup.json +4 -0
  60. package/component-meta/inputs/checkbox/checkbox.json +4 -0
  61. package/component-meta/inputs/datePicker/dataPickerDays.json +4 -0
  62. package/component-meta/inputs/datePicker/dataPickerHeader.json +4 -0
  63. package/component-meta/inputs/datePicker/dataPickerInput.json +4 -0
  64. package/component-meta/inputs/datePicker/datePicker.json +5 -0
  65. package/component-meta/inputs/datePicker/datePickerActionLabel.json +4 -0
  66. package/component-meta/inputs/datePicker/datePickerDay.json +4 -0
  67. package/component-meta/inputs/datePicker/datePickerIconButton.json +4 -0
  68. package/component-meta/inputs/datePicker/datePickerList.json +4 -0
  69. package/component-meta/inputs/dateTimePicker/dateTimePicker.json +5 -0
  70. package/component-meta/inputs/dateTimePicker/dateTimePickerInput.json +4 -0
  71. package/component-meta/inputs/fileDrop/countPreview.json +4 -0
  72. package/component-meta/inputs/fileDrop/fileDrop.json +4 -0
  73. package/component-meta/inputs/fileDrop/preview.json +4 -0
  74. package/component-meta/inputs/fileDrop/previewWrapper.json +4 -0
  75. package/component-meta/inputs/fileInput/fileInput.json +4 -0
  76. package/component-meta/inputs/floatingButton/floatingButton.json +4 -0
  77. package/component-meta/inputs/radioButton/radioButton.json +4 -0
  78. package/component-meta/inputs/rating/rating.json +4 -0
  79. package/component-meta/inputs/selectField/dropdownMenu.json +4 -0
  80. package/component-meta/inputs/selectField/selectField.json +5 -0
  81. package/component-meta/inputs/slider/slider.json +4 -0
  82. package/component-meta/inputs/textField/textField.json +4 -0
  83. package/component-meta/inputs/textField/textFieldAdornment.json +4 -0
  84. package/component-meta/inputs/textField/textFieldWrapper.json +4 -0
  85. package/component-meta/inputs/timePicker/timePicker.json +5 -0
  86. package/component-meta/inputs/timePicker/timePickerColumns.json +4 -0
  87. package/component-meta/inputs/timePicker/timePickerInput.json +4 -0
  88. package/component-meta/inputs/timePicker/timePickerList.json +4 -0
  89. package/component-meta/inputs/toggle/toggle.json +4 -0
  90. package/component-meta/layout/appLayout/appLayout.json +4 -0
  91. package/component-meta/layout/divider/divider.json +4 -0
  92. package/component-meta/layout/grid/grid.column.json +4 -0
  93. package/component-meta/layout/grid/grid.container.json +4 -0
  94. package/component-meta/layout/grid/grid.row.json +4 -0
  95. package/component-meta/layout/page/page.json +4 -0
  96. package/component-meta/layout/pageHeader/pageHeader.json +4 -0
  97. package/component-meta/layout/screenDivider/screenDivider.json +4 -0
  98. package/component-meta/layout/sheet/sheet.json +5 -0
  99. package/component-meta/layout/stack/stack.json +4 -0
  100. package/component-meta/navigation/appBar/appBar.json +4 -0
  101. package/component-meta/navigation/bottomBar/bottomBar.bottomBarMenuItem.json +4 -0
  102. package/component-meta/navigation/bottomBar/bottomBar.json +4 -0
  103. package/component-meta/navigation/breadcrumbs/breadcrumbs.json +4 -0
  104. package/component-meta/navigation/menu/menu.json +5 -0
  105. package/component-meta/navigation/menu/menuDivider.json +4 -0
  106. package/component-meta/navigation/menu/menuFloating.json +5 -0
  107. package/component-meta/navigation/menu/menuItem.json +4 -0
  108. package/component-meta/navigation/menu/menuItemIcon.json +4 -0
  109. package/component-meta/navigation/menu/menuItemText.json +4 -0
  110. package/component-meta/navigation/menu/menuList.json +4 -0
  111. package/component-meta/navigation/menu/menuSubmenu.json +4 -0
  112. package/component-meta/navigation/pagination/pagination.json +4 -0
  113. package/component-meta/navigation/sidebar/sidebar.json +4 -0
  114. package/component-meta/navigation/sidebar/sidebar.sidebarMenuItem.json +4 -0
  115. package/component-meta/navigation/stepper/stepper.json +4 -0
  116. package/component-meta/navigation/tabs/tab/tab.json +4 -0
  117. package/component-meta/navigation/tabs/tabs.json +4 -0
  118. package/componentMeta.mjs +4 -0
  119. package/package.json +2 -2
  120. package/server.mjs +3 -3
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "MenuFloating",
3
3
  "description": "Floating positioned surface used by menus and popovers.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "client",
7
+ "note": "Floating surface portaled on the client; nothing is emitted during SSR."
8
+ },
4
9
  "extends": [
5
10
  "JSX.HTMLAttributes<HTMLDivElement>"
6
11
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "MenuItem",
3
3
  "description": "Interactive item inside a menu list.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "JSX.HTMLAttributes<HTMLLIElement>"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "MenuItemIcon",
3
3
  "description": "Leading icon slot for a menu item.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "JSX.HTMLAttributes<HTMLSpanElement>"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "MenuItemText",
3
3
  "description": "Primary text slot for a menu item.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "JSX.HTMLAttributes<HTMLSpanElement>"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "MenuList",
3
3
  "description": "List container inside a menu.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "JSX.HTMLAttributes<HTMLDivElement>"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "MenuSubmenu",
3
3
  "description": "Nested submenu with hover or click activation.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "styles": {
5
9
  "base": [
6
10
  "@smwb/ui-styles/less/foundation.less",
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "Pagination",
3
3
  "description": "Page navigation control with previous and next actions.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "Omit<JSX.HTMLAttributes<HTMLElement>, \"onChange\">"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "Sidebar",
3
3
  "description": "Vertical navigation sidebar with collapsible sections.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "JSX.HTMLAttributes<HTMLElement>"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "SidebarMenuItem",
3
3
  "description": "Sidebar Menu Item component from the navigation module.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "Omit<JSX.HTMLAttributes<HTMLDivElement>, \"title\">"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "Stepper",
3
3
  "description": "Multi-step progress indicator with optional navigation.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "JSX.HTMLAttributes<HTMLDivElement>"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "Tab",
3
3
  "description": "Single selectable tab trigger.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "extends": [
5
9
  "JSX.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>"
6
10
  ],
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "Tabs",
3
3
  "description": "Tab list container controlling associated panels.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
4
8
  "styles": {
5
9
  "base": [
6
10
  "@smwb/ui-styles/less/foundation.less",
package/componentMeta.mjs CHANGED
@@ -306,6 +306,7 @@ export function parseComponentMetaFile(absolutePath, relativePath) {
306
306
  id,
307
307
  name: parsed.name,
308
308
  description: parsed.description ?? "",
309
+ ssr: parsed.ssr,
309
310
  extends: parsed.extends,
310
311
  inheritedAttributes: parsed.inheritedAttributes,
311
312
  styles: parsed.styles,
@@ -349,6 +350,7 @@ export function searchComponents(catalog, query, limit = 10) {
349
350
  id: entry.id,
350
351
  name: entry.name,
351
352
  description: entry.description,
353
+ ssr: entry.ssr,
352
354
  propCount: entry.propNames.length,
353
355
  }));
354
356
  }
@@ -373,6 +375,7 @@ export function searchComponents(catalog, query, limit = 10) {
373
375
  id: entry.id,
374
376
  name: entry.name,
375
377
  description: entry.description,
378
+ ssr: entry.ssr,
376
379
  propCount: entry.propNames.length,
377
380
  score,
378
381
  matchReasons: reasons,
@@ -413,6 +416,7 @@ export function getComponentProps(catalog, nameOrId) {
413
416
  id: entry.id,
414
417
  name: entry.name,
415
418
  description: entry.description,
419
+ ssr: entry.ssr,
416
420
  extends: entry.extends,
417
421
  inheritedAttributes: entry.inheritedAttributes,
418
422
  styles: entry.styles,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smwb/ui-mcp-solid",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "Model Context Protocol server exposing the @smwb/ui-solid (SolidJS) component catalog and customization guide.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -28,7 +28,7 @@
28
28
  "zod": "^4.4.3"
29
29
  },
30
30
  "devDependencies": {
31
- "@smwb/ui-solid": "^0.2.2",
31
+ "@smwb/ui-solid": "^0.3.0",
32
32
  "@smwb/ui-styles": "^1.0.3",
33
33
  "glob": "^13.0.6",
34
34
  "typescript": "^6.0.3",
package/server.mjs CHANGED
@@ -20,7 +20,7 @@ const server = new McpServer(
20
20
  },
21
21
  {
22
22
  instructions:
23
- "@smwb/ui-solid component catalog and customization guide. Use search_components / get_component_props for API metadata, and search_customization / get_customization for theming and appearance options.",
23
+ "@smwb/ui-solid component catalog and customization guide. Use search_components / get_component_props for API metadata, and search_customization / get_customization for theming and appearance options. Every component exposes an `ssr` field: `safe` (always true — nothing throws during renderToString), `rendering` (\"universal\" = emits static HTML on the server and hydrates; \"client\" = a pure overlay that renders nothing server-side and mounts via a portal after hydration), and an optional `note`.",
24
24
  }
25
25
  );
26
26
 
@@ -29,7 +29,7 @@ server.registerTool(
29
29
  {
30
30
  title: "Search @smwb/ui-solid components",
31
31
  description:
32
- "Search the @smwb/ui-solid component catalog by exact, partial, fuzzy, or multi-word queries across names, ids, descriptions, and prop names.",
32
+ "Search the @smwb/ui-solid component catalog by exact, partial, fuzzy, or multi-word queries across names, ids, descriptions, and prop names. Each result includes its `ssr` classification (`rendering`: \"universal\" or \"client\").",
33
33
  inputSchema: z.object({
34
34
  query: z.string().describe("Search query, for example: button, chat, text field"),
35
35
  limit: z.number().int().min(1).max(50).optional().describe("Maximum number of matches to return"),
@@ -54,7 +54,7 @@ server.registerTool(
54
54
  {
55
55
  title: "Get @smwb/ui-solid component props",
56
56
  description:
57
- "Return the full metadata document for a @smwb/ui-solid component, including prop names, types, required flags, descriptions, and required Less imports (`styles.base`, `styles.entries`, `styles.dependencies`, `styles.importExample`).",
57
+ "Return the full metadata document for a @smwb/ui-solid component, including prop names, types, required flags, descriptions, SSR classification (`ssr.safe`, `ssr.rendering`, `ssr.note`), and required Less imports (`styles.base`, `styles.entries`, `styles.dependencies`, `styles.importExample`).",
58
58
  inputSchema: z.object({
59
59
  nameOrId: z
60
60
  .string()