diff --git a/public/grapejs/dist/css/grapesjs-mjml.css b/public/grapejs/dist/css/grapesjs-mjml.css
new file mode 100644
index 00000000..206d8d50
--- /dev/null
+++ b/public/grapejs/dist/css/grapesjs-mjml.css
@@ -0,0 +1,248 @@
+.gjs-clm-tags .gjs-sm-title,
+.gjs-sm-sector .gjs-sm-title {
+ border-top: none;
+}
+
+.gjs-clm-tags .gjs-clm-tag {
+ /* background-color: $tag-color; */
+ border: none;
+ box-shadow: none;
+ padding: 5px 8px;
+ text-shadow: none;
+}
+
+.gjs-field {
+ background-color: rgba(0, 0, 0, 0.15);
+ box-shadow: none;
+}
+
+.gjs-btnt.gjs-pn-active,
+.gjs-pn-btn.gjs-pn-active {
+ box-shadow: none;
+}
+
+.gjs-pn-btn:hover {
+ color: rgba(255, 255, 255, 0.75);
+}
+
+.gjs-btnt.gjs-pn-active,
+.gjs-color-active,
+.gjs-pn-btn.gjs-pn-active,
+.gjs-pn-btn:active,
+.gjs-block:hover {
+ color: #f45e43; /* #f46d4c,#e4505d */
+}
+
+#gjs-rte-toolbar .gjs-rte-btn,
+.gjs-btn-prim,
+.gjs-btnt,
+.gjs-clm-tags .gjs-sm-composite.gjs-clm-field,
+.gjs-clm-tags .gjs-sm-field.gjs-sm-composite,
+.gjs-clm-tags .gjs-sm-stack #gjs-sm-add,
+.gjs-color-main,
+.gjs-mdl-dialog,
+.gjs-off-prv,
+.gjs-pn-btn,
+.gjs-pn-panel,
+.gjs-sm-sector .gjs-sm-composite.gjs-clm-field,
+.gjs-sm-sector .gjs-sm-field.gjs-sm-composite,
+.gjs-sm-sector .gjs-sm-stack #gjs-sm-add {
+ color: #888686;
+}
+
+#gjs-rte-toolbar,
+.gjs-bg-main,
+.gjs-clm-select option,
+.gjs-clm-tags .gjs-sm-colorp-c,
+.gjs-editor,
+.gjs-mdl-dialog,
+.gjs-nv-item .gjs-nv-title-c,
+.gjs-off-prv,
+.gjs-pn-panel,
+.gjs-select option,
+.gjs-sm-sector .gjs-sm-colorp-c,
+.gjs-sm-select option,
+.gjs-sm-unit option,
+.sp-container,
+.gjs-block {
+ background-color: #2c2e35;
+}
+
+.gjs-import-label,
+.gjs-export-label {
+ margin-bottom: 10px;
+ font-size: 13px;
+}
+
+.gjs-mdl-dialog .gjs-btn-import {
+ margin-top: 10px;
+}
+
+.CodeMirror {
+ border-radius: 3px;
+ height: 450px;
+ font-family: sans-serif, monospace;
+ letter-spacing: 0.3px;
+ font-size: 12px;
+}
+
+/* Extra */
+
+.gjs-block {
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 3px;
+ margin: 10px 2.5% 5px;
+ box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
+ transition: box-shadow 0.2s ease 0s;
+}
+
+.gjs-block:hover {
+ box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.15);
+}
+
+#gjs-pn-views-container.gjs-pn-panel {
+ padding: 39px 0 0;
+}
+
+#gjs-pn-views.gjs-pn-panel {
+ padding: 0;
+ border: none;
+}
+
+#gjs-pn-views .gjs-pn-btn {
+ margin: 0;
+ height: 40px;
+ padding: 10px;
+ width: 25%;
+ border-bottom: 2px solid rgba(0, 0, 0, 0.3);
+}
+
+#gjs-pn-views .gjs-pn-active {
+ /*
+ color: rgba(255, 255, 255, 0.9);
+ border-bottom: 2px solid #f45e43;
+ */
+ border-radius: 0;
+}
+
+#gjs-pn-devices-c {
+ padding-left: 30px;
+}
+
+#gjs-pn-options {
+ padding-right: 30px;
+}
+
+.gjs-sm-composite .gjs-sm-properties {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-between;
+}
+
+#gjs-sm-border-top-left-radius,
+#gjs-sm-border-top-right-radius,
+#gjs-sm-border-bottom-left-radius,
+#gjs-sm-border-bottom-right-radius,
+#gjs-sm-margin-top,
+#gjs-sm-margin-bottom,
+#gjs-sm-margin-right,
+#gjs-sm-margin-left,
+#gjs-sm-padding-top,
+#gjs-sm-padding-bottom,
+#gjs-sm-padding-right,
+#gjs-sm-padding-left {
+ flex: 999 1 60px;
+}
+
+#gjs-sm-border-width,
+#gjs-sm-border-style,
+#gjs-sm-border-color {
+ flex: 999 1 80px;
+}
+
+#gjs-sm-margin-left,
+#gjs-sm-padding-left {
+ order: 2;
+}
+
+#gjs-sm-margin-right,
+#gjs-sm-padding-right {
+ order: 3;
+}
+
+#gjs-sm-margin-bottom,
+#gjs-sm-padding-bottom {
+ order: 4;
+}
+
+.gjs-field-radio {
+ width: 100%;
+}
+
+.gjs-field-radio #gjs-sm-input-holder {
+ display: flex;
+}
+
+.gjs-radio-item {
+ flex: 1 0 auto;
+ text-align: center;
+}
+
+.gjs-sm-sector .gjs-sm-property.gjs-sm-list {
+ width: 50%;
+}
+
+.gjs-mdl-content {
+ border-top: none;
+}
+
+.gjs-sm-sector .gjs-sm-property .gjs-sm-layer.gjs-sm-active {
+ background-color: rgba(255, 255, 255, 0.09);
+}
+
+/*
+
+#gjs-pn-views-container,
+#gjs-pn-views{
+ min-width: 270px;
+}
+*/
+
+.gjs-f-button::before { content: 'B'; }
+.gjs-f-divider::before { content: 'D'; }
+
+.gjs-mdl-dialog-sm {
+ width: 300px;
+}
+
+.gjs-mdl-dialog form .gjs-sm-property {
+ font-size: 12px;
+ margin-bottom: 15px;
+}
+
+.gjs-mdl-dialog form .gjs-sm-label {
+ margin-bottom: 5px;
+}
+
+.anim-spin {
+ animation: 0.5s linear 0s normal none infinite running spin;
+}
+
+.form-status {
+ float: right;
+ font-size: 14px;
+}
+
+.text-danger {
+ color: #f92929;
+}
+
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
diff --git a/public/grapejs/dist/css/grapesjs-preset-newsletter.css b/public/grapejs/dist/css/grapesjs-preset-newsletter.css
new file mode 100644
index 00000000..13f90f64
--- /dev/null
+++ b/public/grapejs/dist/css/grapesjs-preset-newsletter.css
@@ -0,0 +1,211 @@
+/* #008f73 #4c9790 */
+.gjs-clm-tags .gjs-sm-title,
+.gjs-sm-sector .gjs-sm-title {
+ border-top: none; }
+
+.gjs-clm-tags .gjs-clm-tag {
+ background-color: #4c9790;
+ border: none;
+ box-shadow: none;
+ padding: 5px 8px;
+ text-shadow: none; }
+
+.gjs-field {
+ background-color: rgba(0, 0, 0, 0.15);
+ box-shadow: none; }
+
+.gjs-btnt.gjs-pn-active,
+.gjs-pn-btn.gjs-pn-active {
+ box-shadow: none; }
+
+.gjs-pn-btn:hover {
+ color: rgba(255, 255, 255, 0.75); }
+
+.gjs-btnt.gjs-pn-active,
+.gjs-color-active,
+.gjs-pn-btn.gjs-pn-active,
+.gjs-pn-btn:active,
+.gjs-block:hover {
+ color: #35d7bb; }
+
+#gjs-rte-toolbar .gjs-rte-btn,
+.gjs-btn-prim,
+.gjs-btnt,
+.gjs-clm-tags .gjs-sm-composite.gjs-clm-field,
+.gjs-clm-tags .gjs-sm-field.gjs-sm-composite,
+.gjs-clm-tags .gjs-sm-stack #gjs-sm-add,
+.gjs-color-main,
+.gjs-mdl-dialog,
+.gjs-off-prv,
+.gjs-pn-btn,
+.gjs-pn-panel,
+.gjs-sm-sector .gjs-sm-composite.gjs-clm-field,
+.gjs-sm-sector .gjs-sm-field.gjs-sm-composite,
+.gjs-sm-sector .gjs-sm-stack #gjs-sm-add {
+ color: #a0aabf;
+ /* #a0aabf #d0d6e2 */ }
+
+#gjs-rte-toolbar,
+.gjs-bg-main,
+.gjs-clm-select option,
+.gjs-clm-tags .gjs-sm-colorp-c,
+.gjs-editor,
+.gjs-mdl-dialog,
+.gjs-nv-item .gjs-nv-title-c,
+.gjs-off-prv,
+.gjs-pn-panel,
+.gjs-block,
+.gjs-select option,
+.gjs-sm-sector .gjs-sm-colorp-c,
+.gjs-sm-select option,
+.gjs-sm-unit option,
+.sp-container {
+ background-color: #373d49; }
+
+.gjs-import-label,
+.gjs-export-label {
+ margin-bottom: 10px;
+ font-size: 13px; }
+
+.gjs-mdl-dialog .gjs-btn-import {
+ margin-top: 10px; }
+
+.CodeMirror {
+ border-radius: 3px;
+ height: 450px;
+ font-family: sans-serif, monospace;
+ letter-spacing: 0.3px;
+ font-size: 12px; }
+
+/* Extra */
+.gjs-block {
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 3px;
+ margin: 10px 2.5% 5px;
+ box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
+ transition: box-shadow, color 0.2s ease 0s; }
+
+.gjs-block:hover {
+ box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.15); }
+
+#gjs-pn-views-container.gjs-pn-panel {
+ padding: 39px 0 0; }
+
+#gjs-pn-views.gjs-pn-panel {
+ padding: 0;
+ border: none; }
+
+#gjs-pn-views .gjs-pn-btn {
+ margin: 0;
+ height: 40px;
+ padding: 10px;
+ width: 25%;
+ border-bottom: 2px solid rgba(0, 0, 0, 0.3); }
+
+#gjs-pn-views .gjs-pn-active {
+ color: rgba(255, 255, 255, 0.9);
+ border-bottom: 2px solid #35d7bb;
+ border-radius: 0; }
+
+#gjs-pn-devices-c {
+ padding-left: 30px; }
+
+#gjs-pn-options {
+ padding-right: 30px; }
+
+.gjs-sm-composite .gjs-sm-properties {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-between; }
+
+#gjs-sm-border-top-left-radius,
+#gjs-sm-border-top-right-radius,
+#gjs-sm-border-bottom-left-radius,
+#gjs-sm-border-bottom-right-radius,
+#gjs-sm-margin-top,
+#gjs-sm-margin-bottom,
+#gjs-sm-margin-right,
+#gjs-sm-margin-left,
+#gjs-sm-padding-top,
+#gjs-sm-padding-bottom,
+#gjs-sm-padding-right,
+#gjs-sm-padding-left {
+ flex: 999 1 60px; }
+
+#gjs-sm-border-width,
+#gjs-sm-border-style,
+#gjs-sm-border-color {
+ flex: 999 1 80px; }
+
+#gjs-sm-margin-left,
+#gjs-sm-padding-left {
+ order: 2; }
+
+#gjs-sm-margin-right,
+#gjs-sm-padding-right {
+ order: 3; }
+
+#gjs-sm-margin-bottom,
+#gjs-sm-padding-bottom {
+ order: 4; }
+
+.gjs-field-radio {
+ width: 100%; }
+
+.gjs-field-radio #gjs-sm-input-holder {
+ display: flex; }
+
+.gjs-radio-item {
+ flex: 1 0 auto;
+ text-align: center; }
+
+.gjs-sm-sector .gjs-sm-property.gjs-sm-list {
+ width: 50%; }
+
+.gjs-mdl-content {
+ border-top: none; }
+
+.gjs-sm-sector .gjs-sm-property .gjs-sm-layer.gjs-sm-active {
+ background-color: rgba(255, 255, 255, 0.09); }
+
+/*
+
+#gjs-pn-views-container,
+#gjs-pn-views{
+ min-width: 270px;
+}
+*/
+.gjs-f-button::before {
+ content: 'B'; }
+
+.gjs-f-divider::before {
+ content: 'D'; }
+
+.gjs-mdl-dialog-sm {
+ width: 300px; }
+
+.gjs-mdl-dialog form .gjs-sm-property {
+ font-size: 12px;
+ margin-bottom: 15px; }
+
+.gjs-mdl-dialog form .gjs-sm-label {
+ margin-bottom: 5px; }
+
+#gjs-clm-status-c {
+ display: none; }
+
+.anim-spin {
+ animation: 0.5s linear 0s normal none infinite running spin; }
+
+.form-status {
+ float: right;
+ font-size: 14px; }
+
+.text-danger {
+ color: #f92929; }
+
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg); }
+ 100% {
+ transform: rotate(360deg); } }
diff --git a/views/grapejs/layout-editor.hbs b/views/grapejs/layout-editor.hbs
index 77b03934..d2545db8 100644
--- a/views/grapejs/layout-editor.hbs
+++ b/views/grapejs/layout-editor.hbs
@@ -16,10 +16,12 @@
{{#switch editor.mode}}
{{#case "mjml"}}
+
{{/case}}
{{#case "html"}}
+
{{/case}}
{{/switch}}