@lightspeed/crane 0.1.1 → 1.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 (63) hide show
  1. package/dist/app.mjs +1 -1
  2. package/dist/cli.mjs +6 -6
  3. package/package.json +12 -3
  4. package/template/package.json +2 -2
  5. package/template/sections/example-section/ExampleSection.vue +53 -0
  6. package/template/sections/example-section/assets/autumn_looks_mobile_high.jpeg +0 -0
  7. package/template/sections/example-section/assets/autumn_looks_mobile_low.jpeg +0 -0
  8. package/template/sections/example-section/assets/autumn_looks_pc_high.jpeg +0 -0
  9. package/template/sections/example-section/assets/autumn_looks_pc_low.jpeg +0 -0
  10. package/template/sections/example-section/assets/bianka_wardrobe_mobile_high.jpeg +0 -0
  11. package/template/sections/example-section/assets/bianka_wardrobe_mobile_low.jpeg +0 -0
  12. package/template/sections/example-section/assets/bianka_wardrobe_pc_high.jpeg +0 -0
  13. package/template/sections/example-section/assets/bianka_wardrobe_pc_low.jpeg +0 -0
  14. package/template/sections/example-section/assets/custom_section_showcase_1_preview.jpg +0 -0
  15. package/template/sections/example-section/assets/custom_section_showcase_2_preview.png +0 -0
  16. package/template/sections/example-section/assets/new_arrivals_mobile_high.jpeg +0 -0
  17. package/template/sections/example-section/assets/new_arrivals_mobile_low.jpeg +0 -0
  18. package/template/sections/example-section/assets/new_arrivals_pc_high.jpeg +0 -0
  19. package/template/sections/example-section/assets/new_arrivals_pc_low.jpeg +0 -0
  20. package/template/sections/example-section/assets/new_tshirts_collection_mobile_high.jpeg +0 -0
  21. package/template/sections/example-section/assets/new_tshirts_collection_mobile_low.jpeg +0 -0
  22. package/template/sections/example-section/assets/new_tshirts_collection_pc_high.jpeg +0 -0
  23. package/template/sections/example-section/assets/new_tshirts_collection_pc_low.jpeg +0 -0
  24. package/template/sections/example-section/assets/sport_look_mobile_high.jpeg +0 -0
  25. package/template/sections/example-section/assets/sport_look_mobile_low.jpeg +0 -0
  26. package/template/sections/example-section/assets/sport_look_pc_high.jpeg +0 -0
  27. package/template/sections/example-section/assets/sport_look_pc_low.jpeg +0 -0
  28. package/template/sections/example-section/assets/story_of_jane_mobile_high.jpeg +0 -0
  29. package/template/sections/example-section/assets/story_of_jane_mobile_low.jpeg +0 -0
  30. package/template/sections/example-section/assets/story_of_jane_pc_high.jpeg +0 -0
  31. package/template/sections/example-section/assets/story_of_jane_pc_low.jpeg +0 -0
  32. package/template/sections/example-section/assets/summer_accessories_mobile_high.jpeg +0 -0
  33. package/template/sections/example-section/assets/summer_accessories_mobile_low.jpeg +0 -0
  34. package/template/sections/example-section/assets/summer_accessories_pc_high.jpeg +0 -0
  35. package/template/sections/example-section/assets/summer_accessories_pc_low.jpeg +0 -0
  36. package/template/sections/example-section/assets/trending_footwear_mobile_high.jpeg +0 -0
  37. package/template/sections/example-section/assets/trending_footwear_mobile_low.jpeg +0 -0
  38. package/template/sections/example-section/assets/trending_footwear_pc_high.jpeg +0 -0
  39. package/template/sections/example-section/assets/trending_footwear_pc_low.jpeg +0 -0
  40. package/template/sections/example-section/client.ts +5 -0
  41. package/template/sections/example-section/component/image/Image.vue +161 -0
  42. package/template/sections/example-section/component/image/ImagesGrid.vue +244 -0
  43. package/template/sections/example-section/component/title/Title.vue +53 -0
  44. package/template/sections/example-section/entity/color.ts +4 -0
  45. package/template/sections/example-section/server.ts +5 -0
  46. package/template/sections/example-section/settings/content.ts +68 -0
  47. package/template/sections/{block-example → example-section}/settings/design.ts +30 -43
  48. package/template/sections/example-section/settings/translations.ts +59 -0
  49. package/template/sections/example-section/showcases/1.ts +160 -0
  50. package/template/sections/example-section/showcases/2.ts +156 -0
  51. package/template/sections/example-section/showcases/translations.ts +41 -0
  52. package/template/templates/template.ts +102 -79
  53. package/template/sections/block-example/CustomBlock.vue +0 -58
  54. package/template/sections/block-example/assets/showcase_preview_1.png +0 -0
  55. package/template/sections/block-example/assets/showcase_preview_2.png +0 -0
  56. package/template/sections/block-example/client.ts +0 -5
  57. package/template/sections/block-example/server.ts +0 -5
  58. package/template/sections/block-example/settings/content.ts +0 -41
  59. package/template/sections/block-example/settings/translations.ts +0 -35
  60. package/template/sections/block-example/showcases/1.ts +0 -88
  61. package/template/sections/block-example/showcases/2.ts +0 -88
  62. package/template/sections/block-example/showcases/translations.ts +0 -23
  63. /package/template/sections/{block-example → example-section}/type.ts +0 -0
@@ -0,0 +1,244 @@
1
+ <template>
2
+ <div
3
+ v-if="size > 0"
4
+ :class="`image-grid__${images.length}`"
5
+ >
6
+ <div
7
+ v-for="(image, index) in images"
8
+ :key="index"
9
+ :class="`image-grid__content-${index + 1}`"
10
+ >
11
+ <CustomSectionExampleImage
12
+ :url="smallWindow ? image?.content?.lowResolutionDesktopImage : image?.content?.highResolutionDesktopImage"
13
+ :text="image?.text?.value"
14
+ :link="image?.link?.value"
15
+ />
16
+ </div>
17
+ </div>
18
+ </template>
19
+
20
+ <script setup lang="ts">
21
+ import { computed, ref } from 'vue';
22
+ import { useImageElementContent, useInputboxElementContent, useTextareaElementContent } from '@lightspeed/crane';
23
+ import CustomSectionExampleImage from './Image.vue';
24
+ import { Content } from '../../type.ts';
25
+
26
+ const imageText1 = useTextareaElementContent<Content>('image_text_1');
27
+ const imageText2 = useTextareaElementContent<Content>('image_text_2');
28
+ const imageText3 = useTextareaElementContent<Content>('image_text_3');
29
+ const imageText4 = useTextareaElementContent<Content>('image_text_4');
30
+ const imageContent1 = useImageElementContent<Content>('image_content_1');
31
+ const imageContent2 = useImageElementContent<Content>('image_content_2');
32
+ const imageContent3 = useImageElementContent<Content>('image_content_3');
33
+ const imageContent4 = useImageElementContent<Content>('image_content_4');
34
+ const imageLink1 = useInputboxElementContent<Content>('image_link_1');
35
+ const imageLink2 = useInputboxElementContent<Content>('image_link_2');
36
+ const imageLink3 = useInputboxElementContent<Content>('image_link_3');
37
+ const imageLink4 = useInputboxElementContent<Content>('image_link_4');
38
+ const images = computed(() => ([
39
+ {
40
+ text: imageText1,
41
+ content: imageContent1,
42
+ link: imageLink1,
43
+ },
44
+ {
45
+ text: imageText2,
46
+ content: imageContent2,
47
+ link: imageLink2,
48
+ },
49
+ {
50
+ text: imageText3,
51
+ content: imageContent3,
52
+ link: imageLink3,
53
+ },
54
+ {
55
+ text: imageText4,
56
+ content: imageContent4,
57
+ link: imageLink4,
58
+ },
59
+ ].filter((image) => image.content.hasContent)));
60
+ const size = computed(() => images.value.length);
61
+
62
+ const windowWidth = ref(window.innerWidth);
63
+ const onWidthChange = () => { windowWidth.value = window.innerWidth; };
64
+ window.addEventListener('resize', onWidthChange);
65
+ const smallWindow = computed(() => windowWidth.value <= 768);
66
+ </script>
67
+
68
+ <style lang="scss" scoped>
69
+ @mixin image-grid {
70
+ display: grid;
71
+ grid-gap: 20px;
72
+ @media screen and (min-width: 900px) {
73
+ aspect-ratio: 1/0.55;
74
+ }
75
+ }
76
+
77
+ .image-grid__1 {
78
+ @include image-grid;
79
+
80
+ & {
81
+ grid-template-columns: [col1-start] 1fr [col1-end];
82
+ grid-template-rows: [row1-start] 1fr [row1-end];
83
+ }
84
+
85
+ @media screen and (max-width: 900px) {
86
+ aspect-ratio: 1;
87
+ }
88
+
89
+ .image-grid__content-1 {
90
+ grid-column: col1-start / col1-end;
91
+ grid-row: row1-start / row1-end;
92
+ }
93
+ }
94
+
95
+ .image-grid__2 {
96
+ @include image-grid;
97
+
98
+ & {
99
+ grid-template-columns: [col1-start] 11fr [col2-start] 9fr [col2-end];
100
+ grid-template-rows: [row1-start] 4.5fr [row2-start] 2.75fr [row2-end];
101
+ }
102
+
103
+ @media screen and (max-width: 900px) {
104
+ aspect-ratio: 4.5/7.25;
105
+ }
106
+
107
+ .image-grid__content-1 {
108
+ @media screen and (min-width: 900px) {
109
+ grid-column: col1-start / col2-start;
110
+ grid-row: row1-start / row2-end;
111
+ }
112
+
113
+ @media screen and (max-width: 900px) {
114
+ grid-column: col1-start / col2-end;
115
+ grid-row: row1-start / row2-start;
116
+ }
117
+ }
118
+
119
+ .image-grid__content-2 {
120
+ @media screen and (min-width: 900px) {
121
+ grid-column: col2-start / col2-end;
122
+ grid-row: row1-start / row2-end;
123
+ }
124
+
125
+ @media screen and (max-width: 900px) {
126
+ grid-column: col1-start / col2-end;
127
+ grid-row: row2-start / row2-end;
128
+ }
129
+ }
130
+ }
131
+
132
+ .image-grid__3 {
133
+ @include image-grid;
134
+
135
+ & {
136
+ grid-template-columns: [col1-start] 11fr [col2-start] 9fr [col2-end];
137
+ grid-template-rows: [row1-start] 4.5fr [row2-start] 0.5fr [row3-start] 2.25fr [row4-start] 2.75fr [row4-end];
138
+ }
139
+
140
+ @media screen and (max-width: 900px) {
141
+ aspect-ratio: 0.45;
142
+ }
143
+
144
+ .image-grid__content-1 {
145
+ @media screen and (min-width: 900px) {
146
+ grid-column: col1-start / col2-start;
147
+ grid-row: row1-start / row4-end;
148
+ }
149
+
150
+ @media screen and (max-width: 900px) {
151
+ grid-column: col1-start / col2-end;
152
+ grid-row: row1-start / row2-start;
153
+ }
154
+ }
155
+
156
+ .image-grid__content-2 {
157
+ @media screen and (min-width: 900px) {
158
+ grid-column: col2-start / col2-end;
159
+ grid-row: row1-start / row3-start;
160
+ }
161
+
162
+ @media screen and (max-width: 900px) {
163
+ grid-column: col1-start / col2-end;
164
+ grid-row: row2-start / row4-start;
165
+ }
166
+ }
167
+
168
+ .image-grid__content-3 {
169
+ @media screen and (min-width: 900px) {
170
+ grid-column: col2-start / col2-end;
171
+ grid-row: row3-start / row4-end;
172
+ }
173
+
174
+ @media screen and (max-width: 900px) {
175
+ grid-column: col1-start / col2-end;
176
+ grid-row: row4-start / row4-end;
177
+ }
178
+ }
179
+ }
180
+
181
+ .image-grid__4 {
182
+ @include image-grid;
183
+
184
+ @media screen and (min-width: 900px) {
185
+ grid-template-columns: [col1-start] 11fr [col2-start] 4.5fr [col3-start] 4.5fr [col3-end];
186
+ grid-template-rows: [row1-start] 1fr [row2-start] 1fr [row2-end];
187
+ aspect-ratio: 1/0.55;
188
+ }
189
+
190
+ @media screen and (max-width: 900px) {
191
+ grid-template-columns: [col1-start] 1fr [col2-start] 1fr [col2-end];
192
+ grid-template-rows: [row1-start] 4.5fr [row2-start] 2.75fr [row3-start] 2.75fr [row3-end];
193
+ aspect-ratio: 0.45;
194
+ }
195
+
196
+ .image-grid__content-1 {
197
+ @media screen and (min-width: 900px) {
198
+ grid-column: col1-start / col2-start;
199
+ grid-row: row1-start / row2-end;
200
+ }
201
+
202
+ @media screen and (max-width: 900px) {
203
+ grid-column: col1-start / col2-end;
204
+ grid-row: row1-start / row2-start;
205
+ }
206
+ }
207
+
208
+ .image-grid__content-2 {
209
+ @media screen and (min-width: 900px) {
210
+ grid-column: col2-start / col3-end;
211
+ grid-row: row1-start / row2-start;
212
+ }
213
+
214
+ @media screen and (max-width: 900px) {
215
+ grid-column: col1-start / col2-end;
216
+ grid-row: row2-start / row3-start;
217
+ }
218
+ }
219
+
220
+ .image-grid__content-3 {
221
+ @media screen and (min-width: 900px) {
222
+ grid-column: col2-start / col3-start;
223
+ grid-row: row2-start / row2-end;
224
+ }
225
+
226
+ @media screen and (max-width: 900px) {
227
+ grid-column: col1-start / col2-start;
228
+ grid-row: row3-start / row3-end;
229
+ }
230
+ }
231
+
232
+ .image-grid__content-4 {
233
+ @media screen and (min-width: 900px) {
234
+ grid-column: col3-start / col3-end;
235
+ grid-row: row2-start / row2-end;
236
+ }
237
+
238
+ @media screen and (max-width: 900px) {
239
+ grid-column: col2-start / col2-end;
240
+ grid-row: row3-start / row3-end;
241
+ }
242
+ }
243
+ }
244
+ </style>
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <div>
3
+ <h1
4
+ v-if="showTitle"
5
+ :style="titleStyle"
6
+ >
7
+ {{ titleContent.value }}
8
+ </h1>
9
+ <p
10
+ v-if="showDescription"
11
+ class="title-section__description"
12
+ :style="descriptionStyle"
13
+ >
14
+ {{ descriptionContent.value }}
15
+ </p>
16
+ </div>
17
+ </template>
18
+
19
+ <script setup lang="ts">
20
+ import { computed } from 'vue';
21
+ import { useInputboxElementContent, useTextareaElementContent, useTextElementDesign } from '@lightspeed/crane';
22
+ import { Content, Design } from '../../type.ts';
23
+
24
+ const titleContent = useInputboxElementContent<Content>('section_title');
25
+ const descriptionContent = useTextareaElementContent<Content>('section_description');
26
+ const titleDesign = useTextElementDesign<Design>('section_title');
27
+ const descriptionDesign = useTextElementDesign<Design>('section_description');
28
+
29
+ const showTitle = computed(() => titleDesign.visible && titleContent.hasContent);
30
+ const showDescription = computed(() => descriptionDesign.visible && descriptionContent.hasContent);
31
+
32
+ const titleStyle = computed(() => ({
33
+ fontSize: `${titleDesign.size}px`,
34
+ fontFamily: titleDesign.font,
35
+ color: (titleDesign.color as Color).hex,
36
+ 'font-style': titleDesign.italic ? 'italic' : 'normal',
37
+ 'font-weight': titleDesign.bold ? 'bold' : 'normal',
38
+ }));
39
+
40
+ const descriptionStyle = computed(() => ({
41
+ fontSize: `${descriptionDesign.size}px`,
42
+ fontFamily: descriptionDesign.font,
43
+ color: (descriptionDesign.color as Color).hex,
44
+ 'font-style': descriptionDesign.italic ? 'italic' : 'normal',
45
+ 'font-weight': descriptionDesign.bold ? 'bold' : 'normal',
46
+ }));
47
+ </script>
48
+
49
+ <style lang="scss" scoped>
50
+ .title-section__description {
51
+ max-width: 80%;
52
+ }
53
+ </style>
@@ -0,0 +1,4 @@
1
+ export enum ColorType {
2
+ SOLID = 'solid',
3
+ GRADIENT = 'gradient',
4
+ }
@@ -0,0 +1,5 @@
1
+ import { createVueServerApp } from '@lightspeed/crane';
2
+ import ExampleSection from './ExampleSection.vue';
3
+ import { Content, Design } from './type.ts';
4
+
5
+ export default createVueServerApp<Content, Design>(ExampleSection);
@@ -0,0 +1,68 @@
1
+ export default {
2
+ section_title: {
3
+ type: 'INPUTBOX',
4
+ label: '$label.section_title.label',
5
+ placeholder: '$label.section_title.placeholder',
6
+ },
7
+ section_description: {
8
+ type: 'TEXTAREA',
9
+ label: '$label.section_description.label',
10
+ placeholder: '$label.section_description.placeholder',
11
+ },
12
+ image_content_1: {
13
+ type: 'IMAGE',
14
+ label: '$label.image_content_1.label',
15
+ },
16
+ image_text_1: {
17
+ type: 'TEXTAREA',
18
+ label: '$label.image_text_1.label',
19
+ placeholder: '$label.image_text.placeholder',
20
+ },
21
+ image_link_1: {
22
+ type: 'INPUTBOX',
23
+ label: '$label.image_link_1.label',
24
+ placeholder: '$label.image_link.placeholder',
25
+ },
26
+ image_content_2: {
27
+ type: 'IMAGE',
28
+ label: '$label.image_content_2.label',
29
+ },
30
+ image_text_2: {
31
+ type: 'TEXTAREA',
32
+ label: '$label.image_text_2.label',
33
+ placeholder: '$label.image_text.placeholder',
34
+ },
35
+ image_link_2: {
36
+ type: 'INPUTBOX',
37
+ label: '$label.image_link_2.label',
38
+ placeholder: '$label.image_link.placeholder',
39
+ },
40
+ image_content_3: {
41
+ type: 'IMAGE',
42
+ label: '$label.image_content_3.label',
43
+ },
44
+ image_text_3: {
45
+ type: 'TEXTAREA',
46
+ label: '$label.image_text_3.label',
47
+ placeholder: '$label.image_text.placeholder',
48
+ },
49
+ image_link_3: {
50
+ type: 'INPUTBOX',
51
+ label: '$label.image_link_3.label',
52
+ placeholder: '$label.image_link.placeholder',
53
+ },
54
+ image_content_4: {
55
+ type: 'IMAGE',
56
+ label: '$label.image_content_4.label',
57
+ },
58
+ image_text_4: {
59
+ type: 'TEXTAREA',
60
+ label: '$label.image_text_4.label',
61
+ placeholder: '$label.image_text.placeholder',
62
+ },
63
+ image_link_4: {
64
+ type: 'INPUTBOX',
65
+ label: '$label.image_link_4.label',
66
+ placeholder: '$label.image_link.placeholder',
67
+ },
68
+ } as const;
@@ -1,76 +1,72 @@
1
1
  export default {
2
- inputbox: {
2
+ section_title: {
3
3
  type: 'TEXT',
4
- label: '$label.inputbox.label',
4
+ label: '$label.section_title.label',
5
5
  colors: ['#FFFFFF66', '#0000004D', '#00000099', '#64C7FF66', '#F9947266', '#C794CD66', '#FFD17466'],
6
- sizes: [12, 13, 14, 15, 16, 17, 18, 20],
6
+ sizes: [18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60],
7
7
  defaults: {
8
8
  font: 'global.fontFamily.body',
9
- size: 18,
9
+ size: 40,
10
10
  bold: true,
11
11
  italic: false,
12
- color: '#333',
12
+ color: '#313131',
13
+ visible: true,
13
14
  },
14
15
  },
15
- textarea: {
16
+ section_description: {
16
17
  type: 'TEXT',
17
- label: '$label.textarea.label',
18
+ label: '$label.section_description.label',
18
19
  colors: ['#FFFFFF66', '#0000004D', '#00000099', '#64C7FF66', '#F9947266', '#C794CD66', '#FFD17466'],
19
20
  sizes: [12, 13, 14, 15, 16, 17, 18, 20],
20
21
  defaults: {
21
22
  font: 'global.fontFamily.body',
22
- size: 16,
23
+ size: 18,
23
24
  bold: false,
24
25
  italic: true,
25
- color: '#333',
26
+ color: '#313131',
27
+ visible: true,
26
28
  },
27
29
  },
28
- button: {
29
- type: 'BUTTON',
30
- label: '$label.button.label',
30
+ image_text: {
31
+ type: 'TEXT',
32
+ label: '$label.image_text.label',
31
33
  colors: ['#FFFFFF66', '#0000004D', '#00000099', '#64C7FF66', '#F9947266', '#C794CD66', '#FFD17466'],
34
+ sizes: [12, 13, 14, 15, 16, 17, 18, 20],
32
35
  defaults: {
33
36
  font: 'global.fontFamily.body',
34
- size: 'MEDIUM',
35
- appearance: 'OUTLINE',
36
- shape: 'PILL',
37
+ size: 16,
38
+ bold: false,
39
+ italic: true,
37
40
  color: '#333',
41
+ visible: true,
38
42
  },
39
43
  },
40
- image: {
44
+ image_content: {
41
45
  type: 'IMAGE',
42
- label: '$label.image.label',
46
+ label: '$label.image_content.label',
43
47
  colors: ['#FFFFFF66', '#0000004D', '#00000099', '#64C7FF66', '#F9947266', '#C794CD66', '#FFD17466'],
44
48
  defaults: {
45
49
  overlay: 'COLOR',
46
50
  color: '#333',
47
51
  },
48
52
  },
49
- toggle: {
50
- type: 'TOGGLE',
51
- label: '$label.toggle.label',
52
- description: '$label.toggle.description',
53
- defaults: {
54
- enabled: true,
55
- },
56
- },
57
- selectbox: {
53
+ image_text_position: {
58
54
  type: 'SELECTBOX',
59
- label: '$label.selectbox.label',
60
- placeholder: '$label.selectbox.placeholder',
61
- description: '$label.selectbox.description',
55
+ label: '$label.image_text_position.label',
56
+ placeholder: '$label.image_text_position.placeholder',
57
+ description: '$label.image_text_position.description',
62
58
  options: [
63
59
  {
64
- value: 'one',
65
- label: '$label.selectbox.one.label',
60
+ value: 'on',
61
+ label: '$label.image_text_position.on.label',
66
62
  },
67
63
  {
68
- value: 'two',
69
- label: '$label.selectbox.two.label',
64
+ value: 'under',
65
+ label: '$label.image_text_position.under.label',
70
66
  },
71
67
  ],
72
68
  defaults: {
73
- value: 'two',
69
+ value: 'on',
74
70
  },
75
71
  },
76
72
  background: {
@@ -82,13 +78,4 @@ export default {
82
78
  color: 'global.color.background',
83
79
  },
84
80
  },
85
- color: {
86
- type: 'COLOR_PICKER',
87
- label: '$label.colorpicker.label',
88
- description: '$label.colorpicker.description',
89
- colors: ['#FFFFFF66', '#0000004D', '#00000099', '#64C7FF66', '#F9947266', '#C794CD66', '#FFD17466'],
90
- defaults: {
91
- color: 'global.color.background',
92
- },
93
- },
94
81
  } as const;
@@ -0,0 +1,59 @@
1
+ export default {
2
+ en: {
3
+ '$label.section_title.label': 'Main title',
4
+ '$label.section_title.placeholder': 'This will be the main title for this section',
5
+ '$label.section_description.label': 'Long description',
6
+ '$label.section_description.placeholder': 'This description will be displayed below the title',
7
+ '$label.image_text.label': 'Image Caption',
8
+ '$label.image_text_1.label': 'Image 1 caption',
9
+ '$label.image_text_2.label': 'Image 2 caption',
10
+ '$label.image_text_3.label': 'Image 3 caption',
11
+ '$label.image_text_4.label': 'Image 4 caption',
12
+ '$label.image_text.placeholder': 'This caption will be displayed on or below the image',
13
+ '$label.image_content.label': 'Image Content',
14
+ '$label.image_content_1.label': 'Image 1',
15
+ '$label.image_content_2.label': 'Image 2',
16
+ '$label.image_content_3.label': 'Image 3',
17
+ '$label.image_content_4.label': 'Image 4',
18
+ '$label.image_link_1.label': 'Image 1 link',
19
+ '$label.image_link_2.label': 'Image 2 link',
20
+ '$label.image_link_3.label': 'Image 3 link',
21
+ '$label.image_link_4.label': 'Image 4 link',
22
+ '$label.image_link.placeholder': 'Enter an optional URL for the image',
23
+ '$label.image_text_position.label': 'Image caption position',
24
+ '$label.image_text_position.placeholder': 'Choose',
25
+ '$label.image_text_position.description': 'Select the position of the image caption',
26
+ '$label.image_text_position.on.label': 'On the image',
27
+ '$label.image_text_position.under.label': 'Below the image',
28
+ '$label.background.label': 'Background',
29
+ },
30
+
31
+ nl: {
32
+ '$label.section_title.label': 'Hoofdtitel',
33
+ '$label.section_title.placeholder': 'Dit wordt de hoofdtitel voor deze sectie',
34
+ '$label.section_description.label': 'Lange beschrijving',
35
+ '$label.section_description.placeholder': 'Deze beschrijving wordt onder de titel weergegeven',
36
+ '$label.image_text.label': 'Bijschrift afbeelding',
37
+ '$label.image_text_1.label': 'Onderschrift afbeelding 1',
38
+ '$label.image_text_2.label': 'Bijschrift afbeelding 2',
39
+ '$label.image_text_3.label': 'Bijschrift afbeelding 3',
40
+ '$label.image_text_4.label': 'Bijschrift afbeelding 4',
41
+ '$label.image_text.placeholder': 'Dit bijschrift wordt op of onder de afbeelding weergegeven',
42
+ '$label.image_content.label': 'Afbeeldingsinhoud',
43
+ '$label.image_content_1.label': 'Afbeelding 1',
44
+ '$label.image_content_2.label': 'Afbeelding 2',
45
+ '$label.image_content_3.label': 'Afbeelding 3',
46
+ '$label.image_content_4.label': 'Afbeelding 4',
47
+ '$label.image_link_1.label': 'Afbeelding 1 link',
48
+ '$label.image_link_2.label': 'Afbeelding 2 link',
49
+ '$label.image_link_3.label': 'Afbeelding 3 link',
50
+ '$label.image_link_4.label': 'Afbeelding 4 link',
51
+ '$label.image_link.placeholder': 'Voer een optionele URL in voor de afbeelding',
52
+ '$label.image_text_position.label': 'Positie van bijschrift afbeelding',
53
+ '$label.image_text_position.placeholder': 'Kies',
54
+ '$label.image_text_position.description': 'Selecteer de positie van het afbeeldingsbijschrift',
55
+ '$label.image_text_position.on.label': 'Op de afbeelding',
56
+ '$label.image_text_position.under.label': 'Onder de afbeelding',
57
+ '$label.background.label': 'Achtergrond',
58
+ },
59
+ } as const;