@myissue/vue-website-page-builder 3.0.18 → 3.0.19

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 (54) hide show
  1. package/README.md +79 -76
  2. package/dist/page-builder/2-images-text.png +0 -0
  3. package/dist/page-builder/3-images-text.png +0 -0
  4. package/dist/page-builder/3-vertical-images.png +0 -0
  5. package/dist/page-builder/4-images-text.png +0 -0
  6. package/dist/vue-website-page-builder.css +1 -1
  7. package/dist/vue-website-page-builder.js +7168 -7261
  8. package/dist/vue-website-page-builder.umd.cjs +146 -81
  9. package/package.json +4 -3
  10. package/src/App.vue +4 -115
  11. package/src/Components/Homepage/HomeSection.vue +70 -162
  12. package/src/Components/MediaLibrary/SidebarUnsplash.vue +9 -16
  13. package/src/Components/MediaLibrary/Unsplash.vue +51 -91
  14. package/src/Components/Modals/MediaLibraryModal.vue +56 -318
  15. package/src/Components/Modals/PageBuilderPreviewModal.vue +22 -40
  16. package/src/Components/PageBuilder/AdvancedPageBuilderSettings.vue +7 -0
  17. package/src/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue +165 -110
  18. package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +9 -16
  19. package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +18 -18
  20. package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +16 -21
  21. package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +12 -12
  22. package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +10 -9
  23. package/src/Components/PageBuilder/EditorMenu/Editables/DeleteElement.vue +9 -9
  24. package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +144 -136
  25. package/src/Components/PageBuilder/EditorMenu/Editables/ElementEditor.vue +9 -10
  26. package/src/Components/PageBuilder/EditorMenu/Editables/ImageEditor.vue +31 -27
  27. package/src/Components/PageBuilder/EditorMenu/Editables/LinkEditor.vue +20 -14
  28. package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +9 -10
  29. package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +9 -10
  30. package/src/Components/PageBuilder/EditorMenu/Editables/PaddingPlusMargin.vue +16 -16
  31. package/src/Components/PageBuilder/EditorMenu/Editables/TextColorEditor.vue +9 -16
  32. package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +22 -20
  33. package/src/Components/PageBuilder/EditorMenu/RightSidebarEditor.vue +25 -27
  34. package/src/Components/PageBuilder/NoneCustomMediaLibraryComponent.vue +3 -0
  35. package/src/Components/PageBuilder/NoneCustomSearchComponent.vue +91 -0
  36. package/src/Components/PageBuilder/PageBuilderSettings.vue +8 -0
  37. package/src/Components/PageBuilder/Settings/AdvancedPageBuilderSettings.vue +31 -72
  38. package/src/Components/PageBuilder/Settings/PageBuilderSettings.vue +32 -36
  39. package/src/Components/Search/SearchComponents.vue +11 -199
  40. package/src/Components/TipTap/TipTap.vue +8 -7
  41. package/src/Components/TipTap/TipTapInput.vue +136 -134
  42. package/src/PageBuilder/PageBuilder.vue +220 -32
  43. package/src/composables/{PageBuilder.ts → PageBuilderClass.ts} +223 -142
  44. package/src/composables/usePageBuilderModal.ts +25 -0
  45. package/src/index.ts +8 -2
  46. package/src/stores/media-library.ts +1 -5
  47. package/src/stores/page-builder-state.ts +52 -36
  48. package/src/stores/user.ts +8 -6
  49. package/src/types/global.d.ts +6 -44
  50. package/src/types/index.ts +169 -0
  51. package/src/utils/html-elements/component.ts +88 -0
  52. package/src/utils/html-elements/componentHelpers.ts +101 -0
  53. package/src/Components/Modals/PageBuilderModal.vue +0 -233
  54. package/src/utils/builder/html-elements/componentHelpers.ts +0 -101
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myissue/vue-website-page-builder",
3
- "version": "v3.0.18",
3
+ "version": "v3.0.19",
4
4
  "description": "🚧 DEVELOPMENT VERSION - Vue.js page builder component with drag & drop functionality. Not ready for production use.",
5
5
  "type": "module",
6
6
  "main": "./dist/vue-website-page-builder.umd.cjs",
@@ -49,7 +49,7 @@
49
49
  "scripts": {
50
50
  "dev": "vite",
51
51
  "build": "run-p type-check \"build-only {@}\" --",
52
- "build:lib": "vite build --mode lib",
52
+ "build:lib": "vue-tsc --declaration --emitDeclarationOnly --outDir dist && vite build --mode lib",
53
53
  "preview": "vite preview",
54
54
  "build-only": "vite build",
55
55
  "type-check": "vue-tsc --build",
@@ -70,7 +70,8 @@
70
70
  "date-fns": "^2.30.0",
71
71
  "pinia": "^2.1.7",
72
72
  "uuid": "^9.0.0",
73
- "vue": "^3.5.13"
73
+ "vue": "^3.5.13",
74
+ "vue-website-page-builder": "file:"
74
75
  },
75
76
  "devDependencies": {
76
77
  "@rushstack/eslint-patch": "^1.8.0",
package/src/App.vue CHANGED
@@ -1,122 +1,11 @@
1
1
  <script setup>
2
- import { ref, computed, nextTick, onBeforeMount } from 'vue'
3
- import PageBuilderModal from '@/Components/Modals/PageBuilderModal.vue'
4
2
  import HomeSection from '@/Components/Homepage/HomeSection.vue'
5
3
  import Footer from '@/Components/Homepage/Footer.vue'
6
- import Navbar from '@/Components/Homepage/Navbar.vue'
7
- import PageBuilderView from '@/PageBuilder/PageBuilder.vue'
8
- import PageBuilder from '@/composables/PageBuilder.ts'
9
- import FullScreenSpinner from '@/Components/Loaders/FullScreenSpinner.vue'
10
- import { usePageBuilderStateStore } from '@/stores/page-builder-state'
11
- import { useUserStore } from '@/stores/user'
12
- import { useMediaLibraryStore } from '@/stores/media-library'
13
-
14
- const mediaLibraryStore = useMediaLibraryStore()
15
- const pageBuilderStateStore = usePageBuilderStateStore()
16
- const userStore = useUserStore()
17
- const openPageBuilder = ref(false)
18
-
19
- const pageBuilderPrimaryHandler = ref(null)
20
- const pageBuilderSecondaryHandler = ref(null)
21
- const pageBuilder = new PageBuilder(pageBuilderStateStore, mediaLibraryStore)
22
- const formType = ref('create')
23
-
24
- const getIsLoading = computed(() => {
25
- return userStore.getIsLoading
26
- })
27
-
28
- const pathPageBuilderStorageCreate = `page-builder-create-post`
29
- const pathPageBuilderStorageUpdate = `page-builder-update-post-id-1`
30
-
31
- const handlePageBuilder = async function () {
32
- userStore.setIsLoading(true)
33
-
34
- await nextTick()
35
- openPageBuilder.value = true
36
-
37
- if (formType.value === 'create') {
38
- pageBuilderStateStore.setComponents([])
39
- pageBuilder.areComponentsStoredInLocalStorage()
40
- }
41
-
42
- // handle click
43
- pageBuilderPrimaryHandler.value = async function () {
44
- userStore.setIsLoading(true)
45
-
46
- if (formType.value === 'update') {
47
- await nextTick()
48
- pageBuilder.saveComponentsLocalStorageUpdate()
49
- }
50
-
51
- openPageBuilder.value = false
52
- userStore.setIsLoading(false)
53
- }
54
-
55
- // handle click
56
- pageBuilderSecondaryHandler.value = async function () {
57
- userStore.setIsLoading(true)
58
-
59
- // save to local storage if new resource
60
- if (formType.value === 'create') {
61
- await nextTick()
62
- pageBuilder.saveComponentsLocalStorage()
63
- await nextTick()
64
- }
65
- // save to local storage if update
66
- if (formType.value === 'update') {
67
- await nextTick()
68
- pageBuilder.synchronizeDOMAndComponents()
69
- await nextTick()
70
- }
71
-
72
- openPageBuilder.value = false
73
-
74
- userStore.setIsLoading(false)
75
- }
76
-
77
- userStore.setIsLoading(false)
78
-
79
- // end modal
80
- }
81
- // Builder # End
82
- const handleDraftForUpdate = async function () {
83
- userStore.setIsLoading(true)
84
-
85
- if (formType.value === 'update') {
86
- await nextTick()
87
- pageBuilder.areComponentsStoredInLocalStorageUpdate()
88
- await nextTick()
89
- pageBuilder.setEventListenersForElements()
90
-
91
- userStore.setIsLoading(false)
92
- }
93
- }
94
-
95
- onBeforeMount(() => {
96
- // Define local storage key name before on mount
97
- pageBuilderStateStore.setLocalStorageItemName(pathPageBuilderStorageCreate)
98
-
99
- // Define local storage key name before on mount
100
- pageBuilderStateStore.setLocalStorageItemNameUpdate(pathPageBuilderStorageUpdate)
101
- })
102
4
  </script>
103
5
 
104
6
  <template>
105
- <teleport to="body">
106
- <FullScreenSpinner v-if="getIsLoading"></FullScreenSpinner>
107
- </teleport>
108
- <PageBuilderModal
109
- :show="openPageBuilder"
110
- updateOrCreate="create"
111
- @pageBuilderPrimaryHandler="pageBuilderPrimaryHandler"
112
- @pageBuilderSecondaryHandler="pageBuilderSecondaryHandler"
113
- @handleDraftForUpdate="handleDraftForUpdate"
114
- >
115
- <PageBuilderView></PageBuilderView>
116
- </PageBuilderModal>
117
-
118
- <Navbar @handleButton="handlePageBuilder"></Navbar>
119
- <HomeSection @handleButton="handlePageBuilder"></HomeSection>
120
-
121
- <Footer></Footer>
7
+ <div>
8
+ <HomeSection></HomeSection>
9
+ <Footer></Footer>
10
+ </div>
122
11
  </template>
@@ -1,11 +1,12 @@
1
1
  <script setup>
2
- const emit = defineEmits(['handleButton']);
3
- import FullWidthElement from '@/Components/Layouts/FullWidthElement.vue';
2
+ const emit = defineEmits(['handleButton'])
3
+ import FullWidthElement from '@/Components/Layouts/FullWidthElement.vue'
4
+ import PageBuilder from '@/PageBuilder/PageBuilder.vue'
4
5
 
5
6
  // first button function
6
7
  const handleButton = function () {
7
- emit('handleButton');
8
- };
8
+ console.log('user want to play with the page builder')
9
+ }
9
10
 
10
11
  const features = [
11
12
  {
@@ -48,7 +49,7 @@ const features = [
48
49
  description:
49
50
  'Beautiful, elegant and intuitive design. Enhance user engagement with amazing visual experience.',
50
51
  },
51
- ];
52
+ ]
52
53
  </script>
53
54
 
54
55
  <template>
@@ -56,15 +57,13 @@ const features = [
56
57
  <div class="myPrimaryWidthScreenModule bg-red-50 lg:block">
57
58
  <div class="myPrimaryContentSection">
58
59
  <h2 class="mySecondaryHeader">
59
- Bring your vision to life and create impressive pages using a click &
60
- drop Page Builder
60
+ Bring your vision to life and create impressive pages using a click & drop Page Builder
61
61
  </h2>
62
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
63
+ The web builder for stunning pages. Enable users to design and publish modern pages at any
64
+ scale. Build responsive pages like listings, jobs or blog posts and manage content easily
65
+ using the free click & drop Page Builder. Developed with JavaScript, Vue 3, Composition
66
+ API, Pinia, CSS, Tailwind CSS and HTML
68
67
  <br />
69
68
  <a
70
69
  class="text-myPrimaryLinkColor font-medium"
@@ -74,39 +73,31 @@ const features = [
74
73
  Go to the GitHub repository
75
74
  </a>
76
75
  or
77
- <span
78
- @click="handleButton"
79
- class="text-myPrimaryLinkColor font-medium cursor-pointer"
80
- >
76
+ <span @click="handleButton" class="text-myPrimaryLinkColor font-medium cursor-pointer">
81
77
  play around with the page builder.
82
78
  </span>
83
79
  </p>
84
80
  </div>
85
- <div
86
- @click="handleButton"
87
- class="myPrimaryContentSection cursor-pointer"
88
- >
81
+ <div>
82
+ <PageBuilder
83
+ PageBuilderLogo="/logo/logo.svg"
84
+ updateOrCreate="update"
85
+ :userForPageBuilder="{ name: 'John Doe' }"
86
+ :resourceData="{ title: 'Demo Article', id: 1 }"
87
+ ></PageBuilder>
88
+ </div>
89
+ <div @click="handleButton" class="myPrimaryContentSection cursor-pointer">
89
90
  <div
90
91
  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
92
  style="background-image: url('/home/page-builder-example.jpg')"
92
93
  >
93
- <div
94
- class="col-span-12 px-4 top-0 h-[4rem] w-full border-b border-gray-200"
95
- >
94
+ <div class="col-span-12 px-4 top-0 h-[4rem] w-full border-b border-gray-200">
96
95
  <div class="flex items-center justify-between h-full">
97
- <div
98
- class="lg:flex hidden items-center justify-end myPrimaryGap h-full"
99
- >
96
+ <div class="lg:flex hidden items-center justify-end myPrimaryGap h-full">
100
97
  <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>
98
+ <span class="w-2 h-2 rounded-full bg-red-400 hover:bg-red-600"></span
99
+ ><span class="w-2 h-2 rounded-full bg-yellow-400 hover:bg-yellow-600"></span
100
+ ><span class="w-2 h-2 rounded-full bg-green-400 hover:bg-green-600"></span>
110
101
  </div>
111
102
  </div>
112
103
  <div class="flex justify-center items-center gap-2">
@@ -145,18 +136,12 @@ const features = [
145
136
  <span class="material-symbols-outlined"> visibility </span>
146
137
  </div>
147
138
  <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>
139
+ <p class="myPrimaryParagraph text-[12px] text-white font-medium">Page Builder</p>
153
140
  </div>
154
141
  </div>
155
142
  </div>
156
143
  </div>
157
- <div
158
- class="lg:col-span-9 col-span-5 top-0 w-full h-[64rem] rounded-l-2xl"
159
- >
144
+ <div class="lg:col-span-9 col-span-5 top-0 w-full h-[64rem] rounded-l-2xl">
160
145
  <div class="flex items-center justify-between">
161
146
  <div
162
147
  class="w-[4rem] bg-red-100 bg-opacity-50 hover:bg-opacity-40 h-[40rem] rounded-full pt-8 ml-2"
@@ -165,9 +150,7 @@ const features = [
165
150
  <div
166
151
  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
152
  >
168
- <span class="material-symbols-outlined">
169
- arrow_selector_tool
170
- </span>
153
+ <span class="material-symbols-outlined"> arrow_selector_tool </span>
171
154
  </div>
172
155
  <div
173
156
  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"
@@ -186,12 +169,8 @@ const features = [
186
169
  </div>
187
170
  </div>
188
171
  </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
- >
172
+ <div class="flex items-center justify-center w-full h-[64rem] pt-2 pr-8">
173
+ <div class="lg:flex hidden items-center w-full h-full justify-end">
195
174
  <div class="flex flex-col gap-2">
196
175
  <div
197
176
  class="w-[22rem] rounded-2xl hover:bg-opacity-80 flex flex-col justify-between top-0"
@@ -205,39 +184,29 @@ const features = [
205
184
  <div
206
185
  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
186
  >
208
- <span class="material-symbols-outlined text-[20px]">
209
- edit
210
- </span>
187
+ <span class="material-symbols-outlined text-[20px]"> edit </span>
211
188
  </div>
212
189
  <div
213
190
  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
191
  >
215
- <span class="material-symbols-outlined text-[20px]">
216
- add
217
- </span>
192
+ <span class="material-symbols-outlined text-[20px]"> add </span>
218
193
  </div>
219
194
  <div
220
195
  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
196
  >
222
- <span class="material-symbols-outlined text-[20px]">
223
- delete
224
- </span>
197
+ <span class="material-symbols-outlined text-[20px]"> delete </span>
225
198
  </div>
226
199
  </div>
227
200
  </div>
228
- <div
229
- class="lg:flex hidden items-center w-full h-full justify-end"
230
- >
201
+ <div class="lg:flex hidden items-center w-full h-full justify-end">
231
202
  <div
232
203
  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
204
  >
234
205
  <div
235
206
  class="py-2 flex justify-between gap-4 px-4 bg-gray-400 rounded-full mx-6 bg-opacity-30"
236
207
  >
237
- <span class="material-symbols-outlined text-[20px]">
238
- format_bold </span
239
- ><span class="material-symbols-outlined text-[20px]">
240
- format_italic </span
208
+ <span class="material-symbols-outlined text-[20px]"> format_bold </span
209
+ ><span class="material-symbols-outlined text-[20px]"> format_italic </span
241
210
  ><span class="material-symbols-outlined text-[20px]">
242
211
  format_color_text </span
243
212
  ><span class="material-symbols-outlined text-[20px]">
@@ -247,15 +216,11 @@ const features = [
247
216
  <div
248
217
  class="py-2 flex justify-between gap-4 px-4 bg-gray-400 rounded-full mx-6 bg-opacity-30"
249
218
  >
250
- <span class="material-symbols-outlined text-[20px]">
251
- format_shapes </span
219
+ <span class="material-symbols-outlined text-[20px]"> format_shapes </span
252
220
  ><span class="material-symbols-outlined text-[20px]">
253
221
  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>
222
+ ><span class="material-symbols-outlined text-[20px]"> colors </span
223
+ ><span class="material-symbols-outlined text-[20px]"> attach_file </span>
259
224
  </div>
260
225
  </div>
261
226
  </div>
@@ -275,14 +240,10 @@ const features = [
275
240
  </p>
276
241
  </div>
277
242
  <div class="my-8">
278
- <p class="myPrimaryParagraph text-sm font-medium pb-3">
279
- Filters
280
- </p>
243
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">Filters</p>
281
244
  <div class="flex flex-col myPrimaryGap">
282
245
  <div class="flex items-center justify-start gap-6">
283
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
284
- Blur
285
- </div>
246
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Blur</div>
286
247
  <div
287
248
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
288
249
  >
@@ -294,14 +255,10 @@ const features = [
294
255
  </div>
295
256
  <div class="w-full border-t border-gray-300"></div>
296
257
  <div class="my-8">
297
- <p class="myPrimaryParagraph text-sm font-medium pb-3">
298
- Borders
299
- </p>
258
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">Borders</p>
300
259
  <div class="flex flex-col myPrimaryGap">
301
260
  <div class="flex items-center justify-start gap-6">
302
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
303
- Radius
304
- </div>
261
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Radius</div>
305
262
  <div
306
263
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
307
264
  >
@@ -310,9 +267,7 @@ const features = [
310
267
  </div>
311
268
  </div>
312
269
  <div class="flex items-center justify-start gap-6">
313
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
314
- Width
315
- </div>
270
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Width</div>
316
271
  <div
317
272
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
318
273
  >
@@ -324,14 +279,10 @@ const features = [
324
279
  </div>
325
280
  <div class="w-full border-t border-gray-300"></div>
326
281
  <div class="my-4">
327
- <p class="myPrimaryParagraph text-sm font-medium pb-3">
328
- Typography
329
- </p>
282
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">Typography</p>
330
283
  <div class="flex flex-col myPrimaryGap">
331
284
  <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>
285
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Font Family</div>
335
286
  <div
336
287
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
337
288
  >
@@ -346,16 +297,12 @@ const features = [
346
297
  <p class="myPrimaryParagraph text-sm font-medium pb-3">Video</p>
347
298
  <div class="flex flex-col myPrimaryGap">
348
299
  <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>
300
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Add Video</div>
352
301
  <div class="flex justify-end w-full">
353
302
  <div
354
303
  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
304
  >
356
- <span class="material-symbols-outlined">
357
- play_arrow
358
- </span>
305
+ <span class="material-symbols-outlined"> play_arrow </span>
359
306
  </div>
360
307
  </div>
361
308
  </div>
@@ -363,17 +310,11 @@ const features = [
363
310
  </div>
364
311
  <div class="w-full border-t border-gray-300"></div>
365
312
  <div class="my-8">
366
- <p class="myPrimaryParagraph text-sm font-medium pb-3">
367
- Customization
368
- </p>
313
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">Customization</p>
369
314
  <div class="flex flex-col myPrimaryGap">
370
315
  <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
- >
316
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Shadow</div>
317
+ <div class="myPrimaryParagraph text-xs font-medium flex justify-end w-full">
377
318
  <div
378
319
  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
320
  >
@@ -384,9 +325,7 @@ const features = [
384
325
  </div>
385
326
  </div>
386
327
  <div class="flex items-center justify-start gap-6">
387
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
388
- Sepia
389
- </div>
328
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Sepia</div>
390
329
  <div
391
330
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
392
331
  >
@@ -398,14 +337,10 @@ const features = [
398
337
  </div>
399
338
  <div class="w-full border-t border-gray-300"></div>
400
339
  <div class="my-8">
401
- <p class="myPrimaryParagraph text-sm font-medium pb-3">
402
- Spacing
403
- </p>
340
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">Spacing</p>
404
341
  <div class="flex flex-col myPrimaryGap">
405
342
  <div class="flex items-center justify-start gap-6">
406
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
407
- Padding
408
- </div>
343
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Padding</div>
409
344
  <div
410
345
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
411
346
  >
@@ -414,9 +349,7 @@ const features = [
414
349
  </div>
415
350
  </div>
416
351
  <div class="flex items-center justify-start gap-6">
417
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
418
- Margin
419
- </div>
352
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Margin</div>
420
353
  <div
421
354
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
422
355
  >
@@ -428,14 +361,10 @@ const features = [
428
361
  </div>
429
362
  <div class="w-full border-t border-gray-300"></div>
430
363
  <div class="my-8">
431
- <p class="myPrimaryParagraph text-sm font-medium pb-3">
432
- Backgrounds
433
- </p>
364
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">Backgrounds</p>
434
365
  <div class="flex flex-col myPrimaryGap">
435
366
  <div class="flex items-center justify-start gap-6">
436
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
437
- Color
438
- </div>
367
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Color</div>
439
368
  <div
440
369
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
441
370
  >
@@ -444,9 +373,7 @@ const features = [
444
373
  </div>
445
374
  </div>
446
375
  <div class="flex items-center justify-start gap-6">
447
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
448
- Size
449
- </div>
376
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Size</div>
450
377
  <div
451
378
  class="border border-myPrimaryDarkGrayColor hover:border-gray-400 h-10 flex items-center justify-between px-2 shadow rounded-lg w-2/3"
452
379
  >
@@ -458,21 +385,15 @@ const features = [
458
385
  </div>
459
386
  <div class="w-full border-t border-gray-300"></div>
460
387
  <div class="my-8">
461
- <p class="myPrimaryParagraph text-sm font-medium pb-3">
462
- Settings
463
- </p>
388
+ <p class="myPrimaryParagraph text-sm font-medium pb-3">Settings</p>
464
389
  <div class="flex flex-col myPrimaryGap">
465
390
  <div class="flex items-center justify-start gap-6">
466
- <div class="myPrimaryParagraph text-xs font-medium w-1/3">
467
- Download
468
- </div>
391
+ <div class="myPrimaryParagraph text-xs font-medium w-1/3">Download</div>
469
392
  <div class="flex justify-end w-full">
470
393
  <div
471
394
  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
395
  >
473
- <span class="material-symbols-outlined">
474
- cloud_download
475
- </span>
396
+ <span class="material-symbols-outlined"> cloud_download </span>
476
397
  </div>
477
398
  </div>
478
399
  </div>
@@ -484,19 +405,13 @@ const features = [
484
405
  </div>
485
406
  </div>
486
407
 
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>
408
+ <FullWidthElement :descriptionArea="true" class="bg-gray-50">
409
+ <template #title>Everything you need. Break free from design limitations </template>
494
410
  <template #description>
495
411
  <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.
412
+ A Page Builder designed for growth. Build your website pages with ready-made components
413
+ that are fully customizable and always responsive, designed to fit every need. A powerful
414
+ Page Builder for growing merchants, brands, and agencies.
500
415
  <br />
501
416
  <a
502
417
  class="text-myPrimaryLinkColor font-medium"
@@ -506,26 +421,19 @@ const features = [
506
421
  Go to the GitHub repository
507
422
  </a>
508
423
  or
509
- <span
510
- @click="handleButton"
511
- class="text-myPrimaryLinkColor font-medium cursor-pointer"
512
- >
424
+ <span @click="handleButton" class="text-myPrimaryLinkColor font-medium cursor-pointer">
513
425
  play around with the page builder.
514
426
  </span>
515
427
  </p>
516
428
  </template>
517
429
  <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
- >
430
+ <div class="grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-2 lg:grid-cols-4 mt-8">
521
431
  <div
522
432
  v-for="feature in features"
523
433
  :key="feature.name"
524
434
  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
435
  >
526
- <div
527
- class="bg-black/0 absolute top-0 left-0 w-full h-full rounded-lg"
528
- ></div>
436
+ <div class="bg-black/0 absolute top-0 left-0 w-full h-full rounded-lg"></div>
529
437
  <div class="px-2 pt-8 absolute top-0 w-full">
530
438
  <p class="myTertiaryHeader">{{ feature.name }}</p>
531
439
  <p class="myPrimaryParagraph font-medium drop-shadow-sm">
@@ -1,35 +1,28 @@
1
1
  <script setup>
2
- import { computed } from 'vue';
3
- import { useMediaLibraryStore } from '@/stores/media-library';
2
+ import { ref, computed, onMounted, inject } from 'vue'
4
3
 
5
- const mediaLibraryStore = useMediaLibraryStore();
4
+ // Get stores from parent PageBuilder component
5
+ const mediaLibraryStore = inject('mediaLibraryStore')
6
6
 
7
7
  const getCurrentImage = computed(() => {
8
- return mediaLibraryStore.getCurrentImage;
9
- });
8
+ return mediaLibraryStore.getCurrentImage
9
+ })
10
10
  </script>
11
11
 
12
12
  <template>
13
13
  <!-- Loading # end -->
14
- <div
15
- v-if="getCurrentImage && getCurrentImage.file"
16
- class="pb-6 space-y-6"
17
- >
14
+ <div v-if="getCurrentImage && getCurrentImage.src" class="pb-6 space-y-6">
18
15
  <img
19
16
  class="mx-auto block w-full object-cover object-center cursor-pointer"
20
- :src="`${getCurrentImage.file}`"
17
+ :src="`${getCurrentImage.src}`"
21
18
  alt="file"
22
19
  />
23
20
 
24
21
  <div class="md:px-3 px-2">
25
22
  <div>
26
23
  <h3 class="font-normal text-gray-900">Information</h3>
27
- <dl
28
- class="mt-2 border-t border-b border-gray-200 divide-y divide-gray-200"
29
- >
30
- <div
31
- class="py-3 flex justify-between text-sm font-normal items-center"
32
- >
24
+ <dl class="mt-2 border-t border-b border-gray-200 divide-y divide-gray-200">
25
+ <div class="py-3 flex justify-between text-sm font-normal items-center">
33
26
  <dt class="text-gray-500">From</dt>
34
27
  <dd class="text-gray-900">Unsplash</dd>
35
28
  </div>