{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "loader-cli-spinner",
  "title": "CLI Spinner Loader",
  "description": "90 terminal-style text spinners in a single React component. Zero dependencies, keyboard-safe, tabular-nums for stable layout.",
  "dependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "registry/default/blocks/loaders/loader-cli-spinner/components/elements/loader-cli-spinner.tsx",
      "content": "\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { CLI_SPINNERS, type CliSpinnerVariant } from \"./cli-spinner-data\";\n\nexport type LoaderCliSpinnerProps = {\n  variant?: CliSpinnerVariant;\n  speed?: number;\n  size?: number | string;\n  paused?: boolean;\n  ariaLabel?: string;\n  className?: string;\n};\n\nexport function LoaderCliSpinner({\n  variant = \"braille-spin\",\n  speed = 1,\n  size = \"1em\",\n  paused = false,\n  ariaLabel = \"Loading\",\n  className,\n}: LoaderCliSpinnerProps) {\n  const spinner = CLI_SPINNERS[variant] ?? CLI_SPINNERS[\"braille-spin\"];\n  const [index, setIndex] = useState(0);\n  const indexRef = useRef(0);\n\n  useEffect(() => {\n    indexRef.current = 0;\n    setIndex(0);\n    if (paused || speed <= 0) return;\n    const delay = Math.max(16, spinner.interval / speed);\n    const id = window.setInterval(() => {\n      indexRef.current = (indexRef.current + 1) % spinner.frames.length;\n      setIndex(indexRef.current);\n    }, delay);\n    return () => window.clearInterval(id);\n  }, [spinner, speed, paused]);\n\n  const fontSize = typeof size === \"number\" ? `${size}px` : size;\n\n  return (\n    <output\n      aria-label={ariaLabel}\n      aria-live=\"polite\"\n      className={cn(\n        \"inline-flex items-center justify-center font-mono leading-none tabular-nums\",\n        className,\n      )}\n      style={{ fontSize, minWidth: \"1ch\" }}\n    >\n      <span aria-hidden=\"true\">{spinner.frames[index]}</span>\n    </output>\n  );\n}\n\nexport type { CliSpinnerVariant } from \"./cli-spinner-data\";\nexport { CLI_SPINNER_VARIANTS } from \"./cli-spinner-data\";\n",
      "type": "registry:component"
    },
    {
      "path": "registry/default/blocks/loaders/loader-cli-spinner/components/elements/cli-spinner-data.ts",
      "content": "// Frame data adapted from sindresorhus/cli-spinners (MIT)\n// Renamed, reorganized, and re-exported for React UI.\n\nexport type CliSpinnerVariant =\n  | \"aesthetic\"\n  | \"arc-spin\"\n  | \"arrow-compass\"\n  | \"arrow-move\"\n  | \"arrow-spin\"\n  | \"ball-bar\"\n  | \"balloon-large\"\n  | \"balloon-small\"\n  | \"bar-bounce\"\n  | \"beta-wave\"\n  | \"bit-stream\"\n  | \"blue-pulse\"\n  | \"bouncer\"\n  | \"box-bounce\"\n  | \"box-bounce-thick\"\n  | \"braille-bounce\"\n  | \"braille-cascade\"\n  | \"braille-circle\"\n  | \"braille-corner\"\n  | \"braille-drift\"\n  | \"braille-fold\"\n  | \"braille-matrix\"\n  | \"braille-orbit\"\n  | \"braille-pulse\"\n  | \"braille-shift\"\n  | \"braille-spin\"\n  | \"braille-sweep\"\n  | \"braille-tick\"\n  | \"braille-wave\"\n  | \"circle-pulse\"\n  | \"clockwork\"\n  | \"dot-circle\"\n  | \"duo-pulse\"\n  | \"dwarf-fortress\"\n  | \"earth\"\n  | \"ellipsis\"\n  | \"ellipsis-scroll\"\n  | \"fingers\"\n  | \"fish\"\n  | \"fist-bump\"\n  | \"flipper\"\n  | \"grenade\"\n  | \"grow-h\"\n  | \"grow-v\"\n  | \"half-orbit\"\n  | \"hearts\"\n  | \"layer\"\n  | \"letter-spin\"\n  | \"line-dash\"\n  | \"line-roll\"\n  | \"line-slash\"\n  | \"material-bar\"\n  | \"mindblown\"\n  | \"monkey\"\n  | \"moon-phase\"\n  | \"orange-pulse\"\n  | \"pipe-turn\"\n  | \"plus-pulse\"\n  | \"point\"\n  | \"pong\"\n  | \"quarter-orbit\"\n  | \"retro-braille\"\n  | \"runner\"\n  | \"sandglass\"\n  | \"shark\"\n  | \"smiley-spin\"\n  | \"soccer\"\n  | \"speaker\"\n  | \"square-corners\"\n  | \"squisher\"\n  | \"stacker\"\n  | \"static-noise\"\n  | \"time-travel\"\n  | \"toggle-1\"\n  | \"toggle-10\"\n  | \"toggle-11\"\n  | \"toggle-12\"\n  | \"toggle-13\"\n  | \"toggle-2\"\n  | \"toggle-3\"\n  | \"toggle-4\"\n  | \"toggle-5\"\n  | \"toggle-6\"\n  | \"toggle-7\"\n  | \"toggle-8\"\n  | \"toggle-9\"\n  | \"tree\"\n  | \"triangle-spin\"\n  | \"twinkle\"\n  | \"weather\";\n\nexport type SpinnerData = {\n  interval: number;\n  frames: readonly string[];\n};\n\nexport const CLI_SPINNERS: Record<CliSpinnerVariant, SpinnerData> = {\n  aesthetic: {\n    interval: 80,\n    frames: [\n      \"▰▱▱▱▱▱▱\",\n      \"▰▰▱▱▱▱▱\",\n      \"▰▰▰▱▱▱▱\",\n      \"▰▰▰▰▱▱▱\",\n      \"▰▰▰▰▰▱▱\",\n      \"▰▰▰▰▰▰▱\",\n      \"▰▰▰▰▰▰▰\",\n      \"▰▱▱▱▱▱▱\",\n    ],\n  },\n  \"arc-spin\": {\n    interval: 100,\n    frames: [\"◜\", \"◠\", \"◝\", \"◞\", \"◡\", \"◟\"],\n  },\n  \"arrow-compass\": {\n    interval: 80,\n    frames: [\"⬆️ \", \"↗️ \", \"➡️ \", \"↘️ \", \"⬇️ \", \"↙️ \", \"⬅️ \", \"↖️ \"],\n  },\n  \"arrow-move\": {\n    interval: 120,\n    frames: [\"▹▹▹▹▹\", \"▸▹▹▹▹\", \"▹▸▹▹▹\", \"▹▹▸▹▹\", \"▹▹▹▸▹\", \"▹▹▹▹▸\"],\n  },\n  \"arrow-spin\": {\n    interval: 100,\n    frames: [\"←\", \"↖\", \"↑\", \"↗\", \"→\", \"↘\", \"↓\", \"↙\"],\n  },\n  \"ball-bar\": {\n    interval: 80,\n    frames: [\n      \"( ●    )\",\n      \"(  ●   )\",\n      \"(   ●  )\",\n      \"(    ● )\",\n      \"(     ●)\",\n      \"(    ● )\",\n      \"(   ●  )\",\n      \"(  ●   )\",\n      \"( ●    )\",\n      \"(●     )\",\n    ],\n  },\n  \"balloon-large\": {\n    interval: 120,\n    frames: [\".\", \"o\", \"O\", \"°\", \"O\", \"o\", \".\"],\n  },\n  \"balloon-small\": {\n    interval: 140,\n    frames: [\" \", \".\", \"o\", \"O\", \"@\", \"*\", \" \"],\n  },\n  \"bar-bounce\": {\n    interval: 80,\n    frames: [\n      \"[    ]\",\n      \"[=   ]\",\n      \"[==  ]\",\n      \"[=== ]\",\n      \"[====]\",\n      \"[ ===]\",\n      \"[  ==]\",\n      \"[   =]\",\n      \"[    ]\",\n      \"[   =]\",\n      \"[  ==]\",\n      \"[ ===]\",\n      \"[====]\",\n      \"[=== ]\",\n      \"[==  ]\",\n      \"[=   ]\",\n    ],\n  },\n  \"beta-wave\": {\n    interval: 80,\n    frames: [\n      \"ρββββββ\",\n      \"βρβββββ\",\n      \"ββρββββ\",\n      \"βββρβββ\",\n      \"ββββρββ\",\n      \"βββββρβ\",\n      \"ββββββρ\",\n    ],\n  },\n  \"bit-stream\": {\n    interval: 80,\n    frames: [\n      \"010010\",\n      \"001100\",\n      \"100101\",\n      \"111010\",\n      \"111101\",\n      \"010111\",\n      \"101011\",\n      \"111000\",\n      \"110011\",\n      \"110101\",\n    ],\n  },\n  \"blue-pulse\": {\n    interval: 100,\n    frames: [\"🔹 \", \"🔷 \", \"🔵 \", \"🔵 \", \"🔷 \"],\n  },\n  bouncer: {\n    interval: 120,\n    frames: [\"⠁\", \"⠂\", \"⠄\", \"⠂\"],\n  },\n  \"box-bounce\": {\n    interval: 120,\n    frames: [\"▖\", \"▘\", \"▝\", \"▗\"],\n  },\n  \"box-bounce-thick\": {\n    interval: 100,\n    frames: [\"▌\", \"▀\", \"▐\", \"▄\"],\n  },\n  \"braille-bounce\": {\n    interval: 80,\n    frames: [\"⠋\", \"⠙\", \"⠚\", \"⠞\", \"⠖\", \"⠦\", \"⠴\", \"⠲\", \"⠳\", \"⠓\"],\n  },\n  \"braille-cascade\": {\n    interval: 80,\n    frames: [\n      \"⢀⠀\",\n      \"⡀⠀\",\n      \"⠄⠀\",\n      \"⢂⠀\",\n      \"⡂⠀\",\n      \"⠅⠀\",\n      \"⢃⠀\",\n      \"⡃⠀\",\n      \"⠍⠀\",\n      \"⢋⠀\",\n      \"⡋⠀\",\n      \"⠍⠁\",\n      \"⢋⠁\",\n      \"⡋⠁\",\n      \"⠍⠉\",\n      \"⠋⠉\",\n      \"⠋⠉\",\n      \"⠉⠙\",\n      \"⠉⠙\",\n      \"⠉⠩\",\n      \"⠈⢙\",\n      \"⠈⡙\",\n      \"⢈⠩\",\n      \"⡀⢙\",\n      \"⠄⡙\",\n      \"⢂⠩\",\n      \"⡂⢘\",\n      \"⠅⡘\",\n      \"⢃⠨\",\n      \"⡃⢐\",\n      \"⠍⡐\",\n      \"⢋⠠\",\n      \"⡋⢀\",\n      \"⠍⡁\",\n      \"⢋⠁\",\n      \"⡋⠁\",\n      \"⠍⠉\",\n      \"⠋⠉\",\n      \"⠋⠉\",\n      \"⠉⠙\",\n      \"⠉⠙\",\n      \"⠉⠩\",\n      \"⠈⢙\",\n      \"⠈⡙\",\n      \"⠈⠩\",\n      \"⠀⢙\",\n      \"⠀⡙\",\n      \"⠀⠩\",\n      \"⠀⢘\",\n      \"⠀⡘\",\n      \"⠀⠨\",\n      \"⠀⢐\",\n      \"⠀⡐\",\n      \"⠀⠠\",\n      \"⠀⢀\",\n      \"⠀⡀\",\n    ],\n  },\n  \"braille-circle\": {\n    interval: 80,\n    frames: [\"⣼\", \"⣹\", \"⢻\", \"⠿\", \"⡟\", \"⣏\", \"⣧\", \"⣶\"],\n  },\n  \"braille-corner\": {\n    interval: 80,\n    frames: [\"⣾\", \"⣽\", \"⣻\", \"⢿\", \"⡿\", \"⣟\", \"⣯\", \"⣷\"],\n  },\n  \"braille-drift\": {\n    interval: 80,\n    frames: [\n      \"⠁\",\n      \"⠁\",\n      \"⠉\",\n      \"⠙\",\n      \"⠚\",\n      \"⠒\",\n      \"⠂\",\n      \"⠂\",\n      \"⠒\",\n      \"⠲\",\n      \"⠴\",\n      \"⠤\",\n      \"⠄\",\n      \"⠄\",\n      \"⠤\",\n      \"⠠\",\n      \"⠠\",\n      \"⠤\",\n      \"⠦\",\n      \"⠖\",\n      \"⠒\",\n      \"⠐\",\n      \"⠐\",\n      \"⠒\",\n      \"⠓\",\n      \"⠋\",\n      \"⠉\",\n      \"⠈\",\n      \"⠈\",\n    ],\n  },\n  \"braille-fold\": {\n    interval: 80,\n    frames: [\"⢹\", \"⢺\", \"⢼\", \"⣸\", \"⣇\", \"⡧\", \"⡗\", \"⡏\"],\n  },\n  \"braille-matrix\": {\n    interval: 80,\n    frames: [\n      \"⠉⠉\",\n      \"⠈⠙\",\n      \"⠀⠹\",\n      \"⠀⢸\",\n      \"⠀⣰\",\n      \"⢀⣠\",\n      \"⣀⣀\",\n      \"⣄⡀\",\n      \"⣆⠀\",\n      \"⡇⠀\",\n      \"⠏⠀\",\n      \"⠋⠁\",\n    ],\n  },\n  \"braille-orbit\": {\n    interval: 80,\n    frames: [\n      \"⠁\",\n      \"⠉\",\n      \"⠙\",\n      \"⠚\",\n      \"⠒\",\n      \"⠂\",\n      \"⠂\",\n      \"⠒\",\n      \"⠲\",\n      \"⠴\",\n      \"⠤\",\n      \"⠄\",\n      \"⠄\",\n      \"⠤\",\n      \"⠴\",\n      \"⠲\",\n      \"⠒\",\n      \"⠂\",\n      \"⠂\",\n      \"⠒\",\n      \"⠚\",\n      \"⠙\",\n      \"⠉\",\n      \"⠁\",\n    ],\n  },\n  \"braille-pulse\": {\n    interval: 80,\n    frames: [\n      \"⠄\",\n      \"⠆\",\n      \"⠇\",\n      \"⠋\",\n      \"⠙\",\n      \"⠸\",\n      \"⠰\",\n      \"⠠\",\n      \"⠰\",\n      \"⠸\",\n      \"⠙\",\n      \"⠋\",\n      \"⠇\",\n      \"⠆\",\n    ],\n  },\n  \"braille-shift\": {\n    interval: 80,\n    frames: [\"⢄\", \"⢂\", \"⢁\", \"⡁\", \"⡈\", \"⡐\", \"⡠\"],\n  },\n  \"braille-spin\": {\n    interval: 80,\n    frames: [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"],\n  },\n  \"braille-sweep\": {\n    interval: 80,\n    frames: [\n      \"⠈\",\n      \"⠉\",\n      \"⠋\",\n      \"⠓\",\n      \"⠒\",\n      \"⠐\",\n      \"⠐\",\n      \"⠒\",\n      \"⠖\",\n      \"⠦\",\n      \"⠤\",\n      \"⠠\",\n      \"⠠\",\n      \"⠤\",\n      \"⠦\",\n      \"⠖\",\n      \"⠒\",\n      \"⠐\",\n      \"⠐\",\n      \"⠒\",\n      \"⠓\",\n      \"⠋\",\n      \"⠉\",\n      \"⠈\",\n    ],\n  },\n  \"braille-tick\": {\n    interval: 100,\n    frames: [\"⠁\", \"⠂\", \"⠄\", \"⡀\", \"⢀\", \"⠠\", \"⠐\", \"⠈\"],\n  },\n  \"braille-wave\": {\n    interval: 80,\n    frames: [\n      \"⠋\",\n      \"⠙\",\n      \"⠚\",\n      \"⠒\",\n      \"⠂\",\n      \"⠂\",\n      \"⠒\",\n      \"⠲\",\n      \"⠴\",\n      \"⠦\",\n      \"⠖\",\n      \"⠒\",\n      \"⠐\",\n      \"⠐\",\n      \"⠒\",\n      \"⠓\",\n      \"⠋\",\n    ],\n  },\n  \"circle-pulse\": {\n    interval: 120,\n    frames: [\"◡\", \"⊙\", \"◠\"],\n  },\n  clockwork: {\n    interval: 100,\n    frames: [\n      \"🕛 \",\n      \"🕐 \",\n      \"🕑 \",\n      \"🕒 \",\n      \"🕓 \",\n      \"🕔 \",\n      \"🕕 \",\n      \"🕖 \",\n      \"🕗 \",\n      \"🕘 \",\n      \"🕙 \",\n      \"🕚 \",\n    ],\n  },\n  \"dot-circle\": {\n    interval: 80,\n    frames: [\"⢎ \", \"⠎⠁\", \"⠊⠑\", \"⠈⠱\", \" ⡱\", \"⢀⡰\", \"⢄⡠\", \"⢆⡀\"],\n  },\n  \"duo-pulse\": {\n    interval: 100,\n    frames: [\n      \"🔸 \",\n      \"🔶 \",\n      \"🟠 \",\n      \"🟠 \",\n      \"🔶 \",\n      \"🔹 \",\n      \"🔷 \",\n      \"🔵 \",\n      \"🔵 \",\n      \"🔷 \",\n    ],\n  },\n  \"dwarf-fortress\": {\n    interval: 80,\n    frames: [\n      \" ██████£££  \",\n      \"☺██████£££  \",\n      \"☺██████£££  \",\n      \"☺▓█████£££  \",\n      \"☺▓█████£££  \",\n      \"☺▒█████£££  \",\n      \"☺▒█████£££  \",\n      \"☺░█████£££  \",\n      \"☺░█████£££  \",\n      \"☺ █████£££  \",\n      \" ☺█████£££  \",\n      \" ☺█████£££  \",\n      \" ☺▓████£££  \",\n      \" ☺▓████£££  \",\n      \" ☺▒████£££  \",\n      \" ☺▒████£££  \",\n      \" ☺░████£££  \",\n      \" ☺░████£££  \",\n      \" ☺ ████£££  \",\n      \"  ☺████£££  \",\n      \"  ☺████£££  \",\n      \"  ☺▓███£££  \",\n      \"  ☺▓███£££  \",\n      \"  ☺▒███£££  \",\n      \"  ☺▒███£££  \",\n      \"  ☺░███£££  \",\n      \"  ☺░███£££  \",\n      \"  ☺ ███£££  \",\n      \"   ☺███£££  \",\n      \"   ☺███£££  \",\n      \"   ☺▓██£££  \",\n      \"   ☺▓██£££  \",\n      \"   ☺▒██£££  \",\n      \"   ☺▒██£££  \",\n      \"   ☺░██£££  \",\n      \"   ☺░██£££  \",\n      \"   ☺ ██£££  \",\n      \"    ☺██£££  \",\n      \"    ☺██£££  \",\n      \"    ☺▓█£££  \",\n      \"    ☺▓█£££  \",\n      \"    ☺▒█£££  \",\n      \"    ☺▒█£££  \",\n      \"    ☺░█£££  \",\n      \"    ☺░█£££  \",\n      \"    ☺ █£££  \",\n      \"     ☺█£££  \",\n      \"     ☺█£££  \",\n      \"     ☺▓£££  \",\n      \"     ☺▓£££  \",\n      \"     ☺▒£££  \",\n      \"     ☺▒£££  \",\n      \"     ☺░£££  \",\n      \"     ☺░£££  \",\n      \"     ☺ £££  \",\n      \"      ☺£££  \",\n      \"      ☺£££  \",\n      \"      ☺▓££  \",\n      \"      ☺▓££  \",\n      \"      ☺▒££  \",\n      \"      ☺▒££  \",\n      \"      ☺░££  \",\n      \"      ☺░££  \",\n      \"      ☺ ££  \",\n      \"       ☺££  \",\n      \"       ☺££  \",\n      \"       ☺▓£  \",\n      \"       ☺▓£  \",\n      \"       ☺▒£  \",\n      \"       ☺▒£  \",\n      \"       ☺░£  \",\n      \"       ☺░£  \",\n      \"       ☺ £  \",\n      \"        ☺£  \",\n      \"        ☺£  \",\n      \"        ☺▓  \",\n      \"        ☺▓  \",\n      \"        ☺▒  \",\n      \"        ☺▒  \",\n      \"        ☺░  \",\n      \"        ☺░  \",\n      \"        ☺   \",\n      \"        ☺  &\",\n      \"        ☺ ☼&\",\n      \"       ☺ ☼ &\",\n      \"       ☺☼  &\",\n      \"      ☺☼  & \",\n      \"      ‼   & \",\n      \"     ☺   &  \",\n      \"    ‼    &  \",\n      \"   ☺    &   \",\n      \"  ‼     &   \",\n      \" ☺     &    \",\n      \"‼      &    \",\n      \"      &     \",\n      \"      &     \",\n      \"     &   ░  \",\n      \"     &   ▒  \",\n      \"    &    ▓  \",\n      \"    &    £  \",\n      \"   &    ░£  \",\n      \"   &    ▒£  \",\n      \"  &     ▓£  \",\n      \"  &     ££  \",\n      \" &     ░££  \",\n      \" &     ▒££  \",\n      \"&      ▓££  \",\n      \"&      £££  \",\n      \"      ░£££  \",\n      \"      ▒£££  \",\n      \"      ▓£££  \",\n      \"      █£££  \",\n      \"     ░█£££  \",\n      \"     ▒█£££  \",\n      \"     ▓█£££  \",\n      \"     ██£££  \",\n      \"    ░██£££  \",\n      \"    ▒██£££  \",\n      \"    ▓██£££  \",\n      \"    ███£££  \",\n      \"   ░███£££  \",\n      \"   ▒███£££  \",\n      \"   ▓███£££  \",\n      \"   ████£££  \",\n      \"  ░████£££  \",\n      \"  ▒████£££  \",\n      \"  ▓████£££  \",\n      \"  █████£££  \",\n      \" ░█████£££  \",\n      \" ▒█████£££  \",\n      \" ▓█████£££  \",\n      \" ██████£££  \",\n      \" ██████£££  \",\n    ],\n  },\n  earth: {\n    interval: 180,\n    frames: [\"🌍 \", \"🌎 \", \"🌏 \"],\n  },\n  ellipsis: {\n    interval: 400,\n    frames: [\".  \", \".. \", \"...\", \"   \"],\n  },\n  \"ellipsis-scroll\": {\n    interval: 200,\n    frames: [\".  \", \".. \", \"...\", \" ..\", \"  .\", \"   \"],\n  },\n  fingers: {\n    interval: 160,\n    frames: [\"🤘 \", \"🤟 \", \"🖖 \", \"✋ \", \"🤚 \", \"👆 \"],\n  },\n  fish: {\n    interval: 80,\n    frames: [\n      \"~~~~~~~~~~~~~~~~~~~~\",\n      \"> ~~~~~~~~~~~~~~~~~~\",\n      \"º> ~~~~~~~~~~~~~~~~~\",\n      \"(º> ~~~~~~~~~~~~~~~~\",\n      \"((º> ~~~~~~~~~~~~~~~\",\n      \"<((º> ~~~~~~~~~~~~~~\",\n      \"><((º> ~~~~~~~~~~~~~\",\n      \" ><((º> ~~~~~~~~~~~~\",\n      \"~ ><((º> ~~~~~~~~~~~\",\n      \"~~ <>((º> ~~~~~~~~~~\",\n      \"~~~ ><((º> ~~~~~~~~~\",\n      \"~~~~ <>((º> ~~~~~~~~\",\n      \"~~~~~ ><((º> ~~~~~~~\",\n      \"~~~~~~ <>((º> ~~~~~~\",\n      \"~~~~~~~ ><((º> ~~~~~\",\n      \"~~~~~~~~ <>((º> ~~~~\",\n      \"~~~~~~~~~ ><((º> ~~~\",\n      \"~~~~~~~~~~ <>((º> ~~\",\n      \"~~~~~~~~~~~ ><((º> ~\",\n      \"~~~~~~~~~~~~ <>((º> \",\n      \"~~~~~~~~~~~~~ ><((º>\",\n      \"~~~~~~~~~~~~~~ <>((º\",\n      \"~~~~~~~~~~~~~~~ ><((\",\n      \"~~~~~~~~~~~~~~~~ <>(\",\n      \"~~~~~~~~~~~~~~~~~ ><\",\n      \"~~~~~~~~~~~~~~~~~~ <\",\n      \"~~~~~~~~~~~~~~~~~~~~\",\n    ],\n  },\n  \"fist-bump\": {\n    interval: 80,\n    frames: [\n      \"🤜　　　　🤛 \",\n      \"🤜　　　　🤛 \",\n      \"🤜　　　　🤛 \",\n      \"　🤜　　🤛　 \",\n      \"　　🤜🤛　　 \",\n      \"　🤜✨🤛　　 \",\n      \"🤜　✨　🤛　 \",\n    ],\n  },\n  flipper: {\n    interval: 70,\n    frames: [\"_\", \"_\", \"_\", \"-\", \"`\", \"`\", \"'\", \"´\", \"-\", \"_\", \"_\", \"_\"],\n  },\n  grenade: {\n    interval: 80,\n    frames: [\n      \"،  \",\n      \"′  \",\n      \" ´ \",\n      \" ‾ \",\n      \"  ⸌\",\n      \"  ⸊\",\n      \"  |\",\n      \"  ⁎\",\n      \"  ⁕\",\n      \" ෴ \",\n      \"  ⁓\",\n      \"   \",\n      \"   \",\n      \"   \",\n    ],\n  },\n  \"grow-h\": {\n    interval: 120,\n    frames: [\"▏\", \"▎\", \"▍\", \"▌\", \"▋\", \"▊\", \"▉\", \"▊\", \"▋\", \"▌\", \"▍\", \"▎\"],\n  },\n  \"grow-v\": {\n    interval: 120,\n    frames: [\"▁\", \"▃\", \"▄\", \"▅\", \"▆\", \"▇\", \"▆\", \"▅\", \"▄\", \"▃\"],\n  },\n  \"half-orbit\": {\n    interval: 50,\n    frames: [\"◐\", \"◓\", \"◑\", \"◒\"],\n  },\n  hearts: {\n    interval: 100,\n    frames: [\"💛 \", \"💙 \", \"💜 \", \"💚 \", \"💗 \"],\n  },\n  layer: {\n    interval: 150,\n    frames: [\"-\", \"=\", \"≡\"],\n  },\n  \"letter-spin\": {\n    interval: 100,\n    frames: [\"d\", \"q\", \"p\", \"b\"],\n  },\n  \"line-dash\": {\n    interval: 130,\n    frames: [\"-\", \"\\\\\", \"|\", \"/\"],\n  },\n  \"line-roll\": {\n    interval: 80,\n    frames: [\"/  \", \" - \", \" \\\\ \", \"  |\", \"  |\", \" \\\\ \", \" - \", \"/  \"],\n  },\n  \"line-slash\": {\n    interval: 100,\n    frames: [\"⠂\", \"-\", \"–\", \"—\", \"–\", \"-\"],\n  },\n  \"material-bar\": {\n    interval: 17,\n    frames: [\n      \"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"███████▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n      \"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n      \"██████████▁▁▁▁▁▁▁▁▁▁\",\n      \"███████████▁▁▁▁▁▁▁▁▁\",\n      \"█████████████▁▁▁▁▁▁▁\",\n      \"██████████████▁▁▁▁▁▁\",\n      \"██████████████▁▁▁▁▁▁\",\n      \"▁██████████████▁▁▁▁▁\",\n      \"▁██████████████▁▁▁▁▁\",\n      \"▁██████████████▁▁▁▁▁\",\n      \"▁▁██████████████▁▁▁▁\",\n      \"▁▁▁██████████████▁▁▁\",\n      \"▁▁▁▁█████████████▁▁▁\",\n      \"▁▁▁▁██████████████▁▁\",\n      \"▁▁▁▁██████████████▁▁\",\n      \"▁▁▁▁▁██████████████▁\",\n      \"▁▁▁▁▁██████████████▁\",\n      \"▁▁▁▁▁██████████████▁\",\n      \"▁▁▁▁▁▁██████████████\",\n      \"▁▁▁▁▁▁██████████████\",\n      \"▁▁▁▁▁▁▁█████████████\",\n      \"▁▁▁▁▁▁▁█████████████\",\n      \"▁▁▁▁▁▁▁▁████████████\",\n      \"▁▁▁▁▁▁▁▁████████████\",\n      \"▁▁▁▁▁▁▁▁▁███████████\",\n      \"▁▁▁▁▁▁▁▁▁███████████\",\n      \"▁▁▁▁▁▁▁▁▁▁██████████\",\n      \"▁▁▁▁▁▁▁▁▁▁██████████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁████████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n      \"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n      \"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n      \"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n      \"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n      \"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n      \"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n      \"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n      \"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n      \"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n      \"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n      \"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n      \"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n      \"███████████▁▁▁▁▁▁▁▁▁\",\n      \"████████████▁▁▁▁▁▁▁▁\",\n      \"████████████▁▁▁▁▁▁▁▁\",\n      \"██████████████▁▁▁▁▁▁\",\n      \"██████████████▁▁▁▁▁▁\",\n      \"▁██████████████▁▁▁▁▁\",\n      \"▁██████████████▁▁▁▁▁\",\n      \"▁▁▁█████████████▁▁▁▁\",\n      \"▁▁▁▁▁████████████▁▁▁\",\n      \"▁▁▁▁▁████████████▁▁▁\",\n      \"▁▁▁▁▁▁███████████▁▁▁\",\n      \"▁▁▁▁▁▁▁▁█████████▁▁▁\",\n      \"▁▁▁▁▁▁▁▁█████████▁▁▁\",\n      \"▁▁▁▁▁▁▁▁▁█████████▁▁\",\n      \"▁▁▁▁▁▁▁▁▁█████████▁▁\",\n      \"▁▁▁▁▁▁▁▁▁▁█████████▁\",\n      \"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\n      \"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n      \"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n    ],\n  },\n  mindblown: {\n    interval: 160,\n    frames: [\n      \"😐 \",\n      \"😐 \",\n      \"😮 \",\n      \"😮 \",\n      \"😦 \",\n      \"😦 \",\n      \"😧 \",\n      \"😧 \",\n      \"🤯 \",\n      \"💥 \",\n      \"✨ \",\n      \"　 \",\n      \"　 \",\n      \"　 \",\n    ],\n  },\n  monkey: {\n    interval: 300,\n    frames: [\"🙈 \", \"🙈 \", \"🙉 \", \"🙊 \"],\n  },\n  \"moon-phase\": {\n    interval: 80,\n    frames: [\"🌑 \", \"🌒 \", \"🌓 \", \"🌔 \", \"🌕 \", \"🌖 \", \"🌗 \", \"🌘 \"],\n  },\n  \"orange-pulse\": {\n    interval: 100,\n    frames: [\"🔸 \", \"🔶 \", \"🟠 \", \"🟠 \", \"🔶 \"],\n  },\n  \"pipe-turn\": {\n    interval: 100,\n    frames: [\"┤\", \"┘\", \"┴\", \"└\", \"├\", \"┌\", \"┬\", \"┐\"],\n  },\n  \"plus-pulse\": {\n    interval: 80,\n    frames: [\"+\", \"x\", \"*\"],\n  },\n  point: {\n    interval: 125,\n    frames: [\"∙∙∙\", \"●∙∙\", \"∙●∙\", \"∙∙●\", \"∙∙∙\"],\n  },\n  pong: {\n    interval: 80,\n    frames: [\n      \"▐⠂       ▌\",\n      \"▐⠈       ▌\",\n      \"▐ ⠂      ▌\",\n      \"▐ ⠠      ▌\",\n      \"▐  ⡀     ▌\",\n      \"▐  ⠠     ▌\",\n      \"▐   ⠂    ▌\",\n      \"▐   ⠈    ▌\",\n      \"▐    ⠂   ▌\",\n      \"▐    ⠠   ▌\",\n      \"▐     ⡀  ▌\",\n      \"▐     ⠠  ▌\",\n      \"▐      ⠂ ▌\",\n      \"▐      ⠈ ▌\",\n      \"▐       ⠂▌\",\n      \"▐       ⠠▌\",\n      \"▐       ⡀▌\",\n      \"▐      ⠠ ▌\",\n      \"▐      ⠂ ▌\",\n      \"▐     ⠈  ▌\",\n      \"▐     ⠂  ▌\",\n      \"▐    ⠠   ▌\",\n      \"▐    ⡀   ▌\",\n      \"▐   ⠠    ▌\",\n      \"▐   ⠂    ▌\",\n      \"▐  ⠈     ▌\",\n      \"▐  ⠂     ▌\",\n      \"▐ ⠠      ▌\",\n      \"▐ ⡀      ▌\",\n      \"▐⠠       ▌\",\n    ],\n  },\n  \"quarter-orbit\": {\n    interval: 120,\n    frames: [\"◴\", \"◷\", \"◶\", \"◵\"],\n  },\n  \"retro-braille\": {\n    interval: 80,\n    frames: [\n      \"⠀\",\n      \"⠁\",\n      \"⠂\",\n      \"⠃\",\n      \"⠄\",\n      \"⠅\",\n      \"⠆\",\n      \"⠇\",\n      \"⡀\",\n      \"⡁\",\n      \"⡂\",\n      \"⡃\",\n      \"⡄\",\n      \"⡅\",\n      \"⡆\",\n      \"⡇\",\n      \"⠈\",\n      \"⠉\",\n      \"⠊\",\n      \"⠋\",\n      \"⠌\",\n      \"⠍\",\n      \"⠎\",\n      \"⠏\",\n      \"⡈\",\n      \"⡉\",\n      \"⡊\",\n      \"⡋\",\n      \"⡌\",\n      \"⡍\",\n      \"⡎\",\n      \"⡏\",\n      \"⠐\",\n      \"⠑\",\n      \"⠒\",\n      \"⠓\",\n      \"⠔\",\n      \"⠕\",\n      \"⠖\",\n      \"⠗\",\n      \"⡐\",\n      \"⡑\",\n      \"⡒\",\n      \"⡓\",\n      \"⡔\",\n      \"⡕\",\n      \"⡖\",\n      \"⡗\",\n      \"⠘\",\n      \"⠙\",\n      \"⠚\",\n      \"⠛\",\n      \"⠜\",\n      \"⠝\",\n      \"⠞\",\n      \"⠟\",\n      \"⡘\",\n      \"⡙\",\n      \"⡚\",\n      \"⡛\",\n      \"⡜\",\n      \"⡝\",\n      \"⡞\",\n      \"⡟\",\n      \"⠠\",\n      \"⠡\",\n      \"⠢\",\n      \"⠣\",\n      \"⠤\",\n      \"⠥\",\n      \"⠦\",\n      \"⠧\",\n      \"⡠\",\n      \"⡡\",\n      \"⡢\",\n      \"⡣\",\n      \"⡤\",\n      \"⡥\",\n      \"⡦\",\n      \"⡧\",\n      \"⠨\",\n      \"⠩\",\n      \"⠪\",\n      \"⠫\",\n      \"⠬\",\n      \"⠭\",\n      \"⠮\",\n      \"⠯\",\n      \"⡨\",\n      \"⡩\",\n      \"⡪\",\n      \"⡫\",\n      \"⡬\",\n      \"⡭\",\n      \"⡮\",\n      \"⡯\",\n      \"⠰\",\n      \"⠱\",\n      \"⠲\",\n      \"⠳\",\n      \"⠴\",\n      \"⠵\",\n      \"⠶\",\n      \"⠷\",\n      \"⡰\",\n      \"⡱\",\n      \"⡲\",\n      \"⡳\",\n      \"⡴\",\n      \"⡵\",\n      \"⡶\",\n      \"⡷\",\n      \"⠸\",\n      \"⠹\",\n      \"⠺\",\n      \"⠻\",\n      \"⠼\",\n      \"⠽\",\n      \"⠾\",\n      \"⠿\",\n      \"⡸\",\n      \"⡹\",\n      \"⡺\",\n      \"⡻\",\n      \"⡼\",\n      \"⡽\",\n      \"⡾\",\n      \"⡿\",\n      \"⢀\",\n      \"⢁\",\n      \"⢂\",\n      \"⢃\",\n      \"⢄\",\n      \"⢅\",\n      \"⢆\",\n      \"⢇\",\n      \"⣀\",\n      \"⣁\",\n      \"⣂\",\n      \"⣃\",\n      \"⣄\",\n      \"⣅\",\n      \"⣆\",\n      \"⣇\",\n      \"⢈\",\n      \"⢉\",\n      \"⢊\",\n      \"⢋\",\n      \"⢌\",\n      \"⢍\",\n      \"⢎\",\n      \"⢏\",\n      \"⣈\",\n      \"⣉\",\n      \"⣊\",\n      \"⣋\",\n      \"⣌\",\n      \"⣍\",\n      \"⣎\",\n      \"⣏\",\n      \"⢐\",\n      \"⢑\",\n      \"⢒\",\n      \"⢓\",\n      \"⢔\",\n      \"⢕\",\n      \"⢖\",\n      \"⢗\",\n      \"⣐\",\n      \"⣑\",\n      \"⣒\",\n      \"⣓\",\n      \"⣔\",\n      \"⣕\",\n      \"⣖\",\n      \"⣗\",\n      \"⢘\",\n      \"⢙\",\n      \"⢚\",\n      \"⢛\",\n      \"⢜\",\n      \"⢝\",\n      \"⢞\",\n      \"⢟\",\n      \"⣘\",\n      \"⣙\",\n      \"⣚\",\n      \"⣛\",\n      \"⣜\",\n      \"⣝\",\n      \"⣞\",\n      \"⣟\",\n      \"⢠\",\n      \"⢡\",\n      \"⢢\",\n      \"⢣\",\n      \"⢤\",\n      \"⢥\",\n      \"⢦\",\n      \"⢧\",\n      \"⣠\",\n      \"⣡\",\n      \"⣢\",\n      \"⣣\",\n      \"⣤\",\n      \"⣥\",\n      \"⣦\",\n      \"⣧\",\n      \"⢨\",\n      \"⢩\",\n      \"⢪\",\n      \"⢫\",\n      \"⢬\",\n      \"⢭\",\n      \"⢮\",\n      \"⢯\",\n      \"⣨\",\n      \"⣩\",\n      \"⣪\",\n      \"⣫\",\n      \"⣬\",\n      \"⣭\",\n      \"⣮\",\n      \"⣯\",\n      \"⢰\",\n      \"⢱\",\n      \"⢲\",\n      \"⢳\",\n      \"⢴\",\n      \"⢵\",\n      \"⢶\",\n      \"⢷\",\n      \"⣰\",\n      \"⣱\",\n      \"⣲\",\n      \"⣳\",\n      \"⣴\",\n      \"⣵\",\n      \"⣶\",\n      \"⣷\",\n      \"⢸\",\n      \"⢹\",\n      \"⢺\",\n      \"⢻\",\n      \"⢼\",\n      \"⢽\",\n      \"⢾\",\n      \"⢿\",\n      \"⣸\",\n      \"⣹\",\n      \"⣺\",\n      \"⣻\",\n      \"⣼\",\n      \"⣽\",\n      \"⣾\",\n      \"⣿\",\n    ],\n  },\n  runner: {\n    interval: 140,\n    frames: [\"🚶 \", \"🏃 \"],\n  },\n  sandglass: {\n    interval: 80,\n    frames: [\n      \"⠁\",\n      \"⠂\",\n      \"⠄\",\n      \"⡀\",\n      \"⡈\",\n      \"⡐\",\n      \"⡠\",\n      \"⣀\",\n      \"⣁\",\n      \"⣂\",\n      \"⣄\",\n      \"⣌\",\n      \"⣔\",\n      \"⣤\",\n      \"⣥\",\n      \"⣦\",\n      \"⣮\",\n      \"⣶\",\n      \"⣷\",\n      \"⣿\",\n      \"⡿\",\n      \"⠿\",\n      \"⢟\",\n      \"⠟\",\n      \"⡛\",\n      \"⠛\",\n      \"⠫\",\n      \"⢋\",\n      \"⠋\",\n      \"⠍\",\n      \"⡉\",\n      \"⠉\",\n      \"⠑\",\n      \"⠡\",\n      \"⢁\",\n    ],\n  },\n  shark: {\n    interval: 120,\n    frames: [\n      \"▐|\\\\____________▌\",\n      \"▐_|\\\\___________▌\",\n      \"▐__|\\\\__________▌\",\n      \"▐___|\\\\_________▌\",\n      \"▐____|\\\\________▌\",\n      \"▐_____|\\\\_______▌\",\n      \"▐______|\\\\______▌\",\n      \"▐_______|\\\\_____▌\",\n      \"▐________|\\\\____▌\",\n      \"▐_________|\\\\___▌\",\n      \"▐__________|\\\\__▌\",\n      \"▐___________|\\\\_▌\",\n      \"▐____________|\\\\▌\",\n      \"▐____________/|▌\",\n      \"▐___________/|_▌\",\n      \"▐__________/|__▌\",\n      \"▐_________/|___▌\",\n      \"▐________/|____▌\",\n      \"▐_______/|_____▌\",\n      \"▐______/|______▌\",\n      \"▐_____/|_______▌\",\n      \"▐____/|________▌\",\n      \"▐___/|_________▌\",\n      \"▐__/|__________▌\",\n      \"▐_/|___________▌\",\n      \"▐/|____________▌\",\n    ],\n  },\n  \"smiley-spin\": {\n    interval: 200,\n    frames: [\"😄 \", \"😝 \"],\n  },\n  soccer: {\n    interval: 80,\n    frames: [\n      \" 🧑⚽️       🧑 \",\n      \"🧑  ⚽️      🧑 \",\n      \"🧑   ⚽️     🧑 \",\n      \"🧑    ⚽️    🧑 \",\n      \"🧑     ⚽️   🧑 \",\n      \"🧑      ⚽️  🧑 \",\n      \"🧑       ⚽️🧑  \",\n      \"🧑      ⚽️  🧑 \",\n      \"🧑     ⚽️   🧑 \",\n      \"🧑    ⚽️    🧑 \",\n      \"🧑   ⚽️     🧑 \",\n      \"🧑  ⚽️      🧑 \",\n    ],\n  },\n  speaker: {\n    interval: 160,\n    frames: [\"🔈 \", \"🔉 \", \"🔊 \", \"🔉 \"],\n  },\n  \"square-corners\": {\n    interval: 180,\n    frames: [\"◰\", \"◳\", \"◲\", \"◱\"],\n  },\n  squisher: {\n    interval: 100,\n    frames: [\"╫\", \"╪\"],\n  },\n  stacker: {\n    interval: 100,\n    frames: [\"☱\", \"☲\", \"☴\"],\n  },\n  \"static-noise\": {\n    interval: 100,\n    frames: [\"▓\", \"▒\", \"░\"],\n  },\n  \"time-travel\": {\n    interval: 100,\n    frames: [\n      \"🕛 \",\n      \"🕚 \",\n      \"🕙 \",\n      \"🕘 \",\n      \"🕗 \",\n      \"🕖 \",\n      \"🕕 \",\n      \"🕔 \",\n      \"🕓 \",\n      \"🕒 \",\n      \"🕑 \",\n      \"🕐 \",\n    ],\n  },\n  \"toggle-1\": {\n    interval: 250,\n    frames: [\"⊶\", \"⊷\"],\n  },\n  \"toggle-10\": {\n    interval: 100,\n    frames: [\"㊂\", \"㊀\", \"㊁\"],\n  },\n  \"toggle-11\": {\n    interval: 50,\n    frames: [\"⧇\", \"⧆\"],\n  },\n  \"toggle-12\": {\n    interval: 120,\n    frames: [\"☗\", \"☖\"],\n  },\n  \"toggle-13\": {\n    interval: 80,\n    frames: [\"=\", \"*\", \"-\"],\n  },\n  \"toggle-2\": {\n    interval: 80,\n    frames: [\"▫\", \"▪\"],\n  },\n  \"toggle-3\": {\n    interval: 120,\n    frames: [\"□\", \"■\"],\n  },\n  \"toggle-4\": {\n    interval: 100,\n    frames: [\"■\", \"□\", \"▪\", \"▫\"],\n  },\n  \"toggle-5\": {\n    interval: 100,\n    frames: [\"▮\", \"▯\"],\n  },\n  \"toggle-6\": {\n    interval: 300,\n    frames: [\"ဝ\", \"၀\"],\n  },\n  \"toggle-7\": {\n    interval: 80,\n    frames: [\"⦾\", \"⦿\"],\n  },\n  \"toggle-8\": {\n    interval: 100,\n    frames: [\"◍\", \"◌\"],\n  },\n  \"toggle-9\": {\n    interval: 100,\n    frames: [\"◉\", \"◎\"],\n  },\n  tree: {\n    interval: 400,\n    frames: [\"🌲\", \"🎄\"],\n  },\n  \"triangle-spin\": {\n    interval: 50,\n    frames: [\"◢\", \"◣\", \"◤\", \"◥\"],\n  },\n  twinkle: {\n    interval: 70,\n    frames: [\"✶\", \"✸\", \"✹\", \"✺\", \"✹\", \"✷\"],\n  },\n  weather: {\n    interval: 100,\n    frames: [\n      \"☀️ \",\n      \"☀️ \",\n      \"☀️ \",\n      \"🌤 \",\n      \"⛅️ \",\n      \"🌥 \",\n      \"☁️ \",\n      \"🌧 \",\n      \"🌨 \",\n      \"🌧 \",\n      \"🌨 \",\n      \"🌧 \",\n      \"🌨 \",\n      \"⛈ \",\n      \"🌨 \",\n      \"🌧 \",\n      \"🌨 \",\n      \"☁️ \",\n      \"🌥 \",\n      \"⛅️ \",\n      \"🌤 \",\n      \"☀️ \",\n      \"☀️ \",\n    ],\n  },\n};\n\nexport const CLI_SPINNER_VARIANTS = Object.keys(\n  CLI_SPINNERS,\n) as CliSpinnerVariant[];\n",
      "type": "registry:component"
    }
  ],
  "docs": "Single component exposing 90 classic terminal spinner variants via a `variant` prop. Frames adapted from sindresorhus/cli-spinners (MIT). Use `speed` to scale the animation, `paused` to freeze, and `size` for font-sized scaling. The component renders as a single monospace glyph wrapped in `role=status` for a11y.",
  "categories": [
    "loaders"
  ],
  "type": "registry:block"
}