SidebarMenuButtonChild.vue 967 B

123456789101112131415161718192021222324252627282930313233343536
  1. <script setup lang="ts">
  2. import type { PrimitiveProps } from "reka-ui"
  3. import type { HTMLAttributes } from "vue"
  4. import type { SidebarMenuButtonVariants } from "."
  5. import { Primitive } from "reka-ui"
  6. import { cn } from '@/Packages/Shadcn/Lib/utils'
  7. import { sidebarMenuButtonVariants } from "."
  8. export interface SidebarMenuButtonProps extends PrimitiveProps {
  9. variant?: SidebarMenuButtonVariants["variant"]
  10. size?: SidebarMenuButtonVariants["size"]
  11. isActive?: boolean
  12. class?: HTMLAttributes["class"]
  13. }
  14. const props = withDefaults(defineProps<SidebarMenuButtonProps>(), {
  15. as: "button",
  16. variant: "default",
  17. size: "default",
  18. })
  19. </script>
  20. <template>
  21. <Primitive
  22. data-slot="sidebar-menu-button"
  23. data-sidebar="menu-button"
  24. :data-size="size"
  25. :data-active="isActive"
  26. :class="cn(sidebarMenuButtonVariants({ variant, size }), props.class)"
  27. :as="as"
  28. :as-child="asChild"
  29. v-bind="$attrs"
  30. >
  31. <slot />
  32. </Primitive>
  33. </template>