Draggable, resizable desktop-style windows for Svelte 5. Built for overflow layouts, touch interaction, and intelligent active-window stacking.
npm install svelte-windows
<script lang="ts">
import { WindowManager, Window } from "svelte-windows";
const dragRegions = [{ width: "100%", height: "40px", top: "0px", left: "0px" }];
</script>
<div style="width: 640px; height: 480px;">
<WindowManager>
{#snippet children(context)}
<Window
id="window-1"
{context}
windowDragRegions={dragRegions}
outerClassName="shadow-2xl"
>
<section style="width: 100%; height: 100%; background: #111827;">
My window content
</section>
</Window>
{/snippet}
</WindowManager>
</div>
top, left, width, and height for external state syncWindow supports optional callbacks:
onActiveStateChanged(isActive)onDragStart({ top, left })onDragEnd({ top, left })onResizeStart({ width, height })onResizeEnd({ width, height })import {
WindowManager,
Window,
MouseContext,
WindowContext,
INACTIVE_MOUSE_ID,
type WindowDragConfig,
type WindowPosition,
type WindowDimensions,
type ActualWindowProps
} from "svelte-windows";
npm install
npm run dev