<script lang="ts"> import { StatusTracker } from "@gradio/statustracker"; import type { LoadingStatus } from "@gradio/statustracker"; import type { Gradio } from "@gradio/utils"; export let scale: number | null = null; export let gap = true; export let min_width = 0; export let elem_id = ""; export let elem_classes: string[] = []; export let visible = true; export let variant: "default" | "panel" | "compact" = "default"; export let loading_status: LoadingStatus | undefined = undefined; export let gradio: Gradio | undefined = undefined; export let show_progress = false; </script> <div id={elem_id} class="column {elem_classes.join(' ')}" class:gap class:compact={variant === "compact"} class:panel={variant === "panel"} class:hide={!visible} style:flex-grow={scale} style:min-width="calc(min({min_width}px, 100%))" > {#if loading_status && show_progress && gradio} <StatusTracker autoscroll={gradio.autoscroll} i18n={gradio.i18n} {...loading_status} status={loading_status ? loading_status.status == "pending" ? "generating" : loading_status.status : null} /> {/if} <slot /> </div> <style> div { display: flex; position: relative; flex-direction: column; } div > :global(*), div > :global(.form > *) { width: var(--size-full); } .gap { gap: var(--layout-gap); } .hide { display: none; } .compact > :global(*), .compact :global(.box) { border-radius: 0; } .compact, .panel { border: solid var(--panel-border-width) var(--panel-border-color); border-radius: var(--container-radius); background: var(--panel-background-fill); padding: var(--spacing-lg); } </style>