@mage-ui/components 1.0.134 → 1.0.136
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/components/controls/dropzone/use-s3-upload.mjs +1 -1
- package/dist/components/data-display/file-icon/FileIcon.d.mts.map +1 -1
- package/dist/components/data-display/file-icon/FileIcon.mjs +1 -1
- package/dist/components/data-display/file-icon/FileIcon.mjs.map +1 -1
- package/dist/components/data-display/index.d.mts +0 -1
- package/dist/components/forms/Form.d.mts +15 -8
- package/dist/components/forms/Form.d.mts.map +1 -1
- package/dist/components/forms/Form.mjs +1 -1
- package/dist/components/forms/Form.mjs.map +1 -1
- package/dist/components/forms/FormS3Context.d.mts +13 -0
- package/dist/components/forms/FormS3Context.d.mts.map +1 -0
- package/dist/components/forms/FormS3Context.mjs +2 -0
- package/dist/components/forms/FormS3Context.mjs.map +1 -0
- package/dist/components/forms/controls/FormDropzoneS3.d.mts +29 -5
- package/dist/components/forms/controls/FormDropzoneS3.d.mts.map +1 -1
- package/dist/components/forms/controls/FormDropzoneS3.mjs +1 -1
- package/dist/components/forms/controls/FormDropzoneS3.mjs.map +1 -1
- package/dist/components/forms/index.d.mts +2 -0
- package/dist/components/index.d.mts +2 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
- package/dist/components/data-display/assigned-user/AssignedUser.d.mts +0 -36
- package/dist/components/data-display/assigned-user/AssignedUser.d.mts.map +0 -1
- package/dist/components/data-display/assigned-user/AssignedUser.mjs +0 -2
- package/dist/components/data-display/assigned-user/AssignedUser.mjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as e}from"react";const t={initFailed:e=>`Failed to request upload URL (${e})`,registerFailed:e=>`Failed to register file (${e})`,uploadFailed:(e,t)=>`Upload failed (${e} ${t})`,networkError:`Network error during direct upload`,uploadAborted:`Upload aborted`,uploadTimedOut:`Upload timed out`},n=(e,t,n,r,i)=>new Promise((a,o)=>{let s=new XMLHttpRequest;s.upload.addEventListener(`progress`,e=>{e.lengthComputable&&r(Math.round(e.loaded/e.total*100))}),s.addEventListener(`load`,()=>{s.status>=200&&s.status<300?a():o(Error(i.uploadFailed(s.status,s.statusText)))}),s.addEventListener(`error`,()=>o(Error(i.networkError))),s.addEventListener(`abort`,()=>o(Error(i.uploadAborted))),s.addEventListener(`timeout`,()=>o(Error(i.uploadTimedOut))),s.open(`PUT`,e);for(let[e,n]of Object.entries(t)){let t=e.toLowerCase();if(!(t===`host`||t===`content-length`))try{s.setRequestHeader(e,n)}catch{}}s.send(n)}),r=e=>{let t={};if(!e)return t;for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?r.join(`,`):String(r);return t},i=e=>{let t=e.lastIndexOf(`.`);return t>=0?e.slice(t+1).toLowerCase():``},a=e=>{if(!e)return;let t={};for(let[n,r]of Object.entries(e)){let e=`.${n}`,i=t[r];i?i.includes(e)||i.push(e):t[r]=[e]}return t},o=(e,t)=>{let n=i(e.name);if(!t)return{mimeType:e.type,extension:n};let r=Object.values(t);return e.type&&r.includes(e.type)?{mimeType:e.type,extension:n}:{mimeType:t[n]??e.type,extension:n}},s=async(e,t)=>{try{let n=await e.clone().json();if(n.errors){let e=Object.values(n.errors)[0];if(e&&e.length>0)return e[0]}return n.body?.message??n.body?.text??n.message??t}catch{return t}},c=({initUrl:i,buildInitBody:a,register:c,getHeaders:l,getErrorMessage:u=s,resolveUploadedUrl:d,acceptedTypes:f,texts:p})=>{let[m,h]=e(!1);return{upload:async(e,s)=>{let m={...t,...p};h(!0);try{let t=()=>({"Content-Type":`application/json`,Accept:`application/json`,...l?.()??{}}),p=o(e,f),h=await fetch(i,{method:`POST`,headers:t(),body:JSON.stringify(a(e,p))});if(!h.ok)throw Error(await u(h,m.initFailed(h.status)));let g=await h.json(),{url:_,headers:v}=g.body;if(await n(_,r(v),e,e=>s?.(e),m),c){let n=await fetch(c.url,{method:`POST`,headers:t(),body:JSON.stringify(c.buildBody(e,g.body,p))});if(!n.ok)throw Error(await u(n,m.registerFailed(n.status)))}return d?.(g.body,e)??(typeof g.body.key==`string`?g.body.key:_.split(`?`)[0])}finally{h(!1)}},isUploading:m}};export{a as buildAcceptMap,s as defaultGetErrorMessage,i as getFileExtension,c as useS3Upload};
|
|
1
|
+
import{useState as e}from"react";const t={initFailed:e=>`Failed to request upload URL (${e})`,registerFailed:e=>`Failed to register file (${e})`,uploadFailed:(e,t)=>`Upload failed (${e} ${t})`,networkError:`Network error during direct upload`,uploadAborted:`Upload aborted`,uploadTimedOut:`Upload timed out`},n=(e,t,n,r,i)=>new Promise((a,o)=>{let s=new XMLHttpRequest;s.upload.addEventListener(`progress`,e=>{e.lengthComputable&&r(Math.round(e.loaded/e.total*100))}),s.addEventListener(`load`,()=>{s.status>=200&&s.status<300?a():o(Error(i.uploadFailed(s.status,s.statusText)))}),s.addEventListener(`error`,()=>o(Error(i.networkError))),s.addEventListener(`abort`,()=>o(Error(i.uploadAborted))),s.addEventListener(`timeout`,()=>o(Error(i.uploadTimedOut))),s.open(`PUT`,e);for(let[e,n]of Object.entries(t)){let t=e.toLowerCase();if(!(t===`host`||t===`content-length`))try{s.setRequestHeader(e,n)}catch{}}s.send(n)}),r=e=>{let t={};if(!e)return t;for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?r.join(`,`):String(r);return t},i=e=>{let t=e.lastIndexOf(`.`);return t>=0?e.slice(t+1).toLowerCase():``},a=e=>{if(!e)return;let t={};for(let[n,r]of Object.entries(e)){let e=`.${n}`,i=t[r];i?i.includes(e)||i.push(e):t[r]=[e]}return t},o=(e,t)=>{let n=i(e.name);if(!t)return{mimeType:e.type,extension:n};let r=Object.values(t);return e.type&&r.includes(e.type)?{mimeType:e.type,extension:n}:{mimeType:t[n]??e.type,extension:n}},s=async(e,t)=>{try{let n=await e.clone().json();if(n.errors){let e=Object.values(n.errors)[0];if(e&&e.length>0)return e[0]}return n.body?.message??n.body?.text??n.message??t}catch{return t}},c=({initUrl:i,buildInitBody:a,register:c,getHeaders:l,getErrorMessage:u=s,resolveUploadedUrl:d,acceptedTypes:f,texts:p})=>{let[m,h]=e(!1);return{upload:async(e,s)=>{let m={...t,...p};h(!0);try{let t=()=>({"Content-Type":`application/json`,Accept:`application/json`,...l?.()??{}}),p=o(e,f),h=await fetch(i,{method:`POST`,headers:t(),body:JSON.stringify(a(e,p))});if(!h.ok)throw Error(await u(h,m.initFailed(h.status)));let g=await h.json(),{url:_,headers:v}=g.body;if(await n(_,r(v),e,e=>s?.(e),m),c){let n=await fetch(c.url,{method:`POST`,headers:t(),body:JSON.stringify(c.buildBody(e,g.body,p))});if(!n.ok)throw Error(await u(n,m.registerFailed(n.status)))}return d?.(g.body,e)??(typeof g.body.key==`string`?g.body.key:_.split(`?`)[0])}finally{h(!1)}},isUploading:m}};export{a as buildAcceptMap,s as defaultGetErrorMessage,i as getFileExtension,o as resolveMeta,c as useS3Upload};
|
|
2
2
|
//# sourceMappingURL=use-s3-upload.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileIcon.d.mts","names":[],"sources":["../../../../src/components/data-display/file-icon/FileIcon.tsx"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"FileIcon.d.mts","names":[],"sources":["../../../../src/components/data-display/file-icon/FileIcon.tsx"],"mappings":";;;;;KAyGY,aAAA;EACV,QAAA;EACA,QAAA;EACA,UAAA;IACE,QAAA;IACA,WAAA,GAAc,gBAAA;IACd,IAAA,GAAO,SAAA;EAAA;AAAA;AAAA,cAIE,QAAA;EAAY,QAAA;EAAA,QAAA;EAAA;AAAA,GAAoC,aAAA,KAAa,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Icon as e}from"../icons/icon/Icon.mjs";import{IconWrapped as t}from"../icons/icon-wrapped/IconWrapped.mjs";import{cx as n}from"@mage-ui/styled-system/css";import{fileIcon as r,fileIconIcon as i,fileIconIconIconRaw as a,fileIconIconIconRawRoot as o,fileIconIconRoot as s,fileIconIconWrapped as c,fileIconIconWrappedRoot as l}from"@mage-ui/styled-system/recipes";import{jsx as u}from"react/jsx-runtime";const d=[{match:e=>e.startsWith(`image/`),type:`image`},{match:e=>e.startsWith(`video/`),type:`video`},{match:e=>e.startsWith(`audio/`),type:`audio`},{match:e=>e===`application/pdf`,type:`pdf`},{match:e=>e.startsWith(`text/`),type:`text`},{match:e=>[`application/zip`,`application/x-zip-compressed`,`application/x-rar-compressed`,`application/x-7z-compressed`].includes(e),type:`archive`}],f={png:`image`,jpg:`image`,jpeg:`image`,webp:`image`,gif:`image`,heic:`image`,heif:`image`,tiff:`image`,bmp:`image`,svg:`image`,mp4:`video`,mov:`video`,webm:`video`,avi:`video`,mp3:`audio`,wav:`audio`,aac:`audio`,txt:`text`,md:`text`,csv:`text`,doc:`text`,docx:`text`,xlsx:`text`,pptx:`text`,pdf:`pdf`,zip:`archive`,rar:`archive`,"7z":`archive`},p={image:`mage-file-icon-image`,video:`mage-file-icon-video`,audio:`mage-file-icon-audio`,text:`mage-file-icon-text`,pdf:`mage-file-icon-pdf`,archive:`mage-file-icon-archive`,default:`mage-file-icon-attachment`},m=(e,t)=>{if(e){let t=d.find(({match:t})=>t(e));if(t)return p[t.type]}if(t){let e=t.split(`.`).pop()?.toLowerCase();if(e&&f[e])return p[f[e]]}return p.default},h=({fileType:d,fileName:f,classNames:p})=>{let h=m(d,f);return u(t,{classNames:{iconWrapped:n(p?.fileIcon??r(),p?.iconWrapped?.iconWrapped??c()),root:n(p?.iconWrapped?.root??l())},children:u(e,{name:h,path:`/icons/sprite-mage.svg`,classNames:{icon:p?.icon?.icon??i(),root:p?.icon?.root??s(),iconRaw:{iconRaw:p?.icon?.iconRaw?.iconRaw??a(),root:p?.icon?.iconRaw?.root??o()}}})})};export{h as FileIcon};
|
|
1
|
+
import{Icon as e}from"../icons/icon/Icon.mjs";import{IconWrapped as t}from"../icons/icon-wrapped/IconWrapped.mjs";import{cx as n}from"@mage-ui/styled-system/css";import{fileIcon as r,fileIconIcon as i,fileIconIconIconRaw as a,fileIconIconIconRawRoot as o,fileIconIconRoot as s,fileIconIconWrapped as c,fileIconIconWrappedRoot as l}from"@mage-ui/styled-system/recipes";import{jsx as u}from"react/jsx-runtime";const d=[{match:e=>e.startsWith(`image/`),type:`image`},{match:e=>e.startsWith(`video/`),type:`video`},{match:e=>e.startsWith(`audio/`),type:`audio`},{match:e=>e===`application/pdf`,type:`pdf`},{match:e=>e.startsWith(`text/`),type:`text`},{match:e=>[`application/zip`,`application/x-zip-compressed`,`application/x-rar-compressed`,`application/x-7z-compressed`].includes(e),type:`archive`}],f={png:`image`,jpg:`image`,jpeg:`image`,webp:`image`,gif:`image`,heic:`image`,heif:`image`,tiff:`image`,bmp:`image`,svg:`image`,mp4:`video`,mov:`video`,webm:`video`,avi:`video`,mkv:`video`,mp3:`audio`,wav:`audio`,aac:`audio`,txt:`text`,md:`text`,csv:`text`,doc:`text`,docx:`text`,xlsx:`text`,pptx:`text`,pdf:`pdf`,zip:`archive`,rar:`archive`,"7z":`archive`},p={image:`mage-file-icon-image`,video:`mage-file-icon-video`,audio:`mage-file-icon-audio`,text:`mage-file-icon-text`,pdf:`mage-file-icon-pdf`,archive:`mage-file-icon-archive`,default:`mage-file-icon-attachment`},m=(e,t)=>{if(e){let t=d.find(({match:t})=>t(e));if(t)return p[t.type]}if(t){let e=t.split(`.`).pop()?.toLowerCase();if(e&&f[e])return p[f[e]]}return p.default},h=({fileType:d,fileName:f,classNames:p})=>{let h=m(d,f);return u(t,{classNames:{iconWrapped:n(p?.fileIcon??r(),p?.iconWrapped?.iconWrapped??c()),root:n(p?.iconWrapped?.root??l())},children:u(e,{name:h,path:`/icons/sprite-mage.svg`,classNames:{icon:p?.icon?.icon??i(),root:p?.icon?.root??s(),iconRaw:{iconRaw:p?.icon?.iconRaw?.iconRaw??a(),root:p?.icon?.iconRaw?.root??o()}}})})};export{h as FileIcon};
|
|
2
2
|
//# sourceMappingURL=FileIcon.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileIcon.mjs","names":[],"sources":["../../../../src/components/data-display/file-icon/FileIcon.tsx"],"sourcesContent":["import { cx } from '@mage-ui/styled-system/css';\nimport {\n fileIcon,\n fileIconIcon,\n fileIconIconIconRaw,\n fileIconIconIconRawRoot,\n fileIconIconRoot,\n fileIconIconWrapped,\n fileIconIconWrappedRoot,\n} from '@mage-ui/styled-system/recipes';\nimport {\n Icon,\n type IconProps,\n IconWrapped,\n type IconWrappedProps,\n} from '@/components/data-display';\n\ntype FileIconType =\n | 'image'\n | 'video'\n | 'audio'\n | 'text'\n | 'pdf'\n | 'archive'\n | 'default';\n\nconst MIME_ICON_MAP: Array<{\n match: (mime: string) => boolean;\n type: FileIconType;\n}> = [\n { match: (m) => m.startsWith('image/'), type: 'image' },\n { match: (m) => m.startsWith('video/'), type: 'video' },\n { match: (m) => m.startsWith('audio/'), type: 'audio' },\n { match: (m) => m === 'application/pdf', type: 'pdf' },\n { match: (m) => m.startsWith('text/'), type: 'text' },\n {\n match: (m) =>\n [\n 'application/zip',\n 'application/x-zip-compressed',\n 'application/x-rar-compressed',\n 'application/x-7z-compressed',\n ].includes(m),\n type: 'archive',\n },\n];\n\nconst EXTENSION_ICON_MAP: Record<string, FileIconType> = {\n png: 'image',\n jpg: 'image',\n jpeg: 'image',\n webp: 'image',\n gif: 'image',\n heic: 'image',\n heif: 'image',\n tiff: 'image',\n bmp: 'image',\n svg: 'image',\n mp4: 'video',\n mov: 'video',\n webm: 'video',\n avi: 'video',\n mp3: 'audio',\n wav: 'audio',\n aac: 'audio',\n txt: 'text',\n md: 'text',\n csv: 'text',\n doc: 'text',\n docx: 'text',\n xlsx: 'text',\n pptx: 'text',\n pdf: 'pdf',\n zip: 'archive',\n rar: 'archive',\n '7z': 'archive',\n};\n\nconst ICON_NAME_MAP: Record<FileIconType, string> = {\n image: 'mage-file-icon-image',\n video: 'mage-file-icon-video',\n audio: 'mage-file-icon-audio',\n text: 'mage-file-icon-text',\n pdf: 'mage-file-icon-pdf',\n archive: 'mage-file-icon-archive',\n default: 'mage-file-icon-attachment',\n};\n\nconst resolveIconName = (fileType?: string, fileName?: string): string => {\n if (fileType) {\n const match = MIME_ICON_MAP.find(({ match }) => match(fileType));\n if (match) return ICON_NAME_MAP[match.type];\n }\n\n if (fileName) {\n const ext = fileName.split('.').pop()?.toLowerCase();\n if (ext && EXTENSION_ICON_MAP[ext]) {\n return ICON_NAME_MAP[EXTENSION_ICON_MAP[ext]];\n }\n }\n\n return ICON_NAME_MAP.default;\n};\n\nexport type FileIconProps = {\n fileType?: string;\n fileName?: string;\n classNames?: {\n fileIcon?: string;\n iconWrapped?: IconWrappedProps['classNames'];\n icon?: IconProps['classNames'];\n };\n};\n\nexport const FileIcon = ({ fileType, fileName, classNames }: FileIconProps) => {\n const iconName = resolveIconName(fileType, fileName);\n\n return (\n <IconWrapped\n classNames={{\n iconWrapped: cx(\n classNames?.fileIcon ?? fileIcon(),\n classNames?.iconWrapped?.iconWrapped ?? fileIconIconWrapped(),\n ),\n root: cx(classNames?.iconWrapped?.root ?? fileIconIconWrappedRoot()),\n }}\n >\n <Icon\n name={iconName}\n path='/icons/sprite-mage.svg'\n classNames={{\n icon: classNames?.icon?.icon ?? fileIconIcon(),\n root: classNames?.icon?.root ?? fileIconIconRoot(),\n iconRaw: {\n iconRaw:\n classNames?.icon?.iconRaw?.iconRaw ?? fileIconIconIconRaw(),\n root: classNames?.icon?.iconRaw?.root ?? fileIconIconIconRawRoot(),\n },\n }}\n />\n </IconWrapped>\n );\n};\n"],"mappings":"wZA0BA,MAAM,EAGD,CACH,CAAE,MAAQ,GAAM,EAAE,WAAW,SAAS,CAAE,KAAM,QAAS,CACvD,CAAE,MAAQ,GAAM,EAAE,WAAW,SAAS,CAAE,KAAM,QAAS,CACvD,CAAE,MAAQ,GAAM,EAAE,WAAW,SAAS,CAAE,KAAM,QAAS,CACvD,CAAE,MAAQ,GAAM,IAAM,kBAAmB,KAAM,MAAO,CACtD,CAAE,MAAQ,GAAM,EAAE,WAAW,QAAQ,CAAE,KAAM,OAAQ,CACrD,CACE,MAAQ,GACN,CACE,kBACA,+BACA,+BACA,8BACD,CAAC,SAAS,EAAE,CACf,KAAM,UACP,CACF,CAEK,EAAmD,CACvD,IAAK,QACL,IAAK,QACL,KAAM,QACN,KAAM,QACN,IAAK,QACL,KAAM,QACN,KAAM,QACN,KAAM,QACN,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,KAAM,QACN,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,GAAI,OACJ,IAAK,OACL,IAAK,OACL,KAAM,OACN,KAAM,OACN,KAAM,OACN,IAAK,MACL,IAAK,UACL,IAAK,UACL,KAAM,UACP,CAEK,EAA8C,CAClD,MAAO,uBACP,MAAO,uBACP,MAAO,uBACP,KAAM,sBACN,IAAK,qBACL,QAAS,yBACT,QAAS,4BACV,CAEK,GAAmB,EAAmB,IAA8B,CACxE,GAAI,EAAU,CACZ,IAAM,EAAQ,EAAc,MAAM,CAAE,WAAY,EAAM,EAAS,CAAC,CAChE,GAAI,EAAO,OAAO,EAAc,EAAM,MAGxC,GAAI,EAAU,CACZ,IAAM,EAAM,EAAS,MAAM,IAAI,CAAC,KAAK,EAAE,aAAa,CACpD,GAAI,GAAO,EAAmB,GAC5B,OAAO,EAAc,EAAmB,IAI5C,OAAO,EAAc,SAaV,GAAY,CAAE,WAAU,WAAU,gBAAgC,CAC7E,IAAM,EAAW,EAAgB,EAAU,EAAS,CAEpD,OACE,EAAC,EAAD,CACE,WAAY,CACV,YAAa,EACX,GAAY,UAAY,GAAU,CAClC,GAAY,aAAa,aAAe,GAAqB,CAC9D,CACD,KAAM,EAAG,GAAY,aAAa,MAAQ,GAAyB,CAAC,CACrE,UAED,EAAC,EAAD,CACE,KAAM,EACN,KAAK,yBACL,WAAY,CACV,KAAM,GAAY,MAAM,MAAQ,GAAc,CAC9C,KAAM,GAAY,MAAM,MAAQ,GAAkB,CAClD,QAAS,CACP,QACE,GAAY,MAAM,SAAS,SAAW,GAAqB,CAC7D,KAAM,GAAY,MAAM,SAAS,MAAQ,GAAyB,CACnE,CACF,CACD,CAAA,CACU,CAAA"}
|
|
1
|
+
{"version":3,"file":"FileIcon.mjs","names":[],"sources":["../../../../src/components/data-display/file-icon/FileIcon.tsx"],"sourcesContent":["import { cx } from '@mage-ui/styled-system/css';\nimport {\n fileIcon,\n fileIconIcon,\n fileIconIconIconRaw,\n fileIconIconIconRawRoot,\n fileIconIconRoot,\n fileIconIconWrapped,\n fileIconIconWrappedRoot,\n} from '@mage-ui/styled-system/recipes';\nimport {\n Icon,\n type IconProps,\n IconWrapped,\n type IconWrappedProps,\n} from '@/components/data-display';\n\ntype FileIconType =\n | 'image'\n | 'video'\n | 'audio'\n | 'text'\n | 'pdf'\n | 'archive'\n | 'default';\n\nconst MIME_ICON_MAP: Array<{\n match: (mime: string) => boolean;\n type: FileIconType;\n}> = [\n { match: (m) => m.startsWith('image/'), type: 'image' },\n { match: (m) => m.startsWith('video/'), type: 'video' },\n { match: (m) => m.startsWith('audio/'), type: 'audio' },\n { match: (m) => m === 'application/pdf', type: 'pdf' },\n { match: (m) => m.startsWith('text/'), type: 'text' },\n {\n match: (m) =>\n [\n 'application/zip',\n 'application/x-zip-compressed',\n 'application/x-rar-compressed',\n 'application/x-7z-compressed',\n ].includes(m),\n type: 'archive',\n },\n];\n\nconst EXTENSION_ICON_MAP: Record<string, FileIconType> = {\n png: 'image',\n jpg: 'image',\n jpeg: 'image',\n webp: 'image',\n gif: 'image',\n heic: 'image',\n heif: 'image',\n tiff: 'image',\n bmp: 'image',\n svg: 'image',\n mp4: 'video',\n mov: 'video',\n webm: 'video',\n avi: 'video',\n mkv: 'video',\n mp3: 'audio',\n wav: 'audio',\n aac: 'audio',\n txt: 'text',\n md: 'text',\n csv: 'text',\n doc: 'text',\n docx: 'text',\n xlsx: 'text',\n pptx: 'text',\n pdf: 'pdf',\n zip: 'archive',\n rar: 'archive',\n '7z': 'archive',\n};\n\nconst ICON_NAME_MAP: Record<FileIconType, string> = {\n image: 'mage-file-icon-image',\n video: 'mage-file-icon-video',\n audio: 'mage-file-icon-audio',\n text: 'mage-file-icon-text',\n pdf: 'mage-file-icon-pdf',\n archive: 'mage-file-icon-archive',\n default: 'mage-file-icon-attachment',\n};\n\nconst resolveIconName = (fileType?: string, fileName?: string): string => {\n if (fileType) {\n const match = MIME_ICON_MAP.find(({ match }) => match(fileType));\n if (match) return ICON_NAME_MAP[match.type];\n }\n\n if (fileName) {\n const ext = fileName.split('.').pop()?.toLowerCase();\n if (ext && EXTENSION_ICON_MAP[ext]) {\n return ICON_NAME_MAP[EXTENSION_ICON_MAP[ext]];\n }\n }\n\n return ICON_NAME_MAP.default;\n};\n\nexport type FileIconProps = {\n fileType?: string;\n fileName?: string;\n classNames?: {\n fileIcon?: string;\n iconWrapped?: IconWrappedProps['classNames'];\n icon?: IconProps['classNames'];\n };\n};\n\nexport const FileIcon = ({ fileType, fileName, classNames }: FileIconProps) => {\n const iconName = resolveIconName(fileType, fileName);\n\n return (\n <IconWrapped\n classNames={{\n iconWrapped: cx(\n classNames?.fileIcon ?? fileIcon(),\n classNames?.iconWrapped?.iconWrapped ?? fileIconIconWrapped(),\n ),\n root: cx(classNames?.iconWrapped?.root ?? fileIconIconWrappedRoot()),\n }}\n >\n <Icon\n name={iconName}\n path='/icons/sprite-mage.svg'\n classNames={{\n icon: classNames?.icon?.icon ?? fileIconIcon(),\n root: classNames?.icon?.root ?? fileIconIconRoot(),\n iconRaw: {\n iconRaw:\n classNames?.icon?.iconRaw?.iconRaw ?? fileIconIconIconRaw(),\n root: classNames?.icon?.iconRaw?.root ?? fileIconIconIconRawRoot(),\n },\n }}\n />\n </IconWrapped>\n );\n};\n"],"mappings":"wZA0BA,MAAM,EAGD,CACH,CAAE,MAAQ,GAAM,EAAE,WAAW,SAAS,CAAE,KAAM,QAAS,CACvD,CAAE,MAAQ,GAAM,EAAE,WAAW,SAAS,CAAE,KAAM,QAAS,CACvD,CAAE,MAAQ,GAAM,EAAE,WAAW,SAAS,CAAE,KAAM,QAAS,CACvD,CAAE,MAAQ,GAAM,IAAM,kBAAmB,KAAM,MAAO,CACtD,CAAE,MAAQ,GAAM,EAAE,WAAW,QAAQ,CAAE,KAAM,OAAQ,CACrD,CACE,MAAQ,GACN,CACE,kBACA,+BACA,+BACA,8BACD,CAAC,SAAS,EAAE,CACf,KAAM,UACP,CACF,CAEK,EAAmD,CACvD,IAAK,QACL,IAAK,QACL,KAAM,QACN,KAAM,QACN,IAAK,QACL,KAAM,QACN,KAAM,QACN,KAAM,QACN,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,KAAM,QACN,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,GAAI,OACJ,IAAK,OACL,IAAK,OACL,KAAM,OACN,KAAM,OACN,KAAM,OACN,IAAK,MACL,IAAK,UACL,IAAK,UACL,KAAM,UACP,CAEK,EAA8C,CAClD,MAAO,uBACP,MAAO,uBACP,MAAO,uBACP,KAAM,sBACN,IAAK,qBACL,QAAS,yBACT,QAAS,4BACV,CAEK,GAAmB,EAAmB,IAA8B,CACxE,GAAI,EAAU,CACZ,IAAM,EAAQ,EAAc,MAAM,CAAE,WAAY,EAAM,EAAS,CAAC,CAChE,GAAI,EAAO,OAAO,EAAc,EAAM,MAGxC,GAAI,EAAU,CACZ,IAAM,EAAM,EAAS,MAAM,IAAI,CAAC,KAAK,EAAE,aAAa,CACpD,GAAI,GAAO,EAAmB,GAC5B,OAAO,EAAc,EAAmB,IAI5C,OAAO,EAAc,SAaV,GAAY,CAAE,WAAU,WAAU,gBAAgC,CAC7E,IAAM,EAAW,EAAgB,EAAU,EAAS,CAEpD,OACE,EAAC,EAAD,CACE,WAAY,CACV,YAAa,EACX,GAAY,UAAY,GAAU,CAClC,GAAY,aAAa,aAAe,GAAqB,CAC9D,CACD,KAAM,EAAG,GAAY,aAAa,MAAQ,GAAyB,CAAC,CACrE,UAED,EAAC,EAAD,CACE,KAAM,EACN,KAAK,yBACL,WAAY,CACV,KAAM,GAAY,MAAM,MAAQ,GAAc,CAC9C,KAAM,GAAY,MAAM,MAAQ,GAAkB,CAClD,QAAS,CACP,QACE,GAAY,MAAM,SAAS,SAAW,GAAqB,CAC7D,KAAM,GAAY,MAAM,SAAS,MAAQ,GAAyB,CACnE,CACF,CACD,CAAA,CACU,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { AssignedUser, AssignedUserProps } from "./assigned-user/AssignedUser.mjs";
|
|
2
1
|
import { Avatar, AvatarProps } from "./avatar/Avatar.mjs";
|
|
3
2
|
import { Badge, BadgeProps } from "./badge/Badge.mjs";
|
|
4
3
|
import { Calendar, CalendarEvent, CalendarProps, CalendarView, DateLocalizer } from "./calendar/Calendar.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TextInputProps } from "../controls/text-input/TextInput.mjs";
|
|
2
|
-
import { S3InitBody } from "../controls/dropzone/use-s3-upload.mjs";
|
|
3
2
|
import { TextareaProps } from "../controls/textarea/Textarea.mjs";
|
|
3
|
+
import { FormDropzoneS3Props } from "./controls/FormDropzoneS3.mjs";
|
|
4
4
|
import { FormSubmitProps } from "./controls/FormSubmit.mjs";
|
|
5
5
|
import { FormCheckboxProps } from "./controls/FormCheckbox.mjs";
|
|
6
6
|
import { FormPasswordProps } from "./controls/FormPassword.mjs";
|
|
@@ -10,7 +10,6 @@ import { FormAutocompleteProps } from "./controls/FormAutocomplete.mjs";
|
|
|
10
10
|
import { FormFileInputProps } from "./controls/FormFileInput.mjs";
|
|
11
11
|
import { FormFileInputMultipleProps } from "./controls/FormFileInputMultiple.mjs";
|
|
12
12
|
import { FormDropzoneProps } from "./controls/FormDropzone.mjs";
|
|
13
|
-
import { FormDropzoneS3Props } from "./controls/FormDropzoneS3.mjs";
|
|
14
13
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
15
14
|
import React, { ReactNode } from "react";
|
|
16
15
|
import { FieldValues, UseFormSetError } from "react-hook-form";
|
|
@@ -36,7 +35,8 @@ type FormProps<T extends FieldValues> = {
|
|
|
36
35
|
invalidStatus?: number[];
|
|
37
36
|
children: ReactNode;
|
|
38
37
|
schema?: ZodObject<Record<string, ZodTypeAny>>;
|
|
39
|
-
t?: (key: string, bindings?: Record<string, string>, fallback?: string) => string | React.ReactNode;
|
|
38
|
+
t?: (key: string, bindings?: Record<string, string>, fallback?: string) => string | React.ReactNode; /** Mensaje mostrado al usuario si falla la subida de archivos a S3 tras el submit. */
|
|
39
|
+
s3UploadErrorMessage?: string;
|
|
40
40
|
classNames?: {
|
|
41
41
|
form?: string;
|
|
42
42
|
root?: string;
|
|
@@ -51,6 +51,7 @@ declare const Form: {
|
|
|
51
51
|
children,
|
|
52
52
|
schema,
|
|
53
53
|
t,
|
|
54
|
+
s3UploadErrorMessage,
|
|
54
55
|
classNames
|
|
55
56
|
}: FormProps<T>): react_jsx_runtime0.JSX.Element;
|
|
56
57
|
displayName: string;
|
|
@@ -184,13 +185,19 @@ declare const Form: {
|
|
|
184
185
|
displayName: string;
|
|
185
186
|
};
|
|
186
187
|
DropzoneS3: {
|
|
187
|
-
|
|
188
|
-
$rule: _$rule,
|
|
189
|
-
isSubmitting: _isSubmitting,
|
|
188
|
+
({
|
|
190
189
|
name,
|
|
190
|
+
$rule: _$rule,
|
|
191
|
+
error,
|
|
191
192
|
onChange,
|
|
192
|
-
|
|
193
|
-
|
|
193
|
+
buildMetadata,
|
|
194
|
+
resolveUploadUrls,
|
|
195
|
+
getHeaders,
|
|
196
|
+
acceptedTypes,
|
|
197
|
+
accept,
|
|
198
|
+
texts,
|
|
199
|
+
...dropzoneProps
|
|
200
|
+
}: FormDropzoneS3Props): react_jsx_runtime0.JSX.Element;
|
|
194
201
|
displayName: string;
|
|
195
202
|
};
|
|
196
203
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.d.mts","names":[],"sources":["../../../src/components/forms/Form.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Form.d.mts","names":[],"sources":["../../../src/components/forms/Form.tsx"],"mappings":";;;;;;;;;;;;;;;;;;KAyBK,YAAA;EACH,IAAA;EACA,OAAA;EACA,MAAA;EACA,GAAA;AAAA;AAAA,KAGU,SAAA,WAAoB,WAAA;EAC9B,QAAA,GAAW,MAAA;IAAU,IAAA,EAAM,CAAA;EAAA,MAAQ,OAAA;EACnC,aAAA,IAAiB,QAAA,EAAU,YAAA;EAC3B,eAAA,IAAmB,MAAA;IACjB,OAAA;IACA,QAAA,EAAU,eAAA,CAAgB,CAAA;IAC1B,MAAA;EAAA;EAEF,aAAA;EACA,QAAA,EAAU,SAAA;EACV,MAAA,GAAS,SAAA,CAAU,MAAA,SAAe,UAAA;EAClC,CAAA,IACE,GAAA,UACA,QAAA,GAAW,MAAA,kBACX,QAAA,uBACY,KAAA,CAAM,SAAA,EArBpB;EAuBA,oBAAA;EACA,UAAA;IACE,IAAA;IACA,IAAA;EAAA;AAAA;AAAA,cAYS,IAAA;EAAA,WAAkB,WAAA;IAAW,QAAA;IAAA,aAAA;IAAA,eAAA;IAAA,aAAA;IAAA,QAAA;IAAA,MAAA;IAAA,CAAA;IAAA,oBAAA;IAAA;EAAA,GAUvC,SAAA,CAAU,CAAA,IAAE,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{FormAutocomplete as e}from"./controls/FormAutocomplete.mjs";import{FormCheckbox as t}from"./controls/FormCheckbox.mjs";import{FormCombobox as n}from"./controls/FormCombobox.mjs";import{FormDropzone as r}from"./controls/FormDropzone.mjs";import{
|
|
1
|
+
import{FormAutocomplete as e}from"./controls/FormAutocomplete.mjs";import{FormCheckbox as t}from"./controls/FormCheckbox.mjs";import{FormCombobox as n}from"./controls/FormCombobox.mjs";import{FormDropzone as r}from"./controls/FormDropzone.mjs";import{FormS3Context as i}from"./FormS3Context.mjs";import{FormDropzoneS3 as a}from"./controls/FormDropzoneS3.mjs";import{FormFileInput as o}from"./controls/FormFileInput.mjs";import{FormFileInputMultiple as s}from"./controls/FormFileInputMultiple.mjs";import{FormHidden as c}from"./controls/FormHidden.mjs";import{FormPassword as l}from"./controls/FormPassword.mjs";import{FormSelect as u}from"./controls/FormSelect.mjs";import{FormSubmit as d}from"./controls/FormSubmit.mjs";import{FormTextarea as f}from"./controls/FormTextarea.mjs";import{FormTextInput as p}from"./controls/FormTextInput.mjs";import{FormBase as m}from"./FormBase.mjs";import{FormErrorBox as h}from"./FormErrorBox.mjs";import{form as g,formRoot as _}from"@mage-ui/styled-system/recipes";import{jsx as v}from"react/jsx-runtime";import{useRef as y}from"react";const b=({$fetcher:e,onValidSubmit:t,onInvalidSubmit:n,invalidStatus:r=[],children:a,schema:o,t:s,s3UploadErrorMessage:c,classNames:l})=>{let u=y(new Map),d={registerS3Upload:(e,t)=>{u.current.set(e,t)},unregisterS3Upload:e=>{u.current.delete(e)}},f=async e=>{let t=Array.from(u.current.values());await Promise.all(t.map(t=>t(e)))};return v(i.Provider,{value:d,children:v(m,{onSubmit:async({data:i,setError:a})=>{await e({data:i}).then(async e=>{let n=e;if(n?.statusCode&&n.statusCode>=400)throw n;try{await f(e)}catch{a(`root.serverError`,{type:`s3`,message:c??`Failed to upload files`});return}t?.(e||{})}).catch(e=>{switch(e.statusCode){case 400:case 422:e.cause?.issues&&Object.keys(e.cause.issues).forEach(t=>{a(t,{type:`server`,message:e.cause?.issues?.[t]})}),a(`root.serverError`,{type:`server`,message:e?.message??`Something went wrong`});break;default:if(r.includes(e.statusCode)){n?.({message:e.message,setError:a,status:e.statusCode});break}throw e}})},schema:o,errorBox:h,t:s,classNames:{form:l?.form??g(),root:l?.root??_()},children:a})})};b.displayName=`Form`,b.TextInput=p,b.Textarea=f,b.Submit=d,b.Hidden=c,b.Checkbox=t,b.Password=l,b.Select=u,b.Combobox=n,b.Autocomplete=e,b.FileInput=o,b.FileInputMultiple=s,b.Dropzone=r,b.DropzoneS3=a;export{b as Form};
|
|
2
2
|
//# sourceMappingURL=Form.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.mjs","names":[],"sources":["../../../src/components/forms/Form.tsx"],"sourcesContent":["import type React from 'react';\nimport type { ReactNode } from 'react';\nimport type { FieldValues, UseFormSetError } from 'react-hook-form';\nimport type { ZodObject, ZodTypeAny } from 'zod';\n\nimport { form, formRoot } from '@mage-ui/styled-system/recipes';\n\nimport { FormAutocomplete } from './controls/FormAutocomplete';\nimport { FormCheckbox } from './controls/FormCheckbox';\nimport { FormCombobox } from './controls/FormCombobox';\nimport { FormDropzone } from './controls/FormDropzone';\nimport { FormDropzoneS3 } from './controls/FormDropzoneS3';\nimport { FormFileInput } from './controls/FormFileInput';\nimport { FormFileInputMultiple } from './controls/FormFileInputMultiple';\nimport { FormHidden } from './controls/FormHidden';\nimport { FormPassword } from './controls/FormPassword';\nimport { FormSelect } from './controls/FormSelect';\nimport { FormSubmit } from './controls/FormSubmit';\nimport { FormTextarea } from './controls/FormTextarea';\nimport { FormTextInput } from './controls/FormTextInput';\nimport { FormBase } from './FormBase';\nimport { FormErrorBox } from './FormErrorBox';\n\ntype FormResponse = {\n body?: object;\n details?: string;\n status?: number;\n url?: string;\n};\n\nexport type FormProps<T extends FieldValues> = {\n $fetcher: (params: { data: T }) => Promise<unknown>;\n onValidSubmit?: (response: FormResponse) => void;\n onInvalidSubmit?: (params: {\n message: string;\n setError: UseFormSetError<T>;\n status: number;\n }) => void;\n invalidStatus?: number[];\n children: ReactNode;\n schema?: ZodObject<Record<string, ZodTypeAny>>;\n t?: (\n key: string,\n bindings?: Record<string, string>,\n fallback?: string,\n ) => string | React.ReactNode;\n classNames?: {\n form?: string;\n root?: string;\n };\n};\n\ntype FormError = {\n statusCode: number;\n message: string;\n cause?: {\n issues: Record<string, string>;\n };\n};\n\nexport const Form = <T extends FieldValues>({\n $fetcher,\n onValidSubmit,\n onInvalidSubmit,\n invalidStatus = [],\n children,\n schema,\n t,\n classNames,\n}: FormProps<T>) => {\n const onSubmit = async ({\n data,\n setError,\n }: {\n data: FieldValues;\n setError: UseFormSetError<FieldValues>;\n }) => {\n await $fetcher({ data: data as T })\n .then((response) => {\n const res = response as FormError & FormResponse;\n if (res?.statusCode && res.statusCode >= 400) {\n throw res;\n }\n\n onValidSubmit?.((response || {}) as FormResponse);\n })\n .catch((error: FormError) => {\n switch (error.statusCode) {\n case 400:\n case 422: {\n if (error.cause?.issues) {\n Object.keys(error.cause.issues).forEach((key) => {\n setError(key, {\n type: 'server',\n message: error.cause?.issues?.[key],\n });\n });\n }\n setError('root.serverError', {\n type: 'server',\n message: error?.message ?? 'Something went wrong',\n });\n break;\n }\n default:\n if (invalidStatus.includes(error.statusCode)) {\n onInvalidSubmit?.({\n message: error.message,\n setError: setError as UseFormSetError<T>,\n status: error.statusCode,\n });\n break;\n }\n throw error;\n }\n });\n };\n\n return (\n <FormBase\n
|
|
1
|
+
{"version":3,"file":"Form.mjs","names":[],"sources":["../../../src/components/forms/Form.tsx"],"sourcesContent":["import type React from 'react';\nimport type { ReactNode } from 'react';\nimport { useRef } from 'react';\nimport type { FieldValues, UseFormSetError } from 'react-hook-form';\nimport type { ZodObject, ZodTypeAny } from 'zod';\n\nimport { form, formRoot } from '@mage-ui/styled-system/recipes';\n\nimport { FormAutocomplete } from './controls/FormAutocomplete';\nimport { FormCheckbox } from './controls/FormCheckbox';\nimport { FormCombobox } from './controls/FormCombobox';\nimport { FormDropzone } from './controls/FormDropzone';\nimport { FormDropzoneS3 } from './controls/FormDropzoneS3';\nimport { FormFileInput } from './controls/FormFileInput';\nimport { FormFileInputMultiple } from './controls/FormFileInputMultiple';\nimport { FormHidden } from './controls/FormHidden';\nimport { FormPassword } from './controls/FormPassword';\nimport { FormSelect } from './controls/FormSelect';\nimport { FormSubmit } from './controls/FormSubmit';\nimport { FormTextarea } from './controls/FormTextarea';\nimport { FormTextInput } from './controls/FormTextInput';\nimport { FormBase } from './FormBase';\nimport { FormErrorBox } from './FormErrorBox';\nimport { FormS3Context, type S3UploadCallback } from './FormS3Context';\n\ntype FormResponse = {\n body?: object;\n details?: string;\n status?: number;\n url?: string;\n};\n\nexport type FormProps<T extends FieldValues> = {\n $fetcher: (params: { data: T }) => Promise<unknown>;\n onValidSubmit?: (response: FormResponse) => void;\n onInvalidSubmit?: (params: {\n message: string;\n setError: UseFormSetError<T>;\n status: number;\n }) => void;\n invalidStatus?: number[];\n children: ReactNode;\n schema?: ZodObject<Record<string, ZodTypeAny>>;\n t?: (\n key: string,\n bindings?: Record<string, string>,\n fallback?: string,\n ) => string | React.ReactNode;\n /** Mensaje mostrado al usuario si falla la subida de archivos a S3 tras el submit. */\n s3UploadErrorMessage?: string;\n classNames?: {\n form?: string;\n root?: string;\n };\n};\n\ntype FormError = {\n statusCode: number;\n message: string;\n cause?: {\n issues: Record<string, string>;\n };\n};\n\nexport const Form = <T extends FieldValues>({\n $fetcher,\n onValidSubmit,\n onInvalidSubmit,\n invalidStatus = [],\n children,\n schema,\n t,\n s3UploadErrorMessage,\n classNames,\n}: FormProps<T>) => {\n const s3CallbacksRef = useRef<Map<string, S3UploadCallback>>(new Map());\n\n const s3ContextValue = {\n registerS3Upload: (name: string, cb: S3UploadCallback) => {\n s3CallbacksRef.current.set(name, cb);\n },\n unregisterS3Upload: (name: string) => {\n s3CallbacksRef.current.delete(name);\n },\n };\n\n const runS3Uploads = async (response: unknown): Promise<void> => {\n const callbacks = Array.from(s3CallbacksRef.current.values());\n await Promise.all(callbacks.map((cb) => cb(response)));\n };\n\n const onSubmit = async ({\n data,\n setError,\n }: {\n data: FieldValues;\n setError: UseFormSetError<FieldValues>;\n }) => {\n await $fetcher({ data: data as T })\n .then(async (response) => {\n const res = response as FormError & FormResponse;\n if (res?.statusCode && res.statusCode >= 400) {\n throw res;\n }\n\n try {\n await runS3Uploads(response);\n } catch {\n setError('root.serverError', {\n type: 's3',\n message: s3UploadErrorMessage ?? 'Failed to upload files',\n });\n return;\n }\n onValidSubmit?.((response || {}) as FormResponse);\n })\n .catch((error: FormError) => {\n switch (error.statusCode) {\n case 400:\n case 422: {\n if (error.cause?.issues) {\n Object.keys(error.cause.issues).forEach((key) => {\n setError(key, {\n type: 'server',\n message: error.cause?.issues?.[key],\n });\n });\n }\n setError('root.serverError', {\n type: 'server',\n message: error?.message ?? 'Something went wrong',\n });\n break;\n }\n default:\n if (invalidStatus.includes(error.statusCode)) {\n onInvalidSubmit?.({\n message: error.message,\n setError: setError as UseFormSetError<T>,\n status: error.statusCode,\n });\n break;\n }\n throw error;\n }\n });\n };\n\n return (\n <FormS3Context.Provider value={s3ContextValue}>\n <FormBase\n onSubmit={onSubmit}\n schema={schema}\n errorBox={FormErrorBox}\n t={t}\n classNames={{\n form: classNames?.form ?? form(),\n root: classNames?.root ?? formRoot(),\n }}\n >\n {children}\n </FormBase>\n </FormS3Context.Provider>\n );\n};\n\nForm.displayName = 'Form';\nForm.TextInput = FormTextInput;\nForm.Textarea = FormTextarea;\nForm.Submit = FormSubmit;\nForm.Hidden = FormHidden;\nForm.Checkbox = FormCheckbox;\nForm.Password = FormPassword;\nForm.Select = FormSelect;\nForm.Combobox = FormCombobox;\nForm.Autocomplete = FormAutocomplete;\nForm.FileInput = FormFileInput;\nForm.FileInputMultiple = FormFileInputMultiple;\nForm.Dropzone = FormDropzone;\nForm.DropzoneS3 = FormDropzoneS3;\n"],"mappings":"gjCAgEA,MAAa,GAA+B,CAC1C,WACA,gBACA,kBACA,gBAAgB,EAAE,CAClB,WACA,SACA,IACA,uBACA,gBACkB,CAClB,IAAM,EAAiB,EAAsC,IAAI,IAAM,CAEjE,EAAiB,CACrB,kBAAmB,EAAc,IAAyB,CACxD,EAAe,QAAQ,IAAI,EAAM,EAAG,EAEtC,mBAAqB,GAAiB,CACpC,EAAe,QAAQ,OAAO,EAAK,EAEtC,CAEK,EAAe,KAAO,IAAqC,CAC/D,IAAM,EAAY,MAAM,KAAK,EAAe,QAAQ,QAAQ,CAAC,CAC7D,MAAM,QAAQ,IAAI,EAAU,IAAK,GAAO,EAAG,EAAS,CAAC,CAAC,EA4DxD,OACE,EAAC,EAAc,SAAf,CAAwB,MAAO,WAC7B,EAAC,EAAD,CACY,SA5DC,MAAO,CACtB,OACA,cAII,CACJ,MAAM,EAAS,CAAQ,OAAW,CAAC,CAChC,KAAK,KAAO,IAAa,CACxB,IAAM,EAAM,EACZ,GAAI,GAAK,YAAc,EAAI,YAAc,IACvC,MAAM,EAGR,GAAI,CACF,MAAM,EAAa,EAAS,MACtB,CACN,EAAS,mBAAoB,CAC3B,KAAM,KACN,QAAS,GAAwB,yBAClC,CAAC,CACF,OAEF,IAAiB,GAAY,EAAE,CAAkB,EACjD,CACD,MAAO,GAAqB,CAC3B,OAAQ,EAAM,WAAd,CACE,IAAK,KACL,IAAK,KACC,EAAM,OAAO,QACf,OAAO,KAAK,EAAM,MAAM,OAAO,CAAC,QAAS,GAAQ,CAC/C,EAAS,EAAK,CACZ,KAAM,SACN,QAAS,EAAM,OAAO,SAAS,GAChC,CAAC,EACF,CAEJ,EAAS,mBAAoB,CAC3B,KAAM,SACN,QAAS,GAAO,SAAW,uBAC5B,CAAC,CACF,MAEF,QACE,GAAI,EAAc,SAAS,EAAM,WAAW,CAAE,CAC5C,IAAkB,CAChB,QAAS,EAAM,QACL,WACV,OAAQ,EAAM,WACf,CAAC,CACF,MAEF,MAAM,IAEV,EAOQ,SACR,SAAU,EACP,IACH,WAAY,CACV,KAAM,GAAY,MAAQ,GAAM,CAChC,KAAM,GAAY,MAAQ,GAAU,CACrC,CAEA,WACQ,CAAA,CACY,CAAA,EAI7B,EAAK,YAAc,OACnB,EAAK,UAAY,EACjB,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,OAAS,EACd,EAAK,SAAW,EAChB,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,SAAW,EAChB,EAAK,aAAe,EACpB,EAAK,UAAY,EACjB,EAAK,kBAAoB,EACzB,EAAK,SAAW,EAChB,EAAK,WAAa"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as react from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/forms/FormS3Context.d.ts
|
|
4
|
+
type S3UploadCallback = (response: unknown) => Promise<void>;
|
|
5
|
+
type FormS3ContextValue = {
|
|
6
|
+
registerS3Upload: (name: string, callback: S3UploadCallback) => void;
|
|
7
|
+
unregisterS3Upload: (name: string) => void;
|
|
8
|
+
};
|
|
9
|
+
declare const FormS3Context: react.Context<FormS3ContextValue | null>;
|
|
10
|
+
declare const useFormS3Context: () => FormS3ContextValue;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { FormS3Context, FormS3ContextValue, S3UploadCallback, useFormS3Context };
|
|
13
|
+
//# sourceMappingURL=FormS3Context.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormS3Context.d.mts","names":[],"sources":["../../../src/components/forms/FormS3Context.tsx"],"mappings":";;;KAEY,gBAAA,IAAoB,QAAA,cAAsB,OAAA;AAAA,KAE1C,kBAAA;EACV,gBAAA,GAAmB,IAAA,UAAc,QAAA,EAAU,gBAAA;EAC3C,kBAAA,GAAqB,IAAA;AAAA;AAAA,cAGV,aAAA,EAAa,KAAA,CAAA,OAAA,CAAA,kBAAA;AAAA,cAEb,gBAAA,QAAuB,kBAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormS3Context.mjs","names":[],"sources":["../../../src/components/forms/FormS3Context.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type S3UploadCallback = (response: unknown) => Promise<void>;\n\nexport type FormS3ContextValue = {\n registerS3Upload: (name: string, callback: S3UploadCallback) => void;\n unregisterS3Upload: (name: string) => void;\n};\n\nexport const FormS3Context = createContext<FormS3ContextValue | null>(null);\n\nexport const useFormS3Context = (): FormS3ContextValue => {\n const ctx = useContext(FormS3Context);\n if (!ctx) {\n throw new Error('useFormS3Context must be used inside a Form');\n }\n return ctx;\n};\n"],"mappings":"sDASA,MAAa,EAAgB,EAAyC,KAAK,CAE9D,MAA6C,CACxD,IAAM,EAAM,EAAW,EAAc,CACrC,GAAI,CAAC,EACH,MAAU,MAAM,8CAA8C,CAEhE,OAAO"}
|
|
@@ -1,12 +1,36 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { DropzoneS3Texts, S3FileMeta } from "../../controls/dropzone/use-s3-upload.mjs";
|
|
2
|
+
import { DropzoneProps } from "../../controls/dropzone/Dropzone.mjs";
|
|
3
3
|
//#region src/components/forms/controls/FormDropzoneS3.d.ts
|
|
4
|
-
type
|
|
4
|
+
type FileMetadata = {
|
|
5
|
+
name: string;
|
|
6
|
+
size: number;
|
|
7
|
+
mimeType: string;
|
|
8
|
+
extension: string;
|
|
9
|
+
} & Record<string, unknown>;
|
|
10
|
+
type UploadTarget = {
|
|
11
|
+
url: string;
|
|
12
|
+
headers?: Record<string, string | string[]>;
|
|
13
|
+
};
|
|
14
|
+
type FormDropzoneS3Props = Omit<DropzoneProps, 'url' | 'autoSend' | 'onChange' | 'uploader'> & {
|
|
5
15
|
name: string;
|
|
6
16
|
$rule?: string;
|
|
7
|
-
|
|
17
|
+
error?: string;
|
|
8
18
|
onChange?: (files: File[]) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Convierte cada archivo en los metadatos que se enviarán con el submit.
|
|
21
|
+
* Por defecto: { name, size, mimeType, extension }.
|
|
22
|
+
*/
|
|
23
|
+
buildMetadata?: (file: File, meta: S3FileMeta) => Record<string, unknown>;
|
|
24
|
+
/**
|
|
25
|
+
* Extrae del response del $fetcher las URLs presignadas para este campo.
|
|
26
|
+
* Debe devolver un array en el mismo orden que los archivos añadidos.
|
|
27
|
+
*/
|
|
28
|
+
resolveUploadUrls: (response: unknown) => UploadTarget[]; /** Headers extra para el PUT a S3 (auth, CSRF…). */
|
|
29
|
+
getHeaders?: () => Record<string, string>; /** Map de extensión → MIME para aceptación y resolución de tipo. */
|
|
30
|
+
acceptedTypes?: Record<string, string>; /** Lista explícita de tipos aceptados (tiene precedencia sobre acceptedTypes). */
|
|
31
|
+
accept?: string[] | Record<string, string[]>; /** Textos del dropzone (título, subtítulo, hint, errores). */
|
|
32
|
+
texts?: DropzoneS3Texts;
|
|
9
33
|
};
|
|
10
34
|
//#endregion
|
|
11
|
-
export { FormDropzoneS3Props };
|
|
35
|
+
export { FileMetadata, FormDropzoneS3Props, UploadTarget };
|
|
12
36
|
//# sourceMappingURL=FormDropzoneS3.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormDropzoneS3.d.mts","names":[],"sources":["../../../../src/components/forms/controls/FormDropzoneS3.tsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"FormDropzoneS3.d.mts","names":[],"sources":["../../../../src/components/forms/controls/FormDropzoneS3.tsx"],"mappings":";;;KAgBY,YAAA;EACV,IAAA;EACA,IAAA;EACA,QAAA;EACA,SAAA;AAAA,IACE,MAAA;AAAA,KAEQ,YAAA;EACV,GAAA;EACA,OAAA,GAAU,MAAA;AAAA;AAAA,KAGA,mBAAA,GAAsB,IAAA,CAChC,aAAA;EAGA,IAAA;EACA,KAAA;EACA,KAAA;EACA,QAAA,IAAY,KAAA,EAAO,IAAA;EAZG;;;;EAkBtB,aAAA,IAAiB,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,KAAe,MAAA;EAhBxC;;;AAGZ;EAmBE,iBAAA,GAAoB,QAAA,cAAsB,YAAA;EAG1C,UAAA,SAAmB,MAAA,kBAtBa;EAyBhC,aAAA,GAAgB,MAAA,kBAZO;EAevB,MAAA,cAAoB,MAAA,oBAf8B;EAkBlD,KAAA,GAAQ,eAAA;AAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{buildAcceptMap as e,resolveMeta as t}from"../../controls/dropzone/use-s3-upload.mjs";import{Dropzone as n}from"../../controls/dropzone/Dropzone.mjs";import{useFormS3Context as r}from"../FormS3Context.mjs";import{jsx as i}from"react/jsx-runtime";import{useEffect as a,useRef as o}from"react";import{Controller as s}from"react-hook-form";const c=e=>{if(!e)return{};let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?r.join(`,`):String(r);return t},l=({name:l,$rule:u,error:d,onChange:f,buildMetadata:p,resolveUploadUrls:m,getHeaders:h,acceptedTypes:g,accept:_,texts:v,...y})=>{let{registerS3Upload:b,unregisterS3Upload:x}=r(),S=o(new Map),C=o(m),w=o(h);C.current=m,w.current=h;let T=_??e(g),E=e=>{let n=t(e,g),r=p?.(e,n)??{};return{name:e.name,size:e.size,mimeType:n.mimeType,extension:n.extension,...r}};return a(()=>(b(l,async e=>{let t=C.current(e),n=Array.from(S.current.values());if(t.length!==n.length)throw Error(`Form.DropzoneS3 "${l}": resolveUploadUrls returned ${t.length} URL(s) but there are ${n.length} file(s).`);let r=w.current?.()??{};await Promise.all(n.map(async(e,n)=>{let i=t[n];if(!i)return;let{url:a,headers:o}=i,s={...c(o),...r},l=await fetch(a,{method:`PUT`,headers:s,body:e});if(!l.ok)throw Error(`Upload failed for "${e.name}" (${l.status} ${l.statusText})`)}))}),()=>{x(l)}),[l,b,x]),i(s,{name:l,render:({field:{onChange:e}})=>i(n,{...y,title:v?.title,subtitle:v?.subtitle,hint:v?.hint,accept:T,autoSend:!1,error:d,onChange:t=>{S.current=new Map(t.map(e=>[e.name,e])),e(t.map(E)),f?.(t)}})})};l.displayName=`Form.DropzoneS3`;export{l as FormDropzoneS3};
|
|
2
2
|
//# sourceMappingURL=FormDropzoneS3.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormDropzoneS3.mjs","names":[],"sources":["../../../../src/components/forms/controls/FormDropzoneS3.tsx"],"sourcesContent":["import { Controller } from 'react-hook-form';\n\nimport {\n
|
|
1
|
+
{"version":3,"file":"FormDropzoneS3.mjs","names":[],"sources":["../../../../src/components/forms/controls/FormDropzoneS3.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { Controller } from 'react-hook-form';\n\nimport {\n Dropzone,\n type DropzoneProps,\n} from '@/components/controls/dropzone/Dropzone';\nimport {\n buildAcceptMap,\n type DropzoneS3Texts,\n resolveMeta,\n type S3FileMeta,\n} from '@/components/controls/dropzone/use-s3-upload';\n\nimport { useFormS3Context } from '../FormS3Context';\n\nexport type FileMetadata = {\n name: string;\n size: number;\n mimeType: string;\n extension: string;\n} & Record<string, unknown>;\n\nexport type UploadTarget = {\n url: string;\n headers?: Record<string, string | string[]>;\n};\n\nexport type FormDropzoneS3Props = Omit<\n DropzoneProps,\n 'url' | 'autoSend' | 'onChange' | 'uploader'\n> & {\n name: string;\n $rule?: string;\n error?: string;\n onChange?: (files: File[]) => void;\n\n /**\n * Convierte cada archivo en los metadatos que se enviarán con el submit.\n * Por defecto: { name, size, mimeType, extension }.\n */\n buildMetadata?: (file: File, meta: S3FileMeta) => Record<string, unknown>;\n\n /**\n * Extrae del response del $fetcher las URLs presignadas para este campo.\n * Debe devolver un array en el mismo orden que los archivos añadidos.\n */\n resolveUploadUrls: (response: unknown) => UploadTarget[];\n\n /** Headers extra para el PUT a S3 (auth, CSRF…). */\n getHeaders?: () => Record<string, string>;\n\n /** Map de extensión → MIME para aceptación y resolución de tipo. */\n acceptedTypes?: Record<string, string>;\n\n /** Lista explícita de tipos aceptados (tiene precedencia sobre acceptedTypes). */\n accept?: string[] | Record<string, string[]>;\n\n /** Textos del dropzone (título, subtítulo, hint, errores). */\n texts?: DropzoneS3Texts;\n};\n\nconst flattenHeaders = (\n headers: Record<string, string | string[]> | undefined,\n): Record<string, string> => {\n if (!headers) return {};\n const out: Record<string, string> = {};\n for (const [k, v] of Object.entries(headers)) {\n out[k] = Array.isArray(v) ? v.join(',') : String(v);\n }\n return out;\n};\n\nexport const FormDropzoneS3 = ({\n name,\n $rule: _$rule,\n error,\n onChange,\n buildMetadata,\n resolveUploadUrls,\n getHeaders,\n acceptedTypes,\n accept,\n texts,\n ...dropzoneProps\n}: FormDropzoneS3Props) => {\n const { registerS3Upload, unregisterS3Upload } = useFormS3Context();\n const rawFilesRef = useRef<Map<string, File>>(new Map());\n const resolveUploadUrlsRef = useRef(resolveUploadUrls);\n const getHeadersRef = useRef(getHeaders);\n\n resolveUploadUrlsRef.current = resolveUploadUrls;\n getHeadersRef.current = getHeaders;\n\n const acceptList = accept ?? buildAcceptMap(acceptedTypes);\n\n const buildFileMeta = (file: File): FileMetadata => {\n const meta = resolveMeta(file, acceptedTypes);\n const extra = buildMetadata?.(file, meta) ?? {};\n return {\n name: file.name,\n size: file.size,\n mimeType: meta.mimeType,\n extension: meta.extension,\n ...extra,\n };\n };\n\n useEffect(() => {\n registerS3Upload(name, async (response: unknown) => {\n const targets = resolveUploadUrlsRef.current(response);\n const files = Array.from(rawFilesRef.current.values());\n\n if (targets.length !== files.length) {\n throw new Error(\n `Form.DropzoneS3 \"${name}\": resolveUploadUrls returned ${targets.length} URL(s) but there are ${files.length} file(s).`,\n );\n }\n\n const baseHeaders = getHeadersRef.current?.() ?? {};\n\n await Promise.all(\n files.map(async (file, i) => {\n const target = targets[i];\n if (!target) return;\n const { url, headers: s3Headers } = target;\n const merged = {\n ...flattenHeaders(s3Headers),\n ...baseHeaders,\n };\n\n const res = await fetch(url, {\n method: 'PUT',\n headers: merged,\n body: file,\n });\n\n if (!res.ok) {\n throw new Error(\n `Upload failed for \"${file.name}\" (${res.status} ${res.statusText})`,\n );\n }\n }),\n );\n });\n\n return () => {\n unregisterS3Upload(name);\n };\n }, [name, registerS3Upload, unregisterS3Upload]);\n\n return (\n <Controller\n name={name}\n render={({ field: { onChange: fieldOnChange } }) => (\n <Dropzone\n {...dropzoneProps}\n title={texts?.title}\n subtitle={texts?.subtitle}\n hint={texts?.hint}\n accept={acceptList}\n autoSend={false}\n error={error}\n onChange={(files) => {\n rawFilesRef.current = new Map(files.map((f) => [f.name, f]));\n fieldOnChange(files.map(buildFileMeta));\n onChange?.(files);\n }}\n />\n )}\n />\n );\n};\n\nFormDropzoneS3.displayName = 'Form.DropzoneS3';\n"],"mappings":"uVA8DA,MAAM,EACJ,GAC2B,CAC3B,GAAI,CAAC,EAAS,MAAO,EAAE,CACvB,IAAM,EAA8B,EAAE,CACtC,IAAK,GAAM,CAAC,EAAG,KAAM,OAAO,QAAQ,EAAQ,CAC1C,EAAI,GAAK,MAAM,QAAQ,EAAE,CAAG,EAAE,KAAK,IAAI,CAAG,OAAO,EAAE,CAErD,OAAO,GAGI,GAAkB,CAC7B,OACA,MAAO,EACP,QACA,WACA,gBACA,oBACA,aACA,gBACA,SACA,QACA,GAAG,KACsB,CACzB,GAAM,CAAE,mBAAkB,sBAAuB,GAAkB,CAC7D,EAAc,EAA0B,IAAI,IAAM,CAClD,EAAuB,EAAO,EAAkB,CAChD,EAAgB,EAAO,EAAW,CAExC,EAAqB,QAAU,EAC/B,EAAc,QAAU,EAExB,IAAM,EAAa,GAAU,EAAe,EAAc,CAEpD,EAAiB,GAA6B,CAClD,IAAM,EAAO,EAAY,EAAM,EAAc,CACvC,EAAQ,IAAgB,EAAM,EAAK,EAAI,EAAE,CAC/C,MAAO,CACL,KAAM,EAAK,KACX,KAAM,EAAK,KACX,SAAU,EAAK,SACf,UAAW,EAAK,UAChB,GAAG,EACJ,EA8CH,OA3CA,OACE,EAAiB,EAAM,KAAO,IAAsB,CAClD,IAAM,EAAU,EAAqB,QAAQ,EAAS,CAChD,EAAQ,MAAM,KAAK,EAAY,QAAQ,QAAQ,CAAC,CAEtD,GAAI,EAAQ,SAAW,EAAM,OAC3B,MAAU,MACR,oBAAoB,EAAK,gCAAgC,EAAQ,OAAO,wBAAwB,EAAM,OAAO,WAC9G,CAGH,IAAM,EAAc,EAAc,WAAW,EAAI,EAAE,CAEnD,MAAM,QAAQ,IACZ,EAAM,IAAI,MAAO,EAAM,IAAM,CAC3B,IAAM,EAAS,EAAQ,GACvB,GAAI,CAAC,EAAQ,OACb,GAAM,CAAE,MAAK,QAAS,GAAc,EAC9B,EAAS,CACb,GAAG,EAAe,EAAU,CAC5B,GAAG,EACJ,CAEK,EAAM,MAAM,MAAM,EAAK,CAC3B,OAAQ,MACR,QAAS,EACT,KAAM,EACP,CAAC,CAEF,GAAI,CAAC,EAAI,GACP,MAAU,MACR,sBAAsB,EAAK,KAAK,KAAK,EAAI,OAAO,GAAG,EAAI,WAAW,GACnE,EAEH,CACH,EACD,KAEW,CACX,EAAmB,EAAK,GAEzB,CAAC,EAAM,EAAkB,EAAmB,CAAC,CAG9C,EAAC,EAAD,CACQ,OACN,QAAS,CAAE,MAAO,CAAE,SAAU,MAC5B,EAAC,EAAD,CACE,GAAI,EACJ,MAAO,GAAO,MACd,SAAU,GAAO,SACjB,KAAM,GAAO,KACb,OAAQ,EACR,SAAU,GACH,QACP,SAAW,GAAU,CACnB,EAAY,QAAU,IAAI,IAAI,EAAM,IAAK,GAAM,CAAC,EAAE,KAAM,EAAE,CAAC,CAAC,CAC5D,EAAc,EAAM,IAAI,EAAc,CAAC,CACvC,IAAW,EAAM,EAEnB,CAAA,CAEJ,CAAA,EAIN,EAAe,YAAc"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { FileMetadata, FormDropzoneS3Props, UploadTarget } from "./controls/FormDropzoneS3.mjs";
|
|
1
2
|
import { Form, FormProps } from "./Form.mjs";
|
|
3
|
+
import { FormS3Context, FormS3ContextValue, S3UploadCallback, useFormS3Context } from "./FormS3Context.mjs";
|
|
2
4
|
import { PASSWORD_RULES } from "./rules/password-rules.mjs";
|
|
3
5
|
import { z } from "./rules/zod.mjs";
|
|
@@ -4,7 +4,6 @@ import { ButtonLoader } from "./buttons/button-action/ButtonLoader.mjs";
|
|
|
4
4
|
import { ButtonIcon, ButtonIconProps } from "./buttons/button-icon/ButtonIcon.mjs";
|
|
5
5
|
import { ButtonIconVisual, ButtonIconVisualProps } from "./buttons/button-icon-visual/ButtonIconVisual.mjs";
|
|
6
6
|
import { ButtonVisual, ButtonVisualProps } from "./buttons/button-visual/ButtonVisual.mjs";
|
|
7
|
-
import { AssignedUser, AssignedUserProps } from "./data-display/assigned-user/AssignedUser.mjs";
|
|
8
7
|
import { Avatar, AvatarProps } from "./data-display/avatar/Avatar.mjs";
|
|
9
8
|
import { Badge, BadgeProps } from "./data-display/badge/Badge.mjs";
|
|
10
9
|
import { Calendar, CalendarEvent, CalendarProps, CalendarView, DateLocalizer } from "./data-display/calendar/Calendar.mjs";
|
|
@@ -74,7 +73,9 @@ import { Radio, RadioProps } from "./controls/radio/Radio.mjs";
|
|
|
74
73
|
import { Switch, SwitchProps } from "./controls/switch/Switch.mjs";
|
|
75
74
|
import { SwitchGroup, SwitchGroupProps } from "./controls/switch-group/SwitchGroup.mjs";
|
|
76
75
|
import { Textarea, TextareaProps } from "./controls/textarea/Textarea.mjs";
|
|
76
|
+
import { FileMetadata, FormDropzoneS3Props, UploadTarget } from "./forms/controls/FormDropzoneS3.mjs";
|
|
77
77
|
import { Form, FormProps } from "./forms/Form.mjs";
|
|
78
|
+
import { FormS3Context, FormS3ContextValue, S3UploadCallback, useFormS3Context } from "./forms/FormS3Context.mjs";
|
|
78
79
|
import { PASSWORD_RULES } from "./forms/rules/password-rules.mjs";
|
|
79
80
|
import { z } from "./forms/rules/zod.mjs";
|
|
80
81
|
import { Card, CardBase, CardBody, CardClassNames, CardFooter, CardHeader, CardProps, CardRoot } from "./layouts/card/Card.mjs";
|
package/dist/index.d.mts
CHANGED
|
@@ -4,7 +4,6 @@ import { ButtonLoader } from "./components/buttons/button-action/ButtonLoader.mj
|
|
|
4
4
|
import { ButtonIcon, ButtonIconProps } from "./components/buttons/button-icon/ButtonIcon.mjs";
|
|
5
5
|
import { ButtonIconVisual, ButtonIconVisualProps } from "./components/buttons/button-icon-visual/ButtonIconVisual.mjs";
|
|
6
6
|
import { ButtonVisual, ButtonVisualProps } from "./components/buttons/button-visual/ButtonVisual.mjs";
|
|
7
|
-
import { AssignedUser, AssignedUserProps } from "./components/data-display/assigned-user/AssignedUser.mjs";
|
|
8
7
|
import { Avatar, AvatarProps } from "./components/data-display/avatar/Avatar.mjs";
|
|
9
8
|
import { Badge, BadgeProps } from "./components/data-display/badge/Badge.mjs";
|
|
10
9
|
import { Calendar, CalendarEvent, CalendarProps, CalendarView, DateLocalizer } from "./components/data-display/calendar/Calendar.mjs";
|
|
@@ -74,7 +73,9 @@ import { Radio, RadioProps } from "./components/controls/radio/Radio.mjs";
|
|
|
74
73
|
import { Switch, SwitchProps } from "./components/controls/switch/Switch.mjs";
|
|
75
74
|
import { SwitchGroup, SwitchGroupProps } from "./components/controls/switch-group/SwitchGroup.mjs";
|
|
76
75
|
import { Textarea, TextareaProps } from "./components/controls/textarea/Textarea.mjs";
|
|
76
|
+
import { FileMetadata, FormDropzoneS3Props, UploadTarget } from "./components/forms/controls/FormDropzoneS3.mjs";
|
|
77
77
|
import { Form, FormProps } from "./components/forms/Form.mjs";
|
|
78
|
+
import { FormS3Context, FormS3ContextValue, S3UploadCallback, useFormS3Context } from "./components/forms/FormS3Context.mjs";
|
|
78
79
|
import { PASSWORD_RULES } from "./components/forms/rules/password-rules.mjs";
|
|
79
80
|
import { z } from "./components/forms/rules/zod.mjs";
|
|
80
81
|
import { Card, CardBase, CardBody, CardClassNames, CardFooter, CardHeader, CardProps, CardRoot } from "./components/layouts/card/Card.mjs";
|
|
@@ -92,4 +93,4 @@ import { Modals } from "./components/overlays/modal/index.mjs";
|
|
|
92
93
|
import { Toast, ToastIntent, ToastOptions, ToastProviderProps } from "./components/overlays/toast/Toast.mjs";
|
|
93
94
|
import { Tooltip, TooltipProps } from "./components/overlays/tooltip/Tooltip.mjs";
|
|
94
95
|
import { MageUiProvider, MageUiProviderProps } from "./providers/MageUiProvider.mjs";
|
|
95
|
-
export {
|
|
96
|
+
export { Autocomplete, AutocompleteProps, Avatar, AvatarDropzone, AvatarDropzoneProps, AvatarDropzoneS3, AvatarDropzoneS3Props, AvatarProps, AvatarUpload, AvatarUploadProps, Badge, BadgeProps, Breadcrumbs, BreadcrumbsBarProps, BreadcrumbsProps, Button, ButtonAction, ButtonActionProps, ButtonIcon, ButtonIconProps, ButtonIconVisual, ButtonIconVisualProps, ButtonLoader, ButtonProps, ButtonVisual, ButtonVisualProps, Calendar, CalendarEvent, CalendarProps, CalendarView, Card, CardBase, CardBody, CardClassNames, CardFooter, CardHeader, CardProps, CardRoot, Checkbox, CheckboxProps, ColumnDef, Combobox, ComboboxProps, DEFAULT_DATA_TABLE_LABELS, DataTable, DataTableBottomSlot, DataTableBottomSlotProps, DataTableClassNames, DataTableColumnMeta, DataTableContextProvider, DataTableContextValue, DataTableExpansionConfig, DataTableExtraColumnConfig, DataTableFeedback, DataTableFiltersConfig, DataTableLabels, DataTablePageSize, DataTablePageSizeProps, DataTablePagination, DataTablePaginationConfig, DataTablePaginationProps, DataTableProps, DataTableRecord, DataTableSearchConfig, DataTableSelectionConfig, DataTableSortingConfig, DataTableTableConfig, DataTableTopSlot, DataTableTopSlotProps, DateLocalizer, DatePicker, DatePickerProps, DescriptionList, DescriptionListClassNames, DescriptionListItemProps, DescriptionListProps, DocumentItem, DocumentItemProps, Dropzone, DropzoneProps, DropzoneS3, DropzoneS3Props, DropzoneS3Texts, ExpandedState, FileData, FileIcon, FileIconProps, FileInput, FileInputMultiple, FileInputMultipleProps, FileInputProps, FileMetadata, FluidGrid, FluidGridProps, Form, FormDropzoneS3Props, FormProps, FormS3Context, FormS3ContextValue, Grid, GridClassNames, HorizontalDivider, HorizontalDividerProps, Icon, IconProps, IconRaw, IconRawProps, IconSvg, IconSvgProps, IconWrapped, IconWrappedProps, Indicator, IndicatorProps, LoaderDot, LoaderDotProps, LoaderOval, LoaderOvalProps, LogoImage, LogoImageProps, LogoSvg, LogoSvgProps, MageUiProvider, MageUiProviderProps, Menu, MenuProps, Modal, ModalClassNames, ModalIntent, ModalProps, ModalRegistry, ModalRegistryEntry, ModalRootProps, Modals, NavigationMenu, NavigationMenuProps, NotificationBanner, NotificationBannerIntent, NotificationBannerProps, PASSWORD_RULES, Pagination, PaginationClassNames, PaginationRootProps, PaginationState, PasswordInput, PasswordInputProps, PasswordRule, PasswordRuleDefinition, PasswordSegment, PasswordStrengthInput, PasswordStrengthInputProps, Radio, RadioProps, RemovableItem, RemovableItemProps, ResourceItem, ResourceItemProps, RowSelectionState, S3FileMeta, S3InitBody, S3InitResponse, S3UploadCallback, ScrollArea, ScrollAreaAutosize, ScrollAreaAutosizeProps, ScrollAreaClassNames, ScrollAreaProps, Select, SelectProps, Sidebar, SidebarClassNames, SidebarProps, SortingState, Switch, SwitchGroup, SwitchGroupProps, SwitchProps, Table, TableBodyProps, TableCaptionProps, TableCellProps, TableClassNames, TableFootProps, TableHeadProps, TableHeaderCellProps, TableProps, TableRowProps, Tag, TagGroup, TagGroupProps, TagProps, TextInput, TextInputProps, Textarea, TextareaProps, Toast, ToastIntent, ToastOptions, ToastProviderProps, Tooltip, TooltipProps, UploadTarget, UploadedFile, UploadedFileDetails, UploadedFileDetailsProps, UploadedFileProps, UploadedFiles, UploadedFilesClassNames, UploadedFilesItemClassNames, UploadedFilesItemProps, UploadedFilesProps, UploadingFiles, UploadingFilesClassNames, UploadingFilesItemClassNames, UploadingFilesItemErrorClassNames, UploadingFilesItemErrorProps, UploadingFilesItemProps, UploadingFilesProps, Virtual, VirtualItem, VirtualPadding, VirtualProps, VisuallyHidden, VisuallyHiddenProps, getFileExtension, useDataTableContext, useFormS3Context, usePasswordRules, z };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Button as e}from"./components/buttons/button/Button.mjs";import{VisuallyHidden as t}from"./components/misc/visually-hidden/VisuallyHidden.mjs";import{ButtonAction as n}from"./components/buttons/button-action/ButtonAction.mjs";import{ButtonLoader as r}from"./components/buttons/button-action/ButtonLoader.mjs";import{
|
|
1
|
+
import{Button as e}from"./components/buttons/button/Button.mjs";import{VisuallyHidden as t}from"./components/misc/visually-hidden/VisuallyHidden.mjs";import{ButtonAction as n}from"./components/buttons/button-action/ButtonAction.mjs";import{ButtonLoader as r}from"./components/buttons/button-action/ButtonLoader.mjs";import{Avatar as i}from"./components/data-display/avatar/Avatar.mjs";import{Badge as a}from"./components/data-display/badge/Badge.mjs";import{Tooltip as o}from"./components/overlays/tooltip/Tooltip.mjs";import{Calendar as s}from"./components/data-display/calendar/Calendar.mjs";import{Virtual as c}from"./components/misc/virtual/Virtual.mjs";import{ScrollArea as l}from"./components/misc/scroll-area/ScrollArea.mjs";import{Table as u}from"./components/data-display/table/Table.mjs";import{IconRaw as d}from"./components/data-display/icons/icon-raw/IconRaw.mjs";import{Icon as f}from"./components/data-display/icons/icon/Icon.mjs";import{DEFAULT_DATA_TABLE_LABELS as p,DataTableContextProvider as m,useDataTableContext as h}from"./components/data-display/datatables/useDataTableContext.mjs";import{Checkbox as g}from"./components/controls/checkbox/Checkbox.mjs";import{DataTable as _}from"./components/data-display/datatables/DataTable.mjs";import{HorizontalDivider as v}from"./components/misc/horizontal-divider/HorizontalDivider.mjs";import{ScrollAreaAutosize as y}from"./components/misc/scroll-area-autosize/ScrollAreaAutosize.mjs";import{TextInput as b}from"./components/controls/text-input/TextInput.mjs";import{IconWrapped as x}from"./components/data-display/icons/icon-wrapped/IconWrapped.mjs";import{Select as S}from"./components/controls/dropdown/select/Select.mjs";import{DataTablePageSize as C}from"./components/data-display/datatables/DataTablePageSize.mjs";import{Pagination as w}from"./components/navigations/pagination/Pagination.mjs";import{DataTablePagination as T}from"./components/data-display/datatables/DataTablePagination.mjs";import{DataTableBottomSlot as E}from"./components/data-display/datatables/DataTableBottomSlot.mjs";import{DataTableFeedback as D}from"./components/data-display/datatables/DataTableFeedback.mjs";import{DataTableTopSlot as O}from"./components/data-display/datatables/DataTableTopSlot.mjs";import{DescriptionList as k}from"./components/data-display/description-list/DescriptionList.mjs";import{FileIcon as A}from"./components/data-display/file-icon/FileIcon.mjs";import{ResourceItem as j}from"./components/data-display/resource-item/ResourceItem.mjs";import{DocumentItem as M}from"./components/data-display/document-item/DocumentItem.mjs";import{IconSvg as N}from"./components/data-display/icons/icon-svg/IconSvg.mjs";import{Indicator as P}from"./components/data-display/indicator/Indicator.mjs";import{LoaderDot as F}from"./components/data-display/loader-dot/LoaderDot.mjs";import{LoaderOval as I}from"./components/data-display/loader-oval/LoaderOval.mjs";import{LogoImage as L}from"./components/data-display/logos/logo-image/LogoImage.mjs";import{LogoSvg as R}from"./components/data-display/logos/logo-svg/LogoSvg.mjs";import{NotificationBanner as z}from"./components/data-display/notification-banner/NotificationBanner.mjs";import{RemovableItem as B}from"./components/data-display/removable-item/RemovableItem.mjs";import{TagGroup as V}from"./components/data-display/tag-group/TagGroup.mjs";import{Tag as H}from"./components/data-display/tag/Tag.mjs";import{UploadedFile as U}from"./components/data-display/uploaded-file/UploadedFile.mjs";import{UploadedFileDetails as W}from"./components/data-display/uploaded-file/UploadedFileDetails.mjs";import{UploadedFiles as G}from"./components/data-display/uploaded-files/UploadedFiles.mjs";import{UploadingFiles as K}from"./components/data-display/uploading-files/UploadingFiles.mjs";import{ButtonIcon as q}from"./components/buttons/button-icon/ButtonIcon.mjs";import{ButtonIconVisual as J}from"./components/buttons/button-icon-visual/ButtonIconVisual.mjs";import{ButtonVisual as Y}from"./components/buttons/button-visual/ButtonVisual.mjs";import{Modal as X}from"./components/overlays/modal/Modal.mjs";import{Modals as Z}from"./components/overlays/modal/index.mjs";import{Toast as Q}from"./components/overlays/toast/Toast.mjs";import{AvatarUpload as $}from"./components/controls/avatar-upload/AvatarUpload.mjs";import{DatePicker as ee}from"./components/controls/date-picker/DatePicker.mjs";import{Autocomplete as te}from"./components/controls/dropdown/autocomplete/Autocomplete.mjs";import{Combobox as ne}from"./components/controls/dropdown/combobox/Combobox.mjs";import{AvatarDropzone as re}from"./components/controls/dropzone/avatar/AvatarDropzone.mjs";import{getFileExtension as ie}from"./components/controls/dropzone/use-s3-upload.mjs";import{AvatarDropzoneS3 as ae}from"./components/controls/dropzone/avatar/AvatarDropzoneS3.mjs";import{Dropzone as oe}from"./components/controls/dropzone/Dropzone.mjs";import{DropzoneS3 as se}from"./components/controls/dropzone/DropzoneS3.mjs";import{FileInput as ce}from"./components/controls/file-input/FileInput.mjs";import{FileInputMultiple as le}from"./components/controls/file-input/FileInputMultiple.mjs";import{PasswordInput as ue}from"./components/controls/password-input/PasswordInput.mjs";import{PasswordStrengthInput as de}from"./components/controls/password-input/PasswordStrengthInput.mjs";import{usePasswordRules as fe}from"./components/controls/password-input/usePasswordRules.mjs";import{Radio as pe}from"./components/controls/radio/Radio.mjs";import{SwitchGroup as me}from"./components/controls/switch-group/SwitchGroup.mjs";import{Switch as he}from"./components/controls/switch/Switch.mjs";import{Textarea as ge}from"./components/controls/textarea/Textarea.mjs";import{FormS3Context as _e,useFormS3Context as ve}from"./components/forms/FormS3Context.mjs";import{PASSWORD_RULES as ye}from"./components/forms/rules/password-rules.mjs";import{z as be}from"./components/forms/rules/zod.mjs";import{Form as xe}from"./components/forms/Form.mjs";import{Card as Se,CardBase as Ce,CardBody as we,CardFooter as Te,CardHeader as Ee,CardRoot as De}from"./components/layouts/card/Card.mjs";import{FluidGrid as Oe}from"./components/layouts/fluid-grid/FluidGrid.mjs";import{Grid as ke}from"./components/layouts/grid/Grid.mjs";import{Breadcrumbs as Ae}from"./components/navigations/breadcrumbs/Breadcrumbs.mjs";import{Menu as je}from"./components/navigations/menu/Menu.mjs";import{NavigationMenu as Me}from"./components/navigations/navigation-menu/NavigationMenu.mjs";import{Sidebar as Ne}from"./components/navigations/sidebars/sidebar/Sidebar.mjs";import{MageUiProvider as Pe}from"./providers/MageUiProvider.mjs";export{te as Autocomplete,i as Avatar,re as AvatarDropzone,ae as AvatarDropzoneS3,$ as AvatarUpload,a as Badge,Ae as Breadcrumbs,e as Button,n as ButtonAction,q as ButtonIcon,J as ButtonIconVisual,r as ButtonLoader,Y as ButtonVisual,s as Calendar,Se as Card,Ce as CardBase,we as CardBody,Te as CardFooter,Ee as CardHeader,De as CardRoot,g as Checkbox,ne as Combobox,p as DEFAULT_DATA_TABLE_LABELS,_ as DataTable,E as DataTableBottomSlot,m as DataTableContextProvider,D as DataTableFeedback,C as DataTablePageSize,T as DataTablePagination,O as DataTableTopSlot,ee as DatePicker,k as DescriptionList,M as DocumentItem,oe as Dropzone,se as DropzoneS3,A as FileIcon,ce as FileInput,le as FileInputMultiple,Oe as FluidGrid,xe as Form,_e as FormS3Context,ke as Grid,v as HorizontalDivider,f as Icon,d as IconRaw,N as IconSvg,x as IconWrapped,P as Indicator,F as LoaderDot,I as LoaderOval,L as LogoImage,R as LogoSvg,Pe as MageUiProvider,je as Menu,X as Modal,Z as Modals,Me as NavigationMenu,z as NotificationBanner,ye as PASSWORD_RULES,w as Pagination,ue as PasswordInput,de as PasswordStrengthInput,pe as Radio,B as RemovableItem,j as ResourceItem,l as ScrollArea,y as ScrollAreaAutosize,S as Select,Ne as Sidebar,he as Switch,me as SwitchGroup,u as Table,H as Tag,V as TagGroup,b as TextInput,ge as Textarea,Q as Toast,o as Tooltip,U as UploadedFile,W as UploadedFileDetails,G as UploadedFiles,K as UploadingFiles,c as Virtual,t as VisuallyHidden,ie as getFileExtension,h as useDataTableContext,ve as useFormS3Context,fe as usePasswordRules,be as z};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mage-ui/components",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.136",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "",
|
|
6
6
|
"keywords": [],
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"rimraf": "^6.1.3",
|
|
26
26
|
"tsdown": "^0.21.4",
|
|
27
27
|
"typescript": "^5.9.3",
|
|
28
|
-
"@mage-ui/preset": "1.0.
|
|
28
|
+
"@mage-ui/preset": "1.0.136",
|
|
29
29
|
"@mage-ui/styled-system": "1.0.8"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { AvatarProps } from "../avatar/Avatar.mjs";
|
|
2
|
-
import { RemovableItemProps } from "../removable-item/RemovableItem.mjs";
|
|
3
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
-
import { ReactNode } from "react";
|
|
5
|
-
|
|
6
|
-
//#region src/components/data-display/assigned-user/AssignedUser.d.ts
|
|
7
|
-
type AssignedUserProps = {
|
|
8
|
-
name: string;
|
|
9
|
-
avatarSrc?: string;
|
|
10
|
-
avatarAlt?: string;
|
|
11
|
-
onRemove: () => void;
|
|
12
|
-
children?: ReactNode;
|
|
13
|
-
removeButtonLabel?: string;
|
|
14
|
-
classNames?: {
|
|
15
|
-
assignedUser?: string;
|
|
16
|
-
root?: string;
|
|
17
|
-
section?: string;
|
|
18
|
-
content?: string;
|
|
19
|
-
name?: string;
|
|
20
|
-
avatar?: AvatarProps['classNames'];
|
|
21
|
-
removableItem?: RemovableItemProps['classNames'];
|
|
22
|
-
buttonIcon?: NonNullable<RemovableItemProps['classNames']>['buttonIcon'];
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
declare const AssignedUser: ({
|
|
26
|
-
name,
|
|
27
|
-
avatarSrc,
|
|
28
|
-
avatarAlt,
|
|
29
|
-
onRemove,
|
|
30
|
-
removeButtonLabel,
|
|
31
|
-
children,
|
|
32
|
-
classNames
|
|
33
|
-
}: AssignedUserProps) => react_jsx_runtime0.JSX.Element;
|
|
34
|
-
//#endregion
|
|
35
|
-
export { AssignedUser, AssignedUserProps };
|
|
36
|
-
//# sourceMappingURL=AssignedUser.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AssignedUser.d.mts","names":[],"sources":["../../../../src/components/data-display/assigned-user/AssignedUser.tsx"],"mappings":";;;;;;KA2BY,iBAAA;EACV,IAAA;EACA,SAAA;EACA,SAAA;EACA,QAAA;EACA,QAAA,GAAW,SAAA;EACX,iBAAA;EACA,UAAA;IACE,YAAA;IACA,IAAA;IACA,OAAA;IACA,OAAA;IACA,IAAA;IACA,MAAA,GAAS,WAAA;IACT,aAAA,GAAgB,kBAAA;IAChB,UAAA,GAAa,WAAA,CAAY,kBAAA;EAAA;AAAA;AAAA,cAIhB,YAAA;EAAgB,IAAA;EAAA,SAAA;EAAA,SAAA;EAAA,QAAA;EAAA,iBAAA;EAAA,QAAA;EAAA;AAAA,GAQ1B,iBAAA,KAAiB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{Avatar as e}from"../avatar/Avatar.mjs";import{RemovableItem as t}from"../removable-item/RemovableItem.mjs";import{assignedUser as n,assignedUserAvatar as r,assignedUserAvatarImage as i,assignedUserAvatarPlaceholder as a,assignedUserAvatarRoot as o,assignedUserButtonIcon as s,assignedUserButtonIconIcon as c,assignedUserButtonIconIconRaw as l,assignedUserButtonIconIconRawRoot as u,assignedUserButtonIconRoot as d,assignedUserContent as f,assignedUserName as p,assignedUserRoot as m,assignedUserSection as h}from"@mage-ui/styled-system/recipes";import{jsx as g}from"react/jsx-runtime";const _=({name:_,avatarSrc:v,avatarAlt:y,onRemove:b,removeButtonLabel:x=`Remove user`,children:S,classNames:C})=>g(t,{startSlot:g(e,{name:_,src:v,alt:y,classNames:{avatar:C?.avatar?.avatar??r(),root:C?.avatar?.root??o(),image:C?.avatar?.image??i(),placeholder:C?.avatar?.placeholder??a()}}),onRemove:b,removeButtonLabel:x,classNames:{removableItem:C?.assignedUser??n(),root:C?.root??m(),section:C?.section??h(),content:C?.content??f(),buttonIcon:{buttonIcon:C?.buttonIcon?.buttonIcon??s(),root:C?.buttonIcon?.root??d(),icon:C?.buttonIcon?.icon??c(),iconRaw:{iconRaw:C?.buttonIcon?.iconRaw?.iconRaw??l(),root:C?.buttonIcon?.iconRaw?.root??u()}}},children:g(`span`,{className:C?.name??p(),children:S})});export{_ as AssignedUser};
|
|
2
|
-
//# sourceMappingURL=AssignedUser.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AssignedUser.mjs","names":[],"sources":["../../../../src/components/data-display/assigned-user/AssignedUser.tsx"],"sourcesContent":["// TODO: crear stories\n\nimport type { ReactNode } from 'react';\n\nimport {\n assignedUser,\n assignedUserAvatar,\n assignedUserAvatarImage,\n assignedUserAvatarPlaceholder,\n assignedUserAvatarRoot,\n assignedUserButtonIcon,\n assignedUserButtonIconIcon,\n assignedUserButtonIconIconRaw,\n assignedUserButtonIconIconRawRoot,\n assignedUserButtonIconRoot,\n assignedUserContent,\n assignedUserName,\n assignedUserRoot,\n assignedUserSection,\n} from '@mage-ui/styled-system/recipes';\nimport {\n Avatar,\n type AvatarProps,\n RemovableItem,\n type RemovableItemProps,\n} from '@/components/data-display';\n\nexport type AssignedUserProps = {\n name: string;\n avatarSrc?: string;\n avatarAlt?: string;\n onRemove: () => void;\n children?: ReactNode;\n removeButtonLabel?: string;\n classNames?: {\n assignedUser?: string;\n root?: string;\n section?: string;\n content?: string;\n name?: string;\n avatar?: AvatarProps['classNames'];\n removableItem?: RemovableItemProps['classNames'];\n buttonIcon?: NonNullable<RemovableItemProps['classNames']>['buttonIcon'];\n };\n};\n\nexport const AssignedUser = ({\n name,\n avatarSrc,\n avatarAlt,\n onRemove,\n removeButtonLabel = 'Remove user',\n children,\n classNames,\n}: AssignedUserProps) => {\n return (\n <RemovableItem\n startSlot={\n <Avatar\n name={name}\n src={avatarSrc}\n alt={avatarAlt}\n classNames={{\n avatar: classNames?.avatar?.avatar ?? assignedUserAvatar(),\n root: classNames?.avatar?.root ?? assignedUserAvatarRoot(),\n image: classNames?.avatar?.image ?? assignedUserAvatarImage(),\n placeholder:\n classNames?.avatar?.placeholder ??\n assignedUserAvatarPlaceholder(),\n }}\n />\n }\n onRemove={onRemove}\n removeButtonLabel={removeButtonLabel}\n classNames={{\n removableItem: classNames?.assignedUser ?? assignedUser(),\n root: classNames?.root ?? assignedUserRoot(),\n section: classNames?.section ?? assignedUserSection(),\n content: classNames?.content ?? assignedUserContent(),\n buttonIcon: {\n buttonIcon:\n classNames?.buttonIcon?.buttonIcon ?? assignedUserButtonIcon(),\n root: classNames?.buttonIcon?.root ?? assignedUserButtonIconRoot(),\n icon: classNames?.buttonIcon?.icon ?? assignedUserButtonIconIcon(),\n iconRaw: {\n iconRaw:\n classNames?.buttonIcon?.iconRaw?.iconRaw ??\n assignedUserButtonIconIconRaw(),\n root:\n classNames?.buttonIcon?.iconRaw?.root ??\n assignedUserButtonIconIconRawRoot(),\n },\n },\n }}\n >\n <span className={classNames?.name ?? assignedUserName()}>{children}</span>\n </RemovableItem>\n );\n};\n"],"mappings":"glBA8CA,MAAa,GAAgB,CAC3B,OACA,YACA,YACA,WACA,oBAAoB,cACpB,WACA,gBAGE,EAAC,EAAD,CACE,UACE,EAAC,EAAD,CACQ,OACN,IAAK,EACL,IAAK,EACL,WAAY,CACV,OAAQ,GAAY,QAAQ,QAAU,GAAoB,CAC1D,KAAM,GAAY,QAAQ,MAAQ,GAAwB,CAC1D,MAAO,GAAY,QAAQ,OAAS,GAAyB,CAC7D,YACE,GAAY,QAAQ,aACpB,GAA+B,CAClC,CACD,CAAA,CAEM,WACS,oBACnB,WAAY,CACV,cAAe,GAAY,cAAgB,GAAc,CACzD,KAAM,GAAY,MAAQ,GAAkB,CAC5C,QAAS,GAAY,SAAW,GAAqB,CACrD,QAAS,GAAY,SAAW,GAAqB,CACrD,WAAY,CACV,WACE,GAAY,YAAY,YAAc,GAAwB,CAChE,KAAM,GAAY,YAAY,MAAQ,GAA4B,CAClE,KAAM,GAAY,YAAY,MAAQ,GAA4B,CAClE,QAAS,CACP,QACE,GAAY,YAAY,SAAS,SACjC,GAA+B,CACjC,KACE,GAAY,YAAY,SAAS,MACjC,GAAmC,CACtC,CACF,CACF,UAED,EAAC,OAAD,CAAM,UAAW,GAAY,MAAQ,GAAkB,CAAG,WAAgB,CAAA,CAC5D,CAAA"}
|