1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| <script setup lang="ts">
| import { useId } from "@/composables/useId";
|
| defineOptions({
| name: "DotPattern"
| });
|
| interface DotPatternProps {
| width?: number;
| height?: number;
| x?: number;
| y?: number;
| cx?: number;
| cy?: number;
| cr?: number;
| userSpaceOnUse?: string;
| }
| const props = withDefaults(defineProps<DotPatternProps>(), {
| width: 16,
| height: 16,
| x: 0,
| y: 0,
| cx: 1,
| cy: 1,
| cr: 1,
| userSpaceOnUse: "userSpaceOnUse"
| });
| const id = `pattern-${useId()}`;
| </script>
|
| <template>
| <svg
| aria-hidden="true"
| class="pointer-events-none absolute inset-0 h-full w-full fill-neutral-400/80"
| v-bind="$attrs"
| >
| <defs>
| <pattern
| :id="id"
| :width="props.width"
| :height="props.height"
| :patternUnits="props.userSpaceOnUse"
| :patternContentUnits="props.userSpaceOnUse"
| :x="props.x"
| :y="props.y"
| >
| <circle
| id="pattern-circle"
| :cx="props.cx"
| :cy="props.cy"
| :r="props.cr"
| />
| </pattern>
| </defs>
| <rect width="100%" height="100%" strokeWidth="0" :fill="`url(#${id})`" />
| </svg>
| </template>
|
|