@maizzle/framework 6.0.0-rc.9 → 6.0.1
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.
- package/README.md +3 -3
- package/bin/maizzle.mjs +1 -1
- package/dist/build.d.ts +38 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +234 -0
- package/dist/build.js.map +1 -0
- package/dist/components/Body.vue +32 -3
- package/dist/components/Button.vue +91 -62
- package/dist/components/CodeBlock.vue +6 -4
- package/dist/components/CodeInline.vue +77 -6
- package/dist/components/Column.vue +67 -31
- package/dist/components/Container.vue +73 -12
- package/dist/components/Font.vue +96 -0
- package/dist/components/Head.vue +1 -1
- package/dist/components/Heading.vue +1 -1
- package/dist/components/Hr.vue +33 -0
- package/dist/components/Html.vue +36 -3
- package/dist/components/Img.vue +332 -0
- package/dist/components/Layout.vue +73 -21
- package/dist/components/Link.vue +1 -1
- package/dist/components/Markdown.vue +51 -24
- package/dist/components/MarkdownLayout.vue +39 -0
- package/dist/components/NotPlaintext.vue +14 -0
- package/dist/components/Outlook.vue +38 -11
- package/dist/components/OutlookBg.vue +241 -0
- package/dist/components/Plaintext.vue +14 -0
- package/dist/components/Preheader.vue +35 -10
- package/dist/components/QrCode.vue +157 -0
- package/dist/components/Raw.vue +28 -0
- package/dist/components/Row.vue +115 -22
- package/dist/components/Section.vue +65 -26
- package/dist/components/Spacer.vue +35 -29
- package/dist/components/Tailwind.vue +45 -0
- package/dist/components/Text.vue +3 -3
- package/dist/components/Vml.vue +207 -94
- package/dist/components/utils.d.ts +53 -0
- package/dist/components/utils.d.ts.map +1 -0
- package/dist/components/utils.js +80 -0
- package/dist/components/utils.js.map +1 -0
- package/dist/components/utils.ts +102 -0
- package/dist/composables/defineConfig.d.ts +13 -0
- package/dist/composables/defineConfig.d.ts.map +1 -0
- package/dist/composables/{defineConfig.mjs → defineConfig.js} +7 -9
- package/dist/composables/defineConfig.js.map +1 -0
- package/dist/composables/renderContext.d.ts +37 -0
- package/dist/composables/renderContext.d.ts.map +1 -0
- package/dist/composables/renderContext.js +6 -0
- package/dist/composables/renderContext.js.map +1 -0
- package/dist/composables/useBaseUrl.d.ts +19 -0
- package/dist/composables/useBaseUrl.d.ts.map +1 -0
- package/dist/composables/useBaseUrl.js +26 -0
- package/dist/composables/useBaseUrl.js.map +1 -0
- package/dist/composables/useConfig.d.ts +16 -0
- package/dist/composables/useConfig.d.ts.map +1 -0
- package/dist/composables/useConfig.js +19 -0
- package/dist/composables/useConfig.js.map +1 -0
- package/dist/composables/useCurrentTemplate.d.ts +31 -0
- package/dist/composables/useCurrentTemplate.d.ts.map +1 -0
- package/dist/composables/useCurrentTemplate.js +42 -0
- package/dist/composables/useCurrentTemplate.js.map +1 -0
- package/dist/composables/{useDoctype.d.mts → useDoctype.d.ts} +1 -1
- package/dist/composables/useDoctype.d.ts.map +1 -0
- package/dist/composables/{useDoctype.mjs → useDoctype.js} +3 -4
- package/dist/composables/useDoctype.js.map +1 -0
- package/dist/composables/{useEvent.d.mts → useEvent.d.ts} +3 -3
- package/dist/composables/useEvent.d.ts.map +1 -0
- package/dist/composables/{useEvent.mjs → useEvent.js} +4 -5
- package/dist/composables/useEvent.js.map +1 -0
- package/dist/composables/useFont.d.ts +50 -0
- package/dist/composables/useFont.d.ts.map +1 -0
- package/dist/composables/useFont.js +92 -0
- package/dist/composables/useFont.js.map +1 -0
- package/dist/composables/useOutlookFallback.d.ts +21 -0
- package/dist/composables/useOutlookFallback.d.ts.map +1 -0
- package/dist/composables/useOutlookFallback.js +29 -0
- package/dist/composables/useOutlookFallback.js.map +1 -0
- package/dist/composables/useOutputPath.d.ts +17 -0
- package/dist/composables/useOutputPath.d.ts.map +1 -0
- package/dist/composables/useOutputPath.js +23 -0
- package/dist/composables/useOutputPath.js.map +1 -0
- package/dist/composables/{usePlaintext.d.mts → usePlaintext.d.ts} +3 -1
- package/dist/composables/usePlaintext.d.ts.map +1 -0
- package/dist/composables/{usePlaintext.mjs → usePlaintext.js} +4 -4
- package/dist/composables/usePlaintext.js.map +1 -0
- package/dist/composables/usePreheader.d.ts +25 -0
- package/dist/composables/usePreheader.d.ts.map +1 -0
- package/dist/composables/usePreheader.js +28 -0
- package/dist/composables/usePreheader.js.map +1 -0
- package/dist/composables/useTransformers.d.ts +34 -0
- package/dist/composables/useTransformers.d.ts.map +1 -0
- package/dist/composables/useTransformers.js +48 -0
- package/dist/composables/useTransformers.js.map +1 -0
- package/dist/composables/useUrlQuery.d.ts +19 -0
- package/dist/composables/useUrlQuery.d.ts.map +1 -0
- package/dist/composables/useUrlQuery.js +26 -0
- package/dist/composables/useUrlQuery.js.map +1 -0
- package/dist/config/{defaults.d.mts → defaults.d.ts} +2 -2
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/{defaults.mjs → defaults.js} +10 -6
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +33 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +136 -0
- package/dist/config/index.js.map +1 -0
- package/dist/events/{index.d.mts → index.d.ts} +35 -12
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/{index.mjs → index.js} +31 -13
- package/dist/events/index.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +40 -0
- package/dist/{plaintext.d.mts → plaintext.d.ts} +1 -1
- package/dist/plaintext.d.ts.map +1 -0
- package/dist/{plaintext.mjs → plaintext.js} +4 -5
- package/dist/plaintext.js.map +1 -0
- package/dist/{plugin.d.mts → plugin.d.ts} +2 -2
- package/dist/plugin.d.ts.map +1 -0
- package/dist/{plugin.mjs → plugin.js} +8 -9
- package/dist/plugin.js.map +1 -0
- package/dist/plugins/postcss/{mergeMediaQueries.d.mts → mergeMediaQueries.d.ts} +2 -2
- package/dist/plugins/postcss/mergeMediaQueries.d.ts.map +1 -0
- package/dist/plugins/postcss/{mergeMediaQueries.mjs → mergeMediaQueries.js} +2 -3
- package/dist/plugins/postcss/mergeMediaQueries.js.map +1 -0
- package/dist/plugins/postcss/{pruneVars.d.mts → pruneVars.d.ts} +1 -1
- package/dist/plugins/postcss/pruneVars.d.ts.map +1 -0
- package/dist/plugins/postcss/{pruneVars.mjs → pruneVars.js} +2 -2
- package/dist/plugins/postcss/pruneVars.js.map +1 -0
- package/dist/plugins/postcss/quoteFontFamilies.d.ts +13 -0
- package/dist/plugins/postcss/quoteFontFamilies.d.ts.map +1 -0
- package/dist/plugins/postcss/quoteFontFamilies.js +84 -0
- package/dist/plugins/postcss/quoteFontFamilies.js.map +1 -0
- package/dist/plugins/postcss/{removeDeclarations.d.mts → removeDeclarations.d.ts} +1 -1
- package/dist/plugins/postcss/removeDeclarations.d.ts.map +1 -0
- package/dist/plugins/postcss/{removeDeclarations.mjs → removeDeclarations.js} +2 -2
- package/dist/plugins/postcss/removeDeclarations.js.map +1 -0
- package/dist/plugins/postcss/resolveMaizzleImports.d.ts +16 -0
- package/dist/plugins/postcss/resolveMaizzleImports.d.ts.map +1 -0
- package/dist/plugins/postcss/resolveMaizzleImports.js +39 -0
- package/dist/plugins/postcss/resolveMaizzleImports.js.map +1 -0
- package/dist/plugins/postcss/resolveProps.d.ts +8 -0
- package/dist/plugins/postcss/resolveProps.d.ts.map +1 -0
- package/dist/plugins/postcss/resolveProps.js +155 -0
- package/dist/plugins/postcss/resolveProps.js.map +1 -0
- package/dist/plugins/postcss/{tailwindCleanup.d.mts → tailwindCleanup.d.ts} +2 -2
- package/dist/plugins/postcss/tailwindCleanup.d.ts.map +1 -0
- package/dist/plugins/postcss/{tailwindCleanup.mjs → tailwindCleanup.js} +5 -3
- package/dist/plugins/postcss/tailwindCleanup.js.map +1 -0
- package/dist/prepare.d.ts +17 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +44 -0
- package/dist/prepare.js.map +1 -0
- package/dist/render/active.d.ts +8 -0
- package/dist/render/active.d.ts.map +1 -0
- package/dist/render/active.js +12 -0
- package/dist/render/active.js.map +1 -0
- package/dist/render/buildTemplate.d.ts +49 -0
- package/dist/render/buildTemplate.d.ts.map +1 -0
- package/dist/render/buildTemplate.js +141 -0
- package/dist/render/buildTemplate.js.map +1 -0
- package/dist/render/{createRenderer.d.mts → createRenderer.d.ts} +14 -6
- package/dist/render/createRenderer.d.ts.map +1 -0
- package/dist/render/createRenderer.js +468 -0
- package/dist/render/createRenderer.js.map +1 -0
- package/dist/render/index.d.ts +18 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +59 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/injectFonts.d.ts +15 -0
- package/dist/render/injectFonts.d.ts.map +1 -0
- package/dist/render/injectFonts.js +45 -0
- package/dist/render/injectFonts.js.map +1 -0
- package/dist/render/parallel/buildWorker.d.ts +31 -0
- package/dist/render/parallel/buildWorker.d.ts.map +1 -0
- package/dist/render/parallel/buildWorker.js +66 -0
- package/dist/render/parallel/buildWorker.js.map +1 -0
- package/dist/render/parallel/worker.mjs +28 -0
- package/dist/render/plugins/codeBlockExtract.d.ts +14 -0
- package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -0
- package/dist/render/plugins/codeBlockExtract.js +38 -0
- package/dist/render/plugins/codeBlockExtract.js.map +1 -0
- package/dist/render/plugins/markdownExtract.d.ts +12 -0
- package/dist/render/plugins/markdownExtract.d.ts.map +1 -0
- package/dist/render/plugins/markdownExtract.js +49 -0
- package/dist/render/plugins/markdownExtract.js.map +1 -0
- package/dist/render/plugins/rawExtract.d.ts +14 -0
- package/dist/render/plugins/rawExtract.d.ts.map +1 -0
- package/dist/render/plugins/rawExtract.js +34 -0
- package/dist/render/plugins/rawExtract.js.map +1 -0
- package/dist/render/plugins/rowSourceLocation.d.ts +18 -0
- package/dist/render/plugins/rowSourceLocation.d.ts.map +1 -0
- package/dist/render/plugins/rowSourceLocation.js +45 -0
- package/dist/render/plugins/rowSourceLocation.js.map +1 -0
- package/dist/{serve.d.mts → serve.d.ts} +5 -3
- package/dist/serve.d.ts.map +1 -0
- package/dist/{serve.mjs → serve.js} +248 -119
- package/dist/serve.js.map +1 -0
- package/dist/server/compatibility.d.ts +59 -0
- package/dist/server/compatibility.d.ts.map +1 -0
- package/dist/server/compatibility.js +959 -0
- package/dist/server/compatibility.js.map +1 -0
- package/dist/server/{email.d.mts → email.d.ts} +2 -2
- package/dist/server/email.d.ts.map +1 -0
- package/dist/server/{email.mjs → email.js} +2 -3
- package/dist/server/email.js.map +1 -0
- package/dist/server/linter.d.ts +20 -0
- package/dist/server/linter.d.ts.map +1 -0
- package/dist/server/linter.js +345 -0
- package/dist/server/linter.js.map +1 -0
- package/dist/server/sfc-utils.d.ts +21 -0
- package/dist/server/sfc-utils.d.ts.map +1 -0
- package/dist/server/sfc-utils.js +198 -0
- package/dist/server/sfc-utils.js.map +1 -0
- package/dist/server/ui/.vite/deps/@lucide_vue.js +44967 -0
- package/dist/server/ui/.vite/deps/@lucide_vue.js.map +1 -0
- package/dist/server/ui/.vite/deps/@vueuse_core.js +8155 -0
- package/dist/server/ui/.vite/deps/@vueuse_core.js.map +1 -0
- package/dist/server/ui/.vite/deps/@vueuse_shared.js +1859 -0
- package/dist/server/ui/.vite/deps/@vueuse_shared.js.map +1 -0
- package/dist/server/ui/.vite/deps/_metadata.json +78 -0
- package/dist/server/ui/.vite/deps/chunk-EAsCxrDo.js +14 -0
- package/dist/server/ui/.vite/deps/class-variance-authority.js +57 -0
- package/dist/server/ui/.vite/deps/class-variance-authority.js.map +1 -0
- package/dist/server/ui/.vite/deps/clsx.js +18 -0
- package/dist/server/ui/.vite/deps/clsx.js.map +1 -0
- package/dist/server/ui/.vite/deps/culori.js +4312 -0
- package/dist/server/ui/.vite/deps/culori.js.map +1 -0
- package/dist/server/ui/.vite/deps/package.json +3 -0
- package/dist/server/ui/.vite/deps/reka-ui.js +44464 -0
- package/dist/server/ui/.vite/deps/reka-ui.js.map +1 -0
- package/dist/server/ui/.vite/deps/tailwind-merge.js +3458 -0
- package/dist/server/ui/.vite/deps/tailwind-merge.js.map +1 -0
- package/dist/server/ui/.vite/deps/vue-router.js +6383 -0
- package/dist/server/ui/.vite/deps/vue-router.js.map +1 -0
- package/dist/server/ui/.vite/deps/vue.js +2 -0
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-N1X0OxKs.js +8800 -0
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-N1X0OxKs.js.map +1 -0
- package/dist/server/ui/App.vue +106 -66
- package/dist/server/ui/components/SidebarClose.vue +12 -0
- package/dist/server/ui/components/ui/checkbox/Checkbox.vue +1 -1
- package/dist/server/ui/components/ui/command/Command.vue +5 -1
- package/dist/server/ui/components/ui/command/CommandInput.vue +2 -2
- package/dist/server/ui/components/ui/dialog/DialogContent.vue +1 -1
- package/dist/server/ui/components/ui/dialog/DialogScrollContent.vue +1 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +1 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +1 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +1 -1
- package/dist/server/ui/components/ui/input/Input.vue +1 -1
- package/dist/server/ui/components/ui/sheet/SheetContent.vue +1 -1
- package/dist/server/ui/components/ui/sidebar/SidebarTrigger.vue +2 -2
- package/dist/server/ui/components/ui/tags-input/TagsInputInput.vue +1 -1
- package/dist/server/ui/components/ui/tags-input/TagsInputItemDelete.vue +1 -1
- package/dist/server/ui/lib/emulated-dark-mode.ts +146 -0
- package/dist/server/ui/main.css +25 -0
- package/dist/server/ui/pages/Home.vue +1 -1
- package/dist/server/ui/pages/Preview.vue +377 -186
- package/dist/server/ui/vite-env.d.ts +1 -0
- package/dist/tests/render/_helpers.d.ts +6 -0
- package/dist/tests/render/_helpers.d.ts.map +1 -0
- package/dist/tests/render/_helpers.js +16 -0
- package/dist/tests/render/_helpers.js.map +1 -0
- package/dist/transformers/addAttributes.d.ts +42 -0
- package/dist/transformers/addAttributes.d.ts.map +1 -0
- package/dist/transformers/{addAttributes.mjs → addAttributes.js} +40 -24
- package/dist/transformers/addAttributes.js.map +1 -0
- package/dist/transformers/attributeToStyle.d.ts +38 -0
- package/dist/transformers/attributeToStyle.d.ts.map +1 -0
- package/dist/transformers/attributeToStyle.js +94 -0
- package/dist/transformers/attributeToStyle.js.map +1 -0
- package/dist/transformers/base.d.ts +71 -0
- package/dist/transformers/base.d.ts.map +1 -0
- package/dist/transformers/{base.mjs → base.js} +65 -40
- package/dist/transformers/base.js.map +1 -0
- package/dist/transformers/columnWidth.d.ts +31 -0
- package/dist/transformers/columnWidth.d.ts.map +1 -0
- package/dist/transformers/columnWidth.js +527 -0
- package/dist/transformers/columnWidth.js.map +1 -0
- package/dist/transformers/entities.d.ts +37 -0
- package/dist/transformers/entities.d.ts.map +1 -0
- package/dist/transformers/entities.js +74 -0
- package/dist/transformers/entities.js.map +1 -0
- package/dist/transformers/filters/{defaults.d.mts → defaults.d.ts} +1 -1
- package/dist/transformers/filters/defaults.d.ts.map +1 -0
- package/dist/transformers/filters/{defaults.mjs → defaults.js} +2 -2
- package/dist/transformers/filters/defaults.js.map +1 -0
- package/dist/transformers/filters/index.d.ts +43 -0
- package/dist/transformers/filters/index.d.ts.map +1 -0
- package/dist/transformers/filters/index.js +89 -0
- package/dist/transformers/filters/index.js.map +1 -0
- package/dist/transformers/format.d.ts +22 -0
- package/dist/transformers/format.d.ts.map +1 -0
- package/dist/transformers/format.js +30 -0
- package/dist/transformers/format.js.map +1 -0
- package/dist/transformers/imgWidth.d.ts +20 -0
- package/dist/transformers/imgWidth.d.ts.map +1 -0
- package/dist/transformers/imgWidth.js +76 -0
- package/dist/transformers/imgWidth.js.map +1 -0
- package/dist/transformers/{index.d.mts → index.d.ts} +4 -3
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +163 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/inlineCss.d.ts +85 -0
- package/dist/transformers/inlineCss.d.ts.map +1 -0
- package/dist/transformers/inlineCss.js +112 -0
- package/dist/transformers/inlineCss.js.map +1 -0
- package/dist/transformers/inlineLink.d.ts +35 -0
- package/dist/transformers/inlineLink.d.ts.map +1 -0
- package/dist/transformers/{inlineLink.mjs → inlineLink.js} +35 -11
- package/dist/transformers/inlineLink.js.map +1 -0
- package/dist/transformers/minify.d.ts +21 -0
- package/dist/transformers/minify.d.ts.map +1 -0
- package/dist/transformers/minify.js +25 -0
- package/dist/transformers/minify.js.map +1 -0
- package/dist/transformers/minifyCodeInline.d.ts +29 -0
- package/dist/transformers/minifyCodeInline.d.ts.map +1 -0
- package/dist/transformers/minifyCodeInline.js +36 -0
- package/dist/transformers/minifyCodeInline.js.map +1 -0
- package/dist/transformers/msoPlaceholders.d.ts +33 -0
- package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
- package/dist/transformers/msoPlaceholders.js +114 -0
- package/dist/transformers/msoPlaceholders.js.map +1 -0
- package/dist/transformers/purgeCss.d.ts +43 -0
- package/dist/transformers/purgeCss.d.ts.map +1 -0
- package/dist/transformers/purgeCss.js +207 -0
- package/dist/transformers/purgeCss.js.map +1 -0
- package/dist/transformers/removeAttributes.d.ts +54 -0
- package/dist/transformers/removeAttributes.d.ts.map +1 -0
- package/dist/transformers/removeAttributes.js +72 -0
- package/dist/transformers/removeAttributes.js.map +1 -0
- package/dist/transformers/{replaceStrings.d.mts → replaceStrings.d.ts} +2 -2
- package/dist/transformers/replaceStrings.d.ts.map +1 -0
- package/dist/transformers/{replaceStrings.mjs → replaceStrings.js} +2 -2
- package/dist/transformers/replaceStrings.js.map +1 -0
- package/dist/transformers/safeSelectors.d.ts +37 -0
- package/dist/transformers/safeSelectors.d.ts.map +1 -0
- package/dist/transformers/{safeClassNames.mjs → safeSelectors.js} +40 -10
- package/dist/transformers/safeSelectors.js.map +1 -0
- package/dist/transformers/shorthandCss.d.ts +47 -0
- package/dist/transformers/shorthandCss.d.ts.map +1 -0
- package/dist/transformers/shorthandCss.js +92 -0
- package/dist/transformers/shorthandCss.js.map +1 -0
- package/dist/transformers/sixHex.d.ts +25 -0
- package/dist/transformers/sixHex.d.ts.map +1 -0
- package/dist/transformers/sixHex.js +42 -0
- package/dist/transformers/sixHex.js.map +1 -0
- package/dist/transformers/tailwindComponent.d.ts +16 -0
- package/dist/transformers/tailwindComponent.d.ts.map +1 -0
- package/dist/transformers/tailwindComponent.js +101 -0
- package/dist/transformers/tailwindComponent.js.map +1 -0
- package/dist/transformers/{tailwindcss.d.mts → tailwindcss.d.ts} +2 -2
- package/dist/transformers/tailwindcss.d.ts.map +1 -0
- package/dist/transformers/{tailwindcss.mjs → tailwindcss.js} +33 -74
- package/dist/transformers/tailwindcss.js.map +1 -0
- package/dist/transformers/urlQuery.d.ts +36 -0
- package/dist/transformers/urlQuery.d.ts.map +1 -0
- package/dist/transformers/urlQuery.js +77 -0
- package/dist/transformers/urlQuery.js.map +1 -0
- package/dist/types/{config.d.mts → config.d.ts} +231 -46
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/ast/index.d.ts +4 -0
- package/dist/utils/ast/index.js +4 -0
- package/dist/utils/ast/{parser.d.mts → parser.d.ts} +1 -1
- package/dist/utils/ast/parser.d.ts.map +1 -0
- package/dist/utils/ast/{parser.mjs → parser.js} +2 -3
- package/dist/utils/ast/parser.js.map +1 -0
- package/dist/utils/ast/{serializer.d.mts → serializer.d.ts} +1 -1
- package/dist/utils/ast/serializer.d.ts.map +1 -0
- package/dist/utils/ast/serializer.js +46 -0
- package/dist/utils/ast/serializer.js.map +1 -0
- package/dist/utils/ast/{walker.d.mts → walker.d.ts} +1 -1
- package/dist/utils/ast/walker.d.ts.map +1 -0
- package/dist/utils/ast/{walker.mjs → walker.js} +2 -2
- package/dist/utils/ast/walker.js.map +1 -0
- package/dist/utils/cloneConfig.d.ts +13 -0
- package/dist/utils/cloneConfig.d.ts.map +1 -0
- package/dist/utils/cloneConfig.js +21 -0
- package/dist/utils/cloneConfig.js.map +1 -0
- package/dist/utils/compileTailwindCss.d.ts +16 -0
- package/dist/utils/compileTailwindCss.d.ts.map +1 -0
- package/dist/utils/compileTailwindCss.js +55 -0
- package/dist/utils/compileTailwindCss.js.map +1 -0
- package/dist/utils/componentSources.d.ts +50 -0
- package/dist/utils/componentSources.d.ts.map +1 -0
- package/dist/utils/componentSources.js +50 -0
- package/dist/utils/componentSources.js.map +1 -0
- package/dist/utils/cssBox.d.ts +42 -0
- package/dist/utils/cssBox.d.ts.map +1 -0
- package/dist/utils/cssBox.js +151 -0
- package/dist/utils/cssBox.js.map +1 -0
- package/dist/utils/decodeStyleEntities.d.ts +15 -0
- package/dist/utils/decodeStyleEntities.d.ts.map +1 -0
- package/dist/utils/decodeStyleEntities.js +18 -0
- package/dist/utils/decodeStyleEntities.js.map +1 -0
- package/dist/utils/{detect.d.mts → detect.d.ts} +1 -1
- package/dist/utils/detect.d.ts.map +1 -0
- package/dist/utils/{detect.mjs → detect.js} +2 -3
- package/dist/utils/detect.js.map +1 -0
- package/dist/utils/output-markers.d.ts +29 -0
- package/dist/utils/output-markers.d.ts.map +1 -0
- package/dist/utils/output-markers.js +68 -0
- package/dist/utils/output-markers.js.map +1 -0
- package/dist/utils/{url.d.mts → url.d.ts} +1 -1
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/{url.mjs → url.js} +2 -3
- package/dist/utils/url.js.map +1 -0
- package/dist/utils/watchPaths.d.ts +11 -0
- package/dist/utils/watchPaths.d.ts.map +1 -0
- package/dist/utils/watchPaths.js +19 -0
- package/dist/utils/watchPaths.js.map +1 -0
- package/node_modules/@clack/core/CHANGELOG.md +44 -0
- package/node_modules/@clack/core/dist/index.d.mts +125 -5
- package/node_modules/@clack/core/dist/index.mjs +972 -11
- package/node_modules/@clack/core/package.json +6 -2
- package/node_modules/@clack/prompts/CHANGELOG.md +70 -0
- package/node_modules/@clack/prompts/README.md +129 -3
- package/node_modules/@clack/prompts/dist/index.d.mts +567 -33
- package/node_modules/@clack/prompts/dist/index.mjs +1378 -133
- package/node_modules/@clack/prompts/package.json +7 -4
- package/node_modules/fast-string-truncated-width/dist/index.js +36 -96
- package/node_modules/fast-string-truncated-width/dist/types.d.ts +0 -3
- package/node_modules/fast-string-truncated-width/dist/utils.d.ts +3 -3
- package/node_modules/fast-string-truncated-width/dist/utils.js +14 -9
- package/node_modules/fast-string-truncated-width/package.json +1 -1
- package/node_modules/fast-string-truncated-width/readme.md +2 -3
- package/node_modules/fast-string-width/package.json +2 -2
- package/node_modules/fast-string-width/readme.md +0 -3
- package/node_modules/fast-wrap-ansi/lib/main.js +4 -2
- package/node_modules/fast-wrap-ansi/package.json +11 -11
- package/node_modules/maizzle/README.md +24 -0
- package/node_modules/maizzle/dist/commands/make/component.mjs +1 -1
- package/node_modules/maizzle/dist/commands/make/config.mjs +8 -7
- package/node_modules/maizzle/dist/commands/make/layout.mjs +3 -3
- package/node_modules/maizzle/dist/commands/make/scaffold.mjs +1 -1
- package/node_modules/maizzle/dist/commands/make/stubs/Layout.vue +146 -0
- package/node_modules/maizzle/dist/commands/make/stubs/component.vue +2 -4
- package/node_modules/maizzle/dist/commands/make/stubs/config.ts +1 -5
- package/node_modules/maizzle/dist/commands/make/template.mjs +1 -1
- package/node_modules/maizzle/dist/commands/new.mjs +46 -135
- package/node_modules/maizzle/dist/index.d.mts +1 -0
- package/node_modules/maizzle/dist/index.mjs +30 -7
- package/node_modules/maizzle/package.json +5 -4
- package/node_modules/nypm/dist/cli.mjs +28 -5
- package/node_modules/nypm/dist/index.d.mts +0 -8
- package/node_modules/nypm/dist/index.mjs +27 -4
- package/node_modules/nypm/package.json +12 -12
- package/node_modules/tinyexec/README.md +9 -1
- package/node_modules/tinyexec/dist/main.d.mts +22 -7
- package/node_modules/tinyexec/dist/main.mjs +189 -491
- package/node_modules/tinyexec/package.json +14 -16
- package/package.json +38 -31
- package/dist/_virtual/_rolldown/runtime.mjs +0 -32
- package/dist/build.d.mts +0 -19
- package/dist/build.d.mts.map +0 -1
- package/dist/build.mjs +0 -141
- package/dist/build.mjs.map +0 -1
- package/dist/components/Divider.vue +0 -133
- package/dist/components/Image.vue +0 -70
- package/dist/components/Overlap.vue +0 -80
- package/dist/components/utils.d.mts +0 -5
- package/dist/components/utils.d.mts.map +0 -1
- package/dist/components/utils.mjs +0 -9
- package/dist/components/utils.mjs.map +0 -1
- package/dist/composables/defineConfig.d.mts +0 -14
- package/dist/composables/defineConfig.d.mts.map +0 -1
- package/dist/composables/defineConfig.mjs.map +0 -1
- package/dist/composables/renderContext.d.mts +0 -24
- package/dist/composables/renderContext.d.mts.map +0 -1
- package/dist/composables/renderContext.mjs +0 -6
- package/dist/composables/renderContext.mjs.map +0 -1
- package/dist/composables/useConfig.d.mts +0 -9
- package/dist/composables/useConfig.d.mts.map +0 -1
- package/dist/composables/useConfig.mjs +0 -13
- package/dist/composables/useConfig.mjs.map +0 -1
- package/dist/composables/useDoctype.d.mts.map +0 -1
- package/dist/composables/useDoctype.mjs.map +0 -1
- package/dist/composables/useEvent.d.mts.map +0 -1
- package/dist/composables/useEvent.mjs.map +0 -1
- package/dist/composables/usePlaintext.d.mts.map +0 -1
- package/dist/composables/usePlaintext.mjs.map +0 -1
- package/dist/composables/usePreviewText.d.mts +0 -24
- package/dist/composables/usePreviewText.d.mts.map +0 -1
- package/dist/composables/usePreviewText.mjs +0 -29
- package/dist/composables/usePreviewText.mjs.map +0 -1
- package/dist/config/defaults.d.mts.map +0 -1
- package/dist/config/defaults.mjs.map +0 -1
- package/dist/config/index.d.mts +0 -15
- package/dist/config/index.d.mts.map +0 -1
- package/dist/config/index.mjs +0 -71
- package/dist/config/index.mjs.map +0 -1
- package/dist/events/index.d.mts.map +0 -1
- package/dist/events/index.mjs.map +0 -1
- package/dist/index.d.mts +0 -31
- package/dist/index.mjs +0 -31
- package/dist/node_modules/picomatch/index.mjs +0 -13
- package/dist/node_modules/picomatch/index.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/constants.mjs +0 -174
- package/dist/node_modules/picomatch/lib/constants.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/parse.mjs +0 -1067
- package/dist/node_modules/picomatch/lib/parse.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/picomatch.mjs +0 -304
- package/dist/node_modules/picomatch/lib/picomatch.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/scan.mjs +0 -296
- package/dist/node_modules/picomatch/lib/scan.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/utils.mjs +0 -53
- package/dist/node_modules/picomatch/lib/utils.mjs.map +0 -1
- package/dist/plaintext.d.mts.map +0 -1
- package/dist/plaintext.mjs.map +0 -1
- package/dist/plugin.d.mts.map +0 -1
- package/dist/plugin.mjs.map +0 -1
- package/dist/plugins/postcss/mergeMediaQueries.d.mts.map +0 -1
- package/dist/plugins/postcss/mergeMediaQueries.mjs.map +0 -1
- package/dist/plugins/postcss/pruneVars.d.mts.map +0 -1
- package/dist/plugins/postcss/pruneVars.mjs.map +0 -1
- package/dist/plugins/postcss/removeDeclarations.d.mts.map +0 -1
- package/dist/plugins/postcss/removeDeclarations.mjs.map +0 -1
- package/dist/plugins/postcss/tailwindCleanup.d.mts.map +0 -1
- package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
- package/dist/render/createRenderer.d.mts.map +0 -1
- package/dist/render/createRenderer.mjs +0 -286
- package/dist/render/createRenderer.mjs.map +0 -1
- package/dist/render/index.d.mts +0 -26
- package/dist/render/index.d.mts.map +0 -1
- package/dist/render/index.mjs +0 -46
- package/dist/render/index.mjs.map +0 -1
- package/dist/serve.d.mts.map +0 -1
- package/dist/serve.mjs.map +0 -1
- package/dist/server/compatibility.d.mts +0 -5
- package/dist/server/compatibility.d.mts.map +0 -1
- package/dist/server/compatibility.mjs +0 -97
- package/dist/server/compatibility.mjs.map +0 -1
- package/dist/server/email.d.mts.map +0 -1
- package/dist/server/email.mjs.map +0 -1
- package/dist/server/linter.d.mts +0 -5
- package/dist/server/linter.d.mts.map +0 -1
- package/dist/server/linter.mjs +0 -189
- package/dist/server/linter.mjs.map +0 -1
- package/dist/transformers/addAttributes.d.mts +0 -32
- package/dist/transformers/addAttributes.d.mts.map +0 -1
- package/dist/transformers/addAttributes.mjs.map +0 -1
- package/dist/transformers/attributeToStyle.d.mts +0 -25
- package/dist/transformers/attributeToStyle.d.mts.map +0 -1
- package/dist/transformers/attributeToStyle.mjs +0 -80
- package/dist/transformers/attributeToStyle.mjs.map +0 -1
- package/dist/transformers/base.d.mts +0 -8
- package/dist/transformers/base.d.mts.map +0 -1
- package/dist/transformers/base.mjs.map +0 -1
- package/dist/transformers/entities.d.mts +0 -8
- package/dist/transformers/entities.d.mts.map +0 -1
- package/dist/transformers/entities.mjs +0 -41
- package/dist/transformers/entities.mjs.map +0 -1
- package/dist/transformers/filters/defaults.d.mts.map +0 -1
- package/dist/transformers/filters/defaults.mjs.map +0 -1
- package/dist/transformers/filters/index.d.mts +0 -22
- package/dist/transformers/filters/index.d.mts.map +0 -1
- package/dist/transformers/filters/index.mjs +0 -67
- package/dist/transformers/filters/index.mjs.map +0 -1
- package/dist/transformers/format.d.mts +0 -15
- package/dist/transformers/format.d.mts.map +0 -1
- package/dist/transformers/format.mjs +0 -26
- package/dist/transformers/format.mjs.map +0 -1
- package/dist/transformers/index.d.mts.map +0 -1
- package/dist/transformers/index.mjs +0 -81
- package/dist/transformers/index.mjs.map +0 -1
- package/dist/transformers/inlineCSS.d.mts +0 -17
- package/dist/transformers/inlineCSS.d.mts.map +0 -1
- package/dist/transformers/inlineCSS.mjs +0 -70
- package/dist/transformers/inlineCSS.mjs.map +0 -1
- package/dist/transformers/inlineLink.d.mts +0 -14
- package/dist/transformers/inlineLink.d.mts.map +0 -1
- package/dist/transformers/inlineLink.mjs.map +0 -1
- package/dist/transformers/minify.d.mts +0 -17
- package/dist/transformers/minify.d.mts.map +0 -1
- package/dist/transformers/minify.mjs +0 -24
- package/dist/transformers/minify.mjs.map +0 -1
- package/dist/transformers/purgeCSS.d.mts +0 -23
- package/dist/transformers/purgeCSS.d.mts.map +0 -1
- package/dist/transformers/purgeCSS.mjs +0 -132
- package/dist/transformers/purgeCSS.mjs.map +0 -1
- package/dist/transformers/removeAttributes.d.mts +0 -31
- package/dist/transformers/removeAttributes.d.mts.map +0 -1
- package/dist/transformers/removeAttributes.mjs +0 -63
- package/dist/transformers/removeAttributes.mjs.map +0 -1
- package/dist/transformers/replaceStrings.d.mts.map +0 -1
- package/dist/transformers/replaceStrings.mjs.map +0 -1
- package/dist/transformers/safeClassNames.d.mts +0 -22
- package/dist/transformers/safeClassNames.d.mts.map +0 -1
- package/dist/transformers/safeClassNames.mjs.map +0 -1
- package/dist/transformers/shorthandCSS.d.mts +0 -24
- package/dist/transformers/shorthandCSS.d.mts.map +0 -1
- package/dist/transformers/shorthandCSS.mjs +0 -48
- package/dist/transformers/shorthandCSS.mjs.map +0 -1
- package/dist/transformers/sixHex.d.mts +0 -16
- package/dist/transformers/sixHex.d.mts.map +0 -1
- package/dist/transformers/sixHex.mjs +0 -30
- package/dist/transformers/sixHex.mjs.map +0 -1
- package/dist/transformers/tailwindcss.d.mts.map +0 -1
- package/dist/transformers/tailwindcss.mjs.map +0 -1
- package/dist/transformers/urlQuery.d.mts +0 -24
- package/dist/transformers/urlQuery.d.mts.map +0 -1
- package/dist/transformers/urlQuery.mjs +0 -65
- package/dist/transformers/urlQuery.mjs.map +0 -1
- package/dist/types/config.d.mts.map +0 -1
- package/dist/types/config.mjs +0 -1
- package/dist/types/index.d.mts +0 -2
- package/dist/types/index.mjs +0 -1
- package/dist/utils/ast/index.d.mts +0 -4
- package/dist/utils/ast/index.mjs +0 -5
- package/dist/utils/ast/parser.d.mts.map +0 -1
- package/dist/utils/ast/parser.mjs.map +0 -1
- package/dist/utils/ast/serializer.d.mts.map +0 -1
- package/dist/utils/ast/serializer.mjs +0 -37
- package/dist/utils/ast/serializer.mjs.map +0 -1
- package/dist/utils/ast/walker.d.mts.map +0 -1
- package/dist/utils/ast/walker.mjs.map +0 -1
- package/dist/utils/detect.d.mts.map +0 -1
- package/dist/utils/detect.mjs.map +0 -1
- package/dist/utils/url.d.mts.map +0 -1
- package/dist/utils/url.mjs.map +0 -1
- package/node_modules/@clack/core/dist/index.mjs.map +0 -1
- package/node_modules/@clack/prompts/dist/index.mjs.map +0 -1
- package/node_modules/fast-wrap-ansi/lib/main.js.map +0 -1
- package/node_modules/maizzle/dist/commands/make/stubs/layout.vue +0 -39
- package/node_modules/tinyexec/dist/LICENSES.txt +0 -83
|
@@ -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;AACjB;AAEA,MAAM,oBAAkD;CACtD,MAAM;CACN,OAAO;CACP,MAAM;CACN,SAAS;CACT,aAAa;AACf;AAkCA,MAAM,oBAAkD;CACtD,QAAQ;CACR,OAAO;AACT;AAEA,SAAS,QAAQ,QAAwB;CACvC,OAAO,OACJ,KAAK,CAAC,CACN,YAAY,CAAC,CACb,QAAQ,QAAQ,GAAG,CAAC,CACpB,QAAQ,eAAe,EAAE;AAC9B;AAEA,SAAS,iBAAiB,MAAkE;CAC1F,MAAM,cAAc,KAAK,OAAO,KAAK,CAAC,CAAC,QAAQ,QAAQ,GAAG;CAC1D,MAAM,UAAU,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC;CACtD,MAAM,YAAY,KAAK,OAAO,SAAS,QAAQ;CAC/C,MAAM,YAAY,KAAK,OAAO,SAAS,QAAQ;CAE/C,MAAM,OAAO,YACT,cAAc,QAAQ,SAAQ,MAAK,CACjC,GAAI,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,GAC9B,KAAK,GACP,CAAC,CAAC,CAAC,KAAK,GAAG,MACX,SAAS,QAAQ,KAAK,GAAG;CAE7B,OAAO,GAAG,kBAAkB,KAAK,UAAU,UAAU,cAAc,KAAK,WAAW,KAAK;AAC1F;;;;;;;;;;;;;;;;AAiBA,SAAgB,QAAQ,SAA+B;CACrD,MAAM,MAAM,OAAO,gBAAgB;CACnC,IAAI,CAAC,KAAK;CAEV,IAAI,QAAQ,IAAI,SAAS,CAAC;CAC1B,IAAI,IAAI,MAAM,MAAK,MAAK,EAAE,WAAW,QAAQ,MAAM,GAAG;CAEtD,MAAM,MAAM,QAAQ,OAAO,iBAAiB;EAC1C,QAAQ,QAAQ;EAChB,UAAU,QAAQ,YAAY;EAC9B,SAAS,QAAQ,WAAW,CAAC,GAAG;EAChC,SAAS,QAAQ,WAAW;EAC5B,QAAQ,QAAQ,UAAU,CAAC,QAAQ;CACrC,CAAC;CAED,MAAM,WAAW,QAAQ,YACpB,kBAAkB,kBAAkB,QAAQ,WAAW;CAE5D,MAAM,cAAc,GADL,KAAK,KAAK,QAAQ,MAAM,IAAI,IAAI,QAAQ,OAAO,KAAK,QAAQ,OAC7C,IAAI;CAElC,IAAI,MAAM,KAAK;EACb,QAAQ,QAAQ;EAChB,MAAM,QAAQ,QAAQ,MAAM;EAC5B;EACA;CACF,CAAC;AACH"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/composables/useOutlookFallback.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Toggle whether descendants emit Outlook (MSO) and VML fallback markup.
|
|
4
|
+
*
|
|
5
|
+
* Call once in a Layout/template's `<script setup>` to disable for the
|
|
6
|
+
* whole tree:
|
|
7
|
+
* `useOutlookFallback(false)`
|
|
8
|
+
*
|
|
9
|
+
* Components inheriting `false` skip MSO ghost tables, VML rectangles,
|
|
10
|
+
* `xmlns:v`/`xmlns:o`, mso-specific CSS, and Button's `<Outlook>`
|
|
11
|
+
* spacers. Each MSO-aware component still accepts an `outlook-fallback`
|
|
12
|
+
* prop that overrides inheritance for its subtree.
|
|
13
|
+
*
|
|
14
|
+
* @param value Pass `true`/`false` to set; omit to just read the
|
|
15
|
+
* inherited value (defaults to `true` at the root).
|
|
16
|
+
* @returns The resolved boolean for the current component.
|
|
17
|
+
*/
|
|
18
|
+
declare function useOutlookFallback(value?: boolean | null): boolean;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { useOutlookFallback };
|
|
21
|
+
//# sourceMappingURL=useOutlookFallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOutlookFallback.d.ts","names":[],"sources":["../../src/composables/useOutlookFallback.ts"],"mappings":";;AAoBA;;;;AAAyD;;;;;;;;;;;iBAAzC,kBAAA,CAAmB,KAAsB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { inject, provide } from "vue";
|
|
2
|
+
//#region src/composables/useOutlookFallback.ts
|
|
3
|
+
const OutlookFallbackKey = Symbol("OutlookFallback");
|
|
4
|
+
/**
|
|
5
|
+
* Toggle whether descendants emit Outlook (MSO) and VML fallback markup.
|
|
6
|
+
*
|
|
7
|
+
* Call once in a Layout/template's `<script setup>` to disable for the
|
|
8
|
+
* whole tree:
|
|
9
|
+
* `useOutlookFallback(false)`
|
|
10
|
+
*
|
|
11
|
+
* Components inheriting `false` skip MSO ghost tables, VML rectangles,
|
|
12
|
+
* `xmlns:v`/`xmlns:o`, mso-specific CSS, and Button's `<Outlook>`
|
|
13
|
+
* spacers. Each MSO-aware component still accepts an `outlook-fallback`
|
|
14
|
+
* prop that overrides inheritance for its subtree.
|
|
15
|
+
*
|
|
16
|
+
* @param value Pass `true`/`false` to set; omit to just read the
|
|
17
|
+
* inherited value (defaults to `true` at the root).
|
|
18
|
+
* @returns The resolved boolean for the current component.
|
|
19
|
+
*/
|
|
20
|
+
function useOutlookFallback(value) {
|
|
21
|
+
const inherited = inject(OutlookFallbackKey, true);
|
|
22
|
+
const enabled = value == null ? inherited : value;
|
|
23
|
+
provide(OutlookFallbackKey, enabled);
|
|
24
|
+
return enabled;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { useOutlookFallback };
|
|
28
|
+
|
|
29
|
+
//# 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,iBAAiB;;;;;;;;;;;;;;;;;AAkB1E,SAAgB,mBAAmB,OAAiC;CAClE,MAAM,YAAY,OAAO,oBAAoB,IAAI;CACjD,MAAM,UAAU,SAAS,OAAO,YAAY;CAC5C,QAAQ,oBAAoB,OAAO;CACnC,OAAO;AACT"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/composables/useOutputPath.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Override the output file path for the current template.
|
|
4
|
+
*
|
|
5
|
+
* The path is relative to the project root (cwd); it may be
|
|
6
|
+
* absolute or escape the output directory with `../`. If it
|
|
7
|
+
* has no extension, `output.extension` is appended.
|
|
8
|
+
*
|
|
9
|
+
* Usage in SFC <script setup>:
|
|
10
|
+
* ```ts
|
|
11
|
+
* useOutputPath('dist/promos/black-friday.html')
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare function useOutputPath(path: string): void;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { useOutputPath };
|
|
17
|
+
//# sourceMappingURL=useOutputPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOutputPath.d.ts","names":[],"sources":["../../src/composables/useOutputPath.ts"],"mappings":";;AAeA;;;;AAA0C;;;;;;;iBAA1B,aAAA,CAAc,IAAY"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RenderContextKey } from "./renderContext.js";
|
|
2
|
+
import { inject } from "vue";
|
|
3
|
+
//#region src/composables/useOutputPath.ts
|
|
4
|
+
/**
|
|
5
|
+
* Override the output file path for the current template.
|
|
6
|
+
*
|
|
7
|
+
* The path is relative to the project root (cwd); it may be
|
|
8
|
+
* absolute or escape the output directory with `../`. If it
|
|
9
|
+
* has no extension, `output.extension` is appended.
|
|
10
|
+
*
|
|
11
|
+
* Usage in SFC <script setup>:
|
|
12
|
+
* ```ts
|
|
13
|
+
* useOutputPath('dist/promos/black-friday.html')
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function useOutputPath(path) {
|
|
17
|
+
const ctx = inject(RenderContextKey);
|
|
18
|
+
if (ctx) ctx.outputPath = path;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { useOutputPath };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=useOutputPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOutputPath.js","names":[],"sources":["../../src/composables/useOutputPath.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { RenderContextKey } from './renderContext.ts'\n\n/**\n * Override the output file path for the current template.\n *\n * The path is relative to the project root (cwd); it may be\n * absolute or escape the output directory with `../`. If it\n * has no extension, `output.extension` is appended.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * useOutputPath('dist/promos/black-friday.html')\n * ```\n */\nexport function useOutputPath(path: string): void {\n const ctx = inject(RenderContextKey)\n if (ctx) ctx.outputPath = path\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,SAAgB,cAAc,MAAoB;CAChD,MAAM,MAAM,OAAO,gBAAgB;CACnC,IAAI,KAAK,IAAI,aAAa;AAC5B"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
interface UsePlaintextOptions {
|
|
3
3
|
extension?: string;
|
|
4
4
|
destination?: string;
|
|
5
|
+
options?: Record<string, unknown>;
|
|
5
6
|
}
|
|
6
7
|
/**
|
|
7
8
|
* Enable plaintext generation for the current email template.
|
|
@@ -11,9 +12,10 @@ interface UsePlaintextOptions {
|
|
|
11
12
|
* usePlaintext()
|
|
12
13
|
* usePlaintext({ extension: 'text' })
|
|
13
14
|
* usePlaintext({ destination: '/custom/path' })
|
|
15
|
+
* usePlaintext({ options: { ignoreTags: ['br'] } })
|
|
14
16
|
* ```
|
|
15
17
|
*/
|
|
16
18
|
declare function usePlaintext(options?: UsePlaintextOptions): void;
|
|
17
19
|
//#endregion
|
|
18
20
|
export { UsePlaintextOptions, usePlaintext };
|
|
19
|
-
//# sourceMappingURL=usePlaintext.d.
|
|
21
|
+
//# 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;EACA,OAAA,GAAU,MAAM;AAAA;;;;;;AAAA;AAclB;;;;AAA0D;iBAA1C,YAAA,CAAa,OAA6B,GAAnB,mBAAmB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { RenderContextKey } from "./renderContext.
|
|
1
|
+
import { RenderContextKey } from "./renderContext.js";
|
|
2
2
|
import { inject } from "vue";
|
|
3
|
-
|
|
4
3
|
//#region src/composables/usePlaintext.ts
|
|
5
4
|
/**
|
|
6
5
|
* Enable plaintext generation for the current email template.
|
|
@@ -10,13 +9,14 @@ import { inject } from "vue";
|
|
|
10
9
|
* usePlaintext()
|
|
11
10
|
* usePlaintext({ extension: 'text' })
|
|
12
11
|
* usePlaintext({ destination: '/custom/path' })
|
|
12
|
+
* usePlaintext({ options: { ignoreTags: ['br'] } })
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
15
|
function usePlaintext(options) {
|
|
16
16
|
const ctx = inject(RenderContextKey);
|
|
17
17
|
if (ctx) ctx.plaintext = options ?? {};
|
|
18
18
|
}
|
|
19
|
-
|
|
20
19
|
//#endregion
|
|
21
20
|
export { usePlaintext };
|
|
22
|
-
|
|
21
|
+
|
|
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 options?: Record<string, unknown>\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 * usePlaintext({ options: { ignoreTags: ['br'] } })\n * ```\n */\nexport function usePlaintext(options?: UsePlaintextOptions): void {\n const ctx = inject(RenderContextKey)\n if (ctx) ctx.plaintext = options ?? {}\n}\n"],"mappings":";;;;;;;;;;;;;;AAoBA,SAAgB,aAAa,SAAqC;CAChE,MAAM,MAAM,OAAO,gBAAgB;CACnC,IAAI,KAAK,IAAI,YAAY,WAAW,CAAC;AACvC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/composables/usePreheader.d.ts
|
|
2
|
+
interface UsePreheaderOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Explicit number of filler sequences to render. When omitted, the count
|
|
5
|
+
* is auto-derived to fill the 200-char inbox preview budget.
|
|
6
|
+
*/
|
|
7
|
+
spaces?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Set the preheader text for the current email template.
|
|
11
|
+
*
|
|
12
|
+
* Injects a hidden `<div>` at the start of `<body>` with the preheader text
|
|
13
|
+
* followed by filler characters that prevent email clients from pulling
|
|
14
|
+
* in body content after the preheader.
|
|
15
|
+
*
|
|
16
|
+
* Usage in SFC <script setup>:
|
|
17
|
+
* ```ts
|
|
18
|
+
* usePreheader('Thanks for signing up!')
|
|
19
|
+
* usePreheader('Welcome!', { spaces: 50 })
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare function usePreheader(text: string, options?: UsePreheaderOptions): void;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { UsePreheaderOptions, usePreheader };
|
|
25
|
+
//# sourceMappingURL=usePreheader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePreheader.d.ts","names":[],"sources":["../../src/composables/usePreheader.ts"],"mappings":";UAKiB,mBAAA;EAAA;;;;EAKf,MAAM;AAAA;;;;;;;;AAgBgE;;;;;;iBAAxD,YAAA,CAAa,IAAA,UAAc,OAAA,GAAU,mBAAmB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { RenderContextKey } from "./renderContext.js";
|
|
2
|
+
import { inject } from "vue";
|
|
3
|
+
//#region src/composables/usePreheader.ts
|
|
4
|
+
const PREVIEW_LENGTH = 200;
|
|
5
|
+
/**
|
|
6
|
+
* Set the preheader text for the current email template.
|
|
7
|
+
*
|
|
8
|
+
* Injects a hidden `<div>` at the start of `<body>` with the preheader text
|
|
9
|
+
* followed by filler characters that prevent email clients from pulling
|
|
10
|
+
* in body content after the preheader.
|
|
11
|
+
*
|
|
12
|
+
* Usage in SFC <script setup>:
|
|
13
|
+
* ```ts
|
|
14
|
+
* usePreheader('Thanks for signing up!')
|
|
15
|
+
* usePreheader('Welcome!', { spaces: 50 })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function usePreheader(text, options) {
|
|
19
|
+
const ctx = inject(RenderContextKey);
|
|
20
|
+
if (ctx) ctx.preheader = {
|
|
21
|
+
text,
|
|
22
|
+
fillerCount: options?.spaces !== void 0 ? Math.max(0, options.spaces) : Math.max(0, PREVIEW_LENGTH - text.length)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { usePreheader };
|
|
27
|
+
|
|
28
|
+
//# 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\nconst PREVIEW_LENGTH = 200\n\nexport interface UsePreheaderOptions {\n /**\n * Explicit number of filler sequences to render. When omitted, the count\n * is auto-derived to fill the 200-char inbox preview budget.\n */\n spaces?: 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!', { spaces: 50 })\n * ```\n */\nexport function usePreheader(text: string, options?: UsePreheaderOptions): void {\n const ctx = inject(RenderContextKey)\n if (ctx) {\n const fillerCount = options?.spaces !== undefined\n ? Math.max(0, options.spaces)\n : Math.max(0, PREVIEW_LENGTH - text.length)\n ctx.preheader = { text, fillerCount }\n }\n}\n"],"mappings":";;;AAGA,MAAM,iBAAiB;;;;;;;;;;;;;;AAuBvB,SAAgB,aAAa,MAAc,SAAqC;CAC9E,MAAM,MAAM,OAAO,gBAAgB;CACnC,IAAI,KAIF,IAAI,YAAY;EAAE;EAAM,aAHJ,SAAS,WAAW,KAAA,IACpC,KAAK,IAAI,GAAG,QAAQ,MAAM,IAC1B,KAAK,IAAI,GAAG,iBAAiB,KAAK,MAAM;CACR;AAExC"}
|
|
@@ -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
|
+
* safeSelectors, 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;;;;AAA0E;;;;;;;;;;;;;;;;;;;;;iBAA1D,eAAA,CAAgB,KAA0C,aAAzB,kBAAyB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MaizzleConfigKey } from "./useConfig.js";
|
|
2
|
+
import { RenderContextKey } from "./renderContext.js";
|
|
3
|
+
import { getCurrentInstance, inject, provide } from "vue";
|
|
4
|
+
//#region src/composables/useTransformers.ts
|
|
5
|
+
/**
|
|
6
|
+
* Toggle the transformer pipeline for the current template.
|
|
7
|
+
*
|
|
8
|
+
* - `useTransformers(false)` skips the entire pipeline (CSS inlining,
|
|
9
|
+
* purging, shorthand, etc).
|
|
10
|
+
* - `useTransformers(true)` (or no argument) keeps everything on.
|
|
11
|
+
* - `useTransformers({ inlineCss: false, minify: false })` runs the
|
|
12
|
+
* pipeline but skips the listed transformers.
|
|
13
|
+
* - `useTransformers({ prettify: true, minify: true })` *enables*
|
|
14
|
+
* transformers that would otherwise no-op (boolean-driven ones:
|
|
15
|
+
* inlineCss, purgeCss, prettify, minify, shorthandCss, sixHex,
|
|
16
|
+
* safeSelectors, entities). Same effect as setting their config
|
|
17
|
+
* slice directly, scoped to one template.
|
|
18
|
+
*
|
|
19
|
+
* Data-driven transformers (filters, baseURL, urlQuery, addAttributes,
|
|
20
|
+
* removeAttributes, replaceStrings, attributeToStyle) need actual
|
|
21
|
+
* values in config — a bare `true` toggle for them is a no-op.
|
|
22
|
+
*
|
|
23
|
+
* Mirrors the `useTransformers` config flag, scoped to a single template
|
|
24
|
+
* — no need to edit `maizzle.config.ts`.
|
|
25
|
+
*
|
|
26
|
+
* Usage in SFC <script setup>:
|
|
27
|
+
* ```ts
|
|
28
|
+
* useTransformers(false)
|
|
29
|
+
* useTransformers({ inlineCss: false, minify: false })
|
|
30
|
+
* useTransformers({ prettify: true })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
function useTransformers(value = true) {
|
|
34
|
+
if (!getCurrentInstance()) return;
|
|
35
|
+
const ctx = inject(RenderContextKey);
|
|
36
|
+
if (!ctx) return;
|
|
37
|
+
const globalConfig = inject(MaizzleConfigKey, {});
|
|
38
|
+
const merged = {
|
|
39
|
+
...ctx.sfcConfig ?? globalConfig,
|
|
40
|
+
useTransformers: value
|
|
41
|
+
};
|
|
42
|
+
ctx.sfcConfig = merged;
|
|
43
|
+
provide(MaizzleConfigKey, merged);
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { useTransformers };
|
|
47
|
+
|
|
48
|
+
//# 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 * safeSelectors, 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;CAChF,IAAI,CAAC,mBAAmB,GAAG;CAE3B,MAAM,MAAM,OAAO,gBAAgB;CACnC,IAAI,CAAC,KAAK;CAEV,MAAM,eAAe,OAAO,kBAAkB,CAAC,CAAkB;CACjE,MAAM,SAAwB;EAC5B,GAAI,IAAI,aAAa;EACrB,iBAAiB;CACnB;CAEA,IAAI,YAAY;CAChB,QAAQ,kBAAkB,MAAM;AAClC"}
|
|
@@ -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;;;;AAA2C;;;;;;iBAA3B,WAAA,CAAY,KAAe,EAAR,QAAQ"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RenderContextKey } from "./renderContext.js";
|
|
2
|
+
import { defu as defu$1 } from "defu";
|
|
3
|
+
import { inject } from "vue";
|
|
4
|
+
//#region src/composables/useUrlQuery.ts
|
|
5
|
+
/**
|
|
6
|
+
* Append query parameters to URLs in the current email template — same
|
|
7
|
+
* as `config.url.query`, scoped to one SFC. Common use: per-template
|
|
8
|
+
* UTM parameters or campaign tracking.
|
|
9
|
+
*
|
|
10
|
+
* Usage in SFC <script setup>:
|
|
11
|
+
* ```ts
|
|
12
|
+
* useUrlQuery({ utm_source: 'maizzle', utm_campaign: 'newsletter' })
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Pass `_options` alongside the params to tweak which tags/attributes
|
|
16
|
+
* receive them (see `UrlQueryOptions`).
|
|
17
|
+
*/
|
|
18
|
+
function useUrlQuery(value) {
|
|
19
|
+
const ctx = inject(RenderContextKey);
|
|
20
|
+
if (!ctx) return;
|
|
21
|
+
ctx.sfcConfig = defu$1({ url: { query: value } }, ctx.sfcConfig ?? {});
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { useUrlQuery };
|
|
25
|
+
|
|
26
|
+
//# 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,gBAAgB;CACnC,IAAI,CAAC,KAAK;CACV,IAAI,YAAYA,OAAM,EAAE,KAAK,EAAE,OAAO,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,CAAC;AACtE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { MaizzleConfig } from "../types/config.
|
|
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.
|
|
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,aA0BtB"}
|
|
@@ -14,15 +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
|
-
preferUnitless: true
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
preferUnitless: true
|
|
22
|
+
},
|
|
23
|
+
html: {
|
|
24
|
+
decodeEntities: true,
|
|
25
|
+
format: true
|
|
21
26
|
},
|
|
22
|
-
html: { decodeEntities: true },
|
|
23
27
|
useTransformers: true
|
|
24
28
|
};
|
|
25
|
-
|
|
26
29
|
//#endregion
|
|
27
30
|
export { defaults };
|
|
28
|
-
|
|
31
|
+
|
|
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,sBAAsB;CAChC,QAAQ;EACN,MAAM;EACN,WAAW;CACb;CACA,QAAQ;EACN,QAAQ,CAAC,eAAe;EACxB,aAAa;CACf;CACA,QAAQ;EACN,MAAM;EACN,OAAO,CAAC;CACV;CACA,KAAK;EACH,QAAQ;EACR,OAAO;EACP,WAAW;EACX,MAAM;EACN,gBAAgB;CAClB;CACA,MAAM;EACJ,gBAAgB;EAChB,QAAQ;CACV;CACA,iBAAiB;AACnB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { MaizzleConfig } from "../types/config.js";
|
|
2
|
+
import { defineConfig } from "../composables/defineConfig.js";
|
|
3
|
+
import { defaults } from "./defaults.js";
|
|
4
|
+
|
|
5
|
+
//#region src/config/index.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the Maizzle config.
|
|
8
|
+
*
|
|
9
|
+
* Always loads from the config file on disk (maizzle.config.{ts,js}),
|
|
10
|
+
* then merges the programmatic config on top, then fills in defaults.
|
|
11
|
+
*/
|
|
12
|
+
declare function resolveConfig(config?: Partial<MaizzleConfig> | string, cwd?: string): Promise<MaizzleConfig>;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve config from a programmatic object only — never touches disk.
|
|
15
|
+
*
|
|
16
|
+
* `render()` uses this so a stray `maizzle.config.{ts,js}` in `cwd` can't
|
|
17
|
+
* silently alter output: the config you pass is the config you get, layered
|
|
18
|
+
* over defaults. Callers who want the project's file config load it
|
|
19
|
+
* explicitly via {@link resolveConfig} and pass the result in.
|
|
20
|
+
*/
|
|
21
|
+
declare function resolveConfigObject(config?: Partial<MaizzleConfig>, cwd?: string): MaizzleConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Whether Node can natively `import()` this file as ESM — true for `.mjs`
|
|
24
|
+
* and for `.js` whose nearest package.json declares `"type": "module"`.
|
|
25
|
+
* jiti hands such files to Node's native loader, which caches them in the
|
|
26
|
+
* (unbustable) module registry, so we import them ourselves with a fresh
|
|
27
|
+
* query instead. Everything else (CJS, TS) goes through jiti, which already
|
|
28
|
+
* re-evaluates per instance.
|
|
29
|
+
*/
|
|
30
|
+
declare function isNativeESM(absolutePath: string): boolean;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { defaults, defineConfig, isNativeESM, resolveConfig, resolveConfigObject };
|
|
33
|
+
//# 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;;;;;;;;;iBAqBK,mBAAA,CACd,MAAA,GAAS,OAAA,CAAQ,aAAA,GACjB,GAAA,YACC,aAAA;;;;AAxBqB;AAqBxB;;;;iBAuFgB,WAAA,CAAY,YAAoB"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { defaults } from "./defaults.js";
|
|
2
|
+
import { defineConfig } from "../composables/defineConfig.js";
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
5
|
+
import { dirname, extname, join, resolve } from "pathe";
|
|
6
|
+
import { createJiti } from "jiti";
|
|
7
|
+
import { createDefu } from "defu";
|
|
8
|
+
//#region src/config/index.ts
|
|
9
|
+
const merge = createDefu((obj, key, value) => {
|
|
10
|
+
if (Array.isArray(obj[key])) {
|
|
11
|
+
obj[key] = value;
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const CONFIG_FILES = ["maizzle.config.ts", "maizzle.config.js"];
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the Maizzle config.
|
|
18
|
+
*
|
|
19
|
+
* Always loads from the config file on disk (maizzle.config.{ts,js}),
|
|
20
|
+
* then merges the programmatic config on top, then fills in defaults.
|
|
21
|
+
*/
|
|
22
|
+
async function resolveConfig(config, cwd = process.cwd()) {
|
|
23
|
+
const fileConfig = await loadConfig(typeof config === "string" ? config : void 0, cwd);
|
|
24
|
+
return normalizeConfig(typeof config === "object" && config !== null ? config : {}, fileConfig, cwd);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Resolve config from a programmatic object only — never touches disk.
|
|
28
|
+
*
|
|
29
|
+
* `render()` uses this so a stray `maizzle.config.{ts,js}` in `cwd` can't
|
|
30
|
+
* silently alter output: the config you pass is the config you get, layered
|
|
31
|
+
* over defaults. Callers who want the project's file config load it
|
|
32
|
+
* explicitly via {@link resolveConfig} and pass the result in.
|
|
33
|
+
*/
|
|
34
|
+
function resolveConfigObject(config, cwd = process.cwd()) {
|
|
35
|
+
return normalizeConfig(config && typeof config === "object" ? config : {}, {}, cwd);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Merge programmatic config over file config over defaults, then resolve
|
|
39
|
+
* filesystem paths (root, content, static, components) relative to cwd/root.
|
|
40
|
+
*/
|
|
41
|
+
function normalizeConfig(programmaticConfig, fileConfig, cwd) {
|
|
42
|
+
const merged = merge(programmaticConfig, fileConfig, defaults);
|
|
43
|
+
const hasExplicitRoot = !!(programmaticConfig.root ?? fileConfig.root);
|
|
44
|
+
const root = resolve(cwd, merged.root ?? ".");
|
|
45
|
+
merged.root = root;
|
|
46
|
+
if (merged.content) merged.content = merged.content.map((p) => {
|
|
47
|
+
if (p.startsWith("/") || p.startsWith("!")) return p;
|
|
48
|
+
return resolve(root, p);
|
|
49
|
+
});
|
|
50
|
+
if (merged.static?.source) merged.static.source = merged.static.source.map((p) => {
|
|
51
|
+
if (p.startsWith("/") || p.startsWith("!")) return p;
|
|
52
|
+
return resolve(root, p);
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Resolve components.source paths relative to cwd (not root), since extra
|
|
56
|
+
* component dirs often live outside the root directory. String
|
|
57
|
+
* entries → resolve in-place. Object entries → resolve
|
|
58
|
+
* `path`, preserve `prefix`/`pathPrefix`.
|
|
59
|
+
*/
|
|
60
|
+
if (merged.components?.source) {
|
|
61
|
+
const dirs = Array.isArray(merged.components.source) ? merged.components.source : [merged.components.source];
|
|
62
|
+
merged.components.source = dirs.map((entry) => {
|
|
63
|
+
if (typeof entry === "string") return entry.startsWith("/") ? entry : resolve(cwd, entry);
|
|
64
|
+
return {
|
|
65
|
+
...entry,
|
|
66
|
+
path: entry.path.startsWith("/") ? entry.path : resolve(cwd, entry.path)
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Default css.base to root when root is explicitly set, so Tailwind resolves
|
|
72
|
+
* @source from the right directory. When root is not set, leave
|
|
73
|
+
* css.base undefined so Tailwind uses its own default (the
|
|
74
|
+
* template file's directory).
|
|
75
|
+
*/
|
|
76
|
+
if (hasExplicitRoot && !merged.css?.base) {
|
|
77
|
+
if (!merged.css) merged.css = {};
|
|
78
|
+
merged.css.base = root;
|
|
79
|
+
}
|
|
80
|
+
return merged;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Whether Node can natively `import()` this file as ESM — true for `.mjs`
|
|
84
|
+
* and for `.js` whose nearest package.json declares `"type": "module"`.
|
|
85
|
+
* jiti hands such files to Node's native loader, which caches them in the
|
|
86
|
+
* (unbustable) module registry, so we import them ourselves with a fresh
|
|
87
|
+
* query instead. Everything else (CJS, TS) goes through jiti, which already
|
|
88
|
+
* re-evaluates per instance.
|
|
89
|
+
*/
|
|
90
|
+
function isNativeESM(absolutePath) {
|
|
91
|
+
const ext = extname(absolutePath);
|
|
92
|
+
if (ext === ".mjs") return true;
|
|
93
|
+
if (ext === ".cjs" || ext === ".ts" || ext === ".mts" || ext === ".cts") return false;
|
|
94
|
+
let dir = dirname(absolutePath);
|
|
95
|
+
for (;;) {
|
|
96
|
+
const pkgPath = join(dir, "package.json");
|
|
97
|
+
if (existsSync(pkgPath)) try {
|
|
98
|
+
return JSON.parse(readFileSync(pkgPath, "utf-8")).type === "module";
|
|
99
|
+
} catch {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
const parent = dirname(dir);
|
|
103
|
+
if (parent === dir) return false;
|
|
104
|
+
dir = parent;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Monotonic nonce appended to native-import URLs so each load is fresh even
|
|
109
|
+
* when two reloads land in the same millisecond.
|
|
110
|
+
*/
|
|
111
|
+
let configLoadNonce = 0;
|
|
112
|
+
async function importConfig(absolutePath, jiti) {
|
|
113
|
+
if (isNativeESM(absolutePath)) {
|
|
114
|
+
const mod = await import(`${pathToFileURL(absolutePath).href}?t=${Date.now()}-${configLoadNonce++}`);
|
|
115
|
+
return mod.default ?? mod;
|
|
116
|
+
}
|
|
117
|
+
const mod = await jiti.import(absolutePath);
|
|
118
|
+
return mod.default ?? mod;
|
|
119
|
+
}
|
|
120
|
+
async function loadConfig(configPath, cwd = process.cwd()) {
|
|
121
|
+
const jiti = createJiti(fileURLToPath(import.meta.url), { moduleCache: false });
|
|
122
|
+
if (configPath) {
|
|
123
|
+
const absolutePath = resolve(cwd, configPath);
|
|
124
|
+
if (!existsSync(absolutePath)) throw new Error(`Config file not found: ${absolutePath}`);
|
|
125
|
+
return importConfig(absolutePath, jiti);
|
|
126
|
+
}
|
|
127
|
+
for (const filename of CONFIG_FILES) {
|
|
128
|
+
const filepath = resolve(cwd, filename);
|
|
129
|
+
if (existsSync(filepath)) return importConfig(filepath, jiti);
|
|
130
|
+
}
|
|
131
|
+
return {};
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
export { defaults, defineConfig, isNativeESM, resolveConfig, resolveConfigObject };
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=index.js.map
|