├── README.md ├── assets ├── css │ ├── grapes.min.css │ ├── grapesjs-preset-webpage.min.css │ ├── style-light.css │ └── style.css ├── js │ ├── grapes.js │ ├── grapes.min.js │ └── grapes.min.js.map └── uikit-3.3.3 │ ├── css │ ├── uikit-rtl.css │ ├── uikit-rtl.min.css │ ├── uikit.css │ └── uikit.min.css │ └── js │ ├── uikit-icons.js │ ├── uikit-icons.min.js │ ├── uikit.js │ └── uikit.min.js ├── editor ├── blocks │ ├── elements.js │ ├── linkpreview-elements.js │ ├── pages.js │ └── uikit-elements.js └── plugins │ ├── custom-code-editor.js │ ├── custom-page-manager.js │ ├── customize-devices.js │ ├── customize-options.js │ └── customize-views.js ├── index.html ├── storage ├── page_1.txt └── save.php └── uploads ├── images ├── 0.jpg ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── 4.jpg ├── 5.jpg └── 6.jpg └── preview ├── components.gif ├── preview.gif ├── sidebar.PNG ├── sidebar.gif └── trash_and_component_code.gif /README.md: -------------------------------------------------------------------------------- 1 | ## Installation and Usage 2 | 3 | Clone and place this repo inside a server directory since there is an auto saving process. Otherwise feel free to use this as an add-on to GrapesJS & UIKit 4 | 5 | ```bash 6 | # Simply Clone this repository 7 | git clone https://github.com/ziaahsan/template-builder 8 | ``` 9 | --- 10 | 11 | ## Purpose of Template-Builder was: 12 | 0. I needed a way to make responsive HTML/CSS designs 13 | 1. In order to achieve 0, I used an open source tool called, GrapesJS. Which made things a lot easier to get started 14 | 2. With 1. built, I integrated UIKit for neat HTML/CSS responsive designs 15 | 3. Now that everything was setup simply add an automatic saving system with GrapesJS 16 | 17 | 18 | ## Interface 19 | 1. Components - Blocks of HTML code 20 | ![alt text](https://github.com/ziaahsan/template-builder/blob/master/uploads/preview/components.gif) 21 | 2. Sidebar 22 | ![alt text](https://github.com/ziaahsan/template-builder/blob/master/uploads/preview/sidebar.png) 23 | ![alt text](https://github.com/ziaahsan/template-builder/blob/master/uploads/preview/sidebar.gif) 24 | 3. Preview 25 | ![alt text](https://github.com/ziaahsan/template-builder/blob/master/uploads/preview/preview.gif) 26 | 4. Trash & Component Code 27 | ![alt text](https://github.com/ziaahsan/template-builder/blob/master/uploads/preview/trash_and_component_code.gif) 28 | -------------------------------------------------------------------------------- /assets/css/grapesjs-preset-webpage.min.css: -------------------------------------------------------------------------------- 1 | .gjs-one-bg{background-color:#463a3c}.gjs-one-color{color:#463a3c}.gjs-one-color-h:hover{color:#463a3c}.gjs-two-bg{background-color:#b9a5a6}.gjs-two-color{color:#b9a5a6}.gjs-two-color-h:hover{color:#b9a5a6}.gjs-three-bg{background-color:#804f7b}.gjs-three-color{color:#804f7b}.gjs-three-color-h:hover{color:#804f7b}.gjs-four-bg{background-color:#d97aa6}.gjs-four-color{color:#d97aa6}.gjs-four-color-h:hover{color:#d97aa6} 2 | -------------------------------------------------------------------------------- /assets/css/style-light.css: -------------------------------------------------------------------------------- 1 | html { 2 | height: 100%!important; 3 | } 4 | 5 | body { 6 | /*background-color: #f8f8f8!important;*/ 7 | min-height: 100%!important; 8 | -webkit-font-smoothing: antialiased!important; 9 | } 10 | 11 | /* We can remove the border we've set at the beginnig */ 12 | #gjs { 13 | border: none; 14 | height: 100vh!important; 15 | } 16 | /* Theming */ 17 | 18 | /* Primary color for the background */ 19 | .gjs-one-bg { 20 | background-color: #f8f8f8; 21 | } 22 | 23 | /* Secondary color for the text color */ 24 | .gjs-two-color { 25 | color: #433e43; 26 | } 27 | 28 | /* Tertiary color for the background */ 29 | .gjs-three-bg { 30 | background-color: #494849; 31 | color: white; 32 | } 33 | 34 | /* Quaternary color for the text color */ 35 | .gjs-four-color, 36 | .gjs-four-color-h:hover { 37 | color: #494849; 38 | } 39 | 40 | /*Template Canvas*/ 41 | .gjs-cv-canvas { 42 | width: 87%; 43 | left: 13%; 44 | z-index: 0; 45 | } 46 | /*Commands Bar*/ 47 | .gjs-pn-commands { 48 | width: 87%; 49 | left: 13%; 50 | } 51 | /*View for left panel*/ 52 | .gjs-pn-views { 53 | width: 13%; 54 | left: 0; 55 | border-bottom: 1px solid #ddd; 56 | border-right: 1px solid #ddd; 57 | } 58 | .gjs-pn-views-container { 59 | left: 0; 60 | width: 13%; 61 | z-index: 0; 62 | border-right: 1px solid #ddd; 63 | border-bottom: 1px solid #ddd; 64 | box-shadow: 0 10px 15px rgba(0,0,0,.08); 65 | } 66 | /*Options*/ 67 | .gjs-pn-options { 68 | right: 0; 69 | padding: 3px; 70 | } 71 | /*Devices*/ 72 | .gjs-pn-devices-c { 73 | right: 42.5%; 74 | padding: 3px; 75 | } 76 | /*Active pannel button*/ 77 | .gjs-pn-btn.gjs-pn-active { 78 | background-color: #ddd; 79 | border: 1px solid #aaa; 80 | border-radius: 4px; 81 | box-shadow: none; 82 | } 83 | /*Block Width*/ 84 | .gjs-block { 85 | width: 100%; 86 | height: auto; 87 | min-height: auto; 88 | border: none; 89 | box-shadow: none; 90 | text-align: left; 91 | padding: 0; 92 | background: transparent; 93 | } 94 | .gjs-block:hover { 95 | box-shadow: none; 96 | text-decoration: underline; 97 | } 98 | .gjs-category-title, .gjs-sm-sector .gjs-sm-title, .gjs-clm-tags .gjs-sm-title, .gjs-block-category .gjs-title, .gjs-layer-title { 99 | background-color: #efefef; 100 | } 101 | .gjs-category-open, .gjs-sm-sector.gjs-sm-open, .gjs-sm-open.gjs-clm-tags, .gjs-block-category.gjs-open, 102 | .gjs-category-title, .gjs-sm-sector .gjs-sm-title, .gjs-clm-tags .gjs-sm-title, .gjs-block-category .gjs-title, .gjs-layer-title { 103 | border-bottom: 1px solid #ddd; 104 | } 105 | .gjs-sm-sector .gjs-sm-field input, .gjs-clm-tags .gjs-sm-field input, .gjs-sm-sector .gjs-clm-field input, 106 | .gjs-clm-tags .gjs-clm-field input, .gjs-sm-sector .gjs-clm-select input, .gjs-clm-tags .gjs-clm-select input, 107 | .gjs-sm-sector .gjs-sm-field select, .gjs-clm-tags .gjs-sm-field select, .gjs-sm-sector .gjs-clm-field select, 108 | .gjs-clm-tags .gjs-clm-field select, .gjs-sm-sector .gjs-clm-select select, .gjs-clm-tags .gjs-clm-select select { 109 | color: #222222; 110 | } 111 | .gjs-color-warn { 112 | color: #f79c00; 113 | font-weight: 500; 114 | } 115 | /*Tags input*/ 116 | .gjs-field { 117 | background-color: #eaeaea; 118 | border: 1px solid #dddddd; 119 | box-shadow: 0 2px 6px #dddddd; 120 | border-radius: 3px; 121 | } 122 | .gjs-field-colorp { 123 | border-left: none; 124 | border: 1px solid #ddd; 125 | width: 25px; 126 | } 127 | .gjs-field-color-picker { 128 | background-color: transparent; 129 | box-shadow: 0 5px 10px #bbb; 130 | } 131 | #gjs-clm-new { 132 | color: #222222!important; 133 | } 134 | .gjs-radio-item:hover { 135 | background: #dadada; 136 | box-shadow: 0 6px 10px #cccccc inset; 137 | } 138 | .gjs-color-main, .gjs-off-prv, .gjs-sm-sector .gjs-sm-stack #gjs-sm-add, .gjs-clm-tags .gjs-sm-stack #gjs-sm-add { 139 | color: #222222; 140 | fill: #222222; 141 | } 142 | .gjs-sm-sector .gjs-sm-field.gjs-sm-composite, .gjs-clm-tags .gjs-sm-field.gjs-sm-composite, .gjs-sm-sector .gjs-sm-composite.gjs-clm-field, 143 | .gjs-clm-tags .gjs-sm-composite.gjs-clm-field, .gjs-sm-sector .gjs-sm-composite.gjs-clm-select, .gjs-clm-tags .gjs-sm-composite.gjs-clm-select, 144 | .gjs-sm-sector .gjs-sm-property .gjs-sm-layer.gjs-sm-active, .gjs-clm-tags .gjs-sm-property .gjs-sm-layer.gjs-sm-active { 145 | background-color: #fff; 146 | border: 1px solid #dddddd; 147 | border-radius: 5px; 148 | /*box-shadow: 0 2px 6px #dddddd;*/ 149 | } 150 | .gjs-clm-tags { 151 | border-bottom: 1px solid #dddddd; 152 | padding-bottom: 0px; 153 | } 154 | .gjs-clm-tag { 155 | background-color: #3b97e3!important; 156 | } 157 | /*Arrow & Field*/ 158 | .gjs-field .gjs-d-s-arrow, 159 | .gjs-field-arrow-u, .gjs-field-arrow-d, 160 | .gjs-field-arrow-u { 161 | border-top-color: #222222; 162 | border-bottom-color: #222222; 163 | } 164 | 165 | .gjs-traits-label { 166 | border-bottom-color: #dddddd; 167 | } 168 | .gjs-field-color input { 169 | font-weight: 500; 170 | text-transform: capitalize; 171 | } -------------------------------------------------------------------------------- /assets/css/style.css: -------------------------------------------------------------------------------- 1 | /* Chrome, Firefox, Opera, Safari 10.1+ */ 2 | ::placeholder { 3 | color: #88a7c1; 4 | opacity: 1; /* Firefox */ 5 | text-transform: lowercase; 6 | } 7 | 8 | html { 9 | height: 100%!important; 10 | } 11 | 12 | body { 13 | /*background-color: #f8f8f8!important;*/ 14 | min-height: 100%!important; 15 | -webkit-font-smoothing: antialiased!important; 16 | } 17 | /*UIKit*/ 18 | .uk-tooltip { 19 | background-color: #f8fafb; 20 | box-shadow: 0 4px 12px #080c10; 21 | color: #000; 22 | font-weight: 500; 23 | } 24 | /* We can remove the border we've set at the beginnig */ 25 | #gjs { 26 | border: none; 27 | } 28 | /* Theming */ 29 | 30 | /* Primary color for the background */ 31 | .gjs-one-bg { 32 | background-color: #141D26; 33 | } 34 | 35 | /* Secondary color for the text color */ 36 | .gjs-two-color { 37 | color: #b6c6d8; 38 | } 39 | 40 | /* Tertiary color for the background */ 41 | .gjs-three-bg { 42 | background-color: #494849; 43 | color: white; 44 | } 45 | 46 | /* Quaternary color for the text color */ 47 | .gjs-four-color, 48 | .gjs-four-color-h:hover { 49 | color: #494849; 50 | } 51 | 52 | /*Template Canvas*/ 53 | .gjs-cv-canvas { 54 | width: 84%; 55 | left: 16%; 56 | z-index: 0; 57 | } 58 | /*Commands Bar*/ 59 | .gjs-pn-commands { 60 | width: 84%; 61 | height: 42px; 62 | left: 16%; 63 | border-bottom: 1px solid #080c10; 64 | background-color: #0e151b; 65 | box-shadow: 0px 0px 12px #0d131a; 66 | } 67 | /*View for left panel*/ 68 | .gjs-pn-views { 69 | width: 2%; 70 | height: 100%; 71 | left: 0; 72 | border-right: 6px solid #192330; 73 | background-color: #0e151b; 74 | padding: 41px 0; 75 | } 76 | .gjs-pn-buttons { 77 | display: block; 78 | } 79 | .gjs-pn-views > .gjs-pn-buttons > .gjs-pn-btn { 80 | padding: 6px; 81 | min-width: 100%; 82 | height: 41px; 83 | line-height: 38px; 84 | } 85 | .gjs-pn-options > .gjs-pn-buttons > .gjs-pn-btn { 86 | padding: 6px 12px; 87 | border-right: 1px solid #202e3c; 88 | } 89 | .gjs-pn-options > .gjs-pn-buttons > .gjs-pn-btn:last-child { 90 | border-right: none; 91 | } 92 | .gjs-pn-views-container { 93 | left: 2%; 94 | width: 14%; 95 | z-index: 0; 96 | border-right: 1px solid #263647; 97 | border-left: 2px solid #0e151b; 98 | box-shadow: none; 99 | height: calc(100% - 42px); 100 | } 101 | /*Options*/ 102 | .gjs-pn-options { 103 | left: 2%; 104 | padding: 3px; 105 | max-width: 14%; 106 | border-left: 2px solid #0e151b; 107 | border-bottom: 1px solid #080c10; 108 | height: 42px; 109 | line-height: 42px; 110 | background-color: #0e151b; 111 | box-shadow: 0px 0px 12px #0d131a; 112 | } 113 | /*Devices*/ 114 | .gjs-pn-devices-c { 115 | left: 2%; 116 | padding: 7px; 117 | height: 42px; 118 | line-height: 33px; 119 | bottom: 0; 120 | width: 14%; 121 | border-top: 1px solid #0e151b; 122 | border-left: 2px solid #0e151b; 123 | box-shadow: -8px -4px 22px #0d131a 124 | } 125 | /*Active pannel button*/ 126 | .gjs-pn-btn.gjs-pn-active { 127 | background-color: #192330; 128 | border: none; 129 | border-radius: 0px; 130 | box-shadow: 0 5px 30px rgba(0,0,0,.3); 131 | } 132 | .gjs-pn-options > .gjs-pn-buttons > .gjs-pn-btn.gjs-pn-active { 133 | background-color: #192330; 134 | border-radius: 4px; 135 | color: #33dbba; 136 | } 137 | /*Block Width*/ 138 | .gjs-block { 139 | background-color: rgba(26, 37, 49, 0.9); 140 | box-shadow: none; 141 | border-radius: 0; 142 | border: 1px solid #131b25; 143 | width: 33%; 144 | margin: 0; 145 | } 146 | .gjs-block:hover { 147 | background-color: #263647; 148 | box-shadow: 0 4px 12px #0e151b; 149 | text-decoration: none; 150 | } 151 | .gjs-category-title, .gjs-sm-sector .gjs-sm-title, .gjs-clm-tags .gjs-sm-title, .gjs-block-category .gjs-title, .gjs-layer-title { 152 | background-color: #141e26; 153 | } 154 | .gjs-category-open, .gjs-sm-sector.gjs-sm-open, .gjs-sm-open.gjs-clm-tags, .gjs-block-category.gjs-open, 155 | .gjs-category-title, .gjs-sm-sector .gjs-sm-title, .gjs-clm-tags .gjs-sm-title, .gjs-block-category .gjs-title, .gjs-layer-title { 156 | border-bottom: 1px solid #1a2531; 157 | } 158 | .gjs-sm-sector .gjs-sm-field input, .gjs-clm-tags .gjs-sm-field input, .gjs-sm-sector .gjs-clm-field input, 159 | .gjs-clm-tags .gjs-clm-field input, .gjs-sm-sector .gjs-clm-select input, .gjs-clm-tags .gjs-clm-select input, 160 | .gjs-sm-sector .gjs-sm-field select, .gjs-clm-tags .gjs-sm-field select, .gjs-sm-sector .gjs-clm-field select, 161 | .gjs-clm-tags .gjs-clm-field select, .gjs-sm-sector .gjs-clm-select select, .gjs-clm-tags .gjs-clm-select select, 162 | .gjs-four-color, .gjs-four-color-h:hover { 163 | color: #ffffff; 164 | } 165 | .gjs-color-warn { 166 | color: #f79c00; 167 | font-weight: 500; 168 | } 169 | /*Tags input*/ 170 | .gjs-field { 171 | background-color: #243447; 172 | border: 1px solid #0e151b; 173 | box-shadow: none; 174 | border-radius: 5px; 175 | } 176 | .gjs-field-colorp { 177 | border-left: none; 178 | border: 1px solid #1a2531; 179 | width: 25px; 180 | } 181 | .gjs-field-color-picker { 182 | background-color: black; 183 | box-shadow: 0 5px 10px #131b25; 184 | } 185 | #gjs-clm-new { 186 | color: #ffffff!important; 187 | } 188 | .gjs-radio-item:hover { 189 | background: #243447; 190 | box-shadow: 0 6px 10px #243447 inset; 191 | } 192 | .gjs-color-main, .gjs-off-prv, .gjs-sm-sector .gjs-sm-stack #gjs-sm-add, .gjs-clm-tags .gjs-sm-stack #gjs-sm-add { 193 | color: #ffffff; 194 | fill: #ffffff; 195 | } 196 | .gjs-sm-sector .gjs-sm-field.gjs-sm-composite, .gjs-clm-tags .gjs-sm-field.gjs-sm-composite, .gjs-sm-sector .gjs-sm-composite.gjs-clm-field, 197 | .gjs-clm-tags .gjs-sm-composite.gjs-clm-field, .gjs-sm-sector .gjs-sm-composite.gjs-clm-select, .gjs-clm-tags .gjs-sm-composite.gjs-clm-select, 198 | .gjs-sm-sector .gjs-sm-property .gjs-sm-layer.gjs-sm-active, .gjs-clm-tags .gjs-sm-property .gjs-sm-layer.gjs-sm-active { 199 | background-color: #243447; 200 | border: 1px solid #1a2531; 201 | border-radius: 5px; 202 | /*box-shadow: 0 2px 6px #dddddd;*/ 203 | } 204 | .gjs-radio-item input:checked+.gjs-radio-item-label { 205 | background-color: #141e26; 206 | box-shadow: 0 4px 12px #0e151b inset; 207 | } 208 | .gjs-clm-tags { 209 | border-bottom: 1px solid #1a2531; 210 | padding-bottom: 0px; 211 | } 212 | .gjs-clm-tag { 213 | background-color: #1a2531!important; 214 | } 215 | #gjs-clm-add-tag, .gjs-clm-tags-btn { 216 | background-color: #3b97e3; 217 | border: 1px solid #3b97e3; 218 | color: #efefef; 219 | } 220 | /*Arrow & Field*/ 221 | .gjs-field .gjs-d-s-arrow, 222 | .gjs-field-arrow-u, .gjs-field-arrow-d, 223 | .gjs-field-arrow-u { 224 | border-top-color: #ffffff; 225 | border-bottom-color: #ffffff; 226 | } 227 | 228 | .gjs-traits-label { 229 | border-bottom-color: #1a2531; 230 | } 231 | .gjs-field-color input { 232 | font-weight: 500; 233 | text-transform: capitalize; 234 | } 235 | /*Code theeme*/ 236 | .cm-s-hopscotch.CodeMirror, 237 | .cm-s-hopscotch .CodeMirror-gutters { 238 | background-color: #141D26; 239 | } 240 | .gjs-title-tags { 241 | font-size:10px; 242 | color:#7f9bba; 243 | } 244 | .gjs-mdl-container { 245 | background-color: rgba(8,12,16, 0.9); 246 | } 247 | .gjs-mdl-dialog { 248 | max-width: 1200px; 249 | height: 800px; 250 | border-radius: 6px; 251 | box-shadow: 0px 0px 4px #0d131a; 252 | } 253 | .gjs-cm-editor-c .CodeMirror { 254 | height: 650px; 255 | margin-bottom: 5px; 256 | } 257 | .gjs-cm-editor #gjs-cm-title { 258 | margin-bottom: 10px; 259 | } 260 | .gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, 261 | .gjs-cm-editor#gjs-cm-css #gjs-cm-title { 262 | font-weight: bold; 263 | } 264 | .gjs-cm-editor-c:nth-child(1) { 265 | width: 70%; 266 | } 267 | .gjs-cm-editor-c:nth-child(2) { 268 | width: 30%; 269 | } 270 | .gjs-sm-header, 271 | .gjs-trt-header { 272 | font-weight: lighter; 273 | padding: 10px; 274 | font-size: 12px; 275 | top: 45%; 276 | position: absolute; 277 | padding: 50px; 278 | color: #9fb8cd; 279 | } 280 | /*Toolbar*/ 281 | .gjs-rte-toolbar { 282 | box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.5); 283 | } 284 | .gjs-sm-sector > .gjs-sm-properties, 285 | .gjs-block-category { 286 | box-shadow: 0 0 12px #0d131a inset; 287 | } 288 | /*Button*/ 289 | .gjs-btn-prim { 290 | background-color: #198f78; 291 | border-radius: 4px; 292 | color: #ffffff; 293 | font-weight: 500; 294 | text-transform: none; 295 | } 296 | .gjs-btn-prim:active { 297 | background-color: #1c9d84; 298 | } 299 | 300 | 301 | .dotted-white-bottom-border { 302 | border-bottom: 1px dotted #e2eaf0; 303 | } 304 | 305 | /*UIKit*/ 306 | /*Notifications*/ 307 | .uk-notification-message-primary { 308 | color: #9fb8cd; 309 | } 310 | .uk-notification-message { 311 | background-color: #141D26; 312 | border-radius: 4px; 313 | padding: 8px; 314 | font-size: 14px; 315 | color: #c1d1de; 316 | box-shadow: 0px 2px 4px #0d131a; 317 | border-left: 2px solid #33dbba; 318 | } 319 | .uk-notification-close { 320 | top: 13px; 321 | } 322 | -------------------------------------------------------------------------------- /editor/blocks/elements.js: -------------------------------------------------------------------------------- 1 | blockManager.add('layout-section', { 2 | category: categories.layout, 3 | attributes: { 4 | title: 'Insert section' 5 | }, 6 | label: 7 | ` 8 |
9 | 10 | 11 |
Section
12 |
13 | `, 14 | content: 15 | ` 16 |
17 |
18 |
[Remove and insert your components]
19 |
20 |
21 | `, 22 | render: ({ model, className }) => `
${model.get('label')}
`, 23 | }); 24 | blockManager.add('layout-container', { 25 | category: categories.layout, 26 | attributes: { 27 | title: 'Insert container' 28 | }, 29 | label: 30 | ` 31 |
32 | 33 |
Container
34 |
35 | `, 36 | content: `
`, 37 | render: ({ model, className }) => `
${model.get('label')}
`, 38 | }); 39 | blockManager.add('layout-grid', { 40 | category: categories.layout, 41 | attributes: { 42 | title: 'Insert grid' 43 | }, 44 | label: 45 | ` 46 |
47 | 48 |
Grid
49 |
50 | `, 51 | content: 52 | ` 53 |
54 |
55 |
Auto
56 |
57 |
58 |
1-3
59 |
60 |
61 |
Expand
62 |
63 |
64 | `, 65 | render: ({ model, className }) => `
${model.get('label')}
`, 66 | }); 67 | blockManager.add('layout-column', { 68 | category: categories.layout, 69 | attributes: { 70 | title: 'Insert column' 71 | }, 72 | label: 73 | ` 74 |
75 | 76 |
Columns
77 |
78 | `, 79 | content: 80 | ` 81 |
82 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.

83 | 84 |

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

85 | 86 |

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore.

87 |
88 | `, 89 | render: ({ model, className }) => `
${model.get('label')}
`, 90 | }); 91 | blockManager.add('basic-div', { 92 | category: categories.basic, 93 | attributes: { 94 | title: 'Insert div' 95 | }, 96 | label: 97 | ` 98 |
99 | 103 |
Div Block
104 |
105 | `, 106 | content: `
`, 107 | render: ({ model, className }) => `
${model.get('label')}
`, 108 | }); 109 | blockManager.add('basic-list-block', { 110 | category: categories.basic, 111 | attributes: { 112 | title: 'Insert list' 113 | }, 114 | label: 115 | ` 116 |
117 | 121 |
List Block
122 |
123 | `, 124 | content: ` 125 | 130 | `, 131 | render: ({ model, className }) => `
${model.get('label')}
`, 132 | }); 133 | blockManager.add('basic-button', { 134 | category: categories.basic, 135 | attributes: { 136 | title: 'Insert button' 137 | }, 138 | label: 139 | ` 140 |
141 | 145 |
Button
146 |
147 | `, 148 | content: ``, 149 | render: ({ model, className }) => `
${model.get('label')}
`, 150 | }); 151 | blockManager.add('basic-left-navbar', { 152 | category: categories.basic, 153 | attributes: { 154 | title: 'Insert left navbar' 155 | }, 156 | label: 157 | ` 158 |
159 | 163 |
Left Bar
164 |
165 | `, 166 | content: ` 167 | 172 | `, 173 | render: ({ model, className }) => `
${model.get('label')}
`, 174 | }); 175 | blockManager.add('basic-navbar', { 176 | category: categories.basic, 177 | attributes: { 178 | title: 'Insert navbar' 179 | }, 180 | label: 181 | ` 182 |
183 | 187 |
Navbar
188 |
189 | `, 190 | content: 191 | ` 192 |
193 |
194 |
195 | 225 |
226 |
227 |
228 | `, 229 | render: ({ model, className }) => `
${model.get('label')}
`, 230 | }); 231 | blockManager.add('basic-search', { 232 | category: categories.basic, 233 | attributes: { 234 | title: 'Insert navbar' 235 | }, 236 | label: 237 | ` 238 |
239 | 243 |
Search Bar
244 |
245 | `, 246 | content: ` 247 | 250 | `, 251 | render: ({ model, className }) => `
${model.get('label')}
`, 252 | }); 253 | blockManager.add('basic-hr', { 254 | category: categories.basic, 255 | attributes: { 256 | title: 'Insert hr' 257 | }, 258 | label: 259 | ` 260 |
261 | 265 |
Hr Block
266 |
267 | `, 268 | content: `
`, 269 | render: ({ model, className }) => `
${model.get('label')}
`, 270 | }); 271 | blockManager.add('typography-heading', { 272 | category: categories.typography, 273 | attributes: { 274 | title: 'Insert heading' 275 | }, 276 | label: 277 | ` 278 |
279 | 283 |
Heading
284 |
285 | `, 286 | content: `

Small

`, 287 | render: ({ model, className }) => `
${model.get('label')}
`, 288 | }); 289 | blockManager.add('typography-paragraph', { 290 | category: categories.typography, 291 | attributes: { 292 | title: 'Insert paragraph' 293 | }, 294 | label: 295 | ` 296 |
297 | 301 |
Paragraph
302 |
303 | `, 304 | content: ` 305 |

306 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere. 307 |

308 | `, 309 | render: ({ model, className }) => `
${model.get('label')}
`, 310 | }); 311 | blockManager.add('typography-text-link', { 312 | category: categories.typography, 313 | attributes: { 314 | title: 'Insert text link' 315 | }, 316 | label: 317 | ` 318 |
319 | 323 |
Text Link
324 |
325 | `, 326 | content: `Link`, 327 | render: ({ model, className }) => `
${model.get('label')}
`, 328 | }); 329 | blockManager.add('media-image', { 330 | category: categories.media, 331 | attributes: { 332 | title: 'Insert image' 333 | }, 334 | label: 335 | ` 336 |
337 | 341 |
Image
342 |
343 | `, 344 | content: ``, 345 | render: ({ model, className }) => `
${model.get('label')}
`, 346 | }); 347 | blockManager.add('components-banner-0', { 348 | category: categories.components, 349 | attributes: { 350 | title: 'Insert banner' 351 | }, 352 | label: 353 | ` 354 |
355 | 360 |
Banner 0
361 |
362 | `, 363 | content: 364 | ` 365 |
366 |
367 |
368 |
369 |

Music Application 370 |

371 |

Alone, it's music. 372 |
​​​​​​​Togather its magic. 373 |
374 |
375 |

376 |

Our elite team builds web responsive app for leading companies 377 |

378 |
379 |
380 |
381 |
382 |
383 |
384 | `, 385 | render: ({ model, className }) => `
${model.get('label')}
`, 386 | }); 387 | blockManager.add('components-banner-1', { 388 | category: categories.components, 389 | attributes: { 390 | title: 'Insert banner' 391 | }, 392 | label: 393 | ` 394 |
395 | 400 |
Banner 1
401 |
402 | `, 403 | content: 404 | ` 405 | 406 |
407 |
408 |
409 |
410 |

Recipe
Contest

411 |

412 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 413 |

414 |
415 | How they work 416 |
417 |
418 |
419 |
420 |
421 |
[Remove and insert an image]
422 |
423 |
424 |
425 | 426 | `, 427 | render: ({ model, className }) => `
${model.get('label')}
`, 428 | }); 429 | blockManager.add('components-banner-2', { 430 | category: categories.components, 431 | attributes: { 432 | title: 'Insert banner' 433 | }, 434 | label: 435 | ` 436 |
437 | 442 |
Banner 2
443 |
444 | `, 445 | content: 446 | ` 447 |
448 |
449 |
450 |
451 |

Recipe Contest

452 |

453 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 454 |

455 |
456 | How they work 457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 | `, 465 | render: ({ model, className }) => `
${model.get('label')}
`, 466 | }); 467 | blockManager.add('components-grid-0', { 468 | category: categories.components, 469 | attributes: { 470 | title: 'Insert grid' 471 | }, 472 | label: 473 | ` 474 |
475 | 480 |
Grid 0
481 |
482 | `, 483 | content: 484 | ` 485 |
486 | 500 |
501 |
502 |
503 |
504 |
505 |
506 |

Kerala Chicken Curry

507 |

508 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 509 |

510 |
511 |
512 | By Sarah Elvis 513 |
514 |
515 |
516 |
517 |
518 |
519 |

Kerala Chicken Curry

520 |

521 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius 522 |

523 |
524 |
525 | By Sarah Elvis 526 |
527 |
528 |
529 |
530 |
531 |
532 |

Kerala Chicken Curry

533 |

534 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros 535 |

536 |
537 |
538 | By Sarah Elvis 539 |
540 |
541 |
542 |
543 |
544 | `, 545 | render: ({ model, className }) => `
${model.get('label')}
`, 546 | }); -------------------------------------------------------------------------------- /editor/blocks/linkpreview-elements.js: -------------------------------------------------------------------------------- 1 | blockManager.add('linkpreview-navbar', { 2 | category: categories.mylinkpreview, 3 | attributes: { 4 | title: 'Insert navbar' 5 | }, 6 | label: 7 | ` 8 |
9 |
Navbar
10 |
11 | `, 12 | content: 13 | ` 14 |
15 |
16 |
17 | 47 |
48 |
49 |
50 | `, 51 | render: ({ model, className }) => `
${model.get('label')}
`, 52 | }); 53 | 54 | blockManager.add('linkpreview-middle-banner', { 55 | category: categories.mylinkpreview, 56 | attributes: { 57 | title: 'Insert middle banner' 58 | }, 59 | label: 60 | ` 61 |
62 |
Middle Banner
63 |
64 | `, 65 | content: 66 | ` 67 |
68 |
69 |
70 |
71 |

API for link previews

72 |
Preview links with our REST API. We provide both raw JSON data, along with full embedding link preview capability.
73 |
74 | Documentation 75 | Get API Key 76 |
77 |
78 |
79 |
80 |
81 | `, 82 | render: ({ model, className }) => `
${model.get('label')}
`, 83 | }); 84 | 85 | blockManager.add('linkpreview-col-1-2', { 86 | category: categories.mylinkpreview, 87 | attributes: { 88 | title: 'Insert columns 1-2' 89 | }, 90 | label: 91 | ` 92 |
93 |
Column 1-2
94 |
95 | `, 96 | content: 97 | ` 98 |
99 |
100 |
101 |

Request an API key

102 |

103 | Simply click "Get API Key" to make requests to our api. To read more, see our Documentation for use of the api key. 104 |

105 |
106 |
107 |
108 |
109 |
110 | 132 |
133 |
134 |
135 |
136 |
137 |
138 | `, 139 | render: ({ model, className }) => `
${model.get('label')}
`, 140 | }); 141 | 142 | blockManager.add('linkpreview-features', { 143 | category: categories.mylinkpreview, 144 | attributes: { 145 | title: 'Insert features' 146 | }, 147 | label: 148 | ` 149 |
150 |
Features
151 |
152 | `, 153 | content: 154 | ` 155 |
156 |
157 |

Major features we provide with our service.

158 |
159 |
160 |
161 |

Image

162 | Thumbnail image from the url 163 |
164 |
165 |

Favicon

166 | Website's favicon 167 |
168 |
169 |

Embedding

170 | Responsive link preview on your wesbsite 171 |
172 |
173 |
174 |
175 |
176 |

Title

177 | Obtain page title 178 |
179 |
180 |

Description

181 | Obtain page description 182 |
183 |
184 |

Is Safe Beta

185 | URL risk checker 186 |
187 |
188 |
189 | `, 190 | render: ({ model, className }) => `
${model.get('label')}
`, 191 | }); -------------------------------------------------------------------------------- /editor/blocks/pages.js: -------------------------------------------------------------------------------- 1 | blockManager.add('layout-page-0', { 2 | category: categories.pages, 3 | attributes: { 4 | title: 'Insert page' 5 | }, 6 | label: 7 | ` 8 |
9 | 13 |
Home 0
14 |
15 | `, 16 | content: 17 | ` 18 |
19 |
20 |
21 |
22 |
23 |
24 |

Recipe 25 |
Contest 26 |

27 |

28 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 29 |

30 |
31 | How they work 32 |
33 |
34 |
35 |
36 |
37 |
38 |
[Remove and insert an image] 39 |
40 |
41 |
42 |
43 |
44 |
45 | 59 |
60 |
61 |
62 |
63 |
64 |
65 |

Kerala Chicken Curry 66 |

67 |

68 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 69 |

70 |
71 |
72 | By Sarah Elvis 73 |
74 |
75 |
76 |
77 |
78 |
79 |

Kerala Chicken Curry 80 |

81 |

82 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius 83 |

84 |
85 |
86 | By Sarah Elvis 87 |
88 |
89 |
90 |
91 |
92 |
93 |

Kerala Chicken Curry 94 |

95 |

96 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros 97 |

98 |
99 |
100 | By Sarah Elvis 101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |

Featured 111 |

112 |

Some of our qualified listings. 113 |

114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |

Kerala Chicken Curry 123 |

124 |

125 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 126 |

127 |
128 |
129 | By Sarah Elvis 130 |
131 |
132 |
133 |
134 |
135 |
136 |

Kerala Chicken Curry 137 |

138 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros 139 |

140 |
141 |
142 | By Sarah Elvis 143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |

Recipes 154 |

155 |

156 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 157 |

158 |
159 | Show More Recipes 160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |

Books 170 |

171 |

172 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 173 |

174 |
175 | Show More Books 176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |

Restaurants Near You 187 |

188 |

Very delicios places around your neighbourhood. 189 |

190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |

Kerala Chicken Curry 199 |

200 |

201 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 202 |

203 |
204 |
205 | By Sarah Elvis 206 |
207 |
208 |
209 |
210 |
211 |
212 |

Kerala Chicken Curry 213 |

214 |

215 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius 216 |

217 |
218 |
219 | By Sarah Elvis 220 |
221 |
222 |
223 |
224 |
225 |
226 |

Kerala Chicken Curry 227 |

228 |

229 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros 230 |

231 |
232 |
233 | By Sarah Elvis 234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |

Recipe Contest 245 |

246 |

247 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in 248 |

249 |
250 | How they work 251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 | `, 261 | render: ({ model, className }) => `
${model.get('label')}
`, 262 | }); -------------------------------------------------------------------------------- /editor/blocks/uikit-elements.js: -------------------------------------------------------------------------------- 1 | blockManager.add('uikit-accordion', { 2 | category: categories.uikit, 3 | attributes: { 4 | title: 'Insert accordion' 5 | }, 6 | label: 7 | ` 8 |
9 | 13 |
Accordion
14 |
15 | `, 16 | content: 17 | ` 18 | 38 | `, 39 | render: ({ model, className }) => `
${model.get('label')}
`, 40 | }); 41 | 42 | blockManager.add('uikit-button', { 43 | category: categories.uikit, 44 | attributes: { 45 | title: 'Insert button' 46 | }, 47 | label: 48 | ` 49 |
50 | 54 |
Button
55 |
56 | `, 57 | content: ``, 58 | render: ({ model, className }) => `
${model.get('label')}
`, 59 | }); 60 | 61 | blockManager.add('uikit-card', { 62 | category: categories.uikit, 63 | attributes: { 64 | title: 'Insert card' 65 | }, 66 | label: 67 | ` 68 |
69 | 73 |
Card
74 |
75 | `, 76 | content: 77 | ` 78 |
79 |

Default

80 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

81 |
82 | `, 83 | render: ({ model, className }) => `
${model.get('label')}
`, 84 | }); 85 | 86 | blockManager.add('uikit-column', { 87 | category: categories.uikit, 88 | attributes: { 89 | title: 'Insert column' 90 | }, 91 | label: 92 | ` 93 |
94 | 98 |
Column 1-2
99 |
100 | `, 101 | content: 102 | ` 103 |
104 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.

105 | 106 |

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

107 | 108 |

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore.

109 |
110 | `, 111 | render: ({ model, className }) => `
${model.get('label')}
`, 112 | }); 113 | 114 | blockManager.add('uikit-container', { 115 | category: categories.uikit, 116 | attributes: { 117 | title: 'Insert container' 118 | }, 119 | label: 120 | ` 121 |
122 | 126 |
Container
127 |
128 | `, 129 | content: 130 | ` 131 |
132 |

A simple container

133 |
134 | `, 135 | render: ({ model, className }) => `
${model.get('label')}
`, 136 | }); 137 | 138 | blockManager.add('uikit-grid', { 139 | category: categories.uikit, 140 | attributes: { 141 | title: 'Insert grid' 142 | }, 143 | label: 144 | ` 145 |
146 | 150 |
Grid
151 |
152 | `, 153 | content: 154 | ` 155 |
156 |
157 |
Auto
158 |
159 |
160 |
1-3
161 |
162 |
163 |
Expand
164 |
165 |
166 | `, 167 | render: ({ model, className }) => `
${model.get('label')}
`, 168 | }); 169 | 170 | blockManager.add('uikit-heading', { 171 | category: categories.uikit, 172 | attributes: { 173 | title: 'Insert heading' 174 | }, 175 | label: 176 | ` 177 |
178 | 182 |
Heading
183 |
184 | `, 185 | content: 186 | ` 187 |

Small

188 | `, 189 | render: ({ model, className }) => `
${model.get('label')}
`, 190 | }); 191 | 192 | blockManager.add('uikit-link', { 193 | category: categories.uikit, 194 | attributes: { 195 | title: 'Insert link' 196 | }, 197 | label: 198 | ` 199 |
200 | 204 |
Link
205 |
206 | `, 207 | content: 208 | ` 209 | Heading 210 | `, 211 | render: ({ model, className }) => `
${model.get('label')}
`, 212 | }); 213 | 214 | blockManager.add('uikit-nav', { 215 | category: categories.uikit, 216 | attributes: { 217 | title: 'Insert nav' 218 | }, 219 | label: 220 | ` 221 |
222 | 226 |
Nav
227 |
228 | `, 229 | content: 230 | ` 231 | 274 | `, 275 | render: ({ model, className }) => `
${model.get('label')}
`, 276 | }); 277 | 278 | blockManager.add('uikit-section', { 279 | category: categories.uikit, 280 | attributes: { 281 | title: 'Insert section' 282 | }, 283 | label: 284 | ` 285 |
286 | 290 |
Section
291 |
292 | `, 293 | content: 294 | ` 295 |
296 |
297 | 298 |

Section Default

299 | 300 |
301 |
302 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.

303 |
304 |
305 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.

306 |
307 |
308 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.

309 |
310 |
311 | 312 |
313 |
314 | `, 315 | render: ({ model, className }) => `
${model.get('label')}
`, 316 | }); 317 | 318 | blockManager.add('uikit-tile', { 319 | category: categories.uikit, 320 | attributes: { 321 | title: 'Insert tile' 322 | }, 323 | label: 324 | ` 325 |
326 | 330 |
Tile
331 |
332 | `, 333 | content: 334 | ` 335 |
336 |
337 |
338 |

Default

339 |
340 |
341 |
342 |
343 |

Muted

344 |
345 |
346 |
347 |
348 |

Primary

349 |
350 |
351 |
352 |
353 |

Secondary

354 |
355 |
356 |
357 | `, 358 | render: ({ model, className }) => `
${model.get('label')}
`, 359 | }); 360 | 361 | blockManager.add('uikit-width', { 362 | category: categories.uikit, 363 | attributes: { 364 | title: 'Insert width' 365 | }, 366 | label: 367 | ` 368 |
369 | 373 |
Width
374 |
375 | `, 376 | content: 377 | ` 378 |
379 |
380 |
Expand
381 |
382 |
383 |
1-3
384 |
385 |
386 |
Expand
387 |
388 |
389 |
Expand
390 |
391 |
392 | `, 393 | render: ({ model, className }) => `
${model.get('label')}
`, 394 | }); -------------------------------------------------------------------------------- /editor/plugins/custom-code-editor.js: -------------------------------------------------------------------------------- 1 | function customCodeEditor(editor) { 2 | const stylePrefix = editor.getConfig().stylePrefix; 3 | 4 | // let code placeholder 5 | let selectedComponent = ''; 6 | 7 | // Div set up 8 | let codeDivEditor = document.createElement('div'); 9 | codeDivEditor.setAttribute("class", "gjs-cm-editor-c"); 10 | 11 | let codeDiv = document.createElement('div'); 12 | codeDiv.setAttribute("class", "gjs-cm-editor"); 13 | codeDiv.setAttribute("id", "gjs-cm-htmlmixed"); 14 | 15 | let codeDivTitle = document.createElement('div'); 16 | codeDivTitle.setAttribute("id", "gjs-cm-title"); 17 | codeDivTitle.innerHTML = "HTML"; 18 | 19 | let codeDivHTML = document.createElement('div'); 20 | codeDivHTML.setAttribute("id", "gjs-cm-code"); 21 | 22 | let btnSave = document.createElement('button'); 23 | btnSave.innerHTML = 'Apply HTML Changes'; 24 | btnSave.className = stylePrefix + 'btn-prim ' + stylePrefix + 'btn-import ' + stylePrefix + 'btn--full'; 25 | 26 | codeDiv.appendChild(codeDivTitle); 27 | codeDiv.appendChild(codeDivHTML); 28 | codeDiv.appendChild(btnSave); 29 | 30 | codeDivEditor.appendChild(codeDiv); 31 | 32 | const command = editor.Commands 33 | const modal = editor.Modal; 34 | 35 | // CodeMirror setup 36 | var htmlCodeViewer = editor.CodeManager.getViewer('CodeMirror').clone(); 37 | htmlCodeViewer.set({ 38 | codeName: 'htmlmixed', 39 | readOnly: 0, 40 | theme: 'hopscotch', 41 | autoBeautify: true, 42 | autoCloseTags: true, 43 | autoCloseBrackets: true, 44 | lineWrapping: true, 45 | styleActiveLine: true, 46 | smartIndent: true, 47 | indentWithTabs: true, 48 | tabSize: 3, 49 | indentUnit: 3 50 | }); 51 | 52 | // Save code changes 53 | btnSave.onclick = function() { 54 | // Get the new component code 55 | let htmlComponentCode = htmlCodeViewer.editor.getValue(); 56 | 57 | // On the sleced component update the new htmlComponentCode 58 | let replacedComponent = selectedComponent.replaceWith(htmlComponentCode.trim()); 59 | // Now select the replacedComponent 60 | editor.select(replacedComponent); 61 | 62 | // Make message 63 | let msg = ` 64 |
65 |
66 | 67 | 68 | You've updated ${replacedComponent.getName()} component. 69 | 70 |
71 |
72 | `; 73 | 74 | // Send notification 75 | UIkit.notification({ 76 | message: msg, 77 | status: 'primary', 78 | pos: 'bottom-right', 79 | group: 'message', 80 | timeout: 3000 81 | }); 82 | 83 | // close popup 84 | modal.close(); 85 | }; 86 | 87 | // Command for opening the edit 88 | command.add('edit-component-code', { 89 | run: function(editor, sender) { 90 | let component = editor.getSelected(); 91 | 92 | // Make sure component is selected 93 | if (component == undefined) { 94 | console.log("Warnning: No component was selected when executing 'edit-component-code' command"); 95 | return; 96 | } 97 | 98 | if (modal.isOpen()) 99 | modal.close(); 100 | 101 | let htmlViewer = htmlCodeViewer.editor; 102 | if (!htmlViewer) { 103 | let txtarea = document.createElement('textarea'); 104 | codeDivHTML.appendChild(txtarea); 105 | htmlCodeViewer.init(txtarea); 106 | htmlViewer = htmlCodeViewer.editor; 107 | } 108 | 109 | let htmlCode = component.toHTML(); 110 | 111 | // Set the current component of the component to selectedComponent 112 | // so we can compare old and replace with new 113 | selectedComponent = component; 114 | 115 | // Now the set the component code 116 | htmlCodeViewer.setContent(htmlCode); 117 | 118 | modal.setTitle('Component Code'); 119 | modal.setContent(codeDivEditor); 120 | modal.open(); 121 | 122 | htmlViewer.refresh(); 123 | } 124 | }); 125 | 126 | // Open component settings on selection 127 | editor.on('component:selected', () => { 128 | const component = editor.getSelected(); 129 | 130 | // Switch view to open-tm (open trait manager) 131 | editor.Panels.getButton('views', 'open-tm').set('active', true); 132 | 133 | // Get the trait manger code button existance 134 | const tmCodeBtn = component.get('traits').where({ 135 | name: 'tm-code-btn' 136 | }); 137 | 138 | // Is the array empty? 139 | if (tmCodeBtn.length == 0) { 140 | 141 | // Adding button to trait manager 142 | component.addTrait({ 143 | name: 'tm-code-btn', // Name is how we ref the trait 144 | type: 'button', 145 | text: 'Edit ' + component.getName() + ' Code', 146 | full: true, // Full width button 147 | label: false, 148 | command: 'edit-component-code' 149 | }, { 150 | at: 0 151 | }); 152 | } 153 | }); 154 | }; -------------------------------------------------------------------------------- /editor/plugins/custom-page-manager.js: -------------------------------------------------------------------------------- 1 | function customPageManager(editor) { 2 | const panelManager = editor.Panels; 3 | 4 | var pages = { 5 | current: 1, 6 | pages: [ 7 | { components: [], style: [] }, 8 | ] 9 | } 10 | 11 | // Adding new button 12 | panelManager.addButton('views', [{ 13 | id: 'manage-pages', 14 | className: 'gjs-pn-btn', 15 | command: '', 16 | active: false, 17 | label: `` 18 | }]); 19 | 20 | } -------------------------------------------------------------------------------- /editor/plugins/customize-devices.js: -------------------------------------------------------------------------------- 1 | function customizeDevices(editor) { 2 | const panelManager = editor.Panels; 3 | 4 | // Hide default devices 5 | editor.getConfig().showDevices = 0; 6 | 7 | // Device icons manager 8 | panelManager.addPanel({ id: "devices-c" }).get("buttons").add([ 9 | { 10 | id: "set-device-desktop", 11 | command: function(e) { return e.setDevice("Desktop") }, 12 | className: "gjs-dekstop-device", 13 | active: true, 14 | label: `` 15 | }, 16 | { 17 | id: "set-device-tablet", 18 | command: function(e) { return e.setDevice("Tablet") }, 19 | className: "gjs-tablet-device", 20 | label: `` 21 | }, 22 | { 23 | id: "set-device-mobile", 24 | command: function(e) { return e.setDevice("Mobile portrait") }, 25 | className: "gjs-mobile-portrait-device", 26 | label: `` 27 | }, 28 | ]); 29 | 30 | } -------------------------------------------------------------------------------- /editor/plugins/customize-options.js: -------------------------------------------------------------------------------- 1 | function customizeOptions(editor) { 2 | const panelManager = editor.Panels; 3 | const command = editor.Commands 4 | 5 | // Command for opening the edit 6 | command.add('custom-clear-canvas', { 7 | run: function(editor, sender) { 8 | // Clear components 9 | editor.DomComponents.clear(); 10 | // Clear styles 11 | editor.CssComposer.clear(); 12 | // Clear undo history 13 | editor.UndoManager.clear(); 14 | 15 | // Make message 16 | let msg = ` 17 |
18 |
19 | 20 | 21 | You've cleared your canvas. 22 | 23 |
24 |
25 | `; 26 | 27 | // Send notification 28 | UIkit.notification({ 29 | message: msg, 30 | status: 'primary', 31 | pos: 'bottom-right', 32 | group: 'message', 33 | timeout: 3000 34 | }); 35 | } 36 | }); 37 | 38 | // Options button manager 39 | panelManager.getButton('options', 'sw-visibility').set({ 40 | id: "sw-visibility", 41 | className: 'gjs-pn-btn', 42 | command: "sw-visibility", 43 | active: true, 44 | label: `` 45 | }); 46 | panelManager.getButton('options', 'preview').set({ 47 | id: "preview", 48 | className: 'gjs-pn-btn', 49 | command: "preview", 50 | active: false, 51 | label: `` 52 | }); 53 | panelManager.getButton('options', 'fullscreen').set({ 54 | id: "fullscreen", 55 | className: 'gjs-pn-btn', 56 | command: "fullscreen", 57 | active: false, 58 | label: `` 59 | }); 60 | panelManager.getButton('options', 'export-template').set({ 61 | id: "export-template", 62 | className: 'gjs-pn-btn', 63 | command: "export-template", 64 | active: false, 65 | label: `` 66 | }); 67 | 68 | // Adding new button 69 | panelManager.addButton('options', [{ 70 | id: 'clear-canvas', 71 | className: 'gjs-pn-btn', 72 | command: 'custom-clear-canvas', 73 | active: false, 74 | label: `` 75 | }, ]); 76 | 77 | } -------------------------------------------------------------------------------- /editor/plugins/customize-views.js: -------------------------------------------------------------------------------- 1 | function customizeViews(editor) { 2 | const panelManager = editor.Panels; 3 | 4 | // Views button manager 5 | panelManager.getButton('views', 'open-sm').set({ 6 | id: "open-sm", 7 | className: 'gjs-pn-btn', 8 | command: "open-sm", 9 | active: true, 10 | attributes: { 11 | title: "Open Style Manager" 12 | }, 13 | label: `` 14 | }); 15 | panelManager.getButton('views', 'open-tm').set({ 16 | id: "open-tm", 17 | className: 'gjs-pn-btn', 18 | command: "open-tm", 19 | active: false, 20 | attributes: { 21 | title: "Open Settings" 22 | }, 23 | label: `` 24 | }); 25 | panelManager.getButton('views', 'open-layers').set({ 26 | id: "open-layers", 27 | className: 'gjs-pn-btn', 28 | command: "open-layers", 29 | active: false, 30 | attributes: { 31 | title: "Open Layers" 32 | }, 33 | label: `` 34 | }); 35 | panelManager.getButton('views', 'open-blocks').set({ 36 | id: "open-blocks", 37 | className: 'gjs-pn-btn', 38 | command: "open-blocks", 39 | active: false, 40 | attributes: { 41 | title: "Open Blocks" 42 | }, 43 | label: `` 44 | }); 45 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | 34 | 35 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /storage/page_1.txt: -------------------------------------------------------------------------------- 1 | {"gjs-html":"

Recipe\n\t\t
Contest\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\n\t\t

[Remove and insert an image]\n\t\t
\n\t\t

Kerala Chicken Curry\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\n\t\t

\n\t\t

Kerala Chicken Curry\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius\n\t\t

\n\t\t

Kerala Chicken Curry\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros\n\t\t


Featured\n\t\t

Some of our qualified listings.\n\t\t

\n\t\t

Kerala Chicken Curry\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\n\t\t

\n\t\t

Kerala Chicken Curry\n\t\t

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros\n\t\t

Recipes\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\n\t\t

Books\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\n\t\t


Restaurants Near You\n\t\t

Very delicios places around your neighbourhood.\n\t\t

\n\t\t

Kerala Chicken Curry\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\n\t\t

\n\t\t

Kerala Chicken Curry\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius\n\t\t

\n\t\t

Kerala Chicken Curry\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros\n\t\t

Recipe Contest\n\t\t

\n\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\n\t\t

","gjs-components":"[{\"content\":\"\",\"classes\":[{\"name\":\"uk-section\",\"label\":\"uk-section\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-section-default\",\"label\":\"uk-section-default\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-position-relative\",\"label\":\"uk-position-relative\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-container\",\"label\":\"uk-container\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-medium\",\"label\":\"uk-padding-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-container-large\",\"label\":\"uk-container-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-box-shadow-small\",\"label\":\"uk-box-shadow-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"ilqj\"},\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-grid\",\"label\":\"uk-grid\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-3\",\"label\":\"uk-width-1-3\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex\",\"label\":\"uk-flex\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-middle\",\"label\":\"uk-flex-middle\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-medium\",\"label\":\"uk-padding-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"im06m\"},\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-medium\",\"label\":\"uk-width-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"\",\"classes\":[{\"name\":\"uk-heading-small\",\"label\":\"uk-heading-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"tagName\":\"\",\"type\":\"textnode\",\"content\":\"Recipe\\n\\t\\t \"},{\"tagName\":\"br\",\"void\":true,\"content\":\"\"},{\"tagName\":\"\",\"type\":\"textnode\",\"content\":\"Contest\\n\\t\\t \"}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"i101\"},\"components\":[{\"type\":\"link\",\"content\":\"How they work\",\"classes\":[{\"name\":\"uk-display-inline\",\"label\":\"uk-display-inline\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\",\"id\":\"ihbt\"}},{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-display-inline\",\"label\":\"uk-display-inline\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"ik43h\"}}]}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-expand\",\"label\":\"uk-width-expand\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-height-large\",\"label\":\"uk-height-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"text\",\"content\":\"[Remove and insert an image]\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-1-1\",\"label\":\"uk-height-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-placeholder\",\"label\":\"uk-placeholder\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex\",\"label\":\"uk-flex\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-middle\",\"label\":\"uk-flex-middle\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-center\",\"label\":\"uk-flex-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-margin-medium-top\",\"label\":\"uk-margin-medium-top\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"iwwqm\"},\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-grid\",\"label\":\"uk-grid\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"tagName\":\"ul\",\"content\":\"\",\"classes\":[{\"name\":\"uk-nav\",\"label\":\"uk-nav\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-nav-default\",\"label\":\"uk-nav-default\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-5\",\"label\":\"uk-width-1-5\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"tagName\":\"li\",\"content\":\"\",\"classes\":[{\"name\":\"uk-active\",\"label\":\"uk-active\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"Filter By\",\"classes\":[{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-large\",\"label\":\"uk-text-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\",\"id\":\"imyez\"}}]},{\"tagName\":\"li\",\"content\":\"\",\"components\":[{\"type\":\"link\",\"content\":\"Contest Winners\",\"attributes\":{\"href\":\"#\",\"id\":\"ir8xk\"}}]},{\"tagName\":\"li\",\"content\":\"\",\"attributes\":{\"id\":\"ihacp\"},\"components\":[{\"type\":\"link\",\"content\":\"Featured\",\"attributes\":{\"href\":\"#\",\"id\":\"i59ca\"}}]},{\"tagName\":\"li\",\"content\":\"\",\"attributes\":{\"id\":\"imz84\"},\"components\":[{\"type\":\"link\",\"content\":\"Test Kitchen-Approved\",\"attributes\":{\"href\":\"#\",\"id\":\"ik4bt\"}}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-expand\",\"label\":\"uk-width-expand\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-text-center\",\"label\":\"uk-text-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-grid\",\"label\":\"uk-grid\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-3\",\"label\":\"uk-width-1-3\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"itdh\"},\"components\":[{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-small\",\"label\":\"uk-height-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-box-shadow-medium\",\"label\":\"uk-box-shadow-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"idp1f\"}},{\"content\":\"\",\"attributes\":{\"id\":\"i8wvs\"},\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Kerala Chicken Curry\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"ilthm\"}},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"ihon8\"},\"components\":[{\"type\":\"link\",\"content\":\"By Sarah Elvis\",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-left\",\"label\":\"uk-align-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-3\",\"label\":\"uk-width-1-3\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-small\",\"label\":\"uk-height-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-box-shadow-medium\",\"label\":\"uk-box-shadow-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"ibqq7\"}},{\"content\":\"\",\"attributes\":{\"id\":\"iqy5m\"},\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Kerala Chicken Curry\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"By Sarah Elvis\",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-left\",\"label\":\"uk-align-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-3\",\"label\":\"uk-width-1-3\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"ipjr\"},\"components\":[{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-small\",\"label\":\"uk-height-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-box-shadow-medium\",\"label\":\"uk-box-shadow-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"i59ih\"}},{\"content\":\"\",\"attributes\":{\"id\":\"i7bxa\"},\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Kerala Chicken Curry\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"By Sarah Elvis\",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-left\",\"label\":\"uk-align-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}}]}]}]}]}]}]},{\"tagName\":\"hr\",\"void\":true,\"content\":\"\"},{\"content\":\"\",\"classes\":[{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"isuyk\"},\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Featured\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-large\",\"label\":\"uk-text-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"Some of our qualified listings.\\n\\t\\t \",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-grid\",\"label\":\"uk-grid\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-expand\",\"label\":\"uk-width-expand\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-text-center\",\"label\":\"uk-text-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-grid\",\"label\":\"uk-grid\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-2\",\"label\":\"uk-width-1-2\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-small\",\"label\":\"uk-height-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-box-shadow-medium\",\"label\":\"uk-box-shadow-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Kerala Chicken Curry\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"By Sarah Elvis\",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-left\",\"label\":\"uk-align-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-2\",\"label\":\"uk-width-1-2\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-small\",\"label\":\"uk-height-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-box-shadow-medium\",\"label\":\"uk-box-shadow-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Kerala Chicken Curry\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim inLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"By Sarah Elvis\",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-left\",\"label\":\"uk-align-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}}]}]}]}]}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-grid\",\"label\":\"uk-grid\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"i49l79\"},\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-large\",\"label\":\"uk-padding-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-2\",\"label\":\"uk-width-1-2\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-flex\",\"label\":\"uk-flex\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-middle\",\"label\":\"uk-flex-middle\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-medium\",\"label\":\"uk-padding-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-center\",\"label\":\"uk-flex-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-center\",\"label\":\"uk-text-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Recipes\\n\\t\\t \",\"classes\":[{\"name\":\"uk-heading-small\",\"label\":\"uk-heading-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-medium\",\"label\":\"uk-width-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-center\",\"label\":\"uk-align-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"Show More Recipes\",\"classes\":[{\"name\":\"uk-display-inline\",\"label\":\"uk-display-inline\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}},{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-display-inline\",\"label\":\"uk-display-inline\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]}]}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-large\",\"label\":\"uk-padding-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-2\",\"label\":\"uk-width-1-2\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-flex\",\"label\":\"uk-flex\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-middle\",\"label\":\"uk-flex-middle\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-medium\",\"label\":\"uk-padding-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-center\",\"label\":\"uk-flex-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-center\",\"label\":\"uk-text-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Books\\n\\t\\t \",\"classes\":[{\"name\":\"uk-heading-small\",\"label\":\"uk-heading-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-medium\",\"label\":\"uk-width-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-center\",\"label\":\"uk-align-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"Show More Books\",\"classes\":[{\"name\":\"uk-display-inline\",\"label\":\"uk-display-inline\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}},{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-display-inline\",\"label\":\"uk-display-inline\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]}]}]}]}]},{\"tagName\":\"hr\",\"void\":true,\"content\":\"\"},{\"content\":\"\",\"classes\":[{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"iqljz\"},\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Restaurants Near You\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-large\",\"label\":\"uk-text-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"i53ze\"}},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"Very delicios places around your neighbourhood.\\n\\t\\t \",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"iyp9dj\"}}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-grid\",\"label\":\"uk-grid\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-expand\",\"label\":\"uk-width-expand\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-text-center\",\"label\":\"uk-text-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-grid\",\"label\":\"uk-grid\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-3\",\"label\":\"uk-width-1-3\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-small\",\"label\":\"uk-height-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-box-shadow-medium\",\"label\":\"uk-box-shadow-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Kerala Chicken Curry\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"By Sarah Elvis\",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-left\",\"label\":\"uk-align-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-3\",\"label\":\"uk-width-1-3\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-small\",\"label\":\"uk-height-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-box-shadow-medium\",\"label\":\"uk-box-shadow-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Kerala Chicken Curry\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"By Sarah Elvis\",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-left\",\"label\":\"uk-align-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-3\",\"label\":\"uk-width-1-3\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-height-small\",\"label\":\"uk-height-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-box-shadow-medium\",\"label\":\"uk-box-shadow-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Kerala Chicken Curry\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"type\":\"link\",\"content\":\"By Sarah Elvis\",\"classes\":[{\"name\":\"uk-margin-remove\",\"label\":\"uk-margin-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-left\",\"label\":\"uk-align-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\"}}]}]}]}]}]}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-container\",\"label\":\"uk-container\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small\",\"label\":\"uk-margin-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-medium\",\"label\":\"uk-padding-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-container-large\",\"label\":\"uk-container-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-margin-small-remove\",\"label\":\"uk-margin-small-remove\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-box-shadow-small\",\"label\":\"uk-box-shadow-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-border-rounded\",\"label\":\"uk-border-rounded\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-large\",\"label\":\"uk-padding-large\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"ilqj-2\"},\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-flex\",\"label\":\"uk-flex\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-middle\",\"label\":\"uk-flex-middle\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-padding-medium\",\"label\":\"uk-padding-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-flex-center\",\"label\":\"uk-flex-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"im06m-2\"},\"components\":[{\"content\":\"\",\"classes\":[{\"name\":\"uk-padding-small\",\"label\":\"uk-padding-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-left\",\"label\":\"uk-text-left\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-center\",\"label\":\"uk-text-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"components\":[{\"tagName\":\"h1\",\"type\":\"text\",\"content\":\"Recipe Contest\\n\\t\\t \",\"classes\":[{\"name\":\"uk-heading-small\",\"label\":\"uk-heading-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-text-bold\",\"label\":\"uk-text-bold\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"tagName\":\"p\",\"type\":\"text\",\"content\":\"\\n\\t\\t Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in\\n\\t\\t \",\"classes\":[{\"name\":\"uk-text-small\",\"label\":\"uk-text-small\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-width-medium\",\"label\":\"uk-width-medium\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-align-center\",\"label\":\"uk-align-center\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false},{\"name\":\"uk-clearfix\",\"label\":\"uk-clearfix\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}]},{\"content\":\"\",\"classes\":[{\"name\":\"uk-width-1-1\",\"label\":\"uk-width-1-1\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"i101-2\"},\"components\":[{\"type\":\"link\",\"content\":\"How they work\",\"classes\":[{\"name\":\"uk-display-inline\",\"label\":\"uk-display-inline\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"href\":\"#\",\"id\":\"ihbt-2\"}},{\"type\":\"text\",\"content\":\"\\n\\t\\t \",\"classes\":[{\"name\":\"uk-display-inline\",\"label\":\"uk-display-inline\",\"type\":1,\"active\":true,\"private\":false,\"protected\":false}],\"attributes\":{\"id\":\"ik43h-2\"}}]}]}]}]}]}]}]}]","gjs-assets":"[]","gjs-css":"* { box-sizing: border-box; } body {margin: 0;}","gjs-styles":"[]"} -------------------------------------------------------------------------------- /storage/save.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /uploads/images/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/images/0.jpg -------------------------------------------------------------------------------- /uploads/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/images/1.jpg -------------------------------------------------------------------------------- /uploads/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/images/2.jpg -------------------------------------------------------------------------------- /uploads/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/images/3.jpg -------------------------------------------------------------------------------- /uploads/images/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/images/4.jpg -------------------------------------------------------------------------------- /uploads/images/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/images/5.jpg -------------------------------------------------------------------------------- /uploads/images/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/images/6.jpg -------------------------------------------------------------------------------- /uploads/preview/components.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/preview/components.gif -------------------------------------------------------------------------------- /uploads/preview/preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/preview/preview.gif -------------------------------------------------------------------------------- /uploads/preview/sidebar.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/preview/sidebar.PNG -------------------------------------------------------------------------------- /uploads/preview/sidebar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/preview/sidebar.gif -------------------------------------------------------------------------------- /uploads/preview/trash_and_component_code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ziaahsan/template-builder/5d7606d5d4f5a3f67abc0aa299cc3f0961503152/uploads/preview/trash_and_component_code.gif --------------------------------------------------------------------------------