@bendyline/squisq 1.2.2 → 1.4.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 (427) hide show
  1. package/dist/{Doc-BfBhiCNr.d.ts → Doc-BeSeH2iX.d.ts} +141 -33
  2. package/dist/ImageEditDoc-BTIvw0oq.d.ts +84 -0
  3. package/dist/__tests__/colorUtils.test.d.ts +2 -0
  4. package/dist/__tests__/colorUtils.test.d.ts.map +1 -0
  5. package/dist/__tests__/colorUtils.test.js +94 -0
  6. package/dist/__tests__/colorUtils.test.js.map +1 -0
  7. package/dist/__tests__/getLayers.test.js +31 -7
  8. package/dist/__tests__/getLayers.test.js.map +1 -1
  9. package/dist/__tests__/iconResolve.test.d.ts +2 -0
  10. package/dist/__tests__/iconResolve.test.d.ts.map +1 -0
  11. package/dist/__tests__/iconResolve.test.js +99 -0
  12. package/dist/__tests__/iconResolve.test.js.map +1 -0
  13. package/dist/__tests__/imageEditState.test.d.ts +2 -0
  14. package/dist/__tests__/imageEditState.test.d.ts.map +1 -0
  15. package/dist/__tests__/imageEditState.test.js +61 -0
  16. package/dist/__tests__/imageEditState.test.js.map +1 -0
  17. package/dist/__tests__/imageEditVersions.test.d.ts +2 -0
  18. package/dist/__tests__/imageEditVersions.test.d.ts.map +1 -0
  19. package/dist/__tests__/imageEditVersions.test.js +141 -0
  20. package/dist/__tests__/imageEditVersions.test.js.map +1 -0
  21. package/dist/__tests__/inferDocumentTitle.test.d.ts +2 -0
  22. package/dist/__tests__/inferDocumentTitle.test.d.ts.map +1 -0
  23. package/dist/__tests__/inferDocumentTitle.test.js +42 -0
  24. package/dist/__tests__/inferDocumentTitle.test.js.map +1 -0
  25. package/dist/__tests__/jsonForm.chooseControl.test.d.ts +2 -0
  26. package/dist/__tests__/jsonForm.chooseControl.test.d.ts.map +1 -0
  27. package/dist/__tests__/jsonForm.chooseControl.test.js +74 -0
  28. package/dist/__tests__/jsonForm.chooseControl.test.js.map +1 -0
  29. package/dist/__tests__/jsonForm.evaluateWhen.test.d.ts +2 -0
  30. package/dist/__tests__/jsonForm.evaluateWhen.test.d.ts.map +1 -0
  31. package/dist/__tests__/jsonForm.evaluateWhen.test.js +51 -0
  32. package/dist/__tests__/jsonForm.evaluateWhen.test.js.map +1 -0
  33. package/dist/__tests__/jsonForm.inferSchema.test.d.ts +2 -0
  34. package/dist/__tests__/jsonForm.inferSchema.test.d.ts.map +1 -0
  35. package/dist/__tests__/jsonForm.inferSchema.test.js +23 -0
  36. package/dist/__tests__/jsonForm.inferSchema.test.js.map +1 -0
  37. package/dist/__tests__/jsonForm.pointer.test.d.ts +2 -0
  38. package/dist/__tests__/jsonForm.pointer.test.d.ts.map +1 -0
  39. package/dist/__tests__/jsonForm.pointer.test.js +94 -0
  40. package/dist/__tests__/jsonForm.pointer.test.js.map +1 -0
  41. package/dist/__tests__/markdown.test.js +40 -0
  42. package/dist/__tests__/markdown.test.js.map +1 -1
  43. package/dist/__tests__/markdownIcons.test.d.ts +2 -0
  44. package/dist/__tests__/markdownIcons.test.d.ts.map +1 -0
  45. package/dist/__tests__/markdownIcons.test.js +93 -0
  46. package/dist/__tests__/markdownIcons.test.js.map +1 -0
  47. package/dist/__tests__/markdownToDoc.test.js +15 -4
  48. package/dist/__tests__/markdownToDoc.test.js.map +1 -1
  49. package/dist/__tests__/recommendTemplates.test.d.ts +2 -0
  50. package/dist/__tests__/recommendTemplates.test.d.ts.map +1 -0
  51. package/dist/__tests__/recommendTemplates.test.js +158 -0
  52. package/dist/__tests__/recommendTemplates.test.js.map +1 -0
  53. package/dist/__tests__/scopedContentContainer.test.d.ts +2 -0
  54. package/dist/__tests__/scopedContentContainer.test.d.ts.map +1 -0
  55. package/dist/__tests__/scopedContentContainer.test.js +74 -0
  56. package/dist/__tests__/scopedContentContainer.test.js.map +1 -0
  57. package/dist/__tests__/slideshowGenerator.test.js +1 -1
  58. package/dist/__tests__/slideshowGenerator.test.js.map +1 -1
  59. package/dist/__tests__/surface.test.d.ts +2 -0
  60. package/dist/__tests__/surface.test.d.ts.map +1 -0
  61. package/dist/__tests__/surface.test.js +57 -0
  62. package/dist/__tests__/surface.test.js.map +1 -0
  63. package/dist/__tests__/templateAnnotationParse.test.d.ts +2 -0
  64. package/dist/__tests__/templateAnnotationParse.test.d.ts.map +1 -0
  65. package/dist/__tests__/templateAnnotationParse.test.js +42 -0
  66. package/dist/__tests__/templateAnnotationParse.test.js.map +1 -0
  67. package/dist/__tests__/templates.test.js +90 -9
  68. package/dist/__tests__/templates.test.js.map +1 -1
  69. package/dist/__tests__/themeCompile.test.d.ts +2 -0
  70. package/dist/__tests__/themeCompile.test.d.ts.map +1 -0
  71. package/dist/__tests__/themeCompile.test.js +134 -0
  72. package/dist/__tests__/themeCompile.test.js.map +1 -0
  73. package/dist/__tests__/themeValidator.test.d.ts +2 -0
  74. package/dist/__tests__/themeValidator.test.d.ts.map +1 -0
  75. package/dist/__tests__/themeValidator.test.js +107 -0
  76. package/dist/__tests__/themeValidator.test.js.map +1 -0
  77. package/dist/__tests__/versions.test.d.ts +2 -0
  78. package/dist/__tests__/versions.test.d.ts.map +1 -0
  79. package/dist/__tests__/versions.test.js +339 -0
  80. package/dist/__tests__/versions.test.js.map +1 -0
  81. package/dist/{chunk-CYQHG27J.js → chunk-2TMAWB4Y.js} +74 -1
  82. package/dist/chunk-2TMAWB4Y.js.map +1 -0
  83. package/dist/{chunk-LAZELBON.js → chunk-3K5OG6KI.js} +165 -17
  84. package/dist/chunk-3K5OG6KI.js.map +1 -0
  85. package/dist/chunk-57CVQCFX.js +193 -0
  86. package/dist/chunk-57CVQCFX.js.map +1 -0
  87. package/dist/{chunk-QM5PKNPW.js → chunk-5WFRKURX.js} +1 -1
  88. package/dist/chunk-5WFRKURX.js.map +1 -0
  89. package/dist/chunk-B4EEON3N.js +1317 -0
  90. package/dist/chunk-B4EEON3N.js.map +1 -0
  91. package/dist/chunk-DBS6RIFL.js +81 -0
  92. package/dist/chunk-DBS6RIFL.js.map +1 -0
  93. package/dist/{chunk-MIBRIRGJ.js → chunk-FR2RBTKO.js} +3 -3
  94. package/dist/{chunk-MIBRIRGJ.js.map → chunk-FR2RBTKO.js.map} +1 -1
  95. package/dist/chunk-H3AXU4MJ.js +179 -0
  96. package/dist/chunk-H3AXU4MJ.js.map +1 -0
  97. package/dist/chunk-JELIRVDP.js +24 -0
  98. package/dist/chunk-JELIRVDP.js.map +1 -0
  99. package/dist/chunk-K32VJONL.js +193 -0
  100. package/dist/chunk-K32VJONL.js.map +1 -0
  101. package/dist/{chunk-GAQLMORN.js → chunk-KSWJR66U.js} +248 -44
  102. package/dist/chunk-KSWJR66U.js.map +1 -0
  103. package/dist/{chunk-TSG2OSE6.js → chunk-MYIH7FWD.js} +3 -3
  104. package/dist/chunk-MYIH7FWD.js.map +1 -0
  105. package/dist/chunk-VLJJHDAC.js +218 -0
  106. package/dist/chunk-VLJJHDAC.js.map +1 -0
  107. package/dist/chunk-WMOI7FN3.js +182 -0
  108. package/dist/chunk-WMOI7FN3.js.map +1 -0
  109. package/dist/chunk-ZTX4PFFT.js +520 -0
  110. package/dist/chunk-ZTX4PFFT.js.map +1 -0
  111. package/dist/doc/audioMapping.d.ts.map +1 -1
  112. package/dist/doc/audioMapping.js +80 -9
  113. package/dist/doc/audioMapping.js.map +1 -1
  114. package/dist/doc/getLayers.d.ts.map +1 -1
  115. package/dist/doc/getLayers.js +29 -18
  116. package/dist/doc/getLayers.js.map +1 -1
  117. package/dist/doc/markdownToDoc.d.ts.map +1 -1
  118. package/dist/doc/markdownToDoc.js +40 -6
  119. package/dist/doc/markdownToDoc.js.map +1 -1
  120. package/dist/doc/templates/featureBlock.d.ts +18 -0
  121. package/dist/doc/templates/featureBlock.d.ts.map +1 -0
  122. package/dist/doc/templates/featureBlock.js +180 -0
  123. package/dist/doc/templates/featureBlock.js.map +1 -0
  124. package/dist/doc/templates/fullBleedQuote.d.ts +12 -0
  125. package/dist/doc/templates/fullBleedQuote.d.ts.map +1 -1
  126. package/dist/doc/templates/fullBleedQuote.js +12 -0
  127. package/dist/doc/templates/fullBleedQuote.js.map +1 -1
  128. package/dist/doc/templates/index.d.ts +28 -4
  129. package/dist/doc/templates/index.d.ts.map +1 -1
  130. package/dist/doc/templates/index.js +45 -12
  131. package/dist/doc/templates/index.js.map +1 -1
  132. package/dist/doc/templates/listBlock.d.ts.map +1 -1
  133. package/dist/doc/templates/listBlock.js +22 -5
  134. package/dist/doc/templates/listBlock.js.map +1 -1
  135. package/dist/doc/templates/statHighlight.d.ts +12 -0
  136. package/dist/doc/templates/statHighlight.d.ts.map +1 -1
  137. package/dist/doc/templates/statHighlight.js +12 -0
  138. package/dist/doc/templates/statHighlight.js.map +1 -1
  139. package/dist/doc/templates/titleBlock.d.ts +11 -0
  140. package/dist/doc/templates/titleBlock.d.ts.map +1 -1
  141. package/dist/doc/templates/titleBlock.js +8 -0
  142. package/dist/doc/templates/titleBlock.js.map +1 -1
  143. package/dist/doc/utils/themeUtils.d.ts +4 -4
  144. package/dist/doc/utils/themeUtils.d.ts.map +1 -1
  145. package/dist/doc/utils/themeUtils.js +8 -7
  146. package/dist/doc/utils/themeUtils.js.map +1 -1
  147. package/dist/generate/slideshowGenerator.js +1 -1
  148. package/dist/generate/slideshowGenerator.js.map +1 -1
  149. package/dist/generate/templateMapper.js +2 -2
  150. package/dist/generate/templateMapper.js.map +1 -1
  151. package/dist/icons/iconData.d.ts +26 -0
  152. package/dist/icons/iconData.d.ts.map +1 -0
  153. package/dist/icons/iconData.js +12 -0
  154. package/dist/icons/iconData.js.map +1 -0
  155. package/dist/icons/index.d.ts +12 -0
  156. package/dist/icons/index.d.ts.map +1 -0
  157. package/dist/icons/index.js +10 -0
  158. package/dist/icons/index.js.map +1 -0
  159. package/dist/icons/resolve.d.ts +61 -0
  160. package/dist/icons/resolve.d.ts.map +1 -0
  161. package/dist/icons/resolve.js +130 -0
  162. package/dist/icons/resolve.js.map +1 -0
  163. package/dist/imageEdit/ImageEditVersionManager.d.ts +31 -0
  164. package/dist/imageEdit/ImageEditVersionManager.d.ts.map +1 -0
  165. package/dist/imageEdit/ImageEditVersionManager.js +39 -0
  166. package/dist/imageEdit/ImageEditVersionManager.js.map +1 -0
  167. package/dist/imageEdit/export.d.ts +33 -0
  168. package/dist/imageEdit/export.d.ts.map +1 -0
  169. package/dist/imageEdit/export.js +253 -0
  170. package/dist/imageEdit/export.js.map +1 -0
  171. package/dist/imageEdit/index.d.ts +14 -0
  172. package/dist/imageEdit/index.d.ts.map +1 -0
  173. package/dist/imageEdit/index.js +22 -0
  174. package/dist/imageEdit/index.js.map +1 -0
  175. package/dist/imageEdit/persistence.d.ts +15 -0
  176. package/dist/imageEdit/persistence.d.ts.map +1 -0
  177. package/dist/imageEdit/persistence.js +49 -0
  178. package/dist/imageEdit/persistence.js.map +1 -0
  179. package/dist/imageEdit/state.d.ts +42 -0
  180. package/dist/imageEdit/state.d.ts.map +1 -0
  181. package/dist/imageEdit/state.js +98 -0
  182. package/dist/imageEdit/state.js.map +1 -0
  183. package/dist/imageEdit/versionPaths.d.ts +27 -0
  184. package/dist/imageEdit/versionPaths.d.ts.map +1 -0
  185. package/dist/imageEdit/versionPaths.js +57 -0
  186. package/dist/imageEdit/versionPaths.js.map +1 -0
  187. package/dist/imageEdit/versions.d.ts +67 -0
  188. package/dist/imageEdit/versions.d.ts.map +1 -0
  189. package/dist/imageEdit/versions.js +161 -0
  190. package/dist/imageEdit/versions.js.map +1 -0
  191. package/dist/index.d.ts +4 -0
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +4 -0
  194. package/dist/index.js.map +1 -1
  195. package/dist/jsonForm/chooseControl.d.ts +20 -0
  196. package/dist/jsonForm/chooseControl.d.ts.map +1 -0
  197. package/dist/jsonForm/chooseControl.js +82 -0
  198. package/dist/jsonForm/chooseControl.js.map +1 -0
  199. package/dist/jsonForm/evaluateWhen.d.ts +12 -0
  200. package/dist/jsonForm/evaluateWhen.d.ts.map +1 -0
  201. package/dist/jsonForm/evaluateWhen.js +65 -0
  202. package/dist/jsonForm/evaluateWhen.js.map +1 -0
  203. package/dist/jsonForm/index.d.ts +14 -0
  204. package/dist/jsonForm/index.d.ts.map +1 -0
  205. package/dist/jsonForm/index.js +12 -0
  206. package/dist/jsonForm/index.js.map +1 -0
  207. package/dist/jsonForm/inferSchema.d.ts +12 -0
  208. package/dist/jsonForm/inferSchema.d.ts.map +1 -0
  209. package/dist/jsonForm/inferSchema.js +15 -0
  210. package/dist/jsonForm/inferSchema.js.map +1 -0
  211. package/dist/jsonForm/pointer.d.ts +26 -0
  212. package/dist/jsonForm/pointer.d.ts.map +1 -0
  213. package/dist/jsonForm/pointer.js +102 -0
  214. package/dist/jsonForm/pointer.js.map +1 -0
  215. package/dist/jsonForm/types.d.ts +120 -0
  216. package/dist/jsonForm/types.d.ts.map +1 -0
  217. package/dist/jsonForm/types.js +10 -0
  218. package/dist/jsonForm/types.js.map +1 -0
  219. package/dist/markdown/convert.d.ts +11 -1
  220. package/dist/markdown/convert.d.ts.map +1 -1
  221. package/dist/markdown/convert.js +235 -15
  222. package/dist/markdown/convert.js.map +1 -1
  223. package/dist/markdown/index.d.ts +2 -2
  224. package/dist/markdown/index.d.ts.map +1 -1
  225. package/dist/markdown/index.js +1 -1
  226. package/dist/markdown/index.js.map +1 -1
  227. package/dist/markdown/types.d.ts +34 -1
  228. package/dist/markdown/types.d.ts.map +1 -1
  229. package/dist/markdown/utils.d.ts +40 -0
  230. package/dist/markdown/utils.d.ts.map +1 -1
  231. package/dist/markdown/utils.js +155 -0
  232. package/dist/markdown/utils.js.map +1 -1
  233. package/dist/recommend/index.d.ts +16 -0
  234. package/dist/recommend/index.d.ts.map +1 -0
  235. package/dist/recommend/index.js +15 -0
  236. package/dist/recommend/index.js.map +1 -0
  237. package/dist/recommend/templates.d.ts +39 -0
  238. package/dist/recommend/templates.d.ts.map +1 -0
  239. package/dist/recommend/templates.js +235 -0
  240. package/dist/recommend/templates.js.map +1 -0
  241. package/dist/schemas/BlockTemplates.d.ts +46 -8
  242. package/dist/schemas/BlockTemplates.d.ts.map +1 -1
  243. package/dist/schemas/BlockTemplates.js +3 -3
  244. package/dist/schemas/BlockTemplates.js.map +1 -1
  245. package/dist/schemas/ImageEditDoc.d.ts +81 -0
  246. package/dist/schemas/ImageEditDoc.d.ts.map +1 -0
  247. package/dist/schemas/ImageEditDoc.js +20 -0
  248. package/dist/schemas/ImageEditDoc.js.map +1 -0
  249. package/dist/schemas/Theme.d.ts +93 -23
  250. package/dist/schemas/Theme.d.ts.map +1 -1
  251. package/dist/schemas/Theme.js +80 -13
  252. package/dist/schemas/Theme.js.map +1 -1
  253. package/dist/schemas/colorUtils.d.ts +51 -0
  254. package/dist/schemas/colorUtils.d.ts.map +1 -0
  255. package/dist/schemas/colorUtils.js +154 -0
  256. package/dist/schemas/colorUtils.js.map +1 -0
  257. package/dist/schemas/fontStacks.d.ts +57 -0
  258. package/dist/schemas/fontStacks.d.ts.map +1 -0
  259. package/dist/schemas/fontStacks.js +227 -0
  260. package/dist/schemas/fontStacks.js.map +1 -0
  261. package/dist/schemas/index.d.ts +5 -0
  262. package/dist/schemas/index.d.ts.map +1 -1
  263. package/dist/schemas/index.js +4 -0
  264. package/dist/schemas/index.js.map +1 -1
  265. package/dist/schemas/themeCompile.d.ts +45 -0
  266. package/dist/schemas/themeCompile.d.ts.map +1 -0
  267. package/dist/schemas/themeCompile.js +160 -0
  268. package/dist/schemas/themeCompile.js.map +1 -0
  269. package/dist/schemas/themeLibrary.d.ts +11 -15
  270. package/dist/schemas/themeLibrary.d.ts.map +1 -1
  271. package/dist/schemas/themeLibrary.js +18 -499
  272. package/dist/schemas/themeLibrary.js.map +1 -1
  273. package/dist/schemas/themeValidator.d.ts +26 -0
  274. package/dist/schemas/themeValidator.d.ts.map +1 -0
  275. package/dist/schemas/themeValidator.js +352 -0
  276. package/dist/schemas/themeValidator.js.map +1 -0
  277. package/dist/schemas/themes/bold.json +48 -0
  278. package/dist/schemas/themes/cinematic.json +54 -0
  279. package/dist/schemas/themes/documentary.json +49 -0
  280. package/dist/schemas/themes/gezellig.json +44 -0
  281. package/dist/schemas/themes/index.d.ts +26 -0
  282. package/dist/schemas/themes/index.d.ts.map +1 -0
  283. package/dist/schemas/themes/index.js +49 -0
  284. package/dist/schemas/themes/index.js.map +1 -0
  285. package/dist/schemas/themes/magazine.json +44 -0
  286. package/dist/schemas/themes/minimalist.json +45 -0
  287. package/dist/schemas/themes/morning-light.json +42 -0
  288. package/dist/schemas/themes/standard-dark.json +50 -0
  289. package/dist/schemas/themes/standard.json +42 -0
  290. package/dist/schemas/themes/tech-dark.json +48 -0
  291. package/dist/schemas/themes/warm-earth.json +50 -0
  292. package/dist/storage/ScopedContentContainer.d.ts +44 -0
  293. package/dist/storage/ScopedContentContainer.d.ts.map +1 -0
  294. package/dist/storage/ScopedContentContainer.js +94 -0
  295. package/dist/storage/ScopedContentContainer.js.map +1 -0
  296. package/dist/storage/index.d.ts +1 -0
  297. package/dist/storage/index.d.ts.map +1 -1
  298. package/dist/storage/index.js +1 -0
  299. package/dist/storage/index.js.map +1 -1
  300. package/dist/story/index.d.ts +53 -13
  301. package/dist/story/index.js +12 -4
  302. package/dist/themeLibrary-BHjJ0Qx6.d.ts +40 -0
  303. package/dist/{types-DYAzisMG.d.ts → types-BdZkdJ3z.d.ts} +35 -2
  304. package/dist/types-D98li1gV.d.ts +93 -0
  305. package/dist/versions/DocumentVersionManager.d.ts +31 -0
  306. package/dist/versions/DocumentVersionManager.d.ts.map +1 -0
  307. package/dist/versions/DocumentVersionManager.js +33 -0
  308. package/dist/versions/DocumentVersionManager.js.map +1 -0
  309. package/dist/versions/index.d.ts +29 -0
  310. package/dist/versions/index.d.ts.map +1 -0
  311. package/dist/versions/index.js +28 -0
  312. package/dist/versions/index.js.map +1 -0
  313. package/dist/versions/operations.d.ts +44 -0
  314. package/dist/versions/operations.d.ts.map +1 -0
  315. package/dist/versions/operations.js +190 -0
  316. package/dist/versions/operations.js.map +1 -0
  317. package/dist/versions/paths.d.ts +29 -0
  318. package/dist/versions/paths.d.ts.map +1 -0
  319. package/dist/versions/paths.js +66 -0
  320. package/dist/versions/paths.js.map +1 -0
  321. package/dist/versions/timestamp.d.ts +22 -0
  322. package/dist/versions/timestamp.d.ts.map +1 -0
  323. package/dist/versions/timestamp.js +44 -0
  324. package/dist/versions/timestamp.js.map +1 -0
  325. package/dist/versions/types.d.ts +92 -0
  326. package/dist/versions/types.d.ts.map +1 -0
  327. package/dist/versions/types.js +11 -0
  328. package/dist/versions/types.js.map +1 -0
  329. package/package.json +28 -1
  330. package/src/__tests__/colorUtils.test.ts +112 -0
  331. package/src/__tests__/getLayers.test.ts +32 -7
  332. package/src/__tests__/iconResolve.test.ts +122 -0
  333. package/src/__tests__/imageEditState.test.ts +74 -0
  334. package/src/__tests__/imageEditVersions.test.ts +169 -0
  335. package/src/__tests__/inferDocumentTitle.test.ts +50 -0
  336. package/src/__tests__/jsonForm.chooseControl.test.ts +86 -0
  337. package/src/__tests__/jsonForm.evaluateWhen.test.ts +59 -0
  338. package/src/__tests__/jsonForm.inferSchema.test.ts +25 -0
  339. package/src/__tests__/jsonForm.pointer.test.ts +103 -0
  340. package/src/__tests__/markdown.test.ts +44 -0
  341. package/src/__tests__/markdownIcons.test.ts +104 -0
  342. package/src/__tests__/markdownToDoc.test.ts +19 -4
  343. package/src/__tests__/recommendTemplates.test.ts +183 -0
  344. package/src/__tests__/scopedContentContainer.test.ts +89 -0
  345. package/src/__tests__/slideshowGenerator.test.ts +1 -1
  346. package/src/__tests__/surface.test.ts +68 -0
  347. package/src/__tests__/templateAnnotationParse.test.ts +42 -0
  348. package/src/__tests__/templates.test.ts +93 -9
  349. package/src/__tests__/themeCompile.test.ts +156 -0
  350. package/src/__tests__/themeValidator.test.ts +125 -0
  351. package/src/__tests__/versions.test.ts +415 -0
  352. package/src/doc/audioMapping.ts +95 -13
  353. package/src/doc/getLayers.ts +32 -21
  354. package/src/doc/markdownToDoc.ts +45 -7
  355. package/src/doc/templates/featureBlock.ts +202 -0
  356. package/src/doc/templates/fullBleedQuote.ts +13 -0
  357. package/src/doc/templates/index.ts +50 -16
  358. package/src/doc/templates/listBlock.ts +24 -5
  359. package/src/doc/templates/statHighlight.ts +13 -0
  360. package/src/doc/templates/titleBlock.ts +9 -0
  361. package/src/doc/utils/themeUtils.ts +8 -7
  362. package/src/generate/slideshowGenerator.ts +1 -1
  363. package/src/generate/templateMapper.ts +2 -2
  364. package/src/icons/iconData.ts +31 -0
  365. package/src/icons/index.ts +18 -0
  366. package/src/icons/resolve.ts +139 -0
  367. package/src/imageEdit/ImageEditVersionManager.ts +73 -0
  368. package/src/imageEdit/export.ts +326 -0
  369. package/src/imageEdit/index.ts +71 -0
  370. package/src/imageEdit/persistence.ts +62 -0
  371. package/src/imageEdit/state.ts +112 -0
  372. package/src/imageEdit/versionPaths.ts +57 -0
  373. package/src/imageEdit/versions.ts +231 -0
  374. package/src/index.ts +4 -0
  375. package/src/jsonForm/chooseControl.ts +88 -0
  376. package/src/jsonForm/evaluateWhen.ts +59 -0
  377. package/src/jsonForm/index.ts +22 -0
  378. package/src/jsonForm/inferSchema.ts +25 -0
  379. package/src/jsonForm/pointer.ts +109 -0
  380. package/src/jsonForm/types.ts +167 -0
  381. package/src/markdown/convert.ts +248 -15
  382. package/src/markdown/index.ts +4 -0
  383. package/src/markdown/types.ts +38 -1
  384. package/src/markdown/utils.ts +159 -0
  385. package/src/recommend/index.ts +16 -0
  386. package/src/recommend/templates.ts +273 -0
  387. package/src/schemas/BlockTemplates.ts +50 -7
  388. package/src/schemas/ImageEditDoc.ts +95 -0
  389. package/src/schemas/Theme.ts +152 -23
  390. package/src/schemas/colorUtils.ts +186 -0
  391. package/src/schemas/fontStacks.ts +257 -0
  392. package/src/schemas/index.ts +12 -0
  393. package/src/schemas/themeCompile.ts +203 -0
  394. package/src/schemas/themeLibrary.ts +18 -524
  395. package/src/schemas/themeValidator.ts +388 -0
  396. package/src/schemas/themes/bold.json +48 -0
  397. package/src/schemas/themes/cinematic.json +54 -0
  398. package/src/schemas/themes/documentary.json +49 -0
  399. package/src/schemas/themes/gezellig.json +44 -0
  400. package/src/schemas/themes/index.ts +53 -0
  401. package/src/schemas/themes/magazine.json +44 -0
  402. package/src/schemas/themes/minimalist.json +45 -0
  403. package/src/schemas/themes/morning-light.json +42 -0
  404. package/src/schemas/themes/standard-dark.json +50 -0
  405. package/src/schemas/themes/standard.json +42 -0
  406. package/src/schemas/themes/tech-dark.json +48 -0
  407. package/src/schemas/themes/warm-earth.json +50 -0
  408. package/src/storage/ScopedContentContainer.ts +113 -0
  409. package/src/storage/index.ts +1 -0
  410. package/src/versions/DocumentVersionManager.ts +70 -0
  411. package/src/versions/index.ts +54 -0
  412. package/src/versions/operations.ts +230 -0
  413. package/src/versions/paths.ts +66 -0
  414. package/src/versions/timestamp.ts +48 -0
  415. package/src/versions/types.ts +91 -0
  416. package/dist/chunk-53TZ2UTL.js +0 -470
  417. package/dist/chunk-53TZ2UTL.js.map +0 -1
  418. package/dist/chunk-7GF6RDED.js +0 -82
  419. package/dist/chunk-7GF6RDED.js.map +0 -1
  420. package/dist/chunk-CYQHG27J.js.map +0 -1
  421. package/dist/chunk-GAQLMORN.js.map +0 -1
  422. package/dist/chunk-LAZELBON.js.map +0 -1
  423. package/dist/chunk-QM5PKNPW.js.map +0 -1
  424. package/dist/chunk-TSG2OSE6.js.map +0 -1
  425. package/dist/chunk-XM4WSOHB.js +0 -92
  426. package/dist/chunk-XM4WSOHB.js.map +0 -1
  427. package/dist/themeLibrary-IP7EdyRq.d.ts +0 -44
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Color Utilities
3
+ *
4
+ * Pure-JS color math used by theme compilation and contrast checks.
5
+ * No dependencies. Operates on `#rrggbb` hex strings.
6
+ *
7
+ * Internally uses OKLCh — perceptually uniform, so lightening by 0.1
8
+ * looks like the same change at any starting point. Out-of-gamut
9
+ * results are clamped to sRGB.
10
+ */
11
+ /** Test whether a string is a valid `#rgb` or `#rrggbb` hex color. */
12
+ export declare function isHex(value: string): boolean;
13
+ /**
14
+ * Lighten a color by `amount` (0..1) in OKLCh L space.
15
+ * Falls back to the input on parse failure.
16
+ */
17
+ export declare function oklchLighten(hex: string, amount: number): string;
18
+ /**
19
+ * Darken a color by `amount` (0..1) in OKLCh L space.
20
+ * Falls back to the input on parse failure.
21
+ */
22
+ export declare function oklchDarken(hex: string, amount: number): string;
23
+ /**
24
+ * Adjust the OKLCh chroma of a color by a multiplier (e.g. 0.7 to mute).
25
+ */
26
+ export declare function oklchSetChroma(hex: string, multiplier: number): string;
27
+ /**
28
+ * WCAG relative luminance of a hex color, returned as 0..1.
29
+ */
30
+ export declare function relativeLuminance(hex: string): number;
31
+ /**
32
+ * WCAG contrast ratio between two hex colors. Returns 1..21.
33
+ */
34
+ export declare function contrastRatio(a: string, b: string): number;
35
+ /**
36
+ * Pick a near-white or near-black text color that contrasts well against `bg`.
37
+ */
38
+ export declare function pickContrastingText(bg: string, light?: string, dark?: string): string;
39
+ /**
40
+ * Derive a 5-step lighter→darker scale from a seed color.
41
+ * Stops are evenly spaced in OKLCh L space around the seed.
42
+ * `spread` controls amplitude (0.05 = subtle, 0.15 = balanced, 0.22 = high).
43
+ */
44
+ export declare function deriveScale(seedHex: string, spread?: number): {
45
+ lighter2: string;
46
+ lighter1: string;
47
+ base: string;
48
+ darker1: string;
49
+ darker2: string;
50
+ };
51
+ //# sourceMappingURL=colorUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorUtils.d.ts","sourceRoot":"","sources":["../../src/schemas/colorUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,sEAAsE;AACtE,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5C;AAwFD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAMtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAY,EAAE,IAAI,SAAY,GAAG,MAAM,CAE3F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,SAAO,GACZ;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAQA"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Color Utilities
3
+ *
4
+ * Pure-JS color math used by theme compilation and contrast checks.
5
+ * No dependencies. Operates on `#rrggbb` hex strings.
6
+ *
7
+ * Internally uses OKLCh — perceptually uniform, so lightening by 0.1
8
+ * looks like the same change at any starting point. Out-of-gamut
9
+ * results are clamped to sRGB.
10
+ */
11
+ const HEX_RE = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
12
+ /** Test whether a string is a valid `#rgb` or `#rrggbb` hex color. */
13
+ export function isHex(value) {
14
+ return HEX_RE.test(value);
15
+ }
16
+ /** Parse `#rgb` or `#rrggbb` into 0..1 sRGB triplet. Returns null on failure. */
17
+ function parseHex(hex) {
18
+ if (!HEX_RE.test(hex))
19
+ return null;
20
+ let body = hex.slice(1);
21
+ if (body.length === 3)
22
+ body = body
23
+ .split('')
24
+ .map((c) => c + c)
25
+ .join('');
26
+ return [
27
+ parseInt(body.slice(0, 2), 16) / 255,
28
+ parseInt(body.slice(2, 4), 16) / 255,
29
+ parseInt(body.slice(4, 6), 16) / 255,
30
+ ];
31
+ }
32
+ function toHex(rgb) {
33
+ const ch = (v) => {
34
+ const c = Math.max(0, Math.min(255, Math.round(v * 255)));
35
+ return c.toString(16).padStart(2, '0');
36
+ };
37
+ return '#' + ch(rgb[0]) + ch(rgb[1]) + ch(rgb[2]);
38
+ }
39
+ function srgbToLinear(c) {
40
+ return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
41
+ }
42
+ function linearToSrgb(c) {
43
+ return c <= 0.0031308 ? c * 12.92 : 1.055 * Math.pow(c, 1 / 2.4) - 0.055;
44
+ }
45
+ function rgbToOklch(rgb) {
46
+ const [sr, sg, sb] = rgb;
47
+ const r = srgbToLinear(sr);
48
+ const g = srgbToLinear(sg);
49
+ const b = srgbToLinear(sb);
50
+ const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;
51
+ const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;
52
+ const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;
53
+ const l_ = Math.cbrt(l);
54
+ const m_ = Math.cbrt(m);
55
+ const s_ = Math.cbrt(s);
56
+ const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
57
+ const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
58
+ const bb = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
59
+ const C = Math.sqrt(a * a + bb * bb);
60
+ let h = (Math.atan2(bb, a) * 180) / Math.PI;
61
+ if (h < 0)
62
+ h += 360;
63
+ return { L, C, h };
64
+ }
65
+ function oklchToRgb({ L, C, h }) {
66
+ const hr = (h * Math.PI) / 180;
67
+ const a = C * Math.cos(hr);
68
+ const bb = C * Math.sin(hr);
69
+ const l_ = L + 0.3963377774 * a + 0.2158037573 * bb;
70
+ const m_ = L - 0.1055613458 * a - 0.0638541728 * bb;
71
+ const s_ = L - 0.0894841775 * a - 1.291485548 * bb;
72
+ const l = l_ * l_ * l_;
73
+ const m = m_ * m_ * m_;
74
+ const s = s_ * s_ * s_;
75
+ const r = +4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;
76
+ const g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;
77
+ const b = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;
78
+ return [
79
+ Math.max(0, Math.min(1, linearToSrgb(r))),
80
+ Math.max(0, Math.min(1, linearToSrgb(g))),
81
+ Math.max(0, Math.min(1, linearToSrgb(b))),
82
+ ];
83
+ }
84
+ /**
85
+ * Lighten a color by `amount` (0..1) in OKLCh L space.
86
+ * Falls back to the input on parse failure.
87
+ */
88
+ export function oklchLighten(hex, amount) {
89
+ const rgb = parseHex(hex);
90
+ if (!rgb)
91
+ return hex;
92
+ const lch = rgbToOklch(rgb);
93
+ lch.L = Math.max(0, Math.min(1, lch.L + amount));
94
+ return toHex(oklchToRgb(lch));
95
+ }
96
+ /**
97
+ * Darken a color by `amount` (0..1) in OKLCh L space.
98
+ * Falls back to the input on parse failure.
99
+ */
100
+ export function oklchDarken(hex, amount) {
101
+ return oklchLighten(hex, -amount);
102
+ }
103
+ /**
104
+ * Adjust the OKLCh chroma of a color by a multiplier (e.g. 0.7 to mute).
105
+ */
106
+ export function oklchSetChroma(hex, multiplier) {
107
+ const rgb = parseHex(hex);
108
+ if (!rgb)
109
+ return hex;
110
+ const lch = rgbToOklch(rgb);
111
+ lch.C = Math.max(0, lch.C * multiplier);
112
+ return toHex(oklchToRgb(lch));
113
+ }
114
+ /**
115
+ * WCAG relative luminance of a hex color, returned as 0..1.
116
+ */
117
+ export function relativeLuminance(hex) {
118
+ const rgb = parseHex(hex);
119
+ if (!rgb)
120
+ return 0;
121
+ const [r, g, b] = rgb.map(srgbToLinear);
122
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
123
+ }
124
+ /**
125
+ * WCAG contrast ratio between two hex colors. Returns 1..21.
126
+ */
127
+ export function contrastRatio(a, b) {
128
+ const la = relativeLuminance(a);
129
+ const lb = relativeLuminance(b);
130
+ const lighter = Math.max(la, lb);
131
+ const darker = Math.min(la, lb);
132
+ return (lighter + 0.05) / (darker + 0.05);
133
+ }
134
+ /**
135
+ * Pick a near-white or near-black text color that contrasts well against `bg`.
136
+ */
137
+ export function pickContrastingText(bg, light = '#f7fafc', dark = '#1a202c') {
138
+ return contrastRatio(bg, dark) >= contrastRatio(bg, light) ? dark : light;
139
+ }
140
+ /**
141
+ * Derive a 5-step lighter→darker scale from a seed color.
142
+ * Stops are evenly spaced in OKLCh L space around the seed.
143
+ * `spread` controls amplitude (0.05 = subtle, 0.15 = balanced, 0.22 = high).
144
+ */
145
+ export function deriveScale(seedHex, spread = 0.15) {
146
+ return {
147
+ lighter2: oklchLighten(seedHex, spread),
148
+ lighter1: oklchLighten(seedHex, spread / 2),
149
+ base: seedHex,
150
+ darker1: oklchDarken(seedHex, spread / 2),
151
+ darker2: oklchDarken(seedHex, spread),
152
+ };
153
+ }
154
+ //# sourceMappingURL=colorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorUtils.js","sourceRoot":"","sources":["../../src/schemas/colorUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Font Stacks
3
+ *
4
+ * Curated registry of font families used by built-in themes and offered in
5
+ * the theme customizer. Each stack has a stable `id` (referenced by JSON
6
+ * theme files via `{ stackId }`) and a CSS `family` string that resolves
7
+ * to the actual font when rendered.
8
+ *
9
+ * Themes never carry raw CSS font strings — they reference a `stackId` or
10
+ * specify a `{ custom: { name, fallback } }` form, both of which resolve
11
+ * here at render time.
12
+ */
13
+ import type { FontFamily, FontFamilyKind } from './Theme.js';
14
+ export interface FontStack {
15
+ /** Stable identifier referenced by Theme JSON. */
16
+ id: string;
17
+ /** Display label for pickers. */
18
+ label: string;
19
+ /** Full CSS font-family string with safe fallbacks. */
20
+ family: string;
21
+ /** Categorical bucket for the picker UI. */
22
+ kind: FontFamilyKind;
23
+ /**
24
+ * Google Fonts family name, when this stack is served by Google Fonts.
25
+ * Used by exports that bundle a `<link>` to fonts.googleapis.com so the
26
+ * face renders correctly even when the host page doesn't preload it.
27
+ * Omit (or set to undefined) for purely system stacks.
28
+ */
29
+ googleFontFamily?: string;
30
+ }
31
+ /** All curated stacks, in the order they should appear in pickers. */
32
+ export declare const AVAILABLE_FONT_STACKS: FontStack[];
33
+ /** Look up a stack by id. Returns undefined if not registered. */
34
+ export declare function getFontStack(id: string): FontStack | undefined;
35
+ /**
36
+ * Resolve a `FontFamily` reference (or legacy raw string) to a CSS family string.
37
+ * Used by `getThemeFont` at render time. Never returns an empty string —
38
+ * unrecognized stackIds fall back to the requested role's default.
39
+ */
40
+ export declare function resolveFontFamily(family: FontFamily | string | undefined, roleFallback: string): string;
41
+ /** Convenience: quick `{ stackId }` factory for code that constructs themes. */
42
+ export declare function fontStack(id: string): FontFamily;
43
+ /**
44
+ * Build a `https://fonts.googleapis.com/css2?...` URL that loads the
45
+ * subset of supplied `FontFamily` references that are served by Google
46
+ * Fonts. Returns `null` when nothing in the list needs Google hosting
47
+ * (system stacks, custom fonts, or unknown stack ids) — callers can use
48
+ * that to skip emitting a `<link>` entirely.
49
+ *
50
+ * The URL requests regular + bold (400/700) for each family, which is
51
+ * what the templates use. `display=swap` keeps the fallback visible
52
+ * while the web font streams in.
53
+ */
54
+ export declare function buildGoogleFontsUrl(families: Array<FontFamily | undefined>): string | null;
55
+ /** Default fallback families exposed for tools that need them. */
56
+ export declare const FONT_FALLBACKS: Record<FontFamilyKind, string>;
57
+ //# sourceMappingURL=fontStacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontStacks.d.ts","sourceRoot":"","sources":["../../src/schemas/fontStacks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,EAAE,cAAc,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,EAAE,SAAS,EAyI5C,CAAC;AAMF,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE9D;AAUD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EACvC,YAAY,EAAE,MAAM,GACnB,MAAM,CAqBR;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAEhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,CAgB1F;AAED,kEAAkE;AAClE,eAAO,MAAM,cAAc,gCAAmB,CAAC"}
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Font Stacks
3
+ *
4
+ * Curated registry of font families used by built-in themes and offered in
5
+ * the theme customizer. Each stack has a stable `id` (referenced by JSON
6
+ * theme files via `{ stackId }`) and a CSS `family` string that resolves
7
+ * to the actual font when rendered.
8
+ *
9
+ * Themes never carry raw CSS font strings — they reference a `stackId` or
10
+ * specify a `{ custom: { name, fallback } }` form, both of which resolve
11
+ * here at render time.
12
+ */
13
+ /** All curated stacks, in the order they should appear in pickers. */
14
+ export const AVAILABLE_FONT_STACKS = [
15
+ // System defaults
16
+ {
17
+ id: 'system-sans',
18
+ label: 'System Sans',
19
+ family: 'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
20
+ kind: 'sans',
21
+ },
22
+ {
23
+ id: 'system-serif',
24
+ label: 'System Serif',
25
+ family: 'Georgia, "Times New Roman", serif',
26
+ kind: 'serif',
27
+ },
28
+ {
29
+ id: 'system-mono',
30
+ label: 'System Mono',
31
+ family: 'Consolas, "Courier New", monospace',
32
+ kind: 'mono',
33
+ },
34
+ // Curated Google Fonts. `googleFontFamily` is the canonical family
35
+ // name Google serves the face under (used by exports that emit a
36
+ // `<link rel="stylesheet" href="https://fonts.googleapis.com/...">`
37
+ // so the face renders even when the host doesn't preload it).
38
+ {
39
+ id: 'inter',
40
+ label: 'Inter',
41
+ family: '"Inter", "Segoe UI", Roboto, sans-serif',
42
+ kind: 'sans',
43
+ googleFontFamily: 'Inter',
44
+ },
45
+ {
46
+ id: 'ibm-plex-sans',
47
+ label: 'IBM Plex Sans',
48
+ family: '"IBM Plex Sans", "Segoe UI", Roboto, sans-serif',
49
+ kind: 'sans',
50
+ googleFontFamily: 'IBM Plex Sans',
51
+ },
52
+ {
53
+ id: 'roboto',
54
+ label: 'Roboto',
55
+ family: '"Roboto", "Segoe UI", Arial, sans-serif',
56
+ kind: 'sans',
57
+ googleFontFamily: 'Roboto',
58
+ },
59
+ {
60
+ id: 'dm-sans',
61
+ label: 'DM Sans',
62
+ family: '"DM Sans", "Segoe UI", Roboto, sans-serif',
63
+ kind: 'sans',
64
+ googleFontFamily: 'DM Sans',
65
+ },
66
+ {
67
+ id: 'oswald',
68
+ label: 'Oswald',
69
+ family: '"Oswald", Impact, "Arial Black", sans-serif',
70
+ kind: 'display',
71
+ googleFontFamily: 'Oswald',
72
+ },
73
+ {
74
+ id: 'playfair',
75
+ label: 'Playfair Display',
76
+ family: '"Playfair Display", Georgia, serif',
77
+ kind: 'serif',
78
+ googleFontFamily: 'Playfair Display',
79
+ },
80
+ {
81
+ id: 'source-serif',
82
+ label: 'Source Serif',
83
+ family: '"Source Serif 4", "PT Serif", Georgia, serif',
84
+ kind: 'serif',
85
+ googleFontFamily: 'Source Serif 4',
86
+ },
87
+ {
88
+ id: 'merriweather',
89
+ label: 'Merriweather',
90
+ family: '"Merriweather", Georgia, serif',
91
+ kind: 'serif',
92
+ googleFontFamily: 'Merriweather',
93
+ },
94
+ {
95
+ id: 'lora',
96
+ label: 'Lora',
97
+ family: '"Lora", "Merriweather", Georgia, serif',
98
+ kind: 'serif',
99
+ googleFontFamily: 'Lora',
100
+ },
101
+ {
102
+ id: 'pt-serif',
103
+ label: 'PT Serif',
104
+ family: '"PT Serif", Georgia, serif',
105
+ kind: 'serif',
106
+ googleFontFamily: 'PT Serif',
107
+ },
108
+ {
109
+ id: 'crimson',
110
+ label: 'Crimson Text',
111
+ family: '"Crimson Text", Georgia, serif',
112
+ kind: 'serif',
113
+ googleFontFamily: 'Crimson Text',
114
+ },
115
+ {
116
+ id: 'cormorant',
117
+ label: 'Cormorant Garamond',
118
+ family: '"Cormorant Garamond", Garamond, Georgia, serif',
119
+ kind: 'serif',
120
+ googleFontFamily: 'Cormorant Garamond',
121
+ },
122
+ {
123
+ id: 'dm-serif',
124
+ label: 'DM Serif Display',
125
+ family: '"DM Serif Display", Georgia, serif',
126
+ kind: 'display',
127
+ googleFontFamily: 'DM Serif Display',
128
+ },
129
+ {
130
+ id: 'jetbrains-mono',
131
+ label: 'JetBrains Mono',
132
+ family: '"JetBrains Mono", "Fira Code", Consolas, monospace',
133
+ kind: 'mono',
134
+ googleFontFamily: 'JetBrains Mono',
135
+ },
136
+ // Themed system stacks with emoji fallbacks (used by gezellig)
137
+ {
138
+ id: 'system-sans-emoji',
139
+ label: 'System Sans + Emoji',
140
+ family: 'system-ui, -apple-system, "Segoe UI", Roboto, "OpenMoji Color", "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif',
141
+ kind: 'sans',
142
+ },
143
+ {
144
+ id: 'system-serif-emoji',
145
+ label: 'System Serif + Emoji',
146
+ family: 'Georgia, "Times New Roman", "OpenMoji Color", "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", serif',
147
+ kind: 'serif',
148
+ },
149
+ ];
150
+ const STACKS_BY_ID = Object.fromEntries(AVAILABLE_FONT_STACKS.map((s) => [s.id, s]));
151
+ /** Look up a stack by id. Returns undefined if not registered. */
152
+ export function getFontStack(id) {
153
+ return STACKS_BY_ID[id];
154
+ }
155
+ /** Default fallback CSS family per kind, used when a custom font has no fallback specified. */
156
+ const FALLBACK_BY_KIND = {
157
+ sans: 'system-ui, sans-serif',
158
+ serif: 'Georgia, serif',
159
+ mono: 'Consolas, monospace',
160
+ display: 'Impact, Arial, sans-serif',
161
+ };
162
+ /**
163
+ * Resolve a `FontFamily` reference (or legacy raw string) to a CSS family string.
164
+ * Used by `getThemeFont` at render time. Never returns an empty string —
165
+ * unrecognized stackIds fall back to the requested role's default.
166
+ */
167
+ export function resolveFontFamily(family, roleFallback) {
168
+ if (!family)
169
+ return roleFallback;
170
+ if (typeof family === 'string')
171
+ return family;
172
+ if ('stackId' in family) {
173
+ const stack = STACKS_BY_ID[family.stackId];
174
+ return stack ? stack.family : roleFallback;
175
+ }
176
+ if ('custom' in family) {
177
+ const { name, fallback } = family.custom;
178
+ const fb = fallback === 'system-ui'
179
+ ? 'system-ui, sans-serif'
180
+ : fallback === 'serif'
181
+ ? 'Georgia, serif'
182
+ : fallback === 'monospace'
183
+ ? 'Consolas, monospace'
184
+ : 'system-ui, sans-serif';
185
+ const safeName = name.includes(' ') || name.includes(',') ? `"${name}"` : name;
186
+ return `${safeName}, ${fb}`;
187
+ }
188
+ return roleFallback;
189
+ }
190
+ /** Convenience: quick `{ stackId }` factory for code that constructs themes. */
191
+ export function fontStack(id) {
192
+ return { stackId: id };
193
+ }
194
+ /**
195
+ * Build a `https://fonts.googleapis.com/css2?...` URL that loads the
196
+ * subset of supplied `FontFamily` references that are served by Google
197
+ * Fonts. Returns `null` when nothing in the list needs Google hosting
198
+ * (system stacks, custom fonts, or unknown stack ids) — callers can use
199
+ * that to skip emitting a `<link>` entirely.
200
+ *
201
+ * The URL requests regular + bold (400/700) for each family, which is
202
+ * what the templates use. `display=swap` keeps the fallback visible
203
+ * while the web font streams in.
204
+ */
205
+ export function buildGoogleFontsUrl(families) {
206
+ const names = new Set();
207
+ for (const f of families) {
208
+ if (!f || typeof f === 'string')
209
+ continue;
210
+ if ('stackId' in f) {
211
+ const stack = STACKS_BY_ID[f.stackId];
212
+ if (stack?.googleFontFamily)
213
+ names.add(stack.googleFontFamily);
214
+ }
215
+ }
216
+ if (names.size === 0)
217
+ return null;
218
+ // css2 syntax: ?family=Name+With+Spaces:wght@400;700&family=Other:wght@400;700&display=swap
219
+ const params = Array.from(names)
220
+ .sort()
221
+ .map((name) => `family=${encodeURIComponent(name).replace(/%20/g, '+')}:wght@400;700`)
222
+ .join('&');
223
+ return `https://fonts.googleapis.com/css2?${params}&display=swap`;
224
+ }
225
+ /** Default fallback families exposed for tools that need them. */
226
+ export const FONT_FALLBACKS = FALLBACK_BY_KIND;
227
+ //# sourceMappingURL=fontStacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontStacks.js","sourceRoot":"","sources":["../../src/schemas/fontStacks.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,13 @@ export * from './Doc.js';
3
3
  export * from './BlockTemplates.js';
4
4
  export * from './Theme.js';
5
5
  export * from './themeLibrary.js';
6
+ export * from './themeValidator.js';
7
+ export * from './themeCompile.js';
8
+ export * from './fontStacks.js';
9
+ export * from './colorUtils.js';
6
10
  export * from './Viewport.js';
7
11
  export { getLayoutHints, getTwoColumnPositions, getSafeTextBounds, scaledFontSize as layoutScaledFontSize, } from './LayoutStrategy.js';
8
12
  export type { LayoutHints } from './LayoutStrategy.js';
9
13
  export type { MediaProvider, MediaEntry } from './MediaProvider.js';
14
+ export type { ImageEditDoc, ImageEditLayer, ImageEditLayerKind, ImageEditCanvas, ImageEditMeta, EditorLayerMeta, } from './ImageEditDoc.js';
10
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,IAAI,oBAAoB,GACvC,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,IAAI,oBAAoB,GACvC,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
@@ -3,6 +3,10 @@ export * from './Doc.js';
3
3
  export * from './BlockTemplates.js';
4
4
  export * from './Theme.js';
5
5
  export * from './themeLibrary.js';
6
+ export * from './themeValidator.js';
7
+ export * from './themeCompile.js';
8
+ export * from './fontStacks.js';
9
+ export * from './colorUtils.js';
6
10
  export * from './Viewport.js';
7
11
  export { getLayoutHints, getTwoColumnPositions, getSafeTextBounds, scaledFontSize as layoutScaledFontSize, } from './LayoutStrategy.js';
8
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,IAAI,oBAAoB,GACvC,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,IAAI,oBAAoB,GACvC,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Theme Compilation
3
+ *
4
+ * Turns a partial Theme (typically authored by the customizer panel from
5
+ * a few seed colors and preset choices) into a complete, validated Theme
6
+ * by:
7
+ *
8
+ * 1. Filling unspecified fields from a hardcoded `STARTER_THEME`.
9
+ * 2. Deriving missing color slots from `seedColors` via OKLCh math.
10
+ * 3. Validating the result.
11
+ *
12
+ * Built-in themes ship as fully-specified Theme JSON and skip this step.
13
+ */
14
+ import type { Theme, DeepPartial, ThemeColorPalette, ThemeSeedColors } from './Theme.js';
15
+ export declare const STARTER_THEME: Theme;
16
+ /**
17
+ * Derive a full `ThemeColorPalette` from `seedColors`, with any explicit
18
+ * `partialColors` taking precedence over derived values. Background and
19
+ * text are guessed from luminance when the user gave only a primary.
20
+ */
21
+ export declare function deriveColorPalette(seeds: ThemeSeedColors, partialColors?: Partial<ThemeColorPalette>, opts?: {
22
+ contrast?: 'subtle' | 'balanced' | 'high';
23
+ }): ThemeColorPalette;
24
+ /** Map a contrast preset to numeric spread used by `deriveColorPalette`. */
25
+ export type ContrastPreset = 'subtle' | 'balanced' | 'high';
26
+ export interface CompileOptions {
27
+ /** Contrast level for OKLCh derivation (default 'balanced'). */
28
+ contrast?: ContrastPreset;
29
+ }
30
+ /**
31
+ * Compile a partial Theme into a complete one. Fills missing fields from
32
+ * `STARTER_THEME`, derives missing color slots from `seedColors` (when
33
+ * present), and validates the result.
34
+ */
35
+ export declare function compileTheme(partial: DeepPartial<Theme>, opts?: CompileOptions): Theme;
36
+ /**
37
+ * Parse a JSON string into a validated Theme. Throws on invalid input.
38
+ */
39
+ export declare function parseTheme(json: string): Theme;
40
+ /**
41
+ * Serialize a Theme to a stable, pretty-printed JSON string. Round-trips
42
+ * cleanly through `parseTheme`.
43
+ */
44
+ export declare function serializeTheme(theme: Theme): string;
45
+ //# sourceMappingURL=themeCompile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeCompile.d.ts","sourceRoot":"","sources":["../../src/schemas/themeCompile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,iBAAiB,EAEjB,eAAe,EAEhB,MAAM,YAAY,CAAC;AAyBpB,eAAO,MAAM,aAAa,EAAE,KAmC3B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,aAAa,GAAE,OAAO,CAAC,iBAAiB,CAAM,EAC9C,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAA;CAAO,GACvD,iBAAiB,CA0CnB;AAED,4EAA4E;AAC5E,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,GAAE,cAAmB,GAAG,KAAK,CA+B1F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAS9C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD"}