@zayne-labs/ui-react 0.10.7 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/esm/{await-Da5w2vIc.js → await-DDgVzpvI.js} +8 -7
  2. package/dist/esm/{await-Da5w2vIc.js.map → await-DDgVzpvI.js.map} +1 -1
  3. package/dist/esm/common/await/index.d.ts +3 -3
  4. package/dist/esm/common/await/index.js +1 -1
  5. package/dist/esm/common/error-boundary/index.d.ts +1 -1
  6. package/dist/esm/common/for/index.d.ts +1 -1
  7. package/dist/esm/common/index.d.ts +5 -5
  8. package/dist/esm/common/index.js +1 -1
  9. package/dist/esm/common/slot/index.d.ts +1 -1
  10. package/dist/esm/common/suspense-with-boundary/index.d.ts +2 -2
  11. package/dist/esm/{drop-zone-C9VpKJAD.js → drop-zone-FkkbzZ3j.js} +26 -20
  12. package/dist/esm/drop-zone-FkkbzZ3j.js.map +1 -0
  13. package/dist/esm/{index-B4YvRWlE.d.ts → index-BJUTFSec.d.ts} +19 -19
  14. package/dist/esm/{index-CuJVxLEc.d.ts → index-BeCCgTjL.d.ts} +3 -3
  15. package/dist/esm/{index-BAywimP3.d.ts → index-C0L6V4Zq.d.ts} +3 -3
  16. package/dist/esm/{index-BT0UvcRp.d.ts → index-DFHOx2Pf.d.ts} +3 -3
  17. package/dist/esm/{index-C889t8UO.d.ts → index-DXwAMkn0.d.ts} +12 -8
  18. package/dist/esm/{index-BWD8WVO-.d.ts → index-RpfwCCWX.d.ts} +33 -28
  19. package/dist/esm/{index-DVBtz0VB.d.ts → index-bD-GMufy.d.ts} +9 -9
  20. package/dist/esm/{index-Dpt8KDv1.d.ts → index-ipYGGqwN.d.ts} +10 -10
  21. package/dist/esm/{index-ATxxr1XS.d.ts → index-lw5txqar.d.ts} +4 -4
  22. package/dist/esm/ui/card/index.d.ts +1 -1
  23. package/dist/esm/ui/carousel/index.d.ts +1 -1
  24. package/dist/esm/ui/carousel/index.js +1 -1
  25. package/dist/esm/ui/drop-zone/index.d.ts +1 -1
  26. package/dist/esm/ui/drop-zone/index.js +2 -2
  27. package/dist/esm/ui/form/index.d.ts +1 -1
  28. package/dist/esm/ui/index.d.ts +4 -4
  29. package/dist/esm/ui/index.js +2 -2
  30. package/package.json +1 -1
  31. package/dist/esm/drop-zone-C9VpKJAD.js.map +0 -1
@@ -54,12 +54,14 @@ function AwaitRootInner(props) {
54
54
  }
55
55
  function AwaitSuccess(props) {
56
56
  const { children } = props;
57
- if (!isFunction(children)) return children;
58
- const { result } = useAwaitContext();
59
- return children(result);
57
+ if (isFunction(children)) {
58
+ const { result } = useAwaitContext();
59
+ return children(result);
60
+ }
61
+ return children;
60
62
  }
61
63
  Object.assign(AwaitSuccess, withSlotNameAndSymbol("default"));
62
- function AwaitError(props) {
64
+ const AwaitError = withSlotNameAndSymbol("error", (props) => {
63
65
  const { asChild, children } = props;
64
66
  const errorBoundaryContext = useErrorBoundaryContext();
65
67
  const Component$1 = asChild ? SlotRoot : Fragment;
@@ -68,8 +70,7 @@ function AwaitError(props) {
68
70
  ...asChild && errorBoundaryContext,
69
71
  children: resolvedChildren
70
72
  });
71
- }
72
- Object.assign(AwaitError, withSlotNameAndSymbol("error"));
73
+ });
73
74
  const AwaitPending = withSlotNameAndSymbol("pending");
74
75
 
75
76
  //#endregion
@@ -83,4 +84,4 @@ var await_parts_exports = __export({
83
84
 
84
85
  //#endregion
85
86
  export { AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, await_parts_exports, useAwaitContext };
86
- //# sourceMappingURL=await-Da5w2vIc.js.map
87
+ //# sourceMappingURL=await-DDgVzpvI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"await-Da5w2vIc.js","names":["ReactFragment","Component","Slot.Root"],"sources":["../../src/components/common/await/await-context.ts","../../src/components/common/await/await.tsx","../../src/components/common/await/await-parts.ts"],"sourcesContent":["import { createCustomContext } from \"@zayne-labs/toolkit-react\";\n\nexport type AwaitContextType<TValue = unknown> = {\n\tpromise: Promise<TValue>;\n\tresult: TValue;\n};\n\nconst [AwaitContextProvider, useAwaitContextImpl] = createCustomContext<AwaitContextType>({\n\thookName: \"useAwaitContext\",\n\tname: \"AwaitContext\",\n\tproviderName: \"AwaitInner\",\n});\n\nconst useAwaitContext = <TValue>() => useAwaitContextImpl() as AwaitContextType<TValue>;\n\nexport { useAwaitContext, AwaitContextProvider };\n","\"use client\";\n\nimport {\n\ttype GetSlotComponentProps,\n\tgetSlotMap,\n\twithSlotNameAndSymbol,\n} from \"@zayne-labs/toolkit-react/utils\";\nimport { isFunction } from \"@zayne-labs/toolkit-type-helpers\";\nimport * as React from \"react\";\nimport { Fragment as ReactFragment, Suspense, use, useMemo } from \"react\";\nimport { ErrorBoundary, type ErrorBoundaryProps, useErrorBoundaryContext } from \"../error-boundary\";\nimport { Slot } from \"../slot\";\nimport type { SuspenseWithBoundaryProps } from \"../suspense-with-boundary\";\nimport { AwaitContextProvider, useAwaitContext } from \"./await-context\";\n\ntype RenderPropFn<TValue> = (result: TValue) => React.ReactNode;\n\ntype ChildrenType<TValue> = React.ReactNode | RenderPropFn<TValue>;\n\ntype AwaitRootProps<TValue> = Pick<SuspenseWithBoundaryProps, \"errorFallback\" | \"fallback\"> & {\n\tasChild?: boolean;\n\tchildren: ChildrenType<TValue>;\n\tpromise: Promise<TValue>;\n\twithErrorBoundary?: boolean;\n\twithSuspense?: boolean;\n};\n\nexport function AwaitRoot<TValue>(props: AwaitRootProps<TValue>) {\n\tconst {\n\t\tchildren,\n\t\terrorFallback,\n\t\tfallback,\n\t\twithErrorBoundary = true,\n\t\twithSuspense = true,\n\t\t...restOfProps\n\t} = props;\n\n\tconst WithErrorBoundary = withErrorBoundary ? ErrorBoundary : ReactFragment;\n\tconst WithSuspense = withSuspense ? Suspense : ReactFragment;\n\n\tconst slots =\n\t\t!isFunction(children) ?\n\t\t\tgetSlotMap<SlotComponentProps>(children)\n\t\t:\t({ default: children } as unknown as ReturnType<typeof getSlotMap<SlotComponentProps>>);\n\n\tconst selectedPendingFallback = slots.pending ?? fallback;\n\tconst selectedErrorFallback = slots.error ?? errorFallback;\n\n\treturn (\n\t\t<WithErrorBoundary {...(Boolean(selectedErrorFallback) && { fallback: selectedErrorFallback })}>\n\t\t\t<WithSuspense {...(Boolean(selectedPendingFallback) && { fallback: selectedPendingFallback })}>\n\t\t\t\t<AwaitRootInner {...restOfProps}>{slots.default}</AwaitRootInner>\n\t\t\t</WithSuspense>\n\t\t</WithErrorBoundary>\n\t);\n}\n\ntype AwaitRootInnerProps<TValue> = Pick<AwaitRootProps<TValue>, \"asChild\" | \"children\" | \"promise\">;\n\nfunction AwaitRootInner<TValue>(props: AwaitRootInnerProps<TValue>) {\n\tconst { asChild, children, promise } = props;\n\n\tconst result = use(promise);\n\n\tconst resolvedChildren = isFunction(children) ? children(result) : children;\n\n\tconst Component = asChild ? Slot.Root : ReactFragment;\n\n\tconst contextValue = useMemo(() => ({ promise, result }), [promise, result]);\n\n\treturn (\n\t\t<AwaitContextProvider value={contextValue}>\n\t\t\t<Component {...(asChild && contextValue)}>{resolvedChildren}</Component>\n\t\t</AwaitContextProvider>\n\t);\n}\n\ntype SlotComponentProps = AwaitErrorProps | AwaitPendingProps | AwaitSuccessProps;\n\ntype AwaitSuccessProps<TValue = unknown> = GetSlotComponentProps<\"default\", ChildrenType<TValue>>;\n\nexport function AwaitSuccess<TPromiseOrValue, TValue = Awaited<TPromiseOrValue>>(\n\tprops: Pick<AwaitSuccessProps<TValue>, \"children\">\n) {\n\tconst { children } = props;\n\n\tif (!isFunction(children)) {\n\t\treturn children;\n\t}\n\n\t// eslint-disable-next-line react-hooks/rules-of-hooks -- This hook only uses `use` under the hood so this is safe\n\tconst { result } = useAwaitContext<TValue>();\n\n\treturn children(result);\n}\n\nObject.assign(AwaitSuccess, withSlotNameAndSymbol<AwaitSuccessProps>(\"default\"));\n\ntype AwaitErrorProps = GetSlotComponentProps<\"error\", ErrorBoundaryProps[\"fallback\"]>;\n\nexport function AwaitError(props: AwaitErrorProps & { asChild?: boolean }) {\n\tconst { asChild, children } = props;\n\n\tconst errorBoundaryContext = useErrorBoundaryContext();\n\n\tconst Component = asChild ? Slot.Root : ReactFragment;\n\n\tconst resolvedChildren = isFunction(children) ? children(errorBoundaryContext) : children;\n\n\treturn <Component {...(asChild && errorBoundaryContext)}>{resolvedChildren}</Component>;\n}\n\nObject.assign(AwaitError, withSlotNameAndSymbol<AwaitErrorProps>(\"error\"));\n\ntype AwaitPendingProps = GetSlotComponentProps<\"pending\", React.SuspenseProps[\"fallback\"]>;\n\nexport const AwaitPending = withSlotNameAndSymbol<AwaitPendingProps>(\"pending\");\n","export {\n\tAwaitRoot as Root,\n\tAwaitError as Error,\n\tAwaitPending as Pending,\n\tAwaitSuccess as Success,\n} from \"./await\";\n"],"mappings":";;;;;;;;;;AAOA,MAAM,CAAC,sBAAsB,uBAAuB,oBAAsC;CACzF,UAAU;CACV,MAAM;CACN,cAAc;CACd,CAAC;AAEF,MAAM,wBAAgC,qBAAqB;;;;ACc3D,SAAgB,UAAkB,OAA+B;CAChE,MAAM,EACL,UACA,eACA,UACA,oBAAoB,MACpB,eAAe,KACf,GAAG,gBACA;CAEJ,MAAM,oBAAoB,oBAAoB,gBAAgBA;CAC9D,MAAM,eAAe,eAAe,WAAWA;CAE/C,MAAM,QACL,CAAC,WAAW,SAAS,GACpB,WAA+B,SAAS,GACtC,EAAE,SAAS,UAAU;CAEzB,MAAM,0BAA0B,MAAM,WAAW;CACjD,MAAM,wBAAwB,MAAM,SAAS;AAE7C,QACC,oBAAC;EAAkB,GAAK,QAAQ,sBAAsB,IAAI,EAAE,UAAU,uBAAuB;YAC5F,oBAAC;GAAa,GAAK,QAAQ,wBAAwB,IAAI,EAAE,UAAU,yBAAyB;aAC3F,oBAAC;IAAe,GAAI;cAAc,MAAM;KAAyB;IACnD;GACI;;AAMtB,SAAS,eAAuB,OAAoC;CACnE,MAAM,EAAE,SAAS,UAAU,YAAY;CAEvC,MAAM,SAAS,IAAI,QAAQ;CAE3B,MAAM,mBAAmB,WAAW,SAAS,GAAG,SAAS,OAAO,GAAG;CAEnE,MAAMC,cAAY,UAAUC,WAAYF;CAExC,MAAM,eAAe,eAAe;EAAE;EAAS;EAAQ,GAAG,CAAC,SAAS,OAAO,CAAC;AAE5E,QACC,oBAAC;EAAqB,OAAO;YAC5B,oBAACC;GAAU,GAAK,WAAW;aAAgB;IAA6B;GAClD;;AAQzB,SAAgB,aACf,OACC;CACD,MAAM,EAAE,aAAa;AAErB,KAAI,CAAC,WAAW,SAAS,CACxB,QAAO;CAIR,MAAM,EAAE,WAAW,iBAAyB;AAE5C,QAAO,SAAS,OAAO;;AAGxB,OAAO,OAAO,cAAc,sBAAyC,UAAU,CAAC;AAIhF,SAAgB,WAAW,OAAgD;CAC1E,MAAM,EAAE,SAAS,aAAa;CAE9B,MAAM,uBAAuB,yBAAyB;CAEtD,MAAMA,cAAY,UAAUC,WAAYF;CAExC,MAAM,mBAAmB,WAAW,SAAS,GAAG,SAAS,qBAAqB,GAAG;AAEjF,QAAO,oBAACC;EAAU,GAAK,WAAW;YAAwB;GAA6B;;AAGxF,OAAO,OAAO,YAAY,sBAAuC,QAAQ,CAAC;AAI1E,MAAa,eAAe,sBAAyC,UAAU"}
1
+ {"version":3,"file":"await-DDgVzpvI.js","names":["ReactFragment","Component","Slot.Root"],"sources":["../../src/components/common/await/await-context.ts","../../src/components/common/await/await.tsx","../../src/components/common/await/await-parts.ts"],"sourcesContent":["import { createCustomContext } from \"@zayne-labs/toolkit-react\";\n\nexport type AwaitContextType<TValue = unknown> = {\n\tpromise: Promise<TValue>;\n\tresult: TValue;\n};\n\nconst [AwaitContextProvider, useAwaitContextImpl] = createCustomContext<AwaitContextType>({\n\thookName: \"useAwaitContext\",\n\tname: \"AwaitContext\",\n\tproviderName: \"AwaitInner\",\n});\n\nconst useAwaitContext = <TValue>() => useAwaitContextImpl() as AwaitContextType<TValue>;\n\nexport { useAwaitContext, AwaitContextProvider };\n","\"use client\";\n\nimport {\n\ttype GetSlotComponentProps,\n\tgetSlotMap,\n\twithSlotNameAndSymbol,\n} from \"@zayne-labs/toolkit-react/utils\";\nimport { isFunction } from \"@zayne-labs/toolkit-type-helpers\";\nimport * as React from \"react\";\nimport { Fragment as ReactFragment, Suspense, use, useMemo } from \"react\";\nimport { ErrorBoundary, type ErrorBoundaryProps, useErrorBoundaryContext } from \"../error-boundary\";\nimport { Slot } from \"../slot\";\nimport type { SuspenseWithBoundaryProps } from \"../suspense-with-boundary\";\nimport { AwaitContextProvider, useAwaitContext } from \"./await-context\";\n\ntype RenderPropFn<TValue> = (result: TValue) => React.ReactNode;\n\ntype ChildrenType<TValue> = React.ReactNode | RenderPropFn<TValue>;\n\ntype AwaitRootProps<TValue> = Pick<SuspenseWithBoundaryProps, \"errorFallback\" | \"fallback\"> & {\n\tasChild?: boolean;\n\tchildren: ChildrenType<TValue>;\n\tpromise: Promise<TValue>;\n\twithErrorBoundary?: boolean;\n\twithSuspense?: boolean;\n};\n\nexport function AwaitRoot<TValue>(props: AwaitRootProps<TValue>) {\n\tconst {\n\t\tchildren,\n\t\terrorFallback,\n\t\tfallback,\n\t\twithErrorBoundary = true,\n\t\twithSuspense = true,\n\t\t...restOfProps\n\t} = props;\n\n\tconst WithErrorBoundary = withErrorBoundary ? ErrorBoundary : ReactFragment;\n\tconst WithSuspense = withSuspense ? Suspense : ReactFragment;\n\n\tconst slots =\n\t\t!isFunction(children) ?\n\t\t\tgetSlotMap<SlotComponentProps>(children)\n\t\t:\t({ default: children } as unknown as ReturnType<typeof getSlotMap<SlotComponentProps>>);\n\n\tconst selectedPendingFallback = slots.pending ?? fallback;\n\tconst selectedErrorFallback = slots.error ?? errorFallback;\n\n\treturn (\n\t\t<WithErrorBoundary {...(Boolean(selectedErrorFallback) && { fallback: selectedErrorFallback })}>\n\t\t\t<WithSuspense {...(Boolean(selectedPendingFallback) && { fallback: selectedPendingFallback })}>\n\t\t\t\t<AwaitRootInner {...restOfProps}>{slots.default}</AwaitRootInner>\n\t\t\t</WithSuspense>\n\t\t</WithErrorBoundary>\n\t);\n}\n\ntype AwaitRootInnerProps<TValue> = Pick<AwaitRootProps<TValue>, \"asChild\" | \"children\" | \"promise\">;\n\nfunction AwaitRootInner<TValue>(props: AwaitRootInnerProps<TValue>) {\n\tconst { asChild, children, promise } = props;\n\n\tconst result = use(promise);\n\n\tconst resolvedChildren = isFunction(children) ? children(result) : children;\n\n\tconst Component = asChild ? Slot.Root : ReactFragment;\n\n\tconst contextValue = useMemo(() => ({ promise, result }), [promise, result]);\n\n\treturn (\n\t\t<AwaitContextProvider value={contextValue}>\n\t\t\t<Component {...(asChild && contextValue)}>{resolvedChildren}</Component>\n\t\t</AwaitContextProvider>\n\t);\n}\n\ntype SlotComponentProps = AwaitErrorProps | AwaitPendingProps | AwaitSuccessProps;\n\ntype AwaitSuccessProps<TValue = unknown> = GetSlotComponentProps<\"default\", ChildrenType<TValue>>;\n\nexport function AwaitSuccess<TPromiseOrValue, TValue = Awaited<TPromiseOrValue>>(\n\tprops: Pick<AwaitSuccessProps<TValue>, \"children\">\n) {\n\tconst { children } = props;\n\n\tif (isFunction(children)) {\n\t\t// eslint-disable-next-line react-hooks/rules-of-hooks -- This hook only uses `use` under the hood so this is safe\n\t\tconst { result } = useAwaitContext<TValue>();\n\n\t\treturn children(result);\n\t}\n\n\treturn children;\n}\n\nObject.assign(AwaitSuccess, withSlotNameAndSymbol<AwaitSuccessProps>(\"default\"));\n\ntype AwaitErrorProps = GetSlotComponentProps<\"error\", ErrorBoundaryProps[\"fallback\"]>;\n\nexport const AwaitError = withSlotNameAndSymbol<AwaitErrorProps, { asChild?: boolean }>(\n\t\"error\",\n\t(props) => {\n\t\tconst { asChild, children } = props;\n\n\t\tconst errorBoundaryContext = useErrorBoundaryContext();\n\n\t\tconst Component = asChild ? Slot.Root : ReactFragment;\n\n\t\tconst resolvedChildren = isFunction(children) ? children(errorBoundaryContext) : children;\n\n\t\treturn <Component {...(asChild && errorBoundaryContext)}>{resolvedChildren}</Component>;\n\t}\n);\n\ntype AwaitPendingProps = GetSlotComponentProps<\"pending\", React.SuspenseProps[\"fallback\"]>;\n\nexport const AwaitPending = withSlotNameAndSymbol<AwaitPendingProps>(\"pending\");\n","export {\n\tAwaitRoot as Root,\n\tAwaitError as Error,\n\tAwaitPending as Pending,\n\tAwaitSuccess as Success,\n} from \"./await\";\n"],"mappings":";;;;;;;;;;AAOA,MAAM,CAAC,sBAAsB,uBAAuB,oBAAsC;CACzF,UAAU;CACV,MAAM;CACN,cAAc;CACd,CAAC;AAEF,MAAM,wBAAgC,qBAAqB;;;;ACc3D,SAAgB,UAAkB,OAA+B;CAChE,MAAM,EACL,UACA,eACA,UACA,oBAAoB,MACpB,eAAe,KACf,GAAG,gBACA;CAEJ,MAAM,oBAAoB,oBAAoB,gBAAgBA;CAC9D,MAAM,eAAe,eAAe,WAAWA;CAE/C,MAAM,QACL,CAAC,WAAW,SAAS,GACpB,WAA+B,SAAS,GACtC,EAAE,SAAS,UAAU;CAEzB,MAAM,0BAA0B,MAAM,WAAW;CACjD,MAAM,wBAAwB,MAAM,SAAS;AAE7C,QACC,oBAAC;EAAkB,GAAK,QAAQ,sBAAsB,IAAI,EAAE,UAAU,uBAAuB;YAC5F,oBAAC;GAAa,GAAK,QAAQ,wBAAwB,IAAI,EAAE,UAAU,yBAAyB;aAC3F,oBAAC;IAAe,GAAI;cAAc,MAAM;KAAyB;IACnD;GACI;;AAMtB,SAAS,eAAuB,OAAoC;CACnE,MAAM,EAAE,SAAS,UAAU,YAAY;CAEvC,MAAM,SAAS,IAAI,QAAQ;CAE3B,MAAM,mBAAmB,WAAW,SAAS,GAAG,SAAS,OAAO,GAAG;CAEnE,MAAMC,cAAY,UAAUC,WAAYF;CAExC,MAAM,eAAe,eAAe;EAAE;EAAS;EAAQ,GAAG,CAAC,SAAS,OAAO,CAAC;AAE5E,QACC,oBAAC;EAAqB,OAAO;YAC5B,oBAACC;GAAU,GAAK,WAAW;aAAgB;IAA6B;GAClD;;AAQzB,SAAgB,aACf,OACC;CACD,MAAM,EAAE,aAAa;AAErB,KAAI,WAAW,SAAS,EAAE;EAEzB,MAAM,EAAE,WAAW,iBAAyB;AAE5C,SAAO,SAAS,OAAO;;AAGxB,QAAO;;AAGR,OAAO,OAAO,cAAc,sBAAyC,UAAU,CAAC;AAIhF,MAAa,aAAa,sBACzB,UACC,UAAU;CACV,MAAM,EAAE,SAAS,aAAa;CAE9B,MAAM,uBAAuB,yBAAyB;CAEtD,MAAMA,cAAY,UAAUC,WAAYF;CAExC,MAAM,mBAAmB,WAAW,SAAS,GAAG,SAAS,qBAAqB,GAAG;AAEjF,QAAO,oBAACC;EAAU,GAAK,WAAW;YAAwB;GAA6B;EAExF;AAID,MAAa,eAAe,sBAAyC,UAAU"}
@@ -1,4 +1,4 @@
1
- import "../../index-BAywimP3.js";
2
- import "../../index-ATxxr1XS.js";
3
- import { AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, await_parts_d_exports, useAwaitContext } from "../../index-C889t8UO.js";
1
+ import "../../index-C0L6V4Zq.js";
2
+ import "../../index-lw5txqar.js";
3
+ import { AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, await_parts_d_exports, useAwaitContext } from "../../index-DXwAMkn0.js";
4
4
  export { await_parts_d_exports as Await, AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, useAwaitContext };
@@ -3,6 +3,6 @@
3
3
 
4
4
  import "../../error-boundary-y9Samt_s.js";
5
5
  import "../../slot-WVWfOlr3.js";
6
- import { AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, await_parts_exports, useAwaitContext } from "../../await-Da5w2vIc.js";
6
+ import { AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, await_parts_exports, useAwaitContext } from "../../await-DDgVzpvI.js";
7
7
 
8
8
  export { await_parts_exports as Await, AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, useAwaitContext };
@@ -1,2 +1,2 @@
1
- import { ErrorBoundary, ErrorBoundaryContextType, ErrorBoundaryProps, FallbackProps, useErrorBoundary, useErrorBoundaryContext } from "../../index-BAywimP3.js";
1
+ import { ErrorBoundary, ErrorBoundaryContextType, ErrorBoundaryProps, FallbackProps, useErrorBoundary, useErrorBoundaryContext } from "../../index-C0L6V4Zq.js";
2
2
  export { ErrorBoundary, ErrorBoundaryContextType, ErrorBoundaryProps, FallbackProps, useErrorBoundary, useErrorBoundaryContext };
@@ -1,2 +1,2 @@
1
- import { For, ForRenderProps, ForWithWrapper, getElementList } from "../../index-BT0UvcRp.js";
1
+ import { For, ForRenderProps, ForWithWrapper, getElementList } from "../../index-DFHOx2Pf.js";
2
2
  export { For, ForRenderProps, ForWithWrapper, getElementList };
@@ -1,9 +1,9 @@
1
- import { ErrorBoundary } from "../index-BAywimP3.js";
2
- import { SuspenseWithBoundary } from "../index-ATxxr1XS.js";
3
- import { await_parts_d_exports } from "../index-C889t8UO.js";
4
- import { For, ForWithWrapper } from "../index-BT0UvcRp.js";
1
+ import { ErrorBoundary } from "../index-C0L6V4Zq.js";
2
+ import { SuspenseWithBoundary } from "../index-lw5txqar.js";
3
+ import { await_parts_d_exports } from "../index-DXwAMkn0.js";
4
+ import { For, ForWithWrapper } from "../index-DFHOx2Pf.js";
5
5
  import { show_parts_d_exports } from "../index-BsGxDKlt.js";
6
- import { slot_parts_d_exports } from "../index-CuJVxLEc.js";
6
+ import { slot_parts_d_exports } from "../index-BeCCgTjL.js";
7
7
  import { switch_parts_d_exports } from "../index-CffEFE66.js";
8
8
  import { Teleport } from "../index-CZjeBSoQ.js";
9
9
  export { await_parts_d_exports as Await, ErrorBoundary, For, ForWithWrapper, show_parts_d_exports as Show, slot_parts_d_exports as Slot, SuspenseWithBoundary, switch_parts_d_exports as Switch, Teleport };
@@ -1,6 +1,6 @@
1
1
  import { ErrorBoundary } from "../error-boundary-y9Samt_s.js";
2
2
  import { slot_parts_exports } from "../slot-WVWfOlr3.js";
3
- import { await_parts_exports } from "../await-Da5w2vIc.js";
3
+ import { await_parts_exports } from "../await-DDgVzpvI.js";
4
4
  import { For, ForWithWrapper } from "../for-DK5rEY_m.js";
5
5
  import { show_parts_exports } from "../show-N1ZXBhoA.js";
6
6
  import { SuspenseWithBoundary } from "../suspense-with-boundary-D-1NYDV4.js";
@@ -1,2 +1,2 @@
1
- import { SlotRoot, SlotSlottable, slot_parts_d_exports } from "../../index-CuJVxLEc.js";
1
+ import { SlotRoot, SlotSlottable, slot_parts_d_exports } from "../../index-BeCCgTjL.js";
2
2
  export { slot_parts_d_exports as Slot, SlotRoot, SlotSlottable };
@@ -1,3 +1,3 @@
1
- import "../../index-BAywimP3.js";
2
- import { SuspenseWithBoundary, SuspenseWithBoundaryProps } from "../../index-ATxxr1XS.js";
1
+ import "../../index-C0L6V4Zq.js";
2
+ import { SuspenseWithBoundary, SuspenseWithBoundaryProps } from "../../index-lw5txqar.js";
3
3
  export { SuspenseWithBoundary, SuspenseWithBoundaryProps };
@@ -883,39 +883,45 @@ function DropZoneFileItemPreview(props) {
883
883
  const { propGetters } = useDropZoneRootContext();
884
884
  const fileState = fileStateProp ?? fileItemContextValue?.fileState;
885
885
  if (!fileState) return null;
886
+ const fileType = fileState.file.type ?? "";
887
+ const fileExtension = fileState.file.name?.split(".").pop()?.toLowerCase() ?? "";
886
888
  const Component$1 = asChild ? SlotRoot : Element;
887
- const resolvedChildren = isFunction(children) ? children({ fileState }) : children;
889
+ const resolvedChildren = isFunction(children) ? children({
890
+ fileExtension,
891
+ fileState,
892
+ fileType
893
+ }) : children;
888
894
  return /* @__PURE__ */ jsxs(Component$1, {
889
895
  ...propGetters.getFileItemPreviewProps(restOfProps),
890
896
  children: [renderPreview && getFilePreviewOrIcon({
897
+ fileExtension,
891
898
  fileState,
899
+ fileType,
892
900
  renderPreview
893
901
  }), resolvedChildren]
894
902
  });
895
903
  }
896
904
  const getFilePreviewOrIcon = (context) => {
897
- const { fileState, renderPreview } = context;
898
- const type = fileState?.file.type;
899
- const extension = fileState?.file.name?.split(".").pop()?.toLowerCase() ?? "";
900
- const renderPreviewObject = isFunction(renderPreview) ? renderPreview({ fileState }) : {};
901
- const getDefaultPreview = () => {
902
- return renderPreviewObject.default?.node ?? /* @__PURE__ */ jsx(FileIcon, { className: renderPreviewObject.default?.className });
903
- };
904
- if (!type) return getDefaultPreview();
905
+ const { fileExtension, fileState, fileType, renderPreview } = context;
906
+ const renderPreviewObject = isFunction(renderPreview) ? renderPreview({
907
+ fileExtension,
908
+ fileState,
909
+ fileType
910
+ }) : {};
905
911
  switch (true) {
906
- case type.startsWith("image/"): return renderPreviewObject.image?.node ?? /* @__PURE__ */ jsx("img", {
912
+ case fileType.startsWith("image/"): return renderPreviewObject.image?.node ?? /* @__PURE__ */ jsx("img", {
907
913
  src: fileState.preview,
908
- alt: fileState.file.name,
914
+ alt: fileState.file.name ?? "",
909
915
  className: cnMerge("size-full object-cover", renderPreviewObject.image?.className)
910
916
  });
911
- case type.startsWith("video/"): return renderPreviewObject.video?.node ?? /* @__PURE__ */ jsx(FileVideoIcon, { className: cnMerge("size-full object-cover", renderPreviewObject.video?.className) });
912
- case type.startsWith("audio/"): return renderPreviewObject.audio?.node ?? /* @__PURE__ */ jsx(FileAudioIcon, { className: cnMerge("size-full object-cover", renderPreviewObject.audio?.className) });
913
- case type.startsWith("text/") || [
917
+ case fileType.startsWith("video/"): return renderPreviewObject.video?.node ?? /* @__PURE__ */ jsx(FileVideoIcon, { className: cnMerge("size-full object-cover", renderPreviewObject.video?.className) });
918
+ case fileType.startsWith("audio/"): return renderPreviewObject.audio?.node ?? /* @__PURE__ */ jsx(FileAudioIcon, { className: cnMerge("size-full object-cover", renderPreviewObject.audio?.className) });
919
+ case fileType.startsWith("text/") || [
914
920
  "md",
915
921
  "pdf",
916
922
  "rtf",
917
923
  "txt"
918
- ].includes(extension): return renderPreviewObject.text?.node ?? /* @__PURE__ */ jsx(FileTextIcon, { className: renderPreviewObject.text?.className });
924
+ ].includes(fileExtension): return renderPreviewObject.text?.node ?? /* @__PURE__ */ jsx(FileTextIcon, { className: renderPreviewObject.text?.className });
919
925
  case [
920
926
  "c",
921
927
  "cpp",
@@ -932,7 +938,7 @@ const getFilePreviewOrIcon = (context) => {
932
938
  "ts",
933
939
  "tsx",
934
940
  "xml"
935
- ].includes(extension): return renderPreviewObject.code?.node ?? /* @__PURE__ */ jsx(FileCodeIcon, { className: renderPreviewObject.code?.className });
941
+ ].includes(fileExtension): return renderPreviewObject.code?.node ?? /* @__PURE__ */ jsx(FileCodeIcon, { className: renderPreviewObject.code?.className });
936
942
  case [
937
943
  "7z",
938
944
  "bz2",
@@ -940,7 +946,7 @@ const getFilePreviewOrIcon = (context) => {
940
946
  "rar",
941
947
  "tar",
942
948
  "zip"
943
- ].includes(extension): return renderPreviewObject.archive?.node ?? /* @__PURE__ */ jsx(FileArchiveIcon, { className: renderPreviewObject.archive?.className });
949
+ ].includes(fileExtension): return renderPreviewObject.archive?.node ?? /* @__PURE__ */ jsx(FileArchiveIcon, { className: renderPreviewObject.archive?.className });
944
950
  case [
945
951
  "apk",
946
952
  "app",
@@ -948,8 +954,8 @@ const getFilePreviewOrIcon = (context) => {
948
954
  "exe",
949
955
  "msi",
950
956
  "rpm"
951
- ].includes(extension): return renderPreviewObject.executable?.node ?? /* @__PURE__ */ jsx(FileCogIcon, { className: renderPreviewObject.executable?.className });
952
- default: return getDefaultPreview();
957
+ ].includes(fileExtension): return renderPreviewObject.executable?.node ?? /* @__PURE__ */ jsx(FileCogIcon, { className: renderPreviewObject.executable?.className });
958
+ default: return renderPreviewObject.default?.node ?? /* @__PURE__ */ jsx(FileIcon, { className: renderPreviewObject.default?.className });
953
959
  }
954
960
  };
955
961
  function DropZoneFileItemMetadata(props) {
@@ -1010,4 +1016,4 @@ var drop_zone_parts_exports = __export({
1010
1016
 
1011
1017
  //#endregion
1012
1018
  export { DropZoneArea, DropZoneContainer, DropZoneContext, DropZoneError, DropZoneFileClear, DropZoneFileItem, DropZoneFileItemDelete, DropZoneFileItemMetadata, DropZoneFileItemPreview, DropZoneFileItemProgress, DropZoneFileList, DropZoneInput, DropZoneRoot, DropZoneTrigger, drop_zone_parts_exports, useDropZone, useDropZoneStoreContext };
1013
- //# sourceMappingURL=drop-zone-C9VpKJAD.js.map
1019
+ //# sourceMappingURL=drop-zone-FkkbzZ3j.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drop-zone-FkkbzZ3j.js","names":["generateFileID","generateFileIDPrimitive","initFileStateArray: DropZoneState[\"fileStateArray\"]","newFileStateArray: DropZoneState[\"fileStateArray\"]","generateFileID","updatedFileStateArray: DropZoneState[\"fileStateArray\"]","useDropZoneStore: UseDropZoneResult[\"useDropZoneStore\"]","getContainerProps: UseDropZoneResult[\"propGetters\"][\"getContainerProps\"]","getInputProps: UseDropZoneResult[\"propGetters\"][\"getInputProps\"]","getTriggerProps: UseDropZoneResult[\"propGetters\"][\"getTriggerProps\"]","getFileListProps: UseDropZoneResult[\"propGetters\"][\"getFileListProps\"]","getFileItemProps: UseDropZoneResult[\"propGetters\"][\"getFileItemProps\"]","getFileItemProgressProps: UseDropZoneResult[\"propGetters\"][\"getFileItemProgressProps\"]","getFileItemDeleteProps: UseDropZoneResult[\"propGetters\"][\"getFileItemDeleteProps\"]","getFileItemPreviewProps: UseDropZoneResult[\"propGetters\"][\"getFileItemPreviewProps\"]","getFileItemMetadataProps: UseDropZoneResult[\"propGetters\"][\"getFileItemMetadataProps\"]","getFileItemClearProps: UseDropZoneResult[\"propGetters\"][\"getFileItemClearProps\"]","Component","Slot.Root"],"sources":["../../src/components/ui/drop-zone/drop-zone-context.ts","../../src/components/ui/drop-zone/icons.tsx","../../src/components/ui/drop-zone/utils.ts","../../src/components/ui/drop-zone/drop-zone-store.ts","../../src/components/ui/drop-zone/use-drop-zone.ts","../../src/components/ui/drop-zone/drop-zone.tsx","../../src/components/ui/drop-zone/drop-zone-parts.ts"],"sourcesContent":["import { createCustomContext } from \"@zayne-labs/toolkit-react\";\nimport { createZustandContext } from \"@zayne-labs/toolkit-react/zustand\";\nimport type { DropZoneStore } from \"./drop-zone-store\";\nimport type { FileState, UseDropZoneResult } from \"./types\";\n\nconst [DropZoneStoreContextProvider, useDropZoneStoreContext] = createZustandContext<DropZoneStore>({\n\thookName: \"useDropZoneStoreContext\",\n\tname: \"DropZoneStoreContext\",\n\tproviderName: \"DropZoneRoot\",\n});\n\nexport type DropZoneRootContextType = Pick<\n\tUseDropZoneResult,\n\t\"disabled\" | \"disableInternalStateSubscription\" | \"inputRef\" | \"propGetters\"\n>;\n\nconst [DropZoneRootContextProvider, useDropZoneRootContext] = createCustomContext<DropZoneRootContextType>(\n\t{\n\t\thookName: \"useDropZoneRootContext\",\n\t\tname: \"DropZoneRootContext\",\n\t\tproviderName: \"DropZoneRoot\",\n\t}\n);\n\nexport type FileItemContextType = {\n\tfileState: FileState;\n};\n\nconst [FileItemContextProvider, useFileItemContext] = createCustomContext({\n\tdefaultValue: null as unknown as FileItemContextType,\n\thookName: \"useFileItemContext\",\n\tname: \"FileItemContext\",\n\tproviderName: \"FileItem\",\n\tstrict: false,\n});\n\nexport {\n\tDropZoneRootContextProvider,\n\tDropZoneStoreContextProvider,\n\tFileItemContextProvider,\n\tuseDropZoneRootContext,\n\tuseDropZoneStoreContext,\n\tuseFileItemContext,\n};\n","import * as React from \"react\";\n\nexport const FileVideoIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4m-10 3l5 3l-5 3z\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileAudioIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3\" />\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileTextIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4M10 9H8m8 4H8m8 4H8\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileCodeIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M10 12.5L8 15l2 2.5m4-5l2 2.5l-2 2.5M14 2v4a2 2 0 0 0 2 2h4\" />\n\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileArchiveIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M10 12v-1m0 7v-2m0-9V6m4-4v4a2 2 0 0 0 2 2h4\" />\n\t\t\t<path d=\"M15.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v16a2 2 0 0 0 .274 1.01\" />\n\t\t\t<circle cx=\"10\" cy=\"20\" r=\"2\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileCogIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4M3.2 12.9l-.9-.4m.9 2.6l-.9.4\" />\n\t\t\t<path d=\"M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5m.9 4.7l-.4-.9m.4 6.5l-.4.9m3-7.4l-.4.9m.4 6.5l-.4-.9m2.6-4.3l-.9.4m.9 2.6l-.9-.4\" />\n\t\t\t<circle cx=\"6\" cy=\"14\" r=\"3\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n\t\t</g>\n\t</svg>\n);\n","import {\n\tcreateFileUrl,\n\ttype FileOrFileMeta,\n\ttype FileValidationErrorContextEach,\n\tgenerateFileID as generateFileIDPrimitive,\n} from \"@zayne-labs/toolkit-core\";\nimport { isFile, isObject, isString } from \"@zayne-labs/toolkit-type-helpers\";\nimport type { FileState, FileStateOrIDProp, PartProps } from \"./types\";\n\nexport const generateFileID = generateFileIDPrimitive;\n\nexport const createObjectURL = (\n\tfile: FileOrFileMeta,\n\tdisallowPreviewForNonImageFiles: boolean | undefined\n) => {\n\tif (disallowPreviewForNonImageFiles && !file.type?.startsWith(\"image/\")) return;\n\n\treturn createFileUrl(file);\n};\n\nexport const clearObjectURL = (\n\tfileState: FileState | undefined,\n\tdisallowPreviewForNonImageFiles: boolean | undefined\n) => {\n\tif (!isFile(fileState?.file)) return;\n\n\tif (disallowPreviewForNonImageFiles && !fileState.file.type.startsWith(\"image/\")) return;\n\n\tif (!fileState.preview) return;\n\n\tURL.revokeObjectURL(fileState.preview);\n};\n\nexport const isMatchingFile = (\n\toptions: FileStateOrIDProp & {\n\t\tfileState: FileOrFileMeta | FileState;\n\t}\n) => {\n\tconst { fileState, fileStateOrID } = options;\n\n\tconst fileID = isFile(fileState) ? generateFileID(fileState) : fileState.id;\n\n\tif (isString(fileStateOrID)) {\n\t\treturn fileID === fileStateOrID;\n\t}\n\n\tif (isFile(fileStateOrID)) {\n\t\tconst generatedFileID = generateFileID(fileStateOrID);\n\t\treturn fileID === generatedFileID;\n\t}\n\n\treturn fileID === fileStateOrID.id;\n};\n\ntype FromCamelToKebabCase<TString extends string> =\n\tTString extends `${infer First}${infer Rest}` ?\n\t\tFirst extends Uppercase<First> ?\n\t\t\t`-${Lowercase<First>}${FromCamelToKebabCase<Rest>}`\n\t\t:\t`${First}${FromCamelToKebabCase<Rest>}`\n\t:\t\"\";\n\nexport const getScopeAttrs = (part: FromCamelToKebabCase<keyof PartProps>) => {\n\treturn {\n\t\t/* eslint-disable perfectionist/sort-objects -- I need this order to be maintained */\n\t\t\"data-slot\": `dropzone-${part}`,\n\t\t\"data-scope\": \"dropzone\",\n\t\t\"data-part\": part,\n\t\t/* eslint-enable perfectionist/sort-objects -- I need this order to be maintained */\n\t} as const;\n};\n\nconst dropZoneErrorSymbol = Symbol(\"DropZoneError\");\n\nexport class DropZoneError extends Error {\n\treadonly dropZoneErrorSymbol = dropZoneErrorSymbol;\n\tfile?: FileValidationErrorContextEach[\"file\"];\n\toverride name = \"DropZoneError\" as const;\n\n\tconstructor(\n\t\tctx: Pick<FileValidationErrorContextEach, \"message\"> & {\n\t\t\tfile?: FileValidationErrorContextEach[\"file\"];\n\t\t}\n\t) {\n\t\tconst { file, message } = ctx;\n\n\t\tsuper(message);\n\n\t\tthis.file = file;\n\t}\n\n\tstatic override isError(error: unknown): error is DropZoneError {\n\t\tif (!isObject<DropZoneError>(error)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (error instanceof DropZoneError) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst actualError = error as DropZoneError;\n\n\t\treturn (\n\t\t\tactualError.dropZoneErrorSymbol === dropZoneErrorSymbol\n\t\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Allow\n\t\t\t&& actualError.name === \"DropZoneError\"\n\t\t);\n\t}\n}\n\nexport const getErrorContext = (error: DropZoneError | Error): NonNullable<FileState[\"error\"]> => {\n\tif (DropZoneError.isError(error)) {\n\t\treturn {\n\t\t\tcause: \"custom-error\",\n\t\t\tcode: \"upload-error\",\n\t\t\tfile: error.file ?? ({} as never),\n\t\t\tmessage: error.message,\n\t\t\toriginalError: error.cause ?? error,\n\t\t};\n\t}\n\n\tconst actualError = Error.isError(error) ? error : new Error(\"File upload failed\", { cause: error });\n\n\treturn {\n\t\tcause: \"custom-error\",\n\t\tcode: \"upload-error\",\n\t\tfile: isFile(actualError.cause) ? actualError.cause : ({} as never),\n\t\tmessage: Error.isError(error) ? actualError.message : String(actualError),\n\t\toriginalError: actualError,\n\t};\n};\n","import { createStore, handleFileValidationAsync, toArray } from \"@zayne-labs/toolkit-core\";\nimport { isString } from \"@zayne-labs/toolkit-type-helpers\";\nimport type { DropZoneActions, DropZoneState, UseDropZoneProps } from \"./types\";\nimport { clearObjectURL, createObjectURL, generateFileID, getErrorContext, isMatchingFile } from \"./utils\";\n\nexport type DropZoneStore = DropZoneActions & DropZoneState;\n\ntype RequiredUseDropZoneProps = {\n\t[Key in keyof Required<UseDropZoneProps>]: UseDropZoneProps[Key] | undefined;\n};\n\ntype InitStoreValues = Omit<\n\tRequiredUseDropZoneProps,\n\t\"disabled\" | \"disableInternalStateSubscription\" | \"extraProps\" | \"shouldOpenFilePickerOnAreaClick\"\n> & { inputRef: React.RefObject<HTMLInputElement | null> };\n\nexport const createDropZoneStore = (initStoreValues: InitStoreValues) => {\n\tconst {\n\t\tallowedFileTypes,\n\t\tdisablePreviewForNonImageFiles,\n\t\tinitialFiles,\n\t\tinputRef,\n\t\tmaxFileCount,\n\t\tmaxFileSize,\n\t\tmultiple,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\tonValidationError,\n\t\tonValidationSuccess,\n\t\trejectDuplicateFiles,\n\t\tvalidator,\n\t} = initStoreValues;\n\n\tconst initialFileArray = toArray(initialFiles).filter(Boolean);\n\n\tconst clearInputValue = () => {\n\t\tif (!inputRef.current) return;\n\n\t\tinputRef.current.value = \"\";\n\t};\n\n\tconst initFileStateArray: DropZoneState[\"fileStateArray\"] = initialFileArray.map((fileMeta) => ({\n\t\tfile: fileMeta,\n\t\tid: fileMeta.id,\n\t\tpreview: isString(fileMeta.url) ? fileMeta.url : undefined,\n\t\tprogress: 0,\n\t\tstatus: \"idle\",\n\t}));\n\n\tconst store = createStore<DropZoneStore>((set, get) => ({\n\t\tdisabled: false,\n\t\terrors: [],\n\t\tfileStateArray: initFileStateArray,\n\t\tisDraggingOver: false,\n\t\tisInvalid: false,\n\n\t\t// eslint-disable-next-line perfectionist/sort-objects -- ignore\n\t\tactions: {\n\t\t\taddFiles: async (files) => {\n\t\t\t\tif (!files || files.length === 0) {\n\t\t\t\t\tconsole.warn(\"No file selected!\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { actions, fileStateArray } = get();\n\n\t\t\t\t// == In single file mode, only use the first file\n\t\t\t\tconst resolvedNewFiles = !multiple ? [files[0]] : files;\n\n\t\t\t\tconst { errors, validFiles } = await handleFileValidationAsync({\n\t\t\t\t\texistingFiles: fileStateArray.map((fileWithPreview) => fileWithPreview.file),\n\t\t\t\t\thooks: {\n\t\t\t\t\t\tonErrorEach: onValidationError,\n\t\t\t\t\t\tonSuccessBatch: onValidationSuccess,\n\t\t\t\t\t},\n\t\t\t\t\tnewFiles: resolvedNewFiles,\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tallowedFileTypes,\n\t\t\t\t\t\tmaxFileCount,\n\t\t\t\t\t\tmaxFileSize,\n\t\t\t\t\t\trejectDuplicateFiles,\n\t\t\t\t\t\tvalidator,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tif (validFiles.length === 0) {\n\t\t\t\t\tset({ errors, isDraggingOver: false });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst newFileStateArray: DropZoneState[\"fileStateArray\"] = validFiles.map((file) => ({\n\t\t\t\t\tfile,\n\t\t\t\t\tid: generateFileID(file),\n\t\t\t\t\tpreview: createObjectURL(file, disablePreviewForNonImageFiles),\n\t\t\t\t\tprogress: 0,\n\t\t\t\t\tstatus: \"idle\",\n\t\t\t\t}));\n\n\t\t\t\tset({\n\t\t\t\t\terrors,\n\t\t\t\t\tfileStateArray: !multiple ? newFileStateArray : [...fileStateArray, ...newFileStateArray],\n\t\t\t\t\tisDraggingOver: false,\n\t\t\t\t});\n\n\t\t\t\tawait actions.handleFileUpload({ newFileStateArray });\n\t\t\t},\n\n\t\t\tclearErrors: () => {\n\t\t\t\tset({ errors: [], isInvalid: false });\n\t\t\t},\n\n\t\t\tclearFiles: () => {\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tactions.clearObjectURLs();\n\n\t\t\t\tset({ errors: [], fileStateArray: [], isInvalid: false });\n\t\t\t},\n\n\t\t\tclearObjectURLs: () => {\n\t\t\t\tconst { fileStateArray } = get();\n\n\t\t\t\tfor (const fileState of fileStateArray) {\n\t\t\t\t\tclearObjectURL(fileState, disablePreviewForNonImageFiles);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\thandleChange: async (event) => {\n\t\t\t\tconst fileList = event.target.files;\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tawait actions.addFiles(fileList);\n\n\t\t\t\tclearInputValue();\n\t\t\t},\n\n\t\t\thandleDragEnter: (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tset({ isDraggingOver: true });\n\t\t\t},\n\n\t\t\thandleDragLeave: (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tset({ isDraggingOver: false });\n\t\t\t},\n\n\t\t\thandleDragOver: (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t},\n\n\t\t\thandleDrop: async (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tconst fileList = event.dataTransfer.files;\n\n\t\t\t\tawait actions.addFiles(fileList);\n\t\t\t},\n\n\t\t\thandleFileUpload: async (context) => {\n\t\t\t\tconst { newFileStateArray } = context;\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tif (!onUpload) {\n\t\t\t\t\tfor (const fileState of newFileStateArray) {\n\t\t\t\t\t\tactions.updateFileState({ fileStateOrID: fileState, progress: 100, status: \"success\" });\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait onUpload({\n\t\t\t\t\t\tfileStateArray: newFileStateArray,\n\t\t\t\t\t\tonError: (ctx) => {\n\t\t\t\t\t\t\tconst { error, fileStateOrID } = ctx;\n\n\t\t\t\t\t\t\tconst errorContext = getErrorContext(error);\n\n\t\t\t\t\t\t\tactions.updateFileState({ error: errorContext, fileStateOrID, status: \"error\" });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonProgress: (ctx) => {\n\t\t\t\t\t\t\tconst { fileStateOrID, progress } = ctx;\n\n\t\t\t\t\t\t\tactions.updateFileState({ fileStateOrID, progress });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonSuccess: (ctx) => {\n\t\t\t\t\t\t\tconst { fileStateOrID } = ctx;\n\n\t\t\t\t\t\t\tactions.updateFileState({ fileStateOrID, progress: 100, status: \"success\" });\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\t// Handle Errors\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst errorContext = getErrorContext(error as Error);\n\n\t\t\t\t\tfor (const fileState of newFileStateArray) {\n\t\t\t\t\t\tactions.updateFileState({\n\t\t\t\t\t\t\terror: errorContext,\n\t\t\t\t\t\t\tfileStateOrID: fileState,\n\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// set((prevState) => ({ errors: [...prevState.errors, errorContext] }));\n\t\t\t\t}\n\t\t\t},\n\n\t\t\thandleKeyDown: (event) => {\n\t\t\t\tconst isEnterKey = event.key === \"Enter\";\n\t\t\t\tconst isSpaceKey = event.key === \" \";\n\n\t\t\t\tconst isAllowedKey = isEnterKey || isSpaceKey;\n\n\t\t\t\tif (!isAllowedKey) return;\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tactions.openFilePicker();\n\t\t\t},\n\n\t\t\thandlePaste: async (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tconst fileList = event.clipboardData.files;\n\n\t\t\t\tawait actions.addFiles(fileList);\n\t\t\t},\n\n\t\t\topenFilePicker: () => {\n\t\t\t\tinputRef.current?.click();\n\t\t\t},\n\n\t\t\tremoveFile: (ctx) => {\n\t\t\t\tconst { fileStateOrID } = ctx;\n\n\t\t\t\tconst { fileStateArray } = get();\n\n\t\t\t\tconst updatedFileStateArray = fileStateArray.flatMap((fileState) => {\n\t\t\t\t\tif (isMatchingFile({ fileState, fileStateOrID })) {\n\t\t\t\t\t\tclearObjectURL(fileState, disablePreviewForNonImageFiles);\n\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fileState;\n\t\t\t\t});\n\n\t\t\t\tset({ errors: [], fileStateArray: updatedFileStateArray });\n\t\t\t},\n\n\t\t\tupdateFileState: (ctx) => {\n\t\t\t\tconst { fileStateOrID, ...updatedFileState } = ctx;\n\n\t\t\t\tconst { fileStateArray } = get();\n\n\t\t\t\tconst updatedFileStateArray: DropZoneState[\"fileStateArray\"] = fileStateArray.map(\n\t\t\t\t\t(fileState) => {\n\t\t\t\t\t\tif (isMatchingFile({ fileState, fileStateOrID })) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...fileState,\n\t\t\t\t\t\t\t\t...updatedFileState,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fileState;\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// const updatedErrorsState =\n\t\t\t\t// \tupdatedFileState.error ?\n\t\t\t\t// \t\t{ errors: [...errors, updatedFileState.error] satisfies DropZoneState[\"errors\"] }\n\t\t\t\t// \t:\tnull;\n\n\t\t\t\tset({ fileStateArray: updatedFileStateArray });\n\t\t\t},\n\t\t},\n\t}));\n\n\t// == File change subscription\n\tstore.subscribe.withSelector(\n\t\t(state) => state.fileStateArray,\n\t\t(fileStateArray) => onFilesChange?.({ fileStateArray })\n\t);\n\n\t// == Set `isInvalid` to true if there are errors\n\tstore.subscribe.withSelector(\n\t\t(state) => state.errors,\n\t\t(errors) => {\n\t\t\tif (errors.length === 0) return;\n\n\t\t\tstore.setState({ isInvalid: true });\n\t\t}\n\t);\n\n\t// == Update `isInvalid` to false after 1.5 seconds\n\tstore.subscribe.withSelector(\n\t\t(state) => state.isInvalid,\n\t\t(isInvalid) => {\n\t\t\tif (!isInvalid) return;\n\n\t\t\tsetTimeout(() => store.setState({ isInvalid: !isInvalid }), 1500);\n\t\t}\n\t);\n\n\treturn store;\n};\n","import { dataAttr } from \"@zayne-labs/toolkit-core\";\nimport {\n\tuseCallbackRef,\n\tuseConstant,\n\tuseShallowCompValue,\n\tuseStore,\n\tuseUnmountEffect,\n} from \"@zayne-labs/toolkit-react\";\nimport { composeRefs, composeTwoEventHandlers } from \"@zayne-labs/toolkit-react/utils\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { createDropZoneStore } from \"./drop-zone-store\";\nimport type { DropZonePropGetters, UseDropZoneProps, UseDropZoneResult } from \"./types\";\nimport { getScopeAttrs } from \"./utils\";\n\nexport const useDropZone = (props?: UseDropZoneProps): UseDropZoneResult => {\n\tconst {\n\t\tallowedFileTypes,\n\t\tdisabled = false,\n\t\tdisableInternalStateSubscription = false,\n\t\tdisablePreviewForNonImageFiles = true,\n\t\tinitialFiles,\n\t\tmaxFileCount,\n\t\tmaxFileSize,\n\t\tmultiple,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\tonValidationError,\n\t\tonValidationSuccess,\n\t\trejectDuplicateFiles = true,\n\t\tshouldOpenFilePickerOnAreaClick = true,\n\t\tvalidator,\n\t} = props ?? {};\n\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tconst savedOnFilesChange = useCallbackRef(onFilesChange);\n\tconst savedOnUpload = useCallbackRef(onUpload);\n\tconst savedOnUploadError = useCallbackRef(onValidationError);\n\tconst savedOnUploadSuccess = useCallbackRef(onValidationSuccess);\n\tconst savedValidator = useCallbackRef(validator);\n\n\tconst constantInitialFiles = useConstant(() => initialFiles);\n\tconst shallowComparedMaxFileSize = useShallowCompValue(maxFileSize);\n\tconst shallowComparedAllowedFileTypes = useShallowCompValue(allowedFileTypes);\n\n\tconst storeApi = useMemo(() => {\n\t\treturn createDropZoneStore({\n\t\t\tallowedFileTypes: shallowComparedAllowedFileTypes,\n\t\t\tdisablePreviewForNonImageFiles,\n\t\t\tinitialFiles: constantInitialFiles,\n\t\t\tinputRef,\n\t\t\tmaxFileCount,\n\t\t\tmaxFileSize: shallowComparedMaxFileSize,\n\t\t\tmultiple,\n\t\t\tonFilesChange: savedOnFilesChange,\n\t\t\tonUpload: savedOnUpload,\n\t\t\tonValidationError: savedOnUploadError,\n\t\t\tonValidationSuccess: savedOnUploadSuccess,\n\t\t\trejectDuplicateFiles,\n\t\t\tvalidator: savedValidator,\n\t\t});\n\t}, [\n\t\tshallowComparedAllowedFileTypes,\n\t\tdisablePreviewForNonImageFiles,\n\t\tconstantInitialFiles,\n\t\tmaxFileCount,\n\t\tshallowComparedMaxFileSize,\n\t\tmultiple,\n\t\tsavedOnFilesChange,\n\t\tsavedOnUpload,\n\t\tsavedOnUploadError,\n\t\tsavedOnUploadSuccess,\n\t\trejectDuplicateFiles,\n\t\tsavedValidator,\n\t]);\n\n\tconst actions = storeApi.getState().actions;\n\n\tuseUnmountEffect(() => {\n\t\tactions.clearObjectURLs();\n\t});\n\n\tconst useDropZoneStore: UseDropZoneResult[\"useDropZoneStore\"] = (selector) => {\n\t\treturn useStore(storeApi, selector);\n\t};\n\n\tconst isDraggingOver = useDropZoneStore((state) =>\n\t\t!disableInternalStateSubscription ? state.isDraggingOver : null\n\t);\n\n\tconst hasFiles = useDropZoneStore((state) =>\n\t\t!disableInternalStateSubscription ? state.fileStateArray.length > 0 : null\n\t);\n\n\tconst isInvalid = useDropZoneStore((state) =>\n\t\t!disableInternalStateSubscription ? state.isInvalid : null\n\t);\n\n\tconst getContainerProps: UseDropZoneResult[\"propGetters\"][\"getContainerProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst isDisabled = disabled;\n\t\t\tconst onFileDrop = !isDisabled ? actions.handleDrop : undefined;\n\t\t\tconst onFilePaste = !isDisabled ? actions.handlePaste : undefined;\n\t\t\tconst onKeyDown = !isDisabled ? actions.handleKeyDown : undefined;\n\t\t\tconst tabIndex = !isDisabled ? 0 : undefined;\n\t\t\tconst onAreaClick =\n\t\t\t\t!isDisabled && shouldOpenFilePickerOnAreaClick ? actions.openFilePicker : undefined;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"container\"),\n\t\t\t\trole: \"region\",\n\t\t\t\t...(!disableInternalStateSubscription && {\n\t\t\t\t\t\"data-drag-over\": dataAttr(isDraggingOver),\n\t\t\t\t\t\"data-invalid\": dataAttr(isInvalid),\n\t\t\t\t}),\n\t\t\t\t...innerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t`relative flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed\n\t\t\t\t\tp-6 transition-colors duration-250 ease-out outline-none select-none hover:bg-zu-accent/30\n\t\t\t\t\tfocus-visible:border-zu-ring/50`,\n\t\t\t\t\t`data-[disabled]:pointer-events-none data-[drag-over]:border-zu-primary/30\n\t\t\t\t\tdata-[drag-over]:bg-zu-accent/30 data-[dragging]:bg-zu-accent/30\n\t\t\t\t\tdata-[invalid]:border-zu-destructive data-[invalid]:ring-zu-destructive/20`,\n\t\t\t\t\tinnerProps.className\n\t\t\t\t),\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tonClick: composeTwoEventHandlers(onAreaClick, innerProps.onClick),\n\t\t\t\tonDragEnter: composeTwoEventHandlers(actions.handleDragEnter, innerProps.onDragEnter),\n\t\t\t\tonDragLeave: composeTwoEventHandlers(actions.handleDragLeave, innerProps.onDragLeave),\n\t\t\t\tonDragOver: composeTwoEventHandlers(actions.handleDragOver, innerProps.onDragOver),\n\t\t\t\tonDrop: composeTwoEventHandlers(onFileDrop, innerProps.onDrop),\n\t\t\t\tonKeyDown: composeTwoEventHandlers(onKeyDown, innerProps.onKeyDown),\n\t\t\t\tonPaste: composeTwoEventHandlers(onFilePaste, innerProps.onPaste),\n\t\t\t\ttabIndex,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tactions.handleDragEnter,\n\t\t\tactions.handleDragLeave,\n\t\t\tactions.handleDragOver,\n\t\t\tactions.handleDrop,\n\t\t\tactions.handleKeyDown,\n\t\t\tactions.handlePaste,\n\t\t\tactions.openFilePicker,\n\t\t\tdisableInternalStateSubscription,\n\t\t\tdisabled,\n\t\t\tisDraggingOver,\n\t\t\tisInvalid,\n\t\t\tshouldOpenFilePickerOnAreaClick,\n\t\t]\n\t);\n\n\tconst getInputProps: UseDropZoneResult[\"propGetters\"][\"getInputProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst isDisabled = innerProps.disabled ?? disabled;\n\n\t\t\tconst onFileChange = !isDisabled ? actions.handleChange : undefined;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"input\"),\n\t\t\t\t...(!disableInternalStateSubscription && { \"data-drag-over\": dataAttr(isDraggingOver) }),\n\t\t\t\t...innerProps,\n\t\t\t\taccept: allowedFileTypes ? allowedFileTypes.join(\", \") : innerProps.accept,\n\t\t\t\tclassName: cnMerge(\"hidden\", innerProps.className),\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\tmultiple: multiple ?? innerProps.multiple,\n\t\t\t\tonChange: composeTwoEventHandlers(onFileChange, innerProps.onChange),\n\t\t\t\tref: composeRefs(inputRef, innerProps.ref),\n\t\t\t\ttype: \"file\",\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tactions.handleChange,\n\t\t\tallowedFileTypes,\n\t\t\tdisableInternalStateSubscription,\n\t\t\tdisabled,\n\t\t\tisDraggingOver,\n\t\t\tmultiple,\n\t\t]\n\t);\n\n\tconst getTriggerProps: UseDropZoneResult[\"propGetters\"][\"getTriggerProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst isDisabled = innerProps.disabled ?? disabled;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"trigger\"),\n\t\t\t\ttype: \"button\",\n\t\t\t\t...innerProps,\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\tonClick: composeTwoEventHandlers(actions.openFilePicker, innerProps.onClick),\n\t\t\t};\n\t\t},\n\t\t[actions.openFilePicker, disabled]\n\t);\n\n\tconst getFileListProps: UseDropZoneResult[\"propGetters\"][\"getFileListProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst { orientation = \"vertical\", ...restOfInnerProps } = innerProps;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-list\"),\n\t\t\t\t\"data-orientation\": orientation,\n\t\t\t\t...(!disableInternalStateSubscription && { \"data-state\": hasFiles ? \"active\" : \"inactive\" }),\n\t\t\t\t...restOfInnerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t`flex flex-col gap-2 data-[state=active]:animate-files-in data-[state=inactive]:animate-out\n\t\t\t\t\tdata-[state=inactive]:fade-out-0 data-[state=inactive]:slide-out-to-top-2`,\n\t\t\t\t\torientation === \"horizontal\" && \"flex-row overflow-x-auto p-1.5\",\n\t\t\t\t\tinnerProps.className\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[disableInternalStateSubscription, hasFiles]\n\t);\n\n\tconst getFileItemProps: UseDropZoneResult[\"propGetters\"][\"getFileItemProps\"] = useCallbackRef(\n\t\t(innerProps) => {\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item\"),\n\t\t\t\t...innerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t\"relative flex items-center gap-2.5 rounded-md border p-2\",\n\t\t\t\t\tinnerProps.className\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t);\n\n\tconst getFileItemProgressProps: UseDropZoneResult[\"propGetters\"][\"getFileItemProgressProps\"] =\n\t\tuseCallbackRef((innerProps) => {\n\t\t\tconst { variant = \"linear\", ...restOfInnerProps } = innerProps;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-progress\"),\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t...restOfInnerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t\"inline-flex\",\n\t\t\t\t\tvariant === \"circular\" && \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n\t\t\t\t\tvariant === \"fill\"\n\t\t\t\t\t\t&& `absolute inset-0 bg-zu-primary/50 transition-[clip-path] duration-300 ease-linear\n\t\t\t\t\t\t[clip-path:var(--clip-path)]`,\n\t\t\t\t\tvariant === \"linear\"\n\t\t\t\t\t\t&& \"relative h-1.5 w-full overflow-hidden rounded-full bg-zu-primary/20\",\n\t\t\t\t\trestOfInnerProps.className\n\t\t\t\t),\n\t\t\t};\n\t\t});\n\n\tconst getFileItemDeleteProps: UseDropZoneResult[\"propGetters\"][\"getFileItemDeleteProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst { fileStateOrID, ...restOfInnerProps } = innerProps;\n\n\t\t\tconst isDisabled = innerProps.disabled ?? disabled;\n\n\t\t\tconst onRemoveFile = () => fileStateOrID && actions.removeFile({ fileStateOrID });\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-delete\"),\n\t\t\t\ttype: \"button\",\n\t\t\t\t...restOfInnerProps,\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\tonClick: composeTwoEventHandlers(onRemoveFile, restOfInnerProps.onClick),\n\t\t\t};\n\t\t},\n\t\t[actions, disabled]\n\t);\n\n\tconst getFileItemPreviewProps: UseDropZoneResult[\"propGetters\"][\"getFileItemPreviewProps\"] =\n\t\tuseCallbackRef((innerProps) => {\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-preview\"),\n\t\t\t\t...innerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t`relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-md\n\t\t\t\t\tbg-zu-accent/50 [&>svg]:size-10`,\n\t\t\t\t\tinnerProps.className\n\t\t\t\t),\n\t\t\t};\n\t\t});\n\n\tconst getFileItemMetadataProps: UseDropZoneResult[\"propGetters\"][\"getFileItemMetadataProps\"] =\n\t\tuseCallbackRef((innerProps) => {\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-metadata\"),\n\t\t\t\t...innerProps,\n\t\t\t\tclassName: cnMerge(\"flex min-w-0 grow flex-col\", innerProps.className),\n\t\t\t};\n\t\t});\n\n\tconst getFileItemClearProps: UseDropZoneResult[\"propGetters\"][\"getFileItemClearProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst isDisabled = innerProps.disabled ?? disabled;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-clear\"),\n\t\t\t\ttype: \"button\",\n\t\t\t\t...innerProps,\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\tonClick: composeTwoEventHandlers(actions.clearFiles, innerProps.onClick),\n\t\t\t};\n\t\t},\n\t\t[actions.clearFiles, disabled]\n\t);\n\n\tconst propGetters = useMemo<DropZonePropGetters>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tgetContainerProps,\n\t\t\t\tgetFileItemClearProps,\n\t\t\t\tgetFileItemDeleteProps,\n\t\t\t\tgetFileItemMetadataProps,\n\t\t\t\tgetFileItemPreviewProps,\n\t\t\t\tgetFileItemProgressProps,\n\t\t\t\tgetFileItemProps,\n\t\t\t\tgetFileListProps,\n\t\t\t\tgetInputProps,\n\t\t\t\tgetTriggerProps,\n\t\t\t}) satisfies DropZonePropGetters,\n\t\t[\n\t\t\tgetContainerProps,\n\t\t\tgetFileListProps,\n\t\t\tgetFileItemClearProps,\n\t\t\tgetFileItemDeleteProps,\n\t\t\tgetFileItemMetadataProps,\n\t\t\tgetFileItemPreviewProps,\n\t\t\tgetFileItemProgressProps,\n\t\t\tgetFileItemProps,\n\t\t\tgetInputProps,\n\t\t\tgetTriggerProps,\n\t\t]\n\t);\n\n\tconst savedUseDropZoneStore = useCallbackRef(useDropZoneStore);\n\n\tconst result = useMemo<UseDropZoneResult>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tdisabled,\n\t\t\t\tdisableInternalStateSubscription,\n\t\t\t\tinputRef,\n\t\t\t\tpropGetters,\n\t\t\t\tstoreApi,\n\t\t\t\tuseDropZoneStore: savedUseDropZoneStore,\n\t\t\t}) satisfies UseDropZoneResult,\n\t\t[disabled, disableInternalStateSubscription, propGetters, storeApi, savedUseDropZoneStore]\n\t);\n\n\treturn result;\n};\n","\"use client\";\n\nimport { dataAttr, formatBytes } from \"@zayne-labs/toolkit-core\";\nimport { useShallowCompSelector } from \"@zayne-labs/toolkit-react\";\nimport type { CssWithCustomProperties, PolymorphicPropsStrict } from \"@zayne-labs/toolkit-react/utils\";\nimport { type AnyFunction, isFunction, isNumber, type SelectorFn } from \"@zayne-labs/toolkit-type-helpers\";\nimport * as React from \"react\";\nimport { useMemo } from \"react\";\nimport { For } from \"@/components/common\";\nimport { Presence } from \"@/components/common/presence\";\nimport { Slot } from \"@/components/common/slot\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport {\n\tDropZoneRootContextProvider,\n\ttype DropZoneRootContextType,\n\tDropZoneStoreContextProvider,\n\tFileItemContextProvider,\n\ttype FileItemContextType,\n\tuseDropZoneRootContext,\n\tuseDropZoneStoreContext,\n\tuseFileItemContext,\n} from \"./drop-zone-context\";\nimport type { DropZoneStore } from \"./drop-zone-store\";\nimport {\n\tFileArchiveIcon,\n\tFileAudioIcon,\n\tFileCodeIcon,\n\tFileCogIcon,\n\tFileIcon,\n\tFileTextIcon,\n\tFileVideoIcon,\n} from \"./icons\";\nimport type { PartInputProps, UseDropZoneProps } from \"./types\";\nimport { useDropZone } from \"./use-drop-zone\";\n\ntype DropZoneRootProps = UseDropZoneProps & { children: React.ReactNode };\n\nexport function DropZoneRoot(props: DropZoneRootProps) {\n\tconst { children, ...restOfProps } = props;\n\n\tconst { disabled, disableInternalStateSubscription, inputRef, propGetters, storeApi } =\n\t\tuseDropZone(restOfProps);\n\n\tconst rootContextValue = useMemo<DropZoneRootContextType>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tdisabled,\n\t\t\t\tdisableInternalStateSubscription,\n\t\t\t\tinputRef,\n\t\t\t\tpropGetters,\n\t\t\t}) satisfies DropZoneRootContextType,\n\t\t[disableInternalStateSubscription, disabled, inputRef, propGetters]\n\t);\n\n\treturn (\n\t\t<DropZoneStoreContextProvider store={storeApi}>\n\t\t\t<DropZoneRootContextProvider value={rootContextValue}>{children}</DropZoneRootContextProvider>\n\t\t</DropZoneStoreContextProvider>\n\t);\n}\n\ntype DropZoneContextProps<TSlice> = {\n\tchildren: React.ReactNode | ((context: TSlice) => React.ReactNode);\n\tselector?: SelectorFn<DropZoneStore, TSlice>;\n};\n\nexport function DropZoneContext<TSlice = DropZoneStore>(props: DropZoneContextProps<TSlice>) {\n\tconst { children, selector } = props;\n\n\tconst dropZoneCtx = useDropZoneStoreContext(useShallowCompSelector(selector));\n\n\tconst resolvedChildren = isFunction(children) ? children(dropZoneCtx) : children;\n\n\treturn resolvedChildren;\n}\n\ntype DropZoneContainerProps = PartInputProps[\"container\"] & { asChild?: boolean };\n\nexport function DropZoneContainer<TElement extends React.ElementType = \"div\">(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneContainerProps>\n) {\n\tconst { as: Element = \"div\", asChild, ...restOfProps } = props;\n\n\tconst { disableInternalStateSubscription, propGetters } = useDropZoneRootContext();\n\n\tconst isDraggingOver = useDropZoneStoreContext((store) =>\n\t\tdisableInternalStateSubscription ? store.isDraggingOver : null\n\t);\n\n\tconst isInvalid = useDropZoneStoreContext((store) =>\n\t\tdisableInternalStateSubscription ? store.isInvalid : null\n\t);\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\treturn (\n\t\t<Component\n\t\t\t{...propGetters.getContainerProps({\n\t\t\t\t...(disableInternalStateSubscription && {\n\t\t\t\t\t\"data-drag-over\": dataAttr(isDraggingOver),\n\t\t\t\t\t\"data-invalid\": dataAttr(isInvalid),\n\t\t\t\t}),\n\t\t\t\t...restOfProps,\n\t\t\t})}\n\t\t/>\n\t);\n}\n\ntype DropZoneInputProps = PartInputProps[\"input\"] & { asChild?: boolean };\n\nexport function DropZoneInput(props: DropZoneInputProps) {\n\tconst { asChild, ...restOfProps } = props;\n\n\tconst { disableInternalStateSubscription, propGetters } = useDropZoneRootContext();\n\n\tconst isDraggingOver = useDropZoneStoreContext((store) =>\n\t\tdisableInternalStateSubscription ? store.isDraggingOver : null\n\t);\n\n\tconst Component = asChild ? Slot.Root : \"input\";\n\n\treturn (\n\t\t<Component\n\t\t\t{...propGetters.getInputProps({\n\t\t\t\t...(disableInternalStateSubscription && { \"data-drag-over\": dataAttr(isDraggingOver) }),\n\t\t\t\t...restOfProps,\n\t\t\t})}\n\t\t/>\n\t);\n}\n\ntype DropZoneAreaProps<TSlice> = {\n\tchildren: React.ReactNode | ((context: TSlice) => React.ReactNode);\n\tclassNames?: Partial<Record<Extract<keyof PartInputProps, \"container\" | \"input\">, string>>;\n\textraProps?: Pick<PartInputProps, \"container\" | \"input\">;\n\tselector?: SelectorFn<DropZoneStore, TSlice>;\n};\n\nexport function DropZoneArea<TSlice = DropZoneStore>(props: DropZoneAreaProps<TSlice>) {\n\tconst { children, classNames, extraProps, selector } = props;\n\n\treturn (\n\t\t<DropZoneContainer {...extraProps?.container} className={classNames?.container}>\n\t\t\t<DropZoneInput {...extraProps?.input} className={classNames?.input} />\n\n\t\t\t<DropZoneContext selector={selector}>{children}</DropZoneContext>\n\t\t</DropZoneContainer>\n\t);\n}\n\ntype DropZoneTriggerProps = PartInputProps[\"trigger\"] & { asChild?: boolean };\n\nexport function DropZoneTrigger(props: DropZoneTriggerProps) {\n\tconst { asChild, ...restOfProps } = props;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst Component = asChild ? Slot.Root : \"button\";\n\n\treturn <Component {...propGetters.getTriggerProps(restOfProps)} />;\n}\n\ntype ListPerItemContext = Pick<DropZoneStore, \"actions\"> & {\n\tarray: DropZoneStore[\"fileStateArray\"];\n\tfileState: DropZoneStore[\"fileStateArray\"][number];\n\tindex: number;\n};\n\ntype FileListPerItemVariant = {\n\tchildren: React.ReactNode | ((context: ListPerItemContext) => React.ReactNode);\n\trenderMode?: \"per-item\";\n};\n\ntype ListManualListContext = Pick<DropZoneStore, \"actions\" | \"fileStateArray\">;\n\ntype FileListManualListVariant = {\n\tchildren: React.ReactNode | ((context: ListManualListContext) => React.ReactNode);\n\trenderMode: \"manual-list\";\n};\n\ntype DropZoneFileListProps = Omit<PartInputProps[\"fileList\"], \"children\"> & {\n\tasChild?: boolean;\n\tforceMount?: boolean;\n} & (FileListManualListVariant | FileListPerItemVariant);\n\nexport function DropZoneFileList<TElement extends React.ElementType = \"ul\">(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneFileListProps>\n) {\n\tconst {\n\t\tas: Element = \"ul\",\n\t\tasChild,\n\t\tchildren,\n\t\tforceMount = false,\n\t\trenderMode = \"per-item\",\n\t\t...restOfProps\n\t} = props;\n\n\tconst fileStateArray = useDropZoneStoreContext((store) => store.fileStateArray);\n\tconst actions = useDropZoneStoreContext((store) => store.actions);\n\n\tconst { disableInternalStateSubscription, propGetters } = useDropZoneRootContext();\n\n\tconst childrenMap = {\n\t\t\"manual-list\": () => {\n\t\t\tconst childrenFn = children as Extract<FileListManualListVariant[\"children\"], AnyFunction>;\n\t\t\treturn childrenFn({ actions, fileStateArray });\n\t\t},\n\t\t\"per-item\": () => {\n\t\t\tconst childrenFn = children as Extract<FileListPerItemVariant[\"children\"], AnyFunction>;\n\n\t\t\treturn (\n\t\t\t\t<For\n\t\t\t\t\teach={fileStateArray}\n\t\t\t\t\trenderItem={(fileState, index, array) => childrenFn({ actions, array, fileState, index })}\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t} satisfies Record<typeof renderMode, () => React.ReactNode>;\n\n\tconst hasFiles = fileStateArray.length > 0;\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\treturn (\n\t\t<Presence present={hasFiles} forceMount={forceMount}>\n\t\t\t<Component\n\t\t\t\t{...propGetters.getFileListProps({\n\t\t\t\t\t...(disableInternalStateSubscription && { \"data-state\": hasFiles ? \"active\" : \"inactive\" }),\n\t\t\t\t\t...restOfProps,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{isFunction(children) ? childrenMap[renderMode]() : children}\n\t\t\t</Component>\n\t\t</Presence>\n\t);\n}\n\ntype DropZoneFileItemProps = FileItemContextType & PartInputProps[\"fileItem\"] & { asChild?: boolean };\n\nexport function DropZoneFileItem<TElement extends React.ElementType = \"li\">(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneFileItemProps>\n) {\n\tconst { as: Element = \"li\", asChild, fileState, ...restOfProps } = props;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\tconst contextValue = useMemo<FileItemContextType>(\n\t\t() => ({ fileState }) satisfies FileItemContextType,\n\t\t[fileState]\n\t);\n\n\treturn (\n\t\t<FileItemContextProvider value={contextValue}>\n\t\t\t<Component {...propGetters.getFileItemProps(restOfProps)} />\n\t\t</FileItemContextProvider>\n\t);\n}\n\ntype DropZoneFileItemDeleteProps = PartInputProps[\"fileItemDelete\"] & { asChild?: boolean };\n\nexport function DropZoneFileItemDelete(props: DropZoneFileItemDeleteProps) {\n\tconst { asChild, fileStateOrID, ...restOfProps } = props;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst fileItemContextValue = useFileItemContext();\n\n\tconst Component = asChild ? Slot.Root : \"button\";\n\n\tconst resolvedFileStateOrID = fileStateOrID ?? fileItemContextValue?.fileState;\n\n\treturn (\n\t\t<Component\n\t\t\t{...propGetters.getFileItemDeleteProps({ fileStateOrID: resolvedFileStateOrID, ...restOfProps })}\n\t\t/>\n\t);\n}\n\ntype DropZoneFileItemProgressProps = PartInputProps[\"fileItemProgress\"] & {\n\tasChild?: boolean;\n\tforceMount?: boolean;\n\tsize?: number;\n};\n\nexport function DropZoneFileItemProgress<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneFileItemProgressProps>\n) {\n\tconst {\n\t\tas: Element = \"span\",\n\t\tasChild,\n\t\tforceMount = false,\n\t\tsize = 40,\n\t\tvariant = \"linear\",\n\t\t...restOfProps\n\t} = props;\n\n\tconst fileItemContextValue = useFileItemContext();\n\n\tconst fileState = fileItemContextValue?.fileState;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tif (!fileState) {\n\t\treturn null;\n\t}\n\n\tconst currentProgress = fileState.progress;\n\n\tconst shouldRender = forceMount || fileState.progress !== 100;\n\n\tif (!shouldRender) {\n\t\treturn null;\n\t}\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\tconst componentProps = propGetters.getFileItemProgressProps({ variant, ...restOfProps });\n\n\tswitch (variant) {\n\t\tcase \"circular\": {\n\t\t\tconst circumference = 2 * Math.PI * ((size - 4) / 2);\n\t\t\tconst strokeDashoffset = circumference - (currentProgress / 100) * circumference;\n\n\t\t\treturn (\n\t\t\t\t<Component {...componentProps}>\n\t\t\t\t\t<svg\n\t\t\t\t\t\tclassName=\"-rotate-90\"\n\t\t\t\t\t\twidth={size}\n\t\t\t\t\t\theight={size}\n\t\t\t\t\t\tviewBox={`0 0 ${size} ${size}`}\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tclassName=\"text-zu-primary/20\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tcx={size / 2}\n\t\t\t\t\t\t\tcy={size / 2}\n\t\t\t\t\t\t\tr={(size - 4) / 2}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tclassName=\"text-zu-primary transition-[stroke-dashoffset] duration-300 ease-linear\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeDasharray={circumference}\n\t\t\t\t\t\t\tstrokeDashoffset={strokeDashoffset}\n\t\t\t\t\t\t\tcx={size / 2}\n\t\t\t\t\t\t\tcy={size / 2}\n\t\t\t\t\t\t\tr={(size - 4) / 2}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</Component>\n\t\t\t);\n\t\t}\n\n\t\tcase \"fill\": {\n\t\t\tconst topInset = 100 - currentProgress;\n\n\t\t\treturn (\n\t\t\t\t<Component\n\t\t\t\t\t{...componentProps}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--clip-path\": `inset(${topInset}% 0% 0% 0%)`,\n\t\t\t\t\t\t} satisfies CssWithCustomProperties as CssWithCustomProperties\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tcase \"linear\": {\n\t\t\treturn (\n\t\t\t\t<Component {...componentProps}>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"inline-block size-full grow translate-x-(--translate-distance) bg-zu-primary transition-transform duration-300 ease-linear\"\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"--translate-distance\": `-${100 - currentProgress}%`,\n\t\t\t\t\t\t\t} satisfies CssWithCustomProperties as CssWithCustomProperties\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Component>\n\t\t\t);\n\t\t}\n\n\t\tdefault: {\n\t\t\tvariant satisfies never;\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\ntype RenderPreviewDetails = { className?: string; node?: React.ReactNode };\n\ntype RenderPropContext = Pick<FileItemContextType, \"fileState\"> & {\n\tfileExtension: string;\n\tfileType: string;\n};\n\ntype RenderPreview = (context: RenderPropContext) => {\n\tarchive?: RenderPreviewDetails;\n\taudio?: RenderPreviewDetails;\n\tcode?: RenderPreviewDetails;\n\tdefault?: RenderPreviewDetails;\n\texecutable?: RenderPreviewDetails;\n\timage?: RenderPreviewDetails;\n\ttext?: RenderPreviewDetails;\n\tvideo?: RenderPreviewDetails;\n};\n\ntype DropZoneFileItemPreviewProps = Omit<PartInputProps[\"fileItemPreview\"], \"children\">\n\t& Partial<Pick<FileItemContextType, \"fileState\">> & {\n\t\tasChild?: boolean;\n\t\tchildren?: React.ReactNode | ((context: RenderPropContext) => React.ReactNode);\n\t\trenderPreview?: boolean | RenderPreview;\n\t};\n\nexport function DropZoneFileItemPreview<TElement extends React.ElementType>(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneFileItemPreviewProps>\n) {\n\tconst {\n\t\tas: Element = \"span\",\n\t\tasChild,\n\t\tchildren,\n\t\tfileState: fileStateProp,\n\t\trenderPreview = true,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fileItemContextValue = useFileItemContext();\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst fileState = fileStateProp ?? fileItemContextValue?.fileState;\n\n\tif (!fileState) {\n\t\treturn null;\n\t}\n\n\tconst fileType = fileState.file.type ?? \"\";\n\n\tconst fileExtension = fileState.file.name?.split(\".\").pop()?.toLowerCase() ?? \"\";\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\tconst resolvedChildren =\n\t\tisFunction(children) ? children({ fileExtension, fileState, fileType }) : children;\n\n\treturn (\n\t\t<Component {...propGetters.getFileItemPreviewProps(restOfProps)}>\n\t\t\t{renderPreview && getFilePreviewOrIcon({ fileExtension, fileState, fileType, renderPreview })}\n\t\t\t{resolvedChildren}\n\t\t</Component>\n\t);\n}\n\nconst getFilePreviewOrIcon = (\n\tcontext: Pick<Required<DropZoneFileItemPreviewProps>, \"renderPreview\"> & Required<RenderPropContext>\n) => {\n\tconst { fileExtension, fileState, fileType, renderPreview } = context;\n\n\tconst renderPreviewObject =\n\t\tisFunction(renderPreview) ? renderPreview({ fileExtension, fileState, fileType }) : {};\n\n\tswitch (true) {\n\t\tcase fileType.startsWith(\"image/\"): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.image?.node ?? (\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={fileState.preview}\n\t\t\t\t\t\talt={fileState.file.name ?? \"\"}\n\t\t\t\t\t\tclassName={cnMerge(\"size-full object-cover\", renderPreviewObject.image?.className)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase fileType.startsWith(\"video/\"): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.video?.node ?? (\n\t\t\t\t\t<FileVideoIcon\n\t\t\t\t\t\tclassName={cnMerge(\"size-full object-cover\", renderPreviewObject.video?.className)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase fileType.startsWith(\"audio/\"): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.audio?.node ?? (\n\t\t\t\t\t<FileAudioIcon\n\t\t\t\t\t\tclassName={cnMerge(\"size-full object-cover\", renderPreviewObject.audio?.className)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase fileType.startsWith(\"text/\") || [\"md\", \"pdf\", \"rtf\", \"txt\"].includes(fileExtension): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.text?.node ?? (\n\t\t\t\t\t<FileTextIcon className={renderPreviewObject.text?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase [\n\t\t\t\"c\",\n\t\t\t\"cpp\",\n\t\t\t\"cs\",\n\t\t\t\"css\",\n\t\t\t\"html\",\n\t\t\t\"java\",\n\t\t\t\"js\",\n\t\t\t\"json\",\n\t\t\t\"jsx\",\n\t\t\t\"php\",\n\t\t\t\"py\",\n\t\t\t\"rb\",\n\t\t\t\"ts\",\n\t\t\t\"tsx\",\n\t\t\t\"xml\",\n\t\t].includes(fileExtension): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.code?.node ?? (\n\t\t\t\t\t<FileCodeIcon className={renderPreviewObject.code?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase [\"7z\", \"bz2\", \"gz\", \"rar\", \"tar\", \"zip\"].includes(fileExtension): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.archive?.node ?? (\n\t\t\t\t\t<FileArchiveIcon className={renderPreviewObject.archive?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase [\"apk\", \"app\", \"deb\", \"exe\", \"msi\", \"rpm\"].includes(fileExtension): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.executable?.node ?? (\n\t\t\t\t\t<FileCogIcon className={renderPreviewObject.executable?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.default?.node ?? (\n\t\t\t\t\t<FileIcon className={renderPreviewObject.default?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n};\n\ntype DropZoneFileItemMetadataProps = Omit<PartInputProps[\"fileItemMetadata\"], \"children\">\n\t& Partial<Pick<FileItemContextType, \"fileState\">> & {\n\t\tasChild?: boolean;\n\t\tchildren?: React.ReactNode | ((context: Pick<FileItemContextType, \"fileState\">) => React.ReactNode);\n\t\tclassNames?: {\n\t\t\tname?: string;\n\t\t\tsize?: string;\n\t\t};\n\t\tsize?: \"default\" | \"sm\";\n\t};\n\nexport function DropZoneFileItemMetadata(props: DropZoneFileItemMetadataProps) {\n\tconst {\n\t\tasChild,\n\t\tchildren,\n\t\tclassNames,\n\t\tfileState: fileStateProp,\n\t\tsize = \"default\",\n\t\t...restOfProps\n\t} = props;\n\n\tconst fileItemContextValue = useFileItemContext();\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst fileState = fileStateProp ?? fileItemContextValue?.fileState;\n\n\tif (!fileState) {\n\t\treturn null;\n\t}\n\n\tconst Component = asChild ? Slot.Root : \"div\";\n\n\tconst resolvedChildren = isFunction(children) ? children({ fileState }) : children;\n\n\tconst getDefaultMetadataChildren = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<p\n\t\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\t\"truncate\",\n\t\t\t\t\t\tsize === \"default\" && \"text-[14px] font-medium\",\n\t\t\t\t\t\tsize === \"sm\" && \"text-[13px] leading-snug\",\n\t\t\t\t\t\tclassNames?.name\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{fileState.file.name}\n\t\t\t\t</p>\n\t\t\t\t<p\n\t\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\t\"truncate text-zu-muted-foreground\",\n\t\t\t\t\t\tsize === \"default\" && \"text-[12px]\",\n\t\t\t\t\t\tsize === \"sm\" && \"text-[11px] leading-snug\",\n\t\t\t\t\t\tclassNames?.size\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{isNumber(fileState.file.size) && formatBytes(fileState.file.size)}\n\t\t\t\t</p>\n\t\t\t\t{fileState.error && (\n\t\t\t\t\t<p className=\"text-[12px] text-zu-destructive\">{fileState.error.message}</p>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\treturn (\n\t\t<Component {...propGetters.getFileItemMetadataProps(restOfProps)}>\n\t\t\t{resolvedChildren ?? getDefaultMetadataChildren()}\n\t\t</Component>\n\t);\n}\n\ntype DropZoneFileClearProps = PartInputProps[\"fileItemClear\"] & {\n\tasChild?: boolean;\n\tforceMount?: boolean;\n};\n\nexport function DropZoneFileClear(props: DropZoneFileClearProps) {\n\tconst { asChild, forceMount = false, ...restOfProps } = props;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst fileCount = useDropZoneStoreContext((state) => state.fileStateArray.length);\n\n\tconst shouldRender = forceMount || fileCount > 0;\n\n\tif (!shouldRender) {\n\t\treturn null;\n\t}\n\n\tconst Component = asChild ? Slot.Root : \"button\";\n\n\treturn <Component {...propGetters.getFileItemClearProps(restOfProps)} />;\n}\n","export {\n\tDropZoneArea as Area,\n\tDropZoneContainer as Container,\n\tDropZoneContext as Context,\n\tDropZoneFileClear as FileClear,\n\tDropZoneFileItem as FileItem,\n\tDropZoneFileItemDelete as FileItemDelete,\n\tDropZoneFileItemMetadata as FileItemMetadata,\n\tDropZoneFileItemPreview as FileItemPreview,\n\tDropZoneFileItemProgress as FileItemProgress,\n\tDropZoneFileList as FileList,\n\tDropZoneInput as Input,\n\tDropZoneRoot as Root,\n\tDropZoneTrigger as Trigger,\n} from \"./drop-zone\";\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { DiscriminatedRenderItemProps, DiscriminatedRenderProps, InferProps, Pol
2
2
  import { UnionDiscriminator } from "@zayne-labs/toolkit-type-helpers";
3
3
  import * as React$1 from "react";
4
4
  import "@zayne-labs/toolkit-react";
5
- import * as react_jsx_runtime32 from "react/jsx-runtime";
5
+ import * as react_jsx_runtime23 from "react/jsx-runtime";
6
6
  import { Control, ControllerFieldState, ControllerProps, ControllerRenderProps, FieldPath, FieldPathValue, FieldPathValues, RegisterOptions, UseFormReturn, UseFormStateReturn, useFormContext as useFormRootContext } from "react-hook-form";
7
7
 
8
8
  //#region src/components/ui/form/form-context.d.ts
@@ -38,7 +38,7 @@ type FormRootProps<TFieldValues extends FieldValues> = InferProps<"form"> & Part
38
38
  children: React$1.ReactNode;
39
39
  methods: UseFormReturn<TFieldValues>;
40
40
  };
41
- declare function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>): react_jsx_runtime32.JSX.Element;
41
+ declare function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>): react_jsx_runtime23.JSX.Element;
42
42
  type FormFieldProps<TControl, TFieldValues extends FieldValues> = (TControl extends (Control<infer TValues>) ? {
43
43
  control?: never;
44
44
  name: FieldPath<TValues>;
@@ -52,7 +52,7 @@ type FormFieldProps<TControl, TFieldValues extends FieldValues> = (TControl exte
52
52
  className?: never;
53
53
  withWrapper: false;
54
54
  });
55
- declare function FormField<TControl, TFieldValues extends FieldValues = FieldValues>(props: FormFieldProps<TControl, TFieldValues>): react_jsx_runtime32.JSX.Element;
55
+ declare function FormField<TControl, TFieldValues extends FieldValues = FieldValues>(props: FormFieldProps<TControl, TFieldValues>): react_jsx_runtime23.JSX.Element;
56
56
  type FormFieldControllerRenderFn = (props: {
57
57
  field: Omit<ControllerRenderProps, "value"> & {
58
58
  value: never;
@@ -63,20 +63,20 @@ type FormFieldControllerRenderFn = (props: {
63
63
  type FormFieldControllerProps = Omit<ControllerProps<FieldValues, FieldPath<FieldValues>>, "control" | "name" | "render"> & {
64
64
  render: FormFieldControllerRenderFn;
65
65
  };
66
- declare function FormFieldController(props: FormFieldControllerProps): react_jsx_runtime32.JSX.Element;
67
- declare function FormFieldControlledField<TFieldValues extends FieldValues>(props: ControllerProps<TFieldValues>): react_jsx_runtime32.JSX.Element;
66
+ declare function FormFieldController(props: FormFieldControllerProps): react_jsx_runtime23.JSX.Element;
67
+ declare function FormFieldControlledField<TFieldValues extends FieldValues>(props: ControllerProps<TFieldValues>): react_jsx_runtime23.JSX.Element;
68
68
  declare function FormFieldContext(props: FormFieldContextProps): React$1.ReactNode;
69
- declare function FormLabel(props: InferProps<"label">): react_jsx_runtime32.JSX.Element;
70
- declare function FormInputGroup(props: InferProps<"div">): react_jsx_runtime32.JSX.Element;
69
+ declare function FormLabel(props: InferProps<"label">): react_jsx_runtime23.JSX.Element;
70
+ declare function FormInputGroup(props: InferProps<"div">): react_jsx_runtime23.JSX.Element;
71
71
  type FormSideItemProps = {
72
72
  children?: React$1.ReactNode;
73
73
  className?: string;
74
74
  };
75
- declare function FormInputLeftItem<TElement extends React$1.ElementType = "span">(props: PolymorphicPropsStrict<TElement, FormSideItemProps>): react_jsx_runtime32.JSX.Element;
75
+ declare function FormInputLeftItem<TElement extends React$1.ElementType = "span">(props: PolymorphicPropsStrict<TElement, FormSideItemProps>): react_jsx_runtime23.JSX.Element;
76
76
  declare namespace FormInputLeftItem {
77
77
  var slotSymbol: symbol;
78
78
  }
79
- declare function FormInputRightItem<TElement extends React$1.ElementType = "span">(props: PolymorphicPropsStrict<TElement, FormSideItemProps>): react_jsx_runtime32.JSX.Element;
79
+ declare function FormInputRightItem<TElement extends React$1.ElementType = "span">(props: PolymorphicPropsStrict<TElement, FormSideItemProps>): react_jsx_runtime23.JSX.Element;
80
80
  declare namespace FormInputRightItem {
81
81
  var slotSymbol: symbol;
82
82
  }
@@ -112,13 +112,13 @@ type FormSelectPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =
112
112
  };
113
113
  declare function FormInputPrimitive<TFieldValues extends FieldValues>(props: FormInputPrimitiveProps<TFieldValues> & {
114
114
  rules?: RegisterOptions;
115
- }): react_jsx_runtime32.JSX.Element;
115
+ }): react_jsx_runtime23.JSX.Element;
116
116
  declare function FormTextAreaPrimitive<TFieldValues extends FieldValues>(props: FormTextAreaPrimitiveProps<TFieldValues> & {
117
117
  rules?: RegisterOptions;
118
- }): react_jsx_runtime32.JSX.Element;
118
+ }): react_jsx_runtime23.JSX.Element;
119
119
  declare function FormSelectPrimitive<TFieldValues extends FieldValues>(props: FormSelectPrimitiveProps<TFieldValues> & {
120
120
  rules?: RegisterOptions;
121
- }): react_jsx_runtime32.JSX.Element;
121
+ }): react_jsx_runtime23.JSX.Element;
122
122
  type PrimitivePropsToOmit = "control" | "formState" | "name";
123
123
  type FormInputProps = Omit<FormInputPrimitiveProps, PrimitivePropsToOmit> & {
124
124
  rules?: RegisterOptions;
@@ -136,10 +136,10 @@ type CombinedFormInputProps = (FormSelectProps & {
136
136
  }) | FormInputProps;
137
137
  declare function FormInput(props: CombinedFormInputProps & {
138
138
  rules?: RegisterOptions;
139
- }): react_jsx_runtime32.JSX.Element;
140
- declare function FormTextArea(props: FormTextAreaProps): react_jsx_runtime32.JSX.Element;
141
- declare function FormSelect(props: FormSelectProps): react_jsx_runtime32.JSX.Element;
142
- declare function FormDescription(props: InferProps<"p">): react_jsx_runtime32.JSX.Element;
139
+ }): react_jsx_runtime23.JSX.Element;
140
+ declare function FormTextArea(props: FormTextAreaProps): react_jsx_runtime23.JSX.Element;
141
+ declare function FormSelect(props: FormSelectProps): react_jsx_runtime23.JSX.Element;
142
+ declare function FormDescription(props: InferProps<"p">): react_jsx_runtime23.JSX.Element;
143
143
  type ErrorMessageRenderProps = {
144
144
  className: string;
145
145
  "data-index": number;
@@ -199,11 +199,11 @@ type FormErrorMessageProps<TControl, TFieldValues extends FieldValues> = (TContr
199
199
  errorField: string;
200
200
  type: "root";
201
201
  };
202
- declare function FormErrorMessage<TControl, TFieldValues extends FieldValues = FieldValues>(props: FormErrorMessageProps<TControl, TFieldValues>): react_jsx_runtime32.JSX.Element;
202
+ declare function FormErrorMessage<TControl, TFieldValues extends FieldValues = FieldValues>(props: FormErrorMessageProps<TControl, TFieldValues>): react_jsx_runtime23.JSX.Element;
203
203
  type FormSubmitProps = InferProps<"button"> & {
204
204
  asChild?: boolean;
205
205
  };
206
- declare function FormSubmit<TElement extends React$1.ElementType = "button">(props: PolymorphicPropsStrict<TElement, FormSubmitProps>): react_jsx_runtime32.JSX.Element;
206
+ declare function FormSubmit<TElement extends React$1.ElementType = "button">(props: PolymorphicPropsStrict<TElement, FormSubmitProps>): react_jsx_runtime23.JSX.Element;
207
207
  type GetFieldValue<TFieldPathOrPaths, TFieldValues extends FieldValues> = TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> ? FieldPathValues<TFieldValues, TFieldPathOrPaths> : TFieldPathOrPaths extends FieldPath<TFieldValues> ? FieldPathValue<TFieldValues, TFieldPathOrPaths> : unknown;
208
208
  type FormSubscribeToFieldValueRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {
209
209
  value: GetFieldValue<TFieldPathOrPaths, TFieldValues>;
@@ -224,4 +224,4 @@ declare namespace form_parts_d_exports {
224
224
  }
225
225
  //#endregion
226
226
  export { FieldValues, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormErrorMessagePrimitiveProps, FormField, FormFieldContext, FormFieldControlledField, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputProps, FormInputRightItem, FormLabel, FormRoot, FormSelect, FormSelectPrimitive, FormSelectProps, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextArea, FormTextAreaPrimitive, FormTextAreaProps, form_parts_d_exports, useFormRootContext, useStrictFormFieldContext };
227
- //# sourceMappingURL=index-B4YvRWlE.d.ts.map
227
+ //# sourceMappingURL=index-BJUTFSec.d.ts.map
@@ -1,10 +1,10 @@
1
1
  import { InferProps } from "@zayne-labs/toolkit-react/utils";
2
2
  import * as React from "react";
3
- import * as react_jsx_runtime31 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime22 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/common/slot/slot.d.ts
6
6
  type SlotProps = InferProps<HTMLElement>;
7
- declare function SlotRoot(props: SlotProps): react_jsx_runtime31.JSX.Element | null;
7
+ declare function SlotRoot(props: SlotProps): react_jsx_runtime22.JSX.Element | null;
8
8
  declare function SlotSlottable({
9
9
  children
10
10
  }: Pick<SlotProps, "children">): React.ReactNode;
@@ -13,4 +13,4 @@ declare namespace slot_parts_d_exports {
13
13
  }
14
14
  //#endregion
15
15
  export { SlotRoot, SlotSlottable, slot_parts_d_exports };
16
- //# sourceMappingURL=index-CuJVxLEc.d.ts.map
16
+ //# sourceMappingURL=index-BeCCgTjL.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import * as React$1 from "react";
2
2
  import { Component } from "react";
3
3
  import "@zayne-labs/toolkit-react";
4
- import * as react_jsx_runtime17 from "react/jsx-runtime";
4
+ import * as react_jsx_runtime8 from "react/jsx-runtime";
5
5
 
6
6
  //#region src/components/common/error-boundary/types.d.ts
7
7
  type FallbackProps = {
@@ -49,7 +49,7 @@ declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryS
49
49
  };
50
50
  componentDidCatch(error: Error, info: React$1.ErrorInfo): void;
51
51
  componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState): void;
52
- render(): react_jsx_runtime17.JSX.Element;
52
+ render(): react_jsx_runtime8.JSX.Element;
53
53
  }
54
54
  //#endregion
55
55
  //#region src/components/common/error-boundary/error-boundary-context.d.ts
@@ -66,4 +66,4 @@ declare const useErrorBoundary: <TError extends Error>() => {
66
66
  };
67
67
  //#endregion
68
68
  export { ErrorBoundary, type ErrorBoundaryContextType, ErrorBoundaryProps, FallbackProps, useErrorBoundary, useErrorBoundaryContext };
69
- //# sourceMappingURL=index-BAywimP3.d.ts.map
69
+ //# sourceMappingURL=index-C0L6V4Zq.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { DiscriminatedRenderItemProps, PolymorphicPropsStrict } from "@zayne-labs/toolkit-react/utils";
2
2
  import { Prettify } from "@zayne-labs/toolkit-type-helpers";
3
3
  import * as React from "react";
4
- import * as react_jsx_runtime8 from "react/jsx-runtime";
4
+ import * as react_jsx_runtime7 from "react/jsx-runtime";
5
5
 
6
6
  //#region src/components/common/for/for.d.ts
7
7
  type ArrayOrNumber = number | readonly unknown[];
@@ -13,11 +13,11 @@ type ForProps<TArray extends ArrayOrNumber> = Prettify<{
13
13
  fallback?: React.ReactNode;
14
14
  } & ForRenderProps<TArray>>;
15
15
  declare function For<const TArray extends ArrayOrNumber>(props: ForProps<TArray>): string | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null;
16
- declare function ForWithWrapper<const TArray extends ArrayOrNumber, TElement extends React.ElementType = "ul">(props: PolymorphicPropsStrict<TElement, ForProps<TArray>>): react_jsx_runtime8.JSX.Element;
16
+ declare function ForWithWrapper<const TArray extends ArrayOrNumber, TElement extends React.ElementType = "ul">(props: PolymorphicPropsStrict<TElement, ForProps<TArray>>): react_jsx_runtime7.JSX.Element;
17
17
  //#endregion
18
18
  //#region src/components/common/for/getElementList.d.ts
19
19
  type GetElementListResult<TVariant extends "base" | "withWrapper"> = TVariant extends "base" ? [typeof For] : [typeof ForWithWrapper];
20
20
  declare const getElementList: <TVariant extends "base" | "withWrapper" = "withWrapper">(variant?: TVariant) => GetElementListResult<TVariant>;
21
21
  //#endregion
22
22
  export { For, ForRenderProps, ForWithWrapper, getElementList };
23
- //# sourceMappingURL=index-BT0UvcRp.d.ts.map
23
+ //# sourceMappingURL=index-DFHOx2Pf.d.ts.map
@@ -1,8 +1,8 @@
1
- import { ErrorBoundaryProps } from "./index-BAywimP3.js";
2
- import { SuspenseWithBoundaryProps } from "./index-ATxxr1XS.js";
1
+ import { ErrorBoundaryProps } from "./index-C0L6V4Zq.js";
2
+ import { SuspenseWithBoundaryProps } from "./index-lw5txqar.js";
3
3
  import { GetSlotComponentProps } from "@zayne-labs/toolkit-react/utils";
4
4
  import * as React from "react";
5
- import * as react_jsx_runtime0 from "react/jsx-runtime";
5
+ import * as react_jsx_runtime9 from "react/jsx-runtime";
6
6
 
7
7
  //#region src/components/common/await/await.d.ts
8
8
  type RenderPropFn<TValue> = (result: TValue) => React.ReactNode;
@@ -14,13 +14,17 @@ type AwaitRootProps<TValue> = Pick<SuspenseWithBoundaryProps, "errorFallback" |
14
14
  withErrorBoundary?: boolean;
15
15
  withSuspense?: boolean;
16
16
  };
17
- declare function AwaitRoot<TValue>(props: AwaitRootProps<TValue>): react_jsx_runtime0.JSX.Element;
17
+ declare function AwaitRoot<TValue>(props: AwaitRootProps<TValue>): react_jsx_runtime9.JSX.Element;
18
18
  type AwaitSuccessProps<TValue = unknown> = GetSlotComponentProps<"default", ChildrenType<TValue>>;
19
19
  declare function AwaitSuccess<TPromiseOrValue, TValue = Awaited<TPromiseOrValue>>(props: Pick<AwaitSuccessProps<TValue>, "children">): React.ReactNode;
20
20
  type AwaitErrorProps = GetSlotComponentProps<"error", ErrorBoundaryProps["fallback"]>;
21
- declare function AwaitError(props: AwaitErrorProps & {
22
- asChild?: boolean;
23
- }): react_jsx_runtime0.JSX.Element;
21
+ declare const AwaitError: {
22
+ (props: Pick<AwaitErrorProps, "children"> & {
23
+ asChild?: boolean;
24
+ }): React.ReactNode;
25
+ readonly slotName?: "error" | undefined;
26
+ readonly slotSymbol?: symbol;
27
+ };
24
28
  type AwaitPendingProps = GetSlotComponentProps<"pending", React.SuspenseProps["fallback"]>;
25
29
  declare const AwaitPending: {
26
30
  (props: Pick<AwaitPendingProps, "children">): React.ReactNode;
@@ -39,4 +43,4 @@ declare namespace await_parts_d_exports {
39
43
  }
40
44
  //#endregion
41
45
  export { AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, await_parts_d_exports, useAwaitContext };
42
- //# sourceMappingURL=index-C889t8UO.d.ts.map
46
+ //# sourceMappingURL=index-DXwAMkn0.d.ts.map
@@ -3,7 +3,7 @@ import * as _zayne_labs_toolkit_type_helpers0 from "@zayne-labs/toolkit-type-hel
3
3
  import { Awaitable, SelectorFn } from "@zayne-labs/toolkit-type-helpers";
4
4
  import * as react1 from "react";
5
5
  import "@zayne-labs/toolkit-react";
6
- import * as react_jsx_runtime19 from "react/jsx-runtime";
6
+ import * as react_jsx_runtime10 from "react/jsx-runtime";
7
7
  import * as _zayne_labs_toolkit_core1 from "@zayne-labs/toolkit-core";
8
8
  import { FileMeta, FileOrFileMeta, FileValidationErrorContextEach, FileValidationHooksAsync, FileValidationSettingsAsync } from "@zayne-labs/toolkit-core";
9
9
 
@@ -230,75 +230,80 @@ declare const DropZoneStoreContextProvider: (props: {
230
230
  store: _zayne_labs_toolkit_core1.StoreApi<DropZoneStore>;
231
231
  }) => react1.FunctionComponentElement<react1.ProviderProps<_zayne_labs_toolkit_core1.StoreApi<DropZoneStore>>>, useDropZoneStoreContext: <TResult = DropZoneStore>(selector?: _zayne_labs_toolkit_type_helpers0.SelectorFn<DropZoneStore, TResult> | undefined) => TResult;
232
232
  type FileItemContextType = {
233
- fileState: FileState | undefined;
233
+ fileState: FileState;
234
234
  };
235
235
  //#endregion
236
236
  //#region src/components/ui/drop-zone/drop-zone.d.ts
237
237
  type DropZoneRootProps = UseDropZoneProps & {
238
238
  children: react1.ReactNode;
239
239
  };
240
- declare function DropZoneRoot(props: DropZoneRootProps): react_jsx_runtime19.JSX.Element;
240
+ declare function DropZoneRoot(props: DropZoneRootProps): react_jsx_runtime10.JSX.Element;
241
241
  type DropZoneContextProps<TSlice> = {
242
- children: react1.ReactNode | ((props: TSlice) => react1.ReactNode);
242
+ children: react1.ReactNode | ((context: TSlice) => react1.ReactNode);
243
243
  selector?: SelectorFn<DropZoneStore, TSlice>;
244
244
  };
245
245
  declare function DropZoneContext<TSlice = DropZoneStore>(props: DropZoneContextProps<TSlice>): react1.ReactNode;
246
246
  type DropZoneContainerProps = PartInputProps["container"] & {
247
247
  asChild?: boolean;
248
248
  };
249
- declare function DropZoneContainer<TElement extends react1.ElementType = "div">(props: PolymorphicPropsStrict<TElement, DropZoneContainerProps>): react_jsx_runtime19.JSX.Element;
249
+ declare function DropZoneContainer<TElement extends react1.ElementType = "div">(props: PolymorphicPropsStrict<TElement, DropZoneContainerProps>): react_jsx_runtime10.JSX.Element;
250
250
  type DropZoneInputProps = PartInputProps["input"] & {
251
251
  asChild?: boolean;
252
252
  };
253
- declare function DropZoneInput(props: DropZoneInputProps): react_jsx_runtime19.JSX.Element;
253
+ declare function DropZoneInput(props: DropZoneInputProps): react_jsx_runtime10.JSX.Element;
254
254
  type DropZoneAreaProps<TSlice> = {
255
- children: react1.ReactNode | ((props: TSlice) => react1.ReactNode);
255
+ children: react1.ReactNode | ((context: TSlice) => react1.ReactNode);
256
256
  classNames?: Partial<Record<Extract<keyof PartInputProps, "container" | "input">, string>>;
257
257
  extraProps?: Pick<PartInputProps, "container" | "input">;
258
258
  selector?: SelectorFn<DropZoneStore, TSlice>;
259
259
  };
260
- declare function DropZoneArea<TSlice = DropZoneStore>(props: DropZoneAreaProps<TSlice>): react_jsx_runtime19.JSX.Element;
260
+ declare function DropZoneArea<TSlice = DropZoneStore>(props: DropZoneAreaProps<TSlice>): react_jsx_runtime10.JSX.Element;
261
261
  type DropZoneTriggerProps = PartInputProps["trigger"] & {
262
262
  asChild?: boolean;
263
263
  };
264
- declare function DropZoneTrigger(props: DropZoneTriggerProps): react_jsx_runtime19.JSX.Element;
264
+ declare function DropZoneTrigger(props: DropZoneTriggerProps): react_jsx_runtime10.JSX.Element;
265
+ type ListPerItemContext = Pick<DropZoneStore, "actions"> & {
266
+ array: DropZoneStore["fileStateArray"];
267
+ fileState: DropZoneStore["fileStateArray"][number];
268
+ index: number;
269
+ };
265
270
  type FileListPerItemVariant = {
266
- children: react1.ReactNode | ((props: {
267
- actions: DropZoneStore["actions"];
268
- array: DropZoneStore["fileStateArray"];
269
- fileState: DropZoneStore["fileStateArray"][number];
270
- index: number;
271
- }) => react1.ReactNode);
271
+ children: react1.ReactNode | ((context: ListPerItemContext) => react1.ReactNode);
272
272
  renderMode?: "per-item";
273
273
  };
274
+ type ListManualListContext = Pick<DropZoneStore, "actions" | "fileStateArray">;
274
275
  type FileListManualListVariant = {
275
- children: react1.ReactNode | ((props: Pick<DropZoneStore, "actions" | "fileStateArray">) => react1.ReactNode);
276
+ children: react1.ReactNode | ((context: ListManualListContext) => react1.ReactNode);
276
277
  renderMode: "manual-list";
277
278
  };
278
279
  type DropZoneFileListProps = Omit<PartInputProps["fileList"], "children"> & {
279
280
  asChild?: boolean;
280
281
  forceMount?: boolean;
281
282
  } & (FileListManualListVariant | FileListPerItemVariant);
282
- declare function DropZoneFileList<TElement extends react1.ElementType = "ul">(props: PolymorphicPropsStrict<TElement, DropZoneFileListProps>): react_jsx_runtime19.JSX.Element;
283
+ declare function DropZoneFileList<TElement extends react1.ElementType = "ul">(props: PolymorphicPropsStrict<TElement, DropZoneFileListProps>): react_jsx_runtime10.JSX.Element;
283
284
  type DropZoneFileItemProps = FileItemContextType & PartInputProps["fileItem"] & {
284
285
  asChild?: boolean;
285
286
  };
286
- declare function DropZoneFileItem<TElement extends react1.ElementType = "li">(props: PolymorphicPropsStrict<TElement, DropZoneFileItemProps>): react_jsx_runtime19.JSX.Element;
287
+ declare function DropZoneFileItem<TElement extends react1.ElementType = "li">(props: PolymorphicPropsStrict<TElement, DropZoneFileItemProps>): react_jsx_runtime10.JSX.Element;
287
288
  type DropZoneFileItemDeleteProps = PartInputProps["fileItemDelete"] & {
288
289
  asChild?: boolean;
289
290
  };
290
- declare function DropZoneFileItemDelete(props: DropZoneFileItemDeleteProps): react_jsx_runtime19.JSX.Element;
291
+ declare function DropZoneFileItemDelete(props: DropZoneFileItemDeleteProps): react_jsx_runtime10.JSX.Element;
291
292
  type DropZoneFileItemProgressProps = PartInputProps["fileItemProgress"] & {
292
293
  asChild?: boolean;
293
294
  forceMount?: boolean;
294
295
  size?: number;
295
296
  };
296
- declare function DropZoneFileItemProgress<TElement extends react1.ElementType = "span">(props: PolymorphicPropsStrict<TElement, DropZoneFileItemProgressProps>): react_jsx_runtime19.JSX.Element | null;
297
+ declare function DropZoneFileItemProgress<TElement extends react1.ElementType = "span">(props: PolymorphicPropsStrict<TElement, DropZoneFileItemProgressProps>): react_jsx_runtime10.JSX.Element | null;
297
298
  type RenderPreviewDetails = {
298
299
  className?: string;
299
300
  node?: react1.ReactNode;
300
301
  };
301
- type RenderPreviewProp = (props: Pick<FileItemContextType, "fileState">) => {
302
+ type RenderPropContext = Pick<FileItemContextType, "fileState"> & {
303
+ fileExtension: string;
304
+ fileType: string;
305
+ };
306
+ type RenderPreview = (context: RenderPropContext) => {
302
307
  archive?: RenderPreviewDetails;
303
308
  audio?: RenderPreviewDetails;
304
309
  code?: RenderPreviewDetails;
@@ -310,25 +315,25 @@ type RenderPreviewProp = (props: Pick<FileItemContextType, "fileState">) => {
310
315
  };
311
316
  type DropZoneFileItemPreviewProps = Omit<PartInputProps["fileItemPreview"], "children"> & Partial<Pick<FileItemContextType, "fileState">> & {
312
317
  asChild?: boolean;
313
- children?: react1.ReactNode | ((props: Pick<FileItemContextType, "fileState">) => react1.ReactNode);
314
- renderPreview?: boolean | RenderPreviewProp;
318
+ children?: react1.ReactNode | ((context: RenderPropContext) => react1.ReactNode);
319
+ renderPreview?: boolean | RenderPreview;
315
320
  };
316
- declare function DropZoneFileItemPreview<TElement extends react1.ElementType>(props: PolymorphicPropsStrict<TElement, DropZoneFileItemPreviewProps>): react_jsx_runtime19.JSX.Element | null;
321
+ declare function DropZoneFileItemPreview<TElement extends react1.ElementType>(props: PolymorphicPropsStrict<TElement, DropZoneFileItemPreviewProps>): react_jsx_runtime10.JSX.Element | null;
317
322
  type DropZoneFileItemMetadataProps = Omit<PartInputProps["fileItemMetadata"], "children"> & Partial<Pick<FileItemContextType, "fileState">> & {
318
323
  asChild?: boolean;
319
- children?: react1.ReactNode | ((props: Pick<FileItemContextType, "fileState">) => react1.ReactNode);
324
+ children?: react1.ReactNode | ((context: Pick<FileItemContextType, "fileState">) => react1.ReactNode);
320
325
  classNames?: {
321
326
  name?: string;
322
327
  size?: string;
323
328
  };
324
329
  size?: "default" | "sm";
325
330
  };
326
- declare function DropZoneFileItemMetadata(props: DropZoneFileItemMetadataProps): react_jsx_runtime19.JSX.Element | null;
331
+ declare function DropZoneFileItemMetadata(props: DropZoneFileItemMetadataProps): react_jsx_runtime10.JSX.Element | null;
327
332
  type DropZoneFileClearProps = PartInputProps["fileItemClear"] & {
328
333
  asChild?: boolean;
329
334
  forceMount?: boolean;
330
335
  };
331
- declare function DropZoneFileClear(props: DropZoneFileClearProps): react_jsx_runtime19.JSX.Element | null;
336
+ declare function DropZoneFileClear(props: DropZoneFileClearProps): react_jsx_runtime10.JSX.Element | null;
332
337
  declare namespace drop_zone_parts_d_exports {
333
338
  export { DropZoneArea as Area, DropZoneContainer as Container, DropZoneContext as Context, DropZoneFileClear as FileClear, DropZoneFileItem as FileItem, DropZoneFileItemDelete as FileItemDelete, DropZoneFileItemMetadata as FileItemMetadata, DropZoneFileItemPreview as FileItemPreview, DropZoneFileItemProgress as FileItemProgress, DropZoneFileList as FileList, DropZoneInput as Input, DropZoneRoot as Root, DropZoneTrigger as Trigger };
334
339
  }
@@ -337,4 +342,4 @@ declare namespace drop_zone_parts_d_exports {
337
342
  declare const useDropZone: (props?: UseDropZoneProps) => UseDropZoneResult;
338
343
  //#endregion
339
344
  export { DropZoneArea, DropZoneContainer, DropZoneContext, DropZoneError, DropZoneFileClear, DropZoneFileItem, DropZoneFileItemDelete, DropZoneFileItemMetadata, DropZoneFileItemPreview, DropZoneFileItemProgress, DropZoneFileList, DropZoneInput, DropZoneRoot, DropZoneTrigger, drop_zone_parts_d_exports, useDropZone, useDropZoneStoreContext };
340
- //# sourceMappingURL=index-BWD8WVO-.d.ts.map
345
+ //# sourceMappingURL=index-RpfwCCWX.d.ts.map
@@ -1,20 +1,20 @@
1
1
  import { PolymorphicProps } from "@zayne-labs/toolkit-react/utils";
2
2
  import * as React from "react";
3
- import * as react_jsx_runtime1 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/ui/card/card.d.ts
6
- declare function CardRoot<TElement extends React.ElementType = "article">(props: PolymorphicProps<TElement>): react_jsx_runtime1.JSX.Element;
7
- declare function CardHeader<TElement extends React.ElementType = "header">(props: PolymorphicProps<TElement>): react_jsx_runtime1.JSX.Element;
8
- declare function CardTitle<TElement extends React.ElementType = "h3">(props: PolymorphicProps<TElement>): react_jsx_runtime1.JSX.Element;
9
- declare function CardDescription<TElement extends React.ElementType = "p">(props: PolymorphicProps<TElement>): react_jsx_runtime1.JSX.Element;
10
- declare function CardContent<TElement extends React.ElementType = "div">(props: PolymorphicProps<TElement>): react_jsx_runtime1.JSX.Element;
11
- declare function CardAction<TElement extends React.ElementType = "div">(props: PolymorphicProps<TElement>): react_jsx_runtime1.JSX.Element;
6
+ declare function CardRoot<TElement extends React.ElementType = "article">(props: PolymorphicProps<TElement>): react_jsx_runtime0.JSX.Element;
7
+ declare function CardHeader<TElement extends React.ElementType = "header">(props: PolymorphicProps<TElement>): react_jsx_runtime0.JSX.Element;
8
+ declare function CardTitle<TElement extends React.ElementType = "h3">(props: PolymorphicProps<TElement>): react_jsx_runtime0.JSX.Element;
9
+ declare function CardDescription<TElement extends React.ElementType = "p">(props: PolymorphicProps<TElement>): react_jsx_runtime0.JSX.Element;
10
+ declare function CardContent<TElement extends React.ElementType = "div">(props: PolymorphicProps<TElement>): react_jsx_runtime0.JSX.Element;
11
+ declare function CardAction<TElement extends React.ElementType = "div">(props: PolymorphicProps<TElement>): react_jsx_runtime0.JSX.Element;
12
12
  declare function CardFooter<TElement extends React.ElementType = "footer">(props: PolymorphicProps<TElement, {
13
13
  asChild?: boolean;
14
- }>): react_jsx_runtime1.JSX.Element;
14
+ }>): react_jsx_runtime0.JSX.Element;
15
15
  declare namespace card_parts_d_exports {
16
16
  export { CardAction as Action, CardContent as Content, CardDescription as Description, CardFooter as Footer, CardHeader as Header, CardRoot as Root, CardTitle as Title };
17
17
  }
18
18
  //#endregion
19
19
  export { CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_d_exports };
20
- //# sourceMappingURL=index-DVBtz0VB.d.ts.map
20
+ //# sourceMappingURL=index-bD-GMufy.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { PolymorphicPropsStrict } from "@zayne-labs/toolkit-react/utils";
2
2
  import { UnionDiscriminator } from "@zayne-labs/toolkit-type-helpers";
3
3
  import * as React$1 from "react";
4
- import * as react_jsx_runtime9 from "react/jsx-runtime";
4
+ import * as react_jsx_runtime40 from "react/jsx-runtime";
5
5
  import { StoreApi } from "@zayne-labs/toolkit-core";
6
6
 
7
7
  //#region src/components/ui/carousel/types.d.ts
@@ -79,17 +79,17 @@ type OtherCarouselProps = {
79
79
  };
80
80
  //#endregion
81
81
  //#region src/components/ui/carousel/carousel.d.ts
82
- declare function CarouselRoot<TImages extends ImagesType, TElement extends React$1.ElementType = "div">(props: PolymorphicPropsStrict<TElement, CarouselRootProps<TImages>>): react_jsx_runtime9.JSX.Element;
83
- declare function CarouselButton(props: CarouselButtonsProps): react_jsx_runtime9.JSX.Element;
84
- declare function CarouselControls(props: CarouselControlProps): react_jsx_runtime9.JSX.Element;
85
- declare function CarouselItemList<TArrayItem>(props: CarouselWrapperProps<TArrayItem>): react_jsx_runtime9.JSX.Element;
86
- declare function CarouselItem(props: OtherCarouselProps): react_jsx_runtime9.JSX.Element;
87
- declare function CarouselCaption<TElement extends React$1.ElementType = "div">(props: PolymorphicPropsStrict<TElement, OtherCarouselProps>): react_jsx_runtime9.JSX.Element;
88
- declare function CarouselIndicatorList<TArrayItem>(props: CarouselWrapperProps<TArrayItem>): react_jsx_runtime9.JSX.Element;
89
- declare function CarouselIndicator(props: CarouselIndicatorProps): react_jsx_runtime9.JSX.Element;
82
+ declare function CarouselRoot<TImages extends ImagesType, TElement extends React$1.ElementType = "div">(props: PolymorphicPropsStrict<TElement, CarouselRootProps<TImages>>): react_jsx_runtime40.JSX.Element;
83
+ declare function CarouselButton(props: CarouselButtonsProps): react_jsx_runtime40.JSX.Element;
84
+ declare function CarouselControls(props: CarouselControlProps): react_jsx_runtime40.JSX.Element;
85
+ declare function CarouselItemList<TArrayItem>(props: CarouselWrapperProps<TArrayItem>): react_jsx_runtime40.JSX.Element;
86
+ declare function CarouselItem(props: OtherCarouselProps): react_jsx_runtime40.JSX.Element;
87
+ declare function CarouselCaption<TElement extends React$1.ElementType = "div">(props: PolymorphicPropsStrict<TElement, OtherCarouselProps>): react_jsx_runtime40.JSX.Element;
88
+ declare function CarouselIndicatorList<TArrayItem>(props: CarouselWrapperProps<TArrayItem>): react_jsx_runtime40.JSX.Element;
89
+ declare function CarouselIndicator(props: CarouselIndicatorProps): react_jsx_runtime40.JSX.Element;
90
90
  declare namespace carousel_parts_d_exports {
91
91
  export { CarouselButton as Button, CarouselCaption as Caption, CarouselControls as Controls, CarouselIndicator as Indicator, CarouselIndicatorList as IndicatorGroup, CarouselItem as Item, CarouselItemList as ItemGroup, CarouselRoot as Root };
92
92
  }
93
93
  //#endregion
94
94
  export { CarouselButton, CarouselButtonsProps, CarouselCaption, CarouselControlProps, CarouselControls, CarouselIndicator, CarouselIndicatorList, CarouselIndicatorProps, CarouselItem, CarouselItemList, CarouselRoot, CarouselRootProps, CarouselStore, CarouselStoreApi, CarouselWrapperProps, ImagesType, OtherCarouselProps, carousel_parts_d_exports };
95
- //# sourceMappingURL=index-Dpt8KDv1.d.ts.map
95
+ //# sourceMappingURL=index-ipYGGqwN.d.ts.map
@@ -1,6 +1,6 @@
1
- import { ErrorBoundaryProps } from "./index-BAywimP3.js";
1
+ import { ErrorBoundaryProps } from "./index-C0L6V4Zq.js";
2
2
  import * as React from "react";
3
- import * as react_jsx_runtime18 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime6 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/common/suspense-with-boundary/suspense-with-boundary.d.ts
6
6
  type SuspenseWithBoundaryProps = {
@@ -8,7 +8,7 @@ type SuspenseWithBoundaryProps = {
8
8
  errorFallback?: ErrorBoundaryProps["fallback"];
9
9
  fallback?: React.ReactNode;
10
10
  };
11
- declare function SuspenseWithBoundary(props: SuspenseWithBoundaryProps): react_jsx_runtime18.JSX.Element;
11
+ declare function SuspenseWithBoundary(props: SuspenseWithBoundaryProps): react_jsx_runtime6.JSX.Element;
12
12
  //#endregion
13
13
  export { SuspenseWithBoundary, SuspenseWithBoundaryProps };
14
- //# sourceMappingURL=index-ATxxr1XS.d.ts.map
14
+ //# sourceMappingURL=index-lw5txqar.d.ts.map
@@ -1,2 +1,2 @@
1
- import { CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_d_exports } from "../../index-DVBtz0VB.js";
1
+ import { CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_d_exports } from "../../index-bD-GMufy.js";
2
2
  export { card_parts_d_exports as Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle };
@@ -1,2 +1,2 @@
1
- import { CarouselButton, CarouselButtonsProps, CarouselCaption, CarouselControlProps, CarouselControls, CarouselIndicator, CarouselIndicatorList, CarouselIndicatorProps, CarouselItem, CarouselItemList, CarouselRoot, CarouselRootProps, CarouselStore, CarouselStoreApi, CarouselWrapperProps, ImagesType, OtherCarouselProps, carousel_parts_d_exports } from "../../index-Dpt8KDv1.js";
1
+ import { CarouselButton, CarouselButtonsProps, CarouselCaption, CarouselControlProps, CarouselControls, CarouselIndicator, CarouselIndicatorList, CarouselIndicatorProps, CarouselItem, CarouselItemList, CarouselRoot, CarouselRootProps, CarouselStore, CarouselStoreApi, CarouselWrapperProps, ImagesType, OtherCarouselProps, carousel_parts_d_exports } from "../../index-ipYGGqwN.js";
2
2
  export { carousel_parts_d_exports as Carousel, CarouselButton, CarouselButtonsProps, CarouselCaption, CarouselControlProps, CarouselControls, CarouselIndicator, CarouselIndicatorList, CarouselIndicatorProps, CarouselItem, CarouselItemList, CarouselRoot, CarouselRootProps, CarouselStore, CarouselStoreApi, CarouselWrapperProps, ImagesType, OtherCarouselProps };
@@ -3,7 +3,7 @@
3
3
 
4
4
  import "../../error-boundary-y9Samt_s.js";
5
5
  import "../../slot-WVWfOlr3.js";
6
- import "../../await-Da5w2vIc.js";
6
+ import "../../await-DDgVzpvI.js";
7
7
  import "../../for-DK5rEY_m.js";
8
8
  import "../../show-N1ZXBhoA.js";
9
9
  import "../../suspense-with-boundary-D-1NYDV4.js";
@@ -1,2 +1,2 @@
1
- import { DropZoneArea, DropZoneContainer, DropZoneContext, DropZoneError, DropZoneFileClear, DropZoneFileItem, DropZoneFileItemDelete, DropZoneFileItemMetadata, DropZoneFileItemPreview, DropZoneFileItemProgress, DropZoneFileList, DropZoneInput, DropZoneRoot, DropZoneTrigger, drop_zone_parts_d_exports, useDropZone, useDropZoneStoreContext } from "../../index-BWD8WVO-.js";
1
+ import { DropZoneArea, DropZoneContainer, DropZoneContext, DropZoneError, DropZoneFileClear, DropZoneFileItem, DropZoneFileItemDelete, DropZoneFileItemMetadata, DropZoneFileItemPreview, DropZoneFileItemProgress, DropZoneFileList, DropZoneInput, DropZoneRoot, DropZoneTrigger, drop_zone_parts_d_exports, useDropZone, useDropZoneStoreContext } from "../../index-RpfwCCWX.js";
2
2
  export { drop_zone_parts_d_exports as DropZone, DropZoneArea, DropZoneContainer, DropZoneContext, DropZoneError, DropZoneFileClear, DropZoneFileItem, DropZoneFileItemDelete, DropZoneFileItemMetadata, DropZoneFileItemPreview, DropZoneFileItemProgress, DropZoneFileList, DropZoneInput, DropZoneRoot, DropZoneTrigger, useDropZone, useDropZoneStoreContext };
@@ -3,7 +3,7 @@
3
3
 
4
4
  import "../../error-boundary-y9Samt_s.js";
5
5
  import "../../slot-WVWfOlr3.js";
6
- import "../../await-Da5w2vIc.js";
6
+ import "../../await-DDgVzpvI.js";
7
7
  import "../../for-DK5rEY_m.js";
8
8
  import "../../show-N1ZXBhoA.js";
9
9
  import "../../suspense-with-boundary-D-1NYDV4.js";
@@ -12,6 +12,6 @@ import "../../teleport-C8TzRm4M.js";
12
12
  import "../../common-PS3X58Pj.js";
13
13
  import "../../cn-s-D7vHW1.js";
14
14
  import "../../presence-CL5_GHQH.js";
15
- import { DropZoneArea, DropZoneContainer, DropZoneContext, DropZoneError, DropZoneFileClear, DropZoneFileItem, DropZoneFileItemDelete, DropZoneFileItemMetadata, DropZoneFileItemPreview, DropZoneFileItemProgress, DropZoneFileList, DropZoneInput, DropZoneRoot, DropZoneTrigger, drop_zone_parts_exports, useDropZone, useDropZoneStoreContext } from "../../drop-zone-C9VpKJAD.js";
15
+ import { DropZoneArea, DropZoneContainer, DropZoneContext, DropZoneError, DropZoneFileClear, DropZoneFileItem, DropZoneFileItemDelete, DropZoneFileItemMetadata, DropZoneFileItemPreview, DropZoneFileItemProgress, DropZoneFileList, DropZoneInput, DropZoneRoot, DropZoneTrigger, drop_zone_parts_exports, useDropZone, useDropZoneStoreContext } from "../../drop-zone-FkkbzZ3j.js";
16
16
 
17
17
  export { drop_zone_parts_exports as DropZone, DropZoneArea, DropZoneContainer, DropZoneContext, DropZoneError, DropZoneFileClear, DropZoneFileItem, DropZoneFileItemDelete, DropZoneFileItemMetadata, DropZoneFileItemPreview, DropZoneFileItemProgress, DropZoneFileList, DropZoneInput, DropZoneRoot, DropZoneTrigger, useDropZone, useDropZoneStoreContext };
@@ -1,2 +1,2 @@
1
- import { FieldValues, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormErrorMessagePrimitiveProps, FormField, FormFieldContext, FormFieldControlledField, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputProps, FormInputRightItem, FormLabel, FormRoot, FormSelect, FormSelectPrimitive, FormSelectProps, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextArea, FormTextAreaPrimitive, FormTextAreaProps, form_parts_d_exports, useFormRootContext, useStrictFormFieldContext } from "../../index-B4YvRWlE.js";
1
+ import { FieldValues, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormErrorMessagePrimitiveProps, FormField, FormFieldContext, FormFieldControlledField, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputProps, FormInputRightItem, FormLabel, FormRoot, FormSelect, FormSelectPrimitive, FormSelectProps, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextArea, FormTextAreaPrimitive, FormTextAreaProps, form_parts_d_exports, useFormRootContext, useStrictFormFieldContext } from "../../index-BJUTFSec.js";
2
2
  export { FieldValues, form_parts_d_exports as Form, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormErrorMessagePrimitiveProps, FormField, FormFieldContext, FormFieldControlledField, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputProps, FormInputRightItem, FormLabel, FormRoot, FormSelect, FormSelectPrimitive, FormSelectProps, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextArea, FormTextAreaPrimitive, FormTextAreaProps, useStrictFormFieldContext as useFormFieldContext, useFormRootContext };
@@ -1,6 +1,6 @@
1
- import { card_parts_d_exports } from "../index-DVBtz0VB.js";
2
- import { carousel_parts_d_exports } from "../index-Dpt8KDv1.js";
1
+ import { card_parts_d_exports } from "../index-bD-GMufy.js";
2
+ import { carousel_parts_d_exports } from "../index-ipYGGqwN.js";
3
3
  import { useDragScroll } from "../index-C1GPFYKG.js";
4
- import { drop_zone_parts_d_exports, useDropZone } from "../index-BWD8WVO-.js";
5
- import { form_parts_d_exports } from "../index-B4YvRWlE.js";
4
+ import { drop_zone_parts_d_exports, useDropZone } from "../index-RpfwCCWX.js";
5
+ import { form_parts_d_exports } from "../index-BJUTFSec.js";
6
6
  export { card_parts_d_exports as Card, carousel_parts_d_exports as Carousel, drop_zone_parts_d_exports as DropZone, form_parts_d_exports as Form, useDragScroll, useDropZone };
@@ -1,6 +1,6 @@
1
1
  import "../error-boundary-y9Samt_s.js";
2
2
  import "../slot-WVWfOlr3.js";
3
- import "../await-Da5w2vIc.js";
3
+ import "../await-DDgVzpvI.js";
4
4
  import "../for-DK5rEY_m.js";
5
5
  import "../show-N1ZXBhoA.js";
6
6
  import "../suspense-with-boundary-D-1NYDV4.js";
@@ -12,7 +12,7 @@ import { card_parts_exports } from "../card-DDLJVCwL.js";
12
12
  import { carousel_parts_exports } from "../carousel-B051PAAX.js";
13
13
  import { useDragScroll } from "../drag-scroll-Bb1SG4On.js";
14
14
  import "../presence-CL5_GHQH.js";
15
- import { drop_zone_parts_exports, useDropZone } from "../drop-zone-C9VpKJAD.js";
15
+ import { drop_zone_parts_exports, useDropZone } from "../drop-zone-FkkbzZ3j.js";
16
16
  import { form_parts_exports } from "../form-DyGy9LnA.js";
17
17
 
18
18
  export { card_parts_exports as Card, carousel_parts_exports as Carousel, drop_zone_parts_exports as DropZone, form_parts_exports as Form, useDragScroll, useDropZone };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zayne-labs/ui-react",
3
3
  "type": "module",
4
- "version": "0.10.7",
4
+ "version": "0.10.9",
5
5
  "description": "A composable UI/UI-utilities components library. ",
6
6
  "author": "Ryan Zayne",
7
7
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"drop-zone-C9VpKJAD.js","names":["generateFileID","generateFileIDPrimitive","initFileStateArray: DropZoneState[\"fileStateArray\"]","newFileStateArray: DropZoneState[\"fileStateArray\"]","generateFileID","updatedFileStateArray: DropZoneState[\"fileStateArray\"]","useDropZoneStore: UseDropZoneResult[\"useDropZoneStore\"]","getContainerProps: UseDropZoneResult[\"propGetters\"][\"getContainerProps\"]","getInputProps: UseDropZoneResult[\"propGetters\"][\"getInputProps\"]","getTriggerProps: UseDropZoneResult[\"propGetters\"][\"getTriggerProps\"]","getFileListProps: UseDropZoneResult[\"propGetters\"][\"getFileListProps\"]","getFileItemProps: UseDropZoneResult[\"propGetters\"][\"getFileItemProps\"]","getFileItemProgressProps: UseDropZoneResult[\"propGetters\"][\"getFileItemProgressProps\"]","getFileItemDeleteProps: UseDropZoneResult[\"propGetters\"][\"getFileItemDeleteProps\"]","getFileItemPreviewProps: UseDropZoneResult[\"propGetters\"][\"getFileItemPreviewProps\"]","getFileItemMetadataProps: UseDropZoneResult[\"propGetters\"][\"getFileItemMetadataProps\"]","getFileItemClearProps: UseDropZoneResult[\"propGetters\"][\"getFileItemClearProps\"]","Component","Slot.Root"],"sources":["../../src/components/ui/drop-zone/drop-zone-context.ts","../../src/components/ui/drop-zone/icons.tsx","../../src/components/ui/drop-zone/utils.ts","../../src/components/ui/drop-zone/drop-zone-store.ts","../../src/components/ui/drop-zone/use-drop-zone.ts","../../src/components/ui/drop-zone/drop-zone.tsx","../../src/components/ui/drop-zone/drop-zone-parts.ts"],"sourcesContent":["import { createCustomContext } from \"@zayne-labs/toolkit-react\";\nimport { createZustandContext } from \"@zayne-labs/toolkit-react/zustand\";\nimport type { DropZoneStore } from \"./drop-zone-store\";\nimport type { FileState, UseDropZoneResult } from \"./types\";\n\nconst [DropZoneStoreContextProvider, useDropZoneStoreContext] = createZustandContext<DropZoneStore>({\n\thookName: \"useDropZoneStoreContext\",\n\tname: \"DropZoneStoreContext\",\n\tproviderName: \"DropZoneRoot\",\n});\n\nexport type DropZoneRootContextType = Pick<\n\tUseDropZoneResult,\n\t\"disabled\" | \"disableInternalStateSubscription\" | \"inputRef\" | \"propGetters\"\n>;\n\nconst [DropZoneRootContextProvider, useDropZoneRootContext] = createCustomContext<DropZoneRootContextType>(\n\t{\n\t\thookName: \"useDropZoneRootContext\",\n\t\tname: \"DropZoneRootContext\",\n\t\tproviderName: \"DropZoneRoot\",\n\t}\n);\n\nexport type FileItemContextType = {\n\tfileState: FileState | undefined;\n};\n\nconst [FileItemContextProvider, useFileItemContext] = createCustomContext({\n\tdefaultValue: null as unknown as FileItemContextType,\n\thookName: \"useFileItemContext\",\n\tname: \"FileItemContext\",\n\tproviderName: \"FileItem\",\n\tstrict: false,\n});\n\nexport {\n\tDropZoneRootContextProvider,\n\tDropZoneStoreContextProvider,\n\tFileItemContextProvider,\n\tuseDropZoneRootContext,\n\tuseDropZoneStoreContext,\n\tuseFileItemContext,\n};\n","import * as React from \"react\";\n\nexport const FileVideoIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4m-10 3l5 3l-5 3z\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileAudioIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3\" />\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileTextIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4M10 9H8m8 4H8m8 4H8\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileCodeIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M10 12.5L8 15l2 2.5m4-5l2 2.5l-2 2.5M14 2v4a2 2 0 0 0 2 2h4\" />\n\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileArchiveIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M10 12v-1m0 7v-2m0-9V6m4-4v4a2 2 0 0 0 2 2h4\" />\n\t\t\t<path d=\"M15.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v16a2 2 0 0 0 .274 1.01\" />\n\t\t\t<circle cx=\"10\" cy=\"20\" r=\"2\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileCogIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4M3.2 12.9l-.9-.4m.9 2.6l-.9.4\" />\n\t\t\t<path d=\"M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5m.9 4.7l-.4-.9m.4 6.5l-.4.9m3-7.4l-.4.9m.4 6.5l-.4-.9m2.6-4.3l-.9.4m.9 2.6l-.9-.4\" />\n\t\t\t<circle cx=\"6\" cy=\"14\" r=\"3\" />\n\t\t</g>\n\t</svg>\n);\n\nexport const FileIcon = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t{/* Icon from Lucide by Lucide Contributors - https://github.com/lucide-icons/lucide/blob/main/LICENSE */}\n\t\t<g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\">\n\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n\t\t</g>\n\t</svg>\n);\n","import {\n\tcreateFileUrl,\n\ttype FileOrFileMeta,\n\ttype FileValidationErrorContextEach,\n\tgenerateFileID as generateFileIDPrimitive,\n} from \"@zayne-labs/toolkit-core\";\nimport { isFile, isObject, isString } from \"@zayne-labs/toolkit-type-helpers\";\nimport type { FileState, FileStateOrIDProp, PartProps } from \"./types\";\n\nexport const generateFileID = generateFileIDPrimitive;\n\nexport const createObjectURL = (\n\tfile: FileOrFileMeta,\n\tdisallowPreviewForNonImageFiles: boolean | undefined\n) => {\n\tif (disallowPreviewForNonImageFiles && !file.type?.startsWith(\"image/\")) return;\n\n\treturn createFileUrl(file);\n};\n\nexport const clearObjectURL = (\n\tfileState: FileState | undefined,\n\tdisallowPreviewForNonImageFiles: boolean | undefined\n) => {\n\tif (!isFile(fileState?.file)) return;\n\n\tif (disallowPreviewForNonImageFiles && !fileState.file.type.startsWith(\"image/\")) return;\n\n\tif (!fileState.preview) return;\n\n\tURL.revokeObjectURL(fileState.preview);\n};\n\nexport const isMatchingFile = (\n\toptions: FileStateOrIDProp & {\n\t\tfileState: FileOrFileMeta | FileState;\n\t}\n) => {\n\tconst { fileState, fileStateOrID } = options;\n\n\tconst fileID = isFile(fileState) ? generateFileID(fileState) : fileState.id;\n\n\tif (isString(fileStateOrID)) {\n\t\treturn fileID === fileStateOrID;\n\t}\n\n\tif (isFile(fileStateOrID)) {\n\t\tconst generatedFileID = generateFileID(fileStateOrID);\n\t\treturn fileID === generatedFileID;\n\t}\n\n\treturn fileID === fileStateOrID.id;\n};\n\ntype FromCamelToKebabCase<TString extends string> =\n\tTString extends `${infer First}${infer Rest}` ?\n\t\tFirst extends Uppercase<First> ?\n\t\t\t`-${Lowercase<First>}${FromCamelToKebabCase<Rest>}`\n\t\t:\t`${First}${FromCamelToKebabCase<Rest>}`\n\t:\t\"\";\n\nexport const getScopeAttrs = (part: FromCamelToKebabCase<keyof PartProps>) => {\n\treturn {\n\t\t/* eslint-disable perfectionist/sort-objects -- I need this order to be maintained */\n\t\t\"data-slot\": `dropzone-${part}`,\n\t\t\"data-scope\": \"dropzone\",\n\t\t\"data-part\": part,\n\t\t/* eslint-enable perfectionist/sort-objects -- I need this order to be maintained */\n\t} as const;\n};\n\nconst dropZoneErrorSymbol = Symbol(\"DropZoneError\");\n\nexport class DropZoneError extends Error {\n\treadonly dropZoneErrorSymbol = dropZoneErrorSymbol;\n\tfile?: FileValidationErrorContextEach[\"file\"];\n\toverride name = \"DropZoneError\" as const;\n\n\tconstructor(\n\t\tctx: Pick<FileValidationErrorContextEach, \"message\"> & {\n\t\t\tfile?: FileValidationErrorContextEach[\"file\"];\n\t\t}\n\t) {\n\t\tconst { file, message } = ctx;\n\n\t\tsuper(message);\n\n\t\tthis.file = file;\n\t}\n\n\tstatic override isError(error: unknown): error is DropZoneError {\n\t\tif (!isObject<DropZoneError>(error)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (error instanceof DropZoneError) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst actualError = error as DropZoneError;\n\n\t\treturn (\n\t\t\tactualError.dropZoneErrorSymbol === dropZoneErrorSymbol\n\t\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Allow\n\t\t\t&& actualError.name === \"DropZoneError\"\n\t\t);\n\t}\n}\n\nexport const getErrorContext = (error: DropZoneError | Error): NonNullable<FileState[\"error\"]> => {\n\tif (DropZoneError.isError(error)) {\n\t\treturn {\n\t\t\tcause: \"custom-error\",\n\t\t\tcode: \"upload-error\",\n\t\t\tfile: error.file ?? ({} as never),\n\t\t\tmessage: error.message,\n\t\t\toriginalError: error.cause ?? error,\n\t\t};\n\t}\n\n\tconst actualError = Error.isError(error) ? error : new Error(\"File upload failed\", { cause: error });\n\n\treturn {\n\t\tcause: \"custom-error\",\n\t\tcode: \"upload-error\",\n\t\tfile: isFile(actualError.cause) ? actualError.cause : ({} as never),\n\t\tmessage: Error.isError(error) ? actualError.message : String(actualError),\n\t\toriginalError: actualError,\n\t};\n};\n","import { createStore, handleFileValidationAsync, toArray } from \"@zayne-labs/toolkit-core\";\nimport { isString } from \"@zayne-labs/toolkit-type-helpers\";\nimport type { DropZoneActions, DropZoneState, UseDropZoneProps } from \"./types\";\nimport { clearObjectURL, createObjectURL, generateFileID, getErrorContext, isMatchingFile } from \"./utils\";\n\nexport type DropZoneStore = DropZoneActions & DropZoneState;\n\ntype RequiredUseDropZoneProps = {\n\t[Key in keyof Required<UseDropZoneProps>]: UseDropZoneProps[Key] | undefined;\n};\n\ntype InitStoreValues = Omit<\n\tRequiredUseDropZoneProps,\n\t\"disabled\" | \"disableInternalStateSubscription\" | \"extraProps\" | \"shouldOpenFilePickerOnAreaClick\"\n> & { inputRef: React.RefObject<HTMLInputElement | null> };\n\nexport const createDropZoneStore = (initStoreValues: InitStoreValues) => {\n\tconst {\n\t\tallowedFileTypes,\n\t\tdisablePreviewForNonImageFiles,\n\t\tinitialFiles,\n\t\tinputRef,\n\t\tmaxFileCount,\n\t\tmaxFileSize,\n\t\tmultiple,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\tonValidationError,\n\t\tonValidationSuccess,\n\t\trejectDuplicateFiles,\n\t\tvalidator,\n\t} = initStoreValues;\n\n\tconst initialFileArray = toArray(initialFiles).filter(Boolean);\n\n\tconst clearInputValue = () => {\n\t\tif (!inputRef.current) return;\n\n\t\tinputRef.current.value = \"\";\n\t};\n\n\tconst initFileStateArray: DropZoneState[\"fileStateArray\"] = initialFileArray.map((fileMeta) => ({\n\t\tfile: fileMeta,\n\t\tid: fileMeta.id,\n\t\tpreview: isString(fileMeta.url) ? fileMeta.url : undefined,\n\t\tprogress: 0,\n\t\tstatus: \"idle\",\n\t}));\n\n\tconst store = createStore<DropZoneStore>((set, get) => ({\n\t\tdisabled: false,\n\t\terrors: [],\n\t\tfileStateArray: initFileStateArray,\n\t\tisDraggingOver: false,\n\t\tisInvalid: false,\n\n\t\t// eslint-disable-next-line perfectionist/sort-objects -- ignore\n\t\tactions: {\n\t\t\taddFiles: async (files) => {\n\t\t\t\tif (!files || files.length === 0) {\n\t\t\t\t\tconsole.warn(\"No file selected!\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { actions, fileStateArray } = get();\n\n\t\t\t\t// == In single file mode, only use the first file\n\t\t\t\tconst resolvedNewFiles = !multiple ? [files[0]] : files;\n\n\t\t\t\tconst { errors, validFiles } = await handleFileValidationAsync({\n\t\t\t\t\texistingFiles: fileStateArray.map((fileWithPreview) => fileWithPreview.file),\n\t\t\t\t\thooks: {\n\t\t\t\t\t\tonErrorEach: onValidationError,\n\t\t\t\t\t\tonSuccessBatch: onValidationSuccess,\n\t\t\t\t\t},\n\t\t\t\t\tnewFiles: resolvedNewFiles,\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tallowedFileTypes,\n\t\t\t\t\t\tmaxFileCount,\n\t\t\t\t\t\tmaxFileSize,\n\t\t\t\t\t\trejectDuplicateFiles,\n\t\t\t\t\t\tvalidator,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tif (validFiles.length === 0) {\n\t\t\t\t\tset({ errors, isDraggingOver: false });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst newFileStateArray: DropZoneState[\"fileStateArray\"] = validFiles.map((file) => ({\n\t\t\t\t\tfile,\n\t\t\t\t\tid: generateFileID(file),\n\t\t\t\t\tpreview: createObjectURL(file, disablePreviewForNonImageFiles),\n\t\t\t\t\tprogress: 0,\n\t\t\t\t\tstatus: \"idle\",\n\t\t\t\t}));\n\n\t\t\t\tset({\n\t\t\t\t\terrors,\n\t\t\t\t\tfileStateArray: !multiple ? newFileStateArray : [...fileStateArray, ...newFileStateArray],\n\t\t\t\t\tisDraggingOver: false,\n\t\t\t\t});\n\n\t\t\t\tawait actions.handleFileUpload({ newFileStateArray });\n\t\t\t},\n\n\t\t\tclearErrors: () => {\n\t\t\t\tset({ errors: [], isInvalid: false });\n\t\t\t},\n\n\t\t\tclearFiles: () => {\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tactions.clearObjectURLs();\n\n\t\t\t\tset({ errors: [], fileStateArray: [], isInvalid: false });\n\t\t\t},\n\n\t\t\tclearObjectURLs: () => {\n\t\t\t\tconst { fileStateArray } = get();\n\n\t\t\t\tfor (const fileState of fileStateArray) {\n\t\t\t\t\tclearObjectURL(fileState, disablePreviewForNonImageFiles);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\thandleChange: async (event) => {\n\t\t\t\tconst fileList = event.target.files;\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tawait actions.addFiles(fileList);\n\n\t\t\t\tclearInputValue();\n\t\t\t},\n\n\t\t\thandleDragEnter: (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tset({ isDraggingOver: true });\n\t\t\t},\n\n\t\t\thandleDragLeave: (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tset({ isDraggingOver: false });\n\t\t\t},\n\n\t\t\thandleDragOver: (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t},\n\n\t\t\thandleDrop: async (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tconst fileList = event.dataTransfer.files;\n\n\t\t\t\tawait actions.addFiles(fileList);\n\t\t\t},\n\n\t\t\thandleFileUpload: async (context) => {\n\t\t\t\tconst { newFileStateArray } = context;\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tif (!onUpload) {\n\t\t\t\t\tfor (const fileState of newFileStateArray) {\n\t\t\t\t\t\tactions.updateFileState({ fileStateOrID: fileState, progress: 100, status: \"success\" });\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait onUpload({\n\t\t\t\t\t\tfileStateArray: newFileStateArray,\n\t\t\t\t\t\tonError: (ctx) => {\n\t\t\t\t\t\t\tconst { error, fileStateOrID } = ctx;\n\n\t\t\t\t\t\t\tconst errorContext = getErrorContext(error);\n\n\t\t\t\t\t\t\tactions.updateFileState({ error: errorContext, fileStateOrID, status: \"error\" });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonProgress: (ctx) => {\n\t\t\t\t\t\t\tconst { fileStateOrID, progress } = ctx;\n\n\t\t\t\t\t\t\tactions.updateFileState({ fileStateOrID, progress });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonSuccess: (ctx) => {\n\t\t\t\t\t\t\tconst { fileStateOrID } = ctx;\n\n\t\t\t\t\t\t\tactions.updateFileState({ fileStateOrID, progress: 100, status: \"success\" });\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\t// Handle Errors\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst errorContext = getErrorContext(error as Error);\n\n\t\t\t\t\tfor (const fileState of newFileStateArray) {\n\t\t\t\t\t\tactions.updateFileState({\n\t\t\t\t\t\t\terror: errorContext,\n\t\t\t\t\t\t\tfileStateOrID: fileState,\n\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// set((prevState) => ({ errors: [...prevState.errors, errorContext] }));\n\t\t\t\t}\n\t\t\t},\n\n\t\t\thandleKeyDown: (event) => {\n\t\t\t\tconst isEnterKey = event.key === \"Enter\";\n\t\t\t\tconst isSpaceKey = event.key === \" \";\n\n\t\t\t\tconst isAllowedKey = isEnterKey || isSpaceKey;\n\n\t\t\t\tif (!isAllowedKey) return;\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tactions.openFilePicker();\n\t\t\t},\n\n\t\t\thandlePaste: async (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tconst { actions } = get();\n\n\t\t\t\tconst fileList = event.clipboardData.files;\n\n\t\t\t\tawait actions.addFiles(fileList);\n\t\t\t},\n\n\t\t\topenFilePicker: () => {\n\t\t\t\tinputRef.current?.click();\n\t\t\t},\n\n\t\t\tremoveFile: (ctx) => {\n\t\t\t\tconst { fileStateOrID } = ctx;\n\n\t\t\t\tconst { fileStateArray } = get();\n\n\t\t\t\tconst updatedFileStateArray = fileStateArray.flatMap((fileState) => {\n\t\t\t\t\tif (isMatchingFile({ fileState, fileStateOrID })) {\n\t\t\t\t\t\tclearObjectURL(fileState, disablePreviewForNonImageFiles);\n\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fileState;\n\t\t\t\t});\n\n\t\t\t\tset({ errors: [], fileStateArray: updatedFileStateArray });\n\t\t\t},\n\n\t\t\tupdateFileState: (ctx) => {\n\t\t\t\tconst { fileStateOrID, ...updatedFileState } = ctx;\n\n\t\t\t\tconst { fileStateArray } = get();\n\n\t\t\t\tconst updatedFileStateArray: DropZoneState[\"fileStateArray\"] = fileStateArray.map(\n\t\t\t\t\t(fileState) => {\n\t\t\t\t\t\tif (isMatchingFile({ fileState, fileStateOrID })) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...fileState,\n\t\t\t\t\t\t\t\t...updatedFileState,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn fileState;\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// const updatedErrorsState =\n\t\t\t\t// \tupdatedFileState.error ?\n\t\t\t\t// \t\t{ errors: [...errors, updatedFileState.error] satisfies DropZoneState[\"errors\"] }\n\t\t\t\t// \t:\tnull;\n\n\t\t\t\tset({ fileStateArray: updatedFileStateArray });\n\t\t\t},\n\t\t},\n\t}));\n\n\t// == File change subscription\n\tstore.subscribe.withSelector(\n\t\t(state) => state.fileStateArray,\n\t\t(fileStateArray) => onFilesChange?.({ fileStateArray })\n\t);\n\n\t// == Set `isInvalid` to true if there are errors\n\tstore.subscribe.withSelector(\n\t\t(state) => state.errors,\n\t\t(errors) => {\n\t\t\tif (errors.length === 0) return;\n\n\t\t\tstore.setState({ isInvalid: true });\n\t\t}\n\t);\n\n\t// == Update `isInvalid` to false after 1.5 seconds\n\tstore.subscribe.withSelector(\n\t\t(state) => state.isInvalid,\n\t\t(isInvalid) => {\n\t\t\tif (!isInvalid) return;\n\n\t\t\tsetTimeout(() => store.setState({ isInvalid: !isInvalid }), 1500);\n\t\t}\n\t);\n\n\treturn store;\n};\n","import { dataAttr } from \"@zayne-labs/toolkit-core\";\nimport {\n\tuseCallbackRef,\n\tuseConstant,\n\tuseShallowCompValue,\n\tuseStore,\n\tuseUnmountEffect,\n} from \"@zayne-labs/toolkit-react\";\nimport { composeRefs, composeTwoEventHandlers } from \"@zayne-labs/toolkit-react/utils\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { createDropZoneStore } from \"./drop-zone-store\";\nimport type { DropZonePropGetters, UseDropZoneProps, UseDropZoneResult } from \"./types\";\nimport { getScopeAttrs } from \"./utils\";\n\nexport const useDropZone = (props?: UseDropZoneProps): UseDropZoneResult => {\n\tconst {\n\t\tallowedFileTypes,\n\t\tdisabled = false,\n\t\tdisableInternalStateSubscription = false,\n\t\tdisablePreviewForNonImageFiles = true,\n\t\tinitialFiles,\n\t\tmaxFileCount,\n\t\tmaxFileSize,\n\t\tmultiple,\n\t\tonFilesChange,\n\t\tonUpload,\n\t\tonValidationError,\n\t\tonValidationSuccess,\n\t\trejectDuplicateFiles = true,\n\t\tshouldOpenFilePickerOnAreaClick = true,\n\t\tvalidator,\n\t} = props ?? {};\n\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tconst savedOnFilesChange = useCallbackRef(onFilesChange);\n\tconst savedOnUpload = useCallbackRef(onUpload);\n\tconst savedOnUploadError = useCallbackRef(onValidationError);\n\tconst savedOnUploadSuccess = useCallbackRef(onValidationSuccess);\n\tconst savedValidator = useCallbackRef(validator);\n\n\tconst constantInitialFiles = useConstant(() => initialFiles);\n\tconst shallowComparedMaxFileSize = useShallowCompValue(maxFileSize);\n\tconst shallowComparedAllowedFileTypes = useShallowCompValue(allowedFileTypes);\n\n\tconst storeApi = useMemo(() => {\n\t\treturn createDropZoneStore({\n\t\t\tallowedFileTypes: shallowComparedAllowedFileTypes,\n\t\t\tdisablePreviewForNonImageFiles,\n\t\t\tinitialFiles: constantInitialFiles,\n\t\t\tinputRef,\n\t\t\tmaxFileCount,\n\t\t\tmaxFileSize: shallowComparedMaxFileSize,\n\t\t\tmultiple,\n\t\t\tonFilesChange: savedOnFilesChange,\n\t\t\tonUpload: savedOnUpload,\n\t\t\tonValidationError: savedOnUploadError,\n\t\t\tonValidationSuccess: savedOnUploadSuccess,\n\t\t\trejectDuplicateFiles,\n\t\t\tvalidator: savedValidator,\n\t\t});\n\t}, [\n\t\tshallowComparedAllowedFileTypes,\n\t\tdisablePreviewForNonImageFiles,\n\t\tconstantInitialFiles,\n\t\tmaxFileCount,\n\t\tshallowComparedMaxFileSize,\n\t\tmultiple,\n\t\tsavedOnFilesChange,\n\t\tsavedOnUpload,\n\t\tsavedOnUploadError,\n\t\tsavedOnUploadSuccess,\n\t\trejectDuplicateFiles,\n\t\tsavedValidator,\n\t]);\n\n\tconst actions = storeApi.getState().actions;\n\n\tuseUnmountEffect(() => {\n\t\tactions.clearObjectURLs();\n\t});\n\n\tconst useDropZoneStore: UseDropZoneResult[\"useDropZoneStore\"] = (selector) => {\n\t\treturn useStore(storeApi, selector);\n\t};\n\n\tconst isDraggingOver = useDropZoneStore((state) =>\n\t\t!disableInternalStateSubscription ? state.isDraggingOver : null\n\t);\n\n\tconst hasFiles = useDropZoneStore((state) =>\n\t\t!disableInternalStateSubscription ? state.fileStateArray.length > 0 : null\n\t);\n\n\tconst isInvalid = useDropZoneStore((state) =>\n\t\t!disableInternalStateSubscription ? state.isInvalid : null\n\t);\n\n\tconst getContainerProps: UseDropZoneResult[\"propGetters\"][\"getContainerProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst isDisabled = disabled;\n\t\t\tconst onFileDrop = !isDisabled ? actions.handleDrop : undefined;\n\t\t\tconst onFilePaste = !isDisabled ? actions.handlePaste : undefined;\n\t\t\tconst onKeyDown = !isDisabled ? actions.handleKeyDown : undefined;\n\t\t\tconst tabIndex = !isDisabled ? 0 : undefined;\n\t\t\tconst onAreaClick =\n\t\t\t\t!isDisabled && shouldOpenFilePickerOnAreaClick ? actions.openFilePicker : undefined;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"container\"),\n\t\t\t\trole: \"region\",\n\t\t\t\t...(!disableInternalStateSubscription && {\n\t\t\t\t\t\"data-drag-over\": dataAttr(isDraggingOver),\n\t\t\t\t\t\"data-invalid\": dataAttr(isInvalid),\n\t\t\t\t}),\n\t\t\t\t...innerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t`relative flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed\n\t\t\t\t\tp-6 transition-colors duration-250 ease-out outline-none select-none hover:bg-zu-accent/30\n\t\t\t\t\tfocus-visible:border-zu-ring/50`,\n\t\t\t\t\t`data-[disabled]:pointer-events-none data-[drag-over]:border-zu-primary/30\n\t\t\t\t\tdata-[drag-over]:bg-zu-accent/30 data-[dragging]:bg-zu-accent/30\n\t\t\t\t\tdata-[invalid]:border-zu-destructive data-[invalid]:ring-zu-destructive/20`,\n\t\t\t\t\tinnerProps.className\n\t\t\t\t),\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tonClick: composeTwoEventHandlers(onAreaClick, innerProps.onClick),\n\t\t\t\tonDragEnter: composeTwoEventHandlers(actions.handleDragEnter, innerProps.onDragEnter),\n\t\t\t\tonDragLeave: composeTwoEventHandlers(actions.handleDragLeave, innerProps.onDragLeave),\n\t\t\t\tonDragOver: composeTwoEventHandlers(actions.handleDragOver, innerProps.onDragOver),\n\t\t\t\tonDrop: composeTwoEventHandlers(onFileDrop, innerProps.onDrop),\n\t\t\t\tonKeyDown: composeTwoEventHandlers(onKeyDown, innerProps.onKeyDown),\n\t\t\t\tonPaste: composeTwoEventHandlers(onFilePaste, innerProps.onPaste),\n\t\t\t\ttabIndex,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tactions.handleDragEnter,\n\t\t\tactions.handleDragLeave,\n\t\t\tactions.handleDragOver,\n\t\t\tactions.handleDrop,\n\t\t\tactions.handleKeyDown,\n\t\t\tactions.handlePaste,\n\t\t\tactions.openFilePicker,\n\t\t\tdisableInternalStateSubscription,\n\t\t\tdisabled,\n\t\t\tisDraggingOver,\n\t\t\tisInvalid,\n\t\t\tshouldOpenFilePickerOnAreaClick,\n\t\t]\n\t);\n\n\tconst getInputProps: UseDropZoneResult[\"propGetters\"][\"getInputProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst isDisabled = innerProps.disabled ?? disabled;\n\n\t\t\tconst onFileChange = !isDisabled ? actions.handleChange : undefined;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"input\"),\n\t\t\t\t...(!disableInternalStateSubscription && { \"data-drag-over\": dataAttr(isDraggingOver) }),\n\t\t\t\t...innerProps,\n\t\t\t\taccept: allowedFileTypes ? allowedFileTypes.join(\", \") : innerProps.accept,\n\t\t\t\tclassName: cnMerge(\"hidden\", innerProps.className),\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\tmultiple: multiple ?? innerProps.multiple,\n\t\t\t\tonChange: composeTwoEventHandlers(onFileChange, innerProps.onChange),\n\t\t\t\tref: composeRefs(inputRef, innerProps.ref),\n\t\t\t\ttype: \"file\",\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tactions.handleChange,\n\t\t\tallowedFileTypes,\n\t\t\tdisableInternalStateSubscription,\n\t\t\tdisabled,\n\t\t\tisDraggingOver,\n\t\t\tmultiple,\n\t\t]\n\t);\n\n\tconst getTriggerProps: UseDropZoneResult[\"propGetters\"][\"getTriggerProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst isDisabled = innerProps.disabled ?? disabled;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"trigger\"),\n\t\t\t\ttype: \"button\",\n\t\t\t\t...innerProps,\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\tonClick: composeTwoEventHandlers(actions.openFilePicker, innerProps.onClick),\n\t\t\t};\n\t\t},\n\t\t[actions.openFilePicker, disabled]\n\t);\n\n\tconst getFileListProps: UseDropZoneResult[\"propGetters\"][\"getFileListProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst { orientation = \"vertical\", ...restOfInnerProps } = innerProps;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-list\"),\n\t\t\t\t\"data-orientation\": orientation,\n\t\t\t\t...(!disableInternalStateSubscription && { \"data-state\": hasFiles ? \"active\" : \"inactive\" }),\n\t\t\t\t...restOfInnerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t`flex flex-col gap-2 data-[state=active]:animate-files-in data-[state=inactive]:animate-out\n\t\t\t\t\tdata-[state=inactive]:fade-out-0 data-[state=inactive]:slide-out-to-top-2`,\n\t\t\t\t\torientation === \"horizontal\" && \"flex-row overflow-x-auto p-1.5\",\n\t\t\t\t\tinnerProps.className\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[disableInternalStateSubscription, hasFiles]\n\t);\n\n\tconst getFileItemProps: UseDropZoneResult[\"propGetters\"][\"getFileItemProps\"] = useCallbackRef(\n\t\t(innerProps) => {\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item\"),\n\t\t\t\t...innerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t\"relative flex items-center gap-2.5 rounded-md border p-2\",\n\t\t\t\t\tinnerProps.className\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t);\n\n\tconst getFileItemProgressProps: UseDropZoneResult[\"propGetters\"][\"getFileItemProgressProps\"] =\n\t\tuseCallbackRef((innerProps) => {\n\t\t\tconst { variant = \"linear\", ...restOfInnerProps } = innerProps;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-progress\"),\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t...restOfInnerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t\"inline-flex\",\n\t\t\t\t\tvariant === \"circular\" && \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n\t\t\t\t\tvariant === \"fill\"\n\t\t\t\t\t\t&& `absolute inset-0 bg-zu-primary/50 transition-[clip-path] duration-300 ease-linear\n\t\t\t\t\t\t[clip-path:var(--clip-path)]`,\n\t\t\t\t\tvariant === \"linear\"\n\t\t\t\t\t\t&& \"relative h-1.5 w-full overflow-hidden rounded-full bg-zu-primary/20\",\n\t\t\t\t\trestOfInnerProps.className\n\t\t\t\t),\n\t\t\t};\n\t\t});\n\n\tconst getFileItemDeleteProps: UseDropZoneResult[\"propGetters\"][\"getFileItemDeleteProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst { fileStateOrID, ...restOfInnerProps } = innerProps;\n\n\t\t\tconst isDisabled = innerProps.disabled ?? disabled;\n\n\t\t\tconst onRemoveFile = () => fileStateOrID && actions.removeFile({ fileStateOrID });\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-delete\"),\n\t\t\t\ttype: \"button\",\n\t\t\t\t...restOfInnerProps,\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\tonClick: composeTwoEventHandlers(onRemoveFile, restOfInnerProps.onClick),\n\t\t\t};\n\t\t},\n\t\t[actions, disabled]\n\t);\n\n\tconst getFileItemPreviewProps: UseDropZoneResult[\"propGetters\"][\"getFileItemPreviewProps\"] =\n\t\tuseCallbackRef((innerProps) => {\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-preview\"),\n\t\t\t\t...innerProps,\n\t\t\t\tclassName: cnMerge(\n\t\t\t\t\t`relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-md\n\t\t\t\t\tbg-zu-accent/50 [&>svg]:size-10`,\n\t\t\t\t\tinnerProps.className\n\t\t\t\t),\n\t\t\t};\n\t\t});\n\n\tconst getFileItemMetadataProps: UseDropZoneResult[\"propGetters\"][\"getFileItemMetadataProps\"] =\n\t\tuseCallbackRef((innerProps) => {\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-metadata\"),\n\t\t\t\t...innerProps,\n\t\t\t\tclassName: cnMerge(\"flex min-w-0 grow flex-col\", innerProps.className),\n\t\t\t};\n\t\t});\n\n\tconst getFileItemClearProps: UseDropZoneResult[\"propGetters\"][\"getFileItemClearProps\"] = useCallback(\n\t\t(innerProps) => {\n\t\t\tconst isDisabled = innerProps.disabled ?? disabled;\n\n\t\t\treturn {\n\t\t\t\t...getScopeAttrs(\"file-item-clear\"),\n\t\t\t\ttype: \"button\",\n\t\t\t\t...innerProps,\n\t\t\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\t\tdisabled: isDisabled,\n\t\t\t\tonClick: composeTwoEventHandlers(actions.clearFiles, innerProps.onClick),\n\t\t\t};\n\t\t},\n\t\t[actions.clearFiles, disabled]\n\t);\n\n\tconst propGetters = useMemo<DropZonePropGetters>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tgetContainerProps,\n\t\t\t\tgetFileItemClearProps,\n\t\t\t\tgetFileItemDeleteProps,\n\t\t\t\tgetFileItemMetadataProps,\n\t\t\t\tgetFileItemPreviewProps,\n\t\t\t\tgetFileItemProgressProps,\n\t\t\t\tgetFileItemProps,\n\t\t\t\tgetFileListProps,\n\t\t\t\tgetInputProps,\n\t\t\t\tgetTriggerProps,\n\t\t\t}) satisfies DropZonePropGetters,\n\t\t[\n\t\t\tgetContainerProps,\n\t\t\tgetFileListProps,\n\t\t\tgetFileItemClearProps,\n\t\t\tgetFileItemDeleteProps,\n\t\t\tgetFileItemMetadataProps,\n\t\t\tgetFileItemPreviewProps,\n\t\t\tgetFileItemProgressProps,\n\t\t\tgetFileItemProps,\n\t\t\tgetInputProps,\n\t\t\tgetTriggerProps,\n\t\t]\n\t);\n\n\tconst savedUseDropZoneStore = useCallbackRef(useDropZoneStore);\n\n\tconst result = useMemo<UseDropZoneResult>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tdisabled,\n\t\t\t\tdisableInternalStateSubscription,\n\t\t\t\tinputRef,\n\t\t\t\tpropGetters,\n\t\t\t\tstoreApi,\n\t\t\t\tuseDropZoneStore: savedUseDropZoneStore,\n\t\t\t}) satisfies UseDropZoneResult,\n\t\t[disabled, disableInternalStateSubscription, propGetters, storeApi, savedUseDropZoneStore]\n\t);\n\n\treturn result;\n};\n","\"use client\";\n\nimport { dataAttr, formatBytes } from \"@zayne-labs/toolkit-core\";\nimport { useShallowCompSelector } from \"@zayne-labs/toolkit-react\";\nimport type { CssWithCustomProperties, PolymorphicPropsStrict } from \"@zayne-labs/toolkit-react/utils\";\nimport { type AnyFunction, isFunction, isNumber, type SelectorFn } from \"@zayne-labs/toolkit-type-helpers\";\nimport * as React from \"react\";\nimport { useMemo } from \"react\";\nimport { For } from \"@/components/common\";\nimport { Presence } from \"@/components/common/presence\";\nimport { Slot } from \"@/components/common/slot\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport {\n\tDropZoneRootContextProvider,\n\ttype DropZoneRootContextType,\n\tDropZoneStoreContextProvider,\n\tFileItemContextProvider,\n\ttype FileItemContextType,\n\tuseDropZoneRootContext,\n\tuseDropZoneStoreContext,\n\tuseFileItemContext,\n} from \"./drop-zone-context\";\nimport type { DropZoneStore } from \"./drop-zone-store\";\nimport {\n\tFileArchiveIcon,\n\tFileAudioIcon,\n\tFileCodeIcon,\n\tFileCogIcon,\n\tFileIcon,\n\tFileTextIcon,\n\tFileVideoIcon,\n} from \"./icons\";\nimport type { PartInputProps, UseDropZoneProps } from \"./types\";\nimport { useDropZone } from \"./use-drop-zone\";\n\ntype DropZoneRootProps = UseDropZoneProps & { children: React.ReactNode };\n\nexport function DropZoneRoot(props: DropZoneRootProps) {\n\tconst { children, ...restOfProps } = props;\n\n\tconst { disabled, disableInternalStateSubscription, inputRef, propGetters, storeApi } =\n\t\tuseDropZone(restOfProps);\n\n\tconst rootContextValue = useMemo<DropZoneRootContextType>(\n\t\t() =>\n\t\t\t({\n\t\t\t\tdisabled,\n\t\t\t\tdisableInternalStateSubscription,\n\t\t\t\tinputRef,\n\t\t\t\tpropGetters,\n\t\t\t}) satisfies DropZoneRootContextType,\n\t\t[disableInternalStateSubscription, disabled, inputRef, propGetters]\n\t);\n\n\treturn (\n\t\t<DropZoneStoreContextProvider store={storeApi}>\n\t\t\t<DropZoneRootContextProvider value={rootContextValue}>{children}</DropZoneRootContextProvider>\n\t\t</DropZoneStoreContextProvider>\n\t);\n}\n\ntype DropZoneContextProps<TSlice> = {\n\tchildren: React.ReactNode | ((props: TSlice) => React.ReactNode);\n\tselector?: SelectorFn<DropZoneStore, TSlice>;\n};\n\nexport function DropZoneContext<TSlice = DropZoneStore>(props: DropZoneContextProps<TSlice>) {\n\tconst { children, selector } = props;\n\n\tconst dropZoneCtx = useDropZoneStoreContext(useShallowCompSelector(selector));\n\n\tconst resolvedChildren = isFunction(children) ? children(dropZoneCtx) : children;\n\n\treturn resolvedChildren;\n}\n\ntype DropZoneContainerProps = PartInputProps[\"container\"] & { asChild?: boolean };\n\nexport function DropZoneContainer<TElement extends React.ElementType = \"div\">(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneContainerProps>\n) {\n\tconst { as: Element = \"div\", asChild, ...restOfProps } = props;\n\n\tconst { disableInternalStateSubscription, propGetters } = useDropZoneRootContext();\n\n\tconst isDraggingOver = useDropZoneStoreContext((store) =>\n\t\tdisableInternalStateSubscription ? store.isDraggingOver : null\n\t);\n\n\tconst isInvalid = useDropZoneStoreContext((store) =>\n\t\tdisableInternalStateSubscription ? store.isInvalid : null\n\t);\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\treturn (\n\t\t<Component\n\t\t\t{...propGetters.getContainerProps({\n\t\t\t\t...(disableInternalStateSubscription && {\n\t\t\t\t\t\"data-drag-over\": dataAttr(isDraggingOver),\n\t\t\t\t\t\"data-invalid\": dataAttr(isInvalid),\n\t\t\t\t}),\n\t\t\t\t...restOfProps,\n\t\t\t})}\n\t\t/>\n\t);\n}\n\ntype DropZoneInputProps = PartInputProps[\"input\"] & { asChild?: boolean };\n\nexport function DropZoneInput(props: DropZoneInputProps) {\n\tconst { asChild, ...restOfProps } = props;\n\n\tconst { disableInternalStateSubscription, propGetters } = useDropZoneRootContext();\n\n\tconst isDraggingOver = useDropZoneStoreContext((store) =>\n\t\tdisableInternalStateSubscription ? store.isDraggingOver : null\n\t);\n\n\tconst Component = asChild ? Slot.Root : \"input\";\n\n\treturn (\n\t\t<Component\n\t\t\t{...propGetters.getInputProps({\n\t\t\t\t...(disableInternalStateSubscription && { \"data-drag-over\": dataAttr(isDraggingOver) }),\n\t\t\t\t...restOfProps,\n\t\t\t})}\n\t\t/>\n\t);\n}\n\ntype DropZoneAreaProps<TSlice> = {\n\tchildren: React.ReactNode | ((props: TSlice) => React.ReactNode);\n\tclassNames?: Partial<Record<Extract<keyof PartInputProps, \"container\" | \"input\">, string>>;\n\textraProps?: Pick<PartInputProps, \"container\" | \"input\">;\n\tselector?: SelectorFn<DropZoneStore, TSlice>;\n};\n\nexport function DropZoneArea<TSlice = DropZoneStore>(props: DropZoneAreaProps<TSlice>) {\n\tconst { children, classNames, extraProps, selector } = props;\n\n\treturn (\n\t\t<DropZoneContainer {...extraProps?.container} className={classNames?.container}>\n\t\t\t<DropZoneInput {...extraProps?.input} className={classNames?.input} />\n\n\t\t\t<DropZoneContext selector={selector}>{children}</DropZoneContext>\n\t\t</DropZoneContainer>\n\t);\n}\n\ntype DropZoneTriggerProps = PartInputProps[\"trigger\"] & { asChild?: boolean };\n\nexport function DropZoneTrigger(props: DropZoneTriggerProps) {\n\tconst { asChild, ...restOfProps } = props;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst Component = asChild ? Slot.Root : \"button\";\n\n\treturn <Component {...propGetters.getTriggerProps(restOfProps)} />;\n}\n\ntype FileListPerItemVariant = {\n\tchildren:\n\t\t| React.ReactNode\n\t\t| ((props: {\n\t\t\t\tactions: DropZoneStore[\"actions\"];\n\t\t\t\tarray: DropZoneStore[\"fileStateArray\"];\n\t\t\t\tfileState: DropZoneStore[\"fileStateArray\"][number];\n\t\t\t\tindex: number;\n\t\t }) => React.ReactNode);\n\trenderMode?: \"per-item\";\n};\n\ntype FileListManualListVariant = {\n\tchildren:\n\t\t| React.ReactNode\n\t\t| ((props: Pick<DropZoneStore, \"actions\" | \"fileStateArray\">) => React.ReactNode);\n\trenderMode: \"manual-list\";\n};\n\ntype DropZoneFileListProps = Omit<PartInputProps[\"fileList\"], \"children\"> & {\n\tasChild?: boolean;\n\tforceMount?: boolean;\n} & (FileListManualListVariant | FileListPerItemVariant);\n\nexport function DropZoneFileList<TElement extends React.ElementType = \"ul\">(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneFileListProps>\n) {\n\tconst {\n\t\tas: Element = \"ul\",\n\t\tasChild,\n\t\tchildren,\n\t\tforceMount = false,\n\t\trenderMode = \"per-item\",\n\t\t...restOfProps\n\t} = props;\n\n\tconst fileStateArray = useDropZoneStoreContext((store) => store.fileStateArray);\n\tconst actions = useDropZoneStoreContext((store) => store.actions);\n\n\tconst { disableInternalStateSubscription, propGetters } = useDropZoneRootContext();\n\n\tconst childrenMap = {\n\t\t\"manual-list\": () => {\n\t\t\tconst childrenFn = children as Extract<FileListManualListVariant[\"children\"], AnyFunction>;\n\t\t\treturn childrenFn({ actions, fileStateArray });\n\t\t},\n\t\t\"per-item\": () => {\n\t\t\tconst childrenFn = children as Extract<FileListPerItemVariant[\"children\"], AnyFunction>;\n\n\t\t\treturn (\n\t\t\t\t<For\n\t\t\t\t\teach={fileStateArray}\n\t\t\t\t\trenderItem={(fileState, index, array) => childrenFn({ actions, array, fileState, index })}\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t} satisfies Record<typeof renderMode, () => React.ReactNode>;\n\n\tconst hasFiles = fileStateArray.length > 0;\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\treturn (\n\t\t<Presence present={hasFiles} forceMount={forceMount}>\n\t\t\t<Component\n\t\t\t\t{...propGetters.getFileListProps({\n\t\t\t\t\t...(disableInternalStateSubscription && { \"data-state\": hasFiles ? \"active\" : \"inactive\" }),\n\t\t\t\t\t...restOfProps,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{isFunction(children) ? childrenMap[renderMode]() : children}\n\t\t\t</Component>\n\t\t</Presence>\n\t);\n}\n\ntype DropZoneFileItemProps = FileItemContextType & PartInputProps[\"fileItem\"] & { asChild?: boolean };\n\nexport function DropZoneFileItem<TElement extends React.ElementType = \"li\">(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneFileItemProps>\n) {\n\tconst { as: Element = \"li\", asChild, fileState, ...restOfProps } = props;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\tconst contextValue = useMemo<FileItemContextType>(\n\t\t() => ({ fileState }) satisfies FileItemContextType,\n\t\t[fileState]\n\t);\n\n\treturn (\n\t\t<FileItemContextProvider value={contextValue}>\n\t\t\t<Component {...propGetters.getFileItemProps(restOfProps)} />\n\t\t</FileItemContextProvider>\n\t);\n}\n\ntype DropZoneFileItemDeleteProps = PartInputProps[\"fileItemDelete\"] & { asChild?: boolean };\n\nexport function DropZoneFileItemDelete(props: DropZoneFileItemDeleteProps) {\n\tconst { asChild, fileStateOrID, ...restOfProps } = props;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst fileItemContextValue = useFileItemContext();\n\n\tconst Component = asChild ? Slot.Root : \"button\";\n\n\tconst resolvedFileStateOrID = fileStateOrID ?? fileItemContextValue?.fileState;\n\n\treturn (\n\t\t<Component\n\t\t\t{...propGetters.getFileItemDeleteProps({ fileStateOrID: resolvedFileStateOrID, ...restOfProps })}\n\t\t/>\n\t);\n}\n\ntype DropZoneFileItemProgressProps = PartInputProps[\"fileItemProgress\"] & {\n\tasChild?: boolean;\n\tforceMount?: boolean;\n\tsize?: number;\n};\n\nexport function DropZoneFileItemProgress<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneFileItemProgressProps>\n) {\n\tconst {\n\t\tas: Element = \"span\",\n\t\tasChild,\n\t\tforceMount = false,\n\t\tsize = 40,\n\t\tvariant = \"linear\",\n\t\t...restOfProps\n\t} = props;\n\n\tconst fileItemContextValue = useFileItemContext();\n\n\tconst fileState = fileItemContextValue?.fileState;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tif (!fileState) {\n\t\treturn null;\n\t}\n\n\tconst currentProgress = fileState.progress;\n\n\tconst shouldRender = forceMount || fileState.progress !== 100;\n\n\tif (!shouldRender) {\n\t\treturn null;\n\t}\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\tconst componentProps = propGetters.getFileItemProgressProps({ variant, ...restOfProps });\n\n\tswitch (variant) {\n\t\tcase \"circular\": {\n\t\t\tconst circumference = 2 * Math.PI * ((size - 4) / 2);\n\t\t\tconst strokeDashoffset = circumference - (currentProgress / 100) * circumference;\n\n\t\t\treturn (\n\t\t\t\t<Component {...componentProps}>\n\t\t\t\t\t<svg\n\t\t\t\t\t\tclassName=\"-rotate-90\"\n\t\t\t\t\t\twidth={size}\n\t\t\t\t\t\theight={size}\n\t\t\t\t\t\tviewBox={`0 0 ${size} ${size}`}\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tclassName=\"text-zu-primary/20\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tcx={size / 2}\n\t\t\t\t\t\t\tcy={size / 2}\n\t\t\t\t\t\t\tr={(size - 4) / 2}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tclassName=\"text-zu-primary transition-[stroke-dashoffset] duration-300 ease-linear\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeDasharray={circumference}\n\t\t\t\t\t\t\tstrokeDashoffset={strokeDashoffset}\n\t\t\t\t\t\t\tcx={size / 2}\n\t\t\t\t\t\t\tcy={size / 2}\n\t\t\t\t\t\t\tr={(size - 4) / 2}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</Component>\n\t\t\t);\n\t\t}\n\n\t\tcase \"fill\": {\n\t\t\tconst topInset = 100 - currentProgress;\n\n\t\t\treturn (\n\t\t\t\t<Component\n\t\t\t\t\t{...componentProps}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--clip-path\": `inset(${topInset}% 0% 0% 0%)`,\n\t\t\t\t\t\t} satisfies CssWithCustomProperties as CssWithCustomProperties\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tcase \"linear\": {\n\t\t\treturn (\n\t\t\t\t<Component {...componentProps}>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"inline-block size-full grow translate-x-(--translate-distance) bg-zu-primary transition-transform duration-300 ease-linear\"\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"--translate-distance\": `-${100 - currentProgress}%`,\n\t\t\t\t\t\t\t} satisfies CssWithCustomProperties as CssWithCustomProperties\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Component>\n\t\t\t);\n\t\t}\n\n\t\tdefault: {\n\t\t\tvariant satisfies never;\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\ntype RenderPreviewDetails = { className?: string; node?: React.ReactNode };\n\ntype RenderPreviewProp = (props: Pick<FileItemContextType, \"fileState\">) => {\n\tarchive?: RenderPreviewDetails;\n\taudio?: RenderPreviewDetails;\n\tcode?: RenderPreviewDetails;\n\tdefault?: RenderPreviewDetails;\n\texecutable?: RenderPreviewDetails;\n\timage?: RenderPreviewDetails;\n\ttext?: RenderPreviewDetails;\n\tvideo?: RenderPreviewDetails;\n};\n\ntype DropZoneFileItemPreviewProps = Omit<PartInputProps[\"fileItemPreview\"], \"children\">\n\t& Partial<Pick<FileItemContextType, \"fileState\">> & {\n\t\tasChild?: boolean;\n\t\tchildren?: React.ReactNode | ((props: Pick<FileItemContextType, \"fileState\">) => React.ReactNode);\n\t\trenderPreview?: boolean | RenderPreviewProp;\n\t};\n\nexport function DropZoneFileItemPreview<TElement extends React.ElementType>(\n\tprops: PolymorphicPropsStrict<TElement, DropZoneFileItemPreviewProps>\n) {\n\tconst {\n\t\tas: Element = \"span\",\n\t\tasChild,\n\t\tchildren,\n\t\tfileState: fileStateProp,\n\t\trenderPreview = true,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fileItemContextValue = useFileItemContext();\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst fileState = fileStateProp ?? fileItemContextValue?.fileState;\n\n\tif (!fileState) {\n\t\treturn null;\n\t}\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\tconst resolvedChildren = isFunction(children) ? children({ fileState }) : children;\n\n\treturn (\n\t\t<Component {...propGetters.getFileItemPreviewProps(restOfProps)}>\n\t\t\t{renderPreview && getFilePreviewOrIcon({ fileState, renderPreview })}\n\t\t\t{resolvedChildren}\n\t\t</Component>\n\t);\n}\n\nconst getFilePreviewOrIcon = (\n\tcontext: Pick<DropZoneFileItemPreviewProps, \"fileState\" | \"renderPreview\">\n) => {\n\tconst { fileState, renderPreview } = context;\n\n\tconst type = fileState?.file.type;\n\tconst extension = fileState?.file.name?.split(\".\").pop()?.toLowerCase() ?? \"\";\n\n\tconst renderPreviewObject = isFunction(renderPreview) ? renderPreview({ fileState }) : {};\n\n\tconst getDefaultPreview = () => {\n\t\treturn (\n\t\t\trenderPreviewObject.default?.node ?? (\n\t\t\t\t<FileIcon className={renderPreviewObject.default?.className} />\n\t\t\t)\n\t\t);\n\t};\n\n\tif (!type) {\n\t\treturn getDefaultPreview();\n\t}\n\n\tswitch (true) {\n\t\tcase type.startsWith(\"image/\"): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.image?.node ?? (\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={fileState.preview}\n\t\t\t\t\t\talt={fileState.file.name}\n\t\t\t\t\t\tclassName={cnMerge(\"size-full object-cover\", renderPreviewObject.image?.className)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase type.startsWith(\"video/\"): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.video?.node ?? (\n\t\t\t\t\t<FileVideoIcon\n\t\t\t\t\t\tclassName={cnMerge(\"size-full object-cover\", renderPreviewObject.video?.className)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase type.startsWith(\"audio/\"): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.audio?.node ?? (\n\t\t\t\t\t<FileAudioIcon\n\t\t\t\t\t\tclassName={cnMerge(\"size-full object-cover\", renderPreviewObject.audio?.className)}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase type.startsWith(\"text/\") || [\"md\", \"pdf\", \"rtf\", \"txt\"].includes(extension): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.text?.node ?? (\n\t\t\t\t\t<FileTextIcon className={renderPreviewObject.text?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase [\n\t\t\t\"c\",\n\t\t\t\"cpp\",\n\t\t\t\"cs\",\n\t\t\t\"css\",\n\t\t\t\"html\",\n\t\t\t\"java\",\n\t\t\t\"js\",\n\t\t\t\"json\",\n\t\t\t\"jsx\",\n\t\t\t\"php\",\n\t\t\t\"py\",\n\t\t\t\"rb\",\n\t\t\t\"ts\",\n\t\t\t\"tsx\",\n\t\t\t\"xml\",\n\t\t].includes(extension): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.code?.node ?? (\n\t\t\t\t\t<FileCodeIcon className={renderPreviewObject.code?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase [\"7z\", \"bz2\", \"gz\", \"rar\", \"tar\", \"zip\"].includes(extension): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.archive?.node ?? (\n\t\t\t\t\t<FileArchiveIcon className={renderPreviewObject.archive?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tcase [\"apk\", \"app\", \"deb\", \"exe\", \"msi\", \"rpm\"].includes(extension): {\n\t\t\treturn (\n\t\t\t\trenderPreviewObject.executable?.node ?? (\n\t\t\t\t\t<FileCogIcon className={renderPreviewObject.executable?.className} />\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn getDefaultPreview();\n\t\t}\n\t}\n};\n\ntype DropZoneFileItemMetadataProps = Omit<PartInputProps[\"fileItemMetadata\"], \"children\">\n\t& Partial<Pick<FileItemContextType, \"fileState\">> & {\n\t\tasChild?: boolean;\n\t\tchildren?: React.ReactNode | ((props: Pick<FileItemContextType, \"fileState\">) => React.ReactNode);\n\t\tclassNames?: {\n\t\t\tname?: string;\n\t\t\tsize?: string;\n\t\t};\n\t\tsize?: \"default\" | \"sm\";\n\t};\n\nexport function DropZoneFileItemMetadata(props: DropZoneFileItemMetadataProps) {\n\tconst {\n\t\tasChild,\n\t\tchildren,\n\t\tclassNames,\n\t\tfileState: fileStateProp,\n\t\tsize = \"default\",\n\t\t...restOfProps\n\t} = props;\n\n\tconst fileItemContextValue = useFileItemContext();\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst fileState = fileStateProp ?? fileItemContextValue?.fileState;\n\n\tif (!fileState) {\n\t\treturn null;\n\t}\n\n\tconst Component = asChild ? Slot.Root : \"div\";\n\n\tconst resolvedChildren = isFunction(children) ? children({ fileState }) : children;\n\n\tconst getDefaultMetadataChildren = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<p\n\t\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\t\"truncate\",\n\t\t\t\t\t\tsize === \"default\" && \"text-[14px] font-medium\",\n\t\t\t\t\t\tsize === \"sm\" && \"text-[13px] leading-snug\",\n\t\t\t\t\t\tclassNames?.name\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{fileState.file.name}\n\t\t\t\t</p>\n\t\t\t\t<p\n\t\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\t\"truncate text-zu-muted-foreground\",\n\t\t\t\t\t\tsize === \"default\" && \"text-[12px]\",\n\t\t\t\t\t\tsize === \"sm\" && \"text-[11px] leading-snug\",\n\t\t\t\t\t\tclassNames?.size\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{isNumber(fileState.file.size) && formatBytes(fileState.file.size)}\n\t\t\t\t</p>\n\t\t\t\t{fileState.error && (\n\t\t\t\t\t<p className=\"text-[12px] text-zu-destructive\">{fileState.error.message}</p>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\treturn (\n\t\t<Component {...propGetters.getFileItemMetadataProps(restOfProps)}>\n\t\t\t{resolvedChildren ?? getDefaultMetadataChildren()}\n\t\t</Component>\n\t);\n}\n\ntype DropZoneFileClearProps = PartInputProps[\"fileItemClear\"] & {\n\tasChild?: boolean;\n\tforceMount?: boolean;\n};\n\nexport function DropZoneFileClear(props: DropZoneFileClearProps) {\n\tconst { asChild, forceMount = false, ...restOfProps } = props;\n\n\tconst { propGetters } = useDropZoneRootContext();\n\n\tconst fileCount = useDropZoneStoreContext((state) => state.fileStateArray.length);\n\n\tconst shouldRender = forceMount || fileCount > 0;\n\n\tif (!shouldRender) {\n\t\treturn null;\n\t}\n\n\tconst Component = asChild ? Slot.Root : \"button\";\n\n\treturn <Component {...propGetters.getFileItemClearProps(restOfProps)} />;\n}\n","export {\n\tDropZoneArea as Area,\n\tDropZoneContainer as Container,\n\tDropZoneContext as Context,\n\tDropZoneFileClear as FileClear,\n\tDropZoneFileItem as FileItem,\n\tDropZoneFileItemDelete as FileItemDelete,\n\tDropZoneFileItemMetadata as FileItemMetadata,\n\tDropZoneFileItemPreview as FileItemPreview,\n\tDropZoneFileItemProgress as FileItemProgress,\n\tDropZoneFileList as FileList,\n\tDropZoneInput as Input,\n\tDropZoneRoot as Root,\n\tDropZoneTrigger as Trigger,\n} from \"./drop-zone\";\n"],"mappings":"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"}