diff --git a/docs/components/button.md b/docs/components/button.md
index f1996de..3816192 100644
--- a/docs/components/button.md
+++ b/docs/components/button.md
@@ -13,6 +13,7 @@ import ButtonIconExample from './button/examples/ButtonIconExample.vue';
import ButtonSquareExample from './button/examples/ButtonSquareExample.vue';
import ButtonDisabledExample from './button/examples/ButtonDisabledExample.vue';
import ButtonLoadingExample from './button/examples/ButtonLoadingExample.vue';
+import ButtonLinkExample from './button/examples/ButtonLinkExample.vue';
# Vue Button - Flowbite
@@ -372,7 +373,20 @@ import { Button } from 'flowbite-vue'
```
+## Prop - href
+You can add a link to a `Button` component.
+Additionally you can add `tag` prop to change button component to `router-link`
+
+```vue
+
+
+
+
+
+```
## Slot - default
diff --git a/docs/components/button/examples/ButtonLinkExample.vue b/docs/components/button/examples/ButtonLinkExample.vue
new file mode 100644
index 0000000..9f67272
--- /dev/null
+++ b/docs/components/button/examples/ButtonLinkExample.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/src/components/Button/Button.vue b/src/components/Button/Button.vue
index 5f9f426..7c88db8 100644
--- a/src/components/Button/Button.vue
+++ b/src/components/Button/Button.vue
@@ -1,5 +1,5 @@
-
+
diff --git a/src/components/Button/composables/useButtonClasses.ts b/src/components/Button/composables/useButtonClasses.ts
index f120661..99e5919 100644
--- a/src/components/Button/composables/useButtonClasses.ts
+++ b/src/components/Button/composables/useButtonClasses.ts
@@ -2,6 +2,7 @@ import type { Ref } from 'vue'
import { computed, useSlots } from 'vue'
import classNames from 'classnames'
import type { ButtonDuotoneGradient, ButtonGradient, ButtonMonochromeGradient, ButtonSize, ButtonVariant } from '../types'
+import { twMerge } from 'tailwind-merge'
export type ButtonClassMap = { hover: Record; default: Record }
@@ -231,21 +232,21 @@ export function useButtonClasses(props: UseButtonClassesProps): { wrapperClasses
}
}
- return classNames(
+ return twMerge(
backgroundClass,
hoverClass,
shadowClass,
- props.pill.value ? '!rounded-full' : '',
- props.disabled.value ? 'cursor-not-allowed opacity-50' : '',
+ props.pill.value && '!rounded-full',
+ props.disabled.value && 'cursor-not-allowed opacity-50',
isGradient && isOutline ? 'p-0.5' : sizeClasses.value,
- slots.prefix || slots.suffix || props.loading.value ? 'inline-flex items-center' : '',
+ (slots.prefix || slots.suffix || props.loading.value) && 'inline-flex items-center',
)
})
const spanClasses = computed(() => {
if (!!props.gradient.value && props.outline.value) {
// ONLY FOR GRADIENT OUTLINE BUTTON
- return classNames(
+ return twMerge(
'relative bg-white dark:bg-gray-900 rounded-md inline-flex items-center',
sizeClasses.value,
!props.disabled.value ? 'group-hover:bg-opacity-0 transition-all ease-in duration-75' : '',