@champpaba/claude-agent-kit 3.0.2 → 3.2.0

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 (51) hide show
  1. package/.claude/CHANGELOG.md +707 -0
  2. package/.claude/CLAUDE.md +128 -613
  3. package/.claude/agents/_shared/pre-work-checklist.md +108 -7
  4. package/.claude/commands/cdev.md +36 -0
  5. package/.claude/commands/csetup.md +292 -1791
  6. package/.claude/commands/cview.md +364 -364
  7. package/.claude/contexts/design/accessibility.md +611 -611
  8. package/.claude/contexts/design/layout.md +400 -400
  9. package/.claude/contexts/design/responsive.md +551 -551
  10. package/.claude/contexts/design/shadows.md +522 -522
  11. package/.claude/contexts/design/typography.md +465 -465
  12. package/.claude/contexts/domain/README.md +164 -164
  13. package/.claude/contexts/patterns/agent-coordination.md +388 -388
  14. package/.claude/contexts/patterns/development-principles.md +513 -513
  15. package/.claude/contexts/patterns/error-handling.md +478 -478
  16. package/.claude/contexts/patterns/logging.md +424 -424
  17. package/.claude/contexts/patterns/tdd-classification.md +516 -516
  18. package/.claude/contexts/patterns/testing.md +413 -413
  19. package/.claude/lib/README.md +3 -3
  20. package/.claude/lib/detailed-guides/taskmaster-analysis.md +1 -1
  21. package/.claude/lib/task-analyzer.md +144 -0
  22. package/.claude/lib/tdd-workflow.md +2 -1
  23. package/.claude/lib/validation-gates.md +484 -484
  24. package/.claude/settings.local.json +42 -42
  25. package/.claude/templates/PROJECT_STATUS.template.yml +16 -41
  26. package/.claude/templates/context-template.md +45 -45
  27. package/.claude/templates/flags-template.json +42 -42
  28. package/.claude/templates/phases-sections/accessibility-test.md +17 -17
  29. package/.claude/templates/phases-sections/api-design.md +37 -37
  30. package/.claude/templates/phases-sections/backend-tests.md +16 -16
  31. package/.claude/templates/phases-sections/backend.md +37 -37
  32. package/.claude/templates/phases-sections/business-logic-validation.md +16 -16
  33. package/.claude/templates/phases-sections/component-tests.md +17 -17
  34. package/.claude/templates/phases-sections/contract-backend.md +16 -16
  35. package/.claude/templates/phases-sections/contract-frontend.md +16 -16
  36. package/.claude/templates/phases-sections/database.md +35 -35
  37. package/.claude/templates/phases-sections/e2e-tests.md +16 -16
  38. package/.claude/templates/phases-sections/fix-implementation.md +17 -17
  39. package/.claude/templates/phases-sections/frontend-integration.md +18 -18
  40. package/.claude/templates/phases-sections/manual-flow-test.md +15 -15
  41. package/.claude/templates/phases-sections/manual-ux-test.md +16 -16
  42. package/.claude/templates/phases-sections/refactor-implementation.md +17 -17
  43. package/.claude/templates/phases-sections/refactor.md +16 -16
  44. package/.claude/templates/phases-sections/regression-tests.md +15 -15
  45. package/.claude/templates/phases-sections/responsive-test.md +16 -16
  46. package/.claude/templates/phases-sections/script-implementation.md +43 -43
  47. package/.claude/templates/phases-sections/test-coverage.md +16 -16
  48. package/.claude/templates/phases-sections/user-approval.md +14 -14
  49. package/LICENSE +21 -21
  50. package/package.json +1 -1
  51. package/.claude/lib/tdd-classifier.md +0 -345
@@ -1,522 +1,522 @@
1
- # Shadow System
2
-
3
- > **Purpose:** Consistent elevation and depth hierarchy using shadows
4
-
5
- ---
6
-
7
- ## 3-Tier Shadow System
8
-
9
- **Core Principle:** Use shadows to indicate elevation, not decoration
10
-
11
- **Visual Hierarchy:**
12
- - **Level 1** (Subtle): Barely noticeable, resting state
13
- - **Level 2** (Medium): Elevated, interactive elements
14
- - **Level 3** (Large): Floating, top-layer elements
15
-
16
- ---
17
-
18
- ## Shadow Definitions
19
-
20
- ### Level 1: Subtle (sm)
21
-
22
- **Use Cases:**
23
- - Cards at rest
24
- - Input fields
25
- - Buttons (default state)
26
- - List items
27
- - Table rows
28
-
29
- **Definition:**
30
- ```css
31
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
32
- ```
33
-
34
- **Breakdown:**
35
- - `0` - No horizontal offset (shadow directly below)
36
- - `1px` - 1px vertical offset (slight drop)
37
- - `2px` - 2px blur radius (soft edge)
38
- - `0` - No spread
39
- - `rgb(0 0 0 / 0.05)` - 5% opacity black (very subtle)
40
-
41
- **Example:**
42
- ```css
43
- .card {
44
- box-shadow: var(--shadow-sm);
45
- }
46
-
47
- .input {
48
- box-shadow: var(--shadow-sm);
49
- border: 1px solid var(--color-border);
50
- }
51
- ```
52
-
53
- ---
54
-
55
- ### Level 2: Medium (md)
56
-
57
- **Use Cases:**
58
- - Dropdowns
59
- - Modals
60
- - Popovers
61
- - Buttons (hover state)
62
- - Cards (hover state)
63
- - Tooltips
64
-
65
- **Definition:**
66
- ```css
67
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1),
68
- 0 2px 4px -2px rgb(0 0 0 / 0.1);
69
- ```
70
-
71
- **Breakdown:**
72
- - **First shadow** (main depth):
73
- - `0 4px 6px -1px` - 4px down, 6px blur, -1px spread (tighter shadow)
74
- - `rgb(0 0 0 / 0.1)` - 10% opacity
75
- - **Second shadow** (subtle edge):
76
- - `0 2px 4px -2px` - 2px down, 4px blur, -2px spread (soft edge)
77
- - `rgb(0 0 0 / 0.1)` - 10% opacity
78
-
79
- **Example:**
80
- ```css
81
- .dropdown {
82
- box-shadow: var(--shadow-md);
83
- }
84
-
85
- .card:hover {
86
- box-shadow: var(--shadow-md);
87
- transition: box-shadow 0.2s ease;
88
- }
89
-
90
- .button:hover {
91
- box-shadow: var(--shadow-md);
92
- }
93
- ```
94
-
95
- ---
96
-
97
- ### Level 3: Large (lg)
98
-
99
- **Use Cases:**
100
- - Full-screen modals
101
- - Overlays
102
- - Mega menus
103
- - Sticky headers
104
- - Notification panels
105
- - Slide-out drawers
106
-
107
- **Definition:**
108
- ```css
109
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),
110
- 0 4px 6px -4px rgb(0 0 0 / 0.1);
111
- ```
112
-
113
- **Breakdown:**
114
- - **First shadow** (main depth):
115
- - `0 10px 15px -3px` - 10px down, 15px blur, -3px spread
116
- - `rgb(0 0 0 / 0.1)` - 10% opacity
117
- - **Second shadow** (soft edge):
118
- - `0 4px 6px -4px` - 4px down, 6px blur, -4px spread
119
- - `rgb(0 0 0 / 0.1)` - 10% opacity
120
-
121
- **Example:**
122
- ```css
123
- .modal {
124
- box-shadow: var(--shadow-lg);
125
- }
126
-
127
- .mega-menu {
128
- box-shadow: var(--shadow-lg);
129
- }
130
-
131
- .drawer {
132
- box-shadow: var(--shadow-lg);
133
- }
134
- ```
135
-
136
- ---
137
-
138
- ## Optional: Extended Shadow Scale
139
-
140
- **For projects needing more granularity:**
141
-
142
- ```css
143
- /* Extra Subtle (xs) */
144
- --shadow-xs: 0 1px 1px 0 rgb(0 0 0 / 0.03);
145
-
146
- /* Subtle (sm) - Standard */
147
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
148
-
149
- /* Medium (md) - Standard */
150
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1),
151
- 0 2px 4px -2px rgb(0 0 0 / 0.1);
152
-
153
- /* Large (lg) - Standard */
154
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),
155
- 0 4px 6px -4px rgb(0 0 0 / 0.1);
156
-
157
- /* Extra Large (xl) */
158
- --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),
159
- 0 8px 10px -6px rgb(0 0 0 / 0.1);
160
-
161
- /* 2XL (maximum elevation) */
162
- --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
163
- ```
164
-
165
- ---
166
-
167
- ## Shadow Usage Patterns
168
-
169
- ### Interactive Elements
170
-
171
- **Elevation on Hover:**
172
- ```css
173
- .card {
174
- box-shadow: var(--shadow-sm);
175
- transition: box-shadow 0.2s ease;
176
- }
177
-
178
- .card:hover {
179
- box-shadow: var(--shadow-md);
180
- }
181
-
182
- .card:active {
183
- box-shadow: var(--shadow-sm); /* Return to base on click */
184
- }
185
- ```
186
-
187
- **Buttons:**
188
- ```css
189
- .button {
190
- box-shadow: var(--shadow-sm);
191
- }
192
-
193
- .button:hover {
194
- box-shadow: var(--shadow-md);
195
- }
196
-
197
- .button:active {
198
- box-shadow: none; /* Pressed down, no elevation */
199
- }
200
- ```
201
-
202
- ---
203
-
204
- ### Layering
205
-
206
- **Z-Index + Shadow Coordination:**
207
-
208
- ```css
209
- /* Base layer (z-index: 1) */
210
- .content {
211
- z-index: 1;
212
- box-shadow: var(--shadow-sm);
213
- }
214
-
215
- /* Elevated layer (z-index: 10) */
216
- .dropdown {
217
- z-index: 10;
218
- box-shadow: var(--shadow-md);
219
- }
220
-
221
- /* Top layer (z-index: 100) */
222
- .modal {
223
- z-index: 100;
224
- box-shadow: var(--shadow-lg);
225
- }
226
-
227
- /* Notification layer (z-index: 1000) */
228
- .toast {
229
- z-index: 1000;
230
- box-shadow: var(--shadow-lg);
231
- }
232
- ```
233
-
234
- **Rule:** Higher z-index = Larger shadow
235
-
236
- ---
237
-
238
- ### Navigation
239
-
240
- **Sticky Headers:**
241
- ```css
242
- .header {
243
- position: sticky;
244
- top: 0;
245
- box-shadow: none; /* No shadow when at top */
246
- transition: box-shadow 0.2s ease;
247
- }
248
-
249
- .header.scrolled {
250
- box-shadow: var(--shadow-md); /* Add shadow when scrolling */
251
- }
252
- ```
253
-
254
- **Dropdowns:**
255
- ```css
256
- .dropdown-menu {
257
- position: absolute;
258
- top: 100%;
259
- box-shadow: var(--shadow-md);
260
- border-radius: var(--spacing-2);
261
- }
262
- ```
263
-
264
- ---
265
-
266
- ## Color Variations
267
-
268
- ### Subtle Color Shadows
269
-
270
- **For Brand Emphasis:**
271
- ```css
272
- /* Primary color shadow (blue brand) */
273
- .button-primary:hover {
274
- box-shadow: 0 4px 6px -1px rgb(59 130 246 / 0.2),
275
- 0 2px 4px -2px rgb(59 130 246 / 0.1);
276
- }
277
-
278
- /* Success shadow (green) */
279
- .alert-success {
280
- box-shadow: 0 1px 2px 0 rgb(34 197 94 / 0.1);
281
- border-left: 4px solid rgb(34 197 94);
282
- }
283
-
284
- /* Error shadow (red) */
285
- .alert-error {
286
- box-shadow: 0 1px 2px 0 rgb(239 68 68 / 0.1);
287
- border-left: 4px solid rgb(239 68 68);
288
- }
289
- ```
290
-
291
- **When to Use:**
292
- - ✅ Highlighting important CTAs
293
- - ✅ Status indicators (success, warning, error)
294
- - ✅ Premium/special features
295
- - ❌ Standard UI elements (use neutral shadows)
296
- - ❌ Overuse (loses emphasis)
297
-
298
- ---
299
-
300
- ## Inner Shadows
301
-
302
- **Definition:** Shadows inside elements (inset)
303
-
304
- **Use Cases:**
305
- - Input fields (focused state)
306
- - Pressed buttons
307
- - Recessed areas
308
-
309
- ```css
310
- /* Input focus state */
311
- .input:focus {
312
- outline: none;
313
- box-shadow: inset 0 1px 2px 0 rgb(0 0 0 / 0.05),
314
- 0 0 0 3px rgb(59 130 246 / 0.2); /* Focus ring */
315
- }
316
-
317
- /* Pressed button */
318
- .button:active {
319
- box-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.1);
320
- }
321
-
322
- /* Well/recessed area */
323
- .well {
324
- box-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.06);
325
- background: var(--color-muted);
326
- }
327
- ```
328
-
329
- ---
330
-
331
- ## Dark Mode Shadows
332
-
333
- **Principle:** Lighter shadows on dark backgrounds
334
-
335
- ```css
336
- /* Light mode (default) */
337
- :root {
338
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
339
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
340
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
341
- }
342
-
343
- /* Dark mode */
344
- .dark {
345
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.5); /* Stronger contrast */
346
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.7);
347
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.9);
348
- }
349
- ```
350
-
351
- **Alternative (White Highlights):**
352
- ```css
353
- .dark {
354
- /* Use subtle white glow instead of black shadow */
355
- --shadow-sm: 0 1px 2px 0 rgb(255 255 255 / 0.05);
356
- --shadow-md: 0 4px 6px -1px rgb(255 255 255 / 0.1);
357
- }
358
- ```
359
-
360
- ---
361
-
362
- ## Performance Considerations
363
-
364
- ### Shadow vs Border
365
-
366
- **Shadow (Better):**
367
- ```css
368
- /* Smooth, doesn't affect layout */
369
- .card {
370
- box-shadow: var(--shadow-sm);
371
- }
372
- ```
373
-
374
- **Border (Alternative):**
375
- ```css
376
- /* Affects layout (adds 1px to dimensions) */
377
- .card {
378
- border: 1px solid var(--color-border);
379
- }
380
- ```
381
-
382
- **Hybrid Approach:**
383
- ```css
384
- /* Combine subtle shadow + border for definition */
385
- .card {
386
- box-shadow: var(--shadow-sm);
387
- border: 1px solid rgb(0 0 0 / 0.05);
388
- }
389
- ```
390
-
391
- ---
392
-
393
- ### Transition Performance
394
-
395
- **Smooth Transitions:**
396
- ```css
397
- .card {
398
- box-shadow: var(--shadow-sm);
399
- transition: box-shadow 0.2s ease; /* Fast, smooth */
400
- }
401
-
402
- .card:hover {
403
- box-shadow: var(--shadow-md);
404
- }
405
- ```
406
-
407
- **Avoid:**
408
- ```css
409
- /* ❌ Too slow (feels laggy) */
410
- .card {
411
- transition: box-shadow 0.5s ease;
412
- }
413
-
414
- /* ❌ Multiple properties (can cause jank) */
415
- .card {
416
- transition: all 0.2s ease; /* Use specific properties */
417
- }
418
- ```
419
-
420
- ---
421
-
422
- ## Best Practices
423
-
424
- ### DO:
425
- - ✅ Use 3-tier system (sm, md, lg)
426
- - ✅ Coordinate shadows with z-index
427
- - ✅ Add shadows on hover for interactivity
428
- - ✅ Use subtle shadows for resting states
429
- - ✅ Increase shadow opacity in dark mode
430
- - ✅ Transition shadows smoothly (0.2s)
431
- - ✅ Use neutral black shadows (rgb(0 0 0))
432
-
433
- ### DON'T:
434
- - ❌ Use more than 3-4 shadow levels
435
- - ❌ Apply shadows to every element
436
- - ❌ Use harsh shadows (too dark)
437
- - ❌ Mix shadow and border on same edge
438
- - ❌ Forget dark mode adjustments
439
- - ❌ Use slow transitions (> 0.3s)
440
- - ❌ Apply shadows to text (use text-shadow)
441
-
442
- ---
443
-
444
- ## Common Patterns
445
-
446
- ### Card System
447
- ```css
448
- .card {
449
- background: white;
450
- border-radius: var(--spacing-2);
451
- padding: var(--spacing-6);
452
- box-shadow: var(--shadow-sm);
453
- transition: box-shadow 0.2s ease;
454
- }
455
-
456
- .card:hover {
457
- box-shadow: var(--shadow-md);
458
- }
459
-
460
- .card-elevated {
461
- box-shadow: var(--shadow-md);
462
- }
463
- ```
464
-
465
- ### Modal System
466
- ```css
467
- .modal-overlay {
468
- background: rgb(0 0 0 / 0.5); /* 50% opacity overlay */
469
- }
470
-
471
- .modal-content {
472
- background: white;
473
- border-radius: var(--spacing-2);
474
- padding: var(--spacing-8);
475
- box-shadow: var(--shadow-lg);
476
- }
477
- ```
478
-
479
- ### Dropdown System
480
- ```css
481
- .dropdown-trigger {
482
- box-shadow: var(--shadow-sm);
483
- }
484
-
485
- .dropdown-menu {
486
- position: absolute;
487
- background: white;
488
- border-radius: var(--spacing-2);
489
- padding: var(--spacing-2);
490
- box-shadow: var(--shadow-md);
491
- min-width: 200px;
492
- }
493
- ```
494
-
495
- ---
496
-
497
- ## Quick Reference
498
-
499
- **Shadow Levels:**
500
- | Level | Size | Use Case |
501
- |-------|------|----------|
502
- | `shadow-sm` | Subtle | Cards, inputs, buttons (rest) |
503
- | `shadow-md` | Medium | Dropdowns, modals, hovers |
504
- | `shadow-lg` | Large | Overlays, mega menus, drawers |
505
-
506
- **Elevation + Z-Index:**
507
- | Z-Index | Shadow | Element Type |
508
- |---------|--------|--------------|
509
- | 1 | `shadow-sm` | Base content |
510
- | 10 | `shadow-md` | Dropdowns, popovers |
511
- | 100 | `shadow-lg` | Modals, overlays |
512
- | 1000 | `shadow-lg` | Toasts, notifications |
513
-
514
- **Dark Mode:**
515
- | Mode | Opacity Multiplier |
516
- |------|-------------------|
517
- | Light | 1x (0.05, 0.1) |
518
- | Dark | 5-10x (0.5, 0.7, 0.9) |
519
-
520
- ---
521
-
522
- **💡 Remember:** Shadows indicate elevation. Use them to guide user attention!
1
+ # Shadow System
2
+
3
+ > **Purpose:** Consistent elevation and depth hierarchy using shadows
4
+
5
+ ---
6
+
7
+ ## 3-Tier Shadow System
8
+
9
+ **Core Principle:** Use shadows to indicate elevation, not decoration
10
+
11
+ **Visual Hierarchy:**
12
+ - **Level 1** (Subtle): Barely noticeable, resting state
13
+ - **Level 2** (Medium): Elevated, interactive elements
14
+ - **Level 3** (Large): Floating, top-layer elements
15
+
16
+ ---
17
+
18
+ ## Shadow Definitions
19
+
20
+ ### Level 1: Subtle (sm)
21
+
22
+ **Use Cases:**
23
+ - Cards at rest
24
+ - Input fields
25
+ - Buttons (default state)
26
+ - List items
27
+ - Table rows
28
+
29
+ **Definition:**
30
+ ```css
31
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
32
+ ```
33
+
34
+ **Breakdown:**
35
+ - `0` - No horizontal offset (shadow directly below)
36
+ - `1px` - 1px vertical offset (slight drop)
37
+ - `2px` - 2px blur radius (soft edge)
38
+ - `0` - No spread
39
+ - `rgb(0 0 0 / 0.05)` - 5% opacity black (very subtle)
40
+
41
+ **Example:**
42
+ ```css
43
+ .card {
44
+ box-shadow: var(--shadow-sm);
45
+ }
46
+
47
+ .input {
48
+ box-shadow: var(--shadow-sm);
49
+ border: 1px solid var(--color-border);
50
+ }
51
+ ```
52
+
53
+ ---
54
+
55
+ ### Level 2: Medium (md)
56
+
57
+ **Use Cases:**
58
+ - Dropdowns
59
+ - Modals
60
+ - Popovers
61
+ - Buttons (hover state)
62
+ - Cards (hover state)
63
+ - Tooltips
64
+
65
+ **Definition:**
66
+ ```css
67
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1),
68
+ 0 2px 4px -2px rgb(0 0 0 / 0.1);
69
+ ```
70
+
71
+ **Breakdown:**
72
+ - **First shadow** (main depth):
73
+ - `0 4px 6px -1px` - 4px down, 6px blur, -1px spread (tighter shadow)
74
+ - `rgb(0 0 0 / 0.1)` - 10% opacity
75
+ - **Second shadow** (subtle edge):
76
+ - `0 2px 4px -2px` - 2px down, 4px blur, -2px spread (soft edge)
77
+ - `rgb(0 0 0 / 0.1)` - 10% opacity
78
+
79
+ **Example:**
80
+ ```css
81
+ .dropdown {
82
+ box-shadow: var(--shadow-md);
83
+ }
84
+
85
+ .card:hover {
86
+ box-shadow: var(--shadow-md);
87
+ transition: box-shadow 0.2s ease;
88
+ }
89
+
90
+ .button:hover {
91
+ box-shadow: var(--shadow-md);
92
+ }
93
+ ```
94
+
95
+ ---
96
+
97
+ ### Level 3: Large (lg)
98
+
99
+ **Use Cases:**
100
+ - Full-screen modals
101
+ - Overlays
102
+ - Mega menus
103
+ - Sticky headers
104
+ - Notification panels
105
+ - Slide-out drawers
106
+
107
+ **Definition:**
108
+ ```css
109
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),
110
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
111
+ ```
112
+
113
+ **Breakdown:**
114
+ - **First shadow** (main depth):
115
+ - `0 10px 15px -3px` - 10px down, 15px blur, -3px spread
116
+ - `rgb(0 0 0 / 0.1)` - 10% opacity
117
+ - **Second shadow** (soft edge):
118
+ - `0 4px 6px -4px` - 4px down, 6px blur, -4px spread
119
+ - `rgb(0 0 0 / 0.1)` - 10% opacity
120
+
121
+ **Example:**
122
+ ```css
123
+ .modal {
124
+ box-shadow: var(--shadow-lg);
125
+ }
126
+
127
+ .mega-menu {
128
+ box-shadow: var(--shadow-lg);
129
+ }
130
+
131
+ .drawer {
132
+ box-shadow: var(--shadow-lg);
133
+ }
134
+ ```
135
+
136
+ ---
137
+
138
+ ## Optional: Extended Shadow Scale
139
+
140
+ **For projects needing more granularity:**
141
+
142
+ ```css
143
+ /* Extra Subtle (xs) */
144
+ --shadow-xs: 0 1px 1px 0 rgb(0 0 0 / 0.03);
145
+
146
+ /* Subtle (sm) - Standard */
147
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
148
+
149
+ /* Medium (md) - Standard */
150
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1),
151
+ 0 2px 4px -2px rgb(0 0 0 / 0.1);
152
+
153
+ /* Large (lg) - Standard */
154
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),
155
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
156
+
157
+ /* Extra Large (xl) */
158
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),
159
+ 0 8px 10px -6px rgb(0 0 0 / 0.1);
160
+
161
+ /* 2XL (maximum elevation) */
162
+ --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Shadow Usage Patterns
168
+
169
+ ### Interactive Elements
170
+
171
+ **Elevation on Hover:**
172
+ ```css
173
+ .card {
174
+ box-shadow: var(--shadow-sm);
175
+ transition: box-shadow 0.2s ease;
176
+ }
177
+
178
+ .card:hover {
179
+ box-shadow: var(--shadow-md);
180
+ }
181
+
182
+ .card:active {
183
+ box-shadow: var(--shadow-sm); /* Return to base on click */
184
+ }
185
+ ```
186
+
187
+ **Buttons:**
188
+ ```css
189
+ .button {
190
+ box-shadow: var(--shadow-sm);
191
+ }
192
+
193
+ .button:hover {
194
+ box-shadow: var(--shadow-md);
195
+ }
196
+
197
+ .button:active {
198
+ box-shadow: none; /* Pressed down, no elevation */
199
+ }
200
+ ```
201
+
202
+ ---
203
+
204
+ ### Layering
205
+
206
+ **Z-Index + Shadow Coordination:**
207
+
208
+ ```css
209
+ /* Base layer (z-index: 1) */
210
+ .content {
211
+ z-index: 1;
212
+ box-shadow: var(--shadow-sm);
213
+ }
214
+
215
+ /* Elevated layer (z-index: 10) */
216
+ .dropdown {
217
+ z-index: 10;
218
+ box-shadow: var(--shadow-md);
219
+ }
220
+
221
+ /* Top layer (z-index: 100) */
222
+ .modal {
223
+ z-index: 100;
224
+ box-shadow: var(--shadow-lg);
225
+ }
226
+
227
+ /* Notification layer (z-index: 1000) */
228
+ .toast {
229
+ z-index: 1000;
230
+ box-shadow: var(--shadow-lg);
231
+ }
232
+ ```
233
+
234
+ **Rule:** Higher z-index = Larger shadow
235
+
236
+ ---
237
+
238
+ ### Navigation
239
+
240
+ **Sticky Headers:**
241
+ ```css
242
+ .header {
243
+ position: sticky;
244
+ top: 0;
245
+ box-shadow: none; /* No shadow when at top */
246
+ transition: box-shadow 0.2s ease;
247
+ }
248
+
249
+ .header.scrolled {
250
+ box-shadow: var(--shadow-md); /* Add shadow when scrolling */
251
+ }
252
+ ```
253
+
254
+ **Dropdowns:**
255
+ ```css
256
+ .dropdown-menu {
257
+ position: absolute;
258
+ top: 100%;
259
+ box-shadow: var(--shadow-md);
260
+ border-radius: var(--spacing-2);
261
+ }
262
+ ```
263
+
264
+ ---
265
+
266
+ ## Color Variations
267
+
268
+ ### Subtle Color Shadows
269
+
270
+ **For Brand Emphasis:**
271
+ ```css
272
+ /* Primary color shadow (blue brand) */
273
+ .button-primary:hover {
274
+ box-shadow: 0 4px 6px -1px rgb(59 130 246 / 0.2),
275
+ 0 2px 4px -2px rgb(59 130 246 / 0.1);
276
+ }
277
+
278
+ /* Success shadow (green) */
279
+ .alert-success {
280
+ box-shadow: 0 1px 2px 0 rgb(34 197 94 / 0.1);
281
+ border-left: 4px solid rgb(34 197 94);
282
+ }
283
+
284
+ /* Error shadow (red) */
285
+ .alert-error {
286
+ box-shadow: 0 1px 2px 0 rgb(239 68 68 / 0.1);
287
+ border-left: 4px solid rgb(239 68 68);
288
+ }
289
+ ```
290
+
291
+ **When to Use:**
292
+ - ✅ Highlighting important CTAs
293
+ - ✅ Status indicators (success, warning, error)
294
+ - ✅ Premium/special features
295
+ - ❌ Standard UI elements (use neutral shadows)
296
+ - ❌ Overuse (loses emphasis)
297
+
298
+ ---
299
+
300
+ ## Inner Shadows
301
+
302
+ **Definition:** Shadows inside elements (inset)
303
+
304
+ **Use Cases:**
305
+ - Input fields (focused state)
306
+ - Pressed buttons
307
+ - Recessed areas
308
+
309
+ ```css
310
+ /* Input focus state */
311
+ .input:focus {
312
+ outline: none;
313
+ box-shadow: inset 0 1px 2px 0 rgb(0 0 0 / 0.05),
314
+ 0 0 0 3px rgb(59 130 246 / 0.2); /* Focus ring */
315
+ }
316
+
317
+ /* Pressed button */
318
+ .button:active {
319
+ box-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.1);
320
+ }
321
+
322
+ /* Well/recessed area */
323
+ .well {
324
+ box-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.06);
325
+ background: var(--color-muted);
326
+ }
327
+ ```
328
+
329
+ ---
330
+
331
+ ## Dark Mode Shadows
332
+
333
+ **Principle:** Lighter shadows on dark backgrounds
334
+
335
+ ```css
336
+ /* Light mode (default) */
337
+ :root {
338
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
339
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
340
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
341
+ }
342
+
343
+ /* Dark mode */
344
+ .dark {
345
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.5); /* Stronger contrast */
346
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.7);
347
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.9);
348
+ }
349
+ ```
350
+
351
+ **Alternative (White Highlights):**
352
+ ```css
353
+ .dark {
354
+ /* Use subtle white glow instead of black shadow */
355
+ --shadow-sm: 0 1px 2px 0 rgb(255 255 255 / 0.05);
356
+ --shadow-md: 0 4px 6px -1px rgb(255 255 255 / 0.1);
357
+ }
358
+ ```
359
+
360
+ ---
361
+
362
+ ## Performance Considerations
363
+
364
+ ### Shadow vs Border
365
+
366
+ **Shadow (Better):**
367
+ ```css
368
+ /* Smooth, doesn't affect layout */
369
+ .card {
370
+ box-shadow: var(--shadow-sm);
371
+ }
372
+ ```
373
+
374
+ **Border (Alternative):**
375
+ ```css
376
+ /* Affects layout (adds 1px to dimensions) */
377
+ .card {
378
+ border: 1px solid var(--color-border);
379
+ }
380
+ ```
381
+
382
+ **Hybrid Approach:**
383
+ ```css
384
+ /* Combine subtle shadow + border for definition */
385
+ .card {
386
+ box-shadow: var(--shadow-sm);
387
+ border: 1px solid rgb(0 0 0 / 0.05);
388
+ }
389
+ ```
390
+
391
+ ---
392
+
393
+ ### Transition Performance
394
+
395
+ **Smooth Transitions:**
396
+ ```css
397
+ .card {
398
+ box-shadow: var(--shadow-sm);
399
+ transition: box-shadow 0.2s ease; /* Fast, smooth */
400
+ }
401
+
402
+ .card:hover {
403
+ box-shadow: var(--shadow-md);
404
+ }
405
+ ```
406
+
407
+ **Avoid:**
408
+ ```css
409
+ /* ❌ Too slow (feels laggy) */
410
+ .card {
411
+ transition: box-shadow 0.5s ease;
412
+ }
413
+
414
+ /* ❌ Multiple properties (can cause jank) */
415
+ .card {
416
+ transition: all 0.2s ease; /* Use specific properties */
417
+ }
418
+ ```
419
+
420
+ ---
421
+
422
+ ## Best Practices
423
+
424
+ ### DO:
425
+ - ✅ Use 3-tier system (sm, md, lg)
426
+ - ✅ Coordinate shadows with z-index
427
+ - ✅ Add shadows on hover for interactivity
428
+ - ✅ Use subtle shadows for resting states
429
+ - ✅ Increase shadow opacity in dark mode
430
+ - ✅ Transition shadows smoothly (0.2s)
431
+ - ✅ Use neutral black shadows (rgb(0 0 0))
432
+
433
+ ### DON'T:
434
+ - ❌ Use more than 3-4 shadow levels
435
+ - ❌ Apply shadows to every element
436
+ - ❌ Use harsh shadows (too dark)
437
+ - ❌ Mix shadow and border on same edge
438
+ - ❌ Forget dark mode adjustments
439
+ - ❌ Use slow transitions (> 0.3s)
440
+ - ❌ Apply shadows to text (use text-shadow)
441
+
442
+ ---
443
+
444
+ ## Common Patterns
445
+
446
+ ### Card System
447
+ ```css
448
+ .card {
449
+ background: white;
450
+ border-radius: var(--spacing-2);
451
+ padding: var(--spacing-6);
452
+ box-shadow: var(--shadow-sm);
453
+ transition: box-shadow 0.2s ease;
454
+ }
455
+
456
+ .card:hover {
457
+ box-shadow: var(--shadow-md);
458
+ }
459
+
460
+ .card-elevated {
461
+ box-shadow: var(--shadow-md);
462
+ }
463
+ ```
464
+
465
+ ### Modal System
466
+ ```css
467
+ .modal-overlay {
468
+ background: rgb(0 0 0 / 0.5); /* 50% opacity overlay */
469
+ }
470
+
471
+ .modal-content {
472
+ background: white;
473
+ border-radius: var(--spacing-2);
474
+ padding: var(--spacing-8);
475
+ box-shadow: var(--shadow-lg);
476
+ }
477
+ ```
478
+
479
+ ### Dropdown System
480
+ ```css
481
+ .dropdown-trigger {
482
+ box-shadow: var(--shadow-sm);
483
+ }
484
+
485
+ .dropdown-menu {
486
+ position: absolute;
487
+ background: white;
488
+ border-radius: var(--spacing-2);
489
+ padding: var(--spacing-2);
490
+ box-shadow: var(--shadow-md);
491
+ min-width: 200px;
492
+ }
493
+ ```
494
+
495
+ ---
496
+
497
+ ## Quick Reference
498
+
499
+ **Shadow Levels:**
500
+ | Level | Size | Use Case |
501
+ |-------|------|----------|
502
+ | `shadow-sm` | Subtle | Cards, inputs, buttons (rest) |
503
+ | `shadow-md` | Medium | Dropdowns, modals, hovers |
504
+ | `shadow-lg` | Large | Overlays, mega menus, drawers |
505
+
506
+ **Elevation + Z-Index:**
507
+ | Z-Index | Shadow | Element Type |
508
+ |---------|--------|--------------|
509
+ | 1 | `shadow-sm` | Base content |
510
+ | 10 | `shadow-md` | Dropdowns, popovers |
511
+ | 100 | `shadow-lg` | Modals, overlays |
512
+ | 1000 | `shadow-lg` | Toasts, notifications |
513
+
514
+ **Dark Mode:**
515
+ | Mode | Opacity Multiplier |
516
+ |------|-------------------|
517
+ | Light | 1x (0.05, 0.1) |
518
+ | Dark | 5-10x (0.5, 0.7, 0.9) |
519
+
520
+ ---
521
+
522
+ **💡 Remember:** Shadows indicate elevation. Use them to guide user attention!