spoko-design-system 1.20.0 → 1.21.1

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 (92) hide show
  1. package/.claude/settings.json +48 -48
  2. package/.github/dependabot.yml +11 -11
  3. package/.github/todo.yml +3 -3
  4. package/.github/workflows/claude.yml +37 -37
  5. package/.github/workflows/code-quality.yml +72 -72
  6. package/.github/workflows/deploy.yml +43 -43
  7. package/.husky/README.md +41 -41
  8. package/.husky/commit-msg +1 -1
  9. package/.husky/pre-commit +40 -40
  10. package/.prettierignore +14 -14
  11. package/.prettierrc +30 -30
  12. package/.stackblitzrc +5 -5
  13. package/.vscode/extensions.json +4 -4
  14. package/.vscode/launch.json +11 -11
  15. package/.vscode/settings.json +21 -21
  16. package/CHANGELOG.md +476 -462
  17. package/CLAUDE.md +268 -268
  18. package/LICENSE +21 -21
  19. package/README.md +303 -303
  20. package/TOOLTIPS.md +236 -236
  21. package/astro.config.mjs +84 -84
  22. package/commitlint.config.js +3 -3
  23. package/dev-dist/sw.js +91 -91
  24. package/dev-dist/workbox-c676b6d3.js +3391 -3391
  25. package/eslint.config.js +70 -70
  26. package/icon.config.ts +348 -348
  27. package/index.ts +78 -78
  28. package/package.json +160 -160
  29. package/public/arrow-bottom.svg +7 -7
  30. package/public/fonts/lg.svg +53 -53
  31. package/public/fonts/vwhead-bold-demo.html +549 -549
  32. package/public/fonts/vwhead-regular-demo.html +549 -549
  33. package/public/fonts/vwtext-bold-demo.html +549 -549
  34. package/public/fonts/vwtext-regular-demo.html +549 -549
  35. package/public/github.svg +3 -3
  36. package/public/grid_dot.svg +4 -4
  37. package/public/linkedin.svg +44 -44
  38. package/public/make-scrollable-code-focusable.js +3 -3
  39. package/public/pagefind.yml +3 -3
  40. package/public/polo.blue.svg +29 -29
  41. package/public/spoko.space.svg +71 -71
  42. package/public/twitter.svg +46 -46
  43. package/renovate.json +6 -6
  44. package/sandbox.config.json +11 -11
  45. package/sonar-project.properties +26 -26
  46. package/src/components/Category/CategoriesCarousel.astro +3 -7
  47. package/src/pages/components/badges.mdx +57 -57
  48. package/src/pages/components/breadcrumbs.mdx +139 -139
  49. package/src/pages/components/buttons.mdx +359 -359
  50. package/src/pages/components/card.mdx +294 -294
  51. package/src/pages/components/carousel.mdx +62 -62
  52. package/src/pages/components/copyright.mdx +42 -42
  53. package/src/pages/components/details-list.mdx +207 -207
  54. package/src/pages/components/features-list.mdx +37 -37
  55. package/src/pages/components/flags.mdx +49 -49
  56. package/src/pages/components/fuck-russia.mdx +39 -39
  57. package/src/pages/components/hand-drive.mdx +78 -78
  58. package/src/pages/components/headline.mdx +337 -337
  59. package/src/pages/components/image.mdx +513 -513
  60. package/src/pages/components/input.mdx +367 -367
  61. package/src/pages/components/jumbotron.mdx +530 -530
  62. package/src/pages/components/modal.mdx +212 -212
  63. package/src/pages/components/post-header.mdx +64 -64
  64. package/src/pages/components/pr-code.mdx +213 -213
  65. package/src/pages/components/product-engine.mdx +418 -418
  66. package/src/pages/components/product-number.mdx +58 -58
  67. package/src/pages/components/product-tile.mdx +51 -51
  68. package/src/pages/components/quote.mdx +33 -33
  69. package/src/pages/components/slimbanner.mdx +260 -260
  70. package/src/pages/components/table.mdx +108 -108
  71. package/src/pages/core/colors.mdx +21 -21
  72. package/src/pages/core/grid.mdx +193 -193
  73. package/src/pages/core/introduction.mdx +77 -77
  74. package/src/pages/core/tooltips.mdx +491 -491
  75. package/src/pages/patterns/introduction.mdx +60 -60
  76. package/src/styles/_variables.scss +70 -70
  77. package/tailwind.config.cjs +8 -8
  78. package/tsconfig.json +28 -28
  79. package/uno-config/index.ts +269 -269
  80. package/uno-config/theme/breakpoints.ts +9 -9
  81. package/uno-config/theme/colors.ts +65 -65
  82. package/uno-config/theme/dimensions.ts +17 -17
  83. package/uno-config/theme/effects.ts +14 -14
  84. package/uno-config/theme/grid.ts +10 -10
  85. package/uno-config/theme/index.ts +26 -26
  86. package/uno-config/theme/shortcuts/buttons.ts +53 -53
  87. package/uno-config/theme/shortcuts/components.ts +124 -124
  88. package/uno-config/theme/shortcuts/index.ts +20 -20
  89. package/uno-config/theme/shortcuts/jumbotron.ts +71 -71
  90. package/uno-config/theme/shortcuts/layout.ts +75 -75
  91. package/uno-config/theme/typography.ts +29 -29
  92. package/uno.config.ts +2 -2
@@ -1,531 +1,531 @@
1
- ---
2
- title: "Jumbotron"
3
- layout: "../../layouts/MainLayout.astro"
4
- ---
5
- import Jumbotron from '../../components/Jumbotron.astro'
6
- import Button from '../../components/Button.vue'
7
-
8
- # Jumbotron
9
-
10
- A Jumbotron indicates a big box for calling extra attention to some special content or information. It provides various layouts through different variants to suit your content presentation needs.
11
-
12
- ## Table of Contents
13
- - [Best Practices](#best-practices)
14
- - [Responsive Behavior](#responsive-behavior)
15
- - [Variants](#variants)
16
- - [Default Variant](#default-variant-classic)
17
- - [Slim Variant](#slim-variant)
18
- - [Hero Variant](#hero-variant)
19
- - [Post Variant](#post-variant-full-overlay)
20
- - [Post Split Variant](#post-split-variant)
21
- - [Component API](#component-api)
22
- - [Accessibility](#accessibility)
23
-
24
- ## Best Practices
25
- - Use the `default` variant for main content sections and general announcements
26
- - Use the `hero` variant for page headers with background images and important messaging
27
- - Use the `post` variant for blog posts and articles with full-width image overlays
28
- - Use the `post-split` variant when you need to display image alongside content
29
- - Consider using `slim` prop for less important or secondary sections
30
-
31
- ## Responsive Behavior
32
- The component adapts to different screen sizes:
33
- - On mobile: Stacks content vertically, adjusts font sizes and padding
34
- - On tablet: Optimizes layout and spacing
35
- - On desktop: Full layout with optimal content width and spacing
36
-
37
- ## Default Variant (Classic)
38
- The default variant is ideal for primary content sections. It supports custom intro, subtitle, and CTA content with centered layout.
39
-
40
- <div class="component-preview !block">
41
- <Jumbotron
42
- variant="default"
43
- title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
44
- >
45
- <p slot="subtitle"
46
- class="mt-3 text-base text-gray-200 sm:mt-5 text-lg md:text-xl lg:mx-0 md:mt-5"
47
- >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
48
- <Fragment slot="cta-content">
49
- <Button primary rounded href="#" title="short text">
50
- Read More
51
- </Button>
52
- </Fragment>
53
- </Jumbotron>
54
- </div>
55
-
56
- ```js
57
- <Jumbotron
58
- variant="default"
59
- title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
60
- >
61
- <p slot="subtitle"
62
- class="mt-3 text-base text-gray-200 sm:mt-5 text-lg md:text-xl lg:mx-0 md:mt-5"
63
- >
64
- Nunc posuere massa eget turpis laoreet ultrices eget vel massa.
65
- </p>
66
- <Fragment slot="cta-content">
67
- <Button primary rounded href="#" title="short text">
68
- Read More
69
- </Button>
70
- </Fragment>
71
- </Jumbotron>
72
- ```
73
-
74
- ## Slim Variant
75
- A more compact version of the default variant, useful for secondary content sections or when vertical space is limited.
76
-
77
- <div class="component-preview">
78
- <Jumbotron
79
- variant="default"
80
- slim
81
- title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
82
- >
83
- <p slot="subtitle"
84
- class="mt-5 sm:mt-8 sm:flex sm:justify-center"
85
- >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
86
- </Jumbotron>
87
- </div>
88
-
89
- ```js
90
- <Jumbotron
91
- variant="default"
92
- slim
93
- title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
94
- >
95
- <p slot="subtitle"
96
- class="mt-5 sm:mt-8 sm:flex sm:justify-center"
97
- >
98
- Nunc posuere massa eget turpis laoreet ultrices eget vel massa.
99
- </p>
100
- </Jumbotron>
101
- ```
102
-
103
- ## Hero Variant
104
- Perfect for page headers and key sections that need visual impact. Features a background image with gradient overlay and optional description and info text.
105
-
106
- <div class="component-preview">
107
- <Jumbotron
108
- variant="hero"
109
- title="<b>Main Hero</b> Title"
110
- description="Detailed description of the hero section goes here."
111
- info="<span>Additional</span> information can be displayed here"
112
- image="https://img.freepik.com/free-photo/nature-beauty-tropical-rainforest-adventure-tranquility-freshness-generated-by-artificial-intellingence_25030-62539.jpg?size=1920&ext=jpg"
113
- />
114
- </div>
115
-
116
- ```js
117
- <Jumbotron
118
- variant="hero"
119
- title="<b>Main Hero</b> Title"
120
- description="Detailed description of the hero section goes here."
121
- info="<span>Additional</span> information can be displayed here"
122
- image="https://img.freepik.com/free-photo/nature-beauty-tropical-rainforest-adventure-tranquility-freshness-generated-by-artificial-intellingence_25030-62539.jpg?size=1920&ext=jpg"
123
- />
124
- ```
125
-
126
- ### Hero Variant without image
127
- When used without an image, the hero variant provides a clean, simple header with a solid background color.
128
-
129
- <div class="component-preview">
130
- <Jumbotron
131
- variant="hero"
132
- title="<b>Simple Hero</b> Title"
133
- description="A clean and simple hero section without background image."
134
- info="Perfect for text-focused content sections"
135
- />
136
- </div>
137
-
138
- ```js
139
- <Jumbotron
140
- variant="hero"
141
- title="<b>Simple Hero</b> Title"
142
- description="A clean and simple hero section without background image."
143
- info="Perfect for text-focused content sections"
144
- />
145
- ```
146
-
147
- ### Hero Variant with Different Backgrounds
148
- Hero variant supports different background classes to match your design needs.
149
-
150
- <div class="component-preview">
151
- <Jumbotron
152
- variant="hero"
153
- title="<b>Blue Darker Background</b> (Default)"
154
- description="Uses the default bg-blue-darker background"
155
- />
156
- </div>
157
- ```js
158
- <div class="component-preview">
159
- <Jumbotron
160
- variant="hero"
161
- title="<b>Blue Darker Background</b> (Default)"
162
- description="Uses the default bg-blue-darker background"
163
- />
164
- </div>
165
- ```
166
- <br/>
167
-
168
- <div class="component-preview">
169
- <Jumbotron
170
- variant="hero"
171
- title="<b>Blue Darkest Background</b>"
172
- description="Uses blue-darkest background"
173
- backgroundClass="bg-blue-darkest"
174
- />
175
- </div>
176
- ```js
177
- <div class="component-preview">
178
- <Jumbotron
179
- variant="hero"
180
- title="<b>Blue Darkest Background</b>"
181
- description="Uses blue-darkest background"
182
- backgroundClass="bg-blue-darkest"
183
- />
184
- </div>
185
- ```
186
- <br/>
187
-
188
- <div class="component-preview">
189
- <Jumbotron
190
- variant="hero"
191
- title="<b>Accent Background</b>"
192
- description="Uses accent-darker background"
193
- backgroundClass="bg-accent-darker"
194
- />
195
- </div>
196
-
197
- ```js
198
- <div class="component-preview">
199
- <Jumbotron
200
- variant="hero"
201
- title="<b>Accent Background</b>"
202
- description="Uses accent-darker background"
203
- backgroundClass="bg-accent-darker"
204
- />
205
- </div>
206
- ```
207
- <br/>
208
-
209
- <div class="component-preview">
210
- <Jumbotron
211
- variant="hero"
212
- title="<b>Gradient Background</b>"
213
- description="Uses custom gradient background"
214
- backgroundClass="bg-vw"
215
- />
216
- </div>
217
- ```js
218
- <div class="component-preview">
219
- <Jumbotron
220
- variant="hero"
221
- title="<b>Gradient Background</b>"
222
- description="Uses custom gradient background"
223
- backgroundClass="bg-vw"
224
- />
225
- </div>
226
-
227
-
228
- ## Post Variant (Full Overlay)
229
- Designed for blog posts and articles, featuring a full-width image overlay with metadata support for author, date, and categories.
230
-
231
- <div class="component-preview">
232
- <Jumbotron
233
- variant="post"
234
- title="Blog Post Title"
235
- image="https://img.freepik.com/free-photo/nature-beauty-tropical-rainforest-adventure-tranquility-freshness-generated-by-artificial-intellingence_25030-62539.jpg?size=1920&ext=jpg"
236
- categories={[
237
- { name: 'Technology', link: '#' },
238
- { name: 'Design', link: '#' }
239
- ]}
240
- author={{
241
- firstName: "John",
242
- name: "John Doe"
243
- }}
244
- date="2024-02-12"
245
- />
246
- </div>
247
-
248
- ```js
249
- <Jumbotron
250
- variant="post"
251
- title="Blog Post Title"
252
- image="https://img.freepik.com/free-photo/nature-beauty-tropical-rainforest-adventure-tranquility-freshness-generated-by-artificial-intellingence_25030-62539.jpg?size=1920&ext=jpg"
253
- categories={[
254
- { name: 'Technology', link: '#' },
255
- { name: 'Design', link: '#' }
256
- ]}
257
- author={{
258
- firstName: "John",
259
- name: "John Doe"
260
- }}
261
- date="2024-02-12"
262
- />
263
- ```
264
-
265
- ## Post Split Variant
266
- A two-column layout variant for posts where image and content need equal emphasis. Great for featured articles or important announcements.
267
-
268
- <div class="component-preview pb-0 !block">
269
- <Jumbotron
270
- variant="post-split"
271
- title="<b>Formatted</b> Blog Post Title <small>Lorem Ipsum</small>"
272
- image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
273
- categories={[
274
- { name: 'Technology', link: '#' },
275
- { name: 'Design', link: '#' }
276
- ]}
277
- author={{
278
- firstName: "John",
279
- name: "John Doe"
280
- }}
281
- date="2024-02-12"
282
- />
283
- </div>
284
-
285
- ```js
286
- <Jumbotron
287
- variant="post-split"
288
- title="<b>Formatted</b> Blog Post Title <small>Lorem Ipsum</small>"
289
- image="path/to/image.jpg"
290
- categories={[
291
- { name: 'Technology', link: '#' },
292
- { name: 'Design', link: '#' }
293
- ]}
294
- author={{
295
- firstName: "John",
296
- name: "John Doe"
297
- }}
298
- date="2024-02-12"
299
- />
300
- ```
301
-
302
- ### Post Split with Custom Image Dimensions
303
- You can customize image dimensions using `imageWidth` and `imageHeight` props. This is useful for category pages with different aspect ratios (e.g., 3:2 instead of default 16:9).
304
-
305
- ```js
306
- <Jumbotron
307
- variant="post-split"
308
- title="Category Title"
309
- image="path/to/image.jpg"
310
- imageWidth={600}
311
- imageHeight={400}
312
- />
313
- ```
314
-
315
- ### Post Split Full Width
316
- Use `fullWidth` prop to make the jumbotron span the full viewport width, useful for archive/category pages.
317
-
318
- ```js
319
- <Jumbotron
320
- variant="post-split"
321
- title="Full Width Category"
322
- image="path/to/image.jpg"
323
- imageWidth={600}
324
- imageHeight={400}
325
- fullWidth
326
- />
327
- ```
328
-
329
- ### Post Split with Responsive Image Sizing
330
- Use the `imageClass` prop to control image dimensions with Tailwind/UnoCSS classes. This allows responsive sizing at different breakpoints.
331
-
332
- ```js
333
- // Limit image width on desktop
334
- <Jumbotron
335
- variant="post-split"
336
- title="Post with Custom Image Size"
337
- image="path/to/image.jpg"
338
- imageClass="max-w-100 lg:max-w-80"
339
- />
340
-
341
- // Limit both width and height
342
- <Jumbotron
343
- variant="post-split"
344
- title="Category with Small Image"
345
- image="path/to/image.jpg"
346
- imageClass="max-w-75 max-h-50"
347
- />
348
-
349
- // Different sizes at breakpoints
350
- <Jumbotron
351
- variant="post-split"
352
- title="Responsive Image"
353
- image="path/to/image.jpg"
354
- imageClass="max-w-full md:max-w-80 lg:max-w-100"
355
- />
356
- ```
357
-
358
- ### Post Split Slim Version
359
- Use the `slim` prop to reduce vertical padding and image height. Useful for secondary content or when vertical space is limited.
360
-
361
- <div class="component-preview pb-0 !block">
362
- <Jumbotron
363
- variant="post-split"
364
- title="Slim Post Split"
365
- image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
366
- slim
367
- />
368
- </div>
369
-
370
- ```js
371
- <Jumbotron
372
- variant="post-split"
373
- title="Slim Post Split"
374
- image="path/to/image.jpg"
375
- slim
376
- />
377
- ```
378
-
379
- ### Post Split with Column Split Ratio
380
- Use the `split` prop to control the column width ratio between text and image on desktop. Available options: `equal` (default 50/50), `wide` (2/3 text + 1/3 image).
381
-
382
- <div class="component-preview pb-0 !block">
383
- <Jumbotron
384
- variant="post-split"
385
- title="Wide Split (2/3 + 1/3)"
386
- image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
387
- split="wide"
388
- />
389
- </div>
390
-
391
- ```js
392
- <Jumbotron
393
- variant="post-split"
394
- title="Wide Split (2/3 + 1/3)"
395
- image="path/to/image.jpg"
396
- split="wide"
397
- />
398
- ```
399
-
400
- ### Post Split Slim with Wide Split
401
- Combine `slim` and `split="wide"` for a compact layout with 2/3 + 1/3 column ratio.
402
-
403
- <div class="component-preview pb-0 !block">
404
- <Jumbotron
405
- variant="post-split"
406
- title="Slim Wide Split"
407
- image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
408
- slim
409
- split="wide"
410
- />
411
- </div>
412
-
413
- ```js
414
- <Jumbotron
415
- variant="post-split"
416
- title="Slim Wide Split"
417
- image="path/to/image.jpg"
418
- slim
419
- split="wide"
420
- />
421
- ```
422
-
423
- ### Post Split with Text Alignment
424
- Use the `align` prop to control text alignment within the content area. Available options: `left` (default), `center`, `right`.
425
-
426
- <div class="component-preview pb-0 !block">
427
- <Jumbotron
428
- variant="post-split"
429
- title="Left Aligned Content"
430
- image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
431
- align="left"
432
- />
433
- </div>
434
-
435
- ```js
436
- <Jumbotron
437
- variant="post-split"
438
- title="Left Aligned Content"
439
- image="path/to/image.jpg"
440
- align="left"
441
- />
442
- ```
443
-
444
- <div class="component-preview pb-0 !block">
445
- <Jumbotron
446
- variant="post-split"
447
- title="Center Aligned Content"
448
- image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
449
- align="center"
450
- />
451
- </div>
452
-
453
- ```js
454
- <Jumbotron
455
- variant="post-split"
456
- title="Center Aligned Content"
457
- image="path/to/image.jpg"
458
- align="center"
459
- />
460
- ```
461
-
462
- ## Custom Intro Slot Example
463
- Shows how to fully customize the header section using the intro slot. Useful for complex layouts or custom styling.
464
-
465
- <div class="component-preview">
466
- <Jumbotron variant="default" slim>
467
- <h2 slot="intro" class="text-3xl text-white sm:(text-3xl pt-0) md:text-4xl lg:text-5xl">
468
- Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.
469
- </h2>
470
- <p slot="subtitle"
471
- class="mt-5 sm:mt-8 sm:flex sm:justify-center"
472
- >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
473
- </Jumbotron>
474
- </div>
475
-
476
- ```js
477
- <Jumbotron variant="default" slim>
478
- <h2 slot="intro" class="text-3xl text-white sm:(text-3xl pt-0) md:text-4xl lg:text-5xl">
479
- Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.
480
- </h2>
481
- <p slot="subtitle"
482
- class="mt-5 sm:mt-8 sm:flex sm:justify-center"
483
- >
484
- Nunc posuere massa eget turpis laoreet ultrices eget vel massa.
485
- </p>
486
- </Jumbotron>
487
- ```
488
-
489
- ## Component API
490
-
491
- ### Common Props
492
- - `variant`: Layout variant ('default' | 'hero' | 'post' | 'post-split')
493
- - default: 'default'
494
- - `title`: Main heading text. Supports HTML markup for styling.
495
- - `image`: Image URL (required for hero, post and post-split variants)
496
- - `slim`: Reduces vertical padding and height (works with default, hero, and post-split variants)
497
-
498
- ### Default & Hero Props
499
- - `description`: Secondary text below title (hero variant only)
500
- - `info`: Additional information text (hero variant only)
501
-
502
- ### Post Variants Props
503
- - `date`: Publication date string
504
- - `author`: Author information object
505
- - `firstName`: Author's first name (used in title attribute)
506
- - `name`: Full author name (displayed)
507
- - `categories`: Array of category objects for post categorization
508
- - `name`: Category display name
509
- - `uri`: Category link URL
510
-
511
- ### Post Split Props
512
- - `imageWidth`: Custom image width in pixels (default: 768)
513
- - `imageHeight`: Custom image height in pixels (default: 432)
514
- - `imageClass`: Tailwind/UnoCSS classes for responsive image sizing (e.g., `max-w-100 lg:max-w-80`)
515
- - `description`: Optional description text below the title
516
- - `fullWidth`: When true, adds `full-width-block` class for full viewport width
517
- - `align`: Text alignment within content area ('left' | 'center' | 'right', default: 'left')
518
- - `split`: Column width ratio on desktop ('equal' | 'wide', default: 'equal')
519
- - `equal`: 50/50 split between text and image
520
- - `wide`: 2/3 text + 1/3 image split
521
-
522
- ### Slots
523
- - `intro`: Replaces the default title with custom content. Useful for complex headings or custom markup.
524
- - `subtitle`: Additional content below the title. Supports markdown and HTML.
525
- - `cta-content`: Call to action content (buttons, links etc.) - wrapped in centered container.
526
-
527
- ## Accessibility
528
- - Use semantic HTML markup in slots
529
- - Ensure proper contrast for text over background images
530
- - Provide meaningful alt text for images
1
+ ---
2
+ title: "Jumbotron"
3
+ layout: "../../layouts/MainLayout.astro"
4
+ ---
5
+ import Jumbotron from '../../components/Jumbotron.astro'
6
+ import Button from '../../components/Button.vue'
7
+
8
+ # Jumbotron
9
+
10
+ A Jumbotron indicates a big box for calling extra attention to some special content or information. It provides various layouts through different variants to suit your content presentation needs.
11
+
12
+ ## Table of Contents
13
+ - [Best Practices](#best-practices)
14
+ - [Responsive Behavior](#responsive-behavior)
15
+ - [Variants](#variants)
16
+ - [Default Variant](#default-variant-classic)
17
+ - [Slim Variant](#slim-variant)
18
+ - [Hero Variant](#hero-variant)
19
+ - [Post Variant](#post-variant-full-overlay)
20
+ - [Post Split Variant](#post-split-variant)
21
+ - [Component API](#component-api)
22
+ - [Accessibility](#accessibility)
23
+
24
+ ## Best Practices
25
+ - Use the `default` variant for main content sections and general announcements
26
+ - Use the `hero` variant for page headers with background images and important messaging
27
+ - Use the `post` variant for blog posts and articles with full-width image overlays
28
+ - Use the `post-split` variant when you need to display image alongside content
29
+ - Consider using `slim` prop for less important or secondary sections
30
+
31
+ ## Responsive Behavior
32
+ The component adapts to different screen sizes:
33
+ - On mobile: Stacks content vertically, adjusts font sizes and padding
34
+ - On tablet: Optimizes layout and spacing
35
+ - On desktop: Full layout with optimal content width and spacing
36
+
37
+ ## Default Variant (Classic)
38
+ The default variant is ideal for primary content sections. It supports custom intro, subtitle, and CTA content with centered layout.
39
+
40
+ <div class="component-preview !block">
41
+ <Jumbotron
42
+ variant="default"
43
+ title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
44
+ >
45
+ <p slot="subtitle"
46
+ class="mt-3 text-base text-gray-200 sm:mt-5 text-lg md:text-xl lg:mx-0 md:mt-5"
47
+ >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
48
+ <Fragment slot="cta-content">
49
+ <Button primary rounded href="#" title="short text">
50
+ Read More
51
+ </Button>
52
+ </Fragment>
53
+ </Jumbotron>
54
+ </div>
55
+
56
+ ```js
57
+ <Jumbotron
58
+ variant="default"
59
+ title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
60
+ >
61
+ <p slot="subtitle"
62
+ class="mt-3 text-base text-gray-200 sm:mt-5 text-lg md:text-xl lg:mx-0 md:mt-5"
63
+ >
64
+ Nunc posuere massa eget turpis laoreet ultrices eget vel massa.
65
+ </p>
66
+ <Fragment slot="cta-content">
67
+ <Button primary rounded href="#" title="short text">
68
+ Read More
69
+ </Button>
70
+ </Fragment>
71
+ </Jumbotron>
72
+ ```
73
+
74
+ ## Slim Variant
75
+ A more compact version of the default variant, useful for secondary content sections or when vertical space is limited.
76
+
77
+ <div class="component-preview">
78
+ <Jumbotron
79
+ variant="default"
80
+ slim
81
+ title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
82
+ >
83
+ <p slot="subtitle"
84
+ class="mt-5 sm:mt-8 sm:flex sm:justify-center"
85
+ >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
86
+ </Jumbotron>
87
+ </div>
88
+
89
+ ```js
90
+ <Jumbotron
91
+ variant="default"
92
+ slim
93
+ title={`Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.`}
94
+ >
95
+ <p slot="subtitle"
96
+ class="mt-5 sm:mt-8 sm:flex sm:justify-center"
97
+ >
98
+ Nunc posuere massa eget turpis laoreet ultrices eget vel massa.
99
+ </p>
100
+ </Jumbotron>
101
+ ```
102
+
103
+ ## Hero Variant
104
+ Perfect for page headers and key sections that need visual impact. Features a background image with gradient overlay and optional description and info text.
105
+
106
+ <div class="component-preview">
107
+ <Jumbotron
108
+ variant="hero"
109
+ title="<b>Main Hero</b> Title"
110
+ description="Detailed description of the hero section goes here."
111
+ info="<span>Additional</span> information can be displayed here"
112
+ image="https://img.freepik.com/free-photo/nature-beauty-tropical-rainforest-adventure-tranquility-freshness-generated-by-artificial-intellingence_25030-62539.jpg?size=1920&ext=jpg"
113
+ />
114
+ </div>
115
+
116
+ ```js
117
+ <Jumbotron
118
+ variant="hero"
119
+ title="<b>Main Hero</b> Title"
120
+ description="Detailed description of the hero section goes here."
121
+ info="<span>Additional</span> information can be displayed here"
122
+ image="https://img.freepik.com/free-photo/nature-beauty-tropical-rainforest-adventure-tranquility-freshness-generated-by-artificial-intellingence_25030-62539.jpg?size=1920&ext=jpg"
123
+ />
124
+ ```
125
+
126
+ ### Hero Variant without image
127
+ When used without an image, the hero variant provides a clean, simple header with a solid background color.
128
+
129
+ <div class="component-preview">
130
+ <Jumbotron
131
+ variant="hero"
132
+ title="<b>Simple Hero</b> Title"
133
+ description="A clean and simple hero section without background image."
134
+ info="Perfect for text-focused content sections"
135
+ />
136
+ </div>
137
+
138
+ ```js
139
+ <Jumbotron
140
+ variant="hero"
141
+ title="<b>Simple Hero</b> Title"
142
+ description="A clean and simple hero section without background image."
143
+ info="Perfect for text-focused content sections"
144
+ />
145
+ ```
146
+
147
+ ### Hero Variant with Different Backgrounds
148
+ Hero variant supports different background classes to match your design needs.
149
+
150
+ <div class="component-preview">
151
+ <Jumbotron
152
+ variant="hero"
153
+ title="<b>Blue Darker Background</b> (Default)"
154
+ description="Uses the default bg-blue-darker background"
155
+ />
156
+ </div>
157
+ ```js
158
+ <div class="component-preview">
159
+ <Jumbotron
160
+ variant="hero"
161
+ title="<b>Blue Darker Background</b> (Default)"
162
+ description="Uses the default bg-blue-darker background"
163
+ />
164
+ </div>
165
+ ```
166
+ <br/>
167
+
168
+ <div class="component-preview">
169
+ <Jumbotron
170
+ variant="hero"
171
+ title="<b>Blue Darkest Background</b>"
172
+ description="Uses blue-darkest background"
173
+ backgroundClass="bg-blue-darkest"
174
+ />
175
+ </div>
176
+ ```js
177
+ <div class="component-preview">
178
+ <Jumbotron
179
+ variant="hero"
180
+ title="<b>Blue Darkest Background</b>"
181
+ description="Uses blue-darkest background"
182
+ backgroundClass="bg-blue-darkest"
183
+ />
184
+ </div>
185
+ ```
186
+ <br/>
187
+
188
+ <div class="component-preview">
189
+ <Jumbotron
190
+ variant="hero"
191
+ title="<b>Accent Background</b>"
192
+ description="Uses accent-darker background"
193
+ backgroundClass="bg-accent-darker"
194
+ />
195
+ </div>
196
+
197
+ ```js
198
+ <div class="component-preview">
199
+ <Jumbotron
200
+ variant="hero"
201
+ title="<b>Accent Background</b>"
202
+ description="Uses accent-darker background"
203
+ backgroundClass="bg-accent-darker"
204
+ />
205
+ </div>
206
+ ```
207
+ <br/>
208
+
209
+ <div class="component-preview">
210
+ <Jumbotron
211
+ variant="hero"
212
+ title="<b>Gradient Background</b>"
213
+ description="Uses custom gradient background"
214
+ backgroundClass="bg-vw"
215
+ />
216
+ </div>
217
+ ```js
218
+ <div class="component-preview">
219
+ <Jumbotron
220
+ variant="hero"
221
+ title="<b>Gradient Background</b>"
222
+ description="Uses custom gradient background"
223
+ backgroundClass="bg-vw"
224
+ />
225
+ </div>
226
+
227
+
228
+ ## Post Variant (Full Overlay)
229
+ Designed for blog posts and articles, featuring a full-width image overlay with metadata support for author, date, and categories.
230
+
231
+ <div class="component-preview">
232
+ <Jumbotron
233
+ variant="post"
234
+ title="Blog Post Title"
235
+ image="https://img.freepik.com/free-photo/nature-beauty-tropical-rainforest-adventure-tranquility-freshness-generated-by-artificial-intellingence_25030-62539.jpg?size=1920&ext=jpg"
236
+ categories={[
237
+ { name: 'Technology', link: '#' },
238
+ { name: 'Design', link: '#' }
239
+ ]}
240
+ author={{
241
+ firstName: "John",
242
+ name: "John Doe"
243
+ }}
244
+ date="2024-02-12"
245
+ />
246
+ </div>
247
+
248
+ ```js
249
+ <Jumbotron
250
+ variant="post"
251
+ title="Blog Post Title"
252
+ image="https://img.freepik.com/free-photo/nature-beauty-tropical-rainforest-adventure-tranquility-freshness-generated-by-artificial-intellingence_25030-62539.jpg?size=1920&ext=jpg"
253
+ categories={[
254
+ { name: 'Technology', link: '#' },
255
+ { name: 'Design', link: '#' }
256
+ ]}
257
+ author={{
258
+ firstName: "John",
259
+ name: "John Doe"
260
+ }}
261
+ date="2024-02-12"
262
+ />
263
+ ```
264
+
265
+ ## Post Split Variant
266
+ A two-column layout variant for posts where image and content need equal emphasis. Great for featured articles or important announcements.
267
+
268
+ <div class="component-preview pb-0 !block">
269
+ <Jumbotron
270
+ variant="post-split"
271
+ title="<b>Formatted</b> Blog Post Title <small>Lorem Ipsum</small>"
272
+ image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
273
+ categories={[
274
+ { name: 'Technology', link: '#' },
275
+ { name: 'Design', link: '#' }
276
+ ]}
277
+ author={{
278
+ firstName: "John",
279
+ name: "John Doe"
280
+ }}
281
+ date="2024-02-12"
282
+ />
283
+ </div>
284
+
285
+ ```js
286
+ <Jumbotron
287
+ variant="post-split"
288
+ title="<b>Formatted</b> Blog Post Title <small>Lorem Ipsum</small>"
289
+ image="path/to/image.jpg"
290
+ categories={[
291
+ { name: 'Technology', link: '#' },
292
+ { name: 'Design', link: '#' }
293
+ ]}
294
+ author={{
295
+ firstName: "John",
296
+ name: "John Doe"
297
+ }}
298
+ date="2024-02-12"
299
+ />
300
+ ```
301
+
302
+ ### Post Split with Custom Image Dimensions
303
+ You can customize image dimensions using `imageWidth` and `imageHeight` props. This is useful for category pages with different aspect ratios (e.g., 3:2 instead of default 16:9).
304
+
305
+ ```js
306
+ <Jumbotron
307
+ variant="post-split"
308
+ title="Category Title"
309
+ image="path/to/image.jpg"
310
+ imageWidth={600}
311
+ imageHeight={400}
312
+ />
313
+ ```
314
+
315
+ ### Post Split Full Width
316
+ Use `fullWidth` prop to make the jumbotron span the full viewport width, useful for archive/category pages.
317
+
318
+ ```js
319
+ <Jumbotron
320
+ variant="post-split"
321
+ title="Full Width Category"
322
+ image="path/to/image.jpg"
323
+ imageWidth={600}
324
+ imageHeight={400}
325
+ fullWidth
326
+ />
327
+ ```
328
+
329
+ ### Post Split with Responsive Image Sizing
330
+ Use the `imageClass` prop to control image dimensions with Tailwind/UnoCSS classes. This allows responsive sizing at different breakpoints.
331
+
332
+ ```js
333
+ // Limit image width on desktop
334
+ <Jumbotron
335
+ variant="post-split"
336
+ title="Post with Custom Image Size"
337
+ image="path/to/image.jpg"
338
+ imageClass="max-w-100 lg:max-w-80"
339
+ />
340
+
341
+ // Limit both width and height
342
+ <Jumbotron
343
+ variant="post-split"
344
+ title="Category with Small Image"
345
+ image="path/to/image.jpg"
346
+ imageClass="max-w-75 max-h-50"
347
+ />
348
+
349
+ // Different sizes at breakpoints
350
+ <Jumbotron
351
+ variant="post-split"
352
+ title="Responsive Image"
353
+ image="path/to/image.jpg"
354
+ imageClass="max-w-full md:max-w-80 lg:max-w-100"
355
+ />
356
+ ```
357
+
358
+ ### Post Split Slim Version
359
+ Use the `slim` prop to reduce vertical padding and image height. Useful for secondary content or when vertical space is limited.
360
+
361
+ <div class="component-preview pb-0 !block">
362
+ <Jumbotron
363
+ variant="post-split"
364
+ title="Slim Post Split"
365
+ image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
366
+ slim
367
+ />
368
+ </div>
369
+
370
+ ```js
371
+ <Jumbotron
372
+ variant="post-split"
373
+ title="Slim Post Split"
374
+ image="path/to/image.jpg"
375
+ slim
376
+ />
377
+ ```
378
+
379
+ ### Post Split with Column Split Ratio
380
+ Use the `split` prop to control the column width ratio between text and image on desktop. Available options: `equal` (default 50/50), `wide` (2/3 text + 1/3 image).
381
+
382
+ <div class="component-preview pb-0 !block">
383
+ <Jumbotron
384
+ variant="post-split"
385
+ title="Wide Split (2/3 + 1/3)"
386
+ image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
387
+ split="wide"
388
+ />
389
+ </div>
390
+
391
+ ```js
392
+ <Jumbotron
393
+ variant="post-split"
394
+ title="Wide Split (2/3 + 1/3)"
395
+ image="path/to/image.jpg"
396
+ split="wide"
397
+ />
398
+ ```
399
+
400
+ ### Post Split Slim with Wide Split
401
+ Combine `slim` and `split="wide"` for a compact layout with 2/3 + 1/3 column ratio.
402
+
403
+ <div class="component-preview pb-0 !block">
404
+ <Jumbotron
405
+ variant="post-split"
406
+ title="Slim Wide Split"
407
+ image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
408
+ slim
409
+ split="wide"
410
+ />
411
+ </div>
412
+
413
+ ```js
414
+ <Jumbotron
415
+ variant="post-split"
416
+ title="Slim Wide Split"
417
+ image="path/to/image.jpg"
418
+ slim
419
+ split="wide"
420
+ />
421
+ ```
422
+
423
+ ### Post Split with Text Alignment
424
+ Use the `align` prop to control text alignment within the content area. Available options: `left` (default), `center`, `right`.
425
+
426
+ <div class="component-preview pb-0 !block">
427
+ <Jumbotron
428
+ variant="post-split"
429
+ title="Left Aligned Content"
430
+ image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
431
+ align="left"
432
+ />
433
+ </div>
434
+
435
+ ```js
436
+ <Jumbotron
437
+ variant="post-split"
438
+ title="Left Aligned Content"
439
+ image="path/to/image.jpg"
440
+ align="left"
441
+ />
442
+ ```
443
+
444
+ <div class="component-preview pb-0 !block">
445
+ <Jumbotron
446
+ variant="post-split"
447
+ title="Center Aligned Content"
448
+ image="https://img.freepik.com/premium-photo/tranquil-scene-nature-beauty-tropical-rainforest-adventure-generated-by-artificial-intelligence_188544-83820.jpg?w=1200&h=675&f=webp"
449
+ align="center"
450
+ />
451
+ </div>
452
+
453
+ ```js
454
+ <Jumbotron
455
+ variant="post-split"
456
+ title="Center Aligned Content"
457
+ image="path/to/image.jpg"
458
+ align="center"
459
+ />
460
+ ```
461
+
462
+ ## Custom Intro Slot Example
463
+ Shows how to fully customize the header section using the intro slot. Useful for complex layouts or custom styling.
464
+
465
+ <div class="component-preview">
466
+ <Jumbotron variant="default" slim>
467
+ <h2 slot="intro" class="text-3xl text-white sm:(text-3xl pt-0) md:text-4xl lg:text-5xl">
468
+ Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.
469
+ </h2>
470
+ <p slot="subtitle"
471
+ class="mt-5 sm:mt-8 sm:flex sm:justify-center"
472
+ >Nunc posuere massa eget turpis laoreet ultrices eget vel massa.</p>
473
+ </Jumbotron>
474
+ </div>
475
+
476
+ ```js
477
+ <Jumbotron variant="default" slim>
478
+ <h2 slot="intro" class="text-3xl text-white sm:(text-3xl pt-0) md:text-4xl lg:text-5xl">
479
+ Lorem ipsum dolor sit amet, <span class="text-accent-light">consectetur</span> adipiscing elit.
480
+ </h2>
481
+ <p slot="subtitle"
482
+ class="mt-5 sm:mt-8 sm:flex sm:justify-center"
483
+ >
484
+ Nunc posuere massa eget turpis laoreet ultrices eget vel massa.
485
+ </p>
486
+ </Jumbotron>
487
+ ```
488
+
489
+ ## Component API
490
+
491
+ ### Common Props
492
+ - `variant`: Layout variant ('default' | 'hero' | 'post' | 'post-split')
493
+ - default: 'default'
494
+ - `title`: Main heading text. Supports HTML markup for styling.
495
+ - `image`: Image URL (required for hero, post and post-split variants)
496
+ - `slim`: Reduces vertical padding and height (works with default, hero, and post-split variants)
497
+
498
+ ### Default & Hero Props
499
+ - `description`: Secondary text below title (hero variant only)
500
+ - `info`: Additional information text (hero variant only)
501
+
502
+ ### Post Variants Props
503
+ - `date`: Publication date string
504
+ - `author`: Author information object
505
+ - `firstName`: Author's first name (used in title attribute)
506
+ - `name`: Full author name (displayed)
507
+ - `categories`: Array of category objects for post categorization
508
+ - `name`: Category display name
509
+ - `uri`: Category link URL
510
+
511
+ ### Post Split Props
512
+ - `imageWidth`: Custom image width in pixels (default: 768)
513
+ - `imageHeight`: Custom image height in pixels (default: 432)
514
+ - `imageClass`: Tailwind/UnoCSS classes for responsive image sizing (e.g., `max-w-100 lg:max-w-80`)
515
+ - `description`: Optional description text below the title
516
+ - `fullWidth`: When true, adds `full-width-block` class for full viewport width
517
+ - `align`: Text alignment within content area ('left' | 'center' | 'right', default: 'left')
518
+ - `split`: Column width ratio on desktop ('equal' | 'wide', default: 'equal')
519
+ - `equal`: 50/50 split between text and image
520
+ - `wide`: 2/3 text + 1/3 image split
521
+
522
+ ### Slots
523
+ - `intro`: Replaces the default title with custom content. Useful for complex headings or custom markup.
524
+ - `subtitle`: Additional content below the title. Supports markdown and HTML.
525
+ - `cta-content`: Call to action content (buttons, links etc.) - wrapped in centered container.
526
+
527
+ ## Accessibility
528
+ - Use semantic HTML markup in slots
529
+ - Ensure proper contrast for text over background images
530
+ - Provide meaningful alt text for images
531
531
  - Title text supports HTML markup for better semantics and styling