@brightsideoy/kama 0.1.0-alpha.98 → 1.0.0-alpha.10
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 +726 -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-Bzbme3Ob.css +1 -0
- package/dist/assets/index-DX98CiK-.js +164 -0
- package/dist/dist-CErcWOwp.js +27136 -0
- package/dist/index.html +4 -2
- package/dist/index.js +26159 -8575
- package/dist/schema-compiler.js +48 -0
- package/documentation/SCHEMAS.md +182 -0
- package/package.json +23 -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-TdW5F0pX.css +0 -1
- package/dist/assets/index-u9OkBauM.js +0 -1392
- 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
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
id: hero
|
|
2
|
-
label: Hero
|
|
3
|
-
group: Content
|
|
4
|
-
|
|
5
|
-
fields:
|
|
6
|
-
- heroBadge:
|
|
7
|
-
type: text
|
|
8
|
-
label: Badge
|
|
9
|
-
public: true
|
|
10
|
-
- heroTitle:
|
|
11
|
-
type: text
|
|
12
|
-
label: Title
|
|
13
|
-
public: true
|
|
14
|
-
- heroSubTitle:
|
|
15
|
-
type: text
|
|
16
|
-
label: Sub-Title
|
|
17
|
-
public: true
|
|
18
|
-
- headline:
|
|
19
|
-
type: richtext
|
|
20
|
-
editor: header
|
|
21
|
-
label: Headline
|
|
22
|
-
public: true
|
|
23
|
-
default: "Header here..."
|
|
24
|
-
|
|
25
|
-
- fieldSet: access
|
|
26
|
-
- hidden:
|
|
27
|
-
default: false
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
id: image_card
|
|
2
|
-
label: Image Card
|
|
3
|
-
Group: Content
|
|
4
|
-
description: A versatile card with an image, text, and a CTA button.
|
|
5
|
-
|
|
6
|
-
fields:
|
|
7
|
-
- image:
|
|
8
|
-
label: Card Image
|
|
9
|
-
showLabel: false
|
|
10
|
-
type: asset
|
|
11
|
-
required: true
|
|
12
|
-
multiple: false
|
|
13
|
-
maxSizeMB: 15
|
|
14
|
-
maxPreviewWidth: 300px
|
|
15
|
-
allowedTypes: ["image/*"]
|
|
16
|
-
crops:
|
|
17
|
-
standard:
|
|
18
|
-
label: "Card Header (16:9)"
|
|
19
|
-
aspectRatio: 3.0
|
|
20
|
-
public: true
|
|
21
|
-
|
|
22
|
-
- headline:
|
|
23
|
-
label: Headline
|
|
24
|
-
type: text
|
|
25
|
-
required: true
|
|
26
|
-
public: true
|
|
27
|
-
default: "Headline..."
|
|
28
|
-
|
|
29
|
-
- summary:
|
|
30
|
-
label: Text
|
|
31
|
-
description: Keep it brief, 2-3 sentences max.
|
|
32
|
-
type: richtext
|
|
33
|
-
editor: minimal
|
|
34
|
-
public: true
|
|
35
|
-
default: "Card text content..."
|
|
36
|
-
|
|
37
|
-
- link:
|
|
38
|
-
label: Link
|
|
39
|
-
type: link
|
|
40
|
-
allowedLinkTypes:
|
|
41
|
-
- tree
|
|
42
|
-
- node
|
|
43
|
-
- url
|
|
44
|
-
- file
|
|
45
|
-
- email
|
|
46
|
-
- telephone
|
|
47
|
-
|
|
48
|
-
- linkText:
|
|
49
|
-
label: Button Text
|
|
50
|
-
type: text
|
|
51
|
-
description: "e.g., 'Read More' or 'Buy Now'"
|
|
52
|
-
default: "Read More"
|
|
53
|
-
public: true
|
|
54
|
-
|
|
55
|
-
- fieldSet: access
|
|
56
|
-
- hidden:
|
|
57
|
-
default: false
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
id: single_image
|
|
2
|
-
label: Single Image
|
|
3
|
-
group: Media
|
|
4
|
-
description: Just a single image block.
|
|
5
|
-
|
|
6
|
-
fields:
|
|
7
|
-
- image:
|
|
8
|
-
label: Image
|
|
9
|
-
type: asset
|
|
10
|
-
required: true
|
|
11
|
-
multiple: false
|
|
12
|
-
maxSizeMB: 15
|
|
13
|
-
allowedTypes: ["image/*"]
|
|
14
|
-
public: true
|
|
15
|
-
|
|
16
|
-
- link:
|
|
17
|
-
label: Link
|
|
18
|
-
type: link
|
|
19
|
-
position: sidebar
|
|
20
|
-
allowedLinkTypes:
|
|
21
|
-
- tree
|
|
22
|
-
- node
|
|
23
|
-
- url
|
|
24
|
-
- file
|
|
25
|
-
|
|
26
|
-
- fieldSet: access
|
|
27
|
-
- hidden:
|
|
28
|
-
default: false
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
id: text
|
|
2
|
-
label: Text
|
|
3
|
-
group: Content
|
|
4
|
-
description: Paragraph body
|
|
5
|
-
|
|
6
|
-
fields:
|
|
7
|
-
- body:
|
|
8
|
-
label: Text
|
|
9
|
-
type: richtext
|
|
10
|
-
editor: default
|
|
11
|
-
default: "Write content here..."
|
|
12
|
-
public: true
|
|
13
|
-
|
|
14
|
-
- fieldSet: access
|
|
15
|
-
- hidden:
|
|
16
|
-
default: false
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
id: ecommerce
|
|
2
|
-
label: "E-Commerce"
|
|
3
|
-
|
|
4
|
-
tabs:
|
|
5
|
-
settings:
|
|
6
|
-
label: "Channel"
|
|
7
|
-
fields:
|
|
8
|
-
- fieldSet: channel-base
|
|
9
|
-
|
|
10
|
-
- currency:
|
|
11
|
-
label: Default Currency
|
|
12
|
-
type: select
|
|
13
|
-
default: "EUR"
|
|
14
|
-
options:
|
|
15
|
-
- "EUR"
|
|
16
|
-
- "USD"
|
|
17
|
-
- "GBP"
|
|
18
|
-
|
|
19
|
-
- checkoutUrl:
|
|
20
|
-
label: Checkout Endpoint URL
|
|
21
|
-
type: text
|
|
22
|
-
public: true
|
|
23
|
-
|
|
24
|
-
- fieldSet: access
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
id: website
|
|
2
|
-
label: "Website"
|
|
3
|
-
|
|
4
|
-
tabs:
|
|
5
|
-
settings:
|
|
6
|
-
label: "Channel"
|
|
7
|
-
fields:
|
|
8
|
-
- fieldSet: channel-base
|
|
9
|
-
|
|
10
|
-
- domain:
|
|
11
|
-
label: Hostname
|
|
12
|
-
type: text
|
|
13
|
-
dbType: text
|
|
14
|
-
index: true
|
|
15
|
-
public: true
|
|
16
|
-
|
|
17
|
-
- baseUrl:
|
|
18
|
-
label: Base URL
|
|
19
|
-
type: text
|
|
20
|
-
dbType: text
|
|
21
|
-
public: true
|
|
22
|
-
|
|
23
|
-
- defaultLanguage:
|
|
24
|
-
label: Channel Language / Locale
|
|
25
|
-
type: language-select
|
|
26
|
-
dbType: text
|
|
27
|
-
public: true
|
|
28
|
-
|
|
29
|
-
access:
|
|
30
|
-
label: "Access"
|
|
31
|
-
fields:
|
|
32
|
-
- fieldSet: access
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
id: channel-base
|
|
2
|
-
label: Channel Base Properties
|
|
3
|
-
|
|
4
|
-
fields:
|
|
5
|
-
- id:
|
|
6
|
-
label: Internal ID
|
|
7
|
-
type: hidden
|
|
8
|
-
dbType: integer
|
|
9
|
-
primaryKey: true
|
|
10
|
-
|
|
11
|
-
- label:
|
|
12
|
-
label: Channel Name
|
|
13
|
-
type: text
|
|
14
|
-
dbType: text
|
|
15
|
-
public: true
|
|
16
|
-
rules:
|
|
17
|
-
required: true
|
|
18
|
-
|
|
19
|
-
- key:
|
|
20
|
-
label: "API Identifier"
|
|
21
|
-
type: slug
|
|
22
|
-
dbType: text
|
|
23
|
-
public: true
|
|
24
|
-
index: true
|
|
25
|
-
linkedTo: label
|
|
26
|
-
placeholder: "e.g. main-site, store-eu"
|
|
27
|
-
rules:
|
|
28
|
-
required: true
|
|
29
|
-
unique: true
|
|
30
|
-
pattern: "^[a-z0-9-_]+$"
|
|
31
|
-
customMessage: "API key must be unique and contain only lowercase letters, numbers, hyphens, or underscores."
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# definitions/field-sets/content-block.yaml
|
|
2
|
-
id: content-block
|
|
3
|
-
label: Content Block Base Properties
|
|
4
|
-
|
|
5
|
-
fields:
|
|
6
|
-
- id:
|
|
7
|
-
label: ID
|
|
8
|
-
type: hidden
|
|
9
|
-
dbType: text
|
|
10
|
-
primaryKey: true
|
|
11
|
-
|
|
12
|
-
- contentId:
|
|
13
|
-
label: Node ID
|
|
14
|
-
type: text
|
|
15
|
-
dbType: text
|
|
16
|
-
rules:
|
|
17
|
-
required: true
|
|
18
|
-
|
|
19
|
-
- sortOrder:
|
|
20
|
-
label: Sort Order
|
|
21
|
-
type: number
|
|
22
|
-
dbType: integer
|
|
23
|
-
rules:
|
|
24
|
-
required: true
|
|
25
|
-
|
|
26
|
-
- elementType:
|
|
27
|
-
label: Element Component Type
|
|
28
|
-
type: text
|
|
29
|
-
dbType: text
|
|
30
|
-
rules:
|
|
31
|
-
required: true
|
|
32
|
-
|
|
33
|
-
- dataJson:
|
|
34
|
-
label: Content Field Data
|
|
35
|
-
type: json
|
|
36
|
-
dbType: json
|
|
37
|
-
rules:
|
|
38
|
-
required: true
|
|
39
|
-
|
|
40
|
-
- region:
|
|
41
|
-
label: Grid Region
|
|
42
|
-
type: text
|
|
43
|
-
dbType: text
|
|
44
|
-
default: "main"
|
|
45
|
-
rules:
|
|
46
|
-
required: true
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# definitions/field-sets/page-base.yaml
|
|
2
|
-
id: page-base
|
|
3
|
-
label: Base Page Properties
|
|
4
|
-
|
|
5
|
-
fields:
|
|
6
|
-
- id:
|
|
7
|
-
label: ID
|
|
8
|
-
type: hidden
|
|
9
|
-
dbType: text
|
|
10
|
-
primaryKey: true
|
|
11
|
-
public: true
|
|
12
|
-
|
|
13
|
-
- channelId:
|
|
14
|
-
label: Channel ID
|
|
15
|
-
type: hidden
|
|
16
|
-
dbType: text
|
|
17
|
-
public: true
|
|
18
|
-
index: true
|
|
19
|
-
|
|
20
|
-
- nodeType:
|
|
21
|
-
label: Type
|
|
22
|
-
type: select
|
|
23
|
-
dbType: text
|
|
24
|
-
default: "page"
|
|
25
|
-
public: true
|
|
26
|
-
position: sidebar
|
|
27
|
-
rules:
|
|
28
|
-
required: true
|
|
29
|
-
|
|
30
|
-
- title:
|
|
31
|
-
label: Page Title
|
|
32
|
-
type: text
|
|
33
|
-
dbType: text
|
|
34
|
-
public: true
|
|
35
|
-
rules:
|
|
36
|
-
required: true
|
|
37
|
-
|
|
38
|
-
- slug:
|
|
39
|
-
label: URL Slug
|
|
40
|
-
type: slug
|
|
41
|
-
linkedTo: title
|
|
42
|
-
dbType: text
|
|
43
|
-
public: true
|
|
44
|
-
index: true
|
|
45
|
-
rules:
|
|
46
|
-
required: true
|
|
47
|
-
uniqueSibling: true
|
|
48
|
-
pattern: "^[a-z0-9_-]+$"
|
|
49
|
-
customMessage: "Slug can only contain lowercase letters, numbers, hyphens, and underscores."
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
id: tree-base
|
|
2
|
-
label: Tree Base Properties
|
|
3
|
-
|
|
4
|
-
fields:
|
|
5
|
-
- id:
|
|
6
|
-
label: Internal ID
|
|
7
|
-
type: hidden
|
|
8
|
-
dbType: integer
|
|
9
|
-
primaryKey: true
|
|
10
|
-
|
|
11
|
-
- label:
|
|
12
|
-
label: "Label"
|
|
13
|
-
type: text
|
|
14
|
-
dbType: text
|
|
15
|
-
public: true
|
|
16
|
-
rules:
|
|
17
|
-
required: true
|
|
18
|
-
|
|
19
|
-
- key:
|
|
20
|
-
label: "API Identifier"
|
|
21
|
-
type: slug
|
|
22
|
-
dbType: text
|
|
23
|
-
index: true
|
|
24
|
-
public: true
|
|
25
|
-
linkedTo: label
|
|
26
|
-
placeholder: "e.g. main-site, store-eu"
|
|
27
|
-
rules:
|
|
28
|
-
required: true
|
|
29
|
-
unique: true
|
|
30
|
-
pattern: "^[a-z0-9-_]+$"
|
|
31
|
-
customMessage: "API key must be unique and contain only lowercase letters, numbers, hyphens, or underscores."
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
id: three-column
|
|
2
|
-
label: Three Column
|
|
3
|
-
|
|
4
|
-
layout:
|
|
5
|
-
columns: "2fr 7fr 3fr"
|
|
6
|
-
areas:
|
|
7
|
-
- ["header", "header", "header"]
|
|
8
|
-
- ["left_nav", "content", "right_sidebar"]
|
|
9
|
-
- ["footer", "footer", "footer"]
|
|
10
|
-
|
|
11
|
-
regions:
|
|
12
|
-
header:
|
|
13
|
-
label: Header Image
|
|
14
|
-
showLabel: true
|
|
15
|
-
inherit: parent
|
|
16
|
-
allowOverride: true
|
|
17
|
-
dropType: image
|
|
18
|
-
maxPreviewWidth: 800px
|
|
19
|
-
multiple: false
|
|
20
|
-
maxSizeMB: 20
|
|
21
|
-
allowedTypes: ["image/*"]
|
|
22
|
-
crops:
|
|
23
|
-
standard:
|
|
24
|
-
label: "Desktop Header (4:1)"
|
|
25
|
-
aspectRatio: 4.0
|
|
26
|
-
tablet:
|
|
27
|
-
label: "Tablet Header (2:1)"
|
|
28
|
-
aspectRatio: 2.0
|
|
29
|
-
mobile:
|
|
30
|
-
label: "Mobile Header (4:3)"
|
|
31
|
-
aspectRatio: 1.33
|
|
32
|
-
public: true
|
|
33
|
-
left_nav:
|
|
34
|
-
label: Left Navigation
|
|
35
|
-
content:
|
|
36
|
-
label: Content
|
|
37
|
-
right_sidebar:
|
|
38
|
-
label: Right Sidebar
|
|
39
|
-
footer:
|
|
40
|
-
label: Footer
|
|
41
|
-
inherit: parent
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
id: address
|
|
2
|
-
label: Address
|
|
3
|
-
inTree: false
|
|
4
|
-
|
|
5
|
-
# 👉 TABS DEFINITION
|
|
6
|
-
tabs:
|
|
7
|
-
settings:
|
|
8
|
-
label: "Address"
|
|
9
|
-
fields:
|
|
10
|
-
- title:
|
|
11
|
-
label: Address Title
|
|
12
|
-
required: true
|
|
13
|
-
- street:
|
|
14
|
-
label: Street
|
|
15
|
-
- city:
|
|
16
|
-
label: City
|
|
17
|
-
- area:
|
|
18
|
-
label: County / Area
|
|
19
|
-
- zip:
|
|
20
|
-
label: ZIP
|
|
21
|
-
- country:
|
|
22
|
-
label: Country
|
|
23
|
-
geolocation:
|
|
24
|
-
label: "Geolocation"
|
|
25
|
-
fields:
|
|
26
|
-
- lat:
|
|
27
|
-
label: Latitude
|
|
28
|
-
- lng:
|
|
29
|
-
label: Longitude
|
|
30
|
-
- timezone:
|
|
31
|
-
label: Timezone
|
|
32
|
-
- fieldSet: access
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
id: article
|
|
2
|
-
label: Article
|
|
3
|
-
inTree: false
|
|
4
|
-
hasCanvas: true
|
|
5
|
-
directLinking: true
|
|
6
|
-
|
|
7
|
-
regions:
|
|
8
|
-
content:
|
|
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: "Article"
|
|
24
|
-
fields:
|
|
25
|
-
- fieldSet: page-base
|
|
26
|
-
- title:
|
|
27
|
-
label: Article title
|
|
28
|
-
required: true
|
|
29
|
-
- slug:
|
|
30
|
-
linkedTo: "title"
|
|
31
|
-
- articleDate:
|
|
32
|
-
type: date
|
|
33
|
-
label: Article Date
|
|
34
|
-
public: true
|
|
35
|
-
default: now
|
|
36
|
-
index: true
|
|
37
|
-
- abstract:
|
|
38
|
-
label: Abstract
|
|
39
|
-
type: textarea
|
|
40
|
-
public: true
|
|
41
|
-
- fieldSet: page-meta
|
|
42
|
-
- fieldSet: page-social
|
|
43
|
-
- fieldSet: access
|
|
@@ -1,49 +0,0 @@
|
|
|
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
|
-
- fieldSet: page-base
|
|
26
|
-
- title:
|
|
27
|
-
label: Event Title
|
|
28
|
-
required: true
|
|
29
|
-
showAsEditorTitle: true
|
|
30
|
-
- slug:
|
|
31
|
-
linkedTo: "title"
|
|
32
|
-
- startTime:
|
|
33
|
-
type: datetime
|
|
34
|
-
label: Starts
|
|
35
|
-
public: true
|
|
36
|
-
index: true
|
|
37
|
-
showAsEditorTitle: true
|
|
38
|
-
- endTime:
|
|
39
|
-
type: datetime
|
|
40
|
-
label: Finishes
|
|
41
|
-
public: true
|
|
42
|
-
index: true
|
|
43
|
-
- abstract:
|
|
44
|
-
label: Abstract
|
|
45
|
-
type: textarea
|
|
46
|
-
public: true
|
|
47
|
-
- fieldSet: page-meta
|
|
48
|
-
- fieldSet: page-social
|
|
49
|
-
- fieldSet: access
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
id: external-link
|
|
2
|
-
label: External Link
|
|
3
|
-
inTree: true
|
|
4
|
-
|
|
5
|
-
tabs:
|
|
6
|
-
settings:
|
|
7
|
-
label: "Link"
|
|
8
|
-
fields:
|
|
9
|
-
- fieldSet: page-base
|
|
10
|
-
- nodeType
|
|
11
|
-
- title:
|
|
12
|
-
label: Link Text
|
|
13
|
-
- iconName:
|
|
14
|
-
label: Icon
|
|
15
|
-
type: icon
|
|
16
|
-
dbType: text
|
|
17
|
-
packages: ["heroicons", "lucide", "mdi"]
|
|
18
|
-
- slug:
|
|
19
|
-
label: Slug
|
|
20
|
-
linkedTo: "menuTitle, title"
|
|
21
|
-
- url:
|
|
22
|
-
label: URL
|
|
23
|
-
type: text
|
|
24
|
-
public: true
|
|
25
|
-
|
|
26
|
-
- fieldSet: access
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
id: person
|
|
2
|
-
label: Person
|
|
3
|
-
inTree: false
|
|
4
|
-
inVault: true
|
|
5
|
-
hasCanvas: false
|
|
6
|
-
|
|
7
|
-
# 👉 TABS DEFINITION
|
|
8
|
-
tabs:
|
|
9
|
-
settings:
|
|
10
|
-
label: "Person"
|
|
11
|
-
fields:
|
|
12
|
-
- image:
|
|
13
|
-
label: Image
|
|
14
|
-
type: asset
|
|
15
|
-
multiple: false
|
|
16
|
-
maxSizeMB: 15
|
|
17
|
-
allowedTypes: ["image/*"]
|
|
18
|
-
maxPreviewWidth: 300
|
|
19
|
-
crops:
|
|
20
|
-
list_thumb:
|
|
21
|
-
label: "List View"
|
|
22
|
-
aspectRatio: 1
|
|
23
|
-
shape: "circle"
|
|
24
|
-
public: true
|
|
25
|
-
|
|
26
|
-
- title:
|
|
27
|
-
label: Title
|
|
28
|
-
required: false
|
|
29
|
-
- firstName:
|
|
30
|
-
label: First Name
|
|
31
|
-
showAsEditorTitle: true
|
|
32
|
-
- lastName:
|
|
33
|
-
label: Last Name
|
|
34
|
-
showAsEditorTitle: true
|
|
35
|
-
- position:
|
|
36
|
-
|
|
37
|
-
- fieldSet: access
|
|
@@ -1,86 +0,0 @@
|
|
|
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
|
-
- fieldSet: page-base
|
|
34
|
-
- title:
|
|
35
|
-
label: Product Name
|
|
36
|
-
required: true
|
|
37
|
-
public: true
|
|
38
|
-
- slug:
|
|
39
|
-
linkedTo: "title"
|
|
40
|
-
- price:
|
|
41
|
-
label: Price (€)
|
|
42
|
-
type: number
|
|
43
|
-
public: true
|
|
44
|
-
- description:
|
|
45
|
-
label: Short Abstract
|
|
46
|
-
type: textarea
|
|
47
|
-
public: true
|
|
48
|
-
- fieldSet: meta
|
|
49
|
-
- fieldSet: access
|
|
50
|
-
|
|
51
|
-
media:
|
|
52
|
-
label: "Media"
|
|
53
|
-
fields:
|
|
54
|
-
# 🎯 ZONE 1: The Main Image (Strict crops for lists/catalogs)
|
|
55
|
-
- featuredImage:
|
|
56
|
-
label: Main Product Image
|
|
57
|
-
description: "This is the primary image used in product grids, search results, and catalogs."
|
|
58
|
-
type: asset
|
|
59
|
-
multiple: false
|
|
60
|
-
maxSizeMB: 15
|
|
61
|
-
allowedTypes: ["image/jpeg", "image/png", "image/webp"]
|
|
62
|
-
crops:
|
|
63
|
-
list_thumb:
|
|
64
|
-
label: "List View (4:3)"
|
|
65
|
-
aspectRatio: 1.333
|
|
66
|
-
catalog_card:
|
|
67
|
-
label: "Portrait Card (3:4)"
|
|
68
|
-
aspectRatio: 0.75
|
|
69
|
-
public: true
|
|
70
|
-
|
|
71
|
-
# 🎯 ZONE 2: The Gallery (Different crops for the carousel)
|
|
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
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
id: navigation
|
|
2
|
-
label: "Site Navigation"
|
|
3
|
-
|
|
4
|
-
tabs:
|
|
5
|
-
settings:
|
|
6
|
-
label: "Tree"
|
|
7
|
-
fields:
|
|
8
|
-
- fieldSet: tree-base
|
|
9
|
-
- baseUrl:
|
|
10
|
-
label: Base URL
|
|
11
|
-
type: text
|
|
12
|
-
dbType: text
|
|
13
|
-
public: true
|
|
14
|
-
- defaultLanguage:
|
|
15
|
-
label: Channel Language / Locale
|
|
16
|
-
type: language-select
|
|
17
|
-
dbType: text
|
|
18
|
-
public: true
|
|
19
|
-
- maxDepth:
|
|
20
|
-
type: select
|
|
21
|
-
label: "Maximum Menu Depth"
|
|
22
|
-
default: "3"
|
|
23
|
-
options:
|
|
24
|
-
- "1"
|
|
25
|
-
- "2"
|
|
26
|
-
- "3"
|
|
27
|
-
- "4"
|
|
28
|
-
|
|
29
|
-
- fieldSet: access
|