@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
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Fluid Framework - Testimonial Sections
3
+ * @layer components
4
+ *
5
+ * Social proof sections with customer quotes, avatars, and logo walls.
6
+ * Three layout variants via data-type attribute.
7
+ *
8
+ * Usage:
9
+ * <!-- Single centered (default) -->
10
+ * <section class="testimonials">
11
+ * <header class="testimonials__header">
12
+ * <h2>What people say</h2>
13
+ * </header>
14
+ * <figure class="testimonial">
15
+ * <blockquote class="testimonial__quote" cite="https://...">
16
+ * <p>"This changed everything for our team."</p>
17
+ * </blockquote>
18
+ * <figcaption class="testimonial__author">
19
+ * <img class="avatar" src="..." alt="Jane Doe">
20
+ * <div>
21
+ * <cite class="testimonial__name">Jane Doe</cite>
22
+ * <span class="testimonial__role">CEO, Acme Corp</span>
23
+ * </div>
24
+ * </figcaption>
25
+ * </figure>
26
+ * </section>
27
+ *
28
+ * <!-- Grid -->
29
+ * <section class="testimonials" data-type="grid">
30
+ * <div class="testimonials__grid">
31
+ * <figure class="testimonial">...</figure>
32
+ * <figure class="testimonial">...</figure>
33
+ * <figure class="testimonial">...</figure>
34
+ * </div>
35
+ * </section>
36
+ *
37
+ * <!-- Logo wall -->
38
+ * <section class="testimonials" data-type="logos">
39
+ * <header class="testimonials__header">
40
+ * <p>Trusted by leading companies</p>
41
+ * </header>
42
+ * <div class="testimonials__logos">
43
+ * <img src="logo1.svg" alt="Company 1">
44
+ * <img src="logo2.svg" alt="Company 2">
45
+ * </div>
46
+ * </section>
47
+ */
48
+
49
+ @layer components {
50
+
51
+ /* ========================================
52
+ BASE TESTIMONIALS SECTION
53
+ ======================================== */
54
+
55
+ .testimonials {
56
+ padding-block: var(--space-16);
57
+ padding-inline: var(--space-5);
58
+ max-inline-size: var(--container-xl);
59
+ margin-inline: auto;
60
+ }
61
+
62
+ .testimonials__header {
63
+ text-align: center;
64
+ max-inline-size: var(--container-md);
65
+ margin-inline: auto;
66
+ margin-block-end: var(--space-12);
67
+ }
68
+
69
+ .testimonials__header h2 {
70
+ font-size: var(--font-size-3xl);
71
+ font-weight: var(--weight-bold);
72
+ color: var(--color-text);
73
+ margin-block-end: var(--space-3);
74
+ }
75
+
76
+ .testimonials__header p {
77
+ font-size: var(--font-size-lg);
78
+ color: var(--color-text-muted);
79
+ }
80
+
81
+
82
+ /* ========================================
83
+ SINGLE CENTERED (default)
84
+ Large featured testimonial
85
+ ======================================== */
86
+
87
+ .testimonial {
88
+ --_testi-bg: var(--color-surface);
89
+ --_testi-border: var(--color-border-subtle);
90
+ --_testi-padding: var(--space-8);
91
+ --_testi-radius: var(--radius-xl);
92
+
93
+ display: flex;
94
+ flex-direction: column;
95
+ align-items: center;
96
+ gap: var(--space-6);
97
+ padding: var(--_testi-padding);
98
+ background-color: var(--_testi-bg);
99
+ border: var(--border-width) solid var(--_testi-border);
100
+ border-radius: var(--_testi-radius);
101
+ margin: 0;
102
+ text-align: center;
103
+ position: relative;
104
+ }
105
+
106
+ /* Decorative quote mark */
107
+ .testimonial::before {
108
+ content: "\201C";
109
+ position: absolute;
110
+ inset-block-start: var(--space-4);
111
+ inset-inline-start: var(--space-6);
112
+ font-size: var(--font-size-5xl);
113
+ line-height: 1;
114
+ color: color-mix(in oklch, var(--accent) 25%, transparent);
115
+ font-family: var(--font-serif, Georgia, serif);
116
+ pointer-events: none;
117
+ }
118
+
119
+ .testimonial__quote {
120
+ margin: 0;
121
+ padding: 0;
122
+ border: none;
123
+ max-inline-size: var(--container-prose);
124
+ }
125
+
126
+ .testimonial__quote p {
127
+ font-size: var(--font-size-lg);
128
+ font-style: italic;
129
+ line-height: var(--leading-relaxed);
130
+ color: var(--color-text);
131
+ margin: 0;
132
+ }
133
+
134
+ .testimonial__author {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: var(--space-3);
138
+ }
139
+
140
+ .testimonial__author .avatar {
141
+ flex-shrink: 0;
142
+ }
143
+
144
+ .testimonial__name {
145
+ display: block;
146
+ font-style: normal;
147
+ font-weight: var(--weight-semibold, 600);
148
+ color: var(--color-text);
149
+ font-size: var(--font-size-sm);
150
+ }
151
+
152
+ .testimonial__role {
153
+ display: block;
154
+ font-size: var(--font-size-xs);
155
+ color: var(--color-text-muted);
156
+ }
157
+
158
+ /* Single centered: wider and more spacious */
159
+ .testimonials:not([data-type]) .testimonial {
160
+ max-inline-size: var(--container-md);
161
+ margin-inline: auto;
162
+ padding: var(--space-10);
163
+ }
164
+
165
+ .testimonials:not([data-type]) .testimonial__quote p {
166
+ font-size: var(--font-size-xl);
167
+ }
168
+
169
+
170
+ /* ========================================
171
+ GRID
172
+ Multiple testimonials in card grid
173
+ ======================================== */
174
+
175
+ .testimonials__grid {
176
+ display: grid;
177
+ gap: var(--space-6);
178
+ grid-template-columns: repeat(
179
+ auto-fit,
180
+ minmax(min(100%, 18rem), 1fr)
181
+ );
182
+ }
183
+
184
+ .testimonials[data-type="grid"] .testimonial {
185
+ text-align: start;
186
+ align-items: flex-start;
187
+ }
188
+
189
+ .testimonials[data-type="grid"] .testimonial::before {
190
+ font-size: var(--font-size-4xl);
191
+ }
192
+
193
+ .testimonials[data-type="grid"] .testimonial__quote p {
194
+ font-size: var(--font-size-base);
195
+ }
196
+
197
+
198
+ /* ========================================
199
+ LOGO WALL
200
+ Client/partner logos in a responsive row
201
+ ======================================== */
202
+
203
+ .testimonials__logos {
204
+ display: flex;
205
+ flex-wrap: wrap;
206
+ justify-content: center;
207
+ align-items: center;
208
+ gap: var(--space-10);
209
+ }
210
+
211
+ .testimonials__logos img,
212
+ .testimonials__logos svg {
213
+ block-size: 2.5rem;
214
+ inline-size: auto;
215
+ object-fit: contain;
216
+ opacity: 0.6;
217
+ filter: grayscale(100%);
218
+ transition:
219
+ opacity var(--duration-normal) var(--ease-fluid),
220
+ filter var(--duration-normal) var(--ease-fluid);
221
+ }
222
+
223
+ .testimonials__logos img:hover,
224
+ .testimonials__logos svg:hover {
225
+ opacity: 1;
226
+ filter: grayscale(0%);
227
+ }
228
+
229
+ .testimonials[data-type="logos"] .testimonials__header {
230
+ margin-block-end: var(--space-8);
231
+ }
232
+
233
+ .testimonials[data-type="logos"] .testimonials__header p {
234
+ font-size: var(--font-size-sm);
235
+ text-transform: uppercase;
236
+ letter-spacing: var(--tracking-wider);
237
+ color: var(--color-text-muted);
238
+ }
239
+
240
+
241
+ /* ========================================
242
+ ACCESSIBILITY
243
+ ======================================== */
244
+
245
+ @media (prefers-reduced-motion: reduce) {
246
+ .testimonials__logos img,
247
+ .testimonials__logos svg {
248
+ transition: none;
249
+ }
250
+ }
251
+ }