[{"data":1,"prerenderedAt":3428},["ShallowReactive",2],{"docs-nav":3,"\u002Fdocs\u002Fapi\u002Futilities":316},[4,9,15,19,24,28,33,37,41,45,49,53,57,60,63,67,70,74,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,156,159,162,165,168,171,175,178,181,184,186,189,192,195,198,201,204,207,210,213,216,219,222,225,228,231,234,237,240,244,247,250,253,257,261,264,267,270,273,276,279,282,285,287,290,293,296,299,302,305,308,311,313],{"path":5,"title":6,"section":7,"order":7,"sidebar":8},"\u002Fbrand","Brand",null,false,{"path":10,"title":11,"section":12,"order":13,"sidebar":14},"\u002Fdocs\u002Fapi\u002Fcomposables","Composables","API",2,true,{"path":16,"title":17,"section":12,"order":18,"sidebar":14},"\u002Fdocs\u002Fapi\u002Futilities","Utilities",1,{"path":20,"title":21,"section":22,"order":23,"sidebar":14},"\u002Fdocs\u002Fcli","CLI","Getting Started",9,{"path":25,"title":26,"section":22,"order":27,"sidebar":14},"\u002Fdocs\u002Fcompatibility","Compatibility",4,{"path":29,"title":30,"section":31,"order":32,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fbody","Body","Components",3,{"path":34,"title":35,"section":31,"order":36,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fbutton","Button",13,{"path":38,"title":39,"section":31,"order":40,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fcodeblock","CodeBlock",18,{"path":42,"title":43,"section":31,"order":44,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fcodeinline","CodeInline",19,{"path":46,"title":47,"section":31,"order":48,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fcolumn","Column",8,{"path":50,"title":51,"section":31,"order":52,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fcontainer","Container",5,{"path":54,"title":55,"section":31,"order":56,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Ffont","Font",11,{"path":58,"title":59,"section":31,"order":13,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fhead","Head",{"path":61,"title":62,"section":31,"order":23,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fheading","Heading",{"path":64,"title":65,"section":31,"order":66,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fhr","Hr",16,{"path":68,"title":69,"section":31,"order":18,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fhtml","Html",{"path":71,"title":72,"section":31,"order":73,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fimg","Img",14,{"path":75,"title":76,"section":31,"order":27,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Flayout","Layout",{"path":78,"title":79,"section":31,"order":80,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Flink","Link",12,{"path":82,"title":83,"section":31,"order":84,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fmarkdown","Markdown",20,{"path":86,"title":87,"section":31,"order":88,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fnotoutlook","NotOutlook",22,{"path":90,"title":91,"section":31,"order":92,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fnowidows","NoWidows",26,{"path":94,"title":95,"section":31,"order":96,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Foutlook","Outlook",21,{"path":98,"title":99,"section":31,"order":100,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Foutlookbg","OutlookBg",23,{"path":102,"title":103,"section":31,"order":104,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Foverview","Overview",0,{"path":106,"title":107,"section":31,"order":108,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fplaintext","Plaintext",31,{"path":110,"title":111,"section":31,"order":112,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fpreheader","Preheader",17,{"path":114,"title":115,"section":31,"order":116,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fqrcode","QrCode",30,{"path":118,"title":119,"section":31,"order":120,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fraw","Raw",28,{"path":122,"title":123,"section":31,"order":124,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Frow","Row",7,{"path":126,"title":127,"section":31,"order":128,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fsection","Section",6,{"path":130,"title":131,"section":31,"order":132,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fspacer","Spacer",15,{"path":134,"title":135,"section":31,"order":136,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Ftailwind","Tailwind",29,{"path":138,"title":139,"section":31,"order":140,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Ftext","Text",10,{"path":142,"title":143,"section":31,"order":144,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fvml","Vml",24,{"path":146,"title":147,"section":31,"order":148,"sidebar":14},"\u002Fdocs\u002Fcomponents\u002Fwithurl","WithUrl",27,{"path":150,"title":151,"section":152,"order":128,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Faws-ses","AWS SES","Deploy",{"path":154,"title":155,"section":152,"order":124,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fcloudflare","Cloudflare",{"path":157,"title":158,"section":152,"order":32,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fmailgun","Mailgun",{"path":160,"title":161,"section":152,"order":18,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fnodemailer","Nodemailer",{"path":163,"title":164,"section":152,"order":27,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fpostmark","Postmark",{"path":166,"title":167,"section":152,"order":52,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fresend","Resend",{"path":169,"title":170,"section":152,"order":13,"sidebar":14},"\u002Fdocs\u002Fdeploy\u002Fsendgrid","SendGrid",{"path":172,"title":173,"section":174,"order":32,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Fconfiguration","Configuration","Development",{"path":176,"title":177,"section":174,"order":52,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Fevents","Events",{"path":179,"title":180,"section":174,"order":128,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Fi18n","i18n",{"path":182,"title":183,"section":174,"order":13,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Flocal","Dev Server",{"path":185,"title":107,"section":174,"order":27,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Fplaintext",{"path":187,"title":188,"section":174,"order":18,"sidebar":14},"\u002Fdocs\u002Fdevelopment\u002Ftemplates","Templates",{"path":190,"title":191,"section":22,"order":32,"sidebar":14},"\u002Fdocs\u002Feditor-setup","Editor Setup",{"path":193,"title":194,"section":22,"order":48,"sidebar":14},"\u002Fdocs\u002Fglossary","Glossary",{"path":196,"title":197,"section":22,"order":128,"sidebar":8},"\u002Fdocs\u002Finstallation\u002Fframeworks","Framework Guides",{"path":199,"title":200,"section":197,"order":52,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fadonisjs","AdonisJS",{"path":202,"title":203,"section":197,"order":32,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fastro","Astro",{"path":205,"title":206,"section":197,"order":18,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Flaravel","Laravel",{"path":208,"title":209,"section":197,"order":48,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fnextjs","Next.js",{"path":211,"title":212,"section":197,"order":13,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fnuxt","Nuxt",{"path":214,"title":215,"section":197,"order":124,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fqwik","Qwik",{"path":217,"title":218,"section":197,"order":128,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fsolid","Solid",{"path":220,"title":221,"section":197,"order":27,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Fsveltekit","SvelteKit",{"path":223,"title":224,"section":197,"order":23,"sidebar":14},"\u002Fdocs\u002Finstallation\u002Fframeworks\u002Ftanstack","TanStack Start",{"path":226,"title":227,"section":22,"order":13,"sidebar":14},"\u002Fdocs\u002Finstallation","Installation",{"path":229,"title":230,"section":22,"order":32,"sidebar":8},"\u002Fdocs\u002Finstallation\u002Fmanual","Manual Installation",{"path":232,"title":233,"section":22,"order":27,"sidebar":8},"\u002Fdocs\u002Finstallation\u002Fmonorepo","Monorepo Installation",{"path":235,"title":236,"section":22,"order":52,"sidebar":8},"\u002Fdocs\u002Finstallation\u002Fvite","Vite Plugin",{"path":238,"title":239,"section":22,"order":18,"sidebar":14},"\u002Fdocs\u002Fintroduction","What is Maizzle?",{"path":241,"title":242,"section":243,"order":13,"sidebar":14},"\u002Fdocs\u002Fmigrate\u002Fmjml","MJML","Migrate to Maizzle",{"path":245,"title":246,"section":243,"order":18,"sidebar":14},"\u002Fdocs\u002Fmigrate\u002Freact-email","React Email",{"path":248,"title":249,"section":22,"order":124,"sidebar":14},"\u002Fdocs\u002Fresources","Resources",{"path":251,"title":252,"section":22,"order":128,"sidebar":14},"\u002Fdocs\u002Fskill","Agent Skill",{"path":254,"title":255,"section":256,"order":18,"sidebar":14},"\u002Fdocs\u002Ftailwindcss","Tailwind CSS","Core Concepts",{"path":258,"title":259,"section":260,"order":13,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fadd-attributes","Add Attributes","Transformers",{"path":262,"title":263,"section":260,"order":48,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fattribute-to-style","Attribute to Style",{"path":265,"title":266,"section":260,"order":36,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fbase-url","Base URL",{"path":268,"title":269,"section":260,"order":66,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fentities","Entities",{"path":271,"title":272,"section":260,"order":80,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Ffilters","Filters",{"path":274,"title":275,"section":260,"order":112,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fformat","Format",{"path":277,"title":278,"section":260,"order":32,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Finline-css","Inline CSS",{"path":280,"title":281,"section":260,"order":56,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Finline-link","Inline Link",{"path":283,"title":284,"section":260,"order":40,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fminify","Minify",{"path":286,"title":103,"section":260,"order":18,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Foverview",{"path":288,"title":289,"section":260,"order":27,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fpurge-css","Purge CSS",{"path":291,"title":292,"section":260,"order":140,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fremove-attributes","Remove Attributes",{"path":294,"title":295,"section":260,"order":132,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Freplace-strings","Replace Strings",{"path":297,"title":298,"section":260,"order":52,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fsafe-selectors","Safe Selectors",{"path":300,"title":301,"section":260,"order":128,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fshorthand-css","Shorthand CSS",{"path":303,"title":304,"section":260,"order":124,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Fsix-hex","Six-digit HEX",{"path":306,"title":307,"section":260,"order":73,"sidebar":14},"\u002Fdocs\u002Ftransformers\u002Furl-parameters","URL Parameters",{"path":309,"title":310,"section":22,"order":52,"sidebar":14},"\u002Fdocs\u002Fupgrade-guide","Upgrade Guide",{"path":312,"title":236,"section":256,"order":13,"sidebar":14},"\u002Fdocs\u002Fvite-plugin",{"path":314,"title":315,"section":7,"order":7,"sidebar":8},"\u002Fprivacy","Privacy Policy",{"id":317,"title":17,"body":318,"description":3422,"extension":3423,"meta":3424,"navigation":14,"order":18,"path":16,"section":12,"seo":3425,"sidebar":14,"stem":3426,"toc":14,"__hash__":3427},"docs\u002Fdocs\u002Fapi\u002Futilities.md",{"type":319,"value":320,"toc":3386},"minimark",[321,325,329,334,337,422,425,430,433,448,479,485,568,572,576,582,585,641,645,652,687,691,694,793,796,850,854,857,905,924,928,933,940,946,998,1004,1036,1046,1069,1072,1076,1094,1098,1260,1264,1267,1311,1317,1320,1323,1328,1331,1388,1391,1403,1410,1440,1443,1452,1455,1458,1465,1507,1511,1514,1529,1779,1782,1785,1794,1801,1805,1815,1826,1837,1959,1977,1980,1990,1997,2000,2008,2014,2017,2026,2029,2033,2037,2040,2160,2163,2264,2274,2278,2281,2307,2311,2314,2317,2320,2324,2374,2378,2381,2450,2453,2458,2470,2563,2567,2574,2620,2623,2682,2685,2693,2697,2700,2736,2740,2749,2802,2805,2809,2818,3016,3020,3029,3044,3047,3051,3054,3143,3146,3179,3183,3186,3195,3208,3211,3214,3359,3365,3369,3375,3378,3382],[322,323,17],"h1",{"id":324},"utilities",[326,327,328],"p",{},"Use Maizzle functions for build scripts, programmatic renderers, dev workflows, and Vite-powered host apps.",[330,331,333],"h2",{"id":332},"render","render()",[326,335,336],{},"Render a single template to production-ready HTML, with the full pipeline applied (SSR, transformers, doctype).",[338,339,345],"pre",{"className":340,"code":341,"filename":342,"language":343,"meta":344,"style":344},"language-ts shiki shiki-themes laserwave","import { render } from '@maizzle\u002Fframework'\n\nconst { html } = await render('emails\u002Fwelcome.vue')\n","build.js","ts","",[346,347,348,380,385],"code",{"__ignoreMap":344},[349,350,352,356,360,364,367,370,373,377],"span",{"class":351,"line":18},"line",[349,353,355],{"class":354},"s0ZPN","import",[349,357,359],{"class":358},"sGGKt"," {",[349,361,363],{"class":362},"sU-n2"," render",[349,365,366],{"class":358}," }",[349,368,369],{"class":354}," from",[349,371,372],{"class":358}," '",[349,374,376],{"class":375},"sXiT_","@maizzle\u002Fframework",[349,378,379],{"class":358},"'\n",[349,381,382],{"class":351,"line":13},[349,383,384],{"emptyLinePlaceholder":14},"\n",[349,386,387,391,393,396,398,402,405,408,411,414,417,419],{"class":351,"line":32},[349,388,390],{"class":389},"sIihq","const",[349,392,359],{"class":358},[349,394,395],{"class":362}," html",[349,397,366],{"class":358},[349,399,401],{"class":400},"sb4Pa"," =",[349,403,404],{"class":354}," await",[349,406,363],{"class":407},"sZNF3",[349,409,410],{"class":358},"(",[349,412,413],{"class":358},"'",[349,415,416],{"class":375},"emails\u002Fwelcome.vue",[349,418,413],{"class":358},[349,420,421],{"class":358},")\n",[326,423,424],{},"The function accepts a file path or a raw Vue SFC string. It resolves the config, compiles the template, applies all configured transformers, and returns the final HTML.",[426,427,429],"h3",{"id":428},"template-input","Template input",[326,431,432],{},"You may pass different input types depending on your use case.",[326,434,435,439,440,443,444,447],{},[436,437,438],"strong",{},"File path"," — a path to a ",[346,441,442],{},".vue"," or ",[346,445,446],{},".md"," template file:",[338,449,451],{"className":340,"code":450,"filename":342,"language":343,"meta":344,"style":344},"const { html } = await render('emails\u002Fwelcome.vue')\n",[346,452,453],{"__ignoreMap":344},[349,454,455,457,459,461,463,465,467,469,471,473,475,477],{"class":351,"line":18},[349,456,390],{"class":389},[349,458,359],{"class":358},[349,460,395],{"class":362},[349,462,366],{"class":358},[349,464,401],{"class":400},[349,466,404],{"class":354},[349,468,363],{"class":407},[349,470,410],{"class":358},[349,472,413],{"class":358},[349,474,416],{"class":375},[349,476,413],{"class":358},[349,478,421],{"class":358},[326,480,481,484],{},[436,482,483],{},"SFC string"," — a raw Vue SFC string:",[338,486,488],{"className":340,"code":487,"filename":342,"language":343,"meta":344,"style":344},"const { html } = await render(`\n\u003Ctemplate>\n  \u003CHtml>\n    \u003CHead \u002F>\n    \u003CBody>\n      \u003CContainer>\n        \u003CText>Hello world\u003C\u002FText>\n      \u003C\u002FContainer>\n    \u003C\u002FBody>\n  \u003C\u002FHtml>\n\u003C\u002Ftemplate>\n`)\n",[346,489,490,511,516,521,526,531,536,541,546,551,556,561],{"__ignoreMap":344},[349,491,492,494,496,498,500,502,504,506,508],{"class":351,"line":18},[349,493,390],{"class":389},[349,495,359],{"class":358},[349,497,395],{"class":362},[349,499,366],{"class":358},[349,501,401],{"class":400},[349,503,404],{"class":354},[349,505,363],{"class":407},[349,507,410],{"class":358},[349,509,510],{"class":358},"`\n",[349,512,513],{"class":351,"line":13},[349,514,515],{"class":375},"\u003Ctemplate>\n",[349,517,518],{"class":351,"line":32},[349,519,520],{"class":375},"  \u003CHtml>\n",[349,522,523],{"class":351,"line":27},[349,524,525],{"class":375},"    \u003CHead \u002F>\n",[349,527,528],{"class":351,"line":52},[349,529,530],{"class":375},"    \u003CBody>\n",[349,532,533],{"class":351,"line":128},[349,534,535],{"class":375},"      \u003CContainer>\n",[349,537,538],{"class":351,"line":124},[349,539,540],{"class":375},"        \u003CText>Hello world\u003C\u002FText>\n",[349,542,543],{"class":351,"line":48},[349,544,545],{"class":375},"      \u003C\u002FContainer>\n",[349,547,548],{"class":351,"line":23},[349,549,550],{"class":375},"    \u003C\u002FBody>\n",[349,552,553],{"class":351,"line":140},[349,554,555],{"class":375},"  \u003C\u002FHtml>\n",[349,557,558],{"class":351,"line":56},[349,559,560],{"class":375},"\u003C\u002Ftemplate>\n",[349,562,563,566],{"class":351,"line":80},[349,564,565],{"class":358},"`",[349,567,421],{"class":358},[426,569,571],{"id":570},"options","Options",[573,574,575],"h4",{"id":575},"config",[326,577,578,579],{},"Type: ",[346,580,581],{},"Partial\u003CMaizzleConfig>",[326,583,584],{},"A config object to merge with the resolved config from disk. Use this to override specific options for a single render.",[338,586,588],{"className":340,"code":587,"filename":342,"language":343,"meta":344,"style":344},"const { html } = await render('emails\u002Fwelcome.vue', {\n  minify: true,\n})\n",[346,589,590,620,636],{"__ignoreMap":344},[349,591,592,594,596,598,600,602,604,606,608,610,612,614,617],{"class":351,"line":18},[349,593,390],{"class":389},[349,595,359],{"class":358},[349,597,395],{"class":362},[349,599,366],{"class":358},[349,601,401],{"class":400},[349,603,404],{"class":354},[349,605,363],{"class":407},[349,607,410],{"class":358},[349,609,413],{"class":358},[349,611,416],{"class":375},[349,613,413],{"class":358},[349,615,616],{"class":358},",",[349,618,619],{"class":358}," {\n",[349,621,622,626,629,633],{"class":351,"line":13},[349,623,625],{"class":624},"sLaUg","  minify",[349,627,628],{"class":358},":",[349,630,632],{"class":631},"skd8d"," true",[349,634,635],{"class":358},",\n",[349,637,638],{"class":351,"line":32},[349,639,640],{"class":358},"})\n",[426,642,644],{"id":643},"return-value","Return value",[326,646,647,648,651],{},"A ",[346,649,650],{},"Promise"," that resolves to:",[653,654,655,666,674],"ul",{},[656,657,658,661,662,665],"li",{},[346,659,660],{},"html"," (",[346,663,664],{},"string",") — the compiled HTML string with all transformers applied and doctype prepended",[656,667,668,661,670,673],{},[346,669,575],{},[346,671,672],{},"MaizzleConfig",") — the fully resolved config object that was used for rendering",[656,675,676,661,679,682,683,686],{},[346,677,678],{},"plaintext",[346,680,681],{},"string | undefined",") — a plaintext version of the email, generated if plaintext is enabled in your config or via the ",[346,684,685],{},"usePlaintext()"," composable in the template",[426,688,690],{"id":689},"examples","Examples",[326,692,693],{},"Render a template and write it to disk:",[338,695,697],{"className":340,"code":696,"filename":342,"language":343,"meta":344,"style":344},"import { render } from '@maizzle\u002Fframework'\nimport { writeFile } from 'node:fs\u002Fpromises'\n\nconst { html } = await render('emails\u002Fwelcome.vue')\n\nawait writeFile('dist\u002Fwelcome.html', html)\n",[346,698,699,717,737,741,767,771],{"__ignoreMap":344},[349,700,701,703,705,707,709,711,713,715],{"class":351,"line":18},[349,702,355],{"class":354},[349,704,359],{"class":358},[349,706,363],{"class":362},[349,708,366],{"class":358},[349,710,369],{"class":354},[349,712,372],{"class":358},[349,714,376],{"class":375},[349,716,379],{"class":358},[349,718,719,721,723,726,728,730,732,735],{"class":351,"line":13},[349,720,355],{"class":354},[349,722,359],{"class":358},[349,724,725],{"class":362}," writeFile",[349,727,366],{"class":358},[349,729,369],{"class":354},[349,731,372],{"class":358},[349,733,734],{"class":375},"node:fs\u002Fpromises",[349,736,379],{"class":358},[349,738,739],{"class":351,"line":32},[349,740,384],{"emptyLinePlaceholder":14},[349,742,743,745,747,749,751,753,755,757,759,761,763,765],{"class":351,"line":27},[349,744,390],{"class":389},[349,746,359],{"class":358},[349,748,395],{"class":362},[349,750,366],{"class":358},[349,752,401],{"class":400},[349,754,404],{"class":354},[349,756,363],{"class":407},[349,758,410],{"class":358},[349,760,413],{"class":358},[349,762,416],{"class":375},[349,764,413],{"class":358},[349,766,421],{"class":358},[349,768,769],{"class":351,"line":52},[349,770,384],{"emptyLinePlaceholder":14},[349,772,773,776,778,780,782,785,787,789,791],{"class":351,"line":128},[349,774,775],{"class":354},"await",[349,777,725],{"class":407},[349,779,410],{"class":358},[349,781,413],{"class":358},[349,783,784],{"class":375},"dist\u002Fwelcome.html",[349,786,413],{"class":358},[349,788,616],{"class":358},[349,790,395],{"class":362},[349,792,421],{"class":358},[326,794,795],{},"Render with config overrides:",[338,797,799],{"className":340,"code":798,"filename":342,"language":343,"meta":344,"style":344},"const { html, plaintext } = await render('emails\u002Freceipt.vue', {\n  plaintext: true,\n})\n",[346,800,801,835,846],{"__ignoreMap":344},[349,802,803,805,807,809,811,814,816,818,820,822,824,826,829,831,833],{"class":351,"line":18},[349,804,390],{"class":389},[349,806,359],{"class":358},[349,808,395],{"class":362},[349,810,616],{"class":358},[349,812,813],{"class":362}," plaintext",[349,815,366],{"class":358},[349,817,401],{"class":400},[349,819,404],{"class":354},[349,821,363],{"class":407},[349,823,410],{"class":358},[349,825,413],{"class":358},[349,827,828],{"class":375},"emails\u002Freceipt.vue",[349,830,413],{"class":358},[349,832,616],{"class":358},[349,834,619],{"class":358},[349,836,837,840,842,844],{"class":351,"line":13},[349,838,839],{"class":624},"  plaintext",[349,841,628],{"class":358},[349,843,632],{"class":631},[349,845,635],{"class":358},[349,847,848],{"class":351,"line":32},[349,849,640],{"class":358},[330,851,853],{"id":852},"build","build()",[326,855,856],{},"Build all email templates to HTML files, programmatically.",[338,858,860],{"className":340,"code":859,"filename":342,"language":343,"meta":344,"style":344},"import { build } from '@maizzle\u002Fframework'\n\nconst { files } = await build()\n",[346,861,862,881,885],{"__ignoreMap":344},[349,863,864,866,868,871,873,875,877,879],{"class":351,"line":18},[349,865,355],{"class":354},[349,867,359],{"class":358},[349,869,870],{"class":362}," build",[349,872,366],{"class":358},[349,874,369],{"class":354},[349,876,372],{"class":358},[349,878,376],{"class":375},[349,880,379],{"class":358},[349,882,883],{"class":351,"line":13},[349,884,384],{"emptyLinePlaceholder":14},[349,886,887,889,891,894,896,898,900,902],{"class":351,"line":32},[349,888,390],{"class":389},[349,890,359],{"class":358},[349,892,893],{"class":362}," files",[349,895,366],{"class":358},[349,897,401],{"class":400},[349,899,404],{"class":354},[349,901,870],{"class":407},[349,903,904],{"class":358},"()\n",[326,906,907,908,911,912,915,916,919,920,923],{},"This resolves your config, globs templates from the configured ",[346,909,910],{},"content"," paths, compiles each one through the full rendering pipeline, and writes the output to disk. Events like ",[346,913,914],{},"beforeRender",", ",[346,917,918],{},"afterRender",", and ",[346,921,922],{},"afterBuild"," are fired at the appropriate stages.",[426,925,927],{"id":926},"config-input","Config input",[326,929,578,930],{},[346,931,932],{},"Partial\u003CMaizzleConfig> | string | undefined",[326,934,935,936,939],{},"Pass a config object to merge with the resolved config, a string path to a config file, or omit to load ",[346,937,938],{},"maizzle.config"," from the working directory.",[326,941,942,945],{},[436,943,944],{},"Config object"," — merged with the resolved config:",[338,947,949],{"className":340,"code":948,"filename":342,"language":343,"meta":344,"style":344},"const { files } = await build({\n  output: { path: 'build_production' },\n})\n",[346,950,951,970,994],{"__ignoreMap":344},[349,952,953,955,957,959,961,963,965,967],{"class":351,"line":18},[349,954,390],{"class":389},[349,956,359],{"class":358},[349,958,893],{"class":362},[349,960,366],{"class":358},[349,962,401],{"class":400},[349,964,404],{"class":354},[349,966,870],{"class":407},[349,968,969],{"class":358},"({\n",[349,971,972,975,977,979,982,984,986,989,991],{"class":351,"line":13},[349,973,974],{"class":624},"  output",[349,976,628],{"class":358},[349,978,359],{"class":358},[349,980,981],{"class":624}," path",[349,983,628],{"class":358},[349,985,372],{"class":358},[349,987,988],{"class":375},"build_production",[349,990,413],{"class":358},[349,992,993],{"class":358}," },\n",[349,995,996],{"class":351,"line":32},[349,997,640],{"class":358},[326,999,1000,1003],{},[436,1001,1002],{},"Path to config file"," — loads config from a specific file:",[338,1005,1007],{"className":340,"code":1006,"filename":342,"language":343,"meta":344,"style":344},"const { files } = await build('.\u002Fmaizzle.production.ts')\n",[346,1008,1009],{"__ignoreMap":344},[349,1010,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1032,1034],{"class":351,"line":18},[349,1012,390],{"class":389},[349,1014,359],{"class":358},[349,1016,893],{"class":362},[349,1018,366],{"class":358},[349,1020,401],{"class":400},[349,1022,404],{"class":354},[349,1024,870],{"class":407},[349,1026,410],{"class":358},[349,1028,413],{"class":358},[349,1030,1031],{"class":375},".\u002Fmaizzle.production.ts",[349,1033,413],{"class":358},[349,1035,421],{"class":358},[326,1037,1038,1041,1042,1045],{},[436,1039,1040],{},"No argument"," — loads the default ",[346,1043,1044],{},"maizzle.config.ts"," from the working directory:",[338,1047,1049],{"className":340,"code":1048,"filename":342,"language":343,"meta":344,"style":344},"const { files } = await build()\n",[346,1050,1051],{"__ignoreMap":344},[349,1052,1053,1055,1057,1059,1061,1063,1065,1067],{"class":351,"line":18},[349,1054,390],{"class":389},[349,1056,359],{"class":358},[349,1058,893],{"class":362},[349,1060,366],{"class":358},[349,1062,401],{"class":400},[349,1064,404],{"class":354},[349,1066,870],{"class":407},[349,1068,904],{"class":358},[426,1070,644],{"id":1071},"return-value-1",[326,1073,647,1074,651],{},[346,1075,650],{},[653,1077,1078,1087],{},[656,1079,1080,661,1083,1086],{},[346,1081,1082],{},"files",[346,1084,1085],{},"string[]",") — array of file paths that were written to disk",[656,1088,1089,661,1091,1093],{},[346,1090,575],{},[346,1092,672],{},") — the fully resolved config object that was used for the build",[426,1095,1097],{"id":1096},"example","Example",[338,1099,1101],{"className":340,"code":1100,"filename":342,"language":343,"meta":344,"style":344},"import { build } from '@maizzle\u002Fframework'\n\nconst { files, config } = await build({\n  content: ['src\u002Femails\u002F**\u002F*.vue'],\n  output: { path: 'dist' },\n  minify: true,\n})\n\nconsole.log(`Built ${files.length} templates to ${config.output.path}`)\n",[346,1102,1103,1121,1125,1148,1168,1189,1199,1203,1207],{"__ignoreMap":344},[349,1104,1105,1107,1109,1111,1113,1115,1117,1119],{"class":351,"line":18},[349,1106,355],{"class":354},[349,1108,359],{"class":358},[349,1110,870],{"class":362},[349,1112,366],{"class":358},[349,1114,369],{"class":354},[349,1116,372],{"class":358},[349,1118,376],{"class":375},[349,1120,379],{"class":358},[349,1122,1123],{"class":351,"line":13},[349,1124,384],{"emptyLinePlaceholder":14},[349,1126,1127,1129,1131,1133,1135,1138,1140,1142,1144,1146],{"class":351,"line":32},[349,1128,390],{"class":389},[349,1130,359],{"class":358},[349,1132,893],{"class":362},[349,1134,616],{"class":358},[349,1136,1137],{"class":362}," config",[349,1139,366],{"class":358},[349,1141,401],{"class":400},[349,1143,404],{"class":354},[349,1145,870],{"class":407},[349,1147,969],{"class":358},[349,1149,1150,1153,1155,1158,1160,1163,1165],{"class":351,"line":27},[349,1151,1152],{"class":624},"  content",[349,1154,628],{"class":358},[349,1156,1157],{"class":358}," [",[349,1159,413],{"class":358},[349,1161,1162],{"class":375},"src\u002Femails\u002F**\u002F*.vue",[349,1164,413],{"class":358},[349,1166,1167],{"class":358},"],\n",[349,1169,1170,1172,1174,1176,1178,1180,1182,1185,1187],{"class":351,"line":52},[349,1171,974],{"class":624},[349,1173,628],{"class":358},[349,1175,359],{"class":358},[349,1177,981],{"class":624},[349,1179,628],{"class":358},[349,1181,372],{"class":358},[349,1183,1184],{"class":375},"dist",[349,1186,413],{"class":358},[349,1188,993],{"class":358},[349,1190,1191,1193,1195,1197],{"class":351,"line":128},[349,1192,625],{"class":624},[349,1194,628],{"class":358},[349,1196,632],{"class":631},[349,1198,635],{"class":358},[349,1200,1201],{"class":351,"line":124},[349,1202,640],{"class":358},[349,1204,1205],{"class":351,"line":48},[349,1206,384],{"emptyLinePlaceholder":14},[349,1208,1209,1212,1215,1218,1220,1222,1225,1228,1230,1232,1235,1238,1241,1243,1245,1247,1250,1252,1255,1258],{"class":351,"line":23},[349,1210,1211],{"class":362},"console",[349,1213,1214],{"class":400},".",[349,1216,1217],{"class":407},"log",[349,1219,410],{"class":358},[349,1221,565],{"class":358},[349,1223,1224],{"class":375},"Built ",[349,1226,1227],{"class":358},"${",[349,1229,1082],{"class":362},[349,1231,1214],{"class":400},[349,1233,1234],{"class":375},"length",[349,1236,1237],{"class":358},"}",[349,1239,1240],{"class":375}," templates to ",[349,1242,1227],{"class":358},[349,1244,575],{"class":362},[349,1246,1214],{"class":400},[349,1248,1249],{"class":362},"output",[349,1251,1214],{"class":400},[349,1253,1254],{"class":354},"path",[349,1256,1257],{"class":358},"}`",[349,1259,421],{"class":358},[330,1261,1263],{"id":1262},"serve","serve()",[326,1265,1266],{},"Start the Maizzle dev server programmatically.",[338,1268,1271],{"className":340,"code":1269,"filename":1270,"language":343,"meta":344,"style":344},"import { serve } from '@maizzle\u002Fframework'\n\nconst server = await serve()\n","dev.js",[346,1272,1273,1292,1296],{"__ignoreMap":344},[349,1274,1275,1277,1279,1282,1284,1286,1288,1290],{"class":351,"line":18},[349,1276,355],{"class":354},[349,1278,359],{"class":358},[349,1280,1281],{"class":362}," serve",[349,1283,366],{"class":358},[349,1285,369],{"class":354},[349,1287,372],{"class":358},[349,1289,376],{"class":375},[349,1291,379],{"class":358},[349,1293,1294],{"class":351,"line":13},[349,1295,384],{"emptyLinePlaceholder":14},[349,1297,1298,1300,1303,1305,1307,1309],{"class":351,"line":32},[349,1299,390],{"class":389},[349,1301,1302],{"class":362}," server",[349,1304,401],{"class":400},[349,1306,404],{"class":354},[349,1308,1281],{"class":407},[349,1310,904],{"class":358},[326,1312,1313,1314,1214],{},"This creates a Vite dev server with the Maizzle dev UI and an SSR renderer for compiling templates on the fly. The server starts on port 3000 by default, configurable through ",[346,1315,1316],{},"config.server.port",[426,1318,571],{"id":1319},"options-1",[573,1321,575],{"id":1322},"config-1",[326,1324,578,1325],{},[346,1326,1327],{},"Partial\u003CMaizzleConfig> | string",[326,1329,1330],{},"Pass a config object to merge with the resolved config, or a string path to a config file.",[338,1332,1334],{"className":340,"code":1333,"filename":1270,"language":343,"meta":344,"style":344},"const server = await serve({\n  config: {\n    server: { port: 8080 },\n  },\n})\n",[346,1335,1336,1350,1359,1379,1384],{"__ignoreMap":344},[349,1337,1338,1340,1342,1344,1346,1348],{"class":351,"line":18},[349,1339,390],{"class":389},[349,1341,1302],{"class":362},[349,1343,401],{"class":400},[349,1345,404],{"class":354},[349,1347,1281],{"class":407},[349,1349,969],{"class":358},[349,1351,1352,1355,1357],{"class":351,"line":13},[349,1353,1354],{"class":624},"  config",[349,1356,628],{"class":358},[349,1358,619],{"class":358},[349,1360,1361,1364,1366,1368,1371,1373,1377],{"class":351,"line":32},[349,1362,1363],{"class":624},"    server",[349,1365,628],{"class":358},[349,1367,359],{"class":358},[349,1369,1370],{"class":624}," port",[349,1372,628],{"class":358},[349,1374,1376],{"class":1375},"s0EtI"," 8080",[349,1378,993],{"class":358},[349,1380,1381],{"class":351,"line":27},[349,1382,1383],{"class":358},"  },\n",[349,1385,1386],{"class":351,"line":52},[349,1387,640],{"class":358},[573,1389,1390],{"id":1390},"host",[326,1392,578,1393,1396,1399,1400],{},[346,1394,1395],{},"boolean | string",[1397,1398],"br",{},"\nDefault: ",[346,1401,1402],{},"false",[326,1404,1405,1406,1409],{},"Expose the server on the network. Pass ",[346,1407,1408],{},"true"," to listen on all addresses, or a specific address string.",[338,1411,1413],{"className":340,"code":1412,"filename":1270,"language":343,"meta":344,"style":344},"const server = await serve({ host: true })\n",[346,1414,1415],{"__ignoreMap":344},[349,1416,1417,1419,1421,1423,1425,1427,1430,1433,1435,1437],{"class":351,"line":18},[349,1418,390],{"class":389},[349,1420,1302],{"class":362},[349,1422,401],{"class":400},[349,1424,404],{"class":354},[349,1426,1281],{"class":407},[349,1428,1429],{"class":358},"({",[349,1431,1432],{"class":624}," host",[349,1434,628],{"class":358},[349,1436,632],{"class":631},[349,1438,1439],{"class":358}," })\n",[573,1441,1442],{"id":1442},"silent",[326,1444,578,1445,1448,1399,1450],{},[346,1446,1447],{},"boolean",[1397,1449],{},[346,1451,1402],{},[326,1453,1454],{},"Suppress the startup banner output.",[426,1456,644],{"id":1457},"return-value-2",[326,1459,1460,1461,1464],{},"Returns a ",[346,1462,1463],{},"Promise\u003CViteDevServer>"," — the underlying Vite dev server instance. You can use this to programmatically close the server or access its internals.",[338,1466,1468],{"className":340,"code":1467,"filename":1270,"language":343,"meta":344,"style":344},"const server = await serve()\n\n\u002F\u002F Later, shut it down\nawait server.close()\n",[346,1469,1470,1484,1488,1494],{"__ignoreMap":344},[349,1471,1472,1474,1476,1478,1480,1482],{"class":351,"line":18},[349,1473,390],{"class":389},[349,1475,1302],{"class":362},[349,1477,401],{"class":400},[349,1479,404],{"class":354},[349,1481,1281],{"class":407},[349,1483,904],{"class":358},[349,1485,1486],{"class":351,"line":13},[349,1487,384],{"emptyLinePlaceholder":14},[349,1489,1490],{"class":351,"line":32},[349,1491,1493],{"class":1492},"sVsQ9","\u002F\u002F Later, shut it down\n",[349,1495,1496,1498,1500,1502,1505],{"class":351,"line":27},[349,1497,775],{"class":354},[349,1499,1302],{"class":362},[349,1501,1214],{"class":400},[349,1503,1504],{"class":407},"close",[349,1506,904],{"class":358},[330,1508,1510],{"id":1509},"createrenderer","createRenderer()",[326,1512,1513],{},"Create a reusable Vite SSR renderer for compiling Vue SFC email templates to HTML.",[326,1515,1516,1517,1523,1524,1214],{},"Use this when you need to render multiple templates programmatically without writing to disk. For single templates, use ",[1518,1519,1521],"a",{"href":1520},"#render",[346,1522,333],{},". For building to files, use ",[1518,1525,1527],{"href":1526},"#build",[346,1528,853],{},[338,1530,1532],{"className":340,"code":1531,"filename":342,"language":343,"meta":344,"style":344},"import { createRenderer, resolveConfig } from '@maizzle\u002Fframework'\n\nconst config = await resolveConfig({\n  minify: true,\n})\n\nconst renderer = await createRenderer({\n  root: 'emails',\n})\n\nconst templates = ['emails\u002Fwelcome.vue', 'emails\u002Freset.vue', 'emails\u002Finvite.vue']\n\nfor (const template of templates) {\n  const { html } = await renderer.render(template, config)\n  console.log(`Rendered: ${template}`)\n}\n\n\u002F\u002F Always close when done\nawait renderer.close()\n",[346,1533,1534,1558,1562,1576,1586,1590,1594,1609,1625,1629,1633,1671,1675,1697,1729,1753,1758,1762,1767],{"__ignoreMap":344},[349,1535,1536,1538,1540,1543,1545,1548,1550,1552,1554,1556],{"class":351,"line":18},[349,1537,355],{"class":354},[349,1539,359],{"class":358},[349,1541,1542],{"class":362}," createRenderer",[349,1544,616],{"class":358},[349,1546,1547],{"class":362}," resolveConfig",[349,1549,366],{"class":358},[349,1551,369],{"class":354},[349,1553,372],{"class":358},[349,1555,376],{"class":375},[349,1557,379],{"class":358},[349,1559,1560],{"class":351,"line":13},[349,1561,384],{"emptyLinePlaceholder":14},[349,1563,1564,1566,1568,1570,1572,1574],{"class":351,"line":32},[349,1565,390],{"class":389},[349,1567,1137],{"class":362},[349,1569,401],{"class":400},[349,1571,404],{"class":354},[349,1573,1547],{"class":407},[349,1575,969],{"class":358},[349,1577,1578,1580,1582,1584],{"class":351,"line":27},[349,1579,625],{"class":624},[349,1581,628],{"class":358},[349,1583,632],{"class":631},[349,1585,635],{"class":358},[349,1587,1588],{"class":351,"line":52},[349,1589,640],{"class":358},[349,1591,1592],{"class":351,"line":128},[349,1593,384],{"emptyLinePlaceholder":14},[349,1595,1596,1598,1601,1603,1605,1607],{"class":351,"line":124},[349,1597,390],{"class":389},[349,1599,1600],{"class":362}," renderer",[349,1602,401],{"class":400},[349,1604,404],{"class":354},[349,1606,1542],{"class":407},[349,1608,969],{"class":358},[349,1610,1611,1614,1616,1618,1621,1623],{"class":351,"line":48},[349,1612,1613],{"class":624},"  root",[349,1615,628],{"class":358},[349,1617,372],{"class":358},[349,1619,1620],{"class":375},"emails",[349,1622,413],{"class":358},[349,1624,635],{"class":358},[349,1626,1627],{"class":351,"line":23},[349,1628,640],{"class":358},[349,1630,1631],{"class":351,"line":140},[349,1632,384],{"emptyLinePlaceholder":14},[349,1634,1635,1637,1640,1642,1644,1646,1648,1650,1652,1654,1657,1659,1661,1663,1666,1668],{"class":351,"line":56},[349,1636,390],{"class":389},[349,1638,1639],{"class":362}," templates",[349,1641,401],{"class":400},[349,1643,1157],{"class":358},[349,1645,413],{"class":358},[349,1647,416],{"class":375},[349,1649,413],{"class":358},[349,1651,616],{"class":358},[349,1653,372],{"class":358},[349,1655,1656],{"class":375},"emails\u002Freset.vue",[349,1658,413],{"class":358},[349,1660,616],{"class":358},[349,1662,372],{"class":358},[349,1664,1665],{"class":375},"emails\u002Finvite.vue",[349,1667,413],{"class":358},[349,1669,1670],{"class":358},"]\n",[349,1672,1673],{"class":351,"line":80},[349,1674,384],{"emptyLinePlaceholder":14},[349,1676,1677,1680,1682,1684,1687,1690,1692,1695],{"class":351,"line":36},[349,1678,1679],{"class":354},"for",[349,1681,661],{"class":358},[349,1683,390],{"class":389},[349,1685,1686],{"class":362}," template",[349,1688,1689],{"class":400}," of",[349,1691,1639],{"class":362},[349,1693,1694],{"class":358},")",[349,1696,619],{"class":358},[349,1698,1699,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1723,1725,1727],{"class":351,"line":73},[349,1700,1701],{"class":389},"  const",[349,1703,359],{"class":358},[349,1705,395],{"class":362},[349,1707,366],{"class":358},[349,1709,401],{"class":400},[349,1711,404],{"class":354},[349,1713,1600],{"class":362},[349,1715,1214],{"class":400},[349,1717,332],{"class":407},[349,1719,410],{"class":358},[349,1721,1722],{"class":362},"template",[349,1724,616],{"class":358},[349,1726,1137],{"class":362},[349,1728,421],{"class":358},[349,1730,1731,1734,1736,1738,1740,1742,1745,1747,1749,1751],{"class":351,"line":132},[349,1732,1733],{"class":362},"  console",[349,1735,1214],{"class":400},[349,1737,1217],{"class":407},[349,1739,410],{"class":358},[349,1741,565],{"class":358},[349,1743,1744],{"class":375},"Rendered: ",[349,1746,1227],{"class":358},[349,1748,1722],{"class":362},[349,1750,1257],{"class":358},[349,1752,421],{"class":358},[349,1754,1755],{"class":351,"line":66},[349,1756,1757],{"class":358},"}\n",[349,1759,1760],{"class":351,"line":112},[349,1761,384],{"emptyLinePlaceholder":14},[349,1763,1764],{"class":351,"line":40},[349,1765,1766],{"class":1492},"\u002F\u002F Always close when done\n",[349,1768,1769,1771,1773,1775,1777],{"class":351,"line":44},[349,1770,775],{"class":354},[349,1772,1600],{"class":362},[349,1774,1214],{"class":400},[349,1776,1504],{"class":407},[349,1778,904],{"class":358},[426,1780,571],{"id":1781},"options-2",[573,1783,1784],{"id":1784},"root",[326,1786,578,1787,1789,1399,1791],{},[346,1788,664],{},[1397,1790],{},[346,1792,1793],{},"process.cwd()",[326,1795,1796,1797,1800],{},"Root directory for resolving component directories and ",[346,1798,1799],{},".d.ts"," output.",[573,1802,1804],{"id":1803},"componentdirs","componentDirs",[326,1806,578,1807,1810,1399,1812],{},[346,1808,1809],{},"NormalizedComponentSource[]",[1397,1811],{},[346,1813,1814],{},"[]",[326,1816,1817,1818,1821,1822,1825],{},"Additional component sources to scan for auto-imported components. Components from ",[346,1819,1820],{},"@maizzle\u002Fframework\u002Fcomponents"," and ",[346,1823,1824],{},"{root}\u002Fcomponents"," are always included.",[326,1827,1828,1829,1832,1833,1836],{},"Entries must be pre-normalized — pass your raw ",[346,1830,1831],{},"ComponentSource[]"," config through ",[346,1834,1835],{},"normalizeComponentSources()"," first:",[338,1838,1840],{"className":340,"code":1839,"filename":342,"language":343,"meta":344,"style":344},"import { createRenderer, normalizeComponentSources } from '@maizzle\u002Fframework'\n\nconst renderer = await createRenderer({\n  componentDirs: normalizeComponentSources([\n    'src\u002Fcomponents\u002Femail',\n    { path: 'src\u002Fwidgets', prefix: 'W' },\n  ], process.cwd()),\n})\n",[346,1841,1842,1865,1869,1883,1895,1907,1939,1955],{"__ignoreMap":344},[349,1843,1844,1846,1848,1850,1852,1855,1857,1859,1861,1863],{"class":351,"line":18},[349,1845,355],{"class":354},[349,1847,359],{"class":358},[349,1849,1542],{"class":362},[349,1851,616],{"class":358},[349,1853,1854],{"class":362}," normalizeComponentSources",[349,1856,366],{"class":358},[349,1858,369],{"class":354},[349,1860,372],{"class":358},[349,1862,376],{"class":375},[349,1864,379],{"class":358},[349,1866,1867],{"class":351,"line":13},[349,1868,384],{"emptyLinePlaceholder":14},[349,1870,1871,1873,1875,1877,1879,1881],{"class":351,"line":32},[349,1872,390],{"class":389},[349,1874,1600],{"class":362},[349,1876,401],{"class":400},[349,1878,404],{"class":354},[349,1880,1542],{"class":407},[349,1882,969],{"class":358},[349,1884,1885,1888,1890,1892],{"class":351,"line":27},[349,1886,1887],{"class":624},"  componentDirs",[349,1889,628],{"class":358},[349,1891,1854],{"class":407},[349,1893,1894],{"class":358},"([\n",[349,1896,1897,1900,1903,1905],{"class":351,"line":52},[349,1898,1899],{"class":358},"    '",[349,1901,1902],{"class":375},"src\u002Fcomponents\u002Femail",[349,1904,413],{"class":358},[349,1906,635],{"class":358},[349,1908,1909,1912,1914,1916,1918,1921,1923,1925,1928,1930,1932,1935,1937],{"class":351,"line":128},[349,1910,1911],{"class":358},"    {",[349,1913,981],{"class":624},[349,1915,628],{"class":358},[349,1917,372],{"class":358},[349,1919,1920],{"class":375},"src\u002Fwidgets",[349,1922,413],{"class":358},[349,1924,616],{"class":358},[349,1926,1927],{"class":624}," prefix",[349,1929,628],{"class":358},[349,1931,372],{"class":358},[349,1933,1934],{"class":375},"W",[349,1936,413],{"class":358},[349,1938,993],{"class":358},[349,1940,1941,1944,1947,1949,1952],{"class":351,"line":124},[349,1942,1943],{"class":358},"  ],",[349,1945,1946],{"class":362}," process",[349,1948,1214],{"class":400},[349,1950,1951],{"class":407},"cwd",[349,1953,1954],{"class":358},"()),\n",[349,1956,1957],{"class":351,"line":48},[349,1958,640],{"class":358},[326,1960,1961,1962,1965,1966,1969,1970,1976],{},"When you go through ",[346,1963,1964],{},"defineConfig({ components: { source: [...] } })"," instead of calling ",[346,1967,1968],{},"createRenderer"," directly, Maizzle handles normalization for you. See ",[1518,1971,1973],{"href":1972},"\u002Fdocs\u002Fdevelopment\u002Fconfiguration#source",[346,1974,1975],{},"components.source"," for the full type and the namespacing\u002Fprefix rules.",[573,1978,1979],{"id":1979},"markdown",[326,1981,578,1982,1985,1399,1987],{},[346,1983,1984],{},"MarkdownConfig",[1397,1986],{},[346,1988,1989],{},"undefined",[326,1991,1992,1993,1996],{},"Options for Markdown template support, including ",[346,1994,1995],{},"shikiTheme"," for syntax highlighting.",[573,1998,1999],{"id":1999},"dts",[326,2001,578,2002,2004,1399,2006],{},[346,2003,1447],{},[1397,2005],{},[346,2007,1402],{},[326,2009,2010,2011,2013],{},"Generate ",[346,2012,1799],{}," files for auto-imports and components.",[573,2015,2016],{"id":2016},"vite",[326,2018,578,2019,2022,1399,2024],{},[346,2020,2021],{},"InlineConfig",[1397,2023],{},[346,2025,1989],{},[326,2027,2028],{},"Custom Vite config to merge into the internal SSR server.",[426,2030,2032],{"id":2031},"renderer-methods","Renderer methods",[573,2034,2036],{"id":2035},"renderinput-config","render(input, config)",[326,2038,2039],{},"Renders a Vue SFC to an HTML string. Accepts a file path or an SFC source string.",[338,2041,2043],{"className":340,"code":2042,"filename":342,"language":343,"meta":344,"style":344},"\u002F\u002F File path\nconst result = await renderer.render('emails\u002Fwelcome.vue', config)\n\n\u002F\u002F SFC string\nconst result = await renderer.render(`\n\u003Ctemplate>\n  \u003CHtml>\n    \u003CHead \u002F>\n    \u003CBody>\n      \u003CContainer>\n        \u003CText>Hello world\u003C\u002FText>\n      \u003C\u002FContainer>\n    \u003C\u002FBody>\n  \u003C\u002FHtml>\n\u003C\u002Ftemplate>\n`, config)\n",[346,2044,2045,2050,2081,2085,2090,2110,2114,2118,2122,2126,2130,2134,2138,2142,2146,2150],{"__ignoreMap":344},[349,2046,2047],{"class":351,"line":18},[349,2048,2049],{"class":1492},"\u002F\u002F File path\n",[349,2051,2052,2054,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079],{"class":351,"line":13},[349,2053,390],{"class":389},[349,2055,2056],{"class":362}," result",[349,2058,401],{"class":400},[349,2060,404],{"class":354},[349,2062,1600],{"class":362},[349,2064,1214],{"class":400},[349,2066,332],{"class":407},[349,2068,410],{"class":358},[349,2070,413],{"class":358},[349,2072,416],{"class":375},[349,2074,413],{"class":358},[349,2076,616],{"class":358},[349,2078,1137],{"class":362},[349,2080,421],{"class":358},[349,2082,2083],{"class":351,"line":32},[349,2084,384],{"emptyLinePlaceholder":14},[349,2086,2087],{"class":351,"line":27},[349,2088,2089],{"class":1492},"\u002F\u002F SFC string\n",[349,2091,2092,2094,2096,2098,2100,2102,2104,2106,2108],{"class":351,"line":52},[349,2093,390],{"class":389},[349,2095,2056],{"class":362},[349,2097,401],{"class":400},[349,2099,404],{"class":354},[349,2101,1600],{"class":362},[349,2103,1214],{"class":400},[349,2105,332],{"class":407},[349,2107,410],{"class":358},[349,2109,510],{"class":358},[349,2111,2112],{"class":351,"line":128},[349,2113,515],{"class":375},[349,2115,2116],{"class":351,"line":124},[349,2117,520],{"class":375},[349,2119,2120],{"class":351,"line":48},[349,2121,525],{"class":375},[349,2123,2124],{"class":351,"line":23},[349,2125,530],{"class":375},[349,2127,2128],{"class":351,"line":140},[349,2129,535],{"class":375},[349,2131,2132],{"class":351,"line":56},[349,2133,540],{"class":375},[349,2135,2136],{"class":351,"line":80},[349,2137,545],{"class":375},[349,2139,2140],{"class":351,"line":36},[349,2141,550],{"class":375},[349,2143,2144],{"class":351,"line":73},[349,2145,555],{"class":375},[349,2147,2148],{"class":351,"line":132},[349,2149,560],{"class":375},[349,2151,2152,2154,2156,2158],{"class":351,"line":66},[349,2153,565],{"class":358},[349,2155,616],{"class":358},[349,2157,1137],{"class":362},[349,2159,421],{"class":358},[326,2161,2162],{},"The returned object has the following properties:",[2164,2165,2166,2182],"table",{},[2167,2168,2169],"thead",{},[2170,2171,2172,2176,2179],"tr",{},[2173,2174,2175],"th",{},"Property",[2173,2177,2178],{},"Type",[2173,2180,2181],{},"Description",[2183,2184,2185,2199,2216,2230,2248],"tbody",{},[2170,2186,2187,2192,2196],{},[2188,2189,2190],"td",{},[346,2191,660],{},[2188,2193,2194],{},[346,2195,664],{},[2188,2197,2198],{},"Rendered HTML (before transformers)",[2170,2200,2201,2206,2210],{},[2188,2202,2203],{},[346,2204,2205],{},"doctype",[2188,2207,2208],{},[346,2209,681],{},[2188,2211,2212,2213],{},"Custom doctype set via ",[346,2214,2215],{},"useDoctype()",[2170,2217,2218,2223,2227],{},[2188,2219,2220],{},[346,2221,2222],{},"templateConfig",[2188,2224,2225],{},[346,2226,672],{},[2188,2228,2229],{},"Merged config (global + per-template)",[2170,2231,2232,2237,2242],{},[2188,2233,2234],{},[346,2235,2236],{},"sfcEventHandlers",[2188,2238,2239],{},[346,2240,2241],{},"array",[2188,2243,2244,2245],{},"Event handlers registered via ",[346,2246,2247],{},"useEvent()",[2170,2249,2250,2254,2259],{},[2188,2251,2252],{},[346,2253,678],{},[2188,2255,2256],{},[346,2257,2258],{},"object | undefined",[2188,2260,2261,2262],{},"Plaintext config set via ",[346,2263,685],{},[326,2265,2266,2267,2270,2271,2273],{},"The renderer does ",[436,2268,2269],{},"not"," run the transformer pipeline — use the top-level ",[346,2272,333],{}," function if you need the full pipeline (SSR + transformers + doctype).",[573,2275,2277],{"id":2276},"invalidatefilepath","invalidate(filePath)",[326,2279,2280],{},"Invalidates a module in the Vite module graph, forcing a re-load on the next render. Useful in watch or dev scenarios.",[338,2282,2284],{"className":340,"code":2283,"filename":342,"language":343,"meta":344,"style":344},"await renderer.invalidate('emails\u002Fwelcome.vue')\n",[346,2285,2286],{"__ignoreMap":344},[349,2287,2288,2290,2292,2294,2297,2299,2301,2303,2305],{"class":351,"line":18},[349,2289,775],{"class":354},[349,2291,1600],{"class":362},[349,2293,1214],{"class":400},[349,2295,2296],{"class":407},"invalidate",[349,2298,410],{"class":358},[349,2300,413],{"class":358},[349,2302,416],{"class":375},[349,2304,413],{"class":358},[349,2306,421],{"class":358},[573,2308,2310],{"id":2309},"invalidateall","invalidateAll()",[326,2312,2313],{},"Invalidates all modules, forcing full re-compilation on next render.",[573,2315,2316],{"id":1504},"close()",[326,2318,2319],{},"Shuts down the underlying Vite server. Always call this when you are done to release resources.",[426,2321,2323],{"id":2322},"when-to-use","When to use",[2164,2325,2326,2336],{},[2167,2327,2328],{},[2170,2329,2330,2333],{},[2173,2331,2332],{},"Scenario",[2173,2334,2335],{},"Use",[2183,2337,2338,2347,2356,2365],{},[2170,2339,2340,2343],{},[2188,2341,2342],{},"Render one template, full pipeline",[2188,2344,2345],{},[346,2346,333],{},[2170,2348,2349,2352],{},[2188,2350,2351],{},"Build all templates to disk",[2188,2353,2354],{},[346,2355,853],{},[2170,2357,2358,2361],{},[2188,2359,2360],{},"Render many templates without writing to disk",[2188,2362,2363],{},[346,2364,1510],{},[2170,2366,2367,2370],{},[2188,2368,2369],{},"Dev server with preview",[2188,2371,2372],{},[346,2373,1263],{},[330,2375,2377],{"id":2376},"createplaintext","createPlaintext()",[326,2379,2380],{},"Convert an HTML string to plaintext for email.",[338,2382,2384],{"className":340,"code":2383,"filename":342,"language":343,"meta":344,"style":344},"import { createPlaintext } from '@maizzle\u002Fframework'\n\nconst html = '\u003Cp>Hello \u003Ca href=\"https:\u002F\u002Fexample.com\">world\u003C\u002Fa>\u003C\u002Fp>'\n\nconst text = createPlaintext(html)\n\u002F\u002F Hello world\\n[https:\u002F\u002Fexample.com]\n",[346,2385,2386,2405,2409,2424,2428,2445],{"__ignoreMap":344},[349,2387,2388,2390,2392,2395,2397,2399,2401,2403],{"class":351,"line":18},[349,2389,355],{"class":354},[349,2391,359],{"class":358},[349,2393,2394],{"class":362}," createPlaintext",[349,2396,366],{"class":358},[349,2398,369],{"class":354},[349,2400,372],{"class":358},[349,2402,376],{"class":375},[349,2404,379],{"class":358},[349,2406,2407],{"class":351,"line":13},[349,2408,384],{"emptyLinePlaceholder":14},[349,2410,2411,2413,2415,2417,2419,2422],{"class":351,"line":32},[349,2412,390],{"class":389},[349,2414,395],{"class":362},[349,2416,401],{"class":400},[349,2418,372],{"class":358},[349,2420,2421],{"class":375},"\u003Cp>Hello \u003Ca href=\"https:\u002F\u002Fexample.com\">world\u003C\u002Fa>\u003C\u002Fp>",[349,2423,379],{"class":358},[349,2425,2426],{"class":351,"line":27},[349,2427,384],{"emptyLinePlaceholder":14},[349,2429,2430,2432,2435,2437,2439,2441,2443],{"class":351,"line":52},[349,2431,390],{"class":389},[349,2433,2434],{"class":362}," text",[349,2436,401],{"class":400},[349,2438,2394],{"class":407},[349,2440,410],{"class":358},[349,2442,660],{"class":362},[349,2444,421],{"class":358},[349,2446,2447],{"class":351,"line":128},[349,2448,2449],{"class":1492},"\u002F\u002F Hello world\\n[https:\u002F\u002Fexample.com]\n",[426,2451,571],{"id":2452},"options-3",[326,2454,578,2455],{},[346,2456,2457],{},"Record\u003Cstring, unknown>",[326,2459,2460,2461,1214],{},"You may pass any options supported by ",[1518,2462,2467],{"href":2463,"rel":2464,"target":2466},"https:\u002F\u002Fcodsen.com\u002Fos\u002Fstring-strip-html\u002F",[2465],"nofollow","_blank",[346,2468,2469],{},"string-strip-html",[338,2471,2473],{"className":340,"code":2472,"filename":342,"language":343,"meta":344,"style":344},"const text = createPlaintext(html, {\n  dumpLinkHrefsNearby: {\n    enabled: true,\n    putOnNewLine: false,\n    wrapHeads: '(',\n    wrapTails: ')',\n  },\n})\n",[346,2474,2475,2493,2502,2513,2525,2540,2555,2559],{"__ignoreMap":344},[349,2476,2477,2479,2481,2483,2485,2487,2489,2491],{"class":351,"line":18},[349,2478,390],{"class":389},[349,2480,2434],{"class":362},[349,2482,401],{"class":400},[349,2484,2394],{"class":407},[349,2486,410],{"class":358},[349,2488,660],{"class":362},[349,2490,616],{"class":358},[349,2492,619],{"class":358},[349,2494,2495,2498,2500],{"class":351,"line":13},[349,2496,2497],{"class":624},"  dumpLinkHrefsNearby",[349,2499,628],{"class":358},[349,2501,619],{"class":358},[349,2503,2504,2507,2509,2511],{"class":351,"line":32},[349,2505,2506],{"class":624},"    enabled",[349,2508,628],{"class":358},[349,2510,632],{"class":631},[349,2512,635],{"class":358},[349,2514,2515,2518,2520,2523],{"class":351,"line":27},[349,2516,2517],{"class":624},"    putOnNewLine",[349,2519,628],{"class":358},[349,2521,2522],{"class":631}," false",[349,2524,635],{"class":358},[349,2526,2527,2530,2532,2534,2536,2538],{"class":351,"line":52},[349,2528,2529],{"class":624},"    wrapHeads",[349,2531,628],{"class":358},[349,2533,372],{"class":358},[349,2535,410],{"class":375},[349,2537,413],{"class":358},[349,2539,635],{"class":358},[349,2541,2542,2545,2547,2549,2551,2553],{"class":351,"line":128},[349,2543,2544],{"class":624},"    wrapTails",[349,2546,628],{"class":358},[349,2548,372],{"class":358},[349,2550,1694],{"class":375},[349,2552,413],{"class":358},[349,2554,635],{"class":358},[349,2556,2557],{"class":351,"line":124},[349,2558,1383],{"class":358},[349,2560,2561],{"class":351,"line":48},[349,2562,640],{"class":358},[426,2564,2566],{"id":2565},"defaults","Defaults",[326,2568,2569,2570,2573],{},"By default, link ",[346,2571,2572],{},"href"," values are extracted and placed on a new line near the link text:",[338,2575,2577],{"className":340,"code":2576,"language":343,"meta":344,"style":344},"{\n  dumpLinkHrefsNearby: {\n    enabled: true,\n    putOnNewLine: true,\n  },\n}\n",[346,2578,2579,2584,2592,2602,2612,2616],{"__ignoreMap":344},[349,2580,2581],{"class":351,"line":18},[349,2582,2583],{"class":358},"{\n",[349,2585,2586,2588,2590],{"class":351,"line":13},[349,2587,2497],{"class":624},[349,2589,628],{"class":358},[349,2591,619],{"class":358},[349,2593,2594,2596,2598,2600],{"class":351,"line":32},[349,2595,2506],{"class":624},[349,2597,628],{"class":358},[349,2599,632],{"class":631},[349,2601,635],{"class":358},[349,2603,2604,2606,2608,2610],{"class":351,"line":27},[349,2605,2517],{"class":624},[349,2607,628],{"class":358},[349,2609,632],{"class":631},[349,2611,635],{"class":358},[349,2613,2614],{"class":351,"line":52},[349,2615,1383],{"class":358},[349,2617,2618],{"class":351,"line":128},[349,2619,1757],{"class":358},[326,2621,2622],{},"For example, this HTML:",[338,2624,2627],{"className":2625,"code":2626,"language":660,"meta":344,"style":344},"language-html shiki shiki-themes laserwave","\u003Cp>Visit \u003Ca href=\"https:\u002F\u002Fmaizzle.com\">our website\u003C\u002Fa> for more info.\u003C\u002Fp>\n",[346,2628,2629],{"__ignoreMap":344},[349,2630,2631,2634,2636,2639,2642,2644,2646,2649,2652,2655,2658,2660,2662,2665,2668,2670,2672,2675,2677,2679],{"class":351,"line":18},[349,2632,2633],{"class":358},"\u003C",[349,2635,326],{"class":400},[349,2637,2638],{"class":358},">",[349,2640,2641],{"class":624},"Visit ",[349,2643,2633],{"class":358},[349,2645,1518],{"class":400},[349,2647,2648],{"class":407}," href",[349,2650,2651],{"class":358},"=",[349,2653,2654],{"class":358},"\"",[349,2656,2657],{"class":375},"https:\u002F\u002Fmaizzle.com",[349,2659,2654],{"class":358},[349,2661,2638],{"class":358},[349,2663,2664],{"class":624},"our website",[349,2666,2667],{"class":358},"\u003C\u002F",[349,2669,1518],{"class":400},[349,2671,2638],{"class":358},[349,2673,2674],{"class":624}," for more info.",[349,2676,2667],{"class":358},[349,2678,326],{"class":400},[349,2680,2681],{"class":358},">\n",[326,2683,2684],{},"Produces:",[338,2686,2691],{"className":2687,"code":2689,"language":2690},[2688],"language-text","Visit our website\n[https:\u002F\u002Fmaizzle.com] for more info.\n","text",[346,2692,2689],{"__ignoreMap":344},[330,2694,2696],{"id":2695},"defineconfig","defineConfig()",[326,2698,2699],{},"Define your Maizzle configuration with type safety and autocompletion.",[338,2701,2703],{"className":340,"code":2702,"language":343,"meta":344,"style":344},"function defineConfig(data?: Partial\u003CMaizzleConfig>): MaizzleConfig\n",[346,2704,2705],{"__ignoreMap":344},[349,2706,2707,2710,2713,2715,2718,2721,2724,2726,2728,2731,2733],{"class":351,"line":18},[349,2708,2709],{"class":389},"function",[349,2711,2712],{"class":407}," defineConfig",[349,2714,410],{"class":358},[349,2716,2717],{"class":362},"data",[349,2719,2720],{"class":400},"?:",[349,2722,2723],{"class":400}," Partial",[349,2725,2633],{"class":358},[349,2727,672],{"class":400},[349,2729,2730],{"class":358},">)",[349,2732,628],{"class":400},[349,2734,2735],{"class":400}," MaizzleConfig\n",[426,2737,2739],{"id":2738},"in-config-file","In config file",[326,2741,2742,2743,2745,2746,2748],{},"Use ",[346,2744,2696],{}," in ",[346,2747,1044],{}," for type-checked configuration:",[338,2750,2752],{"className":340,"code":2751,"filename":1044,"language":343,"meta":344,"style":344},"import { defineConfig } from '@maizzle\u002Fframework'\n\nexport default defineConfig({\n  minify: true,\n})\n",[346,2753,2754,2772,2776,2788,2798],{"__ignoreMap":344},[349,2755,2756,2758,2760,2762,2764,2766,2768,2770],{"class":351,"line":18},[349,2757,355],{"class":354},[349,2759,359],{"class":358},[349,2761,2712],{"class":362},[349,2763,366],{"class":358},[349,2765,369],{"class":354},[349,2767,372],{"class":358},[349,2769,376],{"class":375},[349,2771,379],{"class":358},[349,2773,2774],{"class":351,"line":13},[349,2775,384],{"emptyLinePlaceholder":14},[349,2777,2778,2781,2784,2786],{"class":351,"line":32},[349,2779,2780],{"class":354},"export",[349,2782,2783],{"class":354}," default",[349,2785,2712],{"class":407},[349,2787,969],{"class":358},[349,2789,2790,2792,2794,2796],{"class":351,"line":27},[349,2791,625],{"class":624},[349,2793,628],{"class":358},[349,2795,632],{"class":631},[349,2797,635],{"class":358},[349,2799,2800],{"class":351,"line":52},[349,2801,640],{"class":358},[326,2803,2804],{},"In this context it acts as an identity function — it returns the config object as-is while providing autocomplete and type checking in your editor.",[426,2806,2808],{"id":2807},"in-templates","In templates",[326,2810,2742,2811,2813,2814,2817],{},[346,2812,2696],{}," in a template's ",[346,2815,2816],{},"\u003Cscript setup>"," to override global config options for that specific template:",[338,2819,2824],{"className":2820,"code":2821,"filename":2822,"language":2823,"meta":344,"style":344},"language-vue shiki shiki-themes laserwave","\u003Cscript setup>\n  defineConfig({\n    css: {\n      inline: false,\n    },\n  })\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CHtml>\n    \u003CHead \u002F>\n    \u003CTailwind>\n      \u003CBody>\n        \u003CContainer class=\"bg-gray-100 p-4 max-w-xl\">\n          \u003CText>This template won't have its CSS inlined.\u003C\u002FText>\n        \u003C\u002FContainer>\n      \u003C\u002FBody>\n    \u003C\u002FTailwind>\n  \u003C\u002FHtml>\n\u003C\u002Ftemplate>\n","emails\u002Fplain.vue","vue",[346,2825,2826,2838,2845,2854,2865,2870,2875,2883,2887,2895,2904,2916,2924,2933,2954,2972,2981,2990,2999,3008],{"__ignoreMap":344},[349,2827,2828,2830,2833,2836],{"class":351,"line":18},[349,2829,2633],{"class":358},[349,2831,2832],{"class":400},"script",[349,2834,2835],{"class":407}," setup",[349,2837,2681],{"class":358},[349,2839,2840,2843],{"class":351,"line":13},[349,2841,2842],{"class":407},"  defineConfig",[349,2844,969],{"class":358},[349,2846,2847,2850,2852],{"class":351,"line":32},[349,2848,2849],{"class":354},"    css",[349,2851,628],{"class":358},[349,2853,619],{"class":358},[349,2855,2856,2859,2861,2863],{"class":351,"line":27},[349,2857,2858],{"class":354},"      inline",[349,2860,628],{"class":358},[349,2862,2522],{"class":631},[349,2864,635],{"class":358},[349,2866,2867],{"class":351,"line":52},[349,2868,2869],{"class":358},"    },\n",[349,2871,2872],{"class":351,"line":128},[349,2873,2874],{"class":358},"  })\n",[349,2876,2877,2879,2881],{"class":351,"line":124},[349,2878,2667],{"class":358},[349,2880,2832],{"class":400},[349,2882,2681],{"class":358},[349,2884,2885],{"class":351,"line":48},[349,2886,384],{"emptyLinePlaceholder":14},[349,2888,2889,2891,2893],{"class":351,"line":23},[349,2890,2633],{"class":358},[349,2892,1722],{"class":400},[349,2894,2681],{"class":358},[349,2896,2897,2900,2902],{"class":351,"line":140},[349,2898,2899],{"class":358},"  \u003C",[349,2901,69],{"class":400},[349,2903,2681],{"class":358},[349,2905,2906,2909,2911,2914],{"class":351,"line":56},[349,2907,2908],{"class":358},"    \u003C",[349,2910,59],{"class":400},[349,2912,2913],{"class":624}," \u002F",[349,2915,2681],{"class":358},[349,2917,2918,2920,2922],{"class":351,"line":80},[349,2919,2908],{"class":358},[349,2921,135],{"class":400},[349,2923,2681],{"class":358},[349,2925,2926,2929,2931],{"class":351,"line":36},[349,2927,2928],{"class":358},"      \u003C",[349,2930,30],{"class":400},[349,2932,2681],{"class":358},[349,2934,2935,2938,2940,2943,2945,2947,2950,2952],{"class":351,"line":73},[349,2936,2937],{"class":358},"        \u003C",[349,2939,51],{"class":400},[349,2941,2942],{"class":407}," class",[349,2944,2651],{"class":358},[349,2946,2654],{"class":358},[349,2948,2949],{"class":375},"bg-gray-100 p-4 max-w-xl",[349,2951,2654],{"class":358},[349,2953,2681],{"class":358},[349,2955,2956,2959,2961,2963,2966,2968,2970],{"class":351,"line":132},[349,2957,2958],{"class":358},"          \u003C",[349,2960,139],{"class":400},[349,2962,2638],{"class":358},[349,2964,2965],{"class":624},"This template won't have its CSS inlined.",[349,2967,2667],{"class":358},[349,2969,139],{"class":400},[349,2971,2681],{"class":358},[349,2973,2974,2977,2979],{"class":351,"line":66},[349,2975,2976],{"class":358},"        \u003C\u002F",[349,2978,51],{"class":400},[349,2980,2681],{"class":358},[349,2982,2983,2986,2988],{"class":351,"line":112},[349,2984,2985],{"class":358},"      \u003C\u002F",[349,2987,30],{"class":400},[349,2989,2681],{"class":358},[349,2991,2992,2995,2997],{"class":351,"line":40},[349,2993,2994],{"class":358},"    \u003C\u002F",[349,2996,135],{"class":400},[349,2998,2681],{"class":358},[349,3000,3001,3004,3006],{"class":351,"line":44},[349,3002,3003],{"class":358},"  \u003C\u002F",[349,3005,69],{"class":400},[349,3007,2681],{"class":358},[349,3009,3010,3012,3014],{"class":351,"line":84},[349,3011,2667],{"class":358},[349,3013,1722],{"class":400},[349,3015,2681],{"class":358},[426,3017,3019],{"id":3018},"how-merging-works","How merging works",[326,3021,3022,3023,3028],{},"Template-level config is deep-merged with the global config using ",[1518,3024,3027],{"href":3025,"rel":3026,"target":2466},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fdefu",[2465],"defu",", with one difference: arrays are replaced, not appended.",[326,3030,3031,3032,3035,3036,3039,3040,3043],{},"For example, if your global config sets ",[346,3033,3034],{},"content: ['emails\u002F**\u002F*.vue']"," and your template calls ",[346,3037,3038],{},"defineConfig({ content: ['other\u002F**\u002F*.vue'] })",", the result will be ",[346,3041,3042],{},"['other\u002F**\u002F*.vue']"," — not both arrays combined.",[326,3045,3046],{},"All other values are deep-merged, so you only need to specify the options you want to change. Template overrides take priority over global config.",[330,3048,3050],{"id":3049},"maizzle","maizzle()",[326,3052,3053],{},"Use Maizzle inside an existing Vite project to build email templates alongside your app.",[338,3055,3058],{"className":340,"code":3056,"filename":3057,"language":343,"meta":344,"style":344},"import { defineConfig } from 'vite'\nimport { maizzle } from '@maizzle\u002Fframework'\n\nexport default defineConfig({\n  plugins: [\n    \u002F\u002F ...your app's plugins\n    maizzle(),\n  ],\n})\n","vite.config.ts",[346,3059,3060,3078,3097,3101,3111,3121,3126,3134,3139],{"__ignoreMap":344},[349,3061,3062,3064,3066,3068,3070,3072,3074,3076],{"class":351,"line":18},[349,3063,355],{"class":354},[349,3065,359],{"class":358},[349,3067,2712],{"class":362},[349,3069,366],{"class":358},[349,3071,369],{"class":354},[349,3073,372],{"class":358},[349,3075,2016],{"class":375},[349,3077,379],{"class":358},[349,3079,3080,3082,3084,3087,3089,3091,3093,3095],{"class":351,"line":13},[349,3081,355],{"class":354},[349,3083,359],{"class":358},[349,3085,3086],{"class":362}," maizzle",[349,3088,366],{"class":358},[349,3090,369],{"class":354},[349,3092,372],{"class":358},[349,3094,376],{"class":375},[349,3096,379],{"class":358},[349,3098,3099],{"class":351,"line":32},[349,3100,384],{"emptyLinePlaceholder":14},[349,3102,3103,3105,3107,3109],{"class":351,"line":27},[349,3104,2780],{"class":354},[349,3106,2783],{"class":354},[349,3108,2712],{"class":407},[349,3110,969],{"class":358},[349,3112,3113,3116,3118],{"class":351,"line":52},[349,3114,3115],{"class":624},"  plugins",[349,3117,628],{"class":358},[349,3119,3120],{"class":358}," [\n",[349,3122,3123],{"class":351,"line":128},[349,3124,3125],{"class":1492},"    \u002F\u002F ...your app's plugins\n",[349,3127,3128,3131],{"class":351,"line":124},[349,3129,3130],{"class":407},"    maizzle",[349,3132,3133],{"class":358},"(),\n",[349,3135,3136],{"class":351,"line":48},[349,3137,3138],{"class":358},"  ],\n",[349,3140,3141],{"class":351,"line":23},[349,3142,640],{"class":358},[326,3144,3145],{},"The function returns a Vite plugin array and accepts an optional config object:",[338,3147,3149],{"className":340,"code":3148,"language":343,"meta":344,"style":344},"function maizzle(config?: Partial\u003CMaizzleConfig>): Plugin[]\n",[346,3150,3151],{"__ignoreMap":344},[349,3152,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3176],{"class":351,"line":18},[349,3154,2709],{"class":389},[349,3156,3086],{"class":407},[349,3158,410],{"class":358},[349,3160,575],{"class":362},[349,3162,2720],{"class":400},[349,3164,2723],{"class":400},[349,3166,2633],{"class":358},[349,3168,672],{"class":400},[349,3170,2730],{"class":358},[349,3172,628],{"class":400},[349,3174,3175],{"class":400}," Plugin",[349,3177,3178],{"class":358},"[]\n",[426,3180,3182],{"id":3181},"how-it-works","How it works",[326,3184,3185],{},"Maizzle runs in its own process — it does not inject Vue, Tailwind CSS, or any other plugins into your host app's pipeline.",[326,3187,3188,915,3191,3194],{},[436,3189,3190],{},"During development",[346,3192,3193],{},"vite dev"," starts a separate Maizzle dev server on its own port. Your app's dev server and Maizzle's dev server run side by side.",[326,3196,3197,915,3200,3203,3204,3207],{},[436,3198,3199],{},"During production builds",[346,3201,3202],{},"vite build"," compiles your email templates alongside the host app in the ",[346,3205,3206],{},"closeBundle"," hook.",[426,3209,173],{"id":3210},"configuration",[326,3212,3213],{},"You may pass config options directly to the plugin:",[338,3215,3217],{"className":340,"code":3216,"filename":3057,"language":343,"meta":344,"style":344},"import { defineConfig } from 'vite'\nimport { maizzle } from '@maizzle\u002Fframework'\n\nexport default defineConfig({\n  plugins: [\n    maizzle({\n      root: 'emails',\n      content: ['.\u002F**\u002F*.vue'],\n      output: {\n        path: 'build\u002Femails',\n      },\n    }),\n  ],\n})\n",[346,3218,3219,3237,3255,3259,3269,3277,3283,3298,3316,3325,3341,3346,3351,3355],{"__ignoreMap":344},[349,3220,3221,3223,3225,3227,3229,3231,3233,3235],{"class":351,"line":18},[349,3222,355],{"class":354},[349,3224,359],{"class":358},[349,3226,2712],{"class":362},[349,3228,366],{"class":358},[349,3230,369],{"class":354},[349,3232,372],{"class":358},[349,3234,2016],{"class":375},[349,3236,379],{"class":358},[349,3238,3239,3241,3243,3245,3247,3249,3251,3253],{"class":351,"line":13},[349,3240,355],{"class":354},[349,3242,359],{"class":358},[349,3244,3086],{"class":362},[349,3246,366],{"class":358},[349,3248,369],{"class":354},[349,3250,372],{"class":358},[349,3252,376],{"class":375},[349,3254,379],{"class":358},[349,3256,3257],{"class":351,"line":32},[349,3258,384],{"emptyLinePlaceholder":14},[349,3260,3261,3263,3265,3267],{"class":351,"line":27},[349,3262,2780],{"class":354},[349,3264,2783],{"class":354},[349,3266,2712],{"class":407},[349,3268,969],{"class":358},[349,3270,3271,3273,3275],{"class":351,"line":52},[349,3272,3115],{"class":624},[349,3274,628],{"class":358},[349,3276,3120],{"class":358},[349,3278,3279,3281],{"class":351,"line":128},[349,3280,3130],{"class":407},[349,3282,969],{"class":358},[349,3284,3285,3288,3290,3292,3294,3296],{"class":351,"line":124},[349,3286,3287],{"class":624},"      root",[349,3289,628],{"class":358},[349,3291,372],{"class":358},[349,3293,1620],{"class":375},[349,3295,413],{"class":358},[349,3297,635],{"class":358},[349,3299,3300,3303,3305,3307,3309,3312,3314],{"class":351,"line":48},[349,3301,3302],{"class":624},"      content",[349,3304,628],{"class":358},[349,3306,1157],{"class":358},[349,3308,413],{"class":358},[349,3310,3311],{"class":375},".\u002F**\u002F*.vue",[349,3313,413],{"class":358},[349,3315,1167],{"class":358},[349,3317,3318,3321,3323],{"class":351,"line":23},[349,3319,3320],{"class":624},"      output",[349,3322,628],{"class":358},[349,3324,619],{"class":358},[349,3326,3327,3330,3332,3334,3337,3339],{"class":351,"line":140},[349,3328,3329],{"class":624},"        path",[349,3331,628],{"class":358},[349,3333,372],{"class":358},[349,3335,3336],{"class":375},"build\u002Femails",[349,3338,413],{"class":358},[349,3340,635],{"class":358},[349,3342,3343],{"class":351,"line":56},[349,3344,3345],{"class":358},"      },\n",[349,3347,3348],{"class":351,"line":80},[349,3349,3350],{"class":358},"    }),\n",[349,3352,3353],{"class":351,"line":36},[349,3354,3138],{"class":358},[349,3356,3357],{"class":351,"line":73},[349,3358,640],{"class":358},[326,3360,3361,3362,3364],{},"You may also use a ",[346,3363,1044],{}," file in your project root instead. If both are provided, inline options and the config file are merged.",[426,3366,3368],{"id":3367},"framework-integrations","Framework integrations",[326,3370,3371,3372,3374],{},"The Vite plugin works with any Vite-powered framework, just add ",[346,3373,3050],{}," to the plugins array in the framework's Vite config.",[326,3376,3377],{},"See our framework guides:",[3379,3380],"framework-guides",{":exclude":3381},"nextjs",[3383,3384,3385],"style",{},"html pre.shiki code .s0ZPN, html code.shiki .s0ZPN{--shiki-default:#40B4C4}html pre.shiki code .sGGKt, html code.shiki .sGGKt{--shiki-default:#7B6995}html pre.shiki code .sU-n2, html code.shiki .sU-n2{--shiki-default:#FFF}html pre.shiki code .sXiT_, html code.shiki .sXiT_{--shiki-default:#B4DCE7}html pre.shiki code .sIihq, html code.shiki .sIihq{--shiki-default:#A96BC0}html pre.shiki code .sb4Pa, html code.shiki .sb4Pa{--shiki-default:#74DFC4}html pre.shiki code .sZNF3, html code.shiki .sZNF3{--shiki-default:#EB64B9}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sLaUg, html code.shiki .sLaUg{--shiki-default:#FFFFFF}html pre.shiki code .skd8d, html code.shiki .skd8d{--shiki-default:#FFE261}html pre.shiki code .s0EtI, html code.shiki .s0EtI{--shiki-default:#B381C5}html pre.shiki code .sVsQ9, html code.shiki .sVsQ9{--shiki-default:#91889B}",{"title":344,"searchDepth":13,"depth":13,"links":3387},[3388,3394,3399,3403,3408,3412,3417],{"id":332,"depth":13,"text":333,"children":3389},[3390,3391,3392,3393],{"id":428,"depth":32,"text":429},{"id":570,"depth":32,"text":571},{"id":643,"depth":32,"text":644},{"id":689,"depth":32,"text":690},{"id":852,"depth":13,"text":853,"children":3395},[3396,3397,3398],{"id":926,"depth":32,"text":927},{"id":1071,"depth":32,"text":644},{"id":1096,"depth":32,"text":1097},{"id":1262,"depth":13,"text":1263,"children":3400},[3401,3402],{"id":1319,"depth":32,"text":571},{"id":1457,"depth":32,"text":644},{"id":1509,"depth":13,"text":1510,"children":3404},[3405,3406,3407],{"id":1781,"depth":32,"text":571},{"id":2031,"depth":32,"text":2032},{"id":2322,"depth":32,"text":2323},{"id":2376,"depth":13,"text":2377,"children":3409},[3410,3411],{"id":2452,"depth":32,"text":571},{"id":2565,"depth":32,"text":2566},{"id":2695,"depth":13,"text":2696,"children":3413},[3414,3415,3416],{"id":2738,"depth":32,"text":2739},{"id":2807,"depth":32,"text":2808},{"id":3018,"depth":32,"text":3019},{"id":3049,"depth":13,"text":3050,"children":3418},[3419,3420,3421],{"id":3181,"depth":32,"text":3182},{"id":3210,"depth":32,"text":173},{"id":3367,"depth":32,"text":3368},"Reference of every utility function exported from @maizzle\u002Fframework.","md",{},{"title":17,"description":3422},"docs\u002Fapi\u002Futilities","gB-ERU4Ol21vNSVX8vt1tctrgTlUZIuZlIKeC7MU_mY",1781015463944]