@fluid-theme/core 0.4.3
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/AGENTS.md +32 -0
- package/CHANGELOG.md +159 -0
- package/CLAUDE.md +104 -0
- package/GEMINI.md +48 -0
- package/LICENSE +21 -0
- package/README.md +253 -0
- package/dist/fluid.min.css +2 -0
- package/fluid-agent-kit/README.md +57 -0
- package/fluid-agent-kit/skills/accessibility.md +41 -0
- package/fluid-agent-kit/skills/css-conventions.md +51 -0
- package/fluid-agent-kit/skills/image-optimization.md +115 -0
- package/fluid-agent-kit/skills/ux-rules.md +43 -0
- package/package.json +68 -0
- package/src/animations/scroll-reveal.css +224 -0
- package/src/components/accordion.css +250 -0
- package/src/components/alert.css +453 -0
- package/src/components/avatar.css +192 -0
- package/src/components/badge.css +182 -0
- package/src/components/button.css +387 -0
- package/src/components/card.css +650 -0
- package/src/components/chip.css +143 -0
- package/src/components/dropdown.css +335 -0
- package/src/components/empty-state.css +105 -0
- package/src/components/form.css +508 -0
- package/src/components/hero.css +293 -0
- package/src/components/indicator.css +455 -0
- package/src/components/loading.css +274 -0
- package/src/components/modal.css +364 -0
- package/src/components/nav.css +726 -0
- package/src/components/scroll-progress.css +104 -0
- package/src/components/search-input.css +125 -0
- package/src/components/settings-panel.css +603 -0
- package/src/components/step-indicator.css +188 -0
- package/src/components/table.css +350 -0
- package/src/components/themed-images.css +229 -0
- package/src/components/tooltip.css +247 -0
- package/src/components/version-badge.css +70 -0
- package/src/core/base.css +884 -0
- package/src/core/reset.css +159 -0
- package/src/core/tokens.css +2416 -0
- package/src/fluid.css +242 -0
- package/src/layouts/positioning.css +626 -0
- package/src/sections/cta.css +210 -0
- package/src/sections/features.css +356 -0
- package/src/sections/footer.css +283 -0
- package/src/sections/stats.css +234 -0
- package/src/sections/team.css +181 -0
- package/src/sections/testimonials.css +251 -0
package/src/fluid.css
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fluid Framework
|
|
3
|
+
* A modern, semantic design system
|
|
4
|
+
*
|
|
5
|
+
* Like water: adaptable, natural, powerful yet gentle.
|
|
6
|
+
*
|
|
7
|
+
* @version 0.4.3
|
|
8
|
+
* @license MIT
|
|
9
|
+
*
|
|
10
|
+
* Layer Architecture:
|
|
11
|
+
* 1. reset - Normalize browser defaults
|
|
12
|
+
* 2. tokens - Design tokens (CSS custom properties)
|
|
13
|
+
* 3. base - Default element styles
|
|
14
|
+
* 4. layouts - Layout utilities and patterns
|
|
15
|
+
* 5. components - Reusable component styles
|
|
16
|
+
* 6. themes - Theme overrides
|
|
17
|
+
* 7. utilities - Utility classes (use sparingly)
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/* Establish layer order first - this is crucial */
|
|
21
|
+
@layer reset, tokens, base, layouts, components, themes, utilities;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/* ========================================
|
|
25
|
+
CORE
|
|
26
|
+
Foundation styles every project needs
|
|
27
|
+
======================================== */
|
|
28
|
+
|
|
29
|
+
@import "./core/reset.css";
|
|
30
|
+
@import "./core/tokens.css";
|
|
31
|
+
@import "./core/base.css";
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
/* ========================================
|
|
35
|
+
LAYOUTS
|
|
36
|
+
Layout primitives and patterns
|
|
37
|
+
======================================== */
|
|
38
|
+
|
|
39
|
+
@import "./layouts/positioning.css";
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/* ========================================
|
|
43
|
+
COMPONENTS
|
|
44
|
+
Reusable UI components
|
|
45
|
+
======================================== */
|
|
46
|
+
|
|
47
|
+
@import "./components/button.css";
|
|
48
|
+
@import "./components/card.css";
|
|
49
|
+
@import "./components/nav.css";
|
|
50
|
+
@import "./components/form.css";
|
|
51
|
+
@import "./components/hero.css";
|
|
52
|
+
@import "./components/indicator.css";
|
|
53
|
+
@import "./components/settings-panel.css";
|
|
54
|
+
@import "./components/scroll-progress.css";
|
|
55
|
+
@import "./components/themed-images.css";
|
|
56
|
+
@import "./components/modal.css";
|
|
57
|
+
@import "./components/tooltip.css";
|
|
58
|
+
@import "./components/accordion.css";
|
|
59
|
+
@import "./components/alert.css";
|
|
60
|
+
@import "./components/table.css";
|
|
61
|
+
@import "./components/avatar.css";
|
|
62
|
+
@import "./components/loading.css";
|
|
63
|
+
@import "./components/dropdown.css";
|
|
64
|
+
@import "./components/badge.css";
|
|
65
|
+
@import "./components/empty-state.css";
|
|
66
|
+
@import "./components/step-indicator.css";
|
|
67
|
+
@import "./components/search-input.css";
|
|
68
|
+
@import "./components/chip.css";
|
|
69
|
+
@import "./components/version-badge.css";
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
/* ========================================
|
|
73
|
+
SECTIONS
|
|
74
|
+
Pre-built page sections
|
|
75
|
+
======================================== */
|
|
76
|
+
|
|
77
|
+
@import "./sections/features.css";
|
|
78
|
+
@import "./sections/testimonials.css";
|
|
79
|
+
@import "./sections/cta.css";
|
|
80
|
+
@import "./sections/footer.css";
|
|
81
|
+
@import "./sections/team.css";
|
|
82
|
+
@import "./sections/stats.css";
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
/* Animations */
|
|
86
|
+
@import "./animations/scroll-reveal.css";
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
/* ========================================
|
|
90
|
+
THEMES (Coming in Phase 4)
|
|
91
|
+
Theme variations and overrides
|
|
92
|
+
======================================== */
|
|
93
|
+
|
|
94
|
+
/* @import "./themes/default.css"; */
|
|
95
|
+
/* @import "./themes/dark.css"; */
|
|
96
|
+
/* @import "./themes/corporate.css"; */
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
/* ========================================
|
|
100
|
+
UTILITIES
|
|
101
|
+
Single-purpose utility classes
|
|
102
|
+
Use sparingly - prefer semantic components
|
|
103
|
+
======================================== */
|
|
104
|
+
|
|
105
|
+
@layer utilities {
|
|
106
|
+
/* Visually hidden but accessible to screen readers */
|
|
107
|
+
.sr-only {
|
|
108
|
+
position: absolute;
|
|
109
|
+
inline-size: 1px;
|
|
110
|
+
block-size: 1px;
|
|
111
|
+
padding: 0;
|
|
112
|
+
margin: -1px;
|
|
113
|
+
overflow: hidden;
|
|
114
|
+
clip: rect(0, 0, 0, 0);
|
|
115
|
+
white-space: nowrap;
|
|
116
|
+
border: 0;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* Focus utility - show only with focus-visible */
|
|
120
|
+
.focus-ring:focus-visible {
|
|
121
|
+
outline: 2px solid var(--color-focus);
|
|
122
|
+
outline-offset: 3px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Flow utility - consistent vertical spacing */
|
|
126
|
+
.flow > * + * {
|
|
127
|
+
margin-block-start: var(--flow-space, var(--space-5));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Prose utility - optimal reading width */
|
|
131
|
+
.prose {
|
|
132
|
+
max-inline-size: var(--container-prose);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* Center utility - horizontally centered content */
|
|
136
|
+
.center {
|
|
137
|
+
display: grid;
|
|
138
|
+
place-items: center;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Icon utility - inline SVG icons */
|
|
142
|
+
.icon {
|
|
143
|
+
display: inline-block;
|
|
144
|
+
vertical-align: middle;
|
|
145
|
+
flex-shrink: 0;
|
|
146
|
+
inline-size: 1em;
|
|
147
|
+
block-size: 1em;
|
|
148
|
+
stroke-width: 2;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.icon--sm { inline-size: 0.875em; block-size: 0.875em; }
|
|
152
|
+
.icon--lg { inline-size: 1.25em; block-size: 1.25em; }
|
|
153
|
+
.icon--xl { inline-size: 1.5em; block-size: 1.5em; }
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
/* ========================================
|
|
157
|
+
IMAGE PROTECTION
|
|
158
|
+
Discourage casual right-click saving.
|
|
159
|
+
NOT DRM — just friction for the 95% who right-click.
|
|
160
|
+
Does NOT prevent screenshots, dev tools, or determined users.
|
|
161
|
+
======================================== */
|
|
162
|
+
|
|
163
|
+
[data-protected] {
|
|
164
|
+
position: relative;
|
|
165
|
+
pointer-events: none;
|
|
166
|
+
user-select: none;
|
|
167
|
+
-webkit-user-drag: none;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
[data-protected]::after {
|
|
171
|
+
content: "";
|
|
172
|
+
position: absolute;
|
|
173
|
+
inset: 0;
|
|
174
|
+
/* Transparent overlay blocks "Save Image As" context menu */
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
/* ========================================
|
|
179
|
+
ORIENTATION-AWARE IMAGES
|
|
180
|
+
Show/hide images based on viewport orientation.
|
|
181
|
+
Use with <picture> for art direction.
|
|
182
|
+
======================================== */
|
|
183
|
+
|
|
184
|
+
[data-orientation="portrait"] { display: none; }
|
|
185
|
+
|
|
186
|
+
@media (orientation: portrait) {
|
|
187
|
+
[data-orientation="landscape"] { display: none; }
|
|
188
|
+
[data-orientation="portrait"] { display: block; }
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
/* ========================================
|
|
194
|
+
LAYOUTS LAYER
|
|
195
|
+
Basic layout utilities until Phase 3
|
|
196
|
+
======================================== */
|
|
197
|
+
|
|
198
|
+
@layer layouts {
|
|
199
|
+
/* Container - constrained width with centered content */
|
|
200
|
+
.container {
|
|
201
|
+
--_container-size: var(--container-content, var(--container-xl));
|
|
202
|
+
inline-size: min(100% - var(--space-gutter, var(--space-8)), var(--_container-size));
|
|
203
|
+
margin-inline: auto;
|
|
204
|
+
container-type: inline-size;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.container--sm { --_container-size: var(--container-sm); }
|
|
208
|
+
.container--md { --_container-size: var(--container-md); }
|
|
209
|
+
.container--lg { --_container-size: var(--container-lg); }
|
|
210
|
+
.container--xl { --_container-size: var(--container-xl); }
|
|
211
|
+
.container--2xl { --_container-size: var(--container-2xl); }
|
|
212
|
+
|
|
213
|
+
/* Stack - vertical flow with consistent gaps */
|
|
214
|
+
.stack {
|
|
215
|
+
display: flex;
|
|
216
|
+
flex-direction: column;
|
|
217
|
+
gap: var(--stack-gap, var(--space-5));
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* Cluster - horizontal flow that wraps */
|
|
221
|
+
.cluster {
|
|
222
|
+
display: flex;
|
|
223
|
+
flex-wrap: wrap;
|
|
224
|
+
gap: var(--cluster-gap, var(--space-4));
|
|
225
|
+
align-items: var(--cluster-align, center);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* Grid - auto-responsive grid */
|
|
229
|
+
.grid {
|
|
230
|
+
display: grid;
|
|
231
|
+
gap: var(--grid-gap, var(--space-5));
|
|
232
|
+
grid-template-columns: repeat(
|
|
233
|
+
auto-fit,
|
|
234
|
+
minmax(min(100%, var(--grid-min, 16rem)), 1fr)
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* Section - consistent vertical padding */
|
|
239
|
+
.section {
|
|
240
|
+
padding-block: var(--space-section);
|
|
241
|
+
}
|
|
242
|
+
}
|