@maizzle/framework 6.0.0-rc.16 → 6.0.0-rc.18

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 (460) hide show
  1. package/bin/maizzle.mjs +1 -1
  2. package/dist/build.d.ts +20 -0
  3. package/dist/build.d.ts.map +1 -0
  4. package/dist/{build.mjs → build.js} +14 -10
  5. package/dist/build.js.map +1 -0
  6. package/dist/components/Body.vue +10 -0
  7. package/dist/components/Button.vue +70 -11
  8. package/dist/components/Column.vue +10 -0
  9. package/dist/components/Container.vue +29 -1
  10. package/dist/components/Html.vue +10 -0
  11. package/dist/components/Layout.vue +27 -12
  12. package/dist/components/MarkdownLayout.vue +39 -0
  13. package/dist/components/Overlap.vue +10 -0
  14. package/dist/components/Preheader.vue +3 -8
  15. package/dist/components/Row.vue +13 -2
  16. package/dist/components/Section.vue +10 -0
  17. package/dist/components/Tailwind.vue +43 -0
  18. package/dist/components/{utils.d.mts → utils.d.ts} +1 -1
  19. package/dist/components/utils.d.ts.map +1 -0
  20. package/dist/components/{utils.mjs → utils.js} +1 -1
  21. package/dist/components/utils.js.map +1 -0
  22. package/dist/composables/{defineConfig.d.mts → defineConfig.d.ts} +2 -2
  23. package/dist/composables/defineConfig.d.ts.map +1 -0
  24. package/dist/composables/{defineConfig.mjs → defineConfig.js} +3 -3
  25. package/dist/composables/defineConfig.js.map +1 -0
  26. package/dist/composables/{renderContext.d.mts → renderContext.d.ts} +11 -5
  27. package/dist/composables/renderContext.d.ts.map +1 -0
  28. package/dist/composables/{renderContext.mjs → renderContext.js} +1 -1
  29. package/dist/composables/renderContext.js.map +1 -0
  30. package/dist/composables/useBaseUrl.d.ts +19 -0
  31. package/dist/composables/useBaseUrl.d.ts.map +1 -0
  32. package/dist/composables/useBaseUrl.js +27 -0
  33. package/dist/composables/useBaseUrl.js.map +1 -0
  34. package/dist/composables/{useConfig.d.mts → useConfig.d.ts} +2 -2
  35. package/dist/composables/useConfig.d.ts.map +1 -0
  36. package/dist/composables/{useConfig.mjs → useConfig.js} +1 -1
  37. package/dist/composables/useConfig.js.map +1 -0
  38. package/dist/composables/{useDoctype.d.mts → useDoctype.d.ts} +1 -1
  39. package/dist/composables/useDoctype.d.ts.map +1 -0
  40. package/dist/composables/{useDoctype.mjs → useDoctype.js} +2 -2
  41. package/dist/composables/useDoctype.js.map +1 -0
  42. package/dist/composables/{useEvent.d.mts → useEvent.d.ts} +2 -2
  43. package/dist/composables/useEvent.d.ts.map +1 -0
  44. package/dist/composables/{useEvent.mjs → useEvent.js} +2 -2
  45. package/dist/composables/useEvent.js.map +1 -0
  46. package/dist/composables/{useFont.d.mts → useFont.d.ts} +1 -1
  47. package/dist/composables/useFont.d.ts.map +1 -0
  48. package/dist/composables/{useFont.mjs → useFont.js} +2 -2
  49. package/dist/composables/useFont.js.map +1 -0
  50. package/dist/composables/{useOutlookFallback.d.mts → useOutlookFallback.d.ts} +1 -1
  51. package/dist/composables/useOutlookFallback.d.ts.map +1 -0
  52. package/dist/composables/{useOutlookFallback.mjs → useOutlookFallback.js} +1 -1
  53. package/dist/composables/useOutlookFallback.js.map +1 -0
  54. package/dist/composables/{usePlaintext.d.mts → usePlaintext.d.ts} +1 -1
  55. package/dist/composables/usePlaintext.d.ts.map +1 -0
  56. package/dist/composables/{usePlaintext.mjs → usePlaintext.js} +2 -2
  57. package/dist/composables/usePlaintext.js.map +1 -0
  58. package/dist/composables/{usePreheader.d.mts → usePreheader.d.ts} +1 -1
  59. package/dist/composables/usePreheader.d.ts.map +1 -0
  60. package/dist/composables/{usePreheader.mjs → usePreheader.js} +2 -2
  61. package/dist/composables/usePreheader.js.map +1 -0
  62. package/dist/composables/useTransformers.d.ts +34 -0
  63. package/dist/composables/useTransformers.d.ts.map +1 -0
  64. package/dist/composables/useTransformers.js +49 -0
  65. package/dist/composables/useTransformers.js.map +1 -0
  66. package/dist/composables/useUrlQuery.d.ts +19 -0
  67. package/dist/composables/useUrlQuery.d.ts.map +1 -0
  68. package/dist/composables/useUrlQuery.js +27 -0
  69. package/dist/composables/useUrlQuery.js.map +1 -0
  70. package/dist/config/{defaults.d.mts → defaults.d.ts} +2 -2
  71. package/dist/config/defaults.d.ts.map +1 -0
  72. package/dist/config/{defaults.mjs → defaults.js} +8 -2
  73. package/dist/config/defaults.js.map +1 -0
  74. package/dist/config/{index.d.mts → index.d.ts} +4 -4
  75. package/dist/config/index.d.ts.map +1 -0
  76. package/dist/config/{index.mjs → index.js} +3 -3
  77. package/dist/config/index.js.map +1 -0
  78. package/dist/events/{index.d.mts → index.d.ts} +10 -4
  79. package/dist/events/index.d.ts.map +1 -0
  80. package/dist/events/{index.mjs → index.js} +20 -4
  81. package/dist/events/index.js.map +1 -0
  82. package/dist/index.d.ts +37 -0
  83. package/dist/index.js +37 -0
  84. package/dist/{plaintext.d.mts → plaintext.d.ts} +1 -1
  85. package/dist/plaintext.d.ts.map +1 -0
  86. package/dist/{plaintext.mjs → plaintext.js} +1 -1
  87. package/dist/plaintext.js.map +1 -0
  88. package/dist/{plugin.d.mts → plugin.d.ts} +2 -2
  89. package/dist/plugin.d.ts.map +1 -0
  90. package/dist/{plugin.mjs → plugin.js} +5 -5
  91. package/dist/plugin.js.map +1 -0
  92. package/dist/plugins/postcss/{mergeMediaQueries.d.mts → mergeMediaQueries.d.ts} +2 -2
  93. package/dist/plugins/postcss/mergeMediaQueries.d.ts.map +1 -0
  94. package/dist/plugins/postcss/{mergeMediaQueries.mjs → mergeMediaQueries.js} +1 -1
  95. package/dist/plugins/postcss/mergeMediaQueries.js.map +1 -0
  96. package/dist/plugins/postcss/{pruneVars.d.mts → pruneVars.d.ts} +1 -1
  97. package/dist/plugins/postcss/pruneVars.d.ts.map +1 -0
  98. package/dist/plugins/postcss/{pruneVars.mjs → pruneVars.js} +1 -1
  99. package/dist/plugins/postcss/pruneVars.js.map +1 -0
  100. package/dist/plugins/postcss/{quoteFontFamilies.d.mts → quoteFontFamilies.d.ts} +1 -1
  101. package/dist/plugins/postcss/quoteFontFamilies.d.ts.map +1 -0
  102. package/dist/plugins/postcss/{quoteFontFamilies.mjs → quoteFontFamilies.js} +1 -1
  103. package/dist/plugins/postcss/quoteFontFamilies.js.map +1 -0
  104. package/dist/plugins/postcss/{removeDeclarations.d.mts → removeDeclarations.d.ts} +1 -1
  105. package/dist/plugins/postcss/removeDeclarations.d.ts.map +1 -0
  106. package/dist/plugins/postcss/{removeDeclarations.mjs → removeDeclarations.js} +1 -1
  107. package/dist/plugins/postcss/removeDeclarations.js.map +1 -0
  108. package/dist/plugins/postcss/resolveMaizzleImports.d.ts +16 -0
  109. package/dist/plugins/postcss/resolveMaizzleImports.d.ts.map +1 -0
  110. package/dist/plugins/postcss/resolveMaizzleImports.js +40 -0
  111. package/dist/plugins/postcss/resolveMaizzleImports.js.map +1 -0
  112. package/dist/plugins/postcss/{resolveProps.d.mts → resolveProps.d.ts} +1 -1
  113. package/dist/plugins/postcss/resolveProps.d.ts.map +1 -0
  114. package/dist/plugins/postcss/{resolveProps.mjs → resolveProps.js} +1 -1
  115. package/dist/plugins/postcss/resolveProps.js.map +1 -0
  116. package/dist/plugins/postcss/{tailwindCleanup.d.mts → tailwindCleanup.d.ts} +2 -2
  117. package/dist/plugins/postcss/tailwindCleanup.d.ts.map +1 -0
  118. package/dist/plugins/postcss/{tailwindCleanup.mjs → tailwindCleanup.js} +1 -1
  119. package/dist/plugins/postcss/tailwindCleanup.js.map +1 -0
  120. package/dist/{prepare.d.mts → prepare.d.ts} +1 -1
  121. package/dist/prepare.d.ts.map +1 -0
  122. package/dist/{prepare.mjs → prepare.js} +4 -4
  123. package/dist/prepare.js.map +1 -0
  124. package/dist/render/{createRenderer.d.mts → createRenderer.d.ts} +4 -3
  125. package/dist/render/createRenderer.d.ts.map +1 -0
  126. package/dist/render/{createRenderer.mjs → createRenderer.js} +21 -12
  127. package/dist/render/createRenderer.js.map +1 -0
  128. package/dist/render/index.d.ts +18 -0
  129. package/dist/render/index.d.ts.map +1 -0
  130. package/dist/render/index.js +45 -0
  131. package/dist/render/index.js.map +1 -0
  132. package/dist/render/{injectFonts.d.mts → injectFonts.d.ts} +2 -2
  133. package/dist/render/injectFonts.d.ts.map +1 -0
  134. package/dist/render/{injectFonts.mjs → injectFonts.js} +2 -2
  135. package/dist/render/injectFonts.js.map +1 -0
  136. package/dist/render/plugins/{codeBlockExtract.d.mts → codeBlockExtract.d.ts} +1 -1
  137. package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -0
  138. package/dist/render/plugins/{codeBlockExtract.mjs → codeBlockExtract.js} +1 -1
  139. package/dist/render/plugins/codeBlockExtract.js.map +1 -0
  140. package/dist/render/plugins/{markdownExtract.d.mts → markdownExtract.d.ts} +1 -1
  141. package/dist/render/plugins/markdownExtract.d.ts.map +1 -0
  142. package/dist/render/plugins/{markdownExtract.mjs → markdownExtract.js} +1 -1
  143. package/dist/render/plugins/markdownExtract.js.map +1 -0
  144. package/dist/render/plugins/{rawExtract.d.mts → rawExtract.d.ts} +1 -1
  145. package/dist/render/plugins/rawExtract.d.ts.map +1 -0
  146. package/dist/render/plugins/{rawExtract.mjs → rawExtract.js} +1 -1
  147. package/dist/render/plugins/rawExtract.js.map +1 -0
  148. package/dist/render/plugins/{rowSourceLocation.d.mts → rowSourceLocation.d.ts} +1 -1
  149. package/dist/render/plugins/rowSourceLocation.d.ts.map +1 -0
  150. package/dist/render/plugins/{rowSourceLocation.mjs → rowSourceLocation.js} +1 -1
  151. package/dist/render/plugins/rowSourceLocation.js.map +1 -0
  152. package/dist/{serve.d.mts → serve.d.ts} +2 -2
  153. package/dist/serve.d.ts.map +1 -0
  154. package/dist/{serve.mjs → serve.js} +23 -14
  155. package/dist/serve.js.map +1 -0
  156. package/dist/server/{compatibility.d.mts → compatibility.d.ts} +2 -2
  157. package/dist/server/compatibility.d.ts.map +1 -0
  158. package/dist/server/{compatibility.mjs → compatibility.js} +4 -4
  159. package/dist/server/compatibility.js.map +1 -0
  160. package/dist/server/{email.d.mts → email.d.ts} +2 -2
  161. package/dist/server/email.d.ts.map +1 -0
  162. package/dist/server/{email.mjs → email.js} +1 -1
  163. package/dist/server/email.js.map +1 -0
  164. package/dist/server/{linter.d.mts → linter.d.ts} +2 -2
  165. package/dist/server/linter.d.ts.map +1 -0
  166. package/dist/server/{linter.mjs → linter.js} +2 -2
  167. package/dist/server/linter.js.map +1 -0
  168. package/dist/server/{sfc-utils.d.mts → sfc-utils.d.ts} +1 -1
  169. package/dist/server/sfc-utils.d.ts.map +1 -0
  170. package/dist/server/{sfc-utils.mjs → sfc-utils.js} +1 -1
  171. package/dist/server/sfc-utils.js.map +1 -0
  172. package/dist/server/ui/App.vue +18 -0
  173. package/dist/server/ui/components/ui/command/Command.vue +4 -1
  174. package/dist/server/ui/pages/Preview.vue +78 -19
  175. package/dist/transformers/{addAttributes.d.mts → addAttributes.d.ts} +2 -2
  176. package/dist/transformers/addAttributes.d.ts.map +1 -0
  177. package/dist/transformers/{addAttributes.mjs → addAttributes.js} +3 -3
  178. package/dist/transformers/addAttributes.js.map +1 -0
  179. package/dist/transformers/{attributeToStyle.d.mts → attributeToStyle.d.ts} +2 -2
  180. package/dist/transformers/attributeToStyle.d.ts.map +1 -0
  181. package/dist/transformers/{attributeToStyle.mjs → attributeToStyle.js} +3 -3
  182. package/dist/transformers/attributeToStyle.js.map +1 -0
  183. package/dist/transformers/{base.d.mts → base.d.ts} +2 -2
  184. package/dist/transformers/base.d.ts.map +1 -0
  185. package/dist/transformers/{base.mjs → base.js} +6 -6
  186. package/dist/transformers/base.js.map +1 -0
  187. package/dist/transformers/{columnWidth.d.mts → columnWidth.d.ts} +1 -1
  188. package/dist/transformers/columnWidth.d.ts.map +1 -0
  189. package/dist/transformers/{columnWidth.mjs → columnWidth.js} +3 -3
  190. package/dist/transformers/columnWidth.js.map +1 -0
  191. package/dist/transformers/{entities.d.mts → entities.d.ts} +2 -2
  192. package/dist/transformers/entities.d.ts.map +1 -0
  193. package/dist/transformers/{entities.mjs → entities.js} +3 -3
  194. package/dist/transformers/entities.js.map +1 -0
  195. package/dist/transformers/filters/{defaults.d.mts → defaults.d.ts} +1 -1
  196. package/dist/transformers/filters/defaults.d.ts.map +1 -0
  197. package/dist/transformers/filters/{defaults.mjs → defaults.js} +1 -1
  198. package/dist/transformers/filters/defaults.js.map +1 -0
  199. package/dist/transformers/filters/{index.d.mts → index.d.ts} +2 -2
  200. package/dist/transformers/filters/index.d.ts.map +1 -0
  201. package/dist/transformers/filters/{index.mjs → index.js} +5 -5
  202. package/dist/transformers/filters/index.js.map +1 -0
  203. package/dist/transformers/{format.d.mts → format.d.ts} +2 -2
  204. package/dist/transformers/format.d.ts.map +1 -0
  205. package/dist/transformers/{format.mjs → format.js} +1 -1
  206. package/dist/transformers/format.js.map +1 -0
  207. package/dist/transformers/{index.d.mts → index.d.ts} +4 -3
  208. package/dist/transformers/index.d.ts.map +1 -0
  209. package/dist/transformers/index.js +113 -0
  210. package/dist/transformers/index.js.map +1 -0
  211. package/dist/transformers/{inlineCSS.d.mts → inlineCSS.d.ts} +2 -2
  212. package/dist/transformers/inlineCSS.d.ts.map +1 -0
  213. package/dist/transformers/{inlineCSS.mjs → inlineCSS.js} +12 -6
  214. package/dist/transformers/inlineCSS.js.map +1 -0
  215. package/dist/transformers/{inlineLink.d.mts → inlineLink.d.ts} +1 -1
  216. package/dist/transformers/inlineLink.d.ts.map +1 -0
  217. package/dist/transformers/{inlineLink.mjs → inlineLink.js} +3 -3
  218. package/dist/transformers/inlineLink.js.map +1 -0
  219. package/dist/transformers/{minify.d.mts → minify.d.ts} +2 -2
  220. package/dist/transformers/minify.d.ts.map +1 -0
  221. package/dist/transformers/{minify.mjs → minify.js} +1 -1
  222. package/dist/transformers/minify.js.map +1 -0
  223. package/dist/transformers/msoPlaceholders.d.ts +28 -0
  224. package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
  225. package/dist/transformers/msoPlaceholders.js +89 -0
  226. package/dist/transformers/msoPlaceholders.js.map +1 -0
  227. package/dist/transformers/{purgeCSS.d.mts → purgeCSS.d.ts} +2 -2
  228. package/dist/transformers/purgeCSS.d.ts.map +1 -0
  229. package/dist/transformers/{purgeCSS.mjs → purgeCSS.js} +49 -7
  230. package/dist/transformers/purgeCSS.js.map +1 -0
  231. package/dist/transformers/{removeAttributes.d.mts → removeAttributes.d.ts} +2 -2
  232. package/dist/transformers/removeAttributes.d.ts.map +1 -0
  233. package/dist/transformers/{removeAttributes.mjs → removeAttributes.js} +3 -3
  234. package/dist/transformers/removeAttributes.js.map +1 -0
  235. package/dist/transformers/{replaceStrings.d.mts → replaceStrings.d.ts} +2 -2
  236. package/dist/transformers/replaceStrings.d.ts.map +1 -0
  237. package/dist/transformers/{replaceStrings.mjs → replaceStrings.js} +1 -1
  238. package/dist/transformers/replaceStrings.js.map +1 -0
  239. package/dist/transformers/{safeClassNames.d.mts → safeClassNames.d.ts} +2 -2
  240. package/dist/transformers/safeClassNames.d.ts.map +1 -0
  241. package/dist/transformers/{safeClassNames.mjs → safeClassNames.js} +3 -3
  242. package/dist/transformers/safeClassNames.js.map +1 -0
  243. package/dist/transformers/{shorthandCSS.d.mts → shorthandCSS.d.ts} +2 -2
  244. package/dist/transformers/shorthandCSS.d.ts.map +1 -0
  245. package/dist/transformers/{shorthandCSS.mjs → shorthandCSS.js} +3 -3
  246. package/dist/transformers/shorthandCSS.js.map +1 -0
  247. package/dist/transformers/{sixHex.d.mts → sixHex.d.ts} +2 -2
  248. package/dist/transformers/sixHex.d.ts.map +1 -0
  249. package/dist/transformers/{sixHex.mjs → sixHex.js} +3 -3
  250. package/dist/transformers/sixHex.js.map +1 -0
  251. package/dist/transformers/tailwindComponent.d.ts +16 -0
  252. package/dist/transformers/tailwindComponent.d.ts.map +1 -0
  253. package/dist/transformers/tailwindComponent.js +93 -0
  254. package/dist/transformers/tailwindComponent.js.map +1 -0
  255. package/dist/transformers/{tailwindcss.d.mts → tailwindcss.d.ts} +2 -2
  256. package/dist/transformers/tailwindcss.d.ts.map +1 -0
  257. package/dist/transformers/{tailwindcss.mjs → tailwindcss.js} +6 -58
  258. package/dist/transformers/tailwindcss.js.map +1 -0
  259. package/dist/transformers/{urlQuery.d.mts → urlQuery.d.ts} +2 -2
  260. package/dist/transformers/urlQuery.d.ts.map +1 -0
  261. package/dist/transformers/{urlQuery.mjs → urlQuery.js} +2 -2
  262. package/dist/transformers/urlQuery.js.map +1 -0
  263. package/dist/types/{config.d.mts → config.d.ts} +45 -4
  264. package/dist/types/config.d.ts.map +1 -0
  265. package/dist/types/{index.d.mts → index.d.ts} +2 -2
  266. package/dist/utils/ast/index.d.ts +4 -0
  267. package/dist/utils/ast/index.js +5 -0
  268. package/dist/utils/ast/{parser.d.mts → parser.d.ts} +1 -1
  269. package/dist/utils/ast/parser.d.ts.map +1 -0
  270. package/dist/utils/ast/{parser.mjs → parser.js} +1 -1
  271. package/dist/utils/ast/parser.js.map +1 -0
  272. package/dist/utils/ast/{serializer.d.mts → serializer.d.ts} +1 -1
  273. package/dist/utils/ast/serializer.d.ts.map +1 -0
  274. package/dist/utils/ast/{serializer.mjs → serializer.js} +2 -2
  275. package/dist/utils/ast/serializer.js.map +1 -0
  276. package/dist/utils/ast/{walker.d.mts → walker.d.ts} +1 -1
  277. package/dist/utils/ast/walker.d.ts.map +1 -0
  278. package/dist/utils/ast/{walker.mjs → walker.js} +1 -1
  279. package/dist/utils/ast/walker.js.map +1 -0
  280. package/dist/utils/compileTailwindCss.d.ts +16 -0
  281. package/dist/utils/compileTailwindCss.d.ts.map +1 -0
  282. package/dist/utils/compileTailwindCss.js +55 -0
  283. package/dist/utils/compileTailwindCss.js.map +1 -0
  284. package/dist/utils/{decodeStyleEntities.d.mts → decodeStyleEntities.d.ts} +1 -1
  285. package/dist/utils/decodeStyleEntities.d.ts.map +1 -0
  286. package/dist/utils/{decodeStyleEntities.mjs → decodeStyleEntities.js} +1 -1
  287. package/dist/utils/decodeStyleEntities.js.map +1 -0
  288. package/dist/utils/{detect.d.mts → detect.d.ts} +1 -1
  289. package/dist/utils/detect.d.ts.map +1 -0
  290. package/dist/utils/{detect.mjs → detect.js} +1 -1
  291. package/dist/utils/detect.js.map +1 -0
  292. package/dist/utils/{url.d.mts → url.d.ts} +1 -1
  293. package/dist/utils/url.d.ts.map +1 -0
  294. package/dist/utils/{url.mjs → url.js} +1 -1
  295. package/dist/utils/url.js.map +1 -0
  296. package/node_modules/@clack/core/CHANGELOG.md +8 -0
  297. package/node_modules/@clack/core/dist/index.d.mts +18 -4
  298. package/node_modules/@clack/core/dist/index.mjs +16 -10
  299. package/node_modules/@clack/core/dist/index.mjs.map +1 -1
  300. package/node_modules/@clack/core/package.json +5 -2
  301. package/node_modules/@clack/prompts/CHANGELOG.md +15 -0
  302. package/node_modules/@clack/prompts/README.md +107 -2
  303. package/node_modules/@clack/prompts/dist/index.d.mts +16 -11
  304. package/node_modules/@clack/prompts/dist/index.mjs +114 -107
  305. package/node_modules/@clack/prompts/dist/index.mjs.map +1 -1
  306. package/node_modules/@clack/prompts/package.json +7 -4
  307. package/node_modules/fast-string-truncated-width/dist/index.js +36 -96
  308. package/node_modules/fast-string-truncated-width/dist/types.d.ts +0 -3
  309. package/node_modules/fast-string-truncated-width/dist/utils.d.ts +3 -3
  310. package/node_modules/fast-string-truncated-width/dist/utils.js +14 -9
  311. package/node_modules/fast-string-truncated-width/package.json +1 -1
  312. package/node_modules/fast-string-truncated-width/readme.md +2 -3
  313. package/node_modules/fast-string-width/package.json +2 -2
  314. package/node_modules/fast-string-width/readme.md +0 -3
  315. package/node_modules/fast-wrap-ansi/lib/main.js +4 -1
  316. package/node_modules/fast-wrap-ansi/lib/main.js.map +1 -1
  317. package/node_modules/fast-wrap-ansi/package.json +2 -2
  318. package/node_modules/tinyexec/README.md +1 -1
  319. package/node_modules/tinyexec/dist/main.d.mts +6 -6
  320. package/node_modules/tinyexec/dist/main.mjs +126 -134
  321. package/node_modules/tinyexec/package.json +9 -9
  322. package/package.json +15 -8
  323. package/dist/build.d.mts +0 -19
  324. package/dist/build.d.mts.map +0 -1
  325. package/dist/build.mjs.map +0 -1
  326. package/dist/components/utils.d.mts.map +0 -1
  327. package/dist/components/utils.mjs.map +0 -1
  328. package/dist/composables/defineConfig.d.mts.map +0 -1
  329. package/dist/composables/defineConfig.mjs.map +0 -1
  330. package/dist/composables/renderContext.d.mts.map +0 -1
  331. package/dist/composables/renderContext.mjs.map +0 -1
  332. package/dist/composables/useConfig.d.mts.map +0 -1
  333. package/dist/composables/useConfig.mjs.map +0 -1
  334. package/dist/composables/useDoctype.d.mts.map +0 -1
  335. package/dist/composables/useDoctype.mjs.map +0 -1
  336. package/dist/composables/useEvent.d.mts.map +0 -1
  337. package/dist/composables/useEvent.mjs.map +0 -1
  338. package/dist/composables/useFont.d.mts.map +0 -1
  339. package/dist/composables/useFont.mjs.map +0 -1
  340. package/dist/composables/useOutlookFallback.d.mts.map +0 -1
  341. package/dist/composables/useOutlookFallback.mjs.map +0 -1
  342. package/dist/composables/usePlaintext.d.mts.map +0 -1
  343. package/dist/composables/usePlaintext.mjs.map +0 -1
  344. package/dist/composables/usePreheader.d.mts.map +0 -1
  345. package/dist/composables/usePreheader.mjs.map +0 -1
  346. package/dist/config/defaults.d.mts.map +0 -1
  347. package/dist/config/defaults.mjs.map +0 -1
  348. package/dist/config/index.d.mts.map +0 -1
  349. package/dist/config/index.mjs.map +0 -1
  350. package/dist/events/index.d.mts.map +0 -1
  351. package/dist/events/index.mjs.map +0 -1
  352. package/dist/index.d.mts +0 -34
  353. package/dist/index.mjs +0 -34
  354. package/dist/plaintext.d.mts.map +0 -1
  355. package/dist/plaintext.mjs.map +0 -1
  356. package/dist/plugin.d.mts.map +0 -1
  357. package/dist/plugin.mjs.map +0 -1
  358. package/dist/plugins/postcss/mergeMediaQueries.d.mts.map +0 -1
  359. package/dist/plugins/postcss/mergeMediaQueries.mjs.map +0 -1
  360. package/dist/plugins/postcss/pruneVars.d.mts.map +0 -1
  361. package/dist/plugins/postcss/pruneVars.mjs.map +0 -1
  362. package/dist/plugins/postcss/quoteFontFamilies.d.mts.map +0 -1
  363. package/dist/plugins/postcss/quoteFontFamilies.mjs.map +0 -1
  364. package/dist/plugins/postcss/removeDeclarations.d.mts.map +0 -1
  365. package/dist/plugins/postcss/removeDeclarations.mjs.map +0 -1
  366. package/dist/plugins/postcss/resolveProps.d.mts.map +0 -1
  367. package/dist/plugins/postcss/resolveProps.mjs.map +0 -1
  368. package/dist/plugins/postcss/tailwindCleanup.d.mts.map +0 -1
  369. package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
  370. package/dist/prepare.d.mts.map +0 -1
  371. package/dist/prepare.mjs.map +0 -1
  372. package/dist/render/createRenderer.d.mts.map +0 -1
  373. package/dist/render/createRenderer.mjs.map +0 -1
  374. package/dist/render/index.d.mts +0 -26
  375. package/dist/render/index.d.mts.map +0 -1
  376. package/dist/render/index.mjs +0 -46
  377. package/dist/render/index.mjs.map +0 -1
  378. package/dist/render/injectFonts.d.mts.map +0 -1
  379. package/dist/render/injectFonts.mjs.map +0 -1
  380. package/dist/render/plugins/codeBlockExtract.d.mts.map +0 -1
  381. package/dist/render/plugins/codeBlockExtract.mjs.map +0 -1
  382. package/dist/render/plugins/markdownExtract.d.mts.map +0 -1
  383. package/dist/render/plugins/markdownExtract.mjs.map +0 -1
  384. package/dist/render/plugins/rawExtract.d.mts.map +0 -1
  385. package/dist/render/plugins/rawExtract.mjs.map +0 -1
  386. package/dist/render/plugins/rowSourceLocation.d.mts.map +0 -1
  387. package/dist/render/plugins/rowSourceLocation.mjs.map +0 -1
  388. package/dist/serve.d.mts.map +0 -1
  389. package/dist/serve.mjs.map +0 -1
  390. package/dist/server/compatibility.d.mts.map +0 -1
  391. package/dist/server/compatibility.mjs.map +0 -1
  392. package/dist/server/email.d.mts.map +0 -1
  393. package/dist/server/email.mjs.map +0 -1
  394. package/dist/server/linter.d.mts.map +0 -1
  395. package/dist/server/linter.mjs.map +0 -1
  396. package/dist/server/sfc-utils.d.mts.map +0 -1
  397. package/dist/server/sfc-utils.mjs.map +0 -1
  398. package/dist/transformers/addAttributes.d.mts.map +0 -1
  399. package/dist/transformers/addAttributes.mjs.map +0 -1
  400. package/dist/transformers/attributeToStyle.d.mts.map +0 -1
  401. package/dist/transformers/attributeToStyle.mjs.map +0 -1
  402. package/dist/transformers/base.d.mts.map +0 -1
  403. package/dist/transformers/base.mjs.map +0 -1
  404. package/dist/transformers/columnWidth.d.mts.map +0 -1
  405. package/dist/transformers/columnWidth.mjs.map +0 -1
  406. package/dist/transformers/entities.d.mts.map +0 -1
  407. package/dist/transformers/entities.mjs.map +0 -1
  408. package/dist/transformers/filters/defaults.d.mts.map +0 -1
  409. package/dist/transformers/filters/defaults.mjs.map +0 -1
  410. package/dist/transformers/filters/index.d.mts.map +0 -1
  411. package/dist/transformers/filters/index.mjs.map +0 -1
  412. package/dist/transformers/format.d.mts.map +0 -1
  413. package/dist/transformers/format.mjs.map +0 -1
  414. package/dist/transformers/index.d.mts.map +0 -1
  415. package/dist/transformers/index.mjs +0 -85
  416. package/dist/transformers/index.mjs.map +0 -1
  417. package/dist/transformers/inlineCSS.d.mts.map +0 -1
  418. package/dist/transformers/inlineCSS.mjs.map +0 -1
  419. package/dist/transformers/inlineLink.d.mts.map +0 -1
  420. package/dist/transformers/inlineLink.mjs.map +0 -1
  421. package/dist/transformers/minify.d.mts.map +0 -1
  422. package/dist/transformers/minify.mjs.map +0 -1
  423. package/dist/transformers/msoWidthFromClass.d.mts +0 -19
  424. package/dist/transformers/msoWidthFromClass.d.mts.map +0 -1
  425. package/dist/transformers/msoWidthFromClass.mjs +0 -61
  426. package/dist/transformers/msoWidthFromClass.mjs.map +0 -1
  427. package/dist/transformers/purgeCSS.d.mts.map +0 -1
  428. package/dist/transformers/purgeCSS.mjs.map +0 -1
  429. package/dist/transformers/removeAttributes.d.mts.map +0 -1
  430. package/dist/transformers/removeAttributes.mjs.map +0 -1
  431. package/dist/transformers/replaceStrings.d.mts.map +0 -1
  432. package/dist/transformers/replaceStrings.mjs.map +0 -1
  433. package/dist/transformers/safeClassNames.d.mts.map +0 -1
  434. package/dist/transformers/safeClassNames.mjs.map +0 -1
  435. package/dist/transformers/shorthandCSS.d.mts.map +0 -1
  436. package/dist/transformers/shorthandCSS.mjs.map +0 -1
  437. package/dist/transformers/sixHex.d.mts.map +0 -1
  438. package/dist/transformers/sixHex.mjs.map +0 -1
  439. package/dist/transformers/tailwindcss.d.mts.map +0 -1
  440. package/dist/transformers/tailwindcss.mjs.map +0 -1
  441. package/dist/transformers/urlQuery.d.mts.map +0 -1
  442. package/dist/transformers/urlQuery.mjs.map +0 -1
  443. package/dist/types/config.d.mts.map +0 -1
  444. package/dist/utils/ast/index.d.mts +0 -4
  445. package/dist/utils/ast/index.mjs +0 -5
  446. package/dist/utils/ast/parser.d.mts.map +0 -1
  447. package/dist/utils/ast/parser.mjs.map +0 -1
  448. package/dist/utils/ast/serializer.d.mts.map +0 -1
  449. package/dist/utils/ast/serializer.mjs.map +0 -1
  450. package/dist/utils/ast/walker.d.mts.map +0 -1
  451. package/dist/utils/ast/walker.mjs.map +0 -1
  452. package/dist/utils/decodeStyleEntities.d.mts.map +0 -1
  453. package/dist/utils/decodeStyleEntities.mjs.map +0 -1
  454. package/dist/utils/detect.d.mts.map +0 -1
  455. package/dist/utils/detect.mjs.map +0 -1
  456. package/dist/utils/url.d.mts.map +0 -1
  457. package/dist/utils/url.mjs.map +0 -1
  458. /package/dist/components/{Divider.vue → Hr.vue} +0 -0
  459. /package/dist/types/{config.mjs → config.js} +0 -0
  460. /package/dist/types/{index.mjs → index.js} +0 -0
@@ -1,6 +1,6 @@
1
- import { MaizzleConfig } from "../types/config.mjs";
2
- import { EventMap, EventName } from "../events/index.mjs";
3
- import { UsePlaintextOptions } from "./usePlaintext.mjs";
1
+ import { MaizzleConfig } from "../types/config.js";
2
+ import { EventMap, EventName } from "../events/index.js";
3
+ import { UsePlaintextOptions } from "./usePlaintext.js";
4
4
  import { InjectionKey } from "vue";
5
5
 
6
6
  //#region src/composables/renderContext.d.ts
@@ -10,6 +10,11 @@ interface FontRegistration {
10
10
  declaration: string;
11
11
  url: string;
12
12
  }
13
+ interface TailwindBlock {
14
+ id: string;
15
+ /** Optional raw CSS from the component's `#config` slot. */
16
+ css?: string;
17
+ }
13
18
  interface RenderContext {
14
19
  doctype?: string;
15
20
  preheader?: {
@@ -24,8 +29,9 @@ interface RenderContext {
24
29
  }>;
25
30
  plaintext?: UsePlaintextOptions;
26
31
  fonts?: FontRegistration[];
32
+ tailwindBlocks?: TailwindBlock[];
27
33
  }
28
34
  declare const RenderContextKey: InjectionKey<RenderContext>;
29
35
  //#endregion
30
- export { FontRegistration, RenderContext, RenderContextKey };
31
- //# sourceMappingURL=renderContext.d.mts.map
36
+ export { FontRegistration, RenderContext, RenderContextKey, TailwindBlock };
37
+ //# sourceMappingURL=renderContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderContext.d.ts","names":[],"sources":["../../src/composables/renderContext.ts"],"mappings":";;;;;;UAKiB,gBAAA;EACf,MAAA;EACA,IAAA;EACA,WAAA;EACA,GAAA;AAAA;AAAA,UAGe,aAAA;EACf,EAAA;EANA;EAQA,GAAA;AAAA;AAAA,UAGe,aAAA;EACf,OAAA;EACA,SAAA;IAAc,IAAA;IAAc,WAAA;IAAqB,QAAA;EAAA;EACjD,SAAA,GAAY,aAAA;EACZ,gBAAA,EAAkB,KAAA;IAAQ,IAAA,EAAM,SAAA;IAAW,OAAA,EAAS,QAAA,CAAS,SAAA;EAAA;EAC7D,SAAA,GAAY,mBAAA;EACZ,KAAA,GAAQ,gBAAA;EACR,cAAA,GAAiB,aAAA;AAAA;AAAA,cAGN,gBAAA,EAAkB,YAAA,CAAa,aAAA"}
@@ -3,4 +3,4 @@ const RenderContextKey = Symbol("RenderContext");
3
3
 
4
4
  //#endregion
5
5
  export { RenderContextKey };
6
- //# sourceMappingURL=renderContext.mjs.map
6
+ //# sourceMappingURL=renderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderContext.js","names":[],"sources":["../../src/composables/renderContext.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { MaizzleConfig } from '../types/index.ts'\nimport type { EventName, EventMap } from '../events/index.ts'\nimport type { UsePlaintextOptions } from './usePlaintext.ts'\n\nexport interface FontRegistration {\n family: string\n slug: string\n declaration: string\n url: string\n}\n\nexport interface TailwindBlock {\n id: string\n /** Optional raw CSS from the component's `#config` slot. */\n css?: string\n}\n\nexport interface RenderContext {\n doctype?: string\n preheader?: { text: string; fillerCount: number; shyCount: number }\n sfcConfig?: MaizzleConfig\n sfcEventHandlers: Array<{ name: EventName; handler: EventMap[EventName] }>\n plaintext?: UsePlaintextOptions\n fonts?: FontRegistration[]\n tailwindBlocks?: TailwindBlock[]\n}\n\nexport const RenderContextKey: InjectionKey<RenderContext> = Symbol('RenderContext')\n"],"mappings":";AA4BA,MAAa,mBAAgD,OAAO,gBAAgB"}
@@ -0,0 +1,19 @@
1
+ import { UrlConfig } from "../types/config.js";
2
+ //#region src/composables/useBaseUrl.d.ts
3
+ /**
4
+ * Set the base URL for the current email template — same as
5
+ * `config.url.base`, scoped to one SFC.
6
+ *
7
+ * Pass a string to prepend to all default tags/attributes, or an object
8
+ * for fine-grained control (which tags/attributes, style tags, etc.).
9
+ *
10
+ * Usage in SFC <script setup>:
11
+ * ```ts
12
+ * useBaseUrl('https://cdn.example.com/emails/')
13
+ * useBaseUrl({ url: 'https://cdn.example.com/', styleTag: true })
14
+ * ```
15
+ */
16
+ declare function useBaseUrl(value: UrlConfig['base']): void;
17
+ //#endregion
18
+ export { useBaseUrl };
19
+ //# sourceMappingURL=useBaseUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBaseUrl.d.ts","names":[],"sources":["../../src/composables/useBaseUrl.ts"],"mappings":";;;;;AAkBA;;;;;;;;;;iBAAgB,UAAA,CAAW,KAAA,EAAO,SAAA"}
@@ -0,0 +1,27 @@
1
+ import { RenderContextKey } from "./renderContext.js";
2
+ import { defu } from "defu";
3
+ import { inject } from "vue";
4
+
5
+ //#region src/composables/useBaseUrl.ts
6
+ /**
7
+ * Set the base URL for the current email template — same as
8
+ * `config.url.base`, scoped to one SFC.
9
+ *
10
+ * Pass a string to prepend to all default tags/attributes, or an object
11
+ * for fine-grained control (which tags/attributes, style tags, etc.).
12
+ *
13
+ * Usage in SFC <script setup>:
14
+ * ```ts
15
+ * useBaseUrl('https://cdn.example.com/emails/')
16
+ * useBaseUrl({ url: 'https://cdn.example.com/', styleTag: true })
17
+ * ```
18
+ */
19
+ function useBaseUrl(value) {
20
+ const ctx = inject(RenderContextKey);
21
+ if (!ctx) return;
22
+ ctx.sfcConfig = defu({ url: { base: value } }, ctx.sfcConfig ?? {});
23
+ }
24
+
25
+ //#endregion
26
+ export { useBaseUrl };
27
+ //# sourceMappingURL=useBaseUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBaseUrl.js","names":["merge"],"sources":["../../src/composables/useBaseUrl.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { defu as merge } from 'defu'\nimport { RenderContextKey } from './renderContext.ts'\nimport type { UrlConfig } from '../types/index.ts'\n\n/**\n * Set the base URL for the current email template — same as\n * `config.url.base`, scoped to one SFC.\n *\n * Pass a string to prepend to all default tags/attributes, or an object\n * for fine-grained control (which tags/attributes, style tags, etc.).\n *\n * Usage in SFC <script setup>:\n * ```ts\n * useBaseUrl('https://cdn.example.com/emails/')\n * useBaseUrl({ url: 'https://cdn.example.com/', styleTag: true })\n * ```\n */\nexport function useBaseUrl(value: UrlConfig['base']): void {\n const ctx = inject(RenderContextKey)\n if (!ctx) return\n ctx.sfcConfig = merge({ url: { base: value } }, ctx.sfcConfig ?? {})\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAgB,WAAW,OAAgC;CACzD,MAAM,MAAM,OAAO,iBAAiB;AACpC,KAAI,CAAC,IAAK;AACV,KAAI,YAAYA,KAAM,EAAE,KAAK,EAAE,MAAM,OAAO,EAAE,EAAE,IAAI,aAAa,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { MaizzleConfig } from "../types/config.mjs";
1
+ import { MaizzleConfig } from "../types/config.js";
2
2
  import { InjectionKey } from "vue";
3
3
 
4
4
  //#region src/composables/useConfig.d.ts
@@ -6,4 +6,4 @@ declare const MaizzleConfigKey: InjectionKey<MaizzleConfig>;
6
6
  declare function useConfig(): MaizzleConfig;
7
7
  //#endregion
8
8
  export { MaizzleConfigKey, useConfig };
9
- //# sourceMappingURL=useConfig.d.mts.map
9
+ //# sourceMappingURL=useConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConfig.d.ts","names":[],"sources":["../../src/composables/useConfig.ts"],"mappings":";;;;cAIa,gBAAA,EAAkB,YAAA,CAAa,aAAA;AAAA,iBAE5B,SAAA,CAAA,GAAa,aAAA"}
@@ -10,4 +10,4 @@ function useConfig() {
10
10
 
11
11
  //#endregion
12
12
  export { MaizzleConfigKey, useConfig };
13
- //# sourceMappingURL=useConfig.mjs.map
13
+ //# sourceMappingURL=useConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConfig.js","names":[],"sources":["../../src/composables/useConfig.ts"],"sourcesContent":["import { inject } from 'vue'\nimport type { InjectionKey } from 'vue'\nimport type { MaizzleConfig } from '../types/index.ts'\n\nexport const MaizzleConfigKey: InjectionKey<MaizzleConfig> = Symbol('MaizzleConfig')\n\nexport function useConfig(): MaizzleConfig {\n const config = inject(MaizzleConfigKey)\n\n if (!config) {\n throw new Error('useConfig() requires the Maizzle plugin to provide config. Make sure you are using it inside a Maizzle template.')\n }\n\n return config\n}\n"],"mappings":";;;AAIA,MAAa,mBAAgD,OAAO,gBAAgB;AAEpF,SAAgB,YAA2B;CACzC,MAAM,SAAS,OAAO,iBAAiB;AAEvC,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,mHAAmH;AAGrI,QAAO"}
@@ -10,4 +10,4 @@
10
10
  declare function useDoctype(doctype: string): void;
11
11
  //#endregion
12
12
  export { useDoctype };
13
- //# sourceMappingURL=useDoctype.d.mts.map
13
+ //# sourceMappingURL=useDoctype.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDoctype.d.ts","names":[],"sources":["../../src/composables/useDoctype.ts"],"mappings":";;AAWA;;;;;;;iBAAgB,UAAA,CAAW,OAAA"}
@@ -1,4 +1,4 @@
1
- import { RenderContextKey } from "./renderContext.mjs";
1
+ import { RenderContextKey } from "./renderContext.js";
2
2
  import { inject } from "vue";
3
3
 
4
4
  //#region src/composables/useDoctype.ts
@@ -17,4 +17,4 @@ function useDoctype(doctype) {
17
17
 
18
18
  //#endregion
19
19
  export { useDoctype };
20
- //# sourceMappingURL=useDoctype.mjs.map
20
+ //# sourceMappingURL=useDoctype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDoctype.js","names":[],"sources":["../../src/composables/useDoctype.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { RenderContextKey } from './renderContext.ts'\n\n/**\n * Set the doctype for the current email template.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * useDoctype('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">')\n * ```\n */\nexport function useDoctype(doctype: string): void {\n const ctx = inject(RenderContextKey)\n if (ctx) ctx.doctype = doctype\n}\n"],"mappings":";;;;;;;;;;;;AAWA,SAAgB,WAAW,SAAuB;CAChD,MAAM,MAAM,OAAO,iBAAiB;AACpC,KAAI,IAAK,KAAI,UAAU"}
@@ -1,4 +1,4 @@
1
- import { EventMap, EventName } from "../events/index.mjs";
1
+ import { EventMap, EventName } from "../events/index.js";
2
2
 
3
3
  //#region src/composables/useEvent.d.ts
4
4
  /**
@@ -14,4 +14,4 @@ import { EventMap, EventName } from "../events/index.mjs";
14
14
  declare function useEvent<K extends EventName>(name: K, handler: EventMap[K]): void;
15
15
  //#endregion
16
16
  export { useEvent };
17
- //# sourceMappingURL=useEvent.d.mts.map
17
+ //# sourceMappingURL=useEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEvent.d.ts","names":[],"sources":["../../src/composables/useEvent.ts"],"mappings":";;;;;AAcA;;;;;;;;iBAAgB,QAAA,WAAmB,SAAA,CAAA,CAAW,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,QAAA,CAAS,CAAA"}
@@ -1,4 +1,4 @@
1
- import { RenderContextKey } from "./renderContext.mjs";
1
+ import { RenderContextKey } from "./renderContext.js";
2
2
  import { inject } from "vue";
3
3
 
4
4
  //#region src/composables/useEvent.ts
@@ -22,4 +22,4 @@ function useEvent(name, handler) {
22
22
 
23
23
  //#endregion
24
24
  export { useEvent };
25
- //# sourceMappingURL=useEvent.mjs.map
25
+ //# sourceMappingURL=useEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEvent.js","names":[],"sources":["../../src/composables/useEvent.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { RenderContextKey } from './renderContext.ts'\nimport type { EventName, EventMap } from '../events/index.ts'\n\n/**\n * Register an event handler from within an SFC's <script setup>.\n *\n * Usage:\n * ```ts\n * useEvent('beforeRender', ({ config, template }) => {\n * return template.replace('foo', 'bar')\n * })\n * ```\n */\nexport function useEvent<K extends EventName>(name: K, handler: EventMap[K]) {\n const ctx = inject(RenderContextKey)\n if (ctx) ctx.sfcEventHandlers.push({ name, handler })\n}\n"],"mappings":";;;;;;;;;;;;;;AAcA,SAAgB,SAA8B,MAAS,SAAsB;CAC3E,MAAM,MAAM,OAAO,iBAAiB;AACpC,KAAI,IAAK,KAAI,iBAAiB,KAAK;EAAE;EAAM;EAAS,CAAC"}
@@ -47,4 +47,4 @@ interface UseFontOptions {
47
47
  declare function useFont(options: UseFontOptions): void;
48
48
  //#endregion
49
49
  export { FontProvider, UseFontOptions, useFont };
50
- //# sourceMappingURL=useFont.d.mts.map
50
+ //# sourceMappingURL=useFont.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFont.d.ts","names":[],"sources":["../../src/composables/useFont.ts"],"mappings":";KA8CY,YAAA;AAAA,UAEK,cAAA;EAFO;;;;AAExB;;EAOE,MAAA;EAoBc;EAlBd,QAAA;EAAA;;;;;EAMA,QAAA,GAAW,YAAA;EAYX;;;;AA+CF;EArDE,GAAA;;EAEA,OAAA;EAmD6C;EAjD7C,OAAA;;EAEA,MAAA,GAAS,KAAA;AAAA;;;;;;;;;;;;;;;;iBA+CK,OAAA,CAAQ,OAAA,EAAS,cAAA"}
@@ -1,4 +1,4 @@
1
- import { RenderContextKey } from "./renderContext.mjs";
1
+ import { RenderContextKey } from "./renderContext.js";
2
2
  import { inject } from "vue";
3
3
 
4
4
  //#region src/composables/useFont.ts
@@ -90,4 +90,4 @@ function useFont(options) {
90
90
 
91
91
  //#endregion
92
92
  export { useFont };
93
- //# sourceMappingURL=useFont.mjs.map
93
+ //# sourceMappingURL=useFont.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFont.js","names":[],"sources":["../../src/composables/useFont.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { RenderContextKey } from './renderContext.ts'\n\ntype FontCategory = 'sans' | 'serif' | 'mono' | 'display' | 'handwriting'\n\nconst FAMILY_CATEGORIES: Record<string, FontCategory> = {\n // Sans-serif\n 'Roboto': 'sans',\n 'Open Sans': 'sans',\n 'Inter': 'sans',\n 'Lato': 'sans',\n 'Montserrat': 'sans',\n // Serif\n 'Merriweather': 'serif',\n 'Playfair Display': 'serif',\n 'Lora': 'serif',\n 'PT Serif': 'serif',\n 'Noto Serif': 'serif',\n // Display\n 'Oswald': 'display',\n 'Bebas Neue': 'display',\n 'Anton': 'display',\n 'Lobster': 'display',\n 'Pacifico': 'display',\n // Handwriting\n 'Dancing Script': 'handwriting',\n 'Caveat': 'handwriting',\n 'Shadows Into Light': 'handwriting',\n 'Satisfy': 'handwriting',\n 'Great Vibes': 'handwriting',\n // Monospace\n 'Roboto Mono': 'mono',\n 'Source Code Pro': 'mono',\n 'JetBrains Mono': 'mono',\n 'Fira Code': 'mono',\n 'Inconsolata': 'mono',\n}\n\nconst DEFAULT_FALLBACKS: Record<FontCategory, string> = {\n sans: 'ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif',\n serif: 'ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\n mono: 'ui-monospace, Menlo, Consolas, monospace',\n display: 'Impact, \"Arial Black\", system-ui, sans-serif',\n handwriting: '\"Segoe Script\", \"Brush Script MT\", cursive',\n}\n\nexport type FontProvider = 'google' | 'bunny'\n\nexport interface UseFontOptions {\n /**\n * A single font family name, e.g. `\"Roboto\"` or `\"Open Sans\"`.\n *\n * For fallback fonts, use the `fallback` option instead of a\n * comma-separated list here.\n */\n family: string\n /** CSS fallback list appended to the `font-family` declaration. */\n fallback?: string\n /**\n * Font provider used to build the stylesheet URL when `url` is omitted.\n * Bunny Fonts is a drop-in, privacy-friendly Google Fonts mirror.\n * @default 'google'\n */\n provider?: FontProvider\n /**\n * Stylesheet URL. When provided, used as-is for the `<link href>`.\n * When omitted, a URL is built from `provider`, `family`, `weights`,\n * `display` and `styles`.\n */\n url?: string\n /** Font weights to load. Ignored when `url` is provided. */\n weights?: number[]\n /** `font-display` value. Ignored when `url` is provided. */\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional'\n /** Font styles to load. Ignored when `url` is provided. */\n styles?: Array<'normal' | 'italic'>\n}\n\nconst PROVIDER_BASE_URL: Record<FontProvider, string> = {\n google: 'https://fonts.googleapis.com/css2',\n bunny: 'https://fonts.bunny.net/css2',\n}\n\nfunction slugify(family: string): string {\n return family\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^a-z0-9-]/g, '')\n}\n\nfunction buildProviderUrl(opts: Required<Omit<UseFontOptions, 'url' | 'fallback'>>): string {\n const familyParam = opts.family.trim().replace(/\\s+/g, '+')\n const weights = [...opts.weights].sort((a, b) => a - b)\n const hasItalic = opts.styles.includes('italic')\n const hasNormal = opts.styles.includes('normal')\n\n const axis = hasItalic\n ? `:ital,wght@${weights.flatMap(w => [\n ...(hasNormal ? [`0,${w}`] : []),\n `1,${w}`,\n ]).join(';')}`\n : `:wght@${weights.join(';')}`\n\n return `${PROVIDER_BASE_URL[opts.provider]}?family=${familyParam}${axis}&display=${opts.display}`\n}\n\n/**\n * Register a font for the current email template.\n *\n * Builds a Google Fonts stylesheet URL from `family`/`weights`/`display`/`styles`\n * (or uses `url` as-is). The renderer injects a `<link>` tag into `<head>`\n * and merges `--font-{slug}` declarations into the template's existing\n * `@import \"tailwindcss\"` style block so a `font-{slug}` utility class\n * is generated. If no Tailwind import is found, falls back to a `:root`\n * declaration so the CSS variable is still available.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * useFont({ family: 'Roboto', fallback: 'Verdana, sans-serif', weights: [400, 600] })\n * ```\n */\nexport function useFont(options: UseFontOptions): void {\n const ctx = inject(RenderContextKey)\n if (!ctx) return\n\n ctx.fonts = ctx.fonts ?? []\n if (ctx.fonts.some(f => f.family === options.family)) return\n\n const url = options.url ?? buildProviderUrl({\n family: options.family,\n provider: options.provider ?? 'google',\n weights: options.weights ?? [400],\n display: options.display ?? 'swap',\n styles: options.styles ?? ['normal'],\n })\n\n const fallback = options.fallback\n ?? DEFAULT_FALLBACKS[FAMILY_CATEGORIES[options.family] ?? 'sans']\n const quoted = /\\s/.test(options.family) ? `\"${options.family}\"` : options.family\n const declaration = `${quoted}, ${fallback}`\n\n ctx.fonts.push({\n family: options.family,\n slug: slugify(options.family),\n declaration,\n url,\n })\n}\n"],"mappings":";;;;AAKA,MAAM,oBAAkD;CAEtD,UAAU;CACV,aAAa;CACb,SAAS;CACT,QAAQ;CACR,cAAc;CAEd,gBAAgB;CAChB,oBAAoB;CACpB,QAAQ;CACR,YAAY;CACZ,cAAc;CAEd,UAAU;CACV,cAAc;CACd,SAAS;CACT,WAAW;CACX,YAAY;CAEZ,kBAAkB;CAClB,UAAU;CACV,sBAAsB;CACtB,WAAW;CACX,eAAe;CAEf,eAAe;CACf,mBAAmB;CACnB,kBAAkB;CAClB,aAAa;CACb,eAAe;CAChB;AAED,MAAM,oBAAkD;CACtD,MAAM;CACN,OAAO;CACP,MAAM;CACN,SAAS;CACT,aAAa;CACd;AAkCD,MAAM,oBAAkD;CACtD,QAAQ;CACR,OAAO;CACR;AAED,SAAS,QAAQ,QAAwB;AACvC,QAAO,OACJ,MAAM,CACN,aAAa,CACb,QAAQ,QAAQ,IAAI,CACpB,QAAQ,eAAe,GAAG;;AAG/B,SAAS,iBAAiB,MAAkE;CAC1F,MAAM,cAAc,KAAK,OAAO,MAAM,CAAC,QAAQ,QAAQ,IAAI;CAC3D,MAAM,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE;CACvD,MAAM,YAAY,KAAK,OAAO,SAAS,SAAS;CAChD,MAAM,YAAY,KAAK,OAAO,SAAS,SAAS;CAEhD,MAAM,OAAO,YACT,cAAc,QAAQ,SAAQ,MAAK,CACjC,GAAI,YAAY,CAAC,KAAK,IAAI,GAAG,EAAE,EAC/B,KAAK,IACN,CAAC,CAAC,KAAK,IAAI,KACZ,SAAS,QAAQ,KAAK,IAAI;AAE9B,QAAO,GAAG,kBAAkB,KAAK,UAAU,UAAU,cAAc,KAAK,WAAW,KAAK;;;;;;;;;;;;;;;;;AAkB1F,SAAgB,QAAQ,SAA+B;CACrD,MAAM,MAAM,OAAO,iBAAiB;AACpC,KAAI,CAAC,IAAK;AAEV,KAAI,QAAQ,IAAI,SAAS,EAAE;AAC3B,KAAI,IAAI,MAAM,MAAK,MAAK,EAAE,WAAW,QAAQ,OAAO,CAAE;CAEtD,MAAM,MAAM,QAAQ,OAAO,iBAAiB;EAC1C,QAAQ,QAAQ;EAChB,UAAU,QAAQ,YAAY;EAC9B,SAAS,QAAQ,WAAW,CAAC,IAAI;EACjC,SAAS,QAAQ,WAAW;EAC5B,QAAQ,QAAQ,UAAU,CAAC,SAAS;EACrC,CAAC;CAEF,MAAM,WAAW,QAAQ,YACpB,kBAAkB,kBAAkB,QAAQ,WAAW;CAE5D,MAAM,cAAc,GADL,KAAK,KAAK,QAAQ,OAAO,GAAG,IAAI,QAAQ,OAAO,KAAK,QAAQ,OAC7C,IAAI;AAElC,KAAI,MAAM,KAAK;EACb,QAAQ,QAAQ;EAChB,MAAM,QAAQ,QAAQ,OAAO;EAC7B;EACA;EACD,CAAC"}
@@ -18,4 +18,4 @@
18
18
  declare function useOutlookFallback(value?: boolean | null): boolean;
19
19
  //#endregion
20
20
  export { useOutlookFallback };
21
- //# sourceMappingURL=useOutlookFallback.d.mts.map
21
+ //# sourceMappingURL=useOutlookFallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOutlookFallback.d.ts","names":[],"sources":["../../src/composables/useOutlookFallback.ts"],"mappings":";;AAoBA;;;;;;;;;;;;;;;iBAAgB,kBAAA,CAAmB,KAAA"}
@@ -27,4 +27,4 @@ function useOutlookFallback(value) {
27
27
 
28
28
  //#endregion
29
29
  export { useOutlookFallback };
30
- //# sourceMappingURL=useOutlookFallback.mjs.map
30
+ //# sourceMappingURL=useOutlookFallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOutlookFallback.js","names":[],"sources":["../../src/composables/useOutlookFallback.ts"],"sourcesContent":["import { inject, provide, type InjectionKey } from 'vue'\n\nconst OutlookFallbackKey: InjectionKey<boolean> = Symbol('OutlookFallback')\n\n/**\n * Toggle whether descendants emit Outlook (MSO) and VML fallback markup.\n *\n * Call once in a Layout/template's `<script setup>` to disable for the\n * whole tree:\n * `useOutlookFallback(false)`\n *\n * Components inheriting `false` skip MSO ghost tables, VML rectangles,\n * `xmlns:v`/`xmlns:o`, mso-specific CSS, and Button's `<Outlook>`\n * spacers. Each MSO-aware component still accepts an `outlook-fallback`\n * prop that overrides inheritance for its subtree.\n *\n * @param value Pass `true`/`false` to set; omit to just read the\n * inherited value (defaults to `true` at the root).\n * @returns The resolved boolean for the current component.\n */\nexport function useOutlookFallback(value?: boolean | null): boolean {\n const inherited = inject(OutlookFallbackKey, true)\n const enabled = value == null ? inherited : value\n provide(OutlookFallbackKey, enabled)\n return enabled\n}\n"],"mappings":";;;AAEA,MAAM,qBAA4C,OAAO,kBAAkB;;;;;;;;;;;;;;;;;AAkB3E,SAAgB,mBAAmB,OAAiC;CAClE,MAAM,YAAY,OAAO,oBAAoB,KAAK;CAClD,MAAM,UAAU,SAAS,OAAO,YAAY;AAC5C,SAAQ,oBAAoB,QAAQ;AACpC,QAAO"}
@@ -16,4 +16,4 @@ interface UsePlaintextOptions {
16
16
  declare function usePlaintext(options?: UsePlaintextOptions): void;
17
17
  //#endregion
18
18
  export { UsePlaintextOptions, usePlaintext };
19
- //# sourceMappingURL=usePlaintext.d.mts.map
19
+ //# sourceMappingURL=usePlaintext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePlaintext.d.ts","names":[],"sources":["../../src/composables/usePlaintext.ts"],"mappings":";UAGiB,mBAAA;EACf,SAAA;EACA,WAAA;AAAA;;;AAaF;;;;;;;;iBAAgB,YAAA,CAAa,OAAA,GAAU,mBAAA"}
@@ -1,4 +1,4 @@
1
- import { RenderContextKey } from "./renderContext.mjs";
1
+ import { RenderContextKey } from "./renderContext.js";
2
2
  import { inject } from "vue";
3
3
 
4
4
  //#region src/composables/usePlaintext.ts
@@ -19,4 +19,4 @@ function usePlaintext(options) {
19
19
 
20
20
  //#endregion
21
21
  export { usePlaintext };
22
- //# sourceMappingURL=usePlaintext.mjs.map
22
+ //# sourceMappingURL=usePlaintext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePlaintext.js","names":[],"sources":["../../src/composables/usePlaintext.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { RenderContextKey } from './renderContext.ts'\n\nexport interface UsePlaintextOptions {\n extension?: string\n destination?: string\n}\n\n/**\n * Enable plaintext generation for the current email template.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * usePlaintext()\n * usePlaintext({ extension: 'text' })\n * usePlaintext({ destination: '/custom/path' })\n * ```\n */\nexport function usePlaintext(options?: UsePlaintextOptions): void {\n const ctx = inject(RenderContextKey)\n if (ctx) ctx.plaintext = options ?? {}\n}\n"],"mappings":";;;;;;;;;;;;;;AAkBA,SAAgB,aAAa,SAAqC;CAChE,MAAM,MAAM,OAAO,iBAAiB;AACpC,KAAI,IAAK,KAAI,YAAY,WAAW,EAAE"}
@@ -21,4 +21,4 @@ interface UsePreheaderOptions {
21
21
  declare function usePreheader(text: string, options?: UsePreheaderOptions): void;
22
22
  //#endregion
23
23
  export { UsePreheaderOptions, usePreheader };
24
- //# sourceMappingURL=usePreheader.d.mts.map
24
+ //# sourceMappingURL=usePreheader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreheader.d.ts","names":[],"sources":["../../src/composables/usePreheader.ts"],"mappings":";UAGiB,mBAAA;EAAA;EAEf,WAAA;;EAEA,QAAA;AAAA;AAgBF;;;;;;;;;;;;;AAAA,iBAAgB,YAAA,CAAa,IAAA,UAAc,OAAA,GAAU,mBAAA"}
@@ -1,4 +1,4 @@
1
- import { RenderContextKey } from "./renderContext.mjs";
1
+ import { RenderContextKey } from "./renderContext.js";
2
2
  import { inject } from "vue";
3
3
 
4
4
  //#region src/composables/usePreheader.ts
@@ -26,4 +26,4 @@ function usePreheader(text, options) {
26
26
 
27
27
  //#endregion
28
28
  export { usePreheader };
29
- //# sourceMappingURL=usePreheader.mjs.map
29
+ //# sourceMappingURL=usePreheader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreheader.js","names":[],"sources":["../../src/composables/usePreheader.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { RenderContextKey } from './renderContext.ts'\n\nexport interface UsePreheaderOptions {\n /** Number of &#8199;&#847; filler pairs to render. @default 150 */\n fillerCount?: number\n /** Number of &shy; entities to render. @default 150 */\n shyCount?: number\n}\n\n/**\n * Set the preheader text for the current email template.\n *\n * Injects a hidden `<div>` at the start of `<body>` with the preheader text\n * followed by filler characters that prevent email clients from pulling\n * in body content after the preheader.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * usePreheader('Thanks for signing up!')\n * usePreheader('Welcome!', { fillerCount: 200, shyCount: 200 })\n * ```\n */\nexport function usePreheader(text: string, options?: UsePreheaderOptions): void {\n const ctx = inject(RenderContextKey)\n if (ctx) {\n ctx.preheader = {\n text,\n fillerCount: options?.fillerCount ?? 150,\n shyCount: options?.shyCount ?? 150,\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,SAAgB,aAAa,MAAc,SAAqC;CAC9E,MAAM,MAAM,OAAO,iBAAiB;AACpC,KAAI,IACF,KAAI,YAAY;EACd;EACA,aAAa,SAAS,eAAe;EACrC,UAAU,SAAS,YAAY;EAChC"}
@@ -0,0 +1,34 @@
1
+ import { TransformerToggles } from "../types/config.js";
2
+ //#region src/composables/useTransformers.d.ts
3
+ /**
4
+ * Toggle the transformer pipeline for the current template.
5
+ *
6
+ * - `useTransformers(false)` skips the entire pipeline (CSS inlining,
7
+ * purging, shorthand, etc).
8
+ * - `useTransformers(true)` (or no argument) keeps everything on.
9
+ * - `useTransformers({ inlineCSS: false, minify: false })` runs the
10
+ * pipeline but skips the listed transformers.
11
+ * - `useTransformers({ prettify: true, minify: true })` *enables*
12
+ * transformers that would otherwise no-op (boolean-driven ones:
13
+ * inlineCSS, purgeCSS, prettify, minify, shorthandCSS, sixHex,
14
+ * safeClassNames, entities). Same effect as setting their config
15
+ * slice directly, scoped to one template.
16
+ *
17
+ * Data-driven transformers (filters, baseURL, urlQuery, addAttributes,
18
+ * removeAttributes, replaceStrings, attributeToStyle) need actual
19
+ * values in config — a bare `true` toggle for them is a no-op.
20
+ *
21
+ * Mirrors the `useTransformers` config flag, scoped to a single template
22
+ * — no need to edit `maizzle.config.ts`.
23
+ *
24
+ * Usage in SFC <script setup>:
25
+ * ```ts
26
+ * useTransformers(false)
27
+ * useTransformers({ inlineCSS: false, minify: false })
28
+ * useTransformers({ prettify: true })
29
+ * ```
30
+ */
31
+ declare function useTransformers(value?: boolean | TransformerToggles): void;
32
+ //#endregion
33
+ export { useTransformers };
34
+ //# sourceMappingURL=useTransformers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTransformers.d.ts","names":[],"sources":["../../src/composables/useTransformers.ts"],"mappings":";;;;;AAiCA;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,eAAA,CAAgB,KAAA,aAAiB,kBAAA"}
@@ -0,0 +1,49 @@
1
+ import { MaizzleConfigKey } from "./useConfig.js";
2
+ import { RenderContextKey } from "./renderContext.js";
3
+ import { getCurrentInstance, inject, provide } from "vue";
4
+
5
+ //#region src/composables/useTransformers.ts
6
+ /**
7
+ * Toggle the transformer pipeline for the current template.
8
+ *
9
+ * - `useTransformers(false)` skips the entire pipeline (CSS inlining,
10
+ * purging, shorthand, etc).
11
+ * - `useTransformers(true)` (or no argument) keeps everything on.
12
+ * - `useTransformers({ inlineCSS: false, minify: false })` runs the
13
+ * pipeline but skips the listed transformers.
14
+ * - `useTransformers({ prettify: true, minify: true })` *enables*
15
+ * transformers that would otherwise no-op (boolean-driven ones:
16
+ * inlineCSS, purgeCSS, prettify, minify, shorthandCSS, sixHex,
17
+ * safeClassNames, entities). Same effect as setting their config
18
+ * slice directly, scoped to one template.
19
+ *
20
+ * Data-driven transformers (filters, baseURL, urlQuery, addAttributes,
21
+ * removeAttributes, replaceStrings, attributeToStyle) need actual
22
+ * values in config — a bare `true` toggle for them is a no-op.
23
+ *
24
+ * Mirrors the `useTransformers` config flag, scoped to a single template
25
+ * — no need to edit `maizzle.config.ts`.
26
+ *
27
+ * Usage in SFC <script setup>:
28
+ * ```ts
29
+ * useTransformers(false)
30
+ * useTransformers({ inlineCSS: false, minify: false })
31
+ * useTransformers({ prettify: true })
32
+ * ```
33
+ */
34
+ function useTransformers(value = true) {
35
+ if (!getCurrentInstance()) return;
36
+ const ctx = inject(RenderContextKey);
37
+ if (!ctx) return;
38
+ const globalConfig = inject(MaizzleConfigKey, {});
39
+ const merged = {
40
+ ...ctx.sfcConfig ?? globalConfig,
41
+ useTransformers: value
42
+ };
43
+ ctx.sfcConfig = merged;
44
+ provide(MaizzleConfigKey, merged);
45
+ }
46
+
47
+ //#endregion
48
+ export { useTransformers };
49
+ //# sourceMappingURL=useTransformers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTransformers.js","names":[],"sources":["../../src/composables/useTransformers.ts"],"sourcesContent":["import { getCurrentInstance, inject, provide } from 'vue'\nimport { MaizzleConfigKey } from './useConfig.ts'\nimport { RenderContextKey } from './renderContext.ts'\nimport type { MaizzleConfig, TransformerToggles } from '../types/index.ts'\n\n/**\n * Toggle the transformer pipeline for the current template.\n *\n * - `useTransformers(false)` skips the entire pipeline (CSS inlining,\n * purging, shorthand, etc).\n * - `useTransformers(true)` (or no argument) keeps everything on.\n * - `useTransformers({ inlineCSS: false, minify: false })` runs the\n * pipeline but skips the listed transformers.\n * - `useTransformers({ prettify: true, minify: true })` *enables*\n * transformers that would otherwise no-op (boolean-driven ones:\n * inlineCSS, purgeCSS, prettify, minify, shorthandCSS, sixHex,\n * safeClassNames, entities). Same effect as setting their config\n * slice directly, scoped to one template.\n *\n * Data-driven transformers (filters, baseURL, urlQuery, addAttributes,\n * removeAttributes, replaceStrings, attributeToStyle) need actual\n * values in config — a bare `true` toggle for them is a no-op.\n *\n * Mirrors the `useTransformers` config flag, scoped to a single template\n * — no need to edit `maizzle.config.ts`.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * useTransformers(false)\n * useTransformers({ inlineCSS: false, minify: false })\n * useTransformers({ prettify: true })\n * ```\n */\nexport function useTransformers(value: boolean | TransformerToggles = true): void {\n if (!getCurrentInstance()) return\n\n const ctx = inject(RenderContextKey)\n if (!ctx) return\n\n const globalConfig = inject(MaizzleConfigKey, {} as MaizzleConfig)\n const merged: MaizzleConfig = {\n ...(ctx.sfcConfig ?? globalConfig),\n useTransformers: value,\n }\n\n ctx.sfcConfig = merged\n provide(MaizzleConfigKey, merged)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,gBAAgB,QAAsC,MAAY;AAChF,KAAI,CAAC,oBAAoB,CAAE;CAE3B,MAAM,MAAM,OAAO,iBAAiB;AACpC,KAAI,CAAC,IAAK;CAEV,MAAM,eAAe,OAAO,kBAAkB,EAAE,CAAkB;CAClE,MAAM,SAAwB;EAC5B,GAAI,IAAI,aAAa;EACrB,iBAAiB;EAClB;AAED,KAAI,YAAY;AAChB,SAAQ,kBAAkB,OAAO"}
@@ -0,0 +1,19 @@
1
+ import { UrlQuery } from "../types/config.js";
2
+ //#region src/composables/useUrlQuery.d.ts
3
+ /**
4
+ * Append query parameters to URLs in the current email template — same
5
+ * as `config.url.query`, scoped to one SFC. Common use: per-template
6
+ * UTM parameters or campaign tracking.
7
+ *
8
+ * Usage in SFC <script setup>:
9
+ * ```ts
10
+ * useUrlQuery({ utm_source: 'maizzle', utm_campaign: 'newsletter' })
11
+ * ```
12
+ *
13
+ * Pass `_options` alongside the params to tweak which tags/attributes
14
+ * receive them (see `UrlQueryOptions`).
15
+ */
16
+ declare function useUrlQuery(value: UrlQuery): void;
17
+ //#endregion
18
+ export { useUrlQuery };
19
+ //# sourceMappingURL=useUrlQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUrlQuery.d.ts","names":[],"sources":["../../src/composables/useUrlQuery.ts"],"mappings":";;;;;AAkBA;;;;;;;;;;iBAAgB,WAAA,CAAY,KAAA,EAAO,QAAA"}
@@ -0,0 +1,27 @@
1
+ import { RenderContextKey } from "./renderContext.js";
2
+ import { defu } from "defu";
3
+ import { inject } from "vue";
4
+
5
+ //#region src/composables/useUrlQuery.ts
6
+ /**
7
+ * Append query parameters to URLs in the current email template — same
8
+ * as `config.url.query`, scoped to one SFC. Common use: per-template
9
+ * UTM parameters or campaign tracking.
10
+ *
11
+ * Usage in SFC <script setup>:
12
+ * ```ts
13
+ * useUrlQuery({ utm_source: 'maizzle', utm_campaign: 'newsletter' })
14
+ * ```
15
+ *
16
+ * Pass `_options` alongside the params to tweak which tags/attributes
17
+ * receive them (see `UrlQueryOptions`).
18
+ */
19
+ function useUrlQuery(value) {
20
+ const ctx = inject(RenderContextKey);
21
+ if (!ctx) return;
22
+ ctx.sfcConfig = defu({ url: { query: value } }, ctx.sfcConfig ?? {});
23
+ }
24
+
25
+ //#endregion
26
+ export { useUrlQuery };
27
+ //# sourceMappingURL=useUrlQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUrlQuery.js","names":["merge"],"sources":["../../src/composables/useUrlQuery.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { defu as merge } from 'defu'\nimport { RenderContextKey } from './renderContext.ts'\nimport type { UrlQuery } from '../types/index.ts'\n\n/**\n * Append query parameters to URLs in the current email template — same\n * as `config.url.query`, scoped to one SFC. Common use: per-template\n * UTM parameters or campaign tracking.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * useUrlQuery({ utm_source: 'maizzle', utm_campaign: 'newsletter' })\n * ```\n *\n * Pass `_options` alongside the params to tweak which tags/attributes\n * receive them (see `UrlQueryOptions`).\n */\nexport function useUrlQuery(value: UrlQuery): void {\n const ctx = inject(RenderContextKey)\n if (!ctx) return\n ctx.sfcConfig = merge({ url: { query: value } }, ctx.sfcConfig ?? {})\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAgB,YAAY,OAAuB;CACjD,MAAM,MAAM,OAAO,iBAAiB;AACpC,KAAI,CAAC,IAAK;AACV,KAAI,YAAYA,KAAM,EAAE,KAAK,EAAE,OAAO,OAAO,EAAE,EAAE,IAAI,aAAa,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
- import { MaizzleConfig } from "../types/config.mjs";
1
+ import { MaizzleConfig } from "../types/config.js";
2
2
  //#region src/config/defaults.d.ts
3
3
  declare const defaults: MaizzleConfig;
4
4
  //#endregion
5
5
  export { defaults };
6
- //# sourceMappingURL=defaults.d.mts.map
6
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","names":[],"sources":["../../src/config/defaults.ts"],"mappings":";;cAEa,QAAA,EAAU,aAAA"}
@@ -14,13 +14,19 @@ const defaults = {
14
14
  watch: []
15
15
  },
16
16
  css: {
17
+ inline: true,
18
+ purge: true,
19
+ shorthand: true,
17
20
  safe: true,
18
21
  preferUnitless: true
19
22
  },
20
- html: { decodeEntities: true },
23
+ html: {
24
+ decodeEntities: true,
25
+ format: true
26
+ },
21
27
  useTransformers: true
22
28
  };
23
29
 
24
30
  //#endregion
25
31
  export { defaults };
26
- //# sourceMappingURL=defaults.mjs.map
32
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","names":[],"sources":["../../src/config/defaults.ts"],"sourcesContent":["import type { MaizzleConfig } from '../types/index.ts'\n\nexport const defaults: MaizzleConfig = {\n content: ['emails/**/*.{vue,md}'],\n output: {\n path: 'dist',\n extension: 'html',\n },\n static: {\n source: ['public/**/*.*'],\n destination: 'public',\n },\n server: {\n port: 3000,\n watch: [],\n },\n css: {\n inline: true,\n purge: true,\n shorthand: true,\n safe: true,\n preferUnitless: true,\n },\n html: {\n decodeEntities: true,\n format: true,\n },\n useTransformers: true,\n}\n"],"mappings":";AAEA,MAAa,WAA0B;CACrC,SAAS,CAAC,uBAAuB;CACjC,QAAQ;EACN,MAAM;EACN,WAAW;EACZ;CACD,QAAQ;EACN,QAAQ,CAAC,gBAAgB;EACzB,aAAa;EACd;CACD,QAAQ;EACN,MAAM;EACN,OAAO,EAAE;EACV;CACD,KAAK;EACH,QAAQ;EACR,OAAO;EACP,WAAW;EACX,MAAM;EACN,gBAAgB;EACjB;CACD,MAAM;EACJ,gBAAgB;EAChB,QAAQ;EACT;CACD,iBAAiB;CAClB"}
@@ -1,6 +1,6 @@
1
- import { MaizzleConfig } from "../types/config.mjs";
2
- import { defineConfig } from "../composables/defineConfig.mjs";
3
- import { defaults } from "./defaults.mjs";
1
+ import { MaizzleConfig } from "../types/config.js";
2
+ import { defineConfig } from "../composables/defineConfig.js";
3
+ import { defaults } from "./defaults.js";
4
4
 
5
5
  //#region src/config/index.d.ts
6
6
  /**
@@ -12,4 +12,4 @@ import { defaults } from "./defaults.mjs";
12
12
  declare function resolveConfig(config?: Partial<MaizzleConfig> | string, cwd?: string): Promise<MaizzleConfig>;
13
13
  //#endregion
14
14
  export { defaults, defineConfig, resolveConfig };
15
- //# sourceMappingURL=index.d.mts.map
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/config/index.ts"],"mappings":";;;;;;;;AA8BA;;;iBAAsB,aAAA,CACpB,MAAA,GAAS,OAAA,CAAQ,aAAA,YACjB,GAAA,YACC,OAAA,CAAQ,aAAA"}
@@ -1,5 +1,5 @@
1
- import { defaults } from "./defaults.mjs";
2
- import { defineConfig } from "../composables/defineConfig.mjs";
1
+ import { defaults } from "./defaults.js";
2
+ import { defineConfig } from "../composables/defineConfig.js";
3
3
  import { existsSync } from "node:fs";
4
4
  import { resolve } from "node:path";
5
5
  import { createJiti } from "jiti";
@@ -68,4 +68,4 @@ async function loadConfig(configPath, cwd = process.cwd()) {
68
68
 
69
69
  //#endregion
70
70
  export { defaults, defineConfig, resolveConfig };
71
- //# sourceMappingURL=index.mjs.map
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/config/index.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport { createJiti } from 'jiti'\nimport { fileURLToPath } from 'node:url'\nimport { createDefu } from 'defu'\n\n// defu that replaces arrays: if user provides content: ['x'], it replaces the default, not appends\nconst merge = createDefu((obj, key, value) => {\n if (Array.isArray(obj[key])) {\n obj[key] = value\n return true\n }\n})\nimport { defaults } from './defaults.ts'\nimport type { MaizzleConfig } from '../types/index.ts'\n\nexport { defineConfig } from '../composables/defineConfig.ts'\nexport { defaults } from './defaults.ts'\n\nconst CONFIG_FILES = [\n 'maizzle.config.ts',\n 'maizzle.config.js',\n]\n\n/**\n * Resolve the Maizzle config.\n *\n * Always loads from the config file on disk (maizzle.config.{ts,js}),\n * then merges the programmatic config on top, then fills in defaults.\n */\nexport async function resolveConfig(\n config?: Partial<MaizzleConfig> | string,\n cwd: string = process.cwd(),\n): Promise<MaizzleConfig> {\n // If a string path was provided, load that specific file\n const fileConfig = await loadConfig(\n typeof config === 'string' ? config : undefined,\n cwd,\n )\n\n // Programmatic config (object) overrides file config, which overrides defaults\n const programmaticConfig = typeof config === 'object' && config !== null ? config : {}\n\n const merged = merge(programmaticConfig, fileConfig, defaults) as MaizzleConfig\n\n // Check if root was explicitly provided before resolving\n const hasExplicitRoot = !!(programmaticConfig.root ?? fileConfig.root)\n\n // Resolve root to an absolute path (defaults to cwd)\n const root = resolve(cwd, merged.root ?? '.')\n merged.root = root\n\n // Resolve content patterns relative to root\n if (merged.content) {\n merged.content = merged.content.map(p => {\n // Skip already-absolute or negated patterns\n if (p.startsWith('/') || p.startsWith('!')) return p\n return resolve(root, p).replace(/\\\\/g, '/')\n })\n }\n\n // Resolve static source patterns relative to root\n if (merged.static?.source) {\n merged.static.source = merged.static.source.map(p => {\n if (p.startsWith('/') || p.startsWith('!')) return p\n return resolve(root, p).replace(/\\\\/g, '/')\n })\n }\n\n // Resolve components.source paths relative to cwd (not root),\n // since extra component dirs often live outside the root directory\n if (merged.components?.source) {\n const dirs = Array.isArray(merged.components.source)\n ? merged.components.source\n : [merged.components.source]\n\n merged.components.source = dirs.map(p => {\n if (p.startsWith('/')) return p\n return resolve(cwd, p)\n })\n }\n\n // Default css.base to root when root is explicitly set,\n // so Tailwind resolves @source from the right directory.\n // When root is not set, leave css.base undefined so Tailwind\n // uses its own default (the template file's directory).\n if (hasExplicitRoot && !merged.css?.base) {\n if (!merged.css) merged.css = {}\n merged.css.base = root\n }\n\n return merged\n}\n\nasync function loadConfig(\n configPath?: string,\n cwd: string = process.cwd(),\n): Promise<MaizzleConfig> {\n const jiti = createJiti(fileURLToPath(import.meta.url), { moduleCache: false })\n\n // If an explicit path was provided, use it directly\n if (configPath) {\n const absolutePath = resolve(cwd, configPath)\n\n if (!existsSync(absolutePath)) {\n throw new Error(`Config file not found: ${absolutePath}`)\n }\n\n const mod = await jiti.import(absolutePath) as any\n return mod.default ?? mod\n }\n\n // Otherwise scan cwd for known config file names\n for (const filename of CONFIG_FILES) {\n const filepath = resolve(cwd, filename)\n\n if (existsSync(filepath)) {\n const mod = await jiti.import(filepath) as any\n return mod.default ?? mod\n }\n }\n\n // No config file found, return empty (defaults will be applied by resolveConfig)\n return {}\n}\n"],"mappings":";;;;;;;;;AAOA,MAAM,QAAQ,YAAY,KAAK,KAAK,UAAU;AAC5C,KAAI,MAAM,QAAQ,IAAI,KAAK,EAAE;AAC3B,MAAI,OAAO;AACX,SAAO;;EAET;AAOF,MAAM,eAAe,CACnB,qBACA,oBACD;;;;;;;AAQD,eAAsB,cACpB,QACA,MAAc,QAAQ,KAAK,EACH;CAExB,MAAM,aAAa,MAAM,WACvB,OAAO,WAAW,WAAW,SAAS,QACtC,IACD;CAGD,MAAM,qBAAqB,OAAO,WAAW,YAAY,WAAW,OAAO,SAAS,EAAE;CAEtF,MAAM,SAAS,MAAM,oBAAoB,YAAY,SAAS;CAG9D,MAAM,kBAAkB,CAAC,EAAE,mBAAmB,QAAQ,WAAW;CAGjE,MAAM,OAAO,QAAQ,KAAK,OAAO,QAAQ,IAAI;AAC7C,QAAO,OAAO;AAGd,KAAI,OAAO,QACT,QAAO,UAAU,OAAO,QAAQ,KAAI,MAAK;AAEvC,MAAI,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,IAAI,CAAE,QAAO;AACnD,SAAO,QAAQ,MAAM,EAAE,CAAC,QAAQ,OAAO,IAAI;GAC3C;AAIJ,KAAI,OAAO,QAAQ,OACjB,QAAO,OAAO,SAAS,OAAO,OAAO,OAAO,KAAI,MAAK;AACnD,MAAI,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,IAAI,CAAE,QAAO;AACnD,SAAO,QAAQ,MAAM,EAAE,CAAC,QAAQ,OAAO,IAAI;GAC3C;AAKJ,KAAI,OAAO,YAAY,QAAQ;EAC7B,MAAM,OAAO,MAAM,QAAQ,OAAO,WAAW,OAAO,GAChD,OAAO,WAAW,SAClB,CAAC,OAAO,WAAW,OAAO;AAE9B,SAAO,WAAW,SAAS,KAAK,KAAI,MAAK;AACvC,OAAI,EAAE,WAAW,IAAI,CAAE,QAAO;AAC9B,UAAO,QAAQ,KAAK,EAAE;IACtB;;AAOJ,KAAI,mBAAmB,CAAC,OAAO,KAAK,MAAM;AACxC,MAAI,CAAC,OAAO,IAAK,QAAO,MAAM,EAAE;AAChC,SAAO,IAAI,OAAO;;AAGpB,QAAO;;AAGT,eAAe,WACb,YACA,MAAc,QAAQ,KAAK,EACH;CACxB,MAAM,OAAO,WAAW,cAAc,OAAO,KAAK,IAAI,EAAE,EAAE,aAAa,OAAO,CAAC;AAG/E,KAAI,YAAY;EACd,MAAM,eAAe,QAAQ,KAAK,WAAW;AAE7C,MAAI,CAAC,WAAW,aAAa,CAC3B,OAAM,IAAI,MAAM,0BAA0B,eAAe;EAG3D,MAAM,MAAM,MAAM,KAAK,OAAO,aAAa;AAC3C,SAAO,IAAI,WAAW;;AAIxB,MAAK,MAAM,YAAY,cAAc;EACnC,MAAM,WAAW,QAAQ,KAAK,SAAS;AAEvC,MAAI,WAAW,SAAS,EAAE;GACxB,MAAM,MAAM,MAAM,KAAK,OAAO,SAAS;AACvC,UAAO,IAAI,WAAW;;;AAK1B,QAAO,EAAE"}
@@ -1,4 +1,4 @@
1
- import { MaizzleConfig } from "../types/config.mjs";
1
+ import { MaizzleConfig } from "../types/config.js";
2
2
  //#region src/events/index.d.ts
3
3
  type EventName = 'beforeCreate' | 'beforeRender' | 'afterRender' | 'afterTransform' | 'afterBuild';
4
4
  interface EventMap {
@@ -33,6 +33,7 @@ interface EventMap {
33
33
  */
34
34
  declare class EventManager {
35
35
  private handlers;
36
+ private configHandlerCount;
36
37
  /**
37
38
  * Register handlers from the Maizzle config.
38
39
  */
@@ -78,9 +79,14 @@ declare class EventManager {
78
79
  config: MaizzleConfig;
79
80
  }): Promise<void>;
80
81
  /**
81
- * Clear all handlers (useful between builds or for per-template SFC handlers).
82
+ * Drop SFC-registered handlers, keep config-registered ones.
83
+ *
84
+ * Per default, only clears events whose scope is per-template
85
+ * (`beforeRender`, `afterRender`, `afterTransform`). Build-scoped events
86
+ * (`afterBuild`) accumulate across all templates and fire once at end of
87
+ * build. Pass an explicit list to override.
82
88
  */
83
- clearSfcHandlers(): void;
89
+ clearSfcHandlers(events?: EventName[]): void;
84
90
  /**
85
91
  * Clear all handlers entirely.
86
92
  */
@@ -88,4 +94,4 @@ declare class EventManager {
88
94
  }
89
95
  //#endregion
90
96
  export { EventManager, EventMap, EventName };
91
- //# sourceMappingURL=index.d.mts.map
97
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/events/index.ts"],"mappings":";;KAEY,SAAA;AAAA,UAEK,QAAA;EACf,YAAA,GAAe,MAAA;IAAU,MAAA,EAAQ,aAAA;EAAA,aAA2B,OAAA;EAC5D,YAAA,GAAe,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA;EAAA,sBAAuC,OAAA;EACvF,WAAA,GAAc,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA;IAAkB,IAAA;EAAA,sBAAmC,OAAA;EACpG,cAAA,GAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA;IAAkB,IAAA;EAAA,sBAAmC,OAAA;EACvG,UAAA,GAAa,MAAA;IAAU,KAAA;IAAiB,MAAA,EAAQ,aAAA;EAAA,aAA2B,OAAA;AAAA;;;;;;;;cAUhE,YAAA;EAAA,QACH,QAAA;EAAA,QAIA,kBAAA;EAjBR;;;EAsBA,cAAA,CAAe,MAAA,EAAQ,aAAA;EAtB0C;;;EAqCjE,EAAA,WAAa,SAAA,CAAA,CAAW,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,QAAA,CAAS,CAAA;EApCxB;;;EA+CrB,gBAAA,CAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;EAAA,IAAe,OAAA;EA9CxD;;;EAyDM,gBAAA,CAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA;EAAA,IAAqB,OAAA;EAzDK;AAUpF;;EAkEQ,eAAA,CAAgB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA;IAAkB,IAAA;EAAA,IAAiB,OAAA;EAzCvC;;;EA4D7C,kBAAA,CAAmB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA;IAAkB,IAAA;EAAA,IAAiB,OAAA;EAAA;;;EAmBvF,cAAA,CAAe,MAAA;IAAU,KAAA;IAAiB,MAAA,EAAQ,aAAA;EAAA,IAAe,OAAA;EAnG/D;;;;;;;;EAmHR,gBAAA,CAAiB,MAAA,GAAQ,SAAA;EA/FiB;;;EA6G1C,KAAA,CAAA;AAAA"}