@lightspeed/crane 2.0.4 → 3.0.0

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 (131) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/UPGRADE.md +96 -0
  3. package/dist/cli.mjs +44 -25
  4. package/package.json +6 -3
  5. package/template/blank/sections/blank-section/BlankSection.vue +9 -0
  6. package/template/blank/sections/blank-section/assets/blank_section_showcase_1_preview.jpg +0 -0
  7. package/template/blank/sections/blank-section/client.ts +6 -0
  8. package/template/blank/sections/blank-section/server.ts +6 -0
  9. package/template/blank/sections/blank-section/settings/content.ts +2 -0
  10. package/template/blank/sections/blank-section/settings/design.ts +2 -0
  11. package/template/blank/sections/blank-section/settings/layout.ts +2 -0
  12. package/template/blank/sections/blank-section/settings/translations.ts +8 -0
  13. package/template/blank/sections/blank-section/showcases/1.ts +15 -0
  14. package/template/blank/sections/blank-section/showcases/translations.ts +10 -0
  15. package/template/blank/sections/blank-section/type.ts +5 -0
  16. package/template/collections/assets/collection_cover_image.png +0 -0
  17. package/template/collections/example-collection/configuration.ts +21 -0
  18. package/template/crane.config.json +1 -1
  19. package/template/footers/example-footer/ExampleFooter.vue +4 -4
  20. package/template/footers/example-footer/component/LegalLinks.vue +1 -1
  21. package/template/footers/example-footer/component/MadeWith.vue +1 -1
  22. package/template/footers/example-footer/component/ReportAbuse.vue +1 -1
  23. package/template/footers/example-footer/settings/design.ts +5 -4
  24. package/template/footers/example-footer/settings/translations.ts +4 -3
  25. package/template/footers/example-footer/showcases/1.ts +4 -2
  26. package/template/footers/example-footer/showcases/translations.ts +4 -2
  27. package/template/headers/example-header/ExampleHeader.vue +1 -1
  28. package/template/headers/example-header/component/Account.vue +1 -1
  29. package/template/headers/example-header/component/CategoriesDropdown.vue +1 -1
  30. package/template/headers/example-header/component/Logo.vue +7 -7
  31. package/template/headers/example-header/component/NavigationMenu.vue +1 -1
  32. package/template/headers/example-header/settings/content.ts +8 -1
  33. package/template/headers/example-header/settings/design.ts +7 -1
  34. package/template/headers/example-header/settings/layout.ts +1 -1
  35. package/template/headers/example-header/settings/translations.ts +4 -2
  36. package/template/headers/example-header/showcases/1.ts +15 -11
  37. package/template/headers/example-header/showcases/2.ts +12 -8
  38. package/template/headers/example-header/showcases/translations.ts +4 -2
  39. package/template/layouts/catalog/example-catalog/components/Icon.vue +14 -14
  40. package/template/layouts/catalog/example-catalog/slots/custom-bottom-bar/CustomBottomBar.vue +1 -1
  41. package/template/package.json +1 -0
  42. package/template/page-templates/example-template/configuration.ts +8 -10
  43. package/template/page-templates/example-template/pages/catalog.ts +3 -6
  44. package/template/page-templates/example-template/pages/category.ts +3 -6
  45. package/template/page-templates/example-template/pages/home.ts +42 -57
  46. package/template/page-templates/example-template/pages/product.ts +3 -6
  47. package/template/preview/sections/preview.html +10 -6
  48. package/template/preview/shared/api-routes.ts +235 -102
  49. package/template/preview/shared/logger.ts +9 -0
  50. package/template/preview/shared/preview.ts +150 -69
  51. package/template/preview/shared/utils.ts +63 -43
  52. package/template/preview/ssr-server.ts +1 -1
  53. package/template/reference/sections/about-us/AboutUs.vue +20 -22
  54. package/template/reference/sections/about-us/component/Image.vue +18 -18
  55. package/template/reference/sections/about-us/component/Stats.vue +42 -42
  56. package/template/reference/sections/about-us/component/Title.vue +1 -1
  57. package/template/reference/sections/about-us/settings/content.ts +15 -19
  58. package/template/reference/sections/about-us/settings/design.ts +14 -18
  59. package/template/reference/sections/about-us/settings/layout.ts +7 -5
  60. package/template/reference/sections/about-us/settings/translations.ts +4 -2
  61. package/template/reference/sections/about-us/showcases/1.ts +48 -62
  62. package/template/reference/sections/about-us/showcases/2.ts +44 -56
  63. package/template/reference/sections/about-us/showcases/translations.ts +4 -2
  64. package/template/reference/sections/featured-products/FeaturedProducts.vue +12 -6
  65. package/template/reference/sections/featured-products/component/ProductItem.vue +18 -1
  66. package/template/reference/sections/featured-products/component/ProductPlaceholder.vue +42 -0
  67. package/template/reference/sections/featured-products/component/Title.vue +1 -1
  68. package/template/reference/sections/featured-products/settings/content.ts +8 -10
  69. package/template/reference/sections/featured-products/settings/design.ts +7 -7
  70. package/template/reference/sections/featured-products/settings/translations.ts +4 -2
  71. package/template/reference/sections/featured-products/showcases/1.ts +8 -12
  72. package/template/reference/sections/featured-products/showcases/translations.ts +4 -2
  73. package/template/reference/sections/intro-slider/IntroSlider.vue +6 -6
  74. package/template/reference/sections/intro-slider/component/Slider.vue +43 -44
  75. package/template/reference/sections/intro-slider/component/Title.vue +9 -9
  76. package/template/reference/sections/intro-slider/settings/content.ts +36 -22
  77. package/template/reference/sections/intro-slider/settings/design.ts +17 -22
  78. package/template/reference/sections/intro-slider/settings/layout.ts +6 -4
  79. package/template/reference/sections/intro-slider/settings/translations.ts +4 -2
  80. package/template/reference/sections/intro-slider/showcases/1.ts +52 -75
  81. package/template/reference/sections/intro-slider/showcases/2.ts +50 -72
  82. package/template/reference/sections/intro-slider/showcases/translations.ts +4 -2
  83. package/template/reference/sections/tag-lines/TagLines.vue +41 -47
  84. package/template/reference/sections/tag-lines/component/HighlightedText.vue +2 -2
  85. package/template/reference/sections/tag-lines/component/SectionImage.vue +18 -18
  86. package/template/reference/sections/tag-lines/component/Title.vue +2 -2
  87. package/template/reference/sections/tag-lines/settings/content.ts +53 -19
  88. package/template/reference/sections/tag-lines/settings/design.ts +15 -19
  89. package/template/reference/sections/tag-lines/settings/layout.ts +6 -4
  90. package/template/reference/sections/tag-lines/settings/translations.ts +4 -2
  91. package/template/reference/sections/tag-lines/showcases/1.ts +40 -50
  92. package/template/reference/sections/tag-lines/showcases/2.ts +40 -50
  93. package/template/reference/sections/tag-lines/showcases/translations.ts +4 -2
  94. package/template/reference/sections/trending-categories/TrendingCategories.vue +1 -1
  95. package/template/reference/sections/trending-categories/component/CategoryItem.vue +18 -1
  96. package/template/reference/sections/trending-categories/component/Title.vue +2 -2
  97. package/template/reference/sections/trending-categories/settings/content.ts +8 -10
  98. package/template/reference/sections/trending-categories/settings/design.ts +7 -7
  99. package/template/reference/sections/trending-categories/settings/translations.ts +4 -2
  100. package/template/reference/sections/trending-categories/showcases/1.ts +14 -15
  101. package/template/reference/sections/trending-categories/showcases/translations.ts +4 -2
  102. package/template/reference/shared/components/Button.vue +6 -6
  103. package/template/reference/shared/components/SectionWrapper.vue +5 -5
  104. package/template/reference/shared/components/Tagline.vue +12 -11
  105. package/template/reference/templates/reference-template-apparel/configuration.ts +8 -8
  106. package/template/reference/templates/reference-template-apparel/pages/catalog.ts +3 -6
  107. package/template/reference/templates/reference-template-apparel/pages/category.ts +3 -6
  108. package/template/reference/templates/reference-template-apparel/pages/home.ts +14 -18
  109. package/template/reference/templates/reference-template-apparel/pages/product.ts +3 -6
  110. package/template/reference/templates/reference-template-bike/configuration.ts +9 -9
  111. package/template/reference/templates/reference-template-bike/pages/catalog.ts +3 -6
  112. package/template/reference/templates/reference-template-bike/pages/category.ts +3 -6
  113. package/template/reference/templates/reference-template-bike/pages/home.ts +14 -18
  114. package/template/reference/templates/reference-template-bike/pages/product.ts +3 -6
  115. package/template/sections/example-section/ExampleSection.vue +3 -5
  116. package/template/sections/example-section/component/button/Button.vue +1 -1
  117. package/template/sections/example-section/component/image/Image.vue +43 -43
  118. package/template/sections/example-section/component/image/ImagesGrid.vue +21 -32
  119. package/template/sections/example-section/component/selectbox/Selectbox.vue +1 -1
  120. package/template/sections/example-section/component/title/Title.vue +1 -1
  121. package/template/sections/example-section/component/toggle/Toggle.vue +4 -4
  122. package/template/sections/example-section/settings/content.ts +25 -34
  123. package/template/sections/example-section/settings/design.ts +15 -19
  124. package/template/sections/example-section/settings/layout.ts +15 -14
  125. package/template/sections/example-section/settings/translations.ts +4 -2
  126. package/template/sections/example-section/showcases/1.ts +52 -79
  127. package/template/sections/example-section/showcases/2.ts +46 -62
  128. package/template/sections/example-section/showcases/3.ts +50 -76
  129. package/template/sections/example-section/showcases/translations.ts +4 -2
  130. package/template/shared/components/LanguageSelector.vue +1 -1
  131. package/template/shared/components/SectionWrapper.vue +5 -5
@@ -61,34 +61,34 @@ const overlayStyle = computed(() => {
61
61
  });
62
62
  </script>
63
63
 
64
- <style lang="scss" scoped>
64
+ <style scoped>
65
65
  .image-section {
66
66
  height: 100%;
67
67
  position: relative;
68
68
  width: 100%;
69
69
  display: flex;
70
70
  z-index: 999;
71
+ }
71
72
 
72
- &__overlay {
73
- display: flex;
74
- width: 100%;
75
- height: 100%;
76
- overflow: hidden;
73
+ .image-section__overlay {
74
+ display: flex;
75
+ width: 100%;
76
+ height: 100%;
77
+ overflow: hidden;
78
+ }
77
79
 
78
- &--border-radius {
79
- border-radius: 24px;
80
+ .image-section__overlay--border-radius {
81
+ border-radius: 24px;
80
82
 
81
- @media screen and (min-width: 900px) {
82
- border-radius: 32px;
83
- }
84
- }
83
+ @media screen and (min-width: 900px) {
84
+ border-radius: 32px;
85
85
  }
86
+ }
86
87
 
87
- &__content {
88
- height: 100%;
89
- width: 100%;
90
- object-fit: cover;
91
- z-index: -1;
92
- }
88
+ .image-section__content {
89
+ height: 100%;
90
+ width: 100%;
91
+ object-fit: cover;
92
+ z-index: -1;
93
93
  }
94
94
  </style>
@@ -71,7 +71,7 @@ const isCaptionVisible = computed<boolean>(() => captionDesign.visible ?? false)
71
71
  const valueStyle = computed<CSSProperties>(() => ({
72
72
  fontSize: `${valueDesign.size}px`,
73
73
  fontFamily: valueDesign.font,
74
- color: (valueDesign.color as Color).hex,
74
+ color: (valueDesign.color as Color)?.hex,
75
75
  fontStyle: valueDesign.italic ? 'italic' : 'normal',
76
76
  fontWeight: valueDesign.bold ? 'bold' : 'normal',
77
77
  }));
@@ -79,13 +79,13 @@ const valueStyle = computed<CSSProperties>(() => ({
79
79
  const captionStyle = computed<CSSProperties>(() => ({
80
80
  fontSize: `${captionDesign.size}px`,
81
81
  fontFamily: captionDesign.font,
82
- color: (captionDesign.color as Color).hex,
82
+ color: (captionDesign.color as Color)?.hex,
83
83
  fontStyle: captionDesign.italic ? 'italic' : 'normal',
84
84
  fontWeight: captionDesign.bold ? 'bold' : 'normal',
85
85
  }));
86
86
  </script>
87
87
 
88
- <style scoped lang="scss">
88
+ <style scoped>
89
89
  .stats {
90
90
  --value-font-size: v-bind(valueStyle.fontSize);
91
91
  --value-font-family: v-bind(valueStyle.fontFamily);
@@ -105,51 +105,51 @@ const captionStyle = computed<CSSProperties>(() => ({
105
105
  grid-template-columns: 1fr 1fr;
106
106
  gap: 20px;
107
107
  margin: 20px 0;
108
+ }
108
109
 
109
- &__element {
110
- display: flex;
111
- flex-direction: column;
112
- align-items: flex-start;
113
- }
110
+ .stats__element {
111
+ display: flex;
112
+ flex-direction: column;
113
+ align-items: flex-start;
114
+ }
114
115
 
115
- &__button {
116
- align-self: start;
117
- margin-top: 20px;
118
- width: fit-content;
119
- max-width: 360px;
116
+ .stats__button {
117
+ align-self: start;
118
+ margin-top: 20px;
119
+ width: fit-content;
120
+ max-width: 360px;
120
121
 
121
- @media screen and (max-width: 700px) {
122
- align-self: center;
123
- }
122
+ @media screen and (max-width: 700px) {
123
+ align-self: center;
124
124
  }
125
+ }
125
126
 
126
- &__number {
127
- --value-font-modifier: 0.8;
128
-
129
- max-width: 100%;
130
- margin-bottom: 8px;
131
- overflow: hidden;
132
- word-wrap: break-word;
133
- font-size: var(--value-font-size);
134
- font-family: calc(var(--value-font-family) * var(--value-font-modifier));
135
- color: var(--value-color);
136
- font-style: var(--value-font-style);
137
- font-weight: var(--value-font-weight);
138
-
139
- @media screen and (min-width: 700px) {
140
- --value-font-modifier: 1;
141
- }
127
+ .stats__number {
128
+ --value-font-modifier: 0.8;
129
+
130
+ max-width: 100%;
131
+ margin-bottom: 8px;
132
+ overflow: hidden;
133
+ word-wrap: break-word;
134
+ font-size: var(--value-font-size);
135
+ font-family: calc(var(--value-font-family) * var(--value-font-modifier));
136
+ color: var(--value-color);
137
+ font-style: var(--value-font-style);
138
+ font-weight: var(--value-font-weight);
139
+
140
+ @media screen and (min-width: 700px) {
141
+ --value-font-modifier: 1;
142
142
  }
143
+ }
143
144
 
144
- &__caption {
145
- max-width: 100%;
146
- overflow: hidden;
147
- word-wrap: break-word;
148
- font-size: var(--caption-font-size);
149
- font-family: calc(var(--caption-font-family) * var(--caption-font-modifier));
150
- color: var(--caption-color);
151
- font-style: var(--caption-font-style);
152
- font-weight: var(--caption-font-weight);
153
- }
145
+ .stats__caption {
146
+ max-width: 100%;
147
+ overflow: hidden;
148
+ word-wrap: break-word;
149
+ font-size: var(--caption-font-size);
150
+ font-family: calc(var(--caption-font-family) * var(--caption-font-modifier));
151
+ color: var(--caption-color);
152
+ font-style: var(--caption-font-style);
153
+ font-weight: var(--caption-font-weight);
154
154
  }
155
155
  </style>
@@ -25,7 +25,7 @@ const titleStyle = computed<CSSProperties>(() => ({
25
25
  }));
26
26
  </script>
27
27
 
28
- <style lang="scss" scoped>
28
+ <style scoped>
29
29
  .section-title {
30
30
  margin-bottom: 20px;
31
31
  }
@@ -1,11 +1,11 @@
1
+ import { content } from '@lightspeed/crane-api';
2
+
1
3
  export default {
2
- title: {
3
- type: 'INPUTBOX',
4
+ title: content.inputbox({
4
5
  label: '$label.section_title.label',
5
6
  placeholder: '$label.section_title.placeholder',
6
- },
7
- stats: {
8
- type: 'DECK',
7
+ }),
8
+ stats: content.deck({
9
9
  label: '$label.stats.deck_title',
10
10
  addButtonLabel: '$label.stats.add_card_button',
11
11
  maxCards: 5,
@@ -13,37 +13,33 @@ export default {
13
13
  defaultCardContent: {
14
14
  label: '$label.images.card_title',
15
15
  settings: {
16
- stat_value: {
17
- type: 'INPUTBOX',
16
+ stat_value: content.inputbox({
18
17
  label: '$label.stat_value.label',
19
18
  placeholder: '$label.stat_value.placeholder',
20
19
  defaults: {
21
20
  text: '$label.stat_value.default.text',
22
21
  },
23
- },
24
- stat_caption: {
25
- type: 'INPUTBOX',
22
+ }),
23
+ stat_caption: content.inputbox({
26
24
  label: '$label.stat_caption.label',
27
25
  placeholder: '$label.stat_caption.placeholder',
28
26
  defaults: {
29
27
  text: '$label.stat_caption.default.text',
30
28
  },
31
- },
29
+ }),
32
30
  },
33
31
  },
34
32
  },
35
- },
36
- button: {
37
- type: 'BUTTON',
33
+ }),
34
+ button: content.button({
38
35
  label: '$label.button_content.label',
39
36
  defaults: {
40
37
  title: '$label.button_content.title',
41
38
  buttonType: 'HYPER_LINK',
42
39
  link: 'https://www.example.com',
43
40
  },
44
- },
45
- image: {
46
- type: 'IMAGE',
41
+ }),
42
+ image: content.image({
47
43
  label: '$label.image_content.label',
48
44
  defaults: {
49
45
  imageData: {
@@ -64,5 +60,5 @@ export default {
64
60
  borderInfo: {},
65
61
  },
66
62
  },
67
- },
68
- } as const;
63
+ }),
64
+ };
@@ -1,15 +1,15 @@
1
+ import { design } from '@lightspeed/crane-api';
2
+
1
3
  export default {
2
- image: {
3
- type: 'IMAGE',
4
+ image: design.image({
4
5
  label: '$label.image_content.label',
5
6
  colors: ['#000000', '#FFFFFF', '#333333', '#6281C5', '#C8D9FF', '#878787', '#101010'],
6
7
  defaults: {
7
8
  overlay: 'GRADIENT',
8
9
  color: ['#FFFFFF', '#000000'],
9
10
  },
10
- },
11
- title: {
12
- type: 'TEXT',
11
+ }),
12
+ title: design.text({
13
13
  label: '$label.section_title.label',
14
14
  colors: ['#000000', '#FFFFFF', '#333333', '#6281C5', '#C8D9FF', '#878787', '#101010'],
15
15
  sizes: [18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60],
@@ -21,9 +21,8 @@ export default {
21
21
  color: '#333333',
22
22
  visible: true,
23
23
  },
24
- },
25
- caption: {
26
- type: 'TEXT',
24
+ }),
25
+ caption: design.text({
27
26
  label: '$label.caption.label',
28
27
  colors: ['#000000', '#FFFFFF', '#333333', '#6281C5', '#C8D9FF', '#878787', '#101010'],
29
28
  sizes: [18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60],
@@ -35,9 +34,8 @@ export default {
35
34
  color: '#000000',
36
35
  visible: true,
37
36
  },
38
- },
39
- value: {
40
- type: 'TEXT',
37
+ }),
38
+ value: design.text({
41
39
  label: '$label.value.label',
42
40
  colors: ['#000000', '#FFFFFF', '#333333', '#6281C5', '#C8D9FF', '#878787', '#101010'],
43
41
  sizes: [18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60],
@@ -49,18 +47,16 @@ export default {
49
47
  color: '#6281C5',
50
48
  visible: true,
51
49
  },
52
- },
53
- background: {
54
- type: 'BACKGROUND',
50
+ }),
51
+ background: design.background({
55
52
  label: '$label.background.label',
56
53
  colors: ['#000000', '#FFFFFF', '#333333', '#6281C5', '#C8D9FF', '#878787', '#101010'],
57
54
  defaults: {
58
55
  style: 'COLOR',
59
56
  color: '#C8D9FF',
60
57
  },
61
- },
62
- button: {
63
- type: 'BUTTON',
58
+ }),
59
+ button: design.button({
64
60
  label: '$label.button.label',
65
61
  colors: ['#000000', '#FFFFFF', '#333333', '#6281C5', '#C8D9FF', '#878787', '#101010'],
66
62
  defaults: {
@@ -70,5 +66,5 @@ export default {
70
66
  color: '#000000',
71
67
  visible: true,
72
68
  },
73
- },
69
+ }),
74
70
  } as const;
@@ -1,12 +1,14 @@
1
+ import { layout } from '@lightspeed/crane-api';
2
+
1
3
  export default [
2
- {
4
+ layout.init({
3
5
  layoutId: 'Images_With_Border_Radius',
4
6
  selectedContentSettings: [],
5
7
  selectedDesignSettings: [],
6
- },
7
- {
8
+ }),
9
+ layout.init({
8
10
  layoutId: 'Images_Without_Border_Radius',
9
11
  selectedContentSettings: [],
10
12
  selectedDesignSettings: [],
11
- },
12
- ] as const;
13
+ }),
14
+ ];
@@ -1,4 +1,6 @@
1
- export default {
1
+ import { translation } from '@lightspeed/crane-api';
2
+
3
+ export default translation.init({
2
4
  en: {
3
5
  '$label.section_title.label': 'Main title',
4
6
  '$label.caption.label': 'Caption',
@@ -148,4 +150,4 @@ export default {
148
150
  '$label.showcase_2.stat_caption_4.default.text': 'Fietsen die teamleden hebben',
149
151
  '$label.showcase_2.button_content.title': 'Meer informatie',
150
152
  },
151
- } as const;
153
+ });
@@ -1,4 +1,10 @@
1
- export default {
1
+ import {
2
+ content,
3
+ design,
4
+ showcase,
5
+ } from '@lightspeed/crane-api';
6
+
7
+ export default showcase.init({
2
8
  showcaseId: '1',
3
9
  previewImage: {
4
10
  set: {
@@ -10,12 +16,10 @@ export default {
10
16
  layoutId: 'Images_With_Border_Radius',
11
17
  blockName: '$label.showcase_1.blockName',
12
18
  content: {
13
- title: {
14
- type: 'INPUTBOX',
19
+ title: content.default.inputbox({
15
20
  text: '$label.showcase_1.section_title.text',
16
- },
17
- image: {
18
- type: 'IMAGE',
21
+ }),
22
+ image: content.default.image({
19
23
  imageData: {
20
24
  set: {
21
25
  MOBILE_WEBP_LOW_RES: {
@@ -33,121 +37,103 @@ export default {
33
37
  },
34
38
  borderInfo: {},
35
39
  },
36
- },
37
- stats: {
38
- type: 'DECK',
40
+ }),
41
+ stats: content.default.deck({
39
42
  cards: [
40
43
  {
41
44
  settings: {
42
- stat_value: {
43
- type: 'INPUTBOX',
45
+ stat_value: content.default.inputbox({
44
46
  text: '$label.showcase_1.stat_value.default_1.text',
45
- },
46
- stat_caption: {
47
- type: 'INPUTBOX',
47
+ }),
48
+ stat_caption: content.default.inputbox({
48
49
  text: '$label.showcase_1.stat_caption_1.default.text',
49
- },
50
+ }),
50
51
  },
51
52
  },
52
53
  {
53
54
  settings: {
54
- stat_value: {
55
- type: 'INPUTBOX',
55
+ stat_value: content.default.inputbox({
56
56
  text: '$label.showcase_1.stat_value.default_2.text',
57
- },
58
- stat_caption: {
59
- type: 'INPUTBOX',
57
+ }),
58
+ stat_caption: content.default.inputbox({
60
59
  text: '$label.showcase_1.stat_caption_2.default.text',
61
- },
60
+ }),
62
61
  },
63
62
  },
64
63
  {
65
64
  settings: {
66
- stat_value: {
67
- type: 'INPUTBOX',
65
+ stat_value: content.default.inputbox({
68
66
  text: '$label.showcase_1.stat_value.default_3.text',
69
- },
70
- stat_caption: {
71
- type: 'INPUTBOX',
67
+ }),
68
+ stat_caption: content.default.inputbox({
72
69
  text: '$label.showcase_1.stat_caption_3.default.text',
73
- },
70
+ }),
74
71
  },
75
72
  },
76
73
  {
77
74
  settings: {
78
- stat_value: {
79
- type: 'INPUTBOX',
75
+ stat_value: content.default.inputbox({
80
76
  text: '$label.showcase_1.stat_value.default_4.text',
81
- },
82
- stat_caption: {
83
- type: 'INPUTBOX',
77
+ }),
78
+ stat_caption: content.default.inputbox({
84
79
  text: '$label.showcase_1.stat_caption_4.default.text',
85
- },
80
+ }),
86
81
  },
87
82
  },
88
83
  {
89
84
  settings: {
90
- stat_value: {
91
- type: 'INPUTBOX',
85
+ stat_value: content.default.inputbox({
92
86
  text: '$label.showcase_1.stat_value.default_5.text',
93
- },
94
- stat_caption: {
95
- type: 'INPUTBOX',
87
+ }),
88
+ stat_caption: content.default.inputbox({
96
89
  text: '$label.showcase_1.stat_caption_5.default.text',
97
- },
90
+ }),
98
91
  },
99
92
  },
100
93
  ],
101
- },
102
- button: {
103
- type: 'BUTTON',
94
+ }),
95
+ button: content.default.button({
104
96
  title: '$label.showcase_1.button_content.title',
105
97
  buttonType: 'HYPER_LINK',
106
98
  link: 'https://www.example.com',
107
- },
99
+ }),
108
100
  },
109
101
  design: {
110
- image: {
111
- type: 'IMAGE',
102
+ image: design.default.image({
112
103
  overlay: 'GRADIENT',
113
104
  color: ['#FFFFFF', '#000000'],
114
- },
115
- title: {
116
- type: 'TEXT',
105
+ }),
106
+ title: design.default.text({
117
107
  font: 'noto_serif',
118
108
  size: 44,
119
109
  bold: true,
120
110
  italic: false,
121
111
  color: '#333333',
122
- },
123
- caption: {
124
- type: 'TEXT',
112
+ }),
113
+ caption: design.default.text({
125
114
  font: 'inter',
126
115
  size: 16,
127
116
  bold: true,
128
117
  italic: false,
129
118
  color: '#000000',
130
- },
131
- value: {
132
- type: 'TEXT',
119
+ }),
120
+ value: design.default.text({
133
121
  font: 'noto_serif',
134
122
  size: 40,
135
123
  bold: true,
136
124
  italic: false,
137
125
  color: '#6281C5',
138
- },
139
- background: {
140
- type: 'BACKGROUND',
126
+ }),
127
+ background: design.default.background({
141
128
  style: 'COLOR',
142
129
  color: '#C8D9FF',
143
- },
144
- button: {
145
- type: 'BUTTON',
130
+ }),
131
+ button: design.default.button({
146
132
  font: 'inter',
147
133
  appearance: 'OUTLINE',
148
134
  size: 'LARGE',
149
135
  shape: 'PILL',
150
136
  color: '#000000',
151
- },
137
+ }),
152
138
  },
153
- } as const;
139
+ });