@pixpilot/shadcn-ui 0.57.2 → 0.58.0

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 (44) hide show
  1. package/dist/ColorSelect.d.ts +2 -2
  2. package/dist/ContentCard.d.ts +2 -2
  3. package/dist/dialog/Dialog.d.ts +4 -4
  4. package/dist/file-upload/FileUpload.d.ts +2 -2
  5. package/dist/file-upload/utils/index.d.ts +1 -1
  6. package/dist/file-upload/utils/merge-file-metadata.d.cts +8 -0
  7. package/dist/file-upload/utils/merge-file-metadata.d.ts +8 -1
  8. package/dist/file-upload-inline/FileUploadInline.cjs +16 -45
  9. package/dist/file-upload-inline/FileUploadInline.d.cts +2 -2
  10. package/dist/file-upload-inline/FileUploadInline.d.ts +2 -2
  11. package/dist/file-upload-inline/FileUploadInline.js +18 -46
  12. package/dist/file-upload-inline/types.d.cts +3 -2
  13. package/dist/file-upload-inline/types.d.ts +3 -2
  14. package/dist/file-upload-root/FileUploadRoot.cjs +69 -0
  15. package/dist/file-upload-root/FileUploadRoot.d.cts +13 -0
  16. package/dist/file-upload-root/FileUploadRoot.d.ts +13 -0
  17. package/dist/file-upload-root/FileUploadRoot.js +63 -0
  18. package/dist/{file-upload-inline/FileUploadInlineItem.cjs → file-upload-root/FileUploadRootItem.cjs} +4 -3
  19. package/dist/file-upload-root/FileUploadRootItem.d.cts +13 -0
  20. package/dist/file-upload-root/FileUploadRootItem.d.ts +14 -0
  21. package/dist/{file-upload-inline/FileUploadInlineItem.js → file-upload-root/FileUploadRootItem.js} +4 -3
  22. package/dist/file-upload-root/index.cjs +2 -0
  23. package/dist/file-upload-root/index.d.cts +3 -0
  24. package/dist/file-upload-root/index.d.ts +3 -0
  25. package/dist/file-upload-root/index.js +2 -0
  26. package/dist/file-upload-root/types.d.cts +26 -0
  27. package/dist/file-upload-root/types.d.ts +26 -0
  28. package/dist/index.cjs +5 -0
  29. package/dist/index.d.cts +5 -1
  30. package/dist/index.d.ts +5 -1
  31. package/dist/index.js +4 -1
  32. package/dist/input/Input.d.cts +2 -2
  33. package/dist/tags-input/TagsInput.d.cts +2 -2
  34. package/dist/tags-input/TagsInput.d.ts +2 -2
  35. package/dist/tags-input/TagsInputInline.d.cts +2 -2
  36. package/dist/tags-input/TagsInputInline.d.ts +2 -2
  37. package/dist/theme-toggle/ThemeModeDropdown.d.cts +2 -2
  38. package/dist/theme-toggle/ThemeModeDropdown.d.ts +2 -2
  39. package/dist/theme-toggle/ThemeModeSwitchInside.d.cts +2 -2
  40. package/dist/theme-toggle/ThemeModeSwitchInside.d.ts +2 -2
  41. package/dist/theme-toggle/ThemeModeSwitchOutside.d.cts +2 -2
  42. package/dist/theme-toggle/ThemeModeSwitchOutside.d.ts +2 -2
  43. package/dist/theme-toggle/ThemeModeToggleButton.d.ts +2 -2
  44. package/package.json +3 -3
@@ -1,6 +1,6 @@
1
1
  import { Select, SelectContent } from "@pixpilot/shadcn";
2
2
  import React, { ComponentProps } from "react";
3
- import * as react_jsx_runtime1 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime2 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/ColorSelect.d.ts
6
6
  interface ColorSelectOption {
@@ -15,6 +15,6 @@ type BaseColorSelectProps = {
15
15
  placeholder?: string;
16
16
  keyboardMode?: 'cycle' | 'dropdown';
17
17
  } & Omit<ComponentProps<typeof Select>, 'value' | 'onValueChange' | 'children'>;
18
- declare function ColorSelect(props: BaseColorSelectProps): react_jsx_runtime1.JSX.Element;
18
+ declare function ColorSelect(props: BaseColorSelectProps): react_jsx_runtime2.JSX.Element;
19
19
  //#endregion
20
20
  export { BaseColorSelectProps, ColorSelect, ColorSelectOption };
@@ -1,6 +1,6 @@
1
1
  import { Card } from "@pixpilot/shadcn";
2
2
  import React, { ReactNode } from "react";
3
- import * as react_jsx_runtime2 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime1 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/ContentCard.d.ts
6
6
  interface SectionCardProps extends React.ComponentProps<typeof Card> {
@@ -8,7 +8,7 @@ interface SectionCardProps extends React.ComponentProps<typeof Card> {
8
8
  children: ReactNode;
9
9
  marginBottom?: boolean;
10
10
  }
11
- declare function ContentCard(props: SectionCardProps): react_jsx_runtime2.JSX.Element;
11
+ declare function ContentCard(props: SectionCardProps): react_jsx_runtime1.JSX.Element;
12
12
  declare namespace ContentCard {
13
13
  var displayName: string;
14
14
  }
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime7 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime8 from "react/jsx-runtime";
3
3
  import * as _radix_ui_react_dialog0 from "@radix-ui/react-dialog";
4
4
 
5
5
  //#region src/dialog/Dialog.d.ts
@@ -9,14 +9,14 @@ declare const DialogContent: React$1.ForwardRefExoticComponent<Omit<_radix_ui_re
9
9
  declare function DialogHeader({
10
10
  className,
11
11
  ...props
12
- }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime7.JSX.Element;
12
+ }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime8.JSX.Element;
13
13
  declare function DialogBody({
14
14
  className,
15
15
  ...props
16
- }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime7.JSX.Element;
16
+ }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime8.JSX.Element;
17
17
  declare function DialogFooter({
18
18
  className,
19
19
  ...props
20
- }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime7.JSX.Element;
20
+ }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime8.JSX.Element;
21
21
  //#endregion
22
22
  export { DialogBody, DialogContent, DialogFooter, DialogHeader };
@@ -1,7 +1,7 @@
1
1
  import { FileUploadProps } from "./types/index.js";
2
- import * as react_jsx_runtime10 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime7 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/file-upload/FileUpload.d.ts
5
- declare function FileUpload(props: FileUploadProps): react_jsx_runtime10.JSX.Element;
5
+ declare function FileUpload(props: FileUploadProps): react_jsx_runtime7.JSX.Element;
6
6
  //#endregion
7
7
  export { FileUpload };
@@ -1,4 +1,4 @@
1
1
  import "./get-file-key.js";
2
2
  import "./get-file-meta.js";
3
3
  import "./is-file-equal.js";
4
- import "./merge-file-metadata.js";
4
+ import { FileWithMetadata } from "./merge-file-metadata.js";
@@ -0,0 +1,8 @@
1
+ import { FileMetadata } from "../types/index.cjs";
2
+
3
+ //#region src/file-upload/utils/merge-file-metadata.d.ts
4
+ interface FileWithMetadata extends FileMetadata {
5
+ file?: File;
6
+ }
7
+ //#endregion
8
+ export { FileWithMetadata };
@@ -1 +1,8 @@
1
- import "../types/index.js";
1
+ import { FileMetadata } from "../types/index.js";
2
+
3
+ //#region src/file-upload/utils/merge-file-metadata.d.ts
4
+ interface FileWithMetadata extends FileMetadata {
5
+ file?: File;
6
+ }
7
+ //#endregion
8
+ export { FileWithMetadata };
@@ -2,16 +2,13 @@
2
2
 
3
3
 
4
4
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
5
- const require_use_file_upload_store = require('../file-upload/hooks/use-file-upload-store.cjs');
6
- require('../file-upload/index.cjs');
5
+ const require_FileUploadRoot = require('../file-upload-root/FileUploadRoot.cjs');
6
+ require('../file-upload-root/index.cjs');
7
7
  const require_defaults = require('./defaults.cjs');
8
- const require_FileUploadInlineItem = require('./FileUploadInlineItem.cjs');
9
8
  let __pixpilot_shadcn = require("@pixpilot/shadcn");
10
9
  __pixpilot_shadcn = require_rolldown_runtime.__toESM(__pixpilot_shadcn);
11
10
  let lucide_react = require("lucide-react");
12
11
  lucide_react = require_rolldown_runtime.__toESM(lucide_react);
13
- let react = require("react");
14
- react = require_rolldown_runtime.__toESM(react);
15
12
  let react_jsx_runtime = require("react/jsx-runtime");
16
13
  react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
17
14
 
@@ -20,51 +17,25 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
20
17
  * FileUploadInline - An inline file upload component using FileUpload primitives
21
18
  */
22
19
  function FileUploadInline(props) {
23
- const { value, onChange, className, disabled = require_defaults.defaultOptions.disabled, multiple = require_defaults.defaultOptions.multiple, buttonText: buttonTextProp, showIcon = require_defaults.defaultOptions.showIcon, onAccept, preventDuplicates,...rest } = props;
20
+ const { value, onChange, className, disabled = require_defaults.defaultOptions.disabled, buttonText: buttonTextProp, showIcon = require_defaults.defaultOptions.showIcon, onAccept, preventDuplicates,...rest } = props;
21
+ const multiple = props.multiple ?? require_defaults.defaultOptions.multiple;
24
22
  const buttonText = buttonTextProp ?? (multiple ? "Click to upload files" : "Click to upload a file");
25
- const { handleAccept, displayFiles, deleteFile, getFile, orgValue } = require_use_file_upload_store.useFileUploadStore({
26
- value,
27
- onChange,
28
- multiple,
29
- preventDuplicates
30
- });
31
- const handleFileAccept = (0, react.useCallback)((files) => {
32
- onAccept?.(files);
33
- handleAccept(files);
34
- }, [handleAccept, onAccept]);
35
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.FileUpload, {
23
+ const dropzoneClassName = (0, __pixpilot_shadcn.cn)("rounded-md border border-input border-solid flex-row bg-background px-3 py-0 display-block w-full cursor-pointer", "hover:bg-accent/50 transition-colors m-0", disabled && "cursor-not-allowed opacity-50");
24
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FileUploadRoot.FileUploadRoot, {
36
25
  ...rest,
37
- value: orgValue,
38
- onAccept: handleFileAccept,
26
+ value,
27
+ onAccept,
39
28
  disabled,
40
29
  multiple,
41
30
  className: (0, __pixpilot_shadcn.cn)("space-y-2", className),
42
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(multiple || !multiple && displayFiles.length === 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.FileUploadDropzone, {
43
- className: (0, __pixpilot_shadcn.cn)("rounded-md border border-input border-solid flex-row bg-background px-3 py-0 display-block w-full cursor-pointer", "hover:bg-accent/50 transition-colors m-0", disabled && "cursor-not-allowed opacity-50"),
44
- children: [showIcon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CloudUpload, { className: "h-4 w-4 shrink-0 mx-1 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.FileUploadTrigger, {
45
- asChild: true,
46
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.Button, {
47
- variant: "link",
48
- size: "sm",
49
- className: "h-auto py-2 px-0 text-sm text-muted-foreground hover:no-underline justify-start flex-1",
50
- disabled,
51
- children: buttonText
52
- })
53
- })]
54
- }), displayFiles.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.FileUploadList, {
55
- className: "space-y-1 m-0",
56
- forceMount: true,
57
- children: displayFiles.map((data) => {
58
- const { name, lastModified } = data;
59
- const key = `${name}-${lastModified}`;
60
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FileUploadInlineItem.FileUploadInlineItem, {
61
- ...data,
62
- file: getFile(data),
63
- disabled,
64
- onDelete: deleteFile
65
- }, key);
66
- })
67
- })] })
31
+ slots: { trigger: { className: dropzoneClassName } },
32
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.Button, {
33
+ variant: "link",
34
+ size: "sm",
35
+ className: (0, __pixpilot_shadcn.cn)("h-auto py-2 px-0 text-sm text-muted-foreground hover:no-underline flex-1", showIcon ? "justify-start" : "justify-center"),
36
+ disabled,
37
+ children: [showIcon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CloudUpload, { className: "h-4 w-4 shrink-0 mx-1 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: buttonText })]
38
+ })
68
39
  });
69
40
  }
70
41
 
@@ -1,10 +1,10 @@
1
1
  import { FileUploadInlineProps } from "./types.cjs";
2
- import * as react_jsx_runtime12 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime11 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/file-upload-inline/FileUploadInline.d.ts
5
5
  /**
6
6
  * FileUploadInline - An inline file upload component using FileUpload primitives
7
7
  */
8
- declare function FileUploadInline(props: FileUploadInlineProps): react_jsx_runtime12.JSX.Element;
8
+ declare function FileUploadInline(props: FileUploadInlineProps): react_jsx_runtime11.JSX.Element;
9
9
  //#endregion
10
10
  export { FileUploadInline };
@@ -1,10 +1,10 @@
1
1
  import { FileUploadInlineProps } from "./types.js";
2
- import * as react_jsx_runtime12 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime18 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/file-upload-inline/FileUploadInline.d.ts
5
5
  /**
6
6
  * FileUploadInline - An inline file upload component using FileUpload primitives
7
7
  */
8
- declare function FileUploadInline(props: FileUploadInlineProps): react_jsx_runtime12.JSX.Element;
8
+ declare function FileUploadInline(props: FileUploadInlineProps): react_jsx_runtime18.JSX.Element;
9
9
  //#endregion
10
10
  export { FileUploadInline };
@@ -1,65 +1,37 @@
1
1
  'use client';
2
2
 
3
3
 
4
- import { useFileUploadStore } from "../file-upload/hooks/use-file-upload-store.js";
5
- import "../file-upload/index.js";
4
+ import { FileUploadRoot } from "../file-upload-root/FileUploadRoot.js";
5
+ import "../file-upload-root/index.js";
6
6
  import { defaultOptions } from "./defaults.js";
7
- import { FileUploadInlineItem } from "./FileUploadInlineItem.js";
8
- import { Button, FileUpload, FileUploadDropzone, FileUploadList, FileUploadTrigger, cn } from "@pixpilot/shadcn";
7
+ import { Button, cn } from "@pixpilot/shadcn";
9
8
  import { CloudUpload } from "lucide-react";
10
- import { useCallback } from "react";
11
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
12
10
 
13
11
  //#region src/file-upload-inline/FileUploadInline.tsx
14
12
  /**
15
13
  * FileUploadInline - An inline file upload component using FileUpload primitives
16
14
  */
17
15
  function FileUploadInline(props) {
18
- const { value, onChange, className, disabled = defaultOptions.disabled, multiple = defaultOptions.multiple, buttonText: buttonTextProp, showIcon = defaultOptions.showIcon, onAccept, preventDuplicates,...rest } = props;
16
+ const { value, onChange, className, disabled = defaultOptions.disabled, buttonText: buttonTextProp, showIcon = defaultOptions.showIcon, onAccept, preventDuplicates,...rest } = props;
17
+ const multiple = props.multiple ?? defaultOptions.multiple;
19
18
  const buttonText = buttonTextProp ?? (multiple ? "Click to upload files" : "Click to upload a file");
20
- const { handleAccept, displayFiles, deleteFile, getFile, orgValue } = useFileUploadStore({
21
- value,
22
- onChange,
23
- multiple,
24
- preventDuplicates
25
- });
26
- const handleFileAccept = useCallback((files) => {
27
- onAccept?.(files);
28
- handleAccept(files);
29
- }, [handleAccept, onAccept]);
30
- return /* @__PURE__ */ jsx(FileUpload, {
19
+ const dropzoneClassName = cn("rounded-md border border-input border-solid flex-row bg-background px-3 py-0 display-block w-full cursor-pointer", "hover:bg-accent/50 transition-colors m-0", disabled && "cursor-not-allowed opacity-50");
20
+ return /* @__PURE__ */ jsx(FileUploadRoot, {
31
21
  ...rest,
32
- value: orgValue,
33
- onAccept: handleFileAccept,
22
+ value,
23
+ onAccept,
34
24
  disabled,
35
25
  multiple,
36
26
  className: cn("space-y-2", className),
37
- children: /* @__PURE__ */ jsxs(Fragment, { children: [(multiple || !multiple && displayFiles.length === 0) && /* @__PURE__ */ jsxs(FileUploadDropzone, {
38
- className: cn("rounded-md border border-input border-solid flex-row bg-background px-3 py-0 display-block w-full cursor-pointer", "hover:bg-accent/50 transition-colors m-0", disabled && "cursor-not-allowed opacity-50"),
39
- children: [showIcon && /* @__PURE__ */ jsx(CloudUpload, { className: "h-4 w-4 shrink-0 mx-1 text-muted-foreground" }), /* @__PURE__ */ jsx(FileUploadTrigger, {
40
- asChild: true,
41
- children: /* @__PURE__ */ jsx(Button, {
42
- variant: "link",
43
- size: "sm",
44
- className: "h-auto py-2 px-0 text-sm text-muted-foreground hover:no-underline justify-start flex-1",
45
- disabled,
46
- children: buttonText
47
- })
48
- })]
49
- }), displayFiles.length > 0 && /* @__PURE__ */ jsx(FileUploadList, {
50
- className: "space-y-1 m-0",
51
- forceMount: true,
52
- children: displayFiles.map((data) => {
53
- const { name, lastModified } = data;
54
- const key = `${name}-${lastModified}`;
55
- return /* @__PURE__ */ jsx(FileUploadInlineItem, {
56
- ...data,
57
- file: getFile(data),
58
- disabled,
59
- onDelete: deleteFile
60
- }, key);
61
- })
62
- })] })
27
+ slots: { trigger: { className: dropzoneClassName } },
28
+ children: /* @__PURE__ */ jsxs(Button, {
29
+ variant: "link",
30
+ size: "sm",
31
+ className: cn("h-auto py-2 px-0 text-sm text-muted-foreground hover:no-underline flex-1", showIcon ? "justify-start" : "justify-center"),
32
+ disabled,
33
+ children: [showIcon && /* @__PURE__ */ jsx(CloudUpload, { className: "h-4 w-4 shrink-0 mx-1 text-muted-foreground" }), /* @__PURE__ */ jsx("span", { children: buttonText })]
34
+ })
63
35
  });
64
36
  }
65
37
 
@@ -1,4 +1,5 @@
1
- import { FileUploadProps } from "../file-upload/types/index.cjs";
1
+ import { FileUploadRootProps } from "../file-upload-root/types.cjs";
2
+ import "../file-upload-root/index.cjs";
2
3
 
3
4
  //#region src/file-upload-inline/types.d.ts
4
5
  interface FileUploadInlineBaseProps {
@@ -11,6 +12,6 @@ interface FileUploadInlineBaseProps {
11
12
  */
12
13
  showIcon?: boolean;
13
14
  }
14
- type FileUploadInlineProps = FileUploadInlineBaseProps & FileUploadProps;
15
+ type FileUploadInlineProps = FileUploadInlineBaseProps & FileUploadRootProps;
15
16
  //#endregion
16
17
  export { FileUploadInlineBaseProps, FileUploadInlineProps };
@@ -1,4 +1,5 @@
1
- import { FileUploadProps } from "../file-upload/types/index.js";
1
+ import { FileUploadRootProps } from "../file-upload-root/types.js";
2
+ import "../file-upload-root/index.js";
2
3
 
3
4
  //#region src/file-upload-inline/types.d.ts
4
5
  interface FileUploadInlineBaseProps {
@@ -11,6 +12,6 @@ interface FileUploadInlineBaseProps {
11
12
  */
12
13
  showIcon?: boolean;
13
14
  }
14
- type FileUploadInlineProps = FileUploadInlineBaseProps & FileUploadProps;
15
+ type FileUploadInlineProps = FileUploadInlineBaseProps & FileUploadRootProps;
15
16
  //#endregion
16
17
  export { FileUploadInlineBaseProps, FileUploadInlineProps };
@@ -0,0 +1,69 @@
1
+ 'use client';
2
+
3
+
4
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
5
+ const require_use_file_upload_store = require('../file-upload/hooks/use-file-upload-store.cjs');
6
+ require('../file-upload/index.cjs');
7
+ const require_FileUploadRootItem = require('./FileUploadRootItem.cjs');
8
+ let __pixpilot_shadcn = require("@pixpilot/shadcn");
9
+ __pixpilot_shadcn = require_rolldown_runtime.__toESM(__pixpilot_shadcn);
10
+ let react = require("react");
11
+ react = require_rolldown_runtime.__toESM(react);
12
+ let react_jsx_runtime = require("react/jsx-runtime");
13
+ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
14
+
15
+ //#region src/file-upload-root/FileUploadRoot.tsx
16
+ /**
17
+ * FileUploadInline - An inline file upload component using FileUpload primitives
18
+ */
19
+ function FileUploadRoot(props) {
20
+ const { value, onChange, className, disabled, multiple = false, children, onAccept, preventDuplicates, slots,...rest } = props;
21
+ const { handleAccept, displayFiles, deleteFile, getFile, orgValue } = require_use_file_upload_store.useFileUploadStore({
22
+ value,
23
+ onChange,
24
+ multiple,
25
+ preventDuplicates
26
+ });
27
+ const handleFileAccept = (0, react.useCallback)((files) => {
28
+ onAccept?.(files);
29
+ handleAccept(files);
30
+ }, [handleAccept, onAccept]);
31
+ if (process.env.NODE_ENV !== "production") {
32
+ if (!children && !(slots && slots.trigger)) throw new Error("FileUploadRoot requires children or slots.trigger to be passed in.");
33
+ }
34
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.FileUpload, {
35
+ ...rest,
36
+ value: orgValue,
37
+ onAccept: handleFileAccept,
38
+ disabled,
39
+ multiple,
40
+ className: (0, __pixpilot_shadcn.cn)("space-y-2", className),
41
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(multiple || !multiple && displayFiles.length === 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.FileUploadDropzone, {
42
+ ...slots?.dropzone || {},
43
+ className: (0, __pixpilot_shadcn.cn)("p-0 border-0 hover:bg-transparent", slots?.dropzone?.className),
44
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.FileUploadTrigger, {
45
+ asChild: true,
46
+ ...slots?.trigger || {},
47
+ children
48
+ })
49
+ }), displayFiles.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.FileUploadList, {
50
+ className: "space-y-1 m-0",
51
+ forceMount: true,
52
+ children: displayFiles.map((data) => {
53
+ const { name, lastModified } = data;
54
+ const key = `${name}-${lastModified}`;
55
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FileUploadRootItem.FileUploadRootItem, {
56
+ ...data,
57
+ file: getFile(data),
58
+ disabled,
59
+ onDelete: deleteFile,
60
+ ...slots?.fileItem || {}
61
+ }, key);
62
+ })
63
+ })] })
64
+ });
65
+ }
66
+ FileUploadRoot.displayName = "FileUploadRoot";
67
+
68
+ //#endregion
69
+ exports.FileUploadRoot = FileUploadRoot;
@@ -0,0 +1,13 @@
1
+ import { FileUploadRootProps } from "./types.cjs";
2
+ import * as react_jsx_runtime12 from "react/jsx-runtime";
3
+
4
+ //#region src/file-upload-root/FileUploadRoot.d.ts
5
+ /**
6
+ * FileUploadInline - An inline file upload component using FileUpload primitives
7
+ */
8
+ declare function FileUploadRoot(props: FileUploadRootProps): react_jsx_runtime12.JSX.Element;
9
+ declare namespace FileUploadRoot {
10
+ var displayName: string;
11
+ }
12
+ //#endregion
13
+ export { FileUploadRoot };
@@ -0,0 +1,13 @@
1
+ import { FileUploadRootProps } from "./types.js";
2
+ import * as react_jsx_runtime19 from "react/jsx-runtime";
3
+
4
+ //#region src/file-upload-root/FileUploadRoot.d.ts
5
+ /**
6
+ * FileUploadInline - An inline file upload component using FileUpload primitives
7
+ */
8
+ declare function FileUploadRoot(props: FileUploadRootProps): react_jsx_runtime19.JSX.Element;
9
+ declare namespace FileUploadRoot {
10
+ var displayName: string;
11
+ }
12
+ //#endregion
13
+ export { FileUploadRoot };
@@ -0,0 +1,63 @@
1
+ 'use client';
2
+
3
+
4
+ import { useFileUploadStore } from "../file-upload/hooks/use-file-upload-store.js";
5
+ import "../file-upload/index.js";
6
+ import { FileUploadRootItem } from "./FileUploadRootItem.js";
7
+ import { FileUpload, FileUploadDropzone, FileUploadList, FileUploadTrigger, cn } from "@pixpilot/shadcn";
8
+ import { useCallback } from "react";
9
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+
11
+ //#region src/file-upload-root/FileUploadRoot.tsx
12
+ /**
13
+ * FileUploadInline - An inline file upload component using FileUpload primitives
14
+ */
15
+ function FileUploadRoot(props) {
16
+ const { value, onChange, className, disabled, multiple = false, children, onAccept, preventDuplicates, slots,...rest } = props;
17
+ const { handleAccept, displayFiles, deleteFile, getFile, orgValue } = useFileUploadStore({
18
+ value,
19
+ onChange,
20
+ multiple,
21
+ preventDuplicates
22
+ });
23
+ const handleFileAccept = useCallback((files) => {
24
+ onAccept?.(files);
25
+ handleAccept(files);
26
+ }, [handleAccept, onAccept]);
27
+ if (!children && !(slots && slots.trigger)) throw new Error("FileUploadRoot requires children or slots.trigger to be passed in.");
28
+ return /* @__PURE__ */ jsx(FileUpload, {
29
+ ...rest,
30
+ value: orgValue,
31
+ onAccept: handleFileAccept,
32
+ disabled,
33
+ multiple,
34
+ className: cn("space-y-2", className),
35
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [(multiple || !multiple && displayFiles.length === 0) && /* @__PURE__ */ jsx(FileUploadDropzone, {
36
+ ...slots?.dropzone || {},
37
+ className: cn("p-0 border-0 hover:bg-transparent", slots?.dropzone?.className),
38
+ children: /* @__PURE__ */ jsx(FileUploadTrigger, {
39
+ asChild: true,
40
+ ...slots?.trigger || {},
41
+ children
42
+ })
43
+ }), displayFiles.length > 0 && /* @__PURE__ */ jsx(FileUploadList, {
44
+ className: "space-y-1 m-0",
45
+ forceMount: true,
46
+ children: displayFiles.map((data) => {
47
+ const { name, lastModified } = data;
48
+ const key = `${name}-${lastModified}`;
49
+ return /* @__PURE__ */ jsx(FileUploadRootItem, {
50
+ ...data,
51
+ file: getFile(data),
52
+ disabled,
53
+ onDelete: deleteFile,
54
+ ...slots?.fileItem || {}
55
+ }, key);
56
+ })
57
+ })] })
58
+ });
59
+ }
60
+ FileUploadRoot.displayName = "FileUploadRoot";
61
+
62
+ //#endregion
63
+ export { FileUploadRoot };
@@ -16,7 +16,7 @@ pretty_bytes = require_rolldown_runtime.__toESM(pretty_bytes);
16
16
  let react_jsx_runtime = require("react/jsx-runtime");
17
17
  react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
18
18
 
19
- //#region src/file-upload-inline/FileUploadInlineItem.tsx
19
+ //#region src/file-upload-root/FileUploadRootItem.tsx
20
20
  const FileMetaDataDisplay = ({ size, name, children }) => {
21
21
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
22
22
  className: (0, __pixpilot_shadcn.cn)("min-w-0 flex-1 flex flex-col"),
@@ -55,7 +55,7 @@ const FileItemInnerWrapper = ({ children }) => {
55
55
  children
56
56
  });
57
57
  };
58
- const FileUploadInlineItem = react.default.memo(({ file, name = "", size = 0, type = "", lastModified = 0, disabled = false, onDelete }) => {
58
+ const FileUploadRootItem = react.default.memo(({ file, name = "", size = 0, type = "", lastModified = 0, disabled = false, onDelete }) => {
59
59
  require_use_file_upload_progress_callbacks.useFileUploadProgressCallbacks(file, { onChange: () => {} });
60
60
  const fileError = require_use_file_error.useFileError(file);
61
61
  const isUploading = (0, __pixpilot_shadcn.useFileUpload)((store) => {
@@ -89,6 +89,7 @@ const FileUploadInlineItem = react.default.memo(({ file, name = "", size = 0, ty
89
89
  })] })
90
90
  }, `${name}-${size}-${lastModified}`);
91
91
  });
92
+ FileUploadRootItem.displayName = "FileUploadRootItem";
92
93
 
93
94
  //#endregion
94
- exports.FileUploadInlineItem = FileUploadInlineItem;
95
+ exports.FileUploadRootItem = FileUploadRootItem;
@@ -0,0 +1,13 @@
1
+ import { FileMetadata } from "../file-upload/types/index.cjs";
2
+ import { FileWithMetadata } from "../file-upload/utils/merge-file-metadata.cjs";
3
+ import React from "react";
4
+
5
+ //#region src/file-upload-root/FileUploadRootItem.d.ts
6
+ interface FileUploadRootItemProps extends Partial<FileMetadata> {
7
+ file: File;
8
+ disabled?: boolean;
9
+ onDelete: (file: FileWithMetadata) => void;
10
+ }
11
+ declare const FileUploadRootItem: React.FC<FileUploadRootItemProps>;
12
+ //#endregion
13
+ export { FileUploadRootItem, FileUploadRootItemProps };
@@ -0,0 +1,14 @@
1
+ import { FileMetadata } from "../file-upload/types/index.js";
2
+ import { FileWithMetadata } from "../file-upload/utils/merge-file-metadata.js";
3
+ import "../file-upload/utils/index.js";
4
+ import React from "react";
5
+
6
+ //#region src/file-upload-root/FileUploadRootItem.d.ts
7
+ interface FileUploadRootItemProps extends Partial<FileMetadata> {
8
+ file: File;
9
+ disabled?: boolean;
10
+ onDelete: (file: FileWithMetadata) => void;
11
+ }
12
+ declare const FileUploadRootItem: React.FC<FileUploadRootItemProps>;
13
+ //#endregion
14
+ export { FileUploadRootItem, FileUploadRootItemProps };
@@ -10,7 +10,7 @@ import React from "react";
10
10
  import prettyBytes from "pretty-bytes";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
12
 
13
- //#region src/file-upload-inline/FileUploadInlineItem.tsx
13
+ //#region src/file-upload-root/FileUploadRootItem.tsx
14
14
  const FileMetaDataDisplay = ({ size, name, children }) => {
15
15
  return /* @__PURE__ */ jsxs("div", {
16
16
  className: cn("min-w-0 flex-1 flex flex-col"),
@@ -49,7 +49,7 @@ const FileItemInnerWrapper = ({ children }) => {
49
49
  children
50
50
  });
51
51
  };
52
- const FileUploadInlineItem = React.memo(({ file, name = "", size = 0, type = "", lastModified = 0, disabled = false, onDelete }) => {
52
+ const FileUploadRootItem = React.memo(({ file, name = "", size = 0, type = "", lastModified = 0, disabled = false, onDelete }) => {
53
53
  useFileUploadProgressCallbacks(file, { onChange: () => {} });
54
54
  const fileError = useFileError(file);
55
55
  const isUploading = useFileUpload((store) => {
@@ -83,6 +83,7 @@ const FileUploadInlineItem = React.memo(({ file, name = "", size = 0, type = "",
83
83
  })] })
84
84
  }, `${name}-${size}-${lastModified}`);
85
85
  });
86
+ FileUploadRootItem.displayName = "FileUploadRootItem";
86
87
 
87
88
  //#endregion
88
- export { FileUploadInlineItem };
89
+ export { FileUploadRootItem };
@@ -0,0 +1,2 @@
1
+ const require_FileUploadRootItem = require('./FileUploadRootItem.cjs');
2
+ const require_FileUploadRoot = require('./FileUploadRoot.cjs');
@@ -0,0 +1,3 @@
1
+ import { FileUploadRootItem, FileUploadRootItemProps } from "./FileUploadRootItem.cjs";
2
+ import { FileUploadRootProps, FileUploadRootPropsBaseProps } from "./types.cjs";
3
+ import { FileUploadRoot } from "./FileUploadRoot.cjs";
@@ -0,0 +1,3 @@
1
+ import { FileUploadRootItem, FileUploadRootItemProps } from "./FileUploadRootItem.js";
2
+ import { FileUploadRootProps, FileUploadRootPropsBaseProps } from "./types.js";
3
+ import { FileUploadRoot } from "./FileUploadRoot.js";
@@ -0,0 +1,2 @@
1
+ import { FileUploadRootItem } from "./FileUploadRootItem.js";
2
+ import { FileUploadRoot } from "./FileUploadRoot.js";
@@ -0,0 +1,26 @@
1
+ import { FileUploadProps } from "../file-upload/types/index.cjs";
2
+ import { FileUploadRootItemProps } from "./FileUploadRootItem.cjs";
3
+ import { ComponentProps, ReactNode } from "react";
4
+
5
+ //#region src/file-upload-root/types.d.ts
6
+ interface FileUploadRootPropsBaseProps {
7
+ /**
8
+ * Optional custom trigger children
9
+ */
10
+ children?: ReactNode;
11
+ slots?: {
12
+ /** Props spread onto the `FileUploadTrigger` (renders a `button`) */
13
+ trigger?: Omit<ComponentProps<'button'>, 'children'> & {
14
+ asChild?: boolean;
15
+ };
16
+ /** Props spread onto the `FileUploadDropzone` (renders a `div`) */
17
+ dropzone?: ComponentProps<'div'> & {
18
+ asChild?: boolean;
19
+ };
20
+ /** Props passed to the file item component */
21
+ fileItem?: Partial<FileUploadRootItemProps>;
22
+ };
23
+ }
24
+ type FileUploadRootProps = FileUploadRootPropsBaseProps & FileUploadProps;
25
+ //#endregion
26
+ export { FileUploadRootProps, FileUploadRootPropsBaseProps };
@@ -0,0 +1,26 @@
1
+ import { FileUploadProps } from "../file-upload/types/index.js";
2
+ import { FileUploadRootItemProps } from "./FileUploadRootItem.js";
3
+ import { ComponentProps, ReactNode } from "react";
4
+
5
+ //#region src/file-upload-root/types.d.ts
6
+ interface FileUploadRootPropsBaseProps {
7
+ /**
8
+ * Optional custom trigger children
9
+ */
10
+ children?: ReactNode;
11
+ slots?: {
12
+ /** Props spread onto the `FileUploadTrigger` (renders a `button`) */
13
+ trigger?: Omit<ComponentProps<'button'>, 'children'> & {
14
+ asChild?: boolean;
15
+ };
16
+ /** Props spread onto the `FileUploadDropzone` (renders a `div`) */
17
+ dropzone?: ComponentProps<'div'> & {
18
+ asChild?: boolean;
19
+ };
20
+ /** Props passed to the file item component */
21
+ fileItem?: Partial<FileUploadRootItemProps>;
22
+ };
23
+ }
24
+ type FileUploadRootProps = FileUploadRootPropsBaseProps & FileUploadProps;
25
+ //#endregion
26
+ export { FileUploadRootProps, FileUploadRootPropsBaseProps };
package/dist/index.cjs CHANGED
@@ -25,6 +25,9 @@ const require_ContentCard = require('./ContentCard.cjs');
25
25
  const require_DatePicker = require('./DatePicker.cjs');
26
26
  const require_Dialog = require('./dialog/Dialog.cjs');
27
27
  require('./dialog/index.cjs');
28
+ const require_FileUploadRootItem = require('./file-upload-root/FileUploadRootItem.cjs');
29
+ const require_FileUploadRoot = require('./file-upload-root/FileUploadRoot.cjs');
30
+ require('./file-upload-root/index.cjs');
28
31
  const require_FileUploadInline = require('./file-upload-inline/FileUploadInline.cjs');
29
32
  require('./file-upload-inline/index.cjs');
30
33
  const require_use_media_query = require('./hooks/use-media-query.cjs');
@@ -106,6 +109,8 @@ exports.DialogTitle = __pixpilot_shadcn.DialogTitle;
106
109
  exports.DialogTrigger = __pixpilot_shadcn.DialogTrigger;
107
110
  exports.FileUpload = require_FileUpload.FileUpload;
108
111
  exports.FileUploadInline = require_FileUploadInline.FileUploadInline;
112
+ exports.FileUploadRoot = require_FileUploadRoot.FileUploadRoot;
113
+ exports.FileUploadRootItem = require_FileUploadRootItem.FileUploadRootItem;
109
114
  exports.IconPicker = require_IconPicker.IconPicker;
110
115
  exports.IconToggle = require_IconToggle.IconToggle;
111
116
  exports.Input = require_Input.Input;
package/dist/index.d.cts CHANGED
@@ -24,6 +24,10 @@ import { ContentCard } from "./ContentCard.cjs";
24
24
  import { DatePicker, DatePickerProps } from "./DatePicker.cjs";
25
25
  import { DialogBody, DialogContent, DialogFooter, DialogHeader } from "./dialog/Dialog.cjs";
26
26
  import { Dialog, DialogClose, DialogDescription, DialogTitle, DialogTrigger } from "./dialog/index.cjs";
27
+ import { FileUploadRootItem, FileUploadRootItemProps } from "./file-upload-root/FileUploadRootItem.cjs";
28
+ import { FileUploadRootProps, FileUploadRootPropsBaseProps } from "./file-upload-root/types.cjs";
29
+ import { FileUploadRoot } from "./file-upload-root/FileUploadRoot.cjs";
30
+ import "./file-upload-root/index.cjs";
27
31
  import { FileUploadInlineBaseProps, FileUploadInlineProps } from "./file-upload-inline/types.cjs";
28
32
  import { FileUploadInline } from "./file-upload-inline/FileUploadInline.cjs";
29
33
  import "./file-upload-inline/index.cjs";
@@ -79,4 +83,4 @@ import "./toast/index.cjs";
79
83
  import { ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleGroupValue } from "./ToggleGroup.cjs";
80
84
  import { isSvgMarkupString, svgMarkupToMaskUrl } from "./utils/svg.cjs";
81
85
  import { cn } from "@pixpilot/shadcn";
82
- export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertToastProps, AlertVariant, AvatarUpload, AvatarUploadProps, BaseTabsTriggerProps, Button, ButtonGroup, ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, ButtonLoaderProps, ButtonProps, CircleLoader, CircleLoaderProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, ColorPicker, ColorPickerBase, ColorPickerBaseProps, ColorPickerBaseSection, ColorPickerProps, ColorSelect, ColorSelectOption, BaseColorSelectProps as ColorSelectProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DatePickerProps, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogProvider, DialogProviderProps, DialogTitle, DialogTrigger, type FileMetadata, FileUpload, FileUploadBaseProps, FileUploadInline, FileUploadInlineBaseProps, FileUploadInlineProps, type FileUploadProgressCallBacks, type FileUploadProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, IconProviderProps, IconToggle, IconToggleProps, Input, InputProps, Layout, LayoutFooter, LayoutFooterProps, LayoutHeader, LayoutHeaderProps, LayoutMain, LayoutMainProps, LayoutProps, LoadingOverlay, LoadingOverlayProps, MultiFileUploadProps, OnChangeMultipleFiles, OnChangeSingleFile, Pagination, PaginationProps, Popover, PopoverAnchor, PopoverCloseButtonProps, PopoverContent, PopoverContentProps, PopoverTrigger, PresetColor, Rating, RatingButton, RatingButtonProps, RatingColor, RatingOption, RatingProps, RichTextEditor, RichTextEditorProps, RichTextEditorSlots, ScaledPreview, ScaledPreviewProps, ScaledPreviewSize, Select, SelectContentProps, SelectOption, SingleFileUploadProps, Slider, SliderInput, SliderInputProps, SliderProps, SliderSelect, SliderSelectOption, SliderSelectProps, SliderSelectValue, Tabs, TabsContent, TabsContext, TabsContextValue, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TabsVariant, TagsInput, TagsInputInline, TagsInputInlineItem, TagsInputInlineProps, TagsInputProps, ThemeModeDropdown, ThemeModeDropdownProps, ThemeModeSwitchInside, ThemeModeSwitchInsideProps, ThemeModeSwitchInsideSize, ThemeModeSwitchOutside, ThemeModeSwitchOutsideProps, ThemeModeToggleButton, ThemeModeToggleButtonProps, ThemeProvider, ThemeProviderProps, ToastFunction, ToastMessage, Toaster, ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleGroupValue, ToolbarItems, cn, isSvgMarkupString, showConfirmDialog, svgMarkupToMaskUrl, toast, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
86
+ export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertToastProps, AlertVariant, AvatarUpload, AvatarUploadProps, BaseTabsTriggerProps, Button, ButtonGroup, ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, ButtonLoaderProps, ButtonProps, CircleLoader, CircleLoaderProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, ColorPicker, ColorPickerBase, ColorPickerBaseProps, ColorPickerBaseSection, ColorPickerProps, ColorSelect, ColorSelectOption, BaseColorSelectProps as ColorSelectProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DatePickerProps, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogProvider, DialogProviderProps, DialogTitle, DialogTrigger, type FileMetadata, FileUpload, FileUploadBaseProps, FileUploadInline, FileUploadInlineBaseProps, FileUploadInlineProps, type FileUploadProgressCallBacks, type FileUploadProps, FileUploadRoot, FileUploadRootItem, FileUploadRootItemProps, FileUploadRootProps, FileUploadRootPropsBaseProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, IconProviderProps, IconToggle, IconToggleProps, Input, InputProps, Layout, LayoutFooter, LayoutFooterProps, LayoutHeader, LayoutHeaderProps, LayoutMain, LayoutMainProps, LayoutProps, LoadingOverlay, LoadingOverlayProps, MultiFileUploadProps, OnChangeMultipleFiles, OnChangeSingleFile, Pagination, PaginationProps, Popover, PopoverAnchor, PopoverCloseButtonProps, PopoverContent, PopoverContentProps, PopoverTrigger, PresetColor, Rating, RatingButton, RatingButtonProps, RatingColor, RatingOption, RatingProps, RichTextEditor, RichTextEditorProps, RichTextEditorSlots, ScaledPreview, ScaledPreviewProps, ScaledPreviewSize, Select, SelectContentProps, SelectOption, SingleFileUploadProps, Slider, SliderInput, SliderInputProps, SliderProps, SliderSelect, SliderSelectOption, SliderSelectProps, SliderSelectValue, Tabs, TabsContent, TabsContext, TabsContextValue, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TabsVariant, TagsInput, TagsInputInline, TagsInputInlineItem, TagsInputInlineProps, TagsInputProps, ThemeModeDropdown, ThemeModeDropdownProps, ThemeModeSwitchInside, ThemeModeSwitchInsideProps, ThemeModeSwitchInsideSize, ThemeModeSwitchOutside, ThemeModeSwitchOutsideProps, ThemeModeToggleButton, ThemeModeToggleButtonProps, ThemeProvider, ThemeProviderProps, ToastFunction, ToastMessage, Toaster, ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleGroupValue, ToolbarItems, cn, isSvgMarkupString, showConfirmDialog, svgMarkupToMaskUrl, toast, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
package/dist/index.d.ts CHANGED
@@ -26,6 +26,10 @@ import { ContentCard } from "./ContentCard.js";
26
26
  import { DatePicker, DatePickerProps } from "./DatePicker.js";
27
27
  import { DialogBody, DialogContent, DialogFooter, DialogHeader } from "./dialog/Dialog.js";
28
28
  import { Dialog, DialogClose, DialogDescription, DialogTitle, DialogTrigger } from "./dialog/index.js";
29
+ import { FileUploadRootItem, FileUploadRootItemProps } from "./file-upload-root/FileUploadRootItem.js";
30
+ import { FileUploadRootProps, FileUploadRootPropsBaseProps } from "./file-upload-root/types.js";
31
+ import { FileUploadRoot } from "./file-upload-root/FileUploadRoot.js";
32
+ import "./file-upload-root/index.js";
29
33
  import { FileUploadInlineBaseProps, FileUploadInlineProps } from "./file-upload-inline/types.js";
30
34
  import { FileUploadInline } from "./file-upload-inline/FileUploadInline.js";
31
35
  import "./file-upload-inline/index.js";
@@ -81,4 +85,4 @@ import "./toast/index.js";
81
85
  import { ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleGroupValue } from "./ToggleGroup.js";
82
86
  import { isSvgMarkupString, svgMarkupToMaskUrl } from "./utils/svg.js";
83
87
  import { cn } from "@pixpilot/shadcn";
84
- export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertToastProps, AlertVariant, AvatarUpload, AvatarUploadProps, BaseTabsTriggerProps, Button, ButtonGroup, ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, ButtonLoaderProps, ButtonProps, CircleLoader, CircleLoaderProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, ColorPicker, ColorPickerBase, ColorPickerBaseProps, ColorPickerBaseSection, ColorPickerProps, ColorSelect, ColorSelectOption, BaseColorSelectProps as ColorSelectProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DatePickerProps, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogProvider, DialogProviderProps, DialogTitle, DialogTrigger, type FileMetadata, FileUpload, FileUploadBaseProps, FileUploadInline, FileUploadInlineBaseProps, FileUploadInlineProps, type FileUploadProgressCallBacks, type FileUploadProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, IconProviderProps, IconToggle, IconToggleProps, Input, InputProps, Layout, LayoutFooter, LayoutFooterProps, LayoutHeader, LayoutHeaderProps, LayoutMain, LayoutMainProps, LayoutProps, LoadingOverlay, LoadingOverlayProps, MultiFileUploadProps, OnChangeMultipleFiles, OnChangeSingleFile, Pagination, PaginationProps, Popover, PopoverAnchor, PopoverCloseButtonProps, PopoverContent, PopoverContentProps, PopoverTrigger, PresetColor, Rating, RatingButton, RatingButtonProps, RatingColor, RatingOption, RatingProps, RichTextEditor, RichTextEditorProps, RichTextEditorSlots, ScaledPreview, ScaledPreviewProps, ScaledPreviewSize, Select, SelectContentProps, SelectOption, SingleFileUploadProps, Slider, SliderInput, SliderInputProps, SliderProps, SliderSelect, SliderSelectOption, SliderSelectProps, SliderSelectValue, Tabs, TabsContent, TabsContext, TabsContextValue, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TabsVariant, TagsInput, TagsInputInline, TagsInputInlineItem, TagsInputInlineProps, TagsInputProps, ThemeModeDropdown, ThemeModeDropdownProps, ThemeModeSwitchInside, ThemeModeSwitchInsideProps, ThemeModeSwitchInsideSize, ThemeModeSwitchOutside, ThemeModeSwitchOutsideProps, ThemeModeToggleButton, ThemeModeToggleButtonProps, ThemeProvider, ThemeProviderProps, ToastFunction, ToastMessage, Toaster, ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleGroupValue, ToolbarItems, cn, isSvgMarkupString, showConfirmDialog, svgMarkupToMaskUrl, toast, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
88
+ export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertToastProps, AlertVariant, AvatarUpload, AvatarUploadProps, BaseTabsTriggerProps, Button, ButtonGroup, ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, ButtonLoaderProps, ButtonProps, CircleLoader, CircleLoaderProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, ColorPicker, ColorPickerBase, ColorPickerBaseProps, ColorPickerBaseSection, ColorPickerProps, ColorSelect, ColorSelectOption, BaseColorSelectProps as ColorSelectProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DatePickerProps, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogProvider, DialogProviderProps, DialogTitle, DialogTrigger, type FileMetadata, FileUpload, FileUploadBaseProps, FileUploadInline, FileUploadInlineBaseProps, FileUploadInlineProps, type FileUploadProgressCallBacks, type FileUploadProps, FileUploadRoot, FileUploadRootItem, FileUploadRootItemProps, FileUploadRootProps, FileUploadRootPropsBaseProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, IconProviderProps, IconToggle, IconToggleProps, Input, InputProps, Layout, LayoutFooter, LayoutFooterProps, LayoutHeader, LayoutHeaderProps, LayoutMain, LayoutMainProps, LayoutProps, LoadingOverlay, LoadingOverlayProps, MultiFileUploadProps, OnChangeMultipleFiles, OnChangeSingleFile, Pagination, PaginationProps, Popover, PopoverAnchor, PopoverCloseButtonProps, PopoverContent, PopoverContentProps, PopoverTrigger, PresetColor, Rating, RatingButton, RatingButtonProps, RatingColor, RatingOption, RatingProps, RichTextEditor, RichTextEditorProps, RichTextEditorSlots, ScaledPreview, ScaledPreviewProps, ScaledPreviewSize, Select, SelectContentProps, SelectOption, SingleFileUploadProps, Slider, SliderInput, SliderInputProps, SliderProps, SliderSelect, SliderSelectOption, SliderSelectProps, SliderSelectValue, Tabs, TabsContent, TabsContext, TabsContextValue, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TabsVariant, TagsInput, TagsInputInline, TagsInputInlineItem, TagsInputInlineProps, TagsInputProps, ThemeModeDropdown, ThemeModeDropdownProps, ThemeModeSwitchInside, ThemeModeSwitchInsideProps, ThemeModeSwitchInsideSize, ThemeModeSwitchOutside, ThemeModeSwitchOutsideProps, ThemeModeToggleButton, ThemeModeToggleButtonProps, ThemeProvider, ThemeProviderProps, ToastFunction, ToastMessage, Toaster, ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleGroupValue, ToolbarItems, cn, isSvgMarkupString, showConfirmDialog, svgMarkupToMaskUrl, toast, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
package/dist/index.js CHANGED
@@ -24,6 +24,9 @@ import { ContentCard } from "./ContentCard.js";
24
24
  import { DatePicker } from "./DatePicker.js";
25
25
  import { DialogBody, DialogContent, DialogFooter, DialogHeader } from "./dialog/Dialog.js";
26
26
  import { Dialog, DialogClose, DialogDescription, DialogTitle, DialogTrigger } from "./dialog/index.js";
27
+ import { FileUploadRootItem } from "./file-upload-root/FileUploadRootItem.js";
28
+ import { FileUploadRoot } from "./file-upload-root/FileUploadRoot.js";
29
+ import "./file-upload-root/index.js";
27
30
  import { FileUploadInline } from "./file-upload-inline/FileUploadInline.js";
28
31
  import "./file-upload-inline/index.js";
29
32
  import { useMediaQuery } from "./hooks/use-media-query.js";
@@ -75,4 +78,4 @@ import "./toast/index.js";
75
78
  import { ToggleGroup, ToggleGroupItem } from "./ToggleGroup.js";
76
79
  import { cn } from "@pixpilot/shadcn";
77
80
 
78
- export { AbsoluteFill, Alert, AvatarUpload, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CircleLoader, CloseButtonAbsolute, CloseButtonRounded, ColorPicker, ColorPickerBase, ColorSelect, Combobox, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogProvider, DialogTitle, DialogTrigger, FileUpload, FileUploadInline, IconPicker, IconToggle, Input, Layout, LayoutFooter, LayoutHeader, LayoutMain, LoadingOverlay, Pagination, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Rating, RatingButton, RichTextEditor, ScaledPreview, Select, Slider, SliderInput, SliderSelect, Tabs, TabsContent, TabsContext, TabsList, TabsTrigger, TagsInput, TagsInputInline, ThemeModeDropdown, ThemeModeSwitchInside, ThemeModeSwitchOutside, ThemeModeToggleButton, ThemeProvider, Toaster, ToggleGroup, ToggleGroupItem, cn, isSvgMarkupString, showConfirmDialog, svgMarkupToMaskUrl, toast, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
81
+ export { AbsoluteFill, Alert, AvatarUpload, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CircleLoader, CloseButtonAbsolute, CloseButtonRounded, ColorPicker, ColorPickerBase, ColorSelect, Combobox, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogProvider, DialogTitle, DialogTrigger, FileUpload, FileUploadInline, FileUploadRoot, FileUploadRootItem, IconPicker, IconToggle, Input, Layout, LayoutFooter, LayoutHeader, LayoutMain, LoadingOverlay, Pagination, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Rating, RatingButton, RichTextEditor, ScaledPreview, Select, Slider, SliderInput, SliderSelect, Tabs, TabsContent, TabsContext, TabsList, TabsTrigger, TagsInput, TagsInputInline, ThemeModeDropdown, ThemeModeSwitchInside, ThemeModeSwitchOutside, ThemeModeToggleButton, ThemeProvider, Toaster, ToggleGroup, ToggleGroupItem, cn, isSvgMarkupString, showConfirmDialog, svgMarkupToMaskUrl, toast, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime11 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime13 from "react/jsx-runtime";
2
2
  import { InputProps } from "@pixpilot/shadcn";
3
3
  import * as React$1 from "react";
4
4
 
@@ -10,6 +10,6 @@ type InputProps$1 = InputProps & {
10
10
  prefixClassName?: string;
11
11
  suffixClassName?: string;
12
12
  };
13
- declare function Input(props: InputProps$1): react_jsx_runtime11.JSX.Element;
13
+ declare function Input(props: InputProps$1): react_jsx_runtime13.JSX.Element;
14
14
  //#endregion
15
15
  export { Input, InputProps$1 as InputProps };
@@ -1,5 +1,5 @@
1
1
  import { CommandOptionListItem } from "../CommandOptionList.cjs";
2
- import * as react_jsx_runtime15 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime19 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/tags-input/TagsInput.d.ts
5
5
  interface TagsInputProps {
@@ -57,6 +57,6 @@ declare function TagsInput({
57
57
  addOnTab,
58
58
  onValidate,
59
59
  addButtonVisibility
60
- }: TagsInputProps): react_jsx_runtime15.JSX.Element;
60
+ }: TagsInputProps): react_jsx_runtime19.JSX.Element;
61
61
  //#endregion
62
62
  export { TagsInput, TagsInputProps };
@@ -1,5 +1,5 @@
1
1
  import { CommandOptionListItem } from "../CommandOptionList.js";
2
- import * as react_jsx_runtime14 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime13 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/tags-input/TagsInput.d.ts
5
5
  interface TagsInputProps {
@@ -57,6 +57,6 @@ declare function TagsInput({
57
57
  addOnTab,
58
58
  onValidate,
59
59
  addButtonVisibility
60
- }: TagsInputProps): react_jsx_runtime14.JSX.Element;
60
+ }: TagsInputProps): react_jsx_runtime13.JSX.Element;
61
61
  //#endregion
62
62
  export { TagsInput, TagsInputProps };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime13 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime18 from "react/jsx-runtime";
2
2
  import { ChangeEventHandler, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, Ref } from "react";
3
3
 
4
4
  //#region src/tags-input/TagsInputInline.d.ts
@@ -75,6 +75,6 @@ declare function TagsInputInline({
75
75
  canAddCurrentValue,
76
76
  onAddCurrentInput,
77
77
  showClear
78
- }: TagsInputInlineProps): react_jsx_runtime13.JSX.Element;
78
+ }: TagsInputInlineProps): react_jsx_runtime18.JSX.Element;
79
79
  //#endregion
80
80
  export { TagsInputInline, TagsInputInlineItem, TagsInputInlineProps };
@@ -1,5 +1,5 @@
1
1
  import { ChangeEventHandler, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, Ref } from "react";
2
- import * as react_jsx_runtime13 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime12 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/tags-input/TagsInputInline.d.ts
5
5
  interface TagsInputInlineItem {
@@ -75,6 +75,6 @@ declare function TagsInputInline({
75
75
  canAddCurrentValue,
76
76
  onAddCurrentInput,
77
77
  showClear
78
- }: TagsInputInlineProps): react_jsx_runtime13.JSX.Element;
78
+ }: TagsInputInlineProps): react_jsx_runtime12.JSX.Element;
79
79
  //#endregion
80
80
  export { TagsInputInline, TagsInputInlineItem, TagsInputInlineProps };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime16 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime15 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/theme-toggle/ThemeModeDropdown.d.ts
4
4
  interface ThemeModeDropdownProps {
@@ -17,7 +17,7 @@ interface ThemeModeDropdownProps {
17
17
  * Provides Light / Dark / System options.
18
18
  * Pure component - requires themeValue and onChange props.
19
19
  */
20
- declare function ThemeModeDropdown(props: ThemeModeDropdownProps): react_jsx_runtime16.JSX.Element;
20
+ declare function ThemeModeDropdown(props: ThemeModeDropdownProps): react_jsx_runtime15.JSX.Element;
21
21
  declare namespace ThemeModeDropdown {
22
22
  var displayName: string;
23
23
  }
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime16 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime15 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/theme-toggle/ThemeModeDropdown.d.ts
4
4
  interface ThemeModeDropdownProps {
@@ -17,7 +17,7 @@ interface ThemeModeDropdownProps {
17
17
  * Provides Light / Dark / System options.
18
18
  * Pure component - requires themeValue and onChange props.
19
19
  */
20
- declare function ThemeModeDropdown(props: ThemeModeDropdownProps): react_jsx_runtime16.JSX.Element;
20
+ declare function ThemeModeDropdown(props: ThemeModeDropdownProps): react_jsx_runtime15.JSX.Element;
21
21
  declare namespace ThemeModeDropdown {
22
22
  var displayName: string;
23
23
  }
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime17 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime16 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/theme-toggle/ThemeModeSwitchInside.d.ts
4
4
  type ThemeModeSwitchInsideSize = 'sm' | 'md' | 'lg';
@@ -25,7 +25,7 @@ interface ThemeModeSwitchInsideProps {
25
25
  * Icons are embedded within the switch control.
26
26
  * Pure component - requires value and onChange props.
27
27
  */
28
- declare function ThemeModeSwitchInside(props: ThemeModeSwitchInsideProps): react_jsx_runtime17.JSX.Element;
28
+ declare function ThemeModeSwitchInside(props: ThemeModeSwitchInsideProps): react_jsx_runtime16.JSX.Element;
29
29
  declare namespace ThemeModeSwitchInside {
30
30
  var displayName: string;
31
31
  }
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime17 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime16 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/theme-toggle/ThemeModeSwitchInside.d.ts
4
4
  type ThemeModeSwitchInsideSize = 'sm' | 'md' | 'lg';
@@ -25,7 +25,7 @@ interface ThemeModeSwitchInsideProps {
25
25
  * Icons are embedded within the switch control.
26
26
  * Pure component - requires value and onChange props.
27
27
  */
28
- declare function ThemeModeSwitchInside(props: ThemeModeSwitchInsideProps): react_jsx_runtime17.JSX.Element;
28
+ declare function ThemeModeSwitchInside(props: ThemeModeSwitchInsideProps): react_jsx_runtime16.JSX.Element;
29
29
  declare namespace ThemeModeSwitchInside {
30
30
  var displayName: string;
31
31
  }
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime18 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime17 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/theme-toggle/ThemeModeSwitchOutside.d.ts
4
4
  interface ThemeModeSwitchOutsideProps {
@@ -22,7 +22,7 @@ interface ThemeModeSwitchOutsideProps {
22
22
  * Icons flank the switch control on either side.
23
23
  * Pure component - requires value and onChange props.
24
24
  */
25
- declare function ThemeModeSwitchOutside(props: ThemeModeSwitchOutsideProps): react_jsx_runtime18.JSX.Element;
25
+ declare function ThemeModeSwitchOutside(props: ThemeModeSwitchOutsideProps): react_jsx_runtime17.JSX.Element;
26
26
  declare namespace ThemeModeSwitchOutside {
27
27
  var displayName: string;
28
28
  }
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime18 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime17 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/theme-toggle/ThemeModeSwitchOutside.d.ts
4
4
  interface ThemeModeSwitchOutsideProps {
@@ -22,7 +22,7 @@ interface ThemeModeSwitchOutsideProps {
22
22
  * Icons flank the switch control on either side.
23
23
  * Pure component - requires value and onChange props.
24
24
  */
25
- declare function ThemeModeSwitchOutside(props: ThemeModeSwitchOutsideProps): react_jsx_runtime18.JSX.Element;
25
+ declare function ThemeModeSwitchOutside(props: ThemeModeSwitchOutsideProps): react_jsx_runtime17.JSX.Element;
26
26
  declare namespace ThemeModeSwitchOutside {
27
27
  var displayName: string;
28
28
  }
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime15 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime14 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/theme-toggle/ThemeModeToggleButton.d.ts
4
4
  interface ThemeModeToggleButtonProps {
@@ -13,7 +13,7 @@ interface ThemeModeToggleButtonProps {
13
13
  * Light/Dark toggle button.
14
14
  * Pure component - toggles between light and dark.
15
15
  */
16
- declare function ThemeModeToggleButton(props: ThemeModeToggleButtonProps): react_jsx_runtime15.JSX.Element;
16
+ declare function ThemeModeToggleButton(props: ThemeModeToggleButtonProps): react_jsx_runtime14.JSX.Element;
17
17
  declare namespace ThemeModeToggleButton {
18
18
  var displayName: string;
19
19
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pixpilot/shadcn-ui",
3
3
  "type": "module",
4
- "version": "0.57.2",
4
+ "version": "0.58.0",
5
5
  "description": "Custom UI components and utilities built with shadcn/ui.",
6
6
  "author": "m.doaie <m.doaie@hotmail.com>",
7
7
  "license": "MIT",
@@ -60,11 +60,11 @@
60
60
  "react-dom": "19.2.0",
61
61
  "tsdown": "^0.15.12",
62
62
  "typescript": "^5.9.3",
63
- "@internal/hooks": "0.0.0",
64
63
  "@internal/eslint-config": "0.3.0",
64
+ "@internal/hooks": "0.0.0",
65
65
  "@internal/prettier-config": "0.0.1",
66
- "@internal/tsdown-config": "0.1.0",
67
66
  "@internal/tsconfig": "0.1.0",
67
+ "@internal/tsdown-config": "0.1.0",
68
68
  "@internal/vitest-config": "0.1.0"
69
69
  },
70
70
  "prettier": "@internal/prettier-config",