@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.
- package/README.md +79 -76
- package/dist/page-builder/2-images-text.png +0 -0
- package/dist/page-builder/3-images-text.png +0 -0
- package/dist/page-builder/3-vertical-images.png +0 -0
- package/dist/page-builder/4-images-text.png +0 -0
- package/dist/vue-website-page-builder.css +1 -1
- package/dist/vue-website-page-builder.js +7168 -7261
- package/dist/vue-website-page-builder.umd.cjs +146 -81
- package/package.json +4 -3
- package/src/App.vue +4 -115
- package/src/Components/Homepage/HomeSection.vue +70 -162
- package/src/Components/MediaLibrary/SidebarUnsplash.vue +9 -16
- package/src/Components/MediaLibrary/Unsplash.vue +51 -91
- package/src/Components/Modals/MediaLibraryModal.vue +56 -318
- package/src/Components/Modals/PageBuilderPreviewModal.vue +22 -40
- package/src/Components/PageBuilder/AdvancedPageBuilderSettings.vue +7 -0
- package/src/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue +165 -110
- package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +9 -16
- package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +18 -18
- package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +16 -21
- package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +12 -12
- package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +10 -9
- package/src/Components/PageBuilder/EditorMenu/Editables/DeleteElement.vue +9 -9
- package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +144 -136
- package/src/Components/PageBuilder/EditorMenu/Editables/ElementEditor.vue +9 -10
- package/src/Components/PageBuilder/EditorMenu/Editables/ImageEditor.vue +31 -27
- package/src/Components/PageBuilder/EditorMenu/Editables/LinkEditor.vue +20 -14
- package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +9 -10
- package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +9 -10
- package/src/Components/PageBuilder/EditorMenu/Editables/PaddingPlusMargin.vue +16 -16
- package/src/Components/PageBuilder/EditorMenu/Editables/TextColorEditor.vue +9 -16
- package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +22 -20
- package/src/Components/PageBuilder/EditorMenu/RightSidebarEditor.vue +25 -27
- package/src/Components/PageBuilder/NoneCustomMediaLibraryComponent.vue +3 -0
- package/src/Components/PageBuilder/NoneCustomSearchComponent.vue +91 -0
- package/src/Components/PageBuilder/PageBuilderSettings.vue +8 -0
- package/src/Components/PageBuilder/Settings/AdvancedPageBuilderSettings.vue +31 -72
- package/src/Components/PageBuilder/Settings/PageBuilderSettings.vue +32 -36
- package/src/Components/Search/SearchComponents.vue +11 -199
- package/src/Components/TipTap/TipTap.vue +8 -7
- package/src/Components/TipTap/TipTapInput.vue +136 -134
- package/src/PageBuilder/PageBuilder.vue +220 -32
- package/src/composables/{PageBuilder.ts → PageBuilderClass.ts} +223 -142
- package/src/composables/usePageBuilderModal.ts +25 -0
- package/src/index.ts +8 -2
- package/src/stores/media-library.ts +1 -5
- package/src/stores/page-builder-state.ts +52 -36
- package/src/stores/user.ts +8 -6
- package/src/types/global.d.ts +6 -44
- package/src/types/index.ts +169 -0
- package/src/utils/html-elements/component.ts +88 -0
- package/src/utils/html-elements/componentHelpers.ts +101 -0
- package/src/Components/Modals/PageBuilderModal.vue +0 -233
- 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.
|
|
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
|
-
<
|
|
106
|
-
<
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
498
|
-
|
|
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
|
-
|
|
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.
|
|
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="
|
|
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>
|