Dropzone Primitive
Dropzone is a Starwind Runtime primitive in the form-value-control contract family. Astro and React share one semantic component API. React coordinates reactive state through controlled and default props plus callbacks. Astro renders initial state and coordinates later changes through DOM events and Runtime methods. Raw HTML uses Runtime attributes, DOM events, and imperative methods.
Anatomy
Use the Astro primitive adapter to render Dropzone anatomy with the Runtime wiring included.
---import { Dropzone } from "@starwind-ui/astro/dropzone";---
<Dropzone.Root> <Dropzone.Input /> <Dropzone.UploadIndicator>Drop files here</Dropzone.UploadIndicator> <Dropzone.LoadingIndicator>Uploading...</Dropzone.LoadingIndicator> <Dropzone.FilesList /></Dropzone.Root>Use the React primitive adapter when Dropzone state participates in React rendering.
import { Dropzone } from "@starwind-ui/react/dropzone";
export function Example() { return ( <Dropzone.Root> <Dropzone.Input /> <Dropzone.UploadIndicator>Drop files here</Dropzone.UploadIndicator> <Dropzone.LoadingIndicator>Uploading...</Dropzone.LoadingIndicator> <Dropzone.FilesList /> </Dropzone.Root> );}Render the Dropzone data-sw-* contract yourself, then initialize createDropzone.
<label data-sw-dropzone role="button"> <input data-sw-dropzone-input type="file" tabindex="-1" class="sr-only" /> <div data-sw-dropzone-upload-indicator>Drop files here</div> <div data-sw-dropzone-loading-indicator hidden>Uploading...</div> <div data-sw-dropzone-files-list></div></label>
<script type="module"> import { createDropzone } from "@starwind-ui/runtime/dropzone";
const root = document.querySelector("[data-sw-dropzone]"); if (root) { createDropzone(root); }</script>API Reference
Root
The main element that owns the Dropzone Runtime instance.
- Default element
- label
- Discovery hook
- data-sw-dropzone
- Role
- button
Props
disabled boolean false
- Description
- Disables the Root part.
- Kind
- option
- Targets
- -
- Full type
- boolean
isUploading boolean false
- Description
- Controls whether Dropzone is uploading.
- Kind
- control
- Targets
- root, uploadIndicator, loadingIndicator
- Full type
- boolean
- React
Use isUploading for controlled state.
isUploading
- Astro
Use isUploading for initial state and call setUploading for later updates.
isUploadingsetUploading
- Runtime / HTML
Use data-is-uploading for initial state and call setUploading for later updates.
data-is-uploadingsetUploading
onFilesChange (files: File[], details: DropzoneFilesChangeDetails) => void -
- Description
- Runs when selected files change for Dropzone.
- Kind
- callback
- Targets
- -
- Full type
- (files: File[], details: DropzoneFilesChangeDetails) => void
Events
filesChange onFilesChange files: File[]
- Description
- Fires when selected files change for Dropzone.
- DOM event
- starwind:files-change
- Details type
- DropzoneFilesChangeDetails
- Timing
- -
- Cancelable
- No
State
uploading boolean isUploading
- Description
- Tracks whether Dropzone is uploading files.
- Initial attribute
- data-is-uploading
- Runtime getter
- getUploading
- Runtime setter
- setUploading
- React
Use isUploading for controlled state.
isUploading
- Astro
Use isUploading for initial state and call setUploading for later updates.
isUploadingsetUploading
- Runtime / HTML
Use data-is-uploading for initial state and call setUploading for later updates.
data-is-uploadingsetUploading
Data Attributes
Runtime hooks
State
Metadata
Input
The native input synchronized by Dropzone.
- Default element
- input
- Discovery hook
- data-sw-dropzone-input
- Role
- -
Props
accept string -
- Description
- Limits which file types can be selected.
- Kind
- attribute
- Targets
- input
- Full type
- string
multiple boolean -
- Description
- Allows multiple Dropzone values to be selected.
- Kind
- attribute
- Targets
- input
- Full type
- boolean
name string -
- Description
- Sets the submitted form field name.
- Kind
- attribute
- Targets
- input
- Full type
- string
required boolean -
- Description
- Marks the form control as required.
- Kind
- attribute
- Targets
- input
- Full type
- boolean
Data Attributes
Runtime hooks
Metadata
Upload Indicator
Upload progress indicator shown by Dropzone.
- Default element
- div
- Discovery hook
- data-sw-dropzone-upload-indicator
- Role
- -
Props
isUploading boolean false
- Description
- Controls whether Dropzone is uploading.
- Kind
- control
- Targets
- root, uploadIndicator, loadingIndicator
- Full type
- boolean
- React
Use isUploading for controlled state.
isUploading
- Astro
Use isUploading for initial state and call setUploading for later updates.
isUploadingsetUploading
- Runtime / HTML
Use data-is-uploading for initial state and call setUploading for later updates.
data-is-uploadingsetUploading
State
uploading boolean isUploading
- Description
- Tracks whether Dropzone is uploading files.
- Initial attribute
- data-is-uploading
- Runtime getter
- getUploading
- Runtime setter
- setUploading
- React
Use isUploading for controlled state.
isUploading
- Astro
Use isUploading for initial state and call setUploading for later updates.
isUploadingsetUploading
- Runtime / HTML
Use data-is-uploading for initial state and call setUploading for later updates.
data-is-uploadingsetUploading
Data Attributes
Runtime hooks
State
Loading Indicator
Loading indicator shown by Dropzone.
- Default element
- div
- Discovery hook
- data-sw-dropzone-loading-indicator
- Role
- -
Props
isUploading boolean false
- Description
- Controls whether Dropzone is uploading.
- Kind
- control
- Targets
- root, uploadIndicator, loadingIndicator
- Full type
- boolean
- React
Use isUploading for controlled state.
isUploading
- Astro
Use isUploading for initial state and call setUploading for later updates.
isUploadingsetUploading
- Runtime / HTML
Use data-is-uploading for initial state and call setUploading for later updates.
data-is-uploadingsetUploading
State
uploading boolean isUploading
- Description
- Tracks whether Dropzone is uploading files.
- Initial attribute
- data-is-uploading
- Runtime getter
- getUploading
- Runtime setter
- setUploading
- React
Use isUploading for controlled state.
isUploading
- Astro
Use isUploading for initial state and call setUploading for later updates.
isUploadingsetUploading
- Runtime / HTML
Use data-is-uploading for initial state and call setUploading for later updates.
data-is-uploadingsetUploading
Data Attributes
Runtime hooks
State
Files List
Lists the selected files for Dropzone.
- Default element
- div
- Discovery hook
- data-sw-dropzone-files-list
- Role
- -
Data Attributes
Runtime hooks
State
Runtime API
- Factory
createDropzone- Import
@starwind-ui/runtime/dropzone- Root hook
- root
data-sw-dropzone - Option props
- disabled, isUploading, onFilesChange
Option Lifecycles
| Option | Lifecycle |
|---|---|
| disabled | setter-backed |
| isUploading | setter-backed |
| onFilesChange | constructor-only |
Runtime Setters
Form Participation
| Fact | Value |
|---|---|
| Form props | accept, multiple, name, required |
| Hidden input | input (file) |
| Field integration | No |
Related Styled Components
Changelog
View version history v1.0.0 3 releases
v1.0.0
- Promoted this Primitive's vendoring version to the stable 1.0.0 baseline. Its existing API and Runtime behavior carry forward from the previous release.
v0.1.1
- Marked generated React Primitive files as client modules so vendored installs preserve client boundaries in React server frameworks.
v0.1.0
- Introduced drag-and-drop state, file-input coordination, acceptance checks, and file-change events.