{
  "name": "shore",
  "title": "Shore",
  "type": "registry:component",
  "description": "Sloped beach/shore strip to meet a Lake.",
  "dependencies": [
    "@react-three/rapier@^2.2.0",
    "@runek/core@^0.12.0"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "Shore.tsx",
      "content": "import { RigidBody } from '@react-three/rapier'\nimport { useWorld, type Vec3 } from '@runek/core'\n\nexport interface ShoreProps {\n  position?: Vec3\n  rotation?: Vec3\n  /** `[width, depth]` in units. The sandy top sits at the component origin. */\n  size?: [number, number]\n  thickness?: number\n  /** Defaults to the world palette's `sand` slot. */\n  color?: string\n}\n\nexport function Shore({\n  position = [0, 0, 0],\n  rotation = [0, 0, 0],\n  size = [24, 24],\n  thickness = 0.3,\n  color,\n}: ShoreProps) {\n  const { unit, palette } = useWorld()\n  const sandColor = color ?? palette.sand\n  const w = size[0] * unit\n  const d = size[1] * unit\n  const t = thickness * unit\n\n  return (\n    <RigidBody type=\"fixed\" colliders=\"cuboid\" position={position} rotation={rotation}>\n      <mesh receiveShadow position={[0, -t / 2, 0]}>\n        <boxGeometry args={[w, t, d]} />\n        <meshStandardMaterial color={sandColor} roughness={1} />\n      </mesh>\n    </RigidBody>\n  )\n}\n",
      "type": "registry:component"
    }
  ]
}
