{
  "kind": "catalog",
  "schemaVersion": 1,
  "schemaUrl": "https://motion-lexicon.pages.dev/data/v1/schema.json",
  "project": {
    "name": "Motion Lexicon",
    "description": {
      "zh": "从模糊描述推荐候选，并提供可视、可调、可复制配方的界面动效词典。",
      "en": "An interface motion finder that turns fuzzy descriptions into comparable, tunable, and copy-ready recipes."
    },
    "siteUrl": "https://motion-lexicon.pages.dev",
    "repositoryUrl": "https://github.com/Ryan-yang125/motion-lexicon",
    "locales": [
      "zh",
      "en"
    ],
    "cliCommand": "npx -y github:Ryan-yang125/motion-lexicon#v0.2.0",
    "skillCommand": "npx skills add Ryan-yang125/motion-lexicon --skill motion-lexicon"
  },
  "endpoints": {
    "finder": {
      "zh": "https://motion-lexicon.pages.dev/zh/finder/",
      "en": "https://motion-lexicon.pages.dev/en/finder/"
    },
    "catalog": "https://motion-lexicon.pages.dev/data/v1/catalog.json",
    "vocabulary": "https://motion-lexicon.pages.dev/data/v1/vocabulary.json",
    "recipeTemplate": "https://motion-lexicon.pages.dev/data/v1/recipes/{id}.json",
    "schema": "https://motion-lexicon.pages.dev/data/v1/schema.json",
    "pricing": "https://motion-lexicon.pages.dev/pricing.txt",
    "llms": "https://motion-lexicon.pages.dev/llms.txt",
    "llmsFull": "https://motion-lexicon.pages.dev/llms-full.txt"
  },
  "counts": {
    "categories": 12,
    "recipes": 44,
    "vocabularyTerms": 91,
    "aliases": 47
  },
  "categories": [
    {
      "id": "entrances",
      "order": 1,
      "name": {
        "zh": "入场与退场",
        "en": "Entrances & exits"
      },
      "description": {
        "zh": "元素出现、离开和被揭示时的基础动效语言。",
        "en": "Foundational motion language for elements appearing, leaving, and being revealed."
      },
      "recipeCount": 4,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/entrances/",
        "en": "https://motion-lexicon.pages.dev/en/entrances/"
      }
    },
    {
      "id": "sequencing",
      "order": 2,
      "name": {
        "zh": "编排与时间",
        "en": "Sequencing & timing"
      },
      "description": {
        "zh": "组织多个元素、多个时刻和时间节奏的动效词汇。",
        "en": "Vocabulary for organizing multiple elements, moments, and timing relationships."
      },
      "recipeCount": 3,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/sequencing/",
        "en": "https://motion-lexicon.pages.dev/en/sequencing/"
      }
    },
    {
      "id": "transforms",
      "order": 3,
      "name": {
        "zh": "位移与变换",
        "en": "Movement & transforms"
      },
      "description": {
        "zh": "改变位置、尺寸、角度、透视和变换原点的词汇。",
        "en": "Terms for changing position, size, angle, perspective, and transform origin."
      },
      "recipeCount": 3,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/transforms/",
        "en": "https://motion-lexicon.pages.dev/en/transforms/"
      }
    },
    {
      "id": "state-transitions",
      "order": 4,
      "name": {
        "zh": "状态过渡",
        "en": "State transitions"
      },
      "description": {
        "zh": "连接状态、视图和元素身份的过渡词汇。",
        "en": "Terms for connecting states, views, and element identity."
      },
      "recipeCount": 4,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/state-transitions/",
        "en": "https://motion-lexicon.pages.dev/en/state-transitions/"
      }
    },
    {
      "id": "scroll",
      "order": 5,
      "name": {
        "zh": "滚动动效",
        "en": "Scroll motion"
      },
      "description": {
        "zh": "与滚动位置、视口进入和页面导航相关的动效词汇。",
        "en": "Terms tied to scroll position, viewport entry, and page navigation."
      },
      "recipeCount": 4,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/scroll/",
        "en": "https://motion-lexicon.pages.dev/en/scroll/"
      }
    },
    {
      "id": "feedback",
      "order": 6,
      "name": {
        "zh": "反馈与交互",
        "en": "Feedback & interaction"
      },
      "description": {
        "zh": "响应点击、触摸、拖拽和错误状态的动效词汇。",
        "en": "Terms for responding to press, touch, drag, and error states."
      },
      "recipeCount": 7,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/feedback/",
        "en": "https://motion-lexicon.pages.dev/en/feedback/"
      }
    },
    {
      "id": "easing",
      "order": 7,
      "name": {
        "zh": "缓动",
        "en": "Easing"
      },
      "description": {
        "zh": "描述速度如何加速、减速和保持节奏的词汇。",
        "en": "Terms that describe how speed accelerates, decelerates, and holds rhythm."
      },
      "recipeCount": 1,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/easing/",
        "en": "https://motion-lexicon.pages.dev/en/easing/"
      }
    },
    {
      "id": "springs",
      "order": 8,
      "name": {
        "zh": "弹簧动效",
        "en": "Spring animations"
      },
      "description": {
        "zh": "用质量、阻尼、速度和弹性描述物理式动效的词汇。",
        "en": "Terms for physics-based motion with mass, damping, velocity, and bounce."
      },
      "recipeCount": 1,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/springs/",
        "en": "https://motion-lexicon.pages.dev/en/springs/"
      }
    },
    {
      "id": "loops",
      "order": 9,
      "name": {
        "zh": "循环与环境动效",
        "en": "Looping & ambient motion"
      },
      "description": {
        "zh": "自动运行、循环播放和营造轻微生命感的动效词汇。",
        "en": "Terms for autonomous, looping, and ambient motion."
      },
      "recipeCount": 4,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/loops/",
        "en": "https://motion-lexicon.pages.dev/en/loops/"
      }
    },
    {
      "id": "polish-effects",
      "order": 10,
      "name": {
        "zh": "润色与效果",
        "en": "Polish & effects"
      },
      "description": {
        "zh": "让界面更精致、信息变化更清楚的小型效果词汇。",
        "en": "Terms for small effects that make interfaces clearer and more polished."
      },
      "recipeCount": 7,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/polish-effects/",
        "en": "https://motion-lexicon.pages.dev/en/polish-effects/"
      }
    },
    {
      "id": "performance",
      "order": 11,
      "name": {
        "zh": "性能",
        "en": "Performance"
      },
      "description": {
        "zh": "判断动效是否流畅、是否会卡顿和如何优化渲染的词汇。",
        "en": "Terms for judging smoothness, jank, and rendering performance."
      },
      "recipeCount": 2,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/performance/",
        "en": "https://motion-lexicon.pages.dev/en/performance/"
      }
    },
    {
      "id": "principles",
      "order": 12,
      "name": {
        "zh": "原则",
        "en": "Principles"
      },
      "description": {
        "zh": "决定什么时候该动、该怎么动和如何保护用户体验的原则。",
        "en": "Principles for deciding when to animate, how to animate, and how to protect users."
      },
      "recipeCount": 4,
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/principles/",
        "en": "https://motion-lexicon.pages.dev/en/principles/"
      }
    }
  ],
  "recipes": [
    {
      "id": "fade-in-fade-out",
      "categoryId": "entrances",
      "family": "entrance",
      "surfaceType": "component",
      "name": {
        "zh": "淡入 / 淡出",
        "en": "Fade in / Fade out"
      },
      "summary": {
        "zh": "用透明度建立或移除元素，适合低干扰的内容出现与消失。",
        "en": "Introduce or remove an element with opacity for low-distraction state changes."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/entrances/fade-in-fade-out/",
        "en": "https://motion-lexicon.pages.dev/en/entrances/fade-in-fade-out/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/fade-in-fade-out.json"
    },
    {
      "id": "slide-in",
      "categoryId": "entrances",
      "family": "entrance",
      "surfaceType": "component",
      "name": {
        "zh": "滑入",
        "en": "Slide in"
      },
      "summary": {
        "zh": "沿明确方向引入内容，让新元素与界面空间关系保持清楚。",
        "en": "Bring content in from a clear direction so its spatial relationship stays legible."
      },
      "aliases": [
        "enter-exit"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/entrances/slide-in/",
        "en": "https://motion-lexicon.pages.dev/en/entrances/slide-in/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/slide-in.json"
    },
    {
      "id": "scale-in",
      "categoryId": "entrances",
      "family": "entrance",
      "surfaceType": "component",
      "name": {
        "zh": "缩放入场",
        "en": "Scale in"
      },
      "summary": {
        "zh": "从接近最终尺寸的位置放大元素，并可切换为带轻微过冲的 Pop in。",
        "en": "Scale from near the final size, with an optional slight overshoot for Pop in."
      },
      "aliases": [
        "pop-in"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/entrances/scale-in/",
        "en": "https://motion-lexicon.pages.dev/en/entrances/scale-in/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/scale-in.json"
    },
    {
      "id": "reveal",
      "categoryId": "entrances",
      "family": "entrance",
      "surfaceType": "component",
      "name": {
        "zh": "揭示",
        "en": "Reveal"
      },
      "summary": {
        "zh": "通过裁切与轻微位移逐步展示内容，适合标题、媒体和分段内容。",
        "en": "Reveal content with clipping and slight travel for headings, media, and sections."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/entrances/reveal/",
        "en": "https://motion-lexicon.pages.dev/en/entrances/reveal/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/reveal.json"
    },
    {
      "id": "stagger",
      "categoryId": "sequencing",
      "family": "timeline",
      "surfaceType": "component",
      "name": {
        "zh": "交错动画",
        "en": "Stagger"
      },
      "summary": {
        "zh": "让列表项按短间隔依次进入，表达顺序并保持整体节奏。",
        "en": "Introduce list items at short intervals to communicate order and rhythm."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/sequencing/stagger/",
        "en": "https://motion-lexicon.pages.dev/en/sequencing/stagger/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/stagger.json"
    },
    {
      "id": "keyframes",
      "categoryId": "sequencing",
      "family": "timeline",
      "surfaceType": "playground",
      "name": {
        "zh": "关键帧",
        "en": "Keyframes"
      },
      "summary": {
        "zh": "编排多阶段关键帧、插值、步进与结束状态。",
        "en": "Compose multi-stage keyframes, interpolation, stepped motion, and fill behavior."
      },
      "aliases": [
        "interpolation-tween",
        "orchestration",
        "fill-mode",
        "stepped-animation"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/sequencing/keyframes/",
        "en": "https://motion-lexicon.pages.dev/en/sequencing/keyframes/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/keyframes.json"
    },
    {
      "id": "duration",
      "categoryId": "sequencing",
      "family": "timeline",
      "surfaceType": "playground",
      "name": {
        "zh": "时长",
        "en": "Duration"
      },
      "summary": {
        "zh": "比较时长与延迟对响应速度、节奏和可感知等待的影响。",
        "en": "Compare how duration and delay affect response, rhythm, and perceived waiting."
      },
      "aliases": [
        "delay"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/sequencing/duration/",
        "en": "https://motion-lexicon.pages.dev/en/sequencing/duration/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/duration.json"
    },
    {
      "id": "translate",
      "categoryId": "transforms",
      "family": "transform",
      "surfaceType": "playground",
      "name": {
        "zh": "位移",
        "en": "Translate"
      },
      "summary": {
        "zh": "组合位移、缩放、旋转、倾斜、透视和变换原点。",
        "en": "Combine translation, scale, rotation, skew, perspective, and transform origin."
      },
      "aliases": [
        "scale",
        "rotate",
        "skew",
        "perspective",
        "transform-origin"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/transforms/translate/",
        "en": "https://motion-lexicon.pages.dev/en/transforms/translate/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/translate.json"
    },
    {
      "id": "3d-tilt-flip",
      "categoryId": "transforms",
      "family": "transform",
      "surfaceType": "component",
      "name": {
        "zh": "3D 倾斜 / 翻转",
        "en": "3D tilt / Flip"
      },
      "summary": {
        "zh": "用受控透视和旋转展示卡片正反面或悬停深度。",
        "en": "Use controlled perspective and rotation for card flips or hover depth."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/transforms/3d-tilt-flip/",
        "en": "https://motion-lexicon.pages.dev/en/transforms/3d-tilt-flip/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/3d-tilt-flip.json"
    },
    {
      "id": "origin-aware-animation",
      "categoryId": "transforms",
      "family": "transform",
      "surfaceType": "component",
      "name": {
        "zh": "基于触发源的动画",
        "en": "Origin-aware animation"
      },
      "summary": {
        "zh": "让展开或缩放从触发点发生，保持动作来源的空间连续性。",
        "en": "Expand or scale from the trigger point to preserve spatial continuity."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/transforms/origin-aware-animation/",
        "en": "https://motion-lexicon.pages.dev/en/transforms/origin-aware-animation/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/origin-aware-animation.json"
    },
    {
      "id": "crossfade",
      "categoryId": "state-transitions",
      "family": "state",
      "surfaceType": "component",
      "name": {
        "zh": "交叉淡入淡出",
        "en": "Crossfade"
      },
      "summary": {
        "zh": "用重叠淡入淡出切换等尺寸状态，减少视觉跳变。",
        "en": "Crossfade overlapping, similarly sized states to reduce visual jumps."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/state-transitions/crossfade/",
        "en": "https://motion-lexicon.pages.dev/en/state-transitions/crossfade/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/crossfade.json"
    },
    {
      "id": "morph",
      "categoryId": "state-transitions",
      "family": "state",
      "surfaceType": "component",
      "name": {
        "zh": "形变",
        "en": "Morph"
      },
      "summary": {
        "zh": "在共享元素的前后布局之间建立连续形变。",
        "en": "Create continuous transformation between before and after layouts of a shared element."
      },
      "aliases": [
        "continuity-transition",
        "shared-element-transition",
        "layout-animation"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/state-transitions/morph/",
        "en": "https://motion-lexicon.pages.dev/en/state-transitions/morph/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/morph.json"
    },
    {
      "id": "accordion-collapse",
      "categoryId": "state-transitions",
      "family": "state",
      "surfaceType": "component",
      "name": {
        "zh": "手风琴 / 折叠",
        "en": "Accordion / Collapse"
      },
      "summary": {
        "zh": "同步高度、透明度与图标状态，清晰表达内容展开和收起。",
        "en": "Coordinate height, opacity, and icon state for clear disclosure transitions."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/state-transitions/accordion-collapse/",
        "en": "https://motion-lexicon.pages.dev/en/state-transitions/accordion-collapse/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/accordion-collapse.json"
    },
    {
      "id": "direction-aware-transition",
      "categoryId": "state-transitions",
      "family": "state",
      "surfaceType": "component",
      "name": {
        "zh": "方向感过渡",
        "en": "Direction-aware transition"
      },
      "summary": {
        "zh": "根据导航方向匹配进入和离开方向，维持前后关系。",
        "en": "Match enter and exit directions to navigation order and preserve context."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/state-transitions/direction-aware-transition/",
        "en": "https://motion-lexicon.pages.dev/en/state-transitions/direction-aware-transition/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/direction-aware-transition.json"
    },
    {
      "id": "scroll-reveal",
      "categoryId": "scroll",
      "family": "scroll",
      "surfaceType": "component",
      "name": {
        "zh": "滚动揭示",
        "en": "Scroll reveal"
      },
      "summary": {
        "zh": "内容进入视口时触发一次轻量展示，并支持减少动态偏好。",
        "en": "Reveal content once as it enters the viewport with a reduced-motion fallback."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/scroll/scroll-reveal/",
        "en": "https://motion-lexicon.pages.dev/en/scroll/scroll-reveal/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/scroll-reveal.json"
    },
    {
      "id": "scroll-driven-animation",
      "categoryId": "scroll",
      "family": "scroll",
      "surfaceType": "playground",
      "name": {
        "zh": "滚动驱动动画",
        "en": "Scroll-driven animation"
      },
      "summary": {
        "zh": "把动画进度绑定到滚动区间，调节起止位置与运动幅度。",
        "en": "Bind animation progress to a scroll range and tune its start, end, and travel."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/scroll/scroll-driven-animation/",
        "en": "https://motion-lexicon.pages.dev/en/scroll/scroll-driven-animation/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/scroll-driven-animation.json"
    },
    {
      "id": "parallax",
      "categoryId": "scroll",
      "family": "scroll",
      "surfaceType": "component",
      "name": {
        "zh": "视差",
        "en": "Parallax"
      },
      "summary": {
        "zh": "让前后景以克制的速度差移动，建立轻量层次感。",
        "en": "Move foreground and background at restrained relative speeds to create depth."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/scroll/parallax/",
        "en": "https://motion-lexicon.pages.dev/en/scroll/parallax/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/parallax.json"
    },
    {
      "id": "page-transition",
      "categoryId": "scroll",
      "family": "scroll",
      "surfaceType": "component",
      "name": {
        "zh": "页面过渡",
        "en": "Page transition"
      },
      "summary": {
        "zh": "在页面或视图切换时保持内容连续，并为旧浏览器提供降级。",
        "en": "Preserve continuity across page or view changes with a safe fallback."
      },
      "aliases": [
        "view-transition"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/scroll/page-transition/",
        "en": "https://motion-lexicon.pages.dev/en/scroll/page-transition/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/page-transition.json"
    },
    {
      "id": "hover-effect",
      "categoryId": "feedback",
      "family": "feedback",
      "surfaceType": "component",
      "name": {
        "zh": "悬停效果",
        "en": "Hover effect"
      },
      "summary": {
        "zh": "在指针悬停时强化可交互性，同时保持布局稳定。",
        "en": "Reinforce interactivity on pointer hover while keeping layout stable."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/feedback/hover-effect/",
        "en": "https://motion-lexicon.pages.dev/en/feedback/hover-effect/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/hover-effect.json"
    },
    {
      "id": "press-tap-feedback",
      "categoryId": "feedback",
      "family": "feedback",
      "surfaceType": "component",
      "name": {
        "zh": "按压 / 轻触反馈",
        "en": "Press / Tap feedback"
      },
      "summary": {
        "zh": "在按下瞬间提供短促缩放和明暗反馈，确认输入已被接收。",
        "en": "Confirm input immediately with a brief scale and contrast response."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/feedback/press-tap-feedback/",
        "en": "https://motion-lexicon.pages.dev/en/feedback/press-tap-feedback/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/press-tap-feedback.json"
    },
    {
      "id": "hold-to-confirm",
      "categoryId": "feedback",
      "family": "feedback",
      "surfaceType": "component",
      "name": {
        "zh": "长按确认",
        "en": "Hold to confirm"
      },
      "summary": {
        "zh": "用可取消的进度反馈表达长按确认，降低误触风险。",
        "en": "Show cancellable progress during hold-to-confirm interactions to reduce mistakes."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/feedback/hold-to-confirm/",
        "en": "https://motion-lexicon.pages.dev/en/feedback/hold-to-confirm/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/hold-to-confirm.json"
    },
    {
      "id": "drag-to-reorder",
      "categoryId": "feedback",
      "family": "feedback",
      "surfaceType": "component",
      "name": {
        "zh": "拖拽排序",
        "en": "Drag to reorder"
      },
      "summary": {
        "zh": "在拖拽排序时保持拾取、占位和落点状态清楚。",
        "en": "Keep pickup, placeholder, and drop states clear while reordering."
      },
      "aliases": [
        "drag"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/feedback/drag-to-reorder/",
        "en": "https://motion-lexicon.pages.dev/en/feedback/drag-to-reorder/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/drag-to-reorder.json"
    },
    {
      "id": "swipe-to-dismiss",
      "categoryId": "feedback",
      "family": "feedback",
      "surfaceType": "component",
      "name": {
        "zh": "滑动关闭",
        "en": "Swipe to dismiss"
      },
      "summary": {
        "zh": "让滑动距离映射到位移与透明度，并在阈值前提供阻尼。",
        "en": "Map swipe distance to travel and opacity with resistance before the threshold."
      },
      "aliases": [
        "rubber-banding"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/feedback/swipe-to-dismiss/",
        "en": "https://motion-lexicon.pages.dev/en/feedback/swipe-to-dismiss/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/swipe-to-dismiss.json"
    },
    {
      "id": "shake-wiggle",
      "categoryId": "feedback",
      "family": "feedback",
      "surfaceType": "component",
      "name": {
        "zh": "摇晃 / 抖动",
        "en": "Shake / Wiggle"
      },
      "summary": {
        "zh": "用一次短促横向摆动提示错误或需要关注的输入。",
        "en": "Use one brief horizontal shake for errors or inputs that need attention."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/feedback/shake-wiggle/",
        "en": "https://motion-lexicon.pages.dev/en/feedback/shake-wiggle/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/shake-wiggle.json"
    },
    {
      "id": "ripple",
      "categoryId": "feedback",
      "family": "feedback",
      "surfaceType": "component",
      "name": {
        "zh": "涟漪",
        "en": "Ripple"
      },
      "summary": {
        "zh": "从输入坐标扩散轻量波纹，提供明确的触点反馈。",
        "en": "Expand a restrained ripple from the input coordinate for precise touch feedback."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/feedback/ripple/",
        "en": "https://motion-lexicon.pages.dev/en/feedback/ripple/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/ripple.json"
    },
    {
      "id": "easing",
      "categoryId": "easing",
      "family": "easing",
      "surfaceType": "playground",
      "name": {
        "zh": "缓动",
        "en": "Easing"
      },
      "summary": {
        "zh": "比较常用缓动曲线和自定义贝塞尔曲线的速度变化。",
        "en": "Compare common easing curves and custom cubic-bezier velocity profiles."
      },
      "aliases": [
        "ease-out",
        "ease-in",
        "ease-in-out",
        "linear",
        "cubic-bezier",
        "asymmetric-easing"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/easing/easing/",
        "en": "https://motion-lexicon.pages.dev/en/easing/easing/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/easing.json"
    },
    {
      "id": "spring",
      "categoryId": "springs",
      "family": "spring",
      "surfaceType": "playground",
      "name": {
        "zh": "弹簧",
        "en": "Spring"
      },
      "summary": {
        "zh": "通过刚度、阻尼、质量和初速度调节真实的弹簧响应。",
        "en": "Tune a physical spring response with stiffness, damping, mass, and initial velocity."
      },
      "aliases": [
        "stiffness-tension",
        "damping",
        "mass",
        "bounce",
        "perceptual-duration",
        "momentum",
        "velocity",
        "interruptible-animation"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/springs/spring/",
        "en": "https://motion-lexicon.pages.dev/en/springs/spring/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/spring.json"
    },
    {
      "id": "loop",
      "categoryId": "loops",
      "family": "loop",
      "surfaceType": "playground",
      "name": {
        "zh": "循环",
        "en": "Loop"
      },
      "summary": {
        "zh": "比较循环方向、次数、暂停和节奏，避免持续动态干扰阅读。",
        "en": "Compare loop direction, count, pauses, and rhythm while controlling distraction."
      },
      "aliases": [
        "alternate"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/loops/loop/",
        "en": "https://motion-lexicon.pages.dev/en/loops/loop/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/loop.json"
    },
    {
      "id": "marquee",
      "categoryId": "loops",
      "family": "loop",
      "surfaceType": "component",
      "name": {
        "zh": "跑马灯",
        "en": "Marquee"
      },
      "summary": {
        "zh": "让超出容器的信息连续滚动，并在悬停或聚焦时暂停。",
        "en": "Continuously scroll overflowing content and pause it on hover or focus."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/loops/marquee/",
        "en": "https://motion-lexicon.pages.dev/en/loops/marquee/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/marquee.json"
    },
    {
      "id": "orbit",
      "categoryId": "loops",
      "family": "loop",
      "surfaceType": "component",
      "name": {
        "zh": "环绕",
        "en": "Orbit"
      },
      "summary": {
        "zh": "让装饰节点围绕中心缓慢运行，适合低频状态展示。",
        "en": "Move a decorative node slowly around a center for low-frequency status displays."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/loops/orbit/",
        "en": "https://motion-lexicon.pages.dev/en/loops/orbit/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/orbit.json"
    },
    {
      "id": "idle-animation",
      "categoryId": "loops",
      "family": "loop",
      "surfaceType": "component",
      "name": {
        "zh": "空闲动效",
        "en": "Idle animation"
      },
      "summary": {
        "zh": "用低幅度呼吸或漂浮提示元素仍处于可用、等待或活跃状态。",
        "en": "Use subtle breathing or floating motion for available, waiting, or active states."
      },
      "aliases": [
        "pulse",
        "float"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/loops/idle-animation/",
        "en": "https://motion-lexicon.pages.dev/en/loops/idle-animation/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/idle-animation.json"
    },
    {
      "id": "blur",
      "categoryId": "polish-effects",
      "family": "effect",
      "surfaceType": "component",
      "name": {
        "zh": "模糊",
        "en": "Blur"
      },
      "summary": {
        "zh": "结合模糊、透明度与遮罩柔和地揭示媒体或内容层。",
        "en": "Reveal media or content layers with coordinated blur, opacity, and masking."
      },
      "aliases": [
        "clip-path",
        "mask"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/polish-effects/blur/",
        "en": "https://motion-lexicon.pages.dev/en/polish-effects/blur/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/blur.json"
    },
    {
      "id": "before-after-slider",
      "categoryId": "polish-effects",
      "family": "effect",
      "surfaceType": "component",
      "name": {
        "zh": "前后对比滑杆",
        "en": "Before / after slider"
      },
      "summary": {
        "zh": "用可拖动分割线比较同一画面的前后状态。",
        "en": "Compare before and after states of the same visual with a draggable divider."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/polish-effects/before-after-slider/",
        "en": "https://motion-lexicon.pages.dev/en/polish-effects/before-after-slider/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/before-after-slider.json"
    },
    {
      "id": "line-drawing",
      "categoryId": "polish-effects",
      "family": "effect",
      "surfaceType": "component",
      "name": {
        "zh": "线条绘制",
        "en": "Line drawing"
      },
      "summary": {
        "zh": "通过描边偏移逐步绘制图标、路径或解释性连线。",
        "en": "Draw icons, paths, or explanatory connectors with stroke offset animation."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/polish-effects/line-drawing/",
        "en": "https://motion-lexicon.pages.dev/en/polish-effects/line-drawing/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/line-drawing.json"
    },
    {
      "id": "text-morph",
      "categoryId": "polish-effects",
      "family": "effect",
      "surfaceType": "component",
      "name": {
        "zh": "文字形变",
        "en": "Text morph"
      },
      "summary": {
        "zh": "在长度接近的短文本之间进行平滑替换，保留阅读位置。",
        "en": "Transition between similarly sized short labels while preserving reading position."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/polish-effects/text-morph/",
        "en": "https://motion-lexicon.pages.dev/en/polish-effects/text-morph/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/text-morph.json"
    },
    {
      "id": "skeleton-shimmer",
      "categoryId": "polish-effects",
      "family": "effect",
      "surfaceType": "component",
      "name": {
        "zh": "骨架屏 / 微光",
        "en": "Skeleton / Shimmer"
      },
      "summary": {
        "zh": "在内容加载期间用低对比扫光表达进行中状态。",
        "en": "Communicate loading progress with a low-contrast shimmer across placeholders."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/polish-effects/skeleton-shimmer/",
        "en": "https://motion-lexicon.pages.dev/en/polish-effects/skeleton-shimmer/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/skeleton-shimmer.json"
    },
    {
      "id": "number-ticker",
      "categoryId": "polish-effects",
      "family": "effect",
      "surfaceType": "component",
      "name": {
        "zh": "数字滚动",
        "en": "Number ticker"
      },
      "summary": {
        "zh": "使用等宽数字与垂直滚动稳定展示数值变化。",
        "en": "Show changing values with tabular figures and stable vertical digit movement."
      },
      "aliases": [
        "tabular-numbers"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/polish-effects/number-ticker/",
        "en": "https://motion-lexicon.pages.dev/en/polish-effects/number-ticker/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/number-ticker.json"
    },
    {
      "id": "typewriter",
      "categoryId": "polish-effects",
      "family": "effect",
      "surfaceType": "component",
      "name": {
        "zh": "打字机",
        "en": "Typewriter"
      },
      "summary": {
        "zh": "按字符逐步显示短文本，并为辅助技术保留完整内容。",
        "en": "Reveal short text character by character while preserving complete accessible text."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/polish-effects/typewriter/",
        "en": "https://motion-lexicon.pages.dev/en/polish-effects/typewriter/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/typewriter.json"
    },
    {
      "id": "frame-rate",
      "categoryId": "performance",
      "family": "performance",
      "surfaceType": "guide",
      "name": {
        "zh": "帧率（FPS）",
        "en": "Frame rate (FPS)"
      },
      "summary": {
        "zh": "检查帧率、主线程长任务和掉帧，定位动态卡顿。",
        "en": "Inspect frame rate, long main-thread tasks, and dropped frames to diagnose jank."
      },
      "aliases": [
        "jank",
        "dropped-frame"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/performance/frame-rate/",
        "en": "https://motion-lexicon.pages.dev/en/performance/frame-rate/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/frame-rate.json"
    },
    {
      "id": "compositing",
      "categoryId": "performance",
      "family": "performance",
      "surfaceType": "playground",
      "name": {
        "zh": "合成",
        "en": "Compositing"
      },
      "summary": {
        "zh": "比较合成友好属性、硬件加速提示与布局触发属性的渲染成本。",
        "en": "Compare compositor-friendly properties, hardware-acceleration hints, and layout-triggering properties."
      },
      "aliases": [
        "will-change",
        "layout-thrashing",
        "hardware-acceleration"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/performance/compositing/",
        "en": "https://motion-lexicon.pages.dev/en/performance/compositing/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/compositing.json"
    },
    {
      "id": "purposeful-animation",
      "categoryId": "principles",
      "family": "principle",
      "surfaceType": "guide",
      "name": {
        "zh": "有目的的动效",
        "en": "Purposeful animation"
      },
      "summary": {
        "zh": "审核每段动效的目的、出现频率和空间规则，保持一致体验。",
        "en": "Review the purpose, frequency, and spatial rules of motion for a consistent experience."
      },
      "aliases": [
        "frequency-of-use",
        "spatial-consistency"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/principles/purposeful-animation/",
        "en": "https://motion-lexicon.pages.dev/en/principles/purposeful-animation/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/purposeful-animation.json"
    },
    {
      "id": "anticipation",
      "categoryId": "principles",
      "family": "principle",
      "surfaceType": "playground",
      "name": {
        "zh": "预备动作",
        "en": "Anticipation"
      },
      "summary": {
        "zh": "调节预备、跟随与形变幅度，理解物理感对反馈的影响。",
        "en": "Tune anticipation, follow-through, and deformation to understand physical feedback."
      },
      "aliases": [
        "follow-through",
        "squash-and-stretch"
      ],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/principles/anticipation/",
        "en": "https://motion-lexicon.pages.dev/en/principles/anticipation/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/anticipation.json"
    },
    {
      "id": "perceived-performance",
      "categoryId": "principles",
      "family": "principle",
      "surfaceType": "guide",
      "name": {
        "zh": "感知性能",
        "en": "Perceived performance"
      },
      "summary": {
        "zh": "通过即时状态、骨架和连续反馈缩短用户感受到的等待。",
        "en": "Reduce perceived waiting with immediate state changes, skeletons, and continuous feedback."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/principles/perceived-performance/",
        "en": "https://motion-lexicon.pages.dev/en/principles/perceived-performance/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/perceived-performance.json"
    },
    {
      "id": "reduced-motion",
      "categoryId": "principles",
      "family": "principle",
      "surfaceType": "guide",
      "name": {
        "zh": "减弱动效",
        "en": "Reduced motion"
      },
      "summary": {
        "zh": "为移动、缩放、循环和视差提供等价的低动态表达。",
        "en": "Provide equivalent low-motion treatments for travel, scaling, loops, and parallax."
      },
      "aliases": [],
      "urls": {
        "zh": "https://motion-lexicon.pages.dev/zh/principles/reduced-motion/",
        "en": "https://motion-lexicon.pages.dev/en/principles/reduced-motion/"
      },
      "dataUrl": "https://motion-lexicon.pages.dev/data/v1/recipes/reduced-motion.json"
    }
  ]
}
