diff --git a/src/components/ui/button/Button.vue b/src/components/ui/button/Button.vue
new file mode 100644
index 0000000..ef04935
--- /dev/null
+++ b/src/components/ui/button/Button.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/src/components/ui/button/index.ts b/src/components/ui/button/index.ts
new file mode 100644
index 0000000..b97260b
--- /dev/null
+++ b/src/components/ui/button/index.ts
@@ -0,0 +1,34 @@
+import { cva, type VariantProps } from 'class-variance-authority'
+
+export { default as Button } from './Button.vue'
+
+export const buttonVariants = cva(
+ 'inline-flex items-center justify-center whitespace-nowrap font-display uppercase tracking-[0.2em] ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',
+ {
+ variants: {
+ variant: {
+ default: 'rounded-full bg-primary text-primary-foreground hover:opacity-90',
+ outline:
+ 'rounded-full border border-accent/50 bg-transparent text-accent hover:bg-accent/10',
+ ghost: 'rounded-full text-accent hover:bg-accent/10',
+ link: 'text-accent underline-offset-4 hover:underline',
+ secondary:
+ 'rounded-full bg-secondary text-secondary-foreground hover:bg-secondary/80',
+ destructive:
+ 'rounded-full bg-destructive text-destructive-foreground hover:bg-destructive/90',
+ },
+ size: {
+ default: 'h-12 px-6 py-3 text-xs',
+ sm: 'h-9 px-4 text-[10px]',
+ lg: 'h-14 px-8 text-sm',
+ icon: 'h-10 w-10 rounded-full',
+ },
+ },
+ defaultVariants: {
+ variant: 'default',
+ size: 'default',
+ },
+ },
+)
+
+export type ButtonVariants = VariantProps
diff --git a/src/views/AccommodationView.vue b/src/views/AccommodationView.vue
index 1cfeb41..73f1b8f 100644
--- a/src/views/AccommodationView.vue
+++ b/src/views/AccommodationView.vue
@@ -1,6 +1,7 @@