@design-ai/cli 4.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +164 -0
- package/AGENTS.ko.md +126 -0
- package/AGENTS.md +182 -0
- package/CHANGELOG.md +6883 -0
- package/CLAUDE.md +39 -0
- package/LICENSE +21 -0
- package/README.ko.md +245 -0
- package/README.md +277 -0
- package/agents/README.md +14 -0
- package/agents/a11y-reviewer.md +121 -0
- package/agents/component-architect.md +57 -0
- package/agents/design-critic.md +46 -0
- package/agents/token-extractor.md +63 -0
- package/cli/bin/design-ai-mcp.mjs +6 -0
- package/cli/bin/design-ai.mjs +40 -0
- package/cli/commands/audit.mjs +111 -0
- package/cli/commands/check.mjs +226 -0
- package/cli/commands/doctor.mjs +141 -0
- package/cli/commands/examples.mjs +58 -0
- package/cli/commands/help.mjs +271 -0
- package/cli/commands/install.mjs +161 -0
- package/cli/commands/learn.mjs +1871 -0
- package/cli/commands/list.mjs +143 -0
- package/cli/commands/mcp.mjs +27 -0
- package/cli/commands/pack.mjs +211 -0
- package/cli/commands/prompt.mjs +199 -0
- package/cli/commands/route.mjs +247 -0
- package/cli/commands/search.mjs +60 -0
- package/cli/commands/show.mjs +52 -0
- package/cli/commands/site.mjs +558 -0
- package/cli/commands/status.mjs +161 -0
- package/cli/commands/uninstall.mjs +119 -0
- package/cli/commands/update.mjs +184 -0
- package/cli/commands/version.mjs +94 -0
- package/cli/commands/workspace.mjs +176 -0
- package/cli/lib/brief.mjs +52 -0
- package/cli/lib/check.mjs +642 -0
- package/cli/lib/dispatch.mjs +109 -0
- package/cli/lib/doctor.mjs +505 -0
- package/cli/lib/examples.mjs +258 -0
- package/cli/lib/exec.mjs +63 -0
- package/cli/lib/help-flags.mjs +5 -0
- package/cli/lib/learn.mjs +3694 -0
- package/cli/lib/log.mjs +47 -0
- package/cli/lib/mcp-server.mjs +426 -0
- package/cli/lib/output.mjs +101 -0
- package/cli/lib/pack.mjs +599 -0
- package/cli/lib/paths.mjs +63 -0
- package/cli/lib/prompt.mjs +603 -0
- package/cli/lib/route.mjs +740 -0
- package/cli/lib/search.mjs +158 -0
- package/cli/lib/show.mjs +161 -0
- package/cli/lib/signals.mjs +2337 -0
- package/cli/lib/site.mjs +6617 -0
- package/cli/lib/skill-proposals.mjs +2046 -0
- package/cli/lib/suggest.mjs +66 -0
- package/cli/lib/workspace.mjs +1056 -0
- package/commands/README.md +25 -0
- package/commands/component-spec.md +34 -0
- package/commands/conversational.md +44 -0
- package/commands/design-from-brief.md +141 -0
- package/commands/design-review.md +62 -0
- package/commands/document-from-brief.md +47 -0
- package/commands/extract-tokens.md +38 -0
- package/commands/game-ui.md +40 -0
- package/commands/illustration.md +37 -0
- package/commands/iterate.md +167 -0
- package/commands/motion-design.md +54 -0
- package/commands/palette-from-brand.md +50 -0
- package/commands/print.md +49 -0
- package/commands/slide-deck.md +46 -0
- package/commands/spatial.md +47 -0
- package/commands/stability-review.md +74 -0
- package/commands/video.md +42 -0
- package/commands/website-improvement.md +77 -0
- package/docs/AGENT-DEVELOPMENT.md +658 -0
- package/docs/AI-LEARNING.md +429 -0
- package/docs/AIDER-INTEGRATION.md +224 -0
- package/docs/ARCHITECTURE.ko.md +183 -0
- package/docs/ARCHITECTURE.md +105 -0
- package/docs/CODEX-INTEGRATION.md +311 -0
- package/docs/COMPANY-WEBSITE-DOGFOOD.ko.md +144 -0
- package/docs/COMPANY-WEBSITE-DOGFOOD.md +150 -0
- package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.ko.md +153 -0
- package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.md +154 -0
- package/docs/CONTRIBUTING.ko.md +203 -0
- package/docs/CONTRIBUTING.md +242 -0
- package/docs/CURSOR-INTEGRATION.md +220 -0
- package/docs/DISTRIBUTION.ko.md +248 -0
- package/docs/DISTRIBUTION.md +253 -0
- package/docs/DOGFOOD-FINDINGS.md +180 -0
- package/docs/DOGFOOD-V4-FINDINGS.md +139 -0
- package/docs/DOGFOOD-V4-MKDOCS-FINDINGS.md +233 -0
- package/docs/DOGFOOD-V4-NPM-FINDINGS.md +157 -0
- package/docs/DOGFOOD-V4-VSCODE-FINDINGS.md +135 -0
- package/docs/FIGMA-INTEGRATION.md +222 -0
- package/docs/MCP-INTEGRATION.md +243 -0
- package/docs/MIGRATION-v4.md +121 -0
- package/docs/PLUGIN-PACKAGING.md +240 -0
- package/docs/PRODUCT-READINESS.md +66 -0
- package/docs/QUICKSTART.ko.md +178 -0
- package/docs/QUICKSTART.md +179 -0
- package/docs/RELEASE-CHECKLIST.md +292 -0
- package/docs/ROADMAP.md +19495 -0
- package/docs/SESSION-LOG.md +940 -0
- package/docs/TOKEN-SYNC.md +237 -0
- package/docs/USING.ko.md +206 -0
- package/docs/USING.md +218 -0
- package/docs/WEBSITE-IMPROVEMENT.ko.md +75 -0
- package/docs/WEBSITE-IMPROVEMENT.md +89 -0
- package/docs/announcements/README.md +56 -0
- package/docs/announcements/dev-to-korea.md +206 -0
- package/docs/announcements/hashnode-post.ko.md +232 -0
- package/docs/announcements/okky-post.ko.md +158 -0
- package/docs/announcements/press-kit.md +101 -0
- package/docs/announcements/reddit-r-korea.md +196 -0
- package/docs/announcements/show-hn.md +114 -0
- package/docs/announcements/twitter-thread.md +255 -0
- package/docs/external-status.md +34 -0
- package/docs/integrations/aider-walkthrough.ko.md +275 -0
- package/docs/integrations/aider-walkthrough.md +274 -0
- package/docs/integrations/codex-walkthrough.ko.md +297 -0
- package/docs/integrations/codex-walkthrough.md +297 -0
- package/docs/integrations/cursor-walkthrough.ko.md +281 -0
- package/docs/integrations/cursor-walkthrough.md +284 -0
- package/docs/integrations/design-ai-mcp-server.md +169 -0
- package/docs/integrations/figma-mcp.md +149 -0
- package/docs/integrations/github-mcp.md +178 -0
- package/docs/integrations/linear-mcp.md +215 -0
- package/docs/integrations/notion-mcp.md +174 -0
- package/docs/integrations/sdk-walkthrough.ko.md +375 -0
- package/docs/integrations/sdk-walkthrough.md +375 -0
- package/docs/integrations/slack-mcp.md +208 -0
- package/docs/integrations/vscode-walkthrough.ko.md +202 -0
- package/docs/integrations/vscode-walkthrough.md +205 -0
- package/docs/requirements.txt +16 -0
- package/docs/site-overrides/extra.css +83 -0
- package/docs/site-overrides/favicon.svg +4 -0
- package/docs/site-overrides/logo.svg +10 -0
- package/docs/site-overrides/main.html +18 -0
- package/docs/website-console/app.js +2540 -0
- package/docs/website-console/index.html +24 -0
- package/docs/website-console/styles.css +975 -0
- package/examples/README.md +252 -0
- package/examples/cases/dogfood-v4-korean-hr-onboarding.md +356 -0
- package/examples/component-accordion-actions.md +153 -0
- package/examples/component-accordion-details.md +147 -0
- package/examples/component-accordion-summary.md +180 -0
- package/examples/component-accordion.md +229 -0
- package/examples/component-account-card.md +284 -0
- package/examples/component-address-input.md +260 -0
- package/examples/component-affix.md +190 -0
- package/examples/component-alert-dialog.md +210 -0
- package/examples/component-alert-title.md +77 -0
- package/examples/component-alert.md +192 -0
- package/examples/component-amount-input.md +278 -0
- package/examples/component-anchor.md +198 -0
- package/examples/component-app-bar.md +249 -0
- package/examples/component-aspect-ratio.md +156 -0
- package/examples/component-auto-complete.md +199 -0
- package/examples/component-avatar-group.md +170 -0
- package/examples/component-avatar.md +191 -0
- package/examples/component-back-top.md +123 -0
- package/examples/component-backdrop.md +148 -0
- package/examples/component-badge.md +181 -0
- package/examples/component-banner.md +237 -0
- package/examples/component-biometric-gate.md +281 -0
- package/examples/component-blockquote.md +153 -0
- package/examples/component-border-beam.md +207 -0
- package/examples/component-bottom-navigation.md +226 -0
- package/examples/component-box.md +112 -0
- package/examples/component-breadcrumb.md +222 -0
- package/examples/component-button-base.md +190 -0
- package/examples/component-button-group.md +117 -0
- package/examples/component-button.md +213 -0
- package/examples/component-calendar.md +280 -0
- package/examples/component-callout.md +131 -0
- package/examples/component-card-actions.md +101 -0
- package/examples/component-card-content.md +90 -0
- package/examples/component-card-header.md +122 -0
- package/examples/component-card-media.md +79 -0
- package/examples/component-card.md +233 -0
- package/examples/component-carousel.md +266 -0
- package/examples/component-cascader.md +135 -0
- package/examples/component-category-picker.md +271 -0
- package/examples/component-chart.md +237 -0
- package/examples/component-chat-interface.md +399 -0
- package/examples/component-checkbox.md +149 -0
- package/examples/component-click-away-listener.md +87 -0
- package/examples/component-code.md +213 -0
- package/examples/component-collapsible.md +219 -0
- package/examples/component-color-picker.md +110 -0
- package/examples/component-combobox.md +267 -0
- package/examples/component-command.md +299 -0
- package/examples/component-config-provider.md +190 -0
- package/examples/component-context-menu.md +179 -0
- package/examples/component-css-baseline.md +148 -0
- package/examples/component-date-picker.md +249 -0
- package/examples/component-descriptions.md +242 -0
- package/examples/component-dialog-actions.md +111 -0
- package/examples/component-dialog-content-text.md +76 -0
- package/examples/component-dialog-content.md +105 -0
- package/examples/component-dialog-title.md +104 -0
- package/examples/component-dialog.md +176 -0
- package/examples/component-divider.md +182 -0
- package/examples/component-doc-page.md +217 -0
- package/examples/component-drawer.md +257 -0
- package/examples/component-dropdown.md +220 -0
- package/examples/component-email-layout.md +253 -0
- package/examples/component-empty-state.md +269 -0
- package/examples/component-empty.md +172 -0
- package/examples/component-fade.md +87 -0
- package/examples/component-feature-grid.md +201 -0
- package/examples/component-field.md +266 -0
- package/examples/component-filled-input.md +114 -0
- package/examples/component-flex.md +117 -0
- package/examples/component-float-button.md +214 -0
- package/examples/component-form-control-label.md +134 -0
- package/examples/component-form-control.md +113 -0
- package/examples/component-form-controls.md +251 -0
- package/examples/component-form-group.md +86 -0
- package/examples/component-form-helper-text.md +95 -0
- package/examples/component-form-label.md +98 -0
- package/examples/component-form.md +291 -0
- package/examples/component-game-hud.md +362 -0
- package/examples/component-game-menu.md +327 -0
- package/examples/component-grid.md +140 -0
- package/examples/component-grow.md +79 -0
- package/examples/component-hero-block.md +252 -0
- package/examples/component-hover-card.md +211 -0
- package/examples/component-icon-button.md +142 -0
- package/examples/component-icon.md +102 -0
- package/examples/component-illustration.md +280 -0
- package/examples/component-image-list.md +107 -0
- package/examples/component-image.md +282 -0
- package/examples/component-input-adornment.md +101 -0
- package/examples/component-input-base.md +134 -0
- package/examples/component-input-number.md +141 -0
- package/examples/component-input-otp.md +271 -0
- package/examples/component-input.md +213 -0
- package/examples/component-item.md +243 -0
- package/examples/component-kbd.md +197 -0
- package/examples/component-krw-amount.md +219 -0
- package/examples/component-label.md +118 -0
- package/examples/component-layout.md +217 -0
- package/examples/component-link.md +223 -0
- package/examples/component-list-item-avatar.md +72 -0
- package/examples/component-list-item-button.md +139 -0
- package/examples/component-list-item-icon.md +82 -0
- package/examples/component-list-item-text.md +98 -0
- package/examples/component-list-item.md +116 -0
- package/examples/component-list-subheader.md +70 -0
- package/examples/component-list.md +198 -0
- package/examples/component-loading-button.md +125 -0
- package/examples/component-loading-sequence.md +254 -0
- package/examples/component-lottie-player.md +279 -0
- package/examples/component-masonry.md +191 -0
- package/examples/component-mentions.md +189 -0
- package/examples/component-menu-item.md +102 -0
- package/examples/component-menu-list.md +98 -0
- package/examples/component-menu.md +139 -0
- package/examples/component-menubar.md +259 -0
- package/examples/component-message.md +162 -0
- package/examples/component-mobile-stepper.md +155 -0
- package/examples/component-modal.md +220 -0
- package/examples/component-navigation-menu.md +295 -0
- package/examples/component-notification.md +166 -0
- package/examples/component-otp-countdown.md +245 -0
- package/examples/component-outlined-input.md +145 -0
- package/examples/component-page-transition.md +281 -0
- package/examples/component-pagination.md +226 -0
- package/examples/component-paper.md +199 -0
- package/examples/component-pass-auth.md +265 -0
- package/examples/component-payment-brand-button.md +253 -0
- package/examples/component-payment-method-selector.md +272 -0
- package/examples/component-payment-receipt.md +277 -0
- package/examples/component-popconfirm.md +144 -0
- package/examples/component-popover.md +239 -0
- package/examples/component-popper.md +129 -0
- package/examples/component-pricing-cards.md +247 -0
- package/examples/component-progress.md +195 -0
- package/examples/component-qr-code.md +201 -0
- package/examples/component-radio.md +167 -0
- package/examples/component-rate.md +202 -0
- package/examples/component-resizable.md +163 -0
- package/examples/component-result.md +270 -0
- package/examples/component-scroll-area.md +199 -0
- package/examples/component-scroll-reveal.md +320 -0
- package/examples/component-segmented.md +178 -0
- package/examples/component-select.md +258 -0
- package/examples/component-separator.md +177 -0
- package/examples/component-sheet.md +277 -0
- package/examples/component-sidebar.md +257 -0
- package/examples/component-skeleton.md +178 -0
- package/examples/component-slide.md +89 -0
- package/examples/component-slider.md +208 -0
- package/examples/component-snackbar-content.md +92 -0
- package/examples/component-snackbar.md +121 -0
- package/examples/component-sonner.md +165 -0
- package/examples/component-space.md +125 -0
- package/examples/component-spatial-locomotion.md +373 -0
- package/examples/component-spatial-panel.md +330 -0
- package/examples/component-speed-dial-action.md +78 -0
- package/examples/component-speed-dial.md +177 -0
- package/examples/component-spin.md +173 -0
- package/examples/component-spinner.md +204 -0
- package/examples/component-splitter.md +210 -0
- package/examples/component-stack.md +130 -0
- package/examples/component-statistic.md +282 -0
- package/examples/component-step-button.md +157 -0
- package/examples/component-step-connector.md +157 -0
- package/examples/component-step-content.md +121 -0
- package/examples/component-step-icon.md +115 -0
- package/examples/component-step-label.md +101 -0
- package/examples/component-step.md +84 -0
- package/examples/component-steps.md +264 -0
- package/examples/component-stock-chart.md +251 -0
- package/examples/component-swipeable-drawer.md +149 -0
- package/examples/component-switch.md +99 -0
- package/examples/component-tab-scroll-button.md +180 -0
- package/examples/component-tab.md +120 -0
- package/examples/component-table-body.md +82 -0
- package/examples/component-table-cell.md +118 -0
- package/examples/component-table-container.md +75 -0
- package/examples/component-table-footer.md +72 -0
- package/examples/component-table-head.md +78 -0
- package/examples/component-table-pagination.md +137 -0
- package/examples/component-table-row.md +113 -0
- package/examples/component-table-sort-label.md +109 -0
- package/examples/component-table.md +202 -0
- package/examples/component-tabs.md +184 -0
- package/examples/component-tag-badge.md +309 -0
- package/examples/component-tag.md +102 -0
- package/examples/component-testimonial-carousel.md +218 -0
- package/examples/component-textarea-autosize.md +114 -0
- package/examples/component-textarea.md +173 -0
- package/examples/component-time-picker.md +205 -0
- package/examples/component-timeline.md +170 -0
- package/examples/component-toast.md +224 -0
- package/examples/component-toggle-button.md +129 -0
- package/examples/component-toggle.md +220 -0
- package/examples/component-toolbar.md +104 -0
- package/examples/component-tooltip.md +178 -0
- package/examples/component-tour.md +176 -0
- package/examples/component-transaction-list-item.md +243 -0
- package/examples/component-transfer.md +156 -0
- package/examples/component-tree-select.md +202 -0
- package/examples/component-tree.md +297 -0
- package/examples/component-typography.md +215 -0
- package/examples/component-upload.md +295 -0
- package/examples/component-video-hero.md +409 -0
- package/examples/component-video-player.md +340 -0
- package/examples/component-voice-input.md +408 -0
- package/examples/component-watermark.md +217 -0
- package/examples/component-zoom.md +92 -0
- package/examples/doc-explanation-example.md +196 -0
- package/examples/doc-how-to-example.md +205 -0
- package/examples/doc-tutorial-example.md +162 -0
- package/examples/dogfood-korean-fintech-system.md +433 -0
- package/examples/email-transactional-example.md +259 -0
- package/examples/palette-saas-violet.md +235 -0
- package/examples/print-business-card-spec.md +205 -0
- package/examples/print-packaging-spec.md +285 -0
- package/examples/report-example.md +228 -0
- package/examples/slide-deck-example.md +237 -0
- package/examples/website-improvement-report.md +128 -0
- package/examples/website-improvement-workspace.json +126 -0
- package/install.sh +189 -0
- package/knowledge/COVERAGE.md +740 -0
- package/knowledge/PRINCIPLES.md +108 -0
- package/knowledge/a11y/contrast.md +70 -0
- package/knowledge/a11y/keyboard-and-focus.md +108 -0
- package/knowledge/colors/color-theory.md +90 -0
- package/knowledge/colors/mui-palette-structure.md +105 -0
- package/knowledge/colors/palettes-by-product-type.md +876 -0
- package/knowledge/components/INDEX.md +231 -0
- package/knowledge/components/index.json +1470 -0
- package/knowledge/components/shadcn-registry.md +159 -0
- package/knowledge/conversational/ai-chat-interfaces.md +323 -0
- package/knowledge/conversational/chatbot-design.md +312 -0
- package/knowledge/conversational/conversational-ui-fundamentals.md +299 -0
- package/knowledge/conversational/korean-voice-conventions.md +281 -0
- package/knowledge/conversational/voice-ui-patterns.md +297 -0
- package/knowledge/design-tokens/ant-design.md +124 -0
- package/knowledge/design-tokens/material-3.md +235 -0
- package/knowledge/design-tokens/polaris-and-carbon.md +231 -0
- package/knowledge/design-tokens/tailwind-v4.md +284 -0
- package/knowledge/game-ui/game-accessibility.md +317 -0
- package/knowledge/game-ui/game-ui-fundamentals.md +281 -0
- package/knowledge/game-ui/hud-design.md +324 -0
- package/knowledge/game-ui/korean-gaming-conventions.md +312 -0
- package/knowledge/game-ui/menu-systems.md +388 -0
- package/knowledge/i18n/korean-app-store-visual.md +223 -0
- package/knowledge/i18n/korean-document-style.md +301 -0
- package/knowledge/i18n/korean-payments.md +211 -0
- package/knowledge/i18n/korean-product-conventions.md +96 -0
- package/knowledge/i18n/korean-publishing.md +139 -0
- package/knowledge/i18n/korean-typography.md +123 -0
- package/knowledge/icons/curated-sets.md +225 -0
- package/knowledge/illustration/hero-illustrations.md +234 -0
- package/knowledge/illustration/illustration-systems.md +221 -0
- package/knowledge/illustration/mascot-design.md +208 -0
- package/knowledge/illustration/spot-illustrations.md +246 -0
- package/knowledge/illustration/svg-optimization.md +308 -0
- package/knowledge/layout/spacing-and-grid.md +119 -0
- package/knowledge/motion/app-loading-sequences.md +277 -0
- package/knowledge/motion/choreography-depth.md +297 -0
- package/knowledge/motion/marketing-motion.md +223 -0
- package/knowledge/motion/micro-interactions.md +266 -0
- package/knowledge/motion/motion-tools.md +281 -0
- package/knowledge/motion/principles.md +126 -0
- package/knowledge/patterns/auth-flow-design.md +316 -0
- package/knowledge/patterns/b2b-onboarding-flows.md +182 -0
- package/knowledge/patterns/brand-identity.md +238 -0
- package/knowledge/patterns/brand-references.md +97 -0
- package/knowledge/patterns/chart-color-encoding.md +269 -0
- package/knowledge/patterns/chart-types.md +344 -0
- package/knowledge/patterns/dashboard-composition.md +299 -0
- package/knowledge/patterns/design-system-qa.md +356 -0
- package/knowledge/patterns/document-typography.md +248 -0
- package/knowledge/patterns/email-design.md +338 -0
- package/knowledge/patterns/empty-states.md +263 -0
- package/knowledge/patterns/error-states.md +318 -0
- package/knowledge/patterns/form-design.md +237 -0
- package/knowledge/patterns/information-architecture.md +341 -0
- package/knowledge/patterns/landing-hero-design.md +283 -0
- package/knowledge/patterns/landing-page-patterns.md +681 -0
- package/knowledge/patterns/list-and-feed.md +371 -0
- package/knowledge/patterns/mobile-navigation.md +278 -0
- package/knowledge/patterns/money-and-amount.md +301 -0
- package/knowledge/patterns/onboarding.md +300 -0
- package/knowledge/patterns/pricing-page-design.md +261 -0
- package/knowledge/patterns/realtime-data.md +280 -0
- package/knowledge/patterns/report-design.md +330 -0
- package/knowledge/patterns/search-ux.md +373 -0
- package/knowledge/patterns/settings-page.md +325 -0
- package/knowledge/patterns/slide-deck-design.md +316 -0
- package/knowledge/patterns/styles-catalog.md +2599 -0
- package/knowledge/patterns/technical-writing.md +306 -0
- package/knowledge/patterns/ui-reasoning.md +1853 -0
- package/knowledge/patterns/ux-guidelines.md +1454 -0
- package/knowledge/platforms/react-native.md +395 -0
- package/knowledge/print/brochures-and-flyers.md +276 -0
- package/knowledge/print/korean-print-conventions.md +284 -0
- package/knowledge/print/packaging.md +321 -0
- package/knowledge/print/print-fundamentals.md +238 -0
- package/knowledge/print/signage-and-posters.md +235 -0
- package/knowledge/print/stationery.md +262 -0
- package/knowledge/spatial/ar-patterns.md +253 -0
- package/knowledge/spatial/comfort-and-accessibility.md +245 -0
- package/knowledge/spatial/spatial-design-fundamentals.md +346 -0
- package/knowledge/spatial/spatial-ui-elements.md +343 -0
- package/knowledge/spatial/vr-patterns.md +302 -0
- package/knowledge/typography/font-pairings.md +332 -0
- package/knowledge/typography/mui-type-scale.md +57 -0
- package/knowledge/typography/type-scale-fundamentals.md +105 -0
- package/knowledge/video/in-product-video.md +277 -0
- package/knowledge/video/korean-video-conventions.md +247 -0
- package/knowledge/video/marketing-video.md +258 -0
- package/knowledge/video/social-and-short-form.md +257 -0
- package/knowledge/video/video-fundamentals.md +296 -0
- package/package.json +106 -0
- package/skills/README.md +39 -0
- package/skills/color-palette/PLAYBOOK.md +175 -0
- package/skills/color-palette/SKILL.md +6 -0
- package/skills/color-palette/TEMPLATE.md +103 -0
- package/skills/component-spec-writer/PLAYBOOK.md +169 -0
- package/skills/component-spec-writer/SKILL.md +6 -0
- package/skills/component-spec-writer/TEMPLATE.md +115 -0
- package/skills/conversational-ui-designer/PLAYBOOK.md +231 -0
- package/skills/conversational-ui-designer/SKILL.md +6 -0
- package/skills/design-broadcast/PLAYBOOK.md +146 -0
- package/skills/design-broadcast/SKILL.md +6 -0
- package/skills/design-critique/PLAYBOOK.md +137 -0
- package/skills/design-critique/SKILL.md +6 -0
- package/skills/design-pr-review/PLAYBOOK.md +171 -0
- package/skills/design-pr-review/SKILL.md +6 -0
- package/skills/design-system-builder/PLAYBOOK.md +218 -0
- package/skills/design-system-builder/SKILL.md +6 -0
- package/skills/design-system-qa/PLAYBOOK.md +163 -0
- package/skills/design-system-qa/SKILL.md +6 -0
- package/skills/document-author/PLAYBOOK.md +167 -0
- package/skills/document-author/SKILL.md +6 -0
- package/skills/figma-token-sync/PLAYBOOK.md +149 -0
- package/skills/figma-token-sync/SKILL.md +6 -0
- package/skills/game-ui-designer/PLAYBOOK.md +209 -0
- package/skills/game-ui-designer/SKILL.md +6 -0
- package/skills/handoff-spec/PLAYBOOK.md +170 -0
- package/skills/handoff-spec/SKILL.md +6 -0
- package/skills/illustration-designer/PLAYBOOK.md +166 -0
- package/skills/illustration-designer/SKILL.md +6 -0
- package/skills/motion-designer/PLAYBOOK.md +223 -0
- package/skills/motion-designer/SKILL.md +6 -0
- package/skills/print-designer/PLAYBOOK.md +209 -0
- package/skills/print-designer/SKILL.md +6 -0
- package/skills/slide-deck-author/PLAYBOOK.md +198 -0
- package/skills/slide-deck-author/SKILL.md +6 -0
- package/skills/spatial-designer/PLAYBOOK.md +238 -0
- package/skills/spatial-designer/SKILL.md +6 -0
- package/skills/ux-audit/PLAYBOOK.md +142 -0
- package/skills/ux-audit/SKILL.md +6 -0
- package/skills/video-designer/PLAYBOOK.md +240 -0
- package/skills/video-designer/SKILL.md +6 -0
- package/skills/website-improvement/PLAYBOOK.md +118 -0
- package/skills/website-improvement/SKILL.md +6 -0
- package/skills/website-improvement/TEMPLATE.md +103 -0
- package/tools/audit/changelog-generate.py +176 -0
- package/tools/audit/check-coverage.py +483 -0
- package/tools/audit/doctor_assertions.py +256 -0
- package/tools/audit/example-qa.py +108 -0
- package/tools/audit/frontmatter-check.py +199 -0
- package/tools/audit/integration-check.py +95 -0
- package/tools/audit/korean-copy-check.py +161 -0
- package/tools/audit/link-check.py +146 -0
- package/tools/audit/local-ci.py +558 -0
- package/tools/audit/package-contents.py +723 -0
- package/tools/audit/package-smoke.py +22443 -0
- package/tools/audit/raw-hex-check.py +252 -0
- package/tools/audit/registry-smoke.py +8188 -0
- package/tools/audit/release-metadata.py +9832 -0
- package/tools/audit/run-all.py +351 -0
- package/tools/audit/smoke_assertions.py +12742 -0
- package/tools/audit/stability-review.py +332 -0
- package/tools/audit/stale-check.py +156 -0
- package/tools/migrations/add-version-frontmatter.py +132 -0
- package/tools/migrations/bump-last-updated.py +131 -0
- package/tools/migrations/promote-stability.py +172 -0
- package/tools/preview/README.md +58 -0
- package/tools/preview/render-tokens.py +454 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
---
|
|
3
|
+
title: Motion choreography (multi-element coordination)
|
|
4
|
+
applies_to: [motion, animation, page-transition, complex-ui]
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
last_updated: 2026-05
|
|
7
|
+
stability: stable
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Motion choreography
|
|
11
|
+
|
|
12
|
+
When multiple elements animate together, they need to be **choreographed** — sequenced, staggered, hierarchical. Random simultaneous motion looks chaotic. This is the floor for orchestrating multiple animations.
|
|
13
|
+
|
|
14
|
+
## Core principles
|
|
15
|
+
|
|
16
|
+
### 1. Sequence, don't unison
|
|
17
|
+
|
|
18
|
+
Don't fire all animations at 0ms. Stagger them.
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Bad (unison):
|
|
22
|
+
All cards: 0ms → fade in over 250ms
|
|
23
|
+
|
|
24
|
+
Good (staggered):
|
|
25
|
+
Card 1: 0ms → fade in
|
|
26
|
+
Card 2: 50ms → fade in
|
|
27
|
+
Card 3: 100ms → fade in
|
|
28
|
+
Total: still ~350ms but reads as composed
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Stagger 30–80ms per item is the sweet spot. Larger feels glacial; smaller feels simultaneous.
|
|
32
|
+
|
|
33
|
+
### 2. Establish a primary
|
|
34
|
+
|
|
35
|
+
When multiple things animate, there's a **lead**. Other elements support.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Hero entrance:
|
|
39
|
+
- Heading appears first (the lead)
|
|
40
|
+
- Sub-headline 100ms later
|
|
41
|
+
- CTAs 200ms later
|
|
42
|
+
- Visual 300ms later (last; supports the message)
|
|
43
|
+
|
|
44
|
+
Reading order matches motion order.
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 3. Anchor with a focal point
|
|
48
|
+
|
|
49
|
+
Animation should originate from a meaningful place:
|
|
50
|
+
- Modal: from center, or from the trigger button (transform-origin)
|
|
51
|
+
- List item entering: from top (new) or bottom (just-added)
|
|
52
|
+
- Drawer: from edge it slides in from
|
|
53
|
+
- Hero CTA: from the primary's position
|
|
54
|
+
|
|
55
|
+
Random origins read as "AI-generated motion" (the wrong kind).
|
|
56
|
+
|
|
57
|
+
## Five choreography patterns
|
|
58
|
+
|
|
59
|
+
### 1. Cascade (waterfall)
|
|
60
|
+
|
|
61
|
+
Items animate in sequence, like a waterfall.
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Card 1 enters at 0ms
|
|
65
|
+
Card 2 enters at 50ms
|
|
66
|
+
Card 3 enters at 100ms
|
|
67
|
+
...
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Use for: list reveals, grid fills, multi-step forms.
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
{children.map((c, i) => (
|
|
74
|
+
<motion.div
|
|
75
|
+
key={c.id}
|
|
76
|
+
initial={{ opacity: 0, y: 8 }}
|
|
77
|
+
animate={{ opacity: 1, y: 0 }}
|
|
78
|
+
transition={{ delay: i * 0.05, duration: 0.25 }}
|
|
79
|
+
>
|
|
80
|
+
{c}
|
|
81
|
+
</motion.div>
|
|
82
|
+
))}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 2. FLIP (First, Last, Invert, Play)
|
|
86
|
+
|
|
87
|
+
When an element changes position (different parent, layout shift), animate the transition smoothly.
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
1. First: record element's position before change
|
|
91
|
+
2. Last: render new layout (element at new position)
|
|
92
|
+
3. Invert: apply transform that puts element back at "First" position
|
|
93
|
+
4. Play: animate transform to identity (transform: 0)
|
|
94
|
+
|
|
95
|
+
Result: element appears to smoothly move from old to new position.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Used in:
|
|
99
|
+
- Reordering lists (drag-and-drop result)
|
|
100
|
+
- Layout changes (collapse/expand)
|
|
101
|
+
- Hero / shared-element transitions
|
|
102
|
+
|
|
103
|
+
Tools that handle FLIP automatically:
|
|
104
|
+
- Framer Motion `layout` prop / `layoutId`
|
|
105
|
+
- React Aria's drag-and-drop
|
|
106
|
+
- Vue's `<transition-group>`
|
|
107
|
+
- View Transitions API (web-native)
|
|
108
|
+
|
|
109
|
+
### 3. View Transitions API (web-native)
|
|
110
|
+
|
|
111
|
+
Modern browsers (Chrome 111+, Safari 18+, Edge 111+) ship `document.startViewTransition()`:
|
|
112
|
+
|
|
113
|
+
```js
|
|
114
|
+
function navigate(newRoute) {
|
|
115
|
+
if (!document.startViewTransition) {
|
|
116
|
+
// Fallback: just update
|
|
117
|
+
updateDOM(newRoute);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
document.startViewTransition(() => {
|
|
121
|
+
updateDOM(newRoute);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Browser handles the cross-fade automatically. Pair with `view-transition-name` CSS for shared elements:
|
|
127
|
+
|
|
128
|
+
```css
|
|
129
|
+
.product-image {
|
|
130
|
+
view-transition-name: product-image;
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Now navigating from list to detail: the image automatically morphs from list position to detail position.
|
|
135
|
+
|
|
136
|
+
### 4. Choreographed sequences (storytelling)
|
|
137
|
+
|
|
138
|
+
A series of coordinated animations that tell a story.
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
Marketing storyboard:
|
|
142
|
+
Scene 1 (0-1s): "Sketch your idea" — pencil draws line
|
|
143
|
+
Scene 2 (1-2s): "Add color" — palette appears, fills shapes
|
|
144
|
+
Scene 3 (2-3s): "Share with team" — cursors stream in, comments appear
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Tools:
|
|
148
|
+
- **Lottie** — designer creates in After Effects, ships as JSON
|
|
149
|
+
- **Rive** — designer creates with state machine, runtime interactive
|
|
150
|
+
- **GSAP timelines** — engineer codes the sequence
|
|
151
|
+
- **CSS keyframes + JS triggers** — for simple sequences
|
|
152
|
+
|
|
153
|
+
For long sequences (3+ seconds): Lottie or Rive (designer-led).
|
|
154
|
+
For short (< 1s) coordinated: Framer Motion or GSAP (engineer-led).
|
|
155
|
+
|
|
156
|
+
### 5. Reactive choreography (state machines)
|
|
157
|
+
|
|
158
|
+
Animations driven by **state**, not duration:
|
|
159
|
+
- Mouse position → cursor effect
|
|
160
|
+
- Scroll position → parallax + reveals
|
|
161
|
+
- Form state → field validation animation
|
|
162
|
+
- Page state → skeleton vs content vs error
|
|
163
|
+
|
|
164
|
+
Tools:
|
|
165
|
+
- **Rive** state machine (visual, designer-friendly)
|
|
166
|
+
- **XState** + Framer Motion (engineer-friendly)
|
|
167
|
+
- **Spring physics** libraries (react-spring) for natural motion responding to state
|
|
168
|
+
|
|
169
|
+
## Stagger formulas
|
|
170
|
+
|
|
171
|
+
| Items | Stagger ms | Total time |
|
|
172
|
+
| --- | --- | --- |
|
|
173
|
+
| 3 | 80ms | 240ms + each item's duration |
|
|
174
|
+
| 5 | 60ms | 300ms |
|
|
175
|
+
| 10 | 40ms | 400ms |
|
|
176
|
+
| 20+ | 20–30ms | 500ms+ (cap; longer is glacial) |
|
|
177
|
+
|
|
178
|
+
Rule: total animation time of all items shouldn't exceed ~600ms. If it does, you're animating too many items.
|
|
179
|
+
|
|
180
|
+
## Choreographing exits
|
|
181
|
+
|
|
182
|
+
Exits are the underdesigned half. Most teams design entrances and forget exits.
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
Modal open: 250ms ease-out (slow, settle in)
|
|
186
|
+
Modal close: 200ms ease-in (faster, accelerates away)
|
|
187
|
+
|
|
188
|
+
The exit is faster than entrance — feels right.
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
For lists:
|
|
192
|
+
- Removed item: slide-out + fade
|
|
193
|
+
- New item appears in the gap: 100–150ms
|
|
194
|
+
|
|
195
|
+
```ts
|
|
196
|
+
<AnimatePresence mode="popLayout">
|
|
197
|
+
{items.map(item => (
|
|
198
|
+
<motion.div
|
|
199
|
+
key={item.id}
|
|
200
|
+
layout
|
|
201
|
+
initial={{ opacity: 0, y: -8 }}
|
|
202
|
+
animate={{ opacity: 1, y: 0 }}
|
|
203
|
+
exit={{ opacity: 0, x: -100, transition: { duration: 0.2 } }}
|
|
204
|
+
>
|
|
205
|
+
{item}
|
|
206
|
+
</motion.div>
|
|
207
|
+
))}
|
|
208
|
+
</AnimatePresence>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Choreographing across components
|
|
212
|
+
|
|
213
|
+
Multi-component sequences (e.g., dashboard onboarding):
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
0ms: Header enters (top-down)
|
|
217
|
+
200ms: Sidebar enters (left-right)
|
|
218
|
+
400ms: Content area starts skeleton
|
|
219
|
+
600ms: Skeleton replaced with real content (cascade)
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Tools:
|
|
223
|
+
- Framer Motion `<MotionConfig>` for shared transition defaults
|
|
224
|
+
- GSAP `gsap.timeline()` for explicit time control
|
|
225
|
+
|
|
226
|
+
## Timing diagrams
|
|
227
|
+
|
|
228
|
+
For complex sequences, document with a timing diagram:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
Time: 0ms 200ms 400ms 600ms 800ms 1000ms
|
|
232
|
+
Header: ▕━━━━▏
|
|
233
|
+
Side: ▕━━━━▏
|
|
234
|
+
Skel: ▕━━━━━━━━━━━━━━━━━━━━━━▏
|
|
235
|
+
Content: ▕━━━━▏
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
When designing, sketch this. Helps spot conflicts and pacing issues.
|
|
239
|
+
|
|
240
|
+
## Performance for choreographed motion
|
|
241
|
+
|
|
242
|
+
Multiple simultaneous animations × multiple frames per second = expensive.
|
|
243
|
+
|
|
244
|
+
Rules:
|
|
245
|
+
- Animate `transform` and `opacity` only (GPU layer).
|
|
246
|
+
- Use `will-change: transform` on heavy items (sparingly — kills GPU memory if overused).
|
|
247
|
+
- Batch DOM reads + writes (avoid layout thrashing).
|
|
248
|
+
- For 60+ items: virtualize or fall back to instant.
|
|
249
|
+
|
|
250
|
+
For Framer Motion: `LazyMotion` + `domAnimation` ships smaller bundle:
|
|
251
|
+
|
|
252
|
+
```ts
|
|
253
|
+
import { LazyMotion, domAnimation, m } from "framer-motion";
|
|
254
|
+
|
|
255
|
+
<LazyMotion features={domAnimation}>
|
|
256
|
+
<m.div ... />
|
|
257
|
+
</LazyMotion>
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Reduced motion in choreographed sequences
|
|
261
|
+
|
|
262
|
+
For sequences with reduced motion preference:
|
|
263
|
+
- Skip stagger (everything appears together).
|
|
264
|
+
- Skip slide / scale / parallax.
|
|
265
|
+
- Keep cross-fade (opacity is OK).
|
|
266
|
+
- Skip Hero / FLIP transitions (instant layout change).
|
|
267
|
+
|
|
268
|
+
Don't try to "preserve choreography" — just disable.
|
|
269
|
+
|
|
270
|
+
## Korean motion language
|
|
271
|
+
|
|
272
|
+
For Korean fintech / consumer apps:
|
|
273
|
+
- **Toss style**: smooth, decisive, no overshoot. Stagger 50ms typical.
|
|
274
|
+
- **KakaoBank style**: slightly warmer, occasional gentle overshoot. Stagger 60ms.
|
|
275
|
+
- **Naver style**: less choreographed; more direct.
|
|
276
|
+
|
|
277
|
+
Avoid Western "playful Disney-style" sequencing for Korean financial apps — reads as toy-like.
|
|
278
|
+
|
|
279
|
+
## Don't
|
|
280
|
+
|
|
281
|
+
- Don't fire 10+ animations simultaneously without staggering.
|
|
282
|
+
- Don't use 200ms+ stagger (feels glacial).
|
|
283
|
+
- Don't choreograph for the sake of motion. Reduce to what serves the message.
|
|
284
|
+
- Don't animate `width` / `height` / `left` / `top` (layout-triggering, janky).
|
|
285
|
+
- Don't ignore exits.
|
|
286
|
+
- Don't over-spring with bouncy curves on financial / serious surfaces.
|
|
287
|
+
- Don't design choreography that breaks under reduced motion.
|
|
288
|
+
|
|
289
|
+
## Cross-reference
|
|
290
|
+
|
|
291
|
+
- [`knowledge/motion/principles.md`](principles.md) — durations + easings
|
|
292
|
+
- [`knowledge/motion/marketing-motion.md`](marketing-motion.md) — landing-page choreography
|
|
293
|
+
- [`knowledge/motion/app-loading-sequences.md`](app-loading-sequences.md) — splash + route transitions
|
|
294
|
+
- [`knowledge/motion/micro-interactions.md`](micro-interactions.md) — single-element motions
|
|
295
|
+
- [`knowledge/motion/motion-tools.md`](motion-tools.md) — Framer Motion / GSAP / Lottie / Rive
|
|
296
|
+
- [View Transitions API](https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API)
|
|
297
|
+
- [Framer Motion docs](https://www.framer.com/motion/)
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
---
|
|
3
|
+
title: Marketing motion (landing pages, ads, hero animations)
|
|
4
|
+
applies_to: [marketing, landing, hero, ads]
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
last_updated: 2026-05
|
|
7
|
+
stability: stable
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Marketing motion
|
|
11
|
+
|
|
12
|
+
Motion in marketing differs from motion in product UI. Product motion is functional (navigate, confirm, focus). Marketing motion is **persuasive** — it stops the scroll, reveals the value prop, drives emotional response.
|
|
13
|
+
|
|
14
|
+
Different rules. This is the floor.
|
|
15
|
+
|
|
16
|
+
## Three intents
|
|
17
|
+
|
|
18
|
+
| Intent | Goal |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| **Stop the scroll** | Catch attention before user bounces |
|
|
21
|
+
| **Reveal value** | Tell the product story through motion |
|
|
22
|
+
| **Anchor brand** | Motion as part of brand recognition |
|
|
23
|
+
|
|
24
|
+
A marketing animation should hit at least one. Animation that doesn't is decoration — cut it.
|
|
25
|
+
|
|
26
|
+
## Six marketing motion patterns
|
|
27
|
+
|
|
28
|
+
### 1. Hero entrance (above-the-fold reveal)
|
|
29
|
+
|
|
30
|
+
The hero text and visual fade-in / slide-in on page load.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
On load:
|
|
34
|
+
0ms — hero hidden
|
|
35
|
+
50ms — sub-headline starts fading in (translateY +12px → 0)
|
|
36
|
+
100ms — headline starts (offset by 50ms)
|
|
37
|
+
250ms — primary CTA appears
|
|
38
|
+
500ms — visual / illustration enters (scale 0.95 → 1 + opacity)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Total budget: 600–800ms. Done.
|
|
42
|
+
|
|
43
|
+
Don't:
|
|
44
|
+
- Don't make hero entrance > 1s (user is waiting).
|
|
45
|
+
- Don't auto-replay on scroll.
|
|
46
|
+
- Don't entrance from far off-screen (cheesy).
|
|
47
|
+
|
|
48
|
+
### 2. Scroll-triggered reveals
|
|
49
|
+
|
|
50
|
+
Sections animate in as user scrolls them into view. The classic landing-page motion pattern.
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
[scroll position]
|
|
54
|
+
- Section enters viewport at 80% threshold
|
|
55
|
+
- 200ms fade + 16px translateY → 0
|
|
56
|
+
- Stagger child elements (cards, list items) by 50–80ms
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Use `IntersectionObserver` (or library like Framer Motion / GSAP ScrollTrigger).
|
|
60
|
+
|
|
61
|
+
Rules:
|
|
62
|
+
- **Trigger once per element**. Not on every up/down scroll.
|
|
63
|
+
- **Stagger small** (50–80ms). Larger feels slow.
|
|
64
|
+
- **Don't reveal everything**. Body text already-rendered is fine; reserve animation for sections / cards / images.
|
|
65
|
+
|
|
66
|
+
### 3. Parallax
|
|
67
|
+
|
|
68
|
+
Background elements move at different speeds than foreground.
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
foreground: scroll at 1× rate
|
|
72
|
+
background image: scroll at 0.5× rate (slower, "deeper")
|
|
73
|
+
floating shape: scroll at 1.5× rate (faster, "closer")
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Implementation: CSS `transform: translateY(var(--scroll))` driven by JS scroll listener, OR `background-attachment: fixed` (limited).
|
|
77
|
+
|
|
78
|
+
When to use:
|
|
79
|
+
- Storytelling pages with strong visual narrative.
|
|
80
|
+
- Hero sections with depth.
|
|
81
|
+
|
|
82
|
+
When to skip:
|
|
83
|
+
- Content-heavy sites (parallax distracts from reading).
|
|
84
|
+
- Mobile (most parallax breaks on iOS Safari).
|
|
85
|
+
- Performance-sensitive (parallax requires constant scroll repaints).
|
|
86
|
+
|
|
87
|
+
### 4. Choreographed sequences (storytelling)
|
|
88
|
+
|
|
89
|
+
A series of coordinated animations that tell a story. Common in product walkthroughs:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
"Sketch your idea" → screen shows pencil drawing
|
|
93
|
+
"Add color" → palette appears, color fills
|
|
94
|
+
"Share with team" → cursors appear, comments stream in
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Tools: Lottie / Rive (designer-led), Framer Motion / GSAP (engineer-led).
|
|
98
|
+
|
|
99
|
+
For Korean fintech: Toss's "money flows from one account to another" animations are canonical examples.
|
|
100
|
+
|
|
101
|
+
### 5. Hover / cursor-driven
|
|
102
|
+
|
|
103
|
+
Elements respond to cursor position or hover:
|
|
104
|
+
- Magnetic buttons (button slightly tracks cursor near it)
|
|
105
|
+
- 3D card tilt on cursor (popular 2023+)
|
|
106
|
+
- Cursor effects (custom cursor, trailing dot)
|
|
107
|
+
|
|
108
|
+
Cool but use sparingly:
|
|
109
|
+
- 3D tilt on every card = performance death.
|
|
110
|
+
- Custom cursors break a11y if wrongly done.
|
|
111
|
+
- Magnetic effects only work on desktop.
|
|
112
|
+
|
|
113
|
+
### 6. Loop animations / ambient motion
|
|
114
|
+
|
|
115
|
+
Background animations that loop continuously:
|
|
116
|
+
- Floating geometric shapes
|
|
117
|
+
- Animated gradients
|
|
118
|
+
- Particle systems
|
|
119
|
+
|
|
120
|
+
Risk: visual noise, performance, distraction. Use ONLY if motion IS part of the brand identity.
|
|
121
|
+
|
|
122
|
+
## Tools comparison
|
|
123
|
+
|
|
124
|
+
| Tool | Use | Skill needed |
|
|
125
|
+
| --- | --- | --- |
|
|
126
|
+
| **CSS animations** | Simple entrances, hovers | Low |
|
|
127
|
+
| **Framer Motion** | React-based product motion + marketing | Medium |
|
|
128
|
+
| **GSAP** | Complex sequences, timeline-based | Medium-high |
|
|
129
|
+
| **Lottie** | After Effects → web (designer-led) | Designer + dev |
|
|
130
|
+
| **Rive** | Interactive animations (state-machine) | Designer + dev |
|
|
131
|
+
| **Three.js / WebGL** | 3D scenes | High |
|
|
132
|
+
| **Spline** | 3D scenes (designer-friendly) | Designer-led |
|
|
133
|
+
|
|
134
|
+
For most marketing sites: Framer Motion + Lottie covers 90%. See [`motion-tools.md`](motion-tools.md) for full comparison.
|
|
135
|
+
|
|
136
|
+
## Performance budget
|
|
137
|
+
|
|
138
|
+
Marketing motion runs in browsers across devices. Performance matters:
|
|
139
|
+
|
|
140
|
+
| Metric | Budget |
|
|
141
|
+
| --- | --- |
|
|
142
|
+
| First Contentful Paint | < 1.8s |
|
|
143
|
+
| Largest Contentful Paint | < 2.5s (don't block on motion) |
|
|
144
|
+
| Cumulative Layout Shift | < 0.1 (motion shouldn't cause layout shift) |
|
|
145
|
+
| Total animations on page | < 10 simultaneously |
|
|
146
|
+
| Animation framerate | 60fps target |
|
|
147
|
+
|
|
148
|
+
Tips:
|
|
149
|
+
- Animate `transform` and `opacity` only (GPU-composited).
|
|
150
|
+
- Avoid animating `width`, `height`, `top`, `left` (layout-triggering).
|
|
151
|
+
- Lazy-load heavy animations below the fold.
|
|
152
|
+
- Provide static fallbacks for `prefers-reduced-motion`.
|
|
153
|
+
|
|
154
|
+
## Reduced motion
|
|
155
|
+
|
|
156
|
+
Critical for marketing — many users have it on:
|
|
157
|
+
|
|
158
|
+
```css
|
|
159
|
+
@media (prefers-reduced-motion: reduce) {
|
|
160
|
+
*, *::before, *::after {
|
|
161
|
+
animation-duration: 0.01ms !important;
|
|
162
|
+
transition-duration: 0.01ms !important;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
But blanket-killing all motion can be too much. Better:
|
|
168
|
+
|
|
169
|
+
| Animation | When motion reduced |
|
|
170
|
+
| --- | --- |
|
|
171
|
+
| Fade-in entrances | Keep (opacity is fine) |
|
|
172
|
+
| Translate-Y entrances | Convert to instant or pure fade |
|
|
173
|
+
| Parallax | Disable |
|
|
174
|
+
| Scroll-driven sequences | Show all states at once |
|
|
175
|
+
| Loop animations | Pause |
|
|
176
|
+
| Hover tilt | Disable |
|
|
177
|
+
| Auto-play hero video | Show poster image instead |
|
|
178
|
+
|
|
179
|
+
## Korean marketing motion conventions
|
|
180
|
+
|
|
181
|
+
Korean fintech / consumer landing pages trend toward:
|
|
182
|
+
- **Toss-style** — minimal, smooth, brand-color-led, restrained
|
|
183
|
+
- **Kakao-style** — playful, character-driven, warmer
|
|
184
|
+
- **Naver-style** — denser, less motion
|
|
185
|
+
|
|
186
|
+
For most Korean B2C: lean Toss-style — restrained, fast, smooth. Heavy motion reads as foreign / over-designed.
|
|
187
|
+
|
|
188
|
+
## Brand motion as identity
|
|
189
|
+
|
|
190
|
+
Some brands have a defined "motion language":
|
|
191
|
+
- Apple: smooth, decisive, rubber-band
|
|
192
|
+
- Stripe: refined, geometric, minimal
|
|
193
|
+
- Linear: fast, snappy, decisive
|
|
194
|
+
- Toss: gentle, calming, money-friendly
|
|
195
|
+
|
|
196
|
+
Define yours:
|
|
197
|
+
- **Easing curves** (rubber-band? smooth? snappy?)
|
|
198
|
+
- **Duration tier preferences** (fast vs medium)
|
|
199
|
+
- **Choreography style** (staggered? unison? cascading?)
|
|
200
|
+
- **Reaction to interaction** (eager vs reserved)
|
|
201
|
+
|
|
202
|
+
Document in your brand kit alongside color and typography.
|
|
203
|
+
|
|
204
|
+
## Common marketing motion mistakes
|
|
205
|
+
|
|
206
|
+
- **Motion as decoration**, no purpose.
|
|
207
|
+
- **Auto-play heavy video** without poster fallback.
|
|
208
|
+
- **Hero entrance > 1s** — feels slow.
|
|
209
|
+
- **Stagger > 100ms per item** — feels glacial.
|
|
210
|
+
- **Animating layout properties** (width, height) — janky.
|
|
211
|
+
- **No reduced motion** support.
|
|
212
|
+
- **Motion that interferes with reading** (text moving while reading).
|
|
213
|
+
- **Custom cursor that hides the OS cursor** entirely — accessibility break.
|
|
214
|
+
- **Looping motion at 0.5fps** to "save battery" — looks broken.
|
|
215
|
+
|
|
216
|
+
## Cross-reference
|
|
217
|
+
|
|
218
|
+
- [`knowledge/motion/principles.md`](principles.md) — duration tiers, easings (foundation)
|
|
219
|
+
- [`knowledge/motion/app-loading-sequences.md`](app-loading-sequences.md) — splash + app load
|
|
220
|
+
- [`knowledge/motion/choreography-depth.md`](choreography-depth.md) — multi-element coordination
|
|
221
|
+
- [`knowledge/motion/motion-tools.md`](motion-tools.md) — tool comparison
|
|
222
|
+
- [`knowledge/patterns/landing-hero-design.md`](../patterns/landing-hero-design.md) — hero strategy
|
|
223
|
+
- [`knowledge/patterns/landing-page-patterns.md`](../patterns/landing-page-patterns.md)
|