@maizzle/framework 6.0.0-rc.8 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +71 -21
- package/dist/components/Link.vue +1 -1
- package/dist/components/Markdown.vue +56 -23
- 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 +24 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/{index.mjs → index.js} +45 -14
- 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} +16 -13
- 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} +29 -5
- 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} +17 -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} +207 -106
- 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-DaqjATE_.js +8785 -0
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-DaqjATE_.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} +14 -12
- 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} +270 -40
- 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 -30
- package/dist/build.d.mts +0 -19
- package/dist/build.d.mts.map +0 -1
- package/dist/build.mjs +0 -140
- 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.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 -30
- package/dist/index.mjs +0 -30
- 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 -279
- 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 -45
- 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 -78
- 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/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,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { computed, createStaticVNode } from 'vue'
|
|
2
|
+
import { computed, createStaticVNode, type PropType } from 'vue'
|
|
3
3
|
|
|
4
4
|
const VERSION_MAP = {
|
|
5
5
|
2003: 11,
|
|
@@ -10,7 +10,10 @@ const VERSION_MAP = {
|
|
|
10
10
|
2019: 16
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
type Year = `${keyof typeof VERSION_MAP}`
|
|
14
|
+
type YearList = Year | (string & {})
|
|
15
|
+
|
|
16
|
+
const toMso = (v: string) => VERSION_MAP[v as unknown as keyof typeof VERSION_MAP]
|
|
14
17
|
|
|
15
18
|
const parseList = (value: string) =>
|
|
16
19
|
value
|
|
@@ -30,7 +33,7 @@ export default {
|
|
|
30
33
|
* @example '2013'
|
|
31
34
|
* @example '2013,2016'
|
|
32
35
|
*/
|
|
33
|
-
only: String
|
|
36
|
+
only: String as PropType<YearList>,
|
|
34
37
|
/**
|
|
35
38
|
* Render content in all Outlook versions except the specified one(s).
|
|
36
39
|
*
|
|
@@ -39,31 +42,55 @@ export default {
|
|
|
39
42
|
* @example '2007'
|
|
40
43
|
* @example '2007,2010'
|
|
41
44
|
*/
|
|
42
|
-
not: String
|
|
45
|
+
not: String as PropType<YearList>,
|
|
43
46
|
/**
|
|
44
47
|
* Render content in Outlook versions lower than the specified year.
|
|
45
48
|
*
|
|
46
49
|
* @example '2013'
|
|
47
50
|
*/
|
|
48
|
-
lt: String
|
|
51
|
+
lt: String as PropType<Year>,
|
|
49
52
|
/**
|
|
50
53
|
* Render content in Outlook versions lower than or equal to the specified year.
|
|
51
54
|
*
|
|
52
55
|
* @example '2013'
|
|
53
56
|
*/
|
|
54
|
-
lte: String
|
|
57
|
+
lte: String as PropType<Year>,
|
|
55
58
|
/**
|
|
56
59
|
* Render content in Outlook versions greater than the specified year.
|
|
57
60
|
*
|
|
58
61
|
* @example '2010'
|
|
59
62
|
*/
|
|
60
|
-
gt: String
|
|
63
|
+
gt: String as PropType<Year>,
|
|
61
64
|
/**
|
|
62
65
|
* Render content in Outlook versions greater than or equal to the specified year.
|
|
63
66
|
*
|
|
64
67
|
* @example '2010'
|
|
65
68
|
*/
|
|
66
|
-
gte: String
|
|
69
|
+
gte: String as PropType<Year>,
|
|
70
|
+
/**
|
|
71
|
+
* Raw HTML inserted at the start of the conditional comment, before the slot.
|
|
72
|
+
*
|
|
73
|
+
* Bypasses Vue's template parser, so unbalanced tags are preserved — useful
|
|
74
|
+
* for MSO ghost tables where the opening `<table><tr><td>` must live inside
|
|
75
|
+
* the conditional comment.
|
|
76
|
+
*
|
|
77
|
+
* @example '<table align="center" width="600"><tr><td>'
|
|
78
|
+
*/
|
|
79
|
+
open: {
|
|
80
|
+
type: String,
|
|
81
|
+
default: ''
|
|
82
|
+
},
|
|
83
|
+
/**
|
|
84
|
+
* Raw HTML inserted at the end of the conditional comment, after the slot.
|
|
85
|
+
*
|
|
86
|
+
* Pair with `open` to close ghost-table tags inside the conditional.
|
|
87
|
+
*
|
|
88
|
+
* @example '</td></tr></table>'
|
|
89
|
+
*/
|
|
90
|
+
close: {
|
|
91
|
+
type: String,
|
|
92
|
+
default: ''
|
|
93
|
+
}
|
|
67
94
|
},
|
|
68
95
|
setup(props, { slots }) {
|
|
69
96
|
const condition = computed(() => {
|
|
@@ -97,13 +124,13 @@ export default {
|
|
|
97
124
|
return 'mso'
|
|
98
125
|
})
|
|
99
126
|
|
|
100
|
-
const start = computed(() => `<!--[if ${condition.value}]
|
|
101
|
-
const end =
|
|
127
|
+
const start = computed(() => `<!--[if ${condition.value}]>${props.open}`)
|
|
128
|
+
const end = computed(() => `${props.close}<![endif]-->`)
|
|
102
129
|
|
|
103
130
|
return () => [
|
|
104
131
|
createStaticVNode(start.value, 1),
|
|
105
132
|
slots.default?.(),
|
|
106
|
-
createStaticVNode(end, 1),
|
|
133
|
+
createStaticVNode(end.value, 1),
|
|
107
134
|
]
|
|
108
135
|
}
|
|
109
136
|
}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { computed, createStaticVNode } from 'vue'
|
|
3
|
+
import type { PropType } from 'vue'
|
|
4
|
+
import { normalizeToPixels } from './utils.ts'
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
name: 'OutlookBg',
|
|
8
|
+
props: {
|
|
9
|
+
/**
|
|
10
|
+
* Width of the VML rectangle.
|
|
11
|
+
*
|
|
12
|
+
* Accepts a number (treated as pixels) or a string with units.
|
|
13
|
+
*
|
|
14
|
+
* @default '600px'
|
|
15
|
+
*/
|
|
16
|
+
width: {
|
|
17
|
+
type: [String, Number],
|
|
18
|
+
default: '600px'
|
|
19
|
+
},
|
|
20
|
+
/**
|
|
21
|
+
* Height of the VML rectangle.
|
|
22
|
+
*
|
|
23
|
+
* Accepts a number (treated as pixels) or a string with units.
|
|
24
|
+
* When not set, the rectangle auto-sizes to fit its content.
|
|
25
|
+
*/
|
|
26
|
+
height: {
|
|
27
|
+
type: [String, Number],
|
|
28
|
+
default: null
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* VML fill type that controls how the background image is rendered.
|
|
32
|
+
*
|
|
33
|
+
* - `frame` — scale to fill the rectangle (default)
|
|
34
|
+
* - `tile` — repeat the image to fill the rectangle
|
|
35
|
+
* - `pattern` — tile at original size
|
|
36
|
+
* - `solid` — solid color fill, no image
|
|
37
|
+
* - `gradient` — linear gradient fill
|
|
38
|
+
* - `gradientradial` — radial gradient fill
|
|
39
|
+
*
|
|
40
|
+
* @default 'frame'
|
|
41
|
+
*/
|
|
42
|
+
type: {
|
|
43
|
+
type: String as PropType<'solid' | 'gradient' | 'gradientradial' | 'tile' | 'pattern' | 'frame'>,
|
|
44
|
+
default: 'frame'
|
|
45
|
+
},
|
|
46
|
+
/**
|
|
47
|
+
* Comma-separated dimensions for the fill image.
|
|
48
|
+
*
|
|
49
|
+
* Controls the rendered size of the background image.
|
|
50
|
+
*
|
|
51
|
+
* @example '300px,200px'
|
|
52
|
+
*/
|
|
53
|
+
sizes: {
|
|
54
|
+
type: String,
|
|
55
|
+
validator: (v: string) => /^[\d.]+(px|%|em|rem)?(,[\d.]+(px|%|em|rem)?)+$/.test(v.replace(/\s/g, ''))
|
|
56
|
+
},
|
|
57
|
+
/**
|
|
58
|
+
* Fill origin offset as comma-separated fractional values.
|
|
59
|
+
*
|
|
60
|
+
* Controls where the fill image anchors relative to the shape.
|
|
61
|
+
* Values are fractions of the shape's dimensions, where `0,0` is
|
|
62
|
+
* center and `-0.5,-0.5` is the top-left corner.
|
|
63
|
+
*
|
|
64
|
+
* Overridden by `backgroundPosition` if both are set.
|
|
65
|
+
*
|
|
66
|
+
* @example '0,0'
|
|
67
|
+
* @example '-0.5,-0.5'
|
|
68
|
+
*/
|
|
69
|
+
origin: {
|
|
70
|
+
type: String,
|
|
71
|
+
validator: (v: string) => /^-?[\d.]+(,-?[\d.]+)+$/.test(v.replace(/\s/g, ''))
|
|
72
|
+
},
|
|
73
|
+
/**
|
|
74
|
+
* Fill position offset as comma-separated fractional values.
|
|
75
|
+
*
|
|
76
|
+
* Controls where the fill image is positioned within the shape.
|
|
77
|
+
* Values are fractions of the shape's dimensions, where `0,0` is
|
|
78
|
+
* center and `0.5,0.5` is the bottom-right corner.
|
|
79
|
+
*
|
|
80
|
+
* Overridden by `backgroundPosition` if both are set.
|
|
81
|
+
*
|
|
82
|
+
* @example '0,0'
|
|
83
|
+
* @example '0.5,0.5'
|
|
84
|
+
*/
|
|
85
|
+
position: {
|
|
86
|
+
type: String,
|
|
87
|
+
validator: (v: string) => /^-?[\d.]+(,-?[\d.]+)+$/.test(v.replace(/\s/g, ''))
|
|
88
|
+
},
|
|
89
|
+
/**
|
|
90
|
+
* Background image position as `vertical,horizontal`.
|
|
91
|
+
*
|
|
92
|
+
* First value is the vertical axis: `top`, `center`, or `bottom`.
|
|
93
|
+
* Second value is the horizontal axis: `left`, `center`, or `right`.
|
|
94
|
+
*
|
|
95
|
+
* Convenience prop that maps to VML `origin` and `position` attributes.
|
|
96
|
+
*
|
|
97
|
+
* @example 'top,left'
|
|
98
|
+
* @example 'center,center'
|
|
99
|
+
*/
|
|
100
|
+
backgroundPosition: {
|
|
101
|
+
type: String as PropType<
|
|
102
|
+
| 'top,left' | 'top,center' | 'top,right'
|
|
103
|
+
| 'center,left' | 'center,center' | 'center,right'
|
|
104
|
+
| 'bottom,left' | 'bottom,center' | 'bottom,right'
|
|
105
|
+
>,
|
|
106
|
+
validator: (v: string) => /^(top|center|bottom),(left|center|right)$/.test(v.replace(/\s/g, ''))
|
|
107
|
+
},
|
|
108
|
+
/**
|
|
109
|
+
* Aspect ratio constraint for the fill image.
|
|
110
|
+
*
|
|
111
|
+
* - `atleast` — image is at least as large as the shape
|
|
112
|
+
* - `atmost` — image is at most as large as the shape
|
|
113
|
+
*/
|
|
114
|
+
aspect: {
|
|
115
|
+
type: String as PropType<'atleast' | 'atmost'>,
|
|
116
|
+
},
|
|
117
|
+
/**
|
|
118
|
+
* Fill color used for `solid` and `gradient` fill types.
|
|
119
|
+
*
|
|
120
|
+
* @example '#ffffff'
|
|
121
|
+
*/
|
|
122
|
+
color: String,
|
|
123
|
+
/**
|
|
124
|
+
* Text box inset (padding) as `top,right,bottom,left`.
|
|
125
|
+
*
|
|
126
|
+
* Controls the inner spacing of the `v:textbox` element.
|
|
127
|
+
*
|
|
128
|
+
* @default '0,0,0,0'
|
|
129
|
+
*/
|
|
130
|
+
inset: {
|
|
131
|
+
type: String,
|
|
132
|
+
default: '0,0,0,0'
|
|
133
|
+
},
|
|
134
|
+
/**
|
|
135
|
+
* Whether the VML rectangle has a visible border.
|
|
136
|
+
*
|
|
137
|
+
* @default false
|
|
138
|
+
*/
|
|
139
|
+
stroke: {
|
|
140
|
+
type: [Boolean, String],
|
|
141
|
+
default: false
|
|
142
|
+
},
|
|
143
|
+
/**
|
|
144
|
+
* Border color for the VML rectangle.
|
|
145
|
+
*
|
|
146
|
+
* Setting this also enables `stroke` automatically.
|
|
147
|
+
*
|
|
148
|
+
* @example '#000000'
|
|
149
|
+
*/
|
|
150
|
+
strokecolor: String,
|
|
151
|
+
/**
|
|
152
|
+
* Whether the VML rectangle has a fill.
|
|
153
|
+
*
|
|
154
|
+
* @default true
|
|
155
|
+
*/
|
|
156
|
+
fill: {
|
|
157
|
+
type: [Boolean, String],
|
|
158
|
+
default: true
|
|
159
|
+
},
|
|
160
|
+
/**
|
|
161
|
+
* Background color of the VML rectangle.
|
|
162
|
+
*
|
|
163
|
+
* Used as a fallback when the background image cannot be loaded.
|
|
164
|
+
*
|
|
165
|
+
* @default 'none'
|
|
166
|
+
* @example '#3b82f6'
|
|
167
|
+
*/
|
|
168
|
+
fillcolor: {
|
|
169
|
+
type: String,
|
|
170
|
+
default: 'none'
|
|
171
|
+
},
|
|
172
|
+
/**
|
|
173
|
+
* URL of the background image.
|
|
174
|
+
*
|
|
175
|
+
* @default 'https://via.placeholder.com/600x400'
|
|
176
|
+
*/
|
|
177
|
+
src: {
|
|
178
|
+
type: String,
|
|
179
|
+
default: 'https://via.placeholder.com/600x400'
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
setup(props, { slots }) {
|
|
183
|
+
const backgroundPositionMap: Record<string, string> = {
|
|
184
|
+
'top,left': '-0.5,-0.5',
|
|
185
|
+
'top,center': '0,-0.5',
|
|
186
|
+
'top,right': '0.5,-0.5',
|
|
187
|
+
'center,left': '-0.5,0',
|
|
188
|
+
'center,center': '0,0',
|
|
189
|
+
'center,right': '0.5,0',
|
|
190
|
+
'bottom,left': '-0.5,0.5',
|
|
191
|
+
'bottom,center': '0,0.5',
|
|
192
|
+
'bottom,right': '0.5,0.5',
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const resolvedOrigin = computed(() => props.origin ?? (props.backgroundPosition ? backgroundPositionMap[props.backgroundPosition.replace(/\s/g, '')] : undefined))
|
|
196
|
+
const resolvedPosition = computed(() => props.position ?? (props.backgroundPosition ? backgroundPositionMap[props.backgroundPosition.replace(/\s/g, '')] : undefined))
|
|
197
|
+
|
|
198
|
+
const before = computed(() => {
|
|
199
|
+
const width = normalizeToPixels(props.width)
|
|
200
|
+
|
|
201
|
+
const toBool = (v: boolean | string) => v === true || v === 'true' ? 'true' : 'false'
|
|
202
|
+
|
|
203
|
+
const rectAttrs = [
|
|
204
|
+
`fill="${props.fillcolor ? 'true' : toBool(props.fill)}"`,
|
|
205
|
+
`stroke="${props.strokecolor ? 'true' : toBool(props.stroke)}"`,
|
|
206
|
+
`style="width: ${width};${props.height ? ` height: ${normalizeToPixels(props.height)};` : ''}"`,
|
|
207
|
+
props.strokecolor ? `strokecolor="${props.strokecolor}"` : '',
|
|
208
|
+
props.fillcolor ? `fillcolor="${props.fillcolor}"` : ''
|
|
209
|
+
].filter(Boolean).join(' ')
|
|
210
|
+
|
|
211
|
+
const fillAttrs = [
|
|
212
|
+
`type="${props.type}"`,
|
|
213
|
+
`src="${props.src}"`,
|
|
214
|
+
props.sizes ? `sizes="${props.sizes}"` : '',
|
|
215
|
+
props.aspect ? `aspect="${props.aspect}"` : '',
|
|
216
|
+
resolvedOrigin.value ? `origin="${resolvedOrigin.value}"` : '',
|
|
217
|
+
resolvedPosition.value ? `position="${resolvedPosition.value}"` : '',
|
|
218
|
+
props.color ? `color="${props.color}"` : ''
|
|
219
|
+
].filter(Boolean).join(' ')
|
|
220
|
+
|
|
221
|
+
return [
|
|
222
|
+
`<!--[if mso]>`,
|
|
223
|
+
`<v:rect xmlns:v="urn:schemas-microsoft-com:vml" ${rectAttrs}>`,
|
|
224
|
+
`<v:fill ${fillAttrs} />`,
|
|
225
|
+
`<v:textbox inset="${props.inset}" style="mso-fit-shape-to-text: true">`,
|
|
226
|
+
`<div><![endif]-->`
|
|
227
|
+
].join('')
|
|
228
|
+
})
|
|
229
|
+
|
|
230
|
+
const after = computed(() => {
|
|
231
|
+
return `<!--[if mso]></div></v:textbox></v:rect><![endif]-->`
|
|
232
|
+
})
|
|
233
|
+
|
|
234
|
+
return () => [
|
|
235
|
+
createStaticVNode(before.value, 1),
|
|
236
|
+
slots.default?.(),
|
|
237
|
+
createStaticVNode(after.value, 1)
|
|
238
|
+
]
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
</script>
|
|
@@ -1,20 +1,45 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { useSlots, computed } from 'vue'
|
|
3
|
+
|
|
4
|
+
const props = defineProps({
|
|
5
|
+
/**
|
|
6
|
+
* Explicit number of filler sequences to render. When omitted, the count
|
|
7
|
+
* is auto-derived to fill our default 200-char inbox preview budget.
|
|
8
|
+
*/
|
|
9
|
+
spaces: {
|
|
5
10
|
type: Number,
|
|
6
|
-
default:
|
|
11
|
+
default: undefined,
|
|
7
12
|
},
|
|
8
|
-
/** Number of `­` entities to render. */
|
|
9
|
-
shyCount: {
|
|
10
|
-
type: Number,
|
|
11
|
-
default: 150
|
|
12
|
-
}
|
|
13
13
|
})
|
|
14
|
+
|
|
15
|
+
const slots = useSlots()
|
|
16
|
+
|
|
17
|
+
function vnodesToText(nodes: unknown): string {
|
|
18
|
+
if (nodes == null || nodes === false || nodes === true) return ''
|
|
19
|
+
if (typeof nodes === 'string' || typeof nodes === 'number') return String(nodes)
|
|
20
|
+
if (Array.isArray(nodes)) return nodes.map(vnodesToText).join('')
|
|
21
|
+
if (typeof nodes === 'object' && 'children' in (nodes as Record<string, unknown>)) {
|
|
22
|
+
return vnodesToText((nodes as { children: unknown }).children)
|
|
23
|
+
}
|
|
24
|
+
return ''
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Inbox preview budget. Pad with invisible fillers so the client
|
|
29
|
+
* doesn't pull body content into the snippet.
|
|
30
|
+
*/
|
|
31
|
+
const PREVIEW_LENGTH = 200
|
|
32
|
+
|
|
33
|
+
const text = computed(() => vnodesToText(slots.default?.()))
|
|
34
|
+
const fillerCount = computed(() =>
|
|
35
|
+
props.spaces !== undefined
|
|
36
|
+
? Math.max(0, props.spaces)
|
|
37
|
+
: Math.max(0, PREVIEW_LENGTH - text.value.length),
|
|
38
|
+
)
|
|
14
39
|
</script>
|
|
15
40
|
|
|
16
41
|
<template>
|
|
17
42
|
<Teleport to="body:start">
|
|
18
|
-
<div style="display: none"
|
|
43
|
+
<div style="display: none">{{ text }}<template v-for="i in fillerCount" :key="i"> ͏ </template> </div>
|
|
19
44
|
</Teleport>
|
|
20
45
|
</template>
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { createStaticVNode, type PropType } from 'vue'
|
|
3
|
+
import { twMerge } from 'tailwind-merge'
|
|
4
|
+
import { encode } from 'uqr'
|
|
5
|
+
|
|
6
|
+
type Ecc = 'L' | 'M' | 'Q' | 'H'
|
|
7
|
+
|
|
8
|
+
const escapeAttr = (v: string) =>
|
|
9
|
+
v
|
|
10
|
+
.replace(/&/g, '&')
|
|
11
|
+
.replace(/</g, '<')
|
|
12
|
+
.replace(/>/g, '>')
|
|
13
|
+
.replace(/"/g, '"')
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Parse a Tailwind sizing token's pixel equivalent.
|
|
17
|
+
*
|
|
18
|
+
* Assumes the default v4 spacing scale (1 unit = 0.25rem),
|
|
19
|
+
* which resolves to 4px at the standard 16px root font.
|
|
20
|
+
* Arbitrary values accept `px` and `rem`; other units
|
|
21
|
+
* fall through to the caller's default.
|
|
22
|
+
*/
|
|
23
|
+
function tokenToPx(token: string): number {
|
|
24
|
+
const seg = token.slice(token.lastIndexOf(':') + 1)
|
|
25
|
+
const m = seg.match(/^(?:size|w|h)-(.+)$/)
|
|
26
|
+
if (!m) return 0
|
|
27
|
+
const v = m[1]
|
|
28
|
+
if (v.startsWith('[') && v.endsWith(']')) {
|
|
29
|
+
const um = v.slice(1, -1).match(/^([\d.]+)(px|rem)?$/)
|
|
30
|
+
if (!um) return 0
|
|
31
|
+
const n = Number.parseFloat(um[1])
|
|
32
|
+
return um[2] === 'rem' ? n * 16 : n
|
|
33
|
+
}
|
|
34
|
+
if (/^\d+(?:\.\d+)?$/.test(v)) return Number.parseFloat(v) * 4
|
|
35
|
+
return 0
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Partition a class string into two buckets:
|
|
40
|
+
*
|
|
41
|
+
* - `sizing` — width/height/size utilities used for cell px math.
|
|
42
|
+
* - `neutral` — everything else; lands on the table verbatim.
|
|
43
|
+
*/
|
|
44
|
+
function partition(cls: string): { neutral: string[]; sizing: string[] } {
|
|
45
|
+
const neutral: string[] = []
|
|
46
|
+
const sizing: string[] = []
|
|
47
|
+
for (const t of cls.split(/\s+/).filter(Boolean)) {
|
|
48
|
+
const last = t.slice(t.lastIndexOf(':') + 1)
|
|
49
|
+
if (/^(?:size|w|h|min-w|min-h|max-w|max-h)-/.test(last)) sizing.push(t)
|
|
50
|
+
else neutral.push(t)
|
|
51
|
+
}
|
|
52
|
+
return { neutral, sizing }
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export default {
|
|
56
|
+
name: 'QrCode',
|
|
57
|
+
inheritAttrs: false,
|
|
58
|
+
props: {
|
|
59
|
+
/** Data to encode (URL or arbitrary text). */
|
|
60
|
+
value: {
|
|
61
|
+
type: String,
|
|
62
|
+
required: true,
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Error correction level: redundancy that keeps the code
|
|
66
|
+
* scannable when partially obscured (e.g. a logo overlay),
|
|
67
|
+
* at the cost of a larger matrix.
|
|
68
|
+
*
|
|
69
|
+
* - `L` ~7% recovery
|
|
70
|
+
* - `M` ~15% recovery (default, fine for on-screen display)
|
|
71
|
+
* - `Q` ~25% recovery
|
|
72
|
+
* - `H` ~30% recovery
|
|
73
|
+
*/
|
|
74
|
+
ecc: {
|
|
75
|
+
type: String as PropType<Ecc>,
|
|
76
|
+
default: 'M',
|
|
77
|
+
validator: (v: string) => ['L', 'M', 'Q', 'H'].includes(v),
|
|
78
|
+
},
|
|
79
|
+
/**
|
|
80
|
+
* Width of the light "quiet zone" around the code, in modules.
|
|
81
|
+
* Spec recommends ≥ 4; 1 is plenty for on-screen scans.
|
|
82
|
+
*/
|
|
83
|
+
border: {
|
|
84
|
+
type: Number,
|
|
85
|
+
default: 1,
|
|
86
|
+
},
|
|
87
|
+
/**
|
|
88
|
+
* Accessible label exposed via `aria-label` on the table.
|
|
89
|
+
*/
|
|
90
|
+
alt: {
|
|
91
|
+
type: String,
|
|
92
|
+
default: '',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
setup(props, { attrs }) {
|
|
96
|
+
const userClass = String(attrs.class ?? '')
|
|
97
|
+
const { neutral, sizing } = partition(userClass)
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Effective pixel size from the user's sizing token, else
|
|
101
|
+
* 120px (= `size-30` on the default v4 spacing scale).
|
|
102
|
+
*/
|
|
103
|
+
const sizingToken = sizing[0]
|
|
104
|
+
const effectivePx = sizingToken ? (tokenToPx(sizingToken) || 120) : 120
|
|
105
|
+
|
|
106
|
+
const result = encode(props.value, {
|
|
107
|
+
ecc: props.ecc,
|
|
108
|
+
border: props.border,
|
|
109
|
+
boostEcc: true,
|
|
110
|
+
})
|
|
111
|
+
const matrix = result.data
|
|
112
|
+
const dim = matrix.length
|
|
113
|
+
const cellPx = Math.max(1, Math.floor(effectivePx / dim))
|
|
114
|
+
const totalPx = cellPx * dim
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Table base classes:
|
|
118
|
+
*
|
|
119
|
+
* - `size-[Npx]` matches the outer to cell math (no stripe).
|
|
120
|
+
* - `[&_td]:*` sizes each cell and zeroes its font-size.
|
|
121
|
+
* - `bg-*` paints the table; light cells stay transparent.
|
|
122
|
+
* - `qr:*` paints dark cells via the registered variant.
|
|
123
|
+
*
|
|
124
|
+
* Defaults and user tokens share each form, so `twMerge`
|
|
125
|
+
* resolves overrides cleanly.
|
|
126
|
+
*/
|
|
127
|
+
const baseTable = [
|
|
128
|
+
`size-[${totalPx}px]`,
|
|
129
|
+
`[&_td]:w-[${cellPx}px]`,
|
|
130
|
+
`[&_td]:h-[${cellPx}px]`,
|
|
131
|
+
'[&_td]:text-[0px]',
|
|
132
|
+
'bg-white',
|
|
133
|
+
'dark:bg-gray-950',
|
|
134
|
+
'qr:bg-gray-950',
|
|
135
|
+
'dark:qr:bg-white',
|
|
136
|
+
]
|
|
137
|
+
|
|
138
|
+
const merged = twMerge([...baseTable, ...neutral].join(' '))
|
|
139
|
+
|
|
140
|
+
let rows = ''
|
|
141
|
+
for (let y = 0; y < dim; y++) {
|
|
142
|
+
let cells = ''
|
|
143
|
+
const row = matrix[y]
|
|
144
|
+
for (let x = 0; x < dim; x++) {
|
|
145
|
+
cells += row[x] ? '<td class="qd"></td>' : '<td></td>'
|
|
146
|
+
}
|
|
147
|
+
rows += `<tr>${cells}</tr>`
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const altAttr = props.alt ? ` aria-label="${escapeAttr(props.alt)}"` : ''
|
|
151
|
+
const styleAttr = attrs.style ? ` style="${String(attrs.style)}"` : ''
|
|
152
|
+
const html = `<table class="${escapeAttr(merged)}" role="img"${altAttr} cellpadding="0" cellspacing="0" border="0"${styleAttr}>${rows}</table>`
|
|
153
|
+
|
|
154
|
+
return () => createStaticVNode(html, 1)
|
|
155
|
+
},
|
|
156
|
+
}
|
|
157
|
+
</script>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { createStaticVNode } from 'vue'
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
inheritAttrs: false,
|
|
6
|
+
props: {
|
|
7
|
+
/**
|
|
8
|
+
* Raw content to emit verbatim.
|
|
9
|
+
*
|
|
10
|
+
* Auto-populated from slot content by
|
|
11
|
+
* the `maizzle:raw-extract` Vite plugin
|
|
12
|
+
* before Vue compiles the template,
|
|
13
|
+
* so `{{ }}` and other Vue/ESP
|
|
14
|
+
* syntax pass through untouched.
|
|
15
|
+
*/
|
|
16
|
+
content: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: '',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
setup(props) {
|
|
22
|
+
if (!props.content) {
|
|
23
|
+
return () => createStaticVNode('', 0)
|
|
24
|
+
}
|
|
25
|
+
return () => createStaticVNode(props.content, 1)
|
|
26
|
+
},
|
|
27
|
+
}
|
|
28
|
+
</script>
|