{"version":3,"file":"file-upload-BUvU8RiK.cjs","names":["__iconNode","createLucideIcon","createLucideIcon"],"sources":["../node_modules/lucide-react/dist/esm/icons/trash-2.js","../node_modules/lucide-react/dist/esm/icons/upload.js","../src/components/ui/file-upload.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M10 11v6\", key: \"nco0om\" }],\n  [\"path\", { d: \"M14 11v6\", key: \"outv1u\" }],\n  [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n  [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n  [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M12 3v12\", key: \"1x0j5s\" }],\n  [\"path\", { d: \"m17 8-5-5-5 5\", key: \"7q97r8\" }],\n  [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }]\n];\nconst Upload = createLucideIcon(\"upload\", __iconNode);\n\nexport { __iconNode, Upload as default };\n//# sourceMappingURL=upload.js.map\n","import { Trash2, Upload } from 'lucide-react';\nimport type React from 'react';\nimport { useState } from 'react';\nimport { Button } from '@/components/ui/button';\nimport { cn, generateRandomId } from '@/lib/utils';\nimport { Badge } from './badge';\nimport { Label } from './label';\nimport { P } from './typography';\n\nfunction FileUpload({\n  onFileChange,\n  children,\n  ...props\n}: React.InputHTMLAttributes<HTMLInputElement> & {\n  onFileChange?: (_d: File[]) => void;\n}) {\n  const idForHtml = props.id || generateRandomId();\n  const [files, setFiles] = useState<File[]>([]);\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (event.target.files) {\n      let updatedFiles = [...Array.from(event.target.files)];\n      if (props.multiple) {\n        updatedFiles = [...files, ...Array.from(event.target.files)];\n      }\n      setFiles(updatedFiles);\n      onFileChange?.(updatedFiles);\n    }\n  };\n  const handleRemoveFile = (index: number) => {\n    const updatedFiles = files.filter((_, i) => i !== index);\n    setFiles(updatedFiles);\n    onFileChange?.(updatedFiles);\n  };\n\n  return (\n    <>\n      <div className={cn('mb-2.5 flex w-full flex-col items-center gap-4', props.className)}>\n        <input\n          {...props}\n          id={idForHtml}\n          type='file'\n          className='hidden'\n          onChange={handleFileChange}\n        />\n\n        {/* Custom Upload Button */}\n        <label htmlFor={idForHtml} className='flex w-full'>\n          {children || (\n            <div className='flex w-full cursor-pointer flex-col items-center gap-2 rounded-base bg-surface px-4 py-6 text-content-primary hover:bg-surface-hover'>\n              <Upload className='h-7 w-7' strokeWidth={1} />\n              <P className='text-content-primary' size='sm' marginBottom='none'>\n                Click on this area to upload\n              </P>\n            </div>\n          )}\n        </label>\n      </div>\n      {files.length > 0 ? (\n        <>\n          <Label>File(s) uploaded</Label>\n          <div className='justify-left mt-1 flex w-full flex-wrap gap-2.5'>\n            {files?.map((file, index) => (\n              <Badge\n                key={file.name}\n                variant='surface'\n                className='flex gap-4 border border-stroke bg-surface pr-4 pl-4'\n              >\n                <span className='truncate text-base text-content-primary'>{file.name}</span>\n                <Button variant='icon' padding='none' onClick={() => handleRemoveFile(index)}>\n                  <Trash2 className='h-4 w-4 stroke-error' />\n                </Button>\n              </Badge>\n            ))}\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport { FileUpload };\n"],"x_google_ignoreList":[0,1],"mappings":"8PAgBA,IAAM,EAASC,EAAAA,EAAiB,UAAWD,CANzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,2CAA4C,IAAK,QAAS,CAAC,EACzE,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,yCAA0C,IAAK,QAAS,CAAC,CAE9BA,CAAU,ECF/C,EAASE,EAAAA,EAAiB,SAAU,CAJxC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAS,CAAC,EAC9C,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAS,CAAC,CAElC,CAAU,ECLpD,SAAS,EAAW,CAClB,eACA,WACA,GAAG,GAGF,CACD,IAAM,EAAY,EAAM,IAAM,EAAA,EAAiB,EACzC,CAAC,EAAO,IAAA,EAAA,EAAA,SAAA,CAA6B,CAAC,CAAC,EAEvC,EAAoB,GAA+C,CACvE,GAAI,EAAM,OAAO,MAAO,CACtB,IAAI,EAAe,CAAC,GAAG,MAAM,KAAK,EAAM,OAAO,KAAK,CAAC,EACjD,EAAM,WACR,EAAe,CAAC,GAAG,EAAO,GAAG,MAAM,KAAK,EAAM,OAAO,KAAK,CAAC,GAE7D,EAAS,CAAY,EACrB,IAAe,CAAY,CAC7B,CACF,EACM,EAAoB,GAAkB,CAC1C,IAAM,EAAe,EAAM,QAAQ,EAAG,IAAM,IAAM,CAAK,EACvD,EAAS,CAAY,EACrB,IAAe,CAAY,CAC7B,EAEA,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,EAAG,iDAAkD,EAAM,SAAS,WAApF,EACE,EAAA,EAAA,IAAA,CAAC,QAAD,CACE,GAAI,EACJ,GAAI,EACJ,KAAK,OACL,UAAU,SACV,SAAU,CACX,CAAA,GAGD,EAAA,EAAA,IAAA,CAAC,QAAD,CAAO,QAAS,EAAW,UAAU,uBAClC,IACC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,gJAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,UAAU,UAAU,YAAa,CAAI,CAAA,GAC7C,EAAA,EAAA,IAAA,CAAC,EAAA,EAAD,CAAG,UAAU,uBAAuB,KAAK,KAAK,aAAa,gBAAO,8BAE/D,CAAA,CACA,GAEF,CAAA,CACJ,IACJ,EAAM,OAAS,GACd,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAA,EAAD,CAAA,SAAO,kBAAuB,CAAA,GAC9B,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,2DACZ,GAAO,KAAK,EAAM,KACjB,EAAA,EAAA,KAAA,CAAC,EAAA,MAAD,CAEE,QAAQ,UACR,UAAU,gEAHZ,EAKE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,mDAA2C,EAAK,IAAW,CAAA,GAC3E,EAAA,EAAA,IAAA,CAAC,EAAA,OAAD,CAAQ,QAAQ,OAAO,QAAQ,OAAO,YAAe,EAAiB,CAAK,YACzE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,UAAU,sBAAwB,CAAA,CACpC,CAAA,CACH,GARA,EAAK,IAQL,CACR,CACE,CAAA,CACL,CAAA,CAAA,EACA,IACJ,CAAA,CAAA,CAEN"}