{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "card-slide-8",
  "type": "registry:block",
  "title": "Card Slide 8",
  "author": "Kenney <https://kenney.nl>",
  "description": "A prolonged, smooth sliding sound for a virtual card, ideal for long-distance card movements or sweeping actions.",
  "files": [
    {
      "path": "registry/soundcn/sounds/card-slide-8/card-slide-8.ts",
      "content": "import type { SoundAsset } from \"@/lib/sound-types\";\n\nexport const cardSlide8Sound: SoundAsset = {\n  name: \"card-slide-8\",\n  dataUri: \"data:audio/mpeg;base64,SUQzBAAAAAAAIlRTU0UAAAAOAAADTGF2ZjYyLjMuMTAwAAAAAAAAAAAAAAD/+1DAAAAAAAAAAAAAAAAAAAAAAABJbmZvAAAADwAAABsAABbaABISEhsbGxskJCQkLS0tNjY2Nj8/Pz9JSUlSUlJSW1tbW2RkZGRtbW12dnZ2f39/f4mJiZKSkpKbm5ubpKSkra2trba2tra/v7+/ycnJ0tLS0tvb29vk5OTt7e3t9vb29v///wAAAABMYXZjNjIuMTEAAAAAAAAAAAAAAAAkA5YAAAAAAAAW2iPE6osAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tQxAAABlADPzQRgCH8H6hTHpABEFf75VGAGInD8QHDmD72gg7Lg+f+wp4IBiTLn634gDGsH/pfwx0g+H8EAQ8uH//D/+GEDJIySikSAh56hzKAOCLANJEn4noLXAhMs7GjYYaI7Rk8TSB5QEtk9huaCbt+EFytDUVmGNfPvjGa4oOIT5A0j8EiFE2dc2sgXj6K6y0pCmkOsES0dn5MTuuzFiORn9gaMyzx6R/3zeJVLOt/PES9UA8vz6Z6D7ipj3aI07c6RSWHaHVAHkAnAf/7UsQEgAuxfU3cwoABa4fp+MeZgKyXz0Bw34ekItIZbMCYiUIa8OAgCg54oKBxyIKVE6lqq0ZWtVTuxyvIplF7iiuh0FEauTWd0ZpepZp8lo11Sf+mjWr/nat8m//1+t+chPSq0J3ieQBnZ4mCElACYASBSUB5UjJAIwygJRKBcmMJMS+QaNLgc6wlqPUs8WeCodPCJ6zpVJEeCoMgMseBYGmLvVateOmToaYLN81VW4NoaLTc/xZokqHEkB07eksfbp0qDkfsRAIlDSLUQyid//tSxAYASwS7QoewY4GDk6gxBhgpEElLg+VpymenjSWDnXeYWBti7fK5yazRXdXRhOEthvLuUqpZScirKpVQYZuxRgEImg3HC7TJNEddP0Q4hqIup/JHhaoP82tzSjG6Noe108ZgAKg4QmLIRDQKiWkCsjDwZrzAMNEiSwI8GtLI3G5HVMTTzKLfLz/O+xCVaX8rOVcylkxaOM+mv1KKKhkvJWfWLu3L4kwDC3L9JYqQ7d8x6WnH//9947V/t67u37wOR2xIgCHlpH2onbkTl3L/+1LEB4AMPKU/dYGAAX6eLPceUAIOmrFymh2GY/FKMHsuEGYdgxmmzXdZ1G6ZAehwSTCVHw6k6+FZkYYxNLiDjBoOjxGFQKdApeQguPw4PYNHiMvBM4RHNcgBM8qu9UtlD6yUlqGvJRqRyONSORyKQxgJBINC8hlZlRxb2jR26Fre8wmFjihxEUu7i4mDmRZ0V8XGO6UQxDCI5TKxUInQXZCn6UkVVKJulXF3b6L/0I34eESmh3+f5ZTwl/1BhxqfcsVCYwWhWgeXeYYzKkQXBv/7UsQEgAr4mU3c8wABf5lorYYMeCuJxDpFlJyrUPaHjCi2dCEcroNE0qKBjq2rZtaJjJx2qu8fO+Z6+t/8f1+7xrNfazmrNKHsi67RrI77iL42fqsTFrFdSYyyw4Fca8sDTL1J7/Whgo9mbXLI1QqJY/F4fygdlswdRJC+369a58NEJCMxDVzKrXYz3NY1MMnG4axFk3dIS9tUUqxyRyW1/8iehxUQmj6weXNgAJBwXcgeEQCKut7OetU+bLOWqVPKlU0mRldYMQkAAQ5DqJEN//tSxAaAS4ClQ8wwZQF7m2fthgxwghxkAUJ3A6Dj2zApUJ5ModQ4koo40+iRgCwrdykV7SMjO8nxvM55RqlUtcEZZhdCgqiHnRGmCIBYEDqQm6x7DaiHtQ25LhNGyovfQslukhJlOSBADIiLQGiADwCWalRX6V8Lg81b632NYEDUTFzcEAv0e2ynn+8Ke597OaevkXYUh0er6NFLoIqCeC0dkBmgMY+0uw4smWcoXCKATeNorZ3aGpQoPB5okCzmKHvWX5AIE4P0XyGwn8V9vFn/+1LEBwBL+OtIp7xgiWWM6jj2DDhWAxlBCxgIHB1ylIcKCppCl2/ciP7zeueRJT4oKnfmsfNMoJgc7nZjDhBYwYGJAgZLH2XHW6XbmVUH/Wd8etjXP+jT7NvqbiF5WJ8pkq5WhA3o2eJuIYirEbilCIyBdQCw+Eoch0CQcC8L7xjz6EmeOKEcjDhzeoRA3hWng2EQXrEzgwPhdhAosylBWoa9Z8AaDKz5kqBLyeSIhrqCZ8o59W0P6sDgjoqd2tVVU4eHZFMrUAEIKoZMhsVM4f/7UsQIAAq4P1XHpGFBT4krvPWwACD8SRAk80oNGO1hCyhDaZaPcCwcF1JQcAMqIyoVCyTS0LjmlXirROHSBNzyAcQTXL4maEaFAy96FvSqH5PWfiK44al/FKli5y9mVXRkkAIhscM2HhraHhzLCYKAEhASjJeWR+DyOFjF1X6v3Y+/uPNvBieFoTzC9iHhdhRC28mtRg+hY994hZaVQqG9GK960a+xSaVFVsPVqOJ4zdy5hl1rRBLLJRKMJ+LTMcw6MpSmTx0xEr11qtdye/cf//tSxBEACg1bY+YEVcE1Cq08xIzajQiWRExZTFhzOLjEND2VSEC/4S/1PrkUjDXRsJ+/s620b9fo//+iCyblgErKJWiPDO7KhyNIElAgYj54TC0RVJw0PyMs4jXGawrC8NJHbuZ1VcVqIybgfeciA5QHyA4UBwu/+qtDc67MGfsH17rt3ubKgR4fiQocaaIwxXq8vLqmbxtAAsHIBEUiZGsKTLRAziREhFviCTmyQ9eCBQkMlGqcL+k0WEB8WOgUgDLy7mk3Fz4s4TOSfLdP8+z/+1LEIAAJ+EVp5JhnAUmLbX2EjLCxdV1iLcMKZNLWU7D6RPUju3uzZmX2jJACJkMAW4/LzUaASEi7xhmAfRvI1GkCG1yBXxC8l5PlPcfXeKh0AiUKLQxkxkkNtywALTESb2IKObaprnEKa19qXL1KC48HWiSa9Kr///7XRtpEBAV576d6nfJ1iaygYaKa61SJiLoZxFQqNAOmGxNdEU3uRASHQLGxPYDgbuLc4IAgCAJh8QBgoHyEEEADBAH5wPg4J3+1qP/////6/R25lzdu8f/7UsQsgApsSYOsJHBRRwkvvay8MNxAICmS4mjAm3ccEloeWEmkUlEqJvEOZpvuGcAwRCYcJuuoQZZe0cxQ1szAcgV6uIIWyEzub594LA0DT+8t+Af/xEe/////6FMXPfZVAaAAGBbdGsJR0DpxKWWjk8Mi6i4pAM4YylHIdvP7rSqSXBxA6WUxkfA6CyyQecfM0pEpI0SfJa108cesxYset/9PrR/wCt08SiJ/4iBqAEV0fI/RcYqxET8V9ZtJ4T5fZSuHUvMi4CJu7AYkUfKb//tSxDeBCZBDYSY9ikFHkypg9g3gFRU9P69qOjLPSCB5+hM0dnlFuv1lXYnQWNDonFjVCU3Tr0IoR8rL++v+v+bXvp2qWHh3MyAY0nG5gbeHxUjQTIJmhKPhFgLNU7aB9V0Loqht7kCZKry7KWY17JWlH36QzMKkRoNKIm2KsY5x5z2I1Hk2yfQ3cR9EsveXe9gtIPQqSQ9HKSgA0CpJQuJwUrUozOBJINxYZio4oXYDtsGmqG2kbS6nPLbrLQ3PSYqwkHgVvYmpCxy6DoKpp1L/+1LERgAKTItj5gxQ4U+LqnTDAeCeCLC954T5J5txtQHdLHlz7+rVe60kbAt++mrK6tEAAElMOhoLDryONy4DYdSatePH0BaYoQywVGyRN1oabkLoAoe2dMpDiBYNh8XWtoseeBjFYNXv1w+SB1a+tDf/9+gsn5YY02PShj2Jc9MmsiRQLLKJMJmwnjgwVWNsiBkQiFwF68wUQoUD1LRoBg3dSJKwtMySQ3+kx3NGIWosg0MzAofrnEqCekKDBxW9hNKb9dk2V7RZfj6aG2P1W//7UsRQgAocRU+lsMGBSQ/qNPSMtAuK1R3EmgACLJALebAqJhCMiGX6IRNvAQjOCogUfBvH/pBUAAdkDAF4ZXMEQ6Lnyo1AqwPvWZHAQRvaseJC7XFB6VWJD5hilRAoaTeN7/8L8uH3rtTw2UsiCJAIzMM4BlZBLZaHE9WotunOUWMJHqWlns+DaO7xETlz4pGj0Y5nm/fupkR/yM/3zl9/Bj1nIfHCxdW9nITT++vmIejqm1yK6u2LjQ5uJyhe+7JFSpkAhDJomgDQGyyM+otJ//tSxFyACnQ5R4YkxsFJLam4wIqwovYwCxQIpuhKJFkQUIrwU4kP7mZ/PJ8TSfjuuZxf9i7//uui/9GNqr+lnTVqKzz7Miaf+np3ZdeghCJ4azdpZmh3ZTIvuAECG4NB0cksc2gksWEQ0TBmJ47qq6VAcEmjwIhp5SJjGidr4BIhxKGUBgJ1RXFmNL1sLqJCG+hyShWmuTu7LNVlUXJoNP666op5Z3ZUKRtoEsnINobRLC+NSDNEHmxYsRUNxQDhD0oC2NSuUuDH8Tn3PAbhQnD/+1LEZ4AKQV1PpgxNwTkF6fj2JBhSHlMuUxkXE6kJwC72I04X5i3vU5S/dUnUIQaYQNH67ENVsaHdmM7GkgCjMGxXC4GIjHx4Xnjw5MXcPSIGUmCXeFBXnZMUNNESypo4bUKuPKRQywoOI0C4Ahtp3txl7txVt36KF17ZWbK6854+6prtXYik4iAULcjieHQsGWyGSdzYEAAwJ47iELFJJ2x0fhkGPt+orKdTIth1HWEhVBsseC4xyhKDROaSQsi1aoxPIJ3mve/WMiqLriPiV//7UsR1AAnoRVHnpGcBMQlp/MMNiD2SFOlqi3dIkADAAhZSkzXJBDIQ09zgU6STg4hGAraaTSbldQ8hizh+9XpaG7XIszzoAAnotWZrZBJCx51MJpoOcXSRaMsk6jlxzZjL9/YKjpd25x1VRioSR2OIvsgwA7dRHLIQlU9PC28VEx76NxS5ry+LHXGNG6NDtcs24diIbDpOsWMyyQCJ3rAYKNe4mEVoOTFu52AHKI95diUyOpjN4e3oP5lzhzpx8RBRJytIdUAEbPwyWM/z4CvC//tSxIUACmiBRaeYaQFIDmew9I1Yy5CSDZIF2AmSoUNox7k1UMi0iL8EnzATSuOW5ZVKRJqS7l5H8YITr/bynBosml/cWFtdTzcj4rZDi1XmOmb/6296QIE6ynTH4mEg9FiVCaM0xqzgCSWyRBP7WpnQ0KDHKqEYWNA9OljCEKsM5QyH0gstwPTYFIhBbkZsIOeKrWKy5kmEw/a7uUYsdQ+cJ2ue3c2FnAbu0sqGl3TWHU4jMsiYTBqTCAgiwPiWnVoKy4WexVHHlATHIDOLAwH/+1LEkAAKdF8/hgRSAUGXp7D0jKgA8JxSbINSDg4dbTrZc1hdY/ftq5TZxZd0duV02nX3HGrYs5V3OgeIeZaFS21Igse4QcJ4IEgvCcVkZTHJpQDVhEWk+Rrdo5R2kwVl9ypi30aGgkuNhACnH297BdsqUIpeMYtJF7A5WpMZ2f1r2U1sS6USNrFUGKnviMJNxtE0gAQV8QUnwemKMIi0eZAYN/EduqDQ2IRSrepUEsiSNgkwsIA1abZ3j8ZcwKJGnTpBCLxHrmPpXAC0pU9BV//7UsScAAp8NzsMsMFBN4ZouPYYMClNT2pPw4CNijwu8mKDc9UO7e6J1KiwdSyMzSuFhXZoMyISDBtRsD9nWwg/SzdZWxCylVVxXSgY2XtcYHJHWUxVZvKhUMDHAZCkKqueziFf0se5OkiwCL4nj6X0ClLU0G7AzpK2zbIhD7uM5Z20EABhRULjahKGhU24kYJm7IQyMLvFURKbwUPBVEkDTwwRjAhSiNUfJHFOrYpbWgIRsYC6mXCWi7Vqdd2lGblNk1OOCeiVUQHKDTkTRDYC//tSxKkACohlTeYEciFEiOew9gwwf35SVYkZhmJJsPCsrINzR9ld922l8LnssHPVmlB00mHBhz7WhgO1MNSrKxzjLZO4RCQPjWqS0qB0yvDR95gjVGMrNi7+4Lpd3OW4p5YMGJNo7KC+NEbAoF4EDhUS0SxxfCWzujj1oWrfGIwCBli6CC0ZZjTJwMMlWRzNTFAXUH61sFUl2rUZQVPtcFcUkXqVawo82/mDpinraQSpz1UO572JTqpQpUqSTrMTp8dygczpdrpCkYCCXY4aHS3/+1LEtAAKMFVBh5hugU+Kp7GEjHB7Ty9+ajHRHLBwEnCRoeDjEOrbafyAkhhYYFbFvY8PsQKTLv9uyTRUSDLnKmmhiV6mOSFj7xMEI5Ii1IAEae4gDCwSVcKUiNE0OEXgTFwkgtVFq4Z1Cm4MetO/VhZ9L+oxGY/BtyXobEjBGCwcaChp4fa1EizWxhC2ZHpVgVl1zDaIv0woLMT4cME0qjb77m3VSjBx42CqEbj6jBuPBikCw0T6FwFfGaNmUV9xjaumhOWFUi4ijw9WKk2LAP/7UsS/AApgXTtsMEPBQoanrQSwEIOJcgKCAw0Uky5tI0wJhiyK1DM+rf0+lTH3pdX9IlF726h7lAjSrwrq32gCEbjPk0TlCTcH8AxxgRtB0hByCJZqkpuCZx3ufLFAYHQixpOQhVQnSUOuvQhACbYKm2rwviFSTa8AMxU4ZmX13C9RPe5UusWLnW7blVzVEzuvad9UsAxK4SQ/IgeKF0RUJqorGqx1SZ2eXuIZOMsD/NX3FIYG7mR9+Kw+XrEyc833YoRUo5+Q5PEQfD4qgW0I//tSxMsACoRNQYeYDQFUD6exhIwwmiMVfYqacyrG+7oqe2R3Xri4aqCu12TTMiMTacV54GZMsJAUHP5LJl2JXHI0+jxw44lnQBB7gTCPdGpyiEMOi55j0Bss1CzcZKBZcMWTeMGnzB5LxrhQXJp5tXi1bWKAu3HWdL7y8OjlqepQCXSGR2CGB2D0ZjoRhoAAjTg4TVuWNvwoLA5LCCswMQ3swIIDAxGoQAv7CsIgCeLH+ClLyCBBswxu/8nKeFvEzLyX06T2//KoQMggC+oE7Ef/+1LE1AAKfENBjDEgwVcI6Pj0mNTYT3//OBmOVXrosma21LCv//+CjRSsbxQnIjGG3hQXtP//+oHJdNq+wItBLFcPq4fQXuv///+1KlqvqzfXcn/r6wbGfWTqcQeWTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv/7UsTdAAqwrUOHsGHBW4ooMrAwAKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//tSxOSAE0EfPfm3gAAAADSDgAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo=\",\n  duration: 0.671,\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": 0.671,
    "format": "mp3",
    "sizeKb": 6,
    "license": "CC0",
    "tags": [
      "card",
      "slide",
      "8"
    ],
    "keywords": [
      "card",
      "slide",
      "move",
      "drag",
      "reposition",
      "game",
      "ui",
      "prolonged",
      "smooth",
      "sweeping",
      "paper",
      "interaction",
      "feedback",
      "adjust",
      "shift",
      "fluid",
      "extended",
      "gentle",
      "transition",
      "continuous",
      "long"
    ]
  },
  "categories": [
    "card"
  ]
}