@lightspeed/crane 1.1.2 → 1.2.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 (134) hide show
  1. package/bin/crane.js +0 -1
  2. package/dist/app.d.mts +20 -2
  3. package/dist/app.d.ts +20 -2
  4. package/dist/app.mjs +1 -1
  5. package/dist/cli.mjs +10 -23
  6. package/package.json +10 -5
  7. package/template/footers/example-footer/ExampleFooter.vue +6 -1
  8. package/template/footers/example-footer/assets/cart.svg +19 -0
  9. package/template/footers/example-footer/component/LegalLinks.vue +2 -2
  10. package/template/footers/example-footer/component/MadeWith.vue +23 -0
  11. package/template/footers/example-footer/component/ReportAbuse.vue +4 -3
  12. package/template/footers/example-footer/showcases/1.ts +1 -1
  13. package/template/headers/example-header/ExampleHeader.vue +17 -2
  14. package/template/headers/example-header/component/Account.vue +4 -4
  15. package/template/headers/example-header/component/Cart.vue +14 -33
  16. package/template/headers/example-header/settings/content.ts +1 -9
  17. package/template/headers/example-header/settings/design.ts +1 -23
  18. package/template/package.json +1 -1
  19. package/template/reference/sections/about-us/AboutUs.vue +73 -0
  20. package/template/reference/sections/about-us/assets/our_company_in_numbers.jpg +0 -0
  21. package/template/reference/sections/about-us/assets/our_company_in_numbers_preview.jpg +0 -0
  22. package/template/reference/sections/about-us/assets/our_team.jpg +0 -0
  23. package/template/reference/sections/about-us/assets/our_team_preview.jpg +0 -0
  24. package/template/reference/sections/about-us/client.ts +6 -0
  25. package/template/reference/sections/about-us/component/Image.vue +94 -0
  26. package/template/reference/sections/about-us/component/Stats.vue +155 -0
  27. package/template/reference/sections/about-us/component/Title.vue +32 -0
  28. package/template/reference/sections/about-us/server.ts +6 -0
  29. package/template/reference/sections/about-us/settings/content.ts +64 -0
  30. package/template/reference/sections/about-us/settings/design.ts +74 -0
  31. package/template/reference/sections/about-us/settings/layout.ts +12 -0
  32. package/template/reference/sections/about-us/settings/translations.ts +151 -0
  33. package/template/reference/sections/about-us/showcases/1.ts +155 -0
  34. package/template/reference/sections/about-us/showcases/2.ts +143 -0
  35. package/template/reference/sections/about-us/showcases/translations.ts +259 -0
  36. package/template/reference/sections/about-us/type.ts +5 -0
  37. package/template/reference/sections/about-us/util/visibility-provider.ts +27 -0
  38. package/template/reference/sections/intro-slider/IntroSlider.vue +77 -0
  39. package/template/reference/sections/intro-slider/assets/bike_1.jpg +0 -0
  40. package/template/reference/sections/intro-slider/assets/bike_1@2x.jpg +0 -0
  41. package/template/reference/sections/intro-slider/assets/bike_2.jpg +0 -0
  42. package/template/reference/sections/intro-slider/assets/bike_2@2x.jpg +0 -0
  43. package/template/reference/sections/intro-slider/assets/bike_3.jpg +0 -0
  44. package/template/reference/sections/intro-slider/assets/bike_3@2x.jpg +0 -0
  45. package/template/reference/sections/intro-slider/assets/bike_4.jpg +0 -0
  46. package/template/reference/sections/intro-slider/assets/bike_4@2x.jpg +0 -0
  47. package/template/reference/sections/intro-slider/assets/bike_5.jpg +0 -0
  48. package/template/reference/sections/intro-slider/assets/bike_5@2x.jpg +0 -0
  49. package/template/reference/sections/intro-slider/assets/bike_6.jpg +0 -0
  50. package/template/reference/sections/intro-slider/assets/bike_6@2x.jpg +0 -0
  51. package/template/reference/sections/intro-slider/assets/category_1.jpg +0 -0
  52. package/template/reference/sections/intro-slider/assets/category_1@2x.jpg +0 -0
  53. package/template/reference/sections/intro-slider/assets/category_2.jpg +0 -0
  54. package/template/reference/sections/intro-slider/assets/category_2@2x.jpg +0 -0
  55. package/template/reference/sections/intro-slider/assets/category_3.jpg +0 -0
  56. package/template/reference/sections/intro-slider/assets/category_3@2x.jpg +0 -0
  57. package/template/reference/sections/intro-slider/assets/category_5.jpg +0 -0
  58. package/template/reference/sections/intro-slider/assets/category_5@2x.jpg +0 -0
  59. package/template/reference/sections/intro-slider/assets/category_6.jpg +0 -0
  60. package/template/reference/sections/intro-slider/assets/category_6@2x.jpg +0 -0
  61. package/template/reference/sections/intro-slider/assets/custom_section_showcase_1_preview.png +0 -0
  62. package/template/reference/sections/intro-slider/assets/custom_section_showcase_2_preview.png +0 -0
  63. package/template/reference/sections/intro-slider/client.ts +5 -0
  64. package/template/reference/sections/intro-slider/component/Slider.vue +235 -0
  65. package/template/reference/sections/intro-slider/component/Title.vue +106 -0
  66. package/template/reference/sections/intro-slider/entity/color.ts +4 -0
  67. package/template/reference/sections/intro-slider/server.ts +5 -0
  68. package/template/reference/sections/intro-slider/settings/content.ts +43 -0
  69. package/template/reference/sections/intro-slider/settings/design.ts +88 -0
  70. package/template/reference/sections/intro-slider/settings/layout.ts +12 -0
  71. package/template/reference/sections/intro-slider/settings/translations.ts +53 -0
  72. package/template/reference/sections/intro-slider/showcases/1.ts +275 -0
  73. package/template/reference/sections/intro-slider/showcases/2.ts +271 -0
  74. package/template/reference/sections/intro-slider/showcases/translations.ts +88 -0
  75. package/template/reference/sections/intro-slider/type.ts +5 -0
  76. package/template/reference/sections/tag-lines/TagLines.vue +158 -0
  77. package/template/reference/sections/tag-lines/assets/explore_our_holiday_gift_guide.jpg +0 -0
  78. package/template/reference/sections/tag-lines/assets/fall_is_here.jpg +0 -0
  79. package/template/reference/sections/tag-lines/assets/fall_is_here_preview.jpg +0 -0
  80. package/template/reference/sections/tag-lines/assets/folding_bikes.jpg +0 -0
  81. package/template/reference/sections/tag-lines/assets/hybrid_bikes.jpg +0 -0
  82. package/template/reference/sections/tag-lines/assets/mountain_and_road_bikes.jpg +0 -0
  83. package/template/reference/sections/tag-lines/assets/shop_chelsea_boots.jpg +0 -0
  84. package/template/reference/sections/tag-lines/assets/sweater_weather.jpg +0 -0
  85. package/template/reference/sections/tag-lines/assets/what_we_sell.jpg +0 -0
  86. package/template/reference/sections/tag-lines/assets/what_we_sell_preview.jpg +0 -0
  87. package/template/reference/sections/tag-lines/client.ts +5 -0
  88. package/template/reference/sections/tag-lines/component/HighlightedText.vue +50 -0
  89. package/template/reference/sections/tag-lines/component/SectionImage.vue +78 -0
  90. package/template/reference/sections/tag-lines/component/Title.vue +51 -0
  91. package/template/reference/sections/tag-lines/composables/highlighted-text-image-list.ts +34 -0
  92. package/template/reference/sections/tag-lines/server.ts +5 -0
  93. package/template/reference/sections/tag-lines/settings/content.ts +37 -0
  94. package/template/reference/sections/tag-lines/settings/design.ts +81 -0
  95. package/template/reference/sections/tag-lines/settings/layout.ts +12 -0
  96. package/template/reference/sections/tag-lines/settings/translations.ts +61 -0
  97. package/template/reference/sections/tag-lines/showcases/1.ts +190 -0
  98. package/template/reference/sections/tag-lines/showcases/2.ts +190 -0
  99. package/template/reference/sections/tag-lines/showcases/translations.ts +49 -0
  100. package/template/reference/sections/tag-lines/type.ts +5 -0
  101. package/template/reference/shared/components/Button.vue +151 -0
  102. package/template/reference/shared/components/SectionWrapper.vue +26 -0
  103. package/template/reference/shared/components/Tagline.vue +45 -0
  104. package/template/reference/shared/utils/color.ts +16 -0
  105. package/template/reference/shared/utils/styles.ts +12 -0
  106. package/template/reference/templates/assets/reference_template_apparel_cover_image.jpg +0 -0
  107. package/template/reference/templates/assets/reference_template_bike_cover_image.jpg +0 -0
  108. package/template/reference/templates/reference-template-apparel.ts +44 -0
  109. package/template/reference/templates/reference-template-bike.ts +44 -0
  110. package/template/sections/example-section/ExampleSection.vue +21 -24
  111. package/template/sections/example-section/assets/arrow.svg +3 -0
  112. package/template/sections/example-section/assets/bike_accessories_high.jpg +0 -0
  113. package/template/sections/example-section/assets/bike_accessories_low.jpg +0 -0
  114. package/template/sections/example-section/assets/bike_new_arrivals_high.jpg +0 -0
  115. package/template/sections/example-section/assets/bike_new_arrivals_low.jpg +0 -0
  116. package/template/sections/example-section/assets/custom_section_showcase_3_preview.jpg +0 -0
  117. package/template/sections/example-section/assets/fixed_gears_high.jpg +0 -0
  118. package/template/sections/example-section/assets/fixed_gears_low.jpg +0 -0
  119. package/template/sections/example-section/assets/repair_service_high.jpg +0 -0
  120. package/template/sections/example-section/assets/repair_service_low.jpg +0 -0
  121. package/template/sections/example-section/component/button/Button.vue +87 -0
  122. package/template/sections/example-section/component/selectbox/Selectbox.vue +45 -0
  123. package/template/sections/example-section/component/toggle/Toggle.vue +110 -0
  124. package/template/sections/example-section/settings/content.ts +45 -0
  125. package/template/sections/example-section/settings/translations.ts +87 -7
  126. package/template/sections/example-section/showcases/1.ts +43 -0
  127. package/template/sections/example-section/showcases/2.ts +43 -0
  128. package/template/sections/example-section/showcases/3.ts +241 -0
  129. package/template/sections/example-section/showcases/translations.ts +205 -1
  130. package/template/shared/{LanguageSelector.vue → components/LanguageSelector.vue} +5 -5
  131. package/template/shared/components/SectionWrapper.vue +26 -0
  132. package/template/shared/utils.ts +28 -0
  133. package/template/templates/template.ts +2 -1
  134. package/types.d.ts +96 -70
@@ -13,7 +13,7 @@ export default {
13
13
 
14
14
  '$label.card_button_title': 'Card button',
15
15
 
16
- '$label.showcase_2.blockName': 'Reference section — Apparel',
16
+ '$label.showcase_2.blockName': 'Reference Section — Apparel',
17
17
  '$label.showcase_2.section_title.text': 'Trending collections',
18
18
  '$label.showcase_2.image_text_1.text': 'New t-shirts collection',
19
19
  '$label.showcase_2.image_text_2.text': 'Autumn looks',
@@ -21,6 +21,65 @@ export default {
21
21
  '$label.showcase_2.image_text_4.text': 'Story of Jane',
22
22
  '$label.showcase_2.image_link_1.text': '/products',
23
23
  '$label.template_standard_showcase_1.section_title.text': 'Something really catchy',
24
+
25
+ '$label.showcase_3.blockName': 'Reference Section — Bike Shop',
26
+ '$label.showcase_3.section_title.text': 'New arrivals',
27
+ '$label.showcase_3.image_text_1.text': 'New Arrivals',
28
+ '$label.showcase_3.image_link_1.text': '/products',
29
+ '$label.showcase_3.image_text_2.text': 'Fixed-gears',
30
+ '$label.showcase_3.image_text_3.text': 'Repair service',
31
+ '$label.showcase_3.image_text_4.text': 'Bike accessories',
32
+ '$label.showcase_1.info.text': 'Showcase 1: This is info section where you can provide some useful tips regarding custom section usage',
33
+ '$label.showcase_2.info.text': 'Showcase 2: This is area for useful tips regarding custom section usage',
34
+ '$label.showcase_3.info.text': 'Showcase 3: This is info section where you can provide some useful tips regarding custom section usage',
35
+ '$label.showcase_1.info.button.title': 'Showcase 1: Learn',
36
+ '$label.showcase_2.info.button.title': 'Showcase 2: More',
37
+ '$label.showcase_3.info.button.title': 'Showcase 3: More',
38
+
39
+ '$label.showcase_1.button.label': 'Content.ts: Button',
40
+ '$label.showcase_1.button.defaults.title': 'Button Title',
41
+ '$label.showcase_1.toggle.label': 'Toggle',
42
+ '$label.showcase_1.toggle.description': 'Enable or disable this feature using the toggle switch',
43
+
44
+ '$label.showcase_1.selectbox.placeholder': 'Select an option',
45
+ '$label.showcase_1.selectbox.label': 'Content.ts: Selectbox',
46
+ '$label.showcase_1.selectbox.description': 'Content.ts:Select an option from the dropdown to customize your settings',
47
+ '$label.showcase_1.selectbox.one.label': 'One label',
48
+ '$label.showcase_1.selectbox.two.label': 'Two label',
49
+
50
+ '$label.showcase_1.info.label': 'Content.ts: Info',
51
+ '$label.showcase_1.info.description': 'Content.ts: This is info section where you can provide some useful tips regarding custom section usage',
52
+ '$label.showcase_1.info.button.label': 'Content.ts: Learn more',
53
+
54
+ '$label.showcase_2.button.label': 'Content.ts: Button',
55
+ '$label.showcase_2.button.defaults.title': 'Button Title',
56
+ '$label.showcase_2.toggle.label': 'Toggle',
57
+ '$label.showcase_2.toggle.description': 'Enable or disable this feature using the toggle switch',
58
+
59
+ '$label.showcase_2.selectbox.placeholder': 'Select an option',
60
+ '$label.showcase_2.selectbox.label': 'Content.ts: Selectbox',
61
+ '$label.showcase_2.selectbox.description': 'Content.ts:Select an option from the dropdown to customize your settings',
62
+ '$label.showcase_2.selectbox.one.label': 'One label',
63
+ '$label.showcase_2.selectbox.two.label': 'Two label',
64
+
65
+ '$label.showcase_2.info.label': 'Content.ts: Info',
66
+ '$label.showcase_2.info.description': 'Content.ts: This is info section where you can provide some useful tips regarding custom section usage',
67
+ '$label.showcase_2.info.button.label': 'Content.ts: Learn more',
68
+
69
+ '$label.showcase_3.button.label': 'Content.ts: Button',
70
+ '$label.showcase_3.button.defaults.title': 'Button Title',
71
+ '$label.showcase_3.toggle.label': 'Toggle',
72
+ '$label.showcase_3.toggle.description': 'Enable or disable this feature using the toggle switch',
73
+
74
+ '$label.showcase_3.selectbox.placeholder': 'Select an option',
75
+ '$label.showcase_3.selectbox.label': 'Content.ts: Selectbox',
76
+ '$label.showcase_3.selectbox.description': 'Content.ts:Select an option from the dropdown to customize your settings',
77
+ '$label.showcase_3.selectbox.one.label': 'One label',
78
+ '$label.showcase_3.selectbox.two.label': 'Two label',
79
+
80
+ '$label.showcase_3.info.label': 'Content.ts: Info',
81
+ '$label.showcase_3.info.description': 'Content.ts: This is info section where you can provide some useful tips regarding custom section usage',
82
+ '$label.showcase_3.info.button.label': 'Content.ts: Learn more',
24
83
  },
25
84
 
26
85
  nl: {
@@ -43,5 +102,150 @@ export default {
43
102
  '$label.showcase_2.image_text_4.text': 'Verhaal van Jane',
44
103
  '$label.showcase_2.image_link_1.text': '/products',
45
104
  '$label.template_standard_showcase_1.section_title.text': 'Iets heel pakkends',
105
+
106
+ '$label.showcase_3.blockName': 'Referentiesectie — Fietsenwinkel',
107
+ '$label.showcase_3.section_title.text': 'Nieuw binnen',
108
+ '$label.showcase_3.image_text_1.text': 'Nieuw binnen',
109
+ '$label.showcase_3.image_link_1.text': '/products',
110
+ '$label.showcase_3.image_text_2.text': 'Vaste versnellingen',
111
+ '$label.showcase_3.image_text_3.text': 'Reparatieservice',
112
+ '$label.showcase_3.image_text_4.text': 'Fietsaccessoires',
113
+ '$label.showcase_1.info.text': 'Dit is het informatiedeel waar je enkele nuttige tips kunt geven over het gebruik van aangepaste secties',
114
+ '$label.showcase_2.info.text': 'Hier is een gebied voor nuttige tips over het gebruik van aangepaste secties',
115
+ '$label.showcase_1.info.button.title': 'Leren',
116
+ '$label.showcase_2.info.button.title': 'Meer',
117
+
118
+ '$label.showcase_1.button.label': 'Content.ts: Knop',
119
+ '$label.showcase_1.button.defaults.title': 'Knoptitel',
120
+ '$label.showcase_1.toggle.label': 'Schakelaar',
121
+ '$label.showcase_1.toggle.description': 'Schakel deze functie in of uit met de schakelaar',
122
+
123
+ '$label.showcase_1.selectbox.placeholder': 'Selecteer een optie',
124
+ '$label.showcase_1.selectbox.label': 'Content.ts: Selectievak',
125
+ '$label.showcase_1.selectbox.description': 'Content.ts:Selecteer een optie uit de dropdown om uw instellingen aan te passen',
126
+ '$label.showcase_1.selectbox.one.label': 'Eén label',
127
+ '$label.showcase_1.selectbox.two.label': 'Twee label',
128
+
129
+ '$label.showcase_1.info.label': 'Content.ts: Info',
130
+ '$label.showcase_1.info.description': 'Content.ts: Dit is een informatiedeel waar je enkele nuttige tips '
131
+ + 'kunt geven over het gebruik van aangepaste secties',
132
+ '$label.showcase_1.info.button.label': 'Content.ts: Meer informatie',
133
+
134
+ '$label.showcase_2.button.label': 'Content.ts: Knop',
135
+ '$label.showcase_2.button.defaults.title': 'Knoptitel',
136
+ '$label.showcase_2.toggle.label': 'Schakelaar',
137
+ '$label.showcase_2.toggle.description': 'Schakel deze functie in of uit met de schakelaar',
138
+
139
+ '$label.showcase_2.selectbox.placeholder': 'Selecteer een optie',
140
+ '$label.showcase_2.selectbox.label': 'Content.ts: Selectievak',
141
+ '$label.showcase_2.selectbox.description': 'Content.ts:Selecteer een optie uit de dropdown om uw instellingen aan te passen',
142
+ '$label.showcase_2.selectbox.one.label': 'Eén label',
143
+ '$label.showcase_2.selectbox.two.label': 'Twee label',
144
+
145
+ '$label.showcase_2.info.label': 'Content.ts: Info',
146
+ '$label.showcase_2.info.description': 'Content.ts: Dit is een informatiedeel waar je enkele '
147
+ + 'nuttige tips kunt geven over het gebruik van aangepaste secties',
148
+ '$label.showcase_2.info.button.label': 'Content.ts: Meer informatie',
149
+
150
+ '$label.showcase_3.button.label': 'Content.ts: Knop',
151
+ '$label.showcase_3.button.defaults.title': 'Knoptitel',
152
+ '$label.showcase_3.toggle.label': 'Schakelaar',
153
+ '$label.showcase_3.toggle.description': 'Schakel deze functie in of uit met de schakelaar',
154
+
155
+ '$label.showcase_3.selectbox.placeholder': 'Selecteer een optie',
156
+ '$label.showcase_3.selectbox.label': 'Content.ts: Selectievak',
157
+ '$label.showcase_3.selectbox.description': 'Content.ts:Selecteer een optie uit de dropdown om uw instellingen aan te passen',
158
+ '$label.showcase_3.selectbox.one.label': 'Eén label',
159
+ '$label.showcase_3.selectbox.two.label': 'Twee label',
160
+
161
+ '$label.showcase_3.info.label': 'Content.ts: Info',
162
+ '$label.showcase_3.info.description': 'Content.ts: Dit is een informatiedeel waar je enkele nuttige tips '
163
+ + 'kunt geven over het gebruik van aangepaste secties',
164
+ '$label.showcase_3.info.button.label': 'Content.ts: Meer informatie',
165
+ },
166
+
167
+ fr: {
168
+ '$label.showcase_1.blockName': 'Section de référence — Vente au détail',
169
+ '$label.showcase_1.section_title.text': 'Collections tendance',
170
+ '$label.showcase_1.section_description.text': 'Découvrez nos pièces préférées de cette saison et offrez-vous ces '
171
+ + 'pièces intemporelles adaptées à toutes les occasions. Nous offrons la livraison et les retours gratuits, ainsi '
172
+ + 'que des conseils de mode 24/7 via notre application mobile.',
173
+ '$label.showcase_1.image_text_1.text': 'Nouveautés',
174
+ '$label.showcase_1.image_text_2.text': 'Look sportif',
175
+ '$label.showcase_1.image_text_3.text': 'Accessoires d\'été',
176
+ '$label.showcase_1.image_text_4.text': 'Chaussures tendance',
177
+ '$label.showcase_1.image_link_1.text': '/products',
178
+
179
+ '$label.card_button_title': 'Bouton de carte',
180
+
181
+ '$label.showcase_2.blockName': 'Section de référence — Vêtements',
182
+ '$label.showcase_2.section_title.text': 'Collections tendance',
183
+ '$label.showcase_2.image_text_1.text': 'Nouvelle collection de t-shirts',
184
+ '$label.showcase_2.image_text_2.text': 'Looks d\'automne',
185
+ '$label.showcase_2.image_text_3.text': 'Garde-robe de Bianka',
186
+ '$label.showcase_2.image_text_4.text': 'Histoire de Jane',
187
+ '$label.showcase_2.image_link_1.text': '/products',
188
+ '$label.template_standard_showcase_1.section_title.text': 'Quelque chose de vraiment accrocheur',
189
+
190
+ '$label.showcase_3.blockName': 'Section de référence — Magasin de vélos',
191
+ '$label.showcase_3.section_title.text': 'Nouveautés',
192
+ '$label.showcase_3.image_text_1.text': 'Nouveautés',
193
+ '$label.showcase_3.image_link_1.text': '/products',
194
+ '$label.showcase_3.image_text_2.text': 'Vélos à pignon fixe',
195
+ '$label.showcase_3.image_text_3.text': 'Service de réparation',
196
+ '$label.showcase_3.image_text_4.text': 'Accessoires pour vélos',
197
+ '$label.showcase_1.info.text': 'Showcase 1: Ceci est une section d\'information où vous pouvez fournir des conseils utiles sur '
198
+ + 'l\'utilisation de la section personnalisée',
199
+ '$label.showcase_2.info.text': 'Showcase 2: Ceci est une zone pour des conseils utiles sur l\'utilisation de la section personnalisée',
200
+ '$label.showcase_1.info.button.title': 'Showcase 1: Apprendre',
201
+ '$label.showcase_2.info.button.title': 'Showcase 2: Plus',
202
+
203
+ '$label.showcase_1.button.label': 'Content.ts: Bouton',
204
+ '$label.showcase_1.button.defaults.title': 'Titre du bouton',
205
+ '$label.showcase_1.toggle.label': 'Basculer',
206
+ '$label.showcase_1.toggle.description': 'Activez ou désactivez cette fonctionnalité à l\'aide de l\'interrupteur',
207
+
208
+ '$label.showcase_1.selectbox.placeholder': 'Sélectionnez une option',
209
+ '$label.showcase_1.selectbox.label': 'Content.ts: Boîte de sélection',
210
+ '$label.showcase_1.selectbox.description': 'Content.ts:Sélectionnez une option dans le menu déroulant pour personnaliser vos paramètres',
211
+ '$label.showcase_1.selectbox.one.label': 'Un label',
212
+ '$label.showcase_1.selectbox.two.label': 'Deux label',
213
+
214
+ '$label.showcase_1.info.label': 'Content.ts: Info',
215
+ '$label.showcase_1.info.description': 'Content.ts: Ceci est une section d\'information où vous pouvez '
216
+ + 'fournir des conseils utiles sur l\'utilisation de la section personnalisée',
217
+ '$label.showcase_1.info.button.label': 'Content.ts: En savoir plus',
218
+
219
+ '$label.showcase_2.button.label': 'Content.ts: Bouton',
220
+ '$label.showcase_2.button.defaults.title': 'Titre du bouton',
221
+ '$label.showcase_2.toggle.label': 'Basculer',
222
+ '$label.showcase_2.toggle.description': 'Activez ou désactivez cette fonctionnalité à l\'aide de l\'interrupteur',
223
+
224
+ '$label.showcase_2.selectbox.placeholder': 'Sélectionnez une option',
225
+ '$label.showcase_2.selectbox.label': 'Content.ts: Boîte de sélection',
226
+ '$label.showcase_2.selectbox.description': 'Content.ts:Sélectionnez une option dans le menu déroulant pour personnaliser vos paramètres',
227
+ '$label.showcase_2.selectbox.one.label': 'Un label',
228
+ '$label.showcase_2.selectbox.two.label': 'Deux label',
229
+
230
+ '$label.showcase_2.info.label': 'Content.ts: Info',
231
+ '$label.showcase_2.info.description': 'Content.ts: Ceci est une section d\'information où vous pouvez fournir '
232
+ + 'des conseils utiles sur l\'utilisation de la section personnalisée',
233
+ '$label.showcase_2.info.button.label': 'Content.ts: En savoir plus',
234
+
235
+ '$label.showcase_3.button.label': 'Content.ts: Bouton',
236
+ '$label.showcase_3.button.defaults.title': 'Titre du bouton',
237
+ '$label.showcase_3.toggle.label': 'Basculer',
238
+ '$label.showcase_3.toggle.description': 'Activez ou désactivez cette fonctionnalité à l\'aide de l\'interrupteur',
239
+
240
+ '$label.showcase_3.selectbox.placeholder': 'Sélectionnez une option',
241
+ '$label.showcase_3.selectbox.label': 'Content.ts: Boîte de sélection',
242
+ '$label.showcase_3.selectbox.description': 'Content.ts:Sélectionnez une option dans le menu déroulant pour personnaliser vos paramètres',
243
+ '$label.showcase_3.selectbox.one.label': 'Un label',
244
+ '$label.showcase_3.selectbox.two.label': 'Deux label',
245
+
246
+ '$label.showcase_3.info.label': 'Content.ts: Info',
247
+ '$label.showcase_3.info.description': 'Content.ts: Ceci est une section d\'information où vous pouvez fournir '
248
+ + 'des conseils utiles sur l\'utilisation de la section personnalisée',
249
+ '$label.showcase_3.info.button.label': 'Content.ts: En savoir plus',
46
250
  },
47
251
  } as const;
@@ -22,13 +22,13 @@
22
22
  <script setup lang="ts">
23
23
  import { useVueBaseProps } from '@lightspeed/crane';
24
24
  import { computed } from 'vue';
25
- import { Design } from '../headers/example-header/type.ts';
25
+ import { Design } from '../../headers/example-header/type.ts';
26
26
 
27
27
  const baseProps = useVueBaseProps<unknown, Design>();
28
- const externalContent = computed(() => baseProps.externalContent?.value as ExternalContentData);
29
- const isPreviewMode = computed(() => externalContent.value?.isPreviewMode ?? false);
30
- const sortedLanguages = computed(() => (externalContent.value?.languages
31
- ? [...externalContent.value.languages].sort((a, b) => {
28
+ const siteContent = computed(() => baseProps.site?.value satisfies SiteContent);
29
+ const isPreviewMode = computed(() => siteContent.value?.isPreviewMode ?? false);
30
+ const sortedLanguages = computed(() => (siteContent.value?.languages
31
+ ? [...siteContent.value.languages].sort((a, b) => {
32
32
  if (a.main && !b.main) return -1;
33
33
  if (!a.main && b.main) return 1;
34
34
  return 0;
@@ -0,0 +1,26 @@
1
+ <template>
2
+ <section class="section">
3
+ <div class="section__wrapper">
4
+ <slot />
5
+ </div>
6
+ </section>
7
+ </template>
8
+
9
+ <style lang="scss" scoped>
10
+ .section {
11
+ padding: 60px 20px;
12
+
13
+ @media screen and (min-width: 700px) {
14
+ padding: 75px;
15
+ }
16
+
17
+ @media screen and (min-width: 1200px) {
18
+ padding: 100px;
19
+ }
20
+
21
+ &__wrapper {
22
+ max-width: 1120px;
23
+ margin: 0 auto;
24
+ }
25
+ }
26
+ </style>
@@ -0,0 +1,28 @@
1
+ export function isDark(color: string): boolean {
2
+ if (!color) return false;
3
+
4
+ let r; let g; let b;
5
+
6
+ if (color.startsWith('#')) {
7
+ const hex = color.replace('#', '');
8
+ if (hex.length === 3) {
9
+ r = parseInt(hex[0] + hex[0], 16);
10
+ g = parseInt(hex[1] + hex[1], 16);
11
+ b = parseInt(hex[2] + hex[2], 16);
12
+ } else {
13
+ r = parseInt(hex.substring(0, 2), 16);
14
+ g = parseInt(hex.substring(2, 4), 16);
15
+ b = parseInt(hex.substring(4, 6), 16);
16
+ }
17
+ } else if (color.startsWith('rgb')) {
18
+ const rgbValues = color.match(/\d+/g);
19
+ if (rgbValues) {
20
+ [r, g, b] = rgbValues.map(Number);
21
+ }
22
+ }
23
+
24
+ if (r === undefined || g === undefined || b === undefined) return false;
25
+
26
+ const brightness = (r * 299 + g * 587 + b * 114) / 1000;
27
+ return brightness < 128;
28
+ }
@@ -18,7 +18,8 @@ export default {
18
18
  },
19
19
  {
20
20
  type: 'default',
21
- id: 'slider_001',
21
+ id: 'slider',
22
+ showcase_id: '001',
22
23
  },
23
24
  {
24
25
  type: 'custom',
package/types.d.ts CHANGED
@@ -8,13 +8,13 @@ declare module '*.vue' {
8
8
  }
9
9
 
10
10
  type ActionLinkType
11
- = 'SCROLL_TO_TILE'
12
- | 'HYPER_LINK'
13
- | 'MAIL_LINK'
14
- | 'TEL_LINK'
15
- | 'GO_TO_STORE'
16
- | 'GO_TO_STORE_LINK'
17
- | 'GO_TO_PAGE';
11
+ = 'SCROLL_TO_TILE'
12
+ | 'HYPER_LINK'
13
+ | 'MAIL_LINK'
14
+ | 'TEL_LINK'
15
+ | 'GO_TO_STORE'
16
+ | 'GO_TO_STORE_LINK'
17
+ | 'GO_TO_PAGE';
18
18
 
19
19
  interface ButtonContentData {
20
20
  readonly title: string;
@@ -81,20 +81,20 @@ interface LogoContentData {
81
81
  }
82
82
 
83
83
  type GlobalColorsString =
84
- 'global.color.title' |
85
- 'global.color.body' |
86
- 'global.color.button' |
87
- 'global.color.link' |
88
- 'global.color.background';
84
+ 'global.color.title' |
85
+ 'global.color.body' |
86
+ 'global.color.button' |
87
+ 'global.color.link' |
88
+ 'global.color.background';
89
89
 
90
90
  type GlobalFontsString =
91
- 'global.fontFamily.title' |
92
- 'global.fontFamily.body';
91
+ 'global.fontFamily.title' |
92
+ 'global.fontFamily.body';
93
93
 
94
94
  type GlobalTextSizeString =
95
- 'global.textSize.title' |
96
- 'global.textSize.subtitle' |
97
- 'global.textSize.body';
95
+ 'global.textSize.title' |
96
+ 'global.textSize.subtitle' |
97
+ 'global.textSize.body';
98
98
 
99
99
  interface HSLColor {
100
100
  h: number;
@@ -140,9 +140,9 @@ interface TextareaDesignData extends TextDesignData {
140
140
  }
141
141
 
142
142
  type CapitalizationType =
143
- 'none'
144
- | 'all'
145
- | 'small';
143
+ 'none'
144
+ | 'all'
145
+ | 'small';
146
146
 
147
147
  interface Frame {
148
148
  visible: boolean;
@@ -163,19 +163,19 @@ interface LogoDesignData {
163
163
  }
164
164
 
165
165
  type ButtonAppearance =
166
- 'solid-button'
167
- | 'outline-button'
168
- | 'text-link';
166
+ 'solid-button'
167
+ | 'outline-button'
168
+ | 'text-link';
169
169
 
170
170
  type ButtonSize =
171
- 'small'
172
- | 'medium'
173
- | 'large';
171
+ 'small'
172
+ | 'medium'
173
+ | 'large';
174
174
 
175
175
  type ButtonStyle =
176
- 'round-corner'
177
- | 'rectangle'
178
- | 'pill';
176
+ 'round-corner'
177
+ | 'rectangle'
178
+ | 'pill';
179
179
 
180
180
  interface ButtonDesignData {
181
181
  appearance: ButtonAppearance | undefined;
@@ -187,9 +187,9 @@ interface ButtonDesignData {
187
187
  }
188
188
 
189
189
  type OverlayType =
190
- 'solid'
191
- | 'gradient'
192
- | 'none';
190
+ 'solid'
191
+ | 'gradient'
192
+ | 'none';
193
193
 
194
194
  interface Overlay {
195
195
  type: OverlayType | undefined;
@@ -211,8 +211,8 @@ interface ToggleDesignData {
211
211
  }
212
212
 
213
213
  type BackgroundType =
214
- 'solid'
215
- | 'gradient';
214
+ 'solid'
215
+ | 'gradient';
216
216
 
217
217
  interface Background {
218
218
  type: BackgroundType | undefined;
@@ -247,32 +247,56 @@ interface TextareaContentEditor {
247
247
  readonly placeholder: Record<string, string>;
248
248
  }
249
249
 
250
- interface SimpleLink {
251
- readonly url?: string,
252
- readonly title?: string,
253
- readonly target?: string,
250
+ interface ReportAbuse {
251
+ readonly title: string;
252
+ readonly url: string | undefined;
253
+ readonly target: string | undefined;
254
254
  }
255
255
 
256
- interface SimpleLink {
257
- readonly url?: string,
258
- readonly title?: string,
259
- readonly target?: string,
256
+ interface MadeWith {
257
+ readonly url: string | undefined;
258
+ readonly target: string | undefined;
259
+ readonly icon: string | undefined;
260
+ readonly poweredBy: string | undefined;
261
+ readonly company: string | undefined;
260
262
  }
261
263
 
262
264
  interface Language {
263
- readonly code: string;
264
- readonly description: string;
265
- readonly main: boolean;
266
- readonly selected: boolean;
267
- readonly url?: string;
265
+ readonly code: string;
266
+ readonly description: string;
267
+ readonly main: boolean;
268
+ readonly selected: boolean;
269
+ readonly url: string;
270
+ }
271
+
272
+ interface Account {
273
+ readonly title: string | undefined;
274
+ readonly url: string | undefined;
275
+ readonly target: string | undefined;
276
+ }
277
+
278
+ interface Cart {
279
+ readonly url: string | undefined;
280
+ readonly count: number;
281
+ }
282
+
283
+ interface LegalPage {
284
+ readonly title: string | undefined;
285
+ readonly url: string | undefined;
286
+ }
287
+
288
+ interface SiteContent {
289
+ readonly isPreviewMode: boolean;
290
+ readonly reportAbuse?: ReportAbuse;
291
+ readonly madeWith?: MadeWith;
292
+ readonly languages?: Language[];
293
+ readonly account?: Account;
294
+ readonly cart?: Cart;
295
+ readonly legalPages?: LegalPage[];
268
296
  }
269
297
 
270
298
  interface ExternalContentData {
271
- readonly reportAbuse?: SimpleLink;
272
- readonly account?: SimpleLink;
273
- readonly languages?: Language[];
274
- readonly legalLinks?: SimpleLink[];
275
- readonly isPreviewMode?: boolean;
299
+ readonly site?: SiteContent;
276
300
  }
277
301
 
278
302
  interface ButtonContentEditor {
@@ -320,15 +344,15 @@ interface LogoContentEditor {
320
344
  }
321
345
 
322
346
  type ContentEditor =
323
- TextContentEditor
324
- | MultilineTextContentEditor
325
- | ButtonContentEditor
326
- | ImageContentEditor
327
- | ToggleContentEditor
328
- | SelectboxContentEditor
329
- | MenuContentEditor
330
- | NavigationMenuContentEditor
331
- | LogoContentEditor;
347
+ TextContentEditor
348
+ | MultilineTextContentEditor
349
+ | ButtonContentEditor
350
+ | ImageContentEditor
351
+ | ToggleContentEditor
352
+ | SelectboxContentEditor
353
+ | MenuContentEditor
354
+ | NavigationMenuContentEditor
355
+ | LogoContentEditor;
332
356
 
333
357
  type InferContentType<T extends Record<string, ContentEditor>> = {
334
358
  readonly [P in keyof T]: MapEditorContentTypes[T[P]['type']]
@@ -388,20 +412,22 @@ interface ColorPickerDesignEditor {
388
412
 
389
413
  interface LogoDesignEditor {
390
414
  readonly type: 'LOGO';
391
- readonly label: string | Record<string, string>;
415
+ readonly label?: string | Record<string, string>;
392
416
  defaults: Record<string, unknown>;
393
417
  }
394
418
 
395
419
  type DesignEditor =
396
- TextDesignEditor
397
- | ButtonDesignEditor
398
- | ImageDesignEditor
399
- | ToggleDesignEditor
400
- | SelectboxDesignEditor
401
- | BackgroundDesignEditor
402
- | ColorPickerDesignEditor
403
- | LogoDesignEditor;
420
+ TextDesignEditor
421
+ | ButtonDesignEditor
422
+ | ImageDesignEditor
423
+ | ToggleDesignEditor
424
+ | SelectboxDesignEditor
425
+ | BackgroundDesignEditor
426
+ | ColorPickerDesignEditor
427
+ | LogoDesignEditor;
404
428
 
405
429
  type InferDesignType<T extends Record<string, DesignEditor>> = {
406
430
  readonly [P in keyof T]: MapEditorDesignTypes[T[P]['type']]
407
431
  }
432
+
433
+ type SettingsEditor = DesignEditor | ContentEditor;