@deepnoid/ui 0.1.165 → 0.1.167

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.
@@ -29,29 +29,32 @@ function FileUpload({
29
29
  helperMessage,
30
30
  showProgress,
31
31
  name,
32
- classNames
32
+ classNames,
33
+ defaultFile
33
34
  }) {
34
35
  const fileInputRef = useRef(null);
35
36
  const uploadIntervalRef = useRef(null);
36
- const [file, setFile] = useState(null);
37
+ const [currentFile, setCurrentFile] = useState(null);
37
38
  const [uploadProgress, setUploadProgress] = useState(0);
38
39
  const [message, setMessage] = useState(errorMessage);
40
+ const [displayFileName, setDisplayFileName] = useState(() => (defaultFile == null ? void 0 : defaultFile.name) || "");
41
+ const [hasUploadedFile, setHasUploadedFile] = useState(false);
39
42
  const slots = fileUploadStyle();
40
43
  const handleButtonClick = () => {
41
44
  var _a;
42
45
  (_a = fileInputRef.current) == null ? void 0 : _a.click();
43
46
  };
44
- const validateFile = (file2) => {
45
- if (accept.length && !accept.includes(file2.type)) {
47
+ const validateFile = (file) => {
48
+ if (accept.length && !accept.includes(file.type)) {
46
49
  return acceptErrorMessage;
47
50
  }
48
- const sizeMB = file2.size / 1024 / 1024;
51
+ const sizeMB = file.size / 1024 / 1024;
49
52
  if (sizeMB > maxSizeMB) {
50
53
  return `${sizeErrorMessage} (${maxSizeMB}MB)`;
51
54
  }
52
55
  return null;
53
56
  };
54
- const startUploadSimulation = (file2) => {
57
+ const startUploadSimulation = (file) => {
55
58
  let progress = 0;
56
59
  setUploadProgress(0);
57
60
  uploadIntervalRef.current = window.setInterval(() => {
@@ -59,7 +62,7 @@ function FileUpload({
59
62
  setUploadProgress(progress);
60
63
  if (progress >= 100) {
61
64
  clearInterval(uploadIntervalRef.current);
62
- onFileUpload == null ? void 0 : onFileUpload(file2);
65
+ onFileUpload == null ? void 0 : onFileUpload(file);
63
66
  }
64
67
  }, 100);
65
68
  };
@@ -70,20 +73,26 @@ function FileUpload({
70
73
  const error = validateFile(selectedFile);
71
74
  if (error) {
72
75
  setMessage(error);
73
- setFile(null);
76
+ setCurrentFile(null);
77
+ setDisplayFileName((defaultFile == null ? void 0 : defaultFile.name) || "");
78
+ setHasUploadedFile(false);
74
79
  return;
75
80
  }
76
- setFile(selectedFile);
81
+ setCurrentFile(selectedFile);
82
+ setDisplayFileName(selectedFile.name);
77
83
  setMessage("");
84
+ setHasUploadedFile(true);
78
85
  startUploadSimulation(selectedFile);
79
86
  };
80
87
  const handleCancelUpload = () => {
81
88
  if (uploadIntervalRef.current) {
82
89
  clearInterval(uploadIntervalRef.current);
83
90
  }
84
- setFile(null);
91
+ setCurrentFile(null);
85
92
  setUploadProgress(0);
86
93
  setMessage("");
94
+ setDisplayFileName((defaultFile == null ? void 0 : defaultFile.name) || "");
95
+ setHasUploadedFile(false);
87
96
  if (onCancelUpload) onCancelUpload();
88
97
  };
89
98
  useEffect(() => {
@@ -94,8 +103,11 @@ function FileUpload({
94
103
  };
95
104
  }, []);
96
105
  useEffect(() => {
97
- setMessage(errorMessage);
98
- }, [setMessage, errorMessage]);
106
+ if (errorMessage !== void 0) {
107
+ setMessage(errorMessage);
108
+ }
109
+ }, [errorMessage]);
110
+ const shouldShowCloseButton = hasUploadedFile;
99
111
  return /* @__PURE__ */ jsxs("div", { className: slots.base({ class: classNames == null ? void 0 : classNames.base }), children: [
100
112
  /* @__PURE__ */ jsxs("div", { className: slots.container({ class: classNames == null ? void 0 : classNames.container }), children: [
101
113
  /* @__PURE__ */ jsxs("div", { className: slots.inputWrapper(), children: [
@@ -107,14 +119,15 @@ function FileUpload({
107
119
  variant: "outline",
108
120
  full: true,
109
121
  placeholder,
110
- defaultValue: file == null ? void 0 : file.name,
111
- errorMessage: message
122
+ value: displayFileName,
123
+ errorMessage: message && (message == null ? void 0 : message.length) > 0 ? message : void 0
112
124
  }
113
125
  ),
114
- file && /* @__PURE__ */ jsx(
126
+ shouldShowCloseButton && /* @__PURE__ */ jsx(
115
127
  icon_button_default,
116
128
  {
117
129
  name: "close",
130
+ size: "sm",
118
131
  variant: "ghost",
119
132
  color: "neutral",
120
133
  onClick: handleCancelUpload,
@@ -123,10 +136,19 @@ function FileUpload({
123
136
  }
124
137
  )
125
138
  ] }),
126
- /* @__PURE__ */ jsx(button_default, { type: "button", variant: "outline", onClick: handleButtonClick, disabled: !!file, children: buttonText }),
139
+ /* @__PURE__ */ jsx(
140
+ button_default,
141
+ {
142
+ type: "button",
143
+ variant: "outline",
144
+ onClick: handleButtonClick,
145
+ disabled: !!(currentFile && hasUploadedFile),
146
+ children: buttonText
147
+ }
148
+ ),
127
149
  /* @__PURE__ */ jsx("input", { ref: fileInputRef, type: "file", hidden: true, accept: accept.join(","), onChange: handleFileChange })
128
150
  ] }),
129
- showProgress && file && uploadProgress < 100 && /* @__PURE__ */ jsx(progress_default, { value: uploadProgress }),
151
+ showProgress && currentFile && hasUploadedFile && uploadProgress < 100 && /* @__PURE__ */ jsx(progress_default, { value: uploadProgress }),
130
152
  !message && helperMessage && /* @__PURE__ */ jsx("p", { className: slots.helperMessage(), children: helperMessage })
131
153
  ] });
132
154
  }
@@ -137,7 +159,7 @@ var fileUploadStyle = tv({
137
159
  base: ["flex", "flex-col", "gap-[5px]"],
138
160
  container: ["flex", "gap-[10px]"],
139
161
  inputWrapper: ["relative", "flex-1"],
140
- cancelButton: ["absolute", "top-1/2", "right-0", "-translate-y-1/2"],
162
+ cancelButton: ["absolute", "top-1/2", "right-0", "-translate-y-1/2", "mr-[4px]"],
141
163
  errorMessage: ["text-danger-main", "text-sm"],
142
164
  helperMessage: ["text-neutral-main", "text-sm"]
143
165
  }
@@ -3,6 +3,11 @@ import * as tailwind_merge from 'tailwind-merge';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { SlotsToClasses } from '../../utils/types.mjs';
5
5
 
6
+ type DefaultFile = {
7
+ name: string;
8
+ size?: number;
9
+ type?: string;
10
+ };
6
11
  type FileUploadProps = {
7
12
  buttonText: string;
8
13
  maxSizeMB?: number;
@@ -17,8 +22,9 @@ type FileUploadProps = {
17
22
  showProgress?: boolean;
18
23
  name?: string;
19
24
  classNames?: SlotsToClasses<FileUploadSlots>;
25
+ defaultFile?: DefaultFile;
20
26
  };
21
- declare function FileUpload({ buttonText, maxSizeMB, placeholder, errorMessage, accept, acceptErrorMessage, sizeErrorMessage, onFileUpload, onCancelUpload, helperMessage, showProgress, name, classNames, }: FileUploadProps): react_jsx_runtime.JSX.Element;
27
+ declare function FileUpload({ buttonText, maxSizeMB, placeholder, errorMessage, accept, acceptErrorMessage, sizeErrorMessage, onFileUpload, onCancelUpload, helperMessage, showProgress, name, classNames, defaultFile, }: FileUploadProps): react_jsx_runtime.JSX.Element;
22
28
  declare namespace FileUpload {
23
29
  var displayName: string;
24
30
  }
@@ -80,4 +86,4 @@ declare const fileUploadStyle: tailwind_variants.TVReturnType<{
80
86
  }, undefined, unknown, unknown, undefined>>;
81
87
  type FileUploadSlots = keyof ReturnType<typeof fileUploadStyle>;
82
88
 
83
- export { FileUpload, FileUpload as default, fileUploadStyle };
89
+ export { type DefaultFile, FileUpload, type FileUploadProps, FileUpload as default, fileUploadStyle };
@@ -3,6 +3,11 @@ import * as tailwind_merge from 'tailwind-merge';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { SlotsToClasses } from '../../utils/types.js';
5
5
 
6
+ type DefaultFile = {
7
+ name: string;
8
+ size?: number;
9
+ type?: string;
10
+ };
6
11
  type FileUploadProps = {
7
12
  buttonText: string;
8
13
  maxSizeMB?: number;
@@ -17,8 +22,9 @@ type FileUploadProps = {
17
22
  showProgress?: boolean;
18
23
  name?: string;
19
24
  classNames?: SlotsToClasses<FileUploadSlots>;
25
+ defaultFile?: DefaultFile;
20
26
  };
21
- declare function FileUpload({ buttonText, maxSizeMB, placeholder, errorMessage, accept, acceptErrorMessage, sizeErrorMessage, onFileUpload, onCancelUpload, helperMessage, showProgress, name, classNames, }: FileUploadProps): react_jsx_runtime.JSX.Element;
27
+ declare function FileUpload({ buttonText, maxSizeMB, placeholder, errorMessage, accept, acceptErrorMessage, sizeErrorMessage, onFileUpload, onCancelUpload, helperMessage, showProgress, name, classNames, defaultFile, }: FileUploadProps): react_jsx_runtime.JSX.Element;
22
28
  declare namespace FileUpload {
23
29
  var displayName: string;
24
30
  }
@@ -80,4 +86,4 @@ declare const fileUploadStyle: tailwind_variants.TVReturnType<{
80
86
  }, undefined, unknown, unknown, undefined>>;
81
87
  type FileUploadSlots = keyof ReturnType<typeof fileUploadStyle>;
82
88
 
83
- export { FileUpload, FileUpload as default, fileUploadStyle };
89
+ export { type DefaultFile, FileUpload, type FileUploadProps, FileUpload as default, fileUploadStyle };
@@ -6639,29 +6639,32 @@ function FileUpload({
6639
6639
  helperMessage,
6640
6640
  showProgress,
6641
6641
  name,
6642
- classNames
6642
+ classNames,
6643
+ defaultFile
6643
6644
  }) {
6644
6645
  const fileInputRef = (0, import_react7.useRef)(null);
6645
6646
  const uploadIntervalRef = (0, import_react7.useRef)(null);
6646
- const [file, setFile] = (0, import_react7.useState)(null);
6647
+ const [currentFile, setCurrentFile] = (0, import_react7.useState)(null);
6647
6648
  const [uploadProgress, setUploadProgress] = (0, import_react7.useState)(0);
6648
6649
  const [message, setMessage] = (0, import_react7.useState)(errorMessage);
6650
+ const [displayFileName, setDisplayFileName] = (0, import_react7.useState)(() => (defaultFile == null ? void 0 : defaultFile.name) || "");
6651
+ const [hasUploadedFile, setHasUploadedFile] = (0, import_react7.useState)(false);
6649
6652
  const slots = fileUploadStyle();
6650
6653
  const handleButtonClick = () => {
6651
6654
  var _a;
6652
6655
  (_a = fileInputRef.current) == null ? void 0 : _a.click();
6653
6656
  };
6654
- const validateFile = (file2) => {
6655
- if (accept.length && !accept.includes(file2.type)) {
6657
+ const validateFile = (file) => {
6658
+ if (accept.length && !accept.includes(file.type)) {
6656
6659
  return acceptErrorMessage;
6657
6660
  }
6658
- const sizeMB = file2.size / 1024 / 1024;
6661
+ const sizeMB = file.size / 1024 / 1024;
6659
6662
  if (sizeMB > maxSizeMB) {
6660
6663
  return `${sizeErrorMessage} (${maxSizeMB}MB)`;
6661
6664
  }
6662
6665
  return null;
6663
6666
  };
6664
- const startUploadSimulation = (file2) => {
6667
+ const startUploadSimulation = (file) => {
6665
6668
  let progress = 0;
6666
6669
  setUploadProgress(0);
6667
6670
  uploadIntervalRef.current = window.setInterval(() => {
@@ -6669,7 +6672,7 @@ function FileUpload({
6669
6672
  setUploadProgress(progress);
6670
6673
  if (progress >= 100) {
6671
6674
  clearInterval(uploadIntervalRef.current);
6672
- onFileUpload == null ? void 0 : onFileUpload(file2);
6675
+ onFileUpload == null ? void 0 : onFileUpload(file);
6673
6676
  }
6674
6677
  }, 100);
6675
6678
  };
@@ -6680,20 +6683,26 @@ function FileUpload({
6680
6683
  const error = validateFile(selectedFile);
6681
6684
  if (error) {
6682
6685
  setMessage(error);
6683
- setFile(null);
6686
+ setCurrentFile(null);
6687
+ setDisplayFileName((defaultFile == null ? void 0 : defaultFile.name) || "");
6688
+ setHasUploadedFile(false);
6684
6689
  return;
6685
6690
  }
6686
- setFile(selectedFile);
6691
+ setCurrentFile(selectedFile);
6692
+ setDisplayFileName(selectedFile.name);
6687
6693
  setMessage("");
6694
+ setHasUploadedFile(true);
6688
6695
  startUploadSimulation(selectedFile);
6689
6696
  };
6690
6697
  const handleCancelUpload = () => {
6691
6698
  if (uploadIntervalRef.current) {
6692
6699
  clearInterval(uploadIntervalRef.current);
6693
6700
  }
6694
- setFile(null);
6701
+ setCurrentFile(null);
6695
6702
  setUploadProgress(0);
6696
6703
  setMessage("");
6704
+ setDisplayFileName((defaultFile == null ? void 0 : defaultFile.name) || "");
6705
+ setHasUploadedFile(false);
6697
6706
  if (onCancelUpload) onCancelUpload();
6698
6707
  };
6699
6708
  (0, import_react7.useEffect)(() => {
@@ -6704,8 +6713,11 @@ function FileUpload({
6704
6713
  };
6705
6714
  }, []);
6706
6715
  (0, import_react7.useEffect)(() => {
6707
- setMessage(errorMessage);
6708
- }, [setMessage, errorMessage]);
6716
+ if (errorMessage !== void 0) {
6717
+ setMessage(errorMessage);
6718
+ }
6719
+ }, [errorMessage]);
6720
+ const shouldShowCloseButton = hasUploadedFile;
6709
6721
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: slots.base({ class: classNames == null ? void 0 : classNames.base }), children: [
6710
6722
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: slots.container({ class: classNames == null ? void 0 : classNames.container }), children: [
6711
6723
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: slots.inputWrapper(), children: [
@@ -6717,14 +6729,15 @@ function FileUpload({
6717
6729
  variant: "outline",
6718
6730
  full: true,
6719
6731
  placeholder,
6720
- defaultValue: file == null ? void 0 : file.name,
6721
- errorMessage: message
6732
+ value: displayFileName,
6733
+ errorMessage: message && (message == null ? void 0 : message.length) > 0 ? message : void 0
6722
6734
  }
6723
6735
  ),
6724
- file && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
6736
+ shouldShowCloseButton && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
6725
6737
  icon_button_default,
6726
6738
  {
6727
6739
  name: "close",
6740
+ size: "sm",
6728
6741
  variant: "ghost",
6729
6742
  color: "neutral",
6730
6743
  onClick: handleCancelUpload,
@@ -6733,10 +6746,19 @@ function FileUpload({
6733
6746
  }
6734
6747
  )
6735
6748
  ] }),
6736
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(button_default, { type: "button", variant: "outline", onClick: handleButtonClick, disabled: !!file, children: buttonText }),
6749
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
6750
+ button_default,
6751
+ {
6752
+ type: "button",
6753
+ variant: "outline",
6754
+ onClick: handleButtonClick,
6755
+ disabled: !!(currentFile && hasUploadedFile),
6756
+ children: buttonText
6757
+ }
6758
+ ),
6737
6759
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("input", { ref: fileInputRef, type: "file", hidden: true, accept: accept.join(","), onChange: handleFileChange })
6738
6760
  ] }),
6739
- showProgress && file && uploadProgress < 100 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(progress_default, { value: uploadProgress }),
6761
+ showProgress && currentFile && hasUploadedFile && uploadProgress < 100 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(progress_default, { value: uploadProgress }),
6740
6762
  !message && helperMessage && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: slots.helperMessage(), children: helperMessage })
6741
6763
  ] });
6742
6764
  }
@@ -6747,7 +6769,7 @@ var fileUploadStyle = (0, import_tailwind_variants6.tv)({
6747
6769
  base: ["flex", "flex-col", "gap-[5px]"],
6748
6770
  container: ["flex", "gap-[10px]"],
6749
6771
  inputWrapper: ["relative", "flex-1"],
6750
- cancelButton: ["absolute", "top-1/2", "right-0", "-translate-y-1/2"],
6772
+ cancelButton: ["absolute", "top-1/2", "right-0", "-translate-y-1/2", "mr-[4px]"],
6751
6773
  errorMessage: ["text-danger-main", "text-sm"],
6752
6774
  helperMessage: ["text-neutral-main", "text-sm"]
6753
6775
  }
@@ -3,7 +3,7 @@ import {
3
3
  FileUpload,
4
4
  fileUploadStyle,
5
5
  fileUpload_default
6
- } from "../../chunk-OOX5X2MN.mjs";
6
+ } from "../../chunk-4XEZQMLU.mjs";
7
7
  import "../../chunk-7VOQKIIK.mjs";
8
8
  import "../../chunk-KH63CD55.mjs";
9
9
  import "../../chunk-2GCSFWHD.mjs";
@@ -1,4 +1,4 @@
1
- export { default as FileUpload } from './fileUpload.mjs';
1
+ export { DefaultFile, default as FileUpload, FileUploadProps } from './fileUpload.mjs';
2
2
  import 'tailwind-variants';
3
3
  import 'tailwind-merge';
4
4
  import 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- export { default as FileUpload } from './fileUpload.js';
1
+ export { DefaultFile, default as FileUpload, FileUploadProps } from './fileUpload.js';
2
2
  import 'tailwind-variants';
3
3
  import 'tailwind-merge';
4
4
  import 'react/jsx-runtime';
@@ -6639,29 +6639,32 @@ function FileUpload({
6639
6639
  helperMessage,
6640
6640
  showProgress,
6641
6641
  name,
6642
- classNames
6642
+ classNames,
6643
+ defaultFile
6643
6644
  }) {
6644
6645
  const fileInputRef = (0, import_react7.useRef)(null);
6645
6646
  const uploadIntervalRef = (0, import_react7.useRef)(null);
6646
- const [file, setFile] = (0, import_react7.useState)(null);
6647
+ const [currentFile, setCurrentFile] = (0, import_react7.useState)(null);
6647
6648
  const [uploadProgress, setUploadProgress] = (0, import_react7.useState)(0);
6648
6649
  const [message, setMessage] = (0, import_react7.useState)(errorMessage);
6650
+ const [displayFileName, setDisplayFileName] = (0, import_react7.useState)(() => (defaultFile == null ? void 0 : defaultFile.name) || "");
6651
+ const [hasUploadedFile, setHasUploadedFile] = (0, import_react7.useState)(false);
6649
6652
  const slots = fileUploadStyle();
6650
6653
  const handleButtonClick = () => {
6651
6654
  var _a;
6652
6655
  (_a = fileInputRef.current) == null ? void 0 : _a.click();
6653
6656
  };
6654
- const validateFile = (file2) => {
6655
- if (accept.length && !accept.includes(file2.type)) {
6657
+ const validateFile = (file) => {
6658
+ if (accept.length && !accept.includes(file.type)) {
6656
6659
  return acceptErrorMessage;
6657
6660
  }
6658
- const sizeMB = file2.size / 1024 / 1024;
6661
+ const sizeMB = file.size / 1024 / 1024;
6659
6662
  if (sizeMB > maxSizeMB) {
6660
6663
  return `${sizeErrorMessage} (${maxSizeMB}MB)`;
6661
6664
  }
6662
6665
  return null;
6663
6666
  };
6664
- const startUploadSimulation = (file2) => {
6667
+ const startUploadSimulation = (file) => {
6665
6668
  let progress = 0;
6666
6669
  setUploadProgress(0);
6667
6670
  uploadIntervalRef.current = window.setInterval(() => {
@@ -6669,7 +6672,7 @@ function FileUpload({
6669
6672
  setUploadProgress(progress);
6670
6673
  if (progress >= 100) {
6671
6674
  clearInterval(uploadIntervalRef.current);
6672
- onFileUpload == null ? void 0 : onFileUpload(file2);
6675
+ onFileUpload == null ? void 0 : onFileUpload(file);
6673
6676
  }
6674
6677
  }, 100);
6675
6678
  };
@@ -6680,20 +6683,26 @@ function FileUpload({
6680
6683
  const error = validateFile(selectedFile);
6681
6684
  if (error) {
6682
6685
  setMessage(error);
6683
- setFile(null);
6686
+ setCurrentFile(null);
6687
+ setDisplayFileName((defaultFile == null ? void 0 : defaultFile.name) || "");
6688
+ setHasUploadedFile(false);
6684
6689
  return;
6685
6690
  }
6686
- setFile(selectedFile);
6691
+ setCurrentFile(selectedFile);
6692
+ setDisplayFileName(selectedFile.name);
6687
6693
  setMessage("");
6694
+ setHasUploadedFile(true);
6688
6695
  startUploadSimulation(selectedFile);
6689
6696
  };
6690
6697
  const handleCancelUpload = () => {
6691
6698
  if (uploadIntervalRef.current) {
6692
6699
  clearInterval(uploadIntervalRef.current);
6693
6700
  }
6694
- setFile(null);
6701
+ setCurrentFile(null);
6695
6702
  setUploadProgress(0);
6696
6703
  setMessage("");
6704
+ setDisplayFileName((defaultFile == null ? void 0 : defaultFile.name) || "");
6705
+ setHasUploadedFile(false);
6697
6706
  if (onCancelUpload) onCancelUpload();
6698
6707
  };
6699
6708
  (0, import_react7.useEffect)(() => {
@@ -6704,8 +6713,11 @@ function FileUpload({
6704
6713
  };
6705
6714
  }, []);
6706
6715
  (0, import_react7.useEffect)(() => {
6707
- setMessage(errorMessage);
6708
- }, [setMessage, errorMessage]);
6716
+ if (errorMessage !== void 0) {
6717
+ setMessage(errorMessage);
6718
+ }
6719
+ }, [errorMessage]);
6720
+ const shouldShowCloseButton = hasUploadedFile;
6709
6721
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: slots.base({ class: classNames == null ? void 0 : classNames.base }), children: [
6710
6722
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: slots.container({ class: classNames == null ? void 0 : classNames.container }), children: [
6711
6723
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: slots.inputWrapper(), children: [
@@ -6717,14 +6729,15 @@ function FileUpload({
6717
6729
  variant: "outline",
6718
6730
  full: true,
6719
6731
  placeholder,
6720
- defaultValue: file == null ? void 0 : file.name,
6721
- errorMessage: message
6732
+ value: displayFileName,
6733
+ errorMessage: message && (message == null ? void 0 : message.length) > 0 ? message : void 0
6722
6734
  }
6723
6735
  ),
6724
- file && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
6736
+ shouldShowCloseButton && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
6725
6737
  icon_button_default,
6726
6738
  {
6727
6739
  name: "close",
6740
+ size: "sm",
6728
6741
  variant: "ghost",
6729
6742
  color: "neutral",
6730
6743
  onClick: handleCancelUpload,
@@ -6733,10 +6746,19 @@ function FileUpload({
6733
6746
  }
6734
6747
  )
6735
6748
  ] }),
6736
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(button_default, { type: "button", variant: "outline", onClick: handleButtonClick, disabled: !!file, children: buttonText }),
6749
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
6750
+ button_default,
6751
+ {
6752
+ type: "button",
6753
+ variant: "outline",
6754
+ onClick: handleButtonClick,
6755
+ disabled: !!(currentFile && hasUploadedFile),
6756
+ children: buttonText
6757
+ }
6758
+ ),
6737
6759
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("input", { ref: fileInputRef, type: "file", hidden: true, accept: accept.join(","), onChange: handleFileChange })
6738
6760
  ] }),
6739
- showProgress && file && uploadProgress < 100 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(progress_default, { value: uploadProgress }),
6761
+ showProgress && currentFile && hasUploadedFile && uploadProgress < 100 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(progress_default, { value: uploadProgress }),
6740
6762
  !message && helperMessage && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: slots.helperMessage(), children: helperMessage })
6741
6763
  ] });
6742
6764
  }
@@ -6747,7 +6769,7 @@ var fileUploadStyle = (0, import_tailwind_variants6.tv)({
6747
6769
  base: ["flex", "flex-col", "gap-[5px]"],
6748
6770
  container: ["flex", "gap-[10px]"],
6749
6771
  inputWrapper: ["relative", "flex-1"],
6750
- cancelButton: ["absolute", "top-1/2", "right-0", "-translate-y-1/2"],
6772
+ cancelButton: ["absolute", "top-1/2", "right-0", "-translate-y-1/2", "mr-[4px]"],
6751
6773
  errorMessage: ["text-danger-main", "text-sm"],
6752
6774
  helperMessage: ["text-neutral-main", "text-sm"]
6753
6775
  }
@@ -2,7 +2,7 @@
2
2
  import "../../chunk-RLXOHILK.mjs";
3
3
  import {
4
4
  fileUpload_default
5
- } from "../../chunk-OOX5X2MN.mjs";
5
+ } from "../../chunk-4XEZQMLU.mjs";
6
6
  import "../../chunk-7VOQKIIK.mjs";
7
7
  import "../../chunk-KH63CD55.mjs";
8
8
  import "../../chunk-2GCSFWHD.mjs";
package/dist/index.d.mts CHANGED
@@ -31,7 +31,7 @@ export { default as DatePicker, DatePickerProps, DateRangeValue, DateValue } fro
31
31
  export { default as TimePicker, TimePickerProps } from './components/picker/timePicker.mjs';
32
32
  export { default as ScrollArea } from './components/scroll/scrollArea.mjs';
33
33
  export { default as Tree, TreeNode } from './components/tree/tree.mjs';
34
- export { default as FileUpload } from './components/fileUpload/fileUpload.mjs';
34
+ export { DefaultFile, default as FileUpload, FileUploadProps } from './components/fileUpload/fileUpload.mjs';
35
35
  export { default as Skeleton } from './components/skeleton/skeleton.mjs';
36
36
  export { default as CircularProgress } from './components/charts/circularProgress.mjs';
37
37
  export { default as AreaChart } from './components/charts/areaChart.mjs';
package/dist/index.d.ts CHANGED
@@ -31,7 +31,7 @@ export { default as DatePicker, DatePickerProps, DateRangeValue, DateValue } fro
31
31
  export { default as TimePicker, TimePickerProps } from './components/picker/timePicker.js';
32
32
  export { default as ScrollArea } from './components/scroll/scrollArea.js';
33
33
  export { default as Tree, TreeNode } from './components/tree/tree.js';
34
- export { default as FileUpload } from './components/fileUpload/fileUpload.js';
34
+ export { DefaultFile, default as FileUpload, FileUploadProps } from './components/fileUpload/fileUpload.js';
35
35
  export { default as Skeleton } from './components/skeleton/skeleton.js';
36
36
  export { default as CircularProgress } from './components/charts/circularProgress.js';
37
37
  export { default as AreaChart } from './components/charts/areaChart.js';