@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.
Files changed (48) hide show
  1. package/AGENTS.md +32 -0
  2. package/CHANGELOG.md +159 -0
  3. package/CLAUDE.md +104 -0
  4. package/GEMINI.md +48 -0
  5. package/LICENSE +21 -0
  6. package/README.md +253 -0
  7. package/dist/fluid.min.css +2 -0
  8. package/fluid-agent-kit/README.md +57 -0
  9. package/fluid-agent-kit/skills/accessibility.md +41 -0
  10. package/fluid-agent-kit/skills/css-conventions.md +51 -0
  11. package/fluid-agent-kit/skills/image-optimization.md +115 -0
  12. package/fluid-agent-kit/skills/ux-rules.md +43 -0
  13. package/package.json +68 -0
  14. package/src/animations/scroll-reveal.css +224 -0
  15. package/src/components/accordion.css +250 -0
  16. package/src/components/alert.css +453 -0
  17. package/src/components/avatar.css +192 -0
  18. package/src/components/badge.css +182 -0
  19. package/src/components/button.css +387 -0
  20. package/src/components/card.css +650 -0
  21. package/src/components/chip.css +143 -0
  22. package/src/components/dropdown.css +335 -0
  23. package/src/components/empty-state.css +105 -0
  24. package/src/components/form.css +508 -0
  25. package/src/components/hero.css +293 -0
  26. package/src/components/indicator.css +455 -0
  27. package/src/components/loading.css +274 -0
  28. package/src/components/modal.css +364 -0
  29. package/src/components/nav.css +726 -0
  30. package/src/components/scroll-progress.css +104 -0
  31. package/src/components/search-input.css +125 -0
  32. package/src/components/settings-panel.css +603 -0
  33. package/src/components/step-indicator.css +188 -0
  34. package/src/components/table.css +350 -0
  35. package/src/components/themed-images.css +229 -0
  36. package/src/components/tooltip.css +247 -0
  37. package/src/components/version-badge.css +70 -0
  38. package/src/core/base.css +884 -0
  39. package/src/core/reset.css +159 -0
  40. package/src/core/tokens.css +2416 -0
  41. package/src/fluid.css +242 -0
  42. package/src/layouts/positioning.css +626 -0
  43. package/src/sections/cta.css +210 -0
  44. package/src/sections/features.css +356 -0
  45. package/src/sections/footer.css +283 -0
  46. package/src/sections/stats.css +234 -0
  47. package/src/sections/team.css +181 -0
  48. 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
+ }