<!-- Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/ --> <script setup lang="ts"> import { computed, useTemplateRef } from 'vue' import { useScrollPosition } from '#desktop/composables/useScrollPosition.ts' import type { BackgroundVariant } from './types.ts' export interface Props { backgroundVariant?: BackgroundVariant noPadding?: boolean noScrollable?: boolean } const props = withDefaults(defineProps<Props>(), { backgroundVariant: 'tertiary', }) const scrollContainer = useTemplateRef('scroll-container') // FIXME: Warning, not reactive! But do we really need that switchable for the same route? if (!props.noScrollable) useScrollPosition(scrollContainer) const backgroundVariantClasses = computed(() => { switch (props.backgroundVariant) { case 'primary': return 'bg-blue-50 dark:bg-gray-800' case 'tertiary': default: return 'bg-neutral-50 dark:bg-gray-500' } }) </script> <template> <main ref="scroll-container" class="h-full w-full text-gray-100 dark:text-neutral-400" :class="[ backgroundVariantClasses, { 'p-4': !noPadding, 'overflow-y-auto': !noScrollable, 'overflow-y-hidden': noScrollable, }, ]" > <slot /> </main> </template>