@elytracms/core 0.0.6

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 (521) hide show
  1. package/LICENSE +21 -0
  2. package/dist/clipboard/build.d.ts +77 -0
  3. package/dist/clipboard/build.js +128 -0
  4. package/dist/clipboard/build.js.map +1 -0
  5. package/dist/clipboard/clipboard.d.ts +33 -0
  6. package/dist/clipboard/clipboard.js +45 -0
  7. package/dist/clipboard/clipboard.js.map +1 -0
  8. package/dist/clipboard/fragment.d.ts +112 -0
  9. package/dist/clipboard/fragment.js +79 -0
  10. package/dist/clipboard/fragment.js.map +1 -0
  11. package/dist/clipboard/html.d.ts +26 -0
  12. package/dist/clipboard/html.js +82 -0
  13. package/dist/clipboard/html.js.map +1 -0
  14. package/dist/clipboard/index.d.ts +15 -0
  15. package/dist/clipboard/index.js +16 -0
  16. package/dist/clipboard/index.js.map +1 -0
  17. package/dist/clipboard/references.d.ts +50 -0
  18. package/dist/clipboard/references.js +0 -0
  19. package/dist/clipboard/references.js.map +1 -0
  20. package/dist/clipboard/serialize.d.ts +69 -0
  21. package/dist/clipboard/serialize.js +130 -0
  22. package/dist/clipboard/serialize.js.map +1 -0
  23. package/dist/cms-core/collections.d.ts +82 -0
  24. package/dist/cms-core/collections.js +187 -0
  25. package/dist/cms-core/collections.js.map +1 -0
  26. package/dist/cms-core/documents.d.ts +71 -0
  27. package/dist/cms-core/documents.js +67 -0
  28. package/dist/cms-core/documents.js.map +1 -0
  29. package/dist/cms-core/envelopes.d.ts +80 -0
  30. package/dist/cms-core/envelopes.js +124 -0
  31. package/dist/cms-core/envelopes.js.map +1 -0
  32. package/dist/cms-core/fields.d.ts +220 -0
  33. package/dist/cms-core/fields.js +250 -0
  34. package/dist/cms-core/fields.js.map +1 -0
  35. package/dist/cms-core/fixtures.d.ts +92 -0
  36. package/dist/cms-core/fixtures.js +357 -0
  37. package/dist/cms-core/fixtures.js.map +1 -0
  38. package/dist/cms-core/hierarchy.d.ts +113 -0
  39. package/dist/cms-core/hierarchy.js +223 -0
  40. package/dist/cms-core/hierarchy.js.map +1 -0
  41. package/dist/cms-core/index.d.ts +25 -0
  42. package/dist/cms-core/index.js +26 -0
  43. package/dist/cms-core/index.js.map +1 -0
  44. package/dist/cms-core/infer.d.ts +103 -0
  45. package/dist/cms-core/infer.js +57 -0
  46. package/dist/cms-core/infer.js.map +1 -0
  47. package/dist/cms-core/issues.d.ts +92 -0
  48. package/dist/cms-core/issues.js +74 -0
  49. package/dist/cms-core/issues.js.map +1 -0
  50. package/dist/cms-core/json-schema.d.ts +25 -0
  51. package/dist/cms-core/json-schema.js +110 -0
  52. package/dist/cms-core/json-schema.js.map +1 -0
  53. package/dist/cms-core/localization.d.ts +51 -0
  54. package/dist/cms-core/localization.js +89 -0
  55. package/dist/cms-core/localization.js.map +1 -0
  56. package/dist/cms-core/routes.d.ts +76 -0
  57. package/dist/cms-core/routes.js +220 -0
  58. package/dist/cms-core/routes.js.map +1 -0
  59. package/dist/cms-core/self-type.d.ts +41 -0
  60. package/dist/cms-core/self-type.js +191 -0
  61. package/dist/cms-core/self-type.js.map +1 -0
  62. package/dist/cms-core/url-for-document.d.ts +39 -0
  63. package/dist/cms-core/url-for-document.js +138 -0
  64. package/dist/cms-core/url-for-document.js.map +1 -0
  65. package/dist/cms-core/validate-document.d.ts +121 -0
  66. package/dist/cms-core/validate-document.js +871 -0
  67. package/dist/cms-core/validate-document.js.map +1 -0
  68. package/dist/cms-core/versions.d.ts +75 -0
  69. package/dist/cms-core/versions.js +97 -0
  70. package/dist/cms-core/versions.js.map +1 -0
  71. package/dist/collaboration/approval.d.ts +68 -0
  72. package/dist/collaboration/approval.js +104 -0
  73. package/dist/collaboration/approval.js.map +1 -0
  74. package/dist/collaboration/collaboration.d.ts +49 -0
  75. package/dist/collaboration/collaboration.js +56 -0
  76. package/dist/collaboration/collaboration.js.map +1 -0
  77. package/dist/collaboration/comments.d.ts +72 -0
  78. package/dist/collaboration/comments.js +118 -0
  79. package/dist/collaboration/comments.js.map +1 -0
  80. package/dist/collaboration/core.d.ts +25 -0
  81. package/dist/collaboration/core.js +26 -0
  82. package/dist/collaboration/core.js.map +1 -0
  83. package/dist/collaboration/index.d.ts +14 -0
  84. package/dist/collaboration/index.js +15 -0
  85. package/dist/collaboration/index.js.map +1 -0
  86. package/dist/collaboration/presence.d.ts +62 -0
  87. package/dist/collaboration/presence.js +85 -0
  88. package/dist/collaboration/presence.js.map +1 -0
  89. package/dist/collaboration/publishing.d.ts +60 -0
  90. package/dist/collaboration/publishing.js +93 -0
  91. package/dist/collaboration/publishing.js.map +1 -0
  92. package/dist/collaboration/versions.d.ts +52 -0
  93. package/dist/collaboration/versions.js +81 -0
  94. package/dist/collaboration/versions.js.map +1 -0
  95. package/dist/component-registry/index.d.ts +3 -0
  96. package/dist/component-registry/index.js +4 -0
  97. package/dist/component-registry/index.js.map +1 -0
  98. package/dist/component-registry/issues.d.ts +6 -0
  99. package/dist/component-registry/issues.js +2 -0
  100. package/dist/component-registry/issues.js.map +1 -0
  101. package/dist/component-registry/manifest.d.ts +164 -0
  102. package/dist/component-registry/manifest.js +129 -0
  103. package/dist/component-registry/manifest.js.map +1 -0
  104. package/dist/component-registry/registry.d.ts +33 -0
  105. package/dist/component-registry/registry.js +90 -0
  106. package/dist/component-registry/registry.js.map +1 -0
  107. package/dist/content/__fixtures__/filterable-collections.d.ts +14 -0
  108. package/dist/content/__fixtures__/filterable-collections.js +15 -0
  109. package/dist/content/__fixtures__/filterable-collections.js.map +1 -0
  110. package/dist/content/__fixtures__/sample-accessor-types.d.ts +56 -0
  111. package/dist/content/__fixtures__/sample-accessor-types.js +5 -0
  112. package/dist/content/__fixtures__/sample-accessor-types.js.map +1 -0
  113. package/dist/content/__fixtures__/sample-delivery-types.d.ts +122 -0
  114. package/dist/content/__fixtures__/sample-delivery-types.js +5 -0
  115. package/dist/content/__fixtures__/sample-delivery-types.js.map +1 -0
  116. package/dist/content/assets.d.ts +53 -0
  117. package/dist/content/assets.js +38 -0
  118. package/dist/content/assets.js.map +1 -0
  119. package/dist/content/binding-sources.d.ts +53 -0
  120. package/dist/content/binding-sources.js +73 -0
  121. package/dist/content/binding-sources.js.map +1 -0
  122. package/dist/content/client.d.ts +90 -0
  123. package/dist/content/client.js +383 -0
  124. package/dist/content/client.js.map +1 -0
  125. package/dist/content/codegen.d.ts +54 -0
  126. package/dist/content/codegen.js +305 -0
  127. package/dist/content/codegen.js.map +1 -0
  128. package/dist/content/context.d.ts +38 -0
  129. package/dist/content/context.js +21 -0
  130. package/dist/content/context.js.map +1 -0
  131. package/dist/content/cursor.d.ts +33 -0
  132. package/dist/content/cursor.js +104 -0
  133. package/dist/content/cursor.js.map +1 -0
  134. package/dist/content/index.d.ts +28 -0
  135. package/dist/content/index.js +29 -0
  136. package/dist/content/index.js.map +1 -0
  137. package/dist/content/locale.d.ts +30 -0
  138. package/dist/content/locale.js +26 -0
  139. package/dist/content/locale.js.map +1 -0
  140. package/dist/content/perspective.d.ts +29 -0
  141. package/dist/content/perspective.js +31 -0
  142. package/dist/content/perspective.js.map +1 -0
  143. package/dist/content/populate.d.ts +25 -0
  144. package/dist/content/populate.js +22 -0
  145. package/dist/content/populate.js.map +1 -0
  146. package/dist/content/query.d.ts +122 -0
  147. package/dist/content/query.js +257 -0
  148. package/dist/content/query.js.map +1 -0
  149. package/dist/content/raw.d.ts +13 -0
  150. package/dist/content/raw.js +14 -0
  151. package/dist/content/raw.js.map +1 -0
  152. package/dist/content/resolve.d.ts +97 -0
  153. package/dist/content/resolve.js +261 -0
  154. package/dist/content/resolve.js.map +1 -0
  155. package/dist/content/serialize.d.ts +30 -0
  156. package/dist/content/serialize.js +57 -0
  157. package/dist/content/serialize.js.map +1 -0
  158. package/dist/content/tags.d.ts +54 -0
  159. package/dist/content/tags.js +40 -0
  160. package/dist/content/tags.js.map +1 -0
  161. package/dist/data-binding/fixtures.d.ts +20 -0
  162. package/dist/data-binding/fixtures.js +47 -0
  163. package/dist/data-binding/fixtures.js.map +1 -0
  164. package/dist/data-binding/index.d.ts +14 -0
  165. package/dist/data-binding/index.js +15 -0
  166. package/dist/data-binding/index.js.map +1 -0
  167. package/dist/data-binding/issues.d.ts +45 -0
  168. package/dist/data-binding/issues.js +46 -0
  169. package/dist/data-binding/issues.js.map +1 -0
  170. package/dist/data-binding/resolve.d.ts +87 -0
  171. package/dist/data-binding/resolve.js +204 -0
  172. package/dist/data-binding/resolve.js.map +1 -0
  173. package/dist/data-binding/sample.d.ts +21 -0
  174. package/dist/data-binding/sample.js +23 -0
  175. package/dist/data-binding/sample.js.map +1 -0
  176. package/dist/data-binding/sources.d.ts +225 -0
  177. package/dist/data-binding/sources.js +154 -0
  178. package/dist/data-binding/sources.js.map +1 -0
  179. package/dist/data-binding/tokens.d.ts +62 -0
  180. package/dist/data-binding/tokens.js +150 -0
  181. package/dist/data-binding/tokens.js.map +1 -0
  182. package/dist/design-tokens/css.d.ts +34 -0
  183. package/dist/design-tokens/css.js +51 -0
  184. package/dist/design-tokens/css.js.map +1 -0
  185. package/dist/design-tokens/index.d.ts +10 -0
  186. package/dist/design-tokens/index.js +11 -0
  187. package/dist/design-tokens/index.js.map +1 -0
  188. package/dist/design-tokens/style-guide.d.ts +30 -0
  189. package/dist/design-tokens/style-guide.js +31 -0
  190. package/dist/design-tokens/style-guide.js.map +1 -0
  191. package/dist/design-tokens/tokens.d.ts +89 -0
  192. package/dist/design-tokens/tokens.js +112 -0
  193. package/dist/design-tokens/tokens.js.map +1 -0
  194. package/dist/export-sync/builder-source.d.ts +85 -0
  195. package/dist/export-sync/builder-source.js +124 -0
  196. package/dist/export-sync/builder-source.js.map +1 -0
  197. package/dist/export-sync/check.d.ts +61 -0
  198. package/dist/export-sync/check.js +126 -0
  199. package/dist/export-sync/check.js.map +1 -0
  200. package/dist/export-sync/cli.d.ts +89 -0
  201. package/dist/export-sync/cli.js +323 -0
  202. package/dist/export-sync/cli.js.map +1 -0
  203. package/dist/export-sync/core.d.ts +58 -0
  204. package/dist/export-sync/core.js +41 -0
  205. package/dist/export-sync/core.js.map +1 -0
  206. package/dist/export-sync/eject.d.ts +28 -0
  207. package/dist/export-sync/eject.js +21 -0
  208. package/dist/export-sync/eject.js.map +1 -0
  209. package/dist/export-sync/fixtures.d.ts +25 -0
  210. package/dist/export-sync/fixtures.js +87 -0
  211. package/dist/export-sync/fixtures.js.map +1 -0
  212. package/dist/export-sync/generate.d.ts +7 -0
  213. package/dist/export-sync/generate.js +505 -0
  214. package/dist/export-sync/generate.js.map +1 -0
  215. package/dist/export-sync/index.d.ts +37 -0
  216. package/dist/export-sync/index.js +39 -0
  217. package/dist/export-sync/index.js.map +1 -0
  218. package/dist/export-sync/init.d.ts +123 -0
  219. package/dist/export-sync/init.js +234 -0
  220. package/dist/export-sync/init.js.map +1 -0
  221. package/dist/export-sync/manifest-host.d.ts +48 -0
  222. package/dist/export-sync/manifest-host.js +73 -0
  223. package/dist/export-sync/manifest-host.js.map +1 -0
  224. package/dist/export-sync/node.d.ts +20 -0
  225. package/dist/export-sync/node.js +101 -0
  226. package/dist/export-sync/node.js.map +1 -0
  227. package/dist/export-sync/push.d.ts +76 -0
  228. package/dist/export-sync/push.js +197 -0
  229. package/dist/export-sync/push.js.map +1 -0
  230. package/dist/export-sync/registry-sync-client.d.ts +59 -0
  231. package/dist/export-sync/registry-sync-client.js +97 -0
  232. package/dist/export-sync/registry-sync-client.js.map +1 -0
  233. package/dist/export-sync/sync.d.ts +47 -0
  234. package/dist/export-sync/sync.js +47 -0
  235. package/dist/export-sync/sync.js.map +1 -0
  236. package/dist/export-sync/typegen.d.ts +40 -0
  237. package/dist/export-sync/typegen.js +45 -0
  238. package/dist/export-sync/typegen.js.map +1 -0
  239. package/dist/export-sync/validate.d.ts +19 -0
  240. package/dist/export-sync/validate.js +102 -0
  241. package/dist/export-sync/validate.js.map +1 -0
  242. package/dist/export-sync/watch.d.ts +66 -0
  243. package/dist/export-sync/watch.js +70 -0
  244. package/dist/export-sync/watch.js.map +1 -0
  245. package/dist/operations/assets.d.ts +198 -0
  246. package/dist/operations/assets.js +75 -0
  247. package/dist/operations/assets.js.map +1 -0
  248. package/dist/operations/authorization.d.ts +49 -0
  249. package/dist/operations/authorization.js +128 -0
  250. package/dist/operations/authorization.js.map +1 -0
  251. package/dist/operations/changesets.d.ts +160 -0
  252. package/dist/operations/changesets.js +442 -0
  253. package/dist/operations/changesets.js.map +1 -0
  254. package/dist/operations/client.d.ts +49 -0
  255. package/dist/operations/client.js +57 -0
  256. package/dist/operations/client.js.map +1 -0
  257. package/dist/operations/core.d.ts +238 -0
  258. package/dist/operations/core.js +269 -0
  259. package/dist/operations/core.js.map +1 -0
  260. package/dist/operations/documents.d.ts +432 -0
  261. package/dist/operations/documents.js +344 -0
  262. package/dist/operations/documents.js.map +1 -0
  263. package/dist/operations/graph.d.ts +138 -0
  264. package/dist/operations/graph.js +78 -0
  265. package/dist/operations/graph.js.map +1 -0
  266. package/dist/operations/index.d.ts +19 -0
  267. package/dist/operations/index.js +20 -0
  268. package/dist/operations/index.js.map +1 -0
  269. package/dist/operations/members.d.ts +87 -0
  270. package/dist/operations/members.js +56 -0
  271. package/dist/operations/members.js.map +1 -0
  272. package/dist/operations/publishing.d.ts +89 -0
  273. package/dist/operations/publishing.js +57 -0
  274. package/dist/operations/publishing.js.map +1 -0
  275. package/dist/operations/references.d.ts +222 -0
  276. package/dist/operations/references.js +177 -0
  277. package/dist/operations/references.js.map +1 -0
  278. package/dist/operations/schema.d.ts +413 -0
  279. package/dist/operations/schema.js +138 -0
  280. package/dist/operations/schema.js.map +1 -0
  281. package/dist/operations/tokens.d.ts +79 -0
  282. package/dist/operations/tokens.js +102 -0
  283. package/dist/operations/tokens.js.map +1 -0
  284. package/dist/persistence/adapter.d.ts +79 -0
  285. package/dist/persistence/adapter.js +55 -0
  286. package/dist/persistence/adapter.js.map +1 -0
  287. package/dist/persistence/assets.d.ts +120 -0
  288. package/dist/persistence/assets.js +141 -0
  289. package/dist/persistence/assets.js.map +1 -0
  290. package/dist/persistence/backend-validation.d.ts +43 -0
  291. package/dist/persistence/backend-validation.js +57 -0
  292. package/dist/persistence/backend-validation.js.map +1 -0
  293. package/dist/persistence/cli-tokens.d.ts +50 -0
  294. package/dist/persistence/cli-tokens.js +66 -0
  295. package/dist/persistence/cli-tokens.js.map +1 -0
  296. package/dist/persistence/cms.d.ts +148 -0
  297. package/dist/persistence/cms.js +232 -0
  298. package/dist/persistence/cms.js.map +1 -0
  299. package/dist/persistence/contract-scenarios.d.ts +73 -0
  300. package/dist/persistence/contract-scenarios.js +496 -0
  301. package/dist/persistence/contract-scenarios.js.map +1 -0
  302. package/dist/persistence/core.d.ts +96 -0
  303. package/dist/persistence/core.js +110 -0
  304. package/dist/persistence/core.js.map +1 -0
  305. package/dist/persistence/graph.d.ts +61 -0
  306. package/dist/persistence/graph.js +98 -0
  307. package/dist/persistence/graph.js.map +1 -0
  308. package/dist/persistence/index.d.ts +22 -0
  309. package/dist/persistence/index.js +23 -0
  310. package/dist/persistence/index.js.map +1 -0
  311. package/dist/persistence/members.d.ts +70 -0
  312. package/dist/persistence/members.js +0 -0
  313. package/dist/persistence/members.js.map +1 -0
  314. package/dist/persistence/publishing.d.ts +59 -0
  315. package/dist/persistence/publishing.js +95 -0
  316. package/dist/persistence/publishing.js.map +1 -0
  317. package/dist/persistence/reference-extraction.d.ts +44 -0
  318. package/dist/persistence/reference-extraction.js +204 -0
  319. package/dist/persistence/reference-extraction.js.map +1 -0
  320. package/dist/persistence/reference-indexing.d.ts +68 -0
  321. package/dist/persistence/reference-indexing.js +112 -0
  322. package/dist/persistence/reference-indexing.js.map +1 -0
  323. package/dist/persistence/references.d.ts +257 -0
  324. package/dist/persistence/references.js +0 -0
  325. package/dist/persistence/references.js.map +1 -0
  326. package/dist/persistence/seed.d.ts +55 -0
  327. package/dist/persistence/seed.js +102 -0
  328. package/dist/persistence/seed.js.map +1 -0
  329. package/dist/persistence/self-maintaining-adapter.d.ts +41 -0
  330. package/dist/persistence/self-maintaining-adapter.js +79 -0
  331. package/dist/persistence/self-maintaining-adapter.js.map +1 -0
  332. package/dist/plugins/asset-storage.d.ts +76 -0
  333. package/dist/plugins/asset-storage.js +104 -0
  334. package/dist/plugins/asset-storage.js.map +1 -0
  335. package/dist/plugins/component-package.d.ts +54 -0
  336. package/dist/plugins/component-package.js +92 -0
  337. package/dist/plugins/component-package.js.map +1 -0
  338. package/dist/plugins/data-sources.d.ts +78 -0
  339. package/dist/plugins/data-sources.js +99 -0
  340. package/dist/plugins/data-sources.js.map +1 -0
  341. package/dist/plugins/examples.d.ts +47 -0
  342. package/dist/plugins/examples.js +205 -0
  343. package/dist/plugins/examples.js.map +1 -0
  344. package/dist/plugins/export-targets.d.ts +47 -0
  345. package/dist/plugins/export-targets.js +78 -0
  346. package/dist/plugins/export-targets.js.map +1 -0
  347. package/dist/plugins/field-types.d.ts +86 -0
  348. package/dist/plugins/field-types.js +93 -0
  349. package/dist/plugins/field-types.js.map +1 -0
  350. package/dist/plugins/hooks.d.ts +60 -0
  351. package/dist/plugins/hooks.js +94 -0
  352. package/dist/plugins/hooks.js.map +1 -0
  353. package/dist/plugins/index.d.ts +27 -0
  354. package/dist/plugins/index.js +28 -0
  355. package/dist/plugins/index.js.map +1 -0
  356. package/dist/plugins/marketplace.d.ts +90 -0
  357. package/dist/plugins/marketplace.js +110 -0
  358. package/dist/plugins/marketplace.js.map +1 -0
  359. package/dist/plugins/plugin.d.ts +107 -0
  360. package/dist/plugins/plugin.js +122 -0
  361. package/dist/plugins/plugin.js.map +1 -0
  362. package/dist/plugins/templates.d.ts +66 -0
  363. package/dist/plugins/templates.js +74 -0
  364. package/dist/plugins/templates.js.map +1 -0
  365. package/dist/project-graph/binding.d.ts +68 -0
  366. package/dist/project-graph/binding.js +39 -0
  367. package/dist/project-graph/binding.js.map +1 -0
  368. package/dist/project-graph/container.d.ts +126 -0
  369. package/dist/project-graph/container.js +221 -0
  370. package/dist/project-graph/container.js.map +1 -0
  371. package/dist/project-graph/edit.d.ts +66 -0
  372. package/dist/project-graph/edit.js +201 -0
  373. package/dist/project-graph/edit.js.map +1 -0
  374. package/dist/project-graph/fixtures.d.ts +51 -0
  375. package/dist/project-graph/fixtures.js +224 -0
  376. package/dist/project-graph/fixtures.js.map +1 -0
  377. package/dist/project-graph/ids.d.ts +17 -0
  378. package/dist/project-graph/ids.js +19 -0
  379. package/dist/project-graph/ids.js.map +1 -0
  380. package/dist/project-graph/index.d.ts +12 -0
  381. package/dist/project-graph/index.js +13 -0
  382. package/dist/project-graph/index.js.map +1 -0
  383. package/dist/project-graph/issues.d.ts +61 -0
  384. package/dist/project-graph/issues.js +44 -0
  385. package/dist/project-graph/issues.js.map +1 -0
  386. package/dist/project-graph/json.d.ts +6 -0
  387. package/dist/project-graph/json.js +10 -0
  388. package/dist/project-graph/json.js.map +1 -0
  389. package/dist/project-graph/node.d.ts +48 -0
  390. package/dist/project-graph/node.js +42 -0
  391. package/dist/project-graph/node.js.map +1 -0
  392. package/dist/project-graph/normalize.d.ts +17 -0
  393. package/dist/project-graph/normalize.js +110 -0
  394. package/dist/project-graph/normalize.js.map +1 -0
  395. package/dist/project-graph/serialize.d.ts +36 -0
  396. package/dist/project-graph/serialize.js +51 -0
  397. package/dist/project-graph/serialize.js.map +1 -0
  398. package/dist/project-graph/structure.d.ts +40 -0
  399. package/dist/project-graph/structure.js +36 -0
  400. package/dist/project-graph/structure.js.map +1 -0
  401. package/dist/project-graph/validate.d.ts +84 -0
  402. package/dist/project-graph/validate.js +158 -0
  403. package/dist/project-graph/validate.js.map +1 -0
  404. package/dist/rich-text/adapter.d.ts +43 -0
  405. package/dist/rich-text/adapter.js +24 -0
  406. package/dist/rich-text/adapter.js.map +1 -0
  407. package/dist/rich-text/dom-editor.d.ts +101 -0
  408. package/dist/rich-text/dom-editor.js +482 -0
  409. package/dist/rich-text/dom-editor.js.map +1 -0
  410. package/dist/rich-text/embed.d.ts +70 -0
  411. package/dist/rich-text/embed.js +70 -0
  412. package/dist/rich-text/embed.js.map +1 -0
  413. package/dist/rich-text/fixtures.d.ts +25 -0
  414. package/dist/rich-text/fixtures.js +115 -0
  415. package/dist/rich-text/fixtures.js.map +1 -0
  416. package/dist/rich-text/html.d.ts +5 -0
  417. package/dist/rich-text/html.js +309 -0
  418. package/dist/rich-text/html.js.map +1 -0
  419. package/dist/rich-text/index.d.ts +19 -0
  420. package/dist/rich-text/index.js +20 -0
  421. package/dist/rich-text/index.js.map +1 -0
  422. package/dist/rich-text/markdown.d.ts +7 -0
  423. package/dist/rich-text/markdown.js +235 -0
  424. package/dist/rich-text/markdown.js.map +1 -0
  425. package/dist/rich-text/portable-text.d.ts +50 -0
  426. package/dist/rich-text/portable-text.js +223 -0
  427. package/dist/rich-text/portable-text.js.map +1 -0
  428. package/dist/rich-text/registry.d.ts +48 -0
  429. package/dist/rich-text/registry.js +16 -0
  430. package/dist/rich-text/registry.js.map +1 -0
  431. package/dist/rich-text/render.d.ts +69 -0
  432. package/dist/rich-text/render.js +205 -0
  433. package/dist/rich-text/render.js.map +1 -0
  434. package/dist/rich-text/schema.d.ts +86 -0
  435. package/dist/rich-text/schema.js +80 -0
  436. package/dist/rich-text/schema.js.map +1 -0
  437. package/dist/rich-text/test-support.d.ts +7 -0
  438. package/dist/rich-text/test-support.js +8 -0
  439. package/dist/rich-text/test-support.js.map +1 -0
  440. package/dist/runtime-renderer/client.d.ts +14 -0
  441. package/dist/runtime-renderer/client.js +15 -0
  442. package/dist/runtime-renderer/client.js.map +1 -0
  443. package/dist/runtime-renderer/condition.d.ts +8 -0
  444. package/dist/runtime-renderer/condition.js +48 -0
  445. package/dist/runtime-renderer/condition.js.map +1 -0
  446. package/dist/runtime-renderer/content-client.d.ts +62 -0
  447. package/dist/runtime-renderer/content-client.js +37 -0
  448. package/dist/runtime-renderer/content-client.js.map +1 -0
  449. package/dist/runtime-renderer/context.d.ts +185 -0
  450. package/dist/runtime-renderer/context.js +7 -0
  451. package/dist/runtime-renderer/context.js.map +1 -0
  452. package/dist/runtime-renderer/fallback.d.ts +39 -0
  453. package/dist/runtime-renderer/fallback.js +45 -0
  454. package/dist/runtime-renderer/fallback.js.map +1 -0
  455. package/dist/runtime-renderer/index.d.ts +13 -0
  456. package/dist/runtime-renderer/index.js +13 -0
  457. package/dist/runtime-renderer/index.js.map +1 -0
  458. package/dist/runtime-renderer/primitives.d.ts +85 -0
  459. package/dist/runtime-renderer/primitives.js +442 -0
  460. package/dist/runtime-renderer/primitives.js.map +1 -0
  461. package/dist/runtime-renderer/render.d.ts +138 -0
  462. package/dist/runtime-renderer/render.js +825 -0
  463. package/dist/runtime-renderer/render.js.map +1 -0
  464. package/dist/runtime-renderer/rich-text.d.ts +26 -0
  465. package/dist/runtime-renderer/rich-text.js +113 -0
  466. package/dist/runtime-renderer/rich-text.js.map +1 -0
  467. package/dist/starter-kits/index.d.ts +13 -0
  468. package/dist/starter-kits/index.js +14 -0
  469. package/dist/starter-kits/index.js.map +1 -0
  470. package/dist/starter-kits/instantiate.d.ts +29 -0
  471. package/dist/starter-kits/instantiate.js +24 -0
  472. package/dist/starter-kits/instantiate.js.map +1 -0
  473. package/dist/starter-kits/kit.d.ts +61 -0
  474. package/dist/starter-kits/kit.js +37 -0
  475. package/dist/starter-kits/kit.js.map +1 -0
  476. package/dist/starter-kits/kits.d.ts +7 -0
  477. package/dist/starter-kits/kits.js +201 -0
  478. package/dist/starter-kits/kits.js.map +1 -0
  479. package/dist/starter-kits/manifests.d.ts +7 -0
  480. package/dist/starter-kits/manifests.js +111 -0
  481. package/dist/starter-kits/manifests.js.map +1 -0
  482. package/dist/starter-kits/upgrade.d.ts +39 -0
  483. package/dist/starter-kits/upgrade.js +54 -0
  484. package/dist/starter-kits/upgrade.js.map +1 -0
  485. package/dist/starter-kits/validate.d.ts +16 -0
  486. package/dist/starter-kits/validate.js +77 -0
  487. package/dist/starter-kits/validate.js.map +1 -0
  488. package/dist/studio-core/context.d.ts +27 -0
  489. package/dist/studio-core/context.js +44 -0
  490. package/dist/studio-core/context.js.map +1 -0
  491. package/dist/studio-core/errors.d.ts +58 -0
  492. package/dist/studio-core/errors.js +74 -0
  493. package/dist/studio-core/errors.js.map +1 -0
  494. package/dist/studio-core/fixtures.d.ts +18 -0
  495. package/dist/studio-core/fixtures.js +83 -0
  496. package/dist/studio-core/fixtures.js.map +1 -0
  497. package/dist/studio-core/ids.d.ts +22 -0
  498. package/dist/studio-core/ids.js +33 -0
  499. package/dist/studio-core/ids.js.map +1 -0
  500. package/dist/studio-core/index.d.ts +11 -0
  501. package/dist/studio-core/index.js +12 -0
  502. package/dist/studio-core/index.js.map +1 -0
  503. package/dist/studio-core/issues.d.ts +50 -0
  504. package/dist/studio-core/issues.js +33 -0
  505. package/dist/studio-core/issues.js.map +1 -0
  506. package/dist/studio-core/metadata.d.ts +109 -0
  507. package/dist/studio-core/metadata.js +74 -0
  508. package/dist/studio-core/metadata.js.map +1 -0
  509. package/dist/studio-core/repository.d.ts +73 -0
  510. package/dist/studio-core/repository.js +202 -0
  511. package/dist/studio-core/repository.js.map +1 -0
  512. package/dist/studio-core/sections.d.ts +73 -0
  513. package/dist/studio-core/sections.js +68 -0
  514. package/dist/studio-core/sections.js.map +1 -0
  515. package/dist/studio-core/validate.d.ts +15 -0
  516. package/dist/studio-core/validate.js +119 -0
  517. package/dist/studio-core/validate.js.map +1 -0
  518. package/dist/studio-core/workspace-config.d.ts +587 -0
  519. package/dist/studio-core/workspace-config.js +434 -0
  520. package/dist/studio-core/workspace-config.js.map +1 -0
  521. package/package.json +104 -0
@@ -0,0 +1,154 @@
1
+ import { z } from 'zod';
2
+ import { idSchema, jsonValueSchema } from '@elytracms/core/project-graph';
3
+ import { inferredSchemaSchema } from './tokens';
4
+ /**
5
+ * Data sources (EC-022). One uniform shape across the three kinds the product supports
6
+ * (brief §4.6, §7.5):
7
+ *
8
+ * - `rest` an HTTP fetch source (external API)
9
+ * - `cms` an internal CMS collection query (resolved by `@elytracms/core/cms-core`)
10
+ * - `convex` a Convex query or mutation, behind the project-owned repository adapter
11
+ *
12
+ * Every source shares the same envelope: a stable `id` (the binding `sourceId` addresses it),
13
+ * a human label, the kind-specific `config`, and an optional captured `sample` + inferred
14
+ * `schema` (EC-023). The kind-specific config differs, but resolution, sampling, inference and
15
+ * tokenization treat all three identically.
16
+ */
17
+ /** HTTP methods permitted for a REST fetch source. */
18
+ export const httpMethodSchema = z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']);
19
+ /** Per-source fetch configuration for a REST source. */
20
+ export const restConfigSchema = z.object({
21
+ url: z.string().min(1),
22
+ method: httpMethodSchema.default('GET'),
23
+ headers: z.record(z.string(), z.string()).default({}),
24
+ /** Static query parameters appended to the request. */
25
+ query: z.record(z.string(), z.string()).default({}),
26
+ /** Optional JSON request body (for POST/PUT/PATCH). */
27
+ body: jsonValueSchema.optional(),
28
+ });
29
+ export const restSourceSchema = z.object({
30
+ kind: z.literal('rest'),
31
+ id: idSchema,
32
+ label: z.string().min(1),
33
+ config: restConfigSchema,
34
+ });
35
+ /**
36
+ * Single-field sort of a CMS list query (EC-166 repeating sections). Matches
37
+ * the canonical AD-3 sort shape (`@elytracms/core/content`'s `SortInput` with the
38
+ * direction explicit); ties always break by document id ascending downstream.
39
+ */
40
+ export const cmsSortSchema = z.object({
41
+ field: z.string().min(1),
42
+ direction: z.enum(['asc', 'desc']),
43
+ });
44
+ /** Per-source query configuration for an internal CMS collection query. */
45
+ export const cmsConfigSchema = z.object({
46
+ /** Id of the CMS collection to query. */
47
+ collectionId: idSchema,
48
+ /** When set, fetch a single document by id; otherwise the query returns a list. */
49
+ documentId: idSchema.optional(),
50
+ /** Optional locale for localized content. */
51
+ locale: z.string().optional(),
52
+ /** Optional equality filters keyed by field name. */
53
+ filter: z.record(z.string(), jsonValueSchema).default({}),
54
+ /** Optional single-field sort (EC-166); absent = id order. */
55
+ sort: cmsSortSchema.optional(),
56
+ limit: z.number().int().positive().optional(),
57
+ });
58
+ export const cmsSourceSchema = z.object({
59
+ kind: z.literal('cms'),
60
+ id: idSchema,
61
+ label: z.string().min(1),
62
+ config: cmsConfigSchema,
63
+ });
64
+ /** Whether a Convex source reads (query) or writes (mutation). */
65
+ export const convexOperationSchema = z.enum(['query', 'mutation']);
66
+ /** Per-source query/mutation configuration for a Convex function reference. */
67
+ export const convexConfigSchema = z.object({
68
+ operation: convexOperationSchema.default('query'),
69
+ /** Convex function reference, e.g. `posts:list` or `posts.list`. */
70
+ functionRef: z.string().min(1),
71
+ /** Arguments passed to the Convex function. */
72
+ args: z.record(z.string(), jsonValueSchema).default({}),
73
+ });
74
+ export const convexSourceSchema = z.object({
75
+ kind: z.literal('convex'),
76
+ id: idSchema,
77
+ label: z.string().min(1),
78
+ config: convexConfigSchema,
79
+ });
80
+ /**
81
+ * The captured sample (EC-023) and inferred schema are attached uniformly to any source kind.
82
+ * Kept separate from the kind-specific union so the discriminated union stays clean and the
83
+ * sample fields can be merged on after parse.
84
+ */
85
+ export const sampleEnvelopeSchema = z.object({
86
+ /** A representative captured payload, used for inference and the binding picker preview. */
87
+ sample: jsonValueSchema.optional(),
88
+ /** Structural schema inferred from {@link sample} (EC-023). */
89
+ schema: inferredSchemaSchema.optional(),
90
+ });
91
+ /** The uniform source shape: kind-specific envelope plus the shared sample/schema fields. */
92
+ export const dataSourceSchema = z.intersection(z.discriminatedUnion('kind', [restSourceSchema, cmsSourceSchema, convexSourceSchema]), sampleEnvelopeSchema);
93
+ /** Parse an unknown value into a {@link DataSource}, applying per-config defaults. Never throws. */
94
+ export function parseDataSource(input) {
95
+ return dataSourceSchema.safeParse(input);
96
+ }
97
+ /**
98
+ * A registry of data sources addressable by stable id (EC-022). Construction de-duplicates by
99
+ * id (last write wins) and validates each entry; lookups are O(1). The registry is immutable —
100
+ * `with`/`without` return new registries — so it can be stored in the graph/editor state safely.
101
+ */
102
+ export class SourceRegistry {
103
+ byId;
104
+ constructor(byId) {
105
+ this.byId = byId;
106
+ }
107
+ /** Build a registry from a list of sources. Each is validated via {@link dataSourceSchema}. */
108
+ static from(sources) {
109
+ const map = new Map();
110
+ for (const raw of sources) {
111
+ const source = dataSourceSchema.parse(raw);
112
+ map.set(source.id, source);
113
+ }
114
+ return new SourceRegistry(map);
115
+ }
116
+ /** An empty registry. */
117
+ static empty() {
118
+ return new SourceRegistry(new Map());
119
+ }
120
+ has(id) {
121
+ return this.byId.has(id);
122
+ }
123
+ get(id) {
124
+ return this.byId.get(id);
125
+ }
126
+ list() {
127
+ return [...this.byId.values()];
128
+ }
129
+ ids() {
130
+ return [...this.byId.keys()];
131
+ }
132
+ /** The set of known ids, suitable for `validateProjectGraph`'s `knownSourceIds` option. */
133
+ knownSourceIds() {
134
+ return new Set(this.byId.keys());
135
+ }
136
+ /** Return a new registry with `source` added or replacing any existing entry with the same id. */
137
+ with(source) {
138
+ const next = new Map(this.byId);
139
+ next.set(dataSourceSchema.parse(source).id, source);
140
+ return new SourceRegistry(next);
141
+ }
142
+ /** Return a new registry without the source `id` (no-op if absent). */
143
+ without(id) {
144
+ if (!this.byId.has(id))
145
+ return this;
146
+ const next = new Map(this.byId);
147
+ next.delete(id);
148
+ return new SourceRegistry(next);
149
+ }
150
+ get size() {
151
+ return this.byId.size;
152
+ }
153
+ }
154
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/data-binding/sources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ import type { JsonValue } from '@elytracms/core/project-graph';
3
+ /**
4
+ * Build a JSON Pointer token from a sequence of object keys / array indices.
5
+ * `tokenFromPath([])` is the root pointer `"/"`; `tokenFromPath(['items', 0, 'title'])` is
6
+ * `"/items/0/title"`.
7
+ */
8
+ export declare function tokenFromPath(path: ReadonlyArray<string | number>): string;
9
+ /**
10
+ * Parse a JSON Pointer token into its reference segments. The root pointer (`""` or `"/"`)
11
+ * yields an empty array. Returns `undefined` for syntactically invalid tokens (a non-empty
12
+ * pointer that does not begin with `/`).
13
+ */
14
+ export declare function pathFromToken(token: string): string[] | undefined;
15
+ /** Outcome of resolving a token against a payload. `found` distinguishes a real `null`/`undefined` from a miss. */
16
+ export type TokenResolution = {
17
+ found: true;
18
+ value: JsonValue;
19
+ } | {
20
+ found: false;
21
+ };
22
+ /**
23
+ * Resolve a JSON Pointer token to a value within a payload. Numeric segments index arrays;
24
+ * string segments index objects. A miss (unknown key, out-of-range index, or traversal
25
+ * through a primitive) yields `{ found: false }` rather than throwing.
26
+ */
27
+ export declare function resolveToken(payload: JsonValue, token: string): TokenResolution;
28
+ /**
29
+ * An inferred schema/shape for a sample payload (EC-023). This is a lightweight structural
30
+ * description — not a Zod schema — used to drive the binding picker and to enumerate the
31
+ * stable tokens a source exposes.
32
+ */
33
+ export type InferredSchema = {
34
+ kind: 'string';
35
+ } | {
36
+ kind: 'number';
37
+ } | {
38
+ kind: 'boolean';
39
+ } | {
40
+ kind: 'null';
41
+ } | {
42
+ kind: 'array';
43
+ element: InferredSchema;
44
+ } | {
45
+ kind: 'object';
46
+ properties: Record<string, InferredSchema>;
47
+ } | {
48
+ kind: 'unknown';
49
+ };
50
+ export declare const inferredSchemaSchema: z.ZodType<InferredSchema>;
51
+ /**
52
+ * Infer a structural schema from a sample payload (EC-023). Arrays infer their element shape
53
+ * by merging across elements so heterogeneous samples still produce a usable union-ish shape;
54
+ * an empty array yields an `unknown` element.
55
+ */
56
+ export declare function inferSchema(sample: JsonValue): InferredSchema;
57
+ /**
58
+ * Enumerate the stable leaf+branch tokens exposed by an inferred schema. Object properties
59
+ * recurse; arrays expose a representative `0` index so a single concrete item is addressable
60
+ * (e.g. for previewing a repeater item shape). The root token (`"/"`) is included.
61
+ */
62
+ export declare function tokensForSchema(schema: InferredSchema): string[];
@@ -0,0 +1,150 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Path tokens (EC-023). A token is a JSON Pointer (RFC 6901), e.g. `/items/0/title`. We use
4
+ * structural pointers — not UI labels — so a binding survives renaming a field's display
5
+ * label: only the data shape matters. The root document is the empty pointer `""` or `"/"`.
6
+ *
7
+ * Per RFC 6901, a reference token escapes `~` as `~0` and `/` as `~1` so keys containing
8
+ * those characters remain addressable.
9
+ */
10
+ const escapeRefToken = (key) => key.replace(/~/g, '~0').replace(/\//g, '~1');
11
+ const unescapeRefToken = (token) => token.replace(/~1/g, '/').replace(/~0/g, '~');
12
+ /**
13
+ * Build a JSON Pointer token from a sequence of object keys / array indices.
14
+ * `tokenFromPath([])` is the root pointer `"/"`; `tokenFromPath(['items', 0, 'title'])` is
15
+ * `"/items/0/title"`.
16
+ */
17
+ export function tokenFromPath(path) {
18
+ if (path.length === 0)
19
+ return '/';
20
+ return '/' + path.map((seg) => escapeRefToken(String(seg))).join('/');
21
+ }
22
+ /**
23
+ * Parse a JSON Pointer token into its reference segments. The root pointer (`""` or `"/"`)
24
+ * yields an empty array. Returns `undefined` for syntactically invalid tokens (a non-empty
25
+ * pointer that does not begin with `/`).
26
+ */
27
+ export function pathFromToken(token) {
28
+ if (token === '' || token === '/')
29
+ return [];
30
+ if (!token.startsWith('/'))
31
+ return undefined;
32
+ return token
33
+ .slice(1)
34
+ .split('/')
35
+ .map(unescapeRefToken);
36
+ }
37
+ const isPlainObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
38
+ /**
39
+ * Resolve a JSON Pointer token to a value within a payload. Numeric segments index arrays;
40
+ * string segments index objects. A miss (unknown key, out-of-range index, or traversal
41
+ * through a primitive) yields `{ found: false }` rather than throwing.
42
+ */
43
+ export function resolveToken(payload, token) {
44
+ const path = pathFromToken(token);
45
+ if (path === undefined)
46
+ return { found: false };
47
+ let current = payload;
48
+ for (const segment of path) {
49
+ if (Array.isArray(current)) {
50
+ // Array index must be a non-negative integer string with no leading zeros (RFC 6901).
51
+ if (!/^(0|[1-9][0-9]*)$/.test(segment))
52
+ return { found: false };
53
+ const index = Number(segment);
54
+ if (index >= current.length)
55
+ return { found: false };
56
+ current = current[index];
57
+ continue;
58
+ }
59
+ if (isPlainObject(current)) {
60
+ if (!Object.prototype.hasOwnProperty.call(current, segment))
61
+ return { found: false };
62
+ current = current[segment];
63
+ continue;
64
+ }
65
+ // Cannot descend into a primitive / null.
66
+ return { found: false };
67
+ }
68
+ return { found: true, value: current };
69
+ }
70
+ export const inferredSchemaSchema = z.lazy(() => z.union([
71
+ z.object({ kind: z.literal('string') }),
72
+ z.object({ kind: z.literal('number') }),
73
+ z.object({ kind: z.literal('boolean') }),
74
+ z.object({ kind: z.literal('null') }),
75
+ z.object({ kind: z.literal('array'), element: inferredSchemaSchema }),
76
+ z.object({ kind: z.literal('object'), properties: z.record(z.string(), inferredSchemaSchema) }),
77
+ z.object({ kind: z.literal('unknown') }),
78
+ ]));
79
+ const mergeSchemas = (a, b) => {
80
+ if (a.kind === 'unknown')
81
+ return b;
82
+ if (b.kind === 'unknown')
83
+ return a;
84
+ if (a.kind === 'array' && b.kind === 'array') {
85
+ return { kind: 'array', element: mergeSchemas(a.element, b.element) };
86
+ }
87
+ if (a.kind === 'object' && b.kind === 'object') {
88
+ const properties = { ...a.properties };
89
+ for (const [key, schema] of Object.entries(b.properties)) {
90
+ const existing = properties[key];
91
+ properties[key] = existing ? mergeSchemas(existing, schema) : schema;
92
+ }
93
+ return { kind: 'object', properties };
94
+ }
95
+ // Mixed primitive/array/object element types collapse to `unknown` so callers fall back gracefully.
96
+ return a.kind === b.kind ? a : { kind: 'unknown' };
97
+ };
98
+ /**
99
+ * Infer a structural schema from a sample payload (EC-023). Arrays infer their element shape
100
+ * by merging across elements so heterogeneous samples still produce a usable union-ish shape;
101
+ * an empty array yields an `unknown` element.
102
+ */
103
+ export function inferSchema(sample) {
104
+ if (sample === null)
105
+ return { kind: 'null' };
106
+ switch (typeof sample) {
107
+ case 'string':
108
+ return { kind: 'string' };
109
+ case 'number':
110
+ return { kind: 'number' };
111
+ case 'boolean':
112
+ return { kind: 'boolean' };
113
+ default:
114
+ break;
115
+ }
116
+ if (Array.isArray(sample)) {
117
+ const element = sample.reduce((acc, item) => mergeSchemas(acc, inferSchema(item)), { kind: 'unknown' });
118
+ return { kind: 'array', element };
119
+ }
120
+ if (isPlainObject(sample)) {
121
+ const properties = {};
122
+ for (const [key, value] of Object.entries(sample)) {
123
+ properties[key] = inferSchema(value);
124
+ }
125
+ return { kind: 'object', properties };
126
+ }
127
+ return { kind: 'unknown' };
128
+ }
129
+ /**
130
+ * Enumerate the stable leaf+branch tokens exposed by an inferred schema. Object properties
131
+ * recurse; arrays expose a representative `0` index so a single concrete item is addressable
132
+ * (e.g. for previewing a repeater item shape). The root token (`"/"`) is included.
133
+ */
134
+ export function tokensForSchema(schema) {
135
+ const tokens = [];
136
+ const walk = (node, path) => {
137
+ tokens.push(tokenFromPath(path));
138
+ if (node.kind === 'object') {
139
+ for (const [key, child] of Object.entries(node.properties)) {
140
+ walk(child, [...path, key]);
141
+ }
142
+ }
143
+ else if (node.kind === 'array') {
144
+ walk(node.element, [...path, 0]);
145
+ }
146
+ };
147
+ walk(schema, []);
148
+ return tokens;
149
+ }
150
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/data-binding/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { ColorMode, ColorToken, TokenValue } from './tokens';
2
+ /**
3
+ * CSS-variable emission (EC-093). Turns the typed tokens into the `:root` / `.dark` custom
4
+ * properties the Studio theme consumes and that an exported Next.js app can drop in verbatim.
5
+ * Because both the builder's `tokens.css` and the export are produced here, they never drift.
6
+ */
7
+ /** Resolve a token value to a CSS value: a literal, or `var(--ref)` for an aliased role. */
8
+ export declare function resolveTokenValue(value: TokenValue): string;
9
+ /**
10
+ * Per-token colour overrides (e.g. a starter kit's brand palette). Keyed by token name; each
11
+ * supplies a literal colour for light and/or dark that replaces the canonical value.
12
+ */
13
+ export type TokenOverrides = Record<string, {
14
+ light?: string;
15
+ dark?: string;
16
+ }>;
17
+ /** The CSS-variable map for one colour mode, including `--radius` for the light/base mode. */
18
+ export declare function tokensToCssVariables(mode: ColorMode, overrides?: TokenOverrides): Record<string, string>;
19
+ /**
20
+ * Emit the full token stylesheet: a `:root` block (light + `--radius`) and a `.dark` block.
21
+ * Deterministic and stable — suitable to write to `tokens.css` and to assert against in tests.
22
+ * Optional `overrides` apply a kit/brand palette on top of the canonical tokens (EC-117).
23
+ */
24
+ export declare function emitTokensCss(overrides?: TokenOverrides): string;
25
+ /** A single colour token resolved for a mode (used by the style guide). */
26
+ export interface ResolvedColor {
27
+ name: string;
28
+ role: string;
29
+ /** The CSS value, with refs resolved to their concrete colour. */
30
+ css: string;
31
+ variable: string;
32
+ }
33
+ /** Resolve a token (following one level of ref) to a concrete colour for a mode. */
34
+ export declare function resolveColor(token: ColorToken, mode: ColorMode): ResolvedColor;
@@ -0,0 +1,51 @@
1
+ import { colorTokens, radiusBase } from './tokens';
2
+ /**
3
+ * CSS-variable emission (EC-093). Turns the typed tokens into the `:root` / `.dark` custom
4
+ * properties the Studio theme consumes and that an exported Next.js app can drop in verbatim.
5
+ * Because both the builder's `tokens.css` and the export are produced here, they never drift.
6
+ */
7
+ /** Resolve a token value to a CSS value: a literal, or `var(--ref)` for an aliased role. */
8
+ export function resolveTokenValue(value) {
9
+ return 'ref' in value ? `var(--${value.ref})` : value.value;
10
+ }
11
+ /** The CSS-variable map for one colour mode, including `--radius` for the light/base mode. */
12
+ export function tokensToCssVariables(mode, overrides = {}) {
13
+ const out = {};
14
+ for (const token of colorTokens) {
15
+ const override = overrides[token.name]?.[mode];
16
+ out[`--${token.name}`] = override ?? resolveTokenValue(mode === 'dark' ? token.dark : token.light);
17
+ }
18
+ if (mode === 'light')
19
+ out['--radius'] = radiusBase;
20
+ return out;
21
+ }
22
+ function emitBlock(selector, vars) {
23
+ const lines = Object.entries(vars).map(([name, value]) => ` ${name}: ${value};`);
24
+ return `${selector} {\n${lines.join('\n')}\n}`;
25
+ }
26
+ /**
27
+ * Emit the full token stylesheet: a `:root` block (light + `--radius`) and a `.dark` block.
28
+ * Deterministic and stable — suitable to write to `tokens.css` and to assert against in tests.
29
+ * Optional `overrides` apply a kit/brand palette on top of the canonical tokens (EC-117).
30
+ */
31
+ export function emitTokensCss(overrides = {}) {
32
+ const header = '/* GENERATED from @elytracms/design-tokens — do not edit by hand. Run `pnpm gen:tokens`. */';
33
+ const root = emitBlock(':root', tokensToCssVariables('light', overrides));
34
+ const dark = emitBlock('.dark', tokensToCssVariables('dark', overrides));
35
+ return `${header}\n${root}\n\n${dark}\n`;
36
+ }
37
+ /** Resolve a token (following one level of ref) to a concrete colour for a mode. */
38
+ export function resolveColor(token, mode) {
39
+ const value = mode === 'dark' ? token.dark : token.light;
40
+ let css;
41
+ if ('ref' in value) {
42
+ const target = colorTokens.find((t) => t.name === value.ref);
43
+ const targetValue = target ? (mode === 'dark' ? target.dark : target.light) : undefined;
44
+ css = targetValue && 'value' in targetValue ? targetValue.value : `var(--${value.ref})`;
45
+ }
46
+ else {
47
+ css = value.value;
48
+ }
49
+ return { name: token.name, role: token.role, css, variable: `--${token.name}` };
50
+ }
51
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../../src/design-tokens/css.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @elytracms/design-tokens — the single typed source of truth for the visual system (brief §8,
3
+ * EC-091/092/093/094). Semantic colour roles (light/dark), radius, type and spacing scales,
4
+ * with deterministic CSS-variable emission and a style-guide model. The Studio theme, the
5
+ * CSS-variable export, and the visual style guide all derive from here — no drift.
6
+ */
7
+ export declare const PACKAGE = "@elytracms/core/design-tokens";
8
+ export * from './tokens';
9
+ export * from './css';
10
+ export * from './style-guide';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @elytracms/design-tokens — the single typed source of truth for the visual system (brief §8,
3
+ * EC-091/092/093/094). Semantic colour roles (light/dark), radius, type and spacing scales,
4
+ * with deterministic CSS-variable emission and a style-guide model. The Studio theme, the
5
+ * CSS-variable export, and the visual style guide all derive from here — no drift.
6
+ */
7
+ export const PACKAGE = '@elytracms/core/design-tokens';
8
+ export * from './tokens';
9
+ export * from './css';
10
+ export * from './style-guide';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/design-tokens/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,+BAA+B,CAAA;AAEtD,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,eAAe,CAAA"}
@@ -0,0 +1,30 @@
1
+ import type { ColorMode, ScaleStep } from './tokens';
2
+ import type { ResolvedColor } from './css';
3
+ /**
4
+ * A deterministic model for the visual style guide (EC-094). It groups the tokens into the
5
+ * sections the guide renders — colour swatches by role, the type scale, spacing and radius —
6
+ * with both light and dark resolutions so the surface is reproducible from fixtures and
7
+ * agent-verifiable (no live data, no randomness).
8
+ */
9
+ export interface SwatchGroup {
10
+ title: string;
11
+ /** Token names in this group, in display order. */
12
+ tokens: string[];
13
+ }
14
+ /** Semantic grouping of the colour roles for the guide. */
15
+ export declare const swatchGroups: readonly SwatchGroup[];
16
+ export interface SwatchSection {
17
+ title: string;
18
+ swatches: ResolvedColor[];
19
+ }
20
+ /** Resolve every swatch group for a colour mode. */
21
+ export declare function styleGuideSwatches(mode: ColorMode): SwatchSection[];
22
+ export interface StyleGuideModel {
23
+ swatches: SwatchSection[];
24
+ typeScale: readonly ScaleStep[];
25
+ spacingScale: readonly ScaleStep[];
26
+ radiusScale: readonly ScaleStep[];
27
+ colorCount: number;
28
+ }
29
+ /** The full deterministic style-guide model for a colour mode. */
30
+ export declare function styleGuideModel(mode: ColorMode): StyleGuideModel;
@@ -0,0 +1,31 @@
1
+ import { colorTokens, radiusScale, spacingScale, typeScale } from './tokens';
2
+ import { resolveColor } from './css';
3
+ /** Semantic grouping of the colour roles for the guide. */
4
+ export const swatchGroups = [
5
+ { title: 'Surfaces', tokens: ['background', 'card', 'panel', 'popover', 'muted', 'accent'] },
6
+ { title: 'Text', tokens: ['foreground', 'muted-foreground', 'secondary-foreground', 'accent-foreground'] },
7
+ { title: 'Brand', tokens: ['primary', 'primary-foreground', 'secondary', 'ring'] },
8
+ { title: 'Status', tokens: ['success', 'warning', 'destructive', 'info'] },
9
+ { title: 'Structure', tokens: ['border', 'input', 'grid-line'] },
10
+ ];
11
+ /** Resolve every swatch group for a colour mode. */
12
+ export function styleGuideSwatches(mode) {
13
+ return swatchGroups.map((group) => ({
14
+ title: group.title,
15
+ swatches: group.tokens
16
+ .map((name) => colorTokens.find((t) => t.name === name))
17
+ .filter((t) => Boolean(t))
18
+ .map((token) => resolveColor(token, mode)),
19
+ }));
20
+ }
21
+ /** The full deterministic style-guide model for a colour mode. */
22
+ export function styleGuideModel(mode) {
23
+ return {
24
+ swatches: styleGuideSwatches(mode),
25
+ typeScale,
26
+ spacingScale,
27
+ radiusScale,
28
+ colorCount: colorTokens.length,
29
+ };
30
+ }
31
+ //# sourceMappingURL=style-guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-guide.js","sourceRoot":"","sources":["../../src/design-tokens/style-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAiBpC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;IAC5F,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,EAAE;IAC1G,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE;IAClF,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE;IAC1E,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE;CACjE,CAAA;AAOD,oDAAoD;AACpD,MAAM,UAAU,kBAAkB,CAAC,IAAe;IAChD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,MAAM;aACnB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;aACvD,MAAM,CAAC,CAAC,CAAC,EAAqC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC7C,CAAC,CAAC,CAAA;AACL,CAAC;AAUD,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,IAAe;IAC7C,OAAO;QACL,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC;QAClC,SAAS;QACT,YAAY;QACZ,WAAW;QACX,UAAU,EAAE,WAAW,CAAC,MAAM;KAC/B,CAAA;AACH,CAAC"}