@brightsideoy/kama 0.1.0-alpha.99 → 1.0.0-alpha.11
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 +169 -0
- package/bin/cli.js +738 -261
- package/content/definitions/blocks/button.yaml +34 -0
- package/content/definitions/blocks/header.yaml +13 -0
- package/content/definitions/blocks/header_image.yaml +21 -0
- package/content/definitions/blocks/hero.yaml +28 -0
- package/content/definitions/blocks/html.yaml +13 -0
- package/content/definitions/blocks/image_card.yaml +56 -0
- package/content/definitions/blocks/node-list.yaml +61 -0
- package/content/definitions/blocks/single_image.yaml +27 -0
- package/content/definitions/blocks/text.yaml +15 -0
- package/content/definitions/channels/ecommerce.yaml +28 -0
- package/content/definitions/channels/website.yaml +41 -0
- package/{defaults → content}/definitions/field-sets/access.yaml +3 -5
- package/content/definitions/field-sets/channel-base.yaml +57 -0
- package/{defaults/definitions/field-sets/page-meta.yaml → content/definitions/field-sets/channel-seo.yaml} +3 -11
- package/content/definitions/field-sets/content-block.yaml +41 -0
- package/content/definitions/field-sets/page-base.yaml +44 -0
- package/content/definitions/field-sets/page-seo.yaml +34 -0
- package/{defaults → content}/definitions/field-sets/page-social.yaml +6 -8
- package/content/definitions/field-sets/schema-type.yaml +43 -0
- package/content/definitions/field-sets/tree-base.yaml +31 -0
- package/content/definitions/node-layouts/content.yml +12 -0
- package/{defaults → content}/definitions/node-layouts/landing-page.yml +8 -3
- package/{defaults → content}/definitions/node-layouts/single-column.yml +10 -5
- package/{defaults → content}/definitions/node-layouts/two-column.yml +14 -6
- package/content/definitions/nodes/address.yaml +40 -0
- package/content/definitions/nodes/article.yaml +65 -0
- package/content/definitions/nodes/event.yaml +55 -0
- package/content/definitions/nodes/external-link.yaml +29 -0
- package/content/definitions/nodes/page-skeleton.yaml +48 -0
- package/{defaults → content}/definitions/nodes/page.yaml +9 -20
- package/content/definitions/nodes/person.yaml +37 -0
- package/content/definitions/nodes/product.yaml +89 -0
- package/content/definitions/taxonomies/categories.yaml +15 -0
- package/content/definitions/taxonomies/tags.yaml +12 -0
- package/content/definitions/trees/navigation.yaml +24 -0
- package/definitions/editor/default.ts +1 -0
- package/dist/assets/index-BVkEzCNs.js +164 -0
- package/dist/assets/index-CGLx9oqF.css +1 -0
- package/dist/build-seed.js +486 -0
- package/dist/dist-kIJlDMvm.js +27162 -0
- package/dist/index.html +4 -2
- package/dist/index.js +26186 -8576
- package/dist/schema-compiler.js +48 -0
- package/documentation/SCHEMAS.md +182 -0
- package/package.json +24 -25
- package/schema.sql +67 -23
- package/templates/astro-starter/astro.config.mjs +27 -0
- package/templates/astro-starter/package.json.template +20 -0
- package/templates/astro-starter/public/robots.txt +23 -0
- package/templates/astro-starter/src/components/blocks/BlockRenderer.astro +143 -0
- package/templates/astro-starter/src/components/blocks/ColumnLayout.astro +67 -0
- package/templates/astro-starter/src/components/blocks/HeaderImage.astro +126 -0
- package/templates/astro-starter/src/components/blocks/Hero.astro +218 -0
- package/templates/astro-starter/src/components/blocks/HtmlBlock.astro +25 -0
- package/templates/astro-starter/src/components/blocks/ImageBlock.astro +91 -0
- package/templates/astro-starter/src/components/blocks/NodeList.astro +278 -0
- package/templates/astro-starter/src/components/blocks/TextBlock.astro +15 -0
- package/templates/astro-starter/src/components/global/Breadcrumb.astro +108 -0
- package/templates/astro-starter/src/components/global/Footer.astro +50 -0
- package/templates/astro-starter/src/components/global/Header.astro +171 -0
- package/templates/astro-starter/src/components/global/MetaHead.astro +266 -0
- package/templates/astro-starter/src/components/global/NavigationMenu.astro +413 -0
- package/templates/astro-starter/src/components/ui/KamaImage.astro +180 -0
- package/templates/astro-starter/src/layouts/SkeletonLayout.astro +56 -0
- package/templates/astro-starter/src/layouts/StandardLayout.astro +63 -0
- package/templates/astro-starter/src/lib/cms.ts +219 -0
- package/templates/astro-starter/src/lib/media/kama-image-service.ts +67 -0
- package/templates/astro-starter/src/lib/media/media-proxy.ts +148 -0
- package/templates/astro-starter/src/lib/media/media-url.ts +112 -0
- package/templates/astro-starter/src/middleware.ts +508 -0
- package/templates/astro-starter/src/pages/404.astro +46 -0
- package/templates/astro-starter/src/pages/[...slug].astro +318 -0
- package/templates/astro-starter/src/pages/api/load-nodes.ts +40 -0
- package/templates/astro-starter/src/pages/llms-full.txt.ts +171 -0
- package/templates/astro-starter/src/pages/llms.txt.ts +113 -0
- package/templates/astro-starter/src/pages/media/[...path].ts +14 -0
- package/templates/astro-starter/src/pages/partials/footer.astro +69 -0
- package/templates/astro-starter/src/pages/partials/nav.astro +141 -0
- package/templates/astro-starter/src/styles/standard-theme.css +157 -0
- package/templates/astro-starter/src/utils/tiptap.ts +113 -0
- package/templates/astro-starter/tsconfig.json +0 -0
- package/templates/kama-worker/index.js +19 -0
- package/templates/kama-worker/server.js +104 -0
- package/wrangler.json +22 -0
- package/defaults/definitions/blocks/button.yaml +0 -15
- package/defaults/definitions/blocks/header.yaml +0 -15
- package/defaults/definitions/blocks/header_image.yaml +0 -22
- package/defaults/definitions/blocks/hero.yaml +0 -27
- package/defaults/definitions/blocks/image_card.yaml +0 -57
- package/defaults/definitions/blocks/single_image.yaml +0 -28
- package/defaults/definitions/blocks/text.yaml +0 -16
- package/defaults/definitions/channels/ecommerce.yaml +0 -24
- package/defaults/definitions/channels/website.yaml +0 -32
- package/defaults/definitions/field-sets/channel-base.yaml +0 -31
- package/defaults/definitions/field-sets/content-block.yaml +0 -46
- package/defaults/definitions/field-sets/page-base.yaml +0 -49
- package/defaults/definitions/field-sets/tree-base.yaml +0 -31
- package/defaults/definitions/node-layouts/three-column.yml +0 -41
- package/defaults/definitions/nodes/address.yaml +0 -32
- package/defaults/definitions/nodes/article.yaml +0 -43
- package/defaults/definitions/nodes/event.yaml +0 -49
- package/defaults/definitions/nodes/external-link.yaml +0 -26
- package/defaults/definitions/nodes/person.yaml +0 -37
- package/defaults/definitions/nodes/product.yaml +0 -86
- package/defaults/definitions/trees/navigation.yaml +0 -29
- package/defaults/definitions/trees/social-links.yaml +0 -9
- package/definitions/_page.yaml +0 -52
- package/dist/assets/index-D6qQsWOj.js +0 -1392
- package/dist/assets/index-TdW5F0pX.css +0 -1
- package/dist/media/kama/2026/08/17a098c92bc54ea4b4441e531a34575b.jpg +0 -0
- package/dist/media/kama/2026/08/3e9ae457dd23461680cc699f42d07cf0.jpg +0 -0
- package/dist/media/kama/2026/08/8e5b3a2fd194459f9b962f8e12928bf0.jpg +0 -0
- package/dist/media/kama/2026/08/8ea5c21026cd4944bdf78c99fe2544a9.jpg +0 -0
- package/scripts/bundle-definitions.js +0 -176
- /package/{defaults → content}/definitions/block-layouts/three-column.yaml +0 -0
- /package/{defaults → content}/definitions/block-layouts/two-column.yaml +0 -0
- /package/{defaults → content}/definitions/field-sets/comments.yaml +0 -0
- /package/{defaults → content}/definitions/field-sets/visibility.yaml +0 -0
|
@@ -5,7 +5,6 @@ layout:
|
|
|
5
5
|
columns: "1fr"
|
|
6
6
|
areas:
|
|
7
7
|
- ["header"]
|
|
8
|
-
- ["hero"]
|
|
9
8
|
- ["content"]
|
|
10
9
|
- ["footer"]
|
|
11
10
|
|
|
@@ -13,10 +12,16 @@ regions:
|
|
|
13
12
|
header:
|
|
14
13
|
label: Header
|
|
15
14
|
inherit: parent
|
|
16
|
-
|
|
17
|
-
label: Hero / Top Banner
|
|
15
|
+
allowedBlocks: "*"
|
|
18
16
|
content:
|
|
19
17
|
label: Content
|
|
18
|
+
allowedBlocks: "*"
|
|
20
19
|
footer:
|
|
21
20
|
label: Footer
|
|
22
21
|
inherit: parent
|
|
22
|
+
purgeTargets:
|
|
23
|
+
- "/partials/footer"
|
|
24
|
+
disallowedBlocks:
|
|
25
|
+
- hero
|
|
26
|
+
- image_card
|
|
27
|
+
- header_image
|
|
@@ -21,18 +21,23 @@ regions:
|
|
|
21
21
|
allowedTypes: ["image/*"]
|
|
22
22
|
crops:
|
|
23
23
|
standard:
|
|
24
|
-
label: "Desktop Header (
|
|
25
|
-
aspectRatio:
|
|
24
|
+
label: "Desktop Header (3:1)"
|
|
25
|
+
aspectRatio: 3.0
|
|
26
26
|
tablet:
|
|
27
27
|
label: "Tablet Header (2:1)"
|
|
28
28
|
aspectRatio: 2.0
|
|
29
|
-
mobile:
|
|
30
|
-
label: "Mobile Header (4:3)"
|
|
31
|
-
aspectRatio: 1.33
|
|
32
29
|
public: true
|
|
33
30
|
|
|
34
31
|
content:
|
|
35
32
|
label: Content
|
|
33
|
+
allowedBlocks: "*"
|
|
34
|
+
|
|
36
35
|
footer:
|
|
37
36
|
label: Footer
|
|
38
37
|
inherit: parent
|
|
38
|
+
purgeTargets:
|
|
39
|
+
- "/partials/footer"
|
|
40
|
+
disallowedBlocks:
|
|
41
|
+
- hero
|
|
42
|
+
- image_card
|
|
43
|
+
- header_image
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# content/definitions/layouts/two-column-split.yml
|
|
2
2
|
id: two-column
|
|
3
3
|
label: Two Column
|
|
4
4
|
|
|
@@ -22,19 +22,27 @@ regions:
|
|
|
22
22
|
allowedTypes: ["image/*"]
|
|
23
23
|
crops:
|
|
24
24
|
standard:
|
|
25
|
-
label: "Desktop Header (
|
|
26
|
-
aspectRatio:
|
|
25
|
+
label: "Desktop Header (3:1)"
|
|
26
|
+
aspectRatio: 3.0
|
|
27
27
|
tablet:
|
|
28
28
|
label: "Tablet Header (2:1)"
|
|
29
29
|
aspectRatio: 2.0
|
|
30
|
-
mobile:
|
|
31
|
-
label: "Mobile Header (4:3)"
|
|
32
|
-
aspectRatio: 1.33
|
|
33
30
|
public: true
|
|
34
31
|
content: # 👈 Changed 'main' to 'content'
|
|
35
32
|
label: Content
|
|
33
|
+
allowedBlocks: "*"
|
|
36
34
|
sidebar:
|
|
37
35
|
label: Sidebar
|
|
36
|
+
disallowedBlocks:
|
|
37
|
+
- hero
|
|
38
|
+
- image_card
|
|
39
|
+
- header_image
|
|
38
40
|
footer:
|
|
39
41
|
label: Footer
|
|
40
42
|
inherit: parent
|
|
43
|
+
purgeTargets:
|
|
44
|
+
- "/partials/footer"
|
|
45
|
+
disallowedBlocks:
|
|
46
|
+
- hero
|
|
47
|
+
- image_card
|
|
48
|
+
- header_image
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: address
|
|
2
|
+
label: Address
|
|
3
|
+
inTree: false
|
|
4
|
+
|
|
5
|
+
tabs:
|
|
6
|
+
settings:
|
|
7
|
+
label: "Address"
|
|
8
|
+
fields:
|
|
9
|
+
title:
|
|
10
|
+
label: Address Title
|
|
11
|
+
required: true
|
|
12
|
+
|
|
13
|
+
street:
|
|
14
|
+
label: Street
|
|
15
|
+
|
|
16
|
+
city:
|
|
17
|
+
label: City
|
|
18
|
+
|
|
19
|
+
area:
|
|
20
|
+
label: County / Area
|
|
21
|
+
|
|
22
|
+
zip:
|
|
23
|
+
label: ZIP
|
|
24
|
+
|
|
25
|
+
country:
|
|
26
|
+
label: Country
|
|
27
|
+
|
|
28
|
+
geolocation:
|
|
29
|
+
label: "Geolocation"
|
|
30
|
+
fields:
|
|
31
|
+
lat:
|
|
32
|
+
label: Latitude
|
|
33
|
+
|
|
34
|
+
lng:
|
|
35
|
+
label: Longitude
|
|
36
|
+
|
|
37
|
+
timezone:
|
|
38
|
+
label: Timezone
|
|
39
|
+
|
|
40
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
id: article
|
|
2
|
+
label: Article
|
|
3
|
+
inTree: false
|
|
4
|
+
hasCanvas: true
|
|
5
|
+
directLinking: true
|
|
6
|
+
|
|
7
|
+
defaultLayout: "content"
|
|
8
|
+
allowedBlocks: "*"
|
|
9
|
+
|
|
10
|
+
tabs:
|
|
11
|
+
settings:
|
|
12
|
+
label: "Article"
|
|
13
|
+
fields:
|
|
14
|
+
<<: !include ../field-sets/page-base.yaml
|
|
15
|
+
|
|
16
|
+
title:
|
|
17
|
+
label: Article title
|
|
18
|
+
required: true
|
|
19
|
+
|
|
20
|
+
slug:
|
|
21
|
+
linkedTo: "title"
|
|
22
|
+
|
|
23
|
+
articleDate:
|
|
24
|
+
type: date
|
|
25
|
+
label: Article Date
|
|
26
|
+
public: true
|
|
27
|
+
default: now
|
|
28
|
+
index: true
|
|
29
|
+
|
|
30
|
+
abstract:
|
|
31
|
+
label: Abstract
|
|
32
|
+
type: textarea
|
|
33
|
+
public: true
|
|
34
|
+
|
|
35
|
+
authors:
|
|
36
|
+
label: Authors
|
|
37
|
+
type: relation
|
|
38
|
+
nodeTypes: ["person"]
|
|
39
|
+
multiple: true
|
|
40
|
+
public: true
|
|
41
|
+
|
|
42
|
+
categories:
|
|
43
|
+
type: taxonomy
|
|
44
|
+
taxonomy: categories
|
|
45
|
+
label: Categories
|
|
46
|
+
multiple: true
|
|
47
|
+
|
|
48
|
+
tags:
|
|
49
|
+
type: taxonomy
|
|
50
|
+
taxonomy: tags
|
|
51
|
+
label: Tags
|
|
52
|
+
multiple: true
|
|
53
|
+
|
|
54
|
+
image:
|
|
55
|
+
label: Image
|
|
56
|
+
type: asset
|
|
57
|
+
required: true
|
|
58
|
+
multiple: false
|
|
59
|
+
maxSizeMB: 150
|
|
60
|
+
allowedTypes: ["image/*"]
|
|
61
|
+
public: true
|
|
62
|
+
|
|
63
|
+
meta: !include ../field-sets/page-seo.yaml
|
|
64
|
+
social: !include ../field-sets/page-social.yaml
|
|
65
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
id: event
|
|
2
|
+
label: Event
|
|
3
|
+
inTree: false
|
|
4
|
+
hasCanvas: true
|
|
5
|
+
directLinking: true
|
|
6
|
+
|
|
7
|
+
regions:
|
|
8
|
+
main:
|
|
9
|
+
label: Content
|
|
10
|
+
|
|
11
|
+
allowedBlocks:
|
|
12
|
+
- header
|
|
13
|
+
- hero
|
|
14
|
+
- text
|
|
15
|
+
- image_card
|
|
16
|
+
- header_image
|
|
17
|
+
- two-column
|
|
18
|
+
- three-column
|
|
19
|
+
- single_image
|
|
20
|
+
|
|
21
|
+
tabs:
|
|
22
|
+
settings:
|
|
23
|
+
label: "Event"
|
|
24
|
+
fields:
|
|
25
|
+
<<: !include ../field-sets/page-base.yaml
|
|
26
|
+
|
|
27
|
+
title:
|
|
28
|
+
label: Event Title
|
|
29
|
+
required: true
|
|
30
|
+
showAsEditorTitle: true
|
|
31
|
+
|
|
32
|
+
slug:
|
|
33
|
+
linkedTo: "title"
|
|
34
|
+
|
|
35
|
+
startTime:
|
|
36
|
+
type: datetime
|
|
37
|
+
label: Starts
|
|
38
|
+
public: true
|
|
39
|
+
index: true
|
|
40
|
+
showAsEditorTitle: true
|
|
41
|
+
|
|
42
|
+
endTime:
|
|
43
|
+
type: datetime
|
|
44
|
+
label: Finishes
|
|
45
|
+
public: true
|
|
46
|
+
index: true
|
|
47
|
+
|
|
48
|
+
abstract:
|
|
49
|
+
label: Abstract
|
|
50
|
+
type: textarea
|
|
51
|
+
public: true
|
|
52
|
+
|
|
53
|
+
meta: !include ../field-sets/page-meta.yaml
|
|
54
|
+
social: !include ../field-sets/page-social.yaml
|
|
55
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
id: external-link
|
|
2
|
+
label: External Link
|
|
3
|
+
inTree: true
|
|
4
|
+
|
|
5
|
+
tabs:
|
|
6
|
+
settings:
|
|
7
|
+
label: "Link"
|
|
8
|
+
fields:
|
|
9
|
+
<<: !include ../field-sets/page-base.yaml
|
|
10
|
+
|
|
11
|
+
title:
|
|
12
|
+
label: Link Text
|
|
13
|
+
|
|
14
|
+
iconName:
|
|
15
|
+
label: Icon
|
|
16
|
+
type: icon
|
|
17
|
+
dbType: text
|
|
18
|
+
packages: ["heroicons", "lucide", "mdi"]
|
|
19
|
+
|
|
20
|
+
slug:
|
|
21
|
+
label: Slug
|
|
22
|
+
linkedTo: "menuTitle, title"
|
|
23
|
+
|
|
24
|
+
url:
|
|
25
|
+
label: URL
|
|
26
|
+
type: text
|
|
27
|
+
public: true
|
|
28
|
+
|
|
29
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
id: page-skeleton
|
|
2
|
+
label: Page Skeleton
|
|
3
|
+
description: Clean slate for pages with custom CSS and HTML
|
|
4
|
+
inTree: true
|
|
5
|
+
inVault: true
|
|
6
|
+
hasCanvas: true
|
|
7
|
+
directLinking: true
|
|
8
|
+
|
|
9
|
+
defaultLayout: "content"
|
|
10
|
+
|
|
11
|
+
allowedBlocks: "html"
|
|
12
|
+
|
|
13
|
+
tabs:
|
|
14
|
+
settings:
|
|
15
|
+
label: "Page"
|
|
16
|
+
fields:
|
|
17
|
+
# 🎯 1. Include FieldSet Bundle
|
|
18
|
+
- fieldSet: page-base
|
|
19
|
+
|
|
20
|
+
- menuTitle:
|
|
21
|
+
label: Menu Title
|
|
22
|
+
type: text
|
|
23
|
+
dbType: text
|
|
24
|
+
public: true
|
|
25
|
+
css:
|
|
26
|
+
label: "CSS"
|
|
27
|
+
fields:
|
|
28
|
+
- css:
|
|
29
|
+
label: "CSS"
|
|
30
|
+
type: textarea
|
|
31
|
+
public: true
|
|
32
|
+
jsHeader:
|
|
33
|
+
label: "JavaScript"
|
|
34
|
+
fields:
|
|
35
|
+
- jsHeader:
|
|
36
|
+
label: "JS in Header"
|
|
37
|
+
type: textarea
|
|
38
|
+
public: true
|
|
39
|
+
|
|
40
|
+
- jsFooter:
|
|
41
|
+
label: "JS in Footer"
|
|
42
|
+
type: textarea
|
|
43
|
+
public: true
|
|
44
|
+
|
|
45
|
+
# Dedicated Tab Inclusions
|
|
46
|
+
meta: !include ../field-sets/page-seo.yaml
|
|
47
|
+
social: !include ../field-sets/page-social.yaml
|
|
48
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -5,51 +5,38 @@ inVault: true
|
|
|
5
5
|
hasCanvas: true
|
|
6
6
|
directLinking: true
|
|
7
7
|
|
|
8
|
-
# 👈 Keep this as the absolute last-resort fallback for the Public API
|
|
9
8
|
defaultLayout: "single-column"
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
allowedBlocks:
|
|
13
|
-
- header
|
|
14
|
-
- hero
|
|
15
|
-
- text
|
|
16
|
-
- image_card
|
|
17
|
-
- header_image
|
|
18
|
-
- two-column
|
|
19
|
-
- three-column
|
|
20
|
-
- single_image
|
|
10
|
+
allowedBlocks: "*"
|
|
21
11
|
|
|
22
12
|
tabs:
|
|
23
13
|
settings:
|
|
24
14
|
label: "Page"
|
|
25
15
|
fields:
|
|
16
|
+
# 🎯 1. Include FieldSet Bundle
|
|
26
17
|
- fieldSet: page-base
|
|
27
18
|
|
|
28
|
-
# 👉 THE CURRENT PAGE'S LAYOUT
|
|
29
19
|
- layoutId:
|
|
30
20
|
label: Page Layout
|
|
31
21
|
type: layout-select
|
|
32
22
|
dbType: text
|
|
33
23
|
default: "inherit"
|
|
34
|
-
inheritsFromParent: true
|
|
24
|
+
inheritsFromParent: true
|
|
35
25
|
allowedLayouts:
|
|
36
26
|
- two-column
|
|
37
27
|
- single-column
|
|
38
|
-
- three-column
|
|
39
28
|
- landing-page
|
|
40
29
|
options:
|
|
41
30
|
- { label: "Inherit Layout", value: "inherit" }
|
|
42
31
|
|
|
43
|
-
# 👉 THE BEHAVIOR FOR ALL CHILDREN
|
|
44
32
|
- subpageLayoutId:
|
|
45
33
|
label: Subpages Layout Rule
|
|
46
34
|
type: layout-select
|
|
47
35
|
dbType: text
|
|
48
36
|
default: "inherit"
|
|
49
|
-
inheritsFromParent: true
|
|
37
|
+
inheritsFromParent: true
|
|
50
38
|
allowedLayouts:
|
|
51
39
|
- two-column
|
|
52
|
-
- three-column
|
|
53
40
|
- single-column
|
|
54
41
|
- landing-page
|
|
55
42
|
options:
|
|
@@ -60,6 +47,8 @@ tabs:
|
|
|
60
47
|
type: text
|
|
61
48
|
dbType: text
|
|
62
49
|
public: true
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
50
|
+
|
|
51
|
+
# Dedicated Tab Inclusions
|
|
52
|
+
meta: !include ../field-sets/page-seo.yaml
|
|
53
|
+
social: !include ../field-sets/page-social.yaml
|
|
54
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: person
|
|
2
|
+
label: Person
|
|
3
|
+
inTree: false
|
|
4
|
+
titleTemplate: "{firstName} {lastName}"
|
|
5
|
+
|
|
6
|
+
tabs:
|
|
7
|
+
settings:
|
|
8
|
+
label: "Person"
|
|
9
|
+
fields:
|
|
10
|
+
image:
|
|
11
|
+
label: Image
|
|
12
|
+
type: asset
|
|
13
|
+
multiple: false
|
|
14
|
+
maxSizeMB: 15
|
|
15
|
+
allowedTypes: ["image/*"]
|
|
16
|
+
maxPreviewWidth: 300
|
|
17
|
+
crops:
|
|
18
|
+
list_thumb:
|
|
19
|
+
label: "List View"
|
|
20
|
+
aspectRatio: 1
|
|
21
|
+
shape: "circle"
|
|
22
|
+
public: true
|
|
23
|
+
|
|
24
|
+
salutation:
|
|
25
|
+
label: Salutation
|
|
26
|
+
|
|
27
|
+
firstName:
|
|
28
|
+
label: First Name
|
|
29
|
+
|
|
30
|
+
lastName:
|
|
31
|
+
label: Last Name
|
|
32
|
+
|
|
33
|
+
position:
|
|
34
|
+
label: Position
|
|
35
|
+
required: false
|
|
36
|
+
|
|
37
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
id: product
|
|
2
|
+
label: Product
|
|
3
|
+
inTree: false
|
|
4
|
+
inVault: true
|
|
5
|
+
hasCanvas: false
|
|
6
|
+
directLinking: true
|
|
7
|
+
|
|
8
|
+
layout:
|
|
9
|
+
columns: "3fr 1fr"
|
|
10
|
+
areas:
|
|
11
|
+
- ["main", "sidebar"]
|
|
12
|
+
|
|
13
|
+
regions:
|
|
14
|
+
main:
|
|
15
|
+
label: Product Content
|
|
16
|
+
sidebar:
|
|
17
|
+
label: Sidebar
|
|
18
|
+
|
|
19
|
+
allowedBlocks:
|
|
20
|
+
- header
|
|
21
|
+
- hero
|
|
22
|
+
- text
|
|
23
|
+
- image_card
|
|
24
|
+
- header_image
|
|
25
|
+
- two-column
|
|
26
|
+
- three-column
|
|
27
|
+
- single_image
|
|
28
|
+
|
|
29
|
+
tabs:
|
|
30
|
+
settings:
|
|
31
|
+
label: "Product"
|
|
32
|
+
fields:
|
|
33
|
+
<<: !include ../field-sets/page-base.yaml
|
|
34
|
+
|
|
35
|
+
title:
|
|
36
|
+
label: Product Name
|
|
37
|
+
required: true
|
|
38
|
+
public: true
|
|
39
|
+
|
|
40
|
+
slug:
|
|
41
|
+
linkedTo: "title"
|
|
42
|
+
|
|
43
|
+
price:
|
|
44
|
+
label: Price (€)
|
|
45
|
+
type: number
|
|
46
|
+
public: true
|
|
47
|
+
|
|
48
|
+
description:
|
|
49
|
+
label: Short Abstract
|
|
50
|
+
type: textarea
|
|
51
|
+
public: true
|
|
52
|
+
|
|
53
|
+
media:
|
|
54
|
+
label: "Media"
|
|
55
|
+
fields:
|
|
56
|
+
featuredImage:
|
|
57
|
+
label: Main Product Image
|
|
58
|
+
description: "This is the primary image used in product grids, search results, and catalogs."
|
|
59
|
+
type: asset
|
|
60
|
+
multiple: false
|
|
61
|
+
maxSizeMB: 15
|
|
62
|
+
allowedTypes: ["image/jpeg", "image/png", "image/webp"]
|
|
63
|
+
crops:
|
|
64
|
+
list_thumb:
|
|
65
|
+
label: "List View (4:3)"
|
|
66
|
+
aspectRatio: 1.333
|
|
67
|
+
catalog_card:
|
|
68
|
+
label: "Portrait Card (3:4)"
|
|
69
|
+
aspectRatio: 0.75
|
|
70
|
+
public: true
|
|
71
|
+
|
|
72
|
+
gallery:
|
|
73
|
+
label: Product Gallery
|
|
74
|
+
description: "Drag up to 10 images here for the product detail carousel."
|
|
75
|
+
type: asset
|
|
76
|
+
multiple: true
|
|
77
|
+
maxItems: 10
|
|
78
|
+
allowedTypes: ["image/jpeg", "image/png", "image/webp"]
|
|
79
|
+
crops:
|
|
80
|
+
carousel:
|
|
81
|
+
label: "Carousel Hero (16:9)"
|
|
82
|
+
aspectRatio: 1.777
|
|
83
|
+
zoom:
|
|
84
|
+
label: "Detail Zoom (Square)"
|
|
85
|
+
aspectRatio: 1.0
|
|
86
|
+
public: true
|
|
87
|
+
|
|
88
|
+
meta: !include ../field-sets/page-meta.yaml
|
|
89
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
id: categories
|
|
2
|
+
label: Category
|
|
3
|
+
hierarchical: true
|
|
4
|
+
fields:
|
|
5
|
+
slug:
|
|
6
|
+
label: Slug
|
|
7
|
+
linkedTo: "key"
|
|
8
|
+
description:
|
|
9
|
+
type: textarea
|
|
10
|
+
label: Category Description
|
|
11
|
+
iconName:
|
|
12
|
+
label: Icon
|
|
13
|
+
type: icon
|
|
14
|
+
dbType: text
|
|
15
|
+
packages: ["heroicons", "lucide", "mdi"]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
id: navigation
|
|
2
|
+
label: "Site Navigation"
|
|
3
|
+
|
|
4
|
+
tabs:
|
|
5
|
+
settings:
|
|
6
|
+
label: "Tree"
|
|
7
|
+
fields:
|
|
8
|
+
# 🎯 1. Merge the tree-base fields directly into this dictionary
|
|
9
|
+
fieldSet: tree-base
|
|
10
|
+
|
|
11
|
+
baseUrl:
|
|
12
|
+
label: Base URL
|
|
13
|
+
type: text
|
|
14
|
+
dbType: text
|
|
15
|
+
public: true
|
|
16
|
+
|
|
17
|
+
defaultLanguage:
|
|
18
|
+
label: Language / Locale
|
|
19
|
+
type: language-select
|
|
20
|
+
dbType: text
|
|
21
|
+
public: true
|
|
22
|
+
|
|
23
|
+
# 🎯 2. Mount the access file as an entirely separate tab
|
|
24
|
+
access: !include ../field-sets/access.yaml
|