@obra-studio/figma-console-mcp 1.32.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 (354) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +879 -0
  3. package/dist/apps/design-system-dashboard/scoring/accessibility.d.ts +14 -0
  4. package/dist/apps/design-system-dashboard/scoring/accessibility.d.ts.map +1 -0
  5. package/dist/apps/design-system-dashboard/scoring/accessibility.js +278 -0
  6. package/dist/apps/design-system-dashboard/scoring/accessibility.js.map +1 -0
  7. package/dist/apps/design-system-dashboard/scoring/component-metadata.d.ts +29 -0
  8. package/dist/apps/design-system-dashboard/scoring/component-metadata.d.ts.map +1 -0
  9. package/dist/apps/design-system-dashboard/scoring/component-metadata.js +358 -0
  10. package/dist/apps/design-system-dashboard/scoring/component-metadata.js.map +1 -0
  11. package/dist/apps/design-system-dashboard/scoring/consistency.d.ts +14 -0
  12. package/dist/apps/design-system-dashboard/scoring/consistency.d.ts.map +1 -0
  13. package/dist/apps/design-system-dashboard/scoring/consistency.js +342 -0
  14. package/dist/apps/design-system-dashboard/scoring/consistency.js.map +1 -0
  15. package/dist/apps/design-system-dashboard/scoring/coverage.d.ts +14 -0
  16. package/dist/apps/design-system-dashboard/scoring/coverage.d.ts.map +1 -0
  17. package/dist/apps/design-system-dashboard/scoring/coverage.js +231 -0
  18. package/dist/apps/design-system-dashboard/scoring/coverage.js.map +1 -0
  19. package/dist/apps/design-system-dashboard/scoring/engine.d.ts +27 -0
  20. package/dist/apps/design-system-dashboard/scoring/engine.d.ts.map +1 -0
  21. package/dist/apps/design-system-dashboard/scoring/engine.js +93 -0
  22. package/dist/apps/design-system-dashboard/scoring/engine.js.map +1 -0
  23. package/dist/apps/design-system-dashboard/scoring/naming-semantics.d.ts +14 -0
  24. package/dist/apps/design-system-dashboard/scoring/naming-semantics.d.ts.map +1 -0
  25. package/dist/apps/design-system-dashboard/scoring/naming-semantics.js +309 -0
  26. package/dist/apps/design-system-dashboard/scoring/naming-semantics.js.map +1 -0
  27. package/dist/apps/design-system-dashboard/scoring/token-architecture.d.ts +14 -0
  28. package/dist/apps/design-system-dashboard/scoring/token-architecture.d.ts.map +1 -0
  29. package/dist/apps/design-system-dashboard/scoring/token-architecture.js +350 -0
  30. package/dist/apps/design-system-dashboard/scoring/token-architecture.js.map +1 -0
  31. package/dist/apps/design-system-dashboard/scoring/types.d.ts +89 -0
  32. package/dist/apps/design-system-dashboard/scoring/types.d.ts.map +1 -0
  33. package/dist/apps/design-system-dashboard/scoring/types.js +41 -0
  34. package/dist/apps/design-system-dashboard/scoring/types.js.map +1 -0
  35. package/dist/apps/design-system-dashboard/server.d.ts +24 -0
  36. package/dist/apps/design-system-dashboard/server.d.ts.map +1 -0
  37. package/dist/apps/design-system-dashboard/server.js +160 -0
  38. package/dist/apps/design-system-dashboard/server.js.map +1 -0
  39. package/dist/apps/token-browser/server.d.ts +26 -0
  40. package/dist/apps/token-browser/server.d.ts.map +1 -0
  41. package/dist/apps/token-browser/server.js +137 -0
  42. package/dist/apps/token-browser/server.js.map +1 -0
  43. package/dist/browser/base.d.ts +58 -0
  44. package/dist/browser/base.d.ts.map +1 -0
  45. package/dist/browser/base.js +6 -0
  46. package/dist/browser/base.js.map +1 -0
  47. package/dist/browser/local.d.ts +87 -0
  48. package/dist/browser/local.d.ts.map +1 -0
  49. package/dist/browser/local.js +318 -0
  50. package/dist/browser/local.js.map +1 -0
  51. package/dist/core/accessibility-tools.d.ts +21 -0
  52. package/dist/core/accessibility-tools.d.ts.map +1 -0
  53. package/dist/core/accessibility-tools.js +307 -0
  54. package/dist/core/accessibility-tools.js.map +1 -0
  55. package/dist/core/annotation-tools.d.ts +14 -0
  56. package/dist/core/annotation-tools.d.ts.map +1 -0
  57. package/dist/core/annotation-tools.js +231 -0
  58. package/dist/core/annotation-tools.js.map +1 -0
  59. package/dist/core/autodocs-tools.d.ts +7 -0
  60. package/dist/core/autodocs-tools.d.ts.map +1 -0
  61. package/dist/core/autodocs-tools.js +195 -0
  62. package/dist/core/autodocs-tools.js.map +1 -0
  63. package/dist/core/comment-tools.d.ts +11 -0
  64. package/dist/core/comment-tools.d.ts.map +1 -0
  65. package/dist/core/comment-tools.js +293 -0
  66. package/dist/core/comment-tools.js.map +1 -0
  67. package/dist/core/config.d.ts +17 -0
  68. package/dist/core/config.d.ts.map +1 -0
  69. package/dist/core/config.js +154 -0
  70. package/dist/core/config.js.map +1 -0
  71. package/dist/core/console-monitor.d.ts +82 -0
  72. package/dist/core/console-monitor.d.ts.map +1 -0
  73. package/dist/core/console-monitor.js +428 -0
  74. package/dist/core/console-monitor.js.map +1 -0
  75. package/dist/core/deep-component-tools.d.ts +14 -0
  76. package/dist/core/deep-component-tools.d.ts.map +1 -0
  77. package/dist/core/deep-component-tools.js +129 -0
  78. package/dist/core/deep-component-tools.js.map +1 -0
  79. package/dist/core/design-code-tools.d.ts +116 -0
  80. package/dist/core/design-code-tools.d.ts.map +1 -0
  81. package/dist/core/design-code-tools.js +2751 -0
  82. package/dist/core/design-code-tools.js.map +1 -0
  83. package/dist/core/design-system-manifest.d.ts +272 -0
  84. package/dist/core/design-system-manifest.d.ts.map +1 -0
  85. package/dist/core/design-system-manifest.js +261 -0
  86. package/dist/core/design-system-manifest.js.map +1 -0
  87. package/dist/core/design-system-tools.d.ts +67 -0
  88. package/dist/core/design-system-tools.d.ts.map +1 -0
  89. package/dist/core/design-system-tools.js +874 -0
  90. package/dist/core/design-system-tools.js.map +1 -0
  91. package/dist/core/diagnose-tool.d.ts +33 -0
  92. package/dist/core/diagnose-tool.d.ts.map +1 -0
  93. package/dist/core/diagnose-tool.js +97 -0
  94. package/dist/core/diagnose-tool.js.map +1 -0
  95. package/dist/core/diff/changelog-formatter.d.ts +35 -0
  96. package/dist/core/diff/changelog-formatter.d.ts.map +1 -0
  97. package/dist/core/diff/changelog-formatter.js +276 -0
  98. package/dist/core/diff/changelog-formatter.js.map +1 -0
  99. package/dist/core/diff/diff-engine.d.ts +127 -0
  100. package/dist/core/diff/diff-engine.d.ts.map +1 -0
  101. package/dist/core/diff/diff-engine.js +335 -0
  102. package/dist/core/diff/diff-engine.js.map +1 -0
  103. package/dist/core/diff/property-compare.d.ts +19 -0
  104. package/dist/core/diff/property-compare.d.ts.map +1 -0
  105. package/dist/core/diff/property-compare.js +37 -0
  106. package/dist/core/diff/property-compare.js.map +1 -0
  107. package/dist/core/diff/version-cache.d.ts +40 -0
  108. package/dist/core/diff/version-cache.d.ts.map +1 -0
  109. package/dist/core/diff/version-cache.js +75 -0
  110. package/dist/core/diff/version-cache.js.map +1 -0
  111. package/dist/core/enrichment/enrichment-service.d.ts +52 -0
  112. package/dist/core/enrichment/enrichment-service.d.ts.map +1 -0
  113. package/dist/core/enrichment/enrichment-service.js +369 -0
  114. package/dist/core/enrichment/enrichment-service.js.map +1 -0
  115. package/dist/core/enrichment/index.d.ts +8 -0
  116. package/dist/core/enrichment/index.d.ts.map +1 -0
  117. package/dist/core/enrichment/index.js +8 -0
  118. package/dist/core/enrichment/index.js.map +1 -0
  119. package/dist/core/enrichment/relationship-mapper.d.ts +106 -0
  120. package/dist/core/enrichment/relationship-mapper.d.ts.map +1 -0
  121. package/dist/core/enrichment/relationship-mapper.js +352 -0
  122. package/dist/core/enrichment/relationship-mapper.js.map +1 -0
  123. package/dist/core/enrichment/style-resolver.d.ts +80 -0
  124. package/dist/core/enrichment/style-resolver.d.ts.map +1 -0
  125. package/dist/core/enrichment/style-resolver.js +327 -0
  126. package/dist/core/enrichment/style-resolver.js.map +1 -0
  127. package/dist/core/figjam-tools.d.ts +8 -0
  128. package/dist/core/figjam-tools.d.ts.map +1 -0
  129. package/dist/core/figjam-tools.js +548 -0
  130. package/dist/core/figjam-tools.js.map +1 -0
  131. package/dist/core/figma-api.d.ts +245 -0
  132. package/dist/core/figma-api.d.ts.map +1 -0
  133. package/dist/core/figma-api.js +446 -0
  134. package/dist/core/figma-api.js.map +1 -0
  135. package/dist/core/figma-connector.d.ts +180 -0
  136. package/dist/core/figma-connector.d.ts.map +1 -0
  137. package/dist/core/figma-connector.js +8 -0
  138. package/dist/core/figma-connector.js.map +1 -0
  139. package/dist/core/figma-desktop-connector.d.ts +312 -0
  140. package/dist/core/figma-desktop-connector.d.ts.map +1 -0
  141. package/dist/core/figma-desktop-connector.js +1298 -0
  142. package/dist/core/figma-desktop-connector.js.map +1 -0
  143. package/dist/core/figma-reconstruction-spec.d.ts +166 -0
  144. package/dist/core/figma-reconstruction-spec.d.ts.map +1 -0
  145. package/dist/core/figma-reconstruction-spec.js +403 -0
  146. package/dist/core/figma-reconstruction-spec.js.map +1 -0
  147. package/dist/core/figma-style-extractor.d.ts +76 -0
  148. package/dist/core/figma-style-extractor.d.ts.map +1 -0
  149. package/dist/core/figma-style-extractor.js +312 -0
  150. package/dist/core/figma-style-extractor.js.map +1 -0
  151. package/dist/core/figma-tools.d.ts +22 -0
  152. package/dist/core/figma-tools.d.ts.map +1 -0
  153. package/dist/core/figma-tools.js +3187 -0
  154. package/dist/core/figma-tools.js.map +1 -0
  155. package/dist/core/identity.d.ts +41 -0
  156. package/dist/core/identity.d.ts.map +1 -0
  157. package/dist/core/identity.js +97 -0
  158. package/dist/core/identity.js.map +1 -0
  159. package/dist/core/library-tools.d.ts +17 -0
  160. package/dist/core/library-tools.d.ts.map +1 -0
  161. package/dist/core/library-tools.js +581 -0
  162. package/dist/core/library-tools.js.map +1 -0
  163. package/dist/core/logger.d.ts +22 -0
  164. package/dist/core/logger.d.ts.map +1 -0
  165. package/dist/core/logger.js +54 -0
  166. package/dist/core/logger.js.map +1 -0
  167. package/dist/core/port-discovery.d.ts +171 -0
  168. package/dist/core/port-discovery.d.ts.map +1 -0
  169. package/dist/core/port-discovery.js +563 -0
  170. package/dist/core/port-discovery.js.map +1 -0
  171. package/dist/core/resolve-package-root.d.ts +2 -0
  172. package/dist/core/resolve-package-root.d.ts.map +1 -0
  173. package/dist/core/resolve-package-root.js +12 -0
  174. package/dist/core/resolve-package-root.js.map +1 -0
  175. package/dist/core/slides-tools.d.ts +8 -0
  176. package/dist/core/slides-tools.d.ts.map +1 -0
  177. package/dist/core/slides-tools.js +715 -0
  178. package/dist/core/slides-tools.js.map +1 -0
  179. package/dist/core/snippet-injector.d.ts +24 -0
  180. package/dist/core/snippet-injector.d.ts.map +1 -0
  181. package/dist/core/snippet-injector.js +97 -0
  182. package/dist/core/snippet-injector.js.map +1 -0
  183. package/dist/core/tokens/alias-resolver.d.ts +55 -0
  184. package/dist/core/tokens/alias-resolver.d.ts.map +1 -0
  185. package/dist/core/tokens/alias-resolver.js +136 -0
  186. package/dist/core/tokens/alias-resolver.js.map +1 -0
  187. package/dist/core/tokens/config.d.ts +87 -0
  188. package/dist/core/tokens/config.d.ts.map +1 -0
  189. package/dist/core/tokens/config.js +285 -0
  190. package/dist/core/tokens/config.js.map +1 -0
  191. package/dist/core/tokens/figma-converter.d.ts +81 -0
  192. package/dist/core/tokens/figma-converter.d.ts.map +1 -0
  193. package/dist/core/tokens/figma-converter.js +196 -0
  194. package/dist/core/tokens/figma-converter.js.map +1 -0
  195. package/dist/core/tokens/formatters/css-vars.d.ts +24 -0
  196. package/dist/core/tokens/formatters/css-vars.d.ts.map +1 -0
  197. package/dist/core/tokens/formatters/css-vars.js +330 -0
  198. package/dist/core/tokens/formatters/css-vars.js.map +1 -0
  199. package/dist/core/tokens/formatters/dtcg.d.ts +28 -0
  200. package/dist/core/tokens/formatters/dtcg.d.ts.map +1 -0
  201. package/dist/core/tokens/formatters/dtcg.js +301 -0
  202. package/dist/core/tokens/formatters/dtcg.js.map +1 -0
  203. package/dist/core/tokens/formatters/index.d.ts +30 -0
  204. package/dist/core/tokens/formatters/index.d.ts.map +1 -0
  205. package/dist/core/tokens/formatters/index.js +46 -0
  206. package/dist/core/tokens/formatters/index.js.map +1 -0
  207. package/dist/core/tokens/formatters/json.d.ts +37 -0
  208. package/dist/core/tokens/formatters/json.d.ts.map +1 -0
  209. package/dist/core/tokens/formatters/json.js +188 -0
  210. package/dist/core/tokens/formatters/json.js.map +1 -0
  211. package/dist/core/tokens/formatters/less.d.ts +4 -0
  212. package/dist/core/tokens/formatters/less.d.ts.map +1 -0
  213. package/dist/core/tokens/formatters/less.js +5 -0
  214. package/dist/core/tokens/formatters/less.js.map +1 -0
  215. package/dist/core/tokens/formatters/scss.d.ts +26 -0
  216. package/dist/core/tokens/formatters/scss.d.ts.map +1 -0
  217. package/dist/core/tokens/formatters/scss.js +253 -0
  218. package/dist/core/tokens/formatters/scss.js.map +1 -0
  219. package/dist/core/tokens/formatters/stubs.d.ts +9 -0
  220. package/dist/core/tokens/formatters/stubs.d.ts.map +1 -0
  221. package/dist/core/tokens/formatters/stubs.js +14 -0
  222. package/dist/core/tokens/formatters/stubs.js.map +1 -0
  223. package/dist/core/tokens/formatters/style-dictionary-v3.d.ts +45 -0
  224. package/dist/core/tokens/formatters/style-dictionary-v3.d.ts.map +1 -0
  225. package/dist/core/tokens/formatters/style-dictionary-v3.js +208 -0
  226. package/dist/core/tokens/formatters/style-dictionary-v3.js.map +1 -0
  227. package/dist/core/tokens/formatters/tailwind-v3.d.ts +37 -0
  228. package/dist/core/tokens/formatters/tailwind-v3.d.ts.map +1 -0
  229. package/dist/core/tokens/formatters/tailwind-v3.js +238 -0
  230. package/dist/core/tokens/formatters/tailwind-v3.js.map +1 -0
  231. package/dist/core/tokens/formatters/tailwind-v4.d.ts +41 -0
  232. package/dist/core/tokens/formatters/tailwind-v4.d.ts.map +1 -0
  233. package/dist/core/tokens/formatters/tailwind-v4.js +331 -0
  234. package/dist/core/tokens/formatters/tailwind-v4.js.map +1 -0
  235. package/dist/core/tokens/formatters/tokens-studio.d.ts +44 -0
  236. package/dist/core/tokens/formatters/tokens-studio.d.ts.map +1 -0
  237. package/dist/core/tokens/formatters/tokens-studio.js +251 -0
  238. package/dist/core/tokens/formatters/tokens-studio.js.map +1 -0
  239. package/dist/core/tokens/formatters/ts-module.d.ts +35 -0
  240. package/dist/core/tokens/formatters/ts-module.d.ts.map +1 -0
  241. package/dist/core/tokens/formatters/ts-module.js +199 -0
  242. package/dist/core/tokens/formatters/ts-module.js.map +1 -0
  243. package/dist/core/tokens/index.d.ts +17 -0
  244. package/dist/core/tokens/index.d.ts.map +1 -0
  245. package/dist/core/tokens/index.js +16 -0
  246. package/dist/core/tokens/index.js.map +1 -0
  247. package/dist/core/tokens/parsers/css-vars.d.ts +3 -0
  248. package/dist/core/tokens/parsers/css-vars.d.ts.map +1 -0
  249. package/dist/core/tokens/parsers/css-vars.js +5 -0
  250. package/dist/core/tokens/parsers/css-vars.js.map +1 -0
  251. package/dist/core/tokens/parsers/dtcg.d.ts +21 -0
  252. package/dist/core/tokens/parsers/dtcg.d.ts.map +1 -0
  253. package/dist/core/tokens/parsers/dtcg.js +254 -0
  254. package/dist/core/tokens/parsers/dtcg.js.map +1 -0
  255. package/dist/core/tokens/parsers/index.d.ts +37 -0
  256. package/dist/core/tokens/parsers/index.d.ts.map +1 -0
  257. package/dist/core/tokens/parsers/index.js +139 -0
  258. package/dist/core/tokens/parsers/index.js.map +1 -0
  259. package/dist/core/tokens/parsers/json.d.ts +4 -0
  260. package/dist/core/tokens/parsers/json.d.ts.map +1 -0
  261. package/dist/core/tokens/parsers/json.js +8 -0
  262. package/dist/core/tokens/parsers/json.js.map +1 -0
  263. package/dist/core/tokens/parsers/scss.d.ts +3 -0
  264. package/dist/core/tokens/parsers/scss.d.ts.map +1 -0
  265. package/dist/core/tokens/parsers/scss.js +5 -0
  266. package/dist/core/tokens/parsers/scss.js.map +1 -0
  267. package/dist/core/tokens/parsers/stubs.d.ts +15 -0
  268. package/dist/core/tokens/parsers/stubs.d.ts.map +1 -0
  269. package/dist/core/tokens/parsers/stubs.js +21 -0
  270. package/dist/core/tokens/parsers/stubs.js.map +1 -0
  271. package/dist/core/tokens/parsers/style-dictionary-v3.d.ts +3 -0
  272. package/dist/core/tokens/parsers/style-dictionary-v3.d.ts.map +1 -0
  273. package/dist/core/tokens/parsers/style-dictionary-v3.js +5 -0
  274. package/dist/core/tokens/parsers/style-dictionary-v3.js.map +1 -0
  275. package/dist/core/tokens/parsers/tailwind-v3.d.ts +3 -0
  276. package/dist/core/tokens/parsers/tailwind-v3.d.ts.map +1 -0
  277. package/dist/core/tokens/parsers/tailwind-v3.js +5 -0
  278. package/dist/core/tokens/parsers/tailwind-v3.js.map +1 -0
  279. package/dist/core/tokens/parsers/tailwind-v4.d.ts +3 -0
  280. package/dist/core/tokens/parsers/tailwind-v4.d.ts.map +1 -0
  281. package/dist/core/tokens/parsers/tailwind-v4.js +5 -0
  282. package/dist/core/tokens/parsers/tailwind-v4.js.map +1 -0
  283. package/dist/core/tokens/parsers/tokens-studio.d.ts +3 -0
  284. package/dist/core/tokens/parsers/tokens-studio.d.ts.map +1 -0
  285. package/dist/core/tokens/parsers/tokens-studio.js +5 -0
  286. package/dist/core/tokens/parsers/tokens-studio.js.map +1 -0
  287. package/dist/core/tokens/schemas.d.ts +31 -0
  288. package/dist/core/tokens/schemas.d.ts.map +1 -0
  289. package/dist/core/tokens/schemas.js +149 -0
  290. package/dist/core/tokens/schemas.js.map +1 -0
  291. package/dist/core/tokens/transforms/color.d.ts +9 -0
  292. package/dist/core/tokens/transforms/color.d.ts.map +1 -0
  293. package/dist/core/tokens/transforms/color.js +13 -0
  294. package/dist/core/tokens/transforms/color.js.map +1 -0
  295. package/dist/core/tokens/transforms/index.d.ts +36 -0
  296. package/dist/core/tokens/transforms/index.d.ts.map +1 -0
  297. package/dist/core/tokens/transforms/index.js +30 -0
  298. package/dist/core/tokens/transforms/index.js.map +1 -0
  299. package/dist/core/tokens/transforms/size.d.ts +7 -0
  300. package/dist/core/tokens/transforms/size.d.ts.map +1 -0
  301. package/dist/core/tokens/transforms/size.js +8 -0
  302. package/dist/core/tokens/transforms/size.js.map +1 -0
  303. package/dist/core/tokens/types.d.ts +228 -0
  304. package/dist/core/tokens/types.d.ts.map +1 -0
  305. package/dist/core/tokens/types.js +19 -0
  306. package/dist/core/tokens/types.js.map +1 -0
  307. package/dist/core/tokens-tools.d.ts +42 -0
  308. package/dist/core/tokens-tools.d.ts.map +1 -0
  309. package/dist/core/tokens-tools.js +860 -0
  310. package/dist/core/tokens-tools.js.map +1 -0
  311. package/dist/core/types/design-code.d.ts +271 -0
  312. package/dist/core/types/design-code.d.ts.map +1 -0
  313. package/dist/core/types/design-code.js +5 -0
  314. package/dist/core/types/design-code.js.map +1 -0
  315. package/dist/core/types/enriched.d.ts +213 -0
  316. package/dist/core/types/enriched.d.ts.map +1 -0
  317. package/dist/core/types/enriched.js +6 -0
  318. package/dist/core/types/enriched.js.map +1 -0
  319. package/dist/core/types/index.d.ts +104 -0
  320. package/dist/core/types/index.d.ts.map +1 -0
  321. package/dist/core/types/index.js +5 -0
  322. package/dist/core/types/index.js.map +1 -0
  323. package/dist/core/variable-resolver.d.ts +45 -0
  324. package/dist/core/variable-resolver.d.ts.map +1 -0
  325. package/dist/core/variable-resolver.js +86 -0
  326. package/dist/core/variable-resolver.js.map +1 -0
  327. package/dist/core/version-tools.d.ts +59 -0
  328. package/dist/core/version-tools.d.ts.map +1 -0
  329. package/dist/core/version-tools.js +1159 -0
  330. package/dist/core/version-tools.js.map +1 -0
  331. package/dist/core/websocket-connector.d.ts +187 -0
  332. package/dist/core/websocket-connector.d.ts.map +1 -0
  333. package/dist/core/websocket-connector.js +378 -0
  334. package/dist/core/websocket-connector.js.map +1 -0
  335. package/dist/core/websocket-server.js +866 -0
  336. package/dist/core/websocket-server.js.map +1 -0
  337. package/dist/core/write-tools.d.ts +7 -0
  338. package/dist/core/write-tools.d.ts.map +1 -0
  339. package/dist/core/write-tools.js +2172 -0
  340. package/dist/core/write-tools.js.map +1 -0
  341. package/dist/local.d.ts +95 -0
  342. package/dist/local.d.ts.map +1 -0
  343. package/dist/local.js +3036 -0
  344. package/dist/local.js.map +1 -0
  345. package/dist/vendor/obra-autodocs/autodocs-body.generated.d.ts +2 -0
  346. package/dist/vendor/obra-autodocs/autodocs-body.generated.d.ts.map +1 -0
  347. package/dist/vendor/obra-autodocs/autodocs-body.generated.js +6 -0
  348. package/dist/vendor/obra-autodocs/autodocs-body.generated.js.map +1 -0
  349. package/figma-desktop-bridge/README.md +365 -0
  350. package/figma-desktop-bridge/code.js +6504 -0
  351. package/figma-desktop-bridge/icon.png +0 -0
  352. package/figma-desktop-bridge/manifest.json +67 -0
  353. package/figma-desktop-bridge/ui.html +2441 -0
  354. package/package.json +98 -0
@@ -0,0 +1,403 @@
1
+ /**
2
+ * Figma Reconstruction Spec
3
+ *
4
+ * Generates node tree construction specifications compatible with the
5
+ * Figma Component Reconstructor plugin. This format differs from metadata
6
+ * export by providing all properties needed to programmatically recreate
7
+ * components in Figma.
8
+ */
9
+ /**
10
+ * Convert Figma paint array to reconstruction spec format
11
+ */
12
+ export function convertFills(fills) {
13
+ if (!fills || fills === 'mixed')
14
+ return [];
15
+ return fills
16
+ .filter((fill) => fill.visible !== false)
17
+ .map((fill) => {
18
+ if (fill.type === 'SOLID') {
19
+ return {
20
+ type: 'SOLID',
21
+ color: {
22
+ r: fill.color?.r ?? 0,
23
+ g: fill.color?.g ?? 0,
24
+ b: fill.color?.b ?? 0,
25
+ a: fill.opacity ?? 1,
26
+ },
27
+ opacity: fill.opacity ?? 1,
28
+ visible: fill.visible ?? true,
29
+ };
30
+ }
31
+ if (fill.type.startsWith('GRADIENT')) {
32
+ return {
33
+ type: fill.type,
34
+ gradientStops: fill.gradientStops?.map((stop) => ({
35
+ color: {
36
+ r: stop.color?.r ?? 0,
37
+ g: stop.color?.g ?? 0,
38
+ b: stop.color?.b ?? 0,
39
+ a: stop.color?.a ?? 1,
40
+ },
41
+ position: stop.position ?? 0,
42
+ })) || [],
43
+ opacity: fill.opacity ?? 1,
44
+ visible: fill.visible ?? true,
45
+ };
46
+ }
47
+ if (fill.type === 'IMAGE') {
48
+ return {
49
+ type: 'IMAGE',
50
+ scaleMode: fill.scaleMode || 'FILL',
51
+ imageRef: fill.imageRef,
52
+ opacity: fill.opacity ?? 1,
53
+ visible: fill.visible ?? true,
54
+ };
55
+ }
56
+ // Default fallback
57
+ return null;
58
+ })
59
+ .filter((f) => f !== null);
60
+ }
61
+ /**
62
+ * Convert Figma stroke array to reconstruction spec format
63
+ */
64
+ export function convertStrokes(strokes) {
65
+ // Strokes use same format as fills
66
+ return convertFills(strokes);
67
+ }
68
+ /**
69
+ * Convert REST API constraint values to Plugin API constraint values
70
+ * REST API: LEFT, RIGHT, TOP, BOTTOM, CENTER, SCALE
71
+ * Plugin API: MIN, MAX, CENTER, STRETCH, SCALE
72
+ */
73
+ function convertConstraintValue(value) {
74
+ const mapping = {
75
+ 'LEFT': 'MIN',
76
+ 'RIGHT': 'MAX',
77
+ 'TOP': 'MIN',
78
+ 'BOTTOM': 'MAX',
79
+ 'CENTER': 'CENTER',
80
+ 'STRETCH': 'STRETCH',
81
+ 'SCALE': 'SCALE',
82
+ };
83
+ return mapping[value] || value;
84
+ }
85
+ /**
86
+ * Convert Figma effects array to reconstruction spec format
87
+ */
88
+ export function convertEffects(effects) {
89
+ if (!effects || effects === 'mixed')
90
+ return [];
91
+ return effects
92
+ .filter((effect) => effect.visible !== false)
93
+ .map((effect) => {
94
+ if (effect.type === 'DROP_SHADOW' || effect.type === 'INNER_SHADOW') {
95
+ return {
96
+ type: effect.type,
97
+ color: {
98
+ r: effect.color?.r ?? 0,
99
+ g: effect.color?.g ?? 0,
100
+ b: effect.color?.b ?? 0,
101
+ a: effect.color?.a ?? 1,
102
+ },
103
+ offset: effect.offset || { x: 0, y: 0 },
104
+ radius: effect.radius ?? 0,
105
+ spread: effect.spread,
106
+ visible: effect.visible ?? true,
107
+ };
108
+ }
109
+ if (effect.type === 'LAYER_BLUR' || effect.type === 'BACKGROUND_BLUR') {
110
+ return {
111
+ type: effect.type,
112
+ radius: effect.radius ?? 0,
113
+ visible: effect.visible ?? true,
114
+ };
115
+ }
116
+ return null;
117
+ })
118
+ .filter((e) => e !== null);
119
+ }
120
+ /**
121
+ * Recursively extract node specification for reconstruction
122
+ */
123
+ export function extractNodeSpec(node) {
124
+ const spec = {
125
+ name: node.name,
126
+ type: node.type,
127
+ };
128
+ // INSTANCE → FRAME conversion for plugin compatibility
129
+ // Plugin cannot create instance nodes, so we convert them to frames
130
+ // This preserves visual properties and children for the "sketchpad" workflow
131
+ if (spec.type === 'INSTANCE') {
132
+ spec.type = 'FRAME';
133
+ // All visual properties (fills, strokes, layout) will be copied from the instance
134
+ // Children will be processed recursively and also converted if needed
135
+ }
136
+ // Position - provide defaults if missing
137
+ if ('x' in node && typeof node.x === 'number') {
138
+ spec.x = node.x;
139
+ }
140
+ else if (node.type !== 'GROUP' && node.type !== 'SECTION') {
141
+ spec.x = 0;
142
+ }
143
+ if ('y' in node && typeof node.y === 'number') {
144
+ spec.y = node.y;
145
+ }
146
+ else if (node.type !== 'GROUP' && node.type !== 'SECTION') {
147
+ spec.y = 0;
148
+ }
149
+ // Layout sizing for children in auto-layout parents
150
+ // These properties tell the plugin HOW the child should size itself (HUG content vs FIXED vs FILL)
151
+ if ('layoutSizingHorizontal' in node) {
152
+ spec.layoutSizingHorizontal = node.layoutSizingHorizontal;
153
+ }
154
+ if ('layoutSizingVertical' in node) {
155
+ spec.layoutSizingVertical = node.layoutSizingVertical;
156
+ }
157
+ // Dimensions - required for most node types to be reconstructable
158
+ // IMPORTANT: Skip explicit dimensions for children with HUG sizing in auto-layout
159
+ // The plugin will calculate dimensions based on sizing mode + content
160
+ const hasHugSizing = node.layoutSizingHorizontal === 'HUG' || node.layoutSizingVertical === 'HUG';
161
+ const isParentNode = node.type === 'COMPONENT' || node.type === 'FRAME' || node.type === 'INSTANCE';
162
+ const skipDimensions = hasHugSizing && !isParentNode;
163
+ if (!skipDimensions) {
164
+ // Check both direct properties (Desktop Bridge) and absoluteBoundingBox (REST API)
165
+ if ('width' in node && typeof node.width === 'number') {
166
+ spec.width = node.width;
167
+ }
168
+ else if ('absoluteBoundingBox' in node && node.absoluteBoundingBox && typeof node.absoluteBoundingBox.width === 'number') {
169
+ spec.width = node.absoluteBoundingBox.width;
170
+ }
171
+ else if (node.type !== 'GROUP' && node.type !== 'SECTION') {
172
+ // Default width for nodes that need it
173
+ spec.width = node.type === 'TEXT' ? 100 :
174
+ node.type === 'COMPONENT_SET' ? 200 :
175
+ node.type === 'ELLIPSE' ? 8 : 50;
176
+ }
177
+ if ('height' in node && typeof node.height === 'number') {
178
+ spec.height = node.height;
179
+ }
180
+ else if ('absoluteBoundingBox' in node && node.absoluteBoundingBox && typeof node.absoluteBoundingBox.height === 'number') {
181
+ spec.height = node.absoluteBoundingBox.height;
182
+ }
183
+ else if (node.type !== 'GROUP' && node.type !== 'SECTION') {
184
+ // Default height for nodes that need it
185
+ spec.height = node.type === 'TEXT' ? 20 :
186
+ node.type === 'COMPONENT_SET' ? 100 :
187
+ node.type === 'ELLIPSE' ? 8 : 50;
188
+ }
189
+ }
190
+ // Visual properties (only include what plugin spec needs)
191
+ if ('opacity' in node && typeof node.opacity === 'number' && node.opacity !== 1) {
192
+ spec.opacity = node.opacity;
193
+ }
194
+ // Fills (only include if present and non-empty)
195
+ if ('fills' in node && node.fills !== 'mixed') {
196
+ const convertedFills = convertFills(node.fills);
197
+ if (convertedFills.length > 0) {
198
+ spec.fills = convertedFills;
199
+ }
200
+ }
201
+ // Strokes (only include if present and non-empty)
202
+ if ('strokes' in node && node.strokes !== 'mixed') {
203
+ const convertedStrokes = convertStrokes(node.strokes);
204
+ if (convertedStrokes.length > 0) {
205
+ spec.strokes = convertedStrokes;
206
+ // Only include stroke weight if there are strokes
207
+ if ('strokeWeight' in node && typeof node.strokeWeight === 'number') {
208
+ spec.strokeWeight = node.strokeWeight;
209
+ }
210
+ }
211
+ }
212
+ // Effects (only include if present and non-empty)
213
+ if ('effects' in node && node.effects !== 'mixed') {
214
+ const convertedEffects = convertEffects(node.effects);
215
+ if (convertedEffects.length > 0) {
216
+ spec.effects = convertedEffects;
217
+ }
218
+ }
219
+ // Corner radius
220
+ if ('cornerRadius' in node && typeof node.cornerRadius === 'number') {
221
+ spec.cornerRadius = node.cornerRadius;
222
+ }
223
+ if ('rectangleCornerRadii' in node && Array.isArray(node.rectangleCornerRadii)) {
224
+ spec.rectangleCornerRadii = node.rectangleCornerRadii;
225
+ }
226
+ // Layout properties (for FRAME, COMPONENT, INSTANCE)
227
+ // Plugin spec requires: layoutMode, primaryAxisSizingMode, counterAxisSizingMode, itemSpacing, padding*
228
+ if ('layoutMode' in node && node.layoutMode !== 'NONE') {
229
+ spec.layoutMode = node.layoutMode;
230
+ // Sizing modes (REQUIRED for plugin spec)
231
+ if ('primaryAxisSizingMode' in node)
232
+ spec.primaryAxisSizingMode = node.primaryAxisSizingMode;
233
+ if ('counterAxisSizingMode' in node)
234
+ spec.counterAxisSizingMode = node.counterAxisSizingMode;
235
+ // Spacing
236
+ if ('itemSpacing' in node)
237
+ spec.itemSpacing = node.itemSpacing;
238
+ // Padding (all four sides)
239
+ if ('paddingLeft' in node)
240
+ spec.paddingLeft = node.paddingLeft;
241
+ if ('paddingRight' in node)
242
+ spec.paddingRight = node.paddingRight;
243
+ if ('paddingTop' in node)
244
+ spec.paddingTop = node.paddingTop;
245
+ if ('paddingBottom' in node)
246
+ spec.paddingBottom = node.paddingBottom;
247
+ }
248
+ // TEXT node specific properties
249
+ // REST API returns text styling in a 'style' object
250
+ if (node.type === 'TEXT') {
251
+ if ('characters' in node)
252
+ spec.characters = node.characters;
253
+ // Check both direct properties (Plugin API) and style object (REST API)
254
+ if ('fontSize' in node && typeof node.fontSize === 'number') {
255
+ spec.fontSize = node.fontSize;
256
+ }
257
+ else if (node.style?.fontSize && typeof node.style.fontSize === 'number') {
258
+ spec.fontSize = node.style.fontSize;
259
+ }
260
+ if ('fontName' in node) {
261
+ spec.fontName = node.fontName;
262
+ }
263
+ else if (node.style?.fontFamily && node.style?.fontWeight) {
264
+ spec.fontName = {
265
+ family: node.style.fontFamily,
266
+ style: node.style.fontWeight
267
+ };
268
+ }
269
+ if ('textAlignHorizontal' in node) {
270
+ spec.textAlignHorizontal = node.textAlignHorizontal;
271
+ }
272
+ else if (node.style?.textAlignHorizontal) {
273
+ spec.textAlignHorizontal = node.style.textAlignHorizontal;
274
+ }
275
+ if ('textAlignVertical' in node) {
276
+ spec.textAlignVertical = node.textAlignVertical;
277
+ }
278
+ else if (node.style?.textAlignVertical) {
279
+ spec.textAlignVertical = node.style.textAlignVertical;
280
+ }
281
+ if ('letterSpacing' in node) {
282
+ spec.letterSpacing = node.letterSpacing;
283
+ }
284
+ else if (node.style?.letterSpacing) {
285
+ spec.letterSpacing = node.style.letterSpacing;
286
+ }
287
+ if ('lineHeight' in node) {
288
+ spec.lineHeight = node.lineHeight;
289
+ }
290
+ else if (node.style?.lineHeight) {
291
+ spec.lineHeight = node.style.lineHeight;
292
+ }
293
+ }
294
+ // Variant properties (for COMPONENT in a COMPONENT_SET)
295
+ if (node.type === 'COMPONENT' && 'variantProperties' in node && node.variantProperties) {
296
+ spec.variantProperties = node.variantProperties;
297
+ }
298
+ // Children (recursive)
299
+ if ('children' in node && Array.isArray(node.children)) {
300
+ spec.children = node.children.map((child) => extractNodeSpec(child));
301
+ }
302
+ return spec;
303
+ }
304
+ /**
305
+ * Validate that the reconstruction spec has required fields
306
+ */
307
+ export function validateReconstructionSpec(spec) {
308
+ const errors = [];
309
+ // Required fields
310
+ if (!spec.name || typeof spec.name !== 'string') {
311
+ errors.push('Missing or invalid required field: name');
312
+ }
313
+ if (!spec.type || typeof spec.type !== 'string') {
314
+ errors.push('Missing or invalid required field: type');
315
+ }
316
+ // Valid node types
317
+ const validTypes = [
318
+ 'FRAME',
319
+ 'COMPONENT',
320
+ 'COMPONENT_SET',
321
+ 'INSTANCE',
322
+ 'TEXT',
323
+ 'RECTANGLE',
324
+ 'ELLIPSE',
325
+ 'POLYGON',
326
+ 'STAR',
327
+ 'VECTOR',
328
+ 'LINE',
329
+ 'GROUP',
330
+ 'SECTION',
331
+ 'SLICE',
332
+ 'BOOLEAN_OPERATION',
333
+ ];
334
+ if (spec.type && !validTypes.includes(spec.type)) {
335
+ errors.push(`Invalid node type: ${spec.type}. Must be one of: ${validTypes.join(', ')}`);
336
+ }
337
+ // Validate dimensions if present
338
+ if ('width' in spec && (typeof spec.width !== 'number' || spec.width < 0)) {
339
+ errors.push('Invalid width: must be a non-negative number');
340
+ }
341
+ if ('height' in spec && (typeof spec.height !== 'number' || spec.height < 0)) {
342
+ errors.push('Invalid height: must be a non-negative number');
343
+ }
344
+ // Validate opacity if present
345
+ if ('opacity' in spec && (typeof spec.opacity !== 'number' || spec.opacity < 0 || spec.opacity > 1)) {
346
+ errors.push('Invalid opacity: must be a number between 0 and 1');
347
+ }
348
+ // Validate colors in fills
349
+ if (spec.fills && Array.isArray(spec.fills)) {
350
+ spec.fills.forEach((fill, index) => {
351
+ if (fill.type === 'SOLID' && fill.color) {
352
+ const { r, g, b, a } = fill.color;
353
+ if (typeof r !== 'number' || r < 0 || r > 1 ||
354
+ typeof g !== 'number' || g < 0 || g > 1 ||
355
+ typeof b !== 'number' || b < 0 || b > 1 ||
356
+ typeof a !== 'number' || a < 0 || a > 1) {
357
+ errors.push(`Invalid color in fills[${index}]: RGB values must be between 0 and 1`);
358
+ }
359
+ }
360
+ });
361
+ }
362
+ // Recursively validate children
363
+ if (spec.children && Array.isArray(spec.children)) {
364
+ spec.children.forEach((child, index) => {
365
+ const childValidation = validateReconstructionSpec(child);
366
+ if (!childValidation.valid) {
367
+ errors.push(`Errors in children[${index}]: ${childValidation.errors.join(', ')}`);
368
+ }
369
+ });
370
+ }
371
+ return {
372
+ valid: errors.length === 0,
373
+ errors,
374
+ };
375
+ }
376
+ /**
377
+ * Extract a specific variant from a COMPONENT_SET by name
378
+ */
379
+ export function extractVariant(componentSet, variantName) {
380
+ if (!componentSet.children || !Array.isArray(componentSet.children)) {
381
+ throw new Error('Invalid COMPONENT_SET: no children array');
382
+ }
383
+ const variant = componentSet.children.find((child) => child.type === 'COMPONENT' && child.name === variantName);
384
+ if (!variant) {
385
+ const availableVariants = componentSet.children
386
+ .filter((c) => c.type === 'COMPONENT')
387
+ .map((c) => c.name);
388
+ throw new Error(`Variant "${variantName}" not found. Available variants: ${availableVariants.join(', ')}`);
389
+ }
390
+ return extractNodeSpec(variant);
391
+ }
392
+ /**
393
+ * Get list of available variants in a COMPONENT_SET
394
+ */
395
+ export function listVariants(componentSet) {
396
+ if (!componentSet.children || !Array.isArray(componentSet.children)) {
397
+ return [];
398
+ }
399
+ return componentSet.children
400
+ .filter((child) => child.type === 'COMPONENT')
401
+ .map((child) => child.name);
402
+ }
403
+ //# sourceMappingURL=figma-reconstruction-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figma-reconstruction-spec.js","sourceRoot":"","sources":["../../src/core/figma-reconstruction-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Figma Style Extractor
3
+ *
4
+ * Extracts style information (colors, typography, spacing) from Figma files
5
+ * using the REST API /files endpoint. This provides an alternative to the
6
+ * Enterprise-only Variables API by parsing style data directly from nodes.
7
+ *
8
+ * Based on the approach used by Figma-Context-MCP
9
+ */
10
+ interface ExtractedVariable {
11
+ id: string;
12
+ name: string;
13
+ value: string;
14
+ type: 'COLOR' | 'TYPOGRAPHY' | 'SPACING' | 'RADIUS' | 'EFFECT';
15
+ category?: string;
16
+ description?: string;
17
+ nodeId?: string;
18
+ }
19
+ export declare class FigmaStyleExtractor {
20
+ private extractedVariables;
21
+ private colorIndex;
22
+ private typographyIndex;
23
+ private spacingIndex;
24
+ private radiusIndex;
25
+ /**
26
+ * Extract style "variables" from Figma file data
27
+ * This mimics what users would see as variables in Figma
28
+ */
29
+ extractStylesFromFile(fileData: any): Promise<ExtractedVariable[]>;
30
+ /**
31
+ * Process a single node and extract style information
32
+ */
33
+ private processNode;
34
+ /**
35
+ * Extract color variable
36
+ */
37
+ private extractColor;
38
+ /**
39
+ * Extract typography variable
40
+ */
41
+ private extractTypography;
42
+ /**
43
+ * Extract spacing variable
44
+ */
45
+ private extractSpacing;
46
+ /**
47
+ * Extract radius variable
48
+ */
49
+ private extractRadius;
50
+ /**
51
+ * Process Figma styles object
52
+ */
53
+ private processStyles;
54
+ /**
55
+ * Helper to infer color category from node name
56
+ */
57
+ private inferColorCategory;
58
+ /**
59
+ * Generate a meaningful color name
60
+ */
61
+ private generateColorName;
62
+ /**
63
+ * Generate a meaningful typography name
64
+ */
65
+ private generateTypographyName;
66
+ /**
67
+ * Categorize radius values
68
+ */
69
+ private categorizeRadius;
70
+ /**
71
+ * Format the extracted variables for output
72
+ */
73
+ formatVariablesAsOutput(variables: ExtractedVariable[]): any;
74
+ }
75
+ export {};
76
+ //# sourceMappingURL=figma-style-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figma-style-extractor.d.ts","sourceRoot":"","sources":["../../src/core/figma-style-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqDH,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAK;IAExB;;;OAGG;IACG,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAiDxE;;OAEG;IACH,OAAO,CAAC,WAAW;IAwDnB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6BpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,GAAG;CAyB7D"}