diff --git a/README.md b/README.md index e899934..ab46f9a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ProzillaOS is a web-based operating system inspired by Ubuntu Linux and Windows **Live demo: [os.prozilla.dev](https://os.prozilla.dev/)** - + > Please note that ProzillaOS is a WIP and far from complete. Many additional features will be added in the near future. @@ -30,7 +30,7 @@ ProzillaOS was designed in Figma by Prozilla. You can view the design file [here ### Preview - + ## Support ProzillaOS diff --git a/package.json b/package.json index e0433b6..f1436ad 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "react-app/jest" ], "plugins": [ + "react", "jsdoc" ], "rules": { @@ -55,6 +56,7 @@ "double" ], "default-case": "off", + "no-multi-comp": "off", "jsdoc/no-undefined-types": "warn", "jsdoc/require-param": "warn", "jsdoc/check-tag-names": "warn", diff --git a/public/config/desktop.xml b/public/config/desktop.xml index b24befb..699a329 100644 --- a/public/config/desktop.xml +++ b/public/config/desktop.xml @@ -1,4 +1,4 @@ - /media/wallpapers/Wallpaper6.png + /media/wallpapers/wallpaper-6.png \ No newline at end of file diff --git a/public/documents/info.md b/public/documents/info.md index 9810885..848e8b5 100644 --- a/public/documents/info.md +++ b/public/documents/info.md @@ -1,4 +1,4 @@ -Banner with ProzillaOS' name and logo +Banner with ProzillaOS' name and logo # Info diff --git a/public/index.html b/public/index.html index 8a37bcd..f9406d9 100644 --- a/public/index.html +++ b/public/index.html @@ -19,14 +19,14 @@ - + - - - - - + + + + + diff --git a/public/media/Banner.png b/public/media/Banner.png index 96c52f8..6f480b5 100644 Binary files a/public/media/Banner.png and b/public/media/Banner.png differ diff --git a/public/media/Banner2.png b/public/media/Banner2.png deleted file mode 100644 index 6f480b5..0000000 Binary files a/public/media/Banner2.png and /dev/null differ diff --git a/public/media/fonts/Roboto_Mono/LICENSE.txt b/public/media/fonts/roboto-mono/LICENSE.txt similarity index 100% rename from public/media/fonts/Roboto_Mono/LICENSE.txt rename to public/media/fonts/roboto-mono/LICENSE.txt diff --git a/public/media/fonts/Roboto_Mono/RobotoMono-Italic-VariableFont_wght.ttf b/public/media/fonts/roboto-mono/RobotoMono-Italic-VariableFont_wght.ttf similarity index 100% rename from public/media/fonts/Roboto_Mono/RobotoMono-Italic-VariableFont_wght.ttf rename to public/media/fonts/roboto-mono/RobotoMono-Italic-VariableFont_wght.ttf diff --git a/public/media/fonts/Roboto_Mono/RobotoMono-VariableFont_wght.ttf b/public/media/fonts/roboto-mono/RobotoMono-VariableFont_wght.ttf similarity index 100% rename from public/media/fonts/Roboto_Mono/RobotoMono-VariableFont_wght.ttf rename to public/media/fonts/roboto-mono/RobotoMono-VariableFont_wght.ttf diff --git a/public/media/icons/close.svg b/public/media/icons/close.svg deleted file mode 100644 index edf38b5..0000000 --- a/public/media/icons/close.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/media/icons/maximize.svg b/public/media/icons/maximize.svg deleted file mode 100644 index aeb1b0d..0000000 --- a/public/media/icons/maximize.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/media/icons/minimize.svg b/public/media/icons/minimize.svg deleted file mode 100644 index 266ab63..0000000 --- a/public/media/icons/minimize.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/media/icons/search.svg b/public/media/icons/search.svg deleted file mode 100644 index 645909e..0000000 --- a/public/media/icons/search.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/media/screenshots/Screenshot2.png b/public/media/screenshots/Screenshot2.png deleted file mode 100644 index 46d77e8..0000000 Binary files a/public/media/screenshots/Screenshot2.png and /dev/null differ diff --git a/public/media/screenshots/Screenshot3.png b/public/media/screenshots/Screenshot3.png deleted file mode 100644 index 5576261..0000000 Binary files a/public/media/screenshots/Screenshot3.png and /dev/null differ diff --git a/public/media/screenshots/Screenshot1.png b/public/media/screenshots/screenshot-1.png similarity index 100% rename from public/media/screenshots/Screenshot1.png rename to public/media/screenshots/screenshot-1.png diff --git a/public/media/wallpapers/Wallpaper1.png b/public/media/wallpapers/wallpaper-1.png similarity index 100% rename from public/media/wallpapers/Wallpaper1.png rename to public/media/wallpapers/wallpaper-1.png diff --git a/public/media/wallpapers/Wallpaper2.png b/public/media/wallpapers/wallpaper-2.png similarity index 100% rename from public/media/wallpapers/Wallpaper2.png rename to public/media/wallpapers/wallpaper-2.png diff --git a/public/media/wallpapers/Wallpaper3.png b/public/media/wallpapers/wallpaper-3.png similarity index 100% rename from public/media/wallpapers/Wallpaper3.png rename to public/media/wallpapers/wallpaper-3.png diff --git a/public/media/wallpapers/Wallpaper4.png b/public/media/wallpapers/wallpaper-4.png similarity index 100% rename from public/media/wallpapers/Wallpaper4.png rename to public/media/wallpapers/wallpaper-4.png diff --git a/public/media/wallpapers/Wallpaper5.png b/public/media/wallpapers/wallpaper-5.png similarity index 100% rename from public/media/wallpapers/Wallpaper5.png rename to public/media/wallpapers/wallpaper-5.png diff --git a/public/media/wallpapers/Wallpaper6.png b/public/media/wallpapers/wallpaper-6.png similarity index 100% rename from public/media/wallpapers/Wallpaper6.png rename to public/media/wallpapers/wallpaper-6.png diff --git a/public/media/wallpapers/Wallpaper7.png b/public/media/wallpapers/wallpaper-7.png similarity index 100% rename from public/media/wallpapers/Wallpaper7.png rename to public/media/wallpapers/wallpaper-7.png diff --git a/public/media/wallpapers/Wallpaper8.png b/public/media/wallpapers/wallpaper-8.png similarity index 100% rename from public/media/wallpapers/Wallpaper8.png rename to public/media/wallpapers/wallpaper-8.png diff --git a/src/App.jsx b/src/App.jsx index 7a5cb83..c91b140 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,10 +1,10 @@ import styles from "./App.module.css"; import { Taskbar } from "./components/task-bar/TaskBar.jsx"; -import { WindowsManagerProvider } from "./hooks/windows/WindowsManagerContext.js"; +import { WindowsManagerProvider } from "./hooks/windows/windowsManagerContext.js"; import { WindowsView } from "./components/windows/WindowsView.jsx"; -import { VirtualRootProvider } from "./hooks/virtual-drive/VirtualRootContext.js"; +import { VirtualRootProvider } from "./hooks/virtual-drive/virtualRootContext.js"; import { Desktop } from "./components/desktop/Desktop.jsx"; -import { SettingsManagerProvider } from "./hooks/settings/SettingsContext.js"; +import { SettingsManagerProvider } from "./hooks/settings/settingsManagerContext.js"; import { ModalsView } from "./components/modals/ModalsView.jsx"; import { useEffect } from "react"; diff --git a/src/components/applications/file-explorer/FileExplorer.jsx b/src/components/applications/file-explorer/FileExplorer.jsx index 9befb74..4c74d44 100644 --- a/src/components/applications/file-explorer/FileExplorer.jsx +++ b/src/components/applications/file-explorer/FileExplorer.jsx @@ -1,13 +1,13 @@ import { useState } from "react"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/VirtualRootContext.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; import styles from "./FileExplorer.module.css"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faArrowUp, faCaretLeft, faCaretRight, faCog, faDesktop, faFile, faFileLines, faFolder, faHouse, faImage, faPlus, faSearch } from "@fortawesome/free-solid-svg-icons"; -import { VirtualFile } from "../../../features/virtual-drive/virtual-file.js"; -import { useWindowsManager } from "../../../hooks/windows/WindowsManagerContext.js"; +import { VirtualFile } from "../../../features/virtual-drive/virtualFile.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; import utilStyles from "../../../styles/utils.module.css"; // import { useContextMenu } from "../../../hooks/modals/ContextMenu.js"; -import { useModals } from "../../../hooks/modals/Modals.js"; +import { useModals } from "../../../hooks/modals/modals.js"; import { ModalsView } from "../../modals/ModalsView.jsx"; /** diff --git a/src/components/applications/media-viewer/MediaViewer.jsx b/src/components/applications/media-viewer/MediaViewer.jsx index 58b3a5e..0092645 100644 --- a/src/components/applications/media-viewer/MediaViewer.jsx +++ b/src/components/applications/media-viewer/MediaViewer.jsx @@ -1,7 +1,7 @@ import { useEffect } from "react"; -import { VirtualFile } from "../../../features/virtual-drive/virtual-file.js"; -import { useWindowsManager } from "../../../hooks/windows/WindowsManagerContext.js"; +import { VirtualFile } from "../../../features/virtual-drive/virtualFile.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; import styles from "./MediaViewer.module.css"; /** diff --git a/src/components/applications/settings/AboutSettings.jsx b/src/components/applications/settings/AboutSettings.jsx index ece35ff..22378bd 100644 --- a/src/components/applications/settings/AboutSettings.jsx +++ b/src/components/applications/settings/AboutSettings.jsx @@ -2,8 +2,8 @@ import { Button } from "../../utils/Button.jsx"; import styles from "./Settings.module.css"; import utilStyles from "../../../styles/utils.module.css"; import Vector2 from "../../../features/math/vector2.js"; -import { useWindowsManager } from "../../../hooks/windows/WindowsManagerContext.js"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/VirtualRootContext.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; export function AboutSettings() { const windowsManager = useWindowsManager(); diff --git a/src/components/applications/settings/AppearanceSettings.jsx b/src/components/applications/settings/AppearanceSettings.jsx index be6fa9f..bca3f4a 100644 --- a/src/components/applications/settings/AppearanceSettings.jsx +++ b/src/components/applications/settings/AppearanceSettings.jsx @@ -1,8 +1,8 @@ import { useEffect, useState } from "react"; -import { SettingsManager } from "../../../features/settings/settings.js"; +import { SettingsManager } from "../../../features/settings/settingsManager.js"; import styles from "./Settings.module.css"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/VirtualRootContext.js"; -import { useSettingsManager } from "../../../hooks/settings/SettingsContext.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; +import { useSettingsManager } from "../../../hooks/settings/settingsManagerContext.js"; export function AppearanceSettings() { const virtualRoot = useVirtualRoot(); diff --git a/src/components/applications/settings/StorageSettings.jsx b/src/components/applications/settings/StorageSettings.jsx index ad04296..83277e9 100644 --- a/src/components/applications/settings/StorageSettings.jsx +++ b/src/components/applications/settings/StorageSettings.jsx @@ -3,8 +3,8 @@ import utilStyles from "../../../styles/utils.module.css"; import { round } from "../../../features/math/round.js"; import { ProgressBar } from "../../utils/ProgressBar.jsx"; import { Button } from "../../utils/Button.jsx"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/VirtualRootContext.js"; -import { StorageManager } from "../../../features/storage/storage.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; +import { StorageManager } from "../../../features/storage/storageManager.js"; export function StorageTab() { const virtualRoot = useVirtualRoot(); diff --git a/src/components/applications/terminal/Terminal.jsx b/src/components/applications/terminal/Terminal.jsx index 5a5d360..fac2cb9 100644 --- a/src/components/applications/terminal/Terminal.jsx +++ b/src/components/applications/terminal/Terminal.jsx @@ -1,6 +1,6 @@ import { useEffect, useRef, useState } from "react"; import styles from "./Terminal.module.css"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/VirtualRootContext.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; import { Command } from "../../../features/applications/terminal/commands.js"; import { clamp } from "../../../features/math/clamp.js"; diff --git a/src/components/applications/text-editor/TextEditor.jsx b/src/components/applications/text-editor/TextEditor.jsx index a17d4e8..98929b4 100644 --- a/src/components/applications/text-editor/TextEditor.jsx +++ b/src/components/applications/text-editor/TextEditor.jsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from "react"; -import { VirtualFile } from "../../../features/virtual-drive/virtual-file.js"; +import { VirtualFile } from "../../../features/virtual-drive/virtualFile.js"; import styles from "./TextEditor.module.css"; import { HeaderMenu } from "../.common/HeaderMenu.jsx"; import Markdown from "markdown-to-jsx"; diff --git a/src/components/desktop/Desktop.jsx b/src/components/desktop/Desktop.jsx index 2ee0278..4debd82 100644 --- a/src/components/desktop/Desktop.jsx +++ b/src/components/desktop/Desktop.jsx @@ -1,12 +1,12 @@ import { useState } from "react"; -import { SettingsManager } from "../../features/settings/settings.js"; -import { useSettingsManager } from "../../hooks/settings/SettingsContext.js"; +import { SettingsManager } from "../../features/settings/settingsManager.js"; +import { useSettingsManager } from "../../hooks/settings/settingsManagerContext.js"; import styles from "./Desktop.module.css"; import { useEffect } from "react"; -import { useModals } from "../../hooks/modals/Modals.js"; +import { useModals } from "../../hooks/modals/modals.js"; import { ModalsView } from "../modals/ModalsView.jsx"; -import { useWindowsManager } from "../../hooks/windows/WindowsManagerContext.js"; -import { useContextMenu } from "../../hooks/modals/ContextMenu.js"; +import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"; +import { useContextMenu } from "../../hooks/modals/contextMenu.js"; export function Desktop() { const settingsManager = useSettingsManager(); diff --git a/src/components/task-bar/TaskBar.jsx b/src/components/task-bar/TaskBar.jsx index 8bd1bb3..3555d83 100644 --- a/src/components/task-bar/TaskBar.jsx +++ b/src/components/task-bar/TaskBar.jsx @@ -3,8 +3,8 @@ import styles from "./TaskBar.module.css"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faSearch } from "@fortawesome/free-solid-svg-icons"; import ApplicationsManager from "../../features/applications/applications.js"; -import { useWindows } from "../../hooks/windows/WindowsContext.js"; -import { useWindowsManager } from "../../hooks/windows/WindowsManagerContext.js"; +import { useWindows } from "../../hooks/windows/windowsContext.js"; +import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"; import { ReactSVG } from "react-svg"; import Application from "../../features/applications/application.js"; import { HomeMenu } from "./menus/HomeMenu.jsx"; diff --git a/src/components/task-bar/menus/HomeMenu.jsx b/src/components/task-bar/menus/HomeMenu.jsx index 48506fd..60041dc 100644 --- a/src/components/task-bar/menus/HomeMenu.jsx +++ b/src/components/task-bar/menus/HomeMenu.jsx @@ -2,12 +2,12 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import styles from "./HomeMenu.module.css"; import appStyles from "./AppList.module.css"; import { faCircleInfo, faFileLines, faGear, faImage, faPowerOff } from "@fortawesome/free-solid-svg-icons"; -import { useWindowsManager } from "../../../hooks/windows/WindowsManagerContext.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; import ApplicationsManager from "../../../features/applications/applications.js"; import { ReactSVG } from "react-svg"; import { closeTab } from "../../../features/utils/browser.js"; import { useKeyboardListener } from "../../../hooks/utils/keyboard.js"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/VirtualRootContext.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; import { useEffect, useState } from "react"; import Vector2 from "../../../features/math/vector2.js"; import utilStyles from "../../../styles/utils.module.css"; diff --git a/src/components/task-bar/menus/SearchMenu.jsx b/src/components/task-bar/menus/SearchMenu.jsx index fec7f2b..c7199f3 100644 --- a/src/components/task-bar/menus/SearchMenu.jsx +++ b/src/components/task-bar/menus/SearchMenu.jsx @@ -1,7 +1,7 @@ import styles from "./SearchMenu.module.css"; import appStyles from "./AppList.module.css"; import ApplicationsManager from "../../../features/applications/applications.js"; -import { useWindowsManager } from "../../../hooks/windows/WindowsManagerContext.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; import { ReactSVG } from "react-svg"; import { useEffect } from "react"; import { useState } from "react"; diff --git a/src/components/windows/WindowView.jsx b/src/components/windows/WindowView.jsx index 88240b9..a61d8a0 100644 --- a/src/components/windows/WindowView.jsx +++ b/src/components/windows/WindowView.jsx @@ -2,16 +2,16 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import styles from "./WindowView.module.css"; import { faMinus, faWindowMaximize as fasWindowMaximize, faXmark } from "@fortawesome/free-solid-svg-icons"; import { ReactSVG } from "react-svg"; -import { useWindowsManager } from "../../hooks/windows/WindowsManagerContext.js"; +import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"; import Draggable from "react-draggable"; import { memo, useEffect, useRef, useState } from "react"; import Application from "../../features/applications/application.js"; import Vector2 from "../../features/math/vector2.js"; import { faWindowMaximize } from "@fortawesome/free-regular-svg-icons"; import utilStyles from "../../styles/utils.module.css"; -import { useModals } from "../../hooks/modals/Modals.js"; +import { useModals } from "../../hooks/modals/modals.js"; import { ModalsView } from "../modals/ModalsView.jsx"; -import { useContextMenu } from "../../hooks/modals/ContextMenu.js"; +import { useContextMenu } from "../../hooks/modals/contextMenu.js"; /** * @param {object} props diff --git a/src/components/windows/WindowsView.jsx b/src/components/windows/WindowsView.jsx index 0cdbcf8..2858e27 100644 --- a/src/components/windows/WindowsView.jsx +++ b/src/components/windows/WindowsView.jsx @@ -1,5 +1,5 @@ -import { useWindows } from "../../hooks/windows/WindowsContext.js"; -import { useWindowsManager } from "../../hooks/windows/WindowsManagerContext.js"; +import { useWindows } from "../../hooks/windows/windowsContext.js"; +import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"; import { useEffect, useState } from "react"; import { WindowView } from "./WindowView.jsx"; diff --git a/src/constants/branding.js b/src/constants/branding.js new file mode 100644 index 0000000..2bb43cf --- /dev/null +++ b/src/constants/branding.js @@ -0,0 +1,18 @@ +export const NAME = "ProzillaOS"; + +export const ASCII_LOGO = ` + :. + -==. + .=====: + ---::..:=======-. + :===+=----------::.. + =+=---------------:.. + --------------------:. + .:-+=----*###*--*####=---. + :==+----#%+-+%#-##%*+----:. + .=----#%+-+%#-*+-%#+---:. + ==----*###*--*###*----. + ==+-------------------:. + ...::---------------:. + .::---------::.. + ....::... `; \ No newline at end of file diff --git a/src/constants/virtualDrive.js b/src/constants/virtualDrive.js new file mode 100644 index 0000000..ad46396 --- /dev/null +++ b/src/constants/virtualDrive.js @@ -0,0 +1 @@ +export const WALLPAPER_COUNT = 8; \ No newline at end of file diff --git a/src/features/applications/terminal/commands.js b/src/features/applications/terminal/commands.js index f2e48a2..5259dc7 100644 --- a/src/features/applications/terminal/commands.js +++ b/src/features/applications/terminal/commands.js @@ -1,24 +1,8 @@ +import { ASCII_LOGO } from "../../../constants/branding.js"; import { START_DATE } from "../../../index.js"; import { formatRelativeTime } from "../../utils/date.js"; import ApplicationsManager from "../applications.js"; -export const ASCII_LOGO = ` - :. - -==. - .=====: - ---::..:=======-. - :===+=----------::.. - =+=---------------:.. - --------------------:. - .:-+=----*###*--*####=---. - :==+----#%+-+%#-##%*+----:. - .=----#%+-+%#-*+-%#+---:. - ==----*###*--*###*----. - ==+-------------------:. - ...::---------------:. - .::---------::.. - ....::... `; - export class Command { /** * @param {string} name diff --git a/src/features/settings/settings.js b/src/features/settings/settings.js index c708824..c6c87ca 100644 --- a/src/features/settings/settings.js +++ b/src/features/settings/settings.js @@ -1,7 +1,5 @@ - -import { VirtualFile } from "../virtual-drive/virtual-file.js"; - -import { VirtualRoot } from "../virtual-drive/virtual-root.js"; +import { VirtualFile } from "../virtual-drive/virtualFile.js"; +import { VirtualRoot } from "../virtual-drive/virtualRoot.js"; export class Settings { xmlDoc = null; @@ -119,42 +117,4 @@ export class Settings { await this.write(); } -} - -export class SettingsManager { - /** - * @type {Object} - */ - static VIRTUAL_PATHS = { - "desktop": "~/.config/desktop.xml" - }; - - /** - * @type {Object} - */ - #pathToSettings = {}; - - /** - * @type {VirtualRoot} - */ - #virtualRoot = null; - - /** - * @param {VirtualRoot} virtualRoot - */ - constructor(virtualRoot) { - this.#virtualRoot = virtualRoot; - - Object.values(SettingsManager.VIRTUAL_PATHS).forEach((path) => { - this.#pathToSettings[path] = new Settings(this.#virtualRoot, path); - }); - } - - /** - * @param {string} path - * @returns {Settings} - */ - get(path) { - return this.#pathToSettings[path]; - } } \ No newline at end of file diff --git a/src/features/settings/settingsManager.js b/src/features/settings/settingsManager.js new file mode 100644 index 0000000..12f335d --- /dev/null +++ b/src/features/settings/settingsManager.js @@ -0,0 +1,40 @@ +import { VirtualRoot } from "../virtual-drive/virtualRoot.js"; +import { Settings } from "./settings.js"; + +export class SettingsManager { + /** + * @type {Object} + */ + static VIRTUAL_PATHS = { + "desktop": "~/.config/desktop.xml" + }; + + /** + * @type {Object} + */ + #pathToSettings = {}; + + /** + * @type {VirtualRoot} + */ + #virtualRoot = null; + + /** + * @param {VirtualRoot} virtualRoot + */ + constructor(virtualRoot) { + this.#virtualRoot = virtualRoot; + + Object.values(SettingsManager.VIRTUAL_PATHS).forEach((path) => { + this.#pathToSettings[path] = new Settings(this.#virtualRoot, path); + }); + } + + /** + * @param {string} path + * @returns {Settings} + */ + get(path) { + return this.#pathToSettings[path]; + } +} \ No newline at end of file diff --git a/src/features/storage/storage.js b/src/features/storage/storageManager.js similarity index 100% rename from src/features/storage/storage.js rename to src/features/storage/storageManager.js diff --git a/src/features/virtual-drive/virtual-base.js b/src/features/virtual-drive/virtualBase.js similarity index 96% rename from src/features/virtual-drive/virtual-base.js rename to src/features/virtual-drive/virtualBase.js index 6bc5f9a..910f070 100644 --- a/src/features/virtual-drive/virtual-base.js +++ b/src/features/virtual-drive/virtualBase.js @@ -1,6 +1,6 @@ import { EventEmitter } from "../utils/events.js"; -import { VirtualRoot } from "./virtual-root.js"; +import { VirtualRoot } from "./virtualRoot.js"; export class VirtualBase extends EventEmitter { /** diff --git a/src/features/virtual-drive/virtual-file.js b/src/features/virtual-drive/virtualFile.js similarity index 97% rename from src/features/virtual-drive/virtual-file.js rename to src/features/virtual-drive/virtualFile.js index 1409057..6830b13 100644 --- a/src/features/virtual-drive/virtual-file.js +++ b/src/features/virtual-drive/virtualFile.js @@ -1,4 +1,4 @@ -import { VirtualBase } from "./virtual-base.js"; +import { VirtualBase } from "./virtualBase.js"; /** * A virtual file that can be stored inside a folder diff --git a/src/features/virtual-drive/virtual-folder.js b/src/features/virtual-drive/virtualFolder.js similarity index 98% rename from src/features/virtual-drive/virtual-folder.js rename to src/features/virtual-drive/virtualFolder.js index db7565d..f4bf942 100644 --- a/src/features/virtual-drive/virtual-folder.js +++ b/src/features/virtual-drive/virtualFolder.js @@ -1,6 +1,6 @@ import { removeFromArray } from "../utils/array.js"; -import { VirtualBase } from "./virtual-base.js"; -import { VirtualFile } from "./virtual-file.js"; +import { VirtualBase } from "./virtualBase.js"; +import { VirtualFile } from "./virtualFile.js"; /** * A virtual folder that can contains files and sub-folders diff --git a/src/features/virtual-drive/virtual-root.js b/src/features/virtual-drive/virtualRoot.js similarity index 92% rename from src/features/virtual-drive/virtual-root.js rename to src/features/virtual-drive/virtualRoot.js index 832a042..e673a42 100644 --- a/src/features/virtual-drive/virtual-root.js +++ b/src/features/virtual-drive/virtualRoot.js @@ -1,8 +1,7 @@ -import { StorageManager } from "../storage/storage.js"; -import { VirtualFile } from "./virtual-file.js"; -import { VirtualFolder } from "./virtual-folder.js"; - -export const WALLPAPER_COUNT = 8; +import { WALLPAPER_COUNT } from "../../constants/virtualDrive.js"; +import { StorageManager } from "../storage/storageManager.js"; +import { VirtualFile } from "./virtualFile.js"; +import { VirtualFolder } from "./virtualFolder.js"; /** * A virtual folder that serves as the root folder @@ -55,7 +54,7 @@ export class VirtualRoot extends VirtualFolder { .createFolder("Images", (folder) => { for (let i = 0; i < WALLPAPER_COUNT; i++) { folder.createFile(`Wallpaper${i + 1}`, "png", (file) => { - file.setSource(`/media/wallpapers/Wallpaper${i + 1}.png`); + file.setSource(`/media/wallpapers/wallpaper-${i + 1}.png`); }); } }) @@ -172,7 +171,7 @@ export class VirtualRoot extends VirtualFolder { /** * Adds a shortcut to a file or folder * @param {string} name - * @param {VirtualFile|VirtualFolder} destination + * @param {VirtualFile | VirtualFolder} destination * @returns {VirtualRoot} */ addShortcut(name, destination) { diff --git a/src/features/windows/windows.js b/src/features/windows/windowsManager.js similarity index 97% rename from src/features/windows/windows.js rename to src/features/windows/windowsManager.js index 234a3c3..e379298 100644 --- a/src/features/windows/windows.js +++ b/src/features/windows/windowsManager.js @@ -1,7 +1,7 @@ import ApplicationsManager from "../applications/applications.js"; import { randomRange } from "../math/random.js"; import Vector2 from "../math/vector2.js"; -import { VirtualFile } from "../virtual-drive/virtual-file.js"; +import { VirtualFile } from "../virtual-drive/virtualFile.js"; export const SCREEN_MARGIN = 32; export const TASKBAR_HEIGHT = 48; diff --git a/src/hooks/settings/SettingsContext.js b/src/hooks/settings/settingsManagerContext.js similarity index 90% rename from src/hooks/settings/SettingsContext.js rename to src/hooks/settings/settingsManagerContext.js index 126bd7a..47dadb2 100644 --- a/src/hooks/settings/SettingsContext.js +++ b/src/hooks/settings/settingsManagerContext.js @@ -1,6 +1,6 @@ import { createContext, useContext } from "react"; -import { SettingsManager } from "../../features/settings/settings.js"; -import { useVirtualRoot } from "../virtual-drive/VirtualRootContext.js"; +import { SettingsManager } from "../../features/settings/settingsManager.js"; +import { useVirtualRoot } from "../virtual-drive/virtualRootContext.js"; const SettingsContext = createContext(); diff --git a/src/hooks/virtual-drive/VirtualRootContext.js b/src/hooks/virtual-drive/VirtualRootContext.js index 55ed5bf..3ab354b 100644 --- a/src/hooks/virtual-drive/VirtualRootContext.js +++ b/src/hooks/virtual-drive/VirtualRootContext.js @@ -1,5 +1,5 @@ import { createContext, useContext } from "react"; -import { VirtualRoot } from "../../features/virtual-drive/virtual-root.js"; +import { VirtualRoot } from "../../features/virtual-drive/virtualRoot.js"; const VirtualRootContext = createContext(); diff --git a/src/hooks/windows/WindowsManagerContext.js b/src/hooks/windows/WindowsManagerContext.js index 48325c6..bf746c4 100644 --- a/src/hooks/windows/WindowsManagerContext.js +++ b/src/hooks/windows/WindowsManagerContext.js @@ -1,6 +1,6 @@ import { createContext, useContext } from "react"; -import WindowsManager from "../../features/windows/windows.js"; -import { WindowsProvider } from "./WindowsContext.js"; +import WindowsManager from "../../features/windows/windowsManager.js"; +import { WindowsProvider } from "./windowsContext.js"; const WindowsManagerContext = createContext(); diff --git a/src/index.js b/src/index.js index 80f46eb..72bcc31 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,7 @@ import ReactDOM from "react-dom/client"; import "./styles/global.css"; import App from "./App"; import reportWebVitals from "./reportWebVitals"; -import { ASCII_LOGO } from "./features/applications/terminal/commands.js"; +import { ASCII_LOGO } from "./constants/branding.js"; export const START_DATE = new Date(); diff --git a/src/styles/global/fonts.css b/src/styles/global/fonts.css index be0ead5..737477b 100644 --- a/src/styles/global/fonts.css +++ b/src/styles/global/fonts.css @@ -7,62 +7,62 @@ @font-face { font-family: "Poppins"; - src: url("/public/media/fonts/Poppins/Poppins-Thin.ttf"); + src: url("/public/media/fonts/poppins/Poppins-Thin.ttf"); font-weight: 100; font-display: swap; } @font-face { font-family: "Poppins"; - src: url("/public/media/fonts/Poppins/Poppins-ExtraLight.ttf"); + src: url("/public/media/fonts/poppins/Poppins-ExtraLight.ttf"); font-weight: 200; font-display: swap; } @font-face { font-family: "Poppins"; - src: url("/public/media/fonts/Poppins/Poppins-Light.ttf"); + src: url("/public/media/fonts/poppins/Poppins-Light.ttf"); font-weight: 300; font-display: swap; } @font-face { font-family: "Poppins"; - src: url("/public/media/fonts/Poppins/Poppins-Regular.ttf"); + src: url("/public/media/fonts/poppins/Poppins-Regular.ttf"); font-weight: 400; font-display: swap; } @font-face { font-family: "Poppins"; - src: url("/public/media/fonts/Poppins/Poppins-SemiBold.ttf"); + src: url("/public/media/fonts/poppins/Poppins-SemiBold.ttf"); font-weight: 500; font-display: swap; } @font-face { font-family: "Poppins"; - src: url("/public/media/fonts/Poppins/Poppins-Bold.ttf"); + src: url("/public/media/fonts/poppins/Poppins-Bold.ttf"); font-weight: 600; font-display: swap; } @font-face { font-family: "Poppins"; - src: url("/public/media/fonts/Poppins/Poppins-ExtraBold.ttf"); + src: url("/public/media/fonts/poppins/Poppins-ExtraBold.ttf"); font-weight: 700; font-display: swap; } @font-face { font-family: "Poppins"; - src: url("/public/media/fonts/Poppins/Poppins-Black.ttf"); + src: url("/public/media/fonts/poppins/Poppins-Black.ttf"); font-weight: 800; font-display: swap; } @font-face { font-family: "Roboto Mono"; - src: url("/public/media/fonts/Roboto_Mono/RobotoMono-VariableFont_wght.ttf"); + src: url("/public/media/fonts/roboto-mono/RobotoMono-VariableFont_wght.ttf"); font-display: swap; } \ No newline at end of file