component DragAndDrop { outputs { dragStart(payload: { sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) dragEnd(payload: { sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) dragEnter(payload: { sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) dragLeave(payload: { sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) drop(payload: { sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) change(payload: { value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null) } props { size: string = "default" color: string = "primary" title: string = "Drag And Drop" description: string = "" items: unknown[] = [] variant: string = "default" class: string = "" } view {
{#if title}{title}{/if} {#if description}

{description}

{/if} {#if items}
{#each items as item}{item.label}{/each}
{/if}
} style { .wrn-next--drag-and-drop { display: grid; gap: 0.75rem; padding: 1rem; border: 1px solid var(--wrn-color-border); border-radius: var(--wrn-radius); color: var(--wrn-color-text); background: var(--wrn-color-surface); } .wrn-next--drag-and-drop > p { margin: 0; color: var(--wrn-color-muted); } .wrn-next--drag-and-drop > .wrn-next__items { display: flex; flex-wrap: wrap; gap: 0.5rem; } .wrn-next--drag-and-drop > .wrn-next__items > span { padding: 0.35rem 0.6rem; border-radius: var(--wrn-radius-sm); background: var(--wrn-color-surface-2); } /* Shared component foundation. */ .wrn-component { --wrn-component-color: var(--wrn-color-primary); --wrn-component-scale: 1; margin: 0; color: var(--wrn-color-text); font-family: var(--wrn-font-sans, inherit); } .wrn-component--color-primary { --wrn-component-color: var(--wrn-color-primary); } .wrn-component--color-secondary { --wrn-component-color: var(--wrn-color-secondary); } .wrn-component--color-success { --wrn-component-color: var(--wrn-color-success); } .wrn-component--color-warning { --wrn-component-color: var(--wrn-color-warning); } .wrn-component--color-danger { --wrn-component-color: var(--wrn-color-danger); } .wrn-component--color-info { --wrn-component-color: var(--wrn-color-info); } .wrn-component--size-xs { --wrn-component-scale: 0.78; } .wrn-component--size-sm { --wrn-component-scale: 0.88; } .wrn-component--size-default, .wrn-component--size-md { --wrn-component-scale: 1; } .wrn-component--size-lg { --wrn-component-scale: 1.14; } .wrn-component--size-xl { --wrn-component-scale: 1.28; } .wrn-component:not(.wrn-btn) { font-size: calc(1em * var(--wrn-component-scale)); } .wrn-component :is(a, button, input, select, textarea):focus-visible { outline-color: var(--wrn-component-color); } .wrn-component p { margin: 0; color: var(--wrn-color-muted); line-height: 1.6; } } }