@brightsideoy/kama 0.1.0-alpha.113 → 0.1.0-alpha.115
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/bin/cli.js +172 -379
- package/content/definitions/blocks/button.yaml +7 -8
- package/content/definitions/blocks/header.yaml +7 -9
- package/content/definitions/blocks/header_image.yaml +14 -15
- package/content/definitions/blocks/hero.yaml +22 -21
- package/content/definitions/blocks/image_card.yaml +46 -47
- package/content/definitions/blocks/single_image.yaml +19 -20
- package/content/definitions/blocks/text.yaml +8 -9
- package/content/definitions/channels/ecommerce.yaml +14 -16
- package/content/definitions/channels/website.yaml +20 -21
- package/content/definitions/field-sets/access.yaml +3 -5
- package/content/definitions/field-sets/channel-base.yaml +25 -25
- package/content/definitions/field-sets/content-block.yaml +36 -41
- package/content/definitions/field-sets/page-base.yaml +40 -45
- package/content/definitions/field-sets/page-meta.yaml +1 -4
- package/content/definitions/field-sets/page-social.yaml +6 -8
- package/content/definitions/field-sets/tree-base.yaml +25 -25
- package/content/definitions/nodes/address.yaml +29 -21
- package/content/definitions/nodes/article.yaml +24 -19
- package/content/definitions/nodes/event.yaml +32 -26
- package/content/definitions/nodes/external-link.yaml +20 -17
- package/content/definitions/nodes/page.yaml +38 -35
- package/content/definitions/nodes/person.yaml +29 -27
- package/content/definitions/nodes/product.yaml +52 -49
- package/content/definitions/trees/navigation.yaml +26 -21
- package/content/definitions/trees/social-links.yaml +5 -2
- package/dist/assets/index-8T39DEP3.js +162 -0
- package/dist/assets/index-B9oh2_TL.css +1 -0
- package/dist/index.html +2 -2
- package/dist/index.js +6492 -4249
- package/package.json +5 -6
- package/schema.sql +5 -13
- package/templates/astro-starter/astro.config.mjs +40 -0
- package/templates/astro-starter/package.json.template +20 -0
- package/templates/astro-starter/src/components/blocks/BlockRenderer.astro +125 -0
- package/templates/astro-starter/src/components/blocks/ColumnLayout.astro +66 -0
- package/templates/astro-starter/src/components/blocks/HeaderImage.astro +131 -0
- package/templates/astro-starter/src/components/blocks/Hero.astro +218 -0
- package/templates/astro-starter/src/components/blocks/ImageBlock.astro +160 -0
- package/templates/astro-starter/src/components/blocks/TextBlock.astro +13 -0
- package/templates/astro-starter/src/components/global/Breadcrumb.astro +62 -0
- package/templates/astro-starter/src/components/global/Footer.astro +48 -0
- package/templates/astro-starter/src/components/global/Header.astro +92 -0
- package/templates/astro-starter/src/components/global/NavigationMenu.astro +450 -0
- package/templates/astro-starter/src/components/ui/KamaImage.astro +148 -0
- package/templates/astro-starter/src/kama-image-service.ts +41 -0
- package/templates/astro-starter/src/layouts/Layout.astro +280 -0
- package/templates/astro-starter/src/lib/cms.ts +149 -0
- package/templates/astro-starter/src/lib/media-url.ts +34 -0
- package/templates/astro-starter/src/middleware.ts +306 -0
- package/templates/astro-starter/src/pages/404.astro +46 -0
- package/templates/astro-starter/src/pages/[...slug].astro +234 -0
- package/templates/astro-starter/src/pages/media/[...path].ts +113 -0
- package/templates/astro-starter/tsconfig.json +0 -0
- package/test-local.sh +76 -0
- package/dist/assets/index-10GEw0KY.css +0 -1
- package/dist/assets/index-THJ6BqPP.js +0 -1394
- package/kama-worker/bundled-definitions.js +0 -2394
- package/kama-worker/bundled-definitions.ts +0 -2395
- package/scripts/bundle-definitions.js +0 -224
|
@@ -4,12 +4,11 @@ group: Content
|
|
|
4
4
|
description: Button text
|
|
5
5
|
|
|
6
6
|
fields:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
text:
|
|
8
|
+
label: Text
|
|
9
|
+
type: richtext
|
|
10
|
+
editor: button
|
|
11
|
+
public: true
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
default: false
|
|
13
|
+
tabs:
|
|
14
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -3,13 +3,11 @@ label: Header
|
|
|
3
3
|
group: Content
|
|
4
4
|
|
|
5
5
|
fields:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
default: "Header here..."
|
|
6
|
+
headline:
|
|
7
|
+
type: richtext
|
|
8
|
+
editor: header
|
|
9
|
+
label: Headline
|
|
10
|
+
public: true
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
default: false
|
|
12
|
+
tabs:
|
|
13
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -4,19 +4,18 @@ group: Media
|
|
|
4
4
|
description: Image for page header.
|
|
5
5
|
|
|
6
6
|
fields:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
image:
|
|
8
|
+
label: Image
|
|
9
|
+
type: asset
|
|
10
|
+
required: true
|
|
11
|
+
multiple: false
|
|
12
|
+
maxSizeMB: 15
|
|
13
|
+
allowedTypes: ["image/*"]
|
|
14
|
+
crops:
|
|
15
|
+
standard:
|
|
16
|
+
label: "Page header (21:9)"
|
|
17
|
+
aspectRatio: 2.333
|
|
18
|
+
public: true
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
default: false
|
|
20
|
+
tabs:
|
|
21
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -3,25 +3,26 @@ label: Hero
|
|
|
3
3
|
group: Content
|
|
4
4
|
|
|
5
5
|
fields:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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..."
|
|
6
|
+
heroBadge:
|
|
7
|
+
type: text
|
|
8
|
+
label: Badge
|
|
9
|
+
public: true
|
|
24
10
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
11
|
+
heroTitle:
|
|
12
|
+
type: text
|
|
13
|
+
label: Title
|
|
14
|
+
public: true
|
|
15
|
+
|
|
16
|
+
heroSubTitle:
|
|
17
|
+
type: text
|
|
18
|
+
label: Sub-Title
|
|
19
|
+
public: true
|
|
20
|
+
|
|
21
|
+
headline:
|
|
22
|
+
type: richtext
|
|
23
|
+
editor: header
|
|
24
|
+
label: Headline
|
|
25
|
+
public: true
|
|
26
|
+
|
|
27
|
+
tabs:
|
|
28
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -1,57 +1,56 @@
|
|
|
1
1
|
id: image_card
|
|
2
2
|
label: Image Card
|
|
3
|
-
|
|
3
|
+
group: Content
|
|
4
4
|
description: A versatile card with an image, text, and a CTA button.
|
|
5
5
|
|
|
6
6
|
fields:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
headline:
|
|
23
|
+
label: Headline
|
|
24
|
+
type: text
|
|
25
|
+
required: true
|
|
26
|
+
public: true
|
|
27
|
+
default: "Headline..."
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
link:
|
|
38
|
+
label: Link
|
|
39
|
+
type: link
|
|
40
|
+
allowedLinkTypes:
|
|
41
|
+
- tree
|
|
42
|
+
- node
|
|
43
|
+
- url
|
|
44
|
+
- file
|
|
45
|
+
- email
|
|
46
|
+
- telephone
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
54
|
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
default: false
|
|
55
|
+
tabs:
|
|
56
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -4,25 +4,24 @@ group: Media
|
|
|
4
4
|
description: Just a single image block.
|
|
5
5
|
|
|
6
6
|
fields:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
image:
|
|
8
|
+
label: Image
|
|
9
|
+
type: asset
|
|
10
|
+
required: true
|
|
11
|
+
multiple: false
|
|
12
|
+
maxSizeMB: 15
|
|
13
|
+
allowedTypes: ["image/*"]
|
|
14
|
+
public: true
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
link:
|
|
17
|
+
label: Link
|
|
18
|
+
type: link
|
|
19
|
+
position: sidebar
|
|
20
|
+
allowedLinkTypes:
|
|
21
|
+
- tree
|
|
22
|
+
- node
|
|
23
|
+
- url
|
|
24
|
+
- file
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
default: false
|
|
26
|
+
tabs:
|
|
27
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -3,14 +3,13 @@ label: Text
|
|
|
3
3
|
group: Content
|
|
4
4
|
description: Paragraph body
|
|
5
5
|
|
|
6
|
+
# Main content fields
|
|
6
7
|
fields:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
public: true
|
|
8
|
+
body:
|
|
9
|
+
label: Text
|
|
10
|
+
type: richtext
|
|
11
|
+
editor: default
|
|
12
|
+
public: true
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
default: false
|
|
14
|
+
tabs:
|
|
15
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -5,20 +5,18 @@ tabs:
|
|
|
5
5
|
settings:
|
|
6
6
|
label: "Channel"
|
|
7
7
|
fields:
|
|
8
|
-
|
|
8
|
+
<<: !include ../field-sets/channel-base.yaml
|
|
9
|
+
currency:
|
|
10
|
+
label: Default Currency
|
|
11
|
+
type: select
|
|
12
|
+
default: "EUR"
|
|
13
|
+
options:
|
|
14
|
+
- "EUR"
|
|
15
|
+
- "USD"
|
|
16
|
+
- "GBP"
|
|
17
|
+
checkoutUrl:
|
|
18
|
+
label: Checkout Endpoint URL
|
|
19
|
+
type: text
|
|
20
|
+
public: true
|
|
9
21
|
|
|
10
|
-
|
|
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
|
|
22
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -5,28 +5,27 @@ tabs:
|
|
|
5
5
|
settings:
|
|
6
6
|
label: "Channel"
|
|
7
7
|
fields:
|
|
8
|
-
|
|
8
|
+
# 🎯 1. Merge the channel-base fields directly into this dictionary
|
|
9
|
+
<<: !include ../field-sets/channel-base.yaml
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
domain:
|
|
12
|
+
label: Hostname
|
|
13
|
+
type: text
|
|
14
|
+
dbType: text
|
|
15
|
+
index: true
|
|
16
|
+
public: true
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
baseUrl:
|
|
19
|
+
label: Base URL
|
|
20
|
+
type: text
|
|
21
|
+
dbType: text
|
|
22
|
+
public: true
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
defaultLanguage:
|
|
25
|
+
label: Channel Language / Locale
|
|
26
|
+
type: language-select
|
|
27
|
+
dbType: text
|
|
28
|
+
public: true
|
|
28
29
|
|
|
29
|
-
access
|
|
30
|
-
|
|
31
|
-
fields:
|
|
32
|
-
- fieldSet: access
|
|
30
|
+
# 🎯 2. Mount the entire access tab from the include
|
|
31
|
+
access: !include ../field-sets/access.yaml
|
|
@@ -2,30 +2,30 @@ id: channel-base
|
|
|
2
2
|
label: Channel Base Properties
|
|
3
3
|
|
|
4
4
|
fields:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
id:
|
|
6
|
+
label: Internal ID
|
|
7
|
+
type: hidden
|
|
8
|
+
dbType: integer
|
|
9
|
+
primaryKey: true
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
label:
|
|
12
|
+
label: Channel Name
|
|
13
|
+
type: text
|
|
14
|
+
dbType: text
|
|
15
|
+
public: true
|
|
16
|
+
rules:
|
|
17
|
+
required: true
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
id:
|
|
2
|
+
label: ID
|
|
3
|
+
type: hidden
|
|
4
|
+
dbType: text
|
|
5
|
+
primaryKey: true
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
contentId:
|
|
8
|
+
label: Node ID
|
|
9
|
+
type: text
|
|
10
|
+
dbType: text
|
|
11
|
+
rules:
|
|
12
|
+
required: true
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
sortOrder:
|
|
15
|
+
label: Sort Order
|
|
16
|
+
type: number
|
|
17
|
+
dbType: integer
|
|
18
|
+
rules:
|
|
19
|
+
required: true
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
elementType:
|
|
22
|
+
label: Element Component Type
|
|
23
|
+
type: text
|
|
24
|
+
dbType: text
|
|
25
|
+
rules:
|
|
26
|
+
required: true
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
dataJson:
|
|
29
|
+
label: Content Field Data
|
|
30
|
+
type: json
|
|
31
|
+
dbType: json
|
|
32
|
+
rules:
|
|
33
|
+
required: true
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- region:
|
|
41
|
-
label: Grid Region
|
|
42
|
-
type: text
|
|
43
|
-
dbType: text
|
|
44
|
-
default: "main"
|
|
45
|
-
rules:
|
|
46
|
-
required: true
|
|
35
|
+
region:
|
|
36
|
+
label: Grid Region
|
|
37
|
+
type: text
|
|
38
|
+
dbType: text
|
|
39
|
+
default: "main"
|
|
40
|
+
rules:
|
|
41
|
+
required: true
|
|
@@ -1,49 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
id:
|
|
2
|
+
label: ID
|
|
3
|
+
type: hidden
|
|
4
|
+
dbType: text
|
|
5
|
+
primaryKey: true
|
|
6
|
+
public: true
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
public: true
|
|
8
|
+
channelId:
|
|
9
|
+
label: Channel ID
|
|
10
|
+
type: hidden
|
|
11
|
+
dbType: text
|
|
12
|
+
public: true
|
|
13
|
+
index: true
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
nodeType:
|
|
16
|
+
label: Type
|
|
17
|
+
type: select
|
|
18
|
+
dbType: text
|
|
19
|
+
default: "page"
|
|
20
|
+
public: true
|
|
21
|
+
position: sidebar
|
|
22
|
+
rules:
|
|
23
|
+
required: true
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
rules:
|
|
28
|
-
required: true
|
|
25
|
+
title:
|
|
26
|
+
label: Page Title
|
|
27
|
+
type: text
|
|
28
|
+
dbType: text
|
|
29
|
+
public: true
|
|
30
|
+
rules:
|
|
31
|
+
required: true
|
|
29
32
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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."
|
|
33
|
+
slug:
|
|
34
|
+
label: URL Slug
|
|
35
|
+
type: slug
|
|
36
|
+
linkedTo: title
|
|
37
|
+
dbType: text
|
|
38
|
+
public: true
|
|
39
|
+
index: true
|
|
40
|
+
rules:
|
|
41
|
+
required: true
|
|
42
|
+
uniqueSibling: true
|
|
43
|
+
pattern: "^[a-z0-9_-]+$"
|
|
44
|
+
customMessage: "Slug can only contain lowercase letters, numbers, hyphens, and underscores."
|