ccgx-workflow 1.0.0 → 1.0.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/README.md +37 -5
- package/README.zh-CN.md +35 -5
- package/dist/cli.mjs +1 -1
- package/dist/index.mjs +2 -2
- package/dist/shared/{ccgx-workflow.WgUzkiC3.mjs → ccgx-workflow.SJPbUy5_.mjs} +17 -110
- package/package.json +2 -1
- package/templates/commands/agents/phase-runner.md +321 -321
- package/templates/commands/autonomous.md +792 -792
- package/templates/commands/cancel.md +132 -132
- package/templates/commands/debug.md +226 -226
- package/templates/commands/status.md +206 -206
- package/templates/commands/team.md +484 -0
- package/templates/hooks/ccg-session-state.cjs +510 -510
- package/templates/scripts/ccg-phase-runner-launcher.mjs +467 -467
- package/templates/scripts/invoke-model.mjs +64 -0
- package/templates/skills/domains/ai/SKILL.md +35 -35
- package/templates/skills/domains/ai/agent-dev.md +242 -242
- package/templates/skills/domains/ai/llm-security.md +288 -288
- package/templates/skills/domains/ai/rag-system.md +542 -542
- package/templates/skills/domains/architecture/SKILL.md +43 -43
- package/templates/skills/domains/architecture/api-design.md +225 -225
- package/templates/skills/domains/architecture/cloud-native.md +285 -285
- package/templates/skills/domains/architecture/security-arch.md +297 -297
- package/templates/skills/domains/data-engineering/SKILL.md +208 -208
- package/templates/skills/domains/development/SKILL.md +47 -47
- package/templates/skills/domains/development/cpp.md +246 -246
- package/templates/skills/domains/development/go.md +323 -323
- package/templates/skills/domains/development/java.md +277 -277
- package/templates/skills/domains/development/python.md +288 -288
- package/templates/skills/domains/development/rust.md +313 -313
- package/templates/skills/domains/development/shell.md +313 -313
- package/templates/skills/domains/development/typescript.md +277 -277
- package/templates/skills/domains/devops/SKILL.md +40 -40
- package/templates/skills/domains/devops/database.md +217 -217
- package/templates/skills/domains/devops/devsecops.md +198 -198
- package/templates/skills/domains/devops/git-workflow.md +181 -181
- package/templates/skills/domains/devops/testing.md +283 -283
- package/templates/skills/domains/frontend-design/SKILL.md +244 -244
- package/templates/skills/domains/frontend-design/claymorphism/SKILL.md +121 -121
- package/templates/skills/domains/frontend-design/component-patterns.md +202 -202
- package/templates/skills/domains/frontend-design/glassmorphism/SKILL.md +142 -142
- package/templates/skills/domains/frontend-design/liquid-glass/SKILL.md +139 -139
- package/templates/skills/domains/frontend-design/neubrutalism/SKILL.md +145 -145
- package/templates/skills/domains/frontend-design/state-management.md +680 -680
- package/templates/skills/domains/frontend-design/ui-aesthetics.md +110 -110
- package/templates/skills/domains/frontend-design/ux-principles.md +156 -156
- package/templates/skills/domains/infrastructure/SKILL.md +201 -201
- package/templates/skills/domains/mobile/SKILL.md +225 -225
- package/templates/skills/domains/orchestration/SKILL.md +30 -30
- package/templates/skills/domains/orchestration/multi-agent.md +228 -228
- package/templates/skills/domains/security/SKILL.md +73 -73
- package/templates/skills/domains/security/blue-team.md +436 -436
- package/templates/skills/domains/security/code-audit.md +265 -265
- package/templates/skills/domains/security/pentest.md +226 -226
- package/templates/skills/domains/security/red-team.md +374 -374
- package/templates/skills/domains/security/threat-intel.md +372 -372
- package/templates/skills/domains/security/vuln-research.md +369 -369
- package/templates/skills/tools/lib/shared.js +98 -98
- package/templates/skills/tools/override-refusal/SKILL.md +53 -53
- package/templates/skills/tools/override-refusal/scripts/refusal_rewriter.js +226 -226
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: glassmorphism
|
|
3
|
-
description: Glassmorphism 玻璃态设计(毛玻璃、透明度、模糊、分层深度)。
|
|
4
|
-
license: MIT
|
|
5
|
-
user-invocable: false
|
|
6
|
-
disable-model-invocation: false
|
|
7
|
-
context: fork
|
|
8
|
-
paths: "*.tsx,*.jsx,*.vue,*.svelte,*.css,*.scss"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Glassmorphism Design Spec
|
|
12
|
-
|
|
13
|
-
## 4 Core Elements
|
|
14
|
-
|
|
15
|
-
1. **Transparency** — Semi-transparent backgrounds using `rgba()` or `hsla()` with alpha `0.05–0.4`
|
|
16
|
-
2. **Blur** — `backdrop-filter: blur()` ranging 8–40px for frosted-glass effect
|
|
17
|
-
3. **Border** — Subtle semi-transparent borders (`1px solid rgba(255,255,255,0.18)`) to define edges
|
|
18
|
-
4. **Shadow** — Soft layered `box-shadow` for depth separation from background
|
|
19
|
-
|
|
20
|
-
## CSS Tokens
|
|
21
|
-
|
|
22
|
-
Reference: [references/tokens.css](references/tokens.css)
|
|
23
|
-
|
|
24
|
-
Use CSS custom properties from `tokens.css` for consistent theming:
|
|
25
|
-
|
|
26
|
-
```css
|
|
27
|
-
@import 'references/tokens.css';
|
|
28
|
-
|
|
29
|
-
.glass-card {
|
|
30
|
-
background: var(--glass-bg);
|
|
31
|
-
backdrop-filter: var(--glass-blur);
|
|
32
|
-
-webkit-backdrop-filter: var(--glass-blur);
|
|
33
|
-
border: var(--glass-border);
|
|
34
|
-
border-radius: var(--glass-radius);
|
|
35
|
-
box-shadow: var(--glass-shadow);
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Component Examples
|
|
40
|
-
|
|
41
|
-
### Card
|
|
42
|
-
```css
|
|
43
|
-
.glass-card {
|
|
44
|
-
background: var(--glass-bg);
|
|
45
|
-
backdrop-filter: var(--glass-blur);
|
|
46
|
-
-webkit-backdrop-filter: var(--glass-blur);
|
|
47
|
-
border: var(--glass-border);
|
|
48
|
-
border-radius: var(--glass-radius);
|
|
49
|
-
box-shadow: var(--glass-shadow);
|
|
50
|
-
padding: 1.5rem;
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Navbar
|
|
55
|
-
```css
|
|
56
|
-
.glass-nav {
|
|
57
|
-
background: var(--glass-bg-heavy);
|
|
58
|
-
backdrop-filter: var(--glass-blur-strong);
|
|
59
|
-
-webkit-backdrop-filter: var(--glass-blur-strong);
|
|
60
|
-
border-bottom: var(--glass-border);
|
|
61
|
-
box-shadow: var(--glass-shadow);
|
|
62
|
-
position: sticky;
|
|
63
|
-
top: 0;
|
|
64
|
-
z-index: 100;
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Modal Overlay
|
|
69
|
-
```css
|
|
70
|
-
.glass-modal-backdrop {
|
|
71
|
-
background: rgba(0, 0, 0, 0.4);
|
|
72
|
-
backdrop-filter: blur(4px);
|
|
73
|
-
}
|
|
74
|
-
.glass-modal {
|
|
75
|
-
background: var(--glass-bg-heavy);
|
|
76
|
-
backdrop-filter: var(--glass-blur-strong);
|
|
77
|
-
-webkit-backdrop-filter: var(--glass-blur-strong);
|
|
78
|
-
border: var(--glass-border);
|
|
79
|
-
border-radius: var(--glass-radius-lg);
|
|
80
|
-
box-shadow: var(--glass-shadow-elevated);
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Button
|
|
85
|
-
```css
|
|
86
|
-
.glass-btn {
|
|
87
|
-
background: var(--glass-bg-light);
|
|
88
|
-
backdrop-filter: var(--glass-blur-light);
|
|
89
|
-
-webkit-backdrop-filter: var(--glass-blur-light);
|
|
90
|
-
border: var(--glass-border);
|
|
91
|
-
border-radius: var(--glass-radius);
|
|
92
|
-
transition: background 0.2s;
|
|
93
|
-
}
|
|
94
|
-
.glass-btn:hover {
|
|
95
|
-
background: var(--glass-bg);
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Browser Compatibility
|
|
100
|
-
|
|
101
|
-
| Feature | Chrome | Firefox | Safari | Edge |
|
|
102
|
-
|---------|--------|---------|--------|------|
|
|
103
|
-
| `backdrop-filter` | 76+ | 103+ | 9+ (`-webkit-`) | 79+ |
|
|
104
|
-
| `rgba()` backgrounds | All | All | All | All |
|
|
105
|
-
|
|
106
|
-
- Always include `-webkit-backdrop-filter` for Safari support
|
|
107
|
-
- Firefox <103: use `@supports` fallback with solid semi-transparent bg
|
|
108
|
-
- Fallback pattern:
|
|
109
|
-
|
|
110
|
-
```css
|
|
111
|
-
.glass-card {
|
|
112
|
-
background: rgba(255, 255, 255, 0.85); /* fallback */
|
|
113
|
-
}
|
|
114
|
-
@supports (backdrop-filter: blur(1px)) {
|
|
115
|
-
.glass-card {
|
|
116
|
-
background: var(--glass-bg);
|
|
117
|
-
backdrop-filter: var(--glass-blur);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Accessibility Notes
|
|
123
|
-
|
|
124
|
-
- Ensure **contrast ratio ≥ 4.5:1** for text over glass surfaces — test against all possible backgrounds
|
|
125
|
-
- Provide `prefers-reduced-transparency` media query to disable blur/transparency for users who need it
|
|
126
|
-
- Avoid placing critical text on highly transparent surfaces without a fallback
|
|
127
|
-
- Use `prefers-contrast: more` to increase border opacity and reduce transparency
|
|
128
|
-
|
|
129
|
-
```css
|
|
130
|
-
@media (prefers-reduced-transparency: reduce) {
|
|
131
|
-
.glass-card {
|
|
132
|
-
background: rgba(255, 255, 255, 0.92);
|
|
133
|
-
backdrop-filter: none;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
@media (prefers-contrast: more) {
|
|
137
|
-
.glass-card {
|
|
138
|
-
background: rgba(255, 255, 255, 0.85);
|
|
139
|
-
border: 1px solid rgba(0, 0, 0, 0.3);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: glassmorphism
|
|
3
|
+
description: Glassmorphism 玻璃态设计(毛玻璃、透明度、模糊、分层深度)。
|
|
4
|
+
license: MIT
|
|
5
|
+
user-invocable: false
|
|
6
|
+
disable-model-invocation: false
|
|
7
|
+
context: fork
|
|
8
|
+
paths: "*.tsx,*.jsx,*.vue,*.svelte,*.css,*.scss"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Glassmorphism Design Spec
|
|
12
|
+
|
|
13
|
+
## 4 Core Elements
|
|
14
|
+
|
|
15
|
+
1. **Transparency** — Semi-transparent backgrounds using `rgba()` or `hsla()` with alpha `0.05–0.4`
|
|
16
|
+
2. **Blur** — `backdrop-filter: blur()` ranging 8–40px for frosted-glass effect
|
|
17
|
+
3. **Border** — Subtle semi-transparent borders (`1px solid rgba(255,255,255,0.18)`) to define edges
|
|
18
|
+
4. **Shadow** — Soft layered `box-shadow` for depth separation from background
|
|
19
|
+
|
|
20
|
+
## CSS Tokens
|
|
21
|
+
|
|
22
|
+
Reference: [references/tokens.css](references/tokens.css)
|
|
23
|
+
|
|
24
|
+
Use CSS custom properties from `tokens.css` for consistent theming:
|
|
25
|
+
|
|
26
|
+
```css
|
|
27
|
+
@import 'references/tokens.css';
|
|
28
|
+
|
|
29
|
+
.glass-card {
|
|
30
|
+
background: var(--glass-bg);
|
|
31
|
+
backdrop-filter: var(--glass-blur);
|
|
32
|
+
-webkit-backdrop-filter: var(--glass-blur);
|
|
33
|
+
border: var(--glass-border);
|
|
34
|
+
border-radius: var(--glass-radius);
|
|
35
|
+
box-shadow: var(--glass-shadow);
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Component Examples
|
|
40
|
+
|
|
41
|
+
### Card
|
|
42
|
+
```css
|
|
43
|
+
.glass-card {
|
|
44
|
+
background: var(--glass-bg);
|
|
45
|
+
backdrop-filter: var(--glass-blur);
|
|
46
|
+
-webkit-backdrop-filter: var(--glass-blur);
|
|
47
|
+
border: var(--glass-border);
|
|
48
|
+
border-radius: var(--glass-radius);
|
|
49
|
+
box-shadow: var(--glass-shadow);
|
|
50
|
+
padding: 1.5rem;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Navbar
|
|
55
|
+
```css
|
|
56
|
+
.glass-nav {
|
|
57
|
+
background: var(--glass-bg-heavy);
|
|
58
|
+
backdrop-filter: var(--glass-blur-strong);
|
|
59
|
+
-webkit-backdrop-filter: var(--glass-blur-strong);
|
|
60
|
+
border-bottom: var(--glass-border);
|
|
61
|
+
box-shadow: var(--glass-shadow);
|
|
62
|
+
position: sticky;
|
|
63
|
+
top: 0;
|
|
64
|
+
z-index: 100;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Modal Overlay
|
|
69
|
+
```css
|
|
70
|
+
.glass-modal-backdrop {
|
|
71
|
+
background: rgba(0, 0, 0, 0.4);
|
|
72
|
+
backdrop-filter: blur(4px);
|
|
73
|
+
}
|
|
74
|
+
.glass-modal {
|
|
75
|
+
background: var(--glass-bg-heavy);
|
|
76
|
+
backdrop-filter: var(--glass-blur-strong);
|
|
77
|
+
-webkit-backdrop-filter: var(--glass-blur-strong);
|
|
78
|
+
border: var(--glass-border);
|
|
79
|
+
border-radius: var(--glass-radius-lg);
|
|
80
|
+
box-shadow: var(--glass-shadow-elevated);
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Button
|
|
85
|
+
```css
|
|
86
|
+
.glass-btn {
|
|
87
|
+
background: var(--glass-bg-light);
|
|
88
|
+
backdrop-filter: var(--glass-blur-light);
|
|
89
|
+
-webkit-backdrop-filter: var(--glass-blur-light);
|
|
90
|
+
border: var(--glass-border);
|
|
91
|
+
border-radius: var(--glass-radius);
|
|
92
|
+
transition: background 0.2s;
|
|
93
|
+
}
|
|
94
|
+
.glass-btn:hover {
|
|
95
|
+
background: var(--glass-bg);
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Browser Compatibility
|
|
100
|
+
|
|
101
|
+
| Feature | Chrome | Firefox | Safari | Edge |
|
|
102
|
+
|---------|--------|---------|--------|------|
|
|
103
|
+
| `backdrop-filter` | 76+ | 103+ | 9+ (`-webkit-`) | 79+ |
|
|
104
|
+
| `rgba()` backgrounds | All | All | All | All |
|
|
105
|
+
|
|
106
|
+
- Always include `-webkit-backdrop-filter` for Safari support
|
|
107
|
+
- Firefox <103: use `@supports` fallback with solid semi-transparent bg
|
|
108
|
+
- Fallback pattern:
|
|
109
|
+
|
|
110
|
+
```css
|
|
111
|
+
.glass-card {
|
|
112
|
+
background: rgba(255, 255, 255, 0.85); /* fallback */
|
|
113
|
+
}
|
|
114
|
+
@supports (backdrop-filter: blur(1px)) {
|
|
115
|
+
.glass-card {
|
|
116
|
+
background: var(--glass-bg);
|
|
117
|
+
backdrop-filter: var(--glass-blur);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Accessibility Notes
|
|
123
|
+
|
|
124
|
+
- Ensure **contrast ratio ≥ 4.5:1** for text over glass surfaces — test against all possible backgrounds
|
|
125
|
+
- Provide `prefers-reduced-transparency` media query to disable blur/transparency for users who need it
|
|
126
|
+
- Avoid placing critical text on highly transparent surfaces without a fallback
|
|
127
|
+
- Use `prefers-contrast: more` to increase border opacity and reduce transparency
|
|
128
|
+
|
|
129
|
+
```css
|
|
130
|
+
@media (prefers-reduced-transparency: reduce) {
|
|
131
|
+
.glass-card {
|
|
132
|
+
background: rgba(255, 255, 255, 0.92);
|
|
133
|
+
backdrop-filter: none;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
@media (prefers-contrast: more) {
|
|
137
|
+
.glass-card {
|
|
138
|
+
background: rgba(255, 255, 255, 0.85);
|
|
139
|
+
border: 1px solid rgba(0, 0, 0, 0.3);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: liquid-glass
|
|
3
|
-
description: Apple Liquid Glass 液态玻璃设计(半透明、深度感知、Apple 设计语言)。
|
|
4
|
-
license: MIT
|
|
5
|
-
user-invocable: false
|
|
6
|
-
disable-model-invocation: false
|
|
7
|
-
context: fork
|
|
8
|
-
paths: "*.tsx,*.jsx,*.vue,*.svelte,*.css,*.scss"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Liquid Glass Design System
|
|
12
|
-
|
|
13
|
-
Apple-inspired translucent glass UI with depth, refraction, and ambient light response.
|
|
14
|
-
|
|
15
|
-
## Core Principles
|
|
16
|
-
|
|
17
|
-
1. **Translucency** — Surfaces reveal layered content beneath via backdrop blur
|
|
18
|
-
2. **Depth** — Elements float on distinct z-layers with realistic shadows
|
|
19
|
-
3. **Ambient Response** — Glass tints shift based on underlying content color
|
|
20
|
-
4. **Minimal Chrome** — Borders are subtle; shape and blur define boundaries
|
|
21
|
-
5. **Motion** — Transitions feel physical: spring-based, with inertia
|
|
22
|
-
|
|
23
|
-
## Usage
|
|
24
|
-
|
|
25
|
-
Import the token file in your CSS:
|
|
26
|
-
|
|
27
|
-
```css
|
|
28
|
-
@import 'references/tokens.css';
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## CSS Tokens Reference
|
|
32
|
-
|
|
33
|
-
All tokens are defined in `references/tokens.css`. Key categories:
|
|
34
|
-
|
|
35
|
-
| Category | Prefix | Example |
|
|
36
|
-
|---|---|---|
|
|
37
|
-
| Glass backgrounds | `--lg-bg-*` | `--lg-bg-primary` |
|
|
38
|
-
| Blur | `--lg-blur-*` | `--lg-blur-md` |
|
|
39
|
-
| Borders | `--lg-border-*` | `--lg-border-color` |
|
|
40
|
-
| Shadows | `--lg-shadow-*` | `--lg-shadow-elevated` |
|
|
41
|
-
| Radius | `--lg-radius-*` | `--lg-radius-lg` |
|
|
42
|
-
| Animation | `--lg-duration-*` | `--lg-duration-normal` |
|
|
43
|
-
|
|
44
|
-
## Component Patterns
|
|
45
|
-
|
|
46
|
-
### Glass Card
|
|
47
|
-
|
|
48
|
-
```css
|
|
49
|
-
.glass-card {
|
|
50
|
-
background: var(--lg-bg-primary);
|
|
51
|
-
backdrop-filter: blur(var(--lg-blur-md));
|
|
52
|
-
-webkit-backdrop-filter: blur(var(--lg-blur-md));
|
|
53
|
-
border: 1px solid var(--lg-border-color);
|
|
54
|
-
border-radius: var(--lg-radius-lg);
|
|
55
|
-
box-shadow: var(--lg-shadow-elevated);
|
|
56
|
-
transition: transform var(--lg-duration-normal) var(--lg-easing-spring);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.glass-card:hover {
|
|
60
|
-
transform: translateY(-2px);
|
|
61
|
-
box-shadow: var(--lg-shadow-high);
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Glass Toolbar
|
|
66
|
-
|
|
67
|
-
```css
|
|
68
|
-
.glass-toolbar {
|
|
69
|
-
background: var(--lg-bg-toolbar);
|
|
70
|
-
backdrop-filter: blur(var(--lg-blur-lg)) saturate(var(--lg-saturate));
|
|
71
|
-
-webkit-backdrop-filter: blur(var(--lg-blur-lg)) saturate(var(--lg-saturate));
|
|
72
|
-
border-bottom: 1px solid var(--lg-border-subtle);
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### Glass Button
|
|
77
|
-
|
|
78
|
-
```css
|
|
79
|
-
.glass-btn {
|
|
80
|
-
background: var(--lg-bg-interactive);
|
|
81
|
-
backdrop-filter: blur(var(--lg-blur-sm));
|
|
82
|
-
border: 1px solid var(--lg-border-color);
|
|
83
|
-
border-radius: var(--lg-radius-md);
|
|
84
|
-
transition: all var(--lg-duration-fast) var(--lg-easing-spring);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.glass-btn:active {
|
|
88
|
-
transform: scale(0.97);
|
|
89
|
-
background: var(--lg-bg-pressed);
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Glass Modal Overlay
|
|
94
|
-
|
|
95
|
-
```css
|
|
96
|
-
.glass-overlay {
|
|
97
|
-
background: var(--lg-bg-scrim);
|
|
98
|
-
backdrop-filter: blur(var(--lg-blur-xl));
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.glass-modal {
|
|
102
|
-
background: var(--lg-bg-elevated);
|
|
103
|
-
border: 1px solid var(--lg-border-color);
|
|
104
|
-
border-radius: var(--lg-radius-xl);
|
|
105
|
-
box-shadow: var(--lg-shadow-high);
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## Dark / Light Mode
|
|
110
|
-
|
|
111
|
-
Tokens auto-switch via `prefers-color-scheme`. Light mode uses white-tinted glass; dark mode uses dark-tinted glass with higher blur to maintain readability.
|
|
112
|
-
|
|
113
|
-
```css
|
|
114
|
-
/* Force a mode on a subtree */
|
|
115
|
-
.light-glass { color-scheme: light; }
|
|
116
|
-
.dark-glass { color-scheme: dark; }
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
## Animations
|
|
120
|
-
|
|
121
|
-
Use spring-based easing for physical feel:
|
|
122
|
-
|
|
123
|
-
```css
|
|
124
|
-
/* Entry */
|
|
125
|
-
@keyframes glass-enter {
|
|
126
|
-
from { opacity: 0; transform: scale(0.95) translateY(8px); }
|
|
127
|
-
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.glass-animate-in {
|
|
131
|
-
animation: glass-enter var(--lg-duration-normal) var(--lg-easing-spring) both;
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Accessibility
|
|
136
|
-
|
|
137
|
-
- Ensure `contrast-ratio ≥ 4.5:1` for text over glass surfaces
|
|
138
|
-
- Respect `prefers-reduced-motion` — disable blur animations, use opacity-only transitions
|
|
139
|
-
- Provide `prefers-contrast: high` overrides that replace translucent backgrounds with solid ones
|
|
1
|
+
---
|
|
2
|
+
name: liquid-glass
|
|
3
|
+
description: Apple Liquid Glass 液态玻璃设计(半透明、深度感知、Apple 设计语言)。
|
|
4
|
+
license: MIT
|
|
5
|
+
user-invocable: false
|
|
6
|
+
disable-model-invocation: false
|
|
7
|
+
context: fork
|
|
8
|
+
paths: "*.tsx,*.jsx,*.vue,*.svelte,*.css,*.scss"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Liquid Glass Design System
|
|
12
|
+
|
|
13
|
+
Apple-inspired translucent glass UI with depth, refraction, and ambient light response.
|
|
14
|
+
|
|
15
|
+
## Core Principles
|
|
16
|
+
|
|
17
|
+
1. **Translucency** — Surfaces reveal layered content beneath via backdrop blur
|
|
18
|
+
2. **Depth** — Elements float on distinct z-layers with realistic shadows
|
|
19
|
+
3. **Ambient Response** — Glass tints shift based on underlying content color
|
|
20
|
+
4. **Minimal Chrome** — Borders are subtle; shape and blur define boundaries
|
|
21
|
+
5. **Motion** — Transitions feel physical: spring-based, with inertia
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
Import the token file in your CSS:
|
|
26
|
+
|
|
27
|
+
```css
|
|
28
|
+
@import 'references/tokens.css';
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## CSS Tokens Reference
|
|
32
|
+
|
|
33
|
+
All tokens are defined in `references/tokens.css`. Key categories:
|
|
34
|
+
|
|
35
|
+
| Category | Prefix | Example |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| Glass backgrounds | `--lg-bg-*` | `--lg-bg-primary` |
|
|
38
|
+
| Blur | `--lg-blur-*` | `--lg-blur-md` |
|
|
39
|
+
| Borders | `--lg-border-*` | `--lg-border-color` |
|
|
40
|
+
| Shadows | `--lg-shadow-*` | `--lg-shadow-elevated` |
|
|
41
|
+
| Radius | `--lg-radius-*` | `--lg-radius-lg` |
|
|
42
|
+
| Animation | `--lg-duration-*` | `--lg-duration-normal` |
|
|
43
|
+
|
|
44
|
+
## Component Patterns
|
|
45
|
+
|
|
46
|
+
### Glass Card
|
|
47
|
+
|
|
48
|
+
```css
|
|
49
|
+
.glass-card {
|
|
50
|
+
background: var(--lg-bg-primary);
|
|
51
|
+
backdrop-filter: blur(var(--lg-blur-md));
|
|
52
|
+
-webkit-backdrop-filter: blur(var(--lg-blur-md));
|
|
53
|
+
border: 1px solid var(--lg-border-color);
|
|
54
|
+
border-radius: var(--lg-radius-lg);
|
|
55
|
+
box-shadow: var(--lg-shadow-elevated);
|
|
56
|
+
transition: transform var(--lg-duration-normal) var(--lg-easing-spring);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.glass-card:hover {
|
|
60
|
+
transform: translateY(-2px);
|
|
61
|
+
box-shadow: var(--lg-shadow-high);
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Glass Toolbar
|
|
66
|
+
|
|
67
|
+
```css
|
|
68
|
+
.glass-toolbar {
|
|
69
|
+
background: var(--lg-bg-toolbar);
|
|
70
|
+
backdrop-filter: blur(var(--lg-blur-lg)) saturate(var(--lg-saturate));
|
|
71
|
+
-webkit-backdrop-filter: blur(var(--lg-blur-lg)) saturate(var(--lg-saturate));
|
|
72
|
+
border-bottom: 1px solid var(--lg-border-subtle);
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Glass Button
|
|
77
|
+
|
|
78
|
+
```css
|
|
79
|
+
.glass-btn {
|
|
80
|
+
background: var(--lg-bg-interactive);
|
|
81
|
+
backdrop-filter: blur(var(--lg-blur-sm));
|
|
82
|
+
border: 1px solid var(--lg-border-color);
|
|
83
|
+
border-radius: var(--lg-radius-md);
|
|
84
|
+
transition: all var(--lg-duration-fast) var(--lg-easing-spring);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.glass-btn:active {
|
|
88
|
+
transform: scale(0.97);
|
|
89
|
+
background: var(--lg-bg-pressed);
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Glass Modal Overlay
|
|
94
|
+
|
|
95
|
+
```css
|
|
96
|
+
.glass-overlay {
|
|
97
|
+
background: var(--lg-bg-scrim);
|
|
98
|
+
backdrop-filter: blur(var(--lg-blur-xl));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.glass-modal {
|
|
102
|
+
background: var(--lg-bg-elevated);
|
|
103
|
+
border: 1px solid var(--lg-border-color);
|
|
104
|
+
border-radius: var(--lg-radius-xl);
|
|
105
|
+
box-shadow: var(--lg-shadow-high);
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Dark / Light Mode
|
|
110
|
+
|
|
111
|
+
Tokens auto-switch via `prefers-color-scheme`. Light mode uses white-tinted glass; dark mode uses dark-tinted glass with higher blur to maintain readability.
|
|
112
|
+
|
|
113
|
+
```css
|
|
114
|
+
/* Force a mode on a subtree */
|
|
115
|
+
.light-glass { color-scheme: light; }
|
|
116
|
+
.dark-glass { color-scheme: dark; }
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Animations
|
|
120
|
+
|
|
121
|
+
Use spring-based easing for physical feel:
|
|
122
|
+
|
|
123
|
+
```css
|
|
124
|
+
/* Entry */
|
|
125
|
+
@keyframes glass-enter {
|
|
126
|
+
from { opacity: 0; transform: scale(0.95) translateY(8px); }
|
|
127
|
+
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.glass-animate-in {
|
|
131
|
+
animation: glass-enter var(--lg-duration-normal) var(--lg-easing-spring) both;
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Accessibility
|
|
136
|
+
|
|
137
|
+
- Ensure `contrast-ratio ≥ 4.5:1` for text over glass surfaces
|
|
138
|
+
- Respect `prefers-reduced-motion` — disable blur animations, use opacity-only transitions
|
|
139
|
+
- Provide `prefers-contrast: high` overrides that replace translucent backgrounds with solid ones
|