- {currentDirectory?.getSubFolders(showHidden)?.map((folder, index) =>
-
- )}
- {currentDirectory?.getFiles(showHidden)?.map((file, index) =>
-
- )}
+
{
+ event.preventDefault();
+ windowsManager.openFile(file);
+ }}
+ onClickFolder={(event, folder) => {
+ changeDirectory(folder.linkedPath ?? folder.name);
+ }}
+ onContextMenuFile={onContextMenuFile}
+ onContextMenuFolder={onContextMenuFolder}
+ />
diff --git a/src/components/applications/file-explorer/FileExplorer.module.css b/src/components/applications/file-explorer/FileExplorer.module.css
index 1533be3..44c2b19 100644
--- a/src/components/applications/file-explorer/FileExplorer.module.css
+++ b/src/components/applications/file-explorer/FileExplorer.module.css
@@ -119,89 +119,4 @@
height: 100%;
padding: 0.5rem;
overflow: auto;
-}
-
-.File-button, .Folder-button {
- display: flex;
- gap: 0.5rem;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- width: calc(var(--scale) * 7.5);
- height: calc(var(--scale) * 7.5);
- padding: 0.5rem;
- background: none;
- border: none;
- border-radius: 0.5rem;
- outline: none;
- cursor: pointer;
- transition: background-color 100ms ease-in-out;
-}
-
-.File-button:hover, .Folder-button:hover,
-.File-button:focus-visible, .Folder-button:focus-visible {
- background-color: hsla(var(--background-color-a-hsl), 35%);
-}
-
-.File-button-preview {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100%;
- overflow: hidden;
-}
-
-.File-button-preview > * {
- width: 100%;
- height: 100%;
- object-fit: contain;
-}
-
-.File-button-preview > img {
- height: auto;
- max-height: 100%;
- border-radius: 0.5rem;
-}
-
-.File-button svg, .Folder-button > div {
- width: 50%;
- height: auto;
- aspect-ratio: 1;
-}
-
-.Folder-button > div > svg {
- width: 100%;
- height: 100%;
- aspect-ratio: 1;
-}
-
-.File-button p, .Folder-button p {
- max-width: 100%;
- margin: 0;
- word-wrap: break-word;
-}
-
-.Folder-button > div {
- position: relative;
-}
-
-.Folder-link-icon {
- position: absolute;
- display: flex;
- justify-content: flex-end;
- align-items: flex-end;
- top: 0;
- left: 0;
- width: 92.5%;
- height: 87.5%;
-}
-
-.Folder-link-icon svg {
- width: 55%;
- height: auto;
- aspect-ratio: 1;
-}
-
-.Folder-link-icon svg * {
- fill: var(--background-color-b);
}
\ No newline at end of file
diff --git a/src/components/applications/file-explorer/FilePreview.jsx b/src/components/applications/file-explorer/FilePreview.jsx
index 155440c..241e31c 100644
--- a/src/components/applications/file-explorer/FilePreview.jsx
+++ b/src/components/applications/file-explorer/FilePreview.jsx
@@ -1,6 +1,6 @@
import { faFile, faFileInvoice, faFileLines } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import styles from "./FileExplorer.module.css";
+import styles from "./FilePreview.module.css";
import { VirtualFile } from "../../../features/virtual-drive/virtualFile.js";
/**
diff --git a/src/components/applications/file-explorer/FilePreview.module.css b/src/components/applications/file-explorer/FilePreview.module.css
new file mode 100644
index 0000000..b2a92e9
--- /dev/null
+++ b/src/components/applications/file-explorer/FilePreview.module.css
@@ -0,0 +1,19 @@
+.File-button-preview {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100%;
+ overflow: hidden;
+}
+
+.File-button-preview > * {
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+}
+
+.File-button-preview > img {
+ height: auto;
+ max-height: 100%;
+ border-radius: 0.5rem;
+}
\ No newline at end of file
diff --git a/src/components/applications/file-explorer/FolderPreview.jsx b/src/components/applications/file-explorer/FolderPreview.jsx
index e86c825..0e8b1b5 100644
--- a/src/components/applications/file-explorer/FolderPreview.jsx
+++ b/src/components/applications/file-explorer/FolderPreview.jsx
@@ -1,6 +1,6 @@
import { faFolder, faLink } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import styles from "./FileExplorer.module.css";
+import styles from "./FolderPreview.module.css";
import { VirtualFolder } from "../../../features/virtual-drive/virtualFolder.js";
/**
diff --git a/src/components/applications/file-explorer/FolderPreview.module.css b/src/components/applications/file-explorer/FolderPreview.module.css
new file mode 100644
index 0000000..a27833b
--- /dev/null
+++ b/src/components/applications/file-explorer/FolderPreview.module.css
@@ -0,0 +1,20 @@
+.Folder-link-icon {
+ position: absolute;
+ display: flex;
+ justify-content: flex-end;
+ align-items: flex-end;
+ top: 0;
+ left: 0;
+ width: 92.5%;
+ height: 87.5%;
+}
+
+.Folder-link-icon svg {
+ width: 55%;
+ height: auto;
+ aspect-ratio: 1;
+}
+
+.Folder-link-icon svg * {
+ fill: var(--background-color-b);
+}
\ No newline at end of file
diff --git a/src/components/desktop/Desktop.jsx b/src/components/desktop/Desktop.jsx
index 8c5632d..93af1a9 100644
--- a/src/components/desktop/Desktop.jsx
+++ b/src/components/desktop/Desktop.jsx
@@ -9,12 +9,15 @@ import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"
import { useContextMenu } from "../../hooks/modals/contextMenu.js";
import { FALLBACK_WALLPAPER } from "../../constants/desktop.js";
import { reloadViewport } from "../../features/utils/browser.js";
+import { useVirtualRoot } from "../../hooks/virtual-drive/virtualRootContext.js";
+import { DirectoryList } from "../applications/file-explorer/DirectoryList.jsx";
export const Desktop = memo(() => {
const settingsManager = useSettingsManager();
const [wallpaper, setWallpaper] = useState(null);
const [modalsManager, modals] = useModals();
const windowsManager = useWindowsManager();
+ const virtualRoot = useVirtualRoot();
const { onContextMenu } = useContextMenu({
modalsManager,
options: {
@@ -31,6 +34,8 @@ export const Desktop = memo(() => {
})();
}, [settingsManager]);
+ const directory = virtualRoot.navigate("~/Desktop");
+
const onError = () => {
const settings = settingsManager.get(SettingsManager.VIRTUAL_PATHS.desktop);
settings.set("wallpaper", FALLBACK_WALLPAPER);
@@ -41,11 +46,25 @@ export const Desktop = memo(() => {
className={styles.Container}
onContextMenu={onContextMenu}
>
+