@levo-so/blocks 0.1.75 → 0.1.77

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 (58) hide show
  1. package/package.json +4 -4
  2. package/src/blocks/about-us/about-us-1.schema.ts +0 -3
  3. package/src/blocks/blogs/ClientOnly.tsx +24 -0
  4. package/src/blocks/blogs/blog-listing-1.schema.ts +750 -111
  5. package/src/blocks/blogs/blog-listing-1.tsx +123 -41
  6. package/src/blocks/blogs/blog-listing-2.schema.ts +1127 -2640
  7. package/src/blocks/blogs/blog-listing-2.tsx +110 -23
  8. package/src/blocks/blogs/blog-listing-3.schema.ts +713 -2010
  9. package/src/blocks/blogs/blog-listing-3.tsx +118 -20
  10. package/src/blocks/blogs/blog-post-1.schema.ts +262 -32
  11. package/src/blocks/blogs/blog-post-1.tsx +217 -28
  12. package/src/blocks/cards/cards-16.schema.ts +947 -0
  13. package/src/blocks/cards/cards-16.tsx +106 -0
  14. package/src/blocks/cards/cards-17.schema.ts +1945 -0
  15. package/src/blocks/cards/cards-17.tsx +112 -0
  16. package/src/blocks/cards/cards-18.schema.ts +1040 -0
  17. package/src/blocks/cards/cards-18.tsx +102 -0
  18. package/src/blocks/cards/cards-2.schema.ts +2 -2
  19. package/src/blocks/cards/cards-3.schema.ts +3 -16
  20. package/src/blocks/cards/cards-4.schema.ts +3 -28
  21. package/src/blocks/cards/cards-7.schema.ts +4 -7
  22. package/src/blocks/cards/cards-8.schema.ts +1 -10
  23. package/src/blocks/carousel/carousel-2.schema.ts +1 -2
  24. package/src/blocks/content/content-10.schema.ts +450 -0
  25. package/src/blocks/content/content-10.tsx +43 -0
  26. package/src/blocks/content/content-3.schema.ts +22 -28
  27. package/src/blocks/content/content-5.schema.ts +0 -4
  28. package/src/blocks/cta/cta-1.schema.ts +0 -3
  29. package/src/blocks/event/event-details.schema.ts +41 -175
  30. package/src/blocks/event/event-details.tsx +45 -50
  31. package/src/blocks/event/event-listing-2.schema.ts +437 -202
  32. package/src/blocks/event/event-listing-2.tsx +86 -22
  33. package/src/blocks/event/event-listing-3.schema.ts +232 -196
  34. package/src/blocks/event/event-listing-3.tsx +62 -29
  35. package/src/blocks/event/event-listing-4.schema.ts +314 -2824
  36. package/src/blocks/event/event-listing-4.tsx +68 -32
  37. package/src/blocks/event/event-listing.schema.ts +176 -1032
  38. package/src/blocks/event/event-listing.tsx +59 -25
  39. package/src/blocks/features/features-1/variants/stylized-cards-v2.ts +0 -1
  40. package/src/blocks/features/features-4.schema.ts +4 -14
  41. package/src/blocks/features/features-5.schema.ts +30 -51
  42. package/src/blocks/features/features-6.schema.ts +0 -1
  43. package/src/blocks/filter-listing/filter-listing-1.schema.ts +1 -3
  44. package/src/blocks/footer/footer-3.schema.ts +6 -14
  45. package/src/blocks/hero/hero-11.schema.ts +25 -54
  46. package/src/blocks/hero/hero-5.schema.ts +2 -6
  47. package/src/blocks/hero/hero-6.schema.ts +1 -10
  48. package/src/blocks/index.ts +4 -0
  49. package/src/blocks/logos/logos-1.schema.ts +0 -30
  50. package/src/blocks/pricing/pricing-1.schema.ts +0 -3
  51. package/src/blocks/stats/variants/default.ts +4 -5
  52. package/src/blocks/team/team-2.schema.ts +57 -154
  53. package/src/blocks/team/team-3.schema.ts +14 -31
  54. package/src/blocks/testimonial/testimonial-4.schema.ts +67 -152
  55. package/src/blocks/testimonial/testimonial-5/variants/default.ts +0 -1
  56. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithLogo.ts +0 -1
  57. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithRatings.ts +0 -1
  58. package/src/schemas/blocks.ts +8 -0
@@ -0,0 +1,1040 @@
1
+ import type { IBlock } from "@levo-so/studio";
2
+
3
+ const MEDIA = {
4
+ id: "7141014160938075687",
5
+ location: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH.png",
6
+ kind: "image",
7
+ mimetype: "image/png",
8
+ srcset: {
9
+ "1080w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
10
+ "1200w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1200w.webp",
11
+ "1920w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1920w.webp",
12
+ "320w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp",
13
+ "640w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp",
14
+ "750w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-750w.webp",
15
+ "828w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-828w.webp",
16
+ path: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp 640w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp 1080w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1200w.webp 1200w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1920w.webp 1920w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp 320w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-750w.webp 750w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-828w.webp 828w",
17
+ },
18
+ };
19
+
20
+ const DEFAULT_CONTENT = {
21
+ layout: null,
22
+ container: null,
23
+ "header-wrapper": null,
24
+ header: "Popular this month",
25
+ description: "Popular this month Popular this month Popular this month",
26
+ blogs_levoGroup: null,
27
+ "pagination-wrapper": null,
28
+ "pagination-left": "Previous",
29
+ "pagination-text": "",
30
+ "pagination-right": "Next",
31
+ cards: Array(8)
32
+ .fill(0)
33
+ .map((v) => ({
34
+ card: null,
35
+ media: MEDIA,
36
+ "card-content-wrapper": null,
37
+ "card-header": null,
38
+ "header-icon": {
39
+ kind: "icon",
40
+ data: {
41
+ id: "calendar-1",
42
+ label: "Calendar 1",
43
+ tags: ["calendar", "custom", "time"],
44
+ svgCode:
45
+ '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M8 5.75C7.59 5.75 7.25 5.41 7.25 5V2C7.25 1.59 7.59 1.25 8 1.25C8.41 1.25 8.75 1.59 8.75 2V5C8.75 5.41 8.41 5.75 8 5.75Z" fill="var(--color-icon-primary)"/>\n<path d="M16 5.75C15.59 5.75 15.25 5.41 15.25 5V2C15.25 1.59 15.59 1.25 16 1.25C16.41 1.25 16.75 1.59 16.75 2V5C16.75 5.41 16.41 5.75 16 5.75Z" fill="var(--color-icon-primary)"/>\n<path d="M8.5 14.5001C8.37 14.5001 8.24 14.4701 8.12 14.4201C7.99 14.3701 7.89 14.3001 7.79 14.2101C7.61 14.0201 7.5 13.7701 7.5 13.5001C7.5 13.3701 7.53 13.2401 7.58 13.1201C7.63 13.0001 7.7 12.8901 7.79 12.7901C7.89 12.7001 7.99 12.6301 8.12 12.5801C8.48 12.4301 8.93 12.5101 9.21 12.7901C9.39 12.9801 9.5 13.2401 9.5 13.5001C9.5 13.5601 9.49 13.6301 9.48 13.7001C9.47 13.7601 9.45 13.8201 9.42 13.8801C9.4 13.9401 9.37 14.0001 9.33 14.0601C9.3 14.1101 9.25 14.1601 9.21 14.2101C9.02 14.3901 8.76 14.5001 8.5 14.5001Z" fill="var(--color-icon-primary)"/>\n<path d="M12 14.5C11.87 14.5 11.74 14.47 11.62 14.42C11.49 14.37 11.39 14.3 11.29 14.21C11.11 14.02 11 13.77 11 13.5C11 13.37 11.03 13.24 11.08 13.12C11.13 13 11.2 12.89 11.29 12.79C11.39 12.7 11.49 12.63 11.62 12.58C11.98 12.42 12.43 12.51 12.71 12.79C12.89 12.98 13 13.24 13 13.5C13 13.56 12.99 13.63 12.98 13.7C12.97 13.76 12.95 13.82 12.92 13.88C12.9 13.94 12.87 14 12.83 14.06C12.8 14.11 12.75 14.16 12.71 14.21C12.52 14.39 12.26 14.5 12 14.5Z" fill="var(--color-icon-primary)"/>\n<path d="M15.5 14.5C15.37 14.5 15.24 14.47 15.12 14.42C14.99 14.37 14.89 14.3 14.79 14.21C14.75 14.16 14.71 14.11 14.67 14.06C14.63 14 14.6 13.94 14.58 13.88C14.55 13.82 14.53 13.76 14.52 13.7C14.51 13.63 14.5 13.56 14.5 13.5C14.5 13.24 14.61 12.98 14.79 12.79C14.89 12.7 14.99 12.63 15.12 12.58C15.49 12.42 15.93 12.51 16.21 12.79C16.39 12.98 16.5 13.24 16.5 13.5C16.5 13.56 16.49 13.63 16.48 13.7C16.47 13.76 16.45 13.82 16.42 13.88C16.4 13.94 16.37 14 16.33 14.06C16.3 14.11 16.25 14.16 16.21 14.21C16.02 14.39 15.76 14.5 15.5 14.5Z" fill="var(--color-icon-primary)"/>\n<path d="M8.5 17.9999C8.37 17.9999 8.24 17.97 8.12 17.92C8 17.87 7.89 17.7999 7.79 17.7099C7.61 17.5199 7.5 17.2599 7.5 16.9999C7.5 16.8699 7.53 16.7399 7.58 16.6199C7.63 16.4899 7.7 16.38 7.79 16.29C8.16 15.92 8.84 15.92 9.21 16.29C9.39 16.48 9.5 16.7399 9.5 16.9999C9.5 17.2599 9.39 17.5199 9.21 17.7099C9.02 17.8899 8.76 17.9999 8.5 17.9999Z" fill="var(--color-icon-primary)"/>\n<path d="M12 17.9999C11.74 17.9999 11.48 17.8899 11.29 17.7099C11.11 17.5199 11 17.2599 11 16.9999C11 16.8699 11.03 16.7399 11.08 16.6199C11.13 16.4899 11.2 16.38 11.29 16.29C11.66 15.92 12.34 15.92 12.71 16.29C12.8 16.38 12.87 16.4899 12.92 16.6199C12.97 16.7399 13 16.8699 13 16.9999C13 17.2599 12.89 17.5199 12.71 17.7099C12.52 17.8899 12.26 17.9999 12 17.9999Z" fill="var(--color-icon-primary)"/>\n<path d="M15.5 18C15.24 18 14.98 17.89 14.79 17.71C14.7 17.62 14.63 17.51 14.58 17.38C14.53 17.26 14.5 17.13 14.5 17C14.5 16.87 14.53 16.74 14.58 16.62C14.63 16.49 14.7 16.38 14.79 16.29C15.02 16.06 15.37 15.95 15.69 16.02C15.76 16.03 15.82 16.05 15.88 16.08C15.94 16.1 16 16.13 16.06 16.17C16.11 16.2 16.16 16.25 16.21 16.29C16.39 16.48 16.5 16.74 16.5 17C16.5 17.26 16.39 17.52 16.21 17.71C16.02 17.89 15.76 18 15.5 18Z" fill="var(--color-icon-primary)"/>\n<path d="M20.5 9.83997H3.5C3.09 9.83997 2.75 9.49997 2.75 9.08997C2.75 8.67997 3.09 8.33997 3.5 8.33997H20.5C20.91 8.33997 21.25 8.67997 21.25 9.08997C21.25 9.49997 20.91 9.83997 20.5 9.83997Z" fill="var(--color-icon-primary)"/>\n<path d="M16 22.75H8C4.35 22.75 2.25 20.65 2.25 17V8.5C2.25 4.85 4.35 2.75 8 2.75H16C19.65 2.75 21.75 4.85 21.75 8.5V17C21.75 20.65 19.65 22.75 16 22.75ZM8 4.25C5.14 4.25 3.75 5.64 3.75 8.5V17C3.75 19.86 5.14 21.25 8 21.25H16C18.86 21.25 20.25 19.86 20.25 17V8.5C20.25 5.64 18.86 4.25 16 4.25H8Z" fill="var(--color-icon-primary)"/>\n</svg>',
46
+ },
47
+ },
48
+ "publish-date": "<p>Nov 5, 2025</p>",
49
+ "card-content": null,
50
+ title: "A glimpse of the world's heart",
51
+ description:
52
+ "I wanted to visit Colombia’s sacred mountains. But there are some places we cannot go – and some things we cannot know.",
53
+ "card-footer": null,
54
+ "author-image": {
55
+ kind: "custom",
56
+ data: MEDIA,
57
+ },
58
+ category: "Popular",
59
+ "author-name": "Floyd miles",
60
+ "author-description": "Lead Editor",
61
+ "card-reading-time-wrapper": null,
62
+ "reading-time-icon": {
63
+ kind: "icon",
64
+ data: {
65
+ id: "clock",
66
+ label: "Clock",
67
+ tags: ["clock", "custom", "directional", "time"],
68
+ svgCode:
69
+ '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M12 22.75C6.07 22.75 1.25 17.93 1.25 12C1.25 6.07 6.07 1.25 12 1.25C17.93 1.25 22.75 6.07 22.75 12C22.75 17.93 17.93 22.75 12 22.75ZM12 2.75C6.9 2.75 2.75 6.9 2.75 12C2.75 17.1 6.9 21.25 12 21.25C17.1 21.25 21.25 17.1 21.25 12C21.25 6.9 17.1 2.75 12 2.75Z" fill="var(--color-icon-primary)"/>\n<path d="M15.7096 15.93C15.5796 15.93 15.4496 15.9 15.3296 15.82L12.2296 13.97C11.4596 13.51 10.8896 12.5 10.8896 11.61V7.51001C10.8896 7.10001 11.2296 6.76001 11.6396 6.76001C12.0496 6.76001 12.3896 7.10001 12.3896 7.51001V11.61C12.3896 11.97 12.6896 12.5 12.9996 12.68L16.0996 14.53C16.4596 14.74 16.5696 15.2 16.3596 15.56C16.2096 15.8 15.9596 15.93 15.7096 15.93Z" fill="var(--color-icon-primary)"/>\n</svg>',
70
+ },
71
+ },
72
+ "reading-time": "6 Minutes",
73
+ cta: "Read More",
74
+ })),
75
+ "header-ctas_levoGroup": null,
76
+ "header-ctas": [
77
+ {
78
+ "header-cta": "Learn More",
79
+ },
80
+ {
81
+ "header-cta": "View All",
82
+ },
83
+ ],
84
+ };
85
+
86
+ export type ICards18Content = typeof DEFAULT_CONTENT;
87
+
88
+ export const Cards18: IBlock = {
89
+ category_id: "cards",
90
+ title: "Cards 18",
91
+ key: "cards-18",
92
+ version: "v1",
93
+ prompt_description:
94
+ "Three-column grid of news or blog cards, each with a large image, headline, summary text, and info row; section headline and a top-right “View all” button, plus pagination controls below.",
95
+ content_schema: [
96
+ {
97
+ key: "layout",
98
+ label: "Layout",
99
+ field_interface: "LayoutWidget",
100
+ // Layout only – no hint needed
101
+ },
102
+ {
103
+ key: "container",
104
+ label: "Container",
105
+ field_interface: "ContainerWidget",
106
+ // Layout only – no hint needed
107
+ },
108
+ {
109
+ key: "header-wrapper",
110
+ label: "Header Wrapper",
111
+ field_interface: "BoxWidget",
112
+ // Visual grouping – no hint needed
113
+ },
114
+ {
115
+ key: "title-wrapper",
116
+ label: "Title Wrapper",
117
+ field_interface: "BoxWidget",
118
+ // Visual grouping – no hint needed
119
+ },
120
+ {
121
+ key: "header-icon",
122
+ label: "Header Icon",
123
+ field_interface: "IconWidget",
124
+ // Visual grouping – no hint needed
125
+ },
126
+ {
127
+ key: "header-text-wrapper",
128
+ label: "Header Text Wrapper",
129
+ field_interface: "BoxWidget",
130
+ // Visual grouping – no hint needed
131
+ },
132
+ {
133
+ key: "header",
134
+ label: "Header",
135
+ field_interface: "HeadingWidget",
136
+ hint: {
137
+ prompt_description:
138
+ "Section heading introducing featured or trending blog articles for this month. Make it concise, bold, and inviting. Use a confident and energetic tone.",
139
+ usecase: "main_title",
140
+ min_characters: 16,
141
+ max_characters: 30,
142
+ },
143
+ },
144
+ {
145
+ key: "description",
146
+ label: "Description",
147
+ field_interface: "TypographyWidget",
148
+ hint: {
149
+ prompt_description:
150
+ "Section description introducing featured or trending blog articles for this month. Make it concise, bold, and inviting. Use a confident and energetic tone.",
151
+ min_characters: 16,
152
+ max_characters: 30,
153
+ },
154
+ },
155
+ {
156
+ key: "header-ctas",
157
+ label: "Header CTAs",
158
+ kind: "group",
159
+ field_interface: "BoxWidget",
160
+ fields: [
161
+ {
162
+ key: "header-cta",
163
+ label: "Header CTA",
164
+ field_interface: "ButtonWidget",
165
+ hint: {
166
+ prompt_description:
167
+ "Call-to-action button for manual user interaction. Can be configured to navigate to blog listing or other actions.",
168
+ usecase: "button",
169
+ min_characters: 6,
170
+ max_characters: 16,
171
+ },
172
+ },
173
+ ],
174
+ // No hint needed: layout grouping only
175
+ },
176
+ {
177
+ key: "cards",
178
+ label: "Cards",
179
+ kind: "group",
180
+ field_interface: "BoxWidget",
181
+ hint: {
182
+ prompt_description:
183
+ "Auto-populated grid of blog article cards. Each card displays real blog data with automatic click handling. Styling remains configurable.",
184
+ min_items: 6, // 6 visible in grid at a time
185
+ max_items: 9, // allows for paginated dataset
186
+ },
187
+ fields: [
188
+ {
189
+ key: "card",
190
+ label: "Card",
191
+ field_interface: "BoxWidget",
192
+ // Card container – no hint needed
193
+ },
194
+ {
195
+ key: "media",
196
+ label: "Media",
197
+ field_interface: "MediaWidget",
198
+ hint: {
199
+ prompt_description:
200
+ "Automatically populated from blog cover_image. Styling remains configurable.",
201
+ orientation: "landscape",
202
+ size: "large",
203
+ usecase: "hero",
204
+ },
205
+ },
206
+ {
207
+ key: "card-info-wrapper",
208
+ label: "Card Info Wrapper",
209
+ field_interface: "BoxWidget",
210
+ // Layout grouping – no hint needed
211
+ },
212
+ {
213
+ key: "card-content",
214
+ label: "Card Content",
215
+ field_interface: "BoxWidget",
216
+ // Layout grouping – no hint needed
217
+ },
218
+ {
219
+ key: "card-header-wrapper",
220
+ label: "Card Header Wrapper",
221
+ field_interface: "BoxWidget",
222
+ // Layout grouping – no hint needed
223
+ },
224
+ {
225
+ key: "card-header",
226
+ label: "Card Header",
227
+ field_interface: "BoxWidget",
228
+ // Layout grouping – no hint needed
229
+ },
230
+ {
231
+ key: "card-reading-time-wrapper",
232
+ label: "Card Reading Time Wrapper",
233
+ field_interface: "BoxWidget",
234
+ // Layout only – no hint needed
235
+ },
236
+ {
237
+ key: "reading-time-icon",
238
+ label: "Reading Time Icon",
239
+ field_interface: "IconWidget",
240
+ hint: {
241
+ prompt_description:
242
+ "Small icon placed next to the blog reading time, visually indicating time (e.g., clock or stopwatch). Minimalistic style preferred.",
243
+ orientation: "square",
244
+ size: "icon",
245
+ usecase: "icon",
246
+ },
247
+ },
248
+ {
249
+ key: "reading-time",
250
+ label: "Reading Time",
251
+ field_interface: "TypographyWidget",
252
+ hint: {
253
+ prompt_description:
254
+ "Automatically populated from blog data. Styling remains configurable.",
255
+ usecase: "reading_time",
256
+ min_characters: 6,
257
+ max_characters: 15,
258
+ },
259
+ },
260
+ {
261
+ key: "header-icon",
262
+ label: "Header Icon",
263
+ field_interface: "IconWidget",
264
+ hint: {
265
+ prompt_description:
266
+ "Small icon visually indicating the blog type or category next to the blog type text, such as a newspaper or tag. Should be stylish, clear, and monochrome if possible.",
267
+ orientation: "square",
268
+ size: "icon",
269
+ usecase: "icon",
270
+ },
271
+ },
272
+ {
273
+ key: "publish-date",
274
+ label: "Publish Date",
275
+ field_interface: "TypographyWidget",
276
+ hint: {
277
+ prompt_description:
278
+ "Automatically populated from blog published_at date. Styling remains configurable.",
279
+ usecase: "date",
280
+ min_characters: 10,
281
+ max_characters: 27,
282
+ },
283
+ },
284
+ {
285
+ key: "card-content-wrapper",
286
+ label: "Card Content Wrapper",
287
+ field_interface: "BoxWidget",
288
+ },
289
+ {
290
+ key: "title",
291
+ label: "Title",
292
+ field_interface: "HeadingWidget",
293
+ hint: {
294
+ prompt_description:
295
+ "Automatically populated from blog title. Styling remains configurable.",
296
+ usecase: "title",
297
+ min_characters: 28,
298
+ max_characters: 60,
299
+ },
300
+ },
301
+ {
302
+ key: "description",
303
+ label: "Description",
304
+ field_interface: "TypographyWidget",
305
+ hint: {
306
+ prompt_description:
307
+ "Automatically populated from blog excerpt. Styling remains configurable.",
308
+ usecase: "description",
309
+ min_characters: 60,
310
+ max_characters: 130,
311
+ },
312
+ },
313
+ {
314
+ key: "card-footer",
315
+ label: "Card Footer",
316
+ field_interface: "BoxWidget",
317
+ // Layout only – no hint needed
318
+ },
319
+ {
320
+ key: "card-author",
321
+ label: "Card Author",
322
+ field_interface: "BoxWidget",
323
+ // Layout only – no hint needed
324
+ },
325
+ {
326
+ key: "author-image",
327
+ label: "Author Image",
328
+ field_interface: "IconWidget",
329
+ hint: {
330
+ prompt_description:
331
+ "Circular avatar image of the blog post author. Shows a headshot with a neutral background that is easily identifiable at a small size.",
332
+ orientation: "square",
333
+ size: "icon",
334
+ usecase: "avatar",
335
+ },
336
+ },
337
+ {
338
+ key: "author-info-wrapper",
339
+ label: "Author Info Wrapper",
340
+ field_interface: "BoxWidget",
341
+ // Layout only – no hint needed
342
+ },
343
+ {
344
+ key: "author-name",
345
+ label: "Author Name",
346
+ field_interface: "HeadingWidget",
347
+ hint: {
348
+ prompt_description:
349
+ "Automatically populated from blog author data. Styling remains configurable.",
350
+ usecase: "author",
351
+ min_characters: 5,
352
+ max_characters: 25,
353
+ },
354
+ },
355
+ {
356
+ key: "author-description",
357
+ label: "Author Description",
358
+ field_interface: "TypographyWidget",
359
+ },
360
+ {
361
+ key: "category_wrapper",
362
+ label: "Category Wrapper",
363
+ field_interface: "BoxWidget",
364
+ // No hint needed: layout only
365
+ },
366
+ {
367
+ key: "category_icon",
368
+ label: "Category Icon",
369
+ field_interface: "IconWidget",
370
+ hint: {
371
+ prompt_description:
372
+ "Small icon representing time or date, displayed next to the category. Should be simple, clear, and easily recognizable at small sizes.",
373
+ size: "icon",
374
+ orientation: "square",
375
+ usecase: "icon",
376
+ },
377
+ },
378
+ {
379
+ key: "category",
380
+ label: "Category",
381
+ field_interface: "TypographyWidget",
382
+ },
383
+ {
384
+ key: "cta",
385
+ label: "CTA",
386
+ field_interface: "ButtonWidget",
387
+ hint: {
388
+ prompt_description:
389
+ "Call-to-action button for manual user interaction. Can be configured to link to blog details or other actions.",
390
+ usecase: "button",
391
+ min_characters: 6,
392
+ max_characters: 16,
393
+ },
394
+ },
395
+ ],
396
+ },
397
+ {
398
+ key: "pagination-wrapper",
399
+ label: "Pagination Wrapper",
400
+ field_interface: "BoxWidget",
401
+ // Layout grouping only – no hint needed
402
+ },
403
+ {
404
+ key: "pagination-left",
405
+ label: "Pagination Left",
406
+ field_interface: "ButtonWidget",
407
+ hint: {
408
+ prompt_description:
409
+ "Pagination control button to navigate to the previous page of blog cards. Keep the label brief, such as 'Previous' or a left arrow. Tone should be neutral and functional.",
410
+ usecase: "button",
411
+ min_characters: 5,
412
+ max_characters: 12,
413
+ },
414
+ },
415
+ {
416
+ key: "pagination-text",
417
+ label: "Pagination text",
418
+ field_interface: "TypographyWidget",
419
+ hint: {
420
+ prompt_description:
421
+ "Displays current and total page number in the paginator, e.g. '1/3' or 'Page 2 of 4'. Should be minimal, clear, and unambiguous.",
422
+ min_characters: 3,
423
+ max_characters: 12,
424
+ },
425
+ },
426
+ {
427
+ key: "pagination-right",
428
+ label: "Pagination Right",
429
+ field_interface: "ButtonWidget",
430
+ hint: {
431
+ prompt_description:
432
+ "Pagination control button to navigate to the next page of blog cards. Should be concise, such as 'Next' or a right arrow. Neutral tone.",
433
+ usecase: "button",
434
+ min_characters: 4,
435
+ max_characters: 8,
436
+ },
437
+ },
438
+ ],
439
+ layouts: [
440
+ {
441
+ key: "default",
442
+ title: "Default",
443
+ styles: {
444
+ layout: {},
445
+ container: {
446
+ display: "flex",
447
+ "flex-direction": "column",
448
+ "row-gap": "7xl",
449
+ tablet: {
450
+ "row-gap": "3xl",
451
+ },
452
+ mobile: {
453
+ "row-gap": "4xl",
454
+ },
455
+ },
456
+ "header-wrapper": {
457
+ display: "flex",
458
+ width: "full",
459
+ "align-items": "center",
460
+ "justify-content": "space-between",
461
+ tablet: {},
462
+ mobile: {
463
+ "row-gap": "2xs",
464
+ "flex-direction": "column",
465
+ "align-items": "center",
466
+ "justify-content": "flex-start",
467
+ },
468
+ },
469
+ header: {
470
+ flex: "1",
471
+ mobile: {
472
+ "text-align": "center",
473
+ },
474
+ },
475
+ "header-ctas_levoGroup": {
476
+ display: "flex",
477
+ "column-gap": "md",
478
+ "align-items": "center",
479
+ },
480
+ "header-ctas": [
481
+ {
482
+ "header-cta": {
483
+ "white-space": "nowrap",
484
+ },
485
+ },
486
+ {
487
+ "header-cta": {
488
+ "white-space": "nowrap",
489
+ },
490
+ },
491
+ ],
492
+ cards_levoGroup: {
493
+ display: "grid",
494
+ "grid-template-columns": "repeat(2, minmax(0, 1fr))",
495
+ "row-gap": "2xl",
496
+ "column-gap": "2xl",
497
+ tablet: {
498
+ "grid-template-columns": "repeat(2, minmax(0, 1fr))",
499
+ "row-gap": "xl",
500
+ "column-gap": "xl",
501
+ },
502
+ mobile: {
503
+ "grid-template-columns": "repeat(1, minmax(0, 1fr))",
504
+ "row-gap": "2xl",
505
+ },
506
+ },
507
+ cards_levoGroupItem: {
508
+ card: {
509
+ display: "flex",
510
+ "flex-direction": "row",
511
+ "row-gap": "xl",
512
+ tablet: {
513
+ "row-gap": "md",
514
+ "flex-direction": "column",
515
+ },
516
+ "border-style": "solid",
517
+ "border-width": "1.5px",
518
+ "border-radius": "xl",
519
+ "padding-top": "base",
520
+ "padding-left": "base",
521
+ "padding-right": "base",
522
+ "padding-bottom": "base",
523
+ "column-gap": "base",
524
+ mobile: {
525
+ "flex-direction": "column",
526
+ },
527
+ "align-items": "stretch",
528
+ "justify-content": "start",
529
+ },
530
+ media: {
531
+ height: "100%",
532
+ width: "40%",
533
+ "object-fit": "cover",
534
+ tablet: {
535
+ width: "100%",
536
+ height: "128px",
537
+ },
538
+ "border-radius": "lg",
539
+ "border-style": "solid",
540
+ "border-width": "1px",
541
+ "border-color": "border",
542
+ },
543
+ "card-info-wrapper": {
544
+ display: "flex",
545
+ width: "full",
546
+ "flex-direction": "column",
547
+ "row-gap": "base",
548
+ tablet: {
549
+ "row-gap": "xs",
550
+ },
551
+ },
552
+ "card-content": {
553
+ display: "flex",
554
+ "flex-direction": "column",
555
+ "row-gap": "xs",
556
+ tablet: {
557
+ "row-gap": "2xs",
558
+ },
559
+ },
560
+ "card-header": {
561
+ display: "flex",
562
+ width: "full",
563
+ "align-items": "center",
564
+ "column-gap": "4xs",
565
+ tablet: {
566
+ "column-gap": "2xs",
567
+ },
568
+ },
569
+ "header-icon": {
570
+ "object-fit": "contain",
571
+ tablet: {
572
+ height: "18px",
573
+ width: "18px",
574
+ },
575
+ height: "18px",
576
+ width: "18px",
577
+ "font-size": "18px",
578
+ },
579
+ title: {
580
+ "font-weight": 600,
581
+ "font-size": "lg",
582
+ display: "-webkit-box",
583
+ "-webkit-line-clamp": "2",
584
+ "-webkit-box-orient": "vertical",
585
+ overflow: "hidden",
586
+ "margin-top": "4xs",
587
+ },
588
+ description: {
589
+ display: "-webkit-box",
590
+ "-webkit-line-clamp": "3",
591
+ "-webkit-box-orient": "vertical",
592
+ overflow: "hidden",
593
+ "font-size": "xs",
594
+ "margin-top": "2xs",
595
+ },
596
+ "card-footer": {
597
+ display: "flex",
598
+ "align-items": "center",
599
+ "column-gap": "md",
600
+ "justify-content": "space-between",
601
+ "padding-left": "none",
602
+ "margin-top": "xs",
603
+ },
604
+ "card-author": {
605
+ display: "flex",
606
+ "align-items": "center",
607
+ "column-gap": "2xs",
608
+ },
609
+ "author-image": {
610
+ height: "24px",
611
+ width: "24px",
612
+ "border-radius": "100%",
613
+ },
614
+ "author-name": {
615
+ "font-size": "xs",
616
+ },
617
+ "card-reading-time-wrapper": {
618
+ display: "flex",
619
+ "align-items": "center",
620
+ "column-gap": "3xs",
621
+ "margin-left": "none",
622
+ },
623
+ "reading-time-icon": {
624
+ height: "16px",
625
+ width: "16px",
626
+ "object-fit": "contain",
627
+ },
628
+ "reading-time": {
629
+ "font-size": "xs",
630
+ },
631
+ cta: {
632
+ display: "none",
633
+ },
634
+ "card-header-wrapper": {
635
+ display: "flex",
636
+ "justify-content": "space-between",
637
+ },
638
+ "publish-date": {
639
+ "font-size": "xs",
640
+ },
641
+ category_wrapper: {
642
+ display: "block",
643
+ "background-color": "brandSecondary",
644
+ "padding-left": "sm",
645
+ "padding-right": "sm",
646
+ "padding-top": "3xs",
647
+ "padding-bottom": "3xs",
648
+ "border-radius": "2xl",
649
+ },
650
+ category: {
651
+ "font-size": "xs",
652
+ color: "brandSecondaryForeground",
653
+ "font-weight": 600,
654
+ },
655
+ "author-description": {
656
+ "font-size": "xs",
657
+ },
658
+ },
659
+ "pagination-wrapper": {
660
+ display: "flex",
661
+ width: "full",
662
+ "justify-content": "center",
663
+ "align-items": "center",
664
+ "column-gap": "md",
665
+ },
666
+ "pagination-left": {},
667
+ "pagination-text": {},
668
+ "pagination-right": {},
669
+ description: {
670
+ mobile: {
671
+ "text-align": "center",
672
+ },
673
+ },
674
+ },
675
+ content: DEFAULT_CONTENT,
676
+ config: {
677
+ header: {
678
+ selectedVariants: {
679
+ Heading_Level: "H3",
680
+ },
681
+ },
682
+ "header-ctas": [
683
+ {
684
+ "header-cta": {
685
+ selectedVariants: {},
686
+ },
687
+ },
688
+ {
689
+ "header-cta": {
690
+ selectedVariants: {
691
+ Button_Variants: "Secondary",
692
+ },
693
+ },
694
+ },
695
+ ],
696
+ cards: Array(8)
697
+ .fill(0)
698
+ .map(() => ({
699
+ "publish-date": {
700
+ selectedVariants: {
701
+ Typography_Variants: "Small",
702
+ },
703
+ },
704
+ title: {
705
+ heading: {
706
+ level: "4",
707
+ },
708
+ selectedVariants: {
709
+ Heading_Level: "H6",
710
+ },
711
+ },
712
+ description: {
713
+ selectedVariants: {
714
+ Typography_Variants: "Small",
715
+ },
716
+ },
717
+ "author-name": {
718
+ selectedVariants: {
719
+ Typography_Variants: "Small",
720
+ },
721
+ },
722
+ "reading-time": {
723
+ selectedVariants: {
724
+ Typography_Variants: "Small",
725
+ },
726
+ },
727
+ category: {
728
+ selectedVariants: {
729
+ Typography_Variants: "Small",
730
+ },
731
+ },
732
+ "author-description": {
733
+ selectedVariants: {
734
+ Typography_Variants: "Small",
735
+ },
736
+ },
737
+ })),
738
+ },
739
+ },
740
+ {
741
+ key: "default-no-border",
742
+ title: "Default No Border",
743
+ styles: {
744
+ layout: {},
745
+ container: {
746
+ display: "flex",
747
+ "flex-direction": "column",
748
+ "row-gap": "7xl",
749
+ tablet: {
750
+ "row-gap": "3xl",
751
+ },
752
+ mobile: {
753
+ "row-gap": "4xl",
754
+ },
755
+ },
756
+ "header-wrapper": {
757
+ display: "flex",
758
+ width: "full",
759
+ "align-items": "center",
760
+ "justify-content": "space-between",
761
+ tablet: {},
762
+ mobile: {
763
+ "row-gap": "2xs",
764
+ "flex-direction": "column",
765
+ "align-items": "center",
766
+ "justify-content": "flex-start",
767
+ },
768
+ },
769
+ header: {
770
+ flex: "1",
771
+ mobile: {
772
+ "text-align": "center",
773
+ },
774
+ },
775
+ "header-ctas_levoGroup": {
776
+ display: "flex",
777
+ "column-gap": "md",
778
+ "align-items": "center",
779
+ },
780
+ "header-ctas": [
781
+ {
782
+ "header-cta": {
783
+ "white-space": "nowrap",
784
+ },
785
+ },
786
+ {
787
+ "header-cta": {
788
+ "white-space": "nowrap",
789
+ },
790
+ },
791
+ ],
792
+ cards_levoGroup: {
793
+ display: "grid",
794
+ "grid-template-columns": "repeat(2, minmax(0, 1fr))",
795
+ "row-gap": "6xl",
796
+ "column-gap": "4xl",
797
+ tablet: {
798
+ "grid-template-columns": "repeat(2, minmax(0, 1fr))",
799
+ "row-gap": "xl",
800
+ "column-gap": "xl",
801
+ },
802
+ mobile: {
803
+ "grid-template-columns": "repeat(1, minmax(0, 1fr))",
804
+ "row-gap": "2xl",
805
+ },
806
+ },
807
+ cards_levoGroupItem: {
808
+ card: {
809
+ display: "flex",
810
+ "flex-direction": "row",
811
+ "row-gap": "xl",
812
+ tablet: {
813
+ "row-gap": "md",
814
+ "flex-direction": "column",
815
+ },
816
+ "border-style": "none",
817
+ "border-width": "0px",
818
+ "border-radius": "xl",
819
+ "padding-top": "none",
820
+ "padding-left": "none",
821
+ "padding-right": "none",
822
+ "padding-bottom": "none",
823
+ "column-gap": "lg",
824
+ mobile: {
825
+ "flex-direction": "column",
826
+ },
827
+ "align-items": "stretch",
828
+ "justify-content": "start",
829
+ },
830
+ media: {
831
+ height: "100%",
832
+ width: "40%",
833
+ "object-fit": "cover",
834
+ tablet: {
835
+ width: "100%",
836
+ height: "128px",
837
+ },
838
+ "border-radius": "lg",
839
+ "border-style": "solid",
840
+ "border-width": "1.5px",
841
+ "border-color": "border",
842
+ },
843
+ "card-info-wrapper": {
844
+ display: "flex",
845
+ width: "full",
846
+ "flex-direction": "column",
847
+ "row-gap": "base",
848
+ tablet: {
849
+ "row-gap": "xs",
850
+ },
851
+ },
852
+ "card-content": {
853
+ display: "flex",
854
+ "flex-direction": "column-reverse",
855
+ "row-gap": "xs",
856
+ tablet: {
857
+ "row-gap": "2xs",
858
+ },
859
+ },
860
+ "card-header": {
861
+ display: "flex",
862
+ width: "full",
863
+ "align-items": "center",
864
+ "column-gap": "4xs",
865
+ tablet: {
866
+ "column-gap": "2xs",
867
+ },
868
+ },
869
+ "header-icon": {
870
+ "object-fit": "contain",
871
+ tablet: {
872
+ height: "18px",
873
+ width: "18px",
874
+ },
875
+ height: "18px",
876
+ width: "18px",
877
+ "font-size": "18px",
878
+ },
879
+ title: {
880
+ "font-weight": 600,
881
+ "font-size": "lg",
882
+ display: "-webkit-box",
883
+ "-webkit-line-clamp": "2",
884
+ "-webkit-box-orient": "vertical",
885
+ overflow: "hidden",
886
+ "margin-top": "4xs",
887
+ },
888
+ description: {
889
+ display: "-webkit-box",
890
+ "-webkit-line-clamp": "3",
891
+ "-webkit-box-orient": "vertical",
892
+ overflow: "hidden",
893
+ "font-size": "xs",
894
+ "margin-top": "2xs",
895
+ },
896
+ "card-footer": {
897
+ display: "none",
898
+ "align-items": "center",
899
+ "column-gap": "md",
900
+ "justify-content": "space-between",
901
+ "padding-left": "none",
902
+ "margin-top": "xs",
903
+ },
904
+ "card-author": {
905
+ display: "flex",
906
+ "align-items": "center",
907
+ "column-gap": "2xs",
908
+ },
909
+ "author-image": {
910
+ height: "24px",
911
+ width: "24px",
912
+ "border-radius": "100%",
913
+ },
914
+ "author-name": {
915
+ "font-size": "xs",
916
+ },
917
+ "card-reading-time-wrapper": {
918
+ display: "flex",
919
+ "align-items": "center",
920
+ "column-gap": "3xs",
921
+ "margin-left": "none",
922
+ },
923
+ "reading-time-icon": {
924
+ height: "16px",
925
+ width: "16px",
926
+ "object-fit": "contain",
927
+ },
928
+ "reading-time": {
929
+ "font-size": "xs",
930
+ },
931
+ cta: {
932
+ display: "none",
933
+ },
934
+ "card-header-wrapper": {
935
+ display: "flex",
936
+ "justify-content": "space-between",
937
+ },
938
+ "publish-date": {
939
+ "font-size": "xs",
940
+ },
941
+ category_wrapper: {
942
+ display: "block",
943
+ "background-color": "brandSecondary",
944
+ "padding-left": "sm",
945
+ "padding-right": "sm",
946
+ "padding-top": "3xs",
947
+ "padding-bottom": "3xs",
948
+ "border-radius": "xl",
949
+ },
950
+ category: {
951
+ "font-size": "xs",
952
+ color: "brandSecondaryForeground",
953
+ },
954
+ "author-description": {
955
+ "font-size": "xs",
956
+ },
957
+ },
958
+ "pagination-wrapper": {
959
+ display: "flex",
960
+ width: "full",
961
+ "justify-content": "center",
962
+ "align-items": "center",
963
+ "column-gap": "md",
964
+ },
965
+ "pagination-left": {},
966
+ "pagination-text": {},
967
+ "pagination-right": {},
968
+ description: {
969
+ mobile: {
970
+ "text-align": "center",
971
+ },
972
+ },
973
+ },
974
+ content: DEFAULT_CONTENT,
975
+ config: {
976
+ header: {
977
+ selectedVariants: {
978
+ Heading_Level: "H3",
979
+ },
980
+ },
981
+ "header-ctas": [
982
+ {
983
+ "header-cta": {
984
+ selectedVariants: {},
985
+ },
986
+ },
987
+ {
988
+ "header-cta": {
989
+ selectedVariants: {
990
+ Button_Variants: "Secondary",
991
+ },
992
+ },
993
+ },
994
+ ],
995
+ cards: Array(8)
996
+ .fill(0)
997
+ .map(() => ({
998
+ "publish-date": {
999
+ selectedVariants: {
1000
+ Typography_Variants: "Small",
1001
+ },
1002
+ },
1003
+ title: {
1004
+ heading: {
1005
+ level: "4",
1006
+ },
1007
+ selectedVariants: {
1008
+ Heading_Level: "H6",
1009
+ },
1010
+ },
1011
+ description: {
1012
+ selectedVariants: {
1013
+ Typography_Variants: "Small",
1014
+ },
1015
+ },
1016
+ "author-name": {
1017
+ selectedVariants: {
1018
+ Typography_Variants: "Small",
1019
+ },
1020
+ },
1021
+ "reading-time": {
1022
+ selectedVariants: {
1023
+ Typography_Variants: "Small",
1024
+ },
1025
+ },
1026
+ category: {
1027
+ selectedVariants: {
1028
+ Typography_Variants: "Small",
1029
+ },
1030
+ },
1031
+ "author-description": {
1032
+ selectedVariants: {
1033
+ Typography_Variants: "Small",
1034
+ },
1035
+ },
1036
+ })),
1037
+ },
1038
+ },
1039
+ ],
1040
+ };