@nerdev/skillset 0.2.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/LICENSE +21 -0
- package/README.md +351 -0
- package/bin/skillset.mjs +205 -0
- package/curations/README.md +53 -0
- package/curations/TEMPLATE/WHY.md +23 -0
- package/curations/TEMPLATE/overlay/SKILL.md +6 -0
- package/curations/impeccable/WHY.md +34 -0
- package/curations/impeccable/overlay/SKILL.md +116 -0
- package/package.json +43 -0
- package/scripts/ste-gate.mjs +39 -0
- package/scripts/ste-lint.py +201 -0
- package/scripts/sync.mjs +174 -0
- package/skills/ai-agent/agent-docs-writer/SKILL.md +105 -0
- package/skills/ai-agent/agent-docs-writer/references/principles.md +73 -0
- package/skills/ai-agent/agent-docs-writer/templates/AGENTS.template.md +44 -0
- package/skills/ai-agent/agent-docs-writer/templates/README.template.md +19 -0
- package/skills/ai-agent/ultra-context-engine/SKILL.md +941 -0
- package/skills/architecture/blueprint/SKILL.md +191 -0
- package/skills/architecture/code-tour/SKILL.md +204 -0
- package/skills/architecture/progress-guard/SKILL.md +148 -0
- package/skills/architecture/search-first/SKILL.md +97 -0
- package/skills/backend/api-design/SKILL.md +456 -0
- package/skills/backend/auth/SKILL.md +596 -0
- package/skills/backend/database/SKILL.md +431 -0
- package/skills/backend/realtime/SKILL.md +670 -0
- package/skills/backend/security/SKILL.md +590 -0
- package/skills/business/brag/SKILL.md +177 -0
- package/skills/business/brag/assets/music/README.md +20 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.json +3846 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.json +1826 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.json +2266 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.json +2806 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.json +2796 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-1-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-10-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-11-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-12-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-9-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/sfx/casino/card-fan-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-fan-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-place-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-place-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-place-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-place-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shove-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shove-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shove-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shove-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shuffle.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-5.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-6.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-7.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-8.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/cards-pack-open-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/cards-pack-open-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chip-lay-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chip-lay-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chip-lay-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-collide-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-collide-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-collide-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-collide-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-6.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-5.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-6.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-grab-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-grab-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-shake-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-shake-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-shake-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-throw-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-throw-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-throw-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/die-throw-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/die-throw-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/die-throw-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/die-throw-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_carpet_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_carpet_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_carpet_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactBell_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactBell_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactBell_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_light_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMining_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/bong_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_005.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/drop_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/drop_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/drop_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/error_005.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/error_006.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/glitch_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/glitch_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/select_008.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_005.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_006.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_007.ogg +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-001.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-002.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-003.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-004.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-005.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-006.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-007.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-008.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-009.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-010.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-011.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-012.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-013.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-014.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-015.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-016.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-017.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-018.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-019.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-020.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-021.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-022.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-023.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-024.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-025.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-026.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-027.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-028.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-029.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-030.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-031.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-032.wav +0 -0
- package/skills/business/brag/assets/sfx/sfx-analysis.json +15584 -0
- package/skills/business/brag/assets/sfx/sfx-analysis.md +75 -0
- package/skills/business/brag/assets/sfx/ui/click1.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/click2.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/click3.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/click4.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/click5.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/mouseclick1.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/rollover1.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/rollover2.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/rollover4.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/rollover5.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch1.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch10.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch11.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch12.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch13.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch14.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch15.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch16.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch17.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch18.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch19.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch2.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch20.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch21.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch22.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch23.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch24.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch25.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch26.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch27.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch28.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch29.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch3.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch30.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch31.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch32.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch33.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch34.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch35.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch36.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch37.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch38.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch4.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch5.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch6.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch7.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch8.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch9.ogg +0 -0
- package/skills/business/brag/references/audio.md +307 -0
- package/skills/business/brag/references/step-1-inspect.md +133 -0
- package/skills/business/brag/references/step-2-plan.md +234 -0
- package/skills/business/brag/references/step-3-compose.md +210 -0
- package/skills/business/brag/references/step-4-deliver.md +168 -0
- package/skills/business/brag/references/tones.md +231 -0
- package/skills/business/brag/scripts/analyze_music_cues.py +309 -0
- package/skills/business/brag/scripts/pyproject.toml +14 -0
- package/skills/business/brag/scripts/uv.lock +819 -0
- package/skills/business/copywriting/SKILL.md +178 -0
- package/skills/business/customer-research/SKILL.md +259 -0
- package/skills/business/freelancing/SKILL.md +679 -0
- package/skills/business/launch/SKILL.md +273 -0
- package/skills/business/marketing-psychology/SKILL.md +364 -0
- package/skills/business/pricing/SKILL.md +233 -0
- package/skills/business/resume-revamp-jake-ats/SKILL.md +64 -0
- package/skills/business/startup-founder/SKILL.md +400 -0
- package/skills/business/startup-founder/references/funding.md +48 -0
- package/skills/business/startup-founder/references/further-reading.md +132 -0
- package/skills/business/startup-founder/references/gtm-tools.md +57 -0
- package/skills/business/startup-founder/references/legal-india.md +36 -0
- package/skills/business/startup-founder/references/marketing/README.md +16 -0
- package/skills/business/startup-founder/references/marketing/cold-email.md +172 -0
- package/skills/business/startup-founder/references/marketing/competitors.md +245 -0
- package/skills/business/startup-founder/references/marketing/customer-research.md +276 -0
- package/skills/business/startup-founder/references/marketing/free-tools.md +168 -0
- package/skills/business/startup-founder/references/marketing/launch.md +343 -0
- package/skills/business/startup-founder/references/marketing/marketing-plan.md +270 -0
- package/skills/business/startup-founder/references/marketing/pricing.md +237 -0
- package/skills/business/startup-founder/references/marketing/product-marketing.md +250 -0
- package/skills/business/startup-founder/references/validation.md +267 -0
- package/skills/devops/deployments/SKILL.md +339 -0
- package/skills/devops/git-ci/SKILL.md +372 -0
- package/skills/devops/performance/SKILL.md +523 -0
- package/skills/devops/testing/SKILL.md +558 -0
- package/skills/engineering/code-review/SKILL.md +149 -0
- package/skills/engineering/coding-standards/SKILL.md +229 -0
- package/skills/engineering/product-engineering/SKILL.md +219 -0
- package/skills/engineering/senior-engineer-prompts/SKILL.md +145 -0
- package/skills/engineering/tdd-workflow/SKILL.md +178 -0
- package/skills/engineering/verification-loop/SKILL.md +199 -0
- package/skills/nerdev/nerdev-abstraction/SKILL.md +412 -0
- package/skills/nerdev/nerdev-docs/SKILL.md +527 -0
- package/skills/nerdev/nerdev-docs/templates/adr-template.md +39 -0
- package/skills/nerdev/nerdev-docs/templates/contributing-template.md +140 -0
- package/skills/nerdev/nerdev-docs/templates/deploy-template.md +426 -0
- package/skills/nerdev/nerdev-docs/templates/design-template.md +105 -0
- package/skills/nerdev/nerdev-docs/templates/incident-template.md +66 -0
- package/skills/nerdev/nerdev-monorepo/SKILL.md +522 -0
- package/skills/quality/output-skill/SKILL.md +49 -0
- package/skills/quality/unslop/SKILL.md +67 -0
- package/skills/ui/animaxxing/SKILL.md +58 -0
- package/skills/ui/animaxxing/agents/openai.yaml +7 -0
- package/skills/ui/animaxxing/references/effect-restoration.md +26 -0
- package/skills/ui/animaxxing/references/motion-vocabulary.md +142 -0
- package/skills/ui/animaxxing/references/recipes/blast-off.md +119 -0
- package/skills/ui/animaxxing/references/recipes/particle-effects.md +718 -0
- package/skills/ui/animaxxing/references/recipes/particle-field.md +428 -0
- package/skills/ui/animaxxing/references/recipes/route-letters.md +205 -0
- package/skills/ui/animaxxing/references/recipes/speak-in.md +181 -0
- package/skills/ui/animaxxing/references/recipes/split-entrances.md +345 -0
- package/skills/ui/animaxxing/references/recipes/wave.md +144 -0
- package/skills/ui/animaxxing/references/text-stability.md +68 -0
- package/skills/ui/animaxxing/references/verification.md +44 -0
- package/skills/ui/ask-animation/SKILL.md +178 -0
- package/skills/ui/ask-base-ui/SKILL.md +400 -0
- package/skills/ui/ask-cmdk/SKILL.md +315 -0
- package/skills/ui/ask-command-menu/SKILL.md +262 -0
- package/skills/ui/ask-drawer/SKILL.md +235 -0
- package/skills/ui/ask-form/SKILL.md +229 -0
- package/skills/ui/ask-gsap/SKILL.md +435 -0
- package/skills/ui/ask-modal/SKILL.md +145 -0
- package/skills/ui/ask-motion/SKILL.md +339 -0
- package/skills/ui/ask-rhf/SKILL.md +388 -0
- package/skills/ui/ask-sonner/API.md +64 -0
- package/skills/ui/ask-sonner/SKILL.md +88 -0
- package/skills/ui/ask-table/SKILL.md +253 -0
- package/skills/ui/ask-tanstack-table/SKILL.md +490 -0
- package/skills/ui/ask-toast/SKILL.md +163 -0
- package/skills/ui/ask-vaul/SKILL.md +291 -0
- package/skills/ui/ask-virtual-list/SKILL.md +304 -0
- package/skills/ui/ask-virtuoso/SKILL.md +332 -0
- package/skills/ui/email-craft/SKILL.md +258 -0
- package/skills/ui/frontend-craftsmanship/SKILL.md +462 -0
- package/skills/ui/gsap-astro/SKILL.md +56 -0
- package/skills/ui/gsap-astro/agents/openai.yaml +7 -0
- package/skills/ui/gsap-astro/references/client-router-navigation.md +139 -0
- package/skills/ui/gsap-astro/references/initialization.md +87 -0
- package/skills/ui/gsap-astro/references/motion-system.md +152 -0
- package/skills/ui/gsap-astro/references/scripts-and-islands.md +65 -0
- package/skills/ui/gsap-astro/references/verification.md +44 -0
- package/skills/ui/gsap-core/SKILL.md +254 -0
- package/skills/ui/gsap-frameworks/SKILL.md +266 -0
- package/skills/ui/gsap-nextjs/SKILL.md +51 -0
- package/skills/ui/gsap-nextjs/agents/openai.yaml +7 -0
- package/skills/ui/gsap-nextjs/references/app-router-navigation.md +189 -0
- package/skills/ui/gsap-nextjs/references/initialization.md +87 -0
- package/skills/ui/gsap-nextjs/references/motion-system.md +158 -0
- package/skills/ui/gsap-nextjs/references/verification.md +40 -0
- package/skills/ui/gsap-nuxt/SKILL.md +56 -0
- package/skills/ui/gsap-nuxt/agents/openai.yaml +7 -0
- package/skills/ui/gsap-nuxt/references/initialization.md +87 -0
- package/skills/ui/gsap-nuxt/references/motion-system.md +161 -0
- package/skills/ui/gsap-nuxt/references/navigation.md +145 -0
- package/skills/ui/gsap-nuxt/references/page-transitions.md +107 -0
- package/skills/ui/gsap-nuxt/references/verification.md +42 -0
- package/skills/ui/gsap-performance/SKILL.md +79 -0
- package/skills/ui/gsap-plugins/SKILL.md +433 -0
- package/skills/ui/gsap-react/SKILL.md +136 -0
- package/skills/ui/gsap-react-router/SKILL.md +55 -0
- package/skills/ui/gsap-react-router/agents/openai.yaml +7 -0
- package/skills/ui/gsap-react-router/references/initialization.md +87 -0
- package/skills/ui/gsap-react-router/references/motion-system.md +158 -0
- package/skills/ui/gsap-react-router/references/react-router-navigation.md +165 -0
- package/skills/ui/gsap-react-router/references/route-lifetime.md +74 -0
- package/skills/ui/gsap-react-router/references/verification.md +42 -0
- package/skills/ui/gsap-scrolltrigger/SKILL.md +296 -0
- package/skills/ui/gsap-sveltekit/SKILL.md +54 -0
- package/skills/ui/gsap-sveltekit/agents/openai.yaml +7 -0
- package/skills/ui/gsap-sveltekit/references/initialization.md +87 -0
- package/skills/ui/gsap-sveltekit/references/motion-system.md +156 -0
- package/skills/ui/gsap-sveltekit/references/page-lifetime.md +63 -0
- package/skills/ui/gsap-sveltekit/references/sveltekit-navigation.md +160 -0
- package/skills/ui/gsap-sveltekit/references/verification.md +41 -0
- package/skills/ui/gsap-tanstack-router/SKILL.md +56 -0
- package/skills/ui/gsap-tanstack-router/agents/openai.yaml +7 -0
- package/skills/ui/gsap-tanstack-router/references/initialization.md +87 -0
- package/skills/ui/gsap-tanstack-router/references/motion-system.md +160 -0
- package/skills/ui/gsap-tanstack-router/references/route-lifetime.md +66 -0
- package/skills/ui/gsap-tanstack-router/references/tanstack-navigation.md +156 -0
- package/skills/ui/gsap-tanstack-router/references/verification.md +41 -0
- package/skills/ui/gsap-timeline/SKILL.md +107 -0
- package/skills/ui/gsap-utils/SKILL.md +284 -0
- package/skills/ui/gsap-vanilla/SKILL.md +63 -0
- package/skills/ui/gsap-vanilla/agents/openai.yaml +7 -0
- package/skills/ui/gsap-vanilla/references/cross-document-navigation.md +54 -0
- package/skills/ui/gsap-vanilla/references/initialization.md +87 -0
- package/skills/ui/gsap-vanilla/references/motion-system.md +150 -0
- package/skills/ui/gsap-vanilla/references/page-load.md +96 -0
- package/skills/ui/gsap-vanilla/references/spa-navigation.md +70 -0
- package/skills/ui/gsap-vanilla/references/verification.md +41 -0
- package/skills/ui/house-style/SKILL.md +366 -0
- package/skills/ui/imagegen/SKILL.md +49 -0
- package/skills/ui/imagegen/references/brandkit.md +48 -0
- package/skills/ui/imagegen/references/image-to-code.md +56 -0
- package/skills/ui/imagegen/references/mobile.md +58 -0
- package/skills/ui/imagegen/references/web.md +63 -0
- package/skills/ui/impeccable/SKILL.md +116 -0
- package/skills/ui/impeccable/reference/adapt.md +318 -0
- package/skills/ui/impeccable/reference/adapt.native.md +58 -0
- package/skills/ui/impeccable/reference/android.md +46 -0
- package/skills/ui/impeccable/reference/animate.md +89 -0
- package/skills/ui/impeccable/reference/audit.md +137 -0
- package/skills/ui/impeccable/reference/audit.native.md +139 -0
- package/skills/ui/impeccable/reference/bolder.md +33 -0
- package/skills/ui/impeccable/reference/clarify.md +94 -0
- package/skills/ui/impeccable/reference/colorize.md +86 -0
- package/skills/ui/impeccable/reference/craft-floor.md +44 -0
- package/skills/ui/impeccable/reference/craft.md +5 -0
- package/skills/ui/impeccable/reference/critique.md +806 -0
- package/skills/ui/impeccable/reference/degraded/asset-producer.md +37 -0
- package/skills/ui/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/ui/impeccable/reference/degraded/finish-reviewer.md +38 -0
- package/skills/ui/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/ui/impeccable/reference/delight.md +70 -0
- package/skills/ui/impeccable/reference/distill.md +111 -0
- package/skills/ui/impeccable/reference/doctor.md +54 -0
- package/skills/ui/impeccable/reference/document.md +416 -0
- package/skills/ui/impeccable/reference/extract.md +69 -0
- package/skills/ui/impeccable/reference/generate.md +101 -0
- package/skills/ui/impeccable/reference/harden.md +345 -0
- package/skills/ui/impeccable/reference/hooks.md +111 -0
- package/skills/ui/impeccable/reference/init.md +131 -0
- package/skills/ui/impeccable/reference/ios.md +51 -0
- package/skills/ui/impeccable/reference/layout.md +84 -0
- package/skills/ui/impeccable/reference/live-setup.md +104 -0
- package/skills/ui/impeccable/reference/live.md +325 -0
- package/skills/ui/impeccable/reference/new-work.md +145 -0
- package/skills/ui/impeccable/reference/onboard.md +234 -0
- package/skills/ui/impeccable/reference/operate.md +61 -0
- package/skills/ui/impeccable/reference/optimize.md +258 -0
- package/skills/ui/impeccable/reference/overdrive.md +127 -0
- package/skills/ui/impeccable/reference/polish.md +105 -0
- package/skills/ui/impeccable/reference/quieter.md +99 -0
- package/skills/ui/impeccable/reference/routing.md +24 -0
- package/skills/ui/impeccable/reference/shape.md +59 -0
- package/skills/ui/impeccable/reference/typeset.md +80 -0
- package/skills/ui/impeccable/reference/visualize.md +46 -0
- package/skills/ui/impeccable/scripts/VERSION +1 -0
- package/skills/ui/impeccable/scripts/command-metadata.json +98 -0
- package/skills/ui/impeccable/scripts/data/font-index-failures.json +121 -0
- package/skills/ui/impeccable/scripts/data/font-index.json +1 -0
- package/skills/ui/impeccable/scripts/impeccable +206 -0
- package/skills/ui/impeccable/scripts/impeccable.cmd +214 -0
- package/skills/ui/impeccable/scripts/live-browser-dom.js +167 -0
- package/skills/ui/impeccable/scripts/live-browser-ignores.js +242 -0
- package/skills/ui/impeccable/scripts/live-browser-session.js +144 -0
- package/skills/ui/impeccable/scripts/live-browser.js +13510 -0
- package/skills/ui/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/ui/motion/SKILL.md +207 -0
- package/skills/ui/pick-ui-library/SKILL.md +85 -0
- package/skills/ui/product-messaging/SKILL.md +163 -0
- package/skills/ui/product-site/SKILL.md +465 -0
- package/skills/ui/prototype/PICKER.md +197 -0
- package/skills/ui/prototype/SKILL.md +98 -0
- package/skills/ui/refero-design/SKILL.md +534 -0
- package/skills/ui/refero-design/agents/openai.yaml +4 -0
- package/skills/ui/refero-design/references/anti-ai-slop.md +292 -0
- package/skills/ui/refero-design/references/color.md +563 -0
- package/skills/ui/refero-design/references/copywriting.md +222 -0
- package/skills/ui/refero-design/references/craft-details.md +525 -0
- package/skills/ui/refero-design/references/example-workflow.md +264 -0
- package/skills/ui/refero-design/references/icons.md +166 -0
- package/skills/ui/refero-design/references/mcp-tools.md +258 -0
- package/skills/ui/refero-design/references/motion.md +504 -0
- package/skills/ui/refero-design/references/typography.md +737 -0
- package/skills/ui/refero-design/references/visual-workflow.md +105 -0
- package/skills/ui/style-animaxxing/SKILL.md +48 -0
- package/skills/ui/style-animaxxing/agents/openai.yaml +7 -0
- package/skills/ui/style-animaxxing/references/motion-vocabulary.md +51 -0
- package/skills/ui/style-animaxxing/references/tokens.md +288 -0
- package/skills/ui/style-animaxxing/references/typography-and-layout.md +149 -0
- package/skills/ui/style-animaxxing/references/verification.md +38 -0
- package/skills/ui/typography-picker/SKILL.md +305 -0
- package/skills/ui/ui-core/SKILL.md +345 -0
- package/skills/ui/ui-core/references/accessibility.md +85 -0
- package/skills/ui/ui-core/references/build.md +666 -0
- package/skills/ui/ui-core/references/copy.md +70 -0
- package/skills/ui/ui-core/references/dark-mode.md +76 -0
- package/skills/ui/ui-core/references/direction.md +99 -0
- package/skills/ui/ui-core/references/redesign.md +74 -0
- package/skills/ui/ui-core/references/responsive.md +77 -0
- package/skills/ui/ui-core/references/styles.md +42 -0
- package/skills/ui/ui-core/references/system.md +190 -0
- package/skills/ui/ui-core/references/verify.md +37 -0
- package/skills/ui/ui-engineering/SKILL.md +436 -0
- package/skills/ui/ui-engineering/references/avatars.md +74 -0
- package/skills/ui/ui-engineering/references/card-patterns.md +66 -0
- package/skills/ui/ui-engineering/references/floating-actions.md +65 -0
- package/skills/ui/ui-engineering/references/navigation.md +81 -0
- package/skills/ui/ui-engineering/references/overlays.md +74 -0
- package/skills/ui/ui-engineering/references/pagination.md +71 -0
- package/skills/ui/ui-engineering/references/progress-indicators.md +77 -0
- package/skills/ui/ui-engineering/references/quality-bar.md +293 -0
- package/skills/ui/ui-engineering/references/search.md +68 -0
- package/skills/ui/ui-engineering/references/tailwind-architecture.md +81 -0
- package/skills/ui/ui-theme-picker/SKILL.md +522 -0
- package/skills/ui/ui-theme-picker/references/component-sources.md +223 -0
- package/skills/ui/ui-theme-picker/references/styles.md +298 -0
- package/skills/ui/vitepress-docs/SKILL.md +439 -0
- package/skills/ui/vitepress-docs/references/components.md +333 -0
- package/skills/ui/vitepress-docs/references/layout.md +128 -0
- package/skills/ui/vitepress-docs/references/tokens.md +87 -0
- package/skills/ui/vitepress-docs/references/typography.md +76 -0
- package/skills/workflow/careful/SKILL.md +48 -0
- package/skills/workflow/context-restore/SKILL.md +69 -0
- package/skills/workflow/context-save/SKILL.md +96 -0
- package/skills/workflow/health/SKILL.md +99 -0
- package/skills/workflow/learn/SKILL.md +95 -0
- package/skills/workflow/office-hours/SKILL.md +136 -0
- package/skills/workflow/ship/SKILL.md +95 -0
- package/vendor.json +80 -0
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
# Color Guide
|
|
2
|
+
|
|
3
|
+
Color is the emotional backbone of UI. Get it wrong and your product looks either amateur or AI-generated. Get it right and everything feels intentional.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 0. Context First
|
|
8
|
+
|
|
9
|
+
Before touching palettes, answer these questions:
|
|
10
|
+
|
|
11
|
+
| Question | Why It Matters |
|
|
12
|
+
|----------|----------------|
|
|
13
|
+
| **Product UI or marketing?** | Product: fewer colors, more neutrals, strict semantics. Marketing: more emotion, gradients, contrast allowed. |
|
|
14
|
+
| **Data density?** | Dashboards need muted accents, high text contrast, no "glowing" colors. Content-focused UI can be softer. |
|
|
15
|
+
| **Is brand defined?** | No brand: use safe preset, refine later. Existing brand: translate brand color into system tokens, don't paint everything with it. |
|
|
16
|
+
|
|
17
|
+
**Hard rule:**
|
|
18
|
+
|
|
19
|
+
> When in doubt β fewer colors, more neutrals, stricter purpose. Restraint beats "colorful."
|
|
20
|
+
|
|
21
|
+
This single rule eliminates 50% of AI-slop before you start.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 1. Color Space
|
|
26
|
+
|
|
27
|
+
Why most palettes "break" when you try to extend them.
|
|
28
|
+
|
|
29
|
+
### The Problem with HSL
|
|
30
|
+
|
|
31
|
+
HSL is intuitive but poorly represents perceptual brightness. A "50% lightness" yellow looks much brighter than "50% lightness" blue. This makes consistent scales nearly impossible.
|
|
32
|
+
|
|
33
|
+
### The Solution: OKLCH
|
|
34
|
+
|
|
35
|
+
OKLCH (or LCH) provides perceptually uniform lightness. Steps from 50β950 actually look even.
|
|
36
|
+
|
|
37
|
+
**Practical workflow:**
|
|
38
|
+
- Generate and adjust palettes in OKLCH
|
|
39
|
+
- Store production values as hex
|
|
40
|
+
- Keep OKLCH logic as source of truth
|
|
41
|
+
|
|
42
|
+
```css
|
|
43
|
+
/* OKLCH example */
|
|
44
|
+
--primary-500: oklch(0.55 0.2 250); /* Base */
|
|
45
|
+
--primary-600: oklch(0.48 0.2 250); /* Hover */
|
|
46
|
+
--primary-700: oklch(0.41 0.2 250); /* Active */
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**For MVP:** You can skip OKLCH. Use curated palettes (Tailwind, Radix, Open Color). But know why they work.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 2. Palette Structure
|
|
54
|
+
|
|
55
|
+
You need 4 layers, not "30 beautiful colors."
|
|
56
|
+
|
|
57
|
+
### 2.1 Neutrals (Most Important)
|
|
58
|
+
|
|
59
|
+
Neutrals are 70β90% of your UI. This is where you win or lose.
|
|
60
|
+
|
|
61
|
+
**Requirements:**
|
|
62
|
+
- 10-12 steps: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950
|
|
63
|
+
- Slight character (warm or cool), not colorful circus
|
|
64
|
+
- Consistent across light and dark themes
|
|
65
|
+
|
|
66
|
+
**Scale reference:**
|
|
67
|
+
|
|
68
|
+
| Step | Use | Example |
|
|
69
|
+
|------|-----|---------|
|
|
70
|
+
| 50 | Near-white backgrounds | `#fafafa` |
|
|
71
|
+
| 100-200 | Surfaces, cards | `#f5f5f5`, `#e5e5e5` |
|
|
72
|
+
| 300-400 | Borders, dividers | `#d4d4d4`, `#a3a3a3` |
|
|
73
|
+
| 500 | Placeholder text | `#737373` |
|
|
74
|
+
| 600-700 | Secondary text | `#525252`, `#404040` |
|
|
75
|
+
| 800-900 | Primary text | `#262626`, `#171717` |
|
|
76
|
+
| 950 | Near-black | `#0a0a0a` |
|
|
77
|
+
|
|
78
|
+
**Hard rules:**
|
|
79
|
+
- Never use pure `#000` on white as body text
|
|
80
|
+
- Don't make text gray "for breathing room" β spacing creates breathing room, not faded text
|
|
81
|
+
|
|
82
|
+
### 2.2 Primary Accent
|
|
83
|
+
|
|
84
|
+
One brand color. It should:
|
|
85
|
+
- Have good contrast on both white and dark backgrounds
|
|
86
|
+
- Have a full scale (50β950), not just one hex
|
|
87
|
+
- Be used sparingly and purposefully
|
|
88
|
+
|
|
89
|
+
**Typical usage:**
|
|
90
|
+
|
|
91
|
+
| Step | Use |
|
|
92
|
+
|------|-----|
|
|
93
|
+
| 50-100 | Tinted backgrounds |
|
|
94
|
+
| 500-600 | Default state |
|
|
95
|
+
| 600-700 | Hover state |
|
|
96
|
+
| 700-800 | Active/pressed state |
|
|
97
|
+
|
|
98
|
+
### 2.3 Semantic Colors
|
|
99
|
+
|
|
100
|
+
Usually 3-4:
|
|
101
|
+
- **Success** β Green (confirmations, completion)
|
|
102
|
+
- **Warning** β Amber/Yellow (attention needed)
|
|
103
|
+
- **Danger** β Red (errors, destructive actions)
|
|
104
|
+
- **Info** β Blue (neutral information) β optional
|
|
105
|
+
|
|
106
|
+
**Important:** Semantics work through pairs, not single colors.
|
|
107
|
+
|
|
108
|
+
```css
|
|
109
|
+
/* Each semantic needs: */
|
|
110
|
+
--success: #16a34a; /* Icon, text accent */
|
|
111
|
+
--success-bg: #f0fdf4; /* Background */
|
|
112
|
+
--success-border: #86efac; /* Border */
|
|
113
|
+
--on-success: #ffffff; /* Text on solid success */
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 2.4 Effects (Only If Needed)
|
|
117
|
+
|
|
118
|
+
- Gradients
|
|
119
|
+
- Glows
|
|
120
|
+
- Illustration tints
|
|
121
|
+
|
|
122
|
+
**Rule:** In product UI, effects should be rare and localized. Save drama for marketing.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 3. The 60/30/10 Rule
|
|
127
|
+
|
|
128
|
+
Distribution that works for any interface:
|
|
129
|
+
|
|
130
|
+
| Percentage | Elements |
|
|
131
|
+
|------------|----------|
|
|
132
|
+
| 60-80% | Neutrals (backgrounds, surfaces, borders) |
|
|
133
|
+
| 10-20% | Text hierarchy (different gray levels) |
|
|
134
|
+
| 5-10% | Accents and semantics |
|
|
135
|
+
|
|
136
|
+
### Component Color Limit
|
|
137
|
+
|
|
138
|
+
**Maximum 2 colors per component.**
|
|
139
|
+
|
|
140
|
+
If a button has brand gradient + colored border + colored shadow + colored text, it's almost always garbage.
|
|
141
|
+
|
|
142
|
+
### State Changes: Structure, Not Circus
|
|
143
|
+
|
|
144
|
+
Hover and Active should be:
|
|
145
|
+
- Slightly darker/lighter
|
|
146
|
+
- Slightly more contrast
|
|
147
|
+
- Subtle shadow enhancement
|
|
148
|
+
|
|
149
|
+
**Don't** repaint every state with a new random color.
|
|
150
|
+
|
|
151
|
+
```css
|
|
152
|
+
/* Good */
|
|
153
|
+
.button {
|
|
154
|
+
background: var(--primary);
|
|
155
|
+
}
|
|
156
|
+
.button:hover {
|
|
157
|
+
background: var(--primary-hover); /* Just darker */
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* Bad */
|
|
161
|
+
.button:hover {
|
|
162
|
+
background: linear-gradient(135deg, #ff6b6b, #feca57);
|
|
163
|
+
box-shadow: 0 0 20px #ff6b6b;
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 4. Contrast and Readability
|
|
170
|
+
|
|
171
|
+
Not about checking boxes β about actual readability.
|
|
172
|
+
|
|
173
|
+
### Minimum Requirements
|
|
174
|
+
|
|
175
|
+
| Text Type | WCAG AA Ratio |
|
|
176
|
+
|-----------|---------------|
|
|
177
|
+
| Body text (β€16px) | 4.5:1 |
|
|
178
|
+
| Large text (18px+ bold, 24px+ regular) | 3:1 |
|
|
179
|
+
| UI components, icons | 3:1 |
|
|
180
|
+
|
|
181
|
+
### Common Failures
|
|
182
|
+
|
|
183
|
+
1. **Secondary text too pale** β The #1 issue. If it looks fine on your Retina display at noon, it fails on cheap monitors at 9pm.
|
|
184
|
+
|
|
185
|
+
2. **Text on tinted backgrounds** β "Almost readable" text on colored backgrounds fails in real conditions (tired eyes, ambient light, older monitors).
|
|
186
|
+
|
|
187
|
+
### Practical Check
|
|
188
|
+
|
|
189
|
+
- Test secondary text on multiple devices
|
|
190
|
+
- If you squint and text disappears, it's too light
|
|
191
|
+
- Ask: "Would my parents read this easily?"
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 5. Light and Dark Themes
|
|
196
|
+
|
|
197
|
+
### The Wrong Way
|
|
198
|
+
|
|
199
|
+
Inverting colors mechanically: white β black, black β white.
|
|
200
|
+
|
|
201
|
+
Result: eye-burning contrast, amateur look.
|
|
202
|
+
|
|
203
|
+
### The Right Way
|
|
204
|
+
|
|
205
|
+
**Dark theme gets its own neutral scale.**
|
|
206
|
+
|
|
207
|
+
```css
|
|
208
|
+
/* Light */
|
|
209
|
+
:root {
|
|
210
|
+
--bg: #ffffff;
|
|
211
|
+
--surface: #f7f7f7;
|
|
212
|
+
--text: #0b0b0b;
|
|
213
|
+
--text-muted: #5f6368;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* Dark β NOT just inverted */
|
|
217
|
+
[data-theme="dark"] {
|
|
218
|
+
--bg: #0f0f0f; /* Not #000 */
|
|
219
|
+
--surface: #1a1a1a;
|
|
220
|
+
--text: #f0f0f0; /* Not #fff */
|
|
221
|
+
--text-muted: #a1a1a1;
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Dark Theme Elevation
|
|
226
|
+
|
|
227
|
+
In dark UI, surfaces and layers communicate through:
|
|
228
|
+
- Slightly lighter backgrounds for elevated elements
|
|
229
|
+
- Subtle borders (1px, low contrast)
|
|
230
|
+
- Very soft shadows or no shadows at all
|
|
231
|
+
|
|
232
|
+
```css
|
|
233
|
+
[data-theme="dark"] {
|
|
234
|
+
--surface-elevated: #242424; /* Lighter than base */
|
|
235
|
+
--border: rgba(255, 255, 255, 0.1);
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Dark Mode: Technical Implementation
|
|
240
|
+
|
|
241
|
+
Browser-level settings that most developers miss:
|
|
242
|
+
|
|
243
|
+
```html
|
|
244
|
+
<!-- In <head> β tells browser UI elements to use dark mode -->
|
|
245
|
+
<meta name="color-scheme" content="light dark">
|
|
246
|
+
|
|
247
|
+
<!-- Theme color for browser chrome, PWA, mobile address bar -->
|
|
248
|
+
<meta name="theme-color" content="#0f0f0f" media="(prefers-color-scheme: dark)">
|
|
249
|
+
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
```css
|
|
253
|
+
/* On <html> β fixes scrollbars, form controls, system dialogs */
|
|
254
|
+
:root {
|
|
255
|
+
color-scheme: light;
|
|
256
|
+
}
|
|
257
|
+
[data-theme="dark"] {
|
|
258
|
+
color-scheme: dark;
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Why this matters:**
|
|
263
|
+
- Without `color-scheme: dark`, scrollbars stay light gray on dark backgrounds
|
|
264
|
+
- Form inputs (`<input>`, `<select>`, `<textarea>`) get wrong default colors
|
|
265
|
+
- System dialogs and autofill appear broken
|
|
266
|
+
|
|
267
|
+
**Native `<select>` fix for dark mode (Windows issue):**
|
|
268
|
+
|
|
269
|
+
```css
|
|
270
|
+
[data-theme="dark"] select {
|
|
271
|
+
background-color: var(--surface-2);
|
|
272
|
+
color: var(--text);
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## 6. Naming Tokens
|
|
279
|
+
|
|
280
|
+
**Never name tokens by color. Name by purpose.**
|
|
281
|
+
|
|
282
|
+
### Bad
|
|
283
|
+
|
|
284
|
+
```css
|
|
285
|
+
--blue: #2563eb;
|
|
286
|
+
--light-blue: #eff6ff;
|
|
287
|
+
--dark-blue: #1e40af;
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Good
|
|
291
|
+
|
|
292
|
+
```css
|
|
293
|
+
--primary: #2563eb;
|
|
294
|
+
--primary-tint: #eff6ff;
|
|
295
|
+
--primary-active: #1e40af;
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Minimum Token Set
|
|
299
|
+
|
|
300
|
+
```css
|
|
301
|
+
:root {
|
|
302
|
+
/* Surfaces */
|
|
303
|
+
--bg: #ffffff;
|
|
304
|
+
--surface-1: #ffffff;
|
|
305
|
+
--surface-2: #f7f7f7;
|
|
306
|
+
|
|
307
|
+
/* Text */
|
|
308
|
+
--text: #0b0b0b;
|
|
309
|
+
--text-muted: #5f6368;
|
|
310
|
+
--text-subtle: #7a7f85;
|
|
311
|
+
|
|
312
|
+
/* Borders */
|
|
313
|
+
--border: #e6e6e6;
|
|
314
|
+
--border-strong: #d1d1d1;
|
|
315
|
+
|
|
316
|
+
/* Primary */
|
|
317
|
+
--primary: #2563eb;
|
|
318
|
+
--on-primary: #ffffff;
|
|
319
|
+
--primary-hover: #1d4ed8;
|
|
320
|
+
--primary-active: #1e40af;
|
|
321
|
+
--primary-tint: #eff6ff;
|
|
322
|
+
|
|
323
|
+
/* Semantic */
|
|
324
|
+
--success: #16a34a;
|
|
325
|
+
--warning: #f59e0b;
|
|
326
|
+
--danger: #ef4444;
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Key:** Components should work from tokens, not hardcoded hex values.
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## 7. Building a Palette from Scratch
|
|
335
|
+
|
|
336
|
+
When there's no brand yet:
|
|
337
|
+
|
|
338
|
+
### Step 1: Choose Neutral Character
|
|
339
|
+
|
|
340
|
+
Decide warm or cool. This affects the entire feel.
|
|
341
|
+
|
|
342
|
+
```css
|
|
343
|
+
/* Cool (tech, precision) */
|
|
344
|
+
--neutral-100: #f4f4f5;
|
|
345
|
+
|
|
346
|
+
/* Warm (friendly, premium) */
|
|
347
|
+
--neutral-100: #f5f4f2;
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Step 2: Choose One Primary
|
|
351
|
+
|
|
352
|
+
Requirements:
|
|
353
|
+
- Works on white background
|
|
354
|
+
- Works on dark background
|
|
355
|
+
- Works in buttons, links, badges
|
|
356
|
+
- "Strong" but not fluorescent
|
|
357
|
+
|
|
358
|
+
**Test:** Put your primary in a button, a text link, a badge. All three should feel right.
|
|
359
|
+
|
|
360
|
+
### Step 3: Generate Scale
|
|
361
|
+
|
|
362
|
+
Use OKLCH or curated palette generators:
|
|
363
|
+
- [Tailwind CSS Colors](https://tailwindcss.com/docs/customizing-colors)
|
|
364
|
+
- [Radix Colors](https://www.radix-ui.com/colors)
|
|
365
|
+
- [Open Color](https://yeun.github.io/open-color/)
|
|
366
|
+
|
|
367
|
+
### Step 4: Add Semantics
|
|
368
|
+
|
|
369
|
+
Choose semantic colors that don't clash with primary.
|
|
370
|
+
|
|
371
|
+
| Primary | Avoid for Success |
|
|
372
|
+
|---------|-------------------|
|
|
373
|
+
| Blue | Blue (use green) |
|
|
374
|
+
| Green | Yellow-green (use teal) |
|
|
375
|
+
| Red | Red-orange (use green) |
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## 8. Gradients
|
|
380
|
+
|
|
381
|
+
Gradients are allowed when:
|
|
382
|
+
- They support brand identity
|
|
383
|
+
- They don't break readability
|
|
384
|
+
- They're localized (hero, illustration, small highlight)
|
|
385
|
+
|
|
386
|
+
### Rules
|
|
387
|
+
|
|
388
|
+
1. **Gradient is never the only way to make something visible** β If removing the gradient makes the element invisible, redesign.
|
|
389
|
+
|
|
390
|
+
2. **Subtle > dramatic** β Direction and angle matter more than color variety.
|
|
391
|
+
|
|
392
|
+
3. **Text on gradients** β Ensure contrast works across the entire gradient, not just the start.
|
|
393
|
+
|
|
394
|
+
```css
|
|
395
|
+
/* Acceptable */
|
|
396
|
+
.hero-badge {
|
|
397
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/* Problematic */
|
|
401
|
+
.card {
|
|
402
|
+
background: linear-gradient(90deg,
|
|
403
|
+
#ff6b6b, #feca57, #48dbfb, #ff9ff3);
|
|
404
|
+
}
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## 9. Anti-Patterns
|
|
410
|
+
|
|
411
|
+
Structural problems that reveal unintentional design:
|
|
412
|
+
|
|
413
|
+
### π¨ THE #1 AI SLOP INDICATOR: INDIGO/VIOLET
|
|
414
|
+
|
|
415
|
+
**This deserves its own section because it's THAT important.**
|
|
416
|
+
|
|
417
|
+
Every LLM, every AI code generator, every design tool defaults to indigo/violet (`#6366f1`, `#8b5cf6`, or similar). This has become the universal fingerprint of AI-generated design.
|
|
418
|
+
|
|
419
|
+
**Before using any purple-family color, ask:**
|
|
420
|
+
1. Does the brand explicitly require purple?
|
|
421
|
+
2. Did research references use purple (and why)?
|
|
422
|
+
3. Is there a semantic reason (not just "looks modern")?
|
|
423
|
+
4. Would a senior designer question this choice?
|
|
424
|
+
|
|
425
|
+
**If you can't answer YES to at least one of theseβchoose a different color.**
|
|
426
|
+
|
|
427
|
+
Safe alternatives when you need an accent:
|
|
428
|
+
- Blue (`#2563eb`) β trust, stability, professional
|
|
429
|
+
- Teal (`#0d9488`) β fresh, modern, distinctive
|
|
430
|
+
- Green (`#16a34a`) β growth, success, natural
|
|
431
|
+
- Orange (`#ea580c`) β energy, action, warmth
|
|
432
|
+
- Brand-specific color from research
|
|
433
|
+
|
|
434
|
+
**The rule:** Indigo is BANNED unless explicitly justified by brand requirements.
|
|
435
|
+
|
|
436
|
+
### Other Red Flags
|
|
437
|
+
|
|
438
|
+
- **Multiple competing accents** β One primary. Others should be clearly secondary or semantic
|
|
439
|
+
- **Random hex in components** β Should use tokens
|
|
440
|
+
- **Pure black on white** β Use near-black (#0b0b0b)
|
|
441
|
+
- **Every state is a new color** β Hover/active should be predictable shifts
|
|
442
|
+
- **Dark theme = inverted** β Needs separate neutrals
|
|
443
|
+
|
|
444
|
+
### Quick Test
|
|
445
|
+
|
|
446
|
+
1. Is your primary color indigo/violet? (If yes, justify it or change it)
|
|
447
|
+
2. Can you justify your primary color choice with research?
|
|
448
|
+
3. How many accent colors? (Should be 1-2)
|
|
449
|
+
4. Are all colors from tokens, not random hex?
|
|
450
|
+
|
|
451
|
+
β Full anti-AI-slop guide: [anti-ai-slop.md](anti-ai-slop.md)
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
## 10. Pre-Ship Checklist
|
|
456
|
+
|
|
457
|
+
- [ ] **One primary accent**, not 3 "hero colors"
|
|
458
|
+
- [ ] **Neutrals are 70-90%** of the interface
|
|
459
|
+
- [ ] **Text readable everywhere**, secondary text not pale
|
|
460
|
+
- [ ] **Hover/Active states predictable** and calm
|
|
461
|
+
- [ ] **Tokens named by purpose** (bg, text, border, primary)
|
|
462
|
+
- [ ] **Dark theme is separate**, not inverted
|
|
463
|
+
- [ ] **Semantics don't clash** with primary
|
|
464
|
+
- [ ] **No random hex** in components β all from tokens
|
|
465
|
+
- [ ] **Contrast passes** WCAG AA (4.5:1 body, 3:1 large)
|
|
466
|
+
- [ ] **Gradients are rare** and localized
|
|
467
|
+
- [ ] **`color-scheme`** set on `<html>` for dark mode (fixes scrollbars, inputs)
|
|
468
|
+
- [ ] **`<meta name="theme-color">`** matches page background
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
472
|
+
## Appendix: Complete Token System
|
|
473
|
+
|
|
474
|
+
Reference implementation with all tokens:
|
|
475
|
+
|
|
476
|
+
```css
|
|
477
|
+
:root {
|
|
478
|
+
/* Neutrals (cool variant) */
|
|
479
|
+
--neutral-50: #fafafa;
|
|
480
|
+
--neutral-100: #f5f5f5;
|
|
481
|
+
--neutral-200: #e5e5e5;
|
|
482
|
+
--neutral-300: #d4d4d4;
|
|
483
|
+
--neutral-400: #a3a3a3;
|
|
484
|
+
--neutral-500: #737373;
|
|
485
|
+
--neutral-600: #525252;
|
|
486
|
+
--neutral-700: #404040;
|
|
487
|
+
--neutral-800: #262626;
|
|
488
|
+
--neutral-900: #171717;
|
|
489
|
+
--neutral-950: #0a0a0a;
|
|
490
|
+
|
|
491
|
+
/* Surfaces */
|
|
492
|
+
--bg: var(--neutral-50);
|
|
493
|
+
--surface-1: #ffffff;
|
|
494
|
+
--surface-2: var(--neutral-100);
|
|
495
|
+
--surface-3: var(--neutral-200);
|
|
496
|
+
|
|
497
|
+
/* Text */
|
|
498
|
+
--text: var(--neutral-900);
|
|
499
|
+
--text-muted: var(--neutral-600);
|
|
500
|
+
--text-subtle: var(--neutral-500);
|
|
501
|
+
--text-disabled: var(--neutral-400);
|
|
502
|
+
|
|
503
|
+
/* Borders */
|
|
504
|
+
--border: var(--neutral-200);
|
|
505
|
+
--border-strong: var(--neutral-300);
|
|
506
|
+
|
|
507
|
+
/* Primary (blue) */
|
|
508
|
+
--primary-50: #eff6ff;
|
|
509
|
+
--primary-100: #dbeafe;
|
|
510
|
+
--primary-200: #bfdbfe;
|
|
511
|
+
--primary-500: #3b82f6;
|
|
512
|
+
--primary-600: #2563eb;
|
|
513
|
+
--primary-700: #1d4ed8;
|
|
514
|
+
--primary-800: #1e40af;
|
|
515
|
+
--primary-900: #1e3a8a;
|
|
516
|
+
|
|
517
|
+
--primary: var(--primary-600);
|
|
518
|
+
--primary-hover: var(--primary-700);
|
|
519
|
+
--primary-active: var(--primary-800);
|
|
520
|
+
--primary-tint: var(--primary-50);
|
|
521
|
+
--on-primary: #ffffff;
|
|
522
|
+
|
|
523
|
+
/* Semantic */
|
|
524
|
+
--success: #16a34a;
|
|
525
|
+
--success-bg: #f0fdf4;
|
|
526
|
+
--warning: #f59e0b;
|
|
527
|
+
--warning-bg: #fffbeb;
|
|
528
|
+
--danger: #ef4444;
|
|
529
|
+
--danger-bg: #fef2f2;
|
|
530
|
+
--info: #0ea5e9;
|
|
531
|
+
--info-bg: #f0f9ff;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/* Dark theme */
|
|
535
|
+
[data-theme="dark"] {
|
|
536
|
+
--bg: #0f0f0f;
|
|
537
|
+
--surface-1: #171717;
|
|
538
|
+
--surface-2: #1f1f1f;
|
|
539
|
+
--surface-3: #262626;
|
|
540
|
+
|
|
541
|
+
--text: #f5f5f5;
|
|
542
|
+
--text-muted: #a3a3a3;
|
|
543
|
+
--text-subtle: #737373;
|
|
544
|
+
|
|
545
|
+
--border: rgba(255, 255, 255, 0.1);
|
|
546
|
+
--border-strong: rgba(255, 255, 255, 0.15);
|
|
547
|
+
|
|
548
|
+
--primary: #60a5fa;
|
|
549
|
+
--primary-hover: #3b82f6;
|
|
550
|
+
--primary-active: #2563eb;
|
|
551
|
+
--primary-tint: rgba(59, 130, 246, 0.15);
|
|
552
|
+
--on-primary: #0f0f0f;
|
|
553
|
+
|
|
554
|
+
--success-bg: rgba(22, 163, 74, 0.15);
|
|
555
|
+
--warning-bg: rgba(245, 158, 11, 0.15);
|
|
556
|
+
--danger-bg: rgba(239, 68, 68, 0.15);
|
|
557
|
+
--info-bg: rgba(14, 165, 233, 0.15);
|
|
558
|
+
}
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
*Color is restraint. Neutrals are 90% of the work. One accent, used purposefully, beats five competing for attention.*
|