@bendyline/squisq 1.3.0 → 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 (419) hide show
  1. package/dist/{Doc-Ch4tc3vv.d.ts → Doc-BeSeH2iX.d.ts} +118 -41
  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__/markdownIcons.test.d.ts +2 -0
  42. package/dist/__tests__/markdownIcons.test.d.ts.map +1 -0
  43. package/dist/__tests__/markdownIcons.test.js +93 -0
  44. package/dist/__tests__/markdownIcons.test.js.map +1 -0
  45. package/dist/__tests__/markdownToDoc.test.js +15 -4
  46. package/dist/__tests__/markdownToDoc.test.js.map +1 -1
  47. package/dist/__tests__/recommendTemplates.test.d.ts +2 -0
  48. package/dist/__tests__/recommendTemplates.test.d.ts.map +1 -0
  49. package/dist/__tests__/recommendTemplates.test.js +158 -0
  50. package/dist/__tests__/recommendTemplates.test.js.map +1 -0
  51. package/dist/__tests__/scopedContentContainer.test.d.ts +2 -0
  52. package/dist/__tests__/scopedContentContainer.test.d.ts.map +1 -0
  53. package/dist/__tests__/scopedContentContainer.test.js +74 -0
  54. package/dist/__tests__/scopedContentContainer.test.js.map +1 -0
  55. package/dist/__tests__/slideshowGenerator.test.js +1 -1
  56. package/dist/__tests__/slideshowGenerator.test.js.map +1 -1
  57. package/dist/__tests__/templateAnnotationParse.test.d.ts +2 -0
  58. package/dist/__tests__/templateAnnotationParse.test.d.ts.map +1 -0
  59. package/dist/__tests__/templateAnnotationParse.test.js +42 -0
  60. package/dist/__tests__/templateAnnotationParse.test.js.map +1 -0
  61. package/dist/__tests__/templates.test.js +90 -9
  62. package/dist/__tests__/templates.test.js.map +1 -1
  63. package/dist/__tests__/themeCompile.test.d.ts +2 -0
  64. package/dist/__tests__/themeCompile.test.d.ts.map +1 -0
  65. package/dist/__tests__/themeCompile.test.js +134 -0
  66. package/dist/__tests__/themeCompile.test.js.map +1 -0
  67. package/dist/__tests__/themeValidator.test.d.ts +2 -0
  68. package/dist/__tests__/themeValidator.test.d.ts.map +1 -0
  69. package/dist/__tests__/themeValidator.test.js +107 -0
  70. package/dist/__tests__/themeValidator.test.js.map +1 -0
  71. package/dist/__tests__/versions.test.d.ts +2 -0
  72. package/dist/__tests__/versions.test.d.ts.map +1 -0
  73. package/dist/__tests__/versions.test.js +339 -0
  74. package/dist/__tests__/versions.test.js.map +1 -0
  75. package/dist/{chunk-CYQHG27J.js → chunk-2TMAWB4Y.js} +74 -1
  76. package/dist/chunk-2TMAWB4Y.js.map +1 -0
  77. package/dist/{chunk-OASJKWO5.js → chunk-3K5OG6KI.js} +92 -7
  78. package/dist/chunk-3K5OG6KI.js.map +1 -0
  79. package/dist/chunk-57CVQCFX.js +193 -0
  80. package/dist/chunk-57CVQCFX.js.map +1 -0
  81. package/dist/{chunk-QM5PKNPW.js → chunk-5WFRKURX.js} +1 -1
  82. package/dist/chunk-5WFRKURX.js.map +1 -0
  83. package/dist/chunk-B4EEON3N.js +1317 -0
  84. package/dist/chunk-B4EEON3N.js.map +1 -0
  85. package/dist/chunk-DBS6RIFL.js +81 -0
  86. package/dist/chunk-DBS6RIFL.js.map +1 -0
  87. package/dist/{chunk-MIBRIRGJ.js → chunk-FR2RBTKO.js} +3 -3
  88. package/dist/{chunk-MIBRIRGJ.js.map → chunk-FR2RBTKO.js.map} +1 -1
  89. package/dist/chunk-H3AXU4MJ.js +179 -0
  90. package/dist/chunk-H3AXU4MJ.js.map +1 -0
  91. package/dist/chunk-JELIRVDP.js +24 -0
  92. package/dist/chunk-JELIRVDP.js.map +1 -0
  93. package/dist/chunk-K32VJONL.js +193 -0
  94. package/dist/chunk-K32VJONL.js.map +1 -0
  95. package/dist/{chunk-6BAVXFYC.js → chunk-KSWJR66U.js} +218 -42
  96. package/dist/chunk-KSWJR66U.js.map +1 -0
  97. package/dist/{chunk-TSG2OSE6.js → chunk-MYIH7FWD.js} +3 -3
  98. package/dist/chunk-MYIH7FWD.js.map +1 -0
  99. package/dist/chunk-VLJJHDAC.js +218 -0
  100. package/dist/chunk-VLJJHDAC.js.map +1 -0
  101. package/dist/chunk-WMOI7FN3.js +182 -0
  102. package/dist/chunk-WMOI7FN3.js.map +1 -0
  103. package/dist/chunk-ZTX4PFFT.js +520 -0
  104. package/dist/chunk-ZTX4PFFT.js.map +1 -0
  105. package/dist/doc/audioMapping.d.ts.map +1 -1
  106. package/dist/doc/audioMapping.js +42 -7
  107. package/dist/doc/audioMapping.js.map +1 -1
  108. package/dist/doc/getLayers.d.ts.map +1 -1
  109. package/dist/doc/getLayers.js +29 -18
  110. package/dist/doc/getLayers.js.map +1 -1
  111. package/dist/doc/markdownToDoc.d.ts.map +1 -1
  112. package/dist/doc/markdownToDoc.js +40 -6
  113. package/dist/doc/markdownToDoc.js.map +1 -1
  114. package/dist/doc/templates/featureBlock.d.ts +18 -0
  115. package/dist/doc/templates/featureBlock.d.ts.map +1 -0
  116. package/dist/doc/templates/featureBlock.js +180 -0
  117. package/dist/doc/templates/featureBlock.js.map +1 -0
  118. package/dist/doc/templates/fullBleedQuote.d.ts +12 -0
  119. package/dist/doc/templates/fullBleedQuote.d.ts.map +1 -1
  120. package/dist/doc/templates/fullBleedQuote.js +12 -0
  121. package/dist/doc/templates/fullBleedQuote.js.map +1 -1
  122. package/dist/doc/templates/index.d.ts +28 -4
  123. package/dist/doc/templates/index.d.ts.map +1 -1
  124. package/dist/doc/templates/index.js +45 -12
  125. package/dist/doc/templates/index.js.map +1 -1
  126. package/dist/doc/templates/listBlock.d.ts.map +1 -1
  127. package/dist/doc/templates/listBlock.js +22 -5
  128. package/dist/doc/templates/listBlock.js.map +1 -1
  129. package/dist/doc/templates/statHighlight.d.ts +12 -0
  130. package/dist/doc/templates/statHighlight.d.ts.map +1 -1
  131. package/dist/doc/templates/statHighlight.js +12 -0
  132. package/dist/doc/templates/statHighlight.js.map +1 -1
  133. package/dist/doc/templates/titleBlock.d.ts +11 -0
  134. package/dist/doc/templates/titleBlock.d.ts.map +1 -1
  135. package/dist/doc/templates/titleBlock.js +8 -0
  136. package/dist/doc/templates/titleBlock.js.map +1 -1
  137. package/dist/doc/utils/themeUtils.d.ts +4 -4
  138. package/dist/doc/utils/themeUtils.d.ts.map +1 -1
  139. package/dist/doc/utils/themeUtils.js +8 -7
  140. package/dist/doc/utils/themeUtils.js.map +1 -1
  141. package/dist/generate/slideshowGenerator.js +1 -1
  142. package/dist/generate/slideshowGenerator.js.map +1 -1
  143. package/dist/generate/templateMapper.js +2 -2
  144. package/dist/generate/templateMapper.js.map +1 -1
  145. package/dist/icons/iconData.d.ts +26 -0
  146. package/dist/icons/iconData.d.ts.map +1 -0
  147. package/dist/icons/iconData.js +12 -0
  148. package/dist/icons/iconData.js.map +1 -0
  149. package/dist/icons/index.d.ts +12 -0
  150. package/dist/icons/index.d.ts.map +1 -0
  151. package/dist/icons/index.js +10 -0
  152. package/dist/icons/index.js.map +1 -0
  153. package/dist/icons/resolve.d.ts +61 -0
  154. package/dist/icons/resolve.d.ts.map +1 -0
  155. package/dist/icons/resolve.js +130 -0
  156. package/dist/icons/resolve.js.map +1 -0
  157. package/dist/imageEdit/ImageEditVersionManager.d.ts +31 -0
  158. package/dist/imageEdit/ImageEditVersionManager.d.ts.map +1 -0
  159. package/dist/imageEdit/ImageEditVersionManager.js +39 -0
  160. package/dist/imageEdit/ImageEditVersionManager.js.map +1 -0
  161. package/dist/imageEdit/export.d.ts +33 -0
  162. package/dist/imageEdit/export.d.ts.map +1 -0
  163. package/dist/imageEdit/export.js +253 -0
  164. package/dist/imageEdit/export.js.map +1 -0
  165. package/dist/imageEdit/index.d.ts +14 -0
  166. package/dist/imageEdit/index.d.ts.map +1 -0
  167. package/dist/imageEdit/index.js +22 -0
  168. package/dist/imageEdit/index.js.map +1 -0
  169. package/dist/imageEdit/persistence.d.ts +15 -0
  170. package/dist/imageEdit/persistence.d.ts.map +1 -0
  171. package/dist/imageEdit/persistence.js +49 -0
  172. package/dist/imageEdit/persistence.js.map +1 -0
  173. package/dist/imageEdit/state.d.ts +42 -0
  174. package/dist/imageEdit/state.d.ts.map +1 -0
  175. package/dist/imageEdit/state.js +98 -0
  176. package/dist/imageEdit/state.js.map +1 -0
  177. package/dist/imageEdit/versionPaths.d.ts +27 -0
  178. package/dist/imageEdit/versionPaths.d.ts.map +1 -0
  179. package/dist/imageEdit/versionPaths.js +57 -0
  180. package/dist/imageEdit/versionPaths.js.map +1 -0
  181. package/dist/imageEdit/versions.d.ts +67 -0
  182. package/dist/imageEdit/versions.d.ts.map +1 -0
  183. package/dist/imageEdit/versions.js +161 -0
  184. package/dist/imageEdit/versions.js.map +1 -0
  185. package/dist/index.d.ts +4 -0
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +4 -0
  188. package/dist/index.js.map +1 -1
  189. package/dist/jsonForm/chooseControl.d.ts +20 -0
  190. package/dist/jsonForm/chooseControl.d.ts.map +1 -0
  191. package/dist/jsonForm/chooseControl.js +82 -0
  192. package/dist/jsonForm/chooseControl.js.map +1 -0
  193. package/dist/jsonForm/evaluateWhen.d.ts +12 -0
  194. package/dist/jsonForm/evaluateWhen.d.ts.map +1 -0
  195. package/dist/jsonForm/evaluateWhen.js +65 -0
  196. package/dist/jsonForm/evaluateWhen.js.map +1 -0
  197. package/dist/jsonForm/index.d.ts +14 -0
  198. package/dist/jsonForm/index.d.ts.map +1 -0
  199. package/dist/jsonForm/index.js +12 -0
  200. package/dist/jsonForm/index.js.map +1 -0
  201. package/dist/jsonForm/inferSchema.d.ts +12 -0
  202. package/dist/jsonForm/inferSchema.d.ts.map +1 -0
  203. package/dist/jsonForm/inferSchema.js +15 -0
  204. package/dist/jsonForm/inferSchema.js.map +1 -0
  205. package/dist/jsonForm/pointer.d.ts +26 -0
  206. package/dist/jsonForm/pointer.d.ts.map +1 -0
  207. package/dist/jsonForm/pointer.js +102 -0
  208. package/dist/jsonForm/pointer.js.map +1 -0
  209. package/dist/jsonForm/types.d.ts +120 -0
  210. package/dist/jsonForm/types.d.ts.map +1 -0
  211. package/dist/jsonForm/types.js +10 -0
  212. package/dist/jsonForm/types.js.map +1 -0
  213. package/dist/markdown/convert.d.ts +11 -1
  214. package/dist/markdown/convert.d.ts.map +1 -1
  215. package/dist/markdown/convert.js +135 -5
  216. package/dist/markdown/convert.js.map +1 -1
  217. package/dist/markdown/index.d.ts +1 -1
  218. package/dist/markdown/index.d.ts.map +1 -1
  219. package/dist/markdown/index.js +1 -1
  220. package/dist/markdown/index.js.map +1 -1
  221. package/dist/markdown/types.d.ts +17 -2
  222. package/dist/markdown/types.d.ts.map +1 -1
  223. package/dist/markdown/utils.d.ts +40 -0
  224. package/dist/markdown/utils.d.ts.map +1 -1
  225. package/dist/markdown/utils.js +155 -0
  226. package/dist/markdown/utils.js.map +1 -1
  227. package/dist/recommend/index.d.ts +16 -0
  228. package/dist/recommend/index.d.ts.map +1 -0
  229. package/dist/recommend/index.js +15 -0
  230. package/dist/recommend/index.js.map +1 -0
  231. package/dist/recommend/templates.d.ts +39 -0
  232. package/dist/recommend/templates.d.ts.map +1 -0
  233. package/dist/recommend/templates.js +235 -0
  234. package/dist/recommend/templates.js.map +1 -0
  235. package/dist/schemas/BlockTemplates.d.ts +46 -8
  236. package/dist/schemas/BlockTemplates.d.ts.map +1 -1
  237. package/dist/schemas/BlockTemplates.js +3 -3
  238. package/dist/schemas/BlockTemplates.js.map +1 -1
  239. package/dist/schemas/ImageEditDoc.d.ts +81 -0
  240. package/dist/schemas/ImageEditDoc.d.ts.map +1 -0
  241. package/dist/schemas/ImageEditDoc.js +20 -0
  242. package/dist/schemas/ImageEditDoc.js.map +1 -0
  243. package/dist/schemas/Theme.d.ts +70 -31
  244. package/dist/schemas/Theme.d.ts.map +1 -1
  245. package/dist/schemas/Theme.js +48 -16
  246. package/dist/schemas/Theme.js.map +1 -1
  247. package/dist/schemas/colorUtils.d.ts +51 -0
  248. package/dist/schemas/colorUtils.d.ts.map +1 -0
  249. package/dist/schemas/colorUtils.js +154 -0
  250. package/dist/schemas/colorUtils.js.map +1 -0
  251. package/dist/schemas/fontStacks.d.ts +57 -0
  252. package/dist/schemas/fontStacks.d.ts.map +1 -0
  253. package/dist/schemas/fontStacks.js +227 -0
  254. package/dist/schemas/fontStacks.js.map +1 -0
  255. package/dist/schemas/index.d.ts +5 -0
  256. package/dist/schemas/index.d.ts.map +1 -1
  257. package/dist/schemas/index.js +4 -0
  258. package/dist/schemas/index.js.map +1 -1
  259. package/dist/schemas/themeCompile.d.ts +45 -0
  260. package/dist/schemas/themeCompile.d.ts.map +1 -0
  261. package/dist/schemas/themeCompile.js +160 -0
  262. package/dist/schemas/themeCompile.js.map +1 -0
  263. package/dist/schemas/themeLibrary.d.ts +11 -15
  264. package/dist/schemas/themeLibrary.d.ts.map +1 -1
  265. package/dist/schemas/themeLibrary.js +18 -566
  266. package/dist/schemas/themeLibrary.js.map +1 -1
  267. package/dist/schemas/themeValidator.d.ts +26 -0
  268. package/dist/schemas/themeValidator.d.ts.map +1 -0
  269. package/dist/schemas/themeValidator.js +352 -0
  270. package/dist/schemas/themeValidator.js.map +1 -0
  271. package/dist/schemas/themes/bold.json +48 -0
  272. package/dist/schemas/themes/cinematic.json +54 -0
  273. package/dist/schemas/themes/documentary.json +49 -0
  274. package/dist/schemas/themes/gezellig.json +44 -0
  275. package/dist/schemas/themes/index.d.ts +26 -0
  276. package/dist/schemas/themes/index.d.ts.map +1 -0
  277. package/dist/schemas/themes/index.js +49 -0
  278. package/dist/schemas/themes/index.js.map +1 -0
  279. package/dist/schemas/themes/magazine.json +44 -0
  280. package/dist/schemas/themes/minimalist.json +45 -0
  281. package/dist/schemas/themes/morning-light.json +42 -0
  282. package/dist/schemas/themes/standard-dark.json +50 -0
  283. package/dist/schemas/themes/standard.json +42 -0
  284. package/dist/schemas/themes/tech-dark.json +48 -0
  285. package/dist/schemas/themes/warm-earth.json +50 -0
  286. package/dist/storage/ScopedContentContainer.d.ts +44 -0
  287. package/dist/storage/ScopedContentContainer.d.ts.map +1 -0
  288. package/dist/storage/ScopedContentContainer.js +94 -0
  289. package/dist/storage/ScopedContentContainer.js.map +1 -0
  290. package/dist/storage/index.d.ts +1 -0
  291. package/dist/storage/index.d.ts.map +1 -1
  292. package/dist/storage/index.js +1 -0
  293. package/dist/storage/index.js.map +1 -1
  294. package/dist/story/index.d.ts +53 -13
  295. package/dist/story/index.js +12 -4
  296. package/dist/themeLibrary-BHjJ0Qx6.d.ts +40 -0
  297. package/dist/{types-CkNttVSF.d.ts → types-BdZkdJ3z.d.ts} +17 -2
  298. package/dist/types-D98li1gV.d.ts +93 -0
  299. package/dist/versions/DocumentVersionManager.d.ts +31 -0
  300. package/dist/versions/DocumentVersionManager.d.ts.map +1 -0
  301. package/dist/versions/DocumentVersionManager.js +33 -0
  302. package/dist/versions/DocumentVersionManager.js.map +1 -0
  303. package/dist/versions/index.d.ts +29 -0
  304. package/dist/versions/index.d.ts.map +1 -0
  305. package/dist/versions/index.js +28 -0
  306. package/dist/versions/index.js.map +1 -0
  307. package/dist/versions/operations.d.ts +44 -0
  308. package/dist/versions/operations.d.ts.map +1 -0
  309. package/dist/versions/operations.js +190 -0
  310. package/dist/versions/operations.js.map +1 -0
  311. package/dist/versions/paths.d.ts +29 -0
  312. package/dist/versions/paths.d.ts.map +1 -0
  313. package/dist/versions/paths.js +66 -0
  314. package/dist/versions/paths.js.map +1 -0
  315. package/dist/versions/timestamp.d.ts +22 -0
  316. package/dist/versions/timestamp.d.ts.map +1 -0
  317. package/dist/versions/timestamp.js +44 -0
  318. package/dist/versions/timestamp.js.map +1 -0
  319. package/dist/versions/types.d.ts +92 -0
  320. package/dist/versions/types.d.ts.map +1 -0
  321. package/dist/versions/types.js +11 -0
  322. package/dist/versions/types.js.map +1 -0
  323. package/package.json +28 -1
  324. package/src/__tests__/colorUtils.test.ts +112 -0
  325. package/src/__tests__/getLayers.test.ts +32 -7
  326. package/src/__tests__/iconResolve.test.ts +122 -0
  327. package/src/__tests__/imageEditState.test.ts +74 -0
  328. package/src/__tests__/imageEditVersions.test.ts +169 -0
  329. package/src/__tests__/inferDocumentTitle.test.ts +50 -0
  330. package/src/__tests__/jsonForm.chooseControl.test.ts +86 -0
  331. package/src/__tests__/jsonForm.evaluateWhen.test.ts +59 -0
  332. package/src/__tests__/jsonForm.inferSchema.test.ts +25 -0
  333. package/src/__tests__/jsonForm.pointer.test.ts +103 -0
  334. package/src/__tests__/markdownIcons.test.ts +104 -0
  335. package/src/__tests__/markdownToDoc.test.ts +19 -4
  336. package/src/__tests__/recommendTemplates.test.ts +183 -0
  337. package/src/__tests__/scopedContentContainer.test.ts +89 -0
  338. package/src/__tests__/slideshowGenerator.test.ts +1 -1
  339. package/src/__tests__/templateAnnotationParse.test.ts +42 -0
  340. package/src/__tests__/templates.test.ts +93 -9
  341. package/src/__tests__/themeCompile.test.ts +156 -0
  342. package/src/__tests__/themeValidator.test.ts +125 -0
  343. package/src/__tests__/versions.test.ts +415 -0
  344. package/src/doc/audioMapping.ts +55 -11
  345. package/src/doc/getLayers.ts +32 -21
  346. package/src/doc/markdownToDoc.ts +45 -7
  347. package/src/doc/templates/featureBlock.ts +202 -0
  348. package/src/doc/templates/fullBleedQuote.ts +13 -0
  349. package/src/doc/templates/index.ts +50 -16
  350. package/src/doc/templates/listBlock.ts +24 -5
  351. package/src/doc/templates/statHighlight.ts +13 -0
  352. package/src/doc/templates/titleBlock.ts +9 -0
  353. package/src/doc/utils/themeUtils.ts +8 -7
  354. package/src/generate/slideshowGenerator.ts +1 -1
  355. package/src/generate/templateMapper.ts +2 -2
  356. package/src/icons/iconData.ts +31 -0
  357. package/src/icons/index.ts +18 -0
  358. package/src/icons/resolve.ts +139 -0
  359. package/src/imageEdit/ImageEditVersionManager.ts +73 -0
  360. package/src/imageEdit/export.ts +326 -0
  361. package/src/imageEdit/index.ts +71 -0
  362. package/src/imageEdit/persistence.ts +62 -0
  363. package/src/imageEdit/state.ts +112 -0
  364. package/src/imageEdit/versionPaths.ts +57 -0
  365. package/src/imageEdit/versions.ts +231 -0
  366. package/src/index.ts +4 -0
  367. package/src/jsonForm/chooseControl.ts +88 -0
  368. package/src/jsonForm/evaluateWhen.ts +59 -0
  369. package/src/jsonForm/index.ts +22 -0
  370. package/src/jsonForm/inferSchema.ts +25 -0
  371. package/src/jsonForm/pointer.ts +109 -0
  372. package/src/jsonForm/types.ts +167 -0
  373. package/src/markdown/convert.ts +145 -5
  374. package/src/markdown/index.ts +3 -0
  375. package/src/markdown/types.ts +19 -2
  376. package/src/markdown/utils.ts +159 -0
  377. package/src/recommend/index.ts +16 -0
  378. package/src/recommend/templates.ts +273 -0
  379. package/src/schemas/BlockTemplates.ts +50 -7
  380. package/src/schemas/ImageEditDoc.ts +95 -0
  381. package/src/schemas/Theme.ts +98 -31
  382. package/src/schemas/colorUtils.ts +186 -0
  383. package/src/schemas/fontStacks.ts +257 -0
  384. package/src/schemas/index.ts +12 -0
  385. package/src/schemas/themeCompile.ts +203 -0
  386. package/src/schemas/themeLibrary.ts +18 -597
  387. package/src/schemas/themeValidator.ts +388 -0
  388. package/src/schemas/themes/bold.json +48 -0
  389. package/src/schemas/themes/cinematic.json +54 -0
  390. package/src/schemas/themes/documentary.json +49 -0
  391. package/src/schemas/themes/gezellig.json +44 -0
  392. package/src/schemas/themes/index.ts +53 -0
  393. package/src/schemas/themes/magazine.json +44 -0
  394. package/src/schemas/themes/minimalist.json +45 -0
  395. package/src/schemas/themes/morning-light.json +42 -0
  396. package/src/schemas/themes/standard-dark.json +50 -0
  397. package/src/schemas/themes/standard.json +42 -0
  398. package/src/schemas/themes/tech-dark.json +48 -0
  399. package/src/schemas/themes/warm-earth.json +50 -0
  400. package/src/storage/ScopedContentContainer.ts +113 -0
  401. package/src/storage/index.ts +1 -0
  402. package/src/versions/DocumentVersionManager.ts +70 -0
  403. package/src/versions/index.ts +54 -0
  404. package/src/versions/operations.ts +230 -0
  405. package/src/versions/paths.ts +66 -0
  406. package/src/versions/timestamp.ts +48 -0
  407. package/src/versions/types.ts +91 -0
  408. package/dist/chunk-6BAVXFYC.js.map +0 -1
  409. package/dist/chunk-7GF6RDED.js +0 -82
  410. package/dist/chunk-7GF6RDED.js.map +0 -1
  411. package/dist/chunk-CYQHG27J.js.map +0 -1
  412. package/dist/chunk-F22AE6BY.js +0 -121
  413. package/dist/chunk-F22AE6BY.js.map +0 -1
  414. package/dist/chunk-FIQR4AJG.js +0 -517
  415. package/dist/chunk-FIQR4AJG.js.map +0 -1
  416. package/dist/chunk-OASJKWO5.js.map +0 -1
  417. package/dist/chunk-QM5PKNPW.js.map +0 -1
  418. package/dist/chunk-TSG2OSE6.js.map +0 -1
  419. package/dist/themeLibrary-CEo2D4b6.d.ts +0 -44
@@ -1,592 +1,44 @@
1
1
  /**
2
2
  * Built-in Theme Library
3
3
  *
4
- * Ships 8 curated themes covering documentary, editorial, minimal, and
5
- * cinematic styles. Each theme is fully JSON-serializable.
4
+ * Public entry point for theme lookup. Built-in themes live as JSON
5
+ * sidecars in [./themes/](./themes/) they share the exact same shape
6
+ * as customizer-authored themes (no two-tier distinction).
6
7
  *
7
8
  * Usage:
8
9
  * ```ts
9
10
  * import { THEMES, resolveTheme } from '@bendyline/squisq/schemas';
10
11
  *
11
- * const theme = resolveTheme('minimalist'); // look up by id
12
- * const theme = THEMES.documentary; // direct access
12
+ * const theme = resolveTheme('minimalist'); // by id, with registry override
13
+ * const theme = THEMES.documentary; // direct access to a built-in
13
14
  * ```
14
15
  */
15
- // ============================================
16
- // Shared constants
17
- // ============================================
18
- // ── Font stacks ──────────────────────────────────────────────────
19
- // Each stack lists the recommended Google Font first (works when the
20
- // wrapping site loads it), then degrades to safe system fonts.
21
- // Squisq itself does NOT load Google Fonts.
22
- /** System fonts only — no external dependencies. */
23
- const SYSTEM_SANS = 'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif';
24
- const SYSTEM_SERIF = 'Georgia, "Times New Roman", serif';
25
- const SYSTEM_MONO = 'Consolas, "Courier New", monospace';
26
- /** Theme-specific stacks with Google Font leads. */
27
- const PLAYFAIR = '"Playfair Display", Georgia, serif';
28
- const SOURCE_SERIF = '"Source Serif 4", "PT Serif", Georgia, serif';
29
- const INTER = '"Inter", "Segoe UI", Roboto, sans-serif';
30
- const OSWALD = '"Oswald", Impact, "Arial Black", sans-serif';
31
- const ROBOTO = '"Roboto", "Segoe UI", Arial, sans-serif';
32
- const MERRIWEATHER = '"Merriweather", Georgia, serif';
33
- const LORA = '"Lora", "Merriweather", Georgia, serif';
34
- const JETBRAINS_MONO = '"JetBrains Mono", "Fira Code", Consolas, monospace';
35
- const IBM_PLEX_SANS = '"IBM Plex Sans", "Segoe UI", Roboto, sans-serif';
36
- const DM_SERIF = '"DM Serif Display", Georgia, serif';
37
- const DM_SANS = '"DM Sans", "Segoe UI", Roboto, sans-serif';
38
- const CORMORANT = '"Cormorant Garamond", Garamond, Georgia, serif';
39
- const CRIMSON = '"Crimson Text", Georgia, serif';
40
- const PT_SERIF = '"PT Serif", Georgia, serif';
41
- /** Standard 6-scheme set used by the documentary theme (migrated from old COLOR_SCHEMES). */
42
- const CLASSIC_COLOR_SCHEMES = {
43
- blue: { bg: '#1a365d', text: '#63b3ed', accent: '#90cdf4' },
44
- green: { bg: '#22543d', text: '#9ae6b4', accent: '#68d391' },
45
- purple: { bg: '#44337a', text: '#d6bcfa', accent: '#b794f4' },
46
- red: { bg: '#742a2a', text: '#fc8181', accent: '#feb2b2' },
47
- orange: { bg: '#744210', text: '#fbd38d', accent: '#f6ad55' },
48
- teal: { bg: '#234e52', text: '#81e6d9', accent: '#4fd1c5' },
49
- };
50
- // ============================================
51
- // 1. Standard (default — safe system fonts, no external dependencies)
52
- // ============================================
53
- const standard = {
54
- id: 'standard',
55
- name: 'Standard',
56
- description: 'Clean and safe. System fonts only — no external font dependencies.',
57
- colors: {
58
- primary: '#3182ce',
59
- secondary: '#4a5568',
60
- background: '#1a202c',
61
- backgroundLight: '#2d3748',
62
- text: '#f7fafc',
63
- textMuted: '#a0aec0',
64
- highlight: '#4299e1',
65
- warning: '#fc8181',
66
- },
67
- typography: {
68
- bodyFontFamily: SYSTEM_SANS,
69
- titleFontFamily: SYSTEM_SERIF,
70
- monoFontFamily: SYSTEM_MONO,
71
- titleWeight: 'bold',
72
- },
73
- style: {
74
- textShadow: true,
75
- overlayOpacity: 0.45,
76
- animationSpeed: 1.0,
77
- },
78
- renderStyle: {
79
- name: 'standard',
80
- defaultTextAnimation: 'fadeIn',
81
- defaultImageAnimation: 'slowZoom',
82
- ambientMotion: true,
83
- defaultTransition: { type: 'fade', duration: 0.7 },
84
- },
85
- colorSchemes: CLASSIC_COLOR_SCHEMES,
86
- persistentLayers: {
87
- bottomLayers: [
88
- {
89
- template: 'gradientBackground',
90
- config: { type: 'gradientBackground', preset: 'dark-vignette' },
91
- },
92
- ],
93
- },
94
- };
95
- // ============================================
96
- // 2. Documentary
97
- // ============================================
98
- const documentary = {
99
- id: 'documentary',
100
- name: 'Documentary',
101
- description: 'Classic dark cinematic look with elegant serif typography.',
102
- colors: {
103
- primary: '#3d5a80',
104
- secondary: '#63b3ed',
105
- background: '#1a202c',
106
- backgroundLight: '#2d3748',
107
- text: '#ffffff',
108
- textMuted: '#a0aec0',
109
- highlight: '#63b3ed',
110
- warning: '#fc8181',
111
- },
112
- typography: {
113
- bodyFontFamily: SOURCE_SERIF,
114
- titleFontFamily: PLAYFAIR,
115
- titleWeight: 'bold',
116
- },
117
- style: {
118
- textShadow: true,
119
- overlayOpacity: 0.5,
120
- animationSpeed: 1.0,
121
- },
122
- renderStyle: {
123
- name: 'documentary',
124
- defaultTextAnimation: 'fadeIn',
125
- defaultImageAnimation: 'slowZoom',
126
- ambientMotion: true,
127
- defaultTransition: { type: 'fade', duration: 0.8 },
128
- },
129
- colorSchemes: CLASSIC_COLOR_SCHEMES,
130
- persistentLayers: {
131
- bottomLayers: [
132
- {
133
- template: 'gradientBackground',
134
- config: { type: 'gradientBackground', preset: 'dark-vignette' },
135
- },
136
- ],
137
- },
138
- };
139
- // ============================================
140
- // 2. Minimalist
141
- // ============================================
142
- const minimalist = {
143
- id: 'minimalist',
144
- name: 'Minimalist',
145
- description: 'Clean near-white background with sans-serif type and minimal animation.',
146
- colors: {
147
- primary: '#2d3748',
148
- secondary: '#4a5568',
149
- background: '#f7fafc',
150
- backgroundLight: '#edf2f7',
151
- text: '#1a202c',
152
- textMuted: '#718096',
153
- highlight: '#3182ce',
154
- warning: '#e53e3e',
155
- },
156
- typography: {
157
- bodyFontFamily: INTER,
158
- titleFontFamily: INTER,
159
- titleWeight: 'bold',
160
- lineHeight: 1.6,
161
- },
162
- style: {
163
- textShadow: false,
164
- overlayOpacity: 0.3,
165
- animationSpeed: 1.2,
166
- borderRadius: 8,
167
- },
168
- renderStyle: {
169
- name: 'minimalist',
170
- defaultTextAnimation: 'fadeIn',
171
- ambientMotion: false,
172
- defaultTransition: { type: 'fade', duration: 0.6 },
173
- templateHints: {
174
- titleBlock: { showAccentLine: false },
175
- },
176
- },
177
- colorSchemes: {
178
- blue: { bg: '#ebf8ff', text: '#2b6cb0', accent: '#3182ce' },
179
- green: { bg: '#f0fff4', text: '#276749', accent: '#38a169' },
180
- purple: { bg: '#faf5ff', text: '#553c9a', accent: '#805ad5' },
181
- red: { bg: '#fff5f5', text: '#c53030', accent: '#e53e3e' },
182
- orange: { bg: '#fffaf0', text: '#c05621', accent: '#dd6b20' },
183
- teal: { bg: '#e6fffa', text: '#285e61', accent: '#319795' },
184
- },
185
- };
186
- // ============================================
187
- // 3. Bold
188
- // ============================================
189
- const bold = {
190
- id: 'bold',
191
- name: 'Bold',
192
- description: 'High-contrast black with vivid accents and dramatic animations.',
193
- colors: {
194
- primary: '#e53e3e',
195
- secondary: '#ed8936',
196
- background: '#000000',
197
- backgroundLight: '#1a1a1a',
198
- text: '#ffffff',
199
- textMuted: '#cbd5e0',
200
- highlight: '#f6e05e',
201
- warning: '#fc8181',
202
- },
203
- typography: {
204
- bodyFontFamily: ROBOTO,
205
- titleFontFamily: OSWALD,
206
- titleWeight: 'bold',
207
- titleScale: 1.15,
208
- bodyScale: 1.0,
209
- titleLineHeight: 1.1,
210
- },
211
- style: {
212
- textShadow: true,
213
- overlayOpacity: 0.6,
214
- animationSpeed: 0.8,
215
- },
216
- renderStyle: {
217
- name: 'bold',
218
- defaultTextAnimation: 'zoomIn',
219
- defaultImageAnimation: 'slowZoom',
220
- ambientMotion: true,
221
- defaultTransition: { type: 'dissolve', duration: 0.5 },
222
- templateHints: {
223
- statHighlight: { entrance: 'dramatic' },
224
- fullBleedQuote: { entrance: 'dramatic' },
225
- },
226
- },
227
- colorSchemes: {
228
- blue: { bg: '#1a202c', text: '#63b3ed', accent: '#90cdf4' },
229
- green: { bg: '#1a202c', text: '#48bb78', accent: '#68d391' },
230
- purple: { bg: '#1a202c', text: '#b794f4', accent: '#d6bcfa' },
231
- red: { bg: '#1a202c', text: '#fc8181', accent: '#feb2b2' },
232
- orange: { bg: '#1a202c', text: '#f6ad55', accent: '#fbd38d' },
233
- teal: { bg: '#1a202c', text: '#4fd1c5', accent: '#81e6d9' },
234
- },
235
- };
236
- // ============================================
237
- // 4. Morning Light
238
- // ============================================
239
- const morningLight = {
240
- id: 'morning-light',
241
- name: 'Morning Light',
242
- description: 'Warm light background with dark text and gentle serif typography.',
243
- colors: {
244
- primary: '#744210',
245
- secondary: '#975a16',
246
- background: '#faf8f5',
247
- backgroundLight: '#f5f0eb',
248
- text: '#2d3748',
249
- textMuted: '#718096',
250
- highlight: '#dd6b20',
251
- warning: '#c53030',
252
- },
253
- typography: {
254
- bodyFontFamily: LORA,
255
- titleFontFamily: MERRIWEATHER,
256
- titleWeight: 'bold',
257
- lineHeight: 1.7,
258
- },
259
- style: {
260
- textShadow: false,
261
- overlayOpacity: 0.35,
262
- animationSpeed: 1.1,
263
- borderRadius: 4,
264
- },
265
- renderStyle: {
266
- name: 'morning-light',
267
- defaultTextAnimation: 'fadeIn',
268
- ambientMotion: false,
269
- defaultTransition: { type: 'fade', duration: 1.0 },
270
- },
271
- colorSchemes: {
272
- blue: { bg: '#ebf8ff', text: '#2c5282', accent: '#4299e1' },
273
- green: { bg: '#f0fff4', text: '#22543d', accent: '#48bb78' },
274
- purple: { bg: '#faf5ff', text: '#44337a', accent: '#9f7aea' },
275
- red: { bg: '#fff5f5', text: '#9b2c2c', accent: '#fc8181' },
276
- orange: { bg: '#fffaf0', text: '#744210', accent: '#ed8936' },
277
- teal: { bg: '#e6fffa', text: '#234e52', accent: '#38b2ac' },
278
- },
279
- };
280
- // ============================================
281
- // 5. Tech Dark
282
- // ============================================
283
- const techDark = {
284
- id: 'tech-dark',
285
- name: 'Tech Dark',
286
- description: 'True black with neon cyan/green accents and monospace titles.',
287
- colors: {
288
- primary: '#00e5ff',
289
- secondary: '#00e676',
290
- background: '#0a0a0a',
291
- backgroundLight: '#1a1a2e',
292
- text: '#e0e0e0',
293
- textMuted: '#9e9e9e',
294
- highlight: '#00e5ff',
295
- warning: '#ff5252',
296
- },
297
- typography: {
298
- bodyFontFamily: IBM_PLEX_SANS,
299
- titleFontFamily: JETBRAINS_MONO,
300
- monoFontFamily: JETBRAINS_MONO,
301
- titleWeight: 'bold',
302
- titleScale: 0.9,
303
- lineHeight: 1.5,
304
- },
305
- style: {
306
- textShadow: true,
307
- overlayOpacity: 0.55,
308
- animationSpeed: 0.9,
309
- borderRadius: 2,
310
- },
311
- renderStyle: {
312
- name: 'tech-dark',
313
- defaultTextAnimation: 'typewriter',
314
- defaultImageAnimation: 'slowZoom',
315
- ambientMotion: true,
316
- defaultTransition: { type: 'dissolve', duration: 0.4 },
317
- templateHints: {
318
- statHighlight: { entrance: 'dramatic' },
319
- },
320
- },
321
- colorSchemes: {
322
- blue: { bg: '#0d1b2a', text: '#00b0ff', accent: '#40c4ff' },
323
- green: { bg: '#0d1b0d', text: '#00e676', accent: '#69f0ae' },
324
- purple: { bg: '#1a0d2e', text: '#d500f9', accent: '#ea80fc' },
325
- red: { bg: '#2e0d0d', text: '#ff5252', accent: '#ff8a80' },
326
- orange: { bg: '#2e1a0d', text: '#ff9100', accent: '#ffab40' },
327
- teal: { bg: '#0d2e2e', text: '#1de9b6', accent: '#64ffda' },
328
- },
329
- };
330
- // ============================================
331
- // 6. Magazine
332
- // ============================================
333
- const magazine = {
334
- id: 'magazine',
335
- name: 'Magazine',
336
- description: 'Rich editorial palette with mixed serif/sans typography and slide transitions.',
337
- colors: {
338
- primary: '#c53030',
339
- secondary: '#2b6cb0',
340
- background: '#1a202c',
341
- backgroundLight: '#2d3748',
342
- text: '#f7fafc',
343
- textMuted: '#cbd5e0',
344
- highlight: '#ed8936',
345
- warning: '#fc8181',
346
- },
347
- typography: {
348
- bodyFontFamily: DM_SANS,
349
- titleFontFamily: DM_SERIF,
350
- titleWeight: 'bold',
351
- titleScale: 1.05,
352
- lineHeight: 1.5,
353
- },
354
- style: {
355
- textShadow: true,
356
- overlayOpacity: 0.45,
357
- animationSpeed: 1.0,
358
- borderRadius: 6,
359
- },
360
- renderStyle: {
361
- name: 'magazine',
362
- defaultTextAnimation: 'fadeIn',
363
- defaultImageAnimation: 'slowZoom',
364
- ambientMotion: true,
365
- defaultTransition: { type: 'slideLeft', duration: 0.7 },
366
- },
367
- colorSchemes: {
368
- blue: { bg: '#1a365d', text: '#90cdf4', accent: '#63b3ed' },
369
- green: { bg: '#1c4532', text: '#9ae6b4', accent: '#68d391' },
370
- purple: { bg: '#322659', text: '#d6bcfa', accent: '#b794f4' },
371
- red: { bg: '#63171b', text: '#feb2b2', accent: '#fc8181' },
372
- orange: { bg: '#652b19', text: '#fbd38d', accent: '#f6ad55' },
373
- teal: { bg: '#1d4044', text: '#81e6d9', accent: '#4fd1c5' },
374
- },
375
- };
376
- // ============================================
377
- // 7. Cinematic
378
- // ============================================
379
- const cinematic = {
380
- id: 'cinematic',
381
- name: 'Cinematic',
382
- description: 'Ultra-dark with moody gradients, gold accents, and slow dissolve transitions.',
383
- colors: {
384
- primary: '#d69e2e',
385
- secondary: '#b7791f',
386
- background: '#0a0f1a',
387
- backgroundLight: '#1a202c',
388
- text: '#f7fafc',
389
- textMuted: '#a0aec0',
390
- highlight: '#ecc94b',
391
- warning: '#fc8181',
392
- },
393
- typography: {
394
- bodyFontFamily: CRIMSON,
395
- titleFontFamily: CORMORANT,
396
- titleWeight: 'bold',
397
- lineHeight: 1.5,
398
- titleLineHeight: 1.2,
399
- },
400
- style: {
401
- textShadow: true,
402
- overlayOpacity: 0.55,
403
- animationSpeed: 1.2,
404
- },
405
- renderStyle: {
406
- name: 'cinematic',
407
- defaultTextAnimation: 'fadeIn',
408
- defaultImageAnimation: 'slowZoom',
409
- ambientMotion: true,
410
- defaultTransition: { type: 'dissolve', duration: 1.2 },
411
- templateHints: {
412
- titleBlock: { showAccentLine: true },
413
- },
414
- },
415
- colorSchemes: {
416
- blue: { bg: '#0d1b2a', text: '#90cdf4', accent: '#63b3ed' },
417
- green: { bg: '#0d1b14', text: '#9ae6b4', accent: '#68d391' },
418
- purple: { bg: '#1a0d2e', text: '#d6bcfa', accent: '#b794f4' },
419
- red: { bg: '#2a0d0d', text: '#fc8181', accent: '#feb2b2' },
420
- orange: { bg: '#2a1a0d', text: '#fbd38d', accent: '#f6ad55' },
421
- teal: { bg: '#0d2a2a', text: '#81e6d9', accent: '#4fd1c5' },
422
- },
423
- persistentLayers: {
424
- bottomLayers: [
425
- {
426
- template: 'gradientBackground',
427
- config: { type: 'gradientBackground', preset: 'radial-dark' },
428
- },
429
- ],
430
- },
431
- };
432
- // ============================================
433
- // 8. Warm Earth
434
- // ============================================
435
- const warmEarth = {
436
- id: 'warm-earth',
437
- name: 'Warm Earth',
438
- description: 'Natural warm tones with earthy browns and terracotta accents.',
439
- colors: {
440
- primary: '#9c4221',
441
- secondary: '#c05621',
442
- background: '#1c1410',
443
- backgroundLight: '#2d241e',
444
- text: '#faf5f0',
445
- textMuted: '#c4a882',
446
- highlight: '#dd6b20',
447
- warning: '#e53e3e',
448
- },
449
- typography: {
450
- bodyFontFamily: PT_SERIF,
451
- titleFontFamily: PT_SERIF,
452
- titleWeight: 'bold',
453
- lineHeight: 1.6,
454
- },
455
- style: {
456
- textShadow: true,
457
- overlayOpacity: 0.5,
458
- animationSpeed: 1.1,
459
- },
460
- renderStyle: {
461
- name: 'warm-earth',
462
- defaultTextAnimation: 'fadeIn',
463
- defaultImageAnimation: 'panLeft',
464
- ambientMotion: true,
465
- defaultTransition: { type: 'fade', duration: 0.9 },
466
- },
467
- colorSchemes: {
468
- blue: { bg: '#2a1f14', text: '#90cdf4', accent: '#63b3ed' },
469
- green: { bg: '#1e2a14', text: '#9ae6b4', accent: '#68d391' },
470
- purple: { bg: '#2a142a', text: '#d6bcfa', accent: '#b794f4' },
471
- red: { bg: '#2a1414', text: '#fc8181', accent: '#feb2b2' },
472
- orange: { bg: '#2a1e0a', text: '#fbd38d', accent: '#f6ad55' },
473
- teal: { bg: '#142a28', text: '#81e6d9', accent: '#4fd1c5' },
474
- },
475
- persistentLayers: {
476
- bottomLayers: [
477
- {
478
- template: 'gradientBackground',
479
- config: { type: 'gradientBackground', preset: 'earth-tones' },
480
- },
481
- ],
482
- },
483
- };
484
- // ============================================
485
- // 9. Gezellig
486
- // ============================================
487
- /**
488
- * Warm sage + terracotta palette that matches the Gezel desktop app.
489
- * Background is a subtly orange-tinted near-black — a much warmer surface
490
- * than the standard `#1a202c`-family dark themes. Primary is Gezel's
491
- * accent orange (`#b0724c`); secondary is the titlebar sage (`#667f62`).
492
- *
493
- * Typography uses system fonts with emoji fallbacks at the tail of each
494
- * stack — `OpenMoji Color` first (picked up when the host app has loaded
495
- * its WOFF with `unicode-range` scoped to emoji codepoints), then the
496
- * platform emoji fonts. Hosts that haven't registered OpenMoji fall
497
- * through to the platform emoji font transparently.
498
- *
499
- * "Gezellig" — Dutch, roughly "cozy / companionable", which is the brand
500
- * direction of the Gezel app (an ensemble of AI gezels that feel like a
501
- * crew, not a robot). Works as a general-purpose warm dark theme outside
502
- * the app too.
503
- */
504
- const GEZELLIG_SANS = 'system-ui, -apple-system, "Segoe UI", Roboto, "OpenMoji Color", "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif';
505
- const GEZELLIG_SERIF = 'Georgia, "Times New Roman", "OpenMoji Color", "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", serif';
506
- const gezellig = {
507
- id: 'gezellig',
508
- name: 'Gezellig',
509
- description: 'Warm sage + terracotta palette inspired by the Gezel desktop app. Subtle orange-tinted dark background, cream text, sage and terracotta accents.',
510
- colors: {
511
- primary: '#b0724c',
512
- secondary: '#667f62',
513
- background: '#1f1a17',
514
- backgroundLight: '#2b2420',
515
- text: '#f3ede0',
516
- textMuted: '#a89b85',
517
- highlight: '#c0875d',
518
- warning: '#e07a6b',
519
- },
520
- typography: {
521
- bodyFontFamily: GEZELLIG_SANS,
522
- titleFontFamily: GEZELLIG_SERIF,
523
- monoFontFamily: SYSTEM_MONO,
524
- titleWeight: 'bold',
525
- lineHeight: 1.55,
526
- },
527
- style: {
528
- textShadow: false,
529
- overlayOpacity: 0.4,
530
- animationSpeed: 1.0,
531
- borderRadius: 6,
532
- },
533
- renderStyle: {
534
- name: 'gezellig',
535
- defaultTextAnimation: 'fadeIn',
536
- defaultImageAnimation: 'slowZoom',
537
- ambientMotion: false,
538
- defaultTransition: { type: 'fade', duration: 0.6 },
539
- },
540
- colorSchemes: {
541
- // Warm, earthen palette with a sage-green outlier for contrast.
542
- terracotta: { bg: '#3d2620', text: '#f3ede0', accent: '#c0875d' },
543
- sage: { bg: '#28332a', text: '#e3ead9', accent: '#8aa589' },
544
- amber: { bg: '#3d2e17', text: '#fbe3a8', accent: '#d4a149' },
545
- plum: { bg: '#2e1f2a', text: '#e8d4e0', accent: '#b088a5' },
546
- ink: { bg: '#1a1f26', text: '#d5dde8', accent: '#7b8fa8' },
547
- cream: { bg: '#f3ede0', text: '#2b2420', accent: '#b0724c' },
548
- },
549
- };
550
- // ============================================
551
- // Theme Library
552
- // ============================================
553
- /**
554
- * All built-in themes, keyed by id.
555
- */
556
- export const THEMES = {
557
- standard,
558
- documentary,
559
- minimalist,
560
- bold,
561
- 'morning-light': morningLight,
562
- 'tech-dark': techDark,
563
- magazine,
564
- cinematic,
565
- 'warm-earth': warmEarth,
566
- gezellig,
567
- };
16
+ import { lookupRegisteredTheme } from './Theme.js';
17
+ import { BUILTIN_THEMES } from './themes/index.js';
18
+ /** All built-in themes, keyed by id. */
19
+ export const THEMES = BUILTIN_THEMES;
568
20
  /** The default theme id. */
569
21
  export const DEFAULT_THEME_ID = 'standard';
570
22
  /** The default theme (standard — safe system fonts, no external dependencies). */
571
- export const DEFAULT_THEME = standard;
23
+ export const DEFAULT_THEME = THEMES[DEFAULT_THEME_ID];
572
24
  /**
573
- * Resolve a theme by id. Returns the default theme when `id` is
574
- * undefined or not found in the library.
25
+ * Resolve a theme by id. Custom themes registered via `registerTheme()`
26
+ * take precedence over built-ins; otherwise built-ins are searched and
27
+ * the default theme is returned for unknown ids.
575
28
  */
576
29
  export function resolveTheme(id) {
30
+ const registered = lookupRegisteredTheme(id);
31
+ if (registered)
32
+ return registered;
577
33
  if (id && id in THEMES)
578
34
  return THEMES[id];
579
35
  return DEFAULT_THEME;
580
36
  }
581
- /**
582
- * Get all available theme ids.
583
- */
37
+ /** Get all built-in theme ids. */
584
38
  export function getAvailableThemes() {
585
39
  return Object.keys(THEMES);
586
40
  }
587
- /**
588
- * Get a summary of all themes (id + name + description) for theme pickers.
589
- */
41
+ /** Get a summary of all built-in themes (id + name + description) for theme pickers. */
590
42
  export function getThemeSummaries() {
591
43
  return Object.values(THEMES).map((t) => ({
592
44
  id: t.id,
@@ -1 +1 @@
1
- {"version":3,"file":"themeLibrary.js","sourceRoot":"","sources":["../../src/schemas/themeLibrary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"themeLibrary.js","sourceRoot":"","sources":["../../src/schemas/themeLibrary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,wCAAwC;AACxC,MAAM,CAAC,MAAM,MAAM,GAA0B,cAAc,CAAC;AAE5D,4BAA4B;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE3C,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAU,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAAsB;IACjD,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC7C,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Theme Validator
3
+ *
4
+ * Hand-rolled validator for `Theme` JSON. No dependencies. Produces a
5
+ * flat list of typed errors with JSON paths, suitable for surfacing in
6
+ * the customizer UI or throwing at module init for built-in themes.
7
+ *
8
+ * Design: walk the candidate object, push errors for each violation.
9
+ * Coverage is exhaustive for required fields and shapes; permissive on
10
+ * forward-compatible fields (unknown keys are ignored, not rejected).
11
+ */
12
+ import type { Theme } from './Theme.js';
13
+ export interface ValidationError {
14
+ path: string;
15
+ message: string;
16
+ }
17
+ export interface ValidationResult {
18
+ valid: boolean;
19
+ errors: ValidationError[];
20
+ /** Present only when `valid === true`. The same input typed as `Theme`. */
21
+ theme?: Theme;
22
+ }
23
+ export declare function validateTheme(input: unknown): ValidationResult;
24
+ /** Throws on invalid input. Useful at module init for built-in themes. */
25
+ export declare function assertTheme(input: unknown, source?: string): Theme;
26
+ //# sourceMappingURL=themeValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeValidator.d.ts","sourceRoot":"","sources":["../../src/schemas/themeValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAqB,MAAM,YAAY,CAAC;AAI3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AA2RD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CA8D9D;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAU,GAAG,KAAK,CAWnE"}