@jaimevalasek/aioson 1.30.0 → 1.30.2
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/CHANGELOG.md +18 -0
- package/docs/design-previews/cognitive-core-ui-auth.html +95 -0
- package/docs/design-previews/cognitive-core-ui-kanban.html +231 -0
- package/docs/design-previews/cognitive-core-ui-list-detail.html +174 -0
- package/docs/design-previews/cognitive-core-ui-preview.css +1315 -0
- package/docs/design-previews/cognitive-core-ui-settings.html +142 -0
- package/docs/design-previews/cognitive-core-ui-website.html +190 -1009
- package/docs/design-previews/cognitive-core-ui.html +281 -463
- package/docs/design-previews/index.html +83 -31
- package/package.json +1 -1
- package/src/constants.js +578 -514
- package/template/.aioson/docs/integrations/dashboard-app-form-publish-mapping.md +183 -0
- package/template/.aioson/docs/play/README.md +74 -0
- package/template/.aioson/docs/play/agent-usage-guide.md +112 -0
- package/template/.aioson/docs/play/app-compatibility-guide.md +117 -0
- package/template/.aioson/docs/play/auth-services-and-testing.md +235 -0
- package/template/.aioson/docs/play/llm-data-and-bindings.md +238 -0
- package/template/.aioson/docs/play/manifest-and-runtime.md +267 -0
- package/template/.aioson/docs/play/source-map.md +104 -0
- package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +266 -243
- package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -293
- package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -827
- package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -250
- package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -585
- package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -365
- package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +485 -482
- package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +386 -387
- package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +228 -205
- package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -338
- package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -977
- package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -218
- package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -326
- package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -461
- package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -293
- package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -352
- package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +233 -210
- package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -319
- package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -365
- package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -196
- package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -244
- package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -235
- package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -215
- package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -295
- package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +239 -203
- package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -339
- package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +417 -407
- package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +289 -272
- package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +525 -524
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +279 -279
- package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +355 -289
- package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +443 -437
- package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +245 -222
- package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -159
- package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -498
- package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -236
- package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -274
- package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -355
- package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -198
- package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -307
- package/template/.aioson/skills/design/interface-design/SKILL.md +68 -47
- package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -105
- package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -101
- package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +92 -71
- package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -74
- package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -173
- package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +236 -213
- package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -228
- package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -855
- package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -334
- package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -342
- package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -286
- package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -458
- package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -723
- package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +83 -62
- package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -74
- package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -116
- package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -47
- package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -215
- package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -31
- package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +94 -66
- package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +366 -366
- package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -150
- package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -270
- package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -189
- package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +161 -161
- package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +232 -209
- package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -324
- package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -508
- package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -223
- package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -374
- package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -356
- package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -288
- package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -289
|
@@ -1,368 +1,368 @@
|
|
|
1
|
-
# Components — pt.squarespace.com
|
|
2
|
-
|
|
3
|
-
## Button
|
|
4
|
-
|
|
5
|
-
### Variants
|
|
6
|
-
|
|
7
|
-
| Variant | Description | Token Usage |
|
|
8
|
-
|---------|-------------|-------------|
|
|
9
|
-
| `primary` | Solid white bg, dark text | `bg: white`, `color: black` |
|
|
10
|
-
| `secondary` | Ghost/outline style | `border: 1px solid var(--border)` |
|
|
11
|
-
| `inline` | Text with arrow suffix | `color: var(--text-primary)` |
|
|
12
|
-
| `cta--light` | For dark backgrounds | `bg: white`, `color: black` |
|
|
13
|
-
| `cta--dark` | For light backgrounds | `bg: black`, `color: white` |
|
|
14
|
-
|
|
15
|
-
### States
|
|
16
|
-
|
|
17
|
-
- **default:** Base colors per variant
|
|
18
|
-
- **hover (primary/secondary):** `mix-blend-mode: difference` pseudo-element scales in — NOT a color transition. The white pseudo-element with blend mode creates a color inversion effect.
|
|
19
|
-
- **active:** Slight scale (0.98) if any
|
|
20
|
-
- **disabled:** `opacity: 0.5`, `pointer-events: none`
|
|
21
|
-
- **loading:** Spinner or text change
|
|
22
|
-
|
|
23
|
-
### CTA Hover Mechanic — mix-blend-mode: difference
|
|
24
|
-
|
|
25
|
-
**This is Squarespace's real CTA effect.** Do NOT implement as a simple `background-color` transition:
|
|
26
|
-
|
|
27
|
-
```css
|
|
28
|
-
.cta--primary,
|
|
29
|
-
.cta--secondary {
|
|
30
|
-
position: relative;
|
|
31
|
-
overflow: hidden;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.cta--primary::after,
|
|
35
|
-
.cta--secondary::after {
|
|
36
|
-
content: '';
|
|
37
|
-
mix-blend-mode: difference;
|
|
38
|
-
background-color: white;
|
|
39
|
-
transform-origin: 0;
|
|
40
|
-
width: 100%;
|
|
41
|
-
height: 100%;
|
|
42
|
-
position: absolute;
|
|
43
|
-
top: 0;
|
|
44
|
-
left: 0;
|
|
45
|
-
transform: scaleX(0);
|
|
46
|
-
transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.cta--primary:hover::after,
|
|
50
|
-
.cta--secondary:hover::after {
|
|
51
|
-
transform: scaleX(1);
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**Effect:** The white fill + `difference` blend mode inverts the button colors — a black button with white text becomes white with black text without any `color:` change.
|
|
56
|
-
|
|
57
|
-
### DOM Structure
|
|
58
|
-
```html
|
|
59
|
-
<a class="cta cta--primary cta--light">Button Text</a>
|
|
60
|
-
<!-- or -->
|
|
61
|
-
<button class="cta cta--primary">Button Text</button>
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Tokens Applied
|
|
65
|
-
- `font-family: var(--font-display)`
|
|
66
|
-
- `font-size: var(--text-sm)`
|
|
67
|
-
- `font-weight: var(--font-medium)`
|
|
68
|
-
- `padding: var(--space-3) var(--space-4)`
|
|
69
|
-
- `border-radius: var(--radius-none)` (0px)
|
|
70
|
-
- `transition: var(--transition-all)`
|
|
71
|
-
- `cursor: pointer`
|
|
72
|
-
|
|
73
|
-
### Tertiary CTA — Sliding Underline (.cta--tertiary)
|
|
74
|
-
|
|
75
|
-
Text links with an animated dual-gradient underline. The underline slides in from left on hover and out to right on mouse-leave:
|
|
76
|
-
|
|
77
|
-
```css
|
|
78
|
-
.cta--tertiary {
|
|
79
|
-
background-image:
|
|
80
|
-
linear-gradient(currentColor, currentColor),
|
|
81
|
-
linear-gradient(currentColor, currentColor);
|
|
82
|
-
background-size: 100% 1px, 0% 1px;
|
|
83
|
-
background-repeat: no-repeat;
|
|
84
|
-
background-position: -200% 100%, -100% 100%;
|
|
85
|
-
animation: 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) forwards ctaUnderlineSlideOut;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.cta--tertiary:hover {
|
|
89
|
-
animation: 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) forwards ctaUnderlineSlideIn;
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Requires `@keyframes ctaUnderlineSlideIn / ctaUnderlineSlideOut` from `motion.md`.
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Navigation
|
|
98
|
-
|
|
99
|
-
### Variants
|
|
100
|
-
|
|
101
|
-
| Variant | Description |
|
|
102
|
-
|---------|-------------|
|
|
103
|
-
| `desktop` | Horizontal links, logo left, CTAs right |
|
|
104
|
-
| `mobile` | Hamburger + slide-out drawer |
|
|
105
|
-
|
|
106
|
-
### States
|
|
107
|
-
|
|
108
|
-
- **default:** Transparent background initially
|
|
109
|
-
- **scrolled:** Solid background (e.g. `bg: white`) kicks in after ~50px scroll
|
|
110
|
-
- **mobile-open:** Hamburger becomes X, drawer wipes in from right via `clip-path` animation (NOT `translateX`)
|
|
111
|
-
|
|
112
|
-
### Mobile Menu — clip-path Swipe
|
|
113
|
-
|
|
114
|
-
The mobile drawer does NOT use `transform: translateX`. It uses `clip-path: polygon()` animation:
|
|
115
|
-
|
|
116
|
-
```css
|
|
117
|
-
/* Open */
|
|
118
|
-
.global-navigation__mobile-menu--open {
|
|
119
|
-
animation: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) forwards swipeIn;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/* Close */
|
|
123
|
-
.global-navigation__mobile-menu--close {
|
|
124
|
-
animation: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) forwards swipeOut;
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Requires `@keyframes swipeIn / swipeOut` from `motion.md`. The menu covers full viewport, background `rgb(0, 0, 0)` with white links.
|
|
129
|
-
|
|
130
|
-
### Accordion (Mobile Nav)
|
|
131
|
-
|
|
132
|
-
Sub-menus use CSS grid transition — no JS height calculation:
|
|
133
|
-
|
|
134
|
-
```css
|
|
135
|
-
.global-navigation__accordion-content {
|
|
136
|
-
display: grid;
|
|
137
|
-
grid-template-rows: 0fr;
|
|
138
|
-
transition: grid-template-rows 0.7s cubic-bezier(0.165, 0.84, 0.44, 1),
|
|
139
|
-
padding 0.7s cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
140
|
-
}
|
|
141
|
-
.global-navigation__accordion-content--open {
|
|
142
|
-
grid-template-rows: 1fr;
|
|
143
|
-
}
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### DOM Structure
|
|
147
|
-
```html
|
|
148
|
-
<header class="global-navigation">
|
|
149
|
-
<a class="global-navigation__logo-link">Logo</a>
|
|
150
|
-
<nav class="global-navigation__links">
|
|
151
|
-
<a class="cta cta--inline">Products</a>
|
|
152
|
-
<a class="cta cta--inline">Solutions</a>
|
|
153
|
-
<button class="cta cta--inline">Resources</button>
|
|
154
|
-
</nav>
|
|
155
|
-
<div class="global-navigation__cta">
|
|
156
|
-
<a class="cta cta--inline">Login</a>
|
|
157
|
-
<a class="cta cta--primary cta--light">Get Started</a>
|
|
158
|
-
</div>
|
|
159
|
-
<button class="global-navigation__hamb">☰</button>
|
|
160
|
-
</header>
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
### Tokens Applied
|
|
164
|
-
- `font-family: var(--font-body)`
|
|
165
|
-
- `font-size: var(--text-base)`
|
|
166
|
-
- `font-weight: var(--font-normal)`
|
|
167
|
-
- `padding: var(--space-4) var(--space-4)`
|
|
168
|
-
- `gap: var(--space-4)`
|
|
169
|
-
- `transition: top var(--transition-medium) var(--ease-sqsp-cta)`
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Link
|
|
174
|
-
|
|
175
|
-
### Variants
|
|
176
|
-
|
|
177
|
-
| Variant | Description | Context |
|
|
178
|
-
|---------|-------------|---------|
|
|
179
|
-
| `nav-link` | Navigation links | Header |
|
|
180
|
-
| `footer-link` | Footer links | Footer |
|
|
181
|
-
| `cta--inline` | Inline CTA with arrow | Various |
|
|
182
|
-
|
|
183
|
-
### States
|
|
184
|
-
|
|
185
|
-
- **default:** `color: var(--text-primary)` or `var(--text-inverse)`
|
|
186
|
-
- **hover:** `color: var(--text-muted)`, optional underline
|
|
187
|
-
|
|
188
|
-
### Tokens Applied
|
|
189
|
-
- `font-family: var(--font-body)`
|
|
190
|
-
- `font-size: var(--text-base)`
|
|
191
|
-
- `font-weight: var(--font-normal)`
|
|
192
|
-
- `transition: var(--transition-colors)`
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Input
|
|
197
|
-
|
|
198
|
-
### Variants
|
|
199
|
-
|
|
200
|
-
| Variant | Description |
|
|
201
|
-
|---------|-------------|
|
|
202
|
-
| `text` | Standard text input |
|
|
203
|
-
| `domain` | Domain search input with search button |
|
|
204
|
-
|
|
205
|
-
### States
|
|
206
|
-
|
|
207
|
-
- **default:** `border: 1px solid var(--border)`
|
|
208
|
-
- **focus:** Border color changes to accent
|
|
209
|
-
- **error:** Border color `var(--error)`
|
|
210
|
-
- **disabled:** `opacity: 0.5`
|
|
211
|
-
|
|
212
|
-
### DOM Structure
|
|
213
|
-
```html
|
|
214
|
-
<div class="input-wrapper">
|
|
1
|
+
# Components — pt.squarespace.com
|
|
2
|
+
|
|
3
|
+
## Button
|
|
4
|
+
|
|
5
|
+
### Variants
|
|
6
|
+
|
|
7
|
+
| Variant | Description | Token Usage |
|
|
8
|
+
|---------|-------------|-------------|
|
|
9
|
+
| `primary` | Solid white bg, dark text | `bg: white`, `color: black` |
|
|
10
|
+
| `secondary` | Ghost/outline style | `border: 1px solid var(--border)` |
|
|
11
|
+
| `inline` | Text with arrow suffix | `color: var(--text-primary)` |
|
|
12
|
+
| `cta--light` | For dark backgrounds | `bg: white`, `color: black` |
|
|
13
|
+
| `cta--dark` | For light backgrounds | `bg: black`, `color: white` |
|
|
14
|
+
|
|
15
|
+
### States
|
|
16
|
+
|
|
17
|
+
- **default:** Base colors per variant
|
|
18
|
+
- **hover (primary/secondary):** `mix-blend-mode: difference` pseudo-element scales in — NOT a color transition. The white pseudo-element with blend mode creates a color inversion effect.
|
|
19
|
+
- **active:** Slight scale (0.98) if any
|
|
20
|
+
- **disabled:** `opacity: 0.5`, `pointer-events: none`
|
|
21
|
+
- **loading:** Spinner or text change
|
|
22
|
+
|
|
23
|
+
### CTA Hover Mechanic — mix-blend-mode: difference
|
|
24
|
+
|
|
25
|
+
**This is Squarespace's real CTA effect.** Do NOT implement as a simple `background-color` transition:
|
|
26
|
+
|
|
27
|
+
```css
|
|
28
|
+
.cta--primary,
|
|
29
|
+
.cta--secondary {
|
|
30
|
+
position: relative;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.cta--primary::after,
|
|
35
|
+
.cta--secondary::after {
|
|
36
|
+
content: '';
|
|
37
|
+
mix-blend-mode: difference;
|
|
38
|
+
background-color: white;
|
|
39
|
+
transform-origin: 0;
|
|
40
|
+
width: 100%;
|
|
41
|
+
height: 100%;
|
|
42
|
+
position: absolute;
|
|
43
|
+
top: 0;
|
|
44
|
+
left: 0;
|
|
45
|
+
transform: scaleX(0);
|
|
46
|
+
transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.cta--primary:hover::after,
|
|
50
|
+
.cta--secondary:hover::after {
|
|
51
|
+
transform: scaleX(1);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Effect:** The white fill + `difference` blend mode inverts the button colors — a black button with white text becomes white with black text without any `color:` change.
|
|
56
|
+
|
|
57
|
+
### DOM Structure
|
|
58
|
+
```html
|
|
59
|
+
<a class="cta cta--primary cta--light">Button Text</a>
|
|
60
|
+
<!-- or -->
|
|
61
|
+
<button class="cta cta--primary">Button Text</button>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Tokens Applied
|
|
65
|
+
- `font-family: var(--font-display)`
|
|
66
|
+
- `font-size: var(--text-sm)`
|
|
67
|
+
- `font-weight: var(--font-medium)`
|
|
68
|
+
- `padding: var(--space-3) var(--space-4)`
|
|
69
|
+
- `border-radius: var(--radius-none)` (0px)
|
|
70
|
+
- `transition: var(--transition-all)`
|
|
71
|
+
- `cursor: pointer`
|
|
72
|
+
|
|
73
|
+
### Tertiary CTA — Sliding Underline (.cta--tertiary)
|
|
74
|
+
|
|
75
|
+
Text links with an animated dual-gradient underline. The underline slides in from left on hover and out to right on mouse-leave:
|
|
76
|
+
|
|
77
|
+
```css
|
|
78
|
+
.cta--tertiary {
|
|
79
|
+
background-image:
|
|
80
|
+
linear-gradient(currentColor, currentColor),
|
|
81
|
+
linear-gradient(currentColor, currentColor);
|
|
82
|
+
background-size: 100% 1px, 0% 1px;
|
|
83
|
+
background-repeat: no-repeat;
|
|
84
|
+
background-position: -200% 100%, -100% 100%;
|
|
85
|
+
animation: 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) forwards ctaUnderlineSlideOut;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.cta--tertiary:hover {
|
|
89
|
+
animation: 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) forwards ctaUnderlineSlideIn;
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Requires `@keyframes ctaUnderlineSlideIn / ctaUnderlineSlideOut` from `motion.md`.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Navigation
|
|
98
|
+
|
|
99
|
+
### Variants
|
|
100
|
+
|
|
101
|
+
| Variant | Description |
|
|
102
|
+
|---------|-------------|
|
|
103
|
+
| `desktop` | Horizontal links, logo left, CTAs right |
|
|
104
|
+
| `mobile` | Hamburger + slide-out drawer |
|
|
105
|
+
|
|
106
|
+
### States
|
|
107
|
+
|
|
108
|
+
- **default:** Transparent background initially
|
|
109
|
+
- **scrolled:** Solid background (e.g. `bg: white`) kicks in after ~50px scroll
|
|
110
|
+
- **mobile-open:** Hamburger becomes X, drawer wipes in from right via `clip-path` animation (NOT `translateX`)
|
|
111
|
+
|
|
112
|
+
### Mobile Menu — clip-path Swipe
|
|
113
|
+
|
|
114
|
+
The mobile drawer does NOT use `transform: translateX`. It uses `clip-path: polygon()` animation:
|
|
115
|
+
|
|
116
|
+
```css
|
|
117
|
+
/* Open */
|
|
118
|
+
.global-navigation__mobile-menu--open {
|
|
119
|
+
animation: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) forwards swipeIn;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* Close */
|
|
123
|
+
.global-navigation__mobile-menu--close {
|
|
124
|
+
animation: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) forwards swipeOut;
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Requires `@keyframes swipeIn / swipeOut` from `motion.md`. The menu covers full viewport, background `rgb(0, 0, 0)` with white links.
|
|
129
|
+
|
|
130
|
+
### Accordion (Mobile Nav)
|
|
131
|
+
|
|
132
|
+
Sub-menus use CSS grid transition — no JS height calculation:
|
|
133
|
+
|
|
134
|
+
```css
|
|
135
|
+
.global-navigation__accordion-content {
|
|
136
|
+
display: grid;
|
|
137
|
+
grid-template-rows: 0fr;
|
|
138
|
+
transition: grid-template-rows 0.7s cubic-bezier(0.165, 0.84, 0.44, 1),
|
|
139
|
+
padding 0.7s cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
140
|
+
}
|
|
141
|
+
.global-navigation__accordion-content--open {
|
|
142
|
+
grid-template-rows: 1fr;
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### DOM Structure
|
|
147
|
+
```html
|
|
148
|
+
<header class="global-navigation">
|
|
149
|
+
<a class="global-navigation__logo-link">Logo</a>
|
|
150
|
+
<nav class="global-navigation__links">
|
|
151
|
+
<a class="cta cta--inline">Products</a>
|
|
152
|
+
<a class="cta cta--inline">Solutions</a>
|
|
153
|
+
<button class="cta cta--inline">Resources</button>
|
|
154
|
+
</nav>
|
|
155
|
+
<div class="global-navigation__cta">
|
|
156
|
+
<a class="cta cta--inline">Login</a>
|
|
157
|
+
<a class="cta cta--primary cta--light">Get Started</a>
|
|
158
|
+
</div>
|
|
159
|
+
<button class="global-navigation__hamb">☰</button>
|
|
160
|
+
</header>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Tokens Applied
|
|
164
|
+
- `font-family: var(--font-body)`
|
|
165
|
+
- `font-size: var(--text-base)`
|
|
166
|
+
- `font-weight: var(--font-normal)`
|
|
167
|
+
- `padding: var(--space-4) var(--space-4)`
|
|
168
|
+
- `gap: var(--space-4)`
|
|
169
|
+
- `transition: top var(--transition-medium) var(--ease-sqsp-cta)`
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Link
|
|
174
|
+
|
|
175
|
+
### Variants
|
|
176
|
+
|
|
177
|
+
| Variant | Description | Context |
|
|
178
|
+
|---------|-------------|---------|
|
|
179
|
+
| `nav-link` | Navigation links | Header |
|
|
180
|
+
| `footer-link` | Footer links | Footer |
|
|
181
|
+
| `cta--inline` | Inline CTA with arrow | Various |
|
|
182
|
+
|
|
183
|
+
### States
|
|
184
|
+
|
|
185
|
+
- **default:** `color: var(--text-primary)` or `var(--text-inverse)`
|
|
186
|
+
- **hover:** `color: var(--text-muted)`, optional underline
|
|
187
|
+
|
|
188
|
+
### Tokens Applied
|
|
189
|
+
- `font-family: var(--font-body)`
|
|
190
|
+
- `font-size: var(--text-base)`
|
|
191
|
+
- `font-weight: var(--font-normal)`
|
|
192
|
+
- `transition: var(--transition-colors)`
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Input
|
|
197
|
+
|
|
198
|
+
### Variants
|
|
199
|
+
|
|
200
|
+
| Variant | Description |
|
|
201
|
+
|---------|-------------|
|
|
202
|
+
| `text` | Standard text input |
|
|
203
|
+
| `domain` | Domain search input with search button |
|
|
204
|
+
|
|
205
|
+
### States
|
|
206
|
+
|
|
207
|
+
- **default:** `border: 1px solid var(--border)`
|
|
208
|
+
- **focus:** Border color changes to accent
|
|
209
|
+
- **error:** Border color `var(--error)`
|
|
210
|
+
- **disabled:** `opacity: 0.5`
|
|
211
|
+
|
|
212
|
+
### DOM Structure
|
|
213
|
+
```html
|
|
214
|
+
<div class="input-wrapper">
|
|
215
215
|
<input type="text" class="input input--domain" placeholder="Enter your domain">
|
|
216
|
-
</div>
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
### Tokens Applied
|
|
220
|
-
- `background: var(--bg-base)`
|
|
221
|
-
- `border: 1px solid var(--border)`
|
|
222
|
-
- `border-radius: var(--radius-none)`
|
|
223
|
-
- `padding: var(--space-3)`
|
|
224
|
-
- `font-family: var(--font-body)`
|
|
225
|
-
- `font-size: var(--text-base)`
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## Card
|
|
230
|
-
|
|
231
|
-
### Variants
|
|
232
|
-
|
|
233
|
-
| Variant | Description |
|
|
234
|
-
|---------|-------------|
|
|
235
|
-
| `feature-card` | Icon + title + description |
|
|
236
|
-
| `stat-card` | Large number + label |
|
|
237
|
-
| `pricing-card` | Price + features + CTA |
|
|
238
|
-
|
|
239
|
-
### States
|
|
240
|
-
|
|
241
|
-
- **default:** No shadow, flat design
|
|
242
|
-
- **hover:** May have subtle color shift
|
|
243
|
-
|
|
244
|
-
### Tokens Applied
|
|
245
|
-
- `background: var(--bg-surface)` or transparent
|
|
246
|
-
- `border-radius: var(--radius-none)`
|
|
247
|
-
- `box-shadow: var(--shadow-sm)` (none typically)
|
|
248
|
-
- `padding: var(--space-5)`
|
|
249
|
-
|
|
250
|
-
---
|
|
251
|
-
|
|
252
|
-
## Card Carousel (Platform / One Platform section)
|
|
253
|
-
|
|
254
|
-
A horizontally scrollable row of cards that loop. Each card holds a `<video>` or `<img>` with an absolute text label.
|
|
255
|
-
|
|
256
|
-
### DOM Structure
|
|
257
|
-
```html
|
|
258
|
-
<div class="card-carousel">
|
|
259
|
-
<div class="card-carousel__track">
|
|
260
|
-
<div class="card-carousel__card">
|
|
261
|
-
<video autoplay muted loop playsinline preload="none">
|
|
262
|
-
<source src="/videos/website-editing.webm" type="video/webm">
|
|
263
|
-
</video>
|
|
216
|
+
</div>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Tokens Applied
|
|
220
|
+
- `background: var(--bg-base)`
|
|
221
|
+
- `border: 1px solid var(--border)`
|
|
222
|
+
- `border-radius: var(--radius-none)`
|
|
223
|
+
- `padding: var(--space-3)`
|
|
224
|
+
- `font-family: var(--font-body)`
|
|
225
|
+
- `font-size: var(--text-base)`
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Card
|
|
230
|
+
|
|
231
|
+
### Variants
|
|
232
|
+
|
|
233
|
+
| Variant | Description |
|
|
234
|
+
|---------|-------------|
|
|
235
|
+
| `feature-card` | Icon + title + description |
|
|
236
|
+
| `stat-card` | Large number + label |
|
|
237
|
+
| `pricing-card` | Price + features + CTA |
|
|
238
|
+
|
|
239
|
+
### States
|
|
240
|
+
|
|
241
|
+
- **default:** No shadow, flat design
|
|
242
|
+
- **hover:** May have subtle color shift
|
|
243
|
+
|
|
244
|
+
### Tokens Applied
|
|
245
|
+
- `background: var(--bg-surface)` or transparent
|
|
246
|
+
- `border-radius: var(--radius-none)`
|
|
247
|
+
- `box-shadow: var(--shadow-sm)` (none typically)
|
|
248
|
+
- `padding: var(--space-5)`
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Card Carousel (Platform / One Platform section)
|
|
253
|
+
|
|
254
|
+
A horizontally scrollable row of cards that loop. Each card holds a `<video>` or `<img>` with an absolute text label.
|
|
255
|
+
|
|
256
|
+
### DOM Structure
|
|
257
|
+
```html
|
|
258
|
+
<div class="card-carousel">
|
|
259
|
+
<div class="card-carousel__track">
|
|
260
|
+
<div class="card-carousel__card">
|
|
261
|
+
<video autoplay muted loop playsinline preload="none">
|
|
262
|
+
<source src="/videos/website-editing.webm" type="video/webm">
|
|
263
|
+
</video>
|
|
264
264
|
<span class="card-carousel__label">Website editing</span>
|
|
265
|
-
</div>
|
|
266
|
-
<!-- repeat cards -->
|
|
267
|
-
</div>
|
|
268
|
-
</div>
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
### Key CSS
|
|
272
|
-
```css
|
|
273
|
-
.card-carousel__card {
|
|
274
|
-
position: relative;
|
|
275
|
-
flex-shrink: 0;
|
|
276
|
-
border-radius: var(--radius-none);
|
|
277
|
-
overflow: hidden;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
.card-carousel__label {
|
|
281
|
-
position: absolute;
|
|
282
|
-
bottom: var(--space-4);
|
|
283
|
-
left: var(--space-4);
|
|
284
|
-
font-family: var(--font-display);
|
|
285
|
-
font-size: var(--text-sm);
|
|
286
|
-
color: var(--text-inverse);
|
|
287
|
-
background: rgba(0, 0, 0, 0.55);
|
|
288
|
-
padding: var(--space-2) var(--space-3);
|
|
289
|
-
}
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Cards use `preload="none"` — only hero video is eager-loaded.
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## Section
|
|
297
|
-
|
|
298
|
-
### Hero Section
|
|
299
|
-
- Full viewport dark background (`background: var(--bg-inverse)`)
|
|
300
|
-
- Video background: `<video autoPlay muted loop playsInline preload="auto">` with WebM + MP4 sources
|
|
301
|
-
- Dark overlay: `rgba(0, 0, 0, 0.52)` absolute layer over video
|
|
302
|
-
- Centered content
|
|
303
|
-
- Large headline: `font-family: var(--font-display)`, `font-size: var(--text-3xl)`, `font-weight: var(--font-light)`
|
|
304
|
-
- Single CTA button (`.cta--primary.cta--light`)
|
|
305
|
-
|
|
306
|
-
### Content Section
|
|
307
|
-
- Max-width container
|
|
308
|
-
- Light background
|
|
309
|
-
- H2 headline
|
|
310
|
-
- Grid or flex content layout
|
|
311
|
-
|
|
312
|
-
### CTA Section
|
|
313
|
-
- Colored background (teal or dark)
|
|
314
|
-
- Centered headline + CTA
|
|
315
|
-
- White text
|
|
316
|
-
|
|
317
|
-
### Footer
|
|
318
|
-
- Dark background (`bg: var(--bg-inverse)`)
|
|
319
|
-
- 4-column grid of links
|
|
320
|
-
- Bottom row with legal text
|
|
321
|
-
- `padding: var(--space-16) var(--space-8)`
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
## Typography Components
|
|
326
|
-
|
|
327
|
-
### Display Heading (H1)
|
|
328
|
-
```css
|
|
329
|
-
font-family: var(--font-display);
|
|
330
|
-
font-size: var(--text-3xl);
|
|
331
|
-
font-weight: var(--font-light);
|
|
332
|
-
color: var(--text-inverse);
|
|
333
|
-
line-height: var(--leading-tight);
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
### Section Heading (H2)
|
|
337
|
-
```css
|
|
338
|
-
font-family: var(--font-display);
|
|
339
|
-
font-size: var(--text-xl);
|
|
340
|
-
font-weight: var(--font-normal);
|
|
341
|
-
color: var(--text-primary);
|
|
342
|
-
line-height: var(--leading-normal);
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
### Serif Heading (H3)
|
|
346
|
-
```css
|
|
347
|
-
font-family: var(--font-serif);
|
|
348
|
-
font-size: var(--text-lg);
|
|
349
|
-
font-weight: var(--font-normal);
|
|
350
|
-
color: var(--text-inverse);
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
### Body Text
|
|
354
|
-
```css
|
|
355
|
-
font-family: var(--font-body);
|
|
356
|
-
font-size: var(--text-base);
|
|
357
|
-
font-weight: var(--font-normal);
|
|
358
|
-
color: var(--text-primary);
|
|
359
|
-
line-height: var(--leading-relaxed);
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
### Caption/Muted
|
|
363
|
-
```css
|
|
364
|
-
font-family: var(--font-body);
|
|
365
|
-
font-size: var(--text-sm);
|
|
366
|
-
font-weight: var(--font-normal);
|
|
367
|
-
color: var(--text-muted);
|
|
368
|
-
```
|
|
265
|
+
</div>
|
|
266
|
+
<!-- repeat cards -->
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Key CSS
|
|
272
|
+
```css
|
|
273
|
+
.card-carousel__card {
|
|
274
|
+
position: relative;
|
|
275
|
+
flex-shrink: 0;
|
|
276
|
+
border-radius: var(--radius-none);
|
|
277
|
+
overflow: hidden;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.card-carousel__label {
|
|
281
|
+
position: absolute;
|
|
282
|
+
bottom: var(--space-4);
|
|
283
|
+
left: var(--space-4);
|
|
284
|
+
font-family: var(--font-display);
|
|
285
|
+
font-size: var(--text-sm);
|
|
286
|
+
color: var(--text-inverse);
|
|
287
|
+
background: rgba(0, 0, 0, 0.55);
|
|
288
|
+
padding: var(--space-2) var(--space-3);
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Cards use `preload="none"` — only hero video is eager-loaded.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Section
|
|
297
|
+
|
|
298
|
+
### Hero Section
|
|
299
|
+
- Full viewport dark background (`background: var(--bg-inverse)`)
|
|
300
|
+
- Video background: `<video autoPlay muted loop playsInline preload="auto">` with WebM + MP4 sources
|
|
301
|
+
- Dark overlay: `rgba(0, 0, 0, 0.52)` absolute layer over video
|
|
302
|
+
- Centered content
|
|
303
|
+
- Large headline: `font-family: var(--font-display)`, `font-size: var(--text-3xl)`, `font-weight: var(--font-light)`
|
|
304
|
+
- Single CTA button (`.cta--primary.cta--light`)
|
|
305
|
+
|
|
306
|
+
### Content Section
|
|
307
|
+
- Max-width container
|
|
308
|
+
- Light background
|
|
309
|
+
- H2 headline
|
|
310
|
+
- Grid or flex content layout
|
|
311
|
+
|
|
312
|
+
### CTA Section
|
|
313
|
+
- Colored background (teal or dark)
|
|
314
|
+
- Centered headline + CTA
|
|
315
|
+
- White text
|
|
316
|
+
|
|
317
|
+
### Footer
|
|
318
|
+
- Dark background (`bg: var(--bg-inverse)`)
|
|
319
|
+
- 4-column grid of links
|
|
320
|
+
- Bottom row with legal text
|
|
321
|
+
- `padding: var(--space-16) var(--space-8)`
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Typography Components
|
|
326
|
+
|
|
327
|
+
### Display Heading (H1)
|
|
328
|
+
```css
|
|
329
|
+
font-family: var(--font-display);
|
|
330
|
+
font-size: var(--text-3xl);
|
|
331
|
+
font-weight: var(--font-light);
|
|
332
|
+
color: var(--text-inverse);
|
|
333
|
+
line-height: var(--leading-tight);
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Section Heading (H2)
|
|
337
|
+
```css
|
|
338
|
+
font-family: var(--font-display);
|
|
339
|
+
font-size: var(--text-xl);
|
|
340
|
+
font-weight: var(--font-normal);
|
|
341
|
+
color: var(--text-primary);
|
|
342
|
+
line-height: var(--leading-normal);
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Serif Heading (H3)
|
|
346
|
+
```css
|
|
347
|
+
font-family: var(--font-serif);
|
|
348
|
+
font-size: var(--text-lg);
|
|
349
|
+
font-weight: var(--font-normal);
|
|
350
|
+
color: var(--text-inverse);
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Body Text
|
|
354
|
+
```css
|
|
355
|
+
font-family: var(--font-body);
|
|
356
|
+
font-size: var(--text-base);
|
|
357
|
+
font-weight: var(--font-normal);
|
|
358
|
+
color: var(--text-primary);
|
|
359
|
+
line-height: var(--leading-relaxed);
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### Caption/Muted
|
|
363
|
+
```css
|
|
364
|
+
font-family: var(--font-body);
|
|
365
|
+
font-size: var(--text-sm);
|
|
366
|
+
font-weight: var(--font-normal);
|
|
367
|
+
color: var(--text-muted);
|
|
368
|
+
```
|