@booklib/core 2.0.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.
- package/.cursor/rules/booklib-standards.mdc +40 -0
- package/.gemini/context.md +372 -0
- package/AGENTS.md +166 -0
- package/CHANGELOG.md +226 -0
- package/CLAUDE.md +81 -0
- package/CODE_OF_CONDUCT.md +31 -0
- package/CONTRIBUTING.md +304 -0
- package/LICENSE +21 -0
- package/PLAN.md +28 -0
- package/README.ja.md +198 -0
- package/README.ko.md +198 -0
- package/README.md +503 -0
- package/README.pt-BR.md +198 -0
- package/README.uk.md +241 -0
- package/README.zh-CN.md +198 -0
- package/SECURITY.md +9 -0
- package/agents/architecture-reviewer.md +136 -0
- package/agents/booklib-reviewer.md +90 -0
- package/agents/data-reviewer.md +107 -0
- package/agents/jvm-reviewer.md +146 -0
- package/agents/python-reviewer.md +128 -0
- package/agents/rust-reviewer.md +115 -0
- package/agents/ts-reviewer.md +110 -0
- package/agents/ui-reviewer.md +117 -0
- package/assets/logo.svg +36 -0
- package/bin/booklib-mcp.js +304 -0
- package/bin/booklib.js +1705 -0
- package/bin/skills.cjs +1292 -0
- package/booklib-router.mdc +36 -0
- package/booklib.config.json +19 -0
- package/commands/animation-at-work.md +10 -0
- package/commands/clean-code-reviewer.md +10 -0
- package/commands/data-intensive-patterns.md +10 -0
- package/commands/data-pipelines.md +10 -0
- package/commands/design-patterns.md +10 -0
- package/commands/domain-driven-design.md +10 -0
- package/commands/effective-java.md +10 -0
- package/commands/effective-kotlin.md +10 -0
- package/commands/effective-python.md +10 -0
- package/commands/effective-typescript.md +10 -0
- package/commands/kotlin-in-action.md +10 -0
- package/commands/lean-startup.md +10 -0
- package/commands/microservices-patterns.md +10 -0
- package/commands/programming-with-rust.md +10 -0
- package/commands/refactoring-ui.md +10 -0
- package/commands/rust-in-action.md +10 -0
- package/commands/skill-router.md +10 -0
- package/commands/spring-boot-in-action.md +10 -0
- package/commands/storytelling-with-data.md +10 -0
- package/commands/system-design-interview.md +10 -0
- package/commands/using-asyncio-python.md +10 -0
- package/commands/web-scraping-python.md +10 -0
- package/community/registry.json +1616 -0
- package/hooks/hooks.json +23 -0
- package/hooks/posttooluse-capture.mjs +67 -0
- package/hooks/suggest.js +153 -0
- package/lib/agent-behaviors.js +40 -0
- package/lib/agent-detector.js +96 -0
- package/lib/config-loader.js +39 -0
- package/lib/conflict-resolver.js +148 -0
- package/lib/context-builder.js +574 -0
- package/lib/discovery-engine.js +298 -0
- package/lib/doctor/hook-installer.js +83 -0
- package/lib/doctor/usage-tracker.js +87 -0
- package/lib/engine/ai-features.js +253 -0
- package/lib/engine/auditor.js +103 -0
- package/lib/engine/bm25-index.js +178 -0
- package/lib/engine/capture.js +120 -0
- package/lib/engine/corrections.js +198 -0
- package/lib/engine/doctor.js +195 -0
- package/lib/engine/graph-injector.js +137 -0
- package/lib/engine/graph.js +161 -0
- package/lib/engine/handoff.js +405 -0
- package/lib/engine/indexer.js +242 -0
- package/lib/engine/parser.js +53 -0
- package/lib/engine/query-expander.js +42 -0
- package/lib/engine/reranker.js +40 -0
- package/lib/engine/rrf.js +59 -0
- package/lib/engine/scanner.js +151 -0
- package/lib/engine/searcher.js +139 -0
- package/lib/engine/session-coordinator.js +306 -0
- package/lib/engine/session-manager.js +429 -0
- package/lib/engine/synthesizer.js +70 -0
- package/lib/installer.js +70 -0
- package/lib/instinct-block.js +33 -0
- package/lib/mcp-config-writer.js +88 -0
- package/lib/paths.js +57 -0
- package/lib/profiles/design.md +19 -0
- package/lib/profiles/general.md +16 -0
- package/lib/profiles/research-analysis.md +22 -0
- package/lib/profiles/software-development.md +23 -0
- package/lib/profiles/writing-content.md +19 -0
- package/lib/project-initializer.js +916 -0
- package/lib/registry/skills.js +102 -0
- package/lib/registry-searcher.js +99 -0
- package/lib/rules/rules-manager.js +169 -0
- package/lib/skill-fetcher.js +333 -0
- package/lib/well-known-builder.js +70 -0
- package/lib/wizard/index.js +404 -0
- package/lib/wizard/integration-detector.js +41 -0
- package/lib/wizard/project-detector.js +100 -0
- package/lib/wizard/prompt.js +156 -0
- package/lib/wizard/registry-embeddings.js +107 -0
- package/lib/wizard/skill-recommender.js +69 -0
- package/llms-full.txt +254 -0
- package/llms.txt +70 -0
- package/package.json +45 -0
- package/research-reports/2026-04-01-current-architecture.md +160 -0
- package/research-reports/IDEAS.md +93 -0
- package/rules/common/clean-code.md +42 -0
- package/rules/java/effective-java.md +42 -0
- package/rules/kotlin/effective-kotlin.md +37 -0
- package/rules/python/effective-python.md +38 -0
- package/rules/rust/rust.md +37 -0
- package/rules/typescript/effective-typescript.md +42 -0
- package/scripts/gen-llms-full.mjs +36 -0
- package/scripts/gen-og.mjs +142 -0
- package/scripts/validate-frontmatter.js +25 -0
- package/skills/animation-at-work/SKILL.md +270 -0
- package/skills/animation-at-work/assets/example_asset.txt +1 -0
- package/skills/animation-at-work/evals/evals.json +44 -0
- package/skills/animation-at-work/evals/results.json +13 -0
- package/skills/animation-at-work/examples/after.md +64 -0
- package/skills/animation-at-work/examples/before.md +35 -0
- package/skills/animation-at-work/references/api_reference.md +369 -0
- package/skills/animation-at-work/references/review-checklist.md +79 -0
- package/skills/animation-at-work/scripts/audit_animations.py +295 -0
- package/skills/animation-at-work/scripts/example.py +1 -0
- package/skills/clean-code-reviewer/SKILL.md +444 -0
- package/skills/clean-code-reviewer/audit.json +35 -0
- package/skills/clean-code-reviewer/evals/evals.json +185 -0
- package/skills/clean-code-reviewer/evals/results.json +13 -0
- package/skills/clean-code-reviewer/examples/after.md +48 -0
- package/skills/clean-code-reviewer/examples/before.md +33 -0
- package/skills/clean-code-reviewer/references/api_reference.md +158 -0
- package/skills/clean-code-reviewer/references/practices-catalog.md +282 -0
- package/skills/clean-code-reviewer/references/review-checklist.md +254 -0
- package/skills/clean-code-reviewer/scripts/pre-review.py +206 -0
- package/skills/data-intensive-patterns/SKILL.md +267 -0
- package/skills/data-intensive-patterns/assets/example_asset.txt +1 -0
- package/skills/data-intensive-patterns/evals/evals.json +54 -0
- package/skills/data-intensive-patterns/evals/results.json +13 -0
- package/skills/data-intensive-patterns/examples/after.md +61 -0
- package/skills/data-intensive-patterns/examples/before.md +38 -0
- package/skills/data-intensive-patterns/references/api_reference.md +34 -0
- package/skills/data-intensive-patterns/references/patterns-catalog.md +551 -0
- package/skills/data-intensive-patterns/references/review-checklist.md +193 -0
- package/skills/data-intensive-patterns/scripts/adr.py +213 -0
- package/skills/data-intensive-patterns/scripts/example.py +1 -0
- package/skills/data-pipelines/SKILL.md +259 -0
- package/skills/data-pipelines/assets/example_asset.txt +1 -0
- package/skills/data-pipelines/evals/evals.json +45 -0
- package/skills/data-pipelines/evals/results.json +13 -0
- package/skills/data-pipelines/examples/after.md +97 -0
- package/skills/data-pipelines/examples/before.md +37 -0
- package/skills/data-pipelines/references/api_reference.md +301 -0
- package/skills/data-pipelines/references/review-checklist.md +181 -0
- package/skills/data-pipelines/scripts/example.py +1 -0
- package/skills/data-pipelines/scripts/new_pipeline.py +444 -0
- package/skills/design-patterns/SKILL.md +271 -0
- package/skills/design-patterns/assets/example_asset.txt +1 -0
- package/skills/design-patterns/evals/evals.json +46 -0
- package/skills/design-patterns/evals/results.json +13 -0
- package/skills/design-patterns/examples/after.md +52 -0
- package/skills/design-patterns/examples/before.md +29 -0
- package/skills/design-patterns/references/api_reference.md +1 -0
- package/skills/design-patterns/references/patterns-catalog.md +726 -0
- package/skills/design-patterns/references/review-checklist.md +173 -0
- package/skills/design-patterns/scripts/example.py +1 -0
- package/skills/design-patterns/scripts/scaffold.py +807 -0
- package/skills/domain-driven-design/SKILL.md +142 -0
- package/skills/domain-driven-design/assets/example_asset.txt +1 -0
- package/skills/domain-driven-design/evals/evals.json +48 -0
- package/skills/domain-driven-design/evals/results.json +13 -0
- package/skills/domain-driven-design/examples/after.md +80 -0
- package/skills/domain-driven-design/examples/before.md +43 -0
- package/skills/domain-driven-design/references/api_reference.md +1 -0
- package/skills/domain-driven-design/references/patterns-catalog.md +545 -0
- package/skills/domain-driven-design/references/review-checklist.md +158 -0
- package/skills/domain-driven-design/scripts/example.py +1 -0
- package/skills/domain-driven-design/scripts/scaffold.py +421 -0
- package/skills/effective-java/SKILL.md +227 -0
- package/skills/effective-java/assets/example_asset.txt +1 -0
- package/skills/effective-java/evals/evals.json +46 -0
- package/skills/effective-java/evals/results.json +13 -0
- package/skills/effective-java/examples/after.md +83 -0
- package/skills/effective-java/examples/before.md +37 -0
- package/skills/effective-java/references/api_reference.md +1 -0
- package/skills/effective-java/references/items-catalog.md +955 -0
- package/skills/effective-java/references/review-checklist.md +216 -0
- package/skills/effective-java/scripts/checkstyle_setup.py +211 -0
- package/skills/effective-java/scripts/example.py +1 -0
- package/skills/effective-kotlin/SKILL.md +271 -0
- package/skills/effective-kotlin/assets/example_asset.txt +1 -0
- package/skills/effective-kotlin/audit.json +29 -0
- package/skills/effective-kotlin/evals/evals.json +45 -0
- package/skills/effective-kotlin/evals/results.json +13 -0
- package/skills/effective-kotlin/examples/after.md +36 -0
- package/skills/effective-kotlin/examples/before.md +38 -0
- package/skills/effective-kotlin/references/api_reference.md +1 -0
- package/skills/effective-kotlin/references/practices-catalog.md +1228 -0
- package/skills/effective-kotlin/references/review-checklist.md +126 -0
- package/skills/effective-kotlin/scripts/example.py +1 -0
- package/skills/effective-python/SKILL.md +441 -0
- package/skills/effective-python/evals/evals.json +44 -0
- package/skills/effective-python/evals/results.json +13 -0
- package/skills/effective-python/examples/after.md +56 -0
- package/skills/effective-python/examples/before.md +40 -0
- package/skills/effective-python/ref-01-pythonic-thinking.md +202 -0
- package/skills/effective-python/ref-02-lists-and-dicts.md +146 -0
- package/skills/effective-python/ref-03-functions.md +186 -0
- package/skills/effective-python/ref-04-comprehensions-generators.md +211 -0
- package/skills/effective-python/ref-05-classes-interfaces.md +188 -0
- package/skills/effective-python/ref-06-metaclasses-attributes.md +209 -0
- package/skills/effective-python/ref-07-concurrency.md +213 -0
- package/skills/effective-python/ref-08-robustness-performance.md +248 -0
- package/skills/effective-python/ref-09-testing-debugging.md +253 -0
- package/skills/effective-python/ref-10-collaboration.md +175 -0
- package/skills/effective-python/references/api_reference.md +218 -0
- package/skills/effective-python/references/practices-catalog.md +483 -0
- package/skills/effective-python/references/review-checklist.md +190 -0
- package/skills/effective-python/scripts/lint.py +173 -0
- package/skills/effective-typescript/SKILL.md +262 -0
- package/skills/effective-typescript/audit.json +29 -0
- package/skills/effective-typescript/evals/evals.json +37 -0
- package/skills/effective-typescript/evals/results.json +13 -0
- package/skills/effective-typescript/examples/after.md +70 -0
- package/skills/effective-typescript/examples/before.md +47 -0
- package/skills/effective-typescript/references/api_reference.md +118 -0
- package/skills/effective-typescript/references/practices-catalog.md +371 -0
- package/skills/effective-typescript/scripts/review.py +169 -0
- package/skills/kotlin-in-action/SKILL.md +261 -0
- package/skills/kotlin-in-action/assets/example_asset.txt +1 -0
- package/skills/kotlin-in-action/evals/evals.json +43 -0
- package/skills/kotlin-in-action/evals/results.json +13 -0
- package/skills/kotlin-in-action/examples/after.md +53 -0
- package/skills/kotlin-in-action/examples/before.md +39 -0
- package/skills/kotlin-in-action/references/api_reference.md +1 -0
- package/skills/kotlin-in-action/references/practices-catalog.md +436 -0
- package/skills/kotlin-in-action/references/review-checklist.md +204 -0
- package/skills/kotlin-in-action/scripts/example.py +1 -0
- package/skills/kotlin-in-action/scripts/setup_detekt.py +224 -0
- package/skills/lean-startup/SKILL.md +160 -0
- package/skills/lean-startup/assets/example_asset.txt +1 -0
- package/skills/lean-startup/evals/evals.json +43 -0
- package/skills/lean-startup/evals/results.json +13 -0
- package/skills/lean-startup/examples/after.md +80 -0
- package/skills/lean-startup/examples/before.md +34 -0
- package/skills/lean-startup/references/api_reference.md +319 -0
- package/skills/lean-startup/references/review-checklist.md +137 -0
- package/skills/lean-startup/scripts/example.py +1 -0
- package/skills/lean-startup/scripts/new_experiment.py +286 -0
- package/skills/microservices-patterns/SKILL.md +384 -0
- package/skills/microservices-patterns/evals/evals.json +45 -0
- package/skills/microservices-patterns/evals/results.json +13 -0
- package/skills/microservices-patterns/examples/after.md +69 -0
- package/skills/microservices-patterns/examples/before.md +40 -0
- package/skills/microservices-patterns/references/patterns-catalog.md +391 -0
- package/skills/microservices-patterns/references/review-checklist.md +169 -0
- package/skills/microservices-patterns/scripts/new_service.py +583 -0
- package/skills/programming-with-rust/SKILL.md +209 -0
- package/skills/programming-with-rust/evals/evals.json +37 -0
- package/skills/programming-with-rust/evals/results.json +13 -0
- package/skills/programming-with-rust/examples/after.md +107 -0
- package/skills/programming-with-rust/examples/before.md +59 -0
- package/skills/programming-with-rust/references/api_reference.md +152 -0
- package/skills/programming-with-rust/references/practices-catalog.md +335 -0
- package/skills/programming-with-rust/scripts/review.py +142 -0
- package/skills/refactoring-ui/SKILL.md +362 -0
- package/skills/refactoring-ui/assets/example_asset.txt +1 -0
- package/skills/refactoring-ui/evals/evals.json +45 -0
- package/skills/refactoring-ui/evals/results.json +13 -0
- package/skills/refactoring-ui/examples/after.md +85 -0
- package/skills/refactoring-ui/examples/before.md +58 -0
- package/skills/refactoring-ui/references/api_reference.md +355 -0
- package/skills/refactoring-ui/references/review-checklist.md +114 -0
- package/skills/refactoring-ui/scripts/audit_css.py +250 -0
- package/skills/refactoring-ui/scripts/example.py +1 -0
- package/skills/rust-in-action/SKILL.md +350 -0
- package/skills/rust-in-action/evals/evals.json +38 -0
- package/skills/rust-in-action/evals/results.json +13 -0
- package/skills/rust-in-action/examples/after.md +156 -0
- package/skills/rust-in-action/examples/before.md +56 -0
- package/skills/rust-in-action/references/practices-catalog.md +346 -0
- package/skills/rust-in-action/scripts/review.py +147 -0
- package/skills/skill-router/SKILL.md +186 -0
- package/skills/skill-router/evals/evals.json +38 -0
- package/skills/skill-router/evals/results.json +13 -0
- package/skills/skill-router/examples/after.md +63 -0
- package/skills/skill-router/examples/before.md +39 -0
- package/skills/skill-router/references/api_reference.md +24 -0
- package/skills/skill-router/references/routing-heuristics.md +89 -0
- package/skills/skill-router/references/skill-catalog.md +174 -0
- package/skills/skill-router/scripts/route.py +266 -0
- package/skills/spring-boot-in-action/SKILL.md +340 -0
- package/skills/spring-boot-in-action/evals/evals.json +39 -0
- package/skills/spring-boot-in-action/evals/results.json +13 -0
- package/skills/spring-boot-in-action/examples/after.md +185 -0
- package/skills/spring-boot-in-action/examples/before.md +84 -0
- package/skills/spring-boot-in-action/references/practices-catalog.md +403 -0
- package/skills/spring-boot-in-action/scripts/review.py +184 -0
- package/skills/storytelling-with-data/SKILL.md +241 -0
- package/skills/storytelling-with-data/assets/example_asset.txt +1 -0
- package/skills/storytelling-with-data/evals/evals.json +47 -0
- package/skills/storytelling-with-data/evals/results.json +13 -0
- package/skills/storytelling-with-data/examples/after.md +50 -0
- package/skills/storytelling-with-data/examples/before.md +33 -0
- package/skills/storytelling-with-data/references/api_reference.md +379 -0
- package/skills/storytelling-with-data/references/review-checklist.md +111 -0
- package/skills/storytelling-with-data/scripts/chart_review.py +301 -0
- package/skills/storytelling-with-data/scripts/example.py +1 -0
- package/skills/system-design-interview/SKILL.md +233 -0
- package/skills/system-design-interview/assets/example_asset.txt +1 -0
- package/skills/system-design-interview/evals/evals.json +46 -0
- package/skills/system-design-interview/evals/results.json +13 -0
- package/skills/system-design-interview/examples/after.md +94 -0
- package/skills/system-design-interview/examples/before.md +27 -0
- package/skills/system-design-interview/references/api_reference.md +582 -0
- package/skills/system-design-interview/references/review-checklist.md +201 -0
- package/skills/system-design-interview/scripts/example.py +1 -0
- package/skills/system-design-interview/scripts/new_design.py +421 -0
- package/skills/using-asyncio-python/SKILL.md +290 -0
- package/skills/using-asyncio-python/assets/example_asset.txt +1 -0
- package/skills/using-asyncio-python/evals/evals.json +43 -0
- package/skills/using-asyncio-python/evals/results.json +13 -0
- package/skills/using-asyncio-python/examples/after.md +68 -0
- package/skills/using-asyncio-python/examples/before.md +39 -0
- package/skills/using-asyncio-python/references/api_reference.md +267 -0
- package/skills/using-asyncio-python/references/review-checklist.md +149 -0
- package/skills/using-asyncio-python/scripts/check_blocking.py +270 -0
- package/skills/using-asyncio-python/scripts/example.py +1 -0
- package/skills/web-scraping-python/SKILL.md +280 -0
- package/skills/web-scraping-python/assets/example_asset.txt +1 -0
- package/skills/web-scraping-python/evals/evals.json +46 -0
- package/skills/web-scraping-python/evals/results.json +13 -0
- package/skills/web-scraping-python/examples/after.md +109 -0
- package/skills/web-scraping-python/examples/before.md +40 -0
- package/skills/web-scraping-python/references/api_reference.md +393 -0
- package/skills/web-scraping-python/references/review-checklist.md +163 -0
- package/skills/web-scraping-python/scripts/example.py +1 -0
- package/skills/web-scraping-python/scripts/new_scraper.py +231 -0
- package/skills/writing-plans/audit.json +34 -0
- package/tests/agent-detector.test.js +83 -0
- package/tests/corrections.test.js +245 -0
- package/tests/doctor/hook-installer.test.js +72 -0
- package/tests/doctor/usage-tracker.test.js +140 -0
- package/tests/engine/benchmark-eval.test.js +31 -0
- package/tests/engine/bm25-index.test.js +85 -0
- package/tests/engine/capture-command.test.js +35 -0
- package/tests/engine/capture.test.js +17 -0
- package/tests/engine/graph-augmented-search.test.js +107 -0
- package/tests/engine/graph-injector.test.js +44 -0
- package/tests/engine/graph.test.js +216 -0
- package/tests/engine/hybrid-searcher.test.js +74 -0
- package/tests/engine/indexer-bm25.test.js +37 -0
- package/tests/engine/mcp-tools.test.js +73 -0
- package/tests/engine/project-initializer-mcp.test.js +99 -0
- package/tests/engine/query-expander.test.js +36 -0
- package/tests/engine/reranker.test.js +51 -0
- package/tests/engine/rrf.test.js +49 -0
- package/tests/engine/srag-prefix.test.js +47 -0
- package/tests/instinct-block.test.js +23 -0
- package/tests/mcp-config-writer.test.js +60 -0
- package/tests/project-initializer-new-agents.test.js +48 -0
- package/tests/rules/rules-manager.test.js +230 -0
- package/tests/well-known-builder.test.js +40 -0
- package/tests/wizard/integration-detector.test.js +31 -0
- package/tests/wizard/project-detector.test.js +51 -0
- package/tests/wizard/prompt-session.test.js +61 -0
- package/tests/wizard/prompt.test.js +16 -0
- package/tests/wizard/registry-embeddings.test.js +35 -0
- package/tests/wizard/skill-recommender.test.js +34 -0
- package/tests/wizard/slot-count.test.js +25 -0
- package/vercel.json +21 -0
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
# Refactoring UI — Design Tokens & Systems Reference
|
|
2
|
+
|
|
3
|
+
Complete catalog of design systems, scales, and token values from all 9 chapters.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Ch 1: Starting from Scratch
|
|
8
|
+
|
|
9
|
+
### Design Process
|
|
10
|
+
- Start with a feature, not a layout — don't begin with shell (navbar, sidebar, footer)
|
|
11
|
+
- Work low-fidelity first: grayscale, no shadows, system fonts, constrained sizes
|
|
12
|
+
- Design in cycles: design a simple version → build it → iterate on the real thing
|
|
13
|
+
- Hold the detail — don't waste time on perfect icons or color when the layout isn't right
|
|
14
|
+
- Don't over-design: only design the next thing you're going to build
|
|
15
|
+
|
|
16
|
+
### Choosing a Personality
|
|
17
|
+
Personality should be decided before picking any specific design values:
|
|
18
|
+
|
|
19
|
+
| Attribute | Elegant/Formal | Neutral/Safe | Playful/Fun |
|
|
20
|
+
|-----------|---------------|-------------|-------------|
|
|
21
|
+
| **Font** | Serif, thin sans-serif | System fonts, clean sans | Rounded sans, display fonts |
|
|
22
|
+
| **Color** | Muted, few hues, gold/navy | Blue, grey, safe palette | Bright, saturated, many hues |
|
|
23
|
+
| **Border-radius** | None or minimal (0–2px) | Small (4px) | Large (8px–full) |
|
|
24
|
+
| **Language** | Formal, professional | Neutral, clear | Casual, friendly, fun |
|
|
25
|
+
|
|
26
|
+
### Limiting Your Choices
|
|
27
|
+
- **Define systems in advance**: type scale, spacing scale, color palette, shadow scale, font weights, border-radius, width, opacity
|
|
28
|
+
- **Design by choosing from constrained options**, not by picking arbitrary values
|
|
29
|
+
- Systems provide speed (fewer decisions) and consistency (same values everywhere)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Ch 2: Hierarchy is Everything
|
|
34
|
+
|
|
35
|
+
### The Three Levers of Hierarchy
|
|
36
|
+
1. **Size** — Larger = more important
|
|
37
|
+
2. **Weight** — Bolder = more important (use 600–700 for emphasis, 400–500 for normal; never go below 400 for UI text)
|
|
38
|
+
3. **Color** — Darker = more important
|
|
39
|
+
|
|
40
|
+
### Text Color System (Light Background)
|
|
41
|
+
| Role | Description | Example Value |
|
|
42
|
+
|------|-------------|---------------|
|
|
43
|
+
| **Primary** | Main content, headings, important text | `hsl(0, 0%, 10%)` — near-black |
|
|
44
|
+
| **Secondary** | Supporting text, descriptions, meta | `hsl(0, 0%, 45%)` — medium grey |
|
|
45
|
+
| **Tertiary** | Placeholders, disabled, timestamps | `hsl(0, 0%, 65%)` — light grey |
|
|
46
|
+
|
|
47
|
+
### Emphasis Techniques
|
|
48
|
+
- **Don't just make things bigger** — Try weight and color changes first
|
|
49
|
+
- **Emphasize by de-emphasizing surroundings** — Make competing elements less prominent
|
|
50
|
+
- **Labels as supporting cast** — Labels describe data; the data itself should be emphasized
|
|
51
|
+
- **Visual hierarchy ≠ document hierarchy** — An `<h1>` can be small if it's not the focal point
|
|
52
|
+
- **Bold icons need softer color** — Heavy visual weight + high contrast = too loud
|
|
53
|
+
|
|
54
|
+
### Icon Sizing in Context
|
|
55
|
+
- Icons next to text: match the font size or slightly smaller
|
|
56
|
+
- Icons as primary elements: can be larger, but tone down color/weight to balance
|
|
57
|
+
- Avoid scaling icons beyond their designed size — use different icon sets for different sizes
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Ch 3: Layout and Spacing
|
|
62
|
+
|
|
63
|
+
### Spacing Scale
|
|
64
|
+
A limited set of spacing values to use everywhere:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
4px — Tight: icon-to-label gap, inline element spacing
|
|
68
|
+
8px — Compact: tight form fields, dense lists
|
|
69
|
+
12px — Default small: label-to-input, list item padding
|
|
70
|
+
16px — Default: standard padding, gaps between small elements
|
|
71
|
+
24px — Comfortable: card padding, section gaps within a component
|
|
72
|
+
32px — Roomy: between components in a group
|
|
73
|
+
48px — Spacious: between distinct sections
|
|
74
|
+
64px — Section: major section separators
|
|
75
|
+
96px — Large: between page sections
|
|
76
|
+
128px — Extra large: hero/header padding
|
|
77
|
+
192px — Maximum padding for very large screens
|
|
78
|
+
256px — Full-width section padding on desktops
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Layout Principles
|
|
82
|
+
- **Start with too much white space, then remove** — Easier to tighten than to create breathing room
|
|
83
|
+
- **Don't fill the screen** — Use max-width (e.g., 600–800px for content, 1200px for full layouts)
|
|
84
|
+
- **Grids are a tool, not a rule** — Use them when you need proportional columns; many layouts don't need a grid
|
|
85
|
+
- **Relative sizing doesn't scale** — A 250px sidebar is fine at all widths; don't make it 20% of viewport
|
|
86
|
+
- **Dense UIs need smaller spacing** — Dashboards and data-heavy UIs can use tighter spacing from the scale
|
|
87
|
+
- **Generous UIs need larger spacing** — Marketing pages and hero sections use wider spacing
|
|
88
|
+
|
|
89
|
+
### Grouping with Spacing
|
|
90
|
+
- **Close = related** — Elements that belong together should have less space between them
|
|
91
|
+
- **Far = unrelated** — Use larger spacing to separate distinct groups
|
|
92
|
+
- **Ambiguous spacing is the enemy** — If spacing between items is uniform, the grouping is unclear
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Ch 4: Designing Text
|
|
97
|
+
|
|
98
|
+
### Type Scale
|
|
99
|
+
A limited set of font sizes to use everywhere:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
12px — Fine print, captions, badges
|
|
103
|
+
14px — Secondary text, meta information, labels
|
|
104
|
+
16px — Body text (base size for most interfaces)
|
|
105
|
+
18px — Slightly emphasized body, lead paragraphs
|
|
106
|
+
20px — Large body, small headings, subheadings
|
|
107
|
+
24px — Section headings (h3 equivalent)
|
|
108
|
+
30px — Page section headings (h2 equivalent)
|
|
109
|
+
36px — Page titles, hero subheadings
|
|
110
|
+
48px — Display headings, hero titles
|
|
111
|
+
60px — Large display, landing page headlines
|
|
112
|
+
72px — Extra-large display, maximum emphasis
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Font Weight Scale
|
|
116
|
+
| Weight | Use |
|
|
117
|
+
|--------|-----|
|
|
118
|
+
| 400 (Regular) | Body text, descriptions, de-emphasized content |
|
|
119
|
+
| 500 (Medium) | Slightly emphasized body, labels, navigation |
|
|
120
|
+
| 600 (Semi-bold) | Headings, buttons, emphasized text |
|
|
121
|
+
| 700 (Bold) | Strong emphasis, primary headings |
|
|
122
|
+
|
|
123
|
+
**Never use weights below 400** for UI text — they're too hard to read.
|
|
124
|
+
|
|
125
|
+
### Line-Height Guidelines
|
|
126
|
+
| Font Size | Recommended Line-Height |
|
|
127
|
+
|-----------|------------------------|
|
|
128
|
+
| 12–14px | 1.5–1.75 (more leading for small text) |
|
|
129
|
+
| 16–18px | 1.5 (standard reading comfort) |
|
|
130
|
+
| 20–24px | 1.25–1.4 (can tighten slightly) |
|
|
131
|
+
| 30–48px | 1.1–1.25 (headings need less) |
|
|
132
|
+
| 48px+ | 1–1.1 (display text: nearly solid) |
|
|
133
|
+
|
|
134
|
+
### Line Length
|
|
135
|
+
- **Optimal**: 45–75 characters per line
|
|
136
|
+
- **Implementation**: `max-width: 20em` to `35em` on text containers
|
|
137
|
+
- **Centered text**: Only for 1–2 lines maximum; left-align everything else
|
|
138
|
+
|
|
139
|
+
### Letter-Spacing
|
|
140
|
+
| Context | Letter-Spacing |
|
|
141
|
+
|---------|---------------|
|
|
142
|
+
| Large headings (36px+) | -0.02em to -0.05em (tighten) |
|
|
143
|
+
| Normal body text | 0 (default) |
|
|
144
|
+
| Small uppercase labels | +0.05em to +0.1em (widen) |
|
|
145
|
+
| All-caps text | +0.05em (widen for readability) |
|
|
146
|
+
|
|
147
|
+
### Link Styling
|
|
148
|
+
- **In body text**: Colored + underlined (or underlined on hover)
|
|
149
|
+
- **In navigation**: No special color; use weight, underline-on-hover, or active indicator
|
|
150
|
+
- **In cards**: The whole card can be clickable; no link styling needed
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Ch 5: Working with Color
|
|
155
|
+
|
|
156
|
+
### HSL Color Model
|
|
157
|
+
```
|
|
158
|
+
hsl(hue, saturation%, lightness%)
|
|
159
|
+
```
|
|
160
|
+
- **Hue**: 0–360 (color wheel: 0=red, 120=green, 240=blue)
|
|
161
|
+
- **Saturation**: 0%=grey, 100%=vivid
|
|
162
|
+
- **Lightness**: 0%=black, 50%=pure color, 100%=white
|
|
163
|
+
|
|
164
|
+
### Building a Complete Palette
|
|
165
|
+
|
|
166
|
+
**Greys (8–9 shades)**:
|
|
167
|
+
| Shade | Lightness Range | Use |
|
|
168
|
+
|-------|----------------|-----|
|
|
169
|
+
| 50 | 97–98% | Page backgrounds, subtle tints |
|
|
170
|
+
| 100 | 93–95% | Card backgrounds, alternate rows |
|
|
171
|
+
| 200 | 85–90% | Borders, dividers |
|
|
172
|
+
| 300 | 75–80% | Disabled text, placeholder icons |
|
|
173
|
+
| 400 | 60–65% | Placeholder text |
|
|
174
|
+
| 500 | 45–50% | Secondary text |
|
|
175
|
+
| 600 | 35–40% | Icons, labels |
|
|
176
|
+
| 700 | 25–30% | Secondary headings |
|
|
177
|
+
| 800 | 15–20% | Primary text, headings |
|
|
178
|
+
| 900 | 5–10% | Maximum emphasis text |
|
|
179
|
+
|
|
180
|
+
**Primary/Accent colors (5–10 shades each)**:
|
|
181
|
+
Follow same pattern: pick middle (button bg), darkest (text), lightest (tinted bg), fill in between.
|
|
182
|
+
|
|
183
|
+
### Color Accessibility
|
|
184
|
+
| Standard | Ratio | When |
|
|
185
|
+
|----------|-------|------|
|
|
186
|
+
| WCAG AA (normal text) | 4.5:1 | Body text, labels, inputs |
|
|
187
|
+
| WCAG AA (large text) | 3:1 | Headings 18px+ bold, or 24px+ |
|
|
188
|
+
| WCAG AAA (normal) | 7:1 | Enhanced accessibility |
|
|
189
|
+
|
|
190
|
+
### Grey on Colored Backgrounds
|
|
191
|
+
**Problem**: Pure grey (`hsl(0, 0%, X%)`) looks washed out on colored backgrounds.
|
|
192
|
+
|
|
193
|
+
**Solutions**:
|
|
194
|
+
1. **Reduce opacity**: `rgba(255,255,255,0.8)` on dark bg; `rgba(0,0,0,0.5)` on light bg
|
|
195
|
+
2. **Hand-pick**: Choose a color with same hue as background but adjusted saturation/lightness
|
|
196
|
+
|
|
197
|
+
### Perceived Brightness by Hue
|
|
198
|
+
Hues have different apparent brightness at same HSL lightness:
|
|
199
|
+
- **Brightest** (feel lighter): Yellow (60°), Cyan (180°), Green (120°)
|
|
200
|
+
- **Darkest** (feel darker): Blue (240°), Red (0°), Magenta (300°)
|
|
201
|
+
- Adjust lightness values to compensate when building palettes across hues
|
|
202
|
+
|
|
203
|
+
### Dark Mode Adaptation
|
|
204
|
+
- Reverse the shade scale: shade-900 becomes background, shade-50 becomes text
|
|
205
|
+
- Reduce saturation slightly (vivid colors are harsh on dark backgrounds)
|
|
206
|
+
- Shadows are less visible on dark — use subtle glows or border accents instead
|
|
207
|
+
- Test carefully: contrast requirements still apply
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Ch 6: Creating Depth
|
|
212
|
+
|
|
213
|
+
### Shadow Elevation Scale
|
|
214
|
+
|
|
215
|
+
```css
|
|
216
|
+
--shadow-xs: 0 1px 2px rgba(0,0,0,0.05);
|
|
217
|
+
--shadow-sm: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);
|
|
218
|
+
--shadow-md: 0 4px 6px rgba(0,0,0,0.1), 0 2px 4px rgba(0,0,0,0.06);
|
|
219
|
+
--shadow-lg: 0 10px 15px rgba(0,0,0,0.1), 0 4px 6px rgba(0,0,0,0.05);
|
|
220
|
+
--shadow-xl: 0 20px 25px rgba(0,0,0,0.15), 0 10px 10px rgba(0,0,0,0.05);
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Shadow Best Practices
|
|
224
|
+
- **Two shadows per level**: Large diffuse + small tight for realism
|
|
225
|
+
- **Raised elements**: Buttons, cards, navbars, floating action buttons
|
|
226
|
+
- **Inset elements**: Input fields, wells, pressed button states
|
|
227
|
+
- **Interactive shadows**: Increase shadow on hover (sm → md) to show clickability
|
|
228
|
+
- **Don't overdo flat design**: Some depth helps users understand interactive affordances
|
|
229
|
+
- **Keep it consistent**: Use only the defined scale; no random shadow values
|
|
230
|
+
|
|
231
|
+
### Depth Through Overlap
|
|
232
|
+
- Offset an element (e.g., card) so it overlaps a background section
|
|
233
|
+
- Creates visual layering without shadows
|
|
234
|
+
- Negative margins or absolute positioning to achieve the overlap
|
|
235
|
+
|
|
236
|
+
### Color and Depth
|
|
237
|
+
- **Lighter elements appear closer** to the viewer
|
|
238
|
+
- **Darker elements appear farther** away
|
|
239
|
+
- Use this with shadows: elevated elements can also be slightly lighter in bg color
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Ch 7: Working with Images
|
|
244
|
+
|
|
245
|
+
### Text on Images
|
|
246
|
+
|
|
247
|
+
| Technique | CSS | Best For |
|
|
248
|
+
|-----------|-----|----------|
|
|
249
|
+
| Dark overlay | `background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)), url(...)` | Hero sections |
|
|
250
|
+
| Lower brightness | `filter: brightness(0.7)` | Subtle dimming |
|
|
251
|
+
| Colorize | `filter: grayscale(100%); mix-blend-mode: multiply` + color overlay | Brand consistency |
|
|
252
|
+
| Text shadow | `text-shadow: 0 2px 4px rgba(0,0,0,0.5)` | Quick fix |
|
|
253
|
+
| Scrim/card | Semi-opaque `background-color` on text container | Readable blocks |
|
|
254
|
+
|
|
255
|
+
### Image Sizing
|
|
256
|
+
|
|
257
|
+
| Scenario | Approach |
|
|
258
|
+
|----------|----------|
|
|
259
|
+
| Icons at different sizes | Use different icon sets (16px, 24px, 32px) — don't scale |
|
|
260
|
+
| Screenshots in marketing | Capture at display size; don't scale down |
|
|
261
|
+
| User-uploaded avatars | `object-fit: cover` + fixed aspect ratio + bg color fallback |
|
|
262
|
+
| User-uploaded hero images | `object-fit: cover` + fixed height + handle extremes (panoramic, portrait) |
|
|
263
|
+
|
|
264
|
+
### Object-Fit Values
|
|
265
|
+
```css
|
|
266
|
+
object-fit: cover; /* Crop to fill — best for avatars, hero images */
|
|
267
|
+
object-fit: contain; /* Fit inside — best for product images, logos */
|
|
268
|
+
object-fit: fill; /* Stretch — avoid for most UI use cases */
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Ch 8: Finishing Touches
|
|
274
|
+
|
|
275
|
+
### Accent Borders
|
|
276
|
+
```css
|
|
277
|
+
/* Top accent on card */
|
|
278
|
+
.card { border-top: 4px solid var(--primary-500); }
|
|
279
|
+
|
|
280
|
+
/* Left accent on alert */
|
|
281
|
+
.alert { border-left: 4px solid var(--warning-500); }
|
|
282
|
+
|
|
283
|
+
/* Color-code by type */
|
|
284
|
+
.alert-success { border-left-color: var(--success-500); }
|
|
285
|
+
.alert-danger { border-left-color: var(--danger-500); }
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Replacing Borders
|
|
289
|
+
| Instead of Border | Try |
|
|
290
|
+
|-------------------|-----|
|
|
291
|
+
| Between list items | More padding/spacing between items |
|
|
292
|
+
| Around cards | Box-shadow (subtle shadow creates implied boundary) |
|
|
293
|
+
| Between sections | Different background color |
|
|
294
|
+
| Around inputs | Background color difference + subtle shadow |
|
|
295
|
+
|
|
296
|
+
### Empty States
|
|
297
|
+
- **Don't**: Show just "No items found" in grey text
|
|
298
|
+
- **Do**: Show an illustration + explanation + primary call to action
|
|
299
|
+
- **Example**: "No projects yet — Create your first project" with a big button
|
|
300
|
+
- Empty states are onboarding opportunities
|
|
301
|
+
|
|
302
|
+
### Custom Defaults
|
|
303
|
+
| Default Element | Upgrade |
|
|
304
|
+
|----------------|---------|
|
|
305
|
+
| Bullet lists | Icon lists (checkmarks, arrows, custom icons) |
|
|
306
|
+
| Blockquotes | Large border-left + background tint + italic |
|
|
307
|
+
| Form inputs | Colored focus ring, custom checkbox/radio |
|
|
308
|
+
| Tables | Alternating rows, sticky headers, row hover |
|
|
309
|
+
| Links | Custom underline color/thickness |
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## Ch 9: Leveling Up
|
|
314
|
+
|
|
315
|
+
### Learning Approach
|
|
316
|
+
- **Steal from good designs** — Rebuild UIs you admire to understand why they work
|
|
317
|
+
- **Analyze decisions** — Ask "why does this work?" not just "what does it look like?"
|
|
318
|
+
- **Think in systems** — Every decision should fit into a reusable system
|
|
319
|
+
- **Look outside your domain** — SaaS, e-commerce, media, dashboards — all have lessons
|
|
320
|
+
- **Rebuild for practice** — Pick a well-designed app and recreate a page pixel-by-pixel
|
|
321
|
+
|
|
322
|
+
### Design System Assembly
|
|
323
|
+
Collect all your scales into one system:
|
|
324
|
+
|
|
325
|
+
```css
|
|
326
|
+
:root {
|
|
327
|
+
/* Spacing */
|
|
328
|
+
--space-1: 4px; --space-2: 8px; --space-3: 12px;
|
|
329
|
+
--space-4: 16px; --space-5: 24px; --space-6: 32px;
|
|
330
|
+
--space-8: 48px; --space-10: 64px; --space-12: 96px;
|
|
331
|
+
--space-16: 128px;
|
|
332
|
+
|
|
333
|
+
/* Type */
|
|
334
|
+
--text-xs: 12px; --text-sm: 14px; --text-base: 16px;
|
|
335
|
+
--text-lg: 18px; --text-xl: 20px; --text-2xl: 24px;
|
|
336
|
+
--text-3xl: 30px; --text-4xl: 36px; --text-5xl: 48px;
|
|
337
|
+
|
|
338
|
+
/* Font Weight */
|
|
339
|
+
--font-normal: 400; --font-medium: 500;
|
|
340
|
+
--font-semibold: 600; --font-bold: 700;
|
|
341
|
+
|
|
342
|
+
/* Shadows */
|
|
343
|
+
--shadow-xs: 0 1px 2px rgba(0,0,0,0.05);
|
|
344
|
+
--shadow-sm: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);
|
|
345
|
+
--shadow-md: 0 4px 6px rgba(0,0,0,0.1), 0 2px 4px rgba(0,0,0,0.06);
|
|
346
|
+
--shadow-lg: 0 10px 15px rgba(0,0,0,0.1), 0 4px 6px rgba(0,0,0,0.05);
|
|
347
|
+
--shadow-xl: 0 20px 25px rgba(0,0,0,0.15), 0 10px 10px rgba(0,0,0,0.05);
|
|
348
|
+
|
|
349
|
+
/* Border Radius */
|
|
350
|
+
--radius-sm: 2px; --radius-md: 4px;
|
|
351
|
+
--radius-lg: 8px; --radius-full: 9999px;
|
|
352
|
+
|
|
353
|
+
/* Colors: define full shade scales for grey, primary, accent, etc. */
|
|
354
|
+
}
|
|
355
|
+
```
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Refactoring UI — Design Review Checklist
|
|
2
|
+
|
|
3
|
+
Systematic checklist for reviewing UI designs against the 9 chapters
|
|
4
|
+
from *Refactoring UI* by Adam Wathan & Steve Schoger.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Visual Hierarchy (Chapter 2)
|
|
9
|
+
|
|
10
|
+
- [ ] **Ch 2 — Clear hierarchy** — Can you tell what's most important at a glance?
|
|
11
|
+
- [ ] **Ch 2 — Three levers used** — Is hierarchy controlled through size, weight, AND color (not just size)?
|
|
12
|
+
- [ ] **Ch 2 — Labels de-emphasized** — Are labels secondary to the data they describe?
|
|
13
|
+
- [ ] **Ch 2 — No competing elements** — Does only one element dominate attention per section?
|
|
14
|
+
- [ ] **Ch 2 — Font weight ≥400** — Are all UI font weights 400 or above?
|
|
15
|
+
- [ ] **Ch 2 — Icon weight balanced** — Are bold icons toned down with lighter color?
|
|
16
|
+
- [ ] **Ch 2 — Visual ≠ document hierarchy** — Are heading sizes based on design role, not HTML tag?
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 2. Layout & Spacing (Chapter 3)
|
|
21
|
+
|
|
22
|
+
- [ ] **Ch 3 — Spacing scale used** — Are all spacing values from a defined scale (e.g., 4/8/12/16/24/32/48/64)?
|
|
23
|
+
- [ ] **Ch 3 — No arbitrary values** — Are there any one-off spacing values not in the scale?
|
|
24
|
+
- [ ] **Ch 3 — Grouping clear** — Are related elements closer together, unrelated elements farther apart?
|
|
25
|
+
- [ ] **Ch 3 — White space generous** — Is there enough breathing room, or is everything crammed?
|
|
26
|
+
- [ ] **Ch 3 — Not filling the screen** — Are content areas max-width constrained?
|
|
27
|
+
- [ ] **Ch 3 — Grid justified** — If a grid is used, does the layout actually need one?
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 3. Typography (Chapter 4)
|
|
32
|
+
|
|
33
|
+
- [ ] **Ch 4 — Type scale defined** — Are all font sizes from a defined scale (e.g., 12/14/16/18/20/24/30/36/48)?
|
|
34
|
+
- [ ] **Ch 4 — No arbitrary sizes** — Are there any one-off font sizes not in the scale?
|
|
35
|
+
- [ ] **Ch 4 — Line length controlled** — Are paragraphs 45–75 characters wide (20–35em max-width)?
|
|
36
|
+
- [ ] **Ch 4 — Line-height appropriate** — Taller for body (1.5+), shorter for headings (1–1.25)?
|
|
37
|
+
- [ ] **Ch 4 — No long centered text** — Is centered text limited to 1–2 lines?
|
|
38
|
+
- [ ] **Ch 4 — Numbers right-aligned** — Are numbers in tables right-aligned?
|
|
39
|
+
- [ ] **Ch 4 — Letter-spacing adjusted** — Tightened for large headings, widened for small uppercase?
|
|
40
|
+
- [ ] **Ch 4 — Good font choice** — Is the font appropriate for the personality (serif vs sans, round vs sharp)?
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 4. Color (Chapter 5)
|
|
45
|
+
|
|
46
|
+
- [ ] **Ch 5 — HSL-based palette** — Are colors defined in HSL (not random hex picks)?
|
|
47
|
+
- [ ] **Ch 5 — Shade scales built** — Does each color have 5–10 shades (not just one value)?
|
|
48
|
+
- [ ] **Ch 5 — 8+ grey shades** — Is there a full grey palette from near-white to near-black?
|
|
49
|
+
- [ ] **Ch 5 — No grey on color** — Is grey text avoided on colored backgrounds (use opacity or hue-match)?
|
|
50
|
+
- [ ] **Ch 5 — Contrast accessible** — Does body text meet 4.5:1 ratio? Large text 3:1?
|
|
51
|
+
- [ ] **Ch 5 — Perceived brightness** — Are yellow/green hues darkened and blue/purple lightened to balance?
|
|
52
|
+
- [ ] **Ch 5 — Color not sole indicator** — Is information available without relying on color alone?
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 5. Depth & Shadows (Chapter 6)
|
|
57
|
+
|
|
58
|
+
- [ ] **Ch 6 — Shadow scale defined** — Are shadows from a defined scale (xs/sm/md/lg/xl)?
|
|
59
|
+
- [ ] **Ch 6 — No arbitrary shadows** — Are there any one-off shadow values not in the scale?
|
|
60
|
+
- [ ] **Ch 6 — Two-shadow technique** — Do shadows combine a large diffuse + small tight shadow?
|
|
61
|
+
- [ ] **Ch 6 — Shadows match elevation** — Are modals higher than cards, cards higher than buttons?
|
|
62
|
+
- [ ] **Ch 6 — Interactive shadows** — Do clickable elements change shadow on hover?
|
|
63
|
+
- [ ] **Ch 6 — Overlap used** — Are overlapping elements creating depth where appropriate?
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 6. Images (Chapter 7)
|
|
68
|
+
|
|
69
|
+
- [ ] **Ch 7 — Text on images readable** — Is text over images using overlay, scrim, or shadow?
|
|
70
|
+
- [ ] **Ch 7 — Icons not scaled** — Are icons used at their designed size (not stretched)?
|
|
71
|
+
- [ ] **Ch 7 — Screenshots actual size** — Are screenshots captured at display size, not scaled down?
|
|
72
|
+
- [ ] **Ch 7 — User content controlled** — Are user-uploaded images using object-fit + fixed aspect ratios?
|
|
73
|
+
- [ ] **Ch 7 — Fallback backgrounds** — Do image containers have background-color for loading/transparent images?
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 7. Finishing Touches (Chapter 8)
|
|
78
|
+
|
|
79
|
+
- [ ] **Ch 8 — Borders minimal** — Are borders replaced with spacing, bg color, or box-shadow where possible?
|
|
80
|
+
- [ ] **Ch 8 — Empty states designed** — Do empty states have illustrations and calls to action?
|
|
81
|
+
- [ ] **Ch 8 — Defaults enhanced** — Are bullet lists, blockquotes, form inputs enhanced beyond browser defaults?
|
|
82
|
+
- [ ] **Ch 8 — Accent borders used** — Do cards or alerts have colored top/left accent borders?
|
|
83
|
+
- [ ] **Ch 8 — Backgrounds decorated** — Are plain white sections enhanced with subtle patterns or color?
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 8. Process & Systems (Chapters 1, 9)
|
|
88
|
+
|
|
89
|
+
- [ ] **Ch 1 — Personality consistent** — Does every design choice align with the chosen personality?
|
|
90
|
+
- [ ] **Ch 1 — Systems defined** — Are spacing, type, color, and shadow scales documented?
|
|
91
|
+
- [ ] **Ch 1 — Low fidelity first** — Was the design started in low fidelity before adding detail?
|
|
92
|
+
- [ ] **Ch 9 — Reusable patterns** — Can these design decisions be applied to other components?
|
|
93
|
+
- [ ] **Ch 9 — Design system updated** — Are new tokens/patterns documented in the system?
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Quick Review Workflow
|
|
98
|
+
|
|
99
|
+
1. **Hierarchy pass** — Squint test: can you identify the most important element in each section?
|
|
100
|
+
2. **Systems pass** — Are spacing, type sizes, colors, and shadows all from defined scales?
|
|
101
|
+
3. **Typography pass** — Line length, line-height, alignment, letter-spacing all correct?
|
|
102
|
+
4. **Color pass** — Accessible contrast? No grey on color? Shade scales used?
|
|
103
|
+
5. **Depth pass** — Consistent shadow scale? Interactive elevation changes?
|
|
104
|
+
6. **Polish pass** — Empty states designed? Fewer borders? Enhanced defaults? Accent borders?
|
|
105
|
+
7. **Prioritize findings** — Hierarchy > Accessibility > Systems > Typography > Depth > Polish
|
|
106
|
+
|
|
107
|
+
## Severity Levels
|
|
108
|
+
|
|
109
|
+
| Severity | Description | Example |
|
|
110
|
+
|----------|-------------|---------|
|
|
111
|
+
| **Critical** | Accessibility or readability violation | Contrast below 3:1, font weight <400, unreadable text on image |
|
|
112
|
+
| **High** | Hierarchy or usability issue | No clear visual hierarchy, ambiguous spacing/grouping, line-length >80ch |
|
|
113
|
+
| **Medium** | Inconsistency or design quality gap | Arbitrary spacing values, missing shade scale, inconsistent shadow use |
|
|
114
|
+
| **Low** | Polish or documentation | Missing accent borders, default empty states, undocumented tokens |
|