<!-- SPEC: PJ2026-010405 云端控制台. -->
<!-- Implementation reference: draft-2026-07-13-p0-cloud-console. -->

<script setup lang="ts">
import OverlaySurface from "./OverlaySurface.vue";

const props = withDefaults(defineProps<{
  open: boolean;
  title: string;
  description?: string;
  wide?: boolean;
  fullscreen?: boolean;
  closeOnBackdrop?: boolean;
  busy?: boolean;
  initialFocus?: string;
  surfaceClass?: string;
}>(), {
  description: "",
  wide: false,
  fullscreen: false,
  closeOnBackdrop: true,
  busy: false,
  initialFocus: "",
  surfaceClass: ""
});

defineEmits<{ close: [] }>();
</script>

<template>
  <OverlaySurface :open="open" :title="title" :description="description" :wide="wide" :fullscreen="fullscreen" :close-on-backdrop="closeOnBackdrop" :busy="busy" :initial-focus="initialFocus" :surface-class="surfaceClass" @close="$emit('close')"><slot /><template v-if="$slots.footer" #footer><slot name="footer" /></template></OverlaySurface>
</template>
