DropZone
A drop zone is an area into which one or multiple objects can be dragged and dropped.
Vanilla CSS theme
This sets the 
--tint CSS variable used by the Vanilla CSS examples.Theme 
Drop or paste text or images here
Example
DropZone.tsx
DropZone.css
Example
DropZone.tsx
DropZone.css
Example
DropZone.tsx
DropZone.css
import {DropZone} from './DropZone';
import {Text} from 'react-aria-components';
import {useState} from 'react';
function Example() {
  let [content, setContent] = useState(null);
  return (
    <DropZone
      // Determine whether dragged content should be accepted.
      getDropOperation={types => (
        ['text/plain', 'image/jpeg', 'image/png', 'image.gif'].some(t => types.has(t))
          ? 'copy' 
          : 'cancel'
      )}
      onDrop={async (event) => {
        // Find the first accepted item.
        let item = event.items.find(item => (
          (item.kind === 'text' && item.types.has('text/plain')) ||
          (item.kind === 'file' && item.type.startsWith('image/'))
        ));
        if (item?.kind === 'text') {
          let text = await item.getText('text/plain');
          setContent(text);
        } else if (item?.kind === 'file') {
          let file = await item.getFile();
          let url = URL.createObjectURL(file);
          setContent(<img src={url} alt={item.name} style={{maxHeight: 100, maxWidth: '100%'}} />)
        }
      }}>
      <Text slot="label">
        {content || "Drop or paste text or images here"}
      </Text>
    </DropZone>
  );
}
Examples
API
<DropZone>
  <Text slot="label" />
</DropZone>
DropZone
| Name | Type | |
|---|---|---|
| getDropOperation |  | |
| A function returning the drop operation to be performed when items matching the given types are dropped on the drop target. | ||
| isDisabled | boolean | |
| Whether the drop target is disabled. If true, the drop target will not accept any drops. | ||
| children | ChildrenOrFunction | |
| The children of the component. A function may be provided to alter the children based on component state. | ||
Default className: react-aria-DropZone
| Render Prop | CSS Selector | 
|---|---|
| isHovered | CSS Selector: [data-hovered]
 | 
| Whether the dropzone is currently hovered with a mouse. | |
| isFocused | CSS Selector: [data-focused]
 | 
| Whether the dropzone is focused, either via a mouse or keyboard. | |
| isFocusVisible | CSS Selector: [data-focus-visible]
 | 
| Whether the dropzone is keyboard focused. | |
| isDropTarget | CSS Selector: [data-drop-target]
 | 
| Whether the dropzone is the drop target. | |
| isDisabled | CSS Selector: [data-disabled]
 | 
| Whether the dropzone is disabled. | |
