,
+ default: null,
+ },
+})
+```
+
+
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+## Prop - gradient (duotone)
+
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+```
+
+## Prop - outline (color)
+
+```typescript
+defineProps({
+ outline: {
+ type: Boolean,
+ default: false,
+ },
+})
+```
+
+
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+```
+
+
+## Slot - prefix
+
+
+
+```vue
+
+
+
+
+```
+
+## Slot - suffix
+
+
+
+```vue
+
+
+
+
+```
diff --git a/docs/guide/button/ButtonColorExample.vue b/docs/guide/button/examples/ButtonColorExample.vue
similarity index 90%
rename from docs/guide/button/ButtonColorExample.vue
rename to docs/guide/button/examples/ButtonColorExample.vue
index 5306c76..779be8e 100644
--- a/docs/guide/button/ButtonColorExample.vue
+++ b/docs/guide/button/examples/ButtonColorExample.vue
@@ -11,5 +11,5 @@
diff --git a/docs/guide/button/examples/ButtonGradientDuotoneExample.vue b/docs/guide/button/examples/ButtonGradientDuotoneExample.vue
new file mode 100644
index 0000000..8892e36
--- /dev/null
+++ b/docs/guide/button/examples/ButtonGradientDuotoneExample.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/guide/button/examples/ButtonGradientMonochromeExample.vue b/docs/guide/button/examples/ButtonGradientMonochromeExample.vue
new file mode 100644
index 0000000..fccba4b
--- /dev/null
+++ b/docs/guide/button/examples/ButtonGradientMonochromeExample.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/guide/button/examples/ButtonOutlineColorExample.vue b/docs/guide/button/examples/ButtonOutlineColorExample.vue
new file mode 100644
index 0000000..3a0e9b2
--- /dev/null
+++ b/docs/guide/button/examples/ButtonOutlineColorExample.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/guide/button/ButtonPillExample.vue b/docs/guide/button/examples/ButtonPillExample.vue
similarity index 91%
rename from docs/guide/button/ButtonPillExample.vue
rename to docs/guide/button/examples/ButtonPillExample.vue
index 2b8eaff..c7184ad 100644
--- a/docs/guide/button/ButtonPillExample.vue
+++ b/docs/guide/button/examples/ButtonPillExample.vue
@@ -11,5 +11,5 @@
diff --git a/docs/guide/button/examples/ButtonPrefixExample.vue b/docs/guide/button/examples/ButtonPrefixExample.vue
new file mode 100644
index 0000000..13a6e83
--- /dev/null
+++ b/docs/guide/button/examples/ButtonPrefixExample.vue
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/docs/guide/button/ButtonSizeExample.vue b/docs/guide/button/examples/ButtonSizeExample.vue
similarity index 87%
rename from docs/guide/button/ButtonSizeExample.vue
rename to docs/guide/button/examples/ButtonSizeExample.vue
index 6468c9b..36ee40b 100644
--- a/docs/guide/button/ButtonSizeExample.vue
+++ b/docs/guide/button/examples/ButtonSizeExample.vue
@@ -8,5 +8,5 @@
diff --git a/docs/guide/button/examples/ButtonSuffixExample.vue b/docs/guide/button/examples/ButtonSuffixExample.vue
new file mode 100644
index 0000000..f536ca2
--- /dev/null
+++ b/docs/guide/button/examples/ButtonSuffixExample.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
index 81146d6..852ac5e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -366,6 +366,47 @@
"integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==",
"dev": true
},
+ "@volar/code-gen": {
+ "version": "0.38.2",
+ "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.38.2.tgz",
+ "integrity": "sha512-H81I6d7rZB7teqL+zhK/Xz1v0/kKkUwkB0Aq6b4+BTCqcJeiZkoWxd0gFhrhWTnUoqiM83lhoTGo2vkvx5YagQ==",
+ "dev": true,
+ "requires": {
+ "@volar/source-map": "0.38.2"
+ }
+ },
+ "@volar/source-map": {
+ "version": "0.38.2",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.38.2.tgz",
+ "integrity": "sha512-DWcYbYt9SPwk0r4VmXk1F0v4X5+hCqH1JRkAWSeJymQyXCQ2OQDEbY2PF12a7y2qn4FUBD2gOba2TynAqI8ZFQ==",
+ "dev": true
+ },
+ "@volar/vue-code-gen": {
+ "version": "0.38.2",
+ "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.38.2.tgz",
+ "integrity": "sha512-whLunD6phSGWBUHZKdTxeglrpzQu26ii8CRVapFdjfyMaVhQ7ESNeIAhkTVyg2ovOPc0PiDYPQEPzfWAADIWog==",
+ "dev": true,
+ "requires": {
+ "@volar/code-gen": "0.38.2",
+ "@volar/source-map": "0.38.2",
+ "@vue/compiler-core": "^3.2.37",
+ "@vue/compiler-dom": "^3.2.37",
+ "@vue/shared": "^3.2.37"
+ }
+ },
+ "@volar/vue-typescript": {
+ "version": "0.38.2",
+ "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-0.38.2.tgz",
+ "integrity": "sha512-5IKvSK2m5yUmH6iu/tNScVlvJGuiHawTfSmjxaMs+/tod25WeK37LEdf+pdKtlJ30bYTQmmkAuEfG01QvvBRGQ==",
+ "dev": true,
+ "requires": {
+ "@volar/code-gen": "0.38.2",
+ "@volar/source-map": "0.38.2",
+ "@volar/vue-code-gen": "0.38.2",
+ "@vue/compiler-sfc": "^3.2.37",
+ "@vue/reactivity": "^3.2.37"
+ }
+ },
"@vue/compiler-core": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
@@ -2139,6 +2180,15 @@
}
}
},
+ "vue-tsc": {
+ "version": "0.38.2",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.38.2.tgz",
+ "integrity": "sha512-+OMmpw9BZC9khul3I1HGtWchv7BCiaM7NvfdilVAiOFkjnivIoaW6jJm6YPQJaEPouePtpkDUWovyzgNxWdDsw==",
+ "dev": true,
+ "requires": {
+ "@volar/vue-typescript": "0.38.2"
+ }
+ },
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/package.json b/package.json
index 6534fb4..1312e50 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
"serve": "vitepress serve docs",
"build:docs": "vitepress build docs",
"build": "vite build",
+ "build-types": "vue-tsc --declaration --emitDeclarationOnly",
"lint": "eslint --ext .ts,.vue --ignore-path .gitignore --fix src",
"format": "prettier . --write"
},
@@ -40,11 +41,12 @@
"flowbite": "^1.4.2",
"postcss": "^8.4.6",
"prettier": "^2.3.2",
- "tailwindcss": "^3.0.24",
+ "tailwindcss": "^3.1.4",
"typescript": "^4.7.3",
"vite": "^2.4.3",
"vitepress": "^1.0.0-alpha.4",
- "vue-eslint-parser": "^9.0.3"
+ "vue-eslint-parser": "^9.0.3",
+ "vue-tsc": "^0.38.2"
},
"postcss": {
"plugins": {
diff --git a/src/components/Button/Button.vue b/src/components/Button/Button.vue
index 39899c1..74c97cb 100644
--- a/src/components/Button/Button.vue
+++ b/src/components/Button/Button.vue
@@ -1,14 +1,20 @@