@tekton-ui/mcp-server 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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +980 -0
  3. package/dist/auth/cache.d.ts +28 -0
  4. package/dist/auth/cache.d.ts.map +1 -0
  5. package/dist/auth/cache.js +48 -0
  6. package/dist/auth/cache.js.map +1 -0
  7. package/dist/auth/guard.d.ts +13 -0
  8. package/dist/auth/guard.d.ts.map +1 -0
  9. package/dist/auth/guard.js +21 -0
  10. package/dist/auth/guard.js.map +1 -0
  11. package/dist/auth/state.d.ts +32 -0
  12. package/dist/auth/state.d.ts.map +1 -0
  13. package/dist/auth/state.js +72 -0
  14. package/dist/auth/state.js.map +1 -0
  15. package/dist/auth/theme-access.d.ts +10 -0
  16. package/dist/auth/theme-access.d.ts.map +1 -0
  17. package/dist/auth/theme-access.js +24 -0
  18. package/dist/auth/theme-access.js.map +1 -0
  19. package/dist/auth/verify.d.ts +44 -0
  20. package/dist/auth/verify.d.ts.map +1 -0
  21. package/dist/auth/verify.js +77 -0
  22. package/dist/auth/verify.js.map +1 -0
  23. package/dist/cli/credentials.d.ts +29 -0
  24. package/dist/cli/credentials.d.ts.map +1 -0
  25. package/dist/cli/credentials.js +66 -0
  26. package/dist/cli/credentials.js.map +1 -0
  27. package/dist/cli/index.d.ts +7 -0
  28. package/dist/cli/index.d.ts.map +1 -0
  29. package/dist/cli/index.js +36 -0
  30. package/dist/cli/index.js.map +1 -0
  31. package/dist/cli/login.d.ts +9 -0
  32. package/dist/cli/login.d.ts.map +1 -0
  33. package/dist/cli/login.js +120 -0
  34. package/dist/cli/login.js.map +1 -0
  35. package/dist/cli/logout.d.ts +9 -0
  36. package/dist/cli/logout.d.ts.map +1 -0
  37. package/dist/cli/logout.js +18 -0
  38. package/dist/cli/logout.js.map +1 -0
  39. package/dist/cli/status.d.ts +9 -0
  40. package/dist/cli/status.d.ts.map +1 -0
  41. package/dist/cli/status.js +31 -0
  42. package/dist/cli/status.js.map +1 -0
  43. package/dist/data/component-registry.d.ts +30 -0
  44. package/dist/data/component-registry.d.ts.map +1 -0
  45. package/dist/data/component-registry.js +320 -0
  46. package/dist/data/component-registry.js.map +1 -0
  47. package/dist/data/examples/screen-examples.d.ts +38 -0
  48. package/dist/data/examples/screen-examples.d.ts.map +1 -0
  49. package/dist/data/examples/screen-examples.js +500 -0
  50. package/dist/data/examples/screen-examples.js.map +1 -0
  51. package/dist/data/hint-generator.d.ts +16 -0
  52. package/dist/data/hint-generator.d.ts.map +1 -0
  53. package/dist/data/hint-generator.js +298 -0
  54. package/dist/data/hint-generator.js.map +1 -0
  55. package/dist/data/recipe-resolver.d.ts +48 -0
  56. package/dist/data/recipe-resolver.d.ts.map +1 -0
  57. package/dist/data/recipe-resolver.js +226 -0
  58. package/dist/data/recipe-resolver.js.map +1 -0
  59. package/dist/data/template-matcher.d.ts +50 -0
  60. package/dist/data/template-matcher.d.ts.map +1 -0
  61. package/dist/data/template-matcher.js +240 -0
  62. package/dist/data/template-matcher.js.map +1 -0
  63. package/dist/generators/core-resolver.d.ts +56 -0
  64. package/dist/generators/core-resolver.d.ts.map +1 -0
  65. package/dist/generators/core-resolver.js +490 -0
  66. package/dist/generators/core-resolver.js.map +1 -0
  67. package/dist/generators/css-generator.d.ts +49 -0
  68. package/dist/generators/css-generator.d.ts.map +1 -0
  69. package/dist/generators/css-generator.js +294 -0
  70. package/dist/generators/css-generator.js.map +1 -0
  71. package/dist/generators/index.d.ts +13 -0
  72. package/dist/generators/index.d.ts.map +1 -0
  73. package/dist/generators/index.js +16 -0
  74. package/dist/generators/index.js.map +1 -0
  75. package/dist/generators/llm-generator.d.ts +96 -0
  76. package/dist/generators/llm-generator.d.ts.map +1 -0
  77. package/dist/generators/llm-generator.js +296 -0
  78. package/dist/generators/llm-generator.js.map +1 -0
  79. package/dist/index.d.ts +3 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +818 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/schemas/mcp-schemas.d.ts +4132 -0
  84. package/dist/schemas/mcp-schemas.d.ts.map +1 -0
  85. package/dist/schemas/mcp-schemas.js +946 -0
  86. package/dist/schemas/mcp-schemas.js.map +1 -0
  87. package/dist/storage/blueprint-storage.d.ts +68 -0
  88. package/dist/storage/blueprint-storage.d.ts.map +1 -0
  89. package/dist/storage/blueprint-storage.js +135 -0
  90. package/dist/storage/blueprint-storage.js.map +1 -0
  91. package/dist/storage/timestamp-manager.d.ts +32 -0
  92. package/dist/storage/timestamp-manager.d.ts.map +1 -0
  93. package/dist/storage/timestamp-manager.js +59 -0
  94. package/dist/storage/timestamp-manager.js.map +1 -0
  95. package/dist/tools/export-screen.d.ts +34 -0
  96. package/dist/tools/export-screen.d.ts.map +1 -0
  97. package/dist/tools/export-screen.js +344 -0
  98. package/dist/tools/export-screen.js.map +1 -0
  99. package/dist/tools/generate-blueprint.d.ts +15 -0
  100. package/dist/tools/generate-blueprint.d.ts.map +1 -0
  101. package/dist/tools/generate-blueprint.js +165 -0
  102. package/dist/tools/generate-blueprint.js.map +1 -0
  103. package/dist/tools/generate-screen.d.ts +13 -0
  104. package/dist/tools/generate-screen.d.ts.map +1 -0
  105. package/dist/tools/generate-screen.js +82 -0
  106. package/dist/tools/generate-screen.js.map +1 -0
  107. package/dist/tools/get-screen-generation-context.d.ts +11 -0
  108. package/dist/tools/get-screen-generation-context.d.ts.map +1 -0
  109. package/dist/tools/get-screen-generation-context.js +316 -0
  110. package/dist/tools/get-screen-generation-context.js.map +1 -0
  111. package/dist/tools/list-components.d.ts +15 -0
  112. package/dist/tools/list-components.d.ts.map +1 -0
  113. package/dist/tools/list-components.js +46 -0
  114. package/dist/tools/list-components.js.map +1 -0
  115. package/dist/tools/list-icon-libraries.d.ts +12 -0
  116. package/dist/tools/list-icon-libraries.d.ts.map +1 -0
  117. package/dist/tools/list-icon-libraries.js +48 -0
  118. package/dist/tools/list-icon-libraries.js.map +1 -0
  119. package/dist/tools/list-screen-templates.d.ts +15 -0
  120. package/dist/tools/list-screen-templates.d.ts.map +1 -0
  121. package/dist/tools/list-screen-templates.js +63 -0
  122. package/dist/tools/list-screen-templates.js.map +1 -0
  123. package/dist/tools/list-themes.d.ts +13 -0
  124. package/dist/tools/list-themes.d.ts.map +1 -0
  125. package/dist/tools/list-themes.js +42 -0
  126. package/dist/tools/list-themes.js.map +1 -0
  127. package/dist/tools/list-tokens.d.ts +13 -0
  128. package/dist/tools/list-tokens.d.ts.map +1 -0
  129. package/dist/tools/list-tokens.js +92 -0
  130. package/dist/tools/list-tokens.js.map +1 -0
  131. package/dist/tools/preview-component.d.ts +18 -0
  132. package/dist/tools/preview-component.d.ts.map +1 -0
  133. package/dist/tools/preview-component.js +178 -0
  134. package/dist/tools/preview-component.js.map +1 -0
  135. package/dist/tools/preview-icon-library.d.ts +13 -0
  136. package/dist/tools/preview-icon-library.d.ts.map +1 -0
  137. package/dist/tools/preview-icon-library.js +63 -0
  138. package/dist/tools/preview-icon-library.js.map +1 -0
  139. package/dist/tools/preview-screen-template.d.ts +18 -0
  140. package/dist/tools/preview-screen-template.d.ts.map +1 -0
  141. package/dist/tools/preview-screen-template.js +101 -0
  142. package/dist/tools/preview-screen-template.js.map +1 -0
  143. package/dist/tools/preview-theme.d.ts +15 -0
  144. package/dist/tools/preview-theme.d.ts.map +1 -0
  145. package/dist/tools/preview-theme.js +71 -0
  146. package/dist/tools/preview-theme.js.map +1 -0
  147. package/dist/tools/validate-environment.d.ts +37 -0
  148. package/dist/tools/validate-environment.d.ts.map +1 -0
  149. package/dist/tools/validate-environment.js +153 -0
  150. package/dist/tools/validate-environment.js.map +1 -0
  151. package/dist/tools/validate-screen-definition.d.ts +10 -0
  152. package/dist/tools/validate-screen-definition.d.ts.map +1 -0
  153. package/dist/tools/validate-screen-definition.js +463 -0
  154. package/dist/tools/validate-screen-definition.js.map +1 -0
  155. package/dist/tools/validate-screen.d.ts +13 -0
  156. package/dist/tools/validate-screen.d.ts.map +1 -0
  157. package/dist/tools/validate-screen.js +106 -0
  158. package/dist/tools/validate-screen.js.map +1 -0
  159. package/dist/utils/dependency-extractor.d.ts +13 -0
  160. package/dist/utils/dependency-extractor.d.ts.map +1 -0
  161. package/dist/utils/dependency-extractor.js +232 -0
  162. package/dist/utils/dependency-extractor.js.map +1 -0
  163. package/dist/utils/error-handler.d.ts +29 -0
  164. package/dist/utils/error-handler.d.ts.map +1 -0
  165. package/dist/utils/error-handler.js +48 -0
  166. package/dist/utils/error-handler.js.map +1 -0
  167. package/dist/utils/logger.d.ts +8 -0
  168. package/dist/utils/logger.d.ts.map +1 -0
  169. package/dist/utils/logger.js +14 -0
  170. package/dist/utils/logger.js.map +1 -0
  171. package/dist/utils/package-json-reader.d.ts +37 -0
  172. package/dist/utils/package-json-reader.d.ts.map +1 -0
  173. package/dist/utils/package-json-reader.js +108 -0
  174. package/dist/utils/package-json-reader.js.map +1 -0
  175. package/dist/utils/tailwind-config-reader.d.ts +23 -0
  176. package/dist/utils/tailwind-config-reader.d.ts.map +1 -0
  177. package/dist/utils/tailwind-config-reader.js +81 -0
  178. package/dist/utils/tailwind-config-reader.js.map +1 -0
  179. package/package.json +72 -0
@@ -0,0 +1,13 @@
1
+ /**
2
+ * List Tokens MCP Tool
3
+ * SPEC-LAYOUT-002 Phase 4: List available layout tokens from SPEC-LAYOUT-001
4
+ */
5
+ import type { ListTokensInput, ListTokensOutput } from '../schemas/mcp-schemas.js';
6
+ /**
7
+ * List available layout tokens from @tekton-ui/core
8
+ *
9
+ * @param input - Token type filter and optional pattern filter
10
+ * @returns Categorized list of available tokens
11
+ */
12
+ export declare function listTokensTool(input: ListTokensInput): Promise<ListTokensOutput>;
13
+ //# sourceMappingURL=list-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-tokens.d.ts","sourceRoot":"","sources":["../../src/tools/list-tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAiB,MAAM,2BAA2B,CAAC;AAwBlG;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6EtF"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * List Tokens MCP Tool
3
+ * SPEC-LAYOUT-002 Phase 4: List available layout tokens from SPEC-LAYOUT-001
4
+ */
5
+ import { extractErrorMessage } from '../utils/error-handler.js';
6
+ /**
7
+ * Apply pattern filter to tokens
8
+ *
9
+ * @param tokens - Array of token metadata
10
+ * @param filter - Optional pattern filter (case-insensitive substring match)
11
+ * @returns Filtered tokens
12
+ */
13
+ function applyFilter(tokens, filter) {
14
+ if (!filter) {
15
+ return tokens;
16
+ }
17
+ const lowerFilter = filter.toLowerCase();
18
+ return tokens.filter(token => token.id.toLowerCase().includes(lowerFilter) ||
19
+ token.name?.toLowerCase().includes(lowerFilter) ||
20
+ token.description?.toLowerCase().includes(lowerFilter));
21
+ }
22
+ /**
23
+ * List available layout tokens from @tekton-ui/core
24
+ *
25
+ * @param input - Token type filter and optional pattern filter
26
+ * @returns Categorized list of available tokens
27
+ */
28
+ export async function listTokensTool(input) {
29
+ try {
30
+ const { tokenType = 'all', filter } = input;
31
+ // Import token getters from @tekton-ui/core
32
+ const { getAllShellTokens, getAllMobileShellTokens, getAllPageLayoutTokens, getAllSectionPatternTokens, } = await import('@tekton-ui/core');
33
+ // Get tokens based on type
34
+ let shells = [];
35
+ let pages = [];
36
+ let sections = [];
37
+ if (tokenType === 'all' || tokenType === 'shell') {
38
+ // Get both web and mobile shell tokens (SPEC-LAYOUT-001 + SPEC-LAYOUT-004)
39
+ const webShellTokens = getAllShellTokens();
40
+ const mobileShellTokens = getAllMobileShellTokens();
41
+ const allShellTokens = [...webShellTokens, ...mobileShellTokens];
42
+ shells = allShellTokens.map(token => ({
43
+ id: token.id,
44
+ name: token.id.split('.').pop() || token.id, // Extract name from id
45
+ description: token.description,
46
+ platform: token.platform,
47
+ }));
48
+ }
49
+ if (tokenType === 'all' || tokenType === 'page') {
50
+ const pageTokens = getAllPageLayoutTokens();
51
+ pages = pageTokens.map(token => ({
52
+ id: token.id,
53
+ name: token.id.split('.').pop() || token.id, // Extract name from id
54
+ description: token.description,
55
+ purpose: token.purpose,
56
+ }));
57
+ }
58
+ if (tokenType === 'all' || tokenType === 'section') {
59
+ const sectionTokens = getAllSectionPatternTokens();
60
+ sections = sectionTokens.map(token => ({
61
+ id: token.id,
62
+ name: token.id.split('.').pop() || token.id, // Extract name from id
63
+ description: token.description,
64
+ type: token.type,
65
+ }));
66
+ }
67
+ // Apply filter if provided
68
+ if (filter) {
69
+ shells = applyFilter(shells, filter);
70
+ pages = applyFilter(pages, filter);
71
+ sections = applyFilter(sections, filter);
72
+ }
73
+ const total = shells.length + pages.length + sections.length;
74
+ return {
75
+ success: true,
76
+ shells: shells.length > 0 ? shells : undefined,
77
+ pages: pages.length > 0 ? pages : undefined,
78
+ sections: sections.length > 0 ? sections : undefined,
79
+ metadata: {
80
+ total,
81
+ filtered: filter ? total : undefined,
82
+ },
83
+ };
84
+ }
85
+ catch (error) {
86
+ return {
87
+ success: false,
88
+ error: extractErrorMessage(error),
89
+ };
90
+ }
91
+ }
92
+ //# sourceMappingURL=list-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-tokens.js","sourceRoot":"","sources":["../../src/tools/list-tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,MAAuB,EAAE,MAAe;IAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAClB,KAAK,CAAC,EAAE,CACN,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC/C,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CACzD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAsB;IACzD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAE5C,4CAA4C;QAC5C,MAAM,EACJ,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,GAC3B,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEpC,2BAA2B;QAC3B,IAAI,MAAM,GAAoB,EAAE,CAAC;QACjC,IAAI,KAAK,GAAoB,EAAE,CAAC;QAChC,IAAI,QAAQ,GAAoB,EAAE,CAAC;QAEnC,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACjD,2EAA2E;YAC3E,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAC3C,MAAM,iBAAiB,GAAG,uBAAuB,EAAE,CAAC;YAEpD,MAAM,cAAc,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,iBAAiB,CAAC,CAAC;YAEjE,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpC,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,uBAAuB;gBACpE,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAC;YAC5C,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC/B,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,uBAAuB;gBACpE,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,aAAa,GAAG,0BAA0B,EAAE,CAAC;YACnD,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrC,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,uBAAuB;gBACpE,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,2BAA2B;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACnC,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE7D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC9C,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC3C,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACpD,QAAQ,EAAE;gBACR,KAAK;gBACL,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACrC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;SAClC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Preview Component MCP Tool (SPEC-MCP-003)
3
+ * [TAG-MCP003-007] Preview component with detailed information
4
+ *
5
+ * Returns detailed component information including:
6
+ * - Props and variants
7
+ * - Sub-components
8
+ * - Import statements
9
+ * - Dependencies
10
+ * - Usage examples
11
+ */
12
+ import type { PreviewComponentInput, PreviewComponentOutput } from '../schemas/mcp-schemas.js';
13
+ /**
14
+ * Preview a component with detailed information
15
+ * [TAG-MCP003-012] Component not found error handling
16
+ */
17
+ export declare function previewComponentTool(input: PreviewComponentInput): Promise<PreviewComponentOutput>;
18
+ //# sourceMappingURL=preview-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-component.d.ts","sourceRoot":"","sources":["../../src/tools/preview-component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EAIvB,MAAM,2BAA2B,CAAC;AAkInC;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CA+CjC"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Preview Component MCP Tool (SPEC-MCP-003)
3
+ * [TAG-MCP003-007] Preview component with detailed information
4
+ *
5
+ * Returns detailed component information including:
6
+ * - Props and variants
7
+ * - Sub-components
8
+ * - Import statements
9
+ * - Dependencies
10
+ * - Usage examples
11
+ */
12
+ import { getComponentById, getAllComponents } from '../data/component-registry.js';
13
+ import { extractErrorMessage } from '../utils/error-handler.js';
14
+ /**
15
+ * Component details database
16
+ * Maps component IDs to their full specifications
17
+ */
18
+ const COMPONENT_DETAILS = {
19
+ button: {
20
+ props: [
21
+ {
22
+ name: 'variant',
23
+ type: "'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'",
24
+ required: false,
25
+ defaultValue: "'default'",
26
+ description: 'Visual style variant',
27
+ },
28
+ {
29
+ name: 'size',
30
+ type: "'default' | 'sm' | 'lg' | 'icon'",
31
+ required: false,
32
+ defaultValue: "'default'",
33
+ description: 'Button size',
34
+ },
35
+ {
36
+ name: 'asChild',
37
+ type: 'boolean',
38
+ required: false,
39
+ defaultValue: 'false',
40
+ description: 'Render as child element',
41
+ },
42
+ ],
43
+ variants: [
44
+ { name: 'variant', value: 'default', description: 'Default blue button' },
45
+ { name: 'variant', value: 'destructive', description: 'Red destructive action' },
46
+ { name: 'variant', value: 'outline', description: 'Outlined button' },
47
+ { name: 'variant', value: 'secondary', description: 'Secondary gray button' },
48
+ { name: 'variant', value: 'ghost', description: 'Transparent ghost button' },
49
+ { name: 'variant', value: 'link', description: 'Link-styled button' },
50
+ ],
51
+ dependencies: {
52
+ internal: [],
53
+ external: ['@radix-ui/react-slot'],
54
+ },
55
+ examples: [
56
+ {
57
+ title: 'Basic Usage',
58
+ code: `import { Button } from '@tekton-ui/ui';\n\n<Button variant="default">Click me</Button>`,
59
+ description: 'Simple button with default variant',
60
+ },
61
+ {
62
+ title: 'Destructive Action',
63
+ code: `<Button variant="destructive">Delete</Button>`,
64
+ description: 'Button for destructive actions',
65
+ },
66
+ ],
67
+ accessibility: 'Supports keyboard navigation and ARIA attributes',
68
+ },
69
+ card: {
70
+ props: [
71
+ {
72
+ name: 'className',
73
+ type: 'string',
74
+ required: false,
75
+ description: 'Additional CSS classes',
76
+ },
77
+ ],
78
+ subComponents: ['CardHeader', 'CardTitle', 'CardDescription', 'CardContent', 'CardFooter'],
79
+ dependencies: {
80
+ internal: [],
81
+ external: [],
82
+ },
83
+ examples: [
84
+ {
85
+ title: 'Basic Card',
86
+ code: `import { Card, CardHeader, CardTitle, CardContent } from '@tekton-ui/ui';\n\n<Card>\n <CardHeader>\n <CardTitle>Card Title</CardTitle>\n </CardHeader>\n <CardContent>Card content here</CardContent>\n</Card>`,
87
+ description: 'Card with header and content',
88
+ },
89
+ ],
90
+ accessibility: 'Semantic HTML structure for screen readers',
91
+ },
92
+ dialog: {
93
+ props: [
94
+ {
95
+ name: 'open',
96
+ type: 'boolean',
97
+ required: false,
98
+ description: 'Controlled open state',
99
+ },
100
+ {
101
+ name: 'onOpenChange',
102
+ type: '(open: boolean) => void',
103
+ required: false,
104
+ description: 'Callback when open state changes',
105
+ },
106
+ ],
107
+ subComponents: [
108
+ 'DialogTrigger',
109
+ 'DialogContent',
110
+ 'DialogHeader',
111
+ 'DialogTitle',
112
+ 'DialogDescription',
113
+ 'DialogFooter',
114
+ 'DialogClose',
115
+ ],
116
+ dependencies: {
117
+ internal: [],
118
+ external: ['@radix-ui/react-dialog'],
119
+ },
120
+ examples: [
121
+ {
122
+ title: 'Basic Dialog',
123
+ code: `import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle } from '@tekton-ui/ui';\n\n<Dialog>\n <DialogTrigger asChild>\n <Button>Open</Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Dialog Title</DialogTitle>\n </DialogHeader>\n </DialogContent>\n</Dialog>`,
124
+ description: 'Modal dialog with trigger button',
125
+ },
126
+ ],
127
+ accessibility: 'Focus trap, ESC to close, ARIA dialog role',
128
+ },
129
+ };
130
+ /**
131
+ * Preview a component with detailed information
132
+ * [TAG-MCP003-012] Component not found error handling
133
+ */
134
+ export async function previewComponentTool(input) {
135
+ try {
136
+ // Set default values for optional parameters
137
+ const includeExamples = input.includeExamples ?? true;
138
+ const includeDependencies = input.includeDependencies ?? true;
139
+ const componentMeta = getComponentById(input.componentId);
140
+ if (!componentMeta) {
141
+ // [TAG-MCP003-012] Return error with available components
142
+ const availableComponents = getAllComponents().map(c => c.id);
143
+ return {
144
+ success: false,
145
+ error: `Component not found: ${input.componentId}. Available components: ${availableComponents.join(', ')}`,
146
+ };
147
+ }
148
+ const details = COMPONENT_DETAILS[input.componentId];
149
+ // Build component preview
150
+ const component = {
151
+ id: componentMeta.id,
152
+ name: componentMeta.name,
153
+ category: componentMeta.category,
154
+ description: componentMeta.description,
155
+ tier: componentMeta.tier,
156
+ props: details?.props || [],
157
+ variants: includeExamples && details?.variants ? details.variants : undefined,
158
+ subComponents: details?.subComponents,
159
+ importStatement: details?.subComponents
160
+ ? `import { ${componentMeta.name}, ${details.subComponents.join(', ')} } from '@tekton-ui/ui';`
161
+ : `import { ${componentMeta.name} } from '@tekton-ui/ui';`,
162
+ dependencies: includeDependencies ? details?.dependencies : undefined,
163
+ examples: includeExamples && details?.examples ? details.examples : undefined,
164
+ accessibility: details?.accessibility,
165
+ };
166
+ return {
167
+ success: true,
168
+ component,
169
+ };
170
+ }
171
+ catch (error) {
172
+ return {
173
+ success: false,
174
+ error: extractErrorMessage(error),
175
+ };
176
+ }
177
+ }
178
+ //# sourceMappingURL=preview-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-component.js","sourceRoot":"","sources":["../../src/tools/preview-component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * MCP Tool: preview-icon-library
3
+ * Preview a specific icon library and retrieve its full data
4
+ * [SPEC-ICON-001]
5
+ */
6
+ import type { PreviewIconLibraryInput, PreviewIconLibraryOutput } from '../schemas/mcp-schemas.js';
7
+ /**
8
+ * Preview an icon library and retrieve its full data
9
+ * @param input - Library ID to preview
10
+ * @returns Full icon library data
11
+ */
12
+ export declare function previewIconLibraryTool(input: PreviewIconLibraryInput): Promise<PreviewIconLibraryOutput>;
13
+ //# sourceMappingURL=preview-icon-library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-icon-library.d.ts","sourceRoot":"","sources":["../../src/tools/preview-icon-library.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAGnG;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAuDnC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * MCP Tool: preview-icon-library
3
+ * Preview a specific icon library and retrieve its full data
4
+ * [SPEC-ICON-001]
5
+ */
6
+ import { loadIconLibrary, iconLibraryExists } from '@tekton-ui/core';
7
+ import { info, error as logError } from '../utils/logger.js';
8
+ /**
9
+ * Preview an icon library and retrieve its full data
10
+ * @param input - Library ID to preview
11
+ * @returns Full icon library data
12
+ */
13
+ export async function previewIconLibraryTool(input) {
14
+ const { libraryId } = input;
15
+ info(`preview-icon-library: Previewing library "${libraryId}"`);
16
+ // Check if library exists
17
+ if (!iconLibraryExists(libraryId)) {
18
+ logError(`preview-icon-library: Library "${libraryId}" not found`);
19
+ return {
20
+ success: false,
21
+ error: `Icon library "${libraryId}" not found. Use list-icon-libraries to see available libraries.`,
22
+ };
23
+ }
24
+ try {
25
+ const library = loadIconLibrary(libraryId);
26
+ if (!library) {
27
+ return {
28
+ success: false,
29
+ error: `Failed to load icon library "${libraryId}"`,
30
+ };
31
+ }
32
+ // Get first 20 icons as sample
33
+ const iconNames = Object.keys(library.icons);
34
+ const iconSample = iconNames.slice(0, 20);
35
+ info(`preview-icon-library: Successfully loaded library "${libraryId}"`);
36
+ return {
37
+ success: true,
38
+ library: {
39
+ id: library.id,
40
+ name: library.name,
41
+ description: library.description,
42
+ version: library.version,
43
+ license: library.license,
44
+ website: library.website,
45
+ totalIcons: library.totalIcons,
46
+ categories: library.categories,
47
+ sizeMapping: library.sizeMapping,
48
+ frameworks: library.frameworks,
49
+ defaultVariant: library.defaultVariant,
50
+ iconSample,
51
+ },
52
+ };
53
+ }
54
+ catch (err) {
55
+ const errorMessage = err instanceof Error ? err.message : String(err);
56
+ logError(`preview-icon-library: Failed to preview library: ${errorMessage}`);
57
+ return {
58
+ success: false,
59
+ error: `Failed to preview icon library: ${errorMessage}`,
60
+ };
61
+ }
62
+ }
63
+ //# sourceMappingURL=preview-icon-library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-icon-library.js","sourceRoot":"","sources":["../../src/tools/preview-icon-library.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAA8B;IAE9B,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE5B,IAAI,CAAC,6CAA6C,SAAS,GAAG,CAAC,CAAC;IAEhE,0BAA0B;IAC1B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,kCAAkC,SAAS,aAAa,CAAC,CAAC;QACnE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iBAAiB,SAAS,kEAAkE;SACpG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,gCAAgC,SAAS,GAAG;aACpD,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC,sDAAsD,SAAS,GAAG,CAAC,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,UAAU;aACX;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,QAAQ,CAAC,oDAAoD,YAAY,EAAE,CAAC,CAAC;QAC7E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mCAAmC,YAAY,EAAE;SACzD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Preview Screen Template MCP Tool (SPEC-MCP-003)
3
+ * [TAG-MCP003-009] Preview template with detailed structure
4
+ *
5
+ * Returns detailed template information including:
6
+ * - Skeleton structure (non-customizable)
7
+ * - Layout configuration (responsive breakpoints)
8
+ * - Customization boundaries (what AI can modify)
9
+ * - Required components
10
+ * - Example props
11
+ */
12
+ import type { PreviewScreenTemplateInput, PreviewScreenTemplateOutput } from '../schemas/mcp-schemas.js';
13
+ /**
14
+ * Preview a screen template with detailed structure
15
+ * [TAG-MCP003-013] Template not found error handling
16
+ */
17
+ export declare function previewScreenTemplateTool(input: PreviewScreenTemplateInput): Promise<PreviewScreenTemplateOutput>;
18
+ //# sourceMappingURL=preview-screen-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-screen-template.d.ts","sourceRoot":"","sources":["../../src/tools/preview-screen-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAG5B,MAAM,2BAA2B,CAAC;AAGnC;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,2BAA2B,CAAC,CAuFtC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Preview Screen Template MCP Tool (SPEC-MCP-003)
3
+ * [TAG-MCP003-009] Preview template with detailed structure
4
+ *
5
+ * Returns detailed template information including:
6
+ * - Skeleton structure (non-customizable)
7
+ * - Layout configuration (responsive breakpoints)
8
+ * - Customization boundaries (what AI can modify)
9
+ * - Required components
10
+ * - Example props
11
+ */
12
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
13
+ // @ts-nocheck
14
+ import { templateRegistry } from '@tekton-ui/ui';
15
+ import { extractErrorMessage } from '../utils/error-handler.js';
16
+ /**
17
+ * Preview a screen template with detailed structure
18
+ * [TAG-MCP003-013] Template not found error handling
19
+ */
20
+ export async function previewScreenTemplateTool(input) {
21
+ try {
22
+ // Set default value for optional parameter
23
+ const includeLayoutTokens = input.includeLayoutTokens ?? true;
24
+ const template = templateRegistry.get(input.templateId);
25
+ if (!template) {
26
+ // [TAG-MCP003-013] Return error with available templates
27
+ const availableTemplates = templateRegistry.getAll().map((t) => t.id);
28
+ return {
29
+ success: false,
30
+ error: `Template not found: ${input.templateId}. Available templates: ${availableTemplates.join(', ')}`,
31
+ };
32
+ }
33
+ // Build skeleton structure
34
+ const skeleton = {
35
+ shell: template.skeleton.shell,
36
+ page: template.skeleton.page,
37
+ sections: template.skeleton.sections.map((s) => ({
38
+ id: s.id,
39
+ name: s.name,
40
+ slot: s.slot,
41
+ required: s.required,
42
+ })),
43
+ };
44
+ // Build layout configuration
45
+ const layout = {
46
+ type: template.layout.type,
47
+ responsive: includeLayoutTokens && template.layout.responsive
48
+ ? {
49
+ mobile: {
50
+ padding: template.layout.responsive.mobile.padding,
51
+ gap: template.layout.responsive.mobile.gap,
52
+ columns: template.layout.responsive.mobile.columns,
53
+ },
54
+ tablet: {
55
+ padding: template.layout.responsive.tablet.padding,
56
+ gap: template.layout.responsive.tablet.gap,
57
+ columns: template.layout.responsive.tablet.columns,
58
+ },
59
+ desktop: {
60
+ padding: template.layout.responsive.desktop.padding,
61
+ gap: template.layout.responsive.desktop.gap,
62
+ columns: template.layout.responsive.desktop.columns,
63
+ },
64
+ }
65
+ : undefined,
66
+ };
67
+ // Build customization boundaries
68
+ const customizable = {
69
+ texts: template.customizable.texts,
70
+ optional: template.customizable.optional,
71
+ slots: template.customizable.slots,
72
+ };
73
+ // Build import statement
74
+ const importStatement = `import { ${template.name}Template } from '@tekton-ui/ui';`;
75
+ return {
76
+ success: true,
77
+ template: {
78
+ id: template.id,
79
+ name: template.name,
80
+ category: template.category,
81
+ description: template.description,
82
+ version: template.version,
83
+ skeleton,
84
+ layout,
85
+ customizable,
86
+ requiredComponents: template.requiredComponents,
87
+ importStatement,
88
+ created: template.created,
89
+ updated: template.updated,
90
+ tags: template.tags,
91
+ },
92
+ };
93
+ }
94
+ catch (error) {
95
+ return {
96
+ success: false,
97
+ error: extractErrorMessage(error),
98
+ };
99
+ }
100
+ }
101
+ //# sourceMappingURL=preview-screen-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-screen-template.js","sourceRoot":"","sources":["../../src/tools/preview-screen-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Preview Theme MCP Tool (v2.1)
3
+ * SPEC-MCP-002: E-002 Theme Preview Request
4
+ * SPEC-DEPLOY-001: 인증된 사용자의 라이선스 보유 테마만 접근 가능
5
+ */
6
+ import type { PreviewThemeInput, PreviewThemeOutput } from '../schemas/mcp-schemas.js';
7
+ /**
8
+ * Preview theme MCP tool implementation
9
+ * 인증된 사용자의 라이선스 보유 테마만 미리보기 가능
10
+ *
11
+ * @param input - Theme ID to preview
12
+ * @returns Full v2.1 theme data (MCP JSON-RPC format)
13
+ */
14
+ export declare function previewThemeTool(input: PreviewThemeInput): Promise<PreviewThemeOutput>;
15
+ //# sourceMappingURL=preview-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-theme.d.ts","sourceRoot":"","sources":["../../src/tools/preview-theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIvF;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0D5F"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Preview Theme MCP Tool (v2.1)
3
+ * SPEC-MCP-002: E-002 Theme Preview Request
4
+ * SPEC-DEPLOY-001: 인증된 사용자의 라이선스 보유 테마만 접근 가능
5
+ */
6
+ import { loadTheme, listThemes } from '@tekton-ui/core';
7
+ import { createThemeNotFoundError, extractErrorMessage } from '../utils/error-handler.js';
8
+ import { getAuthData } from '../auth/state.js';
9
+ /**
10
+ * Preview theme MCP tool implementation
11
+ * 인증된 사용자의 라이선스 보유 테마만 미리보기 가능
12
+ *
13
+ * @param input - Theme ID to preview
14
+ * @returns Full v2.1 theme data (MCP JSON-RPC format)
15
+ */
16
+ export async function previewThemeTool(input) {
17
+ try {
18
+ const authData = getAuthData();
19
+ const themeId = input.themeId;
20
+ // 인증 + 라이선스 확인
21
+ if (!authData || !authData.valid) {
22
+ return {
23
+ success: false,
24
+ error: `Authentication required to preview themes. Run \`tekton-mcp login\` to authenticate.`,
25
+ };
26
+ }
27
+ // 라이선스 보유 확인
28
+ const licensedThemes = authData.themes?.licensed || [];
29
+ if (!licensedThemes.includes(themeId)) {
30
+ return {
31
+ success: false,
32
+ error: `Theme "${themeId}" is not included in your license. Please purchase this theme at https://tekton-ui.com.`,
33
+ };
34
+ }
35
+ // @tekton-ui/core에서 테마 로드
36
+ const theme = loadTheme(themeId);
37
+ if (!theme) {
38
+ const availableThemes = listThemes().map((t) => t.id);
39
+ return createThemeNotFoundError(themeId, availableThemes);
40
+ }
41
+ // v2.1 테마 데이터 반환
42
+ return {
43
+ success: true,
44
+ theme: {
45
+ id: theme.id,
46
+ name: theme.name,
47
+ description: theme.description,
48
+ brandTone: theme.brandTone,
49
+ schemaVersion: theme.schemaVersion,
50
+ designDNA: theme.designDNA,
51
+ tokens: {
52
+ atomic: theme.tokens.atomic,
53
+ semantic: theme.tokens.semantic,
54
+ component: theme.tokens.component,
55
+ recipes: theme.tokens.recipes,
56
+ },
57
+ stateLayer: theme.stateLayer,
58
+ motion: theme.motion,
59
+ elevation: theme.elevation,
60
+ typography: theme.typography,
61
+ },
62
+ };
63
+ }
64
+ catch (error) {
65
+ return {
66
+ success: false,
67
+ error: extractErrorMessage(error),
68
+ };
69
+ }
70
+ }
71
+ //# sourceMappingURL=preview-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-theme.js","sourceRoot":"","sources":["../../src/tools/preview-theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAwB;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE9B,eAAe;QACf,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,sFAAsF;aAC9F,CAAC;QACJ,CAAC;QAED,aAAa;QACb,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,UAAU,OAAO,yFAAyF;aAClH,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,eAAe,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,wBAAwB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC5D,CAAC;QAED,iBAAiB;QACjB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE;gBACL,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE;oBACN,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;oBAC3B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;oBAC/B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;oBACjC,OAAO,EAAG,KAAK,CAAC,MAAc,CAAC,OAAO;iBACvC;gBACD,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;SAClC,CAAC;IACJ,CAAC;AACH,CAAC"}