@syncedco/flow 0.3.1 → 0.4.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.
- package/CHANGELOG.md +33 -0
- package/CONTRIBUTING.md +18 -5
- package/README.md +32 -9
- package/base.css +2 -1
- package/bin/synced-flow.mjs +446 -58
- package/components.css +440 -9
- package/dist/index.d.ts +69 -0
- package/dist/index.js +69 -0
- package/docs/accessibility-css.md +14 -3
- package/docs/ai-usage.md +22 -1
- package/docs/api-contract.md +10 -2
- package/docs/audit-2026-06.md +13 -12
- package/docs/base-styling.md +5 -0
- package/docs/cli-reference.md +9 -6
- package/docs/config-reference.md +2 -2
- package/docs/css-optimisation.md +10 -10
- package/docs/native-components.md +121 -0
- package/docs/patterns.md +18 -0
- package/docs/quick-start.md +6 -4
- package/docs/recipes.md +12 -0
- package/docs/release-readiness.md +32 -7
- package/docs/system-primitives.md +10 -3
- package/docs/tokens.md +10 -2
- package/examples/README.md +2 -2
- package/examples/astro/src/styles/synced-flow.generated.css +14 -0
- package/examples/next/app/synced-flow.generated.css +19 -5
- package/examples/plain-html/synced-flow.generated.css +19 -5
- package/examples/templates/README.md +2 -0
- package/examples/templates/app-settings-workflow.html +81 -0
- package/examples/vite/src/synced-flow.generated.css +19 -5
- package/examples/wordpress/assets/css/synced-flow.css +542 -9
- package/package.json +14 -3
- package/reset.css +1 -1
- package/skills/synced-flow/SKILL.md +20 -3
- package/src/index.ts +69 -0
- package/src/presets.mjs +5 -5
- package/src/tokens.mjs +10 -8
- package/styles.css +456 -21
- package/tokens.css +13 -10
package/docs/tokens.md
CHANGED
|
@@ -23,7 +23,7 @@ Semantic tokens describe intent.
|
|
|
23
23
|
```css
|
|
24
24
|
--sf-colour-background: var(--sf-colour-neutral-50);
|
|
25
25
|
--sf-colour-foreground: var(--sf-colour-neutral-900);
|
|
26
|
-
--sf-colour-primary: var(--sf-colour-orange-
|
|
26
|
+
--sf-colour-primary: var(--sf-colour-orange-800);
|
|
27
27
|
--sf-colour-surface-raised: var(--sf-colour-neutral-0);
|
|
28
28
|
--sf-colour-success-soft: oklch(62% 0.13 150 / 0.12);
|
|
29
29
|
```
|
|
@@ -37,6 +37,9 @@ Theme overrides use `.sf-theme-dark`, `[data-sf-theme="dark"]`,
|
|
|
37
37
|
`.sf-theme-light`, and `[data-sf-theme="light"]` selectors directly so they have
|
|
38
38
|
enough specificity to override default `:root` values.
|
|
39
39
|
|
|
40
|
+
The default action and link oranges use the darker 800/900 steps so white
|
|
41
|
+
button text and orange text on light surfaces meet normal-text contrast.
|
|
42
|
+
|
|
40
43
|
Use semantic utilities in projects:
|
|
41
44
|
|
|
42
45
|
```html
|
|
@@ -64,10 +67,15 @@ Type and space tokens use Utopia-style `clamp()` values.
|
|
|
64
67
|
|
|
65
68
|
```css
|
|
66
69
|
--sf-step-0: clamp(1rem, 0.9617rem + 0.1701vw, 1.125rem);
|
|
70
|
+
--sf-type-body: var(--sf-step-0);
|
|
71
|
+
--sf-text-base: var(--sf-type-body);
|
|
67
72
|
--sf-space-s-l: clamp(1rem, 0.6173rem + 1.7007vw, 2.25rem);
|
|
68
73
|
```
|
|
69
74
|
|
|
70
|
-
Prefer these tokens for new project CSS instead of fixed pixel values.
|
|
75
|
+
Prefer these tokens for new project CSS instead of fixed pixel values. The root
|
|
76
|
+
`html` element stays at `font-size: 100%` so browser and user accessibility
|
|
77
|
+
settings remain in control; Synced Flow starts its fluid body scale from
|
|
78
|
+
`--sf-text-base`.
|
|
71
79
|
|
|
72
80
|
## Core Starter Tokens
|
|
73
81
|
|
package/examples/README.md
CHANGED
|
@@ -7,8 +7,8 @@ These examples show the intended starting point for new projects.
|
|
|
7
7
|
- `vite` - Vite React setup
|
|
8
8
|
- `plain-html` - no framework setup with a complete website demo using only
|
|
9
9
|
Synced Flow primitives for header, hero, content, cards, form, notice, and footer
|
|
10
|
-
- `templates` - copy-ready full-page HTML templates for SaaS,
|
|
11
|
-
and coming soon pages
|
|
10
|
+
- `templates` - copy-ready full-page HTML templates for SaaS, app settings,
|
|
11
|
+
portfolio, blog, and coming soon pages
|
|
12
12
|
- `wordpress` - block theme style setup with enqueue code, templates, parts,
|
|
13
13
|
and PHP patterns
|
|
14
14
|
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
--step-6: clamp(2.986rem, 2.5863rem + 1.7763vw, 4.2915rem);
|
|
20
20
|
--step-7: clamp(3.5832rem, 3.0379rem + 2.4235vw, 5.3644rem);
|
|
21
21
|
--step-8: clamp(4.2998rem, 3.5634rem + 3.2731vw, 6.7055rem);
|
|
22
|
+
--type-caption-sm: var(--step--2);
|
|
23
|
+
--text-base: var(--step-0);
|
|
22
24
|
|
|
23
25
|
--space-3xs: clamp(0.25rem, 0.2404rem + 0.0425vw, 0.2813rem);
|
|
24
26
|
--space-2xs: clamp(0.5rem, 0.4809rem + 0.085vw, 0.5625rem);
|
|
@@ -88,7 +90,9 @@
|
|
|
88
90
|
--color-destructive: var(--sf-colour-destructive, oklch(55% 0.2 28));
|
|
89
91
|
--color-destructive-foreground: var(--sf-colour-destructive-foreground, oklch(98% 0.01 95));
|
|
90
92
|
--color-border: var(--sf-colour-border, oklch(100% 0 0 / 0.12));
|
|
93
|
+
--color-border-subtle: var(--sf-colour-border-subtle, oklch(100% 0 0 / 0.08));
|
|
91
94
|
--color-input: var(--sf-colour-input, oklch(100% 0 0 / 0.12));
|
|
95
|
+
--color-backdrop: var(--sf-colour-backdrop, oklch(0% 0 0 / 0.56));
|
|
92
96
|
--color-ring: var(--sf-colour-ring, oklch(69% 0.18 44));
|
|
93
97
|
--color-heading: var(--sf-colour-heading, oklch(20% 0.02 18));
|
|
94
98
|
--color-page-text: var(--sf-colour-page-text, oklch(23% 0.02 18));
|
|
@@ -97,6 +101,14 @@
|
|
|
97
101
|
--color-subdued: var(--sf-colour-subdued, oklch(42% 0.02 20));
|
|
98
102
|
--color-surface: var(--sf-colour-surface, oklch(96% 0.015 80));
|
|
99
103
|
--color-surface-alt: var(--sf-colour-surface-alt, oklch(96.6% 0.018 82));
|
|
104
|
+
--color-surface-hover: var(--sf-colour-surface-hover, color-mix(in oklch, var(--color-surface-alt) 86%, var(--color-primary)));
|
|
105
|
+
--color-surface-raised-2: var(--sf-colour-surface-raised-2, color-mix(in oklch, var(--color-surface) 86%, white));
|
|
106
|
+
--color-categorical-1: var(--sf-colour-categorical-1, var(--color-primary));
|
|
107
|
+
--color-categorical-2: var(--sf-colour-categorical-2, var(--color-green));
|
|
108
|
+
--color-categorical-3: var(--sf-colour-categorical-3, var(--color-deco-blue));
|
|
109
|
+
--color-categorical-4: var(--sf-colour-categorical-4, var(--color-deco-lime));
|
|
110
|
+
--color-categorical-5: var(--sf-colour-categorical-5, var(--color-warm-icon));
|
|
111
|
+
--color-categorical-6: var(--sf-colour-categorical-6, var(--color-purple-icon));
|
|
100
112
|
--color-hero-bg: oklch(8% 0.02 260);
|
|
101
113
|
--color-green: var(--sf-colour-green, oklch(55% 0.12 148));
|
|
102
114
|
--color-green-dark: var(--sf-colour-green-dark, oklch(45% 0.12 148));
|
|
@@ -168,6 +180,8 @@
|
|
|
168
180
|
--color-surface: var(--sf-colour-surface);
|
|
169
181
|
--sf-colour-surface-alt: oklch(94% 0.02 80);
|
|
170
182
|
--color-surface-alt: var(--sf-colour-surface-alt);
|
|
183
|
+
--sf-colour-surface-elevated: var(--sf-colour-surface-raised);
|
|
184
|
+
--color-surface-elevated: var(--sf-colour-surface-elevated);
|
|
171
185
|
--sf-colour-border: oklch(18% 0.022 55 / 0.14);
|
|
172
186
|
--color-border: var(--sf-colour-border);
|
|
173
187
|
--sf-colour-primary: oklch(58% 0.17 42);
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
--step-6: clamp(2.986rem, 2.5863rem + 1.7763vw, 4.2915rem);
|
|
20
20
|
--step-7: clamp(3.5832rem, 3.0379rem + 2.4235vw, 5.3644rem);
|
|
21
21
|
--step-8: clamp(4.2998rem, 3.5634rem + 3.2731vw, 6.7055rem);
|
|
22
|
+
--type-caption-sm: var(--step--2);
|
|
23
|
+
--text-base: var(--step-0);
|
|
22
24
|
|
|
23
25
|
--space-3xs: clamp(0.25rem, 0.2404rem + 0.0425vw, 0.2813rem);
|
|
24
26
|
--space-2xs: clamp(0.5rem, 0.4809rem + 0.085vw, 0.5625rem);
|
|
@@ -88,7 +90,9 @@
|
|
|
88
90
|
--color-destructive: var(--sf-colour-destructive, oklch(55% 0.2 28));
|
|
89
91
|
--color-destructive-foreground: var(--sf-colour-destructive-foreground, oklch(98% 0.01 95));
|
|
90
92
|
--color-border: var(--sf-colour-border, oklch(100% 0 0 / 0.12));
|
|
93
|
+
--color-border-subtle: var(--sf-colour-border-subtle, oklch(100% 0 0 / 0.08));
|
|
91
94
|
--color-input: var(--sf-colour-input, oklch(100% 0 0 / 0.12));
|
|
95
|
+
--color-backdrop: var(--sf-colour-backdrop, oklch(0% 0 0 / 0.56));
|
|
92
96
|
--color-ring: var(--sf-colour-ring, oklch(69% 0.18 44));
|
|
93
97
|
--color-heading: var(--sf-colour-heading, oklch(20% 0.02 18));
|
|
94
98
|
--color-page-text: var(--sf-colour-page-text, oklch(23% 0.02 18));
|
|
@@ -97,6 +101,14 @@
|
|
|
97
101
|
--color-subdued: var(--sf-colour-subdued, oklch(42% 0.02 20));
|
|
98
102
|
--color-surface: var(--sf-colour-surface, oklch(96% 0.015 80));
|
|
99
103
|
--color-surface-alt: var(--sf-colour-surface-alt, oklch(96.6% 0.018 82));
|
|
104
|
+
--color-surface-hover: var(--sf-colour-surface-hover, color-mix(in oklch, var(--color-surface-alt) 86%, var(--color-primary)));
|
|
105
|
+
--color-surface-raised-2: var(--sf-colour-surface-raised-2, color-mix(in oklch, var(--color-surface) 86%, white));
|
|
106
|
+
--color-categorical-1: var(--sf-colour-categorical-1, var(--color-primary));
|
|
107
|
+
--color-categorical-2: var(--sf-colour-categorical-2, var(--color-green));
|
|
108
|
+
--color-categorical-3: var(--sf-colour-categorical-3, var(--color-deco-blue));
|
|
109
|
+
--color-categorical-4: var(--sf-colour-categorical-4, var(--color-deco-lime));
|
|
110
|
+
--color-categorical-5: var(--sf-colour-categorical-5, var(--color-warm-icon));
|
|
111
|
+
--color-categorical-6: var(--sf-colour-categorical-6, var(--color-purple-icon));
|
|
100
112
|
--color-hero-bg: oklch(8% 0.02 260);
|
|
101
113
|
--color-green: var(--sf-colour-green, oklch(55% 0.12 148));
|
|
102
114
|
--color-green-dark: var(--sf-colour-green-dark, oklch(45% 0.12 148));
|
|
@@ -168,21 +180,23 @@
|
|
|
168
180
|
--color-surface: var(--sf-colour-surface);
|
|
169
181
|
--sf-colour-surface-alt: oklch(96.4% 0.011 80);
|
|
170
182
|
--color-surface-alt: var(--sf-colour-surface-alt);
|
|
183
|
+
--sf-colour-surface-elevated: var(--sf-colour-surface-raised);
|
|
184
|
+
--color-surface-elevated: var(--sf-colour-surface-elevated);
|
|
171
185
|
--sf-colour-border: oklch(18% 0.026 250 / 0.12);
|
|
172
186
|
--color-border: var(--sf-colour-border);
|
|
173
|
-
--sf-colour-primary: oklch(
|
|
187
|
+
--sf-colour-primary: oklch(50% 0.16 40);
|
|
174
188
|
--color-primary: var(--sf-colour-primary);
|
|
175
|
-
--sf-colour-primary-hover: oklch(
|
|
189
|
+
--sf-colour-primary-hover: oklch(44% 0.14 40);
|
|
176
190
|
--color-primary-hover: var(--sf-colour-primary-hover);
|
|
177
191
|
--sf-colour-primary-foreground: oklch(100% 0 0);
|
|
178
192
|
--color-primary-foreground: var(--sf-colour-primary-foreground);
|
|
179
193
|
--sf-colour-accent: oklch(70% 0.12 205);
|
|
180
194
|
--color-accent: var(--sf-colour-accent);
|
|
181
|
-
--sf-colour-link: oklch(
|
|
195
|
+
--sf-colour-link: oklch(50% 0.16 40);
|
|
182
196
|
--color-link: var(--sf-colour-link);
|
|
183
|
-
--sf-colour-link-hover: oklch(
|
|
197
|
+
--sf-colour-link-hover: oklch(44% 0.14 40);
|
|
184
198
|
--color-link-hover: var(--sf-colour-link-hover);
|
|
185
|
-
--sf-colour-ring: oklch(
|
|
199
|
+
--sf-colour-ring: oklch(50% 0.16 40);
|
|
186
200
|
--color-ring: var(--sf-colour-ring);
|
|
187
201
|
--sf-button-radius: 0.5rem;
|
|
188
202
|
--button-radius: 0.5rem;
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
--step-6: clamp(2.986rem, 2.5863rem + 1.7763vw, 4.2915rem);
|
|
20
20
|
--step-7: clamp(3.5832rem, 3.0379rem + 2.4235vw, 5.3644rem);
|
|
21
21
|
--step-8: clamp(4.2998rem, 3.5634rem + 3.2731vw, 6.7055rem);
|
|
22
|
+
--type-caption-sm: var(--step--2);
|
|
23
|
+
--text-base: var(--step-0);
|
|
22
24
|
|
|
23
25
|
--space-3xs: clamp(0.25rem, 0.2404rem + 0.0425vw, 0.2813rem);
|
|
24
26
|
--space-2xs: clamp(0.5rem, 0.4809rem + 0.085vw, 0.5625rem);
|
|
@@ -88,7 +90,9 @@
|
|
|
88
90
|
--color-destructive: var(--sf-colour-destructive, oklch(55% 0.2 28));
|
|
89
91
|
--color-destructive-foreground: var(--sf-colour-destructive-foreground, oklch(98% 0.01 95));
|
|
90
92
|
--color-border: var(--sf-colour-border, oklch(100% 0 0 / 0.12));
|
|
93
|
+
--color-border-subtle: var(--sf-colour-border-subtle, oklch(100% 0 0 / 0.08));
|
|
91
94
|
--color-input: var(--sf-colour-input, oklch(100% 0 0 / 0.12));
|
|
95
|
+
--color-backdrop: var(--sf-colour-backdrop, oklch(0% 0 0 / 0.56));
|
|
92
96
|
--color-ring: var(--sf-colour-ring, oklch(69% 0.18 44));
|
|
93
97
|
--color-heading: var(--sf-colour-heading, oklch(20% 0.02 18));
|
|
94
98
|
--color-page-text: var(--sf-colour-page-text, oklch(23% 0.02 18));
|
|
@@ -97,6 +101,14 @@
|
|
|
97
101
|
--color-subdued: var(--sf-colour-subdued, oklch(42% 0.02 20));
|
|
98
102
|
--color-surface: var(--sf-colour-surface, oklch(96% 0.015 80));
|
|
99
103
|
--color-surface-alt: var(--sf-colour-surface-alt, oklch(96.6% 0.018 82));
|
|
104
|
+
--color-surface-hover: var(--sf-colour-surface-hover, color-mix(in oklch, var(--color-surface-alt) 86%, var(--color-primary)));
|
|
105
|
+
--color-surface-raised-2: var(--sf-colour-surface-raised-2, color-mix(in oklch, var(--color-surface) 86%, white));
|
|
106
|
+
--color-categorical-1: var(--sf-colour-categorical-1, var(--color-primary));
|
|
107
|
+
--color-categorical-2: var(--sf-colour-categorical-2, var(--color-green));
|
|
108
|
+
--color-categorical-3: var(--sf-colour-categorical-3, var(--color-deco-blue));
|
|
109
|
+
--color-categorical-4: var(--sf-colour-categorical-4, var(--color-deco-lime));
|
|
110
|
+
--color-categorical-5: var(--sf-colour-categorical-5, var(--color-warm-icon));
|
|
111
|
+
--color-categorical-6: var(--sf-colour-categorical-6, var(--color-purple-icon));
|
|
100
112
|
--color-hero-bg: oklch(8% 0.02 260);
|
|
101
113
|
--color-green: var(--sf-colour-green, oklch(55% 0.12 148));
|
|
102
114
|
--color-green-dark: var(--sf-colour-green-dark, oklch(45% 0.12 148));
|
|
@@ -168,21 +180,23 @@
|
|
|
168
180
|
--color-surface: var(--sf-colour-surface);
|
|
169
181
|
--sf-colour-surface-alt: oklch(96.4% 0.011 80);
|
|
170
182
|
--color-surface-alt: var(--sf-colour-surface-alt);
|
|
183
|
+
--sf-colour-surface-elevated: var(--sf-colour-surface-raised);
|
|
184
|
+
--color-surface-elevated: var(--sf-colour-surface-elevated);
|
|
171
185
|
--sf-colour-border: oklch(18% 0.026 250 / 0.12);
|
|
172
186
|
--color-border: var(--sf-colour-border);
|
|
173
|
-
--sf-colour-primary: oklch(
|
|
187
|
+
--sf-colour-primary: oklch(50% 0.16 40);
|
|
174
188
|
--color-primary: var(--sf-colour-primary);
|
|
175
|
-
--sf-colour-primary-hover: oklch(
|
|
189
|
+
--sf-colour-primary-hover: oklch(44% 0.14 40);
|
|
176
190
|
--color-primary-hover: var(--sf-colour-primary-hover);
|
|
177
191
|
--sf-colour-primary-foreground: oklch(100% 0 0);
|
|
178
192
|
--color-primary-foreground: var(--sf-colour-primary-foreground);
|
|
179
193
|
--sf-colour-accent: oklch(70% 0.12 205);
|
|
180
194
|
--color-accent: var(--sf-colour-accent);
|
|
181
|
-
--sf-colour-link: oklch(
|
|
195
|
+
--sf-colour-link: oklch(50% 0.16 40);
|
|
182
196
|
--color-link: var(--sf-colour-link);
|
|
183
|
-
--sf-colour-link-hover: oklch(
|
|
197
|
+
--sf-colour-link-hover: oklch(44% 0.14 40);
|
|
184
198
|
--color-link-hover: var(--sf-colour-link-hover);
|
|
185
|
-
--sf-colour-ring: oklch(
|
|
199
|
+
--sf-colour-ring: oklch(50% 0.16 40);
|
|
186
200
|
--color-ring: var(--sf-colour-ring);
|
|
187
201
|
--sf-button-radius: 0.5rem;
|
|
188
202
|
--button-radius: 0.5rem;
|
|
@@ -10,6 +10,7 @@ Use the CLI for framework-specific output:
|
|
|
10
10
|
pnpm exec synced-flow recipe saas-landing --markup
|
|
11
11
|
pnpm exec synced-flow recipe saas-landing --framework next --markup
|
|
12
12
|
pnpm exec synced-flow recipe saas-dashboard --framework next --markup
|
|
13
|
+
pnpm exec synced-flow recipe app-settings-workflow --markup
|
|
13
14
|
pnpm exec synced-flow recipe portfolio-scroll --framework astro --markup
|
|
14
15
|
```
|
|
15
16
|
|
|
@@ -17,6 +18,7 @@ Templates:
|
|
|
17
18
|
|
|
18
19
|
- `saas-landing.html`
|
|
19
20
|
- `saas-dashboard.html`
|
|
21
|
+
- `app-settings-workflow.html`
|
|
20
22
|
- `portfolio-scroll.html`
|
|
21
23
|
- `blog-index.html`
|
|
22
24
|
- `coming-soon.html`
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Synced Flow Application Settings Template</title>
|
|
7
|
+
<link rel="stylesheet" href="../plain-html/synced-flow.css" />
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<a class="sf-skip-link" href="#settings-main">Skip to settings</a>
|
|
11
|
+
<main class="sf-section" id="settings-main">
|
|
12
|
+
<div class="sf-container sf-split">
|
|
13
|
+
<nav aria-label="Setup progress">
|
|
14
|
+
<ol class="sf-stepper">
|
|
15
|
+
<li class="sf-stepper__step" data-complete="true"><span class="sf-stepper__marker" aria-hidden="true">✓</span><span class="sf-stepper__label"><span class="sr-only">Completed: </span>Workspace</span></li>
|
|
16
|
+
<li class="sf-stepper__step" aria-current="step"><span class="sf-stepper__marker" aria-hidden="true"></span><span class="sf-stepper__label">Preferences</span></li>
|
|
17
|
+
<li class="sf-stepper__step"><span class="sf-stepper__marker" aria-hidden="true"></span><span class="sf-stepper__label">Review</span></li>
|
|
18
|
+
</ol>
|
|
19
|
+
</nav>
|
|
20
|
+
|
|
21
|
+
<form class="sf-card sf-form" aria-labelledby="preferences-title">
|
|
22
|
+
<header class="sf-stack">
|
|
23
|
+
<p class="sf-kicker">Step 2 of 3</p>
|
|
24
|
+
<h1 id="preferences-title">Workspace preferences</h1>
|
|
25
|
+
</header>
|
|
26
|
+
|
|
27
|
+
<label class="sf-field">
|
|
28
|
+
<span class="sf-label">Workspace URL</span>
|
|
29
|
+
<span class="sf-input-group">
|
|
30
|
+
<span class="sf-input-group__leading" aria-hidden="true">https://</span>
|
|
31
|
+
<input class="sf-input" name="workspace" autocomplete="organization" />
|
|
32
|
+
<span class="sf-input-group__trailing" aria-hidden="true">.example.com</span>
|
|
33
|
+
</span>
|
|
34
|
+
</label>
|
|
35
|
+
|
|
36
|
+
<fieldset class="sf-fieldset">
|
|
37
|
+
<legend>Billing cycle</legend>
|
|
38
|
+
<div class="sf-segmented-control">
|
|
39
|
+
<label class="sf-segmented-control__option"><input type="radio" name="cycle" value="monthly" checked /><span class="sf-segmented-control__label">Monthly</span></label>
|
|
40
|
+
<label class="sf-segmented-control__option"><input type="radio" name="cycle" value="annual" /><span class="sf-segmented-control__label">Annual</span></label>
|
|
41
|
+
</div>
|
|
42
|
+
</fieldset>
|
|
43
|
+
|
|
44
|
+
<label class="sf-switch">
|
|
45
|
+
<input type="checkbox" role="switch" name="weekly_summary" checked />
|
|
46
|
+
<span class="sf-switch__control" aria-hidden="true"></span>
|
|
47
|
+
<span class="sf-switch__label">Email weekly summary</span>
|
|
48
|
+
</label>
|
|
49
|
+
|
|
50
|
+
<label class="sf-field">
|
|
51
|
+
<span class="sf-label" id="team-size-label">Team size: <output for="team-size">12</output></span>
|
|
52
|
+
<input class="sf-range" id="team-size" type="range" name="team_size" min="1" max="50" value="12" aria-labelledby="team-size-label" />
|
|
53
|
+
</label>
|
|
54
|
+
|
|
55
|
+
<label class="sf-field">
|
|
56
|
+
<span class="sf-label">Brand mark</span>
|
|
57
|
+
<input class="sf-file-input" type="file" name="brand_mark" accept="image/png,image/svg+xml" />
|
|
58
|
+
<span class="sf-help">PNG or SVG.</span>
|
|
59
|
+
</label>
|
|
60
|
+
|
|
61
|
+
<div class="sf-field">
|
|
62
|
+
<label class="sf-label" for="owner-search">Workspace owner</label>
|
|
63
|
+
<div class="sf-combobox">
|
|
64
|
+
<input class="sf-input" id="owner-search" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="owner-options" />
|
|
65
|
+
<ul class="sf-combobox__listbox" id="owner-options" role="listbox" hidden>
|
|
66
|
+
<li class="sf-combobox__option" id="owner-option-1" role="option" aria-selected="true">Alex Morgan</li>
|
|
67
|
+
<li class="sf-combobox__option" id="owner-option-2" role="option" aria-selected="false">Jamie Lee</li>
|
|
68
|
+
</ul>
|
|
69
|
+
</div>
|
|
70
|
+
<span class="sf-help">This static fixture shows presentation. The consuming app must implement combobox behavior.</span>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div class="sf-wizard-actions">
|
|
74
|
+
<button class="sf-button sf-button--outline" type="button">Back</button>
|
|
75
|
+
<button class="sf-button" type="submit"><span class="sf-spinner" aria-hidden="true" hidden></span><span>Continue</span></button>
|
|
76
|
+
</div>
|
|
77
|
+
</form>
|
|
78
|
+
</div>
|
|
79
|
+
</main>
|
|
80
|
+
</body>
|
|
81
|
+
</html>
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
--step-6: clamp(2.986rem, 2.5863rem + 1.7763vw, 4.2915rem);
|
|
20
20
|
--step-7: clamp(3.5832rem, 3.0379rem + 2.4235vw, 5.3644rem);
|
|
21
21
|
--step-8: clamp(4.2998rem, 3.5634rem + 3.2731vw, 6.7055rem);
|
|
22
|
+
--type-caption-sm: var(--step--2);
|
|
23
|
+
--text-base: var(--step-0);
|
|
22
24
|
|
|
23
25
|
--space-3xs: clamp(0.25rem, 0.2404rem + 0.0425vw, 0.2813rem);
|
|
24
26
|
--space-2xs: clamp(0.5rem, 0.4809rem + 0.085vw, 0.5625rem);
|
|
@@ -88,7 +90,9 @@
|
|
|
88
90
|
--color-destructive: var(--sf-colour-destructive, oklch(55% 0.2 28));
|
|
89
91
|
--color-destructive-foreground: var(--sf-colour-destructive-foreground, oklch(98% 0.01 95));
|
|
90
92
|
--color-border: var(--sf-colour-border, oklch(100% 0 0 / 0.12));
|
|
93
|
+
--color-border-subtle: var(--sf-colour-border-subtle, oklch(100% 0 0 / 0.08));
|
|
91
94
|
--color-input: var(--sf-colour-input, oklch(100% 0 0 / 0.12));
|
|
95
|
+
--color-backdrop: var(--sf-colour-backdrop, oklch(0% 0 0 / 0.56));
|
|
92
96
|
--color-ring: var(--sf-colour-ring, oklch(69% 0.18 44));
|
|
93
97
|
--color-heading: var(--sf-colour-heading, oklch(20% 0.02 18));
|
|
94
98
|
--color-page-text: var(--sf-colour-page-text, oklch(23% 0.02 18));
|
|
@@ -97,6 +101,14 @@
|
|
|
97
101
|
--color-subdued: var(--sf-colour-subdued, oklch(42% 0.02 20));
|
|
98
102
|
--color-surface: var(--sf-colour-surface, oklch(96% 0.015 80));
|
|
99
103
|
--color-surface-alt: var(--sf-colour-surface-alt, oklch(96.6% 0.018 82));
|
|
104
|
+
--color-surface-hover: var(--sf-colour-surface-hover, color-mix(in oklch, var(--color-surface-alt) 86%, var(--color-primary)));
|
|
105
|
+
--color-surface-raised-2: var(--sf-colour-surface-raised-2, color-mix(in oklch, var(--color-surface) 86%, white));
|
|
106
|
+
--color-categorical-1: var(--sf-colour-categorical-1, var(--color-primary));
|
|
107
|
+
--color-categorical-2: var(--sf-colour-categorical-2, var(--color-green));
|
|
108
|
+
--color-categorical-3: var(--sf-colour-categorical-3, var(--color-deco-blue));
|
|
109
|
+
--color-categorical-4: var(--sf-colour-categorical-4, var(--color-deco-lime));
|
|
110
|
+
--color-categorical-5: var(--sf-colour-categorical-5, var(--color-warm-icon));
|
|
111
|
+
--color-categorical-6: var(--sf-colour-categorical-6, var(--color-purple-icon));
|
|
100
112
|
--color-hero-bg: oklch(8% 0.02 260);
|
|
101
113
|
--color-green: var(--sf-colour-green, oklch(55% 0.12 148));
|
|
102
114
|
--color-green-dark: var(--sf-colour-green-dark, oklch(45% 0.12 148));
|
|
@@ -168,21 +180,23 @@
|
|
|
168
180
|
--color-surface: var(--sf-colour-surface);
|
|
169
181
|
--sf-colour-surface-alt: oklch(96.4% 0.011 80);
|
|
170
182
|
--color-surface-alt: var(--sf-colour-surface-alt);
|
|
183
|
+
--sf-colour-surface-elevated: var(--sf-colour-surface-raised);
|
|
184
|
+
--color-surface-elevated: var(--sf-colour-surface-elevated);
|
|
171
185
|
--sf-colour-border: oklch(18% 0.026 250 / 0.12);
|
|
172
186
|
--color-border: var(--sf-colour-border);
|
|
173
|
-
--sf-colour-primary: oklch(
|
|
187
|
+
--sf-colour-primary: oklch(50% 0.16 40);
|
|
174
188
|
--color-primary: var(--sf-colour-primary);
|
|
175
|
-
--sf-colour-primary-hover: oklch(
|
|
189
|
+
--sf-colour-primary-hover: oklch(44% 0.14 40);
|
|
176
190
|
--color-primary-hover: var(--sf-colour-primary-hover);
|
|
177
191
|
--sf-colour-primary-foreground: oklch(100% 0 0);
|
|
178
192
|
--color-primary-foreground: var(--sf-colour-primary-foreground);
|
|
179
193
|
--sf-colour-accent: oklch(70% 0.12 205);
|
|
180
194
|
--color-accent: var(--sf-colour-accent);
|
|
181
|
-
--sf-colour-link: oklch(
|
|
195
|
+
--sf-colour-link: oklch(50% 0.16 40);
|
|
182
196
|
--color-link: var(--sf-colour-link);
|
|
183
|
-
--sf-colour-link-hover: oklch(
|
|
197
|
+
--sf-colour-link-hover: oklch(44% 0.14 40);
|
|
184
198
|
--color-link-hover: var(--sf-colour-link-hover);
|
|
185
|
-
--sf-colour-ring: oklch(
|
|
199
|
+
--sf-colour-ring: oklch(50% 0.16 40);
|
|
186
200
|
--color-ring: var(--sf-colour-ring);
|
|
187
201
|
--sf-button-radius: 0.5rem;
|
|
188
202
|
--button-radius: 0.5rem;
|