@edgedev/create-edge-app 1.1.26 → 1.1.28
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/edge/components/cms/block.vue +334 -26
- package/edge/components/cms/blockEditor.vue +50 -3
- package/edge/components/cms/codeEditor.vue +15 -0
- package/edge/components/cms/init_blocks/footer.html +111 -19
- package/edge/components/cms/init_blocks/image.html +8 -0
- package/edge/components/cms/init_blocks/post_content.html +3 -2
- package/edge/components/cms/init_blocks/post_title_header.html +8 -6
- package/edge/components/cms/init_blocks/posts_list.html +6 -5
- package/edge/components/cms/mediaCard.vue +13 -2
- package/edge/components/cms/mediaManager.vue +16 -2
- package/edge/components/cms/menu.vue +253 -42
- package/edge/components/cms/page.vue +151 -18
- package/edge/components/cms/site.vue +537 -215
- package/edge/components/cms/siteSettingsForm.vue +616 -0
- package/edge/components/cms/themeDefaultMenu.vue +258 -22
- package/edge/components/cms/themeEditor.vue +99 -12
- package/edge/components/editor.vue +1 -0
- package/edge/components/formSubtypes/myOrgs.vue +112 -1
- package/edge/components/orgSwitcher.vue +1 -1
- package/edge/components/organizationMembers.vue +171 -21
- package/edge/components/shad/html.vue +6 -0
- package/edge/components/sideBar.vue +7 -4
- package/edge/components/sideBarContent.vue +1 -1
- package/edge/components/userMenu.vue +50 -14
- package/edge/composables/siteSettingsTemplate.js +79 -0
- package/edge/composables/structuredDataTemplates.js +36 -0
- package/package.json +1 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { useStructuredDataTemplates } from '@/edge/composables/structuredDataTemplates'
|
|
2
|
+
|
|
3
|
+
export const useSiteSettingsTemplate = () => {
|
|
4
|
+
const { buildSiteStructuredData } = useStructuredDataTemplates()
|
|
5
|
+
const createDefaults = () => ({
|
|
6
|
+
name: '',
|
|
7
|
+
theme: '',
|
|
8
|
+
allowedThemes: [],
|
|
9
|
+
logo: '',
|
|
10
|
+
logoLight: '',
|
|
11
|
+
logoText: '',
|
|
12
|
+
logoType: 'image',
|
|
13
|
+
brandLogoDark: '',
|
|
14
|
+
brandLogoLight: '',
|
|
15
|
+
favicon: '',
|
|
16
|
+
menuPosition: 'right',
|
|
17
|
+
domains: [],
|
|
18
|
+
contactEmail: '',
|
|
19
|
+
contactPhone: '',
|
|
20
|
+
metaTitle: '',
|
|
21
|
+
metaDescription: '',
|
|
22
|
+
structuredData: buildSiteStructuredData(),
|
|
23
|
+
trackingFacebookPixel: '',
|
|
24
|
+
trackingGoogleAnalytics: '',
|
|
25
|
+
trackingAdroll: '',
|
|
26
|
+
socialFacebook: '',
|
|
27
|
+
socialInstagram: '',
|
|
28
|
+
socialTwitter: '',
|
|
29
|
+
socialLinkedIn: '',
|
|
30
|
+
socialYouTube: '',
|
|
31
|
+
socialTikTok: '',
|
|
32
|
+
users: [],
|
|
33
|
+
aiAgentUserId: '',
|
|
34
|
+
aiInstructions: '',
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
const createNewDocSchema = () => {
|
|
38
|
+
const defaults = createDefaults()
|
|
39
|
+
return {
|
|
40
|
+
name: { bindings: { 'field-type': 'text', 'label': 'Name' }, cols: '12', value: defaults.name },
|
|
41
|
+
theme: { bindings: { 'field-type': 'collection', 'label': 'Themes', 'collection-path': 'themes' }, cols: '12', value: defaults.theme },
|
|
42
|
+
allowedThemes: { bindings: { 'field-type': 'tags', 'label': 'Allowed Themes' }, cols: '12', value: defaults.allowedThemes },
|
|
43
|
+
logo: { bindings: { 'field-type': 'text', 'label': 'Dark logo' }, cols: '12', value: defaults.logo },
|
|
44
|
+
logoLight: { bindings: { 'field-type': 'text', 'label': 'Logo Light' }, cols: '12', value: defaults.logoLight },
|
|
45
|
+
logoText: { bindings: { 'field-type': 'text', 'label': 'Logo Text' }, cols: '12', value: defaults.logoText },
|
|
46
|
+
logoType: { bindings: { 'field-type': 'select', 'label': 'Logo Type', 'items': ['image', 'text'] }, cols: '12', value: defaults.logoType },
|
|
47
|
+
brandLogoDark: { bindings: { 'field-type': 'text', 'label': 'Brand Logo Dark' }, cols: '12', value: defaults.brandLogoDark },
|
|
48
|
+
brandLogoLight: { bindings: { 'field-type': 'text', 'label': 'Brand Logo Light' }, cols: '12', value: defaults.brandLogoLight },
|
|
49
|
+
favicon: { bindings: { 'field-type': 'text', 'label': 'Favicon' }, cols: '12', value: defaults.favicon },
|
|
50
|
+
menuPosition: { bindings: { 'field-type': 'select', 'label': 'Menu Position', 'items': ['left', 'center', 'right'] }, cols: '12', value: defaults.menuPosition },
|
|
51
|
+
domains: { bindings: { 'field-type': 'tags', 'label': 'Domains', 'helper': 'Add or remove domains' }, cols: '12', value: defaults.domains },
|
|
52
|
+
contactEmail: { bindings: { 'field-type': 'text', 'label': 'Contact Email' }, cols: '12', value: defaults.contactEmail },
|
|
53
|
+
contactPhone: { bindings: { 'field-type': 'text', 'label': 'Contact Phone' }, cols: '12', value: defaults.contactPhone },
|
|
54
|
+
metaTitle: { bindings: { 'field-type': 'text', 'label': 'Meta Title' }, cols: '12', value: defaults.metaTitle },
|
|
55
|
+
metaDescription: { bindings: { 'field-type': 'textarea', 'label': 'Meta Description' }, cols: '12', value: defaults.metaDescription },
|
|
56
|
+
structuredData: { bindings: { 'field-type': 'textarea', 'label': 'Structured Data (JSON-LD)' }, cols: '12', value: defaults.structuredData },
|
|
57
|
+
trackingFacebookPixel: { bindings: { 'field-type': 'text', 'label': 'Facebook Pixel ID' }, cols: '12', value: defaults.trackingFacebookPixel },
|
|
58
|
+
trackingGoogleAnalytics: { bindings: { 'field-type': 'text', 'label': 'Google Analytics ID' }, cols: '12', value: defaults.trackingGoogleAnalytics },
|
|
59
|
+
trackingAdroll: { bindings: { 'field-type': 'text', 'label': 'AdRoll ID' }, cols: '12', value: defaults.trackingAdroll },
|
|
60
|
+
socialFacebook: { bindings: { 'field-type': 'text', 'label': 'Facebook URL' }, cols: '12', value: defaults.socialFacebook },
|
|
61
|
+
socialInstagram: { bindings: { 'field-type': 'text', 'label': 'Instagram URL' }, cols: '12', value: defaults.socialInstagram },
|
|
62
|
+
socialTwitter: { bindings: { 'field-type': 'text', 'label': 'X (Twitter) URL' }, cols: '12', value: defaults.socialTwitter },
|
|
63
|
+
socialLinkedIn: { bindings: { 'field-type': 'text', 'label': 'LinkedIn URL' }, cols: '12', value: defaults.socialLinkedIn },
|
|
64
|
+
socialYouTube: { bindings: { 'field-type': 'text', 'label': 'YouTube URL' }, cols: '12', value: defaults.socialYouTube },
|
|
65
|
+
socialTikTok: { bindings: { 'field-type': 'text', 'label': 'TikTok URL' }, cols: '12', value: defaults.socialTikTok },
|
|
66
|
+
users: { bindings: { 'field-type': 'users', 'label': 'Users', 'hint': 'Choose users' }, cols: '12', value: defaults.users },
|
|
67
|
+
aiAgentUserId: { bindings: { 'field-type': 'select', 'label': 'Agent Data for AI to use to build initial site' }, cols: '12', value: defaults.aiAgentUserId },
|
|
68
|
+
aiInstructions: { bindings: { 'field-type': 'textarea', 'label': 'Additional AI Instructions' }, cols: '12', value: defaults.aiInstructions },
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const settingsKeys = Object.keys(createDefaults())
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
createDefaults,
|
|
76
|
+
createNewDocSchema,
|
|
77
|
+
settingsKeys,
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export const useStructuredDataTemplates = () => {
|
|
2
|
+
const buildSiteStructuredData = () => JSON.stringify({
|
|
3
|
+
'@context': 'https://schema.org',
|
|
4
|
+
'@type': 'WebSite',
|
|
5
|
+
'name': '',
|
|
6
|
+
'url': '',
|
|
7
|
+
'description': '',
|
|
8
|
+
'publisher': {
|
|
9
|
+
'@type': 'Organization',
|
|
10
|
+
'name': '',
|
|
11
|
+
'logo': {
|
|
12
|
+
'@type': 'ImageObject',
|
|
13
|
+
'url': '',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
'sameAs': [],
|
|
17
|
+
}, null, 2)
|
|
18
|
+
|
|
19
|
+
const buildPageStructuredData = () => JSON.stringify({
|
|
20
|
+
'@context': 'https://schema.org',
|
|
21
|
+
'@type': 'WebPage',
|
|
22
|
+
'name': '',
|
|
23
|
+
'url': '',
|
|
24
|
+
'description': '',
|
|
25
|
+
'isPartOf': {
|
|
26
|
+
'@type': 'WebSite',
|
|
27
|
+
'name': '',
|
|
28
|
+
'url': '',
|
|
29
|
+
},
|
|
30
|
+
}, null, 2)
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
buildSiteStructuredData,
|
|
34
|
+
buildPageStructuredData,
|
|
35
|
+
}
|
|
36
|
+
}
|