{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "card-fan-2",
  "type": "registry:block",
  "title": "Card Fan 2",
  "author": "Kenney <https://kenney.nl>",
  "description": "A more extended and distinct fanning sound of multiple cards, ideal for presenting a full hand or larger card collection.",
  "files": [
    {
      "path": "registry/soundcn/sounds/card-fan-2/card-fan-2.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const cardFan2Sound: SoundAsset = {\n  name: \"card-fan-2\",\n  dataUri: \"data:audio/mpeg;base64,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GaSaFxIAhc68mqDYw0H0EFDzDFjUYnFDRhJkqSNK7cqpcHTkZArVvqxlyLaReeh4WJYEuCTpiUGgDUXbTqybnAMFwY/rrQJ3DuwZXevpg5zyp7WkIgTEw6Woaskw6gLGUoH5CkbFUkhMtgSPJDfitgeFYbVeFcgitqm0omXKvsopH+e2ohLt9JFfzVBy0H6YIHA2H4ViIKRhYmiKYsFQRCeXqCSytxiw4eFTNIBM//tSxGYACjg1P4wwwYFECycthI0gzBcwZDcuAxwESkdDiKS8e3HanFSkFl6HUwOICB23x2h1gEQjBhlVG5rAVoiZhkR21sEIpMElZi8rxMFjgPnBNKqGYF0sFx2nL3OMRuSEVMFBjCC9XEam4ogAjgHTEJoYBwkPBgHmpHTYRHMYr9fIruWRod2fXf8kqj3W2LoWONxoxANUXOlaysKxDGKEwVwpFIk4MEyEnpMly0IMmafZUphOTcQJkxYOWCVNolguus0Wj1YQoSKEjRiga8z/+1LEcoAKUD9Bh7DDAUwMqXz2DKyTJvjxjZ/Fkz1Ysdn4yzdH9EvoSC9XGkSaDyqMtp1k8yEAjGCiyMlH5UOEJ2nMfz8DJDqdNVPICcou0h90Kf6gy6FLKefAgZMBQOuULMEkVRNBUbTn2P71so+K6WbVlfs+La4KKORMOADEOogzM6RljlRSHKJQI5iZSQOIkBEj1hVEyRQ1b2VCk8KUJPqTT+Oo6xFHIrQWwpVeOuYgeWauViW0ir2bjNY4XOgtavo0lUeKPWUaEVZoyBSSkP/7UMR9gEpUSzlsMMKBPJJncYYMsACRDiCoyta1wRO1JKA08uaJQjQAgrnJUcSk6JXFjISBoSsBrywNPPRKdLRLDRY9JJywGDkRLcIiRYGgZ3RE/9TZV3gqe//kctVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+1LEigAKPHs5Z6RsgT4HJfT2GDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7UsSXA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\",\n  duration: 1.307,\n  format: \"mp3\",\n  license: \"CC0\",\n  author: \"Kenney\",\n};\n",
      "type": "registry:lib"
    },
    {
      "path": "registry/soundcn/lib/sound-types.ts",
      "content": "export interface SoundAsset {\r\n  /** Unique identifier for the sound */\r\n  name: string;\r\n  /** Base64-encoded data URI (data:audio/mpeg;base64,...) */\r\n  dataUri: string;\r\n  /** Duration in seconds */\r\n  duration: number;\r\n  /** Audio format */\r\n  format: \"mp3\" | \"wav\" | \"ogg\";\r\n  /** License identifier */\r\n  license: \"CC0\" | \"OGA-BY\" | \"MIT\";\r\n  /** Original author/creator */\r\n  author: string;\r\n}\r\n\r\nexport interface UseSoundOptions {\r\n  /** Volume level from 0 to 1. Default: 1 */\r\n  volume?: number;\r\n  /** Playback speed multiplier. Default: 1 */\r\n  playbackRate?: number;\r\n  /** If true, calling play() stops current playback first. Default: false */\r\n  interrupt?: boolean;\r\n  /** If false, play() does nothing. Useful for user preferences. Default: true */\r\n  soundEnabled?: boolean;\r\n  /** Called when playback starts */\r\n  onPlay?: () => void;\r\n  /** Called when playback ends naturally */\r\n  onEnd?: () => void;\r\n  /** Called when pause() is called */\r\n  onPause?: () => void;\r\n  /** Called when stop() is called */\r\n  onStop?: () => void;\r\n}\r\n\r\nexport type PlayFunction = (overrides?: {\r\n  volume?: number;\r\n  playbackRate?: number;\r\n}) => void;\r\n\r\nexport interface SoundControls {\r\n  stop: () => void;\r\n  pause: () => void;\r\n  isPlaying: boolean;\r\n  duration: number | null;\r\n  sound: SoundAsset;\r\n}\r\n\r\nexport type UseSoundReturn = readonly [PlayFunction, SoundControls];\r\n",
      "type": "registry:lib"
    },
    {
      "path": "registry/soundcn/lib/sound-engine.ts",
      "content": "let audioContext: AudioContext | null = null;\nconst bufferCache = new Map<string, AudioBuffer>();\n\nexport function getAudioContext(): AudioContext {\n  if (!audioContext) {\n    audioContext = new AudioContext();\n  }\n  return audioContext;\n}\n\nexport async function decodeAudioData(dataUri: string): Promise<AudioBuffer> {\n  const cached = bufferCache.get(dataUri);\n  if (cached) return cached;\n\n  const ctx = getAudioContext();\n  const base64 = dataUri.split(\",\")[1];\n  const binaryString = atob(base64);\n  const bytes = new Uint8Array(binaryString.length);\n  for (let i = 0; i < binaryString.length; i++) {\n    bytes[i] = binaryString.charCodeAt(i);\n  }\n\n  const audioBuffer = await ctx.decodeAudioData(bytes.buffer.slice(0));\n  bufferCache.set(dataUri, audioBuffer);\n  return audioBuffer;\n}\n\nexport interface PlaySoundOptions {\n  volume?: number;\n  playbackRate?: number;\n  onEnd?: () => void;\n}\n\nexport interface SoundPlayback {\n  stop: () => void;\n}\n\nexport async function playSound(\n  dataUri: string,\n  options: PlaySoundOptions = {}\n): Promise<SoundPlayback> {\n  const { volume = 1, playbackRate = 1, onEnd } = options;\n  const ctx = getAudioContext();\n  if (ctx.state === \"suspended\") {\n    await ctx.resume();\n  }\n\n  const buffer = await decodeAudioData(dataUri);\n  const source = ctx.createBufferSource();\n  const gain = ctx.createGain();\n\n  source.buffer = buffer;\n  source.playbackRate.value = playbackRate;\n  gain.gain.value = volume;\n\n  source.connect(gain);\n  gain.connect(ctx.destination);\n\n  source.onended = () => {\n    onEnd?.();\n  };\n\n  source.start(0);\n\n  return {\n    stop: () => {\n      try {\n        source.stop();\n      } catch {\n        // No-op if already stopped.\n      }\n    },\n  };\n}\n",
      "type": "registry:lib"
    }
  ],
  "meta": {
    "duration": 1.307,
    "format": "mp3",
    "sizeKb": 11,
    "license": "CC0",
    "tags": [
      "card",
      "fan",
      "2"
    ],
    "keywords": [
      "card",
      "fan",
      "spread",
      "deal",
      "hand",
      "game",
      "ui",
      "selection",
      "extended",
      "distinct",
      "clear",
      "paper",
      "interaction",
      "display",
      "inventory",
      "menu",
      "browse",
      "slide",
      "reveal",
      "multiple",
      "collection",
      "fluent"
    ]
  },
  "categories": [
    "card"
  ]
}