@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,54 @@
1
+ export default {
2
+ textarea: {
3
+ name: 'Textarea',
4
+ description: 'Multi-line text input field',
5
+ element: 'textarea',
6
+ usageGuidance: {
7
+ whenToUse: [
8
+ 'Multi-line text input (comments, descriptions, messages)',
9
+ 'Content length is unpredictable',
10
+ 'Users need to review text while typing',
11
+ 'Text may contain line breaks',
12
+ ],
13
+ avoid: [
14
+ 'Single-line input (use text input)',
15
+ 'Formatted text needed (use rich text editor)',
16
+ 'Very long content (consider breaking into sections)',
17
+ ],
18
+ },
19
+ attributes: {
20
+ 'aria-invalid': {
21
+ type: 'boolean',
22
+ description: 'Marks textarea as invalid for error styling. Pair with aria-describedby to associate error messages.',
23
+ },
24
+ disabled: {
25
+ type: 'boolean',
26
+ description: 'Disables the textarea',
27
+ },
28
+ placeholder: {
29
+ type: 'string',
30
+ description: 'Placeholder text. Should not replace label - always provide visible label element.',
31
+ },
32
+ rows: {
33
+ type: 'number',
34
+ description: 'Number of visible text lines',
35
+ },
36
+ },
37
+ states: ['default', 'hover', 'focus', 'disabled', 'invalid'],
38
+ examples: [
39
+ {
40
+ title: 'Basic usage',
41
+ code: `<label for="about">About</label>
42
+ <textarea id="about" rows="4"></textarea>`,
43
+ },
44
+ {
45
+ title: 'Error state',
46
+ description: 'Use aria-invalid with aria-describedby to associate error messages for screen readers',
47
+ code: `<label for="description">Description</label>
48
+ <textarea id="description" rows="4" aria-invalid aria-describedby="description-error"></textarea>
49
+ <span id="description-error" class="text-error">Description is required</span>`,
50
+ },
51
+ ],
52
+ },
53
+ };
54
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../../../src/manifests/components/entries/textarea.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,UAAU;QACnB,aAAa,EAAE;YACb,SAAS,EAAE;gBACT,0DAA0D;gBAC1D,iCAAiC;gBACjC,wCAAwC;gBACxC,8BAA8B;aAC/B;YACD,KAAK,EAAE;gBACL,oCAAoC;gBACpC,8CAA8C;gBAC9C,qDAAqD;aACtD;SACF;QACD,UAAU,EAAE;YACV,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,sGAAsG;aACzG;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,uBAAuB;aACrC;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oFAAoF;aAClG;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;aAC5C;SACF;QACD,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;QAC5D,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE;0CAC4B;aACnC;YACD;gBACE,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,uFAAuF;gBACpG,IAAI,EAAE;;+EAEiE;aACxE;SACF;KACF;CAC0B,CAAC","sourcesContent":["import { ComponentManifest } from '@/manifests/components/types.js';\n\nexport default {\n textarea: {\n name: 'Textarea',\n description: 'Multi-line text input field',\n element: 'textarea',\n usageGuidance: {\n whenToUse: [\n 'Multi-line text input (comments, descriptions, messages)',\n 'Content length is unpredictable',\n 'Users need to review text while typing',\n 'Text may contain line breaks',\n ],\n avoid: [\n 'Single-line input (use text input)',\n 'Formatted text needed (use rich text editor)',\n 'Very long content (consider breaking into sections)',\n ],\n },\n attributes: {\n 'aria-invalid': {\n type: 'boolean',\n description:\n 'Marks textarea as invalid for error styling. Pair with aria-describedby to associate error messages.',\n },\n disabled: {\n type: 'boolean',\n description: 'Disables the textarea',\n },\n placeholder: {\n type: 'string',\n description: 'Placeholder text. Should not replace label - always provide visible label element.',\n },\n rows: {\n type: 'number',\n description: 'Number of visible text lines',\n },\n },\n states: ['default', 'hover', 'focus', 'disabled', 'invalid'],\n examples: [\n {\n title: 'Basic usage',\n code: `<label for=\"about\">About</label>\n<textarea id=\"about\" rows=\"4\"></textarea>`,\n },\n {\n title: 'Error state',\n description: 'Use aria-invalid with aria-describedby to associate error messages for screen readers',\n code: `<label for=\"description\">Description</label>\n<textarea id=\"description\" rows=\"4\" aria-invalid aria-describedby=\"description-error\"></textarea>\n<span id=\"description-error\" class=\"text-error\">Description is required</span>`,\n },\n ],\n },\n} satisfies ComponentManifest;\n"]}
@@ -0,0 +1,40 @@
1
+ declare const _default: {
2
+ textinput: {
3
+ name: string;
4
+ description: string;
5
+ element: string;
6
+ usageGuidance: {
7
+ whenToUse: string[];
8
+ avoid: string[];
9
+ };
10
+ attributes: {
11
+ type: {
12
+ values: string[];
13
+ default: string;
14
+ };
15
+ 'aria-invalid': {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ disabled: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ placeholder: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ };
28
+ states: string[];
29
+ examples: ({
30
+ title: string;
31
+ code: string;
32
+ description?: undefined;
33
+ } | {
34
+ title: string;
35
+ description: string;
36
+ code: string;
37
+ })[];
38
+ };
39
+ };
40
+ export default _default;
@@ -0,0 +1,53 @@
1
+ export default {
2
+ textinput: {
3
+ name: 'Text Input',
4
+ description: 'Text input field for single-line text entry with automatic validation styling',
5
+ element: 'input',
6
+ usageGuidance: {
7
+ whenToUse: [
8
+ 'Single-line text entry (names, email, search)',
9
+ 'Predictable, short text length',
10
+ 'Specific input types (email, password, tel, url)',
11
+ ],
12
+ avoid: [
13
+ 'Multi-line text (use textarea)',
14
+ 'Selecting from options (use select, radio, or combobox)',
15
+ 'Pure numeric entry (consider number input)',
16
+ ],
17
+ },
18
+ attributes: {
19
+ type: {
20
+ values: ['text', 'email', 'password', 'tel', 'url'],
21
+ default: 'text',
22
+ },
23
+ 'aria-invalid': {
24
+ type: 'boolean',
25
+ description: 'Marks input as invalid for error styling. Pair with aria-describedby to associate error messages.',
26
+ },
27
+ disabled: {
28
+ type: 'boolean',
29
+ description: 'Disables the input',
30
+ },
31
+ placeholder: {
32
+ type: 'string',
33
+ description: 'Placeholder text. Should not replace label - always provide visible label element.',
34
+ },
35
+ },
36
+ states: ['default', 'hover', 'focus', 'disabled', 'invalid'],
37
+ examples: [
38
+ {
39
+ title: 'Basic usage',
40
+ code: `<label for="hotel-name">Hotel Name</label>
41
+ <input id="hotel-name" />`,
42
+ },
43
+ {
44
+ title: 'Error state',
45
+ description: 'Use aria-invalid with aria-describedby to associate error messages for screen readers',
46
+ code: `<label for="email">Email</label>
47
+ <input id="email" type="email" aria-invalid aria-describedby="email-error" />
48
+ <span id="email-error" class="text-error">Please enter a valid email address</span>`,
49
+ },
50
+ ],
51
+ },
52
+ };
53
+ //# sourceMappingURL=textinput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textinput.js","sourceRoot":"","sources":["../../../../../src/manifests/components/entries/textinput.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,SAAS,EAAE;QACT,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+EAA+E;QAC5F,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE;YACb,SAAS,EAAE;gBACT,+CAA+C;gBAC/C,gCAAgC;gBAChC,kDAAkD;aACnD;YACD,KAAK,EAAE;gBACL,gCAAgC;gBAChC,yDAAyD;gBACzD,4CAA4C;aAC7C;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;gBACnD,OAAO,EAAE,MAAM;aAChB;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,mGAAmG;aACtG;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,oBAAoB;aAClC;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oFAAoF;aAClG;SACF;QACD,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;QAC5D,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE;0BACY;aACnB;YACD;gBACE,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,uFAAuF;gBACpG,IAAI,EAAE;;oFAEsE;aAC7E;SACF;KACF;CAC0B,CAAC","sourcesContent":["import { ComponentManifest } from '@/manifests/components/types.js';\n\nexport default {\n textinput: {\n name: 'Text Input',\n description: 'Text input field for single-line text entry with automatic validation styling',\n element: 'input',\n usageGuidance: {\n whenToUse: [\n 'Single-line text entry (names, email, search)',\n 'Predictable, short text length',\n 'Specific input types (email, password, tel, url)',\n ],\n avoid: [\n 'Multi-line text (use textarea)',\n 'Selecting from options (use select, radio, or combobox)',\n 'Pure numeric entry (consider number input)',\n ],\n },\n attributes: {\n type: {\n values: ['text', 'email', 'password', 'tel', 'url'],\n default: 'text',\n },\n 'aria-invalid': {\n type: 'boolean',\n description:\n 'Marks input as invalid for error styling. Pair with aria-describedby to associate error messages.',\n },\n disabled: {\n type: 'boolean',\n description: 'Disables the input',\n },\n placeholder: {\n type: 'string',\n description: 'Placeholder text. Should not replace label - always provide visible label element.',\n },\n },\n states: ['default', 'hover', 'focus', 'disabled', 'invalid'],\n examples: [\n {\n title: 'Basic usage',\n code: `<label for=\"hotel-name\">Hotel Name</label>\n<input id=\"hotel-name\" />`,\n },\n {\n title: 'Error state',\n description: 'Use aria-invalid with aria-describedby to associate error messages for screen readers',\n code: `<label for=\"email\">Email</label>\n<input id=\"email\" type=\"email\" aria-invalid aria-describedby=\"email-error\" />\n<span id=\"email-error\" class=\"text-error\">Please enter a valid email address</span>`,\n },\n ],\n },\n} satisfies ComponentManifest;\n"]}
@@ -0,0 +1,23 @@
1
+ declare const _default: {
2
+ toggle: {
3
+ name: string;
4
+ description: string;
5
+ element: string;
6
+ usageGuidance: {
7
+ whenToUse: string[];
8
+ avoid: string[];
9
+ };
10
+ dataAttributes: {
11
+ 'data-theme': {
12
+ type: string;
13
+ values: string[];
14
+ description: string;
15
+ };
16
+ };
17
+ examples: {
18
+ title: string;
19
+ code: string;
20
+ }[];
21
+ };
22
+ };
23
+ export default _default;
@@ -0,0 +1,30 @@
1
+ export default {
2
+ toggle: {
3
+ name: 'Toggle',
4
+ description: 'Toggle switch for binary on/off states with immediate effect',
5
+ element: "input[type='checkbox'][data-theme='toggle']",
6
+ usageGuidance: {
7
+ whenToUse: ['Binary on/off states', 'Changes take effect immediately', 'System or feature settings'],
8
+ avoid: [
9
+ 'Changes require saving (use checkbox in form)',
10
+ 'More than two options exist (use radio buttons or select)',
11
+ "Relationship between on/off isn't clear",
12
+ ],
13
+ },
14
+ dataAttributes: {
15
+ 'data-theme': {
16
+ type: 'enum',
17
+ values: ['toggle'],
18
+ description: "Use 'toggle' for switch style",
19
+ },
20
+ },
21
+ examples: [
22
+ {
23
+ title: 'Toggle switch',
24
+ code: `<input type="checkbox" id="weekly-parity-report" data-theme="toggle" />
25
+ <label for="weekly-parity-report">Weekly Parity Report</label>`,
26
+ },
27
+ ],
28
+ },
29
+ };
30
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../../../../src/manifests/components/entries/toggle.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8DAA8D;QAC3E,OAAO,EAAE,6CAA6C;QACtD,aAAa,EAAE;YACb,SAAS,EAAE,CAAC,sBAAsB,EAAE,iCAAiC,EAAE,4BAA4B,CAAC;YACpG,KAAK,EAAE;gBACL,+CAA+C;gBAC/C,2DAA2D;gBAC3D,yCAAyC;aAC1C;SACF;QACD,cAAc,EAAE;YACd,YAAY,EAAE;gBACZ,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,WAAW,EAAE,+BAA+B;aAC7C;SACF;QACD,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE;+DACiD;aACxD;SACF;KACF;CAC0B,CAAC","sourcesContent":["import { ComponentManifest } from '@/manifests/components/types.js';\n\nexport default {\n toggle: {\n name: 'Toggle',\n description: 'Toggle switch for binary on/off states with immediate effect',\n element: \"input[type='checkbox'][data-theme='toggle']\",\n usageGuidance: {\n whenToUse: ['Binary on/off states', 'Changes take effect immediately', 'System or feature settings'],\n avoid: [\n 'Changes require saving (use checkbox in form)',\n 'More than two options exist (use radio buttons or select)',\n \"Relationship between on/off isn't clear\",\n ],\n },\n dataAttributes: {\n 'data-theme': {\n type: 'enum',\n values: ['toggle'],\n description: \"Use 'toggle' for switch style\",\n },\n },\n examples: [\n {\n title: 'Toggle switch',\n code: `<input type=\"checkbox\" id=\"weekly-parity-report\" data-theme=\"toggle\" />\n<label for=\"weekly-parity-report\">Weekly Parity Report</label>`,\n },\n ],\n },\n} satisfies ComponentManifest;\n"]}
@@ -0,0 +1,23 @@
1
+ declare const _default: {
2
+ typography: {
3
+ name: string;
4
+ description: string;
5
+ element: string;
6
+ usageGuidance: {
7
+ whenToUse: string[];
8
+ avoid: string[];
9
+ };
10
+ classes: {
11
+ display: string;
12
+ 'heading-1': string;
13
+ 'heading-2': string;
14
+ 'heading-3': string;
15
+ 'heading-4': string;
16
+ body: string;
17
+ strong: string;
18
+ small: string;
19
+ 'text-error': string;
20
+ };
21
+ };
22
+ };
23
+ export default _default;
@@ -0,0 +1,32 @@
1
+ export default {
2
+ typography: {
3
+ name: 'Typography',
4
+ description: 'Text styling using semantic HTML elements and utility classes',
5
+ element: 'h1-h4, p, strong, a',
6
+ usageGuidance: {
7
+ whenToUse: [
8
+ 'Use semantic elements (h1-h4, strong, a) for document structure and accessibility',
9
+ 'Use utility classes (.heading-1 through .heading-4, .display, .body, .small, .strong, .text-error) when visual styling must differ from semantic meaning',
10
+ "Follow heading hierarchy - don't skip levels (h1 → h2 → h3, not h1 → h3)",
11
+ 'Use <strong> for semantic importance, .strong for visual styling only',
12
+ ],
13
+ avoid: [
14
+ 'Using heading classes for document structure (use semantic h1-h4 elements)',
15
+ 'Skipping heading levels (breaks accessibility)',
16
+ 'Using buttons styled as links or links styled as buttons (use correct semantic element)',
17
+ ],
18
+ },
19
+ classes: {
20
+ display: 'Largest text size for hero sections and prominent headlines',
21
+ 'heading-1': 'h1 visual styling',
22
+ 'heading-2': 'h2 visual styling',
23
+ 'heading-3': 'h3 visual styling',
24
+ 'heading-4': 'h4 visual styling',
25
+ body: 'Standard body text styling',
26
+ strong: 'Bold text styling without semantic importance',
27
+ small: 'Smaller text for captions, helper text, fine print',
28
+ 'text-error': 'Error text color for validation messages',
29
+ },
30
+ },
31
+ };
32
+ //# sourceMappingURL=typography.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typography.js","sourceRoot":"","sources":["../../../../../src/manifests/components/entries/typography.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,qBAAqB;QAC9B,aAAa,EAAE;YACb,SAAS,EAAE;gBACT,mFAAmF;gBACnF,0JAA0J;gBAC1J,0EAA0E;gBAC1E,uEAAuE;aACxE;YACD,KAAK,EAAE;gBACL,4EAA4E;gBAC5E,gDAAgD;gBAChD,yFAAyF;aAC1F;SACF;QACD,OAAO,EAAE;YACP,OAAO,EAAE,6DAA6D;YACtE,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,+CAA+C;YACvD,KAAK,EAAE,oDAAoD;YAC3D,YAAY,EAAE,0CAA0C;SACzD;KACF;CAC0B,CAAC","sourcesContent":["import { ComponentManifest } from '@/manifests/components/types.js';\n\nexport default {\n typography: {\n name: 'Typography',\n description: 'Text styling using semantic HTML elements and utility classes',\n element: 'h1-h4, p, strong, a',\n usageGuidance: {\n whenToUse: [\n 'Use semantic elements (h1-h4, strong, a) for document structure and accessibility',\n 'Use utility classes (.heading-1 through .heading-4, .display, .body, .small, .strong, .text-error) when visual styling must differ from semantic meaning',\n \"Follow heading hierarchy - don't skip levels (h1 → h2 → h3, not h1 → h3)\",\n 'Use <strong> for semantic importance, .strong for visual styling only',\n ],\n avoid: [\n 'Using heading classes for document structure (use semantic h1-h4 elements)',\n 'Skipping heading levels (breaks accessibility)',\n 'Using buttons styled as links or links styled as buttons (use correct semantic element)',\n ],\n },\n classes: {\n display: 'Largest text size for hero sections and prominent headlines',\n 'heading-1': 'h1 visual styling',\n 'heading-2': 'h2 visual styling',\n 'heading-3': 'h3 visual styling',\n 'heading-4': 'h4 visual styling',\n body: 'Standard body text styling',\n strong: 'Bold text styling without semantic importance',\n small: 'Smaller text for captions, helper text, fine print',\n 'text-error': 'Error text color for validation messages',\n },\n },\n} satisfies ComponentManifest;\n"]}
@@ -0,0 +1,2 @@
1
+ import type { ComponentManifest } from './types.js';
2
+ export declare const componentManifest: ComponentManifest;
@@ -0,0 +1,39 @@
1
+ import button from '../../manifests/components/entries/button.js';
2
+ import textinput from '../../manifests/components/entries/textinput.js';
3
+ import numberinput from '../../manifests/components/entries/numberinput.js';
4
+ import textarea from '../../manifests/components/entries/textarea.js';
5
+ import select from '../../manifests/components/entries/select.js';
6
+ import checkbox from '../../manifests/components/entries/checkbox.js';
7
+ import radio from '../../manifests/components/entries/radio.js';
8
+ import toggle from '../../manifests/components/entries/toggle.js';
9
+ import badge from '../../manifests/components/entries/badge.js';
10
+ import card from '../../manifests/components/entries/card.js';
11
+ import table from '../../manifests/components/entries/table.js';
12
+ import typography from '../../manifests/components/entries/typography.js';
13
+ import dialog from '../../manifests/components/entries/dialog.js';
14
+ import combobox from '../../manifests/components/entries/combobox.js';
15
+ import datePicker from '../../manifests/components/entries/datePicker.js';
16
+ import dateRangePicker from '../../manifests/components/entries/dateRangePicker.js';
17
+ import barChart from '../../manifests/components/entries/barChart.js';
18
+ import lineChart from '../../manifests/components/entries/lineChart.js';
19
+ export const componentManifest = {
20
+ ...button,
21
+ ...textinput,
22
+ ...numberinput,
23
+ ...textarea,
24
+ ...select,
25
+ ...checkbox,
26
+ ...radio,
27
+ ...toggle,
28
+ ...badge,
29
+ ...card,
30
+ ...table,
31
+ ...typography,
32
+ ...dialog,
33
+ ...combobox,
34
+ ...datePicker,
35
+ ...dateRangePicker,
36
+ ...barChart,
37
+ ...lineChart,
38
+ };
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/manifests/components/index.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,0CAA0C,CAAC;AAC9D,OAAO,SAAS,MAAM,6CAA6C,CAAC;AACpE,OAAO,WAAW,MAAM,+CAA+C,CAAC;AACxE,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAClE,OAAO,MAAM,MAAM,0CAA0C,CAAC;AAC9D,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAClE,OAAO,KAAK,MAAM,yCAAyC,CAAC;AAC5D,OAAO,MAAM,MAAM,0CAA0C,CAAC;AAC9D,OAAO,KAAK,MAAM,yCAAyC,CAAC;AAC5D,OAAO,IAAI,MAAM,wCAAwC,CAAC;AAC1D,OAAO,KAAK,MAAM,yCAAyC,CAAC;AAC5D,OAAO,UAAU,MAAM,8CAA8C,CAAC;AACtE,OAAO,MAAM,MAAM,0CAA0C,CAAC;AAC9D,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAClE,OAAO,UAAU,MAAM,8CAA8C,CAAC;AACtE,OAAO,eAAe,MAAM,mDAAmD,CAAC;AAChF,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAClE,OAAO,SAAS,MAAM,6CAA6C,CAAC;AAEpE,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,GAAG,MAAM;IACT,GAAG,SAAS;IACZ,GAAG,WAAW;IACd,GAAG,QAAQ;IACX,GAAG,MAAM;IACT,GAAG,QAAQ;IACX,GAAG,KAAK;IACR,GAAG,MAAM;IACT,GAAG,KAAK;IACR,GAAG,IAAI;IACP,GAAG,KAAK;IACR,GAAG,UAAU;IACb,GAAG,MAAM;IACT,GAAG,QAAQ;IACX,GAAG,UAAU;IACb,GAAG,eAAe;IAClB,GAAG,QAAQ;IACX,GAAG,SAAS;CACb,CAAC","sourcesContent":["import type { ComponentManifest } from './types.js';\n\nimport button from '@/manifests/components/entries/button.js';\nimport textinput from '@/manifests/components/entries/textinput.js';\nimport numberinput from '@/manifests/components/entries/numberinput.js';\nimport textarea from '@/manifests/components/entries/textarea.js';\nimport select from '@/manifests/components/entries/select.js';\nimport checkbox from '@/manifests/components/entries/checkbox.js';\nimport radio from '@/manifests/components/entries/radio.js';\nimport toggle from '@/manifests/components/entries/toggle.js';\nimport badge from '@/manifests/components/entries/badge.js';\nimport card from '@/manifests/components/entries/card.js';\nimport table from '@/manifests/components/entries/table.js';\nimport typography from '@/manifests/components/entries/typography.js';\nimport dialog from '@/manifests/components/entries/dialog.js';\nimport combobox from '@/manifests/components/entries/combobox.js';\nimport datePicker from '@/manifests/components/entries/datePicker.js';\nimport dateRangePicker from '@/manifests/components/entries/dateRangePicker.js';\nimport barChart from '@/manifests/components/entries/barChart.js';\nimport lineChart from '@/manifests/components/entries/lineChart.js';\n\nexport const componentManifest: ComponentManifest = {\n ...button,\n ...textinput,\n ...numberinput,\n ...textarea,\n ...select,\n ...checkbox,\n ...radio,\n ...toggle,\n ...badge,\n ...card,\n ...table,\n ...typography,\n ...dialog,\n ...combobox,\n ...datePicker,\n ...dateRangePicker,\n ...barChart,\n ...lineChart,\n};\n"]}
@@ -0,0 +1,56 @@
1
+ interface UsageGuidance {
2
+ whenToUse: string[];
3
+ bestPractices?: string[];
4
+ accessibility?: string[];
5
+ avoid?: string[];
6
+ }
7
+ interface PackageInstallationBase {
8
+ includesTypes: boolean;
9
+ optional: boolean;
10
+ guidance?: string;
11
+ }
12
+ interface NPMPackage extends PackageInstallationBase {
13
+ name: string;
14
+ }
15
+ interface CDNPackage extends PackageInstallationBase {
16
+ name: string;
17
+ latestVersionUrl: string;
18
+ pinnedMajorVersionUrl: string;
19
+ pinnedVersionUrl: string;
20
+ }
21
+ interface Installation {
22
+ npm?: NPMPackage[];
23
+ cdn?: CDNPackage[];
24
+ }
25
+ interface DataAttribute {
26
+ type: string;
27
+ values?: (string | undefined)[];
28
+ default?: string;
29
+ description: string;
30
+ }
31
+ interface HTMLAttribute {
32
+ type?: string;
33
+ values?: string[];
34
+ default?: string;
35
+ description?: string;
36
+ }
37
+ interface ExampleUsage {
38
+ title: string;
39
+ description?: string;
40
+ code: string;
41
+ }
42
+ export interface ComponentConfig {
43
+ name: string;
44
+ description: string;
45
+ ssrSafe?: boolean;
46
+ element: string;
47
+ usageGuidance?: UsageGuidance;
48
+ installation?: Installation;
49
+ dataAttributes?: Record<string, DataAttribute>;
50
+ classes?: Record<string, string>;
51
+ attributes?: Record<string, HTMLAttribute>;
52
+ states?: string[];
53
+ examples?: ExampleUsage[];
54
+ }
55
+ export type ComponentManifest = Record<string, ComponentConfig>;
56
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/manifests/components/types.ts"],"names":[],"mappings":"","sourcesContent":["interface UsageGuidance {\n whenToUse: string[];\n bestPractices?: string[];\n accessibility?: string[];\n avoid?: string[];\n}\n\ninterface PackageInstallationBase {\n includesTypes: boolean;\n optional: boolean;\n guidance?: string;\n}\n\ninterface NPMPackage extends PackageInstallationBase {\n name: string;\n}\n\ninterface CDNPackage extends PackageInstallationBase {\n name: string;\n latestVersionUrl: string;\n pinnedMajorVersionUrl: string;\n pinnedVersionUrl: string;\n}\n\ninterface Installation {\n npm?: NPMPackage[];\n cdn?: CDNPackage[];\n}\n\ninterface DataAttribute {\n type: string;\n values?: (string | undefined)[];\n default?: string;\n description: string;\n}\n\ninterface HTMLAttribute {\n type?: string;\n values?: string[];\n default?: string;\n description?: string;\n}\n\ninterface ExampleUsage {\n title: string;\n description?: string;\n code: string;\n}\n\nexport interface ComponentConfig {\n name: string;\n description: string;\n ssrSafe?: boolean;\n element: string;\n usageGuidance?: UsageGuidance;\n installation?: Installation;\n dataAttributes?: Record<string, DataAttribute>;\n classes?: Record<string, string>;\n attributes?: Record<string, HTMLAttribute>;\n states?: string[];\n examples?: ExampleUsage[];\n}\n\nexport type ComponentManifest = Record<string, ComponentConfig>;\n"]}
@@ -0,0 +1,6 @@
1
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ export interface GetDesignTokensArgs {
3
+ category: string;
4
+ }
5
+ declare const _default: (args: GetDesignTokensArgs) => CallToolResult;
6
+ export default _default;
@@ -0,0 +1,29 @@
1
+ import designTokens from '@triptease/stylesheet/tokens' with { type: 'json' };
2
+ import { buildTokens } from '../../tools/getCSSTokens/utils.js';
3
+ export default (args) => {
4
+ const category = args.category;
5
+ const tokens = buildTokens(designTokens);
6
+ const categories = Object.keys(tokens);
7
+ if (!categories.includes(category)) {
8
+ return {
9
+ content: [
10
+ {
11
+ type: 'text',
12
+ text: JSON.stringify({
13
+ error: `Invalid category '${category}'`,
14
+ available: categories,
15
+ }),
16
+ },
17
+ ],
18
+ };
19
+ }
20
+ return {
21
+ content: [
22
+ {
23
+ type: 'text',
24
+ text: JSON.stringify(tokens[category]),
25
+ },
26
+ ],
27
+ };
28
+ };
29
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/tools/getCSSTokens/handler.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,8BAA8B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAM5D,eAAe,CAAC,IAAyB,EAAkB,EAAE;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAEzC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,KAAK,EAAE,qBAAqB,QAAQ,GAAG;wBACvC,SAAS,EAAE,UAAU;qBACtB,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACvC;SACF;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport designTokens from '@triptease/stylesheet/tokens' with { type: 'json' };\nimport { buildTokens } from '@/tools/getCSSTokens/utils.js';\n\nexport interface GetDesignTokensArgs {\n category: string;\n}\n\nexport default (args: GetDesignTokensArgs): CallToolResult => {\n const category = args.category;\n const tokens = buildTokens(designTokens);\n\n const categories = Object.keys(tokens);\n if (!categories.includes(category)) {\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n error: `Invalid category '${category}'`,\n available: categories,\n }),\n },\n ],\n };\n }\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(tokens[category]),\n },\n ],\n };\n};\n"]}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ declare const toolDefinition: {
3
+ name: string;
4
+ config: {
5
+ description: string;
6
+ inputSchema: {
7
+ category: z.ZodString;
8
+ };
9
+ };
10
+ handler: (args: import("./handler.js").GetDesignTokensArgs) => import("@modelcontextprotocol/sdk/types.js").CallToolResult;
11
+ };
12
+ export default toolDefinition;
@@ -0,0 +1,14 @@
1
+ import handler from './handler.js';
2
+ import { z } from 'zod';
3
+ const toolDefinition = {
4
+ name: 'get_css_tokens',
5
+ config: {
6
+ description: 'Returns the CSS tokens for a specific category.',
7
+ inputSchema: {
8
+ category: z.string().describe('Token category: one of the category names returned by the listCSSTokens tool.'),
9
+ },
10
+ },
11
+ handler: handler,
12
+ };
13
+ export default toolDefinition;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/getCSSTokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE;QACN,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;SAC/G;KACF;IACD,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import handler from './handler.js';\nimport { z } from 'zod';\n\nconst toolDefinition = {\n name: 'get_css_tokens',\n config: {\n description: 'Returns the CSS tokens for a specific category.',\n inputSchema: {\n category: z.string().describe('Token category: one of the category names returned by the listCSSTokens tool.'),\n },\n },\n handler: handler,\n};\n\nexport default toolDefinition;\n"]}
@@ -0,0 +1,5 @@
1
+ export interface TokenOutput {
2
+ token: string;
3
+ value: string;
4
+ }
5
+ export declare const buildTokens: (input: Record<string, object>) => Record<string, TokenOutput[]>;
@@ -0,0 +1,25 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
+ const isDesignToken = (v) => {
3
+ return v && typeof v === 'object' && typeof v.value === 'string' && Array.isArray(v.path);
4
+ };
5
+ const processTokenGroup = (prefix, group) => {
6
+ return Object.entries(group).flatMap(([key, value]) => {
7
+ if (isDesignToken(value)) {
8
+ return { token: `--${[...prefix, key].join('-')}`, value: value.value };
9
+ }
10
+ else if (value && typeof value === 'object') {
11
+ return processTokenGroup([...prefix, key], value);
12
+ }
13
+ else {
14
+ return [];
15
+ }
16
+ });
17
+ };
18
+ export const buildTokens = (input) => {
19
+ const result = {};
20
+ for (const category of Object.keys(input).filter((category) => category !== 'asset')) {
21
+ result[category] = processTokenGroup([category], input[category]);
22
+ }
23
+ return result;
24
+ };
25
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/tools/getCSSTokens/utils.ts"],"names":[],"mappings":"AAKA,8DAA8D;AAC9D,MAAM,aAAa,GAAG,CAAC,CAAM,EAA0C,EAAE;IACvE,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5F,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAAE,KAAa,EAAiB,EAAE;IAC3E,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1E,CAAC;aAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,iBAAiB,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAA6B,EAAiC,EAAE;IAC1F,MAAM,MAAM,GAAkC,EAAE,CAAC;IAEjD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","sourcesContent":["export interface TokenOutput {\n token: string;\n value: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isDesignToken = (v: any): v is { value: string; path: string[] } => {\n return v && typeof v === 'object' && typeof v.value === 'string' && Array.isArray(v.path);\n};\n\nconst processTokenGroup = (prefix: string[], group: object): TokenOutput[] => {\n return Object.entries(group).flatMap(([key, value]) => {\n if (isDesignToken(value)) {\n return { token: `--${[...prefix, key].join('-')}`, value: value.value };\n } else if (value && typeof value === 'object') {\n return processTokenGroup([...prefix, key], value);\n } else {\n return [];\n }\n });\n};\n\nexport const buildTokens = (input: Record<string, object>): Record<string, TokenOutput[]> => {\n const result: Record<string, TokenOutput[]> = {};\n\n for (const category of Object.keys(input).filter((category) => category !== 'asset')) {\n result[category] = processTokenGroup([category], input[category]);\n }\n\n return result;\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ export interface GetComponentDocsArgs {
3
+ component: string;
4
+ }
5
+ declare const _default: (args: GetComponentDocsArgs) => CallToolResult;
6
+ export default _default;
@@ -0,0 +1,27 @@
1
+ import { componentManifest } from '../../manifests/components/index.js';
2
+ export default (args) => {
3
+ const componentName = args.component.toLowerCase();
4
+ const component = componentManifest[componentName];
5
+ if (!component) {
6
+ return {
7
+ content: [
8
+ {
9
+ type: 'text',
10
+ text: JSON.stringify({
11
+ error: `Component '${componentName}' not found`,
12
+ available: Object.keys(componentManifest),
13
+ }),
14
+ },
15
+ ],
16
+ };
17
+ }
18
+ return {
19
+ content: [
20
+ {
21
+ type: 'text',
22
+ text: JSON.stringify(component),
23
+ },
24
+ ],
25
+ };
26
+ };
27
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/tools/getComponentDocs/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMpE,eAAe,CAAC,IAA0B,EAAkB,EAAE;IAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,KAAK,EAAE,cAAc,aAAa,aAAa;wBAC/C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;qBAC1C,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;aAChC;SACF;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { componentManifest } from '@/manifests/components/index.js';\n\nexport interface GetComponentDocsArgs {\n component: string;\n}\n\nexport default (args: GetComponentDocsArgs): CallToolResult => {\n const componentName = args.component.toLowerCase();\n const component = componentManifest[componentName];\n\n if (!component) {\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n error: `Component '${componentName}' not found`,\n available: Object.keys(componentManifest),\n }),\n },\n ],\n };\n }\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(component),\n },\n ],\n };\n};\n"]}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ declare const toolDefinition: {
3
+ name: string;
4
+ config: {
5
+ description: string;
6
+ inputSchema: {
7
+ component: z.ZodString;
8
+ };
9
+ };
10
+ handler: (args: import("./handler.js").GetComponentDocsArgs) => import("@modelcontextprotocol/sdk/types.js").CallToolResult;
11
+ };
12
+ export default toolDefinition;
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import handler from './handler.js';
3
+ const toolDefinition = {
4
+ name: 'get_component_docs',
5
+ config: {
6
+ description: 'Get documentation for a design system component (button, input, badge, checkbox, card, etc.)',
7
+ inputSchema: {
8
+ component: z.string().describe("Component name (e.g., 'button', 'input', 'badge')"),
9
+ },
10
+ },
11
+ handler,
12
+ };
13
+ export default toolDefinition;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/getComponentDocs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE;QACN,WAAW,EAAE,8FAA8F;QAC3G,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SACpF;KACF;IACD,OAAO;CACR,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import { z } from 'zod';\nimport handler from './handler.js';\n\nconst toolDefinition = {\n name: 'get_component_docs',\n config: {\n description: 'Get documentation for a design system component (button, input, badge, checkbox, card, etc.)',\n inputSchema: {\n component: z.string().describe(\"Component name (e.g., 'button', 'input', 'badge')\"),\n },\n },\n handler,\n};\n\nexport default toolDefinition;\n"]}
@@ -0,0 +1,6 @@
1
+ import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ export interface GetSetupGuideArgs {
3
+ type?: string;
4
+ }
5
+ declare const _default: (args: GetSetupGuideArgs) => CallToolResult;
6
+ export default _default;