{"version":3,"file":"FileUploadInput.CvmZu_e6.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/riE7RRvgu2EZNzuLJez4/gdJpSlImWKuBf7Xsgh4K/FileUploadInput.js"],"sourcesContent":["// FileUploadInput.tsx\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function FileUploadInput(props){const{acceptedTypes,maxSizeMB,errorMessage,buttonText,backgroundColor,textColor,buttonColor,buttonTextColor,borderRadius,borderWidth,borderColor,successBorderColor,cloudName,uploadPreset,folder,required,style}=props;const fileInputRef=useRef(null);const[selectedFile,setSelectedFile]=useState(null);const[uploadedUrl,setUploadedUrl]=useState(\"\");const[uploading,setUploading]=useState(false);const[error,setError]=useState(\"\");// ----------------------------\n// Cloudinary Upload\n// ----------------------------\nconst uploadToCloudinary=async file=>{if(!cloudName||!uploadPreset){setError(\"Cloudinary configuration missing\");return;}setUploading(true);setError(\"\");try{const formData=new FormData;formData.append(\"file\",file);formData.append(\"upload_preset\",uploadPreset);if(folder)formData.append(\"folder\",folder);const res=await fetch(`https://api.cloudinary.com/v1_1/${cloudName}/auto/upload`,{method:\"POST\",body:formData});if(!res.ok)throw new Error(\"Upload failed\");const data=await res.json();setUploadedUrl(data.secure_url);setUploading(false);}catch(err){setError(\"Upload failed. Please try again.\");setUploading(false);setSelectedFile(null);setUploadedUrl(\"\");if(fileInputRef.current)fileInputRef.current.value=\"\";}};// ----------------------------\n// File Select\n// ----------------------------\nconst handleFileChange=e=>{const file=e.target.files?.[0];if(!file)return;const maxBytes=maxSizeMB*1024*1024;if(file.size>maxBytes){setError(errorMessage||`File must be under ${maxSizeMB}MB`);if(fileInputRef.current)fileInputRef.current.value=\"\";return;}setSelectedFile(file);uploadToCloudinary(file);};if(RenderTarget.current()===RenderTarget.thumbnail)return null;if(!cloudName||!uploadPreset){return /*#__PURE__*/_jsx(\"div\",{style:{color:\"#c00\",fontSize:13},children:\"⚠️ Missing Cloudinary Cloud Name or Upload Preset\"});}return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",display:\"flex\",flexDirection:\"column\",gap:8,...style},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:12,padding:\"10px 12px\",backgroundColor,borderRadius,border:`${borderWidth}px solid ${error?\"#c00\":uploadedUrl?successBorderColor:borderColor}`},children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",disabled:uploading,onClick:()=>fileInputRef.current?.click(),style:{padding:\"8px 16px\",backgroundColor:uploading?\"#aaa\":buttonColor,color:buttonTextColor,border:\"none\",borderRadius:borderRadius-2,cursor:uploading?\"not-allowed\":\"pointer\",whiteSpace:\"nowrap\"},children:uploading?\"Uploading…\":buttonText}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,color:selectedFile?textColor:\"#999\",overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:selectedFile?selectedFile.name:\"No file selected\"}),/*#__PURE__*/_jsx(\"input\",{ref:fileInputRef,type:\"file\",accept:acceptedTypes,onChange:handleFileChange,disabled:uploading,style:{display:\"none\"}})]}),uploadedUrl&&!uploading&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:12,color:\"#22CC66\"},children:\"✓ Uploaded successfully\"}),error&&/*#__PURE__*/_jsx(\"span\",{style:{color:\"#c00\"},children:error}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",name:\"fileupload\",value:uploadedUrl,required:required,readOnly:true,style:{position:\"absolute\",opacity:0,pointerEvents:\"none\",height:0,width:0}})]});}addPropertyControls(FileUploadInput,{required:{type:ControlType.Boolean,defaultValue:true},cloudName:{type:ControlType.String,defaultValue:\"\"},uploadPreset:{type:ControlType.String,defaultValue:\"\"},folder:{type:ControlType.String,defaultValue:\"\"},acceptedTypes:{type:ControlType.String,defaultValue:\"image/*,.pdf,.doc,.docx\"},maxSizeMB:{type:ControlType.Number,defaultValue:5},errorMessage:{type:ControlType.String,defaultValue:\"File must be under 5MB\"},buttonText:{type:ControlType.String,defaultValue:\"Choose File\"},backgroundColor:{type:ControlType.Color,defaultValue:\"#FFFFFF\"},textColor:{type:ControlType.Color,defaultValue:\"#000000\"},buttonColor:{type:ControlType.Color,defaultValue:\"#0099FF\"},buttonTextColor:{type:ControlType.Color,defaultValue:\"#FFFFFF\"},borderColor:{type:ControlType.Color,defaultValue:\"#DDDDDD\"},successBorderColor:{type:ControlType.Color,defaultValue:\"#22CC66\"},borderRadius:{type:ControlType.Number,defaultValue:8},borderWidth:{type:ControlType.Number,defaultValue:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FileUploadInput\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FileUploadInput.map"],"mappings":"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"}