@useinsider/guido 1.0.0-beta.f7c239e → 1.0.1-beta.0168eae

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 (325) hide show
  1. package/README.md +422 -21
  2. package/dist/@types/generic.d.ts +39 -23
  3. package/dist/@types/save-as-template.d.ts +29 -0
  4. package/dist/App.vue.d.ts +1 -1
  5. package/dist/_virtual/AddCustomFont.js +4 -0
  6. package/dist/_virtual/AiAssistantValueType.js +4 -0
  7. package/dist/_virtual/BackgroundColorBuiltInControl.js +4 -0
  8. package/dist/_virtual/BackgroundImageBuiltInControl.js +4 -0
  9. package/dist/_virtual/Block.js +4 -0
  10. package/dist/_virtual/BlockAttributes.js +4 -0
  11. package/dist/_virtual/BlockCompositionType.js +4 -0
  12. package/dist/_virtual/BlockPaddingsBuiltInControl.js +4 -0
  13. package/dist/_virtual/BlockRenderer.js +4 -0
  14. package/dist/_virtual/BlockType.js +4 -0
  15. package/dist/_virtual/BlocksPanel.js +4 -0
  16. package/dist/_virtual/BuiltInControl.js +4 -0
  17. package/dist/_virtual/BuiltInControlTypes.js +4 -0
  18. package/dist/_virtual/ButtonBorderBuiltInControl.js +4 -0
  19. package/dist/_virtual/ButtonColorBuiltInControl.js +4 -0
  20. package/dist/_virtual/ButtonFontColorBuiltInControl.js +4 -0
  21. package/dist/_virtual/ButtonInternalIndentsBuiltInControl.js +4 -0
  22. package/dist/_virtual/ButtonTextBuiltInControl.js +4 -0
  23. package/dist/_virtual/ContextAction.js +4 -0
  24. package/dist/_virtual/ContextActionType.js +4 -0
  25. package/dist/_virtual/Control.js +4 -0
  26. package/dist/_virtual/EditorStatePropertyType.js +4 -0
  27. package/dist/_virtual/Extension.js +4 -0
  28. package/dist/_virtual/ExtensionBuilder.js +4 -0
  29. package/dist/_virtual/FontFamilyBuiltInControl.js +4 -0
  30. package/dist/_virtual/LinkColorBuiltInControl.js +4 -0
  31. package/dist/_virtual/ModificationDescription.js +4 -0
  32. package/dist/_virtual/PanelPosition.js +4 -0
  33. package/dist/_virtual/PreviewDeviceMode.js +4 -0
  34. package/dist/_virtual/SettingsPanelRegistry.js +4 -0
  35. package/dist/_virtual/SettingsPanelTab.js +4 -0
  36. package/dist/_virtual/SettingsTab.js +4 -0
  37. package/dist/_virtual/StructureBorderBuiltInControl.js +4 -0
  38. package/dist/_virtual/StructurePaddingsBuiltInControl.js +4 -0
  39. package/dist/_virtual/TextColorBuiltInControl.js +4 -0
  40. package/dist/_virtual/TextLineSpacingBuiltInControl.js +4 -0
  41. package/dist/_virtual/TextSizeBuiltInControl.js +4 -0
  42. package/dist/_virtual/TextStyleBuiltInControl.js +4 -0
  43. package/dist/_virtual/UIElement.js +4 -0
  44. package/dist/_virtual/UIElementTagRegistry.js +4 -0
  45. package/dist/_virtual/UIElementType.js +4 -0
  46. package/dist/_virtual/UIElementsAttributes.js +4 -0
  47. package/dist/_virtual/index.js +5 -0
  48. package/dist/_virtual/index2.js +4 -0
  49. package/dist/components/Guido.vue.d.ts +21 -4
  50. package/dist/components/Guido.vue.js +12 -12
  51. package/dist/components/Guido.vue2.js +89 -25
  52. package/dist/components/organisms/base/Toaster.vue.d.ts +2 -0
  53. package/dist/components/organisms/base/Toaster.vue.js +17 -0
  54. package/dist/components/organisms/base/Toaster.vue2.js +15 -0
  55. package/dist/components/organisms/email-preview/PreviewContainer.vue.d.ts +2 -0
  56. package/dist/components/organisms/email-preview/PreviewContainer.vue.js +19 -0
  57. package/dist/components/organisms/email-preview/PreviewContainer.vue2.js +19 -0
  58. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.d.ts +4 -0
  59. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +22 -0
  60. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +30 -0
  61. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.d.ts +2 -0
  62. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +19 -0
  63. package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +29 -0
  64. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.d.ts +2 -0
  65. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +22 -0
  66. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +31 -0
  67. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.d.ts +2 -0
  68. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +17 -0
  69. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +20 -0
  70. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.d.ts +2 -0
  71. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +18 -0
  72. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +25 -0
  73. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.d.ts +4 -0
  74. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +19 -0
  75. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue2.js +23 -0
  76. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.d.ts +4 -0
  77. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +20 -0
  78. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue2.js +21 -0
  79. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.d.ts +2 -0
  80. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +17 -0
  81. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +22 -0
  82. package/dist/components/organisms/header/LeftSlot.vue.d.ts +1 -1
  83. package/dist/components/organisms/header/LeftSlot.vue.js +9 -9
  84. package/dist/components/organisms/header/LeftSlot.vue2.js +10 -6
  85. package/dist/components/organisms/header/MiddleSlot.vue.js +10 -10
  86. package/dist/components/organisms/header/MiddleSlot.vue2.js +16 -15
  87. package/dist/components/organisms/header/RightSlot.vue.js +12 -14
  88. package/dist/components/organisms/header/RightSlot.vue2.js +30 -17
  89. package/dist/components/organisms/header/ViewOptions.vue.d.ts +1 -1
  90. package/dist/components/organisms/header/ViewOptions.vue.js +8 -8
  91. package/dist/components/organisms/header/ViewOptions.vue2.js +30 -10
  92. package/dist/components/organisms/header/version-history/RestoreButton.vue.d.ts +2 -0
  93. package/dist/components/organisms/header/version-history/RestoreButton.vue.js +19 -0
  94. package/dist/components/organisms/header/version-history/RestoreButton.vue2.js +14 -0
  95. package/dist/components/organisms/header/version-history/VersionHistory.vue.d.ts +13 -1
  96. package/dist/components/organisms/header/version-history/VersionHistory.vue.js +7 -7
  97. package/dist/components/organisms/header/version-history/VersionHistory.vue2.js +13 -10
  98. package/dist/components/organisms/header/version-history/VersionHistoryItem.vue.d.ts +1 -1
  99. package/dist/components/organisms/header/version-history/VersionHistoryItem.vue.js +1 -1
  100. package/dist/components/organisms/header/version-history/ViewOptions.vue.d.ts +1 -1
  101. package/dist/components/organisms/header/version-history/ViewOptions.vue.js +3 -3
  102. package/dist/components/organisms/header/version-history/ViewOptions.vue2.js +34 -16
  103. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue.d.ts +2 -0
  104. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue.js +20 -0
  105. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +63 -0
  106. package/dist/components/wrappers/WpDrawer.vue.d.ts +63 -0
  107. package/dist/components/wrappers/WpDrawer.vue.js +25 -0
  108. package/dist/components/wrappers/WpDrawer.vue2.js +23 -0
  109. package/dist/components/wrappers/WpModal.vue.d.ts +65 -0
  110. package/dist/components/wrappers/WpModal.vue.js +27 -0
  111. package/dist/components/wrappers/WpModal.vue2.js +22 -0
  112. package/dist/composables/useActionsApi.d.ts +5 -1
  113. package/dist/composables/useActionsApi.js +74 -31
  114. package/dist/composables/useApiExample.d.ts +6 -4
  115. package/dist/composables/useCodeEditorApi.d.ts +4 -0
  116. package/dist/composables/useCodeEditorApi.js +11 -0
  117. package/dist/composables/useConfig.d.ts +4 -0
  118. package/dist/composables/useConfig.js +7 -0
  119. package/dist/composables/useCustomInterfaceAppearance.js +45 -9
  120. package/dist/composables/useDebounce.d.ts +4 -0
  121. package/dist/composables/useDebounce.js +12 -0
  122. package/dist/composables/useExport.d.ts +1 -1
  123. package/dist/composables/useExport.js +38 -22
  124. package/dist/composables/useGuidoActions.d.ts +46 -0
  125. package/dist/composables/useGuidoActions.js +37 -0
  126. package/dist/composables/useHtmlCompiler.d.ts +4 -0
  127. package/dist/composables/useHtmlCompiler.js +17 -0
  128. package/dist/composables/useHttp.d.ts +19 -1
  129. package/dist/composables/useHttp.js +23 -21
  130. package/dist/composables/usePartner.d.ts +1 -1
  131. package/dist/composables/usePartner.js +9 -14
  132. package/dist/composables/usePreviewMode.d.ts +5 -0
  133. package/dist/composables/usePreviewMode.js +31 -0
  134. package/dist/composables/useProvideInject.d.ts +14 -0
  135. package/dist/composables/useProvideInject.js +17 -0
  136. package/dist/composables/useResponsivePreview.d.ts +5 -0
  137. package/dist/composables/useResponsivePreview.js +86 -0
  138. package/dist/composables/useStripo.js +66 -40
  139. package/dist/composables/useToaster.d.ts +1 -8
  140. package/dist/composables/useToaster.js +24 -30
  141. package/dist/composables/useTranslations.d.ts +4 -1
  142. package/dist/composables/useTranslations.js +3 -2
  143. package/dist/composables/useValidation.d.ts +56 -0
  144. package/dist/composables/useValidation.js +19 -0
  145. package/dist/composables/useVersionHistoryApi.js +11 -10
  146. package/dist/composables/validators/saveAsTemplate.d.ts +31 -0
  147. package/dist/composables/validators/saveAsTemplate.js +24 -0
  148. package/dist/config/compiler/htmlCompilerRules.d.ts +2 -0
  149. package/dist/config/compiler/htmlCompilerRules.js +145 -0
  150. package/dist/config/compiler/outlookCompilerRules.d.ts +0 -0
  151. package/dist/enums/defaults.d.ts +4 -1
  152. package/dist/enums/defaults.js +22 -6
  153. package/dist/enums/displayConditions.d.ts +2 -0
  154. package/dist/enums/displayConditions.js +80 -0
  155. package/dist/enums/preview.d.ts +13 -0
  156. package/dist/enums/preview.js +23 -0
  157. package/dist/enums/toaster.d.ts +5 -0
  158. package/dist/enums/toaster.js +4 -0
  159. package/dist/extensions/DynamicContent/dynamic-content-modal.d.ts +6 -0
  160. package/dist/extensions/DynamicContent/dynamic-content-modal.js +27 -0
  161. package/dist/extensions/DynamicContent/dynamic-content.css.js +24 -0
  162. package/dist/extensions/DynamicContent/dynamic-content.d.ts +16 -0
  163. package/dist/extensions/DynamicContent/dynamic-content.js +61 -0
  164. package/dist/extensions/DynamicContent/extension.d.ts +2 -0
  165. package/dist/extensions/DynamicContent/extension.js +11 -0
  166. package/dist/guido.css +1 -1
  167. package/dist/mock/api/default-template.d.ts +2 -0
  168. package/dist/mock/api/template-library.d.ts +2 -0
  169. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/Extension.js +51 -0
  170. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ExtensionBuilder.js +52 -0
  171. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/Block.js +41 -0
  172. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/BlockRenderer.js +18 -0
  173. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/BlocksPanel.js +32 -0
  174. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/ContextAction.js +18 -0
  175. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AddCustomFont.js +8 -0
  176. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js +13 -0
  177. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockAttributes.js +34 -0
  178. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js +13 -0
  179. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js +13 -0
  180. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js +104 -0
  181. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js +13 -0
  182. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js +13 -0
  183. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js +13 -0
  184. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js +13 -0
  185. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js +13 -0
  186. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js +13 -0
  187. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementsAttributes.js +45 -0
  188. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BackgroundColorBuiltInControl.js +43 -0
  189. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BackgroundImageBuiltInControl.js +46 -0
  190. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BlockPaddingsBuiltInControl.js +44 -0
  191. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BuiltInControl.js +22 -0
  192. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonBorderBuiltInControl.js +46 -0
  193. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonColorBuiltInControl.js +46 -0
  194. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonFontColorBuiltInControl.js +45 -0
  195. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonInternalIndentsBuiltInControl.js +45 -0
  196. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonTextBuiltInControl.js +45 -0
  197. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/Control.js +20 -0
  198. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/FontFamilyBuiltInControl.js +43 -0
  199. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/LinkColorBuiltInControl.js +45 -0
  200. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelRegistry.js +18 -0
  201. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelTab.js +32 -0
  202. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/StructureBorderBuiltInControl.js +46 -0
  203. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/StructurePaddingsBuiltInControl.js +44 -0
  204. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextColorBuiltInControl.js +43 -0
  205. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextLineSpacingBuiltInControl.js +43 -0
  206. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextSizeBuiltInControl.js +45 -0
  207. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextStyleBuiltInControl.js +43 -0
  208. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/index.js +266 -0
  209. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/modifications/ModificationDescription.js +26 -0
  210. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElement.js +22 -0
  211. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElementTagRegistry.js +18 -0
  212. package/dist/node_modules/@vueuse/shared/index.js +45 -0
  213. package/dist/node_modules/lodash-es/_Stack.js +18 -0
  214. package/dist/node_modules/lodash-es/_Uint8Array.js +5 -0
  215. package/dist/node_modules/lodash-es/_apply.js +16 -0
  216. package/dist/node_modules/lodash-es/_arrayLikeKeys.js +19 -0
  217. package/dist/node_modules/lodash-es/_assignMergeValue.js +8 -0
  218. package/dist/node_modules/lodash-es/_assignValue.js +10 -0
  219. package/dist/node_modules/lodash-es/_baseAssignValue.js +12 -0
  220. package/dist/node_modules/lodash-es/_baseCreate.js +17 -0
  221. package/dist/node_modules/lodash-es/_baseFor.js +5 -0
  222. package/dist/node_modules/lodash-es/_baseIsArguments.js +9 -0
  223. package/dist/node_modules/lodash-es/_baseIsTypedArray.js +12 -0
  224. package/dist/node_modules/lodash-es/_baseKeysIn.js +15 -0
  225. package/dist/node_modules/lodash-es/_baseMerge.js +20 -0
  226. package/dist/node_modules/lodash-es/_baseMergeDeep.js +31 -0
  227. package/dist/node_modules/lodash-es/_baseRest.js +9 -0
  228. package/dist/node_modules/lodash-es/_baseSetToString.js +14 -0
  229. package/dist/node_modules/lodash-es/_baseTimes.js +8 -0
  230. package/dist/node_modules/lodash-es/_baseUnary.js +8 -0
  231. package/dist/node_modules/lodash-es/_cloneArrayBuffer.js +8 -0
  232. package/dist/node_modules/lodash-es/_cloneBuffer.js +9 -0
  233. package/dist/node_modules/lodash-es/_cloneTypedArray.js +8 -0
  234. package/dist/node_modules/lodash-es/_copyArray.js +9 -0
  235. package/dist/node_modules/lodash-es/_copyObject.js +14 -0
  236. package/dist/node_modules/lodash-es/_createAssigner.js +15 -0
  237. package/dist/node_modules/lodash-es/_createBaseFor.js +13 -0
  238. package/dist/node_modules/lodash-es/_defineProperty.js +11 -0
  239. package/dist/node_modules/lodash-es/_getPrototype.js +5 -0
  240. package/dist/node_modules/lodash-es/_initCloneObject.js +9 -0
  241. package/dist/node_modules/lodash-es/_isIndex.js +8 -0
  242. package/dist/node_modules/lodash-es/_isIterateeCall.js +13 -0
  243. package/dist/node_modules/lodash-es/_isMasked.js +2 -2
  244. package/dist/node_modules/lodash-es/_isPrototype.js +8 -0
  245. package/dist/node_modules/lodash-es/_nativeKeysIn.js +10 -0
  246. package/dist/node_modules/lodash-es/_nodeUtil.js +11 -0
  247. package/dist/node_modules/lodash-es/_overArg.js +8 -0
  248. package/dist/node_modules/lodash-es/_overRest.js +15 -0
  249. package/dist/node_modules/lodash-es/_safeGet.js +7 -0
  250. package/dist/node_modules/lodash-es/_setToString.js +6 -0
  251. package/dist/node_modules/lodash-es/_shortOut.js +16 -0
  252. package/dist/node_modules/lodash-es/_stackClear.js +7 -0
  253. package/dist/node_modules/lodash-es/_stackDelete.js +7 -0
  254. package/dist/node_modules/lodash-es/_stackGet.js +6 -0
  255. package/dist/node_modules/lodash-es/_stackHas.js +6 -0
  256. package/dist/node_modules/lodash-es/_stackSet.js +17 -0
  257. package/dist/node_modules/lodash-es/constant.js +8 -0
  258. package/dist/node_modules/lodash-es/identity.js +6 -0
  259. package/dist/node_modules/lodash-es/isArguments.js +10 -0
  260. package/dist/node_modules/lodash-es/isArray.js +4 -0
  261. package/dist/node_modules/lodash-es/isArrayLike.js +8 -0
  262. package/dist/node_modules/lodash-es/isArrayLikeObject.js +8 -0
  263. package/dist/node_modules/lodash-es/isBuffer.js +6 -0
  264. package/dist/node_modules/lodash-es/isLength.js +7 -0
  265. package/dist/node_modules/lodash-es/isObjectLike.js +6 -0
  266. package/dist/node_modules/lodash-es/isPlainObject.js +16 -0
  267. package/dist/node_modules/lodash-es/isTypedArray.js +7 -0
  268. package/dist/node_modules/lodash-es/keysIn.js +9 -0
  269. package/dist/node_modules/lodash-es/merge.js +8 -0
  270. package/dist/node_modules/lodash-es/stubFalse.js +6 -0
  271. package/dist/node_modules/lodash-es/toPlainObject.js +8 -0
  272. package/dist/node_modules/valibot/dist/index.js +190 -0
  273. package/dist/node_modules/vue-demi/lib/index.js +7 -0
  274. package/dist/services/stripoApi.d.ts +6 -7
  275. package/dist/services/stripoApi.js +44 -23
  276. package/dist/services/templateLibraryApi.d.ts +7 -0
  277. package/dist/services/templateLibraryApi.js +87 -0
  278. package/dist/static/assets/inbox-mockup.svg.js +4 -0
  279. package/dist/static/assets/phone-mockup.svg.js +4 -0
  280. package/dist/static/styles/base.css.js +11 -0
  281. package/dist/static/styles/components/alert-message.css.js +39 -0
  282. package/dist/static/styles/components/amp-block.css.js +18 -0
  283. package/dist/static/styles/components/base-input.css.js +47 -0
  284. package/dist/static/styles/components/button-group.css.js +54 -0
  285. package/dist/static/styles/components/button.css.js +106 -0
  286. package/dist/static/styles/components/combobox.css.js +49 -0
  287. package/dist/static/styles/components/counter.css.js +42 -0
  288. package/dist/static/styles/components/dropdown-menu.css.js +52 -0
  289. package/dist/static/styles/components/narrow-panel.css.js +38 -0
  290. package/dist/static/styles/components/switcher.css.js +11 -0
  291. package/dist/static/styles/components/tabs.css.js +97 -0
  292. package/dist/static/styles/components/tools.css.js +23 -0
  293. package/dist/static/styles/components/version-history.css.js +30 -0
  294. package/dist/static/styles/components/wide-panel.css.js +144 -0
  295. package/dist/static/styles/customEditorStyle.css.js +18 -0
  296. package/dist/static/styles/variables.css.js +23 -0
  297. package/dist/stores/dynamic-content.d.ts +27 -0
  298. package/dist/stores/dynamic-content.js +23 -0
  299. package/dist/stores/editor.d.ts +3 -0
  300. package/dist/stores/editor.js +6 -3
  301. package/dist/stores/preview.d.ts +46 -0
  302. package/dist/stores/preview.js +53 -0
  303. package/dist/stores/save-as-template.d.ts +73 -0
  304. package/dist/stores/save-as-template.js +48 -0
  305. package/dist/stores/toaster.d.ts +18 -0
  306. package/dist/stores/toaster.js +27 -0
  307. package/dist/utils/arrayUtil.d.ts +1 -0
  308. package/dist/utils/arrayUtil.js +10 -0
  309. package/dist/utils/base64.d.ts +1 -0
  310. package/dist/utils/base64.js +7 -0
  311. package/dist/utils/genericUtil.d.ts +3 -0
  312. package/dist/utils/genericUtil.js +11 -0
  313. package/dist/utils/htmlCompiler.d.ts +12 -0
  314. package/dist/utils/htmlCompiler.js +70 -0
  315. package/dist/utils/templatePreparation.d.ts +4 -0
  316. package/dist/utils/templatePreparation.js +33 -0
  317. package/dist/utils/tooltipUtils.d.ts +2 -0
  318. package/dist/utils/tooltipUtils.js +11 -0
  319. package/package.json +8 -7
  320. package/dist/@types/http.d.ts +0 -19
  321. package/dist/composables/useTemplates.d.ts +0 -5
  322. package/dist/composables/useTemplates.js +0 -27
  323. package/dist/static/editor.css.js +0 -232
  324. package/dist/static/templates/default/index.html.js +0 -5
  325. package/dist/static/templates/default/style.css.js +0 -119
@@ -0,0 +1,18 @@
1
+ import type { ToasterState, ToasterOptions } from '@@/Types/toaster';
2
+ export declare const useToasterStore: import("pinia").StoreDefinition<"toaster", ToasterState, {
3
+ shouldAutoHide: (s: {
4
+ status: boolean;
5
+ type: import("@@/Types/toaster").ToasterType;
6
+ text: string;
7
+ icon: string;
8
+ withIcon: boolean;
9
+ withoutLeftMargin: boolean;
10
+ actionButton?: {
11
+ text: string;
12
+ onClick: () => void;
13
+ } | undefined;
14
+ } & import("pinia").PiniaCustomStateProperties<ToasterState>) => boolean;
15
+ }, {
16
+ showToaster(this: ToasterState, { type, message, actionButton }: ToasterOptions): void;
17
+ hideToaster(this: ToasterState): void;
18
+ }>;
@@ -0,0 +1,27 @@
1
+ import { ToasterTypeOptions as s } from "../enums/toaster.js";
2
+ import { defineStore as i } from "pinia";
3
+ const a = () => ({
4
+ status: !1,
5
+ type: s.Success,
6
+ text: "",
7
+ icon: "",
8
+ withIcon: !0,
9
+ withoutLeftMargin: !1,
10
+ actionButton: void 0
11
+ }), u = i("toaster", {
12
+ state: () => a(),
13
+ getters: {
14
+ shouldAutoHide: (t) => t.status && !!t.text
15
+ },
16
+ actions: {
17
+ showToaster({ type: t = s.Success, message: e, actionButton: o }) {
18
+ this.status = !0, this.text = e, this.type = t, this.actionButton = o;
19
+ },
20
+ hideToaster() {
21
+ this.status = !1, this.text = "", this.actionButton = void 0;
22
+ }
23
+ }
24
+ });
25
+ export {
26
+ u as useToasterStore
27
+ };
@@ -0,0 +1 @@
1
+ export declare const removeDuplicatesFromArray: <T>(arr?: T[]) => T[];
@@ -0,0 +1,10 @@
1
+ const s = (t = []) => {
2
+ const e = /* @__PURE__ */ new Set();
3
+ return t.filter((n) => {
4
+ const r = JSON.stringify(n);
5
+ return e.has(r) ? !1 : (e.add(r), !0);
6
+ });
7
+ };
8
+ export {
9
+ s as removeDuplicatesFromArray
10
+ };
@@ -0,0 +1 @@
1
+ export declare const base64EncodeWithSpecialChars: (value: string | number | object | unknown[]) => string;
@@ -0,0 +1,7 @@
1
+ const r = (t) => {
2
+ let e;
3
+ return typeof t == "string" ? e = t : typeof t == "number" ? e = t.toString() : typeof t == "object" || Array.isArray(t) ? e = JSON.stringify(t) : e = String(t), btoa(unescape(encodeURIComponent(e)));
4
+ };
5
+ export {
6
+ r as base64EncodeWithSpecialChars
7
+ };
@@ -0,0 +1,3 @@
1
+ import type { DynamicContent, MergeTag } from '@@/Types/generic';
2
+ export declare const dynamicContentToMergeTags: (dynamicContentList: DynamicContent[]) => MergeTag[];
3
+ export declare const getCsrfToken: () => string;
@@ -0,0 +1,11 @@
1
+ const l = (e) => e.map((a) => ({
2
+ label: a.fallback ? `${a.text} | ${a.fallback}` : a.text,
3
+ value: a.fallback ? `{{${a.value}|${a.fallback}}}` : `{{${a.value}}}`
4
+ })), t = () => {
5
+ var e;
6
+ return ((e = document.head.querySelector('meta[name="csrf-token"]')) == null ? void 0 : e.getAttribute("content")) ?? "";
7
+ };
8
+ export {
9
+ l as dynamicContentToMergeTags,
10
+ t as getCsrfToken
11
+ };
@@ -0,0 +1,12 @@
1
+ import type { CompilerRule, CompilationResult, HtmlCompiler } from '@@/Types/html-compiler';
2
+ export declare class HtmlCompilerEngine implements HtmlCompiler {
3
+ private rules;
4
+ constructor(rules?: CompilerRule[]);
5
+ compile(html: string, rules?: CompilerRule[]): CompilationResult;
6
+ private applyRule;
7
+ private applyReplaceRule;
8
+ private applyRegexRule;
9
+ private applyRemoveRule;
10
+ private applyCustomRule;
11
+ }
12
+ export declare const createHtmlCompiler: (rules?: CompilerRule[]) => HtmlCompiler;
@@ -0,0 +1,70 @@
1
+ var y = Object.defineProperty;
2
+ var g = (p, e, r) => e in p ? y(p, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : p[e] = r;
3
+ var u = (p, e, r) => g(p, typeof e != "symbol" ? e + "" : e, r);
4
+ import { useToaster as m } from "../composables/useToaster.js";
5
+ class d {
6
+ constructor(e = []) {
7
+ u(this, "rules");
8
+ this.rules = e;
9
+ }
10
+ compile(e, r) {
11
+ const l = performance.now(), t = e, o = e.length;
12
+ let s = e;
13
+ const a = [];
14
+ (r || this.rules).sort((n, c) => n.priority - c.priority).forEach((n) => {
15
+ const c = s.length;
16
+ s = this.applyRule(s, n), s.length !== c && a.push(n.id);
17
+ });
18
+ const i = s.length, R = o > 0 ? (o - i) / o * 100 : 0;
19
+ return {
20
+ originalHtml: t,
21
+ compiledHtml: s,
22
+ appliedRules: a,
23
+ // TODO: We can use stats for monitoring in the future
24
+ stats: {
25
+ originalSize: o,
26
+ compiledSize: i,
27
+ reductionPercentage: R,
28
+ executionTime: performance.now() - l
29
+ }
30
+ };
31
+ }
32
+ applyRule(e, r) {
33
+ try {
34
+ switch (r.type) {
35
+ case "replace":
36
+ return this.applyReplaceRule(e, r);
37
+ case "regex":
38
+ return this.applyRegexRule(e, r);
39
+ case "remove":
40
+ return this.applyRemoveRule(e, r);
41
+ case "custom":
42
+ return this.applyCustomRule(e, r);
43
+ default:
44
+ return e;
45
+ }
46
+ } catch (l) {
47
+ const { handleError: t } = m();
48
+ return t(l, `Failed to apply rule ${r.id}:`), e;
49
+ }
50
+ }
51
+ applyReplaceRule(e, r) {
52
+ const { search: l, replacement: t, replaceAll: o = !0 } = r;
53
+ return o ? e.replaceAll(l, t) : e.replace(l, t);
54
+ }
55
+ applyRegexRule(e, r) {
56
+ const { pattern: l, replacement: t, flags: o = "g" } = r, s = new RegExp(l, o);
57
+ return e.replace(s, t);
58
+ }
59
+ applyRemoveRule(e, r) {
60
+ return r.targets.reduce((l, t) => t instanceof RegExp ? l.replace(t, "") : l.replaceAll(t, ""), e);
61
+ }
62
+ applyCustomRule(e, r) {
63
+ return r.processor(e);
64
+ }
65
+ }
66
+ const A = (p = []) => new d(p);
67
+ export {
68
+ d as HtmlCompilerEngine,
69
+ A as createHtmlCompiler
70
+ };
@@ -0,0 +1,4 @@
1
+ import type { SavedTemplateDetails } from '@@/Types/stripo';
2
+ export declare const useTemplatePreparation: () => {
3
+ prepareTemplateDetails: () => Promise<SavedTemplateDetails>;
4
+ };
@@ -0,0 +1,33 @@
1
+ import { useActionsApi as c } from "../composables/useActionsApi.js";
2
+ import { useDynamicContentStore as l } from "../stores/dynamic-content.js";
3
+ const y = () => {
4
+ const t = l(), { getCompiledEmail: e, getTemplateData: a } = c();
5
+ return {
6
+ prepareTemplateDetails: async () => {
7
+ const { html: n, ampHtml: s = "", ampErrors: o = [] } = await e({
8
+ minimize: !0,
9
+ resetDataSavedFlag: !1
10
+ }), { html: m, css: i, syncModulesIds: r = [] } = await a();
11
+ return {
12
+ dynamicContentList: t.getSelectedDynamicContentList,
13
+ compiledHtml: n,
14
+ rawHtml: m,
15
+ css: i,
16
+ ampHtml: s,
17
+ ampErrors: o,
18
+ modules: r,
19
+ recommendation: {
20
+ campaignUrls: {},
21
+ configs: {}
22
+ },
23
+ unsubscribe: {
24
+ status: !1,
25
+ config: []
26
+ }
27
+ };
28
+ }
29
+ };
30
+ };
31
+ export {
32
+ y as useTemplatePreparation
33
+ };
@@ -0,0 +1,2 @@
1
+ import type { TooltipOptions } from '../@types/generic';
2
+ export declare const getTooltipOptions: (id: string, options?: Partial<Omit<TooltipOptions, "id">>) => TooltipOptions;
@@ -0,0 +1,11 @@
1
+ const e = (s, t = {}) => ({
2
+ id: s,
3
+ dynamicPosition: t.dynamicPosition ?? !1,
4
+ staticPosition: t.staticPosition ?? "bottom center",
5
+ iconStatus: t.iconStatus ?? !1,
6
+ offset: t.offset,
7
+ preventXss: t.preventXss
8
+ });
9
+ export {
10
+ e as getTooltipOptions
11
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "1.0.0-beta.f7c239e",
3
+ "version": "1.0.1-beta.0168eae",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",
@@ -10,9 +10,9 @@
10
10
  ],
11
11
  "exports": {
12
12
  ".": {
13
- "import": "./dist/library.js",
14
- "types": "./dist/components/Guido.vue.d.ts",
15
- "require": "./dist/components/Guido.vue.js"
13
+ "import": "./dist/library.js",
14
+ "types": "./dist/components/Guido.vue.d.ts",
15
+ "require": "./dist/components/Guido.vue.js"
16
16
  },
17
17
  "./style": "./dist/guido.css"
18
18
  },
@@ -21,7 +21,6 @@
21
21
  "start": "vite",
22
22
  "build": "vite build && vue-tsc --declaration --emitDeclarationOnly --project tsconfig.app.json",
23
23
  "preview": "vite preview",
24
- "test": "echo \"Error: no test specified\" && exit 1",
25
24
  "lint": "NODE_OPTIONS=--max-old-space-size=2048 eslint ./ && bun run type-check",
26
25
  "lint:fix": "NODE_OPTIONS=--max-old-space-size=2048 eslint --fix ./",
27
26
  "type-check": "vue-tsc --noEmit --project tsconfig.config.json && vue-tsc --noEmit --project tsconfig.app.json"
@@ -30,11 +29,12 @@
30
29
  "author": "",
31
30
  "license": "ISC",
32
31
  "dependencies": {
32
+ "@stripoinc/ui-editor-extensions": "^1.0.6",
33
33
  "@useinsider/design-system-vue": "0.14.8",
34
- "@vuelidate/core": "2.0.3",
35
- "@vuelidate/validators": "2.0.4",
34
+ "@vueuse/core": "11.3.0",
36
35
  "lodash-es": "4.17.21",
37
36
  "pinia": "2.3.1",
37
+ "valibot": "1.1.0",
38
38
  "vite": "6.3.5",
39
39
  "vue": "2.7.14"
40
40
  },
@@ -42,6 +42,7 @@
42
42
  "@cspell/eslint-plugin": "8.17.5",
43
43
  "@eslint/eslintrc": "3.3.0",
44
44
  "@eslint/js": "8.57.1",
45
+ "@playwright/test": "^1.54.2",
45
46
  "@stylistic/eslint-plugin": "3.1.0",
46
47
  "@stylistic/eslint-plugin-migrate": "3.1.0",
47
48
  "@types/eslint": "8.56.12",
@@ -1,19 +0,0 @@
1
- export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
2
- export interface HttpOptions extends Omit<RequestInit, 'method' | 'body'> {
3
- baseURL?: string;
4
- timeout?: number;
5
- retry?: number;
6
- retryDelay?: number;
7
- }
8
- export interface HttpResponse<T = unknown> {
9
- data: T;
10
- status: number;
11
- statusText: string;
12
- headers: Headers;
13
- }
14
- export interface HttpError {
15
- message: string;
16
- status?: number;
17
- statusText?: string;
18
- response?: Response;
19
- }
@@ -1,5 +0,0 @@
1
- import type { Template } from '@@/Types/stripo';
2
- export declare const useTemplates: () => {
3
- getDefaultTemplate: () => Promise<Template>;
4
- getTemplate: (templateName: string) => Promise<Template>;
5
- };
@@ -1,27 +0,0 @@
1
- const s = () => {
2
- const t = async () => {
3
- const [e, a] = await Promise.all([
4
- // eslint-disable-next-line import/extensions
5
- import("../static/templates/default/index.html.js"),
6
- import("../static/templates/default/style.css.js")
7
- ]);
8
- return {
9
- html: e.default,
10
- css: a.default
11
- };
12
- };
13
- return {
14
- getDefaultTemplate: t,
15
- getTemplate: async (e) => {
16
- switch (e) {
17
- case "default":
18
- return t();
19
- default:
20
- return t();
21
- }
22
- }
23
- };
24
- };
25
- export {
26
- s as useTemplates
27
- };
@@ -1,232 +0,0 @@
1
- const n = `:host {
2
- --guido-color-white: #FFFFFF;
3
- --guido-color-primary-500: #0A2ECC;
4
- --guido-color-primary-100: #DAE1FB;
5
- --guido-color-gray-800: #292929;
6
- --guido-color-gray-300: #E1E1E1;
7
- }
8
-
9
- .label {
10
- font-size: 13px;
11
- color: var(--guido-color-gray-800);
12
- }
13
-
14
- .stacked-panel-title {
15
- padding: 16px;
16
- font-size: 16px;
17
- font-weight: 600;
18
- color: var(--guido-color-gray-800);
19
- text-align: left;
20
- }
21
-
22
- .stacked-panel-item {
23
- border-radius: 4px;
24
- border: 1px solid #dcdfe6;
25
- box-shadow: 0 0 0 0 var(--guido-color-gray-300),0 15px 35px -5px rgba(0, 0, 0, .1),0 8px 10px -6px rgba(0, 0, 0, .1);
26
- }
27
-
28
- .container {
29
- padding: 16px;
30
- }
31
-
32
- .container.parent-container>.container {
33
- padding: 0 16px;
34
- }
35
-
36
- /** SEGMENT BUTTON */
37
- ue-switcher input {
38
- border-radius: 26px;
39
- }
40
-
41
- ue-switcher input:before {
42
- border-radius: 22px;
43
- }
44
-
45
- .tabs-header {
46
- padding: 0;
47
- column-gap: 0;
48
- background-color: transparent;
49
- }
50
-
51
- .tabs-header button {
52
- background-color: #f7f9fa;
53
- outline: none;
54
- padding: 8px 16px;
55
- border: 1px solid #dcdee6;
56
- height: 42px;
57
- }
58
-
59
- .tabs-header button ue-icon-component.icon-button {
60
- color: var(--guido-color-gray-800);
61
- }
62
-
63
- .tabs-header button:not(:last-child),
64
- .tabs-header button:not(:first-child) {
65
- border-radius: 0;
66
- }
67
-
68
- .tabs-header button:first-child {
69
- border-radius: 4px 0 0 4px;
70
- }
71
-
72
- .tabs-header button:last-child {
73
- border-radius: 0 4px 4px 0;
74
- }
75
-
76
- .tabs-header button.checked {
77
- background-color: var(--guido-color-primary-100);
78
- color: var(--guido-color-primary-500);
79
- border-color: var(--guido-color-primary-500);
80
- }
81
-
82
- .tabs-header button.checked ue-icon-component.icon-button {
83
- color: var(--guido-color-primary-500);
84
- }
85
- /** SEGMENT BUTTON */
86
-
87
- /** BUTTON */
88
- .button:not(:disabled,.disabled):active {
89
- transform: none !important;
90
- }
91
- /** BUTTON */
92
-
93
- /** BUTTON GROUP */
94
- .button-group {
95
- padding: 0;
96
- column-gap: 0;
97
- border-radius: 0;
98
- background-color: transparent;
99
- }
100
-
101
- .button-group .button {
102
- background-color: #f7f9fa;
103
- outline: none;
104
- padding: 8px 12px;
105
- border: 1px solid #dcdee6;
106
- box-shadow: none;
107
- height: 42px;
108
- }
109
-
110
- .button-group .button ue-icon-component.icon-button {
111
- color: var(--guido-color-gray-800);
112
- }
113
-
114
- .button-group > div:first-of-type .button {
115
- border-radius: 4px 0 0 4px;
116
- }
117
-
118
- .button-group > *:last-child .button {
119
- border-radius: 0 4px 4px 0;
120
- }
121
-
122
- ue-check-buttons input:checked + .button,
123
- ue-radio-buttons input:checked + .button {
124
- background-color: var(--guido-color-primary-100);
125
- color: var(--guido-color-primary-500);
126
- border-color: var(--guido-color-primary-500);
127
- }
128
-
129
- ue-check-buttons input:checked + .button ue-icon-component.icon-button,
130
- ue-radio-buttons input:checked + .button ue-icon-component.icon-button {
131
- color: var(--guido-color-primary-500);
132
- }
133
- /** BUTTON GROUP */
134
-
135
- /** COMBOBOX */
136
- .control-shadow-wrapper:has(.button[role="combobox"]) {
137
- border-radius: 0;
138
- padding: 0;
139
- background: transparent;
140
- }
141
-
142
- .button[role="combobox"] {
143
- background-color: #f9f9f9;
144
- border: 1px solid var(--guido-color-gray-300);
145
- border-radius: 4px;
146
- box-shadow: none;
147
- min-height: 42px;
148
- padding: 8px;
149
- color: var(--guido-color-gray-800);
150
- text-align: left;
151
- outline: none;
152
- white-space: nowrap;
153
- text-overflow: ellipsis;
154
- overflow: hidden;
155
- }
156
-
157
- .button[role="combobox"].on {
158
- background-color: #f9f9f9;
159
- border-color: var(--guido-color-primary-500);
160
- box-shadow: 0 0 0 3px #b5c1f1 !important;
161
- }
162
- /** COMBOBOX */
163
-
164
- /** BASE INPUT */
165
- .base-input {
166
- border: 1px solid var(--guido-color-gray-300);
167
- border-radius: 4px;
168
- background-color: #f9f9f9;
169
- align-items: center;
170
- height: 40px;
171
- max-height: 40px;
172
- box-sizing: content-box;
173
- outline: none;
174
- resize: vertical;
175
- padding: 8px;
176
- transition: none !important;
177
- color: var(--guido-color-gray-800);
178
- box-shadow: none !important;
179
- box-sizing: border-box !important;
180
- }
181
-
182
- .base-input:hover:not(:disabled) {
183
- background-color: #f9f9f9;
184
- border-color: #7a92f2;
185
- }
186
-
187
- .base-input:focus:not(:disabled) {
188
- background-color: #f9f9f9;
189
- border-color: #0a2ecc;
190
- box-shadow: 0 0 0 3px #b5c1f1 !important;
191
- }
192
- /** BASE INPUT */
193
-
194
- /** COUNTER */
195
- ue-counter {
196
- padding: 0 !important;
197
- background-color: var(--guido-color-white) !important;
198
- border: 1px solid var(--guido-color-gray-300);
199
- }
200
-
201
- ue-counter .button {
202
- width: 40px;
203
- height: 40px;
204
- box-shadow: none;
205
- }
206
-
207
- ue-counter .button .icon-button {
208
- color: var(--guido-color-primary-500);
209
- }
210
-
211
- ue-counter ue-button:first-child .button {
212
- border-right: 1px solid var(--guido-color-gray-300);
213
- }
214
-
215
- ue-counter ue-button:last-child .button {
216
- border-left: 1px solid var(--guido-color-gray-300);
217
- }
218
- /** COUNTER */
219
-
220
- /** COLOR */
221
- ue-color {
222
- width: 80px;
223
- }
224
-
225
- ue-color .base-input {
226
- width: 100%;
227
- }
228
- /** COLOR */
229
- `;
230
- export {
231
- n as default
232
- };
@@ -1,5 +0,0 @@
1
- const t = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><meta charset="UTF-8"><meta content="width=device-width, initial-scale=1" name="viewport"><meta name="x-apple-disable-message-reformatting"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta content="telephone=no" name="format-detection"><title></title><!--[if (mso 16)]><style type="text/css">a{text-decoration:none;}</style><![endif]--><!--[if gte mso 9]><style>sup{font-size:100% !important;}</style><![endif]--><!--[if gte mso 9]><noscript><xml><o:OfficeDocumentSettings><o:AllowPNG></o:AllowPNG><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml></noscript><![endif]--><!--[if mso]><xml><w:WordDocument xmlns:w="urn:schemas-microsoft-com:office:word"><w:DontUseAdvancedTypographyReadingMail></w:DontUseAdvancedTypographyReadingMail></w:WordDocument></xml><![endif]--></head><body><div class="es-wrapper-color"> <!--[if gte mso 9]> <v:background xmlns:v="urn:schemas-microsoft-com:vml" fill="t"> <v:fill type="tile" color="#f6f6f6"></v:fill> </v:background> <![endif]--><table class="es-wrapper" width="100%" cellspacing="0" cellpadding="0"><tbody><tr><td class="esd-email-paddings" valign="top"><table class="es-content esd-header-popover" cellspacing="0" cellpadding="0" align="center"><tbody><tr><td class="esd-stripe" align="center"><table class="es-content-body" width="600" cellspacing="0" cellpadding="0" bgcolor="#ffffff" align="center"><tbody><tr><td class="esd-structure es-p20" align="left" bgcolor="#91949F" style="background-color: #91949f;"><table width="100%" cellspacing="0" cellpadding="0"><tbody><tr><td class="esd-container-frame" width="560" valign="top" align="center"><table width="100%" cellspacing="0" cellpadding="0"><tbody><tr><td align="center" class="esd-block-image es-p15" style="font-size: 0px;"><a target="_blank"><img class="adapt-img" src="https://web-image.useinsider.com/email-template/logo.png" alt style="display: block;" height="30"></a></td></tr><tr><td class="esd-block-text" align="center"><h2 style="color: #ffffff; font-size: 30px;"><strong>Time for great email design</strong></h2></td></tr><tr><td class="esd-block-text es-m-txt-c es-p10t" align="center"><p style="color: #ffffff;">I'm a new text block ready for your message content.</p></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table><table class="es-content" cellspacing="0" cellpadding="0" align="center"><tbody><tr><td class="esd-stripe" align="center"><table class="es-content-body" width="600" cellspacing="0" cellpadding="0" bgcolor="#ffffff" align="center"><tbody><tr><td class="esd-structure es-p30t es-p20b es-p20r es-p20l" align="left" bgcolor="#F9F9F9" style="background-color: #f9f9f9;"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="560" class="esd-container-frame" align="center" valign="top"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="center" class="esd-block-image es-p30t es-p20r" style="font-size: 0px;"><a target="_blank"><img class="adapt-img" src="https://web-image.useinsider.com/email-template/image-placeholder.png" alt style="display: block;" width="138"></a></td></tr><tr><td align="center" class="esd-block-text es-p10t es-p40b"><p style="color: #c5c6cc;">Image Placeholder</p></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td class="esd-structure es-p20t es-p20r es-p20l" align="left"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="560" class="esd-container-frame" align="center" valign="top"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="center" class="esd-block-text"><p style="font-size: 24px; color: #2c3546;"><strong>This is a sample heading</strong><br></p></td></tr><tr><td align="center" class="esd-block-text"><p style="color: #2c3546;">I'm a new text block ready for your message content.</p></td></tr><tr><td align="center" class="esd-block-text"><p style="color: #959aa3; font-size: 10px;">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor<br> incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud<br>&nbsp;exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table><table class="es-content esd-footer-popover" cellspacing="0" cellpadding="0" align="center"><tbody><tr></tr><tr><td class="esd-stripe" esd-custom-block-id="8631" align="center"><table class="es-footer-body" style="background-color: #ffffff;" width="600" cellspacing="0" cellpadding="0" align="center" bgcolor="#fff"><tbody><tr><td class="esd-structure es-p20t es-p15b es-p20r es-p20l" align="left"> <!--[if mso]><table width="560" cellpadding="0" cellspacing="0"><tr><td width="270" valign="top"><![endif]--><table cellpadding="0" cellspacing="0" class="es-left" align="left"><tbody><tr><td width="270" class="es-m-p20b esd-container-frame" align="left"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="right" class="esd-block-button"><span class="es-button-border" style="border-radius: 4px; border-color: #5d6980; background: #5d6980; border-width: 1px;"><a href class="es-button" target="_blank" style="color: #ffffff; background: #5d6980; border-color: #5d6980; border-radius: 4px; border-width: 10px 15px;"> Button </a></span></td></tr></tbody></table></td></tr></tbody></table> <!--[if mso]></td><td width="20"></td><td width="270" valign="top"><![endif]--><table cellpadding="0" cellspacing="0" class="es-right" align="right"><tbody><tr><td width="270" align="left" class="esd-container-frame"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="left" class="esd-block-button"><span class="es-button-border" style="border-radius: 4px; border-color: #5d6980; background: #ffffff; border-width: 1px;"><a href class="es-button" target="_blank" style="background: #ffffff; border-color: #ffffff; color: #5d6980; border-radius: 4px; border-width: 10px 15px;"> Button </a></span></td></tr></tbody></table></td></tr></tbody></table> <!--[if mso]></td></tr></table><![endif]--></td></tr><tr><td class="esd-structure es-p30t es-p35b es-p40r es-p40l" align="left" bgcolor="#F9F9F9" style="background-color: #f9f9f9;"> <!--[if mso]><table width="520" cellpadding="0" cellspacing="0"><tr><td width="257" valign="top"><![endif]--><table cellpadding="0" cellspacing="0" class="es-left" align="left"><tbody><tr><td width="257" class="es-m-p20b esd-container-frame" align="left"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="center" class="esd-block-image" style="font-size: 0px;"><a target="_blank"><img class="adapt-img" src="https://web-image.useinsider.com/email-template/image-placeholder.png" alt style="display: block;" width="96"></a></td></tr><tr><td align="center" class="esd-block-text"><p style="color: #c5c6cc;">Image Placeholder</p></td></tr></tbody></table></td></tr></tbody></table> <!--[if mso]></td><td width="0"></td><td width="263" valign="top"><![endif]--><table cellpadding="0" cellspacing="0" class="es-right" align="right"><tbody><tr><td width="263" align="left" class="esd-container-frame"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="center" class="esd-block-image" style="font-size: 0px;"><a target="_blank"><img class="adapt-img" src="https://web-image.useinsider.com/email-template/image-placeholder.png" alt style="display: block;" width="96"></a></td></tr><tr><td align="center" class="esd-block-text"><p style="color: #c5c6cc;">Image Placeholder</p></td></tr></tbody></table></td></tr></tbody></table> <!--[if mso]></td></tr></table><![endif]--></td></tr><tr><td class="esd-structure es-p20t es-p15b es-p20r es-p20l" align="left"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="560" class="esd-container-frame" align="center" valign="top"><table cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="left" class="esd-block-text"><p>Text</p></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td class="esd-structure es-p20t es-p20b es-p20r es-p20l" align="left" bgcolor="#2C3546" style="background-color: #2c3546;"><table width="100%" cellspacing="0" cellpadding="0"><tbody><tr><td class="esd-container-frame" width="560" valign="top" align="center"><table width="100%" cellspacing="0" cellpadding="0"><tbody><tr><td align="center" class="esd-block-social" style="font-size:0"><table cellpadding="0" cellspacing="0" class="es-table-not-adapt es-social"><tbody><tr><td align="center" valign="top" class="es-p20r" esd-tmp-icon-type="facebook"><a target="_blank" href="https://facebook.com"><img title="Facebook" src="https://web-image.useinsider.com/email-template/facebook.png" alt="Facebook" width="24" height="24"></a></td><td align="center" valign="top" class="es-p20r" esd-tmp-icon-type="twitter"><a target="_blank" href="https://instagram.com"><img title="Instagram" src="https://web-image.useinsider.com/email-template/instagram.png" alt="Instagram" width="24" height="24"></a></td><td align="center" valign="top" esd-tmp-icon-type="instagram"><a target="_blank" href="https://twitter.com"><img title="Twitter" src="https://web-image.useinsider.com/email-template/twitter.png" alt="Twitter" width="24" height="24"></a></td></tr></tbody></table></td></tr><tr><td align="center" class="esd-block-text es-p20"><p style="font-size: 10px;">ADDRESS LINE, PROVINCE, CITY, COUNTRY - 999999</p></td></tr><tr><td align="center" class="esd-block-text"><p style="color: #959aa2; font-size: 10px;">You can <u>unsubscribe</u> from our emails, if you need to.</p></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></div></body></html>
2
- `;
3
- export {
4
- t as default
5
- };