@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.
Files changed (60) hide show
  1. package/bin/cli.js +172 -379
  2. package/content/definitions/blocks/button.yaml +7 -8
  3. package/content/definitions/blocks/header.yaml +7 -9
  4. package/content/definitions/blocks/header_image.yaml +14 -15
  5. package/content/definitions/blocks/hero.yaml +22 -21
  6. package/content/definitions/blocks/image_card.yaml +46 -47
  7. package/content/definitions/blocks/single_image.yaml +19 -20
  8. package/content/definitions/blocks/text.yaml +8 -9
  9. package/content/definitions/channels/ecommerce.yaml +14 -16
  10. package/content/definitions/channels/website.yaml +20 -21
  11. package/content/definitions/field-sets/access.yaml +3 -5
  12. package/content/definitions/field-sets/channel-base.yaml +25 -25
  13. package/content/definitions/field-sets/content-block.yaml +36 -41
  14. package/content/definitions/field-sets/page-base.yaml +40 -45
  15. package/content/definitions/field-sets/page-meta.yaml +1 -4
  16. package/content/definitions/field-sets/page-social.yaml +6 -8
  17. package/content/definitions/field-sets/tree-base.yaml +25 -25
  18. package/content/definitions/nodes/address.yaml +29 -21
  19. package/content/definitions/nodes/article.yaml +24 -19
  20. package/content/definitions/nodes/event.yaml +32 -26
  21. package/content/definitions/nodes/external-link.yaml +20 -17
  22. package/content/definitions/nodes/page.yaml +38 -35
  23. package/content/definitions/nodes/person.yaml +29 -27
  24. package/content/definitions/nodes/product.yaml +52 -49
  25. package/content/definitions/trees/navigation.yaml +26 -21
  26. package/content/definitions/trees/social-links.yaml +5 -2
  27. package/dist/assets/index-8T39DEP3.js +162 -0
  28. package/dist/assets/index-B9oh2_TL.css +1 -0
  29. package/dist/index.html +2 -2
  30. package/dist/index.js +6492 -4249
  31. package/package.json +5 -6
  32. package/schema.sql +5 -13
  33. package/templates/astro-starter/astro.config.mjs +40 -0
  34. package/templates/astro-starter/package.json.template +20 -0
  35. package/templates/astro-starter/src/components/blocks/BlockRenderer.astro +125 -0
  36. package/templates/astro-starter/src/components/blocks/ColumnLayout.astro +66 -0
  37. package/templates/astro-starter/src/components/blocks/HeaderImage.astro +131 -0
  38. package/templates/astro-starter/src/components/blocks/Hero.astro +218 -0
  39. package/templates/astro-starter/src/components/blocks/ImageBlock.astro +160 -0
  40. package/templates/astro-starter/src/components/blocks/TextBlock.astro +13 -0
  41. package/templates/astro-starter/src/components/global/Breadcrumb.astro +62 -0
  42. package/templates/astro-starter/src/components/global/Footer.astro +48 -0
  43. package/templates/astro-starter/src/components/global/Header.astro +92 -0
  44. package/templates/astro-starter/src/components/global/NavigationMenu.astro +450 -0
  45. package/templates/astro-starter/src/components/ui/KamaImage.astro +148 -0
  46. package/templates/astro-starter/src/kama-image-service.ts +41 -0
  47. package/templates/astro-starter/src/layouts/Layout.astro +280 -0
  48. package/templates/astro-starter/src/lib/cms.ts +149 -0
  49. package/templates/astro-starter/src/lib/media-url.ts +34 -0
  50. package/templates/astro-starter/src/middleware.ts +306 -0
  51. package/templates/astro-starter/src/pages/404.astro +46 -0
  52. package/templates/astro-starter/src/pages/[...slug].astro +234 -0
  53. package/templates/astro-starter/src/pages/media/[...path].ts +113 -0
  54. package/templates/astro-starter/tsconfig.json +0 -0
  55. package/test-local.sh +76 -0
  56. package/dist/assets/index-10GEw0KY.css +0 -1
  57. package/dist/assets/index-THJ6BqPP.js +0 -1394
  58. package/kama-worker/bundled-definitions.js +0 -2394
  59. package/kama-worker/bundled-definitions.ts +0 -2395
  60. package/scripts/bundle-definitions.js +0 -224
@@ -4,12 +4,11 @@ group: Content
4
4
  description: Button text
5
5
 
6
6
  fields:
7
- - text:
8
- label: Text
9
- type: richtext
10
- editor: button
11
- public: true
7
+ text:
8
+ label: Text
9
+ type: richtext
10
+ editor: button
11
+ public: true
12
12
 
13
- - fieldSet: access
14
- - hidden:
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
- - headline:
7
- type: richtext
8
- editor: header
9
- label: Headline
10
- public: true
11
- default: "Header here..."
6
+ headline:
7
+ type: richtext
8
+ editor: header
9
+ label: Headline
10
+ public: true
12
11
 
13
- - fieldSet: access
14
- - hidden:
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
- - 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
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
- - fieldSet: access
21
- - hidden:
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
- - 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..."
6
+ heroBadge:
7
+ type: text
8
+ label: Badge
9
+ public: true
24
10
 
25
- - fieldSet: access
26
- - hidden:
27
- default: false
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
- Group: Content
3
+ group: Content
4
4
  description: A versatile card with an image, text, and a CTA button.
5
5
 
6
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
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
- - headline:
23
- label: Headline
24
- type: text
25
- required: true
26
- public: true
27
- default: "Headline..."
22
+ headline:
23
+ label: Headline
24
+ type: text
25
+ required: true
26
+ public: true
27
+ default: "Headline..."
28
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..."
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
- - link:
38
- label: Link
39
- type: link
40
- allowedLinkTypes:
41
- - tree
42
- - node
43
- - url
44
- - file
45
- - email
46
- - telephone
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
- - linkText:
49
- label: Button Text
50
- type: text
51
- description: "e.g., 'Read More' or 'Buy Now'"
52
- default: "Read More"
53
- public: true
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
- - fieldSet: access
56
- - hidden:
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
- - image:
8
- label: Image
9
- type: asset
10
- required: true
11
- multiple: false
12
- maxSizeMB: 15
13
- allowedTypes: ["image/*"]
14
- public: true
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
- - link:
17
- label: Link
18
- type: link
19
- position: sidebar
20
- allowedLinkTypes:
21
- - tree
22
- - node
23
- - url
24
- - file
16
+ link:
17
+ label: Link
18
+ type: link
19
+ position: sidebar
20
+ allowedLinkTypes:
21
+ - tree
22
+ - node
23
+ - url
24
+ - file
25
25
 
26
- - fieldSet: access
27
- - hidden:
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
- - body:
8
- label: Text
9
- type: richtext
10
- editor: default
11
- default: "Write content here..."
12
- public: true
8
+ body:
9
+ label: Text
10
+ type: richtext
11
+ editor: default
12
+ public: true
13
13
 
14
- - fieldSet: access
15
- - hidden:
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
- - fieldSet: channel-base
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
- - 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
22
+ access: !include ../field-sets/access.yaml
@@ -5,28 +5,27 @@ tabs:
5
5
  settings:
6
6
  label: "Channel"
7
7
  fields:
8
- - fieldSet: channel-base
8
+ # 🎯 1. Merge the channel-base fields directly into this dictionary
9
+ <<: !include ../field-sets/channel-base.yaml
9
10
 
10
- - domain:
11
- label: Hostname
12
- type: text
13
- dbType: text
14
- index: true
15
- public: true
11
+ domain:
12
+ label: Hostname
13
+ type: text
14
+ dbType: text
15
+ index: true
16
+ public: true
16
17
 
17
- - baseUrl:
18
- label: Base URL
19
- type: text
20
- dbType: text
21
- public: true
18
+ baseUrl:
19
+ label: Base URL
20
+ type: text
21
+ dbType: text
22
+ public: true
22
23
 
23
- - defaultLanguage:
24
- label: Channel Language / Locale
25
- type: language-select
26
- dbType: text
27
- public: true
24
+ defaultLanguage:
25
+ label: Channel Language / Locale
26
+ type: language-select
27
+ dbType: text
28
+ public: true
28
29
 
29
- access:
30
- label: "Access"
31
- fields:
32
- - fieldSet: access
30
+ # 🎯 2. Mount the entire access tab from the include
31
+ access: !include ../field-sets/access.yaml
@@ -1,9 +1,7 @@
1
- tab:
2
- id: access
3
- label: "Access"
4
-
1
+ # 📂 content/definitions/field-sets/access.yaml
2
+ label: "Access"
5
3
  fields:
6
- isHidden: # 🎯 Renamed from 'hidden' to match the DB column
4
+ isHidden:
7
5
  type: boolean
8
6
  label: Hidden
9
7
  default: false
@@ -2,30 +2,30 @@ id: channel-base
2
2
  label: Channel Base Properties
3
3
 
4
4
  fields:
5
- - id:
6
- label: Internal ID
7
- type: hidden
8
- dbType: integer
9
- primaryKey: true
5
+ id:
6
+ label: Internal ID
7
+ type: hidden
8
+ dbType: integer
9
+ primaryKey: true
10
10
 
11
- - label:
12
- label: Channel Name
13
- type: text
14
- dbType: text
15
- public: true
16
- rules:
17
- required: true
11
+ label:
12
+ label: Channel Name
13
+ type: text
14
+ dbType: text
15
+ public: true
16
+ rules:
17
+ required: true
18
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."
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
- # definitions/field-sets/content-block.yaml
2
- id: content-block
3
- label: Content Block Base Properties
1
+ id:
2
+ label: ID
3
+ type: hidden
4
+ dbType: text
5
+ primaryKey: true
4
6
 
5
- fields:
6
- - id:
7
- label: ID
8
- type: hidden
9
- dbType: text
10
- primaryKey: true
7
+ contentId:
8
+ label: Node ID
9
+ type: text
10
+ dbType: text
11
+ rules:
12
+ required: true
11
13
 
12
- - contentId:
13
- label: Node ID
14
- type: text
15
- dbType: text
16
- rules:
17
- required: true
14
+ sortOrder:
15
+ label: Sort Order
16
+ type: number
17
+ dbType: integer
18
+ rules:
19
+ required: true
18
20
 
19
- - sortOrder:
20
- label: Sort Order
21
- type: number
22
- dbType: integer
23
- rules:
24
- required: true
21
+ elementType:
22
+ label: Element Component Type
23
+ type: text
24
+ dbType: text
25
+ rules:
26
+ required: true
25
27
 
26
- - elementType:
27
- label: Element Component Type
28
- type: text
29
- dbType: text
30
- rules:
31
- required: true
28
+ dataJson:
29
+ label: Content Field Data
30
+ type: json
31
+ dbType: json
32
+ rules:
33
+ required: true
32
34
 
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
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
- # definitions/field-sets/page-base.yaml
2
- id: page-base
3
- label: Base Page Properties
1
+ id:
2
+ label: ID
3
+ type: hidden
4
+ dbType: text
5
+ primaryKey: true
6
+ public: true
4
7
 
5
- fields:
6
- - id:
7
- label: ID
8
- type: hidden
9
- dbType: text
10
- primaryKey: true
11
- public: true
8
+ channelId:
9
+ label: Channel ID
10
+ type: hidden
11
+ dbType: text
12
+ public: true
13
+ index: true
12
14
 
13
- - channelId:
14
- label: Channel ID
15
- type: hidden
16
- dbType: text
17
- public: true
18
- index: true
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
- - nodeType:
21
- label: Type
22
- type: select
23
- dbType: text
24
- default: "page"
25
- public: true
26
- position: sidebar
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
- - 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."
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."
@@ -1,7 +1,4 @@
1
- tab:
2
- id: page-meta
3
- label: "Meta"
4
-
1
+ label: "Meta"
5
2
  fields:
6
3
  metaDescription:
7
4
  label: Meta Description