Button.vue 695 B

1234567891011121314151617181920212223242526272829
  1. <script setup lang="ts">
  2. import type { PrimitiveProps } from "reka-ui"
  3. import type { HTMLAttributes } from "vue"
  4. import type { ButtonVariants } from "."
  5. import { Primitive } from "reka-ui"
  6. import { cn } from '@/Packages/Shadcn/Lib/utils'
  7. import { buttonVariants } from "."
  8. interface Props extends PrimitiveProps {
  9. variant?: ButtonVariants["variant"]
  10. size?: ButtonVariants["size"]
  11. class?: HTMLAttributes["class"]
  12. }
  13. const props = withDefaults(defineProps<Props>(), {
  14. as: "button",
  15. })
  16. </script>
  17. <template>
  18. <Primitive
  19. data-slot="button"
  20. :as="as"
  21. :as-child="asChild"
  22. :class="cn(buttonVariants({ variant, size }), props.class)"
  23. >
  24. <slot />
  25. </Primitive>
  26. </template>