1.suit-button {
2 &.suit-button--size_small {
3 height: 24px;
4 padding: 0 10px;
5 font-size: 12px;
6 min-width: auto;
7 }
8 &.suit-button--size_large {
9 height: 40px;
10 font-size: 16px;
11 }
12}
1<script lang="ts" setup>
2import { useNamespace } from "@suit-ui/hooks";
3defineOptions({
4 name: "SuitButton",
5});
6const ns = useNamespace("button");
7
8const props = defineProps({
9 type: {
10 type: String,
11 default: "default", // 默认值
12 },
13 round: {
14 type: Boolean,
15 default: false,
16 },
17 disabled: {
18 type: Boolean,
19 default: false,
20 },
21 text: {
22 type: Boolean,
23 default: false,
24 },
25 link: {
26 type: Boolean,
27 default: false,
28 },
29 border: {
30 type: Boolean,
31 default: false,
32 },
33 dashed: {
34 type: Boolean,
35 default: false,
36 },
37 block: {
38 type: Boolean,
39 default: false,
40 },
41 size: {
42 type: String,
43 default: "",
44 },
45});
46</script>
47
48<template>
49 <button
50 :class="[
51 ns.b(),
52 ns.m(type),
53 ns.is('round', round),
54 ns.is('disabled', disabled),
55 ns.is('text', text),
56 ns.is('link', link),
57 ns.is('border', border),
58 ns.is('dashed', dashed),
59 ns.is('block', block),
60 ns.m('size', size),
61 ]"
62 >
63 <span>
64 <slot v-if="$slots.default"></slot>
65 </span>
66 </button>
67</template>
1<template>
2 <div>
3 <suit-button>默认</suit-button>
4 <suit-button type="primary" size="small">主要</suit-button>
5 <suit-button type="success" size="large">成功</suit-button>
6 <suit-button type="warning" link>警告</suit-button>
7 <suit-button type="error" text>错误</suit-button>
8 </div>
9</template>
:::