mirror of
https://github.com/lukevella/rallly.git
synced 2025-07-29 06:07:25 +02:00
56 lines
1 KiB
TypeScript
56 lines
1 KiB
TypeScript
import { useId } from "react";
|
|
|
|
import { cn } from "./lib/utils";
|
|
|
|
interface DotPatternProps {
|
|
width?: number;
|
|
height?: number;
|
|
x?: number;
|
|
y?: number;
|
|
cx?: number;
|
|
cy?: number;
|
|
cr?: number;
|
|
className?: string;
|
|
[key: string]: unknown;
|
|
}
|
|
export function DotPattern({
|
|
width = 16,
|
|
height = 16,
|
|
x = 0,
|
|
y = 0,
|
|
cx = 1,
|
|
cy = 1,
|
|
cr = 1,
|
|
className,
|
|
...props
|
|
}: DotPatternProps) {
|
|
const id = useId();
|
|
|
|
return (
|
|
<svg
|
|
aria-hidden="true"
|
|
className={cn(
|
|
"pointer-events-none absolute inset-0 h-full w-full fill-gray-300",
|
|
className,
|
|
)}
|
|
{...props}
|
|
>
|
|
<defs>
|
|
<pattern
|
|
id={id}
|
|
width={width}
|
|
height={height}
|
|
patternUnits="userSpaceOnUse"
|
|
patternContentUnits="userSpaceOnUse"
|
|
x={x}
|
|
y={y}
|
|
>
|
|
<circle id="pattern-circle" cx={cx} cy={cy} r={cr} />
|
|
</pattern>
|
|
</defs>
|
|
<rect width="100%" height="100%" strokeWidth={0} fill={`url(#${id})`} />
|
|
</svg>
|
|
);
|
|
}
|
|
|
|
export default DotPattern;
|