spoko-design-system 1.20.0 → 1.21.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.
- package/.claude/settings.json +48 -48
- package/.github/dependabot.yml +11 -11
- package/.github/todo.yml +3 -3
- package/.github/workflows/claude.yml +37 -37
- package/.github/workflows/code-quality.yml +72 -72
- package/.github/workflows/deploy.yml +43 -43
- package/.husky/README.md +41 -41
- package/.husky/commit-msg +1 -1
- package/.husky/pre-commit +40 -40
- package/.prettierignore +14 -14
- package/.prettierrc +30 -30
- package/.stackblitzrc +5 -5
- package/.vscode/extensions.json +4 -4
- package/.vscode/launch.json +11 -11
- package/.vscode/settings.json +21 -21
- package/CHANGELOG.md +470 -462
- package/CLAUDE.md +268 -268
- package/LICENSE +21 -21
- package/README.md +303 -303
- package/TOOLTIPS.md +236 -236
- package/astro.config.mjs +84 -84
- package/commitlint.config.js +3 -3
- package/dev-dist/sw.js +91 -91
- package/dev-dist/workbox-c676b6d3.js +3391 -3391
- package/eslint.config.js +70 -70
- package/icon.config.ts +348 -348
- package/index.ts +78 -78
- package/package.json +160 -160
- package/public/arrow-bottom.svg +7 -7
- package/public/fonts/lg.svg +53 -53
- package/public/fonts/vwhead-bold-demo.html +549 -549
- package/public/fonts/vwhead-regular-demo.html +549 -549
- package/public/fonts/vwtext-bold-demo.html +549 -549
- package/public/fonts/vwtext-regular-demo.html +549 -549
- package/public/github.svg +3 -3
- package/public/grid_dot.svg +4 -4
- package/public/linkedin.svg +44 -44
- package/public/make-scrollable-code-focusable.js +3 -3
- package/public/pagefind.yml +3 -3
- package/public/polo.blue.svg +29 -29
- package/public/spoko.space.svg +71 -71
- package/public/twitter.svg +46 -46
- package/renovate.json +6 -6
- package/sandbox.config.json +11 -11
- package/sonar-project.properties +26 -26
- package/src/components/Category/CategoriesCarousel.astro +3 -7
- package/src/pages/components/badges.mdx +57 -57
- package/src/pages/components/breadcrumbs.mdx +139 -139
- package/src/pages/components/buttons.mdx +359 -359
- package/src/pages/components/card.mdx +294 -294
- package/src/pages/components/carousel.mdx +62 -62
- package/src/pages/components/copyright.mdx +42 -42
- package/src/pages/components/details-list.mdx +207 -207
- package/src/pages/components/features-list.mdx +37 -37
- package/src/pages/components/flags.mdx +49 -49
- package/src/pages/components/fuck-russia.mdx +39 -39
- package/src/pages/components/hand-drive.mdx +78 -78
- package/src/pages/components/headline.mdx +337 -337
- package/src/pages/components/image.mdx +513 -513
- package/src/pages/components/input.mdx +367 -367
- package/src/pages/components/jumbotron.mdx +530 -530
- package/src/pages/components/modal.mdx +212 -212
- package/src/pages/components/post-header.mdx +64 -64
- package/src/pages/components/pr-code.mdx +213 -213
- package/src/pages/components/product-engine.mdx +418 -418
- package/src/pages/components/product-number.mdx +58 -58
- package/src/pages/components/product-tile.mdx +51 -51
- package/src/pages/components/quote.mdx +33 -33
- package/src/pages/components/slimbanner.mdx +260 -260
- package/src/pages/components/table.mdx +108 -108
- package/src/pages/core/colors.mdx +21 -21
- package/src/pages/core/grid.mdx +193 -193
- package/src/pages/core/introduction.mdx +77 -77
- package/src/pages/core/tooltips.mdx +491 -491
- package/src/pages/patterns/introduction.mdx +60 -60
- package/src/styles/_variables.scss +70 -70
- package/tailwind.config.cjs +8 -8
- package/tsconfig.json +28 -28
- package/uno-config/index.ts +269 -269
- package/uno-config/theme/breakpoints.ts +9 -9
- package/uno-config/theme/colors.ts +65 -65
- package/uno-config/theme/dimensions.ts +17 -17
- package/uno-config/theme/effects.ts +14 -14
- package/uno-config/theme/grid.ts +10 -10
- package/uno-config/theme/index.ts +26 -26
- package/uno-config/theme/shortcuts/buttons.ts +53 -53
- package/uno-config/theme/shortcuts/components.ts +124 -124
- package/uno-config/theme/shortcuts/index.ts +20 -20
- package/uno-config/theme/shortcuts/jumbotron.ts +71 -71
- package/uno-config/theme/shortcuts/layout.ts +75 -75
- package/uno-config/theme/typography.ts +29 -29
- package/uno.config.ts +2 -2
|
@@ -1,337 +1,337 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Headline"
|
|
3
|
-
layout: "../../layouts/MainLayout.astro"
|
|
4
|
-
---
|
|
5
|
-
import Headline from '../../components/Headline.vue'
|
|
6
|
-
import { Icon } from 'astro-icon/components';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# Headline
|
|
10
|
-
|
|
11
|
-
Headline - universal HTML tag <small>(nice for SEO)</small>.
|
|
12
|
-
|
|
13
|
-
#
|
|
14
|
-
Headings give both your visitors and search engines important clues about the content's hierarchy and relevancy.
|
|
15
|
-
|
|
16
|
-
It's good to use only H1-H6 for important headings, but sometimes I want more things to be unified. That's why I created this universal component.
|
|
17
|
-
|
|
18
|
-
Thanks to this, I can make a header that always looks the same, regardless of whether it is an H1 or a DIV or P.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
### Import
|
|
22
|
-
|
|
23
|
-
```js
|
|
24
|
-
import Headline from 'spoko-design-system/src/components/Headline.vue';
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### Props
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
interface HeadlineProps {
|
|
31
|
-
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span';
|
|
32
|
-
// default: 'span'
|
|
33
|
-
|
|
34
|
-
class?: string;
|
|
35
|
-
// default: ''
|
|
36
|
-
// Use any UnoCSS/Tailwind classes including responsive variants
|
|
37
|
-
// Examples: 'text-4xl', 'text-2xl md:text-4xl lg:text-6xl'
|
|
38
|
-
|
|
39
|
-
fontFamily?: 'head' | 'text' | 'novamono' | 'mono';
|
|
40
|
-
// default: 'head'
|
|
41
|
-
|
|
42
|
-
fontWeight?: 'light' | 'regular' | 'bold' | 'light-bold' | 'light-thin';
|
|
43
|
-
// default: 'regular'
|
|
44
|
-
|
|
45
|
-
underline?: boolean | 'center';
|
|
46
|
-
// default: false
|
|
47
|
-
// true: left-aligned underline, 'center': centered underline
|
|
48
|
-
|
|
49
|
-
defaultSize?: string;
|
|
50
|
-
// default: 'text-inherit'
|
|
51
|
-
// Used when no class prop is provided
|
|
52
|
-
|
|
53
|
-
noFlexLayout?: boolean;
|
|
54
|
-
// default: false
|
|
55
|
-
// Disables the default flex layout behavior
|
|
56
|
-
|
|
57
|
-
noMargin?: boolean;
|
|
58
|
-
// default: false
|
|
59
|
-
// Disables default mb-2.5 margin
|
|
60
|
-
|
|
61
|
-
noLeading?: boolean;
|
|
62
|
-
// default: false
|
|
63
|
-
// Disables default leading-none line height
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### HTML Attributes Support
|
|
68
|
-
|
|
69
|
-
The component supports all standard HTML attributes via `v-bind="$attrs"`:
|
|
70
|
-
|
|
71
|
-
```vue
|
|
72
|
-
<Headline
|
|
73
|
-
as="h1"
|
|
74
|
-
class="text-4xl"
|
|
75
|
-
id="main-title"
|
|
76
|
-
data-section="hero"
|
|
77
|
-
aria-label="Main headline"
|
|
78
|
-
>
|
|
79
|
-
Accessible Headline
|
|
80
|
-
</Headline>
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### CSS Custom Properties
|
|
84
|
-
|
|
85
|
-
Customize underline colors using CSS variables:
|
|
86
|
-
|
|
87
|
-
```css
|
|
88
|
-
/* Override underline colors globally */
|
|
89
|
-
:root {
|
|
90
|
-
--headline-underline-accent: #0066cc; /* Main underline color */
|
|
91
|
-
--headline-underline-base: #999999; /* Thin line color */
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/* Or scope to specific headlines */
|
|
95
|
-
.custom-headline {
|
|
96
|
-
--headline-underline-accent: #ff6600;
|
|
97
|
-
--headline-underline-base: #cccccc;
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
## Examples
|
|
103
|
-
|
|
104
|
-
### Basic Usage
|
|
105
|
-
|
|
106
|
-
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
107
|
-
<ul class="list-decimal list-outside">
|
|
108
|
-
<li class="px-4 pb-4"><Headline as="h1" font-family="head" font-weight="regular" class="text-xl">Regular Headline</Headline></li>
|
|
109
|
-
<li class="px-4 pb-4"><Headline as="h2" font-family="head" font-weight="light" class="text-lg">Light Headline</Headline></li>
|
|
110
|
-
<li class="px-4 pb-4"><Headline as="h3" font-family="head" font-weight="bold" class="text-2xl">Bold Headline</Headline></li>
|
|
111
|
-
<li class="px-4 pb-4"><Headline as="h4" font-family="head" font-weight="light-bold" class="text-base">Light Bold Headline</Headline></li>
|
|
112
|
-
<li class="px-4 pb-4"><Headline as="h5" font-family="head" font-weight="light-thin" class="text-sm">Light Thin Headline</Headline></li>
|
|
113
|
-
<li class="px-4 pb-4"><Headline as="p" font-family="text" class="text-base">Default Text (inherits size)</Headline></li>
|
|
114
|
-
</ul>
|
|
115
|
-
</div>
|
|
116
|
-
|
|
117
|
-
### Responsive Typography
|
|
118
|
-
|
|
119
|
-
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
120
|
-
<ul class="list-decimal list-outside">
|
|
121
|
-
<li class="px-4 pb-4"><Headline as="h1" class="text-2xl md:text-4xl lg:text-6xl">Responsive Hero</Headline></li>
|
|
122
|
-
<li class="px-4 pb-4"><Headline as="h2" font-weight="bold" class="text-xl md:text-3xl lg:text-5xl">Bold Responsive</Headline></li>
|
|
123
|
-
<li class="px-4 pb-4"><Headline as="h3" class="text-base sm:text-lg md:text-xl lg:text-2xl xl:text-3xl">Multi-breakpoint</Headline></li>
|
|
124
|
-
<li class="px-4 pb-4"><Headline as="h2" font-weight="light-bold" class="text-lg md:text-2xl lg:text-4xl 3xl:text-6xl">Extra large screens</Headline></li>
|
|
125
|
-
</ul>
|
|
126
|
-
</div>
|
|
127
|
-
|
|
128
|
-
### Font Families & Weights
|
|
129
|
-
|
|
130
|
-
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
131
|
-
<ul class="list-decimal list-outside">
|
|
132
|
-
<li class="px-4 pb-4"><Headline as="p" font-family="text" font-weight="light" class="text-base">Light Text</Headline></li>
|
|
133
|
-
<li class="px-4 pb-4"><Headline as="p" font-family="text" font-weight="bold" class="text-base">Bold Text</Headline></li>
|
|
134
|
-
<li class="px-4 pb-4"><Headline as="code" font-family="novamono" class="text-sm">Nova Mono Code</Headline></li>
|
|
135
|
-
<li class="px-4 pb-4"><Headline as="code" font-family="mono" class="text-sm">Mono Code</Headline></li>
|
|
136
|
-
</ul>
|
|
137
|
-
</div>
|
|
138
|
-
|
|
139
|
-
### With Underline
|
|
140
|
-
|
|
141
|
-
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
142
|
-
<ul class="list-decimal list-outside">
|
|
143
|
-
<li class="px-4 pb-4"><Headline as="h2" font-weight="light-thin" class="text-3xl" underline>Underlined Headline</Headline></li>
|
|
144
|
-
<li class="px-4 pb-4"><Headline as="h2" font-weight="bold" class="text-2xl md:text-4xl" underline="center">Centered Underline</Headline></li>
|
|
145
|
-
</ul>
|
|
146
|
-
</div>
|
|
147
|
-
|
|
148
|
-
### With Icons
|
|
149
|
-
|
|
150
|
-
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
151
|
-
<ul class="list-decimal list-outside">
|
|
152
|
-
<li class="px-4 pb-4"><Headline as="h3" font-weight="bold" class="text-2xl">
|
|
153
|
-
<Icon name="ph:cat-thin" class="inline-block mr-4" />
|
|
154
|
-
Headline with Icon
|
|
155
|
-
</Headline></li>
|
|
156
|
-
<li class="px-4 pb-4"><Headline as="h1" font-weight="light-bold" class="text-xl md:text-3xl lg:text-5xl" underline>
|
|
157
|
-
<Icon name="ph:cat-thin" class="inline-block mr-4" />
|
|
158
|
-
Responsive with Icon & Underline
|
|
159
|
-
</Headline></li>
|
|
160
|
-
</ul>
|
|
161
|
-
</div>
|
|
162
|
-
|
|
163
|
-
## Code Examples
|
|
164
|
-
|
|
165
|
-
### Basic Usage
|
|
166
|
-
```vue
|
|
167
|
-
<!-- Simple headline with defaults (inherits font size) -->
|
|
168
|
-
<Headline as="h1">Default Headline</Headline>
|
|
169
|
-
|
|
170
|
-
<!-- With explicit size -->
|
|
171
|
-
<Headline as="h1" class="text-xl">Regular Headline</Headline>
|
|
172
|
-
|
|
173
|
-
<!-- Font family and weight -->
|
|
174
|
-
<Headline as="h2" font-weight="light" class="text-lg">Light Headline</Headline>
|
|
175
|
-
<Headline as="h3" font-weight="bold" class="text-2xl">Bold Headline</Headline>
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### Responsive Typography
|
|
179
|
-
```vue
|
|
180
|
-
<!-- Hero headline - small on mobile, large on desktop -->
|
|
181
|
-
<Headline as="h1" class="text-2xl md:text-4xl lg:text-6xl">
|
|
182
|
-
Responsive Hero
|
|
183
|
-
</Headline>
|
|
184
|
-
|
|
185
|
-
<!-- Progressive scaling across all breakpoints -->
|
|
186
|
-
<Headline as="h2" class="text-base sm:text-lg md:text-xl lg:text-2xl xl:text-3xl">
|
|
187
|
-
Multi-breakpoint Headline
|
|
188
|
-
</Headline>
|
|
189
|
-
|
|
190
|
-
<!-- Extra large screens support -->
|
|
191
|
-
<Headline as="h2" font-weight="light-bold" class="text-lg md:text-2xl lg:text-4xl 3xl:text-6xl">
|
|
192
|
-
Scales up to 3xl breakpoint
|
|
193
|
-
</Headline>
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### Font Families
|
|
197
|
-
```vue
|
|
198
|
-
<!-- Heading font (default) -->
|
|
199
|
-
<Headline as="h1" font-weight="regular" class="text-xl">
|
|
200
|
-
Regular Headline
|
|
201
|
-
</Headline>
|
|
202
|
-
|
|
203
|
-
<!-- Text font for body content -->
|
|
204
|
-
<Headline as="p" font-family="text" font-weight="light" class="text-base">
|
|
205
|
-
Light Text Content
|
|
206
|
-
</Headline>
|
|
207
|
-
|
|
208
|
-
<!-- Monospace fonts -->
|
|
209
|
-
<Headline as="code" font-family="novamono" class="text-sm">
|
|
210
|
-
Nova Mono Code
|
|
211
|
-
</Headline>
|
|
212
|
-
|
|
213
|
-
<Headline as="code" font-family="mono" class="text-sm">
|
|
214
|
-
Mono Code
|
|
215
|
-
</Headline>
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### With Underline
|
|
219
|
-
```vue
|
|
220
|
-
<!-- Left-aligned underline -->
|
|
221
|
-
<Headline as="h2" class="text-3xl" underline>
|
|
222
|
-
Underlined Headline
|
|
223
|
-
</Headline>
|
|
224
|
-
|
|
225
|
-
<!-- Centered underline with responsive sizing -->
|
|
226
|
-
<Headline as="h2" font-weight="bold" class="text-2xl md:text-4xl" underline="center">
|
|
227
|
-
Centered Underline
|
|
228
|
-
</Headline>
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### With Icons
|
|
232
|
-
```vue
|
|
233
|
-
<!-- Icon with responsive sizing -->
|
|
234
|
-
<Headline as="h1" font-weight="light-bold" class="text-xl md:text-3xl lg:text-5xl" underline>
|
|
235
|
-
<Icon name="ph:cat-thin" class="inline-block mr-4" />
|
|
236
|
-
Complete Example
|
|
237
|
-
</Headline>
|
|
238
|
-
|
|
239
|
-
<!-- Simple icon headline -->
|
|
240
|
-
<Headline as="h3" font-weight="bold" class="text-2xl">
|
|
241
|
-
<Icon name="ph:cat-thin" class="inline-block mr-4" />
|
|
242
|
-
Headline with Icon
|
|
243
|
-
</Headline>
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
### Custom Styling
|
|
247
|
-
```vue
|
|
248
|
-
<!-- Combine with any UnoCSS/Tailwind utilities -->
|
|
249
|
-
<Headline as="h1" class="text-4xl md:text-6xl text-blue-600 dark:text-blue-400">
|
|
250
|
-
Colored Headline
|
|
251
|
-
</Headline>
|
|
252
|
-
|
|
253
|
-
<!-- Responsive colors and sizes -->
|
|
254
|
-
<Headline
|
|
255
|
-
as="h2"
|
|
256
|
-
font-weight="bold"
|
|
257
|
-
class="text-2xl md:text-4xl text-slate-700 md:text-blue-600"
|
|
258
|
-
>
|
|
259
|
-
Responsive Color & Size
|
|
260
|
-
</Headline>
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
### Advanced Features
|
|
264
|
-
|
|
265
|
-
#### Remove Default Spacing
|
|
266
|
-
```vue
|
|
267
|
-
<!-- No bottom margin -->
|
|
268
|
-
<Headline as="h1" class="text-4xl" no-margin>
|
|
269
|
-
Headline without margin
|
|
270
|
-
</Headline>
|
|
271
|
-
|
|
272
|
-
<!-- No line height adjustment -->
|
|
273
|
-
<Headline as="h2" class="text-2xl" no-leading>
|
|
274
|
-
Headline with normal line height
|
|
275
|
-
</Headline>
|
|
276
|
-
|
|
277
|
-
<!-- Remove both -->
|
|
278
|
-
<Headline as="h3" class="text-xl" no-margin no-leading>
|
|
279
|
-
Fully custom spacing
|
|
280
|
-
</Headline>
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
#### Disable Flex Layout
|
|
284
|
-
```vue
|
|
285
|
-
<!-- By default, headlines without underline use flex layout for icon alignment -->
|
|
286
|
-
<!-- Disable it with noFlexLayout -->
|
|
287
|
-
<Headline as="h2" class="text-2xl" no-flex-layout>
|
|
288
|
-
Block-level headline
|
|
289
|
-
</Headline>
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
#### Custom Underline Colors
|
|
293
|
-
```vue
|
|
294
|
-
<!-- In your component or style tag -->
|
|
295
|
-
<style>
|
|
296
|
-
.custom-underline-headline {
|
|
297
|
-
--headline-underline-accent: #ff6600;
|
|
298
|
-
--headline-underline-base: #cccccc;
|
|
299
|
-
}
|
|
300
|
-
</style>
|
|
301
|
-
|
|
302
|
-
<Headline
|
|
303
|
-
as="h1"
|
|
304
|
-
class="text-4xl custom-underline-headline"
|
|
305
|
-
underline
|
|
306
|
-
>
|
|
307
|
-
Custom colored underline
|
|
308
|
-
</Headline>
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
#### Accessibility Features
|
|
312
|
-
```vue
|
|
313
|
-
<!-- Add ARIA attributes for screen readers -->
|
|
314
|
-
<Headline
|
|
315
|
-
as="h1"
|
|
316
|
-
class="text-4xl"
|
|
317
|
-
id="page-title"
|
|
318
|
-
role="heading"
|
|
319
|
-
aria-level="1"
|
|
320
|
-
aria-label="Welcome to our website"
|
|
321
|
-
>
|
|
322
|
-
Welcome
|
|
323
|
-
</Headline>
|
|
324
|
-
|
|
325
|
-
<!-- Add data attributes for tracking or testing -->
|
|
326
|
-
<Headline
|
|
327
|
-
as="h2"
|
|
328
|
-
class="text-2xl"
|
|
329
|
-
data-testid="section-heading"
|
|
330
|
-
data-analytics="hero-title"
|
|
331
|
-
>
|
|
332
|
-
Section Title
|
|
333
|
-
</Headline>
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
#
|
|
1
|
+
---
|
|
2
|
+
title: "Headline"
|
|
3
|
+
layout: "../../layouts/MainLayout.astro"
|
|
4
|
+
---
|
|
5
|
+
import Headline from '../../components/Headline.vue'
|
|
6
|
+
import { Icon } from 'astro-icon/components';
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Headline
|
|
10
|
+
|
|
11
|
+
Headline - universal HTML tag <small>(nice for SEO)</small>.
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
Headings give both your visitors and search engines important clues about the content's hierarchy and relevancy.
|
|
15
|
+
|
|
16
|
+
It's good to use only H1-H6 for important headings, but sometimes I want more things to be unified. That's why I created this universal component.
|
|
17
|
+
|
|
18
|
+
Thanks to this, I can make a header that always looks the same, regardless of whether it is an H1 or a DIV or P.
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Import
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
import Headline from 'spoko-design-system/src/components/Headline.vue';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Props
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
interface HeadlineProps {
|
|
31
|
+
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span';
|
|
32
|
+
// default: 'span'
|
|
33
|
+
|
|
34
|
+
class?: string;
|
|
35
|
+
// default: ''
|
|
36
|
+
// Use any UnoCSS/Tailwind classes including responsive variants
|
|
37
|
+
// Examples: 'text-4xl', 'text-2xl md:text-4xl lg:text-6xl'
|
|
38
|
+
|
|
39
|
+
fontFamily?: 'head' | 'text' | 'novamono' | 'mono';
|
|
40
|
+
// default: 'head'
|
|
41
|
+
|
|
42
|
+
fontWeight?: 'light' | 'regular' | 'bold' | 'light-bold' | 'light-thin';
|
|
43
|
+
// default: 'regular'
|
|
44
|
+
|
|
45
|
+
underline?: boolean | 'center';
|
|
46
|
+
// default: false
|
|
47
|
+
// true: left-aligned underline, 'center': centered underline
|
|
48
|
+
|
|
49
|
+
defaultSize?: string;
|
|
50
|
+
// default: 'text-inherit'
|
|
51
|
+
// Used when no class prop is provided
|
|
52
|
+
|
|
53
|
+
noFlexLayout?: boolean;
|
|
54
|
+
// default: false
|
|
55
|
+
// Disables the default flex layout behavior
|
|
56
|
+
|
|
57
|
+
noMargin?: boolean;
|
|
58
|
+
// default: false
|
|
59
|
+
// Disables default mb-2.5 margin
|
|
60
|
+
|
|
61
|
+
noLeading?: boolean;
|
|
62
|
+
// default: false
|
|
63
|
+
// Disables default leading-none line height
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### HTML Attributes Support
|
|
68
|
+
|
|
69
|
+
The component supports all standard HTML attributes via `v-bind="$attrs"`:
|
|
70
|
+
|
|
71
|
+
```vue
|
|
72
|
+
<Headline
|
|
73
|
+
as="h1"
|
|
74
|
+
class="text-4xl"
|
|
75
|
+
id="main-title"
|
|
76
|
+
data-section="hero"
|
|
77
|
+
aria-label="Main headline"
|
|
78
|
+
>
|
|
79
|
+
Accessible Headline
|
|
80
|
+
</Headline>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### CSS Custom Properties
|
|
84
|
+
|
|
85
|
+
Customize underline colors using CSS variables:
|
|
86
|
+
|
|
87
|
+
```css
|
|
88
|
+
/* Override underline colors globally */
|
|
89
|
+
:root {
|
|
90
|
+
--headline-underline-accent: #0066cc; /* Main underline color */
|
|
91
|
+
--headline-underline-base: #999999; /* Thin line color */
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* Or scope to specific headlines */
|
|
95
|
+
.custom-headline {
|
|
96
|
+
--headline-underline-accent: #ff6600;
|
|
97
|
+
--headline-underline-base: #cccccc;
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## Examples
|
|
103
|
+
|
|
104
|
+
### Basic Usage
|
|
105
|
+
|
|
106
|
+
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
107
|
+
<ul class="list-decimal list-outside">
|
|
108
|
+
<li class="px-4 pb-4"><Headline as="h1" font-family="head" font-weight="regular" class="text-xl">Regular Headline</Headline></li>
|
|
109
|
+
<li class="px-4 pb-4"><Headline as="h2" font-family="head" font-weight="light" class="text-lg">Light Headline</Headline></li>
|
|
110
|
+
<li class="px-4 pb-4"><Headline as="h3" font-family="head" font-weight="bold" class="text-2xl">Bold Headline</Headline></li>
|
|
111
|
+
<li class="px-4 pb-4"><Headline as="h4" font-family="head" font-weight="light-bold" class="text-base">Light Bold Headline</Headline></li>
|
|
112
|
+
<li class="px-4 pb-4"><Headline as="h5" font-family="head" font-weight="light-thin" class="text-sm">Light Thin Headline</Headline></li>
|
|
113
|
+
<li class="px-4 pb-4"><Headline as="p" font-family="text" class="text-base">Default Text (inherits size)</Headline></li>
|
|
114
|
+
</ul>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
### Responsive Typography
|
|
118
|
+
|
|
119
|
+
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
120
|
+
<ul class="list-decimal list-outside">
|
|
121
|
+
<li class="px-4 pb-4"><Headline as="h1" class="text-2xl md:text-4xl lg:text-6xl">Responsive Hero</Headline></li>
|
|
122
|
+
<li class="px-4 pb-4"><Headline as="h2" font-weight="bold" class="text-xl md:text-3xl lg:text-5xl">Bold Responsive</Headline></li>
|
|
123
|
+
<li class="px-4 pb-4"><Headline as="h3" class="text-base sm:text-lg md:text-xl lg:text-2xl xl:text-3xl">Multi-breakpoint</Headline></li>
|
|
124
|
+
<li class="px-4 pb-4"><Headline as="h2" font-weight="light-bold" class="text-lg md:text-2xl lg:text-4xl 3xl:text-6xl">Extra large screens</Headline></li>
|
|
125
|
+
</ul>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
### Font Families & Weights
|
|
129
|
+
|
|
130
|
+
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
131
|
+
<ul class="list-decimal list-outside">
|
|
132
|
+
<li class="px-4 pb-4"><Headline as="p" font-family="text" font-weight="light" class="text-base">Light Text</Headline></li>
|
|
133
|
+
<li class="px-4 pb-4"><Headline as="p" font-family="text" font-weight="bold" class="text-base">Bold Text</Headline></li>
|
|
134
|
+
<li class="px-4 pb-4"><Headline as="code" font-family="novamono" class="text-sm">Nova Mono Code</Headline></li>
|
|
135
|
+
<li class="px-4 pb-4"><Headline as="code" font-family="mono" class="text-sm">Mono Code</Headline></li>
|
|
136
|
+
</ul>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
### With Underline
|
|
140
|
+
|
|
141
|
+
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
142
|
+
<ul class="list-decimal list-outside">
|
|
143
|
+
<li class="px-4 pb-4"><Headline as="h2" font-weight="light-thin" class="text-3xl" underline>Underlined Headline</Headline></li>
|
|
144
|
+
<li class="px-4 pb-4"><Headline as="h2" font-weight="bold" class="text-2xl md:text-4xl" underline="center">Centered Underline</Headline></li>
|
|
145
|
+
</ul>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
### With Icons
|
|
149
|
+
|
|
150
|
+
<div class="component-preview flex-wrap flex-col justify-start !items-start">
|
|
151
|
+
<ul class="list-decimal list-outside">
|
|
152
|
+
<li class="px-4 pb-4"><Headline as="h3" font-weight="bold" class="text-2xl">
|
|
153
|
+
<Icon name="ph:cat-thin" class="inline-block mr-4" />
|
|
154
|
+
Headline with Icon
|
|
155
|
+
</Headline></li>
|
|
156
|
+
<li class="px-4 pb-4"><Headline as="h1" font-weight="light-bold" class="text-xl md:text-3xl lg:text-5xl" underline>
|
|
157
|
+
<Icon name="ph:cat-thin" class="inline-block mr-4" />
|
|
158
|
+
Responsive with Icon & Underline
|
|
159
|
+
</Headline></li>
|
|
160
|
+
</ul>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
## Code Examples
|
|
164
|
+
|
|
165
|
+
### Basic Usage
|
|
166
|
+
```vue
|
|
167
|
+
<!-- Simple headline with defaults (inherits font size) -->
|
|
168
|
+
<Headline as="h1">Default Headline</Headline>
|
|
169
|
+
|
|
170
|
+
<!-- With explicit size -->
|
|
171
|
+
<Headline as="h1" class="text-xl">Regular Headline</Headline>
|
|
172
|
+
|
|
173
|
+
<!-- Font family and weight -->
|
|
174
|
+
<Headline as="h2" font-weight="light" class="text-lg">Light Headline</Headline>
|
|
175
|
+
<Headline as="h3" font-weight="bold" class="text-2xl">Bold Headline</Headline>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Responsive Typography
|
|
179
|
+
```vue
|
|
180
|
+
<!-- Hero headline - small on mobile, large on desktop -->
|
|
181
|
+
<Headline as="h1" class="text-2xl md:text-4xl lg:text-6xl">
|
|
182
|
+
Responsive Hero
|
|
183
|
+
</Headline>
|
|
184
|
+
|
|
185
|
+
<!-- Progressive scaling across all breakpoints -->
|
|
186
|
+
<Headline as="h2" class="text-base sm:text-lg md:text-xl lg:text-2xl xl:text-3xl">
|
|
187
|
+
Multi-breakpoint Headline
|
|
188
|
+
</Headline>
|
|
189
|
+
|
|
190
|
+
<!-- Extra large screens support -->
|
|
191
|
+
<Headline as="h2" font-weight="light-bold" class="text-lg md:text-2xl lg:text-4xl 3xl:text-6xl">
|
|
192
|
+
Scales up to 3xl breakpoint
|
|
193
|
+
</Headline>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Font Families
|
|
197
|
+
```vue
|
|
198
|
+
<!-- Heading font (default) -->
|
|
199
|
+
<Headline as="h1" font-weight="regular" class="text-xl">
|
|
200
|
+
Regular Headline
|
|
201
|
+
</Headline>
|
|
202
|
+
|
|
203
|
+
<!-- Text font for body content -->
|
|
204
|
+
<Headline as="p" font-family="text" font-weight="light" class="text-base">
|
|
205
|
+
Light Text Content
|
|
206
|
+
</Headline>
|
|
207
|
+
|
|
208
|
+
<!-- Monospace fonts -->
|
|
209
|
+
<Headline as="code" font-family="novamono" class="text-sm">
|
|
210
|
+
Nova Mono Code
|
|
211
|
+
</Headline>
|
|
212
|
+
|
|
213
|
+
<Headline as="code" font-family="mono" class="text-sm">
|
|
214
|
+
Mono Code
|
|
215
|
+
</Headline>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### With Underline
|
|
219
|
+
```vue
|
|
220
|
+
<!-- Left-aligned underline -->
|
|
221
|
+
<Headline as="h2" class="text-3xl" underline>
|
|
222
|
+
Underlined Headline
|
|
223
|
+
</Headline>
|
|
224
|
+
|
|
225
|
+
<!-- Centered underline with responsive sizing -->
|
|
226
|
+
<Headline as="h2" font-weight="bold" class="text-2xl md:text-4xl" underline="center">
|
|
227
|
+
Centered Underline
|
|
228
|
+
</Headline>
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### With Icons
|
|
232
|
+
```vue
|
|
233
|
+
<!-- Icon with responsive sizing -->
|
|
234
|
+
<Headline as="h1" font-weight="light-bold" class="text-xl md:text-3xl lg:text-5xl" underline>
|
|
235
|
+
<Icon name="ph:cat-thin" class="inline-block mr-4" />
|
|
236
|
+
Complete Example
|
|
237
|
+
</Headline>
|
|
238
|
+
|
|
239
|
+
<!-- Simple icon headline -->
|
|
240
|
+
<Headline as="h3" font-weight="bold" class="text-2xl">
|
|
241
|
+
<Icon name="ph:cat-thin" class="inline-block mr-4" />
|
|
242
|
+
Headline with Icon
|
|
243
|
+
</Headline>
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Custom Styling
|
|
247
|
+
```vue
|
|
248
|
+
<!-- Combine with any UnoCSS/Tailwind utilities -->
|
|
249
|
+
<Headline as="h1" class="text-4xl md:text-6xl text-blue-600 dark:text-blue-400">
|
|
250
|
+
Colored Headline
|
|
251
|
+
</Headline>
|
|
252
|
+
|
|
253
|
+
<!-- Responsive colors and sizes -->
|
|
254
|
+
<Headline
|
|
255
|
+
as="h2"
|
|
256
|
+
font-weight="bold"
|
|
257
|
+
class="text-2xl md:text-4xl text-slate-700 md:text-blue-600"
|
|
258
|
+
>
|
|
259
|
+
Responsive Color & Size
|
|
260
|
+
</Headline>
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Advanced Features
|
|
264
|
+
|
|
265
|
+
#### Remove Default Spacing
|
|
266
|
+
```vue
|
|
267
|
+
<!-- No bottom margin -->
|
|
268
|
+
<Headline as="h1" class="text-4xl" no-margin>
|
|
269
|
+
Headline without margin
|
|
270
|
+
</Headline>
|
|
271
|
+
|
|
272
|
+
<!-- No line height adjustment -->
|
|
273
|
+
<Headline as="h2" class="text-2xl" no-leading>
|
|
274
|
+
Headline with normal line height
|
|
275
|
+
</Headline>
|
|
276
|
+
|
|
277
|
+
<!-- Remove both -->
|
|
278
|
+
<Headline as="h3" class="text-xl" no-margin no-leading>
|
|
279
|
+
Fully custom spacing
|
|
280
|
+
</Headline>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
#### Disable Flex Layout
|
|
284
|
+
```vue
|
|
285
|
+
<!-- By default, headlines without underline use flex layout for icon alignment -->
|
|
286
|
+
<!-- Disable it with noFlexLayout -->
|
|
287
|
+
<Headline as="h2" class="text-2xl" no-flex-layout>
|
|
288
|
+
Block-level headline
|
|
289
|
+
</Headline>
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
#### Custom Underline Colors
|
|
293
|
+
```vue
|
|
294
|
+
<!-- In your component or style tag -->
|
|
295
|
+
<style>
|
|
296
|
+
.custom-underline-headline {
|
|
297
|
+
--headline-underline-accent: #ff6600;
|
|
298
|
+
--headline-underline-base: #cccccc;
|
|
299
|
+
}
|
|
300
|
+
</style>
|
|
301
|
+
|
|
302
|
+
<Headline
|
|
303
|
+
as="h1"
|
|
304
|
+
class="text-4xl custom-underline-headline"
|
|
305
|
+
underline
|
|
306
|
+
>
|
|
307
|
+
Custom colored underline
|
|
308
|
+
</Headline>
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
#### Accessibility Features
|
|
312
|
+
```vue
|
|
313
|
+
<!-- Add ARIA attributes for screen readers -->
|
|
314
|
+
<Headline
|
|
315
|
+
as="h1"
|
|
316
|
+
class="text-4xl"
|
|
317
|
+
id="page-title"
|
|
318
|
+
role="heading"
|
|
319
|
+
aria-level="1"
|
|
320
|
+
aria-label="Welcome to our website"
|
|
321
|
+
>
|
|
322
|
+
Welcome
|
|
323
|
+
</Headline>
|
|
324
|
+
|
|
325
|
+
<!-- Add data attributes for tracking or testing -->
|
|
326
|
+
<Headline
|
|
327
|
+
as="h2"
|
|
328
|
+
class="text-2xl"
|
|
329
|
+
data-testid="section-heading"
|
|
330
|
+
data-analytics="hero-title"
|
|
331
|
+
>
|
|
332
|
+
Section Title
|
|
333
|
+
</Headline>
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
#
|