refactor(dropzone): extract DropzoneInner and unify state management with zustand (#165)

Simplified Dropzone implementation by extracting inner logic to a new component, `DropzoneInner`. Replaced local dropzone state logic with centralized state management using zustand. Adjusted API exports and props accordingly for consistency and maintainability.
This commit is contained in:
dswbx
2025-04-25 22:37:28 -07:00
committed by GitHub
parent b60fd01960
commit eec8b64bae
15 changed files with 664 additions and 389 deletions
+3 -4
View File
@@ -52,7 +52,7 @@ export default function UserAvatar() {
You can also customize the rendering of the media items and its uploading by passing a react element as a child. Here is an example of a custom `Media.Dropzone` that renders an user avatar (styled using tailwind):
```tsx
import { Media, useMediaDropzone } from "bknd/elements";
import { Media, useMediaDropzone, useMediaDropzoneState } from "bknd/elements";
export default function CustomUserAvatar() {
return <Media.Dropzone
@@ -68,11 +68,10 @@ function CustomUserAvatar() {
const {
wrapperRef,
inputProps,
state: { files, isOver, isOverAccepted, showPlaceholder },
showPlaceholder,
actions: { openFileInput }
} = useMediaDropzone();
const file = files[0];
const { files: [ file ], isOver, isOverAccepted } = useMediaDropzoneState();
return (
<div