@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
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { createStaticVNode } from 'vue'
|
|
2
|
+
import { createStaticVNode, type PropType } from 'vue'
|
|
3
|
+
import { twMerge } from 'tailwind-merge'
|
|
4
|
+
import { codeToHtml, getSingletonHighlighter, type BundledLanguage, type BundledTheme } from 'shiki'
|
|
3
5
|
|
|
4
6
|
export default {
|
|
5
7
|
inheritAttrs: false,
|
|
@@ -13,9 +15,27 @@ export default {
|
|
|
13
15
|
code: {
|
|
14
16
|
type: String,
|
|
15
17
|
default: ''
|
|
18
|
+
},
|
|
19
|
+
/**
|
|
20
|
+
* Language for syntax highlighting. Only consulted when `theme` is set.
|
|
21
|
+
* @default 'html'
|
|
22
|
+
*/
|
|
23
|
+
language: {
|
|
24
|
+
type: String as PropType<BundledLanguage>,
|
|
25
|
+
default: 'html'
|
|
26
|
+
},
|
|
27
|
+
/**
|
|
28
|
+
* Shiki theme to apply. When set, the inline code is syntax-highlighted
|
|
29
|
+
* with this theme and the cell uses the theme's background color.
|
|
30
|
+
* When unset, falls back to the plain gray-styled `<code>` (no Shiki
|
|
31
|
+
* pass, faster, and visually quieter in body copy).
|
|
32
|
+
*/
|
|
33
|
+
theme: {
|
|
34
|
+
type: String as PropType<BundledTheme | undefined>,
|
|
35
|
+
default: undefined
|
|
16
36
|
}
|
|
17
37
|
},
|
|
18
|
-
setup(props, { slots, attrs }) {
|
|
38
|
+
async setup(props, { slots, attrs }) {
|
|
19
39
|
let source = props.code
|
|
20
40
|
|
|
21
41
|
if (!source) {
|
|
@@ -31,9 +51,60 @@ export default {
|
|
|
31
51
|
return () => createStaticVNode('', 0)
|
|
32
52
|
}
|
|
33
53
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
54
|
+
if (props.theme) {
|
|
55
|
+
const highlighted = await codeToHtml(source, {
|
|
56
|
+
lang: props.language,
|
|
57
|
+
theme: props.theme,
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const hl = await getSingletonHighlighter({ themes: [props.theme], langs: [] })
|
|
61
|
+
const bg = hl.getTheme(props.theme).bg
|
|
62
|
+
|
|
63
|
+
const codeContent = highlighted
|
|
64
|
+
.replace(/^<pre[^>]*><code>/, '')
|
|
65
|
+
.replace(/<\/code><\/pre>$/, '')
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Replace shiki's structural `<`/`>` (the `<span>` tag delimiters)
|
|
69
|
+
* with private string markers `§MZLT§`/`§MZGT§`. Source-level
|
|
70
|
+
* entities like `<` (representing a literal `<` in the user's
|
|
71
|
+
* code) are made of `&`, `l`, `t`, `;` — no real `<` character —
|
|
72
|
+
* so they pass through untouched.
|
|
73
|
+
*
|
|
74
|
+
* Why markers and not HTML entities? Both levels of escaping would
|
|
75
|
+
* end up as `<` after a round-trip, and the decoder couldn't
|
|
76
|
+
* tell which to decode back to a real `<` (structural) vs leave
|
|
77
|
+
* as `<` (content). Using non-entity markers makes the two
|
|
78
|
+
* levels distinguishable: only `§MZ*§` gets decoded.
|
|
79
|
+
*
|
|
80
|
+
* Two pipeline passes that would otherwise mangle the shiki HTML
|
|
81
|
+
* are defused by the markers:
|
|
82
|
+
* - `format` (oxfmt with `htmlWhitespaceSensitivity: 'ignore'`)
|
|
83
|
+
* sees the `<code>` body as plain text and won't reflow the
|
|
84
|
+
* chain of `<span>` tokens onto separate lines.
|
|
85
|
+
* - The HTML5 self-close strip (`( \/>)` regex at the end of
|
|
86
|
+
* the pipeline) won't match anything inside a shiki cell,
|
|
87
|
+
* so a highlighted Vue self-closing tag like `<MyTag />`
|
|
88
|
+
* keeps its ` />` instead of being silently shortened to `>`.
|
|
89
|
+
*
|
|
90
|
+
* `minifyCodeInline` swaps the markers back to real angle brackets
|
|
91
|
+
* at the very end of the pipeline, after both passes have run.
|
|
92
|
+
*/
|
|
93
|
+
const escaped = codeContent
|
|
94
|
+
.replace(/</g, '§MZLT§')
|
|
95
|
+
.replace(/>/g, '§MZGT§')
|
|
96
|
+
|
|
97
|
+
const base = `bg-[${bg}] rounded-md py-0.5 px-1.5 text-[11px]`
|
|
98
|
+
const merged = twMerge(base, (attrs.class as string) ?? '')
|
|
99
|
+
const styleAttr = attrs.style ? ` style="${attrs.style}"` : ''
|
|
100
|
+
|
|
101
|
+
const html = `<code class="${merged}"${styleAttr} data-minify-inline>${escaped}</code>`
|
|
102
|
+
return () => createStaticVNode(html, 1)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const base = 'whitespace-normal rounded-md [border:1px_solid_#d1d5db] bg-gray-100 py-0.5 px-1.5 text-[11px] text-inherit'
|
|
106
|
+
const merged = twMerge(base, (attrs.class as string) ?? '')
|
|
107
|
+
const styleAttr = attrs.style ? ` style="${attrs.style}"` : ''
|
|
37
108
|
|
|
38
109
|
const escaped = source
|
|
39
110
|
.replace(/&/g, '&')
|
|
@@ -41,7 +112,7 @@ export default {
|
|
|
41
112
|
.replace(/>/g, '>')
|
|
42
113
|
.replace(/"/g, '"')
|
|
43
114
|
|
|
44
|
-
const html = `<code${
|
|
115
|
+
const html = `<code class="${merged}"${styleAttr}>${escaped}</code>`
|
|
45
116
|
|
|
46
117
|
return () => createStaticVNode(html, 1)
|
|
47
118
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { computed, createStaticVNode, inject,
|
|
2
|
+
import { computed, createStaticVNode, inject, useAttrs } from 'vue'
|
|
3
3
|
import type { ComputedRef } from 'vue'
|
|
4
|
-
import {
|
|
4
|
+
import { twMerge } from 'tailwind-merge'
|
|
5
|
+
import { nextId, normalizeToPixels, outlookFallbackProp } from './utils.ts'
|
|
6
|
+
import { useOutlookFallback } from '../composables/useOutlookFallback'
|
|
5
7
|
|
|
6
8
|
defineOptions({ inheritAttrs: false })
|
|
7
9
|
|
|
@@ -11,8 +13,9 @@ const props = defineProps({
|
|
|
11
13
|
/**
|
|
12
14
|
* Override the auto-computed column width.
|
|
13
15
|
*
|
|
14
|
-
* By default, the width is calculated from the
|
|
15
|
-
*
|
|
16
|
+
* By default, the width is calculated from the nearest sized
|
|
17
|
+
* ancestor (`Container`, `Section`, `Row`, or outer `Column`)
|
|
18
|
+
* divided by the column count detected on the parent `Row`.
|
|
16
19
|
*/
|
|
17
20
|
width: {
|
|
18
21
|
type: [String, Number],
|
|
@@ -28,46 +31,73 @@ const props = defineProps({
|
|
|
28
31
|
msoStyle: {
|
|
29
32
|
type: String,
|
|
30
33
|
default: undefined
|
|
31
|
-
}
|
|
34
|
+
},
|
|
35
|
+
/**
|
|
36
|
+
* Toggle Outlook (MSO) and VML fallback markup for this
|
|
37
|
+
* component and all descendants.
|
|
38
|
+
*
|
|
39
|
+
* When `false`, skips MSO ghost tables, VML shapes,
|
|
40
|
+
* `xmlns:v`/`xmlns:o` attributes, and mso-specific CSS
|
|
41
|
+
* in all built-in components.
|
|
42
|
+
*
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
outlookFallback: outlookFallbackProp,
|
|
32
46
|
})
|
|
33
47
|
|
|
34
|
-
const
|
|
35
|
-
const containerWidth = inject<ComputedRef<string | number> | null>('containerWidth', null)
|
|
36
|
-
const injectedMsoWidth = inject<ComputedRef<string> | null>('columnMsoWidth', null)
|
|
48
|
+
const outlookFallback = useOutlookFallback(props.outlookFallback)
|
|
37
49
|
|
|
38
|
-
const
|
|
39
|
-
if (props.width) return normalizeToPixels(props.width)
|
|
40
|
-
if (injectedMinWidth?.value) return injectedMinWidth.value
|
|
50
|
+
const columnCount = inject<ComputedRef<number> | null>('columnCount', null)
|
|
41
51
|
|
|
42
|
-
|
|
43
|
-
if (containerWidth?.value) {
|
|
44
|
-
const val = containerWidth.value
|
|
45
|
-
if (typeof val === 'number') return `${parseFloat((val / 2).toFixed(2))}px`
|
|
46
|
-
const num = Number.parseFloat(val)
|
|
47
|
-
const unit = val.replace(String(num), '') || 'px'
|
|
48
|
-
return `${parseFloat((num / 2).toFixed(2))}${unit}`
|
|
49
|
-
}
|
|
52
|
+
const count = computed(() => columnCount?.value ?? 2)
|
|
50
53
|
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
const useMarker = props.width == null
|
|
55
|
+
const colId = useMarker ? nextId('co') : null
|
|
53
56
|
|
|
54
|
-
const
|
|
57
|
+
const minWidth = computed(() => {
|
|
58
|
+
if (props.width != null) return normalizeToPixels(props.width)
|
|
59
|
+
return `__MAIZZLE_COLW_${colId}__`
|
|
60
|
+
})
|
|
55
61
|
|
|
56
|
-
|
|
57
|
-
|
|
62
|
+
const msoWidth = computed(() => {
|
|
63
|
+
if (props.width != null) return normalizeToPixels(props.width)
|
|
64
|
+
return `__MAIZZLE_COLW_${colId}__`
|
|
65
|
+
})
|
|
58
66
|
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Baseline display/typography lives in classes — not inline `:style` —
|
|
69
|
+
* so the user can override any of them via tailwind utilities. Inline
|
|
70
|
+
* `display: inline-block` would silently shadow a class like
|
|
71
|
+
* `inline-table` during CSS inlining; routing both through twMerge lets
|
|
72
|
+
* the user's utility cleanly replace ours instead of being dropped.
|
|
73
|
+
*
|
|
74
|
+
* When `width` is set as a prop the resolved pixel value also goes
|
|
75
|
+
* through the class list (`min-w-[Npx]`) so it dedupes against the
|
|
76
|
+
* user's `min-w-*` utility. The marker path (no prop) has to stay
|
|
77
|
+
* inline because the placeholder string is replaced post-render and
|
|
78
|
+
* Tailwind's content scanner can't compile a class whose value is
|
|
79
|
+
* still a marker.
|
|
80
|
+
*/
|
|
81
|
+
const baseClass = 'inline-block text-[medium]'
|
|
82
|
+
const mergedClass = computed(() => {
|
|
83
|
+
const parts = [baseClass]
|
|
84
|
+
if (props.width != null) parts.push(`min-w-[${normalizeToPixels(props.width)}]`)
|
|
85
|
+
return twMerge(parts.join(' '), (attrs.class as string) ?? '')
|
|
61
86
|
})
|
|
62
87
|
|
|
88
|
+
const styles = computed(() =>
|
|
89
|
+
props.width != null ? undefined : `min-width: ${minWidth.value};`
|
|
90
|
+
)
|
|
91
|
+
|
|
63
92
|
const tdStyle = computed(() => {
|
|
64
|
-
const parts = [
|
|
93
|
+
const parts = [`width: ${msoWidth.value}`]
|
|
94
|
+
if (useMarker) parts.push(`__MAIZZLE_COLTDX_${colId}__`)
|
|
65
95
|
if (props.msoStyle) parts.push(props.msoStyle)
|
|
66
96
|
return parts.join('; ')
|
|
67
97
|
})
|
|
68
98
|
|
|
69
99
|
const MsoBefore = () => createStaticVNode(
|
|
70
|
-
`<!--[if mso]><td
|
|
100
|
+
`<!--[if mso]><td style="${tdStyle.value}"><![endif]-->`,
|
|
71
101
|
1
|
|
72
102
|
)
|
|
73
103
|
|
|
@@ -78,9 +108,15 @@ const MsoAfter = () => createStaticVNode(
|
|
|
78
108
|
</script>
|
|
79
109
|
|
|
80
110
|
<template>
|
|
81
|
-
<MsoBefore />
|
|
82
|
-
<div
|
|
111
|
+
<MsoBefore v-if="outlookFallback" />
|
|
112
|
+
<div
|
|
113
|
+
v-bind="{ ...attrs, class: undefined }"
|
|
114
|
+
:class="mergedClass"
|
|
115
|
+
:style="styles"
|
|
116
|
+
:data-maizzle-cw-id="colId"
|
|
117
|
+
:data-maizzle-cw-count="useMarker ? count : null"
|
|
118
|
+
>
|
|
83
119
|
<slot />
|
|
84
120
|
</div>
|
|
85
|
-
<MsoAfter />
|
|
121
|
+
<MsoAfter v-if="outlookFallback" />
|
|
86
122
|
</template>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, provide, createStaticVNode, useAttrs } from 'vue'
|
|
3
|
-
import {
|
|
3
|
+
import { twMerge } from 'tailwind-merge'
|
|
4
|
+
import { hasWidthUtility, nextId, normalizeToPixels, outlookFallbackProp } from './utils.ts'
|
|
5
|
+
import { useOutlookFallback } from '../composables/useOutlookFallback'
|
|
4
6
|
|
|
5
7
|
defineOptions({ inheritAttrs: false })
|
|
6
8
|
|
|
@@ -11,25 +13,77 @@ const props = defineProps({
|
|
|
11
13
|
* Max width of the container.
|
|
12
14
|
*
|
|
13
15
|
* Applied as `max-width` on the div and as `width` on the MSO table.
|
|
14
|
-
* Also
|
|
15
|
-
*
|
|
16
|
+
* Also used as the width source for descendant `Row`/`Column`
|
|
17
|
+
* components when computing column widths.
|
|
16
18
|
*
|
|
17
|
-
*
|
|
19
|
+
* When not set, the div defaults to `max-w-150 mx-auto` (max
|
|
20
|
+
* 600px, centered, shrinks below) — overridable via Tailwind
|
|
21
|
+
* classes such as `w-[400px]` or `max-w-xl`. The MSO table
|
|
22
|
+
* width is auto-derived from the resolved width/max-width after
|
|
23
|
+
* CSS inlining, falling back to 600px when unresolvable.
|
|
18
24
|
*/
|
|
19
25
|
width: {
|
|
20
26
|
type: [String, Number],
|
|
21
|
-
default:
|
|
22
|
-
}
|
|
27
|
+
default: null
|
|
28
|
+
},
|
|
29
|
+
/**
|
|
30
|
+
* Inline CSS applied only to the MSO `<td>` element.
|
|
31
|
+
*
|
|
32
|
+
* Use for Outlook-specific styling that shouldn't affect other clients.
|
|
33
|
+
* Appended after any padding propagated from the outer div's
|
|
34
|
+
* inlined style, so msoStyle wins on duplicate properties.
|
|
35
|
+
*
|
|
36
|
+
* @example 'padding: 10px 20px'
|
|
37
|
+
*/
|
|
38
|
+
msoStyle: {
|
|
39
|
+
type: String,
|
|
40
|
+
default: undefined
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* Toggle Outlook (MSO) and VML fallback markup for this
|
|
44
|
+
* component and all descendants.
|
|
45
|
+
*
|
|
46
|
+
* When `false`, skips MSO ghost tables, VML shapes,
|
|
47
|
+
* `xmlns:v`/`xmlns:o` attributes, and mso-specific CSS
|
|
48
|
+
* in all built-in components.
|
|
49
|
+
*
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
outlookFallback: outlookFallbackProp,
|
|
23
53
|
})
|
|
24
54
|
|
|
55
|
+
const outlookFallback = useOutlookFallback(props.outlookFallback)
|
|
56
|
+
|
|
25
57
|
provide('containerWidth', computed(() => props.width))
|
|
26
58
|
|
|
27
|
-
const
|
|
28
|
-
|
|
59
|
+
const useMarker = outlookFallback && props.width == null
|
|
60
|
+
const msoId = useMarker ? nextId('c') : null
|
|
61
|
+
const tdId = outlookFallback ? nextId('ct') : null
|
|
62
|
+
|
|
63
|
+
const mergedClass = computed(() => {
|
|
64
|
+
const userClass = (attrs.class as string) ?? ''
|
|
65
|
+
const parts: string[] = ['m-0', 'mx-auto']
|
|
66
|
+
if (props.width != null) {
|
|
67
|
+
parts.push(`max-w-[${normalizeToPixels(props.width)}]`)
|
|
68
|
+
} else if (!hasWidthUtility(userClass)) {
|
|
69
|
+
parts.push('max-w-150')
|
|
70
|
+
}
|
|
71
|
+
return twMerge(parts.join(' '), userClass)
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
const msoWidth = computed(() => {
|
|
75
|
+
if (props.width != null) return normalizeToPixels(props.width)
|
|
76
|
+
return `__MAIZZLE_MSOW_${msoId}__`
|
|
29
77
|
})
|
|
30
78
|
|
|
79
|
+
const colWidthSource = computed(() =>
|
|
80
|
+
props.width != null ? normalizeToPixels(props.width) : ''
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
const tdMarker = tdId ? `__MAIZZLE_MSOTDSTYLE_${tdId}__` : ''
|
|
84
|
+
|
|
31
85
|
const MsoBefore = () => createStaticVNode(
|
|
32
|
-
`<!--[if mso]><table role="none" cellpadding="0" cellspacing="0" style="width: ${
|
|
86
|
+
`<!--[if mso]><table role="none" cellpadding="0" cellspacing="0" style="width: ${msoWidth.value}" align="center"><tr><td${tdMarker}><![endif]-->`,
|
|
33
87
|
1
|
|
34
88
|
)
|
|
35
89
|
|
|
@@ -40,9 +94,16 @@ const MsoAfter = () => createStaticVNode(
|
|
|
40
94
|
</script>
|
|
41
95
|
|
|
42
96
|
<template>
|
|
43
|
-
<MsoBefore />
|
|
44
|
-
<div
|
|
97
|
+
<MsoBefore v-if="outlookFallback" />
|
|
98
|
+
<div
|
|
99
|
+
v-bind="{ ...attrs, class: undefined }"
|
|
100
|
+
:class="mergedClass"
|
|
101
|
+
:data-maizzle-msow-id="msoId"
|
|
102
|
+
:data-maizzle-cw="colWidthSource"
|
|
103
|
+
:data-maizzle-mso-td-id="tdId"
|
|
104
|
+
:data-maizzle-mso-style="tdId && props.msoStyle ? props.msoStyle : null"
|
|
105
|
+
>
|
|
45
106
|
<slot />
|
|
46
107
|
</div>
|
|
47
|
-
<MsoAfter />
|
|
108
|
+
<MsoAfter v-if="outlookFallback" />
|
|
48
109
|
</template>
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type PropType } from 'vue'
|
|
3
|
+
import { useFont } from '../composables/useFont'
|
|
4
|
+
|
|
5
|
+
type PopularGoogleFont =
|
|
6
|
+
// Sans-serif
|
|
7
|
+
| 'Roboto' | 'Open Sans' | 'Inter' | 'Lato' | 'Montserrat'
|
|
8
|
+
// Serif
|
|
9
|
+
| 'Merriweather' | 'Playfair Display' | 'Lora' | 'PT Serif' | 'Noto Serif'
|
|
10
|
+
// Display
|
|
11
|
+
| 'Oswald' | 'Bebas Neue' | 'Anton' | 'Lobster' | 'Pacifico'
|
|
12
|
+
// Handwriting
|
|
13
|
+
| 'Dancing Script' | 'Caveat' | 'Shadows Into Light' | 'Satisfy' | 'Great Vibes'
|
|
14
|
+
// Monospace
|
|
15
|
+
| 'Roboto Mono' | 'Source Code Pro' | 'JetBrains Mono' | 'Fira Code' | 'Inconsolata'
|
|
16
|
+
|
|
17
|
+
const props = defineProps({
|
|
18
|
+
/**
|
|
19
|
+
* A single font family name, e.g. `"Roboto"` or `"Open Sans"`.
|
|
20
|
+
*
|
|
21
|
+
* For fallback fonts, use the `fallback` prop instead of a
|
|
22
|
+
* comma-separated list here. Popular Google Fonts are suggested
|
|
23
|
+
* in the IDE, but any string is accepted.
|
|
24
|
+
*
|
|
25
|
+
* @example "Open Sans"
|
|
26
|
+
*/
|
|
27
|
+
family: {
|
|
28
|
+
type: String as PropType<PopularGoogleFont | (string & {})>,
|
|
29
|
+
required: true,
|
|
30
|
+
validator: (v: string) => v.trim().length > 0,
|
|
31
|
+
},
|
|
32
|
+
/**
|
|
33
|
+
* CSS fallback list appended to the `font-family` declaration.
|
|
34
|
+
*
|
|
35
|
+
* @example "Verdana, sans-serif"
|
|
36
|
+
*/
|
|
37
|
+
fallback: {
|
|
38
|
+
type: String,
|
|
39
|
+
default: '',
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* Font provider used to build the stylesheet URL when `url` is omitted.
|
|
43
|
+
* Bunny Fonts is a drop-in, privacy-friendly Google Fonts mirror.
|
|
44
|
+
*/
|
|
45
|
+
provider: {
|
|
46
|
+
type: String as PropType<'google' | 'bunny'>,
|
|
47
|
+
default: 'google',
|
|
48
|
+
validator: (v: string) => ['google', 'bunny'].includes(v),
|
|
49
|
+
},
|
|
50
|
+
/**
|
|
51
|
+
* Stylesheet URL. When provided, used as-is for the `<link href>`.
|
|
52
|
+
* When omitted, a Google Fonts URL is built from `family`, `weights`,
|
|
53
|
+
* `display` and `styles`.
|
|
54
|
+
*/
|
|
55
|
+
url: {
|
|
56
|
+
type: String,
|
|
57
|
+
default: '',
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* Font weights to load. Ignored when `url` is provided.
|
|
61
|
+
*/
|
|
62
|
+
weights: {
|
|
63
|
+
type: Array as () => number[],
|
|
64
|
+
default: () => [400],
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* `font-display` value. Ignored when `url` is provided.
|
|
68
|
+
*/
|
|
69
|
+
display: {
|
|
70
|
+
type: String as PropType<'auto' | 'block' | 'swap' | 'fallback' | 'optional'>,
|
|
71
|
+
default: 'swap',
|
|
72
|
+
validator: (v: string) => ['auto', 'block', 'swap', 'fallback', 'optional'].includes(v),
|
|
73
|
+
},
|
|
74
|
+
/**
|
|
75
|
+
* Font styles to load. Ignored when `url` is provided.
|
|
76
|
+
*
|
|
77
|
+
* @example ['normal', 'italic']
|
|
78
|
+
*/
|
|
79
|
+
styles: {
|
|
80
|
+
type: Array as () => Array<'normal' | 'italic'>,
|
|
81
|
+
default: () => ['normal'],
|
|
82
|
+
},
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
useFont({
|
|
86
|
+
family: props.family,
|
|
87
|
+
fallback: props.fallback || undefined,
|
|
88
|
+
provider: props.provider,
|
|
89
|
+
url: props.url || undefined,
|
|
90
|
+
weights: props.weights,
|
|
91
|
+
display: props.display,
|
|
92
|
+
styles: props.styles,
|
|
93
|
+
})
|
|
94
|
+
</script>
|
|
95
|
+
|
|
96
|
+
<template></template>
|
package/dist/components/Head.vue
CHANGED
|
@@ -6,7 +6,7 @@ const props = defineProps({
|
|
|
6
6
|
* Render an empty `<head>` before the main head element.
|
|
7
7
|
*
|
|
8
8
|
* This is a workaround for Yahoo! Mail on Android, which
|
|
9
|
-
* strips
|
|
9
|
+
* strips the first `<head>` element it finds.
|
|
10
10
|
*
|
|
11
11
|
* @default false
|
|
12
12
|
*/
|
|
@@ -22,7 +22,7 @@ const mergedClass = computed(() => twMerge('m-0', attrs.class as string))
|
|
|
22
22
|
</script>
|
|
23
23
|
|
|
24
24
|
<template>
|
|
25
|
-
<component :is="tag" v-bind="
|
|
25
|
+
<component :is="tag" v-bind="{ ...$attrs, class: mergedClass }">
|
|
26
26
|
<slot />
|
|
27
27
|
</component>
|
|
28
28
|
</template>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, useAttrs } from 'vue'
|
|
3
|
+
import { twMerge } from 'tailwind-merge'
|
|
4
|
+
|
|
5
|
+
defineOptions({ inheritAttrs: false })
|
|
6
|
+
|
|
7
|
+
const attrs = useAttrs()
|
|
8
|
+
|
|
9
|
+
const HEIGHT_RE = /(?:^|\s)h-([\w./\-[\]%]+)/g
|
|
10
|
+
const LEADING_RE = /(?:^|\s)leading-/
|
|
11
|
+
|
|
12
|
+
const mergedClass = computed(() => {
|
|
13
|
+
const userClass = (attrs.class as string) || ''
|
|
14
|
+
const heights = [...userClass.matchAll(HEIGHT_RE)]
|
|
15
|
+
const userHeight = heights.length ? heights[heights.length - 1][1] : null
|
|
16
|
+
const userHasLeading = LEADING_RE.test(userClass)
|
|
17
|
+
|
|
18
|
+
const defaults = ['my-6', 'bg-gray-300']
|
|
19
|
+
if (!userHeight) defaults.push('h-px')
|
|
20
|
+
if (!userHasLeading && !userHeight) defaults.push('leading-px')
|
|
21
|
+
|
|
22
|
+
const derived = userHeight && !userHasLeading ? `leading-${userHeight}` : ''
|
|
23
|
+
return twMerge(defaults.join(' '), userClass, derived)
|
|
24
|
+
})
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<template>
|
|
28
|
+
<div
|
|
29
|
+
role="separator"
|
|
30
|
+
v-bind="{ ...$attrs, class: undefined }"
|
|
31
|
+
:class="mergedClass"
|
|
32
|
+
>‍</div>
|
|
33
|
+
</template>
|
package/dist/components/Html.vue
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { createStaticVNode, provide, useAttrs, useSlots } from 'vue'
|
|
2
|
+
import { createStaticVNode, inject, provide, useAttrs, useSlots } from 'vue'
|
|
3
3
|
import type { PropType } from 'vue'
|
|
4
|
+
import { outlookFallbackProp } from './utils.ts'
|
|
5
|
+
import { useOutlookFallback } from '../composables/useOutlookFallback'
|
|
6
|
+
import { RenderContextKey } from '../composables/renderContext'
|
|
4
7
|
|
|
5
8
|
defineOptions({ inheritAttrs: false })
|
|
6
9
|
|
|
@@ -65,9 +68,39 @@ const props = defineProps({
|
|
|
65
68
|
xmlns: {
|
|
66
69
|
type: [Boolean, String],
|
|
67
70
|
default: true
|
|
68
|
-
}
|
|
71
|
+
},
|
|
72
|
+
/**
|
|
73
|
+
* Toggle Outlook (MSO) and VML fallback markup for this
|
|
74
|
+
* component and all descendants.
|
|
75
|
+
*
|
|
76
|
+
* When `false`, skips MSO ghost tables, VML shapes,
|
|
77
|
+
* `xmlns:v`/`xmlns:o` attributes, and mso-specific CSS
|
|
78
|
+
* in all built-in components.
|
|
79
|
+
*
|
|
80
|
+
* @default true
|
|
81
|
+
*/
|
|
82
|
+
outlookFallback: outlookFallbackProp,
|
|
83
|
+
/**
|
|
84
|
+
* DOCTYPE declaration prepended to the rendered HTML.
|
|
85
|
+
*
|
|
86
|
+
* Overrides `doctype` in the Maizzle config and any value
|
|
87
|
+
* set via `useDoctype()` in the same template.
|
|
88
|
+
*
|
|
89
|
+
* @default '<!DOCTYPE html>'
|
|
90
|
+
*/
|
|
91
|
+
doctype: {
|
|
92
|
+
type: String,
|
|
93
|
+
default: undefined,
|
|
94
|
+
},
|
|
69
95
|
})
|
|
70
96
|
|
|
97
|
+
const outlookFallback = useOutlookFallback(props.outlookFallback)
|
|
98
|
+
|
|
99
|
+
if (props.doctype !== undefined) {
|
|
100
|
+
const ctx = inject(RenderContextKey, undefined)
|
|
101
|
+
if (ctx) ctx.doctype = props.doctype
|
|
102
|
+
}
|
|
103
|
+
|
|
71
104
|
provide('htmlLang', props.lang)
|
|
72
105
|
|
|
73
106
|
const render = () => {
|
|
@@ -80,7 +113,7 @@ const render = () => {
|
|
|
80
113
|
`dir="${props.dir}"`,
|
|
81
114
|
]
|
|
82
115
|
|
|
83
|
-
if (props.xmlns !== false && props.xmlns !== 'false') {
|
|
116
|
+
if (outlookFallback && props.xmlns !== false && props.xmlns !== 'false') {
|
|
84
117
|
parts.push(
|
|
85
118
|
'xmlns:v="urn:schemas-microsoft-com:vml"',
|
|
86
119
|
'xmlns:o="urn:schemas-microsoft-com:office:office"',
|