@myissue/vue-website-page-builder 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +470 -0
  3. package/dist/android-chrome-192x192.png +0 -0
  4. package/dist/android-chrome-512x512.png +0 -0
  5. package/dist/apple-touch-icon.png +0 -0
  6. package/dist/browserconfig.xml +9 -0
  7. package/dist/components.json +36 -0
  8. package/dist/favicon-16x16.png +0 -0
  9. package/dist/favicon-32x32.png +0 -0
  10. package/dist/favicon.ico +0 -0
  11. package/dist/home/features.jpg +0 -0
  12. package/dist/home/page-builder-example.jpg +0 -0
  13. package/dist/logo/logo.svg +49 -0
  14. package/dist/mstile-310x150.png +0 -0
  15. package/dist/mstile-310x310.png +0 -0
  16. package/dist/page-builder/2-images-text-top.png +0 -0
  17. package/dist/page-builder/2-images.png +0 -0
  18. package/dist/page-builder/3-images.png +0 -0
  19. package/dist/page-builder/6-images.png +0 -0
  20. package/dist/page-builder/image.png +0 -0
  21. package/dist/page-builder/placeholder.jpg +0 -0
  22. package/dist/page-builder/two-vertical-images.png +0 -0
  23. package/dist/placeholder_image.jpg +0 -0
  24. package/dist/robots.txt +2 -0
  25. package/dist/vue-website-page-builder.css +1 -0
  26. package/dist/vue-website-page-builder.js +24794 -0
  27. package/dist/vue-website-page-builder.umd.cjs +195 -0
  28. package/package.json +99 -0
  29. package/src/App.vue +122 -0
  30. package/src/Components/Homepage/Footer.vue +42 -0
  31. package/src/Components/Homepage/HomeSection.vue +540 -0
  32. package/src/Components/Homepage/Navbar.vue +30 -0
  33. package/src/Components/Layouts/FullWidthElement.vue +34 -0
  34. package/src/Components/Loaders/FullScreenSpinner.vue +13 -0
  35. package/src/Components/Loaders/SmallUniversalSpinner.vue +26 -0
  36. package/src/Components/MediaLibrary/SidebarUnsplash.vue +40 -0
  37. package/src/Components/MediaLibrary/Unsplash.vue +306 -0
  38. package/src/Components/Modals/DynamicModal.vue +476 -0
  39. package/src/Components/Modals/MediaLibraryModal.vue +418 -0
  40. package/src/Components/Modals/Modal.vue +102 -0
  41. package/src/Components/Modals/PageBuilderModal.vue +233 -0
  42. package/src/Components/Modals/PageBuilderPreviewModal.vue +123 -0
  43. package/src/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue +202 -0
  44. package/src/Components/PageBuilder/DropdownsPlusToggles/SaveDesign.vue +7 -0
  45. package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +91 -0
  46. package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +163 -0
  47. package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +164 -0
  48. package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +80 -0
  49. package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +93 -0
  50. package/src/Components/PageBuilder/EditorMenu/Editables/DeleteElement.vue +42 -0
  51. package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +338 -0
  52. package/src/Components/PageBuilder/EditorMenu/Editables/ElementEditor.vue +58 -0
  53. package/src/Components/PageBuilder/EditorMenu/Editables/ImageEditor.vue +82 -0
  54. package/src/Components/PageBuilder/EditorMenu/Editables/LinkEditor.vue +301 -0
  55. package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +109 -0
  56. package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +107 -0
  57. package/src/Components/PageBuilder/EditorMenu/Editables/OpacityEditor.vue +16 -0
  58. package/src/Components/PageBuilder/EditorMenu/Editables/PaddingPlusMargin.vue +134 -0
  59. package/src/Components/PageBuilder/EditorMenu/Editables/TextColorEditor.vue +91 -0
  60. package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +199 -0
  61. package/src/Components/PageBuilder/EditorMenu/EditorAccordion.vue +42 -0
  62. package/src/Components/PageBuilder/EditorMenu/RightSidebarEditor.vue +113 -0
  63. package/src/Components/PageBuilder/Settings/AdvancedPageBuilderSettings.vue +229 -0
  64. package/src/Components/PageBuilder/Settings/PageBuilderSettings.vue +101 -0
  65. package/src/Components/PageBuilder/Slidebars/SlideOverRight.vue +91 -0
  66. package/src/Components/PageBuilder/Slidebars/SlideOverRightParent.vue +91 -0
  67. package/src/Components/Search/SearchComponents.vue +259 -0
  68. package/src/Components/TipTap/TipTap.vue +32 -0
  69. package/src/Components/TipTap/TipTapInput.vue +325 -0
  70. package/src/PageBuilder/PageBuilder.vue +347 -0
  71. package/src/PageBuilder/Preview.vue +24 -0
  72. package/src/composables/PageBuilder.ts +1483 -0
  73. package/src/composables/delay.ts +5 -0
  74. package/src/composables/extract-text-content-html.ts +34 -0
  75. package/src/composables/isObject.ts +6 -0
  76. package/src/composables/usePromise.ts +10 -0
  77. package/src/composables/vueFetch.ts +278 -0
  78. package/src/css/app.css +614 -0
  79. package/src/index.ts +16 -0
  80. package/src/main.ts +11 -0
  81. package/src/stores/media-library.ts +34 -0
  82. package/src/stores/page-builder-state.ts +461 -0
  83. package/src/stores/unsplash.ts +107 -0
  84. package/src/stores/user.ts +30 -0
  85. package/src/types/global.d.ts +49 -0
  86. package/src/utils/builder/compiledCSS.ts +2205 -0
  87. package/src/utils/builder/html-doc-declaration-with-components.ts +7 -0
  88. package/src/utils/builder/html-elements/componentHelpers.ts +101 -0
  89. package/src/utils/builder/tailwaind-colors.ts +503 -0
  90. package/src/utils/builder/tailwind-border-radius.ts +67 -0
  91. package/src/utils/builder/tailwind-border-style-width-color.ts +272 -0
  92. package/src/utils/builder/tailwind-font-sizes.ts +76 -0
  93. package/src/utils/builder/tailwind-font-styles.ts +24 -0
  94. package/src/utils/builder/tailwind-opacities.ts +45 -0
  95. package/src/utils/builder/tailwind-padding-margin.ts +159 -0
@@ -0,0 +1,540 @@
1
+ <script setup>
2
+ const emit = defineEmits(['handleButton']);
3
+ import FullWidthElement from '@/Components/Layouts/FullWidthElement.vue';
4
+
5
+ // first button function
6
+ const handleButton = function () {
7
+ emit('handleButton');
8
+ };
9
+
10
+ const features = [
11
+ {
12
+ name: 'Live Drag & Drop Builder',
13
+ description:
14
+ 'Click & Drop content on a page and watch your pages come to life. Bring your vision to life and create impressive pages using a click & drop Page Builder',
15
+ },
16
+ {
17
+ name: 'True Visual Editing',
18
+ description:
19
+ 'See your changes in real-time as you make them. Elevate your creative vision and create pages using an intuitive click & drop page builder. Break free from design limitations and turn your visions into reality.',
20
+ },
21
+ {
22
+ name: 'Features',
23
+ description:
24
+ 'Click & Drop, Reordering, True Visual Editing, Responsive Editing, Font Customization, Undo & Redo, Text Editing, Media Library, Unsplash Integration, YouTube Videos.',
25
+ },
26
+ {
27
+ name: 'Technologies',
28
+ description:
29
+ 'Developed with JavaScript, Vue 3, Composition API, Pinia, CSS, Tailwind CSS and HTML.',
30
+ },
31
+ {
32
+ name: 'Set Brand and Link Colors one place',
33
+ description:
34
+ 'Global Styles for fonts, designs, & colors. Set Brand and Link Colors once and apply them across the entire Platform with ease.',
35
+ },
36
+ {
37
+ name: 'Mobile-First Approach',
38
+ description:
39
+ 'Developed with Mobile-First approach. The Page Builder even works on mobile phones.',
40
+ },
41
+ {
42
+ name: 'Media Library',
43
+ description:
44
+ 'A beautiful and user-friendly media library that allows you to change and update images. Unsplash Integration is included.',
45
+ },
46
+ {
47
+ name: 'Minimal and Intuitive Design',
48
+ description:
49
+ 'Beautiful, elegant and intuitive design. Enhance user engagement with amazing visual experience.',
50
+ },
51
+ ];
52
+ </script>
53
+
54
+ <template>
55
+ <div>
56
+ <div class="myPrimaryWidthScreenModule bg-red-50 lg:block">
57
+ <div class="myPrimaryContentSection">
58
+ <h2 class="mySecondaryHeader">
59
+ Bring your vision to life and create impressive pages using a click &
60
+ drop Page Builder
61
+ </h2>
62
+ <p class="myPrimaryParagraph font-normal">
63
+ The web builder for stunning pages. Enable users to design and publish
64
+ modern pages at any scale. Build responsive pages like listings, jobs
65
+ or blog posts and manage content easily using the free click & drop
66
+ Page Builder. Developed with JavaScript, Vue 3, Composition API,
67
+ Pinia, CSS, Tailwind CSS and HTML
68
+ <br />
69
+ <a
70
+ class="text-myPrimaryLinkColor font-medium"
71
+ href="https://github.com/qaiswardag/vue-website-page-builder"
72
+ target="_blank"
73
+ >
74
+ Go to the GitHub repository
75
+ </a>
76
+ or
77
+ <span
78
+ @click="handleButton"
79
+ class="text-myPrimaryLinkColor font-medium cursor-pointer"
80
+ >
81
+ play around with the page builder.
82
+ </span>
83
+ </p>
84
+ </div>
85
+ <div
86
+ @click="handleButton"
87
+ class="myPrimaryContentSection cursor-pointer"
88
+ >
89
+ <div
90
+ class="relative overflow-hidden bg-cover bg-no-repeat grid grid-cols-12 h-[68rem] rounded-2xl shadow-sm outline outline-2 outline-offset-4 outline-myPrimaryLinkColor hover:outline-myPrimaryLinkColor/50"
91
+ style="background-image: url('/home/page-builder-example.jpg')"
92
+ >
93
+ <div
94
+ class="col-span-12 px-4 top-0 h-[4rem] w-full border-b border-gray-200"
95
+ >
96
+ <div class="flex items-center justify-between h-full">
97
+ <div
98
+ class="lg:flex hidden items-center justify-end myPrimaryGap h-full"
99
+ >
100
+ <div class="flex gap-2">
101
+ <span
102
+ class="w-2 h-2 rounded-full bg-red-400 hover:bg-red-600"
103
+ ></span
104
+ ><span
105
+ class="w-2 h-2 rounded-full bg-yellow-400 hover:bg-yellow-600"
106
+ ></span
107
+ ><span
108
+ class="w-2 h-2 rounded-full bg-green-400 hover:bg-green-600"
109
+ ></span>
110
+ </div>
111
+ </div>
112
+ <div class="flex justify-center items-center gap-2">
113
+ <button
114
+ type="button"
115
+ class="mySecondaryButton text-[10px] py-2 px-6 cursor-default min-h-2 lg:block hidden"
116
+ >
117
+ Save</button
118
+ ><button
119
+ type="button"
120
+ class="mySecondaryButton text-[10px] py-2 px-6 cursor-default min-h-2"
121
+ >
122
+ Publish
123
+ </button>
124
+ <button
125
+ type="button"
126
+ class="myPrimaryButton text-[10px] py-2 px-6 min-h-2 cursor-pointer"
127
+ >
128
+ Demo
129
+ </button>
130
+ </div>
131
+ <div class="lg:flex hidden justify-center items-center gap-2">
132
+ <p class="myPrimaryParagraph text-[10px] text-white italic">
133
+ Editing: Listing ID 1
134
+ </p>
135
+ </div>
136
+ <div class="flex items-center justify-end myPrimaryGap h-full">
137
+ <div
138
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
139
+ >
140
+ <span class="material-symbols-outlined"> add </span>
141
+ </div>
142
+ <div
143
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
144
+ >
145
+ <span class="material-symbols-outlined"> visibility </span>
146
+ </div>
147
+ <div class="lg:flex hidden justify-center items-center gap-2">
148
+ <p
149
+ class="myPrimaryParagraph text-[12px] text-white font-medium"
150
+ >
151
+ Page Builder
152
+ </p>
153
+ </div>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ <div
158
+ class="lg:col-span-9 col-span-5 top-0 w-full h-[64rem] rounded-l-2xl"
159
+ >
160
+ <div class="flex items-center justify-between">
161
+ <div
162
+ class="w-[4rem] bg-red-100 bg-opacity-50 hover:bg-opacity-40 h-[40rem] rounded-full pt-8 ml-2"
163
+ >
164
+ <div class="flex flex-col justify-center items-center gap-8">
165
+ <div
166
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
167
+ >
168
+ <span class="material-symbols-outlined">
169
+ arrow_selector_tool
170
+ </span>
171
+ </div>
172
+ <div
173
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
174
+ >
175
+ <span class="material-symbols-outlined"> add </span>
176
+ </div>
177
+ <div
178
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
179
+ >
180
+ <span class="material-symbols-outlined"> replay </span>
181
+ </div>
182
+ <div
183
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryErrorColor hover:text-white focus-visible:ring-0"
184
+ >
185
+ <span class="material-symbols-outlined"> delete </span>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ <div
190
+ class="flex items-center justify-center w-full h-[64rem] pt-2 pr-8"
191
+ >
192
+ <div
193
+ class="lg:flex hidden items-center w-full h-full justify-end"
194
+ >
195
+ <div class="flex flex-col gap-2">
196
+ <div
197
+ class="w-[22rem] rounded-2xl hover:bg-opacity-80 flex flex-col justify-between top-0"
198
+ >
199
+ <div class="flex items-center justify-end gap-2">
200
+ <button
201
+ class="myPrimaryParagraph mySecondaryButton text-[10px] py-2 px-6 cursor-default min-h-2"
202
+ >
203
+ Add text element
204
+ </button>
205
+ <div
206
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
207
+ >
208
+ <span class="material-symbols-outlined text-[20px]">
209
+ edit
210
+ </span>
211
+ </div>
212
+ <div
213
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
214
+ >
215
+ <span class="material-symbols-outlined text-[20px]">
216
+ add
217
+ </span>
218
+ </div>
219
+ <div
220
+ class="h-8 w-8 rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryErrorColor hover:text-white focus-visible:ring-0"
221
+ >
222
+ <span class="material-symbols-outlined text-[20px]">
223
+ delete
224
+ </span>
225
+ </div>
226
+ </div>
227
+ </div>
228
+ <div
229
+ class="lg:flex hidden items-center w-full h-full justify-end"
230
+ >
231
+ <div
232
+ class="w-[22rem] h-[10rem] rounded-2xl bg-gray-200 bg-opacity-90 hover:bg-opacity-80 py-8 flex flex-col justify-between top-0"
233
+ >
234
+ <div
235
+ class="py-2 flex justify-between gap-4 px-4 bg-gray-400 rounded-full mx-6 bg-opacity-30"
236
+ >
237
+ <span class="material-symbols-outlined text-[20px]">
238
+ format_bold </span
239
+ ><span class="material-symbols-outlined text-[20px]">
240
+ format_italic </span
241
+ ><span class="material-symbols-outlined text-[20px]">
242
+ format_color_text </span
243
+ ><span class="material-symbols-outlined text-[20px]">
244
+ format_align_left
245
+ </span>
246
+ </div>
247
+ <div
248
+ class="py-2 flex justify-between gap-4 px-4 bg-gray-400 rounded-full mx-6 bg-opacity-30"
249
+ >
250
+ <span class="material-symbols-outlined text-[20px]">
251
+ format_shapes </span
252
+ ><span class="material-symbols-outlined text-[20px]">
253
+ add_photo_alternate </span
254
+ ><span class="material-symbols-outlined text-[20px]">
255
+ colors </span
256
+ ><span class="material-symbols-outlined text-[20px]">
257
+ attach_file
258
+ </span>
259
+ </div>
260
+ </div>
261
+ </div>
262
+ </div>
263
+ </div>
264
+ </div>
265
+ </div>
266
+ </div>
267
+ <div
268
+ class="lg:col-span-3 col-span-7 px-4 top-0 w-full bg-gray-200 bg-opacity-90 hover:bg-opacity-80 h-[64rem] rounded-br-2xl pt-6 overflow-y-scroll"
269
+ >
270
+ <div class="min-h-[80rem] h-[80rem]">
271
+ <div class="flex justify-between items-center gap-2">
272
+ <div></div>
273
+ <p class="font-medium text-sm">
274
+ Editing <span class="lowercase">&lt;IMG&gt;</span>
275
+ </p>
276
+ </div>
277
+ <div class="my-8">
278
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">
279
+ Filters
280
+ </p>
281
+ <div class="flex flex-col myPrimaryGap">
282
+ <div class="flex items-center justify-start gap-6">
283
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
284
+ Blur
285
+ </div>
286
+ <div
287
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
288
+ >
289
+ <p class="myPrimaryParagraph text-xs">blur-lg</p>
290
+ <div class="material-symbols-outlined">expand_more</div>
291
+ </div>
292
+ </div>
293
+ </div>
294
+ </div>
295
+ <div class="w-full border-t border-gray-300"></div>
296
+ <div class="my-8">
297
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">
298
+ Borders
299
+ </p>
300
+ <div class="flex flex-col myPrimaryGap">
301
+ <div class="flex items-center justify-start gap-6">
302
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
303
+ Radius
304
+ </div>
305
+ <div
306
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
307
+ >
308
+ <p class="myPrimaryParagraph text-xs">rounded</p>
309
+ <div class="material-symbols-outlined">expand_more</div>
310
+ </div>
311
+ </div>
312
+ <div class="flex items-center justify-start gap-6">
313
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
314
+ Width
315
+ </div>
316
+ <div
317
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
318
+ >
319
+ <p class="myPrimaryParagraph text-xs">border-0</p>
320
+ <div class="material-symbols-outlined">expand_more</div>
321
+ </div>
322
+ </div>
323
+ </div>
324
+ </div>
325
+ <div class="w-full border-t border-gray-300"></div>
326
+ <div class="my-4">
327
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">
328
+ Typography
329
+ </p>
330
+ <div class="flex flex-col myPrimaryGap">
331
+ <div class="flex items-center justify-start gap-6">
332
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
333
+ Font Family
334
+ </div>
335
+ <div
336
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
337
+ >
338
+ <p class="myPrimaryParagraph text-xs">Jost</p>
339
+ <div class="material-symbols-outlined">expand_more</div>
340
+ </div>
341
+ </div>
342
+ </div>
343
+ </div>
344
+ <div class="w-full border-t border-gray-300"></div>
345
+ <div class="my-4">
346
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">Video</p>
347
+ <div class="flex flex-col myPrimaryGap">
348
+ <div class="flex items-center justify-start gap-6">
349
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
350
+ Add Video
351
+ </div>
352
+ <div class="flex justify-end w-full">
353
+ <div
354
+ class="shadow h-8 w-14 rounded-lg flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
355
+ >
356
+ <span class="material-symbols-outlined">
357
+ play_arrow
358
+ </span>
359
+ </div>
360
+ </div>
361
+ </div>
362
+ </div>
363
+ </div>
364
+ <div class="w-full border-t border-gray-300"></div>
365
+ <div class="my-8">
366
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">
367
+ Customization
368
+ </p>
369
+ <div class="flex flex-col myPrimaryGap">
370
+ <div class="flex items-center justify-start gap-6">
371
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
372
+ Shadow
373
+ </div>
374
+ <div
375
+ class="myPrimaryParagraph text-xs font-medium flex justify-end w-full"
376
+ >
377
+ <div
378
+ class="pointer-events-auto h-6 w-10 rounded-full p-1 ring-1 ring-inset transition duration-200 ease-in-out bg-myPrimaryLinkColor ring-black/20"
379
+ >
380
+ <div
381
+ class="h-4 w-4 rounded-full bg-white shadow-sm ring-1 ring-slate-700/10 transition duration-200 ease-in-out translate-x-4"
382
+ ></div>
383
+ </div>
384
+ </div>
385
+ </div>
386
+ <div class="flex items-center justify-start gap-6">
387
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
388
+ Sepia
389
+ </div>
390
+ <div
391
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
392
+ >
393
+ <p class="myPrimaryParagraph text-xs">sepia-0</p>
394
+ <div class="material-symbols-outlined">expand_more</div>
395
+ </div>
396
+ </div>
397
+ </div>
398
+ </div>
399
+ <div class="w-full border-t border-gray-300"></div>
400
+ <div class="my-8">
401
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">
402
+ Spacing
403
+ </p>
404
+ <div class="flex flex-col myPrimaryGap">
405
+ <div class="flex items-center justify-start gap-6">
406
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
407
+ Padding
408
+ </div>
409
+ <div
410
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
411
+ >
412
+ <p class="myPrimaryParagraph text-xs">p-0</p>
413
+ <div class="material-symbols-outlined">expand_more</div>
414
+ </div>
415
+ </div>
416
+ <div class="flex items-center justify-start gap-6">
417
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
418
+ Margin
419
+ </div>
420
+ <div
421
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
422
+ >
423
+ <p class="myPrimaryParagraph text-xs">m-0</p>
424
+ <div class="material-symbols-outlined">expand_more</div>
425
+ </div>
426
+ </div>
427
+ </div>
428
+ </div>
429
+ <div class="w-full border-t border-gray-300"></div>
430
+ <div class="my-8">
431
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">
432
+ Backgrounds
433
+ </p>
434
+ <div class="flex flex-col myPrimaryGap">
435
+ <div class="flex items-center justify-start gap-6">
436
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
437
+ Color
438
+ </div>
439
+ <div
440
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
441
+ >
442
+ <p class="myPrimaryParagraph text-xs">bg-black</p>
443
+ <div class="material-symbols-outlined">expand_more</div>
444
+ </div>
445
+ </div>
446
+ <div class="flex items-center justify-start gap-6">
447
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
448
+ Size
449
+ </div>
450
+ <div
451
+ class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
452
+ >
453
+ <p class="myPrimaryParagraph text-xs">bg-cover</p>
454
+ <div class="material-symbols-outlined">expand_more</div>
455
+ </div>
456
+ </div>
457
+ </div>
458
+ </div>
459
+ <div class="w-full border-t border-gray-300"></div>
460
+ <div class="my-8">
461
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">
462
+ Settings
463
+ </p>
464
+ <div class="flex flex-col myPrimaryGap">
465
+ <div class="flex items-center justify-start gap-6">
466
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">
467
+ Download
468
+ </div>
469
+ <div class="flex justify-end w-full">
470
+ <div
471
+ class="shadow h-8 w-14 rounded-lg flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
472
+ >
473
+ <span class="material-symbols-outlined">
474
+ cloud_download
475
+ </span>
476
+ </div>
477
+ </div>
478
+ </div>
479
+ </div>
480
+ </div>
481
+ </div>
482
+ </div>
483
+ </div>
484
+ </div>
485
+ </div>
486
+
487
+ <FullWidthElement
488
+ :descriptionArea="true"
489
+ class="bg-gray-50"
490
+ >
491
+ <template #title
492
+ >Everything you need. Break free from design limitations
493
+ </template>
494
+ <template #description>
495
+ <p class="myPrimaryParagraph font-normal">
496
+ A Page Builder designed for growth. Build your website pages with
497
+ ready-made components that are fully customizable and always
498
+ responsive, designed to fit every need. A powerful Page Builder for
499
+ growing merchants, brands, and agencies.
500
+ <br />
501
+ <a
502
+ class="text-myPrimaryLinkColor font-medium"
503
+ href="https://github.com/qaiswardag/vue-website-page-builder"
504
+ target="_blank"
505
+ >
506
+ Go to the GitHub repository
507
+ </a>
508
+ or
509
+ <span
510
+ @click="handleButton"
511
+ class="text-myPrimaryLinkColor font-medium cursor-pointer"
512
+ >
513
+ play around with the page builder.
514
+ </span>
515
+ </p>
516
+ </template>
517
+ <template #content>
518
+ <div
519
+ class="grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-2 lg:grid-cols-4 mt-8"
520
+ >
521
+ <div
522
+ v-for="feature in features"
523
+ :key="feature.name"
524
+ class="bg-red-200 bg-opacity-20 hover:bg-opacity-10 w-full lg:min-h-[20rem] min-h-[12rem] relative col-span-1 flex flex-col text-center rounded-lg shadow-sm outline outline-2 outline-offset-8 outline-yellow-400"
525
+ >
526
+ <div
527
+ class="bg-black/0 absolute top-0 left-0 w-full h-full rounded-lg"
528
+ ></div>
529
+ <div class="px-2 pt-8 absolute top-0 w-full">
530
+ <p class="myTertiaryHeader">{{ feature.name }}</p>
531
+ <p class="myPrimaryParagraph font-medium drop-shadow-sm">
532
+ {{ feature.description }}
533
+ </p>
534
+ </div>
535
+ </div>
536
+ </div>
537
+ </template>
538
+ </FullWidthElement>
539
+ </div>
540
+ </template>
@@ -0,0 +1,30 @@
1
+ <script setup>
2
+ const emit = defineEmits(['handleButton']);
3
+
4
+ // first button function
5
+ const handleButton = function () {
6
+ emit('handleButton');
7
+ };
8
+ </script>
9
+
10
+ <template>
11
+ <nav
12
+ class="px-6 py-6 mx-auto flex items-center justify-between bg-gray-50 px-4 lg:h-[10vh] h-[16vh]"
13
+ aria-label="Global"
14
+ >
15
+ <img
16
+ class="h-6"
17
+ src="/logo/logo.svg"
18
+ alt="Logo"
19
+ />
20
+
21
+ <div class="flex lg:gap-x-12 myPrimaryGap">
22
+ <p
23
+ @click="handleButton"
24
+ class="text-lg font-medium text-myPrimaryDarkGrayColor flex gap-2 items-center cursor-pointer"
25
+ >
26
+ Start Builder
27
+ </p>
28
+ </div>
29
+ </nav>
30
+ </template>
@@ -0,0 +1,34 @@
1
+ <script setup>
2
+ defineProps({
3
+ descriptionArea: {
4
+ Type: Boolean,
5
+ required: true,
6
+ default: true,
7
+ },
8
+ headerArea: {
9
+ Type: Boolean,
10
+ default: true,
11
+ },
12
+ });
13
+ </script>
14
+
15
+ <template>
16
+ <!-- chimp start -->
17
+ <div class="myPrimaryWidthScreenModule">
18
+ <template v-if="headerArea">
19
+ <div class="myPrimaryContentSection">
20
+ <h2 class="mySecondaryHeader">
21
+ <slot name="title" />
22
+ </h2>
23
+ <template v-if="descriptionArea === true">
24
+ <p class="myPrimaryParagraph font-normal">
25
+ <slot name="description" />
26
+ </p>
27
+ </template>
28
+ </div>
29
+ </template>
30
+ <div class="myPrimaryContentSection">
31
+ <slot name="content" />
32
+ </div>
33
+ </div>
34
+ </template>
@@ -0,0 +1,13 @@
1
+ <template>
2
+ <teleport to="body">
3
+ <div
4
+ class="bg-white flex justify-center items-center h-screen w-screen fixed inset-0 z-40"
5
+ >
6
+ <div class="absolute top-1/3">
7
+ <div
8
+ class="inline-block h-10 w-10 animate-spin rounded-full border-4 border-solid border-current border-r-transparent"
9
+ ></div>
10
+ </div>
11
+ </div>
12
+ </teleport>
13
+ </template>
@@ -0,0 +1,26 @@
1
+ <script setup>
2
+ defineProps({
3
+ width: {
4
+ required: false,
5
+ },
6
+ height: {
7
+ required: false,
8
+ },
9
+ border: {
10
+ required: false,
11
+ },
12
+ });
13
+ </script>
14
+
15
+ <template>
16
+ <div class="flex items-center justify-center min-h-80 max-h-80">
17
+ <div
18
+ class="inline-block animate-spin rounded-full border-solid border-current border-r-transparent"
19
+ :class="[
20
+ width ? width : 'w-4',
21
+ height ? height : 'h-4',
22
+ border ? border : 'border-2',
23
+ ]"
24
+ ></div>
25
+ </div>
26
+ </template>