-
Notifications
You must be signed in to change notification settings - Fork 182
/
Copy pathTButton.vue
118 lines (108 loc) · 1.99 KB
/
TButton.vue
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<template>
<a v-if="href" :href="href" :class="classes">
<slot></slot>
</a>
<router-link v-else-if="props.to" :to="props.to" :class="classes">
<slot></slot>
</router-link>
<button v-else :class="classes">
<slot></slot>
</button>
</template>
<script setup>
import { ref } from "@vue/reactivity";
const props = defineProps({
// indigo, 'red'
color: {
type: String,
default: "indigo",
},
to: [Object, String],
href: String,
link: {
type: Boolean,
default: false,
},
circle: {
type: Boolean,
default: false,
},
});
let classes = ref([
"flex",
"text-sm",
"border",
"border-2",
"border-transparent",
]);
if (props.link) {
classes.value = [
...classes.value,
"transition-colors",
];
switch (props.color) {
case "indigo":
classes.value = [
...classes.value,
"text-indigo-500",
"focus:border-indigo-500",
];
break;
case "red":
classes.value = [...classes.value, "text-red-500", "focus:border-red-500"];
}
} else {
classes.value = [
...classes.value,
"text-white",
"focus:ring-2",
"focus:ring-offset-2",
];
switch (props.color) {
case "indigo":
classes.value = [
...classes.value,
"bg-indigo-600",
"hover:bg-indigo-700",
"focus:ring-indigo-500",
];
break;
case "red":
classes.value = [
...classes.value,
"bg-red-600",
"hover:bg-red-700",
"focus:ring-red-500",
];
break;
case "green":
classes.value = [
...classes.value,
"bg-emerald-500",
"hover:bg-emerald-600",
"focus:ring-emerald-400",
];
break;
}
}
if (props.circle) {
classes.value = [
...classes.value,
"h-8",
"w-8",
"items-center",
"justify-center",
"rounded-full",
"text-sm",
];
} else {
classes.value = [
...classes.value,
"p-0",
"py-2",
"px-4",
"rounded-md"
];
}
</script>
<style></style>