@grapesjs/studio-sdk-plugins 1.0.38 → 1.0.39-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/accordionComponent/index.cjs.js +5 -5
  2. package/dist/accordionComponent/index.es.js +70 -67
  3. package/dist/accordionComponent/index.js +39 -0
  4. package/dist/accordionComponent/index.umd.js +4 -4
  5. package/dist/aiChat/components/AiChatHeader.d.ts +4 -5
  6. package/dist/aiChat/components/AiChatInput/index.d.ts +4 -5
  7. package/dist/aiChat/components/AiChatMessage.d.ts +7 -8
  8. package/dist/aiChat/components/index.d.ts +1 -1
  9. package/dist/aiChat/components/utils.d.ts +1 -1
  10. package/dist/aiChat/index.cjs.js +10 -376
  11. package/dist/aiChat/index.es.js +4569 -28851
  12. package/dist/aiChat/index.js +10 -376
  13. package/dist/aiChat/index.umd.js +11 -377
  14. package/dist/aiChat/server/index.cjs.d.ts +0 -1
  15. package/dist/aiChat/server/index.cjs.js +45 -45
  16. package/dist/aiChat/server/index.d.ts +0 -1
  17. package/dist/aiChat/server/index.es.d.ts +0 -1
  18. package/dist/aiChat/server/index.es.js +371 -427
  19. package/dist/aiChat/server/index.js +45 -45
  20. package/dist/aiChat/server/index.umd.js +41 -41
  21. package/dist/aiChat/server/stream.test.d.ts +1 -0
  22. package/dist/aiChat/types.d.ts +18 -4
  23. package/dist/aiChat/typesSchema.d.ts +13 -0
  24. package/dist/animationComponent/index.cjs.js +3 -3
  25. package/dist/animationComponent/index.es.js +49 -46
  26. package/dist/animationComponent/index.js +519 -0
  27. package/dist/animationComponent/index.umd.js +3 -3
  28. package/dist/canvasAbsoluteMode/index.cjs.js +1 -1
  29. package/dist/canvasAbsoluteMode/index.es.js +115 -112
  30. package/dist/canvasAbsoluteMode/index.js +1 -0
  31. package/dist/canvasAbsoluteMode/index.umd.js +1 -1
  32. package/dist/canvasEmptyState/index.cjs.js +1 -1
  33. package/dist/canvasEmptyState/index.es.js +71 -68
  34. package/dist/canvasEmptyState/index.js +1 -0
  35. package/dist/canvasEmptyState/index.umd.js +1 -1
  36. package/dist/canvasFullSize/index.cjs.js +3 -3
  37. package/dist/canvasFullSize/index.es.js +69 -66
  38. package/dist/canvasFullSize/index.js +10 -0
  39. package/dist/canvasFullSize/index.umd.js +4 -4
  40. package/dist/canvasGridMode/index.cjs.js +7 -7
  41. package/dist/canvasGridMode/index.es.js +142 -139
  42. package/dist/canvasGridMode/index.js +26 -0
  43. package/dist/canvasGridMode/index.umd.js +7 -7
  44. package/dist/canvasScreenshot/index.cjs.js +1 -1
  45. package/dist/canvasScreenshot/index.es.js +78 -75
  46. package/dist/canvasScreenshot/index.js +1 -0
  47. package/dist/canvasScreenshot/index.umd.js +1 -1
  48. package/dist/dataSourceEjs/EjsExporter.d.ts +1 -1
  49. package/dist/dataSourceEjs/index.cjs.js +3 -3
  50. package/dist/dataSourceEjs/index.es.js +40 -37
  51. package/dist/dataSourceEjs/index.js +21 -0
  52. package/dist/dataSourceEjs/index.umd.js +3 -3
  53. package/dist/dataSourceHandlebars/HandlebarsExporter.d.ts +2 -2
  54. package/dist/dataSourceHandlebars/constants.d.ts +1 -1
  55. package/dist/dataSourceHandlebars/index.cjs.js +4 -4
  56. package/dist/dataSourceHandlebars/index.es.js +58 -55
  57. package/dist/dataSourceHandlebars/index.js +10 -0
  58. package/dist/dataSourceHandlebars/index.umd.js +2 -2
  59. package/dist/dialogComponent/index.cjs.js +11 -11
  60. package/dist/dialogComponent/index.es.js +72 -69
  61. package/dist/dialogComponent/index.js +59 -0
  62. package/dist/dialogComponent/index.umd.js +11 -11
  63. package/dist/flexComponent/index.cjs.js +6 -6
  64. package/dist/flexComponent/index.es.js +151 -142
  65. package/dist/flexComponent/index.js +33 -0
  66. package/dist/flexComponent/index.umd.js +8 -8
  67. package/dist/flexComponent/typesSchema.d.ts +1 -1
  68. package/dist/fsLightboxComponent/index.cjs.js +3 -3
  69. package/dist/fsLightboxComponent/index.es.js +93 -90
  70. package/dist/fsLightboxComponent/index.js +6 -0
  71. package/dist/fsLightboxComponent/index.umd.js +3 -3
  72. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  73. package/dist/googleFontsAssetProvider/index.es.js +112 -109
  74. package/dist/googleFontsAssetProvider/index.js +1 -0
  75. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  76. package/dist/googleFontsAssetProvider/utils.d.ts +1 -1
  77. package/dist/iconifyComponent/index.cjs.js +2 -2
  78. package/dist/iconifyComponent/index.es.js +80 -77
  79. package/dist/iconifyComponent/index.js +3 -0
  80. package/dist/iconifyComponent/index.umd.js +2 -2
  81. package/dist/index.cjs.d.ts +1 -0
  82. package/dist/index.cjs.js +970 -82
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.es.d.ts +1 -0
  85. package/dist/index.es.js +7422 -6145
  86. package/dist/index.umd.js +975 -87
  87. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  88. package/dist/layoutSidebarButtons/index.es.js +95 -92
  89. package/dist/layoutSidebarButtons/index.js +1 -0
  90. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  91. package/dist/lightGalleryComponent/index.cjs.js +1 -1
  92. package/dist/lightGalleryComponent/index.es.js +164 -161
  93. package/dist/lightGalleryComponent/index.js +1 -0
  94. package/dist/lightGalleryComponent/index.umd.js +1 -1
  95. package/dist/lightGalleryComponent/utils.d.ts +1 -1
  96. package/dist/linkImageComponent/index.cjs.js +2 -2
  97. package/dist/linkImageComponent/index.es.js +60 -57
  98. package/dist/linkImageComponent/index.js +12 -0
  99. package/dist/linkImageComponent/index.umd.js +2 -2
  100. package/dist/listPagesComponent/index.cjs.js +4 -4
  101. package/dist/listPagesComponent/index.es.js +57 -54
  102. package/dist/listPagesComponent/index.js +11 -0
  103. package/dist/listPagesComponent/index.umd.js +4 -4
  104. package/dist/listPagesComponent/utils.d.ts +1 -1
  105. package/dist/presetBlockLibrary/blocks.d.ts +6 -0
  106. package/dist/presetBlockLibrary/blocks.test.d.ts +2 -0
  107. package/dist/presetBlockLibrary/emailBlocks.d.ts +53 -0
  108. package/dist/presetBlockLibrary/index.cjs.d.ts +3 -0
  109. package/dist/presetBlockLibrary/index.cjs.js +889 -0
  110. package/dist/presetBlockLibrary/index.d.ts +3 -0
  111. package/dist/presetBlockLibrary/index.es.d.ts +3 -0
  112. package/dist/presetBlockLibrary/index.es.js +1408 -0
  113. package/dist/presetBlockLibrary/index.js +889 -0
  114. package/dist/presetBlockLibrary/index.test.d.ts +1 -0
  115. package/dist/presetBlockLibrary/index.umd.js +889 -0
  116. package/dist/presetBlockLibrary/shared.d.ts +3 -0
  117. package/dist/presetBlockLibrary/types.d.ts +24 -0
  118. package/dist/presetBlockLibrary/typesSchema.d.ts +47 -0
  119. package/dist/presetPrintable/index.cjs.js +3 -3
  120. package/dist/presetPrintable/index.es.js +133 -130
  121. package/dist/presetPrintable/index.js +32 -0
  122. package/dist/presetPrintable/index.umd.js +4 -4
  123. package/dist/prosemirror/index.cjs.js +8 -8
  124. package/dist/prosemirror/index.es.js +552 -549
  125. package/dist/prosemirror/index.js +10 -0
  126. package/dist/prosemirror/index.umd.js +9 -9
  127. package/dist/prosemirror/toolbar.d.ts +2 -2
  128. package/dist/prosemirror/types.d.ts +5 -5
  129. package/dist/rendererReact/index.cjs.js +1 -1
  130. package/dist/rendererReact/index.es.js +137 -134
  131. package/dist/rendererReact/index.js +1 -1
  132. package/dist/rendererReact/index.umd.js +1 -1
  133. package/dist/rteTinyMce/index.cjs.js +2 -2
  134. package/dist/rteTinyMce/index.es.js +74 -71
  135. package/dist/rteTinyMce/index.js +104 -0
  136. package/dist/rteTinyMce/index.umd.js +2 -2
  137. package/dist/shapeDividerComponent/index.cjs.js +4 -4
  138. package/dist/shapeDividerComponent/index.es.js +91 -88
  139. package/dist/shapeDividerComponent/index.js +97 -0
  140. package/dist/shapeDividerComponent/index.umd.js +4 -4
  141. package/dist/swiperComponent/index.cjs.js +7 -7
  142. package/dist/swiperComponent/index.es.js +95 -92
  143. package/dist/swiperComponent/index.js +45 -0
  144. package/dist/swiperComponent/index.umd.js +5 -5
  145. package/dist/tableComponent/index.cjs.js +1 -1
  146. package/dist/tableComponent/index.es.js +181 -178
  147. package/dist/tableComponent/index.js +1 -0
  148. package/dist/tableComponent/index.umd.js +1 -1
  149. package/dist/tableComponent/types.d.ts +3 -3
  150. package/dist/types.d.ts +14 -14
  151. package/dist/utils.d.ts +3 -2
  152. package/dist/utilsDataSources.d.ts +1 -1
  153. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  154. package/dist/youtubeAssetProvider/index.es.js +90 -87
  155. package/dist/youtubeAssetProvider/index.js +1 -0
  156. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  157. package/package.json +182 -34
  158. package/dist/aiChat/server/models.d.ts +0 -15
@@ -0,0 +1,889 @@
1
+ (function(f,j){typeof exports=="object"&&typeof module<"u"?module.exports=j():typeof define=="function"&&define.amd?define(j):(f=typeof globalThis<"u"?globalThis:f||self,f.StudioSdkPlugins_presetBlockLibrary=j())})(this,function(){"use strict";var f=(e=>(e.globalStyles="globalStyles",e.globalData="globalData",e))(f||{});const j="app.grapesjs.com",A="app-stage.grapesjs.com",M=[j,"app2.grapesjs.com",A,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],V="license:check:end",F=()=>typeof window<"u",N=({isDev:e,isStage:i,isPlatform:o})=>`${e?"":`https://${i?A:j}`}/${o?"platform-api":"api"}`,Y=(e={})=>{const{width:i=300,height:o,text:r="IMAGE",bg:a="777",fg:s="white"}=e,d=o?`x${o}`:"";return`https://placehold.co/${i}${d}/${a}/${s}.png?text=${r}`},U=()=>{if(!F())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},_=()=>{const e=U();return!!e&&(M.includes(e)||M.some(i=>e.endsWith(i)))};function $(e){return typeof e=="function"}const D=e=>!!e.Components.getType("mjml");async function J({path:e,baseApiUrl:i,method:o="GET",headers:r={},params:a,body:s}){const l=`${i||N({isDev:!1,isStage:!1})}${e}`,c={method:o,headers:{"Content-Type":"application/json",...r}};s&&(c.body=JSON.stringify(s));const m=a?new URLSearchParams(a).toString():"",g=m?`?${m}`:"",p=await fetch(`${l}${g}`,c);if(!p.ok)throw new Error(`HTTP error! status: ${p.status}`);return p.json()}var u=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(u||{}),h=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",e.openEditCode="studio:openEditCode",e.openBlocks="studio:openBlocks",e.appendComponent="studio:appendComponent",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(h||{});const H={[u.free]:0,[u.startup]:10,[u.business]:20,[u.enterprise]:30};function K(e,i){const o=e;return o.init=r=>{const a=s=>e(s,r);return a.__gjsPluginId=i,a},o}const X=(e,i)=>K(e,i);async function Z({editor:e,plan:i,pluginName:o,licenseKey:r,onLicenseCheckResponse:a,cleanup:s}){let d="",l;const c=p=>{console.warn("Cleanup plugin:",o,"Reason:",p),s(e,o)},m=(p={})=>{var q;const{error:w,sdkLicense:yt}=p,T=(q=p.plan)==null?void 0:q.category;if(!(yt||p.license)||w)c(w||"Invalid license");else if(T){const vt=H[i],zt=H[T];vt>zt&&c({pluginRequiredPlan:i,licensePlan:T})}};e.Commands.has(h.settings)&&(l=e.runCommand(h.settings),d=(l==null?void 0:l.baseUrl)||"");const g=p=>{a==null||a(p),p&&m(p)};if(!l){e.onReady(async()=>{if(!_())if(r){const p=await tt({licenseKey:r,pluginName:o,baseApiUrl:d});g(p)}else c("The `licenseKey` option not provided")});return}if(l.licensePlan||l.licenseError){const p=Q(l);g(p);return}e.on(V,p=>g(p))}const Q=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function tt(e){const{licenseKey:i,pluginName:o,baseApiUrl:r}=e;try{return(await J({baseApiUrl:r,path:`/sdk/${i||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(a){return console.error("Error during SDK license check:",a),!1}}const et=(e,i)=>e.onReady(()=>e.Plugins.remove(i)),E="presetBlockLibrary",ot=u.startup,it=e=>{var i;return e.is("mj-body")&&!!((i=e.parent())!=null&&i.is("mjml"))},n={header:{id:"preset-block-library-header",open:!1,label:"Header",icon:'<svg viewBox="0 0 24 24"><path fill="currentColor" d="M21 3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-1 2H4v14h16zm-2 2v2H6V7z"/></svg>'},hero:{id:"preset-block-library-hero",open:!1,label:"Hero",icon:'<svg viewBox="0 0 24 24"><path d="M4 20h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2m0-9h16v7H4z"/></svg>'},content:{id:"preset-block-library-content",open:!1,label:"Content",icon:'<svg viewBox="0 0 24 24"><path d="M21 3H3c-.6 0-1 .4-1 1v6c0 .6.4 1 1 1h18c.6 0 1-.4 1-1V4c0-.6-.4-1-1-1m0 10H3c-.6 0-1 .4-1 1v6c0 .6.4 1 1 1h18c.6 0 1-.4 1-1v-6c0-.6-.4-1-1-1"/></svg>'},cta:{id:"preset-block-library-cta",open:!1,label:"Call to Action",icon:'<svg viewBox="0 0 24 24"><path d="M13 5a4 4 0 0 1 2 7.46v-1.22A3.01 3.01 0 0 0 13 6a3 3 0 0 0-2 5.24v1.22A4 4 0 0 1 13 5m7 15.5a1.55 1.55 0 0 1-1.5 1.5H13q-.59 0-1-.43l-4-4.2.74-.77a1 1 0 0 1 .76-.32h.2L12 18V9c0-.55.45-1 1-1s1 .45 1 1v4.47l1.21.13 3.94 2.19c.53.24.85.77.85 1.35zM20 2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h4v-2H4V4h16v8h-2v2h2v-.04l.04.04c1.09 0 1.96-.91 1.96-2V4a2 2 0 0 0-2-2"/></svg>'},gallery:{id:"preset-block-library-gallery",open:!1,label:"Gallery",icon:'<svg viewBox="0 0 24 24"><path fill="currentColor" d="M4 5h7v14H4V5m9 0h7v6h-7V5m0 8h7v6h-7v-6Z"/></svg>'},people:{id:"preset-block-library-people",open:!1,label:"People",icon:'<svg viewBox="0 0 24 24"><path d="M16 17v2H2v-2s0-4 7-4 7 4 7 4m-3.5-9.5A3.5 3.5 0 1 0 9 11a3.5 3.5 0 0 0 3.5-3.5m3.44 5.5A5.3 5.3 0 0 1 18 17v2h4v-2s0-3.63-6.06-4M15 4a3.4 3.4 0 0 0-1.93.59 5 5 0 0 1 0 5.82A3.4 3.4 0 0 0 15 11a3.5 3.5 0 0 0 0-7"/></svg>'},footer:{id:"preset-block-library-footer",open:!1,label:"Footer",icon:'<svg viewBox="0 0 24 24"><path fill="currentColor" d="M21 3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-1 2H4v14h16zm-2 10v2H6v-2z"/></svg>'}},B=({editor:e,content:i},o)=>{var c;if(typeof i!="string"||!D(e))return;const r=e.getWrapper(),a=r==null?void 0:r.findFirstType("mj-head"),s=r==null?void 0:r.findFirstType(it),d=!!(o!=null&&o.withGlobalStyles),l=d?` ${((c=s==null?void 0:s.__attrToString)==null?void 0:c.call(s))||""}`:' background-color="#E7E7E7"';return{mjml:`<mjml>${d&&(a==null?void 0:a.toHTML())||""}<mj-body${l}>${i}</mj-body></mjml>`,width:700}},S={id:"preset-block-library",label:"Preset Blocks",icon:'<svg viewBox="0 0 24 24"><path fill="currentColor" d="M13,3V9H21V3M13,21H21V11H13M3,21H11V15H3M3,13H11V3H3V13Z" /></svg>',preview:e=>B(e)},nt=e=>e.withGlobalStyles?{...S,preview:i=>B(i,e)}:S,x=Y({width:320,height:96,text:"Logo",bg:"e2e8f0",fg:"334155"}),at=({id:e,label:i,category:o,library:r})=>({id:e,label:i,category:o,library:r,select:!0,full:!0,media:o.icon}),t={spacing:{section:"10px 0px 10px 0px"},colors:{primary:"#cf549e",secondary:"#7c3aed",white:"#ffffff",text:{heading:"#0f172a",body:"#475569"},bg:{section:"#ffffff",transparent:"#00000000"}},radii:{s:"8px",m:"16px",l:"32px",card:"10px",pill:"999px"},buttons:{primary:'background-color="#cf549e" color="#ffffff"',secondary:'background-color="#7c3aed" color="#ffffff"'},attrs:{bgTransparent:'background-color="#00000000"',bgSection:'background-color="#ffffff"'}},rt="https://images.unsplash.com/photo-1713171158509-f2a6582581a0?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3NzE5NjR8MHwxfHNlYXJjaHw0MXx8YWJzdHJhY3QlMjBwdXJwbGUlMjB3YXZlc3xlbnwwfHx8fDE3ODAxNjIzNTd8MA&ixlib=rb-4.1.0&q=80&w=1080",lt="https://images.unsplash.com/photo-1637611331620-51149c7ceb94?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3NzE5NjR8MHwxfHNlYXJjaHw3M3x8YWJzdHJhY3QlMjBwdXJwbGV8ZW58MHx8fHwxNzgwMjk5NDUxfDA&ixlib=rb-4.1.0&q=80&w=1080",b="https://images.unsplash.com/photo-1670189577367-2c6ef31a4b8c?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3NzE5NjR8MHwxfHNlYXJjaHwxNXx8YWJzdHJhY3QlMjBwdXJwbGV8ZW58MHx8fHwxNzgwMjk5NDMyfDA&ixlib=rb-4.1.0&q=80&w=1080",st="https://images.unsplash.com/photo-1607371059636-720f2c169e82?q=80&w=928&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",P="https://images.unsplash.com/photo-1674247489394-524fef63c0ff?q=80&w=928&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",y="https://images.unsplash.com/photo-1729119578980-91838d6014d9?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",C="https://images.unsplash.com/photo-1729119579013-decd9c61c395?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",pt="https://images.unsplash.com/photo-1729119578960-45095ebc3b8a?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",ct="https://images.unsplash.com/photo-1729119578920-240c46516e91?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",G="https://images.unsplash.com/photo-1659468525744-314c75acdd38?q=80&w=2064&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",dt="https://images.unsplash.com/photo-1739978291558-6dbdd5b9f9f8?q=80&w=2064&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",mt="https://images.unsplash.com/photo-1698429894924-ee93fc16279a?q=80&w=2200&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",gt="https://images.unsplash.com/photo-1698430484227-006b70bc83cb?q=80&w=2000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",xt="https://images.unsplash.com/photo-1698429894931-fa699270a2fa?q=80&w=2200&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",v="https://images.unsplash.com/photo-1638248308805-d488b66ea854?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",L="https://images.unsplash.com/photo-1706720097169-b4120bb97a30?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",R="https://images.unsplash.com/photo-1706720093772-be76963b01a3?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",z="https://images.unsplash.com/photo-1716032936139-33cb6cd84dc0?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",k="https://images.unsplash.com/photo-1566319743996-123ad0f44a68?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",O="https://images.unsplash.com/photo-1706466615511-18622e5ef756?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",W="https://images.unsplash.com/photo-1527980965255-d3b416303d12?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",I="https://images.unsplash.com/photo-1485893086445-ed75865251e0?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",ft="https://images.unsplash.com/photo-1586299485759-f62264d6b63f?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",jt="https://images.unsplash.com/photo-1595897950118-1037962bc920?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",ut="https://images.unsplash.com/photo-1642060603505-e716140d45d2?q=80&w=1160&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",ht=e=>{const i=o=>e.withGlobalStyles?"":` ${o}`;return{presetEmailHeaderLogo:{label:"Centered Logo",category:n.header,getContent:({getImageUrl:o})=>`<mj-section background-color="${t.colors.bg.section}" padding="${t.spacing.section}">
2
+ <mj-column>
3
+ <mj-image src="${o(x)}" alt="Brand logo" width="160px"/>
4
+ </mj-column>
5
+ </mj-section>`},presetEmailHeaderLogoNav:{label:"Logo + Menu",category:n.header,getContent:({getImageUrl:o})=>`<mj-section background-color="${t.colors.bg.section}" padding="${t.spacing.section}">
6
+ <mj-column width="35%" vertical-align="middle">
7
+ <mj-image src="${o(x)}" alt="Brand logo" width="107px" align="left" />
8
+ </mj-column>
9
+ <mj-column width="65%" vertical-align="middle">
10
+ <mj-navbar align="right" base-url="https://example.com">
11
+ <mj-navbar-link color="#475569" font-size="13px" href="/shop">Shop</mj-navbar-link>
12
+ <mj-navbar-link color="#475569" font-size="13px" href="/stories">Stories</mj-navbar-link>
13
+ <mj-navbar-link color="#475569" font-size="13px" href="/support">Support</mj-navbar-link>
14
+ </mj-navbar>
15
+ </mj-column>
16
+ </mj-section>`},presetEmailHeaderLogoCta:{label:"Logo + Button",category:n.header,getContent:({getImageUrl:o})=>`<mj-section background-color="${t.colors.bg.section}" padding="${t.spacing.section}">
17
+ <mj-column vertical-align="middle">
18
+ <mj-image src="${o(x)}" alt="Brand logo" width="120px" align="left" />
19
+ </mj-column>
20
+ <mj-column vertical-align="middle">
21
+ <mj-button align="right" ${t.buttons.secondary}>
22
+ Get started
23
+ </mj-button>
24
+ </mj-column>
25
+ </mj-section>`},presetEmailHeaderSocialLogo:{label:"Logo + Socials",category:n.header,getContent:({getImageUrl:o})=>`<mj-section background-color="${t.colors.bg.section}" padding="${t.spacing.section}">
26
+ <mj-column vertical-align="middle">
27
+ <mj-social align="left" mode="horizontal">
28
+ <mj-social-element name="facebook" background-color="${t.colors.secondary}"></mj-social-element>
29
+ <mj-social-element name="linkedin" background-color="${t.colors.secondary}"></mj-social-element>
30
+ <mj-social-element name="youtube" background-color="${t.colors.secondary}"></mj-social-element>
31
+ </mj-social>
32
+ </mj-column>
33
+ <mj-column vertical-align="middle">
34
+ <mj-image src="${o(x)}" alt="Brand logo" width="95px" align="right"/>
35
+ </mj-column>
36
+ </mj-section>`},presetEmailHeaderStackedMenu:{label:"Stacked Logo + Menu",category:n.header,getContent:({getImageUrl:o})=>`<mj-wrapper>
37
+ <mj-section background-color="#ffffff" padding="0px">
38
+ <mj-column>
39
+ <mj-image src="${o(x)}" alt="Brand logo" width="160px" align="center" />
40
+ <mj-divider border-width="1px" border-color="#e7e7e7"></mj-divider>
41
+ </mj-column>
42
+ </mj-section>
43
+ <mj-section background-color="#ffffff" padding="0px">
44
+ <mj-column>
45
+ <mj-navbar align="center" base-url="https://example.com">
46
+ <mj-navbar-link color="#475569" font-size="13px" href="/shop">Shop</mj-navbar-link>
47
+ <mj-navbar-link color="#475569" font-size="13px" href="/stories">Stories</mj-navbar-link>
48
+ <mj-navbar-link color="#475569" font-size="13px" href="/support">Support</mj-navbar-link>
49
+ </mj-navbar>
50
+ </mj-column>
51
+ </mj-section>
52
+ </mj-wrapper>`},presetEmailHeroCenteredCta:{label:"Centered Hero + CTA",category:n.hero,getContent:()=>`<mj-section padding="${t.spacing.section}">
53
+ <mj-column padding="40px 20px" border-radius="20px"${i('background-color="#ffffff"')}>
54
+ <mj-text padding="5px 0" align="center" font-size="12px" font-weight="700" text-transform="uppercase" letter-spacing="1px"${i('color="#1e293b"')}>
55
+ Fresh release
56
+ </mj-text>
57
+ <mj-text align="center" font-size="32px" font-weight="700" line-height="40px"${i('color="#0f172a"')}>
58
+ Launch polished campaigns
59
+ </mj-text>
60
+ <mj-text align="center" font-size="16px" line-height="24px"${i('color="#334155"')}>
61
+ Start with ready-made sections, swap in your content, and ship a clean newsletter without building every block from scratch.
62
+ </mj-text>
63
+ <mj-spacer height="30px"></mj-spacer>
64
+ <mj-button align="center" font-weight="700" padding="0" inner-padding="14px 28px" ${i('background-color="#8b5cf6" color="#ffffff" border-radius="999px"')}>
65
+ Explore the collection
66
+ </mj-button>
67
+ </mj-column>
68
+ </mj-section>`},presetEmailHeroBackground:{label:"Background Hero",category:n.hero,getContent:({getImageUrl:o})=>`<mj-wrapper>
69
+ <mj-section
70
+ background-url="${o(rt)}"
71
+ background-size="cover"
72
+ background-repeat="no-repeat"
73
+ background-color="#c7a5c9"
74
+ padding="110px 24px 96px 24px"
75
+ border-radius="${t.radii.card}"
76
+ >
77
+ <mj-column background-color="#00000000">
78
+ <mj-text color="#ffffff" align="center" font-weight="700" font-size="12px" line-height="30px" letter-spacing="2px" padding="0">
79
+ SEASONAL LAUNCH
80
+ </mj-text>
81
+ <mj-text align="center" color="#9767c4" font-size="50px" font-weight="700" line-height="52px" letter-spacing="1px" padding="10px 0">
82
+ UP TO 70% OFF
83
+ </mj-text>
84
+ <mj-text color="#ffffff" align="center" font-size="24px" line-height="32px" padding="0">
85
+ Limited-time collection
86
+ </mj-text>
87
+ <mj-button font-size="16px" border-radius="999px" padding="30px 0 0 0" inner-padding="20px 40px" font-weight="700" letter-spacing="1px" background-color="#9767c4" color="#ffffff">
88
+ SHOP NOW
89
+ </mj-button>
90
+ </mj-column>
91
+ </mj-section>
92
+ </mj-wrapper>`},presetEmailHeroSplitBackground:{label:"Split Background Hero",category:n.hero,getContent:({getImageUrl:o})=>`<mj-wrapper>
93
+ <mj-section
94
+ padding="48px 24px"
95
+ background-url="${o(lt)}"
96
+ background-color="#c7a5c9"
97
+ background-size="cover"
98
+ background-repeat="no-repeat"
99
+ background-color="#1e293b"
100
+ border-radius="${t.radii.card}"
101
+ >
102
+ <mj-column ${t.attrs.bgTransparent}></mj-column>
103
+ <mj-column ${t.attrs.bgTransparent}>
104
+ <mj-text font-size="40px" line-height="48px" color="#ffffff" font-weight="700" padding="0">
105
+ Spend & Save
106
+ </mj-text>
107
+ <mj-text padding="20px 0" color="#ffffff" line-height="24px">
108
+ Spotlight a campaign with image-led energy while keeping the key message and CTA anchored in a readable column.
109
+ </mj-text>
110
+ <mj-button background-color="#ffffff" color="#cf549e" width="100%" border-radius="999px" padding="30px 0 0 0" font-weight="700" letter-spacing="1px">
111
+ SHOP NOW
112
+ </mj-button>
113
+ </mj-column>
114
+ </mj-section>
115
+ </mj-wrapper>`},presetEmailHeroImageCopy:{label:"Image + Copy Hero",category:n.hero,getContent:({getImageUrl:o})=>`<mj-wrapper>
116
+ <mj-section background-color="#ffffff" padding="5px" border-radius="20px">
117
+ <mj-column vertical-align="middle">
118
+ <mj-image src="${o(b)}" alt="Campaign preview" padding="0" border-radius="18px" />
119
+ </mj-column>
120
+ <mj-column vertical-align="middle" padding="0 20px">
121
+ <mj-text color="#0f172a" font-size="28px" font-weight="700" line-height="36px" padding="12px 0">
122
+ Put your next story front
123
+ </mj-text>
124
+ <mj-text color="#475569" line-height="23px" padding="10px 0 20px 0">
125
+ Combine imagery, concise copy, and a single call to action to guide subscribers toward your most important announcement.
126
+ </mj-text>
127
+ <mj-button align="left" background-color="#0f172a" color="#ffffff" border-radius="999px" inner-padding="14px 26px" padding="20px 0 0 0">
128
+ Read the update
129
+ </mj-button>
130
+ </mj-column>
131
+ </mj-section>
132
+ </mj-wrapper>`},presetEmailHeroMenuBottom:{label:"Hero + Menu Bottom",category:n.hero,getContent:({getImageUrl:o})=>`<mj-wrapper>
133
+ <mj-section padding="0" background-color="#8b5cf6" border-radius="10px 10px 0px 0px">
134
+ <mj-column ${t.attrs.bgTransparent} vertical-align="middle" padding="40px 30px">
135
+ <mj-image align="left" src="${o(x)}" alt="Brand logo" width="100px" padding="0"></mj-image>
136
+ <mj-text padding="25px 0 0 0" align="left" font-size="52px" font-weight="700" line-height="60px" color="#ffffff">
137
+ 50% OFF
138
+ </mj-text>
139
+ <mj-text padding="0" align="left" font-size="32px" line-height="42px" font-weight="700" color="#ffffff">
140
+ selected products this week
141
+ </mj-text>
142
+ </mj-column>
143
+ <mj-column ${t.attrs.bgTransparent}>
144
+ <mj-image src="${o(st)}" alt="Promotional image" padding="0"></mj-image>
145
+ </mj-column>
146
+ </mj-section>
147
+ <mj-section padding="0">
148
+ <mj-column border-radius="0px 0px 10px 10px" background-color="#7c3aed">
149
+ <mj-navbar base-url="https://example.com" align="center">
150
+ <mj-navbar-link font-weight="700" text-transform="uppercase" padding="20px 15px" color="#ffffff" href="/home">Home</mj-navbar-link>
151
+ <mj-navbar-link font-weight="700" text-transform="uppercase" padding="20px 15px" color="#ffffff" href="/blog">Blog</mj-navbar-link>
152
+ <mj-navbar-link font-weight="700" text-transform="uppercase" padding="20px 15px" color="#ffffff" href="/contact">Contact</mj-navbar-link>
153
+ </mj-navbar>
154
+ </mj-column>
155
+ </mj-section>
156
+ </mj-wrapper>`},presetEmailHeroMenuTop:{label:"Hero + Menu Top",category:n.hero,getContent:({getImageUrl:o})=>`<mj-wrapper>
157
+ <mj-section padding="20px 24px" background-color="#ffffff" border-radius="10px 10px 0px 0px">
158
+ <mj-column vertical-align="middle" width="22%">
159
+ <mj-image src="${o(x)}" alt="Brand logo" padding="0"></mj-image>
160
+ </mj-column>
161
+ <mj-column ${t.attrs.bgTransparent} vertical-align="middle" width="50%">
162
+ <mj-navbar align="center">
163
+ <mj-navbar-link color="#101828" font-size="14px" font-weight="700" href="/home">Home</mj-navbar-link>
164
+ <mj-navbar-link color="#101828" font-size="14px" font-weight="700" href="/about">About</mj-navbar-link>
165
+ <mj-navbar-link color="#101828" font-size="14px" font-weight="700" href="/services">Services</mj-navbar-link>
166
+ </mj-navbar>
167
+ </mj-column>
168
+ <mj-column vertical-align="middle" width="28%">
169
+ <mj-text padding="10px 15px" align="center" font-size="14px" font-weight="700" color="#ffffff" container-background-color="#414141">
170
+ UPDATES
171
+ </mj-text>
172
+ </mj-column>
173
+ </mj-section>
174
+ <mj-section padding="0" background-color="#f4f2f8" border-radius="0px 0px 10px 10px">
175
+ <mj-column ${t.attrs.bgTransparent}>
176
+ <mj-image src="${o(b)}" alt="Campaign image" padding="0"></mj-image>
177
+ </mj-column>
178
+ <mj-column ${t.attrs.bgTransparent} vertical-align="middle" padding="40px 30px">
179
+ <mj-text padding="0" align="left" font-size="44px" line-height="48px" color="#d0549e" font-weight="700">
180
+ Digital
181
+ </mj-text>
182
+ <mj-text padding="0" align="left" font-size="38px" line-height="42px" font-weight="700">
183
+ Marketing
184
+ </mj-text>
185
+ <mj-text padding="20px 0" align="left" font-size="14px" line-height="24px">
186
+ Pair a navigational masthead with a crisp two-column hero for agency intros, event emails, or editorial launches.
187
+ </mj-text>
188
+ <mj-button font-size="16px" font-weight="700" padding="10px 0" align="left" inner-padding="15px 30px" background-color="#d0549e" color="#ffffff">
189
+ Get started
190
+ </mj-button>
191
+ </mj-column>
192
+ </mj-section>
193
+ </mj-wrapper>`},presetEmailHeroFullWidthBg:{label:"Full Width Background Hero",category:n.hero,getContent:({getImageUrl:o})=>`<mj-section
194
+ padding="48px 12px"
195
+ background-url="${o(b)}"
196
+ background-size="cover"
197
+ background-repeat="no-repeat"
198
+ background-color="#cfaac4"
199
+ full-width="full-width"
200
+ >
201
+ <mj-column background-color="#ffffffab" padding="40px 30px" border-radius="10px" border="2px solid #f4d9eb" width="90%">
202
+ <mj-text padding="0px 0px 20px 0px" align="left" font-size="38px" line-height="50px" font-weight="700">
203
+ Your <span style="color: #d0549e;">Conference</span>
204
+ </mj-text>
205
+ <mj-text padding="10px 0" align="left" font-size="30px" line-height="36px" font-weight="700">
206
+ 22-23 September
207
+ </mj-text>
208
+ <mj-text padding="0 0 20px 0" align="left" font-size="16px" line-height="24px">
209
+ Don't miss out on these limited-time events happening across the city!<br/>
210
+ Grand Horizon Hotel, 123 Innovation Boulevard, Tech City.
211
+ </mj-text>
212
+ <mj-button ${t.buttons.primary} align="left" font-size="16px" padding="10px 0" border-radius="999px" inner-padding="15px 30px">
213
+ Purchase ticket
214
+ </mj-button>
215
+ </mj-column>
216
+ </mj-section>`},presetEmailContentIntro:{label:"Content Intro",category:n.content,getContent:()=>`<mj-section background-color="#ffffff" padding="24px">
217
+ <mj-column ${t.attrs.bgTransparent}>
218
+ <mj-text color="${t.colors.primary}" font-size="26px" font-weight="700" line-height="32px" padding="0">
219
+ A simple intro section
220
+ </mj-text>
221
+ <mj-text color="${t.colors.text.body}" line-height="30px" padding="0 0 12px 0">
222
+ Use this section to set the tone, explain what changed, or frame the key message before readers move into product details and supporting content.
223
+ </mj-text>
224
+ <mj-divider border-color="#dbe4f0" border-width="1px" padding="12px 0 0 0" />
225
+ </mj-column>
226
+ </mj-section>`},presetEmailContentTwoColumn:{label:"Content Two Column",category:n.content,getContent:()=>`<mj-section background-color="#ffffff" padding="24px">
227
+ <mj-column ${t.attrs.bgTransparent} padding="0 12px 12px 0">
228
+ <mj-text color="${t.colors.primary}" font-size="14px" font-weight="700" line-height="28px" padding="0">Label 1</mj-text>
229
+ <mj-text color="${t.colors.text.heading}" font-size="20px" font-weight="700" line-height="28px" padding="0 0 10px 0">
230
+ Editorial note
231
+ </mj-text>
232
+ <mj-text color="${t.colors.text.body}" font-size="15px" line-height="24px" padding="0">
233
+ Share context, a product update, or a short story that helps readers understand why this message matters right now.
234
+ </mj-text>
235
+ </mj-column>
236
+ <mj-column ${t.attrs.bgTransparent} padding="0">
237
+ <mj-text color="${t.colors.primary}" font-size="14px" font-weight="700" line-height="28px" padding="0">Label 2</mj-text>
238
+ <mj-text color="${t.colors.text.heading}" font-size="20px" font-weight="700" line-height="28px" padding="0 0 10px 0">
239
+ Key takeaway
240
+ </mj-text>
241
+ <mj-text color="${t.colors.text.body}" font-size="15px" line-height="24px" padding="0">
242
+ Pair it with supporting details, release notes, customer-facing benefits, or a concise summary that encourages the next click.
243
+ </mj-text>
244
+ </mj-column>
245
+ </mj-section>`},presetEmailContentCenterImageColumns:{label:"Center Image Columns",category:n.content,getContent:({getImageUrl:o})=>`<mj-section padding="50px 24px 24px" background-color="#ffffff">
246
+ <mj-column width="33%">
247
+ <mj-text color="${t.colors.text.heading}" padding="0 15px 5px" align="right" font-size="16px" font-weight="600">
248
+ 24/7 support
249
+ </mj-text>
250
+ <mj-text color="${t.colors.text.body}" padding="0 15px 30px" align="right" font-size="13px" line-height="22px">
251
+ Explain one service or capability on the left to frame the main visual.
252
+ </mj-text>
253
+ <mj-text color="${t.colors.text.heading}" padding="0 15px 5px" align="right" font-size="16px" font-weight="600">
254
+ Cloud sync
255
+ </mj-text>
256
+ <mj-text color="${t.colors.text.body}" padding="0 15px 30px" align="right" font-size="13px" line-height="22px">
257
+ A second supporting point balances the composition.
258
+ </mj-text>
259
+ </mj-column>
260
+ <mj-column width="34%">
261
+ <mj-image src="${o(b)}" alt="Feature" padding="0 0 30px" border-radius="${t.radii.s}"></mj-image>
262
+ </mj-column>
263
+ <mj-column width="33%">
264
+ <mj-text color="${t.colors.text.heading}" padding="0 15px 5px" align="left" font-size="16px" font-weight="600">
265
+ Free updates
266
+ </mj-text>
267
+ <mj-text color="${t.colors.text.body}" padding="0 15px 30px" align="left" font-size="13px" line-height="22px">
268
+ The right column works well for platform highlights and benefits.
269
+ </mj-text>
270
+ <mj-text color="${t.colors.text.heading}" padding="0 15px 5px" align="left" font-size="16px" font-weight="600">
271
+ Multi-platform
272
+ </mj-text>
273
+ <mj-text color="${t.colors.text.body}" padding="0 15px" align="left" font-size="13px" line-height="22px">
274
+ Keep each paragraph short so the layout stays clean and easy to scan.
275
+ </mj-text>
276
+ </mj-column>
277
+ </mj-section>`},presetEmailContentRowImageArticle:{label:"Row Image Article",category:n.content,getContent:({getImageUrl:o})=>`<mj-wrapper>
278
+ <mj-section ${t.attrs.bgSection} padding="0" border-radius="${t.radii.m}">
279
+ <mj-column ${t.attrs.bgTransparent} width="40%">
280
+ <mj-image src="${o(y)}" alt="Article" padding="0"></mj-image>
281
+ </mj-column>
282
+ <mj-column ${t.attrs.bgTransparent} vertical-align="top" width="60%" padding="20px">
283
+ <mj-text color="${t.colors.secondary}" font-size="12px" font-weight="700" letter-spacing="1px" padding="0">
284
+ LABEL
285
+ </mj-text>
286
+ <mj-text color="${t.colors.text.heading}" padding="10px 0" align="left" font-size="24px" line-height="34px" font-weight="600">
287
+ Article heading
288
+ </mj-text>
289
+ <mj-text color="${t.colors.text.body}" align="left" font-size="14px" line-height="26px" padding="0">
290
+ Use the article row for updates, editorial roundups, or product explainers.
291
+ </mj-text>
292
+ <mj-button ${t.attrs.bgTransparent} color="${t.colors.text.heading}" font-weight="700" font-size="12px" align="left"
293
+ border="2px solid ${t.colors.text.heading}" padding="40px 0px 0px 0px">VIEW DETAILS →</mj-button>
294
+ </mj-column>
295
+ </mj-section>
296
+ </mj-wrapper>`},presetEmailContentAlternatingRowImageArticles:{label:"Alternating Row Image Articles",category:n.content,getContent:({getImageUrl:o})=>`<mj-wrapper gap="12px">
297
+ <mj-section padding="16px 0" border-radius="${t.radii.m}" ${t.attrs.bgSection}>
298
+ <mj-column ${t.attrs.bgTransparent} width="40%" vertical-align="top" padding="10px 20px">
299
+ <mj-image src="${o(C)}" border-radius="${t.radii.m}" padding="0" alt="Article visual"></mj-image>
300
+ </mj-column>
301
+ <mj-column ${t.attrs.bgTransparent} width="60%" vertical-align="top" padding="10px 20px">
302
+ <mj-text color="${t.colors.secondary}" font-size="12px" font-weight="700" letter-spacing="1px" padding="0">
303
+ FEATURE STORY
304
+ </mj-text>
305
+ <mj-text color="${t.colors.text.heading}" padding="10px 0" align="left" font-size="24px" line-height="34px" font-weight="600">
306
+ First Article
307
+ </mj-text>
308
+ <mj-text color="${t.colors.text.body}" align="left" font-size="14px" line-height="26px" padding="0">
309
+ Use alternating article rows for updates, editorial roundups, or product explainers that need more room than a standard card.
310
+ </mj-text>
311
+ <mj-button ${t.attrs.bgTransparent} color="${t.colors.text.heading}" font-weight="700" font-size="12px" align="left" padding="40px 0px 0px 0px" inner-padding="0">
312
+ READ MORE →
313
+ </mj-button>
314
+ </mj-column>
315
+ </mj-section>
316
+ <mj-section padding="16px 0" border-radius="${t.radii.m}" ${t.attrs.bgSection}>
317
+ <mj-column ${t.attrs.bgTransparent} width="60%" vertical-align="top" padding="10px 20px">
318
+ <mj-text color="${t.colors.secondary}" font-size="12px" font-weight="700" letter-spacing="1px" padding="0">
319
+ UPDATE
320
+ </mj-text>
321
+ <mj-text color="${t.colors.text.heading}" padding="10px 0" align="left" font-size="24px" line-height="34px" font-weight="600">
322
+ Second Article
323
+ </mj-text>
324
+ <mj-text color="${t.colors.text.body}" align="left" font-size="14px" line-height="26px" padding="0">
325
+ The mirrored second row keeps longer campaign emails from feeling repetitive while preserving a consistent structure.
326
+ </mj-text>
327
+ <mj-button ${t.attrs.bgTransparent} color="${t.colors.text.heading}" font-weight="700" font-size="12px" align="left" padding="40px 0px 0px 0px" inner-padding="0">
328
+ READ MORE →
329
+ </mj-button>
330
+ </mj-column>
331
+ <mj-column ${t.attrs.bgTransparent} width="40%" vertical-align="top" padding="10px 20px">
332
+ <mj-image src="${o(y)}" border-radius="${t.radii.m}" padding="0" alt="Article visual"></mj-image>
333
+ </mj-column>
334
+ </mj-section>
335
+ </mj-wrapper>`},presetEmailContentGridArticles:{label:"Grid Articles",category:n.content,getContent:({getImageUrl:o})=>`<mj-wrapper>
336
+ <mj-section padding="0" border-radius="${t.radii.m} ${t.radii.m} 0 0" ${t.attrs.bgSection}>
337
+ <mj-column vertical-align="middle">
338
+ <mj-image src="${o(pt)}" alt="Destination one" padding="0"></mj-image>
339
+ </mj-column>
340
+ <mj-column ${t.attrs.bgTransparent} vertical-align="middle" padding="34px 24px">
341
+ <mj-text color="${t.colors.secondary}" font-size="12px" font-weight="700" letter-spacing="1px" padding="0 0 10px">
342
+ LABEL ONE
343
+ </mj-text>
344
+ <mj-text align="left" font-size="22px" line-height="28px" letter-spacing="1px" padding="0">
345
+ First Article
346
+ </mj-text>
347
+ <mj-text padding="8px 0 10px" align="left" font-size="14px" line-height="24px">
348
+ Pair each image with a short destination, story, or offer summary inside a balanced half-and-half layout.
349
+ </mj-text>
350
+ <mj-button border-radius="${t.radii.m}" background-color="${t.colors.secondary}" font-size="12px" font-weight="700" letter-spacing="1px" align="left" padding="30px 0 0 0" width="100%">
351
+ Book now
352
+ </mj-button>
353
+ </mj-column>
354
+ </mj-section>
355
+ <mj-section padding="0" border-radius="0 0 ${t.radii.m} ${t.radii.m}" ${t.attrs.bgSection}>
356
+ <mj-column ${t.attrs.bgTransparent} vertical-align="middle" padding="34px 24px">
357
+ <mj-text color="${t.colors.secondary}" font-size="12px" font-weight="700" letter-spacing="1px" padding="0 0 10px">
358
+ LABEL TWO
359
+ </mj-text>
360
+ <mj-text align="left" font-size="22px" line-height="28px" letter-spacing="1px" padding="0">
361
+ Second Article
362
+ </mj-text>
363
+ <mj-text padding="8px 0 10px" align="left" font-size="14px" line-height="24px">
364
+ The second row can invert the order to create a tidy editorial grid without needing a dedicated card component.
365
+ </mj-text>
366
+ <mj-button border-radius="${t.radii.m}" background-color="${t.colors.secondary}" font-size="12px" font-weight="700" letter-spacing="1px" align="left" padding="30px 0 0 0" width="100%">
367
+ Explore the offer
368
+ </mj-button>
369
+ </mj-column>
370
+ <mj-column vertical-align="middle">
371
+ <mj-image src="${o(ct)}" alt="Destination two" padding="0"></mj-image>
372
+ </mj-column>
373
+ </mj-section>
374
+ </mj-wrapper>`},presetEmailContentSplitArticles:{label:"Split Articles",category:n.content,getContent:({getImageUrl:o})=>`<mj-wrapper>
375
+ <mj-section padding="0" ${t.attrs.bgSection}>
376
+ <mj-column ${t.attrs.bgTransparent}>
377
+ <mj-image src="${o(b)}" alt="Feature image" padding="0 0 30px"></mj-image>
378
+ <mj-text padding="0px 10px 10px 10px" color="${t.colors.primary}" font-size="12px" font-weight="700" letter-spacing="1px">
379
+ LABEL TWO
380
+ </mj-text>
381
+ <mj-text padding="0 10px" align="left" font-size="30px" line-height="36px" font-weight="700">
382
+ Your studio
383
+ </mj-text>
384
+ <mj-text padding="15px 10px" align="left" font-size="14px" line-height="24px">
385
+ Combine image-led storytelling and a short CTA inside a split layout that still feels more editorial than a standard promo row.
386
+ </mj-text>
387
+ <mj-button border-radius="${t.radii.m}" background-color="${t.colors.primary}" font-size="14px" font-weight="700" align="left" padding="10px">
388
+ Read more
389
+ </mj-button>
390
+ </mj-column>
391
+ <mj-column ${t.attrs.bgTransparent} padding="30px 0 0">
392
+ <mj-text padding="0px 10px 10px 10px" color="${t.colors.primary}" font-size="12px" font-weight="700" letter-spacing="1px">
393
+ LABEL ONE
394
+ </mj-text>
395
+ <mj-text padding="0 10px" align="left" font-size="30px" line-height="36px" font-weight="700">
396
+ Creative team
397
+ </mj-text>
398
+ <mj-text padding="15px 10px" align="left" font-size="14px" line-height="24px">
399
+ The mirrored second half lets you highlight another department, service, or offer while keeping the section cohesive.
400
+ </mj-text>
401
+ <mj-button border-radius="${t.radii.m}" background-color="${t.colors.primary}" font-size="14px" font-weight="700" align="left" padding="10px">
402
+ Explore more
403
+ </mj-button>
404
+ <mj-image src="${o(P)}" alt="Image" padding="30px 0 0"></mj-image>
405
+ </mj-column>
406
+ </mj-section>
407
+ </mj-wrapper>`},presetEmailContentColumnImageArticle:{label:"Column Image Article",category:n.content,getContent:({getImageUrl:o})=>`<mj-wrapper>
408
+ <mj-section padding="5px" border-radius="${t.radii.m}" ${t.attrs.bgSection}>
409
+ <mj-column ${t.attrs.bgTransparent}>
410
+ <mj-image src="${o(G)}" border-radius="${t.radii.m}" padding="0" alt="Article"/>
411
+ <mj-text padding="24px 12px 12px" font-size="12px" font-weight="700" letter-spacing="1px" color="${t.colors.primary}">
412
+ LABEL ONE
413
+ </mj-text>
414
+ <mj-text color="${t.colors.text.heading}" padding="0px 12px" font-size="28px" font-weight="700" line-height="36px">
415
+ Put your next story front
416
+ </mj-text>
417
+ <mj-text padding="12px 12px 24px" color="${t.colors.text.body}" line-height="26px">
418
+ Combine imagery, concise copy, and a single call to action to guide subscribers toward your most important announcement.
419
+ </mj-text>
420
+ <mj-button align="left" border-radius="999px" padding="12px 12px 24px" inner-padding="12px 32px" ${t.buttons.primary}>
421
+ READ THE UPDATE
422
+ </mj-button>
423
+ </mj-column>
424
+ </mj-section>
425
+ </mj-wrapper>`},presetEmailContentTwoColumnImageArticles:{label:"Two Column Image Articles",category:n.content,getContent:({getImageUrl:o})=>`<mj-section padding="16px 0">
426
+ <mj-column border-radius="${t.radii.s}" padding="${t.radii.s}" width="49%" ${t.attrs.bgSection}>
427
+ <mj-image src="${o(G)}" border-radius="${t.radii.s}" padding="0" alt="Article"/>
428
+ <mj-text color="${t.colors.primary}" padding="24px 12px 12px" font-size="12px" font-weight="700" letter-spacing="1px">
429
+ LABEL ONE
430
+ </mj-text>
431
+ <mj-text color="${t.colors.text.heading}" padding="0px 12px" font-size="18px" font-weight="700" line-height="36px">
432
+ First Article
433
+ </mj-text>
434
+ <mj-text color="${t.colors.text.body}" padding="12px 12px 24px 12px" line-height="26px">
435
+ Combine imagery, concise copy, and a single call to action to guide subscribers.
436
+ </mj-text>
437
+ <mj-button border-radius="${t.radii.s}" align="center" inner-padding="12px 32px" padding="12px" ${t.buttons.primary}>
438
+ Read the update
439
+ </mj-button>
440
+ </mj-column>
441
+ <mj-column border-radius="${t.radii.s}" padding="${t.radii.s}" width="2%" ${t.attrs.bgTransparent}></mj-column>
442
+ <mj-column border-radius="${t.radii.s}" padding="${t.radii.s}" width="49%" ${t.attrs.bgSection}>
443
+ <mj-image src="${o(dt)}" border-radius="${t.radii.s}" padding="0" alt="Article"/>
444
+ <mj-text color="${t.colors.primary}" padding="24px 12px 12px" font-size="12px" font-weight="700" letter-spacing="1px">
445
+ LABEL TWO
446
+ </mj-text>
447
+ <mj-text color="${t.colors.text.heading}" padding="0px 12px" font-size="18px" font-weight="700" line-height="36px">
448
+ Second Article
449
+ </mj-text>
450
+ <mj-text color="${t.colors.text.body}" padding="12px 12px 24px 12px" line-height="26px">
451
+ Product update, or a short story that helps readers understand why this message.
452
+ </mj-text>
453
+ <mj-button border-radius="${t.radii.s}" align="center" inner-padding="12px 32px" padding="12px" ${t.buttons.primary}>
454
+ Read the update
455
+ </mj-button>
456
+ </mj-column>
457
+ </mj-section>`},presetEmailContentThreeColumnImageArticles:{label:"Three Column Image Articles",category:n.content,getContent:({getImageUrl:o})=>`<mj-section padding="16px 0">
458
+ <mj-column border-radius="${t.radii.s}" padding="${t.radii.s}" width="32%" ${t.attrs.bgSection}>
459
+ <mj-image src="${o(mt)}" border-radius="${t.radii.s}" padding="0" alt="Article"/>
460
+ <mj-text color="${t.colors.secondary}" padding="12px 12px 8px" font-size="10px" font-weight="700" letter-spacing="1px">
461
+ LABEL ONE
462
+ </mj-text>
463
+ <mj-text color="${t.colors.text.heading}" padding="0px 12px" font-size="16px" font-weight="700" line-height="24px">
464
+ First Article
465
+ </mj-text>
466
+ <mj-text color="${t.colors.text.body}" padding="12px" line-height="24px" font-size="14px">
467
+ Combine imagery, concise copy, and a single call to action.
468
+ </mj-text>
469
+ <mj-button border-radius="${t.radii.l}" align="center" inner-padding="${t.radii.s}" padding="${t.radii.s}" width="100%" ${t.buttons.secondary}>
470
+ OPEN
471
+ </mj-button>
472
+ </mj-column>
473
+ <mj-column border-radius="${t.radii.s}" padding="${t.radii.s}" width="2%" ${t.attrs.bgTransparent}></mj-column>
474
+ <mj-column border-radius="${t.radii.s}" padding="${t.radii.s}" width="32%" ${t.attrs.bgSection}>
475
+ <mj-image src="${o(gt)}" border-radius="${t.radii.s}" padding="0" alt="Article"/>
476
+ <mj-text color="${t.colors.secondary}" padding="12px 12px 8px" font-size="10px" font-weight="700" letter-spacing="1px">
477
+ LABEL TWO
478
+ </mj-text>
479
+ <mj-text color="${t.colors.text.heading}" padding="0px 12px" font-size="16px" font-weight="700" line-height="24px">
480
+ Second Article
481
+ </mj-text>
482
+ <mj-text color="${t.colors.text.body}" padding="12px" line-height="24px" font-size="14px">
483
+ Short story that helps understand the message.
484
+ </mj-text>
485
+ <mj-button border-radius="${t.radii.l}" align="center" inner-padding="${t.radii.s}" padding="${t.radii.s}" width="100%" ${t.buttons.secondary}>
486
+ READ
487
+ </mj-button>
488
+ </mj-column>
489
+ <mj-column border-radius="${t.radii.s}" padding="${t.radii.s}" width="2%" ${t.attrs.bgTransparent}></mj-column>
490
+ <mj-column border-radius="${t.radii.s}" padding="${t.radii.s}" width="32%" ${t.attrs.bgSection}>
491
+ <mj-image src="${o(xt)}" border-radius="${t.radii.s}" padding="0" alt="Article"/>
492
+ <mj-text color="${t.colors.secondary}" padding="12px 12px 8px" font-size="10px" font-weight="700" letter-spacing="1px">
493
+ LABEL THREE
494
+ </mj-text>
495
+ <mj-text color="${t.colors.text.heading}" padding="0px 12px" font-size="16px" font-weight="700" line-height="24px">
496
+ Third Article
497
+ </mj-text>
498
+ <mj-text color="${t.colors.text.body}" padding="12px" line-height="24px" font-size="14px">
499
+ Round out the trio with the last supporting point.
500
+ </mj-text>
501
+ <mj-button border-radius="${t.radii.l}" align="center" inner-padding="${t.radii.s}" padding="${t.radii.s}" width="100%" ${t.buttons.secondary}>
502
+ MORE
503
+ </mj-button>
504
+ </mj-column>
505
+ </mj-section>`},presetEmailTwoColumnProducts:{label:"Two Column Products",category:n.content,getContent:({getImageUrl:o})=>`<mj-section padding="12px" ${t.attrs.bgSection}>
506
+ <mj-column padding="15px" ${t.attrs.bgTransparent}>
507
+ <mj-image src="${o(y)}" alt="Product" border-radius="${t.radii.s}" padding="${t.radii.s}"></mj-image>
508
+ <mj-text padding="15px 10px 5px" align="left" line-height="24px" letter-spacing="1px">
509
+ <b style="background-color:${t.colors.secondary};border-radius:${t.radii.l};color:white;padding:6px 12px;font-size:10px;">Category</b>
510
+ </mj-text>
511
+ <mj-text padding="0 10px" align="left" font-size="26px" line-height="34px" color="${t.colors.text.heading}" font-weight="900">
512
+ Product one
513
+ </mj-text>
514
+ <mj-text padding="10px" align="left" font-size="14px" line-height="24px" color="${t.colors.text.body}">
515
+ Use this format for featured products, bundles, or collections.
516
+ </mj-text>
517
+ <mj-text padding="0 10px 5px" align="left" font-size="14px" color="${t.colors.text.body}">FROM</mj-text>
518
+ <mj-text padding="0 10px 20px" align="left" font-size="28px" line-height="32px" color="${t.colors.secondary}" font-weight="700">
519
+ $129 <s style="font-size:16px;font-weight:300;color:${t.colors.text.body}">$289</s>
520
+ </mj-text>
521
+ <mj-button background-color="${t.colors.text.heading}" color="#ffffff" font-size="14px" font-weight="700" letter-spacing="1px" padding="0 10px" width="100%" border-radius="${t.radii.s}">
522
+ Buy now
523
+ </mj-button>
524
+ </mj-column>
525
+ <mj-column padding="15px" ${t.attrs.bgTransparent}>
526
+ <mj-image src="${o(C)}" alt="Product" border-radius="${t.radii.s}" padding="${t.radii.s}"></mj-image>
527
+ <mj-text padding="15px 10px 5px" align="left" line-height="24px" letter-spacing="1px">
528
+ <b style="background-color:${t.colors.secondary};border-radius:${t.radii.l};color:white;padding:6px 12px;font-size:10px;">Category</b>
529
+ </mj-text>
530
+ <mj-text padding="0 10px" align="left" font-size="26px" line-height="34px" color="${t.colors.text.heading}" font-weight="900">
531
+ Product two
532
+ </mj-text>
533
+ <mj-text padding="10px" align="left" font-size="14px" line-height="24px" color="${t.colors.text.body}">
534
+ The second card mirrors the first so you can build compact sections.
535
+ </mj-text>
536
+ <mj-text padding="0 10px 5px" align="left" font-size="14px" color="${t.colors.text.body}">FROM</mj-text>
537
+ <mj-text padding="0 10px 20px" align="left" font-size="28px" line-height="32px" color="${t.colors.secondary}" font-weight="700">
538
+ $89 <s style="font-size:16px;font-weight:300;color:${t.colors.text.body}">$189</s>
539
+ </mj-text>
540
+ <mj-button background-color="${t.colors.text.heading}" color="#ffffff" font-size="14px" font-weight="700" letter-spacing="1px" padding="0 10px" width="100%" border-radius="${t.radii.s}">
541
+ Buy now
542
+ </mj-button>
543
+ </mj-column>
544
+ </mj-section>`},presetEmailThreePricingCards:{label:"Three Pricing Cards",category:n.content,getContent:()=>`<mj-section padding="24px 0" ${t.attrs.bgTransparent}>
545
+ <mj-column width="32%" border-radius="4px" padding="10px" ${t.attrs.bgSection}>
546
+ <mj-text padding="20px 0 10px 0" align="center" color="${t.colors.secondary}" font-size="16px">Starter pass</mj-text>
547
+ <mj-text padding="10px 0 20px 0" align="center" font-size="36px" font-weight="700">$49</mj-text>
548
+ <mj-divider border-style="dashed" border-width="4px" border-color="#47556955"></mj-divider>
549
+ <mj-text padding="15px 0" align="center" line-height="24px" font-size="12px">
550
+ Workshops<br/>
551
+ Keynotes<br/>
552
+ Community access
553
+ </mj-text>
554
+ <mj-button width="100%" font-size="12px" padding="10px 0" border-radius="${t.radii.s}" ${t.buttons.secondary}>Purchase</mj-button>
555
+ </mj-column>
556
+ <mj-column padding="${t.radii.s}" width="2%" ${t.attrs.bgTransparent}></mj-column>
557
+ <mj-column width="32%" border-radius="4px" padding="10px" ${t.attrs.bgSection}>
558
+ <mj-text padding="20px 0 10px 0" align="center" color="${t.colors.secondary}" font-size="16px">Full pass</mj-text>
559
+ <mj-text padding="10px 0 20px 0" align="center" font-size="36px" font-weight="700">$149</mj-text>
560
+ <mj-divider border-style="dashed" border-width="4px" border-color="#47556955"></mj-divider>
561
+ <mj-text padding="15px 0" align="center" line-height="24px" font-size="12px">
562
+ All sessions<br/>
563
+ Workshops<br/>
564
+ Networking events
565
+ </mj-text>
566
+ <mj-button width="100%" font-size="12px" padding="10px 0" border-radius="${t.radii.s}" ${t.buttons.secondary}>Purchase</mj-button>
567
+ </mj-column>
568
+ <mj-column padding="${t.radii.s}" width="2%" ${t.attrs.bgTransparent}></mj-column>
569
+ <mj-column width="32%" border-radius="4px" padding="10px" ${t.attrs.bgSection}>
570
+ <mj-text padding="20px 0 10px 0" align="center" color="${t.colors.secondary}" font-size="16px">VIP pass</mj-text>
571
+ <mj-text padding="10px 0 20px 0" align="center" font-size="36px" font-weight="700">$249</mj-text>
572
+ <mj-divider border-style="dashed" border-width="4px" border-color="#47556955"></mj-divider>
573
+ <mj-text padding="15px 0" align="center" line-height="24px" font-size="12px">
574
+ Priority seating<br/>
575
+ Private sessions<br/>
576
+ Speaker lounge
577
+ </mj-text>
578
+ <mj-button width="100%" font-size="12px" padding="10px 0" border-radius="${t.radii.s}" ${t.buttons.secondary}>Purchase</mj-button>
579
+ </mj-column>
580
+ </mj-section>`},presetEmailGridGallery:{label:"Grid Gallery",category:n.gallery,getContent:({getImageUrl:o})=>`<mj-wrapper>
581
+ <mj-section padding="16px 24px" border-radius="${t.radii.s} ${t.radii.s} 0 0" ${t.attrs.bgSection}>
582
+ <mj-column>
583
+ <mj-text color="${t.colors.text.heading}" align="center" font-size="24px" line-height="35px" letter-spacing="1px">
584
+ Grid Gallery
585
+ </mj-text>
586
+ </mj-column>
587
+ </mj-section>
588
+ <mj-section padding="0 24px" ${t.attrs.bgSection}>
589
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(v)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image></mj-column>
590
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(L)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image></mj-column>
591
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(R)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image></mj-column>
592
+ </mj-section>
593
+ <mj-section padding="0 24px" ${t.attrs.bgSection}>
594
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(z)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image></mj-column>
595
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(k)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image></mj-column>
596
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(O)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image></mj-column>
597
+ </mj-section>
598
+ <mj-section padding="0px 24px 8px 24px" border-radius="0 0 ${t.radii.s} ${t.radii.s}" ${t.attrs.bgSection}>
599
+ <mj-column>
600
+ <mj-spacer/>
601
+ </mj-column>
602
+ </mj-section>
603
+ </mj-wrapper>`},presetEmailSplitImageGallery:{label:"Split Image Gallery",category:n.gallery,getContent:({getImageUrl:o})=>`<mj-wrapper>
604
+ <mj-section padding="24px" border-radius="${t.radii.s} ${t.radii.s} 0 0" ${t.attrs.bgSection}>
605
+ <mj-column width="66.66%" ${t.attrs.bgTransparent}>
606
+ <mj-image src="${o(v)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image>
607
+ </mj-column>
608
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}>
609
+ <mj-image src="${o(z)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image>
610
+ <mj-image src="${o(k)}" alt="Image" padding="5px" border-radius="${t.radii.s}"></mj-image>
611
+ </mj-column>
612
+ </mj-section>
613
+ <mj-section padding="0 24px 8px 24px" border-radius="0 0 ${t.radii.s} ${t.radii.s}" ${t.attrs.bgSection}>
614
+ <mj-column ${t.attrs.bgTransparent}>
615
+ <mj-text padding="0 0 12px 0" line-height="30px" align="center" font-size="16px" color="${t.colors.text.body}">
616
+ Use this section to set the tone, explain what changed, or frame the key message into product details and supporting content.
617
+ </mj-text>
618
+ <mj-button padding="12px 12px 24px" inner-padding="12px 48px" border-radius="${t.radii.l}" ${t.buttons.primary}>
619
+ VIEW MORE
620
+ </mj-button>
621
+ </mj-column>
622
+ </mj-section>
623
+ </mj-wrapper>`},presetEmailMasonryGallery:{label:"Masonry Gallery",category:n.gallery,getContent:({getImageUrl:o})=>`<mj-wrapper>
624
+ <mj-section padding="16px 24px" border-radius="${t.radii.s} ${t.radii.s} 0 0" ${t.attrs.bgSection}>
625
+ <mj-column>
626
+ <mj-text color="${t.colors.primary}" align="center" font-size="24px" line-height="35px" letter-spacing="1px">
627
+ Masonry Gallery
628
+ </mj-text>
629
+ <mj-text padding="0 0 12px 0" line-height="30px" align="center" font-size="16px" color="${t.colors.text.body}">
630
+ Use this section to set the tone, explain what changed, or frame the key message into product details and supporting content.
631
+ </mj-text>
632
+ </mj-column>
633
+ </mj-section>
634
+ <mj-section padding="0" ${t.attrs.bgSection}>
635
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}>
636
+ <mj-image src="${o(v)}" alt="Image" padding="0"></mj-image>
637
+ <mj-image src="${o(L)}" alt="Image" padding="0"></mj-image>
638
+ </mj-column>
639
+ <mj-column width="66.66%" ${t.attrs.bgTransparent}>
640
+ <mj-image src="${o(R)}" alt="Image" padding="0"></mj-image>
641
+ </mj-column>
642
+ </mj-section>
643
+ <mj-section padding="0" ${t.attrs.bgSection}>
644
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(z)}" alt="Image" padding="0"></mj-image></mj-column>
645
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(k)}" alt="Image" padding="0"></mj-image></mj-column>
646
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}><mj-image src="${o(O)}" alt="Image" padding="0"></mj-image></mj-column>
647
+ </mj-section>
648
+ <mj-section padding="0 24px 8px" border-radius="0 0 ${t.radii.s} ${t.radii.s}" ${t.attrs.bgSection}>
649
+ <mj-column ${t.attrs.bgTransparent}>
650
+ <mj-button padding="36px 24px 12px" inner-padding="12px 48px" border-radius="${t.radii.l}" ${t.buttons.primary}>
651
+ VIEW MORE
652
+ </mj-button>
653
+ </mj-column>
654
+ </mj-section>
655
+ </mj-wrapper>`},presetEmailCtaPromoBanner:{label:"Promo Banner",category:n.cta,getContent:()=>`<mj-wrapper>
656
+ <mj-section padding="32px 24px" background-color="${t.colors.secondary}" border-radius="${t.radii.m}">
657
+ <mj-column vertical-align="middle" width="65%" ${t.attrs.bgTransparent}>
658
+ <mj-text padding="0 0 8px 0" color="#ffffff" font-size="26px" font-weight="700" line-height="34px">
659
+ Save your strongest CTA
660
+ </mj-text>
661
+ <mj-text padding="0px 0px 12px 0px" color="#ffffffde" font-size="15px" line-height="23px">
662
+ Great for a launch push, limited-time campaign, or any section.
663
+ </mj-text>
664
+ </mj-column>
665
+ <mj-column vertical-align="middle" width="35%" ${t.attrs.bgTransparent}>
666
+ <mj-button align="right" background-color="#ffffff" color="${t.colors.secondary}" border-radius="${t.radii.l}" font-weight="700" inner-padding="14px 38px" padding="0px">
667
+ CLAIM OFFER
668
+ </mj-button>
669
+ </mj-column>
670
+ </mj-section>
671
+ </mj-wrapper>`},presetEmailCtaOfferBanner:{label:"Offer Banner",category:n.cta,getContent:({getImageUrl:o})=>`<mj-wrapper>
672
+ <mj-section padding="64px 32px" background-color="${t.colors.primary}" border-radius="${t.radii.m}"
673
+ background-url="${o(P)}" background-size="cover" background-repeat="no-repeat" border="2px solid #e59fc9"
674
+ >
675
+ <mj-column ${t.attrs.bgTransparent}>
676
+ <mj-text padding="0px 0px 8px 0px" font-weight="700" letter-spacing="1px" align="center">
677
+ <b style="background-color:${t.colors.primary};color:white;padding:6px 12px;border-radius:${t.radii.m};font-size:8px;">
678
+ LIMITED-TIME CODE
679
+ </b>
680
+ </mj-text>
681
+ <mj-text padding="12px 0" color="#8c3469" font-size="20px" line-height="26px" align="center">
682
+ Use <span style="font-weight:700;">WELCOME20</span> to unlock a launch offer before Friday.
683
+ </mj-text>
684
+ <mj-button background-color="#ffffff" color="${t.colors.primary}" border-radius="${t.radii.l}" inner-padding="12px 38px" padding="20px 0 0 0" font-weight="700" font-size="18px">
685
+ REDEEM NOW
686
+ </mj-button>
687
+ </mj-column>
688
+ </mj-section>
689
+ </mj-wrapper>`},presetEmailThreeTeamProfiles:{label:"Three Team Profiles",category:n.people,getContent:({getImageUrl:o})=>`<mj-wrapper>
690
+ <mj-section padding="24px 32px 12px" border-radius="${t.radii.m} ${t.radii.m} 0 0" ${t.attrs.bgSection}>
691
+ <mj-column ${t.attrs.bgTransparent}>
692
+ <mj-text padding="12px 0 0 " color="#0f172977" font-size="22px">Event speakers</mj-text>
693
+ <mj-text padding="12px 0 10px 0" font-size="42px" line-height="50px" font-weight="700" color="${t.colors.text.heading}">
694
+ Meet our speakers
695
+ </mj-text>
696
+ <mj-divider border-width="1px" border-color="#0f172933" padding="12px 0"></mj-divider>
697
+ </mj-column>
698
+ </mj-section>
699
+ <mj-section padding="20px 12px 40px" border-radius="0 0 ${t.radii.m} ${t.radii.m}" ${t.attrs.bgSection}>
700
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}>
701
+ <mj-image src="${o(W)}" border-radius="50%" alt="Speaker"></mj-image>
702
+ <mj-text align="center" font-weight="700" font-size="16px" padding-top="10px" color="${t.colors.text.heading}">James Doe</mj-text>
703
+ <mj-text align="center" font-size="12px" color="${t.colors.text.body}">Advertiser</mj-text>
704
+ </mj-column>
705
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}>
706
+ <mj-image src="${o(I)}" border-radius="50%" alt="Speaker"></mj-image>
707
+ <mj-text align="center" font-weight="700" font-size="16px" padding-top="10px" color="${t.colors.text.heading}">Mia Dolce</mj-text>
708
+ <mj-text align="center" font-size="12px" color="${t.colors.text.body}">UX Designer</mj-text>
709
+ </mj-column>
710
+ <mj-column width="33.33%" ${t.attrs.bgTransparent}>
711
+ <mj-image src="${o(ft)}" border-radius="50%" alt="Speaker"></mj-image>
712
+ <mj-text align="center" font-weight="700" font-size="16px" padding-top="10px" color="${t.colors.text.heading}">Sophia Evans</mj-text>
713
+ <mj-text align="center" font-size="12px" color="${t.colors.text.body}">Designer</mj-text>
714
+ </mj-column>
715
+ </mj-section>
716
+ </mj-wrapper>`},presetEmailTeamAlternatingTeamCards:{label:"Alternating Team Cards",category:n.people,getContent:({getImageUrl:o})=>`<mj-wrapper gap="20px" padding="20px 20px 40px" ${t.attrs.bgSection}>
717
+ <mj-section padding="0" ${t.attrs.bgTransparent}>
718
+ <mj-column ${t.attrs.bgTransparent}>
719
+ <mj-text align="center" font-size="26px" line-height="36px" font-weight="600" letter-spacing="1px">
720
+ Our experts
721
+ </mj-text>
722
+ </mj-column>
723
+ </mj-section>
724
+ <mj-section padding="0" background-color="${t.colors.text.heading}">
725
+ <mj-column width="40%" padding="0">
726
+ <mj-image src="${o(W)}" alt="Expert" padding="0"></mj-image>
727
+ </mj-column>
728
+ <mj-column vertical-align="middle" width="60%" padding="20px" ${t.attrs.bgTransparent}>
729
+ <mj-text padding="0 0 5px 0" align="left" font-size="18px" line-height="28px" font-weight="600" letter-spacing="1px" color="#ffffff">
730
+ James Mitchell
731
+ </mj-text>
732
+ <mj-text padding="0 0 5px 0" align="left" font-size="12px" line-height="22px" font-weight="600" letter-spacing="1px" color="#ffffff">
733
+ Founder &amp; Lead Designer
734
+ </mj-text>
735
+ <mj-text padding="0 0 5px 0" align="left" font-size="14px" line-height="24px" color="#ffffffad">
736
+ Pair portrait photography with a short bio and social row for studio intros, speaker features, or team highlights.
737
+ </mj-text>
738
+ <mj-social align="left" icon-size="25px" mode="horizontal" padding="10px 0 0 0">
739
+ <mj-social-element name="facebook" ${t.attrs.bgTransparent}></mj-social-element>
740
+ <mj-social-element name="linkedin" ${t.attrs.bgTransparent}></mj-social-element>
741
+ <mj-social-element name="instagram" ${t.attrs.bgTransparent}></mj-social-element>
742
+ </mj-social>
743
+ </mj-column>
744
+ </mj-section>
745
+ <mj-section padding="0" background-color="${t.colors.text.heading}">
746
+ <mj-column width="60%" padding="20px" ${t.attrs.bgTransparent}>
747
+ <mj-text padding="0 0 5px 0" align="left" font-size="18px" line-height="28px" font-weight="600" letter-spacing="1px" color="#ffffff">
748
+ Sophia White
749
+ </mj-text>
750
+ <mj-text padding="0 0 5px 0" align="left" font-size="12px" line-height="22px" font-weight="600" letter-spacing="1px" color="#ffffff">
751
+ Senior Interior Architect
752
+ </mj-text>
753
+ <mj-text padding="0 0 5px 0" align="left" font-size="14px" line-height="24px" color="#ffffffad">
754
+ The alternating second row keeps the layout dynamic while still using the same reusable content pattern.
755
+ </mj-text>
756
+ <mj-social align="left" icon-size="25px" mode="horizontal" padding="10px 0 0 0">
757
+ <mj-social-element name="facebook" ${t.attrs.bgTransparent}></mj-social-element>
758
+ <mj-social-element name="linkedin" ${t.attrs.bgTransparent}></mj-social-element>
759
+ <mj-social-element name="instagram" ${t.attrs.bgTransparent}></mj-social-element>
760
+ </mj-social>
761
+ </mj-column>
762
+ <mj-column width="40%" padding="0">
763
+ <mj-image src="${o(I)}" alt="Expert" padding="0"></mj-image>
764
+ </mj-column>
765
+ </mj-section>
766
+ </mj-wrapper>`},presetEmailTestimonialsTwoRows:{label:"Testimonials Two Rows",category:n.people,getContent:({getImageUrl:o})=>`<mj-wrapper>
767
+ <mj-section padding="20px 0" ${t.attrs.bgSection}>
768
+ <mj-column ${t.attrs.bgTransparent}>
769
+ <mj-text align="center" font-size="26px" line-height="36px" font-weight="600" letter-spacing="1px">
770
+ Client testimonials
771
+ </mj-text>
772
+ </mj-column>
773
+ </mj-section>
774
+ <mj-section padding="20px 24px 0px 24px" ${t.attrs.bgSection}>
775
+ <mj-column background-color="#4755690f" border-radius="${t.radii.s}">
776
+ <mj-text padding="25px" font-size="16px" line-height="24px" font-style="italic" letter-spacing="1px" color="${t.colors.text.body}" align="left">
777
+ “This layout is perfect for highlighting short testimonials without taking over the whole campaign.”
778
+ </mj-text>
779
+ </mj-column>
780
+ </mj-section>
781
+ <mj-section padding="0" ${t.attrs.bgSection}>
782
+ <mj-column vertical-align="middle" width="20%" ${t.attrs.bgTransparent}>
783
+ <mj-image src="${o(ut)}" alt="Customer" border-radius="50%"></mj-image>
784
+ </mj-column>
785
+ <mj-column vertical-align="middle" ${t.attrs.bgTransparent} width="80%" padding="10px 10px 10px 15px">
786
+ <mj-text padding="0" align="left" font-size="16px" line-height="26px" font-weight="600" letter-spacing="1px" color="${t.colors.text.heading}">Marcus Rivera</mj-text>
787
+ <mj-text padding="0" align="left" font-size="12px" line-height="22px" font-weight="600" letter-spacing="1px" color="${t.colors.text.body}">Architect</mj-text>
788
+ </mj-column>
789
+ </mj-section>
790
+ <mj-section padding="0" ${t.attrs.bgSection}>
791
+ <mj-column ${t.attrs.bgTransparent}>
792
+ <mj-divider border-width="1px" border-style="solid" border-color="#4755692e"></mj-divider>
793
+ </mj-column>
794
+ </mj-section>
795
+ <mj-section padding="20px 24px 0px 24px" ${t.attrs.bgSection}>
796
+ <mj-column background-color="#4755690f" border-radius="${t.radii.s}">
797
+ <mj-text padding="25px" font-size="16px" line-height="24px" font-style="italic" letter-spacing="1px" color="${t.colors.text.body}" align="right">
798
+ “Use it for customer proof, partner quotes, or event feedback where symmetry matters.”
799
+ </mj-text>
800
+ </mj-column>
801
+ </mj-section>
802
+ <mj-section padding="0 0 30px" ${t.attrs.bgSection}>
803
+ <mj-column vertical-align="middle" ${t.attrs.bgTransparent} width="80%" padding="10px 15px 10px 10px">
804
+ <mj-text padding="0" align="right" font-size="16px" line-height="26px" font-weight="600" letter-spacing="1px" color="${t.colors.text.heading}">Elena Kowalski</mj-text>
805
+ <mj-text padding="0" align="right" font-size="12px" line-height="22px" font-weight="600" letter-spacing="1px" color="${t.colors.text.body}">Project Manager</mj-text>
806
+ </mj-column>
807
+ <mj-column vertical-align="middle" width="20%" ${t.attrs.bgTransparent}>
808
+ <mj-image src="${o(jt)}" alt="Customer" border-radius="50%"></mj-image>
809
+ </mj-column>
810
+ </mj-section>
811
+ </mj-wrapper>`},presetEmailFooterSocial:{label:"Social Footer",category:n.footer,getContent:()=>`<mj-section background-color="${t.colors.text.heading}" padding="40px 24px">
812
+ <mj-column ${t.attrs.bgTransparent}>
813
+ <mj-text align="center" color="#ffffff" font-size="18px" font-weight="700" padding="0 0 12px">Stay in the loop</mj-text>
814
+ <mj-social font-size="12px" icon-size="20px" mode="horizontal" padding="0" inner-padding="7px">
815
+ <mj-social-element name="facebook" ${t.attrs.bgTransparent}></mj-social-element>
816
+ <mj-social-element name="linkedin" ${t.attrs.bgTransparent}></mj-social-element>
817
+ <mj-social-element name="instagram" ${t.attrs.bgTransparent}></mj-social-element>
818
+ </mj-social>
819
+ <mj-text padding="12px 0 0 0" align="center" color="#ffffff88" font-size="12px" line-height="18px">
820
+ 123 Example Street, Suite 400, <br/>
821
+ San Francisco, CA
822
+ </mj-text>
823
+ <mj-text padding="12px 0 0" align="center" color="#47556994" font-size="12px" line-height="20px">
824
+ <a href="#" style="color:${t.colors.secondary};text-decoration:none;font-weight:700;">Unsubscribe</a>
825
+ </mj-text>
826
+ </mj-column>
827
+ </mj-section>`},presetEmailTwoColumnFooter:{label:"Two Column Footer",category:n.footer,getContent:()=>`<mj-wrapper padding="0">
828
+ <mj-section padding="32px 24px 0px 24px" ${t.attrs.bgSection}>
829
+ <mj-column>
830
+ <mj-text align="left" font-size="18px" font-weight="700" color="${t.colors.text.heading}" padding="10px 0px 10px 0px">Follow Us
831
+ </mj-text>
832
+ <mj-text padding="0 0 20px" font-size="12px" line-height="22px" color="${t.colors.text.body}">Follow us on social for more updates</mj-text>
833
+ <mj-social align="left" font-size="12px" icon-size="18px" mode="horizontal" padding="0" inner-padding="5px">
834
+ <mj-social-element name="facebook" background-color="${t.colors.text.heading}"></mj-social-element>
835
+ <mj-social-element name="linkedin" background-color="${t.colors.text.heading}"></mj-social-element>
836
+ <mj-social-element name="instagram" background-color="${t.colors.text.heading}"></mj-social-element>
837
+ </mj-social>
838
+ </mj-column>
839
+ <mj-column>
840
+ <mj-text padding="10px 0px" align="left" font-size="18px" font-weight="700" color="${t.colors.text.heading}">Contact Us</mj-text>
841
+ <mj-text padding="0 0 20px" font-size="12px" line-height="22px" color="${t.colors.text.body}">
842
+ 245 Design Avenue, Suite 100<br/>
843
+ San Francisco, CA 94102<br/><a href="tel:+1-555-321-9870"
844
+ style="color:${t.colors.secondary};font-weight:700;">+1-555-321-9870</a></mj-text>
845
+ </mj-column>
846
+ </mj-section>
847
+ <mj-section ${t.attrs.bgSection} padding="12px 24px 24px">
848
+ <mj-column width="100%">
849
+ <mj-divider border-color="#e2e8f0" border-width="1px" padding="0 0 16px 0"></mj-divider>
850
+ <mj-text padding="0" align="center" color="#47556994" font-size="12px" line-height="20px">You are receiving this
851
+ email because you subscribed from our site. <a href="#" style="color:${t.colors.secondary};font-weight:700;text-decoration:none;">Unsubscribe</a></mj-text>
852
+ </mj-column>
853
+ </mj-section>
854
+ </mj-wrapper>`},presetEmailThreeColumnFooter:{label:"Three Column Footer",category:n.footer,getContent:()=>`<mj-section padding="30px 24px" background-color="${t.colors.text.heading}" full-width="full-width">
855
+ <mj-column width="30%" padding="0 0 20px" ${t.attrs.bgTransparent}>
856
+ <mj-text padding="0 0 15px" font-size="14px" font-weight="700" line-height="24px" color="#ffffff">About us</mj-text>
857
+ <mj-text padding="0" font-size="12px" color="#ffffff99" line-height="22px">
858
+ <a style="color:#ffffff99;">About us</a><br/>
859
+ <a style="color:#ffffff99;">Contact us</a><br/>
860
+ <a style="color:#ffffff99;">Team</a><br/>
861
+ <a style="color:#ffffff99;">Blog</a>
862
+ </mj-text>
863
+ </mj-column>
864
+ <mj-column width="30%" padding="0 0 20px" ${t.attrs.bgTransparent}>
865
+ <mj-text padding="0 0 15px" font-size="14px" font-weight="700" line-height="24px" color="#ffffff">Links
866
+ </mj-text>
867
+ <mj-text padding="0" font-size="12px" color="#ffffff99" line-height="22px">
868
+ <a style="color:#ffffff99;">Shop</a><br/>
869
+ <a style="color:#ffffff99;">Terms</a><br/>
870
+ <a style="color:#ffffff99;">Privacy</a><br/>
871
+ <a style="color:#ffffff99;">Reviews</a>
872
+ </mj-text>
873
+ </mj-column>
874
+ <mj-column width="40%" ${t.attrs.bgTransparent}>
875
+ <mj-text padding="0 0 15px" font-size="14px" font-weight="700" line-height="24px" color="#ffffff">Our location</mj-text>
876
+ <mj-text padding="0 0 20px" font-size="12px" line-height="22px" color="#ffffff">
877
+ 245 Design Avenue, Suite 100<br/>
878
+ San Francisco, CA 94102<br/>
879
+ <a href="tel:+1-555-321-9870" style="color:#ffffff99;">+1-555-321-9870</a>
880
+ </mj-text>
881
+ <mj-text padding="0" font-size="14px" font-weight="700" line-height="24px" color="#ffffff">Socials</mj-text>
882
+ <mj-social font-size="12px" icon-size="24px" mode="horizontal" padding="0" align="left">
883
+ <mj-social-element name="facebook" ${t.attrs.bgTransparent}></mj-social-element>
884
+ <mj-social-element name="linkedin" ${t.attrs.bgTransparent}></mj-social-element>
885
+ <mj-social-element name="instagram" ${t.attrs.bgTransparent}></mj-social-element>
886
+ <mj-social-element name="youtube" ${t.attrs.bgTransparent}></mj-social-element>
887
+ </mj-social>
888
+ </mj-column>
889
+ </mj-section>`}}},bt=({library:e,options:i})=>Object.entries(ht(i)).map(([o,r])=>{const a=at({id:o,label:r.label,category:r.category,library:e}),s=r.getContent({getImageUrl:d=>{var l;return((l=i.getImageUrl)==null?void 0:l.call(i,{block:a}))||d}});return{...a,content:s}}),wt=(e={})=>{const i=nt(e),o=$(e.defaultLibrary)?e.defaultLibrary({...i})||void 0:i,r=bt({library:o,options:e}),a=e.categories?new Set(e.categories):null,s=new Map;return r.flatMap(d=>{const l=typeof d.category=="string"?void 0:d.category;if(a&&l&&!a.has(l.id))return[];let c=l;if(l&&$(e.category)){if(!s.has(l.id)){const w=e.category({...l});s.set(l.id,w===!1?!1:w||l)}const p=s.get(l.id);if(p===!1)return[];c=p||l}const m=c!==d.category?{...d,category:c}:d;if(!$(e.block))return[m];const g=e.block({...m});return g?[g||m]:[]})};function $t(e,i){const{Blocks:o}=e,r=wt(i);return r.forEach(a=>a.id&&o.add(a.id,a)),{blocks:r}}return X(function(e,i={}){var d,l;const o={...i};if(!D(e))return;const{blocks:r}=$t(e,o),a=o.selectLibrary?(l=(d=r.find(c=>c.library))==null?void 0:d.library)==null?void 0:l.id:void 0,s=[];return a&&e.runCommand(h.setBlocksPanel,{selectedLibrary:a}),o.withGlobalStyles&&s.push((()=>{const c=`${e.DataSources.events.pathSource}:${f.globalStyles}`,m=()=>e.runCommand(h.setBlocksPanel,{previewCache:new Map});return e.on(c,m),()=>e.off(c,m)})()),Z({editor:e,licenseKey:o.licenseKey,plan:ot,pluginName:E,cleanup:et}),({cleanup:c})=>{c(),s.forEach(m=>m())}},E)});