{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "miyuki-ui",
  "homepage": "https://ui.miyuki-yue.dev",
  "items": [
    {
      "name": "base",
      "type": "registry:theme",
      "title": "Base tokens",
      "description": "The colours, easings and display font stack miyuki-ui components use that a stock shadcn theme does not define. Every component installs it. It adds variables and never changes existing ones.",
      "cssVars": {
        "theme": {
          "color-brand": "var(--brand)",
          "color-brand-foreground": "var(--brand-foreground)",
          "color-brand-soft": "var(--brand-soft)",
          "color-brand-strong": "var(--brand-strong)",
          "color-success": "var(--success)",
          "color-success-foreground": "var(--success-foreground)",
          "color-success-soft": "var(--success-soft)",
          "color-success-strong": "var(--success-strong)",
          "color-warning": "var(--warning)",
          "color-warning-foreground": "var(--warning-foreground)",
          "color-warning-soft": "var(--warning-soft)",
          "color-warning-strong": "var(--warning-strong)",
          "color-destructive-foreground": "var(--destructive-foreground)",
          "color-destructive-soft": "var(--destructive-soft)",
          "color-destructive-strong": "var(--destructive-strong)",
          "color-border-strong": "var(--border-strong)",
          "color-chart-6": "var(--chart-6)",
          "ease-settle": "cubic-bezier(0.22, 1, 0.36, 1)",
          "ease-drift": "cubic-bezier(0.45, 0.05, 0.25, 1)",
          "font-display": "ui-sans-serif, system-ui, sans-serif"
        },
        "light": {
          "brand": "oklch(0.55 0.13 240)",
          "brand-foreground": "oklch(0.99 0.004 236)",
          "brand-soft": "oklch(0.94 0.034 232)",
          "brand-strong": "oklch(0.46 0.125 244)",
          "success": "oklch(0.545 0.11 162)",
          "success-foreground": "oklch(0.99 0.004 160)",
          "success-soft": "oklch(0.955 0.035 165)",
          "success-strong": "oklch(0.44 0.1 162)",
          "warning": "oklch(0.76 0.145 78)",
          "warning-foreground": "oklch(0.28 0.06 70)",
          "warning-soft": "oklch(0.965 0.045 88)",
          "warning-strong": "oklch(0.47 0.1 68)",
          "destructive-foreground": "oklch(0.99 0.004 20)",
          "destructive-soft": "oklch(0.955 0.028 15)",
          "destructive-strong": "oklch(0.5 0.19 18)",
          "border-strong": "oklch(0.86 0.018 238)",
          "chart-6": "oklch(0.72 0.12 350)"
        },
        "dark": {
          "brand": "oklch(0.74 0.12 230)",
          "brand-foreground": "oklch(0.18 0.03 248)",
          "brand-soft": "oklch(0.3 0.06 240)",
          "brand-strong": "oklch(0.82 0.1 226)",
          "success": "oklch(0.74 0.12 165)",
          "success-foreground": "oklch(0.18 0.03 165)",
          "success-soft": "oklch(0.29 0.05 165)",
          "success-strong": "oklch(0.81 0.12 165)",
          "warning": "oklch(0.82 0.14 84)",
          "warning-foreground": "oklch(0.22 0.05 80)",
          "warning-soft": "oklch(0.31 0.055 84)",
          "warning-strong": "oklch(0.86 0.13 84)",
          "destructive-foreground": "oklch(0.17 0.03 20)",
          "destructive-soft": "oklch(0.29 0.07 18)",
          "destructive-strong": "oklch(0.77 0.15 18)",
          "border-strong": "oklch(0.38 0.035 246)",
          "chart-6": "oklch(0.78 0.11 350)"
        }
      },
      "categories": [
        "foundations"
      ]
    },
    {
      "name": "theme",
      "type": "registry:theme",
      "title": "Theme",
      "description": "The full snow-and-water look: every colour for light and dark, the radius scale, blue-tinted shadows, easings and code colours. It replaces the matching variables in your stylesheet.",
      "cssVars": {
        "theme": {
          "color-background": "var(--background)",
          "color-foreground": "var(--foreground)",
          "color-card": "var(--card)",
          "color-card-foreground": "var(--card-foreground)",
          "color-popover": "var(--popover)",
          "color-popover-foreground": "var(--popover-foreground)",
          "color-primary": "var(--primary)",
          "color-primary-foreground": "var(--primary-foreground)",
          "color-secondary": "var(--secondary)",
          "color-secondary-foreground": "var(--secondary-foreground)",
          "color-muted": "var(--muted)",
          "color-muted-foreground": "var(--muted-foreground)",
          "color-accent": "var(--accent)",
          "color-accent-foreground": "var(--accent-foreground)",
          "color-brand": "var(--brand)",
          "color-brand-foreground": "var(--brand-foreground)",
          "color-brand-soft": "var(--brand-soft)",
          "color-brand-strong": "var(--brand-strong)",
          "color-destructive": "var(--destructive)",
          "color-destructive-foreground": "var(--destructive-foreground)",
          "color-destructive-soft": "var(--destructive-soft)",
          "color-destructive-strong": "var(--destructive-strong)",
          "color-success": "var(--success)",
          "color-success-foreground": "var(--success-foreground)",
          "color-success-soft": "var(--success-soft)",
          "color-success-strong": "var(--success-strong)",
          "color-warning": "var(--warning)",
          "color-warning-foreground": "var(--warning-foreground)",
          "color-warning-soft": "var(--warning-soft)",
          "color-warning-strong": "var(--warning-strong)",
          "color-border": "var(--border)",
          "color-border-strong": "var(--border-strong)",
          "color-input": "var(--input)",
          "color-ring": "var(--ring)",
          "color-chart-1": "var(--chart-1)",
          "color-chart-2": "var(--chart-2)",
          "color-chart-3": "var(--chart-3)",
          "color-chart-4": "var(--chart-4)",
          "color-chart-5": "var(--chart-5)",
          "color-chart-6": "var(--chart-6)",
          "font-display": "ui-sans-serif, system-ui, sans-serif",
          "font-pixel": "ui-monospace, monospace",
          "font-pixel-circle": "ui-monospace, monospace",
          "radius-sm": "calc(var(--radius) - 4px)",
          "radius-md": "calc(var(--radius) - 2px)",
          "radius-lg": "var(--radius)",
          "radius-xl": "calc(var(--radius) + 4px)",
          "radius-2xl": "calc(var(--radius) + 8px)",
          "radius-3xl": "calc(var(--radius) + 12px)",
          "radius-4xl": "calc(var(--radius) + 18px)",
          "shadow-2xs": "var(--miyuki-shadow-2xs)",
          "shadow-xs": "var(--miyuki-shadow-xs)",
          "shadow-sm": "var(--miyuki-shadow-sm)",
          "shadow-md": "var(--miyuki-shadow-md)",
          "shadow-lg": "var(--miyuki-shadow-lg)",
          "shadow-xl": "var(--miyuki-shadow-xl)",
          "shadow-2xl": "var(--miyuki-shadow-2xl)",
          "ease-settle": "cubic-bezier(0.22, 1, 0.36, 1)",
          "ease-drift": "cubic-bezier(0.45, 0.05, 0.25, 1)"
        },
        "light": {
          "background": "oklch(0.984 0.005 236)",
          "foreground": "oklch(0.245 0.035 248)",
          "card": "oklch(1 0 0)",
          "card-foreground": "oklch(0.245 0.035 248)",
          "popover": "oklch(1 0 0)",
          "popover-foreground": "oklch(0.245 0.035 248)",
          "primary": "oklch(0.255 0.04 248)",
          "primary-foreground": "oklch(0.985 0.004 236)",
          "secondary": "oklch(0.953 0.01 236)",
          "secondary-foreground": "oklch(0.27 0.04 248)",
          "muted": "oklch(0.962 0.008 236)",
          "muted-foreground": "oklch(0.51 0.03 244)",
          "accent": "oklch(0.944 0.016 232)",
          "accent-foreground": "oklch(0.255 0.04 248)",
          "brand": "oklch(0.55 0.13 240)",
          "brand-foreground": "oklch(0.99 0.004 236)",
          "brand-soft": "oklch(0.94 0.034 232)",
          "brand-strong": "oklch(0.46 0.125 244)",
          "destructive": "oklch(0.565 0.2 18)",
          "destructive-foreground": "oklch(0.99 0.004 20)",
          "destructive-soft": "oklch(0.955 0.028 15)",
          "destructive-strong": "oklch(0.5 0.19 18)",
          "success": "oklch(0.545 0.11 162)",
          "success-foreground": "oklch(0.99 0.004 160)",
          "success-soft": "oklch(0.955 0.035 165)",
          "success-strong": "oklch(0.44 0.1 162)",
          "warning": "oklch(0.76 0.145 78)",
          "warning-foreground": "oklch(0.28 0.06 70)",
          "warning-soft": "oklch(0.965 0.045 88)",
          "warning-strong": "oklch(0.47 0.1 68)",
          "border": "oklch(0.915 0.012 236)",
          "border-strong": "oklch(0.86 0.018 238)",
          "input": "oklch(0.88 0.016 238)",
          "ring": "oklch(0.55 0.13 240 / 0.4)",
          "chart-1": "oklch(0.6 0.13 240)",
          "chart-2": "oklch(0.7 0.105 178)",
          "chart-3": "oklch(0.61 0.14 295)",
          "chart-4": "oklch(0.79 0.14 82)",
          "chart-5": "oklch(0.63 0.19 15)",
          "chart-6": "oklch(0.72 0.12 350)",
          "radius": "0.625rem"
        },
        "dark": {
          "background": "oklch(0.175 0.024 248)",
          "foreground": "oklch(0.95 0.008 236)",
          "card": "oklch(0.21 0.027 248)",
          "card-foreground": "oklch(0.95 0.008 236)",
          "popover": "oklch(0.235 0.03 248)",
          "popover-foreground": "oklch(0.95 0.008 236)",
          "primary": "oklch(0.95 0.008 236)",
          "primary-foreground": "oklch(0.2 0.03 248)",
          "secondary": "oklch(0.265 0.03 248)",
          "secondary-foreground": "oklch(0.95 0.008 236)",
          "muted": "oklch(0.245 0.028 248)",
          "muted-foreground": "oklch(0.7 0.025 240)",
          "accent": "oklch(0.285 0.036 245)",
          "accent-foreground": "oklch(0.95 0.008 236)",
          "brand": "oklch(0.74 0.12 230)",
          "brand-foreground": "oklch(0.18 0.03 248)",
          "brand-soft": "oklch(0.3 0.06 240)",
          "brand-strong": "oklch(0.82 0.1 226)",
          "destructive": "oklch(0.66 0.19 18)",
          "destructive-foreground": "oklch(0.17 0.03 20)",
          "destructive-soft": "oklch(0.29 0.07 18)",
          "destructive-strong": "oklch(0.77 0.15 18)",
          "success": "oklch(0.74 0.12 165)",
          "success-foreground": "oklch(0.18 0.03 165)",
          "success-soft": "oklch(0.29 0.05 165)",
          "success-strong": "oklch(0.81 0.12 165)",
          "warning": "oklch(0.82 0.14 84)",
          "warning-foreground": "oklch(0.22 0.05 80)",
          "warning-soft": "oklch(0.31 0.055 84)",
          "warning-strong": "oklch(0.86 0.13 84)",
          "border": "oklch(0.3 0.03 248)",
          "border-strong": "oklch(0.38 0.035 246)",
          "input": "oklch(0.34 0.033 247)",
          "ring": "oklch(0.74 0.12 230 / 0.45)",
          "chart-1": "oklch(0.72 0.12 232)",
          "chart-2": "oklch(0.78 0.11 178)",
          "chart-3": "oklch(0.72 0.13 295)",
          "chart-4": "oklch(0.84 0.13 84)",
          "chart-5": "oklch(0.7 0.17 16)",
          "chart-6": "oklch(0.78 0.11 350)"
        }
      },
      "css": {
        ":root": {
          "--miyuki-shadow-2xs": "0 1px 0 oklch(0.42 0.09 250 / 0.05)",
          "--miyuki-shadow-xs": "0 1px 2px oklch(0.42 0.09 250 / 0.07)",
          "--miyuki-shadow-sm": "0 1px 2px oklch(0.42 0.09 250 / 0.07), 0 3px 8px -3px oklch(0.42 0.09 250 / 0.1)",
          "--miyuki-shadow-md": "0 1px 2px oklch(0.42 0.09 250 / 0.06), 0 8px 20px -6px oklch(0.42 0.09 250 / 0.16)",
          "--miyuki-shadow-lg": "0 2px 4px oklch(0.42 0.09 250 / 0.06), 0 18px 40px -12px oklch(0.42 0.09 250 / 0.22)",
          "--miyuki-shadow-xl": "0 4px 8px oklch(0.42 0.09 250 / 0.06), 0 32px 64px -16px oklch(0.42 0.09 250 / 0.28)",
          "--miyuki-shadow-2xl": "0 48px 96px -24px oklch(0.42 0.09 250 / 0.36)",
          "--shiki-foreground": "oklch(0.3 0.035 248)",
          "--shiki-background": "transparent",
          "--shiki-token-constant": "oklch(0.5 0.17 20)",
          "--shiki-token-string": "oklch(0.47 0.1 162)",
          "--shiki-token-comment": "oklch(0.62 0.025 244)",
          "--shiki-token-keyword": "oklch(0.5 0.15 295)",
          "--shiki-token-parameter": "oklch(0.42 0.06 248)",
          "--shiki-token-function": "oklch(0.47 0.13 242)",
          "--shiki-token-string-expression": "oklch(0.47 0.1 162)",
          "--shiki-token-punctuation": "oklch(0.55 0.03 244)",
          "--shiki-token-link": "oklch(0.47 0.13 242)"
        },
        ".dark": {
          "--miyuki-shadow-2xs": "0 1px 0 oklch(0.05 0.02 250 / 0.3)",
          "--miyuki-shadow-xs": "0 1px 2px oklch(0.05 0.02 250 / 0.4)",
          "--miyuki-shadow-sm": "inset 0 1px 0 oklch(1 0 0 / 0.04), 0 1px 2px oklch(0.05 0.02 250 / 0.4), 0 3px 8px -3px oklch(0.05 0.02 250 / 0.5)",
          "--miyuki-shadow-md": "inset 0 1px 0 oklch(1 0 0 / 0.05), 0 1px 2px oklch(0.05 0.02 250 / 0.4), 0 8px 20px -6px oklch(0.05 0.02 250 / 0.6)",
          "--miyuki-shadow-lg": "inset 0 1px 0 oklch(1 0 0 / 0.06), 0 2px 4px oklch(0.05 0.02 250 / 0.4), 0 18px 40px -12px oklch(0.05 0.02 250 / 0.7)",
          "--miyuki-shadow-xl": "inset 0 1px 0 oklch(1 0 0 / 0.06), 0 4px 8px oklch(0.05 0.02 250 / 0.4), 0 32px 64px -16px oklch(0.05 0.02 250 / 0.75)",
          "--miyuki-shadow-2xl": "inset 0 1px 0 oklch(1 0 0 / 0.06), 0 48px 96px -24px oklch(0.05 0.02 250 / 0.8)",
          "--shiki-foreground": "oklch(0.88 0.015 236)",
          "--shiki-token-constant": "oklch(0.76 0.13 18)",
          "--shiki-token-string": "oklch(0.8 0.1 165)",
          "--shiki-token-comment": "oklch(0.58 0.03 244)",
          "--shiki-token-keyword": "oklch(0.77 0.11 295)",
          "--shiki-token-parameter": "oklch(0.82 0.03 240)",
          "--shiki-token-function": "oklch(0.79 0.1 228)",
          "--shiki-token-string-expression": "oklch(0.8 0.1 165)",
          "--shiki-token-punctuation": "oklch(0.65 0.025 244)",
          "--shiki-token-link": "oklch(0.79 0.1 228)"
        }
      },
      "categories": [
        "foundations"
      ]
    },
    {
      "name": "camera-tiles",
      "type": "registry:ui",
      "title": "Camera Tiles",
      "description": "The camera feed as a grid of soft tiles that rise where something moves, with a drifting pattern until the camera is turned on.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/camera-tiles.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/camera-tiles.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "caustics",
      "type": "registry:ui",
      "title": "Caustics",
      "description": "Sunlight on the floor of shallow water: a soft network of light that shifts slowly and bends around the pointer.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/caustics.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/caustics.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "colour-pool",
      "type": "registry:ui",
      "title": "Colour Pool",
      "description": "A pool of soft colour: blurred blobs drift on slow loops over a base colour, and one follows the pointer.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/colour-pool.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/colour-pool.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "constellation-card",
      "type": "registry:ui",
      "title": "Constellation Card",
      "description": "A card with a field of dots where a constellation lights up and joins on hover or focus.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/constellation-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/constellation-card.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "current-lines",
      "type": "registry:ui",
      "title": "Current Lines",
      "description": "A fan of fine current lines behind your content, with short pulses of light travelling along some of them.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/current-lines.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/current-lines.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "diamond-dust",
      "type": "registry:ui",
      "title": "Diamond Dust",
      "description": "Tiny crystals that hang in the air, flicker and drift: dots and four-point glints, as a full background or a strip under a title.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/diamond-dust.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/diamond-dust.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "dot-flood",
      "type": "registry:ui",
      "title": "Dot Flood",
      "description": "A matrix of small square dots that floods across a surface from a point and keeps shimmering, usually inside a card on hover or focus.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/dot-flood.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/dot-flood.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "drifting-clouds",
      "type": "registry:ui",
      "title": "Drifting Clouds",
      "description": "Soft procedural clouds drifting across a winter sky, drawn by a WebGL fragment shader.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/drifting-clouds.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/drifting-clouds.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "drifting-ice",
      "type": "registry:ui",
      "title": "Drifting Ice",
      "description": "Ice floes on open water that drift and turn on a slow current and bump into each other; the pointer pushes them aside and a click cracks one.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/drifting-ice.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/drifting-ice.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "edge-glint",
      "type": "registry:ui",
      "title": "Edge Glint",
      "description": "A short bright arc on a card's border that turns to face the pointer as it comes near.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/edge-glint.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/edge-glint.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "footprints",
      "type": "registry:ui",
      "title": "Footprints",
      "description": "A snow field that keeps a track of where the pointer has been, pressed into the surface, while falling snow slowly fills it in.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/footprints.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/footprints.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "grain-frame",
      "type": "registry:ui",
      "title": "Grain Frame",
      "description": "A frame of slowly drifting colour under a fine layer of grain, used as a living border or a full background.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/grain-frame.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/grain-frame.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "graph-paper",
      "type": "registry:ui",
      "title": "Graph Paper",
      "description": "A ruled grid or an even field of dots behind your content, drawn with CSS gradients.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/graph-paper.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/graph-paper.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "halo-frame",
      "type": "registry:ui",
      "title": "Halo Frame",
      "description": "A frame that puts a slowly turning gradient ring and a soft halo around one child.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/halo-frame.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/halo-frame.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "hatching",
      "type": "registry:ui",
      "title": "Hatching",
      "description": "Fine engraved hatching behind or around your content: diagonal, horizontal, vertical, cross-hatched, or rows of seigaiha waves.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/hatching.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/hatching.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "heading-light",
      "type": "registry:ui",
      "title": "Heading Light",
      "description": "A bar of light that opens above a heading and throws a soft cone down onto it.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/heading-light.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/heading-light.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "ice-blocks",
      "type": "registry:ui",
      "title": "Ice Blocks",
      "description": "A field of ice blocks that rise and fall as waves spread out from the pointer, with drops that start ripples when it rests.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ice-blocks.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ice-blocks.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "ice-tiles",
      "type": "registry:ui",
      "title": "Ice Tiles",
      "description": "A grid of ice tiles laid back in perspective; each tile the pointer crosses lights up and slowly melts back.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ice-tiles.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ice-tiles.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "icicles",
      "type": "registry:ui",
      "title": "Icicles",
      "description": "Icicles hanging from the top edge of a container; they lengthen slowly, drip, and snap when touched.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/icicles.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/icicles.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "ink-wash",
      "type": "registry:ui",
      "title": "Ink Wash",
      "description": "Ink blooming in clear water: each press releases a bloom that billows, folds on itself and thins as a slow current swirls it away.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ink-wash.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ink-wash.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "koi-pond",
      "type": "registry:ui",
      "title": "Koi Pond",
      "description": "A few koi drifting under the surface that come to circle a resting pointer and dart away when you click.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/koi-pond.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/koi-pond.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "lake-freeze",
      "type": "registry:ui",
      "title": "Lake Freeze",
      "description": "Ice that grows across a surface in feathery fronts from its edges, and breaks into plates that melt away when it thaws.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/lake-freeze.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/lake-freeze.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "layered-waves",
      "type": "registry:ui",
      "title": "Layered Waves",
      "description": "Layers of slow translucent waves filling the lower part of the frame, deepening where they overlap.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/layered-waves.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/layered-waves.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "low-sun",
      "type": "registry:ui",
      "title": "Low Sun",
      "description": "A cone of low sunlight that sweeps in from a top corner, settles on your content and breathes slowly.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/low-sun.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/low-sun.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "mask-reveal",
      "type": "registry:ui",
      "title": "Mask Reveal",
      "description": "A second version of the content, a water-blue layer seen through a round hole that follows the pointer and opens wide over the text.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/mask-reveal.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/mask-reveal.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "moonpath",
      "type": "registry:ui",
      "title": "Moonpath",
      "description": "The moon over open water and the flickering road of light it lays toward you; by day a low sun and a warm path.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/moonpath.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/moonpath.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "northern-lights",
      "type": "registry:ui",
      "title": "Northern Lights",
      "description": "Slow curtains of northern light hanging from the top edge, behind your content.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/northern-lights.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/northern-lights.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "path-bloom",
      "type": "registry:ui",
      "title": "Path Bloom",
      "description": "A tall sticky section where five streams braid across the screen and join into one river as you scroll, with an action where they meet.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/path-bloom.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/path-bloom.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "photo-pocket",
      "type": "registry:ui",
      "title": "Photo Pocket",
      "description": "A badge with up to three photos tucked into a small pocket that rise and fan out on hover or focus.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/photo-pocket.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/photo-pocket.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "pond-grid",
      "type": "registry:ui",
      "title": "Pond Grid",
      "description": "A grid of cells like a still pond: clicking a cell sends a ring of light outward across the grid.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/pond-grid.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/pond-grid.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "pulse-dots",
      "type": "registry:ui",
      "title": "Pulse Dots",
      "description": "A grid of fine dots that pulse one by one; the brightest carry a soft halo, and dots near the pointer light up.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/pulse-dots.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/pulse-dots.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "rain-on-glass",
      "type": "registry:ui",
      "title": "Rain on Glass",
      "description": "Rain on a misted window: drops gather, run and merge, leave trails of beads that slowly dry, and each one holds a small upside-down view of the world behind the glass.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/rain-on-glass.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/rain-on-glass.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "raked-sand",
      "type": "registry:ui",
      "title": "Raked Sand",
      "description": "A raked gravel garden whose grooves bend into rings around the stones standing in it; drag to rake new furrows.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/raked-sand.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/raked-sand.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "reading-stream",
      "type": "registry:ui",
      "title": "Reading Stream",
      "description": "A line down the side of an article that fills with water as you read, with a droplet at its end and a ring for each section.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/reading-stream.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/reading-stream.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "refracting-glass",
      "type": "registry:ui",
      "title": "Refracting Glass",
      "description": "A clear panel that bends whatever is behind it, strongest at the rim, with frosted glass as the fallback.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/refracting-glass.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/refracting-glass.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "river-lanterns",
      "type": "registry:ui",
      "title": "River Lanterns",
      "description": "Paper lanterns drifting down a river at night, each with a long wavering reflection; by day they become paper boats.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/river-lanterns.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/river-lanterns.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "scattered-photos",
      "type": "registry:ui",
      "title": "Scattered Photos",
      "description": "Photos scattered around a heading at different depths, fading in on mount and shifting with the pointer like near and distant ridges.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/scattered-photos.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/scattered-photos.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "sleet",
      "type": "registry:ui",
      "title": "Sleet",
      "description": "Thin diagonal streaks with a bright head and a fading tail, crossing a card or a section.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/sleet.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/sleet.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "snowfall",
      "type": "registry:ui",
      "title": "Snowfall",
      "description": "Snow falling in three depths that settles into soft caps on any element marked as a ledge.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snowfall.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snowfall.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "spindrift",
      "type": "registry:ui",
      "title": "Spindrift",
      "description": "Fine streaks of snow blown low along the ground in gusts, rising and dipping together like a veil.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/spindrift.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/spindrift.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "splash-line",
      "type": "registry:ui",
      "title": "Splash Line",
      "description": "Thin streaks fall to a water line near the bottom edge and splash when they reach it.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/splash-line.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/splash-line.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "spotlight-beams",
      "type": "registry:ui",
      "title": "Spotlight Beams",
      "description": "Two fans of light from the upper corners that sway slowly toward each other and back.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/spotlight-beams.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/spotlight-beams.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "star-field",
      "type": "registry:ui",
      "title": "Star Field",
      "description": "A quiet twinkling star field and an occasional shooting star, as two layers you can stack.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/star-field.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/star-field.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "steam",
      "type": "registry:ui",
      "title": "Steam",
      "description": "Soft wisps of steam lifting from the bottom edge in front of your content, curling and thinning as they rise.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/steam.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/steam.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "still-water",
      "type": "registry:ui",
      "title": "Still Water",
      "description": "A calm water surface behind your content: the pointer presses ripples into it as it moves, a click drops a stone, and now and then a raindrop lands.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/still-water.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/still-water.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "wave-lines",
      "type": "registry:ui",
      "title": "Wave Lines",
      "description": "Evenly stacked wave lines that draw in from the left and then undulate slowly behind your content.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/wave-lines.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/wave-lines.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "whirlpool",
      "type": "registry:ui",
      "title": "Whirlpool",
      "description": "A whirlpool of particles circling a centre, turning faster as they spiral inward, with short trails.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/whirlpool.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/whirlpool.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "wind-map",
      "type": "registry:ui",
      "title": "Wind Map",
      "description": "A field of moving air drawn as thousands of short fading trails, faster air brighter and longer, with speed and bearing under the pointer.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/wind-map.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/wind-map.tsx"
        }
      ],
      "categories": [
        "backgrounds"
      ]
    },
    {
      "name": "card-drift",
      "type": "registry:ui",
      "title": "Card Drift",
      "description": "A row of cards that scrolls sideways forever, each one bobbing slightly like something on water.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/card-drift.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/card-drift.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "card-shuffle",
      "type": "registry:ui",
      "title": "Card Shuffle",
      "description": "A small stack of cards that cycles, with the front card leaving and rejoining at the back.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/card-shuffle.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/card-shuffle.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "character-picture",
      "type": "registry:ui",
      "title": "Character Picture",
      "description": "Turns an image into a picture made of characters, sized so the columns fill the width, with an entrance where the characters fall into place.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/character-picture.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/character-picture.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "cipher-card",
      "type": "registry:ui",
      "title": "Cipher Card",
      "description": "A card covered in hidden characters that show, and keep shifting, only where the pointer shines, around a round seal with a short word.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/cipher-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/cipher-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "contour-card",
      "type": "registry:ui",
      "title": "Contour Card",
      "description": "A card drawn over a living contour map: a low hill follows the pointer, the lines flow around it, and a small label reads the elevation underneath.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/contour-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/contour-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "depth-of-field",
      "type": "registry:ui",
      "title": "Depth of Field",
      "description": "A grid of image cards where the one under the pointer stays sharp and the rest blur with distance, like depth of field.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/depth-of-field.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/depth-of-field.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "dot-mosaic",
      "type": "registry:ui",
      "title": "Dot Mosaic",
      "description": "An image rebuilt as a mosaic of dots in its own colours, sized by tone, which scatter around the pointer and spring back.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/dot-mosaic.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/dot-mosaic.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "floating-card",
      "type": "registry:ui",
      "title": "Floating Card",
      "description": "A solid colour card that drifts toward the pointer while its content drifts the other way, as if floating.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/floating-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/floating-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "flood-hover",
      "type": "registry:ui",
      "title": "Flood Hover",
      "description": "An image card whose overlay floods in from the side the pointer entered and drains toward the side it leaves.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/flood-hover.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/flood-hover.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "foil-ticket",
      "type": "registry:ui",
      "title": "Foil Ticket",
      "description": "A ticket that tilts deeply toward the pointer and casts a long shadow away from it, with a foil strip that shifts colour as it turns.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/foil-ticket.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/foil-ticket.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "frost-glass",
      "type": "registry:ui",
      "title": "Frost Glass",
      "description": "A pane that frosts over when left alone; the pointer wipes a clear path, and the frost creeps back in from the edges.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/frost-glass.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/frost-glass.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "hover-grid",
      "type": "registry:ui",
      "title": "Hover Grid",
      "description": "A grid of items divided by hairlines, where one soft highlight glides to whichever item is under the pointer or focused.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/hover-grid.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/hover-grid.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "hover-note",
      "type": "registry:ui",
      "title": "Hover Note",
      "description": "A rich floating card that appears beside a word in running text and follows the pointer, leaning slightly as it moves.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/hover-note.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/hover-note.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "instant-photo",
      "type": "registry:ui",
      "title": "Instant Photo",
      "description": "An instant print that develops while you watch: shadows first out of a grey-green haze, colours last.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/instant-photo.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/instant-photo.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "kintsugi-card",
      "type": "registry:ui",
      "title": "Kintsugi Card",
      "description": "A card crossed by fine cracks that fill with gold, poured from the point nearest the pointer, when you come near.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/kintsugi-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/kintsugi-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "loose-prints",
      "type": "registry:ui",
      "title": "Loose Prints",
      "description": "Photo prints scattered on a surface that you can pick up, throw against the edges and pile on top of each other.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/loose-prints.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/loose-prints.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "map-fold-card",
      "type": "registry:ui",
      "title": "Map Fold Card",
      "description": "A folded paper map that pulls open sideways in accordion pleats, then unfolds downward into a sheet that keeps its creases.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/map-fold-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/map-fold-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "opening-rows",
      "type": "registry:ui",
      "title": "Opening Rows",
      "description": "A list of compact rows where choosing one opens it in place into a full dialog card, and closing folds it back.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/opening-rows.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/opening-rows.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "origami-card",
      "type": "registry:ui",
      "title": "Origami Card",
      "description": "A small folded square of paper that opens hinge by hinge into a flat card, keeping its creases.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/origami-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/origami-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "postcard-flip",
      "type": "registry:ui",
      "title": "Postcard Flip",
      "description": "A postcard whose corner curls up under the pointer and is carried across until the card has turned over, showing the message side.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/postcard-flip.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/postcard-flip.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "receipt-card",
      "type": "registry:ui",
      "title": "Receipt Card",
      "description": "A paper receipt that feeds out of a printer slot line by line, with dotted leaders, a barcode and a serrated edge.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/receipt-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/receipt-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "ridge-card",
      "type": "registry:ui",
      "title": "Ridge Card",
      "description": "A card holding a mountain range in depth: five ridges that shift with parallax as the card tilts, with haze drifting between them.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ridge-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ridge-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "sensu-fan",
      "type": "registry:ui",
      "title": "Sensu Fan",
      "description": "A folding fan that spreads its ribs from a pivot and unfolds a pleated leaf with a picture, or a menu, printed across it.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/sensu-fan.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/sensu-fan.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "sheen-card",
      "type": "registry:ui",
      "title": "Sheen Card",
      "description": "A portrait card that tilts slightly while a band of glare slides across it with the pointer, like light on ice.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/sheen-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/sheen-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "snow-globe",
      "type": "registry:ui",
      "title": "Snow Globe",
      "description": "A glass dome on a lacquered base with a scene inside; shake it and the snow lifts off the floor, swirls with the water and settles again.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snow-globe.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snow-globe.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "stamp-card",
      "type": "registry:ui",
      "title": "Stamp Card",
      "description": "A stamp rally card: pressing an empty ring brings a seal down and leaves an inked impression.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/stamp-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/stamp-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "tanzaku-card",
      "type": "registry:ui",
      "title": "Tanzaku Card",
      "description": "Narrow paper strips tied to a line by short threads, each a damped pendulum that swings and twists when touched and stirs its neighbours.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tanzaku-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tanzaku-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "terminal-replay",
      "type": "registry:ui",
      "title": "Terminal Replay",
      "description": "A terminal window that types out commands after a prompt and prints their output line by line.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/terminal-replay.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/terminal-replay.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "ticket-stub",
      "type": "registry:ui",
      "title": "Ticket Stub",
      "description": "A paper ticket with a perforated stub that swings open as you pull it, breaking one perforation after another, then comes away and falls, leaving the ticket marked as used.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ticket-stub.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ticket-stub.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "tilt-card",
      "type": "registry:ui",
      "title": "Tilt Card",
      "description": "A card that tilts toward the pointer while its contents lift off the surface at different depths.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tilt-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tilt-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "torch-card",
      "type": "registry:ui",
      "title": "Torch Card",
      "description": "A plain card where a soft light follows the pointer and reveals a pattern that is otherwise invisible.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/torch-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/torch-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "typing-keys",
      "type": "registry:ui",
      "title": "Typing Keys",
      "description": "A compact keyboard drawn in CSS whose keys sink and fill with water blue as you type on your own keyboard.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/typing-keys.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/typing-keys.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "weather-card",
      "type": "registry:ui",
      "title": "Weather Card",
      "description": "A forecast card whose background is a small live scene of the weather, from clear sky to thunder.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/weather-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/weather-card.tsx"
        }
      ],
      "categories": [
        "cards"
      ]
    },
    {
      "name": "arriving-text",
      "type": "registry:ui",
      "title": "Arriving Text",
      "description": "A passage that arrives word by word, each word rising slightly and coming into focus.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/arriving-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/arriving-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "brush-annotation",
      "type": "registry:ui",
      "title": "Brush Annotation",
      "description": "Hand-brushed ink marks over inline text: underline, double underline, circle, strike, bracket and highlight.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/brush-annotation.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/brush-annotation.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "colour-wave-text",
      "type": "registry:ui",
      "title": "Colour Wave Text",
      "description": "A word whose letters take palette colours by position and pass each one on in a slow wave.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/colour-wave-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/colour-wave-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "decode-text",
      "type": "registry:ui",
      "title": "Decode Text",
      "description": "Text that starts as scrambled characters and resolves to the real text one character at a time.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/decode-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/decode-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "evaporating-word",
      "type": "registry:ui",
      "title": "Evaporating Word",
      "description": "One word in a sentence that evaporates letter by letter and condenses into the next.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/evaporating-word.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/evaporating-word.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "flowing-letters",
      "type": "registry:ui",
      "title": "Flowing Letters",
      "description": "Letters filled with thin wavy lines of colour that flow sideways like water, drawn on a canvas in the surrounding font.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/flowing-letters.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/flowing-letters.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "frost-text",
      "type": "registry:ui",
      "title": "Frost Text",
      "description": "Letters that freeze into being: fine branching crystals grow along each outline from a few seeds, then the face fills with sparkling frost.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/frost-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/frost-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "haiku-reveal",
      "type": "registry:ui",
      "title": "Haiku Reveal",
      "description": "Three lines written in turn by an unseen brush, stroke by stroke with the ink heavier where it presses, and a seal pressed at the end.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/haiku-reveal.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/haiku-reveal.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "ice-crack-text",
      "type": "registry:ui",
      "title": "Ice Crack Text",
      "description": "Lettering made of ice that cracks in branching lines under the pointer and shatters into angular shards that hang, then draw back together.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ice-crack-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ice-crack-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "ink-bleed-text",
      "type": "registry:ui",
      "title": "Ink Bleed Text",
      "description": "Words that appear the way ink spreads into wet paper: each starts as a soft blot and tightens into crisp letters.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ink-bleed-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ink-bleed-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "marker-headline",
      "type": "registry:ui",
      "title": "Marker Headline",
      "description": "A headline with a phrase marked by a sweep of colour, on a field of fine dots that turn water blue under the pointer.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/marker-headline.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/marker-headline.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "melt-text",
      "type": "registry:ui",
      "title": "Melt Text",
      "description": "Lettering that thaws under the pointer: drops bead at the bottoms of the letters, lengthen and fall into a faint puddle.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/melt-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/melt-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "outline-lettering",
      "type": "registry:ui",
      "title": "Outline Lettering",
      "description": "Large outlined lettering that draws itself in, and whose outline lights up in colour around the pointer.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/outline-lettering.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/outline-lettering.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "ripple-text",
      "type": "registry:ui",
      "title": "Ripple Text",
      "description": "A line of text that behaves like a water surface: pressing a letter sends a wave both ways along the line, and the pointer pushes a small bow wave ahead of it.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ripple-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ripple-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "slipstream",
      "type": "registry:ui",
      "title": "Slipstream",
      "description": "Slipstream: a few words in a marked box that streak with speed lines and lean forward when you hover them.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/slipstream.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/slipstream.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "snow-cap-text",
      "type": "registry:ui",
      "title": "Snow Cap Text",
      "description": "Large text that snow falls around and settles on, gathering in soft caps along the real tops of the letters until a letter is knocked.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snow-cap-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snow-cap-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "split-flap-board",
      "type": "registry:ui",
      "title": "Split-flap Board",
      "description": "A split-flap departure board whose flaps fall through a few characters to each new letter, rippling across the columns.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/split-flap-board.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/split-flap-board.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "tide-text",
      "type": "registry:ui",
      "title": "Tide Text",
      "description": "An outlined headline that holds water inside its letters, with a moving surface that sloshes when the level changes.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tide-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tide-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "turning-word",
      "type": "registry:ui",
      "title": "Turning Word",
      "description": "A word in a small recessed box that turns over to the next word, while the box springs to the new width.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/turning-word.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/turning-word.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "typed-phrases",
      "type": "registry:ui",
      "title": "Typed Phrases",
      "description": "Phrases typed out after a fixed prefix, held, erased and replaced, with a water-blue caret.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/typed-phrases.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/typed-phrases.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "vertical-text",
      "type": "registry:ui",
      "title": "Vertical Text",
      "description": "Text set top to bottom in columns that run right to left, with Latin turned or upright, numerals stood upright in pairs and punctuation hung outside the measure.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/vertical-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/vertical-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "waterline-card",
      "type": "registry:ui",
      "title": "Waterline Card",
      "description": "A card where moving the pointer across it pulls a glowing waterline, and the text behind the line reads differently.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/waterline-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/waterline-card.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "wavering-text",
      "type": "registry:ui",
      "title": "Wavering Text",
      "description": "Text that wobbles as if drawn by hand, or wavers as if seen through moving water, using an SVG displacement filter.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/wavering-text.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/wavering-text.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "word-chip",
      "type": "registry:ui",
      "title": "Word Chip",
      "description": "A phrase whose last word sits in a chip and keeps changing, while the text around it slides to make room.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/word-chip.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/word-chip.tsx"
        }
      ],
      "categories": [
        "text"
      ]
    },
    {
      "name": "opening-laptop",
      "type": "registry:ui",
      "title": "Opening Laptop",
      "description": "A laptop drawn in CSS whose lid opens as you scroll, until the picture on its screen lifts out and grows over the keyboard.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/opening-laptop.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/opening-laptop.tsx"
        }
      ],
      "categories": [
        "scroll"
      ]
    },
    {
      "name": "scroll-story",
      "type": "registry:ui",
      "title": "Scroll Story",
      "description": "Sections of text scroll past on one side while a panel on the other stays put and changes to match the section in the middle.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/scroll-story.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/scroll-story.tsx"
        }
      ],
      "categories": [
        "scroll"
      ]
    },
    {
      "name": "sliding-columns",
      "type": "registry:ui",
      "title": "Sliding Columns",
      "description": "A wall of images in columns that slide at different rates as you scroll, leaning slightly while the scroll is fast.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/sliding-columns.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/sliding-columns.tsx"
        }
      ],
      "categories": [
        "scroll"
      ]
    },
    {
      "name": "tilt-in-panel",
      "type": "registry:ui",
      "title": "Tilt-in Panel",
      "description": "A large framed panel under a heading that starts tilted away and lies flat as the page scrolls it into place.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tilt-in-panel.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tilt-in-panel.tsx"
        }
      ],
      "categories": [
        "scroll"
      ]
    },
    {
      "name": "tilted-rows",
      "type": "registry:ui",
      "title": "Tilted Rows",
      "description": "A header over three rows of cards on a tilted plane that straightens as you scroll while the rows slide apart.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tilted-rows.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tilted-rows.tsx"
        }
      ],
      "categories": [
        "scroll"
      ]
    },
    {
      "name": "loupe",
      "type": "registry:ui",
      "title": "Loupe",
      "description": "A round magnifying glass that follows the pointer over whatever it wraps.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/loupe.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/loupe.tsx"
        }
      ],
      "categories": [
        "cursor"
      ]
    },
    {
      "name": "name-tag-cursor",
      "type": "registry:ui",
      "title": "Name Tag Cursor",
      "description": "Inside this area the cursor becomes a coloured pointer towing a small name tag.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/name-tag-cursor.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/name-tag-cursor.tsx"
        }
      ],
      "categories": [
        "cursor"
      ]
    },
    {
      "name": "ripple-cursor",
      "type": "registry:ui",
      "title": "Ripple Cursor",
      "description": "A surface that answers the pointer with thin light and dark rings that spread and fade along its path, and a stronger double ring where you click.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ripple-cursor.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ripple-cursor.tsx"
        }
      ],
      "categories": [
        "cursor"
      ]
    },
    {
      "name": "selection-box",
      "type": "registry:ui",
      "title": "Selection Box",
      "description": "A phrase gets a box drawn round it, and a pointer arrives at its corner as if someone just selected it.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/selection-box.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/selection-box.tsx"
        }
      ],
      "categories": [
        "cursor"
      ]
    },
    {
      "name": "snow-trail",
      "type": "registry:ui",
      "title": "Snow Trail",
      "description": "Inside its area the pointer sheds a short trail of tiny flakes that fall, drift and fade, and a click throws a small flurry.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snow-trail.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snow-trail.tsx"
        }
      ],
      "categories": [
        "cursor"
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A button in six weights and three sizes, with icons and a pending state.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "button-collection",
      "type": "registry:ui",
      "title": "Button Collection",
      "description": "Twelve button treatments in one component, from a lifting ink button to a key that presses down.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/button-collection.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/button-collection.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "button-group",
      "type": "registry:ui",
      "title": "Button Group",
      "description": "Buttons joined into one connected row or column, optionally working as a toggle group.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/button-group.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/button-group.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "close-button",
      "type": "registry:ui",
      "title": "Close Button",
      "description": "A round button with a cross that turns a quarter turn on hover, for dismissing banners, tags and dialogs.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/close-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/close-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "drip-button",
      "type": "registry:ui",
      "title": "Drip Button",
      "description": "A button that gathers a drop of its own colour on its lower edge and lets it fall, with a small ring where it lands.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/drip-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/drip-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "droplet-border",
      "type": "registry:ui",
      "title": "Droplet Border",
      "description": "A button with a droplet of light that runs round its border at a steady pace.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/droplet-border.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/droplet-border.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "hanko-stamp",
      "type": "registry:ui",
      "title": "Hanko Stamp",
      "description": "A press-and-hold confirm control that charges, then brings a seal down and leaves a red impression.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/hanko-stamp.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/hanko-stamp.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "ice-button",
      "type": "registry:ui",
      "title": "Ice Button",
      "description": "A button made of ice: pressing sends fine cracks out from the press point, and they heal as the surface refreezes.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ice-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ice-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "icon-button",
      "type": "registry:ui",
      "title": "Icon Button",
      "description": "A square button that holds only an icon, in the same six weights and three sizes as Button, with a pending state.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/icon-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/icon-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "lantern-button",
      "type": "registry:ui",
      "title": "Lantern Button",
      "description": "A paper lantern with wooden rims that lights from inside when hovered, with the faint unsteadiness of a flame.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/lantern-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/lantern-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "link-button",
      "type": "registry:ui",
      "title": "Link Button",
      "description": "An inline text action styled as a link, with an underline that draws in on hover and focus.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/link-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/link-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "paper-plane-send",
      "type": "registry:ui",
      "title": "Paper Plane Send",
      "description": "A send button whose glyph folds into a paper plane and flies off on a dashed trail, circling while a promise is pending.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/paper-plane-send.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/paper-plane-send.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "pointer-pull",
      "type": "registry:ui",
      "title": "Pointer Pull",
      "description": "A wrapper that lets whatever is inside drift toward a nearby pointer and spring back when it leaves.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/pointer-pull.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/pointer-pull.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "pond-button",
      "type": "registry:ui",
      "title": "Pond Button",
      "description": "A button whose surface is water: a press sends rings out from the press point and a little way past its edge.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/pond-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/pond-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "progress-button",
      "type": "registry:ui",
      "title": "Progress Button",
      "description": "A button that shows its work: water rises while it waits, fills with a check on success, and flashes camellia with a retry label on failure.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/progress-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/progress-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "pull-cord",
      "type": "registry:ui",
      "title": "Pull Cord",
      "description": "A switch you pull: an elastic cord with a glass bead that clicks past a threshold, springs back and swings to rest.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/pull-cord.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/pull-cord.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "rim-light-button",
      "type": "registry:ui",
      "title": "Rim Light Button",
      "description": "A button whose border carries a soft arc of light that circles it and floods the whole border on hover.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/rim-light-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/rim-light-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "snowflake-like",
      "type": "registry:ui",
      "title": "Snowflake Like",
      "description": "A favourite toggle whose snow crystal fills from its centre and throws six tiny flakes along its arms, with an optional count that ticks.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snowflake-like.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snowflake-like.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "social-button",
      "type": "registry:ui",
      "title": "Social Button",
      "description": "Sign-in buttons for 24 common providers, with their marks.",
      "dependencies": [
        "react-aria-components",
        "simple-icons"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/social-button.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/social-button.tsx"
        }
      ],
      "categories": [
        "buttons"
      ]
    },
    {
      "name": "abacus-input",
      "type": "registry:ui",
      "title": "Abacus Input",
      "description": "A number entered by sliding beads on a wooden abacus, one rod per digit, with each rod also a spin button you can type into.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/abacus-input.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/abacus-input.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "A check box that floods with water when turned on, with groups, an indeterminate state and a card variant.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/checkbox.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/checkbox.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "clock-face-picker",
      "type": "registry:ui",
      "title": "Clock Face Picker",
      "description": "Pick a time by dragging the hands of an analogue clock, with the time shown digitally above and an AM/PM switch for 12-hour use.",
      "dependencies": [
        "@internationalized/date",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/segmented-control.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/clock-face-picker.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/clock-face-picker.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "day-night-toggle",
      "type": "registry:ui",
      "title": "Day Night Toggle",
      "description": "A switch drawn as a small snow landscape where the sun sets behind the ridge, the moon rises and the stars come out.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/day-night-toggle.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/day-night-toggle.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "dial-thermostat",
      "type": "registry:ui",
      "title": "Dial Thermostat",
      "description": "A round dial you turn by dragging, scrolling or with the arrow keys, its arc running from water blue at the cold end to camellia at the hot end.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/dial-thermostat.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/dial-thermostat.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "droplet-search",
      "type": "registry:ui",
      "title": "Droplet Search",
      "description": "A search pill that stretches open while a droplet holding the icon splits off its end.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/droplet-search.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/droplet-search.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "file-dropzone",
      "type": "registry:ui",
      "title": "File dropzone",
      "description": "A drop area with a small stack of paper that lifts on hover and fans out when files are dragged over, listing the chosen files below.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/file-dropzone.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/file-dropzone.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "file-upload",
      "type": "registry:ui",
      "title": "File upload",
      "description": "A drop area for files, with each file checked for type and size and shown as a row with upload progress.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/close-button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/link-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/file-upload.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/file-upload.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A text field with a label, help text, validation, icons and text addons.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/input.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/input.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "input-otp",
      "type": "registry:ui",
      "title": "Input OTP",
      "description": "Boxes for a one-time code, drawn over one real input so typing, pasting and autofill all work.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/input-otp.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/input-otp.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "lit-fields",
      "type": "registry:ui",
      "title": "Lit Fields",
      "description": "A sign-up form whose field borders brighten with water-blue light where the pointer is.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/divider.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json",
        "https://ui.miyuki-yue.dev/r/social-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/lit-fields.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/lit-fields.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "number-field",
      "type": "registry:ui",
      "title": "Number Field",
      "description": "A numeric field with stepper buttons, number formatting and limits.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/number-field.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/number-field.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "radio",
      "type": "registry:ui",
      "title": "Radio",
      "description": "A radio group whose chosen option fills with water as a dot drops in, with a card variant.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/radio.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/radio.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "rating-crystals",
      "type": "registry:ui",
      "title": "Rating Crystals",
      "description": "A rating made of snow crystals that grow richer from the first to the fifth.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/rating-crystals.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/rating-crystals.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "ridge-slider",
      "type": "registry:ui",
      "title": "Ridge Slider",
      "description": "A slider whose track is a ridgeline: the marker climbs the path as the value changes and the readout gives the percentage and the altitude there.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ridge-slider.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ridge-slider.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "search-field",
      "type": "registry:ui",
      "title": "Search Field",
      "description": "A search box with a clear button, a pending state and a keyboard shortcut hint.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/search-field.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/search-field.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "season-wheel",
      "type": "registry:ui",
      "title": "Season Wheel",
      "description": "Pick a month, or a span of months, from the year laid out as a ring tinted by season, each month with its own small glyph.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/season-wheel.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/season-wheel.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "segmented-control",
      "type": "registry:ui",
      "title": "Segmented Control",
      "description": "A row of options with a pill that slides to the selected one.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/segmented-control.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/segmented-control.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "signature-pad",
      "type": "registry:ui",
      "title": "Signature Pad",
      "description": "A paper area you sign with a brush: ink thickens when you slow down, thins when you hurry and bleeds a little where each stroke begins. A Type instead switch lets anyone without a pointer type their name, set in a script hand.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/switch.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/signature-pad.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/signature-pad.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "slider",
      "type": "registry:ui",
      "title": "Slider",
      "description": "A slider for a single value or a range, with a value bubble while dragging and optional tick marks.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/slider.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/slider.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "snowdrift-input",
      "type": "registry:ui",
      "title": "Snowdrift Input",
      "description": "A pill search field with rotating placeholders whose text blows away like drifting snow when submitted.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snowdrift-input.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snowdrift-input.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "An on/off toggle whose thumb stretches while pressed and springs across on release.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/switch.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/switch.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "A multiline text field that grows with its content and counts characters.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/textarea.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/textarea.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "thermometer-slider",
      "type": "registry:ui",
      "title": "Thermometer Slider",
      "description": "A slider drawn as a glass thermometer whose liquid column springs to the value and shifts from water blue to camellia as it warms.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/thermometer-slider.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/thermometer-slider.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "tide-range",
      "type": "registry:ui",
      "title": "Tide Range",
      "description": "A two-thumb range slider drawn as a strip of moving water, with bobbing buoys for thumbs and deeper water between them.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tide-range.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tide-range.tsx"
        }
      ],
      "categories": [
        "inputs"
      ]
    },
    {
      "name": "color-picker",
      "type": "registry:ui",
      "title": "Color picker",
      "description": "Pick a colour by eye on a saturation and brightness area, by hex value, or from presets taken from the theme.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/color-picker.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/color-picker.tsx"
        }
      ],
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "combobox",
      "type": "registry:ui",
      "title": "Combobox",
      "description": "A text field that filters a list as you type, then keeps the option you pick.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/select.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/combobox.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/combobox.tsx"
        }
      ],
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "date-calendar",
      "type": "registry:ui",
      "title": "Date calendar",
      "description": "A month on the page for choosing one date or a range, with one or two months side by side.",
      "dependencies": [
        "@internationalized/date",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/date-calendar.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/date-calendar.tsx"
        }
      ],
      "docs": "Date calendar reads today's date while it renders. In a Next.js app with Cache Components turned on, put it inside React's <Suspense>, or the build stops with an error. Give the fallback the size of the control so nothing moves when it appears:\n\nimport { Suspense } from \"react\";\n\n<Suspense fallback={<div className=\"h-72\" />}>\n  <Calendar aria-label=\"Date\" />\n</Suspense>\n\nmiyuki-ui blocks and templates that use it already do this.",
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "date-picker",
      "type": "registry:ui",
      "title": "Date picker",
      "description": "A date field typed one part at a time, with a calendar in a popover, for one date or a range.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/date-calendar.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/date-picker.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/date-picker.tsx"
        }
      ],
      "docs": "Date picker reads today's date while it renders. In a Next.js app with Cache Components turned on, put it inside React's <Suspense>, or the build stops with an error. Give the fallback the size of the control so nothing moves when it appears:\n\nimport { Suspense } from \"react\";\n\n<Suspense fallback={<div className=\"h-16\" />}>\n  <DatePicker label=\"Date\" />\n</Suspense>\n\nmiyuki-ui blocks and templates that use it already do this.",
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "route-picker",
      "type": "registry:ui",
      "title": "Route picker",
      "description": "A line of stations drawn as a strip map, for choosing where to get on and off, with the fare and journey time beneath.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/route-picker.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/route-picker.tsx"
        }
      ],
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "seat-map",
      "type": "registry:ui",
      "title": "Seat map",
      "description": "A rail carriage drawn from above, with seat pairs, an aisle, doors, racks and windows, for choosing seats across several cars.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/seat-map.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/seat-map.tsx"
        }
      ],
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "A field that opens a list of options and keeps one, with icons, avatars, sections and an optional search.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/select.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/select.tsx"
        }
      ],
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "tag-group",
      "type": "registry:ui",
      "title": "Tag Group",
      "description": "A labelled set of tags for filtering, choosing or removing, with keyboard navigation between them.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tag-group.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tag-group.tsx"
        }
      ],
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "time-field",
      "type": "registry:ui",
      "title": "Time field",
      "description": "A time typed one part at a time, with arrow keys to step each part, on a 12- or 24-hour clock.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/time-field.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/time-field.tsx"
        }
      ],
      "docs": "Time field reads today's date while it renders. In a Next.js app with Cache Components turned on, put it inside React's <Suspense>, or the build stops with an error. Give the fallback the size of the control so nothing moves when it appears:\n\nimport { Suspense } from \"react\";\n\n<Suspense fallback={<div className=\"h-16\" />}>\n  <TimeField label=\"Time\" />\n</Suspense>\n\nmiyuki-ui blocks and templates that use it already do this.",
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "timetable-picker",
      "type": "registry:ui",
      "title": "Timetable picker",
      "description": "A station timetable with one row per hour and the minutes set out along it, for choosing a departure and seeing when it arrives.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/timetable-picker.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/timetable-picker.tsx"
        }
      ],
      "categories": [
        "pickers"
      ]
    },
    {
      "name": "avatar-tags",
      "type": "registry:ui",
      "title": "Avatar Tags",
      "description": "A row of overlapping avatars, each with an ink name tag that springs in and leans with the pointer.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/avatar-tags.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/avatar-tags.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "command-palette",
      "type": "registry:ui",
      "title": "Command palette",
      "description": "A searchable list of every page and action, opened with ⌘K or Ctrl+K and driven from the keyboard.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/command-palette.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/command-palette.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "context-menu",
      "type": "registry:ui",
      "title": "Context menu",
      "description": "A menu that opens where you right-click, or from the keyboard with Shift+F10, with icons, shortcuts and submenus.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/dropdown.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/context-menu.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/context-menu.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "drawer",
      "type": "registry:ui",
      "title": "Drawer",
      "description": "A panel that slides in from any edge of the window, with a bottom sheet you can drag down to dismiss.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/drawer.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/drawer.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "dropdown",
      "type": "registry:ui",
      "title": "Dropdown",
      "description": "A menu of actions or choices that opens from a button, with icons, descriptions, shortcuts, sections and submenus.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/dropdown.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/dropdown.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "link-peek",
      "type": "registry:ui",
      "title": "Link Peek",
      "description": "A link that shows a small card with a picture, title and host when hovered or focused.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/link-peek.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/link-peek.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "modal",
      "type": "registry:ui",
      "title": "Modal",
      "description": "A dialog over a dimmed page, in four sizes, with a scrolling body and a confirm variant.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/modal.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/modal.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "noren-drawer",
      "type": "registry:ui",
      "title": "Noren drawer",
      "description": "A drawer from the top edge whose content is covered by three cloth panels on a rod, which part as it opens and fall back as it closes.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/noren-drawer.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/noren-drawer.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "Rich content anchored to a trigger, with an optional arrow, that flips when there is no room.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/popover.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/popover.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "ripple-menu",
      "type": "registry:ui",
      "title": "Ripple menu",
      "description": "A menu that spreads in rings from where you press and hold, right-click or tap its button, choosing the action you move toward.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ripple-menu.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ripple-menu.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "snow-toast",
      "type": "registry:ui",
      "title": "Snow toast",
      "description": "Notifications that drift down from the top of the window like large flakes, settle on a pile at the bottom, and melt when dismissed.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snow-toast.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snow-toast.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "surfacing-modal",
      "type": "registry:ui",
      "title": "Surfacing Modal",
      "description": "A dialog that surfaces from below, tipped back and coming into focus, opened by a button whose label slides away for an icon.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/modal.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/surfacing-modal.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/surfacing-modal.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "tide-sheet",
      "type": "registry:ui",
      "title": "Tide sheet",
      "description": "A bottom sheet whose top edge is a slow wave, resting at three heights and dragged like a water level.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tide-sheet.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tide-sheet.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "toast",
      "type": "registry:ui",
      "title": "Toast",
      "description": "Short messages that stack in a corner, fan out on hover and leave on their own.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/toast.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/toast.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "A short hint in ink that shows on hover and focus, with an optional arrow and key hint.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tooltip.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tooltip.tsx"
        }
      ],
      "categories": [
        "overlays"
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:ui",
      "title": "Breadcrumb",
      "description": "A trail of links showing where you are, with the middle steps folded into a menu when it gets long.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/dropdown.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/breadcrumb.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/breadcrumb.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "card-tabs",
      "type": "registry:ui",
      "title": "Card Tabs",
      "description": "Tabs whose panels are a stack of cards, where choosing a tab brings its card to the front.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/card-tabs.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/card-tabs.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "collapsible-sidebar",
      "type": "registry:ui",
      "title": "Collapsible sidebar",
      "description": "A sidebar that rests as a strip of icons and opens to full width while the pointer or keyboard focus is in it.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/collapsible-sidebar.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/collapsible-sidebar.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "compass-nav",
      "type": "registry:ui",
      "title": "Compass Nav",
      "description": "A compass whose needle swings toward the destination under the pointer or the section in view, and whose dial turns to bring the chosen destination to the top.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/compass-nav.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/compass-nav.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "control-island",
      "type": "registry:ui",
      "title": "Control Island",
      "description": "A small floating island of controls that opens into a panel of options when one of them is chosen.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/control-island.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/control-island.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "depth-gauge",
      "type": "registry:ui",
      "title": "Depth Gauge",
      "description": "A slim gauge at the edge of the page that reads how deep you have scrolled in metres, darkening from pale surface water to the deep; click or drag it to go to a depth.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/depth-gauge.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/depth-gauge.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "furin-bell",
      "type": "registry:ui",
      "title": "Furin Bell",
      "description": "A notification button drawn as a glass wind chime whose paper strip carries the unread count and which swings when something arrives.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/furin-bell.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/furin-bell.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "gate-transition",
      "type": "registry:ui",
      "title": "Gate Transition",
      "description": "A wrapper that switches between views through a ticket gate: two flaps swing shut across the middle, a lamp lights, the content changes behind them and the flaps swing open, all in 600ms.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/gate-transition.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/gate-transition.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "glass-dock",
      "type": "registry:ui",
      "title": "Glass Dock",
      "description": "A glass dock of round icons that swell in a wave as the pointer passes over them.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/glass-dock.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/glass-dock.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "gliding-menu",
      "type": "registry:ui",
      "title": "Gliding Menu",
      "description": "A bar of menus that share one panel, which glides and reshapes itself as you move from one menu to the next.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/gliding-menu.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/gliding-menu.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "hiding-banner",
      "type": "registry:ui",
      "title": "Hiding Banner",
      "description": "A bar at the top of the page that steps aside while you scroll down and returns when you scroll up.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/hiding-banner.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/hiding-banner.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "nav-pill",
      "type": "registry:ui",
      "title": "Nav Pill",
      "description": "A pill of links that floats at the top of the page, steps away while you scroll down and returns when you scroll up.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/nav-pill.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/nav-pill.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "pagination",
      "type": "registry:ui",
      "title": "Pagination",
      "description": "Page numbers with previous and next buttons, folding long runs into an ellipsis.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/pagination.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/pagination.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "ridge-progress",
      "type": "registry:ui",
      "title": "Ridge Progress",
      "description": "A thin band across the top of the page with a mountain ridge in silhouette that fills with water as you read, a marker that climbs the ridgeline and a flag that waves once at the summit.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ridge-progress.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ridge-progress.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "shrinking-header",
      "type": "registry:ui",
      "title": "Shrinking Header",
      "description": "A full-width header that draws in to a floating glass pill once the page starts to scroll.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/shrinking-header.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/shrinking-header.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "station-nav",
      "type": "registry:ui",
      "title": "Station Nav",
      "description": "A table of contents drawn as a railway line, with a station for each section and a small train that runs down the line as the page scrolls.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/station-nav.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/station-nav.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "stepping-stones",
      "type": "registry:ui",
      "title": "Stepping Stones",
      "description": "Steps in a process as flat stones across a strip of water: wet and dark behind you, rings spreading from the one you stand on, dry and pale ahead.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/stepping-stones.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/stepping-stones.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "Switch between panels with a water underline or a pill that slides to the current tab.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tabs.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tabs.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "tide-tabs",
      "type": "registry:ui",
      "title": "Tide Tabs",
      "description": "Tabs over a shallow channel whose indicator is a pool of water that flows to the chosen tab, stretching on the way and gathering when it arrives.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tide-tabs.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tide-tabs.tsx"
        }
      ],
      "categories": [
        "navigation"
      ]
    },
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "Sections that open in place, divided by hairlines or set apart as cards.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/accordion.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/accordion.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "announcement",
      "type": "registry:ui",
      "title": "Announcement",
      "description": "A dismissible pill or full-width strip for product news, with a label, a short message and a link.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/close-button.json",
        "https://ui.miyuki-yue.dev/r/link-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/announcement.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/announcement.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "A person's picture in five sizes, with initials on a soft tint when there is none, a status dot, and overlapping groups.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/avatar.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/avatar.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "A small pill that labels a status or a count, in five tones and three styles.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/badge.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/badge.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "chip",
      "type": "registry:ui",
      "title": "Chip",
      "description": "A compact tag with an optional icon or avatar that can be removed or toggled.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/chip.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/chip.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "code-block",
      "type": "registry:ui",
      "title": "Code Block",
      "description": "A block of highlighted code with a file name or tabs, optional line numbers and a copy button.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components",
        "shiki"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/code-block.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/code-block.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "developing-image",
      "type": "registry:ui",
      "title": "Developing Image",
      "description": "A frame that develops an image: a band of shimmering water-toned cells sweeps down, turning a pixel haze into the picture.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/developing-image.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/developing-image.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "divider",
      "type": "registry:ui",
      "title": "Divider",
      "description": "A separator between content, as a single or double line, a dashed line or a filled band, with an optional label.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/divider.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/divider.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "dot-matrix-display",
      "type": "registry:ui",
      "title": "Dot Matrix Display",
      "description": "A panel of round dots that spells messages in a 5×7 dot font, like a platform sign.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/dot-matrix-display.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/dot-matrix-display.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "enso",
      "type": "registry:ui",
      "title": "Enso",
      "description": "A circle drawn in one brush stroke, heavy at the start and dry at the tail, used as a progress ring or a loader.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/enso.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/enso.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "loaders",
      "type": "registry:ui",
      "title": "Loaders",
      "description": "Six small loading indicators drawn in the current colour: bars, a wave, a snow crystal, ripples, a dot grid and a word.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/loaders.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/loaders.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "meter",
      "type": "registry:ui",
      "title": "Meter",
      "description": "How much of a limit has been used, in water that turns yuzu and then camellia near the limit.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/meter.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/meter.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "moon-phase",
      "type": "registry:ui",
      "title": "Moon Phase",
      "description": "The moon as it is on a given date, with a strip of the days around it.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/moon-phase.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/moon-phase.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "notification",
      "type": "registry:ui",
      "title": "Notification",
      "description": "A status message card with a tone icon or an avatar, a timestamp, body text and optional actions.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/notification.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/notification.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "odometer",
      "type": "registry:ui",
      "title": "Odometer",
      "description": "A number shown on turning wheels that roll and carry over like a mechanical counter.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/odometer.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/odometer.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "path-morph",
      "type": "registry:ui",
      "title": "Path Morph",
      "description": "SVG paths that flow from one shape into another through a spring, with ready-made icon pairs drawn to morph cleanly.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/path-morph.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/path-morph.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "progress",
      "type": "registry:ui",
      "title": "Progress",
      "description": "How far something has got, as a bar or a ring, with or without a known end.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/progress.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/progress.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "Loading placeholders with a slow band of light, and a reveal that blurs them into the real content.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/skeleton.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/skeleton.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "snow-crystal",
      "type": "registry:ui",
      "title": "Snow Crystal",
      "description": "A snowflake grown from a seed with six-fold symmetry, for identicons, decoration or a loader.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snow-crystal.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snow-crystal.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "spinner",
      "type": "registry:ui",
      "title": "Spinner",
      "description": "An in-progress indicator drawn as moving water, in three variants and five sizes.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/spinner.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/spinner.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "station-clock",
      "type": "registry:ui",
      "title": "Station Clock",
      "description": "An analogue wall clock with bar markers, a sweeping second hand and a minute hand that steps once a minute.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/station-clock.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/station-clock.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "sun-arc",
      "type": "registry:ui",
      "title": "Sun Arc",
      "description": "The sun's path for one day: an arc from sunrise to sunset with the sun at a time you can scrub.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/sun-arc.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/sun-arc.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "table",
      "type": "registry:ui",
      "title": "Table",
      "description": "A data table in a rounded frame with sortable columns, row selection and a sticky header.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/checkbox.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/table.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/table.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "ticking-steps",
      "type": "registry:ui",
      "title": "Ticking Steps",
      "description": "An overlay with a list of steps that tick off one by one, the current one held in the centre, while something slow happens.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ticking-steps.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ticking-steps.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "tide-progress",
      "type": "registry:ui",
      "title": "Tide Progress",
      "description": "A vessel that fills with water to show progress, with a surface that sloshes when the value changes and a percentage that changes colour where the water covers it.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tide-progress.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tide-progress.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "timeline",
      "type": "registry:ui",
      "title": "Timeline",
      "description": "A vertical timeline whose labels stick while their content scrolls past, with a line that fills with water as you go.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/timeline.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/timeline.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "tree-view",
      "type": "registry:ui",
      "title": "Tree View",
      "description": "Nested folders and files with guide lines, keyboard navigation and selection.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tree-view.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tree-view.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "weather-icon",
      "type": "registry:ui",
      "title": "Weather Icon",
      "description": "Eleven animated weather symbols drawn as lines on a 24 grid, each with its own small, slow loop.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/weather-icon.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/weather-icon.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "before-after",
      "type": "registry:ui",
      "title": "Before and After",
      "description": "Two images in one frame with a divider you move to compare them.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/before-after.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/before-after.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "carousel",
      "type": "registry:ui",
      "title": "Carousel",
      "description": "A row of cards you slide through, with snapping, round arrow buttons and dots.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/carousel.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/carousel.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "colour-split",
      "type": "registry:ui",
      "title": "Colour Split",
      "description": "A picture whose red and blue channels peel apart and lean toward the pointer while the frame tilts, drawn with WebGL.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/colour-split.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/colour-split.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "kamishibai-slider",
      "type": "registry:ui",
      "title": "Kamishibai Slider",
      "description": "A paper theatre: pictures in a wooden frame with its doors folded back, each sheet drawn out sideways to reveal the next.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/kamishibai-slider.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/kamishibai-slider.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "showcase-carousel",
      "type": "registry:ui",
      "title": "Showcase Carousel",
      "description": "A carousel with the current slide forward and its neighbours turned away on either side.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/showcase-carousel.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/showcase-carousel.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "soundscape-mixer",
      "type": "registry:ui",
      "title": "Soundscape Mixer",
      "description": "A small mixer of weather sounds made on the spot with WebAudio, no files: rain, wind, a stream and a fire, each with a level and a live picture of itself.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/path-morph.json",
        "https://ui.miyuki-yue.dev/r/slider.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/soundscape-mixer.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/soundscape-mixer.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "story-cards-carousel",
      "type": "registry:ui",
      "title": "Story Cards Carousel",
      "description": "A row of tall cards you scroll sideways; opening one unfolds it into an article.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/story-cards-carousel.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/story-cards-carousel.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "testimonial-stack",
      "type": "registry:ui",
      "title": "Testimonial Stack",
      "description": "A pile of portraits beside a quotation; stepping through brings the next portrait to the top.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/testimonial-stack.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/testimonial-stack.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "tide-slideshow",
      "type": "registry:ui",
      "title": "Tide Slideshow",
      "description": "A full-bleed slideshow where each image washes in over the last like a tide, with content laid over the top.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tide-slideshow.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tide-slideshow.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "train-window",
      "type": "registry:ui",
      "title": "Train Window",
      "description": "Scenery seen from a moving train: poles and trees whip past, hills drift, mountains barely move, and a tunnel carries you from one view to the next.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/train-window.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/train-window.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "two-tone-print",
      "type": "registry:ui",
      "title": "Two-tone Print",
      "description": "An image reduced to dots, lines or noise in two colours, like a woodblock or newspaper print.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/two-tone-print.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/two-tone-print.tsx"
        }
      ],
      "categories": [
        "media"
      ]
    },
    {
      "name": "bento-grid",
      "type": "registry:ui",
      "title": "Bento grid",
      "description": "A grid of unequal tiles, each with a small visual on top, a title and a line of text.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/bento-grid.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/bento-grid.tsx"
        }
      ],
      "categories": [
        "layout"
      ]
    },
    {
      "name": "meander-timeline",
      "type": "registry:ui",
      "title": "Meander Timeline",
      "description": "Events along a river that winds down the page in slow bends and fills with water as you scroll, with each event on alternate banks joined by a small tributary and a leaf drifting at the reading position.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/meander-timeline.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/meander-timeline.tsx"
        }
      ],
      "categories": [
        "layout"
      ]
    },
    {
      "name": "page-curl",
      "type": "registry:ui",
      "title": "Page Curl",
      "description": "A booklet page whose lower corner lifts into a curl when you reach for it, showing its underside and the page beneath; drag it past halfway to turn, or pull the last page back from the left.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/page-curl.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/page-curl.tsx"
        }
      ],
      "categories": [
        "layout"
      ]
    },
    {
      "name": "shoji-reveal",
      "type": "registry:ui",
      "title": "Shoji Reveal",
      "description": "Paper screens on wooden lattices that slide apart, overlapping as they go, to show what is behind them.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/shoji-reveal.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/shoji-reveal.tsx"
        }
      ],
      "categories": [
        "layout"
      ]
    },
    {
      "name": "tatami-grid",
      "type": "registry:ui",
      "title": "Tatami Grid",
      "description": "Lays its children out as tatami mats, half or full, arranged so that four corners never meet, and re-lays the room with a layout animation when mats are added, removed or resized.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tatami-grid.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tatami-grid.tsx"
        }
      ],
      "categories": [
        "layout"
      ]
    },
    {
      "name": "zoom-grid",
      "type": "registry:ui",
      "title": "Zoom Grid",
      "description": "A grid of image cards where choosing one brings it forward and large while the rest of the grid dims behind it.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/zoom-grid.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/zoom-grid.tsx"
        }
      ],
      "categories": [
        "layout"
      ]
    },
    {
      "name": "arc-globe",
      "type": "registry:ui",
      "title": "Arc Globe",
      "description": "A globe of dots, turning slowly, with arcs leaping between cities.",
      "dependencies": [
        "d3-geo",
        "motion",
        "topojson-client",
        "world-atlas"
      ],
      "devDependencies": [
        "@types/d3-geo",
        "@types/topojson-client"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/arc-globe.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/arc-globe.tsx"
        }
      ],
      "categories": [
        "maps"
      ]
    },
    {
      "name": "image-wall",
      "type": "registry:ui",
      "title": "Image Wall",
      "description": "A tilted wall of images whose columns drift in opposite directions.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/image-wall.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/image-wall.tsx"
        }
      ],
      "categories": [
        "maps"
      ]
    },
    {
      "name": "map-pin-card",
      "type": "registry:ui",
      "title": "Map Pin Card",
      "description": "A card that lies back like a map on a table while a pin rises out of it.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/map-pin-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/map-pin-card.tsx"
        }
      ],
      "categories": [
        "maps"
      ]
    },
    {
      "name": "pinned-globe",
      "type": "registry:ui",
      "title": "Pinned Globe",
      "description": "A solid globe with shaded land and sea, and people pinned to places.",
      "dependencies": [
        "d3-geo",
        "motion",
        "topojson-client",
        "world-atlas"
      ],
      "devDependencies": [
        "@types/d3-geo",
        "@types/topojson-client"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/pinned-globe.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/pinned-globe.tsx"
        }
      ],
      "categories": [
        "maps"
      ]
    },
    {
      "name": "world-map",
      "type": "registry:ui",
      "title": "World Map",
      "description": "A world map made of dots, with routes that draw themselves between places.",
      "dependencies": [
        "d3-geo",
        "motion",
        "topojson-client",
        "world-atlas"
      ],
      "devDependencies": [
        "@types/d3-geo",
        "@types/topojson-client"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/world-map.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/world-map.tsx"
        }
      ],
      "categories": [
        "maps"
      ]
    },
    {
      "name": "area-chart",
      "type": "registry:ui",
      "title": "Area Chart",
      "description": "Stacked, overlapping or 100% areas in a card, with a crosshair tooltip and a legend of totals.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/area-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/area-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "aspect-rose",
      "type": "registry:ui",
      "title": "Aspect Rose",
      "description": "Avalanche danger by slope direction and elevation: eight aspects by three elevation rings on a five-step scale, each cell numbered, with its key beside it.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/aspect-rose.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/aspect-rose.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "barometer",
      "type": "registry:ui",
      "title": "Barometer",
      "description": "Air pressure on an aneroid dial, with a settable marker needle for the earlier reading and the trend written beneath.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/barometer.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/barometer.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "channel-bars",
      "type": "registry:ui",
      "title": "Channel Bars",
      "description": "Stacked bars by channel with a dashed goal line and the best day marked, in a card.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/channel-bars.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/channel-bars.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "combo-chart",
      "type": "registry:ui",
      "title": "Combo Chart",
      "description": "Bars in tubes on the left axis and a line with dots on the right axis, in a card.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/combo-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/combo-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "comparison-area",
      "type": "registry:ui",
      "title": "Comparison Area",
      "description": "This period as a water area over the last as a dashed line, in a card with the comparison in the tooltip.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/comparison-area.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/comparison-area.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "contour-plot",
      "type": "registry:ui",
      "title": "Contour Plot",
      "description": "A two-dimensional field drawn as filled bands and labelled lines of equal value, with highs and lows marked, like a pressure chart.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/contour-plot.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/contour-plot.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "elevation-profile",
      "type": "registry:ui",
      "title": "Elevation Profile",
      "description": "The shape of a route from the side: altitude against distance, tinted by steepness, with flagged waypoints, a scrubber and total ascent and descent.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/elevation-profile.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/elevation-profile.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "funnel-chart",
      "type": "registry:ui",
      "title": "Funnel Chart",
      "description": "A horizontal funnel drawn as one smooth tapering band split into coloured stages, with each stage's share of the first and a tile per stage.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/funnel-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/funnel-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "funnel-pills",
      "type": "registry:ui",
      "title": "Funnel Pills",
      "description": "Funnel stages as horizontal pills that shorten down the list, each with an icon, its count and its share of the first stage.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/funnel-pills.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/funnel-pills.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "ghost-bars",
      "type": "registry:ui",
      "title": "Ghost Bars",
      "description": "Bars in tubes with the previous period as a thin ghost bar beside each and the current period outlined in ink.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ghost-bars.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ghost-bars.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "goal-bars",
      "type": "registry:ui",
      "title": "Goal Bars",
      "description": "Daily bars in tubes against a goal tick, water when the goal is reached and paler water when not, with a week switcher.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/goal-bars.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/goal-bars.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "goal-rings",
      "type": "registry:ui",
      "title": "Goal Rings",
      "description": "Concentric rings that sweep towards each goal on pale tracks, with a tile per ring above them.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/goal-rings.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/goal-rings.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "heatmap-chart",
      "type": "registry:ui",
      "title": "Heatmap Chart",
      "description": "A matrix of rounded cells on a five-step water ramp, such as days by hour blocks, with a tooltip per cell and a ramp legend.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/heatmap-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/heatmap-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "horizon-chart",
      "type": "registry:ui",
      "title": "Horizon Chart",
      "description": "Many long series in little height: each row folds its area into bands of deepening water blue above a baseline and camellia below, read all at once by a vertical rule.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/horizon-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/horizon-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "line-chart",
      "type": "registry:ui",
      "title": "Line Chart",
      "description": "One line over a soft water area in a card, smooth or straight, with a crosshair tooltip.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/line-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/line-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "precip-radar",
      "type": "registry:ui",
      "title": "Precipitation Radar",
      "description": "A radar loop over a map: soft patches of rain and snow carried along the wind frame by frame, a sweep line, play and pause, and a timeline that scrubs.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/precip-radar.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/precip-radar.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "radar-chart",
      "type": "registry:ui",
      "title": "Radar Chart",
      "description": "A polygon on a spider grid with labels round the outside: filled, dotted, two series as outlines, or scores with their mean in the middle.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/radar-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/radar-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "radial-chart",
      "type": "registry:ui",
      "title": "Radial Chart",
      "description": "Values as arcs: concentric rings, a three-quarter gauge with the value in the middle, or a half gauge split into segments.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/radial-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/radial-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "ranked-bars",
      "type": "registry:ui",
      "title": "Ranked Bars",
      "description": "Ranked rows with each label on a bar showing its share, with tabs for several breakdowns and a fold for long lists.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/tabs.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ranked-bars.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ranked-bars.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "ridge-plot",
      "type": "registry:ui",
      "title": "Ridge Plot",
      "description": "Distributions as smooth density ridges stacked like a mountain range, nearer ridges covering farther ones, with the median and range on hover.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ridge-plot.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ridge-plot.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "sankey-chart",
      "type": "registry:ui",
      "title": "Sankey Chart",
      "description": "A flow diagram in a card: nodes as short bars, flows as tinted bands, and each node labelled with its share.",
      "dependencies": [
        "d3-sankey",
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-sankey",
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/sankey-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/sankey-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "scatter-chart",
      "type": "registry:ui",
      "title": "Scatter Chart",
      "description": "Dots for correlation, or bubbles sized by a third value, in coloured groups with a legend of counts.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/scatter-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/scatter-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "sleep-ring",
      "type": "registry:ui",
      "title": "Sleep Ring",
      "description": "A score in a ring made of one segment per sleep stage, with a large numeral in the middle and a row per stage below.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/sleep-ring.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/sleep-ring.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "snow-stakes",
      "type": "registry:ui",
      "title": "Snow Stakes",
      "description": "Snow depth drawn as snow standing against marked stakes, with the newest snow as a brighter layer on top.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snow-stakes.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snow-stakes.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "snow-swarm",
      "type": "registry:ui",
      "title": "Snow Swarm",
      "description": "A dot plot whose dots fall like snow and settle at their values, piling up without overlapping, and drift to new places when regrouped.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snow-swarm.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snow-swarm.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "stream-graph",
      "type": "registry:ui",
      "title": "Stream Graph",
      "description": "Series stacked about a central baseline so they flow as one river, with names set inside each layer where it is widest.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/stream-graph.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/stream-graph.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "tide-chart",
      "type": "registry:ui",
      "title": "Tide Chart",
      "description": "A day of tide as a smooth water curve, with high and low water labelled, night hours shaded, a now marker riding the curve and the moon's phase.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tide-chart.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tide-chart.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "weekday-rings",
      "type": "registry:ui",
      "title": "Weekday Rings",
      "description": "A month in weekday columns, each day a small ring towards a daily goal, with a bar per weekday showing its average.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/weekday-rings.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/weekday-rings.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "wind-rose",
      "type": "registry:ui",
      "title": "Wind Rose",
      "description": "Where the wind comes from and how hard: sixteen spokes of stacked speed bands on frequency rings, with a vane that swings to the prevailing direction.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/wind-rose.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/wind-rose.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "year-grid",
      "type": "registry:ui",
      "title": "Year Grid",
      "description": "A year of daily counts as a grid of small squares on a five-step water ramp, with stat tiles and a control that regroups the days by week, month or year.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/year-grid.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/year-grid.tsx"
        }
      ],
      "categories": [
        "charts"
      ]
    },
    {
      "name": "action-log",
      "type": "registry:ui",
      "title": "Action Log",
      "description": "A running log of what an agent has done, one row per action, with the newest row in progress.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/action-log.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/action-log.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "agent-persona",
      "type": "registry:ui",
      "title": "Agent Persona",
      "description": "A form for giving an agent a face, a name and a voice, with a water-droplet character whose eyes follow the pointer.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json",
        "https://ui.miyuki-yue.dev/r/select.json",
        "https://ui.miyuki-yue.dev/r/switch.json",
        "https://ui.miyuki-yue.dev/r/textarea.json",
        "https://ui.miyuki-yue.dev/r/tooltip.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/agent-persona.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/agent-persona.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "agent-questions",
      "type": "registry:ui",
      "title": "Agent Questions",
      "description": "Questions from an agent, one step at a time, with single or multiple choice, an Other answer and step pills, sliding sideways between steps.",
      "dependencies": [
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/checkbox.json",
        "https://ui.miyuki-yue.dev/r/close-button.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/radio.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/agent-questions.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/agent-questions.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "attachment-tray",
      "type": "registry:ui",
      "title": "Attachment Tray",
      "description": "A horizontally scrolling row of attached files above the prompt: image thumbnails and document tiles that drop in one by one and close up when removed.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/close-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/attachment-tray.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/attachment-tray.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "context-meter",
      "type": "registry:ui",
      "title": "Context Meter",
      "description": "How much of an agent's context window is in use, by category, and how close the plan's usage limits are.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/progress.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/context-meter.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/context-meter.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "prompt-box",
      "type": "registry:ui",
      "title": "Prompt Box",
      "description": "The message box for a chat with an agent: a text area that grows line by line, a model picker, and a send button that turns into stop while a reply streams.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/dropdown.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json",
        "https://ui.miyuki-yue.dev/r/tooltip.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/prompt-box.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/prompt-box.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "prompt-console",
      "type": "registry:ui",
      "title": "Prompt Console",
      "description": "A two-row composer with a permission mode picker, a model picker and a context tab on top for the branch and folder.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/dropdown.json",
        "https://ui.miyuki-yue.dev/r/prompt-box.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/prompt-console.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/prompt-console.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "prompt-glow",
      "type": "registry:ui",
      "title": "Prompt Glow",
      "description": "A band of water-blue light that circles the composer's border while the agent works, with a faint glow under its lower edge.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/prompt-glow.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/prompt-glow.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "run-checklist",
      "type": "registry:ui",
      "title": "Run Checklist",
      "description": "A collapsible checklist that shows how far an agent has got through a task with several steps.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/progress.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/run-checklist.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/run-checklist.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "source-trail",
      "type": "registry:ui",
      "title": "Source Trail",
      "description": "The trail of sources an agent opened while researching, arriving one by one under the query.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/source-trail.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/source-trail.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "streaming-ink",
      "type": "registry:ui",
      "title": "Streaming Ink",
      "description": "Streamed text that is written rather than typed: each new word inks in from left to right with a wet sheen that dries, led by a small brush that lifts when the answer is done.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/streaming-ink.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/streaming-ink.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "thinking-glyph",
      "type": "registry:ui",
      "title": "Thinking Glyph",
      "description": "A small animated glyph and a label with a passing band of light that say what an agent is doing right now.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/thinking-glyph.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/thinking-glyph.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "voice-orb",
      "type": "registry:ui",
      "title": "Voice Orb",
      "description": "A sphere of water that shows a voice assistant's state: it breathes when idle, ripples with the input level while listening, turns with a slow current while thinking and sends rings outward while speaking.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-color.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/voice-orb.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/voice-orb.tsx"
        }
      ],
      "categories": [
        "ai"
      ]
    },
    {
      "name": "activity-inbox",
      "type": "registry:block",
      "title": "Activity Inbox",
      "description": "An inbox of activity grouped by day, filtered by tabs, with unread marks and inline actions.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/tabs.json",
        "https://ui.miyuki-yue.dev/r/tooltip.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/activity-inbox.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/activity-inbox.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "avalanche-bulletin",
      "type": "registry:block",
      "title": "Avalanche Bulletin",
      "description": "A public avalanche bulletin: the danger level with its name, danger by slope and height on a rose, the avalanche problems and the forecaster's note.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/avalanche-bulletin.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/avalanche-bulletin.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "calendar",
      "type": "registry:block",
      "title": "Calendar",
      "description": "A month of events in a seven-column grid, with colour per calendar, overflow into a day list, and a popover for each event.",
      "dependencies": [
        "@internationalized/date",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/popover.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/calendar.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/calendar.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "card-sections",
      "type": "registry:block",
      "title": "Card sections",
      "description": "Three cards for marketing pages: a row of instruments read by a passing line of light, an image card that wakes on hover, and a journal card.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/card-sections.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/card-sections.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "data-grid",
      "type": "registry:block",
      "title": "Data grid",
      "description": "An editable spreadsheet with typed columns, range selection, in-place editing, column menus, resizing, and tab-separated copy and paste.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/popover.json",
        "https://ui.miyuki-yue.dev/r/select.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/data-grid.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/data-grid.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "data-table",
      "type": "registry:block",
      "title": "Data table",
      "description": "A table wired up with search, filters, sortable columns, row selection with bulk actions, column visibility and pagination.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/dropdown.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/pagination.json",
        "https://ui.miyuki-yue.dev/r/search-field.json",
        "https://ui.miyuki-yue.dev/r/select.json",
        "https://ui.miyuki-yue.dev/r/table.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/data-table.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/data-table.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "departure-board",
      "type": "registry:block",
      "title": "Departure Board",
      "description": "A station board on split flaps whose top train departs on a timer while the rows below move up, with delays in camellia and a flap clock.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/split-flap-board.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/departure-board.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/departure-board.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "feature-sections",
      "type": "registry:block",
      "title": "Feature sections",
      "description": "Three page sections for a list of product features: a bento of small live tiles, a grid divided by hairlines, and a list that answers the pointer.",
      "dependencies": [
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/feature-sections.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/feature-sections.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "field-notes",
      "type": "registry:block",
      "title": "Field Notes",
      "description": "An article set to a comfortable measure with notes in a wide margin, each level with the words it refers to and joined to them by a thin hand-drawn line.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/brush-annotation.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/field-notes.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/field-notes.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "figure-cards",
      "type": "registry:block",
      "title": "Figure Cards",
      "description": "Headline numbers in cards, each with an icon, a change from last period and an optional explanation.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/tooltip.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/figure-cards.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/figure-cards.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "floating-sidebar",
      "type": "registry:block",
      "title": "Floating sidebar",
      "description": "App navigation in a floating panel with a team switcher, quick search, a sliding current-page highlight and an icon-only mode.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/dropdown.json",
        "https://ui.miyuki-yue.dev/r/search-field.json",
        "https://ui.miyuki-yue.dev/r/tooltip.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/floating-sidebar.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/floating-sidebar.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "footer-waterline",
      "type": "registry:block",
      "title": "Footer Waterline",
      "description": "A footer where a very large word stands on a waterline over a slow swell, with its reflection beneath and links and small print below.",
      "dependencies": [],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/layered-waves.json",
        "https://ui.miyuki-yue.dev/r/wavering-text.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/footer-waterline.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/footer-waterline.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "forecast-strip",
      "type": "registry:block",
      "title": "Forecast Strip",
      "description": "A week of weather in one row of day columns; choosing a day opens its hours beneath, with the temperature drawn as a line through them.",
      "dependencies": [
        "d3-shape",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "devDependencies": [
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/weather-icon.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/forecast-strip.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/forecast-strip.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "hero-sections",
      "type": "registry:block",
      "title": "Hero sections",
      "description": "Two opening sections for a landing page: a centred headline over a framed preview, and a split layout with photographs that move with the pointer.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/arriving-text.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/hero-sections.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/hero-sections.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "hero-snow-water",
      "type": "registry:block",
      "title": "Hero Snow Water",
      "description": "A hero section with snow falling through the sky and water below, where the headline's last line stands on the waterline above its wavering reflection.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/diamond-dust.json",
        "https://ui.miyuki-yue.dev/r/layered-waves.json",
        "https://ui.miyuki-yue.dev/r/wavering-text.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/hero-snow-water.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/hero-snow-water.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "hut-booking",
      "type": "registry:block",
      "title": "Hut Booking",
      "description": "A three-step booking card for a mountain hut: nights on a range calendar, guests and meals, then confirm, with an itemised summary that updates as you choose and a hut stamp on the booking.",
      "dependencies": [
        "@internationalized/date",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/date-calendar.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/number-field.json",
        "https://ui.miyuki-yue.dev/r/switch.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/hut-booking.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/hut-booking.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "newsletter-postcard",
      "type": "registry:block",
      "title": "Newsletter Postcard",
      "description": "A sign-up form on the back of a postcard: the email goes on the address lines, a postmark cancels the stamp and the card slides away as if posted.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/newsletter-postcard.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/newsletter-postcard.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "route-card",
      "type": "registry:block",
      "title": "Route Card",
      "description": "A route at a glance: the line drawn over a contour map, its figures, a compact elevation profile that moves a dot along the map, and save and GPX actions.",
      "dependencies": [
        "d3-scale",
        "d3-shape",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "devDependencies": [
        "@types/d3-scale",
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/route-card.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/route-card.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "season-pricing",
      "type": "registry:block",
      "title": "Season Pricing",
      "description": "Three passes side by side under a season switch, with prices that roll to new figures when the season changes.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/odometer.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/season-pricing.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/season-pricing.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "settings-dialog",
      "type": "registry:block",
      "title": "Settings Dialog",
      "description": "Settings in one dialog: a column of sections with a sliding highlight, and rows of controls for the chosen one.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/meter.json",
        "https://ui.miyuki-yue.dev/r/modal.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json",
        "https://ui.miyuki-yue.dev/r/select.json",
        "https://ui.miyuki-yue.dev/r/switch.json",
        "https://ui.miyuki-yue.dev/r/tabs.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/settings-dialog.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/settings-dialog.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "sign-in-cards",
      "type": "registry:block",
      "title": "Sign-in Cards",
      "description": "Sign-in and sign-up cards with validated fields, a password reveal and social sign-in.",
      "dependencies": [
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/checkbox.json",
        "https://ui.miyuki-yue.dev/r/divider.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/link-button.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json",
        "https://ui.miyuki-yue.dev/r/social-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/sign-in-cards.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/sign-in-cards.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "snow-report",
      "type": "registry:block",
      "title": "Snow Report",
      "description": "A resort's morning snow report, led by new snow, with figures that count up, lifts and runs as meters, and the forecaster's note.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/meter.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/snow-report.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/snow-report.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "acquisition-report",
      "type": "registry:block",
      "title": "Acquisition Report",
      "description": "Paid acquisition for a weather app one month at a time: spend and conversions, the funnel from click to subscriber, spend by channel, return on ad spend, visitors and a campaigns table with budget pacing.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/area-chart.json",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/data-table.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/figure-cards.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/funnel-chart.json",
        "https://ui.miyuki-yue.dev/r/ghost-bars.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/progress.json",
        "https://ui.miyuki-yue.dev/r/radial-chart.json",
        "https://ui.miyuki-yue.dev/r/ranked-bars.json",
        "https://ui.miyuki-yue.dev/r/select.json",
        "https://ui.miyuki-yue.dev/r/toast.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/acquisition-report.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/acquisition-report.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "agent-team-chat",
      "type": "registry:block",
      "title": "Agent Team Chat",
      "description": "Conversations with several agents, in groups or one to one: a list of agents and group chats, a thread with one agent mid-reply, and an editor for the agent you opened last.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/agent-persona.json",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/prompt-box.json",
        "https://ui.miyuki-yue.dev/r/tabs.json",
        "https://ui.miyuki-yue.dev/r/thinking-glyph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/agent-team-chat.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/agent-team-chat.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "avalanche-centre",
      "type": "registry:block",
      "title": "Avalanche centre",
      "description": "A regional avalanche bulletin site: region tabs, today's danger level with its rose and problems, a map of zones tinted by level, a seven-day history and a searchable archive.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avalanche-bulletin.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/data-table.json",
        "https://ui.miyuki-yue.dev/r/tabs.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/avalanche-centre.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/avalanche-centre.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "chat-shell",
      "type": "registry:block",
      "title": "Chat Shell",
      "description": "The simplest working chat shell: a sidebar, an API key empty state with three steps, a composer and replies that stream in word by word.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/prompt-box.json",
        "https://ui.miyuki-yue.dev/r/thinking-glyph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/chat-shell.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/chat-shell.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "coding-assistant",
      "type": "registry:block",
      "title": "Coding Assistant",
      "description": "A chat workspace for a coding assistant, with threads grouped by day, a pinned composer and a side panel that reviews changed files.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/action-log.json",
        "https://ui.miyuki-yue.dev/r/arriving-text.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/close-button.json",
        "https://ui.miyuki-yue.dev/r/code-block.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json",
        "https://ui.miyuki-yue.dev/r/prompt-box.json",
        "https://ui.miyuki-yue.dev/r/prompt-console.json",
        "https://ui.miyuki-yue.dev/r/tabs.json",
        "https://ui.miyuki-yue.dev/r/thinking-glyph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/coding-assistant.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/coding-assistant.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "field-journal",
      "type": "registry:block",
      "title": "Field journal",
      "description": "An editorial journal with a masthead, a front page of one lead story, four smaller stories and an archive, and an article view with a post-town rail, margin notes, brush annotations, a pull quote and an image pair.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/brush-annotation.json",
        "https://ui.miyuki-yue.dev/r/field-notes.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json",
        "https://ui.miyuki-yue.dev/r/station-nav.json",
        "https://ui.miyuki-yue.dev/r/zoom-grid.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/field-journal.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/field-journal.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "image-studio",
      "type": "registry:block",
      "title": "Image Studio",
      "description": "A prompt thread that generates images in a frame, with like, regenerate and download, and a panel with a masonry gallery and named styles.",
      "dependencies": [
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/close-button.json",
        "https://ui.miyuki-yue.dev/r/developing-image.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json",
        "https://ui.miyuki-yue.dev/r/prompt-box.json",
        "https://ui.miyuki-yue.dev/r/tabs.json",
        "https://ui.miyuki-yue.dev/r/thinking-glyph.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/image-studio.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/image-studio.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "kanban-board",
      "type": "registry:block",
      "title": "Kanban Board",
      "description": "A kanban board with four columns whose cards drag between and within columns by pointer or keyboard, with list and timeline views of the same tasks.",
      "dependencies": [
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/progress.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/kanban-board.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/kanban-board.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "member-profile",
      "type": "registry:block",
      "title": "Member Profile",
      "description": "A member's profile in an agent workspace: a cover and avatar, lifetime stats, a year of runs that regroups by week, month or year, runs per agent by month and recent tasks, with sharing and editing.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/dropdown.json",
        "https://ui.miyuki-yue.dev/r/figure-cards.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/ranked-bars.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json",
        "https://ui.miyuki-yue.dev/r/table.json",
        "https://ui.miyuki-yue.dev/r/textarea.json",
        "https://ui.miyuki-yue.dev/r/toast.json",
        "https://ui.miyuki-yue.dev/r/year-grid.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/member-profile.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/member-profile.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "observatory",
      "type": "registry:block",
      "title": "Observatory",
      "description": "A public observatory's night page: tonight's sky with seeing, cloud cover and moonrise, an hour-by-hour chart, the moon with a two-week strip, the sun's arc, a month of events, a booking card and a visitor notice.",
      "dependencies": [
        "@internationalized/date",
        "lucide-react",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/calendar.json",
        "https://ui.miyuki-yue.dev/r/moon-phase.json",
        "https://ui.miyuki-yue.dev/r/number-field.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json",
        "https://ui.miyuki-yue.dev/r/star-field.json",
        "https://ui.miyuki-yue.dev/r/sun-arc.json",
        "https://ui.miyuki-yue.dev/r/time-field.json",
        "https://ui.miyuki-yue.dev/r/weather-icon.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/observatory.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/observatory.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "operations-home",
      "type": "registry:block",
      "title": "Operations Home",
      "description": "The operations home of a weather service: season earnings, recent sign-ups, revenue by week, month or year, a year of bulletins and a customers table, all filtered by region.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/data-table.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/dropdown.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/ghost-bars.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/line-chart.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json",
        "https://ui.miyuki-yue.dev/r/select.json",
        "https://ui.miyuki-yue.dev/r/textarea.json",
        "https://ui.miyuki-yue.dev/r/toast.json",
        "https://ui.miyuki-yue.dev/r/year-grid.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/operations-home.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/operations-home.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "patient-summary",
      "type": "registry:block",
      "title": "Patient Summary",
      "description": "A patient summary for a mountain clinic: identity and key facts, vitals, allergies and medications, sleep, activity and steps from a wearable, upcoming appointments and visit history, with booking and messaging.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/avatar.json",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/goal-bars.json",
        "https://ui.miyuki-yue.dev/r/goal-rings.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/select.json",
        "https://ui.miyuki-yue.dev/r/sleep-ring.json",
        "https://ui.miyuki-yue.dev/r/table.json",
        "https://ui.miyuki-yue.dev/r/textarea.json",
        "https://ui.miyuki-yue.dev/r/toast.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/patient-summary.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/patient-summary.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "rail-line",
      "type": "registry:block",
      "title": "Rail line",
      "description": "A railway line's public page: the departure board for a chosen station beside service notices, the line as a strip map, an hour-row timetable for weekdays and weekends, and a fare table.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/departure-board.json",
        "https://ui.miyuki-yue.dev/r/dot-matrix-display.json",
        "https://ui.miyuki-yue.dev/r/select.json",
        "https://ui.miyuki-yue.dev/r/station-clock.json",
        "https://ui.miyuki-yue.dev/r/table.json",
        "https://ui.miyuki-yue.dev/r/tabs.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/rail-line.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/rail-line.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "resort-status",
      "type": "registry:block",
      "title": "Resort status",
      "description": "A ski resort's live status page: the morning snow report, lifts whose status and queues flip as they change, runs by difficulty, webcams, a trail map and pass prices.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/meter.json",
        "https://ui.miyuki-yue.dev/r/snow-report.json",
        "https://ui.miyuki-yue.dev/r/split-flap-board.json",
        "https://ui.miyuki-yue.dev/r/weather-icon.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/resort-status.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/resort-status.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "ryokan",
      "type": "registry:block",
      "title": "Ryokan",
      "description": "A hot spring inn's landing page and booking: the valley with steam rising, three rooms, the baths with live hours and occupancy, a seasonal dinner menu, a small line map for getting there, a booking card and a waterline footer.",
      "dependencies": [
        "@internationalized/date",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/date-calendar.json",
        "https://ui.miyuki-yue.dev/r/footer-waterline.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/number-field.json",
        "https://ui.miyuki-yue.dev/r/radio.json",
        "https://ui.miyuki-yue.dev/r/steam.json",
        "https://ui.miyuki-yue.dev/r/tide-progress.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ryokan.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ryokan.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "studio-ledger",
      "type": "registry:block",
      "title": "Studio Ledger",
      "description": "Money in and out of a small glass studio for one month at a time: balances, a cash-flow diagram, spending by category, the portfolio, a calendar of daily spending and every transaction.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-chart.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/data-table.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/figure-cards.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/heatmap-chart.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/line-chart.json",
        "https://ui.miyuki-yue.dev/r/ranked-bars.json",
        "https://ui.miyuki-yue.dev/r/sankey-chart.json",
        "https://ui.miyuki-yue.dev/r/segmented-control.json",
        "https://ui.miyuki-yue.dev/r/toast.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/studio-ledger.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/studio-ledger.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "tea-shop",
      "type": "registry:block",
      "title": "Tea shop",
      "description": "A small online tea shop: a seasonal hero, a product grid with filter chips and quick add, a product page with a gallery, a brewing guide on a dial and a steep timer, and a cart drawer that ends in a printed receipt.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/badge.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/chip.json",
        "https://ui.miyuki-yue.dev/r/dial-thermostat.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/number-field.json",
        "https://ui.miyuki-yue.dev/r/path-morph.json",
        "https://ui.miyuki-yue.dev/r/receipt-card.json",
        "https://ui.miyuki-yue.dev/r/search-field.json",
        "https://ui.miyuki-yue.dev/r/steam.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/tea-shop.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/tea-shop.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "ticket-booking",
      "type": "registry:block",
      "title": "Ticket booking",
      "description": "Booking a reserved train seat from start to finish: route, time, seats and payment on stepping stones, a running summary beside them, and the ticket with a tear-off stub at the end.",
      "dependencies": [
        "@internationalized/date",
        "lucide-react",
        "motion",
        "react-aria-components"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/date-picker.json",
        "https://ui.miyuki-yue.dev/r/gate-transition.json",
        "https://ui.miyuki-yue.dev/r/input.json",
        "https://ui.miyuki-yue.dev/r/number-field.json",
        "https://ui.miyuki-yue.dev/r/radio.json",
        "https://ui.miyuki-yue.dev/r/route-picker.json",
        "https://ui.miyuki-yue.dev/r/seat-map.json",
        "https://ui.miyuki-yue.dev/r/stepping-stones.json",
        "https://ui.miyuki-yue.dev/r/ticket-stub.json",
        "https://ui.miyuki-yue.dev/r/timetable-picker.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/ticket-booking.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/ticket-booking.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "trip-planner",
      "type": "registry:block",
      "title": "Trip planner",
      "description": "A route-planning workspace: an itinerary whose stages reorder, a map of the route with an elevation profile that moves a marker along it, and an assistant with a packing checklist.",
      "dependencies": [
        "d3-shape",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/action-log.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/checkbox.json",
        "https://ui.miyuki-yue.dev/r/elevation-profile.json",
        "https://ui.miyuki-yue.dev/r/progress.json",
        "https://ui.miyuki-yue.dev/r/prompt-box.json",
        "https://ui.miyuki-yue.dev/r/streaming-ink.json",
        "https://ui.miyuki-yue.dev/r/tabs.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/trip-planner.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/trip-planner.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "weather-station",
      "type": "registry:block",
      "title": "Weather station",
      "description": "The home screen of a mountain weather service: the current reading set very large, the week ahead, snow stakes, wind rose and barometer in a row, then radar beside the active alerts.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "https://ui.miyuki-yue.dev/r/lib-prng.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/barometer.json",
        "https://ui.miyuki-yue.dev/r/breadcrumb.json",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/drawer.json",
        "https://ui.miyuki-yue.dev/r/floating-sidebar.json",
        "https://ui.miyuki-yue.dev/r/forecast-strip.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json",
        "https://ui.miyuki-yue.dev/r/precip-radar.json",
        "https://ui.miyuki-yue.dev/r/snow-stakes.json",
        "https://ui.miyuki-yue.dev/r/weather-icon.json",
        "https://ui.miyuki-yue.dev/r/wind-rose.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/weather-station.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/weather-station.tsx"
        }
      ],
      "categories": [
        "templates"
      ]
    },
    {
      "name": "fan-cards",
      "type": "registry:ui",
      "title": "Fan cards",
      "description": "A tight stack of cards that fans open along a shallow arc when you reach for it, with a band of light crossing the title.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/fan-cards.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/fan-cards.tsx"
        }
      ],
      "categories": [
        "labs"
      ]
    },
    {
      "name": "crafted-cards",
      "type": "registry:ui",
      "title": "Feature Deck",
      "description": "Four cards in a grid; choosing one grows it into the main card while the others move into a row of tiles beneath it.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/crafted-cards.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/crafted-cards.tsx"
        }
      ],
      "categories": [
        "labs"
      ]
    },
    {
      "name": "layered-poster",
      "type": "registry:ui",
      "title": "Layered poster",
      "description": "A poster built from flat layers that assemble back to front around a large title, then drift apart with the pointer.",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/layered-poster.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/layered-poster.tsx"
        }
      ],
      "categories": [
        "labs"
      ]
    },
    {
      "name": "text-stream",
      "type": "registry:ui",
      "title": "Text stream",
      "description": "Rows of text carried along gentle waves, like words on a current, each row at its own pace.",
      "dependencies": [
        "d3-shape",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-shape"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/text-stream.tsx",
          "type": "registry:component",
          "target": "@components/miyuki-ui/text-stream.tsx"
        }
      ],
      "categories": [
        "labs"
      ]
    },
    {
      "name": "lib-chart",
      "type": "registry:lib",
      "title": "lib/chart.tsx",
      "description": "Shared building blocks for miyuki-ui charts: frame, axes, tooltip, legend and range controls.",
      "dependencies": [
        "d3-scale",
        "lucide-react",
        "motion"
      ],
      "devDependencies": [
        "@types/d3-scale"
      ],
      "registryDependencies": [
        "https://ui.miyuki-yue.dev/r/base.json",
        "utils",
        "https://ui.miyuki-yue.dev/r/button.json",
        "https://ui.miyuki-yue.dev/r/icon-button.json"
      ],
      "files": [
        {
          "path": "src/components/miyuki-ui/lib/chart.tsx",
          "type": "registry:lib",
          "target": "@components/miyuki-ui/lib/chart.tsx"
        }
      ],
      "categories": [
        "foundations"
      ]
    },
    {
      "name": "lib-color",
      "type": "registry:lib",
      "title": "lib/color.ts",
      "description": "Reads theme colours from CSS variables for canvas and WebGL.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "src/components/miyuki-ui/lib/color.ts",
          "type": "registry:lib",
          "target": "@components/miyuki-ui/lib/color.ts"
        }
      ],
      "categories": [
        "foundations"
      ]
    },
    {
      "name": "lib-prng",
      "type": "registry:lib",
      "title": "lib/prng.ts",
      "description": "Seeded, deterministic random numbers that match on the server and the client.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "src/components/miyuki-ui/lib/prng.ts",
          "type": "registry:lib",
          "target": "@components/miyuki-ui/lib/prng.ts"
        }
      ],
      "categories": [
        "foundations"
      ]
    }
  ]
}
