@convertex/skill 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.mjs +103 -0
- package/package.json +29 -0
- package/skills/convertex/SKILL.md +330 -0
- package/skills/convertex/client-first/css/rules.md +102 -0
- package/skills/convertex/client-first/naming/conventions.md +92 -0
- package/skills/convertex/client-first/structure/page-skeleton.md +154 -0
- package/skills/convertex/client-first/utilities/buttons.md +170 -0
- package/skills/convertex/client-first/utilities/layout.md +89 -0
- package/skills/convertex/client-first/utilities/spacing.md +81 -0
- package/skills/convertex/client-first/utilities/typography.md +86 -0
- package/skills/convertex/css/best-practices.md +190 -0
- package/skills/convertex/elements/background-video.md +62 -0
- package/skills/convertex/elements/dropdown.md +49 -0
- package/skills/convertex/elements/forms.md +170 -0
- package/skills/convertex/elements/images.md +90 -0
- package/skills/convertex/elements/lightbox.md +61 -0
- package/skills/convertex/elements/links-buttons.md +96 -0
- package/skills/convertex/elements/navbar.md +100 -0
- package/skills/convertex/elements/slider.md +81 -0
- package/skills/convertex/elements/tabs.md +63 -0
- package/skills/convertex/patterns/ghost-blocks.md +94 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Page Skeleton — Mandatory Structure
|
|
2
|
+
|
|
3
|
+
## The 5 Layers
|
|
4
|
+
|
|
5
|
+
```html
|
|
6
|
+
<div class="page-wrapper">
|
|
7
|
+
<header class="nav_component">...</header> <!-- Outside main-wrapper -->
|
|
8
|
+
<main class="main-wrapper">
|
|
9
|
+
<section class="section_hero">
|
|
10
|
+
<div class="padding-global padding-section-large">
|
|
11
|
+
<div class="container-large">
|
|
12
|
+
<!-- section content goes here -->
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</section>
|
|
16
|
+
<section class="section_features">
|
|
17
|
+
<div class="padding-global padding-section-medium">
|
|
18
|
+
<div class="container-large">
|
|
19
|
+
<!-- section content goes here -->
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</section>
|
|
23
|
+
</main>
|
|
24
|
+
<footer class="footer_component">...</footer> <!-- Outside main-wrapper -->
|
|
25
|
+
</div>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Layer Rules
|
|
29
|
+
|
|
30
|
+
| Layer | Class | Tag | Purpose |
|
|
31
|
+
|---|---|---|---|
|
|
32
|
+
| 1 | `page-wrapper` | `<div>` | Outermost page wrapper |
|
|
33
|
+
| 2 | `main-wrapper` | `<main>` | Wraps all sections (excludes nav/footer) |
|
|
34
|
+
| 3 | `section_[id]` | `<section>` | Named section |
|
|
35
|
+
| 4 | `padding-global padding-section-[size]` | `<div>` | Horizontal + vertical spacing |
|
|
36
|
+
| 5 | `container-[size]` | `<div>` | Centered max-width content area |
|
|
37
|
+
|
|
38
|
+
**CRITICAL:** `padding-global` and `padding-section-[size]` go on the **SAME div**. Never separate them into two nested divs.
|
|
39
|
+
|
|
40
|
+
Nav and footer sit **OUTSIDE** `main-wrapper`, **INSIDE** `page-wrapper`.
|
|
41
|
+
|
|
42
|
+
## Container Sizes
|
|
43
|
+
|
|
44
|
+
| Class | Max-width | Typical use |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| `container-large` | `80rem` (1280px) | Standard page content |
|
|
47
|
+
| `container-medium` | `64rem` (1024px) | Blog posts, focused content |
|
|
48
|
+
| `container-small` | `48rem` (768px) | Forms, narrow content |
|
|
49
|
+
|
|
50
|
+
## Padding Section Sizes
|
|
51
|
+
|
|
52
|
+
| Class | Desktop | Tablet (991px) | Mobile (479px) |
|
|
53
|
+
|---|---|---|---|
|
|
54
|
+
| `padding-section-large` | `8rem` | `6rem` | `4rem` |
|
|
55
|
+
| `padding-section-medium` | `5rem` | `4rem` | `3rem` |
|
|
56
|
+
| `padding-section-small` | `3rem` | `2rem` | `1.5rem` |
|
|
57
|
+
|
|
58
|
+
## padding-global Values
|
|
59
|
+
|
|
60
|
+
| Breakpoint | Value |
|
|
61
|
+
|---|---|
|
|
62
|
+
| Desktop | `2.5rem` (40px) |
|
|
63
|
+
| Tablet (991px) | `1.5rem` (24px) |
|
|
64
|
+
| Mobile (479px) | `1.25rem` (20px) |
|
|
65
|
+
|
|
66
|
+
## Section Theming
|
|
67
|
+
|
|
68
|
+
Use combo classes on the `<section>` for visual themes:
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<section class="section_cta section-style-dark">
|
|
72
|
+
<div class="padding-global padding-section-large">
|
|
73
|
+
<div class="container-large">
|
|
74
|
+
<h2 class="cta_heading">Ready to start?</h2>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</section>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```css
|
|
81
|
+
.section-style-dark { background-color: #0f172a; color: #f8fafc; }
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Complete Page Example
|
|
85
|
+
|
|
86
|
+
```html
|
|
87
|
+
<div class="page-wrapper">
|
|
88
|
+
<!-- Nav (outside main-wrapper) -->
|
|
89
|
+
<div class="w-nav navbar" data-collapse="medium" data-animation="default" data-duration="400">
|
|
90
|
+
<div class="w-container nav_container">
|
|
91
|
+
<a href="/" class="w-nav-brand">
|
|
92
|
+
<img src="logo.svg" alt="Logo" class="nav_logo" />
|
|
93
|
+
</a>
|
|
94
|
+
<nav class="w-nav-menu nav_menu">
|
|
95
|
+
<a href="/features" class="w-nav-link nav_link">Features</a>
|
|
96
|
+
<a href="/pricing" class="w-nav-link nav_link">Pricing</a>
|
|
97
|
+
<a href="/contact" class="w-nav-link nav_link">Contact</a>
|
|
98
|
+
</nav>
|
|
99
|
+
<div class="w-nav-button nav_menu-button">
|
|
100
|
+
<div class="w-icon-nav-menu"></div>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<!-- Main content -->
|
|
106
|
+
<main class="main-wrapper">
|
|
107
|
+
<!-- Hero -->
|
|
108
|
+
<section class="section_hero">
|
|
109
|
+
<div class="padding-global padding-section-large">
|
|
110
|
+
<div class="container-large">
|
|
111
|
+
<div class="hero_content">
|
|
112
|
+
<h1 class="hero_heading">Build faster with Webflow</h1>
|
|
113
|
+
<p class="hero_description text-size-large">The modern way to create websites.</p>
|
|
114
|
+
<div class="hero_button-wrapper">
|
|
115
|
+
<a href="/start" class="button">Get started</a>
|
|
116
|
+
<a href="/demo" class="button is-secondary">Watch demo</a>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</section>
|
|
122
|
+
|
|
123
|
+
<!-- Features -->
|
|
124
|
+
<section class="section_features">
|
|
125
|
+
<div class="padding-global padding-section-medium">
|
|
126
|
+
<div class="container-large">
|
|
127
|
+
<h2 class="features_heading">Why choose us</h2>
|
|
128
|
+
<div class="features_grid">
|
|
129
|
+
<div class="feature_card">
|
|
130
|
+
<h3 class="feature_title">Fast</h3>
|
|
131
|
+
<p class="feature_description">Lightning-fast performance.</p>
|
|
132
|
+
</div>
|
|
133
|
+
<div class="feature_card">
|
|
134
|
+
<h3 class="feature_title">Reliable</h3>
|
|
135
|
+
<p class="feature_description">99.9% uptime guarantee.</p>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</section>
|
|
141
|
+
</main>
|
|
142
|
+
|
|
143
|
+
<!-- Footer (outside main-wrapper) -->
|
|
144
|
+
<footer class="footer_component">
|
|
145
|
+
<div class="padding-global padding-section-small">
|
|
146
|
+
<div class="container-large">
|
|
147
|
+
<div class="footer_content">
|
|
148
|
+
<p class="footer_copyright text-size-small">2025 Company. All rights reserved.</p>
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
</footer>
|
|
153
|
+
</div>
|
|
154
|
+
```
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Button Utilities
|
|
2
|
+
|
|
3
|
+
## Base Button — `button`
|
|
4
|
+
|
|
5
|
+
Every button uses the `button` base class.
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<a href="/start" class="button">Get started</a>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Default CSS
|
|
12
|
+
|
|
13
|
+
```css
|
|
14
|
+
.button {
|
|
15
|
+
display: inline-flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
padding-top: 0.75rem;
|
|
19
|
+
padding-bottom: 0.75rem;
|
|
20
|
+
padding-left: 1.5rem;
|
|
21
|
+
padding-right: 1.5rem;
|
|
22
|
+
background-color: #000;
|
|
23
|
+
color: #fff;
|
|
24
|
+
border-radius: 0.5rem;
|
|
25
|
+
font-weight: 600;
|
|
26
|
+
text-decoration: none;
|
|
27
|
+
transition: background-color 0.2s ease, transform 0.2s ease;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.button:hover {
|
|
31
|
+
opacity: 0.9;
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Adapt colors, sizes, and border-radius to the project's design system.**
|
|
36
|
+
|
|
37
|
+
## Variants — Combo Classes
|
|
38
|
+
|
|
39
|
+
### Secondary — `button is-secondary`
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<a href="/learn" class="button is-secondary">Learn more</a>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```css
|
|
46
|
+
.button.is-secondary {
|
|
47
|
+
background-color: transparent;
|
|
48
|
+
color: #000;
|
|
49
|
+
border-width: 1px;
|
|
50
|
+
border-style: solid;
|
|
51
|
+
border-color: #000;
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Text-only — `button is-text`
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<a href="/details" class="button is-text">Read more</a>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
.button.is-text {
|
|
63
|
+
background-color: transparent;
|
|
64
|
+
color: #000;
|
|
65
|
+
padding-top: 0;
|
|
66
|
+
padding-bottom: 0;
|
|
67
|
+
padding-left: 0;
|
|
68
|
+
padding-right: 0;
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Small — `button is-small`
|
|
73
|
+
|
|
74
|
+
```html
|
|
75
|
+
<a href="/tag" class="button is-small">Tag</a>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```css
|
|
79
|
+
.button.is-small {
|
|
80
|
+
padding-top: 0.5rem;
|
|
81
|
+
padding-bottom: 0.5rem;
|
|
82
|
+
padding-left: 1rem;
|
|
83
|
+
padding-right: 1rem;
|
|
84
|
+
font-size: 0.875rem;
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Large — `button is-large`
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<a href="/start" class="button is-large">Get started now</a>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```css
|
|
95
|
+
.button.is-large {
|
|
96
|
+
padding-top: 1rem;
|
|
97
|
+
padding-bottom: 1rem;
|
|
98
|
+
padding-left: 2.5rem;
|
|
99
|
+
padding-right: 2.5rem;
|
|
100
|
+
font-size: 1.125rem;
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Button with Icon
|
|
105
|
+
|
|
106
|
+
```html
|
|
107
|
+
<a href="/start" class="button">
|
|
108
|
+
<span class="button_text">Get started</span>
|
|
109
|
+
<span class="button_icon">→</span>
|
|
110
|
+
</a>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
```css
|
|
114
|
+
.button_icon {
|
|
115
|
+
margin-left: 0.5rem;
|
|
116
|
+
transition: transform 0.2s ease;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.button:hover .button_icon {
|
|
120
|
+
/* Note: this hover effect needs a ghost block embed since it's a descendant selector */
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**For the hover effect on the icon**, add a ghost block:
|
|
125
|
+
|
|
126
|
+
```html
|
|
127
|
+
<div class="w-embed">
|
|
128
|
+
<style>
|
|
129
|
+
.button:hover .button_icon { transform: translateX(4px); }
|
|
130
|
+
</style>
|
|
131
|
+
</div>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Button Group Pattern
|
|
135
|
+
|
|
136
|
+
Wrap multiple buttons in a custom wrapper:
|
|
137
|
+
|
|
138
|
+
```html
|
|
139
|
+
<div class="hero_button-wrapper">
|
|
140
|
+
<a href="/start" class="button">Get started</a>
|
|
141
|
+
<a href="/learn" class="button is-secondary">Learn more</a>
|
|
142
|
+
</div>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
```css
|
|
146
|
+
.hero_button-wrapper {
|
|
147
|
+
display: flex;
|
|
148
|
+
flex-wrap: wrap;
|
|
149
|
+
gap: 1rem;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@media (max-width: 479px) {
|
|
153
|
+
.hero_button-wrapper {
|
|
154
|
+
flex-direction: column;
|
|
155
|
+
}
|
|
156
|
+
.hero_button-wrapper .button {
|
|
157
|
+
/* Note: needs ghost block embed for descendant selector */
|
|
158
|
+
width: 100%;
|
|
159
|
+
text-align: center;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Rules
|
|
165
|
+
|
|
166
|
+
- `button` is a **utility class** (no underscore) — reusable across all sections
|
|
167
|
+
- `is-secondary`, `is-text`, `is-small`, `is-large` are **combo classes** — never used alone
|
|
168
|
+
- CSS uses compound selector: `.button.is-secondary { }` not `.is-secondary { }`
|
|
169
|
+
- Button wrappers are **custom classes**: `hero_button-wrapper`, `cta_button-wrapper`
|
|
170
|
+
- For form submit: use `<input type="submit" class="button">` or `<button type="submit" class="button">`
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Layout Utilities
|
|
2
|
+
|
|
3
|
+
## Max Width — `max-width-[size]`
|
|
4
|
+
|
|
5
|
+
| Class | Value | | Class | Value |
|
|
6
|
+
|---|---|---|---|---|
|
|
7
|
+
| `max-width-xxlarge` | 80rem | | `max-width-small` | 20rem |
|
|
8
|
+
| `max-width-xlarge` | 64rem | | `max-width-xsmall` | 16rem |
|
|
9
|
+
| `max-width-large` | 48rem | | `max-width-xxsmall` | 12rem |
|
|
10
|
+
| `max-width-medium` | 32rem | | | |
|
|
11
|
+
|
|
12
|
+
### Responsive max-width resets
|
|
13
|
+
|
|
14
|
+
Remove max-width at a specific breakpoint and below:
|
|
15
|
+
|
|
16
|
+
| Class | Breakpoint | Effect |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| `max-width-full` | All | `max-width: none` |
|
|
19
|
+
| `max-width-full-tablet` | 991px and below | `max-width: none` |
|
|
20
|
+
| `max-width-full-mobile-landscape` | 767px and below | `max-width: none` |
|
|
21
|
+
| `max-width-full-mobile-portrait` | 479px and below | `max-width: none` |
|
|
22
|
+
|
|
23
|
+
## Hide — `hide-[breakpoint]`
|
|
24
|
+
|
|
25
|
+
Hide elements at specific breakpoints:
|
|
26
|
+
|
|
27
|
+
| Class | Effect |
|
|
28
|
+
|---|---|
|
|
29
|
+
| `hide` | Hidden at all breakpoints (`display: none`) |
|
|
30
|
+
| `hide-tablet` | Hidden at 991px and below |
|
|
31
|
+
| `hide-mobile-landscape` | Hidden at 767px and below |
|
|
32
|
+
| `hide-mobile-portrait` | Hidden at 479px and below |
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<!-- Desktop-only element -->
|
|
36
|
+
<div class="hide-tablet">Only visible on desktop</div>
|
|
37
|
+
|
|
38
|
+
<!-- Mobile-only element -->
|
|
39
|
+
<div class="hide">
|
|
40
|
+
<!-- Override with show class at mobile breakpoint via custom CSS -->
|
|
41
|
+
</div>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Background — `background-color-[name]`
|
|
45
|
+
|
|
46
|
+
| Class | Typical use |
|
|
47
|
+
|---|---|
|
|
48
|
+
| `background-color-primary` | Main brand background |
|
|
49
|
+
| `background-color-secondary` | Secondary background |
|
|
50
|
+
| `background-color-tertiary` | Subtle background |
|
|
51
|
+
| `background-color-alternate` | Contrast sections |
|
|
52
|
+
|
|
53
|
+
Adapt color values to the project's design system.
|
|
54
|
+
|
|
55
|
+
## Icons
|
|
56
|
+
|
|
57
|
+
| Class | Effect |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `icon-height-small` | Small icon height |
|
|
60
|
+
| `icon-height-medium` | Medium icon height |
|
|
61
|
+
| `icon-height-large` | Large icon height |
|
|
62
|
+
| `icon-1x1-small` | Square icon (small) |
|
|
63
|
+
| `icon-1x1-medium` | Square icon (medium) |
|
|
64
|
+
| `icon-1x1-large` | Square icon (large) |
|
|
65
|
+
|
|
66
|
+
## Positioning & Effects
|
|
67
|
+
|
|
68
|
+
| Class | CSS |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `z-index-1` | `z-index: 1; position: relative` |
|
|
71
|
+
| `z-index-2` | `z-index: 2; position: relative` |
|
|
72
|
+
| `overflow-hidden` | `overflow: hidden` |
|
|
73
|
+
| `layer` | `position: absolute; inset: 0` (full-cover overlay) |
|
|
74
|
+
| `align-center` | `margin-left: auto; margin-right: auto` |
|
|
75
|
+
| `pointer-events-none` | `pointer-events: none` |
|
|
76
|
+
|
|
77
|
+
## Aspect Ratios
|
|
78
|
+
|
|
79
|
+
| Class | Ratio |
|
|
80
|
+
|---|---|
|
|
81
|
+
| `aspect-ratio-square` | `1 / 1` |
|
|
82
|
+
| `aspect-ratio-landscape` | `3 / 2` |
|
|
83
|
+
| `aspect-ratio-widescreen` | `16 / 9` |
|
|
84
|
+
|
|
85
|
+
```html
|
|
86
|
+
<div class="hero_image-wrapper aspect-ratio-widescreen overflow-hidden">
|
|
87
|
+
<img src="hero.jpg" alt="Hero" class="hero_image" />
|
|
88
|
+
</div>
|
|
89
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Spacing Utilities
|
|
2
|
+
|
|
3
|
+
## Two-Class System
|
|
4
|
+
|
|
5
|
+
Direction + size on the **SAME element**:
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<div class="margin-bottom margin-medium"> <!-- margin-bottom: 2rem -->
|
|
9
|
+
<div class="padding-vertical padding-large"> <!-- padding-top + bottom: 3rem -->
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Margin
|
|
13
|
+
|
|
14
|
+
### Directions
|
|
15
|
+
|
|
16
|
+
`margin-top`, `margin-bottom`, `margin-left`, `margin-right`, `margin-horizontal`, `margin-vertical`
|
|
17
|
+
|
|
18
|
+
### Sizes
|
|
19
|
+
|
|
20
|
+
| Class | Value | | Class | Value |
|
|
21
|
+
|---|---|---|---|---|
|
|
22
|
+
| `margin-0` | 0 | | `margin-large` | 3rem |
|
|
23
|
+
| `margin-tiny` | 0.125rem | | `margin-xlarge` | 4rem |
|
|
24
|
+
| `margin-xxsmall` | 0.25rem | | `margin-xxlarge` | 5rem |
|
|
25
|
+
| `margin-xsmall` | 0.5rem | | `margin-huge` | 6rem |
|
|
26
|
+
| `margin-small` | 1rem | | `margin-xhuge` | 8rem |
|
|
27
|
+
| `margin-medium` | 2rem | | `margin-xxhuge` | 12rem |
|
|
28
|
+
| `margin-custom1` | 1.5rem | | `margin-custom2` | 2.5rem |
|
|
29
|
+
|
|
30
|
+
### Examples
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<h2 class="margin-bottom margin-small">Section Title</h2>
|
|
34
|
+
<p class="margin-bottom margin-medium">Paragraph with spacing below</p>
|
|
35
|
+
<div class="margin-horizontal margin-large">Horizontal margins</div>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Padding
|
|
39
|
+
|
|
40
|
+
### Directions
|
|
41
|
+
|
|
42
|
+
`padding-top`, `padding-bottom`, `padding-left`, `padding-right`, `padding-horizontal`, `padding-vertical`
|
|
43
|
+
|
|
44
|
+
### Sizes
|
|
45
|
+
|
|
46
|
+
Same scale as margin: `padding-0` through `padding-xxhuge`, plus `padding-custom1`, `padding-custom2`, `padding-custom3`.
|
|
47
|
+
|
|
48
|
+
### Examples
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<div class="padding-vertical padding-large">Vertical padding</div>
|
|
52
|
+
<div class="padding-horizontal padding-medium">Horizontal padding</div>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Spacer Blocks
|
|
56
|
+
|
|
57
|
+
Empty divs for vertical spacing between elements:
|
|
58
|
+
|
|
59
|
+
```html
|
|
60
|
+
<div class="spacer-medium"></div>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
| Class | Value |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `spacer-small` | 1rem |
|
|
66
|
+
| `spacer-medium` | 2rem |
|
|
67
|
+
| `spacer-large` | 3rem |
|
|
68
|
+
|
|
69
|
+
Use spacers when you need spacing between siblings without adding margin to either element.
|
|
70
|
+
|
|
71
|
+
## Reset
|
|
72
|
+
|
|
73
|
+
`spacing-clean` — sets all margin and padding to 0. Useful for overriding tag defaults.
|
|
74
|
+
|
|
75
|
+
```html
|
|
76
|
+
<h3 class="spacing-clean">Heading with no default margins</h3>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Important
|
|
80
|
+
|
|
81
|
+
`padding-global` and `padding-section-*` are **structural classes** (part of the page skeleton), NOT spacing utilities. Don't use them for general spacing.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Typography Utilities
|
|
2
|
+
|
|
3
|
+
HTML tags define default styles (`<h1>`–`<h6>` styled via tag styles). Use utility classes only to **override** the default.
|
|
4
|
+
|
|
5
|
+
## Heading Style Switch — `heading-style-h[n]`
|
|
6
|
+
|
|
7
|
+
Restyle a heading to LOOK like another level while preserving the semantic tag for SEO:
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<h3 class="heading-style-h2">Visually H2, semantically H3</h3>
|
|
11
|
+
<h1 class="heading-style-h4">Small heading, top-level SEO weight</h1>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
If the tag matches the desired visual style, use no class: `<h2>Title</h2>`.
|
|
15
|
+
|
|
16
|
+
## Text Size — `text-size-[size]`
|
|
17
|
+
|
|
18
|
+
| Class | Value |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `text-size-large` | 1.5rem (24px) |
|
|
21
|
+
| `text-size-medium` | 1.125rem (18px) |
|
|
22
|
+
| `text-size-regular` | 1rem (16px) |
|
|
23
|
+
| `text-size-small` | 0.875rem (14px) |
|
|
24
|
+
| `text-size-tiny` | 0.75rem (12px) |
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<p class="text-size-large">Larger paragraph for introductions</p>
|
|
28
|
+
<p class="text-size-small">Fine print or captions</p>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Text Weight — `text-weight-[name]`
|
|
32
|
+
|
|
33
|
+
| Class | Value |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `text-weight-xbold` | 800 |
|
|
36
|
+
| `text-weight-bold` | 700 |
|
|
37
|
+
| `text-weight-semibold` | 600 |
|
|
38
|
+
| `text-weight-normal` | 400 |
|
|
39
|
+
| `text-weight-light` | 300 |
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<p class="text-weight-semibold">Semi-bold text</p>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Text Color — `text-color-[name]`
|
|
46
|
+
|
|
47
|
+
| Class | Typical use |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `text-color-primary` | Main text color (dark) |
|
|
50
|
+
| `text-color-secondary` | Muted/secondary text |
|
|
51
|
+
| `text-color-alternate` | Inverted text (for dark backgrounds) |
|
|
52
|
+
|
|
53
|
+
Adapt actual color values to the project's design system.
|
|
54
|
+
|
|
55
|
+
```html
|
|
56
|
+
<p class="text-color-secondary">Muted helper text</p>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Text Alignment — `text-align-[dir]`
|
|
60
|
+
|
|
61
|
+
`text-align-left`, `text-align-center`, `text-align-right`
|
|
62
|
+
|
|
63
|
+
```html
|
|
64
|
+
<div class="text-align-center">
|
|
65
|
+
<h2>Centered heading</h2>
|
|
66
|
+
<p>Centered paragraph</p>
|
|
67
|
+
</div>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Text Style — `text-style-[name]`
|
|
71
|
+
|
|
72
|
+
| Class | CSS | Use |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| `text-style-allcaps` | `text-transform: uppercase; letter-spacing: 0.05em` | Labels, badges |
|
|
75
|
+
| `text-style-italic` | `font-style: italic` | Emphasis |
|
|
76
|
+
| `text-style-link` | `text-decoration: underline` | Inline links |
|
|
77
|
+
| `text-style-muted` | `opacity: 0.6` | De-emphasized text |
|
|
78
|
+
| `text-style-nowrap` | `white-space: nowrap` | Prevent line breaks |
|
|
79
|
+
| `text-style-strikethrough` | `text-decoration: line-through` | Deleted/old prices |
|
|
80
|
+
| `text-style-2lines` | Line clamp to 2 lines | Card descriptions |
|
|
81
|
+
| `text-style-3lines` | Line clamp to 3 lines | Preview text |
|
|
82
|
+
|
|
83
|
+
```html
|
|
84
|
+
<span class="text-style-allcaps text-size-small">Featured</span>
|
|
85
|
+
<p class="text-style-2lines">This text will be truncated to 2 lines with an ellipsis if it overflows...</p>
|
|
86
|
+
```
|