@maizzle/framework 6.0.0-rc.2 → 6.0.0-rc.20
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 +20 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/{build.mjs → build.js} +33 -19
- package/dist/build.js.map +1 -0
- package/dist/components/Body.vue +128 -0
- package/dist/components/Button.vue +148 -52
- package/dist/components/CodeBlock.vue +69 -0
- package/dist/components/CodeInline.vue +49 -0
- package/dist/components/Column.vue +108 -0
- package/dist/components/Container.vue +123 -0
- package/dist/components/Font.vue +96 -0
- package/dist/components/Head.vue +30 -0
- package/dist/components/Heading.vue +28 -0
- package/dist/components/Hr.vue +33 -0
- package/dist/components/Html.vue +137 -0
- package/dist/components/Img.vue +70 -0
- package/dist/components/Layout.vue +143 -0
- package/dist/components/Link.vue +26 -0
- package/dist/components/Markdown.vue +89 -0
- package/dist/components/MarkdownLayout.vue +39 -0
- package/dist/components/NotPlaintext.vue +14 -0
- package/dist/components/Outlook.vue +74 -11
- package/dist/components/OutlookBg.vue +241 -0
- package/dist/components/Overlap.vue +156 -0
- package/dist/components/Plaintext.vue +14 -0
- package/dist/components/Preheader.vue +15 -0
- package/dist/components/QrCode.vue +157 -0
- package/dist/components/Raw.vue +28 -0
- package/dist/components/Row.vue +184 -0
- package/dist/components/Section.vue +124 -0
- package/dist/components/Spacer.vue +70 -21
- package/dist/components/Tailwind.vue +43 -0
- package/dist/components/Text.vue +29 -0
- package/dist/components/utils.d.ts +28 -0
- package/dist/components/utils.d.ts.map +1 -0
- package/dist/components/utils.js +50 -0
- package/dist/components/utils.js.map +1 -0
- package/dist/components/utils.ts +51 -0
- package/dist/composables/{defineConfig.d.mts → defineConfig.d.ts} +2 -2
- package/dist/composables/defineConfig.d.ts.map +1 -0
- package/dist/composables/{defineConfig.mjs → defineConfig.js} +4 -5
- 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.mjs → renderContext.js} +2 -2
- 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.mts → useConfig.d.ts} +2 -2
- package/dist/composables/useConfig.d.ts.map +1 -0
- package/dist/composables/{useConfig.mjs → useConfig.js} +2 -3
- package/dist/composables/useConfig.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} +2 -2
- package/dist/composables/useEvent.d.ts.map +1 -0
- package/dist/composables/{useEvent.mjs → useEvent.js} +3 -4
- 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/{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 +24 -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.mts → index.d.ts} +4 -4
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/{index.mjs → index.js} +12 -10
- package/dist/config/index.js.map +1 -0
- package/dist/events/{index.d.mts → index.d.ts} +10 -4
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/{index.mjs → index.js} +21 -5
- package/dist/events/index.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +37 -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.js +57 -0
- 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 +144 -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.js +68 -0
- 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/{createRenderer.d.mts → createRenderer.d.ts} +15 -7
- package/dist/render/createRenderer.d.ts.map +1 -0
- package/dist/render/createRenderer.js +319 -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 +53 -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/plugins/codeBlockExtract.d.ts +14 -0
- package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -0
- package/dist/render/plugins/codeBlockExtract.js +34 -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} +4 -2
- package/dist/serve.d.ts.map +1 -0
- package/dist/{serve.mjs → serve.js} +203 -79
- 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 +911 -0
- package/dist/server/compatibility.js.map +1 -0
- package/dist/server/email.d.ts +17 -0
- package/dist/server/email.d.ts.map +1 -0
- package/dist/server/email.js +40 -0
- 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 +339 -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/App.vue +253 -77
- package/dist/server/ui/components/SidebarClose.vue +12 -0
- package/dist/server/ui/components/ui/checkbox/Checkbox.vue +35 -0
- package/dist/server/ui/components/ui/checkbox/index.ts +1 -0
- package/dist/server/ui/components/ui/command/Command.vue +5 -1
- package/dist/server/ui/components/ui/command/CommandDialog.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandInput.vue +19 -1
- package/dist/server/ui/components/ui/command/CommandItem.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandList.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandShortcut.vue +1 -1
- package/dist/server/ui/components/ui/dialog/DialogOverlay.vue +9 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuItem.vue +1 -1
- package/dist/server/ui/components/ui/input/Input.vue +1 -1
- package/dist/server/ui/components/ui/scroll-area/ScrollBar.vue +1 -1
- package/dist/server/ui/components/ui/sheet/SheetContent.vue +1 -1
- package/dist/server/ui/components/ui/sheet/SheetOverlay.vue +9 -1
- package/dist/server/ui/components/ui/sidebar/Sidebar.vue +8 -1
- package/dist/server/ui/components/ui/sidebar/SidebarProvider.vue +1 -1
- package/dist/server/ui/components/ui/sidebar/SidebarTrigger.vue +5 -4
- package/dist/server/ui/components/ui/tags-input/TagsInput.vue +26 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputInput.vue +17 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItem.vue +19 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItemDelete.vue +22 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItemText.vue +17 -0
- package/dist/server/ui/components/ui/tags-input/index.ts +5 -0
- package/dist/server/ui/components/ui/toggle/index.ts +3 -3
- package/dist/server/ui/components/ui/toggle-group/ToggleGroup.vue +1 -1
- package/dist/server/ui/components/ui/toggle-group/ToggleGroupItem.vue +2 -2
- package/dist/server/ui/lib/emulated-dark-mode.ts +131 -0
- package/dist/server/ui/main.css +20 -20
- package/dist/server/ui/pages/Home.vue +12 -5
- package/dist/server/ui/pages/Preview.vue +716 -276
- 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.mts → addAttributes.d.ts} +2 -2
- package/dist/transformers/addAttributes.d.ts.map +1 -0
- package/dist/transformers/{addAttributes.mjs → addAttributes.js} +16 -13
- 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} +56 -30
- 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 +546 -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 +73 -0
- package/dist/transformers/entities.js.map +1 -0
- package/dist/transformers/filters/defaults.d.ts +6 -0
- package/dist/transformers/filters/defaults.d.ts.map +1 -0
- package/dist/transformers/filters/defaults.js +78 -0
- 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/{index.d.mts → index.d.ts} +14 -11
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +133 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/inlineCss.d.ts +84 -0
- package/dist/transformers/inlineCss.d.ts.map +1 -0
- package/dist/transformers/inlineCss.js +91 -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} +34 -10
- 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/msoPlaceholders.d.ts +28 -0
- package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
- package/dist/transformers/msoPlaceholders.js +88 -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 +181 -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 +70 -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/{safeClassNames.d.mts → safeClassNames.d.ts} +2 -2
- package/dist/transformers/safeClassNames.d.ts.map +1 -0
- package/dist/transformers/{safeClassNames.mjs → safeClassNames.js} +4 -5
- package/dist/transformers/safeClassNames.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 +61 -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 +92 -0
- package/dist/transformers/tailwindComponent.js.map +1 -0
- package/dist/transformers/{tailwindcss.d.mts → tailwindcss.d.ts} +8 -4
- package/dist/transformers/tailwindcss.d.ts.map +1 -0
- package/dist/transformers/tailwindcss.js +97 -0
- 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.ts +727 -0
- 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.ts +8 -0
- package/dist/utils/ast/serializer.d.ts.map +1 -0
- package/dist/utils/ast/serializer.js +36 -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/compileTailwindCss.d.ts +16 -0
- package/dist/utils/compileTailwindCss.d.ts.map +1 -0
- package/dist/utils/compileTailwindCss.js +54 -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/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.ts +5 -0
- package/dist/utils/detect.d.ts.map +1 -0
- package/dist/utils/detect.js +10 -0
- 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/node_modules/@clack/core/CHANGELOG.md +8 -0
- package/node_modules/@clack/core/dist/index.d.mts +18 -4
- package/node_modules/@clack/core/dist/index.mjs +16 -10
- package/node_modules/@clack/core/dist/index.mjs.map +1 -1
- package/node_modules/@clack/core/package.json +5 -2
- package/node_modules/@clack/prompts/CHANGELOG.md +15 -0
- package/node_modules/@clack/prompts/README.md +107 -2
- package/node_modules/@clack/prompts/dist/index.d.mts +16 -11
- package/node_modules/@clack/prompts/dist/index.mjs +114 -107
- package/node_modules/@clack/prompts/dist/index.mjs.map +1 -1
- 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 -1
- package/node_modules/fast-wrap-ansi/lib/main.js.map +1 -1
- package/node_modules/fast-wrap-ansi/package.json +2 -2
- 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 +1 -1
- 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 +32 -52
- 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 +4 -3
- 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 +1 -1
- package/node_modules/tinyexec/dist/main.d.mts +6 -6
- package/node_modules/tinyexec/dist/main.mjs +126 -134
- package/node_modules/tinyexec/package.json +9 -9
- package/package.json +31 -21
- package/dist/build.d.mts +0 -19
- package/dist/build.d.mts.map +0 -1
- package/dist/build.mjs.map +0 -1
- package/dist/components/Divider.vue +0 -105
- package/dist/components/Vml.vue +0 -89
- 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.map +0 -1
- package/dist/composables/defineConfig.mjs.map +0 -1
- package/dist/composables/renderContext.d.mts +0 -19
- package/dist/composables/renderContext.d.mts.map +0 -1
- package/dist/composables/renderContext.mjs.map +0 -1
- package/dist/composables/useConfig.d.mts.map +0 -1
- 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/config/defaults.d.mts.map +0 -1
- package/dist/config/defaults.mjs.map +0 -1
- 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 -29
- package/dist/index.mjs +0 -29
- 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 +0 -41
- 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 +0 -35
- package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
- package/dist/render/createRenderer.d.mts.map +0 -1
- package/dist/render/createRenderer.mjs +0 -155
- 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 -44
- 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 -6
- package/dist/server/compatibility.d.mts.map +0 -1
- package/dist/server/compatibility.mjs +0 -83
- package/dist/server/compatibility.mjs.map +0 -1
- package/dist/server/linter.d.mts +0 -6
- package/dist/server/linter.d.mts.map +0 -1
- package/dist/server/linter.mjs +0 -200
- package/dist/server/linter.mjs.map +0 -1
- package/dist/server/ui/components/ui/resizable/ResizableHandle.vue +0 -30
- package/dist/server/ui/components/ui/resizable/ResizablePanel.vue +0 -21
- package/dist/server/ui/components/ui/resizable/ResizablePanelGroup.vue +0 -25
- package/dist/server/ui/components/ui/resizable/index.ts +0 -3
- 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 -38
- package/dist/transformers/entities.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 -73
- package/dist/transformers/index.mjs.map +0 -1
- package/dist/transformers/inlineCSS.d.mts +0 -30
- package/dist/transformers/inlineCSS.d.mts.map +0 -1
- package/dist/transformers/inlineCSS.mjs +0 -79
- 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 -66
- 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.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 +0 -136
- 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 +0 -149
- 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 +0 -7
- package/dist/utils/ast/serializer.d.mts.map +0 -1
- package/dist/utils/ast/serializer.mjs +0 -13
- 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/url.d.mts.map +0 -1
- package/dist/utils/url.mjs.map +0 -1
- package/node_modules/maizzle/dist/commands/make/stubs/layout.vue +0 -39
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { createStaticVNode, type PropType } from 'vue'
|
|
3
|
+
import { twMerge } from 'tailwind-merge'
|
|
4
|
+
import { codeToHtml, getSingletonHighlighter, type BundledLanguage, type BundledTheme } from 'shiki'
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
props: {
|
|
8
|
+
/** The code to highlight. */
|
|
9
|
+
code: {
|
|
10
|
+
type: String,
|
|
11
|
+
default: ''
|
|
12
|
+
},
|
|
13
|
+
/** The language for syntax highlighting. @default 'html' */
|
|
14
|
+
language: {
|
|
15
|
+
type: String as PropType<BundledLanguage>,
|
|
16
|
+
default: 'html'
|
|
17
|
+
},
|
|
18
|
+
/** The shiki theme to use. @default 'github-light' */
|
|
19
|
+
theme: {
|
|
20
|
+
type: String as PropType<BundledTheme>,
|
|
21
|
+
default: 'github-light'
|
|
22
|
+
},
|
|
23
|
+
/** CSS class for the wrapping table cell. @default 'max-w-0 mso-padding-alt-4' */
|
|
24
|
+
tdClass: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: 'max-w-0 mso-padding-alt-4'
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
inheritAttrs: false,
|
|
30
|
+
async setup(props, { slots, attrs }) {
|
|
31
|
+
// Prefer code prop → slot text
|
|
32
|
+
let source = props.code
|
|
33
|
+
|
|
34
|
+
if (!source) {
|
|
35
|
+
const slotContent = slots.default?.()
|
|
36
|
+
source = slotContent
|
|
37
|
+
?.map((vnode: any) => (typeof vnode.children === 'string' ? vnode.children : ''))
|
|
38
|
+
.join('') ?? ''
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
source = source.trim()
|
|
42
|
+
|
|
43
|
+
if (!source) {
|
|
44
|
+
return () => createStaticVNode('', 0)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const highlighted = await codeToHtml(source, {
|
|
48
|
+
lang: props.language,
|
|
49
|
+
theme: props.theme,
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
const hl = await getSingletonHighlighter({ themes: [props.theme], langs: [] })
|
|
53
|
+
const bg = hl.getTheme(props.theme).bg
|
|
54
|
+
|
|
55
|
+
// Shiki outputs <pre><code>...</code></pre>, extract the inner content
|
|
56
|
+
const codeContent = highlighted
|
|
57
|
+
.replace(/^<pre[^>]*><code>/, '')
|
|
58
|
+
.replace(/<\/code><\/pre>$/, '')
|
|
59
|
+
|
|
60
|
+
const classes = twMerge('font-mono', attrs.class as string)
|
|
61
|
+
const baseStyles = `background-color:${bg};padding:16px;overflow:auto;white-space:pre;word-wrap:normal;word-break:normal;word-spacing:normal`
|
|
62
|
+
const styles = [baseStyles, attrs.style].filter(Boolean).join(';')
|
|
63
|
+
|
|
64
|
+
const html = `<table class="w-full"><tr><td class="${props.tdClass}"><pre class="${classes}" style="${styles}"><code>${codeContent}</code></pre></td></tr></table>`
|
|
65
|
+
|
|
66
|
+
return () => createStaticVNode(html, 1)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
</script>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { createStaticVNode } from 'vue'
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
inheritAttrs: false,
|
|
6
|
+
props: {
|
|
7
|
+
/**
|
|
8
|
+
* The inline code text to render.
|
|
9
|
+
*
|
|
10
|
+
* If not provided, the slot content is used instead.
|
|
11
|
+
* The text is HTML-escaped automatically.
|
|
12
|
+
*/
|
|
13
|
+
code: {
|
|
14
|
+
type: String,
|
|
15
|
+
default: ''
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
setup(props, { slots, attrs }) {
|
|
19
|
+
let source = props.code
|
|
20
|
+
|
|
21
|
+
if (!source) {
|
|
22
|
+
const slotContent = slots.default?.()
|
|
23
|
+
source = slotContent
|
|
24
|
+
?.map((vnode: any) => (typeof vnode.children === 'string' ? vnode.children : ''))
|
|
25
|
+
.join('') ?? ''
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
source = source.trim()
|
|
29
|
+
|
|
30
|
+
if (!source) {
|
|
31
|
+
return () => createStaticVNode('', 0)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const classes = attrs.class ? ` class="${attrs.class}"` : ''
|
|
35
|
+
const baseStyles = 'white-space:normal;border-radius:6px;border:1px solid #d1d5db;background-color:#f3f4f6;padding:2px 6px;font-size:11px;color:inherit'
|
|
36
|
+
const styles = [baseStyles, attrs.style].filter(Boolean).join(';')
|
|
37
|
+
|
|
38
|
+
const escaped = source
|
|
39
|
+
.replace(/&/g, '&')
|
|
40
|
+
.replace(/</g, '<')
|
|
41
|
+
.replace(/>/g, '>')
|
|
42
|
+
.replace(/"/g, '"')
|
|
43
|
+
|
|
44
|
+
const html = `<code${classes} style="${styles}">${escaped}</code>`
|
|
45
|
+
|
|
46
|
+
return () => createStaticVNode(html, 1)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
</script>
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, createStaticVNode, inject, useAttrs } from 'vue'
|
|
3
|
+
import type { ComputedRef } from 'vue'
|
|
4
|
+
import { twMerge } from 'tailwind-merge'
|
|
5
|
+
import { nextId, normalizeToPixels, outlookFallbackProp } from './utils.ts'
|
|
6
|
+
import { useOutlookFallback } from '../composables/useOutlookFallback'
|
|
7
|
+
|
|
8
|
+
defineOptions({ inheritAttrs: false })
|
|
9
|
+
|
|
10
|
+
const attrs = useAttrs()
|
|
11
|
+
|
|
12
|
+
const props = defineProps({
|
|
13
|
+
/**
|
|
14
|
+
* Override the auto-computed column width.
|
|
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`.
|
|
19
|
+
*/
|
|
20
|
+
width: {
|
|
21
|
+
type: [String, Number],
|
|
22
|
+
default: null
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* Inline CSS applied only to the MSO `<td>` element.
|
|
26
|
+
*
|
|
27
|
+
* Use for Outlook-specific styling that shouldn't affect other clients.
|
|
28
|
+
*
|
|
29
|
+
* @example 'padding: 10px'
|
|
30
|
+
*/
|
|
31
|
+
msoStyle: {
|
|
32
|
+
type: String,
|
|
33
|
+
default: undefined
|
|
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,
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
const outlookFallback = useOutlookFallback(props.outlookFallback)
|
|
49
|
+
|
|
50
|
+
const columnCount = inject<ComputedRef<number> | null>('columnCount', null)
|
|
51
|
+
|
|
52
|
+
const count = computed(() => columnCount?.value ?? 2)
|
|
53
|
+
|
|
54
|
+
const useMarker = props.width == null
|
|
55
|
+
const colId = useMarker ? nextId('co') : null
|
|
56
|
+
|
|
57
|
+
const minWidth = computed(() => {
|
|
58
|
+
if (props.width != null) return normalizeToPixels(props.width)
|
|
59
|
+
return `__MAIZZLE_COLW_${colId}__`
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
const msoWidth = computed(() => {
|
|
63
|
+
if (props.width != null) return normalizeToPixels(props.width)
|
|
64
|
+
return `__MAIZZLE_COLW_${colId}__`
|
|
65
|
+
})
|
|
66
|
+
|
|
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
|
+
const baseClass = 'inline-block align-top text-base'
|
|
75
|
+
const mergedClass = computed(() => twMerge(baseClass, (attrs.class as string) ?? ''))
|
|
76
|
+
|
|
77
|
+
const styles = computed(() => `min-width: ${minWidth.value};`)
|
|
78
|
+
|
|
79
|
+
const tdStyle = computed(() => {
|
|
80
|
+
const parts = [`width: ${msoWidth.value}`, 'vertical-align: top']
|
|
81
|
+
if (props.msoStyle) parts.push(props.msoStyle)
|
|
82
|
+
return parts.join('; ')
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
const MsoBefore = () => createStaticVNode(
|
|
86
|
+
`<!--[if mso]><td style="${tdStyle.value}"><![endif]-->`,
|
|
87
|
+
1
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
const MsoAfter = () => createStaticVNode(
|
|
91
|
+
'<!--[if mso]></td><![endif]-->',
|
|
92
|
+
1
|
|
93
|
+
)
|
|
94
|
+
</script>
|
|
95
|
+
|
|
96
|
+
<template>
|
|
97
|
+
<MsoBefore v-if="outlookFallback" />
|
|
98
|
+
<div
|
|
99
|
+
v-bind="{ ...attrs, class: undefined }"
|
|
100
|
+
:class="mergedClass"
|
|
101
|
+
:style="styles"
|
|
102
|
+
:data-maizzle-cw-id="colId"
|
|
103
|
+
:data-maizzle-cw-count="useMarker ? count : null"
|
|
104
|
+
>
|
|
105
|
+
<slot />
|
|
106
|
+
</div>
|
|
107
|
+
<MsoAfter v-if="outlookFallback" />
|
|
108
|
+
</template>
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, provide, createStaticVNode, useAttrs } from 'vue'
|
|
3
|
+
import { twMerge } from 'tailwind-merge'
|
|
4
|
+
import { hasWidthUtility, nextId, normalizeToPixels, outlookFallbackProp } from './utils.ts'
|
|
5
|
+
import { useOutlookFallback } from '../composables/useOutlookFallback'
|
|
6
|
+
|
|
7
|
+
defineOptions({ inheritAttrs: false })
|
|
8
|
+
|
|
9
|
+
const attrs = useAttrs()
|
|
10
|
+
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
/**
|
|
13
|
+
* Max width of the container.
|
|
14
|
+
*
|
|
15
|
+
* Applied as `max-width` on the div and as `width` on the MSO table.
|
|
16
|
+
* Also used as the width source for descendant `Row`/`Column`
|
|
17
|
+
* components when computing column widths.
|
|
18
|
+
*
|
|
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.
|
|
24
|
+
*/
|
|
25
|
+
width: {
|
|
26
|
+
type: [String, Number],
|
|
27
|
+
default: null
|
|
28
|
+
},
|
|
29
|
+
/**
|
|
30
|
+
* Override the Outlook (MSO) table width independently of the
|
|
31
|
+
* div's width. Highest priority — wins over `width` and any
|
|
32
|
+
* class-derived value.
|
|
33
|
+
*/
|
|
34
|
+
msoWidth: {
|
|
35
|
+
type: [String, Number],
|
|
36
|
+
default: null
|
|
37
|
+
},
|
|
38
|
+
/**
|
|
39
|
+
* Inline CSS applied only to the MSO `<td>` element.
|
|
40
|
+
*
|
|
41
|
+
* Use for Outlook-specific styling that shouldn't affect other clients.
|
|
42
|
+
* Appended after any padding propagated from the outer div's
|
|
43
|
+
* inlined style, so msoStyle wins on duplicate properties.
|
|
44
|
+
*
|
|
45
|
+
* @example 'padding: 10px 20px'
|
|
46
|
+
*/
|
|
47
|
+
msoStyle: {
|
|
48
|
+
type: String,
|
|
49
|
+
default: undefined
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Toggle Outlook (MSO) and VML fallback markup for this
|
|
53
|
+
* component and all descendants.
|
|
54
|
+
*
|
|
55
|
+
* When `false`, skips MSO ghost tables, VML shapes,
|
|
56
|
+
* `xmlns:v`/`xmlns:o` attributes, and mso-specific CSS
|
|
57
|
+
* in all built-in components.
|
|
58
|
+
*
|
|
59
|
+
* @default true
|
|
60
|
+
*/
|
|
61
|
+
outlookFallback: outlookFallbackProp,
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
const outlookFallback = useOutlookFallback(props.outlookFallback)
|
|
65
|
+
|
|
66
|
+
provide('containerWidth', computed(() => props.width))
|
|
67
|
+
|
|
68
|
+
const useMarker = outlookFallback && props.width == null && props.msoWidth == null
|
|
69
|
+
const msoId = useMarker ? nextId('c') : null
|
|
70
|
+
const tdId = outlookFallback ? nextId('ct') : null
|
|
71
|
+
|
|
72
|
+
const styles = computed(() => {
|
|
73
|
+
if (props.width == null) return undefined
|
|
74
|
+
return `max-width: ${normalizeToPixels(props.width)}; margin: 0 auto;`
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
const mergedClass = computed(() => {
|
|
78
|
+
if (props.width != null) return attrs.class as string | undefined
|
|
79
|
+
const userClass = (attrs.class as string) ?? ''
|
|
80
|
+
const defaultClass = hasWidthUtility(userClass)
|
|
81
|
+
? 'm-0 mx-auto'
|
|
82
|
+
: 'max-w-150 m-0 mx-auto'
|
|
83
|
+
return twMerge(defaultClass, userClass)
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
const msoWidth = computed(() => {
|
|
87
|
+
if (props.msoWidth != null) return normalizeToPixels(props.msoWidth)
|
|
88
|
+
if (props.width != null) return normalizeToPixels(props.width)
|
|
89
|
+
return `__MAIZZLE_MSOW_${msoId}__`
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
const colWidthSource = computed(() =>
|
|
93
|
+
props.width != null ? normalizeToPixels(props.width) : ''
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
const tdMarker = tdId ? `__MAIZZLE_MSOTDSTYLE_${tdId}__` : ''
|
|
97
|
+
|
|
98
|
+
const MsoBefore = () => createStaticVNode(
|
|
99
|
+
`<!--[if mso]><table role="none" cellpadding="0" cellspacing="0" style="width: ${msoWidth.value}" align="center"><tr><td${tdMarker}><![endif]-->`,
|
|
100
|
+
1
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
const MsoAfter = () => createStaticVNode(
|
|
104
|
+
'<!--[if mso]></td></tr></table><![endif]-->',
|
|
105
|
+
1
|
|
106
|
+
)
|
|
107
|
+
</script>
|
|
108
|
+
|
|
109
|
+
<template>
|
|
110
|
+
<MsoBefore v-if="outlookFallback" />
|
|
111
|
+
<div
|
|
112
|
+
v-bind="{ ...attrs, class: undefined }"
|
|
113
|
+
:class="mergedClass"
|
|
114
|
+
:style="styles"
|
|
115
|
+
:data-maizzle-msow-id="msoId"
|
|
116
|
+
:data-maizzle-cw="colWidthSource"
|
|
117
|
+
:data-maizzle-mso-td-id="tdId"
|
|
118
|
+
:data-maizzle-mso-style="tdId && props.msoStyle ? props.msoStyle : null"
|
|
119
|
+
>
|
|
120
|
+
<slot />
|
|
121
|
+
</div>
|
|
122
|
+
<MsoAfter v-if="outlookFallback" />
|
|
123
|
+
</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>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { createStaticVNode } from 'vue'
|
|
3
|
+
|
|
4
|
+
const props = defineProps({
|
|
5
|
+
/**
|
|
6
|
+
* Render an empty `<head>` before the main head element.
|
|
7
|
+
*
|
|
8
|
+
* This is a workaround for Yahoo! Mail on Android, which
|
|
9
|
+
* strips the first `<head>` element it finds.
|
|
10
|
+
*
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
double: {
|
|
14
|
+
type: [Boolean, String],
|
|
15
|
+
default: false
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const EmptyHead = () => createStaticVNode('<head></head>', 1)
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<EmptyHead v-if="props.double === true || props.double === 'true'" />
|
|
24
|
+
<head>
|
|
25
|
+
<meta charset="utf-8">
|
|
26
|
+
<meta name="x-apple-disable-message-reformatting">
|
|
27
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
28
|
+
<slot />
|
|
29
|
+
</head>
|
|
30
|
+
</template>
|
|
@@ -0,0 +1,28 @@
|
|
|
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 props = defineProps({
|
|
8
|
+
/**
|
|
9
|
+
* The heading level (1-6), corresponding to `<h1>` through `<h6>`.
|
|
10
|
+
* @default 1
|
|
11
|
+
*/
|
|
12
|
+
level: {
|
|
13
|
+
type: [String, Number],
|
|
14
|
+
default: 1,
|
|
15
|
+
validator: (v: string | number) => [1, 2, 3, 4, 5, 6].includes(Number(v)),
|
|
16
|
+
},
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const attrs = useAttrs()
|
|
20
|
+
const tag = computed(() => `h${props.level}`)
|
|
21
|
+
const mergedClass = computed(() => twMerge('m-0', attrs.class as string))
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<template>
|
|
25
|
+
<component :is="tag" v-bind="$attrs" :class="mergedClass">
|
|
26
|
+
<slot />
|
|
27
|
+
</component>
|
|
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-slate-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>
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { createStaticVNode, inject, provide, useAttrs, useSlots } from 'vue'
|
|
3
|
+
import type { PropType } from 'vue'
|
|
4
|
+
import { outlookFallbackProp } from './utils.ts'
|
|
5
|
+
import { useOutlookFallback } from '../composables/useOutlookFallback'
|
|
6
|
+
import { RenderContextKey } from '../composables/renderContext'
|
|
7
|
+
|
|
8
|
+
defineOptions({ inheritAttrs: false })
|
|
9
|
+
|
|
10
|
+
const attrs = useAttrs()
|
|
11
|
+
const slots = useSlots()
|
|
12
|
+
|
|
13
|
+
const props = defineProps({
|
|
14
|
+
/**
|
|
15
|
+
* Language code for the `lang` attribute on `<html>`.
|
|
16
|
+
*
|
|
17
|
+
* Also provided to the child `Body` component for `xml:lang`.
|
|
18
|
+
*
|
|
19
|
+
* @default 'en'
|
|
20
|
+
*/
|
|
21
|
+
lang: {
|
|
22
|
+
type: String as PropType<
|
|
23
|
+
| 'af' | 'ar' | 'az'
|
|
24
|
+
| 'be' | 'bg' | 'bs'
|
|
25
|
+
| 'ca' | 'cs' | 'cy'
|
|
26
|
+
| 'da' | 'de' | 'dv'
|
|
27
|
+
| 'el' | 'en' | 'es' | 'et' | 'eu'
|
|
28
|
+
| 'fa' | 'fi' | 'fo' | 'fr'
|
|
29
|
+
| 'gl' | 'gu'
|
|
30
|
+
| 'he' | 'hi' | 'hr' | 'hu' | 'hy'
|
|
31
|
+
| 'id' | 'is' | 'it'
|
|
32
|
+
| 'ja'
|
|
33
|
+
| 'ka' | 'kk' | 'kn' | 'ko' | 'ky'
|
|
34
|
+
| 'lt' | 'lv'
|
|
35
|
+
| 'mk' | 'mn' | 'mr' | 'ms' | 'mt'
|
|
36
|
+
| 'nb' | 'nl' | 'nn' | 'no'
|
|
37
|
+
| 'pa' | 'pl' | 'pt'
|
|
38
|
+
| 'ro' | 'ru'
|
|
39
|
+
| 'sa' | 'se' | 'sk' | 'sl' | 'sq' | 'sr' | 'sv' | 'sw'
|
|
40
|
+
| 'ta' | 'te' | 'th' | 'tr' | 'tt'
|
|
41
|
+
| 'uk' | 'ur' | 'uz'
|
|
42
|
+
| 'vi'
|
|
43
|
+
| 'zh'
|
|
44
|
+
| (string & {})
|
|
45
|
+
>,
|
|
46
|
+
default: 'en'
|
|
47
|
+
},
|
|
48
|
+
/**
|
|
49
|
+
* Text direction of the document.
|
|
50
|
+
*
|
|
51
|
+
* - `ltr` — left to right (default)
|
|
52
|
+
* - `rtl` — right to left
|
|
53
|
+
*
|
|
54
|
+
* @default 'ltr'
|
|
55
|
+
*/
|
|
56
|
+
dir: {
|
|
57
|
+
type: String as PropType<'ltr' | 'rtl'>,
|
|
58
|
+
default: 'ltr'
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* Whether to include VML and Office XML namespace declarations.
|
|
62
|
+
*
|
|
63
|
+
* Required for Outlook VML support (background images, etc.).
|
|
64
|
+
* Set to `false` to omit the `xmlns:v` and `xmlns:o` attributes.
|
|
65
|
+
*
|
|
66
|
+
* @default true
|
|
67
|
+
*/
|
|
68
|
+
xmlns: {
|
|
69
|
+
type: [Boolean, String],
|
|
70
|
+
default: true
|
|
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
|
+
},
|
|
95
|
+
})
|
|
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
|
+
|
|
104
|
+
provide('htmlLang', props.lang)
|
|
105
|
+
|
|
106
|
+
const render = () => {
|
|
107
|
+
const extraAttrs = Object.entries(attrs)
|
|
108
|
+
.map(([key, value]) => value === true ? key : `${key}="${value}"`)
|
|
109
|
+
.join(' ')
|
|
110
|
+
|
|
111
|
+
const parts = [
|
|
112
|
+
`lang="${props.lang}"`,
|
|
113
|
+
`dir="${props.dir}"`,
|
|
114
|
+
]
|
|
115
|
+
|
|
116
|
+
if (outlookFallback && props.xmlns !== false && props.xmlns !== 'false') {
|
|
117
|
+
parts.push(
|
|
118
|
+
'xmlns:v="urn:schemas-microsoft-com:vml"',
|
|
119
|
+
'xmlns:o="urn:schemas-microsoft-com:office:office"',
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (extraAttrs) {
|
|
124
|
+
parts.push(extraAttrs)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return [
|
|
128
|
+
createStaticVNode(`<html ${parts.join(' ')}>`, 1),
|
|
129
|
+
slots.default?.(),
|
|
130
|
+
createStaticVNode('</html>', 1),
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
</script>
|
|
134
|
+
|
|
135
|
+
<template>
|
|
136
|
+
<render />
|
|
137
|
+
</template>
|