@palate/cli 0.0.0-stage → 0.0.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 +20 -0
- package/README.md +151 -2
- package/bin/palate.mjs +894 -0
- package/kb/anatomy/data-table.md +24 -0
- package/kb/anatomy/empty-state.md +16 -0
- package/kb/anatomy/filter-toolbar.md +19 -0
- package/kb/anatomy/meter.md +16 -0
- package/kb/anatomy/product-window.md +18 -0
- package/kb/anatomy/settings-page.md +18 -0
- package/kb/anatomy/status-indicator.md +17 -0
- package/kb/anatomy/toast-undo.md +16 -0
- package/kb/bench/briefs.json +618 -0
- package/kb/craft/SOURCES.md +48 -0
- package/kb/craft/creativity.md +55 -0
- package/kb/craft/details.md +75 -0
- package/kb/craft/landing-demos.md +46 -0
- package/kb/craft/mistakes.md +73 -0
- package/kb/craft/motion.md +53 -0
- package/kb/craft/principles.md +68 -0
- package/kb/index/discovery.json +1 -0
- package/kb/inspiration/index.json +79 -0
- package/kb/moves/animated-comparison-table.md +58 -0
- package/kb/moves/before-after-slider.md +58 -0
- package/kb/moves/bento-live-tiles.md +57 -0
- package/kb/moves/calm-motion-system.md +63 -0
- package/kb/moves/canvas-grain.md +58 -0
- package/kb/moves/changelog-as-magazine.md +56 -0
- package/kb/moves/code-drawn-diagram.md +56 -0
- package/kb/moves/colophon.md +54 -0
- package/kb/moves/command-palette-site-nav.md +58 -0
- package/kb/moves/confetti-free-celebration.md +58 -0
- package/kb/moves/console-easter-egg.md +57 -0
- package/kb/moves/copy-confirmation.md +57 -0
- package/kb/moves/cursor-reactive-light.md +57 -0
- package/kb/moves/dark-band-contrast-section.md +55 -0
- package/kb/moves/designed-dark-mode.md +58 -0
- package/kb/moves/duotone-photography.md +55 -0
- package/kb/moves/editorial-drop-cap.md +58 -0
- package/kb/moves/editorial-grid-pull-quotes.md +55 -0
- package/kb/moves/engraving-colour-lens.md +64 -0
- package/kb/moves/explorable-control.md +57 -0
- package/kb/moves/feature-films-on-painted-stages.md +58 -0
- package/kb/moves/first-win-onboarding.md +59 -0
- package/kb/moves/footer-live-status.md +56 -0
- package/kb/moves/footer-rewards-the-end.md +58 -0
- package/kb/moves/generative-brand-pattern.md +55 -0
- package/kb/moves/gentle-error-nudge.md +59 -0
- package/kb/moves/halftone-dot-imagery.md +55 -0
- package/kb/moves/hand-drawn-annotations.md +55 -0
- package/kb/moves/hero-paints-itself-in.md +65 -0
- package/kb/moves/honest-progress-narration.md +58 -0
- package/kb/moves/honest-testimonial-wall.md +57 -0
- package/kb/moves/inline-sparklines-in-copy.md +57 -0
- package/kb/moves/inspect-our-taste.md +58 -0
- package/kb/moves/interactive-pricing-calculator.md +59 -0
- package/kb/moves/isometric-illustration-system.md +56 -0
- package/kb/moves/kinetic-variable-type.md +57 -0
- package/kb/moves/konami-secret.md +59 -0
- package/kb/moves/layered-paper-depth.md +56 -0
- package/kb/moves/lightweight-3d-object-hero.md +59 -0
- package/kb/moves/line-engraving-from-image.md +63 -0
- package/kb/moves/link-preview-peek.md +57 -0
- package/kb/moves/live-data-ticker.md +61 -0
- package/kb/moves/made-with-proof.md +51 -0
- package/kb/moves/magnetic-buttons.md +55 -0
- package/kb/moves/marquee-done-right.md +58 -0
- package/kb/moves/moves.yaml +450 -0
- package/kb/moves/museum-painting-backdrop.md +59 -0
- package/kb/moves/one-colour-brand-world.md +56 -0
- package/kb/moves/playful-404.md +58 -0
- package/kb/moves/pointer-highlight-word.md +56 -0
- package/kb/moves/product-in-context.md +56 -0
- package/kb/moves/real-world-data.md +58 -0
- package/kb/moves/referral-reward-reveal.md +59 -0
- package/kb/moves/riso-print-texture.md +57 -0
- package/kb/moves/screenshot-detail-crops.md +56 -0
- package/kb/moves/scroll-progress-chapters.md +57 -0
- package/kb/moves/scroll-scrubbed-product-film.md +62 -0
- package/kb/moves/self-playing-product-demo.md +61 -0
- package/kb/moves/shape-continuity-morph.md +58 -0
- package/kb/moves/sliding-nav-indicator.md +58 -0
- package/kb/moves/sticky-scroll-story.md +56 -0
- package/kb/moves/story-led-long-scroll.md +56 -0
- package/kb/moves/tactile-button.md +63 -0
- package/kb/moves/technical-drawing-lines.md +57 -0
- package/kb/moves/time-of-day-theming.md +56 -0
- package/kb/moves/tiny-game-easter-egg.md +60 -0
- package/kb/moves/type-decode-reveal.md +57 -0
- package/kb/moves/typographic-numeral-hero.md +58 -0
- package/kb/moves/view-transitions-between-pages.md +57 -0
- package/kb/moves/waitlist-position-live.md +60 -0
- package/kb/patterns/app-team-members.md +27 -0
- package/kb/patterns/chat-agent-approvals.md +31 -0
- package/kb/patterns/commerce-product-page.md +34 -0
- package/kb/patterns/dashboard-entity-table.md +37 -0
- package/kb/patterns/dashboard-home-today.md +24 -0
- package/kb/patterns/docs-api-reference.md +31 -0
- package/kb/patterns/marketing-product-led-landing.md +30 -0
- package/kb/patterns/mobile-daily-checklist.md +26 -0
- package/kb/references/index.json +1 -0
- package/kb/references/thumbs/004c5e9072.jpg +0 -0
- package/kb/references/thumbs/008915eb21.jpg +0 -0
- package/kb/references/thumbs/0098cf66c2.jpg +0 -0
- package/kb/references/thumbs/012e61b31f.jpg +0 -0
- package/kb/references/thumbs/014d4e46fc.jpg +0 -0
- package/kb/references/thumbs/01e54f394a.jpg +0 -0
- package/kb/references/thumbs/01e99a579c.jpg +0 -0
- package/kb/references/thumbs/01fd014575.jpg +0 -0
- package/kb/references/thumbs/022778ca72.jpg +0 -0
- package/kb/references/thumbs/02717bf1e1.jpg +0 -0
- package/kb/references/thumbs/02a5cfdbe9.jpg +0 -0
- package/kb/references/thumbs/02c9823f8d.jpg +0 -0
- package/kb/references/thumbs/02f3974613.jpg +0 -0
- package/kb/references/thumbs/032427f1ce.jpg +0 -0
- package/kb/references/thumbs/03ba677d07.jpg +0 -0
- package/kb/references/thumbs/04f2476cfe.jpg +0 -0
- package/kb/references/thumbs/0563e7c52e.jpg +0 -0
- package/kb/references/thumbs/05fa6b8eef.jpg +0 -0
- package/kb/references/thumbs/065bce1517.jpg +0 -0
- package/kb/references/thumbs/06c017f113.jpg +0 -0
- package/kb/references/thumbs/0770e2d8d3.jpg +0 -0
- package/kb/references/thumbs/078a26c4cb.jpg +0 -0
- package/kb/references/thumbs/08679b6e84.jpg +0 -0
- package/kb/references/thumbs/088c45a34c.jpg +0 -0
- package/kb/references/thumbs/089e9fd4e4.jpg +0 -0
- package/kb/references/thumbs/08f773231e.jpg +0 -0
- package/kb/references/thumbs/093ca3e2e3.jpg +0 -0
- package/kb/references/thumbs/0963320f74.jpg +0 -0
- package/kb/references/thumbs/09fc1ded85.jpg +0 -0
- package/kb/references/thumbs/0a368f3963.jpg +0 -0
- package/kb/references/thumbs/0a9e0e5201.jpg +0 -0
- package/kb/references/thumbs/0aace67ee7.jpg +0 -0
- package/kb/references/thumbs/0b61ecf793.jpg +0 -0
- package/kb/references/thumbs/0bde18ae09.jpg +0 -0
- package/kb/references/thumbs/0bf7ee8143.jpg +0 -0
- package/kb/references/thumbs/0ca20a13e0.jpg +0 -0
- package/kb/references/thumbs/0cdc0198c4.jpg +0 -0
- package/kb/references/thumbs/0cf9790b28.jpg +0 -0
- package/kb/references/thumbs/0d0202904b.jpg +0 -0
- package/kb/references/thumbs/0d053aba18.jpg +0 -0
- package/kb/references/thumbs/0d0c2c13d2.jpg +0 -0
- package/kb/references/thumbs/0d30be99b0.jpg +0 -0
- package/kb/references/thumbs/0d503da1b7.jpg +0 -0
- package/kb/references/thumbs/0ddad7b740.jpg +0 -0
- package/kb/references/thumbs/0e0a148101.jpg +0 -0
- package/kb/references/thumbs/0e401b6b75.jpg +0 -0
- package/kb/references/thumbs/0e8f32ba0f.jpg +0 -0
- package/kb/references/thumbs/0ef1966a7d.jpg +0 -0
- package/kb/references/thumbs/0efd416d11.jpg +0 -0
- package/kb/references/thumbs/0f3af263ae.jpg +0 -0
- package/kb/references/thumbs/0f9644c3a5.jpg +0 -0
- package/kb/references/thumbs/1020552737.jpg +0 -0
- package/kb/references/thumbs/1037626587.jpg +0 -0
- package/kb/references/thumbs/10512b7e94.jpg +0 -0
- package/kb/references/thumbs/106dc4a7b5.jpg +0 -0
- package/kb/references/thumbs/108943f6f7.jpg +0 -0
- package/kb/references/thumbs/10a5551d51.jpg +0 -0
- package/kb/references/thumbs/10dd01076c.jpg +0 -0
- package/kb/references/thumbs/11b06e39da.jpg +0 -0
- package/kb/references/thumbs/11baa1ec83.jpg +0 -0
- package/kb/references/thumbs/11bbe12167.jpg +0 -0
- package/kb/references/thumbs/11ca37feb8.jpg +0 -0
- package/kb/references/thumbs/11f14d3f12.jpg +0 -0
- package/kb/references/thumbs/124530ceb5.jpg +0 -0
- package/kb/references/thumbs/1276402336.jpg +0 -0
- package/kb/references/thumbs/1280e5c9d6.jpg +0 -0
- package/kb/references/thumbs/12cac0d172.jpg +0 -0
- package/kb/references/thumbs/138be6623a.jpg +0 -0
- package/kb/references/thumbs/13a0c544d1.jpg +0 -0
- package/kb/references/thumbs/13a32cb94c.jpg +0 -0
- package/kb/references/thumbs/144035d641.jpg +0 -0
- package/kb/references/thumbs/1457e41924.jpg +0 -0
- package/kb/references/thumbs/14972e3a86.jpg +0 -0
- package/kb/references/thumbs/15a47f2e4c.jpg +0 -0
- package/kb/references/thumbs/15aa15d22e.jpg +0 -0
- package/kb/references/thumbs/160dcd24b7.jpg +0 -0
- package/kb/references/thumbs/1610978529.jpg +0 -0
- package/kb/references/thumbs/16db30ba37.jpg +0 -0
- package/kb/references/thumbs/16f19ae4f3.jpg +0 -0
- package/kb/references/thumbs/16f758b03f.jpg +0 -0
- package/kb/references/thumbs/1748e5b751.jpg +0 -0
- package/kb/references/thumbs/175d0b0e69.jpg +0 -0
- package/kb/references/thumbs/178f571a36.jpg +0 -0
- package/kb/references/thumbs/17c43dc025.jpg +0 -0
- package/kb/references/thumbs/17c7f05b50.jpg +0 -0
- package/kb/references/thumbs/17f97e61dd.jpg +0 -0
- package/kb/references/thumbs/1804e17365.jpg +0 -0
- package/kb/references/thumbs/195c162ed1.jpg +0 -0
- package/kb/references/thumbs/19e3699c29.jpg +0 -0
- package/kb/references/thumbs/1a48e0a4d5.jpg +0 -0
- package/kb/references/thumbs/1a6cda265e.jpg +0 -0
- package/kb/references/thumbs/1a7e012091.jpg +0 -0
- package/kb/references/thumbs/1a9173a172.jpg +0 -0
- package/kb/references/thumbs/1b34a6b4d2.jpg +0 -0
- package/kb/references/thumbs/1b5284f3b2.jpg +0 -0
- package/kb/references/thumbs/1b93fbd6d3.jpg +0 -0
- package/kb/references/thumbs/1c6728fef6.jpg +0 -0
- package/kb/references/thumbs/1c6f101618.jpg +0 -0
- package/kb/references/thumbs/1cf7011a94.jpg +0 -0
- package/kb/references/thumbs/1d1769e539.jpg +0 -0
- package/kb/references/thumbs/1d1fd23199.jpg +0 -0
- package/kb/references/thumbs/1d7b6602ac.jpg +0 -0
- package/kb/references/thumbs/1dbbc61b9e.jpg +0 -0
- package/kb/references/thumbs/1dbdd6d21d.jpg +0 -0
- package/kb/references/thumbs/1dd873744b.jpg +0 -0
- package/kb/references/thumbs/1df4dd7cf9.jpg +0 -0
- package/kb/references/thumbs/1ece8c35b8.jpg +0 -0
- package/kb/references/thumbs/1f0e5b9aa4.jpg +0 -0
- package/kb/references/thumbs/1f1419651b.jpg +0 -0
- package/kb/references/thumbs/1f2a6da92d.jpg +0 -0
- package/kb/references/thumbs/1f651f33c0.jpg +0 -0
- package/kb/references/thumbs/1f8b697d18.jpg +0 -0
- package/kb/references/thumbs/1fee3824cd.jpg +0 -0
- package/kb/references/thumbs/1ff7757853.jpg +0 -0
- package/kb/references/thumbs/2043182f01.jpg +0 -0
- package/kb/references/thumbs/2059dabcd5.jpg +0 -0
- package/kb/references/thumbs/209d9dbb95.jpg +0 -0
- package/kb/references/thumbs/20d8923554.jpg +0 -0
- package/kb/references/thumbs/210dd3b671.jpg +0 -0
- package/kb/references/thumbs/2120719116.jpg +0 -0
- package/kb/references/thumbs/21a7384429.jpg +0 -0
- package/kb/references/thumbs/225f187391.jpg +0 -0
- package/kb/references/thumbs/230caf7dd2.jpg +0 -0
- package/kb/references/thumbs/235afad355.jpg +0 -0
- package/kb/references/thumbs/2378066687.jpg +0 -0
- package/kb/references/thumbs/241faf68a1.jpg +0 -0
- package/kb/references/thumbs/24d9f1a9b9.jpg +0 -0
- package/kb/references/thumbs/2505c8b9a0.jpg +0 -0
- package/kb/references/thumbs/25593638ca.jpg +0 -0
- package/kb/references/thumbs/25dd454f18.jpg +0 -0
- package/kb/references/thumbs/2602e123e2.jpg +0 -0
- package/kb/references/thumbs/26095c0b11.jpg +0 -0
- package/kb/references/thumbs/26260d6238.jpg +0 -0
- package/kb/references/thumbs/26bba21836.jpg +0 -0
- package/kb/references/thumbs/26bde3520b.jpg +0 -0
- package/kb/references/thumbs/272e22067c.jpg +0 -0
- package/kb/references/thumbs/27421b3226.jpg +0 -0
- package/kb/references/thumbs/2769ebca41.jpg +0 -0
- package/kb/references/thumbs/27e2f6e8b0.jpg +0 -0
- package/kb/references/thumbs/28432ba373.jpg +0 -0
- package/kb/references/thumbs/2846626f19.jpg +0 -0
- package/kb/references/thumbs/28750e821e.jpg +0 -0
- package/kb/references/thumbs/289481230f.jpg +0 -0
- package/kb/references/thumbs/2897967408.jpg +0 -0
- package/kb/references/thumbs/28c0a5fa17.jpg +0 -0
- package/kb/references/thumbs/28c181fba5.jpg +0 -0
- package/kb/references/thumbs/29806f539f.jpg +0 -0
- package/kb/references/thumbs/2997f56ee7.jpg +0 -0
- package/kb/references/thumbs/29b34a10fb.jpg +0 -0
- package/kb/references/thumbs/29bd78cdb4.jpg +0 -0
- package/kb/references/thumbs/29c8c6c22a.jpg +0 -0
- package/kb/references/thumbs/2ac23f7fae.jpg +0 -0
- package/kb/references/thumbs/2b76e13f79.jpg +0 -0
- package/kb/references/thumbs/2b84226479.jpg +0 -0
- package/kb/references/thumbs/2bf2dbf737.jpg +0 -0
- package/kb/references/thumbs/2bf89abbf6.jpg +0 -0
- package/kb/references/thumbs/2c562cd534.jpg +0 -0
- package/kb/references/thumbs/2cfe9d48c4.jpg +0 -0
- package/kb/references/thumbs/2d49f19b27.jpg +0 -0
- package/kb/references/thumbs/2dc8670da7.jpg +0 -0
- package/kb/references/thumbs/2de947c469.jpg +0 -0
- package/kb/references/thumbs/2e075ca79f.jpg +0 -0
- package/kb/references/thumbs/2eb0820e6b.jpg +0 -0
- package/kb/references/thumbs/2ec56a9dc0.jpg +0 -0
- package/kb/references/thumbs/30bb4ad607.jpg +0 -0
- package/kb/references/thumbs/30d19b8444.jpg +0 -0
- package/kb/references/thumbs/3173c71d73.jpg +0 -0
- package/kb/references/thumbs/31e59e4518.jpg +0 -0
- package/kb/references/thumbs/322b8960e8.jpg +0 -0
- package/kb/references/thumbs/325c9be6f4.jpg +0 -0
- package/kb/references/thumbs/3273338982.jpg +0 -0
- package/kb/references/thumbs/32f8387f38.jpg +0 -0
- package/kb/references/thumbs/332f6b74c3.jpg +0 -0
- package/kb/references/thumbs/334b146b6a.jpg +0 -0
- package/kb/references/thumbs/339abd60e4.jpg +0 -0
- package/kb/references/thumbs/33e88ec295.jpg +0 -0
- package/kb/references/thumbs/340931b5d4.jpg +0 -0
- package/kb/references/thumbs/34165a93bd.jpg +0 -0
- package/kb/references/thumbs/34d0575dd7.jpg +0 -0
- package/kb/references/thumbs/3549e75f0a.jpg +0 -0
- package/kb/references/thumbs/35827f1561.jpg +0 -0
- package/kb/references/thumbs/37c50280ec.jpg +0 -0
- package/kb/references/thumbs/37e66ecf11.jpg +0 -0
- package/kb/references/thumbs/3841a04fdc.jpg +0 -0
- package/kb/references/thumbs/38490c088f.jpg +0 -0
- package/kb/references/thumbs/3850319e9f.jpg +0 -0
- package/kb/references/thumbs/3856a64166.jpg +0 -0
- package/kb/references/thumbs/3881f211c2.jpg +0 -0
- package/kb/references/thumbs/38c7dde2f3.jpg +0 -0
- package/kb/references/thumbs/38ce9e486c.jpg +0 -0
- package/kb/references/thumbs/390ea8e01b.jpg +0 -0
- package/kb/references/thumbs/391b7fc27c.jpg +0 -0
- package/kb/references/thumbs/395f7214dc.jpg +0 -0
- package/kb/references/thumbs/39e81a5db2.jpg +0 -0
- package/kb/references/thumbs/3a67c8d655.jpg +0 -0
- package/kb/references/thumbs/3a89c25e3b.jpg +0 -0
- package/kb/references/thumbs/3aa0837542.jpg +0 -0
- package/kb/references/thumbs/3aae18aa8a.jpg +0 -0
- package/kb/references/thumbs/3bdbe767db.jpg +0 -0
- package/kb/references/thumbs/3c0616fc7f.jpg +0 -0
- package/kb/references/thumbs/3c18e9db1d.jpg +0 -0
- package/kb/references/thumbs/3c5a14076c.jpg +0 -0
- package/kb/references/thumbs/3ca9ec15c6.jpg +0 -0
- package/kb/references/thumbs/3d7756fd35.jpg +0 -0
- package/kb/references/thumbs/3dd45bd33d.jpg +0 -0
- package/kb/references/thumbs/3de72d5414.jpg +0 -0
- package/kb/references/thumbs/3dede597af.jpg +0 -0
- package/kb/references/thumbs/3ea948619e.jpg +0 -0
- package/kb/references/thumbs/402c12054c.jpg +0 -0
- package/kb/references/thumbs/403ab4af90.jpg +0 -0
- package/kb/references/thumbs/40773a8c63.jpg +0 -0
- package/kb/references/thumbs/407d9583db.jpg +0 -0
- package/kb/references/thumbs/415dc1d84c.jpg +0 -0
- package/kb/references/thumbs/420b676a4f.jpg +0 -0
- package/kb/references/thumbs/42a1ee85eb.jpg +0 -0
- package/kb/references/thumbs/43059221aa.jpg +0 -0
- package/kb/references/thumbs/432fa0d22c.jpg +0 -0
- package/kb/references/thumbs/43826f20e3.jpg +0 -0
- package/kb/references/thumbs/43ac55c98a.jpg +0 -0
- package/kb/references/thumbs/43d098f3c3.jpg +0 -0
- package/kb/references/thumbs/4449d80c2c.jpg +0 -0
- package/kb/references/thumbs/44625727dc.jpg +0 -0
- package/kb/references/thumbs/4482bb87a1.jpg +0 -0
- package/kb/references/thumbs/44b078acdc.jpg +0 -0
- package/kb/references/thumbs/44d0305850.jpg +0 -0
- package/kb/references/thumbs/456bb6b59e.jpg +0 -0
- package/kb/references/thumbs/45df73ce48.jpg +0 -0
- package/kb/references/thumbs/45edb45d87.jpg +0 -0
- package/kb/references/thumbs/4671d57cd5.jpg +0 -0
- package/kb/references/thumbs/46cc108518.jpg +0 -0
- package/kb/references/thumbs/470022e614.jpg +0 -0
- package/kb/references/thumbs/4719a669ce.jpg +0 -0
- package/kb/references/thumbs/47404f5ad4.jpg +0 -0
- package/kb/references/thumbs/479d3eb977.jpg +0 -0
- package/kb/references/thumbs/479ed92ceb.jpg +0 -0
- package/kb/references/thumbs/47baed50c7.jpg +0 -0
- package/kb/references/thumbs/47fdcfd7b0.jpg +0 -0
- package/kb/references/thumbs/48fd5e94c5.jpg +0 -0
- package/kb/references/thumbs/493807917b.jpg +0 -0
- package/kb/references/thumbs/49a1c67293.jpg +0 -0
- package/kb/references/thumbs/49e2d7fafe.jpg +0 -0
- package/kb/references/thumbs/49f540fcb6.jpg +0 -0
- package/kb/references/thumbs/4a67ec4028.jpg +0 -0
- package/kb/references/thumbs/4a93275b04.jpg +0 -0
- package/kb/references/thumbs/4aae6f52da.jpg +0 -0
- package/kb/references/thumbs/4b1bae66bd.jpg +0 -0
- package/kb/references/thumbs/4b75da15a9.jpg +0 -0
- package/kb/references/thumbs/4b77789b88.jpg +0 -0
- package/kb/references/thumbs/4bc2f3f3a4.jpg +0 -0
- package/kb/references/thumbs/4c48f27b88.jpg +0 -0
- package/kb/references/thumbs/4c52bd8bfb.jpg +0 -0
- package/kb/references/thumbs/4c9b4acc60.jpg +0 -0
- package/kb/references/thumbs/4cbf0752d4.jpg +0 -0
- package/kb/references/thumbs/4cd2672517.jpg +0 -0
- package/kb/references/thumbs/4dd22a8181.jpg +0 -0
- package/kb/references/thumbs/4ee3447314.jpg +0 -0
- package/kb/references/thumbs/4ef29c8144.jpg +0 -0
- package/kb/references/thumbs/4f82fadfd6.jpg +0 -0
- package/kb/references/thumbs/4fc9b643d8.jpg +0 -0
- package/kb/references/thumbs/50549524b0.jpg +0 -0
- package/kb/references/thumbs/509a615883.jpg +0 -0
- package/kb/references/thumbs/50c03ef855.jpg +0 -0
- package/kb/references/thumbs/50cf9acad6.jpg +0 -0
- package/kb/references/thumbs/51131b025c.jpg +0 -0
- package/kb/references/thumbs/51da1124f0.jpg +0 -0
- package/kb/references/thumbs/524d5e7288.jpg +0 -0
- package/kb/references/thumbs/5251247c81.jpg +0 -0
- package/kb/references/thumbs/526b91b7ec.jpg +0 -0
- package/kb/references/thumbs/52f02f6c2e.jpg +0 -0
- package/kb/references/thumbs/530ab530dc.jpg +0 -0
- package/kb/references/thumbs/5335ee4404.jpg +0 -0
- package/kb/references/thumbs/5385b90939.jpg +0 -0
- package/kb/references/thumbs/53c54654cc.jpg +0 -0
- package/kb/references/thumbs/5420794c6c.jpg +0 -0
- package/kb/references/thumbs/542a9dce8b.jpg +0 -0
- package/kb/references/thumbs/5571530a5f.jpg +0 -0
- package/kb/references/thumbs/56cc68d804.jpg +0 -0
- package/kb/references/thumbs/577b7f7c44.jpg +0 -0
- package/kb/references/thumbs/57adf8f1bb.jpg +0 -0
- package/kb/references/thumbs/57c5f5e3a6.jpg +0 -0
- package/kb/references/thumbs/57ffe4e839.jpg +0 -0
- package/kb/references/thumbs/5817dfc7d6.jpg +0 -0
- package/kb/references/thumbs/581a182a7a.jpg +0 -0
- package/kb/references/thumbs/58807679c8.jpg +0 -0
- package/kb/references/thumbs/589a1d9111.jpg +0 -0
- package/kb/references/thumbs/59167391ab.jpg +0 -0
- package/kb/references/thumbs/5a70420166.jpg +0 -0
- package/kb/references/thumbs/5b10df1b8d.jpg +0 -0
- package/kb/references/thumbs/5b7a712fdb.jpg +0 -0
- package/kb/references/thumbs/5bc46b92ad.jpg +0 -0
- package/kb/references/thumbs/5c0546a120.jpg +0 -0
- package/kb/references/thumbs/5c2b6125a8.jpg +0 -0
- package/kb/references/thumbs/5c536b9e42.jpg +0 -0
- package/kb/references/thumbs/5c8e441d30.jpg +0 -0
- package/kb/references/thumbs/5cb6f1baa5.jpg +0 -0
- package/kb/references/thumbs/5ce6c1f21e.jpg +0 -0
- package/kb/references/thumbs/5cef052c0a.jpg +0 -0
- package/kb/references/thumbs/5d08438209.jpg +0 -0
- package/kb/references/thumbs/5d0f9af9b0.jpg +0 -0
- package/kb/references/thumbs/5d300ed332.jpg +0 -0
- package/kb/references/thumbs/5d708a4794.jpg +0 -0
- package/kb/references/thumbs/5de8826a98.jpg +0 -0
- package/kb/references/thumbs/5df7bff22c.jpg +0 -0
- package/kb/references/thumbs/5e087d0f00.jpg +0 -0
- package/kb/references/thumbs/5e44e70ca0.jpg +0 -0
- package/kb/references/thumbs/5eff5d80ce.jpg +0 -0
- package/kb/references/thumbs/5f015c96b1.jpg +0 -0
- package/kb/references/thumbs/5f3289b7c4.jpg +0 -0
- package/kb/references/thumbs/5f830c40eb.jpg +0 -0
- package/kb/references/thumbs/60c4c3527b.jpg +0 -0
- package/kb/references/thumbs/60e9e594dd.jpg +0 -0
- package/kb/references/thumbs/615421d7be.jpg +0 -0
- package/kb/references/thumbs/6176e4004f.jpg +0 -0
- package/kb/references/thumbs/61f0fe5e06.jpg +0 -0
- package/kb/references/thumbs/6213785db4.jpg +0 -0
- package/kb/references/thumbs/62a670ae09.jpg +0 -0
- package/kb/references/thumbs/63cc12981b.jpg +0 -0
- package/kb/references/thumbs/641f15cc71.jpg +0 -0
- package/kb/references/thumbs/642ab2081d.jpg +0 -0
- package/kb/references/thumbs/644a59bf6e.jpg +0 -0
- package/kb/references/thumbs/644da8a8e3.jpg +0 -0
- package/kb/references/thumbs/6458986897.jpg +0 -0
- package/kb/references/thumbs/64cfbd7b93.jpg +0 -0
- package/kb/references/thumbs/661a57686a.jpg +0 -0
- package/kb/references/thumbs/66355a813a.jpg +0 -0
- package/kb/references/thumbs/664396dd44.jpg +0 -0
- package/kb/references/thumbs/66d832d65f.jpg +0 -0
- package/kb/references/thumbs/66de9e9833.jpg +0 -0
- package/kb/references/thumbs/6750964fd9.jpg +0 -0
- package/kb/references/thumbs/67c7164832.jpg +0 -0
- package/kb/references/thumbs/681600b6cd.jpg +0 -0
- package/kb/references/thumbs/682e75afe4.jpg +0 -0
- package/kb/references/thumbs/69274bc952.jpg +0 -0
- package/kb/references/thumbs/696ec08c52.jpg +0 -0
- package/kb/references/thumbs/69760111cc.jpg +0 -0
- package/kb/references/thumbs/697e32664f.jpg +0 -0
- package/kb/references/thumbs/69df92544b.jpg +0 -0
- package/kb/references/thumbs/69e48c5229.jpg +0 -0
- package/kb/references/thumbs/6a5fb75de1.jpg +0 -0
- package/kb/references/thumbs/6a7389e472.jpg +0 -0
- package/kb/references/thumbs/6a9b041e02.jpg +0 -0
- package/kb/references/thumbs/6ab2fa93ee.jpg +0 -0
- package/kb/references/thumbs/6ae3400319.jpg +0 -0
- package/kb/references/thumbs/6b21344bf3.jpg +0 -0
- package/kb/references/thumbs/6bd1b67a8a.jpg +0 -0
- package/kb/references/thumbs/6c99156c4f.jpg +0 -0
- package/kb/references/thumbs/6cc9b65384.jpg +0 -0
- package/kb/references/thumbs/6d15830a73.jpg +0 -0
- package/kb/references/thumbs/6d4c33d180.jpg +0 -0
- package/kb/references/thumbs/6e36815799.jpg +0 -0
- package/kb/references/thumbs/6eddb9cbfc.jpg +0 -0
- package/kb/references/thumbs/6f97968a7c.jpg +0 -0
- package/kb/references/thumbs/6fa0716a7d.jpg +0 -0
- package/kb/references/thumbs/6facd57184.jpg +0 -0
- package/kb/references/thumbs/6fd57b785a.jpg +0 -0
- package/kb/references/thumbs/700b3cb185.jpg +0 -0
- package/kb/references/thumbs/71197443fa.jpg +0 -0
- package/kb/references/thumbs/72082bc9ee.jpg +0 -0
- package/kb/references/thumbs/72453db479.jpg +0 -0
- package/kb/references/thumbs/72cd64d500.jpg +0 -0
- package/kb/references/thumbs/72d1e75283.jpg +0 -0
- package/kb/references/thumbs/72e13f7f5b.jpg +0 -0
- package/kb/references/thumbs/7459f8e644.jpg +0 -0
- package/kb/references/thumbs/7470d55c79.jpg +0 -0
- package/kb/references/thumbs/74c468f02a.jpg +0 -0
- package/kb/references/thumbs/74fed6eb77.jpg +0 -0
- package/kb/references/thumbs/756e05080d.jpg +0 -0
- package/kb/references/thumbs/75df7e5f49.jpg +0 -0
- package/kb/references/thumbs/76226da6ef.jpg +0 -0
- package/kb/references/thumbs/76a34aa056.jpg +0 -0
- package/kb/references/thumbs/76c7076589.jpg +0 -0
- package/kb/references/thumbs/76cccc396c.jpg +0 -0
- package/kb/references/thumbs/774654789f.jpg +0 -0
- package/kb/references/thumbs/7746cc494d.jpg +0 -0
- package/kb/references/thumbs/7766e36aa3.jpg +0 -0
- package/kb/references/thumbs/78049331ef.jpg +0 -0
- package/kb/references/thumbs/78808a0ca5.jpg +0 -0
- package/kb/references/thumbs/7890b0a310.jpg +0 -0
- package/kb/references/thumbs/78911975e6.jpg +0 -0
- package/kb/references/thumbs/78d289d5a0.jpg +0 -0
- package/kb/references/thumbs/794126267e.jpg +0 -0
- package/kb/references/thumbs/7976eb9025.jpg +0 -0
- package/kb/references/thumbs/798519ec7c.jpg +0 -0
- package/kb/references/thumbs/7a6cc5eecc.jpg +0 -0
- package/kb/references/thumbs/7ac8a7cd4a.jpg +0 -0
- package/kb/references/thumbs/7b1341d61d.jpg +0 -0
- package/kb/references/thumbs/7b9c4031e3.jpg +0 -0
- package/kb/references/thumbs/7ba5ad3779.jpg +0 -0
- package/kb/references/thumbs/7be6eb2bd0.jpg +0 -0
- package/kb/references/thumbs/7c30864f5d.jpg +0 -0
- package/kb/references/thumbs/7c379b5e17.jpg +0 -0
- package/kb/references/thumbs/7c4050eb02.jpg +0 -0
- package/kb/references/thumbs/7ca47b3221.jpg +0 -0
- package/kb/references/thumbs/7d43516bd7.jpg +0 -0
- package/kb/references/thumbs/7da9dbb98a.jpg +0 -0
- package/kb/references/thumbs/7ddda8f57c.jpg +0 -0
- package/kb/references/thumbs/7ece6d215c.jpg +0 -0
- package/kb/references/thumbs/7eebf029de.jpg +0 -0
- package/kb/references/thumbs/7f45483c15.jpg +0 -0
- package/kb/references/thumbs/7fde06eaa5.jpg +0 -0
- package/kb/references/thumbs/80407b97e9.jpg +0 -0
- package/kb/references/thumbs/80f0a6cf4b.jpg +0 -0
- package/kb/references/thumbs/8118b451b8.jpg +0 -0
- package/kb/references/thumbs/816baed4a8.jpg +0 -0
- package/kb/references/thumbs/817d2d15d9.jpg +0 -0
- package/kb/references/thumbs/8260cb430d.jpg +0 -0
- package/kb/references/thumbs/827b562899.jpg +0 -0
- package/kb/references/thumbs/8293cf1e92.jpg +0 -0
- package/kb/references/thumbs/8294653169.jpg +0 -0
- package/kb/references/thumbs/83061f871f.jpg +0 -0
- package/kb/references/thumbs/833df778ca.jpg +0 -0
- package/kb/references/thumbs/83d3acaafc.jpg +0 -0
- package/kb/references/thumbs/844c6efeff.jpg +0 -0
- package/kb/references/thumbs/84563d482a.jpg +0 -0
- package/kb/references/thumbs/848082dd94.jpg +0 -0
- package/kb/references/thumbs/8494b1da94.jpg +0 -0
- package/kb/references/thumbs/84b71014be.jpg +0 -0
- package/kb/references/thumbs/84be4a5f3c.jpg +0 -0
- package/kb/references/thumbs/84fd0fd25a.jpg +0 -0
- package/kb/references/thumbs/853e488e22.jpg +0 -0
- package/kb/references/thumbs/858c91585d.jpg +0 -0
- package/kb/references/thumbs/85903e8fe9.jpg +0 -0
- package/kb/references/thumbs/86597d43fd.jpg +0 -0
- package/kb/references/thumbs/866eb99500.jpg +0 -0
- package/kb/references/thumbs/86ac050340.jpg +0 -0
- package/kb/references/thumbs/86afec7b64.jpg +0 -0
- package/kb/references/thumbs/87238127f5.jpg +0 -0
- package/kb/references/thumbs/87321df792.jpg +0 -0
- package/kb/references/thumbs/87460f70cd.jpg +0 -0
- package/kb/references/thumbs/8770dfeaec.jpg +0 -0
- package/kb/references/thumbs/8798451a8c.jpg +0 -0
- package/kb/references/thumbs/87da1f34a3.jpg +0 -0
- package/kb/references/thumbs/882cdf8c05.jpg +0 -0
- package/kb/references/thumbs/8839f4106f.jpg +0 -0
- package/kb/references/thumbs/8844455212.jpg +0 -0
- package/kb/references/thumbs/88abba0497.jpg +0 -0
- package/kb/references/thumbs/88b372435d.jpg +0 -0
- package/kb/references/thumbs/88bd4f35fa.jpg +0 -0
- package/kb/references/thumbs/88c71a075e.jpg +0 -0
- package/kb/references/thumbs/892e5f048e.jpg +0 -0
- package/kb/references/thumbs/893cc8e920.jpg +0 -0
- package/kb/references/thumbs/896c198814.jpg +0 -0
- package/kb/references/thumbs/8a8e22f756.jpg +0 -0
- package/kb/references/thumbs/8a9d8a35cb.jpg +0 -0
- package/kb/references/thumbs/8ab1d67fec.jpg +0 -0
- package/kb/references/thumbs/8ab201fe12.jpg +0 -0
- package/kb/references/thumbs/8ac372c102.jpg +0 -0
- package/kb/references/thumbs/8b15736d62.jpg +0 -0
- package/kb/references/thumbs/8b1d8d6a05.jpg +0 -0
- package/kb/references/thumbs/8bb6050e20.jpg +0 -0
- package/kb/references/thumbs/8c6c9d1577.jpg +0 -0
- package/kb/references/thumbs/8d337851e0.jpg +0 -0
- package/kb/references/thumbs/8d44b33cc5.jpg +0 -0
- package/kb/references/thumbs/8d4536ff3b.jpg +0 -0
- package/kb/references/thumbs/8d9b99454a.jpg +0 -0
- package/kb/references/thumbs/8dda2303ff.jpg +0 -0
- package/kb/references/thumbs/8dec722d62.jpg +0 -0
- package/kb/references/thumbs/8e0ea4ca74.jpg +0 -0
- package/kb/references/thumbs/8ebba84d69.jpg +0 -0
- package/kb/references/thumbs/8ef09140c0.jpg +0 -0
- package/kb/references/thumbs/8f2928a1b0.jpg +0 -0
- package/kb/references/thumbs/8f88f9ddba.jpg +0 -0
- package/kb/references/thumbs/8fa4451009.jpg +0 -0
- package/kb/references/thumbs/90109b0e02.jpg +0 -0
- package/kb/references/thumbs/90e854e5c9.jpg +0 -0
- package/kb/references/thumbs/914e79f893.jpg +0 -0
- package/kb/references/thumbs/9161369197.jpg +0 -0
- package/kb/references/thumbs/9165c87d6f.jpg +0 -0
- package/kb/references/thumbs/9193f6558a.jpg +0 -0
- package/kb/references/thumbs/91ac7df877.jpg +0 -0
- package/kb/references/thumbs/9216bd4931.jpg +0 -0
- package/kb/references/thumbs/922ae8a26a.jpg +0 -0
- package/kb/references/thumbs/92a70e6867.jpg +0 -0
- package/kb/references/thumbs/92c77ece22.jpg +0 -0
- package/kb/references/thumbs/92e5914fbf.jpg +0 -0
- package/kb/references/thumbs/92ee36419a.jpg +0 -0
- package/kb/references/thumbs/94153a60b0.jpg +0 -0
- package/kb/references/thumbs/9449666640.jpg +0 -0
- package/kb/references/thumbs/944be6a646.jpg +0 -0
- package/kb/references/thumbs/945831476e.jpg +0 -0
- package/kb/references/thumbs/94c1af82f4.jpg +0 -0
- package/kb/references/thumbs/9599d6d589.jpg +0 -0
- package/kb/references/thumbs/960710f4cf.jpg +0 -0
- package/kb/references/thumbs/9608f12d64.jpg +0 -0
- package/kb/references/thumbs/962dabfaa0.jpg +0 -0
- package/kb/references/thumbs/965a3a95c6.jpg +0 -0
- package/kb/references/thumbs/9672ed5ae4.jpg +0 -0
- package/kb/references/thumbs/96891ae9c1.jpg +0 -0
- package/kb/references/thumbs/96e1907c99.jpg +0 -0
- package/kb/references/thumbs/96f25b6578.jpg +0 -0
- package/kb/references/thumbs/97211df9ae.jpg +0 -0
- package/kb/references/thumbs/9769d763a5.jpg +0 -0
- package/kb/references/thumbs/9792bd6d05.jpg +0 -0
- package/kb/references/thumbs/97d2837e3e.jpg +0 -0
- package/kb/references/thumbs/97d90d1d85.jpg +0 -0
- package/kb/references/thumbs/97fcd5774a.jpg +0 -0
- package/kb/references/thumbs/980f68564e.jpg +0 -0
- package/kb/references/thumbs/98511fb393.jpg +0 -0
- package/kb/references/thumbs/98f8fa694d.jpg +0 -0
- package/kb/references/thumbs/9a42c6bb97.jpg +0 -0
- package/kb/references/thumbs/9ab3600a06.jpg +0 -0
- package/kb/references/thumbs/9ab48d9130.jpg +0 -0
- package/kb/references/thumbs/9ad519197d.jpg +0 -0
- package/kb/references/thumbs/9b1382c657.jpg +0 -0
- package/kb/references/thumbs/9b6cc1e077.jpg +0 -0
- package/kb/references/thumbs/9beede8480.jpg +0 -0
- package/kb/references/thumbs/9bf8976952.jpg +0 -0
- package/kb/references/thumbs/9cace7b75a.jpg +0 -0
- package/kb/references/thumbs/9cdcc5745e.jpg +0 -0
- package/kb/references/thumbs/9d0b269074.jpg +0 -0
- package/kb/references/thumbs/9d41788b48.jpg +0 -0
- package/kb/references/thumbs/9d475bd6af.jpg +0 -0
- package/kb/references/thumbs/9e6bc543d0.jpg +0 -0
- package/kb/references/thumbs/9ed0e0a206.jpg +0 -0
- package/kb/references/thumbs/9ef538de13.jpg +0 -0
- package/kb/references/thumbs/9efc373ab4.jpg +0 -0
- package/kb/references/thumbs/9f4a939fa5.jpg +0 -0
- package/kb/references/thumbs/9f8d12d7b9.jpg +0 -0
- package/kb/references/thumbs/9fd5e3efa7.jpg +0 -0
- package/kb/references/thumbs/a0a9b9c572.jpg +0 -0
- package/kb/references/thumbs/a29ca9b185.jpg +0 -0
- package/kb/references/thumbs/a2a42884af.jpg +0 -0
- package/kb/references/thumbs/a2f5064e34.jpg +0 -0
- package/kb/references/thumbs/a3112ce672.jpg +0 -0
- package/kb/references/thumbs/a3437736d1.jpg +0 -0
- package/kb/references/thumbs/a372667e76.jpg +0 -0
- package/kb/references/thumbs/a39bae94e9.jpg +0 -0
- package/kb/references/thumbs/a3fc75d94c.jpg +0 -0
- package/kb/references/thumbs/a440487631.jpg +0 -0
- package/kb/references/thumbs/a4993d5fb5.jpg +0 -0
- package/kb/references/thumbs/a500476a86.jpg +0 -0
- package/kb/references/thumbs/a55506bf46.jpg +0 -0
- package/kb/references/thumbs/a59a5f9843.jpg +0 -0
- package/kb/references/thumbs/a5bce0eede.jpg +0 -0
- package/kb/references/thumbs/a5d921e1f0.jpg +0 -0
- package/kb/references/thumbs/a5e19d4637.jpg +0 -0
- package/kb/references/thumbs/a5f92b97d5.jpg +0 -0
- package/kb/references/thumbs/a6562c210a.jpg +0 -0
- package/kb/references/thumbs/a6f61a8d09.jpg +0 -0
- package/kb/references/thumbs/a719fdf663.jpg +0 -0
- package/kb/references/thumbs/a724e5442f.jpg +0 -0
- package/kb/references/thumbs/a852b4319f.jpg +0 -0
- package/kb/references/thumbs/a896c08448.jpg +0 -0
- package/kb/references/thumbs/a8d190a4b8.jpg +0 -0
- package/kb/references/thumbs/a8dcdd57d7.jpg +0 -0
- package/kb/references/thumbs/a951347e18.jpg +0 -0
- package/kb/references/thumbs/a9a1a0bf7d.jpg +0 -0
- package/kb/references/thumbs/a9b72986a8.jpg +0 -0
- package/kb/references/thumbs/aa11555ba8.jpg +0 -0
- package/kb/references/thumbs/aa4aab9093.jpg +0 -0
- package/kb/references/thumbs/aa89b96658.jpg +0 -0
- package/kb/references/thumbs/aaeb3739b6.jpg +0 -0
- package/kb/references/thumbs/ab25a608ec.jpg +0 -0
- package/kb/references/thumbs/ab34b62268.jpg +0 -0
- package/kb/references/thumbs/ab3b0217bb.jpg +0 -0
- package/kb/references/thumbs/ac70c04afb.jpg +0 -0
- package/kb/references/thumbs/ace0879117.jpg +0 -0
- package/kb/references/thumbs/ad0515ae55.jpg +0 -0
- package/kb/references/thumbs/ad66b25b47.jpg +0 -0
- package/kb/references/thumbs/ad68229d2f.jpg +0 -0
- package/kb/references/thumbs/add6480693.jpg +0 -0
- package/kb/references/thumbs/ae5b8c3b8c.jpg +0 -0
- package/kb/references/thumbs/ae81247b47.jpg +0 -0
- package/kb/references/thumbs/af8aa54379.jpg +0 -0
- package/kb/references/thumbs/afa80dedd4.jpg +0 -0
- package/kb/references/thumbs/afe04d730f.jpg +0 -0
- package/kb/references/thumbs/b09a7dc315.jpg +0 -0
- package/kb/references/thumbs/b0c02629f6.jpg +0 -0
- package/kb/references/thumbs/b1cb4f91de.jpg +0 -0
- package/kb/references/thumbs/b1d4c13c92.jpg +0 -0
- package/kb/references/thumbs/b20eef86db.jpg +0 -0
- package/kb/references/thumbs/b3136ccdde.jpg +0 -0
- package/kb/references/thumbs/b3f5e8d7dd.jpg +0 -0
- package/kb/references/thumbs/b44adb81c9.jpg +0 -0
- package/kb/references/thumbs/b457a5894b.jpg +0 -0
- package/kb/references/thumbs/b461281e0f.jpg +0 -0
- package/kb/references/thumbs/b4942644f0.jpg +0 -0
- package/kb/references/thumbs/b49f8eccad.jpg +0 -0
- package/kb/references/thumbs/b56c69be23.jpg +0 -0
- package/kb/references/thumbs/b59786b33c.jpg +0 -0
- package/kb/references/thumbs/b5d368ce5a.jpg +0 -0
- package/kb/references/thumbs/b5eb442406.jpg +0 -0
- package/kb/references/thumbs/b7fdabf4ab.jpg +0 -0
- package/kb/references/thumbs/b88ee8d235.jpg +0 -0
- package/kb/references/thumbs/b8a4e5be8a.jpg +0 -0
- package/kb/references/thumbs/b8c85b661c.jpg +0 -0
- package/kb/references/thumbs/ba1b8e7435.jpg +0 -0
- package/kb/references/thumbs/ba9a593eed.jpg +0 -0
- package/kb/references/thumbs/baa7afc201.jpg +0 -0
- package/kb/references/thumbs/baf74398f7.jpg +0 -0
- package/kb/references/thumbs/bb3e947c10.jpg +0 -0
- package/kb/references/thumbs/bb4c1bb7c1.jpg +0 -0
- package/kb/references/thumbs/bbaa25cc8a.jpg +0 -0
- package/kb/references/thumbs/bc7e7f88cc.jpg +0 -0
- package/kb/references/thumbs/bc9d5b58f5.jpg +0 -0
- package/kb/references/thumbs/bcc99a51f7.jpg +0 -0
- package/kb/references/thumbs/bce13dd1c1.jpg +0 -0
- package/kb/references/thumbs/bd079a6130.jpg +0 -0
- package/kb/references/thumbs/bd2d70dda7.jpg +0 -0
- package/kb/references/thumbs/bd5895c5f2.jpg +0 -0
- package/kb/references/thumbs/bde8e31d62.jpg +0 -0
- package/kb/references/thumbs/be084e78f3.jpg +0 -0
- package/kb/references/thumbs/be94f170c8.jpg +0 -0
- package/kb/references/thumbs/bed33654f7.jpg +0 -0
- package/kb/references/thumbs/beeb9a0c18.jpg +0 -0
- package/kb/references/thumbs/bef42094dc.jpg +0 -0
- package/kb/references/thumbs/bf625496fa.jpg +0 -0
- package/kb/references/thumbs/bf771f1398.jpg +0 -0
- package/kb/references/thumbs/c0ddefa3d9.jpg +0 -0
- package/kb/references/thumbs/c0f01e536e.jpg +0 -0
- package/kb/references/thumbs/c1d592b678.jpg +0 -0
- package/kb/references/thumbs/c1e83e1b3e.jpg +0 -0
- package/kb/references/thumbs/c2168f8096.jpg +0 -0
- package/kb/references/thumbs/c249cd6b17.jpg +0 -0
- package/kb/references/thumbs/c2e3d4feed.jpg +0 -0
- package/kb/references/thumbs/c3cec01df1.jpg +0 -0
- package/kb/references/thumbs/c47bedb42d.jpg +0 -0
- package/kb/references/thumbs/c4b03b4680.jpg +0 -0
- package/kb/references/thumbs/c4e6d18ec3.jpg +0 -0
- package/kb/references/thumbs/c5477e2877.jpg +0 -0
- package/kb/references/thumbs/c566794674.jpg +0 -0
- package/kb/references/thumbs/c5b945afbb.jpg +0 -0
- package/kb/references/thumbs/c5e4659497.jpg +0 -0
- package/kb/references/thumbs/c622786702.jpg +0 -0
- package/kb/references/thumbs/c6250649ca.jpg +0 -0
- package/kb/references/thumbs/c6261a9526.jpg +0 -0
- package/kb/references/thumbs/c62e609076.jpg +0 -0
- package/kb/references/thumbs/c6602d3e85.jpg +0 -0
- package/kb/references/thumbs/c6c1a16e40.jpg +0 -0
- package/kb/references/thumbs/c77f932157.jpg +0 -0
- package/kb/references/thumbs/c79788f01e.jpg +0 -0
- package/kb/references/thumbs/c7a511ad1e.jpg +0 -0
- package/kb/references/thumbs/c7acfbc3c8.jpg +0 -0
- package/kb/references/thumbs/c7bb6d1bb8.jpg +0 -0
- package/kb/references/thumbs/c829eadcb9.jpg +0 -0
- package/kb/references/thumbs/c891fd9d85.jpg +0 -0
- package/kb/references/thumbs/c89f812ee3.jpg +0 -0
- package/kb/references/thumbs/c8a85b9f61.jpg +0 -0
- package/kb/references/thumbs/c8fdf85c9a.jpg +0 -0
- package/kb/references/thumbs/c961ac1031.jpg +0 -0
- package/kb/references/thumbs/c9fd3f88d8.jpg +0 -0
- package/kb/references/thumbs/ca0d6399c3.jpg +0 -0
- package/kb/references/thumbs/ca316c83e4.jpg +0 -0
- package/kb/references/thumbs/ca3b93aa0d.jpg +0 -0
- package/kb/references/thumbs/cb0596a85b.jpg +0 -0
- package/kb/references/thumbs/cb95a5c3ef.jpg +0 -0
- package/kb/references/thumbs/cbe238b656.jpg +0 -0
- package/kb/references/thumbs/cbf530e608.jpg +0 -0
- package/kb/references/thumbs/cc173494ec.jpg +0 -0
- package/kb/references/thumbs/ccb664bddf.jpg +0 -0
- package/kb/references/thumbs/ccf69d36cd.jpg +0 -0
- package/kb/references/thumbs/ccf759db42.jpg +0 -0
- package/kb/references/thumbs/cd2a285807.jpg +0 -0
- package/kb/references/thumbs/cd4a24a8ca.jpg +0 -0
- package/kb/references/thumbs/cdb3fe8938.jpg +0 -0
- package/kb/references/thumbs/cdce1b9bc6.jpg +0 -0
- package/kb/references/thumbs/cde3aa761a.jpg +0 -0
- package/kb/references/thumbs/ce9d5cd9c2.jpg +0 -0
- package/kb/references/thumbs/ceb01f8a34.jpg +0 -0
- package/kb/references/thumbs/cee15c98d0.jpg +0 -0
- package/kb/references/thumbs/cf6944ddae.jpg +0 -0
- package/kb/references/thumbs/d15dd21cd8.jpg +0 -0
- package/kb/references/thumbs/d1633bf2ed.jpg +0 -0
- package/kb/references/thumbs/d16a838000.jpg +0 -0
- package/kb/references/thumbs/d1cf87e9f0.jpg +0 -0
- package/kb/references/thumbs/d32511d913.jpg +0 -0
- package/kb/references/thumbs/d327e9dedd.jpg +0 -0
- package/kb/references/thumbs/d35bf6c85e.jpg +0 -0
- package/kb/references/thumbs/d37afc9d61.jpg +0 -0
- package/kb/references/thumbs/d3b66655c7.jpg +0 -0
- package/kb/references/thumbs/d40b4172b6.jpg +0 -0
- package/kb/references/thumbs/d4c40d1824.jpg +0 -0
- package/kb/references/thumbs/d4cb55a4b6.jpg +0 -0
- package/kb/references/thumbs/d4f0c30f7e.jpg +0 -0
- package/kb/references/thumbs/d51cce3ae5.jpg +0 -0
- package/kb/references/thumbs/d52948f9ba.jpg +0 -0
- package/kb/references/thumbs/d62bd3cba4.jpg +0 -0
- package/kb/references/thumbs/d668a21c92.jpg +0 -0
- package/kb/references/thumbs/d685072c52.jpg +0 -0
- package/kb/references/thumbs/d6d7b96093.jpg +0 -0
- package/kb/references/thumbs/d7cd874b21.jpg +0 -0
- package/kb/references/thumbs/d7e111736a.jpg +0 -0
- package/kb/references/thumbs/d88325f832.jpg +0 -0
- package/kb/references/thumbs/d9272ded76.jpg +0 -0
- package/kb/references/thumbs/d962e7c654.jpg +0 -0
- package/kb/references/thumbs/d97f000ee2.jpg +0 -0
- package/kb/references/thumbs/d9c1ae2543.jpg +0 -0
- package/kb/references/thumbs/d9ccb3cac8.jpg +0 -0
- package/kb/references/thumbs/da99019680.jpg +0 -0
- package/kb/references/thumbs/da9b8bc615.jpg +0 -0
- package/kb/references/thumbs/daafbee2c1.jpg +0 -0
- package/kb/references/thumbs/db0f11f143.jpg +0 -0
- package/kb/references/thumbs/db5dd367f5.jpg +0 -0
- package/kb/references/thumbs/db69677866.jpg +0 -0
- package/kb/references/thumbs/db87c1956e.jpg +0 -0
- package/kb/references/thumbs/dbb86d8bda.jpg +0 -0
- package/kb/references/thumbs/dbd3a8ff2a.jpg +0 -0
- package/kb/references/thumbs/dbdf4b2794.jpg +0 -0
- package/kb/references/thumbs/dd4c19b4b1.jpg +0 -0
- package/kb/references/thumbs/dd98d9f6fa.jpg +0 -0
- package/kb/references/thumbs/ddb00e3b6a.jpg +0 -0
- package/kb/references/thumbs/dde3541a5c.jpg +0 -0
- package/kb/references/thumbs/de2a4da502.jpg +0 -0
- package/kb/references/thumbs/de4c387a66.jpg +0 -0
- package/kb/references/thumbs/de5618fa82.jpg +0 -0
- package/kb/references/thumbs/de6bec2538.jpg +0 -0
- package/kb/references/thumbs/dea13cbb1f.jpg +0 -0
- package/kb/references/thumbs/deff9202aa.jpg +0 -0
- package/kb/references/thumbs/df12835f8d.jpg +0 -0
- package/kb/references/thumbs/df57acbb3d.jpg +0 -0
- package/kb/references/thumbs/df8265009e.jpg +0 -0
- package/kb/references/thumbs/dfc99a1e8e.jpg +0 -0
- package/kb/references/thumbs/dfc9fde460.jpg +0 -0
- package/kb/references/thumbs/e038348eee.jpg +0 -0
- package/kb/references/thumbs/e04c2ae1d5.jpg +0 -0
- package/kb/references/thumbs/e070345c43.jpg +0 -0
- package/kb/references/thumbs/e0a0c84d47.jpg +0 -0
- package/kb/references/thumbs/e0af1e6b9e.jpg +0 -0
- package/kb/references/thumbs/e1025942c4.jpg +0 -0
- package/kb/references/thumbs/e11b6f5b82.jpg +0 -0
- package/kb/references/thumbs/e1553de3fc.jpg +0 -0
- package/kb/references/thumbs/e162ebe7cd.jpg +0 -0
- package/kb/references/thumbs/e1f1e531d8.jpg +0 -0
- package/kb/references/thumbs/e20842e5c9.jpg +0 -0
- package/kb/references/thumbs/e24e7d949b.jpg +0 -0
- package/kb/references/thumbs/e2a3e5d10a.jpg +0 -0
- package/kb/references/thumbs/e2de02615a.jpg +0 -0
- package/kb/references/thumbs/e305dad7dd.jpg +0 -0
- package/kb/references/thumbs/e52e3ef97f.jpg +0 -0
- package/kb/references/thumbs/e570e92d06.jpg +0 -0
- package/kb/references/thumbs/e583932fb9.jpg +0 -0
- package/kb/references/thumbs/e5da3c038f.jpg +0 -0
- package/kb/references/thumbs/e657634af3.jpg +0 -0
- package/kb/references/thumbs/e67946e3e1.jpg +0 -0
- package/kb/references/thumbs/e69e0f3639.jpg +0 -0
- package/kb/references/thumbs/e6ebe66031.jpg +0 -0
- package/kb/references/thumbs/e7db9563c9.jpg +0 -0
- package/kb/references/thumbs/e84a4c3b7b.jpg +0 -0
- package/kb/references/thumbs/e84cf52c27.jpg +0 -0
- package/kb/references/thumbs/e8707cf6e8.jpg +0 -0
- package/kb/references/thumbs/e888890b40.jpg +0 -0
- package/kb/references/thumbs/e8a502b418.jpg +0 -0
- package/kb/references/thumbs/e8ba68371d.jpg +0 -0
- package/kb/references/thumbs/e9098f54cc.jpg +0 -0
- package/kb/references/thumbs/e9144deae9.jpg +0 -0
- package/kb/references/thumbs/e93e98d757.jpg +0 -0
- package/kb/references/thumbs/e9762dd435.jpg +0 -0
- package/kb/references/thumbs/e9db4544c8.jpg +0 -0
- package/kb/references/thumbs/e9ddffeacd.jpg +0 -0
- package/kb/references/thumbs/e9e2cf1d7e.jpg +0 -0
- package/kb/references/thumbs/ea1e23e623.jpg +0 -0
- package/kb/references/thumbs/ea41200f5e.jpg +0 -0
- package/kb/references/thumbs/eaf4916e1a.jpg +0 -0
- package/kb/references/thumbs/eb2c505fc8.jpg +0 -0
- package/kb/references/thumbs/eb47943693.jpg +0 -0
- package/kb/references/thumbs/eb4ffd6625.jpg +0 -0
- package/kb/references/thumbs/eb82ac0a4d.jpg +0 -0
- package/kb/references/thumbs/ebeb345ade.jpg +0 -0
- package/kb/references/thumbs/ec4e2aba0a.jpg +0 -0
- package/kb/references/thumbs/ed683bc9f7.jpg +0 -0
- package/kb/references/thumbs/ed9e236a84.jpg +0 -0
- package/kb/references/thumbs/ee45e1caea.jpg +0 -0
- package/kb/references/thumbs/ee50bbf2e7.jpg +0 -0
- package/kb/references/thumbs/eed6ad3b7b.jpg +0 -0
- package/kb/references/thumbs/eee247fd70.jpg +0 -0
- package/kb/references/thumbs/ef87b6cb99.jpg +0 -0
- package/kb/references/thumbs/ef87dccf04.jpg +0 -0
- package/kb/references/thumbs/ef941bba1e.jpg +0 -0
- package/kb/references/thumbs/effc14fb2c.jpg +0 -0
- package/kb/references/thumbs/f04aa5a191.jpg +0 -0
- package/kb/references/thumbs/f13f12485f.jpg +0 -0
- package/kb/references/thumbs/f16a5c0fd4.jpg +0 -0
- package/kb/references/thumbs/f1ba7a7a8f.jpg +0 -0
- package/kb/references/thumbs/f1bc4c9c19.jpg +0 -0
- package/kb/references/thumbs/f1ee827878.jpg +0 -0
- package/kb/references/thumbs/f21736aeff.jpg +0 -0
- package/kb/references/thumbs/f22bc41213.jpg +0 -0
- package/kb/references/thumbs/f266aaffcc.jpg +0 -0
- package/kb/references/thumbs/f2c0ed0d65.jpg +0 -0
- package/kb/references/thumbs/f32ac710fd.jpg +0 -0
- package/kb/references/thumbs/f32b697ff6.jpg +0 -0
- package/kb/references/thumbs/f39c883904.jpg +0 -0
- package/kb/references/thumbs/f3b9d55e6e.jpg +0 -0
- package/kb/references/thumbs/f3c1763e14.jpg +0 -0
- package/kb/references/thumbs/f40853fd43.jpg +0 -0
- package/kb/references/thumbs/f4fd07dc4d.jpg +0 -0
- package/kb/references/thumbs/f50b756ee5.jpg +0 -0
- package/kb/references/thumbs/f51272e9b3.jpg +0 -0
- package/kb/references/thumbs/f538895eee.jpg +0 -0
- package/kb/references/thumbs/f5d28081b5.jpg +0 -0
- package/kb/references/thumbs/f6046c9501.jpg +0 -0
- package/kb/references/thumbs/f62e4af316.jpg +0 -0
- package/kb/references/thumbs/f6f6bffeb8.jpg +0 -0
- package/kb/references/thumbs/f736e00af6.jpg +0 -0
- package/kb/references/thumbs/f7932da47d.jpg +0 -0
- package/kb/references/thumbs/f879e118ca.jpg +0 -0
- package/kb/references/thumbs/f88257215d.jpg +0 -0
- package/kb/references/thumbs/f88c45a6d7.jpg +0 -0
- package/kb/references/thumbs/f89a7b646e.jpg +0 -0
- package/kb/references/thumbs/f8a1e7a274.jpg +0 -0
- package/kb/references/thumbs/f9183cf2b6.jpg +0 -0
- package/kb/references/thumbs/f995de5ce9.jpg +0 -0
- package/kb/references/thumbs/f9ada2c3e1.jpg +0 -0
- package/kb/references/thumbs/f9d4616f89.jpg +0 -0
- package/kb/references/thumbs/f9f4307bb0.jpg +0 -0
- package/kb/references/thumbs/fa070122c7.jpg +0 -0
- package/kb/references/thumbs/fa29cc1369.jpg +0 -0
- package/kb/references/thumbs/fa791a4dab.jpg +0 -0
- package/kb/references/thumbs/fa8060509e.jpg +0 -0
- package/kb/references/thumbs/fafeed4003.jpg +0 -0
- package/kb/references/thumbs/fb1c024f38.jpg +0 -0
- package/kb/references/thumbs/fb77aa28b3.jpg +0 -0
- package/kb/references/thumbs/fb9f7f1966.jpg +0 -0
- package/kb/references/thumbs/fba8a8c2da.jpg +0 -0
- package/kb/references/thumbs/fce2754c36.jpg +0 -0
- package/kb/references/thumbs/fce2fb83df.jpg +0 -0
- package/kb/references/thumbs/fd4c51bb47.jpg +0 -0
- package/kb/references/thumbs/fd8c269817.jpg +0 -0
- package/kb/references/thumbs/fdb7b250ca.jpg +0 -0
- package/kb/references/thumbs/fe18088de8.jpg +0 -0
- package/kb/references/thumbs/fe4f742ba7.jpg +0 -0
- package/kb/references/thumbs/fe64742ce7.jpg +0 -0
- package/kb/references/thumbs/feb5d62161.jpg +0 -0
- package/kb/references/thumbs/fed21b3e98.jpg +0 -0
- package/kb/references/thumbs/fed2205951.jpg +0 -0
- package/kb/references/thumbs/ffdacf1715.jpg +0 -0
- package/kb/sections/_buttons.md +93 -0
- package/kb/sections/_finish.md +325 -0
- package/kb/sections/about-founder-note.md +85 -0
- package/kb/sections/about-team-roster.md +86 -0
- package/kb/sections/alternating-rows-live-tiles.md +110 -0
- package/kb/sections/annotated-product-shot.md +105 -0
- package/kb/sections/asymmetric-bento-dominant.md +114 -0
- package/kb/sections/before-after-features.md +104 -0
- package/kb/sections/before-after-repair.md +107 -0
- package/kb/sections/bento-lead-tile.md +112 -0
- package/kb/sections/book-a-slot-honest.md +116 -0
- package/kb/sections/capability-prompt-ledger.md +68 -0
- package/kb/sections/case-study-band.md +113 -0
- package/kb/sections/centred-stack-hero.md +107 -0
- package/kb/sections/closing-demo-final-state.md +81 -0
- package/kb/sections/closing-full-bleed-line-and-form.md +86 -0
- package/kb/sections/closing-result-previewed.md +88 -0
- package/kb/sections/closing-three-real-steps.md +87 -0
- package/kb/sections/command-reference-table.md +70 -0
- package/kb/sections/comparison-old-way-bars.md +88 -0
- package/kb/sections/comparison-same-task-two-ways.md +88 -0
- package/kb/sections/day-of-the-place.md +102 -0
- package/kb/sections/docs-reading-rail.md +88 -0
- package/kb/sections/editorial-columns-hero.md +107 -0
- package/kb/sections/editorial-essay-pull-quote.md +112 -0
- package/kb/sections/events-calendar-list.md +107 -0
- package/kb/sections/explorable-control-demo.md +102 -0
- package/kb/sections/faq-open-answers-editorial.md +85 -0
- package/kb/sections/faq-ruled-accordion-aside.md +87 -0
- package/kb/sections/footer-closing-scene.md +84 -0
- package/kb/sections/footer-editorial-sitemap.md +85 -0
- package/kb/sections/footer-minimal-credits.md +80 -0
- package/kb/sections/full-bleed-image-band.md +103 -0
- package/kb/sections/full-bleed-image-hero.md +105 -0
- package/kb/sections/gallery-first-hero.md +109 -0
- package/kb/sections/horizontal-scroll-strip.md +101 -0
- package/kb/sections/how-i-work-own-voice.md +111 -0
- package/kb/sections/how-it-works-in-place.md +109 -0
- package/kb/sections/impact-numbers-sourced.md +109 -0
- package/kb/sections/install-steps-per-agent.md +77 -0
- package/kb/sections/masonry-real-work.md +109 -0
- package/kb/sections/numbered-editorial-columns.md +105 -0
- package/kb/sections/object-first-hero.md +106 -0
- package/kb/sections/object-timeline.md +105 -0
- package/kb/sections/one-huge-number.md +100 -0
- package/kb/sections/one-person-story.md +103 -0
- package/kb/sections/order-ahead-ticket.md +119 -0
- package/kb/sections/press-strip-quoted.md +106 -0
- package/kb/sections/pricing-comparison-table-sticky.md +94 -0
- package/kb/sections/pricing-free-pro-upgrade-moment.md +85 -0
- package/kb/sections/pricing-plan-beside-product.md +88 -0
- package/kb/sections/pricing-plans-ledger.md +94 -0
- package/kb/sections/pricing-usage-calculator.md +93 -0
- package/kb/sections/printed-menu-card.md +110 -0
- package/kb/sections/process-happening.md +102 -0
- package/kb/sections/project-index-ruled.md +106 -0
- package/kb/sections/proof-logo-cloud-with-reasons.md +82 -0
- package/kb/sections/proof-measured-numbers.md +88 -0
- package/kb/sections/proof-output-wall.md +84 -0
- package/kb/sections/proof-single-honest-quote.md +81 -0
- package/kb/sections/resources-searchable-list.md +110 -0
- package/kb/sections/rooms-and-rates.md +107 -0
- package/kb/sections/ruled-facts-table.md +108 -0
- package/kb/sections/ruled-list-pinned-visual.md +107 -0
- package/kb/sections/scroll-scrubbed-product-demo.md +103 -0
- package/kb/sections/self-playing-run-demo.md +104 -0
- package/kb/sections/services-price-ledger.md +106 -0
- package/kb/sections/signup-form-with-next-steps.md +86 -0
- package/kb/sections/signup-waitlist-place-in-line.md +90 -0
- package/kb/sections/spec-sheet-features.md +108 -0
- package/kb/sections/split-hero-live-object.md +108 -0
- package/kb/sections/sticky-feature-narrative.md +104 -0
- package/kb/sections/todays-board-hero.md +112 -0
- package/kb/sections/touchable-tool-hero.md +111 -0
- package/kb/sections/typographic-statement-hero.md +99 -0
- package/kb/sections/visit-hours-map.md +110 -0
- package/kb/sections/ways-to-help-honest.md +115 -0
- package/kb/sources/design-reference.md +991 -0
- package/kb/sources/product-and-docs.md +37 -0
- package/kb/systems/1win/DESIGN.md +463 -0
- package/kb/systems/LICENSE-awesome-design-md +21 -0
- package/kb/systems/README.md +7 -0
- package/kb/systems/airbnb/DESIGN.md +545 -0
- package/kb/systems/airtable/DESIGN.md +554 -0
- package/kb/systems/aljazeera/DESIGN.md +594 -0
- package/kb/systems/apple/DESIGN.md +562 -0
- package/kb/systems/binance/DESIGN.md +634 -0
- package/kb/systems/bmw/DESIGN.md +544 -0
- package/kb/systems/bmw-m/DESIGN.md +503 -0
- package/kb/systems/bugatti/DESIGN.md +454 -0
- package/kb/systems/cal/DESIGN.md +542 -0
- package/kb/systems/categories.json +87 -0
- package/kb/systems/claude/DESIGN.md +589 -0
- package/kb/systems/clay/DESIGN.md +541 -0
- package/kb/systems/clickhouse/DESIGN.md +544 -0
- package/kb/systems/cohere/DESIGN.md +451 -0
- package/kb/systems/coinbase/DESIGN.md +570 -0
- package/kb/systems/composio/DESIGN.md +506 -0
- package/kb/systems/cursor/DESIGN.md +537 -0
- package/kb/systems/dell-1996/DESIGN.md +632 -0
- package/kb/systems/dji/DESIGN.md +882 -0
- package/kb/systems/elevenlabs/DESIGN.md +504 -0
- package/kb/systems/expo/DESIGN.md +526 -0
- package/kb/systems/ferrari/DESIGN.md +531 -0
- package/kb/systems/figma/DESIGN.md +578 -0
- package/kb/systems/framer/DESIGN.md +544 -0
- package/kb/systems/hashicorp/DESIGN.md +575 -0
- package/kb/systems/hp/DESIGN.md +670 -0
- package/kb/systems/ibm/DESIGN.md +550 -0
- package/kb/systems/intercom/DESIGN.md +546 -0
- package/kb/systems/jobright/DESIGN.md +525 -0
- package/kb/systems/kraken/DESIGN.md +125 -0
- package/kb/systems/lamborghini/DESIGN.md +288 -0
- package/kb/systems/linear.app/DESIGN.md +548 -0
- package/kb/systems/lovable/DESIGN.md +298 -0
- package/kb/systems/mastercard/DESIGN.md +365 -0
- package/kb/systems/mercury/DESIGN.md +568 -0
- package/kb/systems/meta/DESIGN.md +683 -0
- package/kb/systems/minimax/DESIGN.md +746 -0
- package/kb/systems/mintlify/DESIGN.md +852 -0
- package/kb/systems/miro/DESIGN.md +825 -0
- package/kb/systems/mistral.ai/DESIGN.md +773 -0
- package/kb/systems/mongodb/DESIGN.md +767 -0
- package/kb/systems/mydealz/DESIGN.md +551 -0
- package/kb/systems/nerdwallet/DESIGN.md +722 -0
- package/kb/systems/nike/DESIGN.md +575 -0
- package/kb/systems/nintendo-2001/DESIGN.md +649 -0
- package/kb/systems/notion/DESIGN.md +821 -0
- package/kb/systems/nvidia/DESIGN.md +640 -0
- package/kb/systems/ollama/DESIGN.md +539 -0
- package/kb/systems/opencode.ai/DESIGN.md +521 -0
- package/kb/systems/oracle/DESIGN.md +778 -0
- package/kb/systems/oura/DESIGN.md +616 -0
- package/kb/systems/pinterest/DESIGN.md +597 -0
- package/kb/systems/playstation/DESIGN.md +661 -0
- package/kb/systems/posthog/DESIGN.md +690 -0
- package/kb/systems/raycast/DESIGN.md +669 -0
- package/kb/systems/renault/DESIGN.md +589 -0
- package/kb/systems/replicate/DESIGN.md +616 -0
- package/kb/systems/resend/DESIGN.md +585 -0
- package/kb/systems/revolut/DESIGN.md +636 -0
- package/kb/systems/runwayml/DESIGN.md +244 -0
- package/kb/systems/sanity/DESIGN.md +357 -0
- package/kb/systems/sap/DESIGN.md +639 -0
- package/kb/systems/sentry/DESIGN.md +551 -0
- package/kb/systems/shopify/DESIGN.md +516 -0
- package/kb/systems/slack/DESIGN.md +482 -0
- package/kb/systems/spacex/DESIGN.md +363 -0
- package/kb/systems/spotify/DESIGN.md +246 -0
- package/kb/systems/starbucks/DESIGN.md +580 -0
- package/kb/systems/stripe/DESIGN.md +487 -0
- package/kb/systems/supabase/DESIGN.md +462 -0
- package/kb/systems/superhuman/DESIGN.md +448 -0
- package/kb/systems/tesla/DESIGN.md +286 -0
- package/kb/systems/theverge/DESIGN.md +339 -0
- package/kb/systems/together.ai/DESIGN.md +633 -0
- package/kb/systems/uber/DESIGN.md +636 -0
- package/kb/systems/vercel/DESIGN.md +736 -0
- package/kb/systems/vodafone/DESIGN.md +538 -0
- package/kb/systems/voltagent/DESIGN.md +521 -0
- package/kb/systems/warp/DESIGN.md +526 -0
- package/kb/systems/webflow/DESIGN.md +588 -0
- package/kb/systems/wired/DESIGN.md +497 -0
- package/kb/systems/wise/DESIGN.md +544 -0
- package/kb/systems/x.ai/DESIGN.md +465 -0
- package/kb/systems/zapier/DESIGN.md +537 -0
- package/kb/taste/garvit-by-job.md +46 -0
- package/kb/taste/garvit-portfolio.md +94 -0
- package/kb/universal/color-roles.md +26 -0
- package/kb/universal/copy.md +16 -0
- package/kb/universal/details.md +31 -0
- package/kb/universal/first-screen.md +30 -0
- package/kb/universal/fit-the-codebase.md +29 -0
- package/kb/universal/layout-width.md +28 -0
- package/kb/universal/motion-feedback.md +23 -0
- package/kb/universal/signature.md +29 -0
- package/kb/universal/states.md +17 -0
- package/kb/universal/type-app.md +33 -0
- package/kb/universal/type-marketing.md +28 -0
- package/package.json +36 -4
- package/scripts/pack-assets.mjs +48 -0
- package/skill/palate/SKILL.md +261 -0
- package/src/auth-recheck.mjs +4 -0
- package/src/auth.mjs +416 -0
- package/src/capture.mjs +182 -0
- package/src/catalog/classify.mjs +96 -0
- package/src/catalog/curated.mjs +128 -0
- package/src/catalog/index-build.mjs +67 -0
- package/src/catalog/literal.mjs +146 -0
- package/src/catalog/store.mjs +40 -0
- package/src/catalog/vibrant.mjs +126 -0
- package/src/check.mjs +93 -0
- package/src/concept.mjs +157 -0
- package/src/context.mjs +226 -0
- package/src/copy.mjs +188 -0
- package/src/devserver.mjs +135 -0
- package/src/fontgenre.mjs +44 -0
- package/src/guard-agents.mjs +213 -0
- package/src/guard.mjs +377 -0
- package/src/kb.mjs +91 -0
- package/src/look.mjs +312 -0
- package/src/loop/ambition.mjs +620 -0
- package/src/loop/animate.mjs +70 -0
- package/src/loop/artdirection.mjs +264 -0
- package/src/loop/bench.mjs +184 -0
- package/src/loop/benchpick.mjs +155 -0
- package/src/loop/blueprint.mjs +620 -0
- package/src/loop/board.html +180 -0
- package/src/loop/build.mjs +393 -0
- package/src/loop/buttons.mjs +413 -0
- package/src/loop/common.mjs +206 -0
- package/src/loop/cost.mjs +63 -0
- package/src/loop/craft.mjs +152 -0
- package/src/loop/craftchecks.mjs +148 -0
- package/src/loop/critique.mjs +393 -0
- package/src/loop/details.mjs +225 -0
- package/src/loop/direction.html +168 -0
- package/src/loop/direction.mjs +256 -0
- package/src/loop/directions.json +8 -0
- package/src/loop/explore.mjs +219 -0
- package/src/loop/fail.mjs +110 -0
- package/src/loop/fix.mjs +194 -0
- package/src/loop/floor.mjs +677 -0
- package/src/loop/forget.mjs +52 -0
- package/src/loop/gate.mjs +1053 -0
- package/src/loop/grid.html +123 -0
- package/src/loop/growth.mjs +118 -0
- package/src/loop/icons.mjs +109 -0
- package/src/loop/imagery.mjs +1280 -0
- package/src/loop/judge-api.mjs +245 -0
- package/src/loop/judge.mjs +167 -0
- package/src/loop/layouts.mjs +492 -0
- package/src/loop/library.mjs +82 -0
- package/src/loop/lookplan.mjs +182 -0
- package/src/loop/lookvec.mjs +645 -0
- package/src/loop/match.mjs +923 -0
- package/src/loop/matched.mjs +26 -0
- package/src/loop/myrefs.mjs +151 -0
- package/src/loop/pick.mjs +213 -0
- package/src/loop/picker.html +118 -0
- package/src/loop/plan.mjs +289 -0
- package/src/loop/polish.mjs +39 -0
- package/src/loop/research-learn.mjs +41 -0
- package/src/loop/research.mjs +1130 -0
- package/src/loop/rulereview.mjs +146 -0
- package/src/loop/rules-board.html +199 -0
- package/src/loop/rules.mjs +939 -0
- package/src/loop/similar.mjs +276 -0
- package/src/loop/states-source.mjs +258 -0
- package/src/loop/states.mjs +1547 -0
- package/src/loop/stats.mjs +78 -0
- package/src/loop/taste.mjs +81 -0
- package/src/loop/timeline.mjs +149 -0
- package/src/loop/variants.mjs +228 -0
- package/src/loop/vary.mjs +249 -0
- package/src/mcp/server.mjs +1246 -0
- package/src/motion.mjs +207 -0
- package/src/moves.mjs +242 -0
- package/src/novelty.mjs +116 -0
- package/src/page-ambition.js +181 -0
- package/src/page-craft.js +724 -0
- package/src/page-details.js +415 -0
- package/src/page-devices.js +365 -0
- package/src/page-fingerprint.js +281 -0
- package/src/page-gate.js +1307 -0
- package/src/page-look.js +698 -0
- package/src/page-metrics.js +78 -0
- package/src/page-principles.js +1167 -0
- package/src/page-rules.js +308 -0
- package/src/page-sections.js +211 -0
- package/src/page-states.js +703 -0
- package/src/paths.mjs +13 -0
- package/src/png.mjs +107 -0
- package/src/point/auto.mjs +224 -0
- package/src/point/locate.mjs +114 -0
- package/src/point/overlay.js +1516 -0
- package/src/point/server.mjs +1122 -0
- package/src/point/trail.mjs +219 -0
- package/src/pool.mjs +80 -0
- package/src/principles.mjs +279 -0
- package/src/refs.mjs +299 -0
- package/src/robots.mjs +145 -0
- package/src/sections.mjs +210 -0
- package/src/shoot.mjs +235 -0
- package/src/systems/apply.mjs +355 -0
- package/src/systems/load.mjs +251 -0
- package/src/systems/pick.mjs +213 -0
- package/templates/vite-react-tw/index.html +12 -0
- package/templates/vite-react-tw/package.json +25 -0
- package/templates/vite-react-tw/src/App.tsx +3 -0
- package/templates/vite-react-tw/src/index.css +1 -0
- package/templates/vite-react-tw/src/main.tsx +10 -0
- package/templates/vite-react-tw/tsconfig.app.json +26 -0
- package/templates/vite-react-tw/tsconfig.json +7 -0
- package/templates/vite-react-tw/tsconfig.node.json +23 -0
- package/templates/vite-react-tw/vite.config.ts +8 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"about": "palate's own short list of well-crafted public product sites: links with palate's own tags and one-line notes, nothing else. palate ships no screenshots, code, copy, images or fonts from these sites. `palate research` looks at a few of them live, on the user's machine, only when the user asks for a design (robots.txt respected, a few seconds between pages, nothing uploaded). Tags: kind (which page), mood, industry. The list grows on each user's machine as they run research (~/.palate/research/inspiration.json).",
|
|
3
|
+
"browse": [
|
|
4
|
+
{ "url": "https://godly.website", "name": "Godly", "note": "A gallery for a human to browse by hand. palate never scrapes it or copies its collection." },
|
|
5
|
+
{ "url": "https://land-book.com", "name": "Land-book", "note": "A gallery for a human to browse by hand. palate never scrapes it or copies its collection." },
|
|
6
|
+
{ "url": "https://www.siteinspire.com", "name": "SiteInspire", "note": "A gallery for a human to browse by hand. palate never scrapes it or copies its collection." },
|
|
7
|
+
{ "url": "https://www.awwwards.com", "name": "Awwwards", "note": "A gallery for a human to browse by hand. palate never scrapes it or copies its collection." },
|
|
8
|
+
{ "url": "https://www.lapa.ninja", "name": "Lapa Ninja", "note": "A gallery for a human to browse by hand. palate never scrapes it or copies its collection." },
|
|
9
|
+
{ "url": "https://minimal.gallery", "name": "Minimal Gallery", "note": "A gallery for a human to browse by hand. palate never scrapes it or copies its collection." }
|
|
10
|
+
],
|
|
11
|
+
"sites": [
|
|
12
|
+
{ "url": "https://front.com", "name": "Front", "kind": ["landing"], "mood": ["confident", "dense", "corporate"], "industry": ["shared-inbox", "email", "support", "customer-service"], "note": "The category leader for shared inboxes; sells to larger teams with product proof and customer logos." },
|
|
13
|
+
{ "url": "https://missiveapp.com", "name": "Missive", "kind": ["landing"], "mood": ["friendly", "crafted", "light"], "industry": ["shared-inbox", "email", "collaboration"], "note": "Shared inbox and team chat in one app; a smaller, friendlier voice than the enterprise players." },
|
|
14
|
+
{ "url": "https://www.helpscout.com", "name": "Help Scout", "kind": ["landing"], "mood": ["warm", "human", "friendly"], "industry": ["shared-inbox", "support", "customer-service"], "note": "Support inbox with a warm, human tone; leans on people and plain language rather than tech." },
|
|
15
|
+
{ "url": "https://hiverhq.com", "name": "Hiver", "kind": ["landing"], "mood": ["corporate", "dense"], "industry": ["shared-inbox", "email", "support"], "note": "Shared inbox that lives inside Gmail; a typical B2B SaaS landing structure." },
|
|
16
|
+
{ "url": "https://www.intercom.com", "name": "Intercom", "kind": ["landing"], "mood": ["bold", "premium", "technical"], "industry": ["support", "customer-service", "ai"], "note": "Support platform with a confident, high-production marketing site." },
|
|
17
|
+
{ "url": "https://superhuman.com", "name": "Superhuman", "kind": ["landing"], "mood": ["premium", "precise", "dark", "fast"], "industry": ["email", "productivity"], "note": "Email client sold on speed; premium, restrained and very sure of itself." },
|
|
18
|
+
{ "url": "https://www.hey.com", "name": "HEY", "kind": ["landing"], "mood": ["opinionated", "playful", "editorial", "warm"], "industry": ["email", "productivity"], "note": "Email with a strong opinion; long, argued copy and hand-drawn warmth instead of feature grids." },
|
|
19
|
+
{ "url": "https://basecamp.com", "name": "Basecamp", "kind": ["landing"], "mood": ["opinionated", "calm", "warm", "editorial"], "industry": ["project-management", "collaboration"], "note": "Calm project management argued in plain words; personality from writing, not decoration." },
|
|
20
|
+
{ "url": "https://culturedcode.com/things/", "name": "Things", "kind": ["landing", "product"], "mood": ["calm", "crafted", "quiet", "premium"], "industry": ["productivity", "tasks"], "note": "A to-do app presented like a well-made object; quiet, careful, lets the product breathe." },
|
|
21
|
+
{ "url": "https://bear.app", "name": "Bear", "kind": ["landing"], "mood": ["calm", "friendly", "crafted"], "industry": ["notes", "writing"], "note": "Notes app with a calm, friendly page and a single warm accent." },
|
|
22
|
+
{ "url": "https://ia.net/writer", "name": "iA Writer", "kind": ["product"], "mood": ["editorial", "minimal", "quiet", "typographic"], "industry": ["writing"], "note": "Typography is the product and the page; reads like a well-set essay." },
|
|
23
|
+
{ "url": "https://www.are.na", "name": "Are.na", "kind": ["landing"], "mood": ["calm", "minimal", "quiet", "opinionated"], "industry": ["research", "creative", "collaboration"], "note": "A calm, anti-feed tool for collecting ideas; plain and deliberately unflashy." },
|
|
24
|
+
{ "url": "https://mymind.com", "name": "mymind", "kind": ["landing"], "mood": ["calm", "premium", "editorial", "crafted"], "industry": ["notes", "research", "productivity"], "note": "Private memory app with a serene, editorial presentation and a clear stance." },
|
|
25
|
+
{ "url": "https://readwise.io/read", "name": "Readwise Reader", "kind": ["product"], "mood": ["calm", "technical", "dense"], "industry": ["reading", "productivity"], "note": "Reading app that shows real product states and explains workflows clearly." },
|
|
26
|
+
{ "url": "https://linear.app", "name": "Linear", "kind": ["landing"], "mood": ["precise", "dark", "premium", "technical"], "industry": ["project-management", "dev-tools"], "note": "Precise and dark; the product UI carries the page and every detail is tuned." },
|
|
27
|
+
{ "url": "https://linear.app/changelog", "name": "Linear changelog", "kind": ["changelog"], "mood": ["precise", "editorial"], "industry": ["project-management", "dev-tools"], "note": "A changelog that doubles as proof of a team's pace and care." },
|
|
28
|
+
{ "url": "https://stripe.com", "name": "Stripe", "kind": ["landing"], "mood": ["premium", "technical", "bold", "crafted"], "industry": ["payments", "finance", "dev-tools"], "note": "High craft across type, motion and diagrams; dense information made easy to scan." },
|
|
29
|
+
{ "url": "https://stripe.com/pricing", "name": "Stripe pricing", "kind": ["pricing"], "mood": ["technical", "precise"], "industry": ["payments", "finance"], "note": "Pricing explained as plain numbers with the detail one click deeper." },
|
|
30
|
+
{ "url": "https://vercel.com", "name": "Vercel", "kind": ["landing"], "mood": ["technical", "dark", "minimal", "precise"], "industry": ["dev-tools", "infrastructure"], "note": "Monochrome, grid-driven developer marketing with sharp hierarchy." },
|
|
31
|
+
{ "url": "https://www.raycast.com", "name": "Raycast", "kind": ["landing"], "mood": ["dark", "crafted", "playful", "premium"], "industry": ["productivity", "dev-tools"], "note": "Launcher app with crafted dark visuals and keyboard-first storytelling." },
|
|
32
|
+
{ "url": "https://arc.net", "name": "Arc", "kind": ["landing"], "mood": ["playful", "warm", "bold", "crafted"], "industry": ["browser"], "note": "A browser sold with colour, warmth and personality rather than specs." },
|
|
33
|
+
{ "url": "https://www.notion.com", "name": "Notion", "kind": ["landing"], "mood": ["friendly", "illustrated", "light"], "industry": ["notes", "docs", "productivity"], "note": "Friendly, illustrated, light; a broad product explained in simple blocks." },
|
|
34
|
+
{ "url": "https://www.figma.com", "name": "Figma", "kind": ["landing"], "mood": ["bold", "playful", "colourful"], "industry": ["design-tools", "creative", "collaboration"], "note": "Design tool with bold colour and playful energy aimed at makers." },
|
|
35
|
+
{ "url": "https://www.framer.com", "name": "Framer", "kind": ["landing"], "mood": ["dark", "bold", "premium"], "industry": ["design-tools", "creative"], "note": "Website builder that shows off motion and high production values." },
|
|
36
|
+
{ "url": "https://www.tldraw.com", "name": "tldraw", "kind": ["landing"], "mood": ["playful", "minimal", "hand-drawn"], "industry": ["design-tools", "collaboration"], "note": "A whiteboard whose own hand-drawn style becomes the brand." },
|
|
37
|
+
{ "url": "https://pitch.com", "name": "Pitch", "kind": ["landing"], "mood": ["bold", "colourful", "premium"], "industry": ["presentation", "collaboration"], "note": "Presentation software with a confident, colourful, editorial feel." },
|
|
38
|
+
{ "url": "https://www.loom.com", "name": "Loom", "kind": ["landing"], "mood": ["friendly", "light"], "industry": ["video", "collaboration"], "note": "Async video; friendly B2B marketing with clear product shots." },
|
|
39
|
+
{ "url": "https://cal.com", "name": "Cal.com", "kind": ["landing"], "mood": ["minimal", "light", "technical"], "industry": ["scheduling"], "note": "Scheduling with a clean, light, monochrome page and a live booking widget." },
|
|
40
|
+
{ "url": "https://plane.so", "name": "Plane", "kind": ["landing"], "mood": ["technical", "light"], "industry": ["project-management"], "note": "Open-source project tool; a typical modern product-led landing." },
|
|
41
|
+
{ "url": "https://resend.com", "name": "Resend", "kind": ["landing"], "mood": ["dark", "minimal", "crafted", "technical"], "industry": ["email", "dev-tools"], "note": "Email API with a quiet dark page, a little 3D craft and code as proof." },
|
|
42
|
+
{ "url": "https://supabase.com", "name": "Supabase", "kind": ["landing"], "mood": ["dark", "technical"], "industry": ["dev-tools", "infrastructure"], "note": "Developer platform; dark, green-accented, code-forward." },
|
|
43
|
+
{ "url": "https://posthog.com", "name": "PostHog", "kind": ["landing"], "mood": ["playful", "opinionated", "illustrated", "dense"], "industry": ["analytics", "dev-tools"], "note": "Breaks SaaS conventions on purpose: humour, density and a strong voice." },
|
|
44
|
+
{ "url": "https://clerk.com", "name": "Clerk", "kind": ["landing"], "mood": ["crafted", "technical", "light"], "industry": ["dev-tools", "security"], "note": "Auth components shown as real, interactive UI pieces." },
|
|
45
|
+
{ "url": "https://mercury.com", "name": "Mercury", "kind": ["landing"], "mood": ["calm", "premium", "quiet"], "industry": ["banking", "finance"], "note": "Banking presented with calm, premium restraint and atmospheric imagery." },
|
|
46
|
+
{ "url": "https://ramp.com", "name": "Ramp", "kind": ["landing"], "mood": ["bold", "confident"], "industry": ["finance"], "note": "Finance software with bold claims and product proof up front." },
|
|
47
|
+
{ "url": "https://attio.com", "name": "Attio", "kind": ["landing"], "mood": ["precise", "crafted", "light", "premium"], "industry": ["crm"], "note": "CRM with crisp product UI, fine lines and careful type." },
|
|
48
|
+
{ "url": "https://tuple.app", "name": "Tuple", "kind": ["landing"], "mood": ["friendly", "crafted", "opinionated"], "industry": ["dev-tools", "collaboration"], "note": "Pair-programming app; honest, specific copy and a friendly, crafted page." },
|
|
49
|
+
{ "url": "https://reflect.app", "name": "Reflect", "kind": ["landing"], "mood": ["calm", "dark", "premium"], "industry": ["notes"], "note": "Note-taking app with a calm, atmospheric dark presentation." },
|
|
50
|
+
{ "url": "https://www.craft.do", "name": "Craft", "kind": ["landing"], "mood": ["crafted", "light", "premium"], "industry": ["docs", "notes"], "note": "Docs app with polished product shots and a soft, premium feel." },
|
|
51
|
+
{ "url": "https://www.todoist.com", "name": "Todoist", "kind": ["landing"], "mood": ["friendly", "calm", "light"], "industry": ["productivity", "tasks"], "note": "To-do app with a calm, friendly page and a single brand red." },
|
|
52
|
+
{ "url": "https://1password.com", "name": "1Password", "kind": ["landing"], "mood": ["bold", "confident"], "industry": ["security"], "note": "Security made approachable with bold colour and clear claims." },
|
|
53
|
+
{ "url": "https://tailscale.com", "name": "Tailscale", "kind": ["landing"], "mood": ["calm", "technical", "friendly"], "industry": ["infrastructure", "security"], "note": "Networking explained calmly; technical without being cold." },
|
|
54
|
+
{ "url": "https://fly.io", "name": "Fly.io", "kind": ["landing"], "mood": ["playful", "illustrated", "technical"], "industry": ["infrastructure", "dev-tools"], "note": "Infrastructure with illustrated whimsy and plain-spoken copy." },
|
|
55
|
+
{ "url": "https://www.warp.dev", "name": "Warp", "kind": ["landing"], "mood": ["dark", "technical", "bold"], "industry": ["dev-tools", "ai"], "note": "Terminal app; dark, product-forward, demo-driven." },
|
|
56
|
+
{ "url": "https://zed.dev", "name": "Zed", "kind": ["landing"], "mood": ["minimal", "technical", "crafted", "precise"], "industry": ["dev-tools"], "note": "Code editor with a restrained, typographic, engineering-proud page." },
|
|
57
|
+
{ "url": "https://obsidian.md", "name": "Obsidian", "kind": ["landing"], "mood": ["dark", "calm", "technical"], "industry": ["notes", "writing"], "note": "Notes app with a calm dark page that lets the graph and editor speak." },
|
|
58
|
+
{ "url": "https://dovetail.com", "name": "Dovetail", "kind": ["landing"], "mood": ["bold", "premium"], "industry": ["research", "ai"], "note": "Customer-research tool with bold type and strong art direction." },
|
|
59
|
+
{ "url": "https://www.descript.com", "name": "Descript", "kind": ["landing"], "mood": ["playful", "bold", "colourful"], "industry": ["video", "creative"], "note": "Media editing made friendly with bright colour and product demos." },
|
|
60
|
+
{ "url": "https://spline.design", "name": "Spline", "kind": ["landing"], "mood": ["playful", "bold", "dark"], "industry": ["design-tools", "creative"], "note": "3D design tool whose page is itself a showcase of interactive 3D." },
|
|
61
|
+
{ "url": "https://rive.app", "name": "Rive", "kind": ["landing"], "mood": ["dark", "bold", "crafted"], "industry": ["design-tools", "creative"], "note": "Interactive animation tool; the page moves the way the product does." },
|
|
62
|
+
{ "url": "https://www.granola.ai", "name": "Granola", "kind": ["landing"], "mood": ["calm", "warm", "crafted", "quiet"], "industry": ["ai", "notes", "productivity"], "note": "AI meeting notes presented calmly and warmly, with a light, papery feel." },
|
|
63
|
+
{ "url": "https://www.cursor.com", "name": "Cursor", "kind": ["landing"], "mood": ["minimal", "technical", "dark"], "industry": ["dev-tools", "ai"], "note": "AI code editor; product-first and spare." },
|
|
64
|
+
{ "url": "https://www.shopify.com", "name": "Shopify", "kind": ["landing"], "mood": ["bold", "premium"], "industry": ["commerce"], "note": "Commerce platform with large imagery and bold, confident sections." },
|
|
65
|
+
{ "url": "https://gumroad.com", "name": "Gumroad", "kind": ["landing"], "mood": ["playful", "bold", "brutalist"], "industry": ["commerce", "creative"], "note": "Creator commerce with a loud, brutalist, colourful personality." },
|
|
66
|
+
{ "url": "https://plausible.io", "name": "Plausible", "kind": ["landing"], "mood": ["calm", "minimal", "light", "friendly"], "industry": ["analytics"], "note": "Simple analytics sold simply; one live dashboard as the proof." },
|
|
67
|
+
{ "url": "https://usefathom.com", "name": "Fathom Analytics", "kind": ["landing"], "mood": ["calm", "friendly", "light"], "industry": ["analytics"], "note": "Privacy-first analytics with a calm page and plain claims." },
|
|
68
|
+
{ "url": "https://whimsical.com", "name": "Whimsical", "kind": ["landing"], "mood": ["calm", "friendly", "light", "playful"], "industry": ["design-tools", "collaboration"], "note": "Diagramming tool with a soft, friendly, uncluttered page." },
|
|
69
|
+
{ "url": "https://teenage.engineering", "name": "teenage engineering", "kind": ["landing", "product"], "mood": ["minimal", "bold", "crafted", "typographic"], "industry": ["hardware", "creative"], "note": "Hardware maker whose site is as distinctive and spare as its products." },
|
|
70
|
+
{ "url": "https://www.headspace.com", "name": "Headspace", "kind": ["landing"], "mood": ["calm", "warm", "illustrated", "friendly"], "industry": ["wellness"], "note": "Calm through warmth: soft colour, round shapes and gentle illustration." },
|
|
71
|
+
{ "url": "https://www.calm.com", "name": "Calm", "kind": ["landing"], "mood": ["calm", "quiet", "atmospheric"], "industry": ["wellness"], "note": "Calm through atmosphere: nature imagery and very little on screen." },
|
|
72
|
+
{ "url": "https://www.aesop.com", "name": "Aesop", "kind": ["landing"], "mood": ["calm", "editorial", "premium", "quiet"], "industry": ["commerce", "retail"], "note": "Retail as an editorial, unhurried experience; restraint as luxury." },
|
|
73
|
+
{ "url": "https://www.kinfolk.com", "name": "Kinfolk", "kind": ["landing"], "mood": ["calm", "editorial", "quiet", "airy"], "industry": ["publishing", "creative"], "note": "Magazine site with generous white space and a slow, editorial rhythm." },
|
|
74
|
+
{ "url": "https://www.sentry.io", "name": "Sentry", "kind": ["landing"], "mood": ["playful", "dark", "illustrated"], "industry": ["dev-tools"], "note": "Error monitoring with a playful, illustrated, opinionated voice." },
|
|
75
|
+
{ "url": "https://retool.com", "name": "Retool", "kind": ["landing"], "mood": ["technical", "bold"], "industry": ["dev-tools"], "note": "Internal-tools builder with dense product proof and strong grids." },
|
|
76
|
+
{ "url": "https://www.airtable.com", "name": "Airtable", "kind": ["landing"], "mood": ["friendly", "colourful"], "industry": ["productivity", "collaboration"], "note": "Database for teams explained with colourful, friendly product views." },
|
|
77
|
+
{ "url": "https://www.lemonsqueezy.com", "name": "Lemon Squeezy", "kind": ["landing"], "mood": ["playful", "colourful", "friendly"], "industry": ["payments", "commerce"], "note": "Payments for software sellers with a bright, playful identity." }
|
|
78
|
+
]
|
|
79
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: animated-comparison-table
|
|
3
|
+
name: A comparison that shows the difference
|
|
4
|
+
kind: data
|
|
5
|
+
fits: [saas, developer, b2b, technical, productivity, honest, data-rich, ai]
|
|
6
|
+
avoid: [luxury, calm, playful-kids, enterprise-compliance]
|
|
7
|
+
signature: false
|
|
8
|
+
effort: m
|
|
9
|
+
perf: "real <table>, server-rendered; bars are transform: scaleX on one element per cell; one IntersectionObserver"
|
|
10
|
+
a11y: "a real table with th scope; every value is text; bars aria-hidden; the toggle is a radio group"
|
|
11
|
+
pairs_with: [explorable-control, interactive-pricing-calculator, before-after-slider]
|
|
12
|
+
deps: none
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
A comparison of your product against "the old way" (or a named category, not a named competitor) where the numbers are drawn as bars that grow to their length when the row comes into view, so the gap between the two is something you see, not something you read and subtract.
|
|
18
|
+
|
|
19
|
+
## Why it works
|
|
20
|
+
|
|
21
|
+
- A table of ticks makes every row look equal; length makes magnitude obvious (3 min vs 9 s is a bar 20× shorter).
|
|
22
|
+
- The motion happens once, along the axis that matters, so it explains rather than decorates.
|
|
23
|
+
- Comparing to a process ("by hand", "with spreadsheets") is more honest and more relatable than attacking a competitor, and avoids trademark trouble.
|
|
24
|
+
|
|
25
|
+
## When to use / when not
|
|
26
|
+
|
|
27
|
+
Use when you have 3–6 measurable differences (time, cost, steps, errors) with real numbers from benchmarks or customer data.
|
|
28
|
+
|
|
29
|
+
Not for: tick-box feature lists (just use a table), calm brands where growing bars feel salesy, or numbers you can't source. Avoid naming competitors unless legal has approved the data.
|
|
30
|
+
|
|
31
|
+
## Recipe
|
|
32
|
+
|
|
33
|
+
1. **Real numbers with a source line** under the table ("Median of 1,240 builds, Oct 2026"). Same unit per row, smaller-is-better rows labelled as such.
|
|
34
|
+
2. **Markup** is a semantic `<table>`: `<caption>`, `<th scope="col">` for "By hand" / "With Acme", `<th scope="row">` for each measure. Each cell holds the value as text and, behind it, a bar `<span aria-hidden>`.
|
|
35
|
+
3. **Bars.** Each bar is `position:absolute; inset-block: 25%; left:0; width:100%; transform-origin: left; transform: scaleX(var(--v))` where `--v = value / rowMax`. Old way in a neutral grey, yours in the brand colour. Values sit at the end of the bar in tabular-nums.
|
|
36
|
+
4. **The grow.** With JS, mark the table `data-js` and set bars to `scaleX(0)`; when the row enters view (IntersectionObserver, threshold 0.5) set the final scale with `transition: transform 700ms cubic-bezier(.23,1,.32,1)`, rows staggered 80 ms. The old-way bar grows first, then yours, so the difference lands last. No-JS and reduced motion: bars are at full length from the start (the CSS default).
|
|
37
|
+
5. **The difference callout.** At the end of each row, a short derived figure ("20× faster", "−14 steps") fades in 200 ms after the bars finish.
|
|
38
|
+
6. **Optional toggle** (radio group, not tabs): "per build / per month" recomputes values and the bars animate between lengths.
|
|
39
|
+
7. **Mobile:** stack each measure as a small card with two bars, same semantics (keep the table and restyle rows with `display:grid`).
|
|
40
|
+
|
|
41
|
+
## Pitfalls
|
|
42
|
+
|
|
43
|
+
- Axes that don't start at zero, or per-row scales that exaggerate small gaps.
|
|
44
|
+
- Ticks and crosses with bars mixed in one table: pick one language.
|
|
45
|
+
- Re-animating every time a row scrolls into view: animate once.
|
|
46
|
+
- Hiding values until the animation runs; no-JS readers see empty cells.
|
|
47
|
+
- Naming a competitor with unverifiable numbers.
|
|
48
|
+
|
|
49
|
+
## How to verify
|
|
50
|
+
|
|
51
|
+
- `palate shoot` with JS off: full bars and values visible.
|
|
52
|
+
- `palate animate --check`: only transform changes; no layout shift; reduced motion shows final state.
|
|
53
|
+
- Screen reader: reads as a table with headers; every value announced.
|
|
54
|
+
- Each number traces to a source in the repo or the source line.
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
- A widely used landing-page pattern; palate's guidance is to compare against a process and draw the gap, rather than list ticks.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: before-after-slider
|
|
3
|
+
name: Before/after slider
|
|
4
|
+
kind: interaction
|
|
5
|
+
fits: [honest, crafted, ai, saas, productivity, hardware, consumer, trustworthy]
|
|
6
|
+
avoid: [heritage, luxury, low-bandwidth]
|
|
7
|
+
signature: true
|
|
8
|
+
effort: s
|
|
9
|
+
perf: "two same-size images or two live DOM states; clip-path inset on one layer, updated once per rAF; images lazy below the fold"
|
|
10
|
+
a11y: "the handle is a native range input (keyboard, screen readers); both states described in text; works as a static side-by-side without JS"
|
|
11
|
+
pairs_with: [screenshot-detail-crops, hand-drawn-annotations, explorable-control, animated-comparison-table]
|
|
12
|
+
deps: none
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
Two versions of the same thing stacked exactly on top of each other (the messy page and the finished page, the raw photo and the enhanced one, the old dashboard and the new), with a vertical handle the reader drags to wipe between them. The difference is shown, not claimed.
|
|
18
|
+
|
|
19
|
+
## Why it works
|
|
20
|
+
|
|
21
|
+
- Proof you operate yourself is more persuasive than a claim: the reader finds the difference with their own hand.
|
|
22
|
+
- Identical framing on both sides isolates the change; nothing else can account for the improvement.
|
|
23
|
+
- It's honest by construction when both sides are real outputs, which is why it suits AI, editing and "make it better" products.
|
|
24
|
+
|
|
25
|
+
## When to use / when not
|
|
26
|
+
|
|
27
|
+
Use when the product transforms something visible (polish, retouching, redesign, cleanup, upscaling, translation) and you have a real before and a real after with identical framing.
|
|
28
|
+
|
|
29
|
+
Not for: products whose value isn't visual, before/after pairs that aren't from the product (staged "befores" are dishonest), luxury brands where showing a "bad" state cheapens the page, or more than one per page.
|
|
30
|
+
|
|
31
|
+
## Recipe
|
|
32
|
+
|
|
33
|
+
1. **Assets.** Two images at identical size and crop (or two live renders of the same component with different props). Real outputs only; label each ("Your agent's build", "After palate").
|
|
34
|
+
2. **Stack.** A container with `position: relative; aspect-ratio` set from the images. Both layers `position: absolute; inset: 0`. The "after" layer on top with `clip-path: inset(0 0 0 var(--pos))` where `--pos` is 0–100%.
|
|
35
|
+
3. **Handle = range input.** An `<input type="range" min="0" max="100" step="0.5" aria-label="Compare before and after">` spanning the whole container, visually transparent (`opacity: 0`, full size, `cursor: ew-resize`) so dragging anywhere works and keyboard/screen readers get a real slider. On `input`, set `--pos` (in a rAF). Draw the visible handle (a 2px line and a 36px round grip with ‹ › arrows) as an `aria-hidden` element positioned at `left: var(--pos)`.
|
|
36
|
+
4. **Start position.** 50%, or better, the position that cuts through the most important difference. Optionally, when it first scrolls into view, ease the handle from 50% to 70% and back over 1.2 s once, to teach that it moves (skip under reduced motion).
|
|
37
|
+
5. **Labels.** "Before" and "After" chips in the top corners, each fading out when the handle covers its side (opacity based on `--pos`).
|
|
38
|
+
6. **No JS.** Without JS the input does nothing, so the server markup shows the two images **side by side** (or stacked on phones) with captions; JS adds `data-js` and switches to the overlay layout.
|
|
39
|
+
7. **Reduced motion.** No teaching animation; the slider itself still works (it's user-driven).
|
|
40
|
+
8. **Phones.** The whole container is the slider; make sure vertical page scrolling still works (`touch-action: pan-y` on the container, the range handles horizontal drags).
|
|
41
|
+
|
|
42
|
+
## Pitfalls
|
|
43
|
+
|
|
44
|
+
- Mismatched crops or exposure: the comparison is unfair and reads as a trick.
|
|
45
|
+
- A custom div-based handle with no keyboard support.
|
|
46
|
+
- A fake "before" made worse than reality: people can tell, and it costs trust.
|
|
47
|
+
- Clip on the wrong layer, so the labels are swapped relative to the sides.
|
|
48
|
+
|
|
49
|
+
## How to verify
|
|
50
|
+
|
|
51
|
+
- `palate shoot` with JS off: two labelled images side by side; with JS: overlay at the start position.
|
|
52
|
+
- Keyboard: Tab to the slider, arrows move it, the clip follows.
|
|
53
|
+
- `palate animate --check`: only clip-path changes; no layout shift; the teach nudge absent under reduced motion.
|
|
54
|
+
- Visually: at 0% and 100% each image shows completely and aligns pixel for pixel.
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
- The pattern: a photo-enhancement product where you drag a line across a portrait to wipe between the original and the restored version.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bento-live-tiles
|
|
3
|
+
name: Bento with live tiles
|
|
4
|
+
kind: layout
|
|
5
|
+
fits: [saas, developer, ai, productivity, b2b, technical, data-rich, launch]
|
|
6
|
+
avoid: [editorial, heritage, low-bandwidth, luxury]
|
|
7
|
+
signature: false
|
|
8
|
+
effort: l
|
|
9
|
+
perf: "each tile animates only while in view (IntersectionObserver), CSS/transform motion, no video per tile; tiles render their finished state on the server"
|
|
10
|
+
a11y: "every tile has a heading and real text; animation is decorative and pauses on hover/focus; finished state for reduced motion and no JS"
|
|
11
|
+
pairs_with: [self-playing-product-demo, screenshot-detail-crops, inline-sparklines-in-copy, live-data-ticker]
|
|
12
|
+
deps: none
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
A feature grid of unequal tiles (one large, a few medium and small), where every tile is a small slice of the real product *working*: a search typing and returning real results, a chart drawing with real data, a notification arriving. Each tile has a one-line headline; the motion shows the feature instead of describing it.
|
|
18
|
+
|
|
19
|
+
## Why it works
|
|
20
|
+
|
|
21
|
+
- Bento grids became the default because they summarise well; they became forgettable because the tiles are icons and stock gradients. Live tiles keep the scan-ability and add proof.
|
|
22
|
+
- Showing a feature happening is more convincing than a sentence about it, and a small loop is cheap to watch.
|
|
23
|
+
- Unequal sizes give hierarchy: the main feature gets the big tile.
|
|
24
|
+
|
|
25
|
+
## When to use / when not
|
|
26
|
+
|
|
27
|
+
Use on product landing pages with 4–7 features that each have a visible behaviour.
|
|
28
|
+
|
|
29
|
+
Not for: editorial, heritage or luxury brands (the grid reads tech-generic), products whose features are invisible (security, compliance: use words and proof instead), or when you'd fill tiles with icons anyway.
|
|
30
|
+
|
|
31
|
+
## Recipe
|
|
32
|
+
|
|
33
|
+
1. **Grid.** CSS grid, 6 or 12 columns at desktop, `grid-auto-rows: minmax(220px, auto)`; one tile spans 2×2 (the story), others 1×1 or 2×1. Gap 12–16px, radius 20px outer / 12px inner (inner = outer − padding). One column on phones, the big tile first.
|
|
34
|
+
2. **Tile anatomy.** Headline (16–18px, medium) + one line of body, then a stage with the live piece. Real product components or faithful miniatures built in HTML, with real content (names, values), never grey skeleton bars.
|
|
35
|
+
3. **Script each loop.** A small array of `[ms, statePatch]` beats per tile, played by one shared hook. The finished state renders first on the server; when the tile enters view it holds the finished state ~1.4s, then replays the loop from content (never from blank).
|
|
36
|
+
4. **Play only when seen.** One IntersectionObserver (threshold 0.35) per tile toggles a `playing` flag; pause on `pointerenter`/`focusin`, resume on leave. Stop all loops when `document.hidden`.
|
|
37
|
+
5. **Motion vocabulary.** Transform and opacity only; 150–300ms, `cubic-bezier(.23,1,.32,1)`. Typing at 35–45ms per character. No parallax or tilt on tiles.
|
|
38
|
+
6. **Tiles stay interactive.** If a tile shows a control, it works: hovering stops the loop and lets the visitor try it.
|
|
39
|
+
7. **Fallbacks.** No JS and reduced motion: the finished state, static, full content. Screen readers: each tile's text describes what the loop shows (an `sr-only` sentence).
|
|
40
|
+
|
|
41
|
+
## Pitfalls
|
|
42
|
+
|
|
43
|
+
- Every tile animating at once, all the time: noise and CPU. In view only, and stagger starts by 200–400ms.
|
|
44
|
+
- Loops that start from an empty tile: the first frame a visitor sees is blank.
|
|
45
|
+
- Equal tiles: no hierarchy, back to a template.
|
|
46
|
+
- Fake data ("Lorem", "John Doe", $1,234): reads as a mock.
|
|
47
|
+
- A video per tile: heavy; build it in code.
|
|
48
|
+
|
|
49
|
+
## How to verify
|
|
50
|
+
|
|
51
|
+
- `palate shoot` (JS off): every tile shows its finished, populated state.
|
|
52
|
+
- `palate animate --check`: tiles move only in view; no layout shift as states change (fix tile heights); reduced motion static.
|
|
53
|
+
- Hover a tile mid-loop: it pauses; leave: it resumes cleanly.
|
|
54
|
+
|
|
55
|
+
## Examples
|
|
56
|
+
|
|
57
|
+
- palate's own site: the feature cards (triage, never-repeats, measured references) each play a real slice of the product on a loop, start from their finished state, and pause while hovered.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: calm-motion-system
|
|
3
|
+
name: A calm motion system
|
|
4
|
+
kind: motion
|
|
5
|
+
fits: [calm, crafted, minimal, premium, quiet, productivity, saas, trustworthy, health]
|
|
6
|
+
avoid: [energetic, gaming, playful-kids, experimental]
|
|
7
|
+
signature: false
|
|
8
|
+
effort: s
|
|
9
|
+
perf: "transform and opacity only; CSS transitions/keyframes, no animation library; nothing longer than 400 ms except one entrance"
|
|
10
|
+
a11y: "every animation sits in a prefers-reduced-motion: no-preference block; content is visible without JS; no motion conveys meaning alone"
|
|
11
|
+
pairs_with: [view-transitions-between-pages, sliding-nav-indicator, tactile-button, shape-continuity-morph]
|
|
12
|
+
deps: none
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
A small, named set of motion tokens (two durations, one easing, three entrance distances) used for every movement on the site, so the whole product moves with one temperament: quick, soft, never bouncy. It is not a moment; it is the reason everything else feels like it belongs to one product.
|
|
18
|
+
|
|
19
|
+
## Why it works
|
|
20
|
+
|
|
21
|
+
- Consistency reads as care. When every popover, tab and card moves on the same curve, people stop noticing motion and start trusting the interface.
|
|
22
|
+
- Strong ease-out (fast start, long settle) feels responsive because the element is nearly there in the first 80 ms; the long tail feels soft.
|
|
23
|
+
- Restraint makes the one signature moment on the page land: if everything bounces, nothing does.
|
|
24
|
+
|
|
25
|
+
## When to use / when not
|
|
26
|
+
|
|
27
|
+
Use on almost every product and marketing site, and always when the brand is calm, premium or about wellbeing and focus. It is the floor under any signature move.
|
|
28
|
+
|
|
29
|
+
Not the right *lead* for energetic, playful or gaming brands, which want springier, bigger motion; even there, keep the token idea and just choose livelier values.
|
|
30
|
+
|
|
31
|
+
## Recipe
|
|
32
|
+
|
|
33
|
+
1. **Tokens** (CSS custom properties, mirrored in Tailwind `@theme`):
|
|
34
|
+
- `--ease-out: cubic-bezier(.23, 1, .32, 1)` for everything entering or responding.
|
|
35
|
+
- `--ease-in-out: cubic-bezier(.65, 0, .35, 1)` only for things moving across the screen while visible.
|
|
36
|
+
- `--dur-fast: 150ms` (hover, press, colour), `--dur: 240ms` (popovers, tabs, small layout), `--dur-enter: 360ms` (page entrances).
|
|
37
|
+
- Distances: 4px (small), 8–10px (cards and headlines), never more than 16px.
|
|
38
|
+
2. **Rules.** Hover changes colour/opacity only, 150 ms. Press scales to 0.97 on `:active`, 100 ms. Popovers fade + scale from 0.96 with `transform-origin` at their trigger, 180–240 ms; exit faster (120–150 ms) than enter. Lists stagger by 30–50 ms per item, capped at 5 items. No bounce, no overshoot, no infinite loops except loaders.
|
|
39
|
+
3. **Entrances.** One rise on the hero (opacity 0 → 1, translateY 10px → 0, 360 ms, staggered 50/100/130 ms across headline, lead and action). Below the fold, prefer no entrance or a single opacity fade on scroll via `animation-timeline: view()` with `animation-range: entry 0% entry 40%` (Chromium/Safari 26+; Firefox: no timeline means the element is simply shown, so set the visible state as the base style).
|
|
40
|
+
4. **Enter from nothing** with `@starting-style` for popovers and dialogs (Chromium, Safari 17.5+, Firefox 129+): base style is the open state, `@starting-style` holds opacity 0 / scale .96, and `transition` covers `opacity, transform, display allow-discrete, overlay allow-discrete`.
|
|
41
|
+
5. **Reduced motion.** Put every animation inside `@media (prefers-reduced-motion: no-preference)`. Under reduce: no translation or scale, instant or opacity-only (≤ 150 ms) changes, spinners slowed rather than removed.
|
|
42
|
+
6. **No-JS.** Initial states are the final states; animations only decorate the arrival. Never `opacity: 0` in the base CSS waiting for JS to reveal.
|
|
43
|
+
7. Write the tokens down in the project's README or design tokens file so later builds reuse them.
|
|
44
|
+
|
|
45
|
+
React/Tailwind notes: Tailwind `ease-[cubic-bezier(.23,1,.32,1)]` as a theme token `--ease-out`; `motion-safe:` variants for every animate class; if the project already uses Motion, set `MotionConfig reducedMotion="user"` and one shared `transition` object.
|
|
46
|
+
|
|
47
|
+
## Pitfalls
|
|
48
|
+
|
|
49
|
+
- `ease-in` for entrances: the element starts slow and feels laggy.
|
|
50
|
+
- Default `ease` / `linear` mixed with custom curves: the site feels assembled from parts.
|
|
51
|
+
- Animating `height`, `top`, `box-shadow` or `filter: blur` on many elements: jank on mid phones.
|
|
52
|
+
- Scroll-reveal on every section: content hidden until scrolled is a screenshot and SEO risk, and gets tiring by section three.
|
|
53
|
+
- Long exits: anything leaving should be faster than it arrived.
|
|
54
|
+
|
|
55
|
+
## How to verify
|
|
56
|
+
|
|
57
|
+
- `palate animate --check`: all durations ≤ 400 ms except the hero entrance; no layout shift; reduced-motion strip shows no translation; JS-off strip shows every element visible.
|
|
58
|
+
- Grep the CSS: one easing token used everywhere, no stray `ease`/`ease-in`.
|
|
59
|
+
- Click every interactive element fast, twice: nothing queues up or lags behind the pointer.
|
|
60
|
+
|
|
61
|
+
## Examples
|
|
62
|
+
|
|
63
|
+
- palate's own site: one ease-out curve (`.23, 1, .32, 1`) throughout, a 360 ms staggered rise on the hero, 150 ms hover colours, a 0.96–0.97 press scale, and every keyframe gated on reduced motion.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: canvas-grain
|
|
3
|
+
name: Canvas grain over paintings
|
|
4
|
+
kind: texture
|
|
5
|
+
fits: [calm, crafted, heritage, artsy, premium, editorial, tactile, nature, quiet]
|
|
6
|
+
avoid: [data-dense-tool, clinical, minimal, enterprise-compliance]
|
|
7
|
+
signature: false
|
|
8
|
+
effort: s
|
|
9
|
+
perf: "one inline SVG tile (~600 bytes) as a CSS background; static, no JS, no per-frame cost"
|
|
10
|
+
a11y: "purely decorative, pointer-events none; never over text-heavy UI"
|
|
11
|
+
pairs_with: [museum-painting-backdrop, engraving-colour-lens, feature-films-on-painted-stages, riso-print-texture]
|
|
12
|
+
deps: none
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
A fine fractal grain plus a faint woven crosshatch, laid over a painting (or a photo) and blended into it, so the picture reads as paint on canvas rather than a stock JPEG on a screen. One CSS class, one inline SVG tile.
|
|
18
|
+
|
|
19
|
+
## Why it works
|
|
20
|
+
|
|
21
|
+
- Digital images are perfectly smooth; real surfaces aren't. A little texture tells the eye "material", which makes a resized museum photo feel like an object.
|
|
22
|
+
- Blended with `overlay` it adds tooth without changing colour much, so it never fights the brand.
|
|
23
|
+
- It also hides banding and JPEG blocking in skies and gradients.
|
|
24
|
+
|
|
25
|
+
## When to use / when not
|
|
26
|
+
|
|
27
|
+
Use on paintings, photographic backdrops and illustration stages in calm, crafted or heritage brands. Pin it inside anything that moves with the picture (a lens, a parallax layer) so it travels with the paint.
|
|
28
|
+
|
|
29
|
+
Not for: UI surfaces, text panels, data tools, or clean minimal brands whose point is flatness. Never over the whole page.
|
|
30
|
+
|
|
31
|
+
## Recipe
|
|
32
|
+
|
|
33
|
+
1. One class, placed right after the image and under the content:
|
|
34
|
+
```css
|
|
35
|
+
.canvas-grain { position: absolute; inset: 0; pointer-events: none; border-radius: inherit;
|
|
36
|
+
background-image: url("data:image/svg+xml;utf8,<svg …>"); mix-blend-mode: overlay; opacity: .42; }
|
|
37
|
+
```
|
|
38
|
+
2. The SVG tile (180 × 180, written inline, URL-encode `#` and `%`): a `<filter>` with `feTurbulence type="fractalNoise" baseFrequency=".85" numOctaves="3" stitchTiles="stitch"` then `feColorMatrix type="saturate" values="0"` applied to a full rect; plus a 3 × 3 `<pattern>` of two diagonal hairlines (one white at 6% opacity, one black at 6%) filling a second rect: the weave.
|
|
39
|
+
3. Markup: `<span aria-hidden className="canvas-grain" />` inside the positioned, `isolation: isolate` container, after the `<img>` (with `-z-10` if the image is `-z-10` too).
|
|
40
|
+
4. Tune per picture: opacity 0.3–0.5. Darker paintings take more; pale skies less.
|
|
41
|
+
5. Static by design: no animation (animated grain is a video-filter cliché and costs paint every frame). Nothing to do for reduced motion or no-JS.
|
|
42
|
+
|
|
43
|
+
## Pitfalls
|
|
44
|
+
|
|
45
|
+
- Grain on UI cards or text: it reads as dirt and lowers legibility.
|
|
46
|
+
- `mix-blend-mode` without an isolated parent: it blends with whatever is behind the section. Add `isolation: isolate` to the container.
|
|
47
|
+
- Animating the noise (`background-position` jitter): costly and distracting.
|
|
48
|
+
- A grain PNG instead of SVG: heavier and blurry at 2×.
|
|
49
|
+
|
|
50
|
+
## How to verify
|
|
51
|
+
|
|
52
|
+
- Zoom to 200% on a sky: a fine tooth and faint weave are visible; no visible tile seams.
|
|
53
|
+
- `palate shoot`: colours of the painting barely shift (compare a crop with and without the class).
|
|
54
|
+
- `palate animate --check`: nothing animates from this layer.
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
- palate's own site: `.canvas-grain` in `globals.css`, over the hero painting, every feature stage and inside the footer's colour lens.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: changelog-as-magazine
|
|
3
|
+
name: Changelog as a magazine
|
|
4
|
+
kind: layout
|
|
5
|
+
fits: [developer, saas, productivity, crafted, editorial, ai, community, honest]
|
|
6
|
+
avoid: [enterprise-compliance, serious-news, kids]
|
|
7
|
+
signature: false
|
|
8
|
+
effort: m
|
|
9
|
+
perf: "static pages from Markdown/MDX; media lazy, sized; short looping clips as muted MP4/WebM with posters"
|
|
10
|
+
a11y: "each entry is an article with a dated heading; clips have captions or a text summary; RSS and plain anchors for each entry"
|
|
11
|
+
pairs_with: [editorial-grid-pull-quotes, screenshot-detail-crops, editorial-drop-cap, scroll-scrubbed-product-film]
|
|
12
|
+
deps: none
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
The changelog is treated as a publication: each release is an "issue" with a cover (the headline feature, a big visual, a one-paragraph story of why it exists), followed by smaller items and fixes in a tight list. Dates, version numbers and authors are typeset with care, and the archive reads like a back catalogue.
|
|
18
|
+
|
|
19
|
+
## Why it works
|
|
20
|
+
|
|
21
|
+
- A changelog is proof the product is alive; most teams waste it as a log nobody reads.
|
|
22
|
+
- Leading with one story per release gives people a reason to come back and share; the small fixes still show momentum.
|
|
23
|
+
- Credits (who built it) make the team visible, which builds trust and community.
|
|
24
|
+
|
|
25
|
+
## When to use / when not
|
|
26
|
+
|
|
27
|
+
Use for products that ship often (weekly or monthly) and have real, visible changes: dev tools, SaaS, AI products, open source.
|
|
28
|
+
|
|
29
|
+
Not for: products with rare, invisible releases (security patches), compliance contexts where a changelog must be a formal record (keep that separately), or if you can't keep it up: a magazine whose last issue is from last year is worse than a plain list.
|
|
30
|
+
|
|
31
|
+
## Recipe
|
|
32
|
+
|
|
33
|
+
1. **Content model.** One MDX file per release: `date`, `version`, `title`, `cover` (image/clip + alt/poster), `authors`, body (the story), then `improvements` and `fixes` lists.
|
|
34
|
+
2. **Cover entry.** Date and version in mono, small, above; title 32–44px; a 2–3 sentence story ("You asked for X; here's why it took us until now"); the cover visual at `wide` width, real product in a real state, ideally a 4–8s muted loop (`autoplay muted loop playsinline`, poster set, paused out of view and under reduced motion).
|
|
35
|
+
3. **Then the small stuff.** A two-column list: improvements and fixes, 15px, one line each, each linking to docs where relevant.
|
|
36
|
+
4. **Index rhythm.** The archive page lists issues as a magazine contents page: date column (tabular numerals) + title + one-line deck, newest first, with the year as a large heading between years.
|
|
37
|
+
5. **Permalinks.** Each entry has an `id` anchor and its own page; ship RSS/Atom. Copy-link button on hover.
|
|
38
|
+
6. **Authors.** Small avatars and names of the people who built it, with consent (real photos or initials).
|
|
39
|
+
7. **Fallbacks.** Static HTML; videos have posters and work without JS (`controls` added under reduced motion instead of autoplay).
|
|
40
|
+
|
|
41
|
+
## Pitfalls
|
|
42
|
+
|
|
43
|
+
- Covering every release with a big feature: when there isn't one, ship a "small things" issue honestly.
|
|
44
|
+
- Marketing language in fixes ("Improved experience"): say what changed.
|
|
45
|
+
- Heavy uncompressed GIFs: use video.
|
|
46
|
+
- Inconsistent dates and versions: pick a format (`26 Oct 2026 · v2.4`) and keep it.
|
|
47
|
+
|
|
48
|
+
## How to verify
|
|
49
|
+
|
|
50
|
+
- `palate shoot` the latest entry and the archive: hierarchy is clear (one cover per issue), dates align in a column.
|
|
51
|
+
- `palate states`: an issue with no cover, a very long title, many fixes.
|
|
52
|
+
- Clips pause out of view and don't autoplay under reduced motion.
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
- Some developer-tool companies publish changelogs with a hero image and a short story per release; describe it to a builder as "one cover story per release, then a tight list of fixes".
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: code-drawn-diagram
|
|
3
|
+
name: Illustration drawn in code from the product's own shapes
|
|
4
|
+
kind: imagery
|
|
5
|
+
fits: [technical, developer, crafted, minimal, saas, ai, honest, calm]
|
|
6
|
+
avoid: [luxury, fashion, playful-kids, food]
|
|
7
|
+
signature: true
|
|
8
|
+
effort: m
|
|
9
|
+
perf: "HTML/CSS/SVG only; a few KB; animations on transform/opacity, paused off screen"
|
|
10
|
+
a11y: "a figcaption or sr-only text states what the diagram shows; interactive parts are buttons with labels; static under reduced motion"
|
|
11
|
+
pairs_with: [self-playing-product-demo, isometric-illustration-system, technical-drawing-lines, explorable-control]
|
|
12
|
+
deps: none
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
The page's illustrations are built as components from the product's real vocabulary (its cards, nodes, status dots, timeline rows, brand radii) rather than drawn as raster art. A diagram of how a request flows is made of the same chips the app uses; a hero visual is the product's own objects, arranged.
|
|
18
|
+
|
|
19
|
+
## Why it works
|
|
20
|
+
|
|
21
|
+
- It's unmistakably this product: no stock illustration could contain its actual parts.
|
|
22
|
+
- Vector-sharp at every size, tiny to ship, and it can animate and respond to state.
|
|
23
|
+
- Keeping illustration in code keeps it in sync when the product's look changes.
|
|
24
|
+
|
|
25
|
+
## When to use / when not
|
|
26
|
+
|
|
27
|
+
Use for software products with a distinctive UI grammar: developer tools, AI products, workflow and data tools. Great for "how it works" sections and heroes that would otherwise use a 3D blob.
|
|
28
|
+
|
|
29
|
+
Not for consumer brands that sell emotion through photography, nor for food, fashion or luxury. Don't use if the product's own UI is still generic; you'd be illustrating with defaults.
|
|
30
|
+
|
|
31
|
+
## Recipe
|
|
32
|
+
|
|
33
|
+
1. **Inventory the product's shapes**: list 6–10 visual atoms from the real app (node card, edge line, status pill, avatar, keycap, log row). Reuse their exact tokens (radii, colours, font sizes).
|
|
34
|
+
2. **Sketch the idea in one sentence** ("a prompt becomes three files"): the diagram must say something, not decorate.
|
|
35
|
+
3. **Build** a component on a fixed coordinate grid: a container with `aspect-ratio` and `container-type: inline-size`, inner font-size `calc(100cqw / 40)` so every child sized in em scales together. Lines in an absolutely positioned SVG sharing the same grid.
|
|
36
|
+
4. **Animate one idea.** E.g. a dot travels along an edge (`offset-path: path(...)`, 1.6s, ease-in-out), then the target card's status flips. Run when in view (IntersectionObserver, threshold 0.4), loop with a 2–4s rest, pause when off screen or hidden.
|
|
37
|
+
5. **Fallback.** Server-render the final state; that's no-JS and reduced motion. Add `<figcaption>` describing the flow.
|
|
38
|
+
6. **Make it inert** if it contains real-looking controls (`inert` attribute or `aria-hidden` + `tabindex=-1`), so people don't tab into fake buttons.
|
|
39
|
+
|
|
40
|
+
## Pitfalls
|
|
41
|
+
|
|
42
|
+
- Inventing new decorative shapes instead of the product's own: the point is lost.
|
|
43
|
+
- Pixel units: the diagram breaks at other widths. Use em on a container.
|
|
44
|
+
- Endless looping motion with no rest: tiring.
|
|
45
|
+
- Fake controls that are focusable but do nothing.
|
|
46
|
+
|
|
47
|
+
## How to verify
|
|
48
|
+
|
|
49
|
+
- `palate shoot` at 1440 and 390: proportions identical at both widths (scaled, not reflowed); text ≥12px rendered.
|
|
50
|
+
- `palate animate --check`: no layout shift; paused off screen; reduced motion shows the final state.
|
|
51
|
+
- Diff the diagram's tokens against the app's tokens: same radii and colours.
|
|
52
|
+
|
|
53
|
+
## Examples
|
|
54
|
+
|
|
55
|
+
- palate's own site: the product demo is built in code from palate's real parts (its agent rail, point overlay pins and taste card) on one em grid, so every cursor lands exactly on the part it builds.
|
|
56
|
+
- Seen on Stripe (https://stripe.com/blog/connect-front-end-experience): their engineering blog describes drawing product visuals, including a laptop, in a small amount of CSS rather than images.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: colophon
|
|
3
|
+
name: A colophon that shows how the site was made
|
|
4
|
+
kind: footer
|
|
5
|
+
fits: [crafted, editorial, developer, honest, publishing, artsy, portfolio, agency]
|
|
6
|
+
avoid: [enterprise-compliance, finance-trust-first, crisis]
|
|
7
|
+
signature: false
|
|
8
|
+
effort: s
|
|
9
|
+
perf: "static text; optional type specimens use fonts already loaded"
|
|
10
|
+
a11y: "plain headings and lists; links have real names; no motion needed"
|
|
11
|
+
pairs_with: [made-with-proof, editorial-drop-cap, museum-painting-backdrop, inspect-our-taste]
|
|
12
|
+
deps: none
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
A short section (in the footer or on a /colophon page) that lists how the site was made, like the colophon at the back of a book: typefaces and their designers, the colour palette with values, the image sources and their licences, the stack, who built it, and when it was last updated.
|
|
18
|
+
|
|
19
|
+
## Why it works
|
|
20
|
+
|
|
21
|
+
- It shows care: makers who name their materials are proud of them.
|
|
22
|
+
- It's a natural place to credit artists, type designers and open-source work properly, which earns goodwill.
|
|
23
|
+
- Designers and developers (often the buyers of crafted tools) read colophons; it's a quiet reward for curious visitors.
|
|
24
|
+
|
|
25
|
+
## When to use / when not
|
|
26
|
+
|
|
27
|
+
Use on crafted sites, studios, portfolios, publications, developer tools and any site that uses credited art (museum paintings, illustration, licensed type).
|
|
28
|
+
|
|
29
|
+
Not on compliance-heavy enterprise or financial sites where it adds noise, or crisis/emergency pages.
|
|
30
|
+
|
|
31
|
+
## Recipe
|
|
32
|
+
|
|
33
|
+
1. **Gather facts** from the project, never invented: font names and foundries (from the font files or package), the brand tokens, image sources with licence (CC0 museum, own photography), framework and hosting, the people who made it.
|
|
34
|
+
2. **Structure** as a definition list: `Type`, `Colour`, `Images`, `Built with`, `Made by`, `Updated`. Each value one line.
|
|
35
|
+
3. **Show, briefly.** Type entries render a sample word in that face ("Aa Geist Sans, by Vercel"); colour entries render 16px swatches with hex values in mono. Keep it to one screen.
|
|
36
|
+
4. **Placement.** A link "Colophon" in the footer's bottom bar to /colophon, or a collapsed `<details>` at the end of the footer. `<details>` works without JS.
|
|
37
|
+
5. **Credits.** Every image credit links to its source page (museum record) with title, artist, year, institution and licence.
|
|
38
|
+
6. **Updated date** from the build (an env var set at build time), not hard-coded.
|
|
39
|
+
|
|
40
|
+
## Pitfalls
|
|
41
|
+
|
|
42
|
+
- Bragging lists of every npm package: keep it to what shapes the experience.
|
|
43
|
+
- Out-of-date facts (fonts changed, credits missing): generate what you can from the project.
|
|
44
|
+
- Hiding the image credits only here: the visible credit belongs next to the image too.
|
|
45
|
+
|
|
46
|
+
## How to verify
|
|
47
|
+
|
|
48
|
+
- `palate details`: every font and image used on the site is listed; links resolve.
|
|
49
|
+
- `palate shoot` the colophon at 390: swatches and samples don't overflow.
|
|
50
|
+
- Facts match the code (font families in CSS, tokens in the theme).
|
|
51
|
+
|
|
52
|
+
## Examples
|
|
53
|
+
|
|
54
|
+
- No public example cited; the colophon is a book-printing tradition that many personal and studio sites carry on.
|