@asdp/ferryui 0.1.22-dev.8782 → 0.1.22-dev.8783

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.
package/dist/index.js CHANGED
@@ -11807,8 +11807,566 @@ var ModalPriceDetail = ({
11807
11807
  );
11808
11808
  };
11809
11809
 
11810
- // src/components/CardProfileMenu/CardProfileMenu.constants.ts
11810
+ // src/components/FileUpload/FileUpload.constants.ts
11811
+ var ACCEPTED_FILES = ".pdf,.jpg,.jpeg,.png";
11812
+ var MAX_FILE_SIZE_MB = 10;
11811
11813
  var DEFAULT_LABELS38 = {
11814
+ id: {
11815
+ placeholder: "Ketuk untuk pilih file",
11816
+ maxSizeWarning: "Maksimal {maxSize}MB per file dalam format PDF, JPG, JPEG, PNG.",
11817
+ sizeLabel: "Ukuran",
11818
+ preview: "Pratinjau",
11819
+ requiredError: "wajib diisi"
11820
+ },
11821
+ en: {
11822
+ placeholder: "Tap to select a file",
11823
+ maxSizeWarning: "Maximum {maxSize}MB per file in PDF, JPG, JPEG, PNG format.",
11824
+ sizeLabel: "Size",
11825
+ preview: "Preview",
11826
+ requiredError: "is required"
11827
+ }
11828
+ };
11829
+ var uploadStyles = reactComponents.makeStyles({
11830
+ container: {
11831
+ backgroundColor: "#F0FEFF",
11832
+ backgroundImage: `url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='16' ry='16' stroke='%2300B3BD' stroke-width='3' stroke-dasharray='25%2c 12' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e")`,
11833
+ ...reactComponents.shorthands.padding(reactComponents.tokens.spacingHorizontalM, reactComponents.tokens.spacingHorizontalL),
11834
+ borderRadius: "16px",
11835
+ cursor: "pointer",
11836
+ width: "100%"
11837
+ },
11838
+ containerError: {
11839
+ backgroundColor: reactComponents.tokens.colorStatusWarningBackground1,
11840
+ backgroundImage: `url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='16' ry='16' stroke='%23F7630C' stroke-width='3' stroke-dasharray='25%2c 12' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e")`,
11841
+ ...reactComponents.shorthands.padding(reactComponents.tokens.spacingHorizontalM, reactComponents.tokens.spacingHorizontalL),
11842
+ borderRadius: "16px",
11843
+ cursor: "pointer",
11844
+ width: "100%"
11845
+ },
11846
+ containerDisabled: {
11847
+ width: "100%"
11848
+ },
11849
+ fieldContainer: {
11850
+ display: "flex",
11851
+ flexDirection: "column",
11852
+ justifyContent: "end",
11853
+ height: "100%",
11854
+ gap: reactComponents.tokens.spacingHorizontalXS
11855
+ },
11856
+ disabledFileInfo: {
11857
+ display: "flex",
11858
+ flexDirection: "column"
11859
+ },
11860
+ disabledFileName: {
11861
+ color: reactComponents.tokens.colorNeutralForeground1
11862
+ },
11863
+ disabledFileSize: {
11864
+ color: reactComponents.tokens.colorNeutralForeground3
11865
+ },
11866
+ uploadIcon: {
11867
+ borderRadius: reactComponents.tokens.borderRadiusCircular,
11868
+ backgroundColor: reactComponents.tokens.colorNeutralBackground1,
11869
+ maxWidth: "48px",
11870
+ width: "48px",
11871
+ height: "48px",
11872
+ maxHeight: "48px",
11873
+ textAlign: "center",
11874
+ alignItems: "center",
11875
+ display: "flex",
11876
+ justifyContent: "center"
11877
+ },
11878
+ uploadText: {
11879
+ display: "flex",
11880
+ flexDirection: "column",
11881
+ gap: reactComponents.tokens.spacingVerticalXS,
11882
+ flex: 1
11883
+ },
11884
+ hiddenInput: {
11885
+ opacity: 0,
11886
+ position: "absolute",
11887
+ pointerEvents: "none"
11888
+ },
11889
+ filePreviewImage: {
11890
+ width: "48px",
11891
+ height: "48px",
11892
+ borderRadius: reactComponents.tokens.borderRadiusSmall,
11893
+ objectFit: "cover"
11894
+ },
11895
+ dialogImage: {
11896
+ maxWidth: "100%",
11897
+ maxHeight: "70vh",
11898
+ objectFit: "contain"
11899
+ }
11900
+ });
11901
+ var FileUpload = React5__default.default.forwardRef(
11902
+ ({
11903
+ name,
11904
+ control,
11905
+ label,
11906
+ required = false,
11907
+ accept = ACCEPTED_FILES,
11908
+ maxSize = MAX_FILE_SIZE_MB,
11909
+ placeholder: placeholderProp,
11910
+ disabled = false,
11911
+ language = "id",
11912
+ labels: customLabels
11913
+ }, ref) => {
11914
+ const mergedLabels = { ...DEFAULT_LABELS38[language], ...customLabels };
11915
+ const styles = uploadStyles();
11916
+ const fileInputRef = React5.useRef(null);
11917
+ const [, setIsDragOver] = React5.useState(false);
11918
+ const [previewUrl, setPreviewUrl] = React5.useState(null);
11919
+ const [sizeError, setSizeError] = React5.useState(null);
11920
+ const [currentFile, setCurrentFile] = React5.useState(null);
11921
+ const [isPreviewOpen, setIsPreviewOpen] = React5.useState(false);
11922
+ const formatFileSize = (bytes) => {
11923
+ if (bytes < 1024) return `${bytes} B`;
11924
+ const kb = bytes / 1024;
11925
+ if (kb < 1024) return `${kb.toFixed(1)} KB`;
11926
+ const mb = kb / 1024;
11927
+ return `${mb.toFixed(1)} MB`;
11928
+ };
11929
+ const isImageFile = (file) => {
11930
+ return file ? file.type.startsWith("image/") : false;
11931
+ };
11932
+ const getDisplayFileName = (file) => {
11933
+ if (!file) return "";
11934
+ if (file.type.startsWith("image/")) {
11935
+ return "Image";
11936
+ }
11937
+ const extension = file.name.split(".").pop()?.toLowerCase() || "";
11938
+ return `Document.${extension}`;
11939
+ };
11940
+ const handleFileSelect = (files, onChange) => {
11941
+ setSizeError(null);
11942
+ if (files && files.length > 0) {
11943
+ const file = files[0];
11944
+ setCurrentFile(file);
11945
+ if (file.size > maxSize * 1024 * 1024) {
11946
+ setSizeError("error");
11947
+ onChange(void 0);
11948
+ return;
11949
+ }
11950
+ onChange(file);
11951
+ setCurrentFile(null);
11952
+ }
11953
+ };
11954
+ const handleClick = () => {
11955
+ if (!disabled) {
11956
+ fileInputRef.current?.click();
11957
+ }
11958
+ };
11959
+ const handleDrop = (e, onChange) => {
11960
+ e.preventDefault();
11961
+ setIsDragOver(false);
11962
+ if (!disabled) {
11963
+ handleFileSelect(e.dataTransfer.files, onChange);
11964
+ }
11965
+ };
11966
+ const handleDragOver = (e) => {
11967
+ e.preventDefault();
11968
+ setIsDragOver(true);
11969
+ };
11970
+ const handleDragLeave = () => {
11971
+ setIsDragOver(false);
11972
+ };
11973
+ const handleRemoveFile = (e, onChange) => {
11974
+ e?.stopPropagation();
11975
+ setSizeError(null);
11976
+ setCurrentFile(null);
11977
+ onChange(void 0);
11978
+ if (previewUrl) {
11979
+ URL.revokeObjectURL(previewUrl);
11980
+ }
11981
+ setPreviewUrl(null);
11982
+ if (fileInputRef.current) fileInputRef.current.value = "";
11983
+ };
11984
+ const handlePreview = (e, file) => {
11985
+ e.stopPropagation();
11986
+ const fileToPreview = file;
11987
+ if (fileToPreview instanceof File) {
11988
+ if (isImageFile(fileToPreview)) {
11989
+ setIsPreviewOpen(true);
11990
+ } else {
11991
+ const fileUrl = URL.createObjectURL(fileToPreview);
11992
+ window.open(fileUrl, "_blank");
11993
+ setTimeout(() => URL.revokeObjectURL(fileUrl), 1e3);
11994
+ }
11995
+ }
11996
+ };
11997
+ const getContainerStyle = (hasFile, hasError) => {
11998
+ if (disabled && hasFile) return styles.containerDisabled;
11999
+ if (hasError) return styles.containerError;
12000
+ return styles.container;
12001
+ };
12002
+ return /* @__PURE__ */ jsxRuntime.jsx(
12003
+ reactHookForm.Controller,
12004
+ {
12005
+ name,
12006
+ control,
12007
+ rules: { required: required ? `${label} ${mergedLabels.requiredError}` : false },
12008
+ render: ({ field: { onChange, value }, fieldState: { error } }) => {
12009
+ const displayFile = currentFile || value;
12010
+ React5.useEffect(() => {
12011
+ const fileToPreview = currentFile || value;
12012
+ if (fileToPreview instanceof File) {
12013
+ if (fileToPreview.type.startsWith("image/")) {
12014
+ const url = URL.createObjectURL(fileToPreview);
12015
+ setPreviewUrl(url);
12016
+ return () => {
12017
+ URL.revokeObjectURL(url);
12018
+ setPreviewUrl(null);
12019
+ };
12020
+ } else {
12021
+ setPreviewUrl(null);
12022
+ }
12023
+ } else {
12024
+ setPreviewUrl(null);
12025
+ }
12026
+ }, [value, currentFile]);
12027
+ if (disabled && displayFile instanceof File) {
12028
+ return /* @__PURE__ */ jsxRuntime.jsxs(
12029
+ reactComponents.Field,
12030
+ {
12031
+ required,
12032
+ label: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: label }),
12033
+ className: styles.fieldContainer,
12034
+ children: [
12035
+ /* @__PURE__ */ jsxRuntime.jsx(
12036
+ reactGridSystem.Container,
12037
+ {
12038
+ style: { marginLeft: 0, width: "100%", padding: 0 },
12039
+ fluid: true,
12040
+ children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
12041
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
12042
+ /* @__PURE__ */ jsxRuntime.jsx(
12043
+ reactGridSystem.Col,
12044
+ {
12045
+ xs: "content",
12046
+ style: {
12047
+ display: "flex",
12048
+ justifyContent: "center",
12049
+ alignItems: "center",
12050
+ width: "max-content"
12051
+ },
12052
+ children: isImageFile(displayFile) && previewUrl ? /* @__PURE__ */ jsxRuntime.jsx(
12053
+ "img",
12054
+ {
12055
+ src: previewUrl,
12056
+ alt: "preview",
12057
+ className: styles.filePreviewImage
12058
+ }
12059
+ ) : /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Image, { src: "/assets/images/icons/pdficon.svg", alt: "PDF Icon", width: 32, height: 32 })
12060
+ }
12061
+ ),
12062
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.disabledFileInfo, children: [
12063
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1Strong, { className: styles.disabledFileName, children: getDisplayFileName(displayFile) }),
12064
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Caption2, { className: styles.disabledFileSize, children: [
12065
+ mergedLabels.sizeLabel,
12066
+ ": ",
12067
+ formatFileSize(displayFile.size)
12068
+ ] })
12069
+ ] }) })
12070
+ ] }) }),
12071
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: "content", children: /* @__PURE__ */ jsxRuntime.jsx(
12072
+ reactComponents.Button,
12073
+ {
12074
+ appearance: "transparent",
12075
+ size: "small",
12076
+ style: { color: brandColors2[80] },
12077
+ onClick: (e) => handlePreview(e, displayFile),
12078
+ children: mergedLabels.preview
12079
+ }
12080
+ ) })
12081
+ ] })
12082
+ }
12083
+ ),
12084
+ /* @__PURE__ */ jsxRuntime.jsx(
12085
+ reactComponents.Dialog,
12086
+ {
12087
+ open: isPreviewOpen,
12088
+ onOpenChange: (_, data) => setIsPreviewOpen(data.open),
12089
+ children: /* @__PURE__ */ jsxRuntime.jsx(
12090
+ reactComponents.DialogSurface,
12091
+ {
12092
+ style: {
12093
+ maxWidth: "90vw",
12094
+ maxHeight: "90vh",
12095
+ backgroundColor: "transparent",
12096
+ boxShadow: "none"
12097
+ },
12098
+ children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
12099
+ /* @__PURE__ */ jsxRuntime.jsx(
12100
+ reactComponents.DialogTitle,
12101
+ {
12102
+ action: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTrigger, { action: "close", children: /* @__PURE__ */ jsxRuntime.jsx(
12103
+ reactComponents.Button,
12104
+ {
12105
+ appearance: "subtle",
12106
+ "aria-label": "close",
12107
+ icon: /* @__PURE__ */ jsxRuntime.jsx(reactIcons.Dismiss24Regular, {})
12108
+ }
12109
+ ) })
12110
+ }
12111
+ ),
12112
+ /* @__PURE__ */ jsxRuntime.jsx(
12113
+ reactComponents.DialogContent,
12114
+ {
12115
+ style: { alignItems: "center", textAlign: "center" },
12116
+ children: previewUrl && /* @__PURE__ */ jsxRuntime.jsx(
12117
+ "img",
12118
+ {
12119
+ src: previewUrl,
12120
+ alt: "Preview",
12121
+ className: styles.dialogImage
12122
+ }
12123
+ )
12124
+ }
12125
+ )
12126
+ ] })
12127
+ }
12128
+ )
12129
+ }
12130
+ )
12131
+ ]
12132
+ }
12133
+ );
12134
+ }
12135
+ return /* @__PURE__ */ jsxRuntime.jsxs(
12136
+ reactComponents.Field,
12137
+ {
12138
+ ref,
12139
+ required,
12140
+ label: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: label }),
12141
+ className: styles.fieldContainer,
12142
+ children: [
12143
+ /* @__PURE__ */ jsxRuntime.jsxs(
12144
+ reactGridSystem.Container,
12145
+ {
12146
+ className: getContainerStyle(!!displayFile, !!(error && (value || currentFile)) || !!sizeError),
12147
+ onClick: handleClick,
12148
+ onDrop: (e) => handleDrop(e, onChange),
12149
+ onDragOver: handleDragOver,
12150
+ onDragLeave: handleDragLeave,
12151
+ fluid: true,
12152
+ children: [
12153
+ /* @__PURE__ */ jsxRuntime.jsxs(
12154
+ reactGridSystem.Row,
12155
+ {
12156
+ nogutter: true,
12157
+ style: { gap: reactComponents.tokens.spacingVerticalL },
12158
+ justify: "center",
12159
+ align: "center",
12160
+ children: [
12161
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: "content", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.uploadIcon, children: sizeError ? /* @__PURE__ */ jsxRuntime.jsx(
12162
+ react.Icon,
12163
+ {
12164
+ icon: "fluent:warning-32-regular",
12165
+ style: {
12166
+ color: reactComponents.tokens.colorStatusWarningBackground3,
12167
+ maxWidth: "32px",
12168
+ width: "32px",
12169
+ maxHeight: "32px",
12170
+ height: "32px"
12171
+ }
12172
+ }
12173
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
12174
+ react.Icon,
12175
+ {
12176
+ icon: "fluent:arrow-upload-32-filled",
12177
+ style: {
12178
+ color: brandColors2[80],
12179
+ maxWidth: "32px",
12180
+ width: "32px",
12181
+ maxHeight: "32px",
12182
+ height: "32px"
12183
+ }
12184
+ }
12185
+ ) }) }),
12186
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { children: /* @__PURE__ */ jsxRuntime.jsxs(
12187
+ reactGridSystem.Row,
12188
+ {
12189
+ direction: "column",
12190
+ nogutter: true,
12191
+ style: { rowGap: reactComponents.tokens.spacingVerticalXS },
12192
+ children: [
12193
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: "content", children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: placeholderProp || mergedLabels.placeholder }) }),
12194
+ displayFile instanceof File ? /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { nogutter: true, style: { gap: reactComponents.tokens.spacingHorizontalS }, children: [
12195
+ /* @__PURE__ */ jsxRuntime.jsx(
12196
+ reactGridSystem.Col,
12197
+ {
12198
+ xs: "content",
12199
+ style: {
12200
+ display: "flex",
12201
+ justifyContent: "center",
12202
+ alignItems: "center",
12203
+ width: "max-content"
12204
+ },
12205
+ children: isImageFile(displayFile) && previewUrl ? /* @__PURE__ */ jsxRuntime.jsx(
12206
+ "img",
12207
+ {
12208
+ src: previewUrl,
12209
+ alt: "preview",
12210
+ className: styles.filePreviewImage
12211
+ }
12212
+ ) : /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Image, { src: "/assets/images/icons/pdficon.svg", alt: "PDF Icon", width: 32, height: 32 })
12213
+ }
12214
+ ),
12215
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { children: /* @__PURE__ */ jsxRuntime.jsxs(
12216
+ "div",
12217
+ {
12218
+ style: { display: "flex", flexDirection: "column" },
12219
+ children: [
12220
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1Strong, { children: getDisplayFileName(displayFile) }),
12221
+ /* @__PURE__ */ jsxRuntime.jsxs(
12222
+ reactComponents.Caption2,
12223
+ {
12224
+ style: { color: reactComponents.tokens.colorNeutralForeground3 },
12225
+ children: [
12226
+ mergedLabels.sizeLabel,
12227
+ ": ",
12228
+ formatFileSize(displayFile.size),
12229
+ (error || sizeError) && /* @__PURE__ */ jsxRuntime.jsxs(
12230
+ "span",
12231
+ {
12232
+ style: {
12233
+ color: reactComponents.tokens.colorStatusWarningForeground1,
12234
+ marginLeft: reactComponents.tokens.spacingHorizontalXS
12235
+ },
12236
+ children: [
12237
+ "(",
12238
+ sizeError || error?.message,
12239
+ ")"
12240
+ ]
12241
+ }
12242
+ )
12243
+ ]
12244
+ }
12245
+ )
12246
+ ]
12247
+ }
12248
+ ) }),
12249
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: "content", children: /* @__PURE__ */ jsxRuntime.jsxs(
12250
+ "div",
12251
+ {
12252
+ style: {
12253
+ display: "flex",
12254
+ gap: reactComponents.tokens.spacingVerticalS,
12255
+ justifyContent: "center",
12256
+ alignItems: "center",
12257
+ width: "max-content",
12258
+ height: "100%"
12259
+ },
12260
+ children: [
12261
+ /* @__PURE__ */ jsxRuntime.jsx(
12262
+ reactComponents.Button,
12263
+ {
12264
+ appearance: "transparent",
12265
+ size: "small",
12266
+ style: { color: brandColors2[80] },
12267
+ onClick: (e) => handlePreview(e, displayFile),
12268
+ children: mergedLabels.preview
12269
+ }
12270
+ ),
12271
+ /* @__PURE__ */ jsxRuntime.jsx(
12272
+ reactComponents.Button,
12273
+ {
12274
+ appearance: "transparent",
12275
+ size: "small",
12276
+ onClick: (e) => handleRemoveFile(e, onChange),
12277
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-16-regular" })
12278
+ }
12279
+ )
12280
+ ]
12281
+ }
12282
+ ) })
12283
+ ] }) }) : /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
12284
+ reactComponents.Caption1,
12285
+ {
12286
+ style: { color: reactComponents.tokens.colorNeutralForeground3 },
12287
+ children: mergedLabels.maxSizeWarning.replace("{maxSize}", String(maxSize))
12288
+ }
12289
+ ) })
12290
+ ]
12291
+ }
12292
+ ) })
12293
+ ]
12294
+ }
12295
+ ),
12296
+ /* @__PURE__ */ jsxRuntime.jsx(
12297
+ "input",
12298
+ {
12299
+ ref: fileInputRef,
12300
+ type: "file",
12301
+ accept,
12302
+ onChange: (e) => handleFileSelect(e.target.files, onChange),
12303
+ className: styles.hiddenInput,
12304
+ disabled
12305
+ }
12306
+ )
12307
+ ]
12308
+ }
12309
+ ),
12310
+ /* @__PURE__ */ jsxRuntime.jsx(
12311
+ reactComponents.Dialog,
12312
+ {
12313
+ open: isPreviewOpen,
12314
+ onOpenChange: (_, data) => setIsPreviewOpen(data.open),
12315
+ children: /* @__PURE__ */ jsxRuntime.jsx(
12316
+ reactComponents.DialogSurface,
12317
+ {
12318
+ style: {
12319
+ maxWidth: "90vw",
12320
+ maxHeight: "90vh",
12321
+ backgroundColor: "transparent",
12322
+ boxShadow: "none"
12323
+ },
12324
+ children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
12325
+ /* @__PURE__ */ jsxRuntime.jsx(
12326
+ reactComponents.DialogTitle,
12327
+ {
12328
+ action: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTrigger, { action: "close", children: /* @__PURE__ */ jsxRuntime.jsx(
12329
+ reactComponents.Button,
12330
+ {
12331
+ appearance: "subtle",
12332
+ "aria-label": "close",
12333
+ icon: /* @__PURE__ */ jsxRuntime.jsx(reactIcons.Dismiss24Regular, {})
12334
+ }
12335
+ ) })
12336
+ }
12337
+ ),
12338
+ /* @__PURE__ */ jsxRuntime.jsx(
12339
+ reactComponents.DialogContent,
12340
+ {
12341
+ style: { alignItems: "center", textAlign: "center" },
12342
+ children: previewUrl && /* @__PURE__ */ jsxRuntime.jsx(
12343
+ "img",
12344
+ {
12345
+ src: previewUrl,
12346
+ alt: "Preview",
12347
+ className: styles.dialogImage
12348
+ }
12349
+ )
12350
+ }
12351
+ )
12352
+ ] })
12353
+ }
12354
+ )
12355
+ }
12356
+ )
12357
+ ]
12358
+ }
12359
+ );
12360
+ }
12361
+ }
12362
+ );
12363
+ }
12364
+ );
12365
+ FileUpload.displayName = "FileUpload";
12366
+ var FileUpload_default = FileUpload;
12367
+
12368
+ // src/components/CardProfileMenu/CardProfileMenu.constants.ts
12369
+ var DEFAULT_LABELS39 = {
11812
12370
  id: {},
11813
12371
  en: {}
11814
12372
  };
@@ -11871,7 +12429,7 @@ var CardProfileMenu = ({
11871
12429
  onTabSelect
11872
12430
  }) => {
11873
12431
  const styles = useStyles39();
11874
- ({ ...DEFAULT_LABELS38[language], ...labels });
12432
+ ({ ...DEFAULT_LABELS39[language], ...labels });
11875
12433
  const handleTabSelect = (_, data) => {
11876
12434
  onTabSelect(data.value);
11877
12435
  };
@@ -11938,6 +12496,7 @@ exports.DEFAULT_TIME_SLOTS = DEFAULT_TIME_SLOTS;
11938
12496
  exports.DEFAULT_VEHICLE_ICONS = DEFAULT_VEHICLE_ICONS;
11939
12497
  exports.DateFilter = DateFilter;
11940
12498
  exports.DateFilterDefaultLabels = DEFAULT_LABELS17;
12499
+ exports.FileUpload = FileUpload_default;
11941
12500
  exports.InputDynamic = InputDynamic_default;
11942
12501
  exports.MODAL_PRESETS = MODAL_PRESETS;
11943
12502
  exports.ModalFilterTicket = ModalFilterTicket;