Dashboard final version, TODO: update main sidebar menu

This commit is contained in:
Simon Pocrnjič
2025-11-23 21:33:01 +01:00
parent c3de189e9d
commit c1ac92efbf
67 changed files with 5195 additions and 844 deletions
@@ -0,0 +1,63 @@
<script setup>
import { ref } from "vue";
import { Popover, PopoverContent, PopoverTrigger } from "@/Components/ui/popover";
const props = defineProps({
open: {
type: Boolean,
default: undefined,
},
align: {
type: String,
default: "center",
validator: (value) => ["start", "center", "end"].includes(value),
},
side: {
type: String,
default: "bottom",
validator: (value) => ["top", "right", "bottom", "left"].includes(value),
},
sideOffset: {
type: Number,
default: 4,
},
contentClass: {
type: String,
default: "",
},
disabled: {
type: Boolean,
default: false,
},
});
const emit = defineEmits(["update:open"]);
const internalOpen = ref(false);
const isControlled = props.open !== undefined;
function handleOpenChange(value) {
if (isControlled) {
emit("update:open", value);
} else {
internalOpen.value = value;
}
}
</script>
<template>
<Popover :open="isControlled ? open : internalOpen" @update:open="handleOpenChange">
<PopoverTrigger as-child :disabled="disabled">
<slot name="trigger" />
</PopoverTrigger>
<PopoverContent
:align="align"
:side="side"
:side-offset="sideOffset"
:class="contentClass"
>
<slot />
</PopoverContent>
</Popover>
</template>