From f4134883eca2885d5595320eed50cf66aa331af5 Mon Sep 17 00:00:00 2001
From: Jose Manuel Serrano Amaut <a20122128@pucp.pe>
Date: Wed, 8 Mar 2023 20:19:45 -0500
Subject: [PATCH] [WIP]: Add file card demo page. Refactor container to fit
 appropialy with cards. Maybe new components will be required or just only
 refactor the ones that already exists

---
 .../file-card-demo/CodeJSFileCardBasic.jsx    |  4 +-
 .../CodeJSFileMosaicDarkMode.tsx              | 47 +++++------
 .../CodeJSFileMosaicImagePreview.tsx          |  4 +-
 .../CodeJSFileMosaicUploadStatus.jsx          | 66 +++++++--------
 .../CodeJSFileMosaicValidation.jsx            | 32 ++++----
 .../DemoFileMosaicUploadStatus.tsx            | 81 ++++++++++---------
 src/pages/demo/FileCardDemoPage.jsx           | 32 +++-----
 7 files changed, 128 insertions(+), 138 deletions(-)

diff --git a/src/components/demo-components/file-card-demo/CodeJSFileCardBasic.jsx b/src/components/demo-components/file-card-demo/CodeJSFileCardBasic.jsx
index d945844..80b8e73 100644
--- a/src/components/demo-components/file-card-demo/CodeJSFileCardBasic.jsx
+++ b/src/components/demo-components/file-card-demo/CodeJSFileCardBasic.jsx
@@ -33,7 +33,7 @@ const sampleFileProps = {
 };`;
 
 const completeCodeJS = (card) => `import * as React from "react";
-import { InputButton, FileMosaic } from "@files-ui/react";
+import { InputButton, FileCard } from "@files-ui/react";
 
 const sampleFileProps = {
   id: ":0:",
@@ -83,7 +83,7 @@ const sampleFileProps: ExtFile = {
   name: "file created from props.jsx",
 };`;
 const completeCodeTS = (card) => `import * as React from "react";
-import { InputButton, FileMosaic, ExtFile } from "@files-ui/react";
+import { InputButton, FileCard, ExtFile } from "@files-ui/react";
 
 const sampleFileProps:ExtFile = {
   id: ":0:",
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode.tsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode.tsx
index bdcbb48..d9e90d7 100644
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode.tsx
+++ b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicDarkMode.tsx
@@ -1,31 +1,32 @@
 import * as React from "react";
 import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
 
-const CodeJSFileMosaicDarkMode = () => {
+const CodeJSFileMosaicDarkMode = (props: { card?: boolean }) => {
+  const { card } = props;
   return (
     <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
+      codeCompleteJS={completeCodeJS(card)}
+      codeCompleteTS={completeCodeTS(card)}
       codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
       codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
+      codeSplittedJS={splittedCodeJS(card)}
+      codeSplittedTS={splittedCodeTS(card)}
     />
   );
 };
 export default CodeJSFileMosaicDarkMode;
 
-const splittedCodeJS = `<>
-  <FileMosaic {...sampleFileProps} info onDelete={removeFile} />
-  <FileMosaic {...sampleFileProps} info onDelete={removeFile} darkMode/>
+const splittedCodeJS = (card?: boolean) => `<>
+  <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info onDelete={removeFile} />
+  <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info onDelete={removeFile} darkMode/>
 </>`;
-const splittedCodeTS = `<>
-<FileMosaic {...sampleFileProps} info onDelete={removeFile} />
-<FileMosaic {...sampleFileProps} info onDelete={removeFile} darkMode/>
+const splittedCodeTS = (card?: boolean) => `<>
+<${card?"FileCard":"FileMosaic"} {...sampleFileProps} info onDelete={removeFile} />
+<${card?"FileCard":"FileMosaic"} {...sampleFileProps} info onDelete={removeFile} darkMode/>
 </>`;
 
-const completeCodeJS = `import * as React from "react";
-import { FileMosaic } from "@files-ui/react";
+const completeCodeJS = (card?: boolean) => `import * as React from "react";
+import { ${card?"FileCard":"FileMosaic"} } from "@files-ui/react";
 
 const sampleFileProps = {
   id: "fileId",
@@ -33,7 +34,7 @@ const sampleFileProps = {
   type: "text/plain",
   name: "file created from props.jsx",
 };
-const DemoFileMosaicDarkMode = () => {
+const Demo${card?"FileCard":"FileMosaic"}DarkMode = () => {
   const removeFile = (id) => {
     console.log("delete button clicked on file: " + id);
   };
@@ -48,7 +49,7 @@ const DemoFileMosaicDarkMode = () => {
           padding: "10px 0",
         }}
       >
-        <FileMosaic {...sampleFileProps} info onDelete={removeFile} />
+        <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info onDelete={removeFile} />
       </div>
       <div
         style={{
@@ -59,16 +60,16 @@ const DemoFileMosaicDarkMode = () => {
           padding: "10px 0",
         }}
       >
-        <FileMosaic {...sampleFileProps} info darkMode onDelete={removeFile} />
+        <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info darkMode onDelete={removeFile} />
       </div>
     </>
   );
 };
-export default DemoFileMosaicDarkMode;
+export default Demo${card?"FileCard":"FileMosaic"}DarkMode;
 `;
 
-const completeCodeTS = `import * as React from "react";
-import { ExtFile, FileMosaic } from "@files-ui/react";
+const completeCodeTS = (card?: boolean) => `import * as React from "react";
+import { ExtFile, ${card?"FileCard":"FileMosaic"} } from "@files-ui/react";
 
 const sampleFileProps: ExtFile = {
   id: "fileId",
@@ -76,7 +77,7 @@ const sampleFileProps: ExtFile = {
   type: "text/plain",
   name: "file created from props.jsx",
 };
-const DemoFileMosaicDarkMode = () => {
+const Demo${card?"FileCard":"FileMosaic"}DarkMode = () => {
   const removeFile = (id: string | number | undefined) => {
     console.log("delete button clicked on file: " + id);
   };
@@ -91,7 +92,7 @@ const DemoFileMosaicDarkMode = () => {
           padding: "10px 0",
         }}
       >
-        <FileMosaic {...sampleFileProps} info onDelete={removeFile} />
+        <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info onDelete={removeFile} />
       </div>
       <div
         style={{
@@ -102,10 +103,10 @@ const DemoFileMosaicDarkMode = () => {
           padding: "10px 0",
         }}
       >
-        <FileMosaic {...sampleFileProps} info darkMode onDelete={removeFile} />
+        <${card?"FileCard":"FileMosaic"} {...sampleFileProps} info darkMode onDelete={removeFile} />
       </div>
     </>
   );
 };
-export default DemoFileMosaicDarkMode;
+export default Demo${card?"FileCard":"FileMosaic"}DarkMode;
 `;
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview.tsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview.tsx
index 3af3061..4ea1437 100644
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview.tsx
+++ b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicImagePreview.tsx
@@ -35,7 +35,7 @@ const sampleFileProps = {
 };`;
 
 const completeCodeJS = (card:boolean)=>`import * as React from "react";
-import { InputButton, FileMosaic } from "@files-ui/react";
+import { InputButton, ${card?"FileCard":"FileMosaic"} } from "@files-ui/react";
 
 const sampleFileProps = {
     id: "fileId",
@@ -85,7 +85,7 @@ const sampleFileProps: ExtFile = {
   imageUrl:"https://cdn.wallpapersafari.com/0/95/1zms6H.jpg"
 };`;
 const completeCodeTS = (card:boolean)=>`import * as React from "react";
-import { InputButton, FileMosaic, ExtFile } from "@files-ui/react";
+import { InputButton, ${card?"FileCard":"FileMosaic"}, ExtFile } from "@files-ui/react";
 
 const sampleFileProps: ExtFile = {
     id: "fileId",
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus.jsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus.jsx
index 0ee9725..6daac51 100644
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus.jsx
+++ b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicUploadStatus.jsx
@@ -1,31 +1,31 @@
 import * as React from "react";
 import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
 
-const CodeJSFileMosaicUploadStatus = () => {
+const CodeJSFileMosaicUploadStatus = ({card}) => {
   return (
     <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
+      codeCompleteJS={completeCodeJS(card)}
+      codeCompleteTS={completeCodeTS(card)}
       codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
       codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
+      codeSplittedJS={splittedCodeJS(card)}
+      codeSplittedTS={splittedCodeTS(card)}
     />
   );
 };
 export default CodeJSFileMosaicUploadStatus;
 
-const splittedCodeJS = ``;
+const splittedCodeJS =(card)=> ``;
 
-const splittedCodeTS = ``;
+const splittedCodeTS =(card)=> ``;
 
-const completeCodeJS = `import * as React from "react";
+const completeCodeJS =(card)=> `import * as React from "react";
 import {
-  FileMosaic,
+  ${card?"FileCard":"FileMosaic"},
   useFakeProgress,
 } from "@files-ui/react";
 
-const DemoFileMosaicUploadStatus = () => {
+const Demo${card?"FileCard":"FileMosaic"}UploadStatus = () => {
   const progress = useFakeProgress();
 
   const [status1, setStatus1] = React.useState("uploading");
@@ -57,26 +57,26 @@ const DemoFileMosaicUploadStatus = () => {
   return (
     <>
       <FlexRowContainer>
-        <FileMosaic {...preparingFile} />
-        <FileMosaic {...preparingFile} onCancel={handleCancel} />
+        <${card?"FileCard":"FileMosaic"} {...preparingFile} />
+        <${card?"FileCard":"FileMosaic"} {...preparingFile} onCancel={handleCancel} />
       </FlexRowContainer>
 
       <FlexRowContainer>
-        <FileMosaic {...uploadingFile} />
-        <FileMosaic {...uploadingFile} progress={progress} />
-        <FileMosaic {...uploadingFile} onAbort={handleAbort} />
-        <FileMosaic {...uploadingFile} onAbort={handleAbort} progress={progress} />
+        <${card?"FileCard":"FileMosaic"} {...uploadingFile} />
+        <${card?"FileCard":"FileMosaic"} {...uploadingFile} progress={progress} />
+        <${card?"FileCard":"FileMosaic"} {...uploadingFile} onAbort={handleAbort} />
+        <${card?"FileCard":"FileMosaic"} {...uploadingFile} onAbort={handleAbort} progress={progress} />
       </FlexRowContainer>
 
       <FlexRowContainer>
-        <FileMosaic {...uploadResultFiles[0]} uploadStatus={status1} />
-        <FileMosaic {...uploadResultFiles[1]} uploadStatus={status2} />
-        <FileMosaic {...uploadResultFiles[2]} uploadStatus={status3} />
+        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[0]} uploadStatus={status1} />
+        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[1]} uploadStatus={status2} />
+        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[2]} uploadStatus={status3} />
       </FlexRowContainer>
     </>
   );
 };
-export default DemoFileMosaicUploadStatus;
+export default Demo${card?"FileCard":"FileMosaic"}UploadStatus;
 
 const FlexRowContainer = ({ children }) => {
   return (
@@ -142,15 +142,15 @@ const uploadResultFiles = [
   },
 ];`;
 
-const completeCodeTS = `import * as React from "react";
+const completeCodeTS =(card)=> `import * as React from "react";
 import {
-  FileMosaic,
+  ${card?"FileCard":"FileMosaic"},
   useFakeProgress,
   ExtFile,
   UPLOADSTATUS,
 } from "@files-ui/react";
 
-const DemoFileMosaicUploadStatus = () => {
+const Demo${card?"FileCard":"FileMosaic"}UploadStatus = () => {
   const progress = useFakeProgress();
 
   const [status1, setStatus1] = React.useState<UPLOADSTATUS>("uploading");
@@ -182,26 +182,26 @@ const DemoFileMosaicUploadStatus = () => {
   return (
     <>
       <FlexRowContainer>
-        <FileMosaic {...preparingFile} />
-        <FileMosaic {...preparingFile} onCancel={handleCancel} />
+        <${card?"FileCard":"FileMosaic"} {...preparingFile} />
+        <${card?"FileCard":"FileMosaic"} {...preparingFile} onCancel={handleCancel} />
       </FlexRowContainer>
 
       <FlexRowContainer>
-        <FileMosaic {...uploadingFile} />
-        <FileMosaic {...uploadingFile} progress={progress} />
-        <FileMosaic {...uploadingFile} onAbort={handleAbort} />
-        <FileMosaic {...uploadingFile} onAbort={handleAbort} progress={progress} />
+        <${card?"FileCard":"FileMosaic"} {...uploadingFile} />
+        <${card?"FileCard":"FileMosaic"} {...uploadingFile} progress={progress} />
+        <${card?"FileCard":"FileMosaic"} {...uploadingFile} onAbort={handleAbort} />
+        <${card?"FileCard":"FileMosaic"} {...uploadingFile} onAbort={handleAbort} progress={progress} />
       </FlexRowContainer>
 
       <FlexRowContainer>
-        <FileMosaic {...uploadResultFiles[0]} uploadStatus={status1} />
-        <FileMosaic {...uploadResultFiles[1]} uploadStatus={status2} />
-        <FileMosaic {...uploadResultFiles[2]} uploadStatus={status3} />
+        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[0]} uploadStatus={status1} />
+        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[1]} uploadStatus={status2} />
+        <${card?"FileCard":"FileMosaic"} {...uploadResultFiles[2]} uploadStatus={status3} />
       </FlexRowContainer>
     </>
   );
 };
-export default DemoFileMosaicUploadStatus;
+export default Demo${card?"FileCard":"FileMosaic"}UploadStatus;
 
 const FlexRowContainer = (props: { children: React.ReactNode }) => {
   return (
diff --git a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation.jsx b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation.jsx
index 435488c..3bd8a47 100644
--- a/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation.jsx
+++ b/src/components/demo-components/filemosaic-demo/CodeJSFileMosaicValidation.jsx
@@ -1,36 +1,35 @@
 import * as React from "react";
 import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
 
-const CodeJSFileMosaicValidation = () => {
+const CodeJSFileMosaicValidation = (card) => {
   return (
     <ShowDemoCode
-      codeCompleteJS={completeCodeJS}
-      codeCompleteTS={completeCodeTS}
+      codeCompleteJS={completeCodeJS(card)}
+      codeCompleteTS={completeCodeTS(card)}
       codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
       codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
-      codeSplittedJS={splittedCodeJS}
-      codeSplittedTS={splittedCodeTS}
+      codeSplittedJS={splittedCodeJS(card)}
+      codeSplittedTS={splittedCodeTS(card)}
     />
   );
 };
 export default CodeJSFileMosaicValidation;
 
-const splittedCodeJS = ``;
-const splittedCodeTS = ``;
+const splittedCodeJS = (card)=>``;
+const splittedCodeTS = (card)=>``;
 
-const completeCodeJS = `import * as React from "react";
-import { FileMosaic } from "../../../files-ui";
+const completeCodeJS = (card)=>`import * as React from "react";
+import { ${card?"FileCard":"FileMosaic"} } from "@files-ui/react";
 
-const DemoFileMosaicValidation = () => {
+export default function App() {
   return (
     <div style={{display:"flex", gap:"10px"}}>
       {sampleFilesProps.map((extFile) => (
-        <FileMosaic key={extFile.id} valid={extFile.valid} {...extFile} info/>
+        <${card?"FileCard":"FileMosaic"} key={extFile.id} valid={extFile.valid} {...extFile} info/>
       ))}
     </div>
   );
 };
-export default DemoFileMosaicValidation;
 
 const sampleFilesProps = [
   {
@@ -56,19 +55,18 @@ const sampleFilesProps = [
   },
 ];`;
 
-const completeCodeTS = `import * as React from "react";
-import { FileMosaic, ExtFile } from "../../../files-ui";
+const completeCodeTS = (card)=>`import * as React from "react";
+import { ${card?"FileCard":"FileMosaic"}, ExtFile } from "@files-ui/react";
 
-const DemoFileMosaicValidation = () => {
+export default function App() {
   return (
     <div style={{display:"flex", gap:"10px"}}>
       {sampleFilesProps.map((extFile: ExtFile) => (
-        <FileMosaic key={extFile.id} valid={extFile.valid} {...extFile} info/>
+        <${card?"FileCard":"FileMosaic"} key={extFile.id} valid={extFile.valid} {...extFile} info/>
       ))}
     </div>
   );
 };
-export default DemoFileMosaicValidation;
 
 const sampleFilesProps: ExtFile[] = [
   {
diff --git a/src/components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus.tsx b/src/components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus.tsx
index de2f6b1..2a3dcc0 100644
--- a/src/components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus.tsx
+++ b/src/components/demo-components/filemosaic-demo/DemoFileMosaicUploadStatus.tsx
@@ -6,8 +6,10 @@ import {
   UPLOADSTATUS,
   FileCard,
 } from "../../../files-ui";
+import TypeHighlight from "../../typeHighlight/TypeHighlight";
+import DemoContainerFileMosaic from "./DemoContainerFileMosaic";
 
-const DemoFileMosaicUploadStatus = (props:{card?:boolean}) => {
+const DemoFileMosaicUploadStatus = (props: { card?: boolean }) => {
   const progress = useFakeProgress();
 
   const [status1, setStatus1] = React.useState<UPLOADSTATUS>("uploading");
@@ -36,40 +38,40 @@ const DemoFileMosaicUploadStatus = (props:{card?:boolean}) => {
   const handleAbort = (id: string | number | undefined) => {
     console.log("Upload aborted in file: " + id);
   };
-  if(props.card)
-  return (
-<>
-      <FlexRowContainer card>
-        <FileCard {...preparingFile} />
-        <FileCard {...preparingFile} onCancel={handleCancel} />
-      </FlexRowContainer>
+  if (props.card)
+    return (
+      <>
+        <FlexRowContainer card title={"preparing stage"}>
+          <FileCard {...preparingFile} />
+          <FileCard {...preparingFile} onCancel={handleCancel} />
+        </FlexRowContainer>
 
-      <FlexRowContainer card>
-        <FileCard {...uploadingFile} />
-        <FileCard {...uploadingFile} progress={progress} />
-        <FileCard {...uploadingFile} onAbort={handleAbort} />
-        <FileCard
-          {...uploadingFile}
-          onAbort={handleAbort}
-          progress={progress}
-        />
-      </FlexRowContainer>
+        <FlexRowContainer card title={"uploading stage"}>
+          <FileCard {...uploadingFile} />
+          <FileCard {...uploadingFile} progress={progress} />
+          <FileCard {...uploadingFile} onAbort={handleAbort} />
+          <FileCard
+            {...uploadingFile}
+            onAbort={handleAbort}
+            progress={progress}
+          />
+        </FlexRowContainer>
 
-      <FlexRowContainer card>
-        <FileCard {...uploadResultFiles[0]} uploadStatus={status1} />
-        <FileCard {...uploadResultFiles[1]} uploadStatus={status2} />
-        <FileCard {...uploadResultFiles[2]} uploadStatus={status3} />
-      </FlexRowContainer>
-    </>
-  )
+        <FlexRowContainer card title={"upload result stage"}>
+          <FileCard {...uploadResultFiles[0]} uploadStatus={status1} />
+          <FileCard {...uploadResultFiles[1]} uploadStatus={status2} />
+          <FileCard {...uploadResultFiles[2]} uploadStatus={status3} />
+        </FlexRowContainer>
+      </>
+    );
   return (
     <>
-      <FlexRowContainer>
+      <FlexRowContainer title={"preparing stage"}>
         <FileMosaic {...preparingFile} />
         <FileMosaic {...preparingFile} onCancel={handleCancel} />
       </FlexRowContainer>
 
-      <FlexRowContainer>
+      <FlexRowContainer title={"uploading stage"}>
         <FileMosaic {...uploadingFile} />
         <FileMosaic {...uploadingFile} progress={progress} />
         <FileMosaic {...uploadingFile} onAbort={handleAbort} />
@@ -80,7 +82,7 @@ const DemoFileMosaicUploadStatus = (props:{card?:boolean}) => {
         />
       </FlexRowContainer>
 
-      <FlexRowContainer>
+      <FlexRowContainer title={"upload result stage"}>
         <FileMosaic {...uploadResultFiles[0]} uploadStatus={status1} />
         <FileMosaic {...uploadResultFiles[1]} uploadStatus={status2} />
         <FileMosaic {...uploadResultFiles[2]} uploadStatus={status3} />
@@ -90,19 +92,18 @@ const DemoFileMosaicUploadStatus = (props:{card?:boolean}) => {
 };
 export default DemoFileMosaicUploadStatus;
 
-const FlexRowContainer = (props: { children: React.ReactNode, card?:boolean }) => {
+const FlexRowContainer = (props: {
+  children: React.ReactNode;
+  card?: boolean;
+  title?:string
+}) => {
   return (
-    <div
-      style={{
-        display: "flex",
-        flexWrap: "wrap",
-        justifyContent: "space-evenly",
-        width: "100%",
-        flexDirection:props.card?"column":"row"
-      }}
-    >
-      {props.children}
-    </div>
+    <React.Fragment>
+      <TypeHighlight>{props.title}</TypeHighlight>
+      <DemoContainerFileMosaic card={props.card}>
+        {props.children}
+      </DemoContainerFileMosaic>
+    </React.Fragment>
   );
 };
 
diff --git a/src/pages/demo/FileCardDemoPage.jsx b/src/pages/demo/FileCardDemoPage.jsx
index 1e21a89..641e39c 100644
--- a/src/pages/demo/FileCardDemoPage.jsx
+++ b/src/pages/demo/FileCardDemoPage.jsx
@@ -65,7 +65,7 @@ const FileCardDemoPage = (props) => {
           <DemoContainerFileMosaic>
             <DemoFileCardBasic />
           </DemoContainerFileMosaic>
-          <CodeJSFileCardBasic card/>
+          <CodeJSFileCardBasic card />
 
           <Alert severity="info">
             <AlertTitle> FileInputButton </AlertTitle>
@@ -137,7 +137,8 @@ const FileCardDemoPage = (props) => {
             <DemoFileMosaicValidation card />
           </DemoContainerFileMosaic>
 
-          <CodeJSFileMosaicValidation card/>
+          <CodeJSFileMosaicValidation card />
+
           <Alert severity="info">
             Typically, <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> or{" "}
             <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> components set
@@ -176,27 +177,16 @@ const FileCardDemoPage = (props) => {
             the FileMosaic component.
           </DescParagraph>
 
-          <Paper
-            variant="outlined"
-            style={{
-              padding: "25px",
-              display: "flex",
-              alignItems: "center",
-              justifyContent: "center",
-              flexDirection: "row",
-              gap: "7px",
-              flexWrap: "wrap",
-            }}
-          >
+          <DemoContainerFileMosaic card>
             <DemoFileMosaicUploadStatus card />
-          </Paper>
+          </DemoContainerFileMosaic>
 
           <CodeJSFileMosaicUploadStatus card />
 
           <Alert severity="info">
-            As you can see, you have full control of the FileCard upload
-            props. You can take advantage of them to ake your own upload
-            function and show the user the progress.
+            As you can see, you have full control of the FileCard upload props.
+            You can take advantage of them to ake your own upload function and
+            show the user the progress.
             <br /> On the other hand, you can also leverage the capability of{" "}
             <CodeHighlight>{"<Dropzone/>"}</CodeHighlight> and{" "}
             <CodeHighlight>{"<FileInputButton/>"}</CodeHighlight> components
@@ -230,12 +220,12 @@ const FileCardDemoPage = (props) => {
           <Paper
             variant="outlined"
             style={{
-              //padding: "25px",
+              padding: "25px",
               display: "flex",
               alignItems: "center",
               justifyContent: "center",
-              width: "100%",
-              flexWrap:"wrap"
+              flexDirection: "column",
+              gap: "20px",
             }}
           >
             <DemoFileMosaicDarkMode card />
-- 
GitLab