@triptease/design-system-mcp 0.0.3

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 (162) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +340 -0
  3. package/dist/package.json +41 -0
  4. package/dist/src/index.d.ts +2 -0
  5. package/dist/src/index.js +39 -0
  6. package/dist/src/index.js.map +1 -0
  7. package/dist/src/manifests/components/entries/badge.d.ts +27 -0
  8. package/dist/src/manifests/components/entries/badge.js +43 -0
  9. package/dist/src/manifests/components/entries/badge.js.map +1 -0
  10. package/dist/src/manifests/components/entries/barChart.d.ts +73 -0
  11. package/dist/src/manifests/components/entries/barChart.js +125 -0
  12. package/dist/src/manifests/components/entries/barChart.js.map +1 -0
  13. package/dist/src/manifests/components/entries/button.d.ts +40 -0
  14. package/dist/src/manifests/components/entries/button.js +59 -0
  15. package/dist/src/manifests/components/entries/button.js.map +1 -0
  16. package/dist/src/manifests/components/entries/card.d.ts +20 -0
  17. package/dist/src/manifests/components/entries/card.js +34 -0
  18. package/dist/src/manifests/components/entries/card.js.map +1 -0
  19. package/dist/src/manifests/components/entries/checkbox.d.ts +31 -0
  20. package/dist/src/manifests/components/entries/checkbox.js +64 -0
  21. package/dist/src/manifests/components/entries/checkbox.js.map +1 -0
  22. package/dist/src/manifests/components/entries/combobox.d.ts +64 -0
  23. package/dist/src/manifests/components/entries/combobox.js +176 -0
  24. package/dist/src/manifests/components/entries/combobox.js.map +1 -0
  25. package/dist/src/manifests/components/entries/datePicker.d.ts +34 -0
  26. package/dist/src/manifests/components/entries/datePicker.js +67 -0
  27. package/dist/src/manifests/components/entries/datePicker.js.map +1 -0
  28. package/dist/src/manifests/components/entries/dateRangePicker.d.ts +34 -0
  29. package/dist/src/manifests/components/entries/dateRangePicker.js +110 -0
  30. package/dist/src/manifests/components/entries/dateRangePicker.js.map +1 -0
  31. package/dist/src/manifests/components/entries/dialog.d.ts +38 -0
  32. package/dist/src/manifests/components/entries/dialog.js +73 -0
  33. package/dist/src/manifests/components/entries/dialog.js.map +1 -0
  34. package/dist/src/manifests/components/entries/lineChart.d.ts +76 -0
  35. package/dist/src/manifests/components/entries/lineChart.js +141 -0
  36. package/dist/src/manifests/components/entries/lineChart.js.map +1 -0
  37. package/dist/src/manifests/components/entries/numberinput.d.ts +52 -0
  38. package/dist/src/manifests/components/entries/numberinput.js +64 -0
  39. package/dist/src/manifests/components/entries/numberinput.js.map +1 -0
  40. package/dist/src/manifests/components/entries/radio.d.ts +31 -0
  41. package/dist/src/manifests/components/entries/radio.js +50 -0
  42. package/dist/src/manifests/components/entries/radio.js.map +1 -0
  43. package/dist/src/manifests/components/entries/select.d.ts +16 -0
  44. package/dist/src/manifests/components/entries/select.js +23 -0
  45. package/dist/src/manifests/components/entries/select.js.map +1 -0
  46. package/dist/src/manifests/components/entries/table.d.ts +16 -0
  47. package/dist/src/manifests/components/entries/table.js +43 -0
  48. package/dist/src/manifests/components/entries/table.js.map +1 -0
  49. package/dist/src/manifests/components/entries/textarea.d.ts +40 -0
  50. package/dist/src/manifests/components/entries/textarea.js +54 -0
  51. package/dist/src/manifests/components/entries/textarea.js.map +1 -0
  52. package/dist/src/manifests/components/entries/textinput.d.ts +40 -0
  53. package/dist/src/manifests/components/entries/textinput.js +53 -0
  54. package/dist/src/manifests/components/entries/textinput.js.map +1 -0
  55. package/dist/src/manifests/components/entries/toggle.d.ts +23 -0
  56. package/dist/src/manifests/components/entries/toggle.js +30 -0
  57. package/dist/src/manifests/components/entries/toggle.js.map +1 -0
  58. package/dist/src/manifests/components/entries/typography.d.ts +23 -0
  59. package/dist/src/manifests/components/entries/typography.js +32 -0
  60. package/dist/src/manifests/components/entries/typography.js.map +1 -0
  61. package/dist/src/manifests/components/index.d.ts +2 -0
  62. package/dist/src/manifests/components/index.js +39 -0
  63. package/dist/src/manifests/components/index.js.map +1 -0
  64. package/dist/src/manifests/components/types.d.ts +56 -0
  65. package/dist/src/manifests/components/types.js +2 -0
  66. package/dist/src/manifests/components/types.js.map +1 -0
  67. package/dist/src/tools/getCSSTokens/handler.d.ts +6 -0
  68. package/dist/src/tools/getCSSTokens/handler.js +29 -0
  69. package/dist/src/tools/getCSSTokens/handler.js.map +1 -0
  70. package/dist/src/tools/getCSSTokens/index.d.ts +12 -0
  71. package/dist/src/tools/getCSSTokens/index.js +14 -0
  72. package/dist/src/tools/getCSSTokens/index.js.map +1 -0
  73. package/dist/src/tools/getCSSTokens/utils.d.ts +5 -0
  74. package/dist/src/tools/getCSSTokens/utils.js +25 -0
  75. package/dist/src/tools/getCSSTokens/utils.js.map +1 -0
  76. package/dist/src/tools/getComponentDocs/handler.d.ts +6 -0
  77. package/dist/src/tools/getComponentDocs/handler.js +27 -0
  78. package/dist/src/tools/getComponentDocs/handler.js.map +1 -0
  79. package/dist/src/tools/getComponentDocs/index.d.ts +12 -0
  80. package/dist/src/tools/getComponentDocs/index.js +14 -0
  81. package/dist/src/tools/getComponentDocs/index.js.map +1 -0
  82. package/dist/src/tools/getSetupGuide/handler.d.ts +6 -0
  83. package/dist/src/tools/getSetupGuide/handler.js +50 -0
  84. package/dist/src/tools/getSetupGuide/handler.js.map +1 -0
  85. package/dist/src/tools/getSetupGuide/index.d.ts +12 -0
  86. package/dist/src/tools/getSetupGuide/index.js +17 -0
  87. package/dist/src/tools/getSetupGuide/index.js.map +1 -0
  88. package/dist/src/tools/getSetupGuide/setupGuides.d.ts +12 -0
  89. package/dist/src/tools/getSetupGuide/setupGuides.js +49 -0
  90. package/dist/src/tools/getSetupGuide/setupGuides.js.map +1 -0
  91. package/dist/src/tools/listCSSTokens/handler.d.ts +3 -0
  92. package/dist/src/tools/listCSSTokens/handler.js +20 -0
  93. package/dist/src/tools/listCSSTokens/handler.js.map +1 -0
  94. package/dist/src/tools/listCSSTokens/index.d.ts +8 -0
  95. package/dist/src/tools/listCSSTokens/index.js +10 -0
  96. package/dist/src/tools/listCSSTokens/index.js.map +1 -0
  97. package/dist/src/tools/listComponents/handler.d.ts +3 -0
  98. package/dist/src/tools/listComponents/handler.js +18 -0
  99. package/dist/src/tools/listComponents/handler.js.map +1 -0
  100. package/dist/src/tools/listComponents/index.d.ts +9 -0
  101. package/dist/src/tools/listComponents/index.js +11 -0
  102. package/dist/src/tools/listComponents/index.js.map +1 -0
  103. package/dist/src/tools/searchComponents/handler.d.ts +6 -0
  104. package/dist/src/tools/searchComponents/handler.js +29 -0
  105. package/dist/src/tools/searchComponents/handler.js.map +1 -0
  106. package/dist/src/tools/searchComponents/index.d.ts +12 -0
  107. package/dist/src/tools/searchComponents/index.js +14 -0
  108. package/dist/src/tools/searchComponents/index.js.map +1 -0
  109. package/dist/src/utils/buildCDNUrls.d.ts +3 -0
  110. package/dist/src/utils/buildCDNUrls.js +6 -0
  111. package/dist/src/utils/buildCDNUrls.js.map +1 -0
  112. package/package.json +43 -0
  113. package/src/index.ts +46 -0
  114. package/src/manifests/components/entries/badge.ts +45 -0
  115. package/src/manifests/components/entries/barChart.ts +132 -0
  116. package/src/manifests/components/entries/button.ts +61 -0
  117. package/src/manifests/components/entries/card.ts +35 -0
  118. package/src/manifests/components/entries/checkbox.ts +68 -0
  119. package/src/manifests/components/entries/combobox.ts +184 -0
  120. package/src/manifests/components/entries/datePicker.ts +73 -0
  121. package/src/manifests/components/entries/dateRangePicker.ts +118 -0
  122. package/src/manifests/components/entries/dialog.ts +77 -0
  123. package/src/manifests/components/entries/lineChart.ts +150 -0
  124. package/src/manifests/components/entries/numberinput.ts +66 -0
  125. package/src/manifests/components/entries/radio.ts +53 -0
  126. package/src/manifests/components/entries/select.ts +24 -0
  127. package/src/manifests/components/entries/table.ts +44 -0
  128. package/src/manifests/components/entries/textarea.ts +56 -0
  129. package/src/manifests/components/entries/textinput.ts +55 -0
  130. package/src/manifests/components/entries/toggle.ts +31 -0
  131. package/src/manifests/components/entries/typography.ts +33 -0
  132. package/src/manifests/components/index.ts +41 -0
  133. package/src/manifests/components/types.ts +64 -0
  134. package/src/tools/getCSSTokens/__snapshots__/handler.test.ts.snap +78 -0
  135. package/src/tools/getCSSTokens/handler.test.ts +39 -0
  136. package/src/tools/getCSSTokens/handler.ts +36 -0
  137. package/src/tools/getCSSTokens/index.ts +15 -0
  138. package/src/tools/getCSSTokens/utils.ts +31 -0
  139. package/src/tools/getComponentDocs/__snapshots__/handler.test.ts.snap +23 -0
  140. package/src/tools/getComponentDocs/handler.test.ts +14 -0
  141. package/src/tools/getComponentDocs/handler.ts +34 -0
  142. package/src/tools/getComponentDocs/index.ts +15 -0
  143. package/src/tools/getSetupGuide/__snapshots__/handler.test.ts.snap +34 -0
  144. package/src/tools/getSetupGuide/handler.test.ts +20 -0
  145. package/src/tools/getSetupGuide/handler.ts +59 -0
  146. package/src/tools/getSetupGuide/index.ts +20 -0
  147. package/src/tools/getSetupGuide/setupGuides.ts +62 -0
  148. package/src/tools/listCSSTokens/__snapshots__/handler.test.ts.snap +12 -0
  149. package/src/tools/listCSSTokens/handler.test.ts +9 -0
  150. package/src/tools/listCSSTokens/handler.ts +32 -0
  151. package/src/tools/listCSSTokens/index.ts +12 -0
  152. package/src/tools/listComponents/__snapshots__/handler.test.ts.snap +12 -0
  153. package/src/tools/listComponents/handler.test.ts +9 -0
  154. package/src/tools/listComponents/handler.ts +20 -0
  155. package/src/tools/listComponents/index.ts +12 -0
  156. package/src/tools/searchComponents/__snapshots__/handler.test.ts.snap +23 -0
  157. package/src/tools/searchComponents/handler.test.ts +14 -0
  158. package/src/tools/searchComponents/handler.ts +36 -0
  159. package/src/tools/searchComponents/index.ts +15 -0
  160. package/src/utils/buildCDNUrls.ts +7 -0
  161. package/tsconfig.json +12 -0
  162. package/vitest.config.ts +6 -0
@@ -0,0 +1,12 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`listComponents tool > should list all components within the manifest 1`] = `
4
+ {
5
+ "content": [
6
+ {
7
+ "text": "{"components":[{"key":"button","name":"Button","description":"Interactive button component with multiple themes and states","element":"button"},{"key":"textinput","name":"Text Input","description":"Text input field for single-line text entry with automatic validation styling","element":"input"},{"key":"numberinput","name":"Number Input","description":"Number input field with browser-provided increment/decrement controls","element":"input[type='number']"},{"key":"textarea","name":"Textarea","description":"Multi-line text input field","element":"textarea"},{"key":"select","name":"Select Input","description":"Dropdown list for selecting a single option","element":"select"},{"key":"checkbox","name":"Checkbox","description":"Checkbox input for multiple selections","element":"input[type='checkbox']"},{"key":"radio","name":"Radio","description":"Radio button for selecting exactly one option from mutually exclusive choices","element":"input[type='radio']"},{"key":"toggle","name":"Toggle","description":"Toggle switch for binary on/off states with immediate effect","element":"input[type='checkbox'][data-theme='toggle']"},{"key":"badge","name":"Badge","description":"Status indicator or label badge for highlighting small pieces of information","element":"span"},{"key":"card","name":"Card","description":"Container component that groups related content and actions in a visually distinct area","element":"div"},{"key":"table","name":"Table","description":"Organize and display data in rows and columns","element":"table"},{"key":"typography","name":"Typography","description":"Text styling using semantic HTML elements and utility classes","element":"h1-h4, p, strong, a"},{"key":"dialog","name":"Dialog - Web Component","description":"Dialog component that displays content in a layer above the page","element":"tt-dialog"},{"key":"combobox","name":"Combobox","description":"Searchable dropdown that combines a text input with a list, available as both React component and Web Component","element":"Combobox (React) / tt-combobox (Web Component)"},{"key":"date-picker","name":"Date Picker","description":"Date picker for selecting a single date, available as both React component and Web Component","element":"DatePicker (React) / tt-date-picker (Web Component)"},{"key":"date-range-picker","name":"Date Range Picker","description":"Date range picker for selecting start and end dates, available as both React component and Web Component","element":"DateRangePicker (React) / tt-date-range-picker (Web Component)"},{"key":"bar-chart","name":"Bar Chart - Web Component","description":"Bar chart for comparing values across categories","element":"tt-bar-chart"},{"key":"line-chart","name":"Line Chart - Web Component","description":"Line chart for visualizing trends over continuous data","element":"tt-line-chart"}]}",
8
+ "type": "text",
9
+ },
10
+ ],
11
+ }
12
+ `;
@@ -0,0 +1,9 @@
1
+ import handler from './handler.js';
2
+ import { describe, expect, it } from 'vitest';
3
+
4
+ describe('listComponents tool', () => {
5
+ it('should list all components within the manifest', () => {
6
+ const result = handler();
7
+ expect(result).toMatchSnapshot();
8
+ });
9
+ });
@@ -0,0 +1,20 @@
1
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import { componentManifest } from '@/manifests/components/index.js';
3
+
4
+ export default (): CallToolResult => {
5
+ const components = Object.entries(componentManifest).map(([key, comp]) => ({
6
+ key,
7
+ name: comp.name,
8
+ description: comp.description,
9
+ element: comp.element,
10
+ }));
11
+
12
+ return {
13
+ content: [
14
+ {
15
+ type: 'text',
16
+ text: JSON.stringify({ components }),
17
+ },
18
+ ],
19
+ };
20
+ };
@@ -0,0 +1,12 @@
1
+ import handler from './handler.js';
2
+
3
+ const toolDefinition = {
4
+ name: 'list_components',
5
+ config: {
6
+ description: 'List all available design system componentManifest',
7
+ inputSchema: {},
8
+ },
9
+ handler,
10
+ };
11
+
12
+ export default toolDefinition;
@@ -0,0 +1,23 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`searchComponents tool > should return an empty response if no components match the query 1`] = `
4
+ {
5
+ "content": [
6
+ {
7
+ "text": "{"query":"doctorwhoisthebestshowintheworld","count":0,"results":[]}",
8
+ "type": "text",
9
+ },
10
+ ],
11
+ }
12
+ `;
13
+
14
+ exports[`searchComponents tool > should search for components by keyword 1`] = `
15
+ {
16
+ "content": [
17
+ {
18
+ "text": "{"query":"button","count":2,"results":[{"key":"button","name":"Button","description":"Interactive button component with multiple themes and states","element":"button"},{"key":"radio","name":"Radio","description":"Radio button for selecting exactly one option from mutually exclusive choices","element":"input[type='radio']"}]}",
19
+ "type": "text",
20
+ },
21
+ ],
22
+ }
23
+ `;
@@ -0,0 +1,14 @@
1
+ import handler from './handler.js';
2
+ import { describe, expect, it } from 'vitest';
3
+
4
+ describe('searchComponents tool', () => {
5
+ it('should search for components by keyword', () => {
6
+ const result = handler({ query: 'button' });
7
+ expect(result).toMatchSnapshot();
8
+ });
9
+
10
+ it('should return an empty response if no components match the query', () => {
11
+ const result = handler({ query: 'DoctorWhoIsTheBestShowInTheWorld' });
12
+ expect(result).toMatchSnapshot();
13
+ });
14
+ });
@@ -0,0 +1,36 @@
1
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import { componentManifest } from '@/manifests/components/index.js';
3
+
4
+ export interface SearchComponentsArgs {
5
+ query: string;
6
+ }
7
+
8
+ export default (args: SearchComponentsArgs): CallToolResult => {
9
+ const query = args.query.toLowerCase();
10
+ const results = [];
11
+
12
+ for (const [key, comp] of Object.entries(componentManifest)) {
13
+ const searchText = `${key} ${comp.name} ${comp.description}`.toLowerCase();
14
+ if (searchText.includes(query)) {
15
+ results.push({
16
+ key,
17
+ name: comp.name,
18
+ description: comp.description,
19
+ element: comp.element,
20
+ });
21
+ }
22
+ }
23
+
24
+ return {
25
+ content: [
26
+ {
27
+ type: 'text',
28
+ text: JSON.stringify({
29
+ query,
30
+ count: results.length,
31
+ results,
32
+ }),
33
+ },
34
+ ],
35
+ };
36
+ };
@@ -0,0 +1,15 @@
1
+ import handler from './handler.js';
2
+ import { z } from 'zod';
3
+
4
+ const toolDefinition = {
5
+ name: 'search_components',
6
+ config: {
7
+ description: 'Search for componentManifest by keyword or usage',
8
+ inputSchema: {
9
+ query: z.string().describe('Search query'),
10
+ },
11
+ },
12
+ handler,
13
+ };
14
+
15
+ export default toolDefinition;
@@ -0,0 +1,7 @@
1
+ const buildCDNUrl = (componentName: string, version: string) => {
2
+ return `https://cdn.design-system.triptease.io/${componentName}/${version}/${componentName}.js`;
3
+ };
4
+
5
+ const buildMajorVersion = (version: string) => `${version.split('.')[0]}.x.x`
6
+
7
+ export { buildCDNUrl, buildMajorVersion };
package/tsconfig.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "../../tsconfig.packages.json",
3
+ "compilerOptions": {
4
+ "rootDir": "./",
5
+ "outDir": "dist",
6
+ "paths": {
7
+ "@/*": ["./src/*"]
8
+ }
9
+ },
10
+ "include": ["**/*.ts"],
11
+ "exclude": ["node_modules", "dist", "**/vitest.*", "**/*.test.*", "**/*.spec.*"]
12
+ }
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'vite';
2
+ import tsconfigPaths from 'vite-tsconfig-paths';
3
+
4
+ export default defineConfig({
5
+ plugins: [tsconfigPaths()],
6
+ });