+
-
(
-
- )}>
-
-
- {folders.map(([folder, isActive]) => (
-
onFolderToggle(folder)}>
-
{folder}
-
- {isActive && (
-
-
-
- )}
+
+ {folders.map(([folder, isActive]) => (
+
onFolderToggle(folder)}>
+ {folder}
+ {isActive && }
-
- ))}
+ ))}
+
-
+
+ >
);
}
diff --git a/src/components/Files/ImageIcon.tsx b/src/components/Files/ImageIcon.tsx
new file mode 100644
index 0000000..b83f769
--- /dev/null
+++ b/src/components/Files/ImageIcon.tsx
@@ -0,0 +1,15 @@
+export function ImageIcon() {
+ return (
+
+ );
+}
diff --git a/src/components/Files/InfoFileIcon.tsx b/src/components/Files/InfoFileIcon.tsx
new file mode 100644
index 0000000..9c22055
--- /dev/null
+++ b/src/components/Files/InfoFileIcon.tsx
@@ -0,0 +1,15 @@
+export function InfoFileIcon() {
+ return (
+
+ );
+}
diff --git a/src/components/Files/VideoIcon.tsx b/src/components/Files/VideoIcon.tsx
new file mode 100644
index 0000000..4ad16d2
--- /dev/null
+++ b/src/components/Files/VideoIcon.tsx
@@ -0,0 +1,15 @@
+export function VideoIcon() {
+ return (
+
+ );
+}
diff --git a/src/components/FilesIcon/FilesIcon.tsx b/src/components/FilesIcon/FilesIcon.tsx
new file mode 100644
index 0000000..34315cd
--- /dev/null
+++ b/src/components/FilesIcon/FilesIcon.tsx
@@ -0,0 +1,34 @@
+type Props = {
+ width?: number;
+};
+
+export function FilesIcon({ width = 16 }: Props) {
+ return (
+
+ );
+}
+
+export function FilesIconOutline() {
+ return (
+
+ );
+}
diff --git a/src/components/Menu/FilesIcon.tsx b/src/components/Menu/FilesIcon.tsx
deleted file mode 100644
index cf011f8..0000000
--- a/src/components/Menu/FilesIcon.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-export function FilesIcon() {
- return (
-
- );
-}
diff --git a/src/components/Menu/Menu.tsx b/src/components/Menu/Menu.tsx
index 72c4d9d..bba89c5 100644
--- a/src/components/Menu/Menu.tsx
+++ b/src/components/Menu/Menu.tsx
@@ -8,7 +8,7 @@ import { classnames } from "../../utils/classnames";
import { Link } from "@tanstack/react-router";
import { HomeIcon } from "./HomeIcon";
import { WalletIcon } from "./WalletIcon";
-import { FilesIcon } from "./FilesIcon";
+import { FilesIcon } from "../FilesIcon/FilesIcon";
import { NodesIcon } from "./NodesIcon";
import { AnalyticsIcon } from "./AnalyticsIcon";
import { DeviceIcon } from "./DeviceIcon";
diff --git a/src/routes/dashboard/files.css b/src/routes/dashboard/files.css
new file mode 100644
index 0000000..2bbaf15
--- /dev/null
+++ b/src/routes/dashboard/files.css
@@ -0,0 +1,17 @@
+.files-page {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 16px;
+
+ .files {
+ margin-bottom: 16px;
+ flex: 1 1 67%;
+ }
+
+ .column {
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ flex: 1 1 auto;
+ }
+}
diff --git a/src/routes/dashboard/files.tsx b/src/routes/dashboard/files.tsx
index 08c54f4..abe7b44 100644
--- a/src/routes/dashboard/files.tsx
+++ b/src/routes/dashboard/files.tsx
@@ -1,5 +1,30 @@
import { createFileRoute } from "@tanstack/react-router";
+import { Files } from "../../components/Files/Files";
+import "./files.css";
+import { ErrorBoundary } from "@sentry/react";
+import { ErrorPlaceholder } from "../../components/ErrorPlaceholder/ErrorPlaceholder";
+import { ManifestFetchCard } from "../../components/ManifestFetch/ManifestFetchCard";
+import { UploadCard } from "../../components/UploadCard/UploadCard";
+import { Download } from "../../components/Download/Download";
export const Route = createFileRoute("/dashboard/files")({
- component: () =>
Hello /dashboard/files!
,
+ component: () => (
+
+
+
+
+ (
+
+ )}>
+
+
+
+
+
+
+ ),
});
diff --git a/src/utils/files.ts b/src/utils/files.ts
index fdd43a4..22c0b07 100644
--- a/src/utils/files.ts
+++ b/src/utils/files.ts
@@ -13,6 +13,9 @@ export const Files = {
isImage(type: string | null) {
return type && type.startsWith("image");
},
+ isVideo(type: string | null) {
+ return type && type.startsWith("video");
+ },
type(mimetype: string | null) {
const [type] = mimetype?.split("/") || []
return type