@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,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: palate
|
|
3
|
+
description: Design intelligence that does the last 20%. Use for any request to build, redesign, improve or polish a screen, page, section or component (dashboards, app screens, landing pages, docs, shops, mobile). It triages each request first; by default it builds once from the user's references, notes and rules, runs the finishing pass (screenshots, details, critique on request), then lets the user point at what's wrong. A job-level question ("users wait 20 seconds here, what should they see?") gets 3 short ideas first; a new screen gets research first (competitors and well-crafted pages looked at live, 3 art directions with a signature moment, then one build); variants only when the user asks to explore. The user's rules are checked on every build, so they never repeat a mistake.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# palate
|
|
7
|
+
|
|
8
|
+
AI gets a screen 80% of the way. The last 20% is taste, ideas, experience and iteration: the references the user loves and why, the spacing and hierarchy fixes, the details AI overlooks (states, edge cases, motion), and never repeating what they rejected. Palate does that part, the way the user would: **build → finish → point**. It remembers their references and notes, turns what they keep rejecting into rules checked on every build (each one shown with its scope for their OK first), and only explores variants when they ask.
|
|
9
|
+
|
|
10
|
+
The `palate` command is: `{{PALATE}}`
|
|
11
|
+
Run it from the project folder. Examples below write it as `palate`.
|
|
12
|
+
|
|
13
|
+
The checks and the finishing pass are free (`palate guard`, `copy`, `check`, `shoot`, `finish`, `states`, `details`, `animate`, `gate`, `imagery`, `texture`, `icons`). The rest is invite-only: if a command answers "This part of palate is invite-only", tell the user and ask for their invite code (`palate-XXXX-XXXX-XXXX`), then run `palate activate <code>` (once per machine; only the code and a random machine id are sent). `palate activate --status` shows the state.
|
|
14
|
+
|
|
15
|
+
## Always first: triage
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
palate plan "<the request, in the user's words>" [--route /x]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
palate decides what the request deserves, says why, and estimates its token cost. Follow it; the user can override with `--mode`.
|
|
22
|
+
- **direct**: a fix, tweak, copy change, something a critique or details pass already pinpointed, or exact changes to an existing page ("move the button outside the bar", "make the cards play on their own", "pastel instead of dots, no black"). The kind of screen comes from the route (the root page is a landing page), not from words in the request. Take the direct path below.
|
|
23
|
+
- **build** (the default): anything that isn't a fix, a question or an ask to explore. One build of the real route, the finishing pass, then the user points at what's wrong. See "Build mode".
|
|
24
|
+
- **direction**: a job-level question or problem ("users wait ~20 seconds here, what should we show them so they don't leave?", "how should onboarding work?"). 3 short ideas with rough wireframes first, the user picks one, then build mode. See "Direction".
|
|
25
|
+
- **research** (the default for a new screen): a new page or screen with no strong taste history, or an ask for something new or creative ("make it stand out", "not generic"). palate looks at competitors and well-crafted pages live, you propose 3 art directions with one signature moment each, palate picks one from taste or asks, then one build. See "Research and art direction". You run every step yourself; never ask the user to type a command.
|
|
26
|
+
- **match**: the user gave their own design to build ("match this design", "build it from my screenshot / mockup / Figma frame", "make it look exactly like this", an image or a Figma link to implement). The design is the spec, not palate's taste. See "Match mode". An image given as a reference or for inspiration is not this: add it with `palate refs add`.
|
|
27
|
+
- **quick / full (variants, opt-in)**: only when the user asks to explore ("options", "directions", "variants", "a few ideas"). The triage prints their token cost next to build mode's: tell the user and offer build mode as the cheaper choice. See "Variants".
|
|
28
|
+
|
|
29
|
+
`palate stats` shows how long loops took and the estimated tokens per mode.
|
|
30
|
+
|
|
31
|
+
Then read the project and **the user's taste profile**:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
palate context
|
|
35
|
+
palate taste
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`palate taste` opens with **what palate has learned about the user**: their rules by kind of screen, the newest rules, and how often palate's top-ranked variant was their pick. The profile below it is learned from their own picks; the section for this kind of screen matters most.
|
|
39
|
+
|
|
40
|
+
## The user's references, with their notes
|
|
41
|
+
|
|
42
|
+
References come first, and what the user says about them matters more than the picture. When the user gives a screenshot, image or URL ("like Stripe's billing page"):
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
palate refs add <file or url> --like "the calm spacing" --dislike "gradient buttons"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
If they didn't say what they like and dislike about it, **ask them**, one short line each, then add the notes. Each note becomes a rule tied to that reference: a like becomes a question for the judge ("does it have the calm spacing of that reference?"), a dislike becomes a measured rule when palate can measure it ("gradient buttons" → no gradient fills on buttons, checked on every shoot) or a judge rule otherwise. Every brief lists each reference with its likes and dislikes. `palate refs mine` lists them; `palate refs rm <id>` removes one and the rules that came only from it.
|
|
49
|
+
|
|
50
|
+
## The user's rules (must pass)
|
|
51
|
+
|
|
52
|
+
The profile says what the user likes; **rules say what must hold**. They live in `~/.palate/taste/rules.json`, each short and testable, with a scope (everywhere, kinds of screen like landing, team or settings, one route, or one component) and a check: measured in the page (framed screenshots = 0, kicker labels in at most one section, logo marks ≥ 24px, no step bar before the demo…) or, when it can't be measured, a question the judge must answer. A rule for one component is always the judge's question ("Only for <RoleBadge>: …"), since a measurement reads the whole page.
|
|
53
|
+
|
|
54
|
+
- **Every brief opens with them**: "Built from N of your rules and M past picks", then "Your rules (must pass)" for this kind of screen and "Don't do this": the user's past failures for it, with screenshots. A rule beats a reference, a direction and your own idea.
|
|
55
|
+
- **`palate shoot` checks them**: "Rules: 7 pass, 1 fail: …". A failing rule is a bug: fix it before anything else, and never call a page done while one fails.
|
|
56
|
+
- **The judge enforces them**: a variant that fails a measured rule ranks below every variant that passes; the rubric asks the unmeasurable ones as true/false questions, and a "false" costs score.
|
|
57
|
+
- **The user's own words apply at once**: when they state a rule, `palate rule add "<rule>" [--kind landing | --only <Component> | --route /x]`. Notes on their references become rules too.
|
|
58
|
+
- **What palate infers is only proposed.** One pin is a one-off fix. A pattern (the same ask twice, a critique finding they agreed with, `palate fail <route> "<their words>"` when they call a screen bad) becomes a *proposed* rule with the scopes its evidence supports and a suggested one (the narrowest that holds: one component, one route, a kind of screen, or everywhere). Nothing carries into later builds until the user keeps it. When `palate taste learn` or `palate fail` proposes rules, run `palate rule review`: a board opens in their browser where they edit the wording, choose where it applies, and keep or discard each one. Or ask in chat and run `palate rule ok <id> [--only <Component> | --route /x | --kind team | --scope all] [--text "…"]` / `palate rule no <id>`. Never keep one they didn't agree to. A discarded proposal is remembered and comes back only with clearly new evidence.
|
|
59
|
+
- `palate rule list` shows the active rules, then the proposals "Waiting for your OK". `palate rule edit <id> "…" | rm <id>`.
|
|
60
|
+
|
|
61
|
+
## Build mode (the default): build → finish → point
|
|
62
|
+
|
|
63
|
+
**1. Frame the job** in three lines: who uses it and how often, the one question it must answer, the primary action. **Skin, if needed:** if the project has no deliberate design yet, `palate system pick "<request>"` then `palate system apply <id>` gives it a real design system's tokens and type roles (read `.palate/system.md`). If it already has one, keep it.
|
|
64
|
+
|
|
65
|
+
**2. One build.**
|
|
66
|
+
```
|
|
67
|
+
palate build "<the job, in the user's words>" --route /x [--refs a.png,https://…] [--direction <name>]
|
|
68
|
+
```
|
|
69
|
+
**A new page is decided before it is built.** `palate build` on a new page answers with the blueprint step first: `palate blueprint "<job>" --route /x` writes a planner brief. Plan it yourself or with a fresh subagent: expand the job into a spec (who it's for, the moment they care about, mood defended from the audience, **category truths to keep** and **clichés to avoid**), the system (colours by role including a `material` tone, a display face with character, numbers in the body face with tabular figures, mono only for real code), an imagery decision for every section (CC0 museum photos via `palate imagery`, textures via `palate texture`, the product's UI built in code, illustration in code, type alone for at most two sections) and one **archetype** per section from palate's library (`palate sections --kind <kind> --tags <mood>`; kb/sections: structure, finish, phone layout and the checks the judge will use). `palate blueprint --file <bp.json>` refuses plans that drift to the median page (neighbours with the same shape, one surface top to bottom, no material, weak contrast, a default display face) and saves the passing one with tokens (layered ink-tinted shadows, the primary button's gradient, inner highlight and ring, and the names the archetypes use).
|
|
70
|
+
|
|
71
|
+
**Its own look, not palate's house style.** The blueprint also commits the page's visual language (`look`): the ground, texture, header, call-to-action style and how the main object is framed, plus the research references each decision learns from. palate refuses a plan that repeats one of its recent pages (in any project, benchmark pages included) on too many of: the ground, texture, the headline's type genre, the hero composition, the header, the call to action, the framing. The three art directions must span different visual worlds too, and the auto-pick ranks a look unlike palate's recent pages higher. The finish standard is craft (shadows, radii, spacing), never a default look: no default cream paper, no default grain.
|
|
72
|
+
|
|
73
|
+
**An existing page gets the same, in its own brand.** On a route that exists, `palate build` (build mode) answers with the existing-page blueprint: palate captures the page as it is (first screen, whole page, one crop per section), and the plan keeps the brand (`"system": { "keep": true }`) and marks each section keep, upgrade (to an archetype, with why), remove or add. Only the upgraded and added sections get briefs; the gate also judges the result against the page as it was, and a change that made it worse fails. Small tweaks never come here: the triage sends them to direct mode.
|
|
74
|
+
|
|
75
|
+
Then `palate build` again: one brief for the real route plus **one brief per section**. Each section builder checks only its own section with `palate section <route> <id>` (a crop at 1440 and 390 plus palate's floor checks for it, in seconds), not a full-page shoot. Build the foundation (tokens, fonts, imagery, the page shell) and the hero yourself, check the hero with `palate shoot <route> --fold`, then build every other section in parallel, one fresh subagent each, each owning its own component file and getting the care the hero got; then stitch the rhythm, the entrance and the phone layout. An existing route is changed in place from one brief: the user's rules, their references with their likes and dislikes, the taste profile's section for this kind of screen, and the direction they chose. Either way: finished, real content, every state the job needs, hover, focus and pressed states.
|
|
76
|
+
|
|
77
|
+
**Moves (your call, not the user's).** Correct isn't remarkable. When building or upgrading a screen that is right but basic, pick its moves yourself from the moves library (`kb/moves`, named creative techniques with palate's recipes): `palate moves --tags <the brand's mood, e.g. calm,crafted> [--kind hero] [--signature]` (MCP: `palate_moves`, passing the user's kept/reverted history and the kind of screen when you have them), choose one signature move and one or two supporting ones that fit, then `palate moves brief <id,id>` and build from its recipes (perf, a11y, reduced motion and the no-JS fallback included). `palate moves show <id>` reads one in full.
|
|
78
|
+
|
|
79
|
+
**3. The finishing pass,** on that page, without asking the user anything. `palate finish <route>` runs the shoot, states, details and the motion check in one process (about a minute); or step by step, in order: `palate shoot <route>` (both widths; a failing rule is fixed first, then a failing similarity gate, see below), `palate states <route>` (build the missing states, then `--verify`; see States below), `palate details <route>`, `palate animate <route> --check` if it moves, then `palate gate <route>` (see The quality gate below), `palate critique <route>` only if the user asks for a review. Then `palate check` (it says "Not done" while a rule, the similarity gate or the quality gate fails) and the project's typecheck. Before telling the user UI work is done, `palate guard` must pass: every changed screen looked at after its last edit, the copy (`palate copy`) and code tells clean, every CC BY photo credited, the gates passing. In a project with the guard's stop hook (`palate guard --install`, only when the user asks; Claude Code, Codex, Cursor, Gemini CLI, Copilot, or `--agent git` for a pre-commit check) it runs by itself when you stop. Without a hook, run `palate guard` yourself before saying you're done. A finding that is wrong here: `palate waive <id> --file <f> --reason "…"`, never to get past a real problem. Brand marks for a works-with row: `palate icons <brand…>`, never a drawn logo.
|
|
80
|
+
|
|
81
|
+
**The similarity gate.** `palate shoot` fails (exit 1) when the page is more than 50% like a screen of the same kind in another of the user's projects (palate's layout memory), or too close to a reference the research step captured (42%, or the first screen as a picture above 72%). It says what is too close (page skeleton, hero structure, palette, type, the first screen as a picture) and what to change. Fix it yourself and shoot again; it isn't a question for the user. Taste is how the user judges (clarity, restraint, real content, their rules), not what their other projects looked like: a new product's colour, type and layout come from its own direction. Only when the user asked to match another project: `--like <project>` on build and shoot.
|
|
82
|
+
|
|
83
|
+
**The quality gate: judged by someone who didn't build it.** The last step of every finishing pass, run without being asked. A builder grading its own work is too kind (Kiln, Oct 27: self-graded 6.7, about 5 to a person), and pairwise judging against real sites agrees with people far more than 1–10 scores.
|
|
84
|
+
1. `palate gate <route>`: palate's floor checks first (two-sided: dead space, half-empty sections, one template repeated, one flat colour with no material, monospace as decoration, placeholder text, clipped text, a phone section that is an endless stacked list), then judge packets: a yes/no checklist per section (each archetype's checks plus a few for every section, calibrated with the user's own recent corrections from point) and the page beside the research's strongest real sites, in both orders.
|
|
85
|
+
2. Run each packet with its own fresh subagent, in parallel: "Read <packet> and follow it exactly." Never judge your own build, and never tell the judges which page is ours. If you can't start subagents (Codex, Cursor): `palate gate <route> --judge api` runs the packets with a model API itself when a key is set (GEMINI_API_KEY or GOOGLE_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY; a family other than the builder's is preferred); with neither, `--judge self`, and tell the user the verdict is self-judged.
|
|
86
|
+
3. `palate gate <route> --answers <the round's folder>`: the verdict. It fails on a floor fail, a section the checklist says is below the bar, a page that doesn't feel like its subject or has no material, or a page clearly worse than a reference in both orders (a split verdict is a tie).
|
|
87
|
+
4. Below the bar: palate snapshots the source and writes one repair brief per failing section (up to three), each scoped to its own section so parallel repairs don't undo each other; run them at the same time, one fresh subagent each. Repair it, then `palate gate <route>` again. Two repair rounds at most; a round that got worse is rolled back with `--restore <round>`. Then tell the user the verdict in one line, honestly: pass, or where it is still below the bar.
|
|
88
|
+
`palate ambition <route>` still exists for an extra push on a page that passes.
|
|
89
|
+
Mark the signature moment's element with `data-signature` so palate can find it.
|
|
90
|
+
|
|
91
|
+
**4. The user points.** Offer `palate point <route>` (see "Fix it in place"): they click what's wrong in the running app and you fix exactly that. When they reject something, `palate fail`. When they're done, `palate taste learn`, and `palate rule review` if it proposed rules.
|
|
92
|
+
|
|
93
|
+
## Match mode: the user's own design is the spec
|
|
94
|
+
|
|
95
|
+
When the user hands you their design and wants it built faithfully, palate's taste steps aside: no blueprint, no archetypes, no house-look check, no similarity gate, and no improvements.
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
palate match <design.png | https://page | figma frame link> [--route /x] [--width 1440]
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The source can be a PNG or JPG (a screenshot or a Figma export; 2400 px and wider is read as @2x unless `--width` says otherwise), a page URL (captured at `--width`, default 1440), or a Figma frame link (right-click the frame, Copy link to selection). A Figma link needs `FIGMA_TOKEN`; without it, tell the user to export the frame as PNG. palate saves the design in `.palate/match/<route>/`, measures what a still image shows (colours by share, surfaces, content blocks, the content's span) and writes `brief.md`. Follow it:
|
|
102
|
+
1. **spec.json first.** Every value tagged `observed` (read from the image: colours, sizes, spacing, radii, positions; each text with its exact words, `size` and `y`), `inferred` (what a still can't show: hover, focus, pressed, the phone layout, hidden content, motion) or `substituted` (a paid or unknown font, a missing photo, another icon set, each with `instead` and `why`).
|
|
103
|
+
2. **Build it** in the project's own stack and tokens: geometry, then type, spacing, colour and details. Content word for word.
|
|
104
|
+
3. **The check.** `palate match --check --route /x` renders the build at the design's width, writes the two side by side and a difference image, measures what it can (colours by ΔE, text sizes and positions against the spec, motion), and writes one judge packet. Run it with a fresh subagent, never yourself, then `palate match --answers <dir> --route /x`: **READY**, **READY WITH SUBSTITUTIONS**, **NOT READY** (what's off, most visible first, with the fix; repair, then check again; two repair rounds at most, `--restore <n>` rolls a worse round back) or **UNVERIFIED** (something couldn't be checked: motion a still can't show, a build longer than the design).
|
|
105
|
+
4. Tell the user the verdict in one line, every substitution, and what you inferred (states, the phone layout), so they can correct it.
|
|
106
|
+
|
|
107
|
+
On a matched route `palate gate` and `palate build` point to the match brief, and `palate shoot` skips the similarity gate and the look. Contrast and clipping only warn: build the design as it is and tell the user; never change it silently.
|
|
108
|
+
|
|
109
|
+
## Direction: ideas before a build
|
|
110
|
+
|
|
111
|
+
For a job-level ask (what the triage calls direction), nothing is built until the user has chosen an idea:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
palate direction "<the problem, in the user's words>" [--route /x]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
It writes a short brief. Answer it with **3 different ideas**, each a name, 2–3 sentences (what the user sees and why it solves the problem) and a rough ASCII or tiny HTML wireframe; no code and no renders. Write them to the `ideas.json` the brief names, then:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
palate direction --ideas <that file>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
It opens a small picker in the user's browser: three cards, one click picks, an optional note. It returns their choice. Then build mode: `palate build "<the job>" --route /x` carries the chosen idea, its wireframe and the note into the brief.
|
|
124
|
+
|
|
125
|
+
## Research and art direction (new screens)
|
|
126
|
+
|
|
127
|
+
What a designer spends hours on before a new screen, done by you and palate with no human step unless it is a real judgement call. Run it when the triage says research.
|
|
128
|
+
|
|
129
|
+
**1. Understand and search.**
|
|
130
|
+
```
|
|
131
|
+
palate research "<the job, in the user's words>" [--route /]
|
|
132
|
+
```
|
|
133
|
+
palate reads the job and the project (product, audience, industry, mood, a working metaphor, and whether the project **already has a brand**: its colour tokens, fonts and components, or **starts from scratch**) and prints web searches for competitors and category leaders. palate can't search: run them with your own web search tool and take 4–8 **official product homepages** (not listicles, review sites or design galleries).
|
|
134
|
+
|
|
135
|
+
**2. Look.**
|
|
136
|
+
```
|
|
137
|
+
palate research "<the job>" --urls https://a.com,https://b.com [--inspire https://c.com] (--urls none: palate's own picks only)
|
|
138
|
+
```
|
|
139
|
+
palate looks at those pages plus a few from its own short list (kb/inspiration: links and its own notes, nothing else) **live, on this machine**: robots.txt respected for every page, one page at a time per site a few seconds apart, at most 12 pages, never logging in or submitting anything, skipping bot checks and CAPTCHAs (never working around them), declining cookie banners. It measures each (type scale, palette, spacing rhythm, layout skeleton, devices, motion, the principles pass), ranks them by craft, the user's taste (rules, profile, what they liked or disliked in earlier research) and diversity, keeps 4–6, and writes `.palate/research/<name>/`: `research.md`, `contact.png` and the screenshots (the user's private moodboard; gitignored, never uploaded or shipped). Per reference: what makes it work (drafted from measurements), the moves it uses, one thing this product could learn; and **what the competitors all do** (the cliché to avoid). **Open the contact sheet and the screenshots and refine the drafted notes in plain words.** If the user reacts to a reference ("love R2's type", "not R4"), record it: `palate research --name <n> --like R2 --dislike R4`.
|
|
140
|
+
|
|
141
|
+
**3. Art directions.**
|
|
142
|
+
```
|
|
143
|
+
palate direction "<the job>" --from-research <name>
|
|
144
|
+
```
|
|
145
|
+
Answer its brief with **3 art directions**, safest to boldest, each with a name, a **metaphor**, **one signature moment** (a `signature: true` move from the moves library, adapted to this product), a section plan, a **provenance line** ("rhythm from R2, texture idea from R4, nothing copied") and a rough wireframe.
|
|
146
|
+
- **The project has a brand**: each direction keeps its palette tokens, fonts and components (`brand`: how the metaphor lives inside them). A new colour or typeface only when the user asks for a rebrand.
|
|
147
|
+
- **From scratch**: each direction defines a complete **starter system** drawn from its metaphor: colour tokens (palate checks AA), a licence-safe type pairing (Google Fonts / OFL or system) with its scale, radius scale, spacing rhythm, motion character, and licence-safe imagery (built in code, CC0 art, generated patterns).
|
|
148
|
+
|
|
149
|
+
Then `palate direction --ideas <file>`. palate validates them and **decides whether to ask**: it picks a direction itself when the user's taste for this kind of screen is strong and one direction clearly leads, or when the user said "just build it" (`--auto`); otherwise it opens the picker in the user's browser and says why in one line ("Opening the picker: no history for pricing pages yet"). `--choose user` when the user asked to choose. Tell the user in one line what happened.
|
|
150
|
+
|
|
151
|
+
**4. Build.** `palate build "<the job>" --route /` carries the direction, the signature move's recipe, the research notes (abstract only), the starter tokens to create first (or the brand to keep), and the rule: **use the ideas, never the expression**: no copied code, copy, images, illustrations, logos or paid fonts; nothing that looks like one specific site. **Deliver the signature moment; it will be checked**: `palate shoot` compares the page with every research reference (too close fails) and recalls the promised moment. Then the finishing pass and point, as in build mode.
|
|
152
|
+
|
|
153
|
+
palate learns from all of it (in `~/.palate/taste`): the direction chosen (or picked and kept), its metaphor, signature move and starter system, the references liked or disliked, and which references fed the build. The next research ranks with it; `palate taste learn` proposes rules from repeats, for the user's OK.
|
|
154
|
+
|
|
155
|
+
## Variants (opt-in)
|
|
156
|
+
|
|
157
|
+
Only when the user asks to explore, or the triage says quick/full for a new kind of screen, and after offering build mode as the cheaper choice.
|
|
158
|
+
|
|
159
|
+
**1. Sketches.**
|
|
160
|
+
```
|
|
161
|
+
palate variants "<the job, in the user's words>" --name <short-name>
|
|
162
|
+
```
|
|
163
|
+
It takes the count from the triage, chooses directions (what has won for this user before, plus one to explore), finds references for each, and writes one lean brief per direction. With `--refs`, one direction follows the user's reference closely, one blends it with their winning direction, and one explores. **The briefs are sketches:** the first screen and the page's centrepiece built to a finished standard, the rest stubbed; only the winner is built out (`--full` builds whole pages, slower). **Build every brief:** with subagents (Claude Code: the Agent/Task tool), start one per brief in parallel, each told to read its brief and follow it exactly; otherwise build them yourself one at a time. Don't install packages while variants are being built in parallel.
|
|
164
|
+
|
|
165
|
+
**Checking while building is lean:** each builder runs one `palate shoot /<route> --widths 1440 --fold`, fixes the biggest problem and every rule it reports failing, and stops. The 390 check, the principles pass, `details` and `animate` run on the winner only.
|
|
166
|
+
|
|
167
|
+
**2. Pick as soon as 4 are ready.** Don't wait for the slowest builder. Right after the briefs go out, start (in the background):
|
|
168
|
+
```
|
|
169
|
+
palate pick --name <name> --ready <n>
|
|
170
|
+
```
|
|
171
|
+
`<n>` is the number `palate variants` prints (4 in full mode, all of them in quick mode). It waits until that many variants are built and settled, then opens the picker in the user's browser by itself, blind and shuffled. The user clicks the best one (they can open any at full size first) and may tap reason chips. It returns the winner, the reasons, and how long the loop took. `--pairs` asks every A/B pair instead, for close calls.
|
|
172
|
+
|
|
173
|
+
With more than 4 variants (full mode), judge first: `palate judge --name <name> --watch --ready 4` renders the first 4 built and writes a rubric. Have a **fresh** subagent score it (a judge must not grade its own work), including the true/false answers to the user's rules the rubric asks, then `palate judge --name <name> --scores <file>`, then `palate pick --name <name>` (it reuses the judge's renders; variants that landed later join only if fewer than 4 survived). The judge measures clarity for the job; it does not decide taste.
|
|
174
|
+
|
|
175
|
+
**3. Build out the winner.**
|
|
176
|
+
```
|
|
177
|
+
palate build --name <name>
|
|
178
|
+
```
|
|
179
|
+
It writes the brief that completes the winning sketch into the full page: keep the first screen and centrepiece exactly, finish every stub to the same standard, carry over one part of a runner-up only if the user's reasons point to it. One builder. Then, on this page only: `palate shoot <route>` (both widths, principles), `palate details <route>`, `palate animate <route> --check` if it moves. Move it to the real route and delete the other variants.
|
|
180
|
+
|
|
181
|
+
**4. Polish the winner.**
|
|
182
|
+
```
|
|
183
|
+
palate polish <route>
|
|
184
|
+
```
|
|
185
|
+
It shoots the before and tells you which polish skills are installed: Jakub Krehel's `better-interface` / `better-ui` and Emil Kowalski's `emil-design-eng`. Apply them in order, keep the idea and layout, shoot again, and keep a change only if the screenshot is better.
|
|
186
|
+
|
|
187
|
+
**5. Finish and learn.**
|
|
188
|
+
```
|
|
189
|
+
palate blueprint "<job>" --route /x (then --file bp.json: the design decided before code)
|
|
190
|
+
palate gate <route> (the independent quality gate: floor checks, judge packets, --answers, --restore)
|
|
191
|
+
palate sections · palate imagery · palate texture · palate bench
|
|
192
|
+
palate ambition <route> (an extra push on a page that already passes the gate)
|
|
193
|
+
palate check
|
|
194
|
+
palate taste learn
|
|
195
|
+
```
|
|
196
|
+
Fix or justify `check` findings and run the project's build and typecheck. `taste learn` first proposes rules from patterns in the evidence (agreed findings, failures, the same ask twice), each with a suggested scope; if it proposed any, run `palate rule review` so the user keeps or discards them (a rule in the critique's words gets general words on the board). Then it prints the new evidence from the user's picks: update their taste profile (the file it names) with what won and why for this kind of screen, in 3–6 concrete bullets. Keep it short; it is read before every design.
|
|
197
|
+
|
|
198
|
+
## The direct path (what triage calls direct)
|
|
199
|
+
|
|
200
|
+
1. If it helps, `palate search "<the parts involved>"` and `palate show <ids>`: anatomy entries say what each component needs and how it behaves.
|
|
201
|
+
2. Change it in place, in the project's stack, tokens and components. Real data only.
|
|
202
|
+
3. One check: `palate shoot <route> --widths 1440 --fold` (add 390 only if the change is about the phone layout). Open the screenshot, fix what's wrong once. The plan printed the user's rules for this screen; none may fail after your change.
|
|
203
|
+
4. `palate check`. No variants, judge or pick.
|
|
204
|
+
|
|
205
|
+
## States (the last 20%)
|
|
206
|
+
|
|
207
|
+
AI gets a screen 80% of the way. The rest is what designers do by hand and agents skip: every state of every part. After you build or change a screen that has data, lists, forms or images, and whenever the user asks about states, edge cases, loading, empty or errors:
|
|
208
|
+
|
|
209
|
+
1. `palate states <route>` finds the stateful parts (lists, tables, card grids, forms, numbers, images, text from data, buttons that act) from the DOM and a quick read of the route's source, then renders each state without touching the code:
|
|
210
|
+
- **Data fetched in the browser:** it rewrites the app's own JSON with Playwright route mocks: empty, one item, 50 items (500 timed), 3× long names, emails and company names. It holds the data (loading at 1.2s and 2.8s; no answer at 8s) and fails it (500, network down).
|
|
211
|
+
- **Data written in the code** (a static page): it says so, simulates long text, many items and one item in the DOM, and lists what it couldn't simulate. Never pretend a static list can be empty.
|
|
212
|
+
- **Always:** images answered 404, 320 wide, and 200% zoom with a keyboard-only Tab pass. Every form is filled with test values and pressed twice, failed with a 500, sent offline and sent empty. Buttons outside forms are pressed twice. Every send is answered by palate, so nothing reaches the app's server.
|
|
213
|
+
2. Each state is measured, not just pictured: overflow and clipping, text outside its box, a list with no empty state, nothing shown while loading (or a false "0" or "No items"), errors with no message, double submits, no pending state, values cleared on error, broken-image icons, focus that is hidden or lost, sideways scroll, raw `undefined`, "1 items".
|
|
214
|
+
3. Open the contact sheet (`.palate/states/<route>/<stamp>/sheet.png`: one row per part, one column per state, ✗ on findings), then build what `states.md` lists, most important first. Use the project's own components (it names its Skeleton, Spinner, EmptyState, Alert when it finds them). Empty states say what's empty and what to do next, with the action as a button. Errors say what happened and what to do, with Try again, and never fall through to the empty state. Loading is a skeleton shaped like the content. Pending buttons ignore a second press.
|
|
215
|
+
4. `palate states <route> --verify` renders every state again and puts each finding before | after, measured: fixed or still failing.
|
|
216
|
+
|
|
217
|
+
`palate fix` includes the missing states. `palate critique` links the states sheet. Rules like "every list has an empty state" (`palate rule add`) are measured from the latest states run on every shoot.
|
|
218
|
+
|
|
219
|
+
## Commands for specific jobs
|
|
220
|
+
|
|
221
|
+
For an existing page, when the user asks for one of these (or it's clearly what they need):
|
|
222
|
+
|
|
223
|
+
| The user wants | Run |
|
|
224
|
+
|---|---|
|
|
225
|
+
| A designer's review ("critique this", "what's wrong with it") | `palate critique <route>`: open every section crop in the sheet it writes (a summary; the rubric, every principle finding and the review guide are files next to it, opened when needed), write findings to its `findings.json` (specific: element, why, the exact fix; whole-page findings for repeated devices, static screenshots, no motion; an idea for each generic section). Then `palate critique --findings <file>`: the user agrees or disagrees on a board in their browser. Change no code during a critique. |
|
|
226
|
+
| Fix it | `palate fix <route>`: a brief from the findings the user agreed with, most severe first (with no critique: what `palate shoot` measures). Afterwards `palate fix <route> --verify` puts each finding's section before \| after; report fixed, partly or not per finding. |
|
|
227
|
+
| New versions of one section | `palate vary <route> --section "<name or selector>"`: copies the page into variant routes and writes one brief each (a different idea and references). Build them, then `palate pick --name <name it gives>`: the user sees each in the page, with the current section as an option. Move the winner into the page and delete the variant routes. |
|
|
228
|
+
| States and edge cases (loading, empty, error, long names, many rows, offline, double submit) | `palate states <route>`: the contact sheet and a brief of the missing states; build them, then `palate states <route> --verify`. See States above. |
|
|
229
|
+
| The small parts look generic (avatars, logos, inputs, empty states, numbers, icons, hover/focus states, favicon) | `palate details <route>`: each part with its crop and upgrade. Real people's photos or generated avatars only; official brand marks only. Run it again to confirm. |
|
|
230
|
+
| The page feels static, or motion is off | `palate animate <route>`: frame strips and a brief for motion that explains something. Verify with `palate animate <route> --check` (no hidden content with motion, reduced motion or JavaScript off; no layout shift). |
|
|
231
|
+
|
|
232
|
+
After a critique, `palate taste learn` also folds in the user's disagreements, so palate stops raising what they don't consider a problem.
|
|
233
|
+
|
|
234
|
+
## Fix it in place
|
|
235
|
+
|
|
236
|
+
When the user wants to point at things in their running app instead of describing them ("this card", "fix that header"), or asks for `palate point`:
|
|
237
|
+
|
|
238
|
+
1. `palate point [route]` starts (or reuses) the dev server behind a small local proxy and opens the app with palate's overlay. Nothing in the project changes. Give the user the link. They press the palate button (or Alt+P), hover to see each element's box, name, margin and padding, use ↑ ↓ to pick the parent section instead of a leaf, click, type what should change or tap a chip (Fix spacing, Fix alignment, Type hierarchy, Make it premium, Add motion, Real content & avatars, Variants of this) and send with Cmd/Ctrl+Enter. They can queue several; each becomes a numbered pin. Something that needs a click first (an open modal, a dropdown, a tab, a hover menu, an expanded row): they open it with pointing off, press Alt+P and pin inside it. The overlay keeps the steps that opened it ("+2 steps to open") and palate replays them on a fresh load before every crop, at both widths.
|
|
239
|
+
2. Keep listening without being asked: the user should never have to come back to the chat and say "I pinned things". Loop until they say they're done, and don't end your turn while point runs (if they write something else, answer it, then go back to listening). The overlay shows them "Agent listening", "Agent working · pin 3" or "No agent listening", from your calls.
|
|
240
|
+
- `palate point next` (or `palate_point_next`, up to 55 s a call) waits for the next request and marks it as being worked on. "Still listening" (MCP) means nothing came yet: call it again at once. It prints the user's words, the selector, DOM path, component and owner chain, key styles, trimmed HTML, a crop (`.palate/point/<id>/crop.png`; open it) and the likely source lines. It leads with where the problem appears: "Pinned at 1440×900 (desktop)", or the width the user's words name ("on mobile" → 390).
|
|
241
|
+
- A pin inside an opened state says so in the brief: "This element is inside a state opened by: click "Invite members" → the modal. palate reopens it for every check." When a check couldn't reopen it (a step's target is gone, say you renamed that button), crop says "couldn't reopen" with the step that failed and shows the page as it loads. That width isn't checked in the opened state; it never counts as broken and never blocks done. Check the change in the code and say so in the summary.
|
|
242
|
+
- Fix exactly that element or section in the source. Confirm the file by its text and classes. Change nothing around it, and keep the project's tokens and components.
|
|
243
|
+
- `palate point crop <id>` re-shoots it after the edit; compare it with the crop. Fix once more if it isn't better. Every pin is checked at two widths: the one the user pinned at and the other one (390 for a desktop pin, 1440 for a phone pin, or the width the request names: "on mobile", "at 768px"; judge a request about a width there). The before at the other width was shot when the user pinned. Crop returns before and now at both, and a verdict for the other width: **unchanged**; **changed** (moved, resized or looks different: often expected for shared CSS, look at it); or **broke** (the page now scrolls sideways, the element disappeared, or text in it is cut off). Fix a break too, then crop again.
|
|
244
|
+
- If the user asked you to remove the element, finish with `--removed` (MCP: `removed: true`): the pin then says "Removed" instead of cropping whatever sits there now.
|
|
245
|
+
- `palate point done <id> "<one line: what changed>"`. The user's pin turns done and shows before and after at both widths. It refuses while the other width is broken; `--override` (MCP: `override: true`) only when the user accepts it, and the pin keeps the warning. Then straight back to `next`.
|
|
246
|
+
- Stop when the user says they're done, or when `next` says they pressed **Done** in the overlay (it comes after the pins they already sent). `palate point stop` does the same from a terminal.
|
|
247
|
+
3. "Variants of this" means don't edit in place: `palate vary <route> --section "<the request's selector>"`, build the briefs, `palate pick`, make the winner real, then mark the request done.
|
|
248
|
+
|
|
249
|
+
With no agent listening, a pin still queues and the overlay tells the user how to start one (`/mcp__palate__point` in Claude Code, or `palate point --auto`); the next agent takes the queue in order.
|
|
250
|
+
|
|
251
|
+
**Auto mode, no chat at all:** `palate point [route] --auto [--agent claude|codex]`. palate runs the agent's CLI headless on each pin, one at a time, in order (`claude -p` / `codex exec`, brief on stdin, the project as the working folder). Claude Code may only read and edit files and call palate's crop and done (no shell, no web); Codex runs in its workspace-write sandbox. A pin the agent leaves without `done` turns "Failed: retry" with its last lines. If the CLI isn't on PATH, palate says so and stays in manual mode. `--yolo` skips every permission check; only when the user asks for it, and palate warns. If you are the headless agent: do only that one request, verify with `palate point crop <id>` (fix the other width too if it broke; "couldn't reopen" for a pin inside a modal or menu isn't a break), finish with `palate point done <id> "<summary>"` (never `--override`: the user isn't there to accept it), and don't call `next`.
|
|
252
|
+
|
|
253
|
+
Every request and its before/after go to the user's taste log; `palate taste learn` shows what they keep asking to fix.
|
|
254
|
+
|
|
255
|
+
## Rules that always apply
|
|
256
|
+
|
|
257
|
+
- The user's rules (`palate rule list`) hold wherever they apply; when they say something is bad, `palate fail` it, and once they keep the rule it proposes, it never comes back.
|
|
258
|
+
- Every fact, record and number comes from the project. Never invent logos, testimonials, reviews or customer numbers; never copy another company's logo, wording or imagery.
|
|
259
|
+
- Density of content is good; density of chrome is not. At most one crafted touch per screen, at the edge of the content.
|
|
260
|
+
- No emoji or em dashes in UI copy, no gradient text, no `transition: all`; `tabular-nums` only on numbers; one solid primary button per view.
|
|
261
|
+
- Everything visible without animation; respect `prefers-reduced-motion`.
|