From 045ef2ba4eae84e47983cf5ff9e6bb76cbd6cf2c Mon Sep 17 00:00:00 2001 From: Prozilla Date: Sun, 16 Jun 2024 21:46:44 +0200 Subject: [PATCH] Added core and file-explorer packages --- eslint.config.js | 6 +- package-lock.json | 141 ++++++++++++------ package.json | 8 +- .../browser/components}/Browser.module.css | 0 .../apps/browser/components}/Browser.tsx | 0 .../apps/browser/config}/browser.config.ts | 0 .../components}/Calculator.module.css | 0 .../calculator/components}/Calculator.tsx | 0 packages/apps/file-explorer/README.md | 1 + packages/apps/file-explorer/package.json | 29 ++++ .../src/components}/FileExplorer.module.css | 0 .../src/components}/FileExplorer.tsx | 46 ++---- .../src/components}/ImportButton.tsx | 3 +- .../src/components}/QuickAccessButton.tsx | 2 +- .../file-properties/FileProperties.module.css | 0 .../modals/file-properties/FileProperties.tsx | 7 +- .../src/constants/fileExplorer.const.ts | 0 packages/apps/file-explorer/src/index.ts | 2 + .../file-explorer/src}/types/vite-env.d.ts | 0 packages/apps/file-explorer/tsconfig.json | 5 + .../components}/CircuitView.module.css | 0 .../logic-sim/components}/CircuitView.tsx | 0 .../logic-sim/components}/LogicSim.module.css | 0 .../apps/logic-sim/components}/LogicSim.tsx | 0 .../apps/logic-sim/config}/logicSim.config.ts | 0 .../apps/logic-sim/core}/_utils/state.ts | 0 .../apps/logic-sim/core}/chips/chip.ts | 2 +- .../logic-sim/core}/chips/chipsManager.ts | 2 +- .../apps/logic-sim/core/circuit.ts | 6 +- .../apps/logic-sim/core/inputHandler.ts | 10 +- .../logic-sim/core}/pins/controlledPin.ts | 2 +- .../apps/logic-sim/core}/pins/pin.ts | 2 +- .../apps/logic-sim/core}/wires/wire.ts | 2 +- .../components}/MediaViewer.module.css | 0 .../media-viewer/components}/MediaViewer.tsx | 0 .../config}/mediaViewer.config.ts | 0 .../settings/components}/Settings.module.css | 0 .../apps/settings/components}/Settings.tsx | 0 .../components}/tabs/AboutSettings.tsx | 0 .../settings/components}/tabs/AppOption.tsx | 0 .../components}/tabs/AppearanceSettings.tsx | 0 .../components}/tabs/AppsSettings.tsx | 0 .../components}/tabs/StorageSettings.tsx | 0 .../apps/settings/config}/settings.config.ts | 0 .../apps/terminal/components}/Ansi.tsx | 0 .../apps/terminal/components}/InputLine.tsx | 0 .../apps/terminal/components}/OutputLine.tsx | 0 .../terminal/components}/Terminal.module.css | 0 .../apps/terminal/components}/Terminal.tsx | 0 .../apps/terminal/config}/terminal.config.ts | 0 .../terminal/core}/_utils/terminal.utils.ts | 0 .../apps/terminal/core}/command.ts | 0 .../apps/terminal/core}/commands.ts | 0 .../apps/terminal/core}/commands/cat.ts | 0 .../apps/terminal/core}/commands/cd.ts | 0 .../apps/terminal/core}/commands/clear.ts | 0 .../apps/terminal/core}/commands/cmatrix.ts | 0 .../apps/terminal/core}/commands/compgen.ts | 0 .../apps/terminal/core}/commands/cowsay.ts | 0 .../apps/terminal/core}/commands/dir.ts | 0 .../apps/terminal/core}/commands/echo.ts | 0 .../apps/terminal/core}/commands/exit.ts | 0 .../apps/terminal/core}/commands/fortune.ts | 0 .../apps/terminal/core}/commands/help.ts | 0 .../apps/terminal/core}/commands/hostname.ts | 0 .../apps/terminal/core}/commands/lolcat.ts | 0 .../apps/terminal/core}/commands/ls.ts | 0 .../apps/terminal/core}/commands/make.ts | 0 .../apps/terminal/core}/commands/man.ts | 0 .../apps/terminal/core}/commands/mkdir.ts | 0 .../apps/terminal/core}/commands/neofetch.ts | 0 .../apps/terminal/core}/commands/pwd.ts | 0 .../apps/terminal/core}/commands/reboot.ts | 0 .../apps/terminal/core}/commands/reload.ts | 0 .../apps/terminal/core}/commands/rev.ts | 0 .../apps/terminal/core}/commands/rm.ts | 0 .../apps/terminal/core}/commands/rmdir.ts | 0 .../apps/terminal/core}/commands/sl.ts | 0 .../apps/terminal/core}/commands/touch.ts | 0 .../apps/terminal/core}/commands/uptime.ts | 0 .../apps/terminal/core}/commands/whatis.ts | 0 .../apps/terminal/core}/commands/whoami.ts | 0 .../apps/terminal/core}/stream.ts | 0 .../components}/TextEditor.module.css | 0 .../text-editor/components}/TextEditor.tsx | 0 .../overrides/MarkdownBlockquote.tsx | 0 .../components}/overrides/MarkdownImage.tsx | 0 .../components}/overrides/MarkdownLink.tsx | 0 .../text-editor/config}/textEditor.config.ts | 0 .../text-editor/core}/_utils/sanitizeProps.ts | 0 packages/core/README.md | 1 + packages/core/package.json | 35 +++++ .../_utils/button/Button.module.css | 0 .../src}/components/_utils/button/Button.tsx | 0 .../directory-list/DirectoryList.module.css | 0 .../_utils}/directory-list/DirectoryList.tsx | 8 +- .../directory-list/ImagePreview.module.css | 0 .../_utils}/directory-list/ImagePreview.tsx | 4 +- .../dropdown-button/DropdownButton.module.css | 0 .../_utils/dropdown-button/DropdownButton.tsx | 0 .../_utils/header-menu/HeaderMenu.module.css | 0 .../_utils/header-menu/HeaderMenu.tsx | 9 +- packages/core/src/components/_utils/index.ts | 10 ++ .../_utils/interactable/Interactable.tsx | 7 +- .../progress-bar/ProgressBar.module.css | 0 .../_utils/progress-bar/ProgressBar.tsx | 0 .../_utils/web-view/WebView.module.css | 0 .../components}/_utils/web-view/WebView.tsx | 2 +- .../components/actions/Actions.module.css | 0 .../core/src}/components/actions/Actions.tsx | 0 .../actions/actions/ClickAction.tsx | 4 +- .../components/actions/actions/Divider.tsx | 0 .../actions/actions/DropdownAction.tsx | 0 .../actions/actions/RadioAction.tsx | 0 .../actions/actions/TextDisplay.tsx | 0 .../actions/actions/ToggleAction.tsx | 0 packages/core/src/components/actions/index.ts | 7 + .../components/desktop/Desktop.module.css | 0 .../core/src}/components/desktop/Desktop.tsx | 42 +++--- packages/core/src/components/index.ts | 10 ++ .../components/modals/ModalView.module.css | 0 .../core/src}/components/modals/ModalView.tsx | 0 .../components/modals/ModalsView.module.css | 0 .../src}/components/modals/ModalsView.tsx | 0 .../modals/_utils/WindowedModal.module.css | 0 .../modals/_utils/WindowedModal.tsx | 0 .../modals/dialog-box/DialogBox.module.css | 0 .../modals/dialog-box/DialogBox.tsx | 2 +- .../file-selector/FileSelector.module.css | 0 .../modals/file-selector/FileSelector.tsx | 7 +- packages/core/src/components/modals/index.ts | 6 + .../src}/components/modals/share/Option.tsx | 0 .../components/modals/share/Share.module.css | 0 .../src}/components/modals/share/Share.tsx | 0 .../prozilla-os/ProzillaOS.module.css | 4 +- .../src/components/prozilla-os/ProzillaOS.tsx | 73 +++++++++ .../components/taskbar/Taskbar.module.css | 0 .../core/src}/components/taskbar/Taskbar.tsx | 7 +- .../taskbar/app-icon/AppIcon.module.css | 0 .../components/taskbar/app-icon/AppIcon.tsx | 0 .../taskbar/indicators/Battery.module.css | 0 .../components/taskbar/indicators/Battery.tsx | 0 .../taskbar/indicators/Calendar.module.css | 0 .../taskbar/indicators/Calendar.tsx | 0 .../taskbar/indicators/Network.module.css | 0 .../components/taskbar/indicators/Network.tsx | 0 .../taskbar/indicators/Volume.module.css | 0 .../components/taskbar/indicators/Volume.tsx | 0 .../components/taskbar/indicators/index.ts | 0 .../taskbar/menus/AppList.module.css | 0 .../taskbar/menus/HomeMenu.module.css | 0 .../components/taskbar/menus/HomeMenu.tsx | 18 +-- .../taskbar/menus/SearchMenu.module.css | 0 .../components/taskbar/menus/SearchMenu.tsx | 0 .../taskbar/menus/UtilMenu.module.css | 0 .../components/taskbar/menus/UtilMenu.tsx | 0 .../components/windows/WindowFallbackView.tsx | 0 .../components/windows/WindowView.module.css | 0 .../src}/components/windows/WindowView.tsx | 11 +- .../src}/components/windows/WindowsView.tsx | 13 +- .../core/src/constants/apps.const.ts | 4 +- packages/core/src/constants/modals.const.ts | 3 + .../core/src/constants/themes.const.ts | 0 .../core/src/constants/virtualDrive.const.ts | 11 ++ .../core/src}/features/_utils/array.utils.ts | 0 .../src}/features/_utils/browser.utils.ts | 6 +- .../core/src}/features/_utils/date.utils.ts | 0 .../core/src}/features/_utils/event.utils.ts | 0 packages/core/src/features/_utils/index.ts | 8 + .../core/src}/features/_utils/math.utils.ts | 0 .../core/src}/features/_utils/number.utils.ts | 0 .../core/src}/features/_utils/string.utils.ts | 0 .../core/src}/features/_utils/time.utils.ts | 0 .../src}/features/actions/actionsManager.ts | 0 .../core/src}/features/apps/app.tsx | 0 .../core/src/features/apps/appsManager.ts | 49 ++++++ packages/core/src/features/apps/index.ts | 2 + packages/core/src/features/index.ts | 11 ++ .../core/src}/features/math/vector2.ts | 0 .../core/src}/features/modals/modal.ts | 0 .../src}/features/modals/modalsManager.ts | 0 .../core/src}/features/settings/settings.ts | 0 .../src}/features/settings/settingsManager.ts | 0 .../src}/features/storage/storageManager.ts | 0 .../src/features/system/configs/appsConfig.ts | 15 ++ .../features/system/configs/desktopConfig.ts | 46 ++++++ .../core/src/features/system/configs/index.ts | 7 + .../src/features/system/configs/miscConfig.ts | 18 +++ .../features/system/configs/modalsConfig.ts | 27 ++++ .../features/system/configs/taskbarConfig.ts | 18 +++ .../features/system/configs/trackingConfig.ts | 23 +++ .../features/system/configs/windowsConfig.ts | 33 ++++ .../core/src/features/system/systemManager.ts | 63 ++++++++ .../src/features/tracking/trackingManager.ts | 32 ++++ .../src}/features/virtual-drive/file/index.ts | 0 .../virtual-drive/file/virtualFile.ts | 6 +- .../virtual-drive/file/virtualFileLink.ts | 2 +- .../features/virtual-drive/folder/index.ts | 0 .../virtual-drive/folder/virtualFolder.ts | 2 +- .../virtual-drive/folder/virtualFolderLink.ts | 2 +- .../core/src/features/virtual-drive/index.ts | 3 + .../virtual-drive/root/defaultData.ts | 11 +- .../virtual-drive/root/virtualRoot.ts | 7 +- .../features/virtual-drive/virtualBase.ts | 2 +- .../src}/features/windows/windowsManager.ts | 21 ++- .../core/src}/features/z-index/zIndexGroup.ts | 0 .../src}/features/z-index/zIndexManager.ts | 0 .../core/src}/hooks/_utils/history.ts | 2 +- packages/core/src/hooks/_utils/index.ts | 6 + .../core/src}/hooks/_utils/keyboard.ts | 2 +- .../core/src}/hooks/_utils/mouse.ts | 0 .../core/src}/hooks/_utils/outsideClick.tsx | 0 .../core/src}/hooks/_utils/screen.ts | 5 +- .../src}/hooks/_utils/scrollWithShadows.ts | 0 .../core/src}/hooks/apps/appFolder.ts | 0 packages/core/src/hooks/index.ts | 9 ++ .../core/src}/hooks/modals/alert.tsx | 6 +- .../core/src}/hooks/modals/contextMenu.tsx | 4 +- packages/core/src/hooks/modals/index.ts | 4 + .../core/src}/hooks/modals/modalsContext.ts | 0 .../src}/hooks/modals/modalsManagerContext.ts | 2 +- .../hooks/modals/modalsManagerProvider.tsx | 2 +- .../core/src}/hooks/modals/modalsProvider.tsx | 2 +- .../core/src}/hooks/modals/windowedModal.ts | 9 +- .../hooks/settings/settingsManagerContext.ts | 2 +- .../settings/settingsManagerProvider.tsx | 2 +- .../src/hooks/system/systemManagerContext.ts | 8 + .../hooks/system/systemManagerProvider.tsx | 25 ++++ .../core/src}/hooks/themes/themes.tsx | 4 +- .../hooks/tracking/trackingManagerContext.ts | 10 ++ .../tracking/trackingManagerProvider.tsx | 13 ++ .../hooks/virtual-drive/virtualRootContext.ts | 0 .../virtual-drive/virtualRootProvider.tsx | 6 +- .../core/src}/hooks/windows/windowsContext.ts | 0 .../hooks/windows/windowsManagerContext.ts | 2 +- .../hooks/windows/windowsManagerProvider.tsx | 24 +++ .../src}/hooks/windows/windowsProvider.tsx | 2 +- .../core/src}/hooks/z-index/zIndex.ts | 2 +- .../hooks/z-index/zIndexManagerContext.ts | 4 +- .../hooks/z-index/zIndexManagerProvider.tsx | 2 +- packages/core/src/index.ts | 6 + {src => packages/core/src}/styles/global.css | 0 .../core/src}/styles/global/fonts.css | 0 .../core/src}/styles/global/scrollbar.css | 0 .../core/src}/styles/global/themes.css | 0 .../core/src}/styles/global/variables.css | 0 .../core/src}/styles/utils.module.css | 0 packages/core/src/types/global.d.ts | 3 + packages/core/src/types/vite-env.d.ts | 1 + packages/core/tsconfig.json | 5 + src/App.tsx | 39 ----- src/Main.tsx | 14 ++ src/components/router/routes/DefaultRoute.tsx | 13 -- .../StandaloneHeader.module.css | 0 .../StandaloneHeader.tsx | 2 +- src/config/desktop.config.ts | 29 ++-- src/config/modals.config.ts | 8 - src/config/taskbar.config.ts | 1 - src/config/tracking.config.ts | 1 - src/config/utils.config.ts | 1 - src/config/windows.config.ts | 6 - src/features/apps/appsManager.ts | 83 ----------- src/features/tracking/trackingManager.ts | 19 --- src/hooks/windows/windowsManagerProvider.tsx | 16 -- src/index.tsx | 12 +- src/{components => }/router/Router.tsx | 3 +- src/router/routes/DefaultRoute.tsx | 10 ++ .../router/routes/NoRoute.module.css | 0 .../router/routes/NoRoute.tsx | 3 +- .../router/routes/StandaloneRoute.module.css | 0 .../router/routes/StandaloneRoute.tsx | 9 +- tsconfig.json | 2 +- vite.config.ts | 2 +- 273 files changed, 973 insertions(+), 462 deletions(-) rename {src/components/apps/browser => packages/apps/browser/components}/Browser.module.css (100%) rename {src/components/apps/browser => packages/apps/browser/components}/Browser.tsx (100%) rename {src/config/apps => packages/apps/browser/config}/browser.config.ts (100%) rename {src/components/apps/calculator => packages/apps/calculator/components}/Calculator.module.css (100%) rename {src/components/apps/calculator => packages/apps/calculator/components}/Calculator.tsx (100%) create mode 100644 packages/apps/file-explorer/README.md create mode 100644 packages/apps/file-explorer/package.json rename {src/components/apps/file-explorer => packages/apps/file-explorer/src/components}/FileExplorer.module.css (100%) rename {src/components/apps/file-explorer => packages/apps/file-explorer/src/components}/FileExplorer.tsx (79%) rename {src/components/apps/file-explorer => packages/apps/file-explorer/src/components}/ImportButton.tsx (90%) rename {src/components/apps/file-explorer => packages/apps/file-explorer/src/components}/QuickAccessButton.tsx (90%) rename {src => packages/apps/file-explorer/src}/components/modals/file-properties/FileProperties.module.css (100%) rename {src => packages/apps/file-explorer/src}/components/modals/file-properties/FileProperties.tsx (78%) rename src/config/apps/fileExplorer.config.ts => packages/apps/file-explorer/src/constants/fileExplorer.const.ts (100%) create mode 100644 packages/apps/file-explorer/src/index.ts rename {src => packages/apps/file-explorer/src}/types/vite-env.d.ts (100%) create mode 100644 packages/apps/file-explorer/tsconfig.json rename {src/components/apps/logic-sim => packages/apps/logic-sim/components}/CircuitView.module.css (100%) rename {src/components/apps/logic-sim => packages/apps/logic-sim/components}/CircuitView.tsx (100%) rename {src/components/apps/logic-sim => packages/apps/logic-sim/components}/LogicSim.module.css (100%) rename {src/components/apps/logic-sim => packages/apps/logic-sim/components}/LogicSim.tsx (100%) rename {src/config/apps => packages/apps/logic-sim/config}/logicSim.config.ts (100%) rename {src/features/apps/logic-sim => packages/apps/logic-sim/core}/_utils/state.ts (100%) rename {src/features/apps/logic-sim => packages/apps/logic-sim/core}/chips/chip.ts (99%) rename {src/features/apps/logic-sim => packages/apps/logic-sim/core}/chips/chipsManager.ts (98%) rename {src/features => packages}/apps/logic-sim/core/circuit.ts (98%) rename {src/features => packages}/apps/logic-sim/core/inputHandler.ts (98%) rename {src/features/apps/logic-sim => packages/apps/logic-sim/core}/pins/controlledPin.ts (98%) rename {src/features/apps/logic-sim => packages/apps/logic-sim/core}/pins/pin.ts (98%) rename {src/features/apps/logic-sim => packages/apps/logic-sim/core}/wires/wire.ts (97%) rename {src/components/apps/media-viewer => packages/apps/media-viewer/components}/MediaViewer.module.css (100%) rename {src/components/apps/media-viewer => packages/apps/media-viewer/components}/MediaViewer.tsx (100%) rename {src/config/apps => packages/apps/media-viewer/config}/mediaViewer.config.ts (100%) rename {src/components/apps/settings => packages/apps/settings/components}/Settings.module.css (100%) rename {src/components/apps/settings => packages/apps/settings/components}/Settings.tsx (100%) rename {src/components/apps/settings => packages/apps/settings/components}/tabs/AboutSettings.tsx (100%) rename {src/components/apps/settings => packages/apps/settings/components}/tabs/AppOption.tsx (100%) rename {src/components/apps/settings => packages/apps/settings/components}/tabs/AppearanceSettings.tsx (100%) rename {src/components/apps/settings => packages/apps/settings/components}/tabs/AppsSettings.tsx (100%) rename {src/components/apps/settings => packages/apps/settings/components}/tabs/StorageSettings.tsx (100%) rename {src/config/apps => packages/apps/settings/config}/settings.config.ts (100%) rename {src/components/apps/terminal => packages/apps/terminal/components}/Ansi.tsx (100%) rename {src/components/apps/terminal => packages/apps/terminal/components}/InputLine.tsx (100%) rename {src/components/apps/terminal => packages/apps/terminal/components}/OutputLine.tsx (100%) rename {src/components/apps/terminal => packages/apps/terminal/components}/Terminal.module.css (100%) rename {src/components/apps/terminal => packages/apps/terminal/components}/Terminal.tsx (100%) rename {src/config/apps => packages/apps/terminal/config}/terminal.config.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/_utils/terminal.utils.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/command.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/cat.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/cd.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/clear.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/cmatrix.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/compgen.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/cowsay.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/dir.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/echo.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/exit.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/fortune.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/help.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/hostname.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/lolcat.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/ls.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/make.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/man.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/mkdir.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/neofetch.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/pwd.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/reboot.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/reload.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/rev.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/rm.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/rmdir.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/sl.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/touch.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/uptime.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/whatis.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/commands/whoami.ts (100%) rename {src/features/apps/terminal => packages/apps/terminal/core}/stream.ts (100%) rename {src/components/apps/text-editor => packages/apps/text-editor/components}/TextEditor.module.css (100%) rename {src/components/apps/text-editor => packages/apps/text-editor/components}/TextEditor.tsx (100%) rename {src/components/apps/text-editor => packages/apps/text-editor/components}/overrides/MarkdownBlockquote.tsx (100%) rename {src/components/apps/text-editor => packages/apps/text-editor/components}/overrides/MarkdownImage.tsx (100%) rename {src/components/apps/text-editor => packages/apps/text-editor/components}/overrides/MarkdownLink.tsx (100%) rename {src/config/apps => packages/apps/text-editor/config}/textEditor.config.ts (100%) rename {src/features/apps/text-editor => packages/apps/text-editor/core}/_utils/sanitizeProps.ts (100%) create mode 100644 packages/core/README.md create mode 100644 packages/core/package.json rename {src => packages/core/src}/components/_utils/button/Button.module.css (100%) rename {src => packages/core/src}/components/_utils/button/Button.tsx (100%) rename {src/components/apps/file-explorer => packages/core/src/components/_utils}/directory-list/DirectoryList.module.css (100%) rename {src/components/apps/file-explorer => packages/core/src/components/_utils}/directory-list/DirectoryList.tsx (95%) rename {src/components/apps/file-explorer => packages/core/src/components/_utils}/directory-list/ImagePreview.module.css (100%) rename {src/components/apps/file-explorer => packages/core/src/components/_utils}/directory-list/ImagePreview.tsx (87%) rename {src => packages/core/src}/components/_utils/dropdown-button/DropdownButton.module.css (100%) rename {src => packages/core/src}/components/_utils/dropdown-button/DropdownButton.tsx (100%) rename {src/components/apps => packages/core/src/components}/_utils/header-menu/HeaderMenu.module.css (100%) rename {src/components/apps => packages/core/src/components}/_utils/header-menu/HeaderMenu.tsx (55%) create mode 100644 packages/core/src/components/_utils/index.ts rename {src => packages/core/src}/components/_utils/interactable/Interactable.tsx (82%) rename {src => packages/core/src}/components/_utils/progress-bar/ProgressBar.module.css (100%) rename {src => packages/core/src}/components/_utils/progress-bar/ProgressBar.tsx (100%) rename {src/components/apps => packages/core/src/components}/_utils/web-view/WebView.module.css (100%) rename {src/components/apps => packages/core/src/components}/_utils/web-view/WebView.tsx (94%) rename {src => packages/core/src}/components/actions/Actions.module.css (100%) rename {src => packages/core/src}/components/actions/Actions.tsx (100%) rename {src => packages/core/src}/components/actions/actions/ClickAction.tsx (87%) rename {src => packages/core/src}/components/actions/actions/Divider.tsx (100%) rename {src => packages/core/src}/components/actions/actions/DropdownAction.tsx (100%) rename {src => packages/core/src}/components/actions/actions/RadioAction.tsx (100%) rename {src => packages/core/src}/components/actions/actions/TextDisplay.tsx (100%) rename {src => packages/core/src}/components/actions/actions/ToggleAction.tsx (100%) create mode 100644 packages/core/src/components/actions/index.ts rename {src => packages/core/src}/components/desktop/Desktop.module.css (100%) rename {src => packages/core/src}/components/desktop/Desktop.tsx (81%) create mode 100644 packages/core/src/components/index.ts rename {src => packages/core/src}/components/modals/ModalView.module.css (100%) rename {src => packages/core/src}/components/modals/ModalView.tsx (100%) rename {src => packages/core/src}/components/modals/ModalsView.module.css (100%) rename {src => packages/core/src}/components/modals/ModalsView.tsx (100%) rename {src => packages/core/src}/components/modals/_utils/WindowedModal.module.css (100%) rename {src => packages/core/src}/components/modals/_utils/WindowedModal.tsx (100%) rename {src => packages/core/src}/components/modals/dialog-box/DialogBox.module.css (100%) rename {src => packages/core/src}/components/modals/dialog-box/DialogBox.tsx (90%) rename {src => packages/core/src}/components/modals/file-selector/FileSelector.module.css (100%) rename {src => packages/core/src}/components/modals/file-selector/FileSelector.tsx (92%) create mode 100644 packages/core/src/components/modals/index.ts rename {src => packages/core/src}/components/modals/share/Option.tsx (100%) rename {src => packages/core/src}/components/modals/share/Share.module.css (100%) rename {src => packages/core/src}/components/modals/share/Share.tsx (100%) rename src/App.module.css => packages/core/src/components/prozilla-os/ProzillaOS.module.css (83%) create mode 100644 packages/core/src/components/prozilla-os/ProzillaOS.tsx rename {src => packages/core/src}/components/taskbar/Taskbar.module.css (100%) rename {src => packages/core/src}/components/taskbar/Taskbar.tsx (96%) rename {src => packages/core/src}/components/taskbar/app-icon/AppIcon.module.css (100%) rename {src => packages/core/src}/components/taskbar/app-icon/AppIcon.tsx (100%) rename {src => packages/core/src}/components/taskbar/indicators/Battery.module.css (100%) rename {src => packages/core/src}/components/taskbar/indicators/Battery.tsx (100%) rename {src => packages/core/src}/components/taskbar/indicators/Calendar.module.css (100%) rename {src => packages/core/src}/components/taskbar/indicators/Calendar.tsx (100%) rename {src => packages/core/src}/components/taskbar/indicators/Network.module.css (100%) rename {src => packages/core/src}/components/taskbar/indicators/Network.tsx (100%) rename {src => packages/core/src}/components/taskbar/indicators/Volume.module.css (100%) rename {src => packages/core/src}/components/taskbar/indicators/Volume.tsx (100%) rename {src => packages/core/src}/components/taskbar/indicators/index.ts (100%) rename {src => packages/core/src}/components/taskbar/menus/AppList.module.css (100%) rename {src => packages/core/src}/components/taskbar/menus/HomeMenu.module.css (100%) rename {src => packages/core/src}/components/taskbar/menus/HomeMenu.tsx (82%) rename {src => packages/core/src}/components/taskbar/menus/SearchMenu.module.css (100%) rename {src => packages/core/src}/components/taskbar/menus/SearchMenu.tsx (100%) rename {src => packages/core/src}/components/taskbar/menus/UtilMenu.module.css (100%) rename {src => packages/core/src}/components/taskbar/menus/UtilMenu.tsx (100%) rename {src => packages/core/src}/components/windows/WindowFallbackView.tsx (100%) rename {src => packages/core/src}/components/windows/WindowView.module.css (100%) rename {src => packages/core/src}/components/windows/WindowView.tsx (94%) rename {src => packages/core/src}/components/windows/WindowsView.tsx (82%) rename src/config/apps.config.ts => packages/core/src/constants/apps.const.ts (92%) create mode 100644 packages/core/src/constants/modals.const.ts rename src/config/themes.config.ts => packages/core/src/constants/themes.const.ts (100%) create mode 100644 packages/core/src/constants/virtualDrive.const.ts rename {src => packages/core/src}/features/_utils/array.utils.ts (100%) rename {src => packages/core/src}/features/_utils/browser.utils.ts (97%) rename {src => packages/core/src}/features/_utils/date.utils.ts (100%) rename {src => packages/core/src}/features/_utils/event.utils.ts (100%) create mode 100644 packages/core/src/features/_utils/index.ts rename {src => packages/core/src}/features/_utils/math.utils.ts (100%) rename {src => packages/core/src}/features/_utils/number.utils.ts (100%) rename {src => packages/core/src}/features/_utils/string.utils.ts (100%) rename {src => packages/core/src}/features/_utils/time.utils.ts (100%) rename {src => packages/core/src}/features/actions/actionsManager.ts (100%) rename {src => packages/core/src}/features/apps/app.tsx (100%) create mode 100644 packages/core/src/features/apps/appsManager.ts create mode 100644 packages/core/src/features/apps/index.ts create mode 100644 packages/core/src/features/index.ts rename {src => packages/core/src}/features/math/vector2.ts (100%) rename {src => packages/core/src}/features/modals/modal.ts (100%) rename {src => packages/core/src}/features/modals/modalsManager.ts (100%) rename {src => packages/core/src}/features/settings/settings.ts (100%) rename {src => packages/core/src}/features/settings/settingsManager.ts (100%) rename {src => packages/core/src}/features/storage/storageManager.ts (100%) create mode 100644 packages/core/src/features/system/configs/appsConfig.ts create mode 100644 packages/core/src/features/system/configs/desktopConfig.ts create mode 100644 packages/core/src/features/system/configs/index.ts create mode 100644 packages/core/src/features/system/configs/miscConfig.ts create mode 100644 packages/core/src/features/system/configs/modalsConfig.ts create mode 100644 packages/core/src/features/system/configs/taskbarConfig.ts create mode 100644 packages/core/src/features/system/configs/trackingConfig.ts create mode 100644 packages/core/src/features/system/configs/windowsConfig.ts create mode 100644 packages/core/src/features/system/systemManager.ts create mode 100644 packages/core/src/features/tracking/trackingManager.ts rename {src => packages/core/src}/features/virtual-drive/file/index.ts (100%) rename {src => packages/core/src}/features/virtual-drive/file/virtualFile.ts (95%) rename {src => packages/core/src}/features/virtual-drive/file/virtualFileLink.ts (97%) rename {src => packages/core/src}/features/virtual-drive/folder/index.ts (100%) rename {src => packages/core/src}/features/virtual-drive/folder/virtualFolder.ts (99%) rename {src => packages/core/src}/features/virtual-drive/folder/virtualFolderLink.ts (98%) create mode 100644 packages/core/src/features/virtual-drive/index.ts rename {src => packages/core/src}/features/virtual-drive/root/defaultData.ts (93%) rename {src => packages/core/src}/features/virtual-drive/root/virtualRoot.ts (96%) rename {src => packages/core/src}/features/virtual-drive/virtualBase.ts (98%) rename {src => packages/core/src}/features/windows/windowsManager.ts (88%) rename {src => packages/core/src}/features/z-index/zIndexGroup.ts (100%) rename {src => packages/core/src}/features/z-index/zIndexManager.ts (100%) rename {src => packages/core/src}/hooks/_utils/history.ts (95%) create mode 100644 packages/core/src/hooks/_utils/index.ts rename {src => packages/core/src}/hooks/_utils/keyboard.ts (97%) rename {src => packages/core/src}/hooks/_utils/mouse.ts (100%) rename {src => packages/core/src}/hooks/_utils/outsideClick.tsx (100%) rename {src => packages/core/src}/hooks/_utils/screen.ts (92%) rename {src => packages/core/src}/hooks/_utils/scrollWithShadows.ts (100%) rename {src => packages/core/src}/hooks/apps/appFolder.ts (100%) create mode 100644 packages/core/src/hooks/index.ts rename {src => packages/core/src}/hooks/modals/alert.tsx (85%) rename {src => packages/core/src}/hooks/modals/contextMenu.tsx (96%) create mode 100644 packages/core/src/hooks/modals/index.ts rename {src => packages/core/src}/hooks/modals/modalsContext.ts (100%) rename {src => packages/core/src}/hooks/modals/modalsManagerContext.ts (80%) rename {src => packages/core/src}/hooks/modals/modalsManagerProvider.tsx (87%) rename {src => packages/core/src}/hooks/modals/modalsProvider.tsx (90%) rename {src => packages/core/src}/hooks/modals/windowedModal.ts (86%) rename {src => packages/core/src}/hooks/settings/settingsManagerContext.ts (80%) rename {src => packages/core/src}/hooks/settings/settingsManagerProvider.tsx (88%) create mode 100644 packages/core/src/hooks/system/systemManagerContext.ts create mode 100644 packages/core/src/hooks/system/systemManagerProvider.tsx rename {src => packages/core/src}/hooks/themes/themes.tsx (83%) create mode 100644 packages/core/src/hooks/tracking/trackingManagerContext.ts create mode 100644 packages/core/src/hooks/tracking/trackingManagerProvider.tsx rename {src => packages/core/src}/hooks/virtual-drive/virtualRootContext.ts (100%) rename {src => packages/core/src}/hooks/virtual-drive/virtualRootProvider.tsx (68%) rename {src => packages/core/src}/hooks/windows/windowsContext.ts (100%) rename {src => packages/core/src}/hooks/windows/windowsManagerContext.ts (80%) create mode 100644 packages/core/src/hooks/windows/windowsManagerProvider.tsx rename {src => packages/core/src}/hooks/windows/windowsProvider.tsx (90%) rename {src => packages/core/src}/hooks/z-index/zIndex.ts (92%) rename {src => packages/core/src}/hooks/z-index/zIndexManagerContext.ts (64%) rename {src => packages/core/src}/hooks/z-index/zIndexManagerProvider.tsx (83%) create mode 100644 packages/core/src/index.ts rename {src => packages/core/src}/styles/global.css (100%) rename {src => packages/core/src}/styles/global/fonts.css (100%) rename {src => packages/core/src}/styles/global/scrollbar.css (100%) rename {src => packages/core/src}/styles/global/themes.css (100%) rename {src => packages/core/src}/styles/global/variables.css (100%) rename {src => packages/core/src}/styles/utils.module.css (100%) create mode 100644 packages/core/src/types/global.d.ts create mode 100644 packages/core/src/types/vite-env.d.ts create mode 100644 packages/core/tsconfig.json delete mode 100644 src/App.tsx create mode 100644 src/Main.tsx delete mode 100644 src/components/router/routes/DefaultRoute.tsx rename src/components/{windows => standalone-header}/StandaloneHeader.module.css (100%) rename src/components/{windows => standalone-header}/StandaloneHeader.tsx (92%) delete mode 100644 src/config/modals.config.ts delete mode 100644 src/config/taskbar.config.ts delete mode 100644 src/config/tracking.config.ts delete mode 100644 src/config/utils.config.ts delete mode 100644 src/config/windows.config.ts delete mode 100644 src/features/apps/appsManager.ts delete mode 100644 src/features/tracking/trackingManager.ts delete mode 100644 src/hooks/windows/windowsManagerProvider.tsx rename src/{components => }/router/Router.tsx (83%) create mode 100644 src/router/routes/DefaultRoute.tsx rename src/{components => }/router/routes/NoRoute.module.css (100%) rename src/{components => }/router/routes/NoRoute.tsx (76%) rename src/{components => }/router/routes/StandaloneRoute.module.css (100%) rename src/{components => }/router/routes/StandaloneRoute.tsx (72%) diff --git a/eslint.config.js b/eslint.config.js index e1ca035..8ab6996 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -11,7 +11,7 @@ export default tseslint.config( { languageOptions: { parserOptions: { - project: "./tsconfig.json", + project: ["./tsconfig.json", "./packages/*/tsconfig.json", "./packages/apps/*/tsconfig.json"], tsconfigRootDir: import.meta.dirname, allowAutomaticSingleRunInference: true, }, @@ -21,7 +21,7 @@ export default tseslint.config( ], plugins: { react, - "react-refresh": reactRefresh + "react-refresh": reactRefresh, }, rules: { "quotes": "off", @@ -65,7 +65,7 @@ export default tseslint.config( "react-refresh/only-export-components": [ "warn", { "allowConstantExport": true } - ] + ], }, } ); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c8986f9..15539ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,22 @@ { - "name": "prozilla-os", + "name": "@prozilla-os/prozilla-os", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "prozilla-os", + "name": "@prozilla-os/prozilla-os", "version": "0.1.0", + "workspaces": [ + "packages/core", + "packages/apps/file-explorer" + ], "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", + "@prozilla-os/core": "^1.0.0", "@vitejs/plugin-react-swc": "^3.7.0", "anser": "^2.1.1", "escape-carriage": "^1.3.1", @@ -897,54 +902,54 @@ } }, "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz", - "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", "hasInstallScript": true, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz", - "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", + "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.0" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-regular-svg-icons": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.4.0.tgz", - "integrity": "sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.2.tgz", + "integrity": "sha512-iabw/f5f8Uy2nTRtJ13XZTS1O5+t+anvlamJ3zJGLEVE2pKsAWhPv2lq01uQlfgCX7VaveT3EVs515cCN9jRbw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.0" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.0.tgz", - "integrity": "sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.0" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/react-fontawesome": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz", - "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", + "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", "dependencies": { "prop-types": "^15.8.1" }, @@ -1064,6 +1069,14 @@ "node": ">= 8" } }, + "node_modules/@prozilla-os/core": { + "resolved": "packages/core", + "link": true + }, + "node_modules/@prozilla-os/file-explorer": { + "resolved": "packages/apps/file-explorer", + "link": true + }, "node_modules/@remix-run/router": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", @@ -1712,13 +1725,13 @@ } }, "node_modules/@tanem/svg-injector": { - "version": "10.1.60", - "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.60.tgz", - "integrity": "sha512-yzdF0f7TZI7MrMieJLu5VYEJuL0WneFCabLvBfpNWDoWikzQPW8V9tpEqHa2A4kKJDiXUzsIoqtPEvGj9xsPgQ==", + "version": "10.1.68", + "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.68.tgz", + "integrity": "sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==", "dependencies": { - "@babel/runtime": "^7.22.5", + "@babel/runtime": "^7.23.2", "content-type": "^1.0.5", - "tslib": "^2.6.0" + "tslib": "^2.6.2" } }, "node_modules/@types/eslint": { @@ -1765,9 +1778,9 @@ "peer": true }, "node_modules/@types/node": { - "version": "20.12.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.8.tgz", - "integrity": "sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==", + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", "devOptional": true, "dependencies": { "undici-types": "~5.26.4" @@ -1782,9 +1795,9 @@ "peer": true }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/react": { "version": "18.3.1", @@ -5766,9 +5779,9 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -5789,9 +5802,9 @@ } }, "node_modules/react-draggable": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.5.tgz", - "integrity": "sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.6.tgz", + "integrity": "sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==", "dependencies": { "clsx": "^1.1.1", "prop-types": "^15.8.1" @@ -5848,13 +5861,13 @@ } }, "node_modules/react-svg": { - "version": "16.1.18", - "resolved": "https://registry.npmjs.org/react-svg/-/react-svg-16.1.18.tgz", - "integrity": "sha512-XAnrAfW03GDDD1uLEZFoEu8Ij7CkojIaNeba7KCInWnS9dFSEfFD3VbGSlKFUmkhQimfFmtJoRloowKNVJQ9gw==", + "version": "16.1.34", + "resolved": "https://registry.npmjs.org/react-svg/-/react-svg-16.1.34.tgz", + "integrity": "sha512-L4ak1qNFLgzVbHm0xQEpHoIOqb3um/B0ybahd3U2TKoGZxb0JaPVI5lsAhvSng2P1kcsYEok2Z7RpcKx7arJGw==", "dependencies": { - "@babel/runtime": "^7.22.5", - "@tanem/svg-injector": "^10.1.59", - "@types/prop-types": "^15.7.5", + "@babel/runtime": "^7.24.1", + "@tanem/svg-injector": "^10.1.68", + "@types/prop-types": "^15.7.12", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -6994,9 +7007,9 @@ } }, "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/tsx": { "version": "4.15.4", @@ -8053,6 +8066,42 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "packages/apps/file-explorer": { + "name": "@prozilla-os/file-explorer", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@prozilla-os/core": "^1.0.0", + "react": "^18.3.1" + }, + "devDependencies": { + "typescript": "^5.4.5" + } + }, + "packages/core": { + "name": "@prozilla-os/core", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-regular-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@prozilla-os/file-explorer": "^1.0.0", + "react": "^18.3.1", + "react-draggable": "^4.4.6", + "react-error-boundary": "^4.0.13", + "react-ga4": "^2.1.0", + "react-svg": "^16.1.34" + }, + "devDependencies": { + "@types/node": "^20.14.2", + "typescript": "^5.4.5" + } } } } diff --git a/package.json b/package.json index a6195e4..783ea2d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { - "name": "prozilla-os", + "name": "@prozilla-os/prozilla-os", "version": "0.1.0", - "private": false, "author": { "name": "Prozilla", "email": "business@prozilla.dev", @@ -9,6 +8,10 @@ }, "homepage": "https://os.prozilla.dev/", "repository": "https://github.com/Prozilla/ProzillaOS", + "workspaces": [ + "packages/core", + "packages/apps/file-explorer" + ], "type": "module", "scripts": { "start": "vite", @@ -24,6 +27,7 @@ "@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", + "@prozilla-os/core": "^1.0.0", "@vitejs/plugin-react-swc": "^3.7.0", "anser": "^2.1.1", "escape-carriage": "^1.3.1", diff --git a/src/components/apps/browser/Browser.module.css b/packages/apps/browser/components/Browser.module.css similarity index 100% rename from src/components/apps/browser/Browser.module.css rename to packages/apps/browser/components/Browser.module.css diff --git a/src/components/apps/browser/Browser.tsx b/packages/apps/browser/components/Browser.tsx similarity index 100% rename from src/components/apps/browser/Browser.tsx rename to packages/apps/browser/components/Browser.tsx diff --git a/src/config/apps/browser.config.ts b/packages/apps/browser/config/browser.config.ts similarity index 100% rename from src/config/apps/browser.config.ts rename to packages/apps/browser/config/browser.config.ts diff --git a/src/components/apps/calculator/Calculator.module.css b/packages/apps/calculator/components/Calculator.module.css similarity index 100% rename from src/components/apps/calculator/Calculator.module.css rename to packages/apps/calculator/components/Calculator.module.css diff --git a/src/components/apps/calculator/Calculator.tsx b/packages/apps/calculator/components/Calculator.tsx similarity index 100% rename from src/components/apps/calculator/Calculator.tsx rename to packages/apps/calculator/components/Calculator.tsx diff --git a/packages/apps/file-explorer/README.md b/packages/apps/file-explorer/README.md new file mode 100644 index 0000000..dbe82f7 --- /dev/null +++ b/packages/apps/file-explorer/README.md @@ -0,0 +1 @@ +# @ProzillaOS/file-explorer \ No newline at end of file diff --git a/packages/apps/file-explorer/package.json b/packages/apps/file-explorer/package.json new file mode 100644 index 0000000..efc91a0 --- /dev/null +++ b/packages/apps/file-explorer/package.json @@ -0,0 +1,29 @@ +{ + "name": "@prozilla-os/file-explorer", + "version": "1.0.0", + "author": { + "name": "Prozilla", + "email": "business@prozilla.dev", + "url": "https://prozilla.dev/" + }, + "main": "src/index.ts", + "type": "module", + "scripts": { + "test": "tsc --watch" + }, + "repository": "https://github.com/Prozilla/ProzillaOS", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "react": "^18.3.1", + "@prozilla-os/core": "^1.0.0" + }, + "devDependencies": { + "typescript": "^5.4.5" + }, + "files": [ + "src/index.ts" + ] +} diff --git a/src/components/apps/file-explorer/FileExplorer.module.css b/packages/apps/file-explorer/src/components/FileExplorer.module.css similarity index 100% rename from src/components/apps/file-explorer/FileExplorer.module.css rename to packages/apps/file-explorer/src/components/FileExplorer.module.css diff --git a/src/components/apps/file-explorer/FileExplorer.tsx b/packages/apps/file-explorer/src/components/FileExplorer.tsx similarity index 79% rename from src/components/apps/file-explorer/FileExplorer.tsx rename to packages/apps/file-explorer/src/components/FileExplorer.tsx index beefaff..7067ce7 100644 --- a/src/components/apps/file-explorer/FileExplorer.tsx +++ b/packages/apps/file-explorer/src/components/FileExplorer.tsx @@ -1,34 +1,12 @@ import { ChangeEventHandler, FC, KeyboardEventHandler, useCallback, useEffect, useState } from "react"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext"; import styles from "./FileExplorer.module.css"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faArrowUp, faCaretLeft, faCaretRight, faCircleInfo, faCog, faDesktop, faFileLines, faHouse, faImage, faPlus, faSearch, faTrash } from "@fortawesome/free-solid-svg-icons"; -import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext"; -import { useContextMenu } from "../../../hooks/modals/contextMenu"; import { QuickAccessButton } from "./QuickAccessButton"; -import { useWindowedModal } from "../../../hooks/modals/windowedModal"; -import { Vector2 } from "../../../features/math/vector2"; -import { DIALOG_CONTENT_TYPES } from "../../../config/modals.config"; -import { DirectoryList, FileEventHandler, FolderEventHandler, OnSelectionChangeParams } from "./directory-list/DirectoryList"; -import { Actions } from "../../actions/Actions"; -import { ClickAction } from "../../actions/actions/ClickAction"; -import utilStyles from "../../../styles/utils.module.css"; -import { DialogBox } from "../../modals/dialog-box/DialogBox"; -import { AppsManager } from "../../../features/apps/appsManager"; -import { APPS, APP_ICONS, APP_NAMES } from "../../../config/apps.config"; -import { TITLE_SEPARATOR } from "../../../config/windows.config"; -import { FileProperties } from "../../modals/file-properties/FileProperties"; -import { useHistory } from "../../../hooks/_utils/history"; -import { Divider } from "../../actions/actions/Divider"; -import { CODE_FORMATS } from "../../../config/apps/textEditor.config"; -import { SELECTOR_MODE } from "../../../config/apps/fileExplorer.config"; -import { WindowProps } from "../../windows/WindowView"; -import { VirtualFolder } from "../../../features/virtual-drive/folder/virtualFolder"; -import { VirtualFile } from "../../../features/virtual-drive/file"; -import { VirtualFolderLink } from "../../../features/virtual-drive/folder/virtualFolderLink"; import { ImportButton } from "./ImportButton"; -import { useAlert } from "../../../hooks/modals/alert"; -import { VirtualRoot } from "../../../features/virtual-drive/root/virtualRoot"; +import { Actions, AppsManager, ClickAction, CODE_EXTENSIONS, DIALOG_CONTENT_TYPES, DialogBox, DirectoryList, Divider, FileEventHandler, FolderEventHandler, OnSelectionChangeParams, useAlert, useContextMenu, useHistory, useSystemManager, useVirtualRoot, useWindowedModal, useWindowsManager, utilStyles, Vector2, VirtualFile, VirtualFolder, VirtualFolderLink, VirtualRoot, WindowProps } from "@prozilla-os/core"; +import { SELECTOR_MODE } from "../constants/fileExplorer.const"; +import { FileProperties } from "./modals/file-properties/FileProperties"; interface FileExplorerProps extends WindowProps { path?: string; @@ -38,13 +16,15 @@ interface FileExplorerProps extends WindowProps { onSelectionFinish: Function; } -export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectionChange, onSelectionFinish }: FileExplorerProps) { +export function FileExplorer({ app, path: startPath, selectorMode, Footer, onSelectionChange, onSelectionFinish }: FileExplorerProps) { const isSelector = (Footer != null && selectorMode != null && selectorMode !== SELECTOR_MODE.NONE); const virtualRoot = useVirtualRoot(); + const windowsManager = useWindowsManager(); + const { windowsConfig } = useSystemManager(); + const [currentDirectory, setCurrentDirectory] = useState(virtualRoot?.navigate(startPath ?? "~") as VirtualFolder); const [path, setPath] = useState(currentDirectory?.path ?? ""); - const windowsManager = useWindowsManager(); const [showHidden] = useState(true); const { history, stateIndex, pushState, undo, redo, undoAvailable, redoAvailable } = useHistory(currentDirectory.path); const { alert } = useAlert(); @@ -65,7 +45,7 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio }}/> { openWindowedModal({ - title: `${(file as VirtualFile).id} ${TITLE_SEPARATOR} Properties`, + title: `${(file as VirtualFile).id} ${windowsConfig.titleSeparator} Properties`, iconUrl: (file as VirtualFile).getIconUrl(), size: new Vector2(400, 500), Modal: (props: object) => @@ -78,9 +58,9 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio { changeDirectory((folder as VirtualFolderLink).linkedPath ?? (folder as VirtualFolder).name); }}/> - { + {/* { windowsManager?.open(APPS.TERMINAL, { startPath: (folder as VirtualFolder).path }); - }}/> + }}/> */} { (folder as VirtualFolder).delete(); @@ -129,7 +109,7 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio alert({ title: (error as Error).message, text: "You have exceeded the virtual drive capacity. Files and folders will not be saved until more storage is freed.", - iconUrl: AppsManager.getAppIconUrl(APPS.FILE_EXPLORER), + iconUrl: app?.id != null ? AppsManager.getAppIconUrl(app.id) : undefined, size: new Vector2(300, 200), single: true, }); @@ -158,7 +138,7 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio if (directory == null) { openWindowedModal({ title: "Error", - iconUrl: AppsManager.getAppIconUrl(APPS.FILE_EXPLORER), + iconUrl: app?.id != null ? AppsManager.getAppIconUrl(app.id) : undefined, size: new Vector2(300, 150), Modal: (props: {}) => @@ -267,7 +247,7 @@ export function FileExplorer({ path: startPath, selectorMode, Footer, onSelectio if (isSelector) return void onSelectionFinish?.(); const options: Record = {}; - if (file.extension === "md" || (file.extension != null && CODE_FORMATS.includes(file.extension))) + if (file.extension === "md" || (file.extension != null && CODE_EXTENSIONS.includes(file.extension))) options.mode = "view"; windowsManager?.openFile(file, options); }} diff --git a/src/components/apps/file-explorer/ImportButton.tsx b/packages/apps/file-explorer/src/components/ImportButton.tsx similarity index 90% rename from src/components/apps/file-explorer/ImportButton.tsx rename to packages/apps/file-explorer/src/components/ImportButton.tsx index 3d2fda4..ca897ee 100644 --- a/src/components/apps/file-explorer/ImportButton.tsx +++ b/packages/apps/file-explorer/src/components/ImportButton.tsx @@ -2,8 +2,7 @@ import { FormEventHandler, ReactElement } from "react"; import styles from "./FileExplorer.module.css"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faDownload } from "@fortawesome/free-solid-svg-icons"; -import { VirtualFile } from "../../../features/virtual-drive/file"; -import { VirtualFolder } from "../../../features/virtual-drive/folder"; +import { VirtualFolder, VirtualFile } from "@prozilla-os/core"; interface ImportButtonProps { directory: VirtualFolder; diff --git a/src/components/apps/file-explorer/QuickAccessButton.tsx b/packages/apps/file-explorer/src/components/QuickAccessButton.tsx similarity index 90% rename from src/components/apps/file-explorer/QuickAccessButton.tsx rename to packages/apps/file-explorer/src/components/QuickAccessButton.tsx index 66c8b24..9f1d9ff 100644 --- a/src/components/apps/file-explorer/QuickAccessButton.tsx +++ b/packages/apps/file-explorer/src/components/QuickAccessButton.tsx @@ -1,7 +1,7 @@ import { FontAwesomeIcon, FontAwesomeIconProps } from "@fortawesome/react-fontawesome"; import styles from "./FileExplorer.module.css"; -import utilStyles from "../../../styles/utils.module.css"; import { MouseEventHandler } from "react"; +import { utilStyles } from "@prozilla-os/core"; interface QuickAcessButton { onClick: MouseEventHandler; diff --git a/src/components/modals/file-properties/FileProperties.module.css b/packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.module.css similarity index 100% rename from src/components/modals/file-properties/FileProperties.module.css rename to packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.module.css diff --git a/src/components/modals/file-properties/FileProperties.tsx b/packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.tsx similarity index 78% rename from src/components/modals/file-properties/FileProperties.tsx rename to packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.tsx index 6f9ce7a..1d76616 100644 --- a/src/components/modals/file-properties/FileProperties.tsx +++ b/packages/apps/file-explorer/src/components/modals/file-properties/FileProperties.tsx @@ -1,11 +1,6 @@ -import { ImagePreview } from "../../apps/file-explorer/directory-list/ImagePreview"; -import { WindowedModal } from "../_utils/WindowedModal"; import styles from "./FileProperties.module.css"; import utilStyles from "../../../styles/utils.module.css"; -import { StorageManager } from "../../../features/storage/storageManager"; -import { AppsManager } from "../../../features/apps/appsManager"; -import { ModalProps } from "../ModalView.js"; -import { VirtualFile } from "../../../features/virtual-drive/file"; +import { AppsManager, ImagePreview, ModalProps, StorageManager, VirtualFile, WindowedModal } from "@prozilla-os/core"; interface FilePropetiesProps extends ModalProps { file: VirtualFile; diff --git a/src/config/apps/fileExplorer.config.ts b/packages/apps/file-explorer/src/constants/fileExplorer.const.ts similarity index 100% rename from src/config/apps/fileExplorer.config.ts rename to packages/apps/file-explorer/src/constants/fileExplorer.const.ts diff --git a/packages/apps/file-explorer/src/index.ts b/packages/apps/file-explorer/src/index.ts new file mode 100644 index 0000000..95c8fe9 --- /dev/null +++ b/packages/apps/file-explorer/src/index.ts @@ -0,0 +1,2 @@ +export { SELECTOR_MODE } from "./constants/fileExplorer.const"; +export { FileExplorer } from "./components/FileExplorer"; \ No newline at end of file diff --git a/src/types/vite-env.d.ts b/packages/apps/file-explorer/src/types/vite-env.d.ts similarity index 100% rename from src/types/vite-env.d.ts rename to packages/apps/file-explorer/src/types/vite-env.d.ts diff --git a/packages/apps/file-explorer/tsconfig.json b/packages/apps/file-explorer/tsconfig.json new file mode 100644 index 0000000..777df14 --- /dev/null +++ b/packages/apps/file-explorer/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../../tsconfig.json", + "include": ["src/**/*"], + "exclude": ["node_modules"] +} \ No newline at end of file diff --git a/src/components/apps/logic-sim/CircuitView.module.css b/packages/apps/logic-sim/components/CircuitView.module.css similarity index 100% rename from src/components/apps/logic-sim/CircuitView.module.css rename to packages/apps/logic-sim/components/CircuitView.module.css diff --git a/src/components/apps/logic-sim/CircuitView.tsx b/packages/apps/logic-sim/components/CircuitView.tsx similarity index 100% rename from src/components/apps/logic-sim/CircuitView.tsx rename to packages/apps/logic-sim/components/CircuitView.tsx diff --git a/src/components/apps/logic-sim/LogicSim.module.css b/packages/apps/logic-sim/components/LogicSim.module.css similarity index 100% rename from src/components/apps/logic-sim/LogicSim.module.css rename to packages/apps/logic-sim/components/LogicSim.module.css diff --git a/src/components/apps/logic-sim/LogicSim.tsx b/packages/apps/logic-sim/components/LogicSim.tsx similarity index 100% rename from src/components/apps/logic-sim/LogicSim.tsx rename to packages/apps/logic-sim/components/LogicSim.tsx diff --git a/src/config/apps/logicSim.config.ts b/packages/apps/logic-sim/config/logicSim.config.ts similarity index 100% rename from src/config/apps/logicSim.config.ts rename to packages/apps/logic-sim/config/logicSim.config.ts diff --git a/src/features/apps/logic-sim/_utils/state.ts b/packages/apps/logic-sim/core/_utils/state.ts similarity index 100% rename from src/features/apps/logic-sim/_utils/state.ts rename to packages/apps/logic-sim/core/_utils/state.ts diff --git a/src/features/apps/logic-sim/chips/chip.ts b/packages/apps/logic-sim/core/chips/chip.ts similarity index 99% rename from src/features/apps/logic-sim/chips/chip.ts rename to packages/apps/logic-sim/core/chips/chip.ts index c295f43..5c0ed52 100644 --- a/src/features/apps/logic-sim/chips/chip.ts +++ b/packages/apps/logic-sim/core/chips/chip.ts @@ -1,6 +1,6 @@ import { CHIP, COLORS, PIN } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Circuit } from "../core/circuit"; +import { Circuit } from "../circuit"; import { Pin, PinJson } from "../pins/pin"; import { State } from "../_utils/state"; diff --git a/src/features/apps/logic-sim/chips/chipsManager.ts b/packages/apps/logic-sim/core/chips/chipsManager.ts similarity index 98% rename from src/features/apps/logic-sim/chips/chipsManager.ts rename to packages/apps/logic-sim/core/chips/chipsManager.ts index cdd16dd..330c10d 100644 --- a/src/features/apps/logic-sim/chips/chipsManager.ts +++ b/packages/apps/logic-sim/core/chips/chipsManager.ts @@ -1,6 +1,6 @@ import { Chip } from "./chip"; import { State } from "../_utils/state"; -import { Circuit, CircuitJson } from "../core/circuit"; +import { Circuit, CircuitJson } from "../circuit"; import { VirtualFolder } from "../../../virtual-drive/folder"; import { ControlledPin } from "../pins/controlledPin"; import { Vector2 } from "../../../math/vector2"; diff --git a/src/features/apps/logic-sim/core/circuit.ts b/packages/apps/logic-sim/core/circuit.ts similarity index 98% rename from src/features/apps/logic-sim/core/circuit.ts rename to packages/apps/logic-sim/core/circuit.ts index 728bf40..804dd00 100644 --- a/src/features/apps/logic-sim/core/circuit.ts +++ b/packages/apps/logic-sim/core/circuit.ts @@ -1,9 +1,9 @@ import { BACKGROUND, COLORS, CURSORS, FONT, CONTROLLER, ENABLE_COLOR_CACHING } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Chip, ChipJson } from "../chips/chip"; -import { ControlledPin } from "../pins/controlledPin"; +import { Chip, ChipJson } from "./chips/chip"; +import { ControlledPin } from "./pins/controlledPin"; import { InputHandler } from "./inputHandler"; -import { Wire, WireJson } from "../wires/wire"; +import { Wire, WireJson } from "./wires/wire"; import { clamp } from "../../../_utils/math.utils"; export interface CircuitJson extends ChipJson { diff --git a/src/features/apps/logic-sim/core/inputHandler.ts b/packages/apps/logic-sim/core/inputHandler.ts similarity index 98% rename from src/features/apps/logic-sim/core/inputHandler.ts rename to packages/apps/logic-sim/core/inputHandler.ts index ee4329e..6c0a41d 100644 --- a/src/features/apps/logic-sim/core/inputHandler.ts +++ b/packages/apps/logic-sim/core/inputHandler.ts @@ -1,11 +1,11 @@ import { CONTROLLER, PIN, WIRE } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Chip } from "../chips/chip"; +import { Chip } from "./chips/chip"; import { Circuit } from "./circuit"; -import { ControlledPin } from "../pins/controlledPin"; -import { Pin } from "../pins/pin"; -import { State } from "../_utils/state"; -import { Wire } from "../wires/wire"; +import { ControlledPin } from "./pins/controlledPin"; +import { Pin } from "./pins/pin"; +import { State } from "./_utils/state"; +import { Wire } from "./wires/wire"; export class InputHandler { circuit!: Circuit; diff --git a/src/features/apps/logic-sim/pins/controlledPin.ts b/packages/apps/logic-sim/core/pins/controlledPin.ts similarity index 98% rename from src/features/apps/logic-sim/pins/controlledPin.ts rename to packages/apps/logic-sim/core/pins/controlledPin.ts index 81e74e4..960a3db 100644 --- a/src/features/apps/logic-sim/pins/controlledPin.ts +++ b/packages/apps/logic-sim/core/pins/controlledPin.ts @@ -1,6 +1,6 @@ import { COLORS, CONTROLLER, CURSORS } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Circuit } from "../core/circuit"; +import { Circuit } from "../circuit"; import { Pin } from "./pin"; export class ControlledPin extends Pin { diff --git a/src/features/apps/logic-sim/pins/pin.ts b/packages/apps/logic-sim/core/pins/pin.ts similarity index 98% rename from src/features/apps/logic-sim/pins/pin.ts rename to packages/apps/logic-sim/core/pins/pin.ts index ed6a571..85f4cea 100644 --- a/src/features/apps/logic-sim/pins/pin.ts +++ b/packages/apps/logic-sim/core/pins/pin.ts @@ -1,7 +1,7 @@ import { COLORS, CONTROLLER, CURSORS, PIN } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; import { Chip } from "../chips/chip"; -import { Circuit } from "../core/circuit"; +import { Circuit } from "../circuit"; import { State } from "../_utils/state"; import { Wire } from "../wires/wire"; diff --git a/src/features/apps/logic-sim/wires/wire.ts b/packages/apps/logic-sim/core/wires/wire.ts similarity index 97% rename from src/features/apps/logic-sim/wires/wire.ts rename to packages/apps/logic-sim/core/wires/wire.ts index 973e665..37444c7 100644 --- a/src/features/apps/logic-sim/wires/wire.ts +++ b/packages/apps/logic-sim/core/wires/wire.ts @@ -1,6 +1,6 @@ import { WIRE } from "../../../../config/apps/logicSim.config"; import { Vector2 } from "../../../math/vector2"; -import { Circuit } from "../core/circuit"; +import { Circuit } from "../circuit"; import { Pin } from "../pins/pin"; import { State } from "../_utils/state"; diff --git a/src/components/apps/media-viewer/MediaViewer.module.css b/packages/apps/media-viewer/components/MediaViewer.module.css similarity index 100% rename from src/components/apps/media-viewer/MediaViewer.module.css rename to packages/apps/media-viewer/components/MediaViewer.module.css diff --git a/src/components/apps/media-viewer/MediaViewer.tsx b/packages/apps/media-viewer/components/MediaViewer.tsx similarity index 100% rename from src/components/apps/media-viewer/MediaViewer.tsx rename to packages/apps/media-viewer/components/MediaViewer.tsx diff --git a/src/config/apps/mediaViewer.config.ts b/packages/apps/media-viewer/config/mediaViewer.config.ts similarity index 100% rename from src/config/apps/mediaViewer.config.ts rename to packages/apps/media-viewer/config/mediaViewer.config.ts diff --git a/src/components/apps/settings/Settings.module.css b/packages/apps/settings/components/Settings.module.css similarity index 100% rename from src/components/apps/settings/Settings.module.css rename to packages/apps/settings/components/Settings.module.css diff --git a/src/components/apps/settings/Settings.tsx b/packages/apps/settings/components/Settings.tsx similarity index 100% rename from src/components/apps/settings/Settings.tsx rename to packages/apps/settings/components/Settings.tsx diff --git a/src/components/apps/settings/tabs/AboutSettings.tsx b/packages/apps/settings/components/tabs/AboutSettings.tsx similarity index 100% rename from src/components/apps/settings/tabs/AboutSettings.tsx rename to packages/apps/settings/components/tabs/AboutSettings.tsx diff --git a/src/components/apps/settings/tabs/AppOption.tsx b/packages/apps/settings/components/tabs/AppOption.tsx similarity index 100% rename from src/components/apps/settings/tabs/AppOption.tsx rename to packages/apps/settings/components/tabs/AppOption.tsx diff --git a/src/components/apps/settings/tabs/AppearanceSettings.tsx b/packages/apps/settings/components/tabs/AppearanceSettings.tsx similarity index 100% rename from src/components/apps/settings/tabs/AppearanceSettings.tsx rename to packages/apps/settings/components/tabs/AppearanceSettings.tsx diff --git a/src/components/apps/settings/tabs/AppsSettings.tsx b/packages/apps/settings/components/tabs/AppsSettings.tsx similarity index 100% rename from src/components/apps/settings/tabs/AppsSettings.tsx rename to packages/apps/settings/components/tabs/AppsSettings.tsx diff --git a/src/components/apps/settings/tabs/StorageSettings.tsx b/packages/apps/settings/components/tabs/StorageSettings.tsx similarity index 100% rename from src/components/apps/settings/tabs/StorageSettings.tsx rename to packages/apps/settings/components/tabs/StorageSettings.tsx diff --git a/src/config/apps/settings.config.ts b/packages/apps/settings/config/settings.config.ts similarity index 100% rename from src/config/apps/settings.config.ts rename to packages/apps/settings/config/settings.config.ts diff --git a/src/components/apps/terminal/Ansi.tsx b/packages/apps/terminal/components/Ansi.tsx similarity index 100% rename from src/components/apps/terminal/Ansi.tsx rename to packages/apps/terminal/components/Ansi.tsx diff --git a/src/components/apps/terminal/InputLine.tsx b/packages/apps/terminal/components/InputLine.tsx similarity index 100% rename from src/components/apps/terminal/InputLine.tsx rename to packages/apps/terminal/components/InputLine.tsx diff --git a/src/components/apps/terminal/OutputLine.tsx b/packages/apps/terminal/components/OutputLine.tsx similarity index 100% rename from src/components/apps/terminal/OutputLine.tsx rename to packages/apps/terminal/components/OutputLine.tsx diff --git a/src/components/apps/terminal/Terminal.module.css b/packages/apps/terminal/components/Terminal.module.css similarity index 100% rename from src/components/apps/terminal/Terminal.module.css rename to packages/apps/terminal/components/Terminal.module.css diff --git a/src/components/apps/terminal/Terminal.tsx b/packages/apps/terminal/components/Terminal.tsx similarity index 100% rename from src/components/apps/terminal/Terminal.tsx rename to packages/apps/terminal/components/Terminal.tsx diff --git a/src/config/apps/terminal.config.ts b/packages/apps/terminal/config/terminal.config.ts similarity index 100% rename from src/config/apps/terminal.config.ts rename to packages/apps/terminal/config/terminal.config.ts diff --git a/src/features/apps/terminal/_utils/terminal.utils.ts b/packages/apps/terminal/core/_utils/terminal.utils.ts similarity index 100% rename from src/features/apps/terminal/_utils/terminal.utils.ts rename to packages/apps/terminal/core/_utils/terminal.utils.ts diff --git a/src/features/apps/terminal/command.ts b/packages/apps/terminal/core/command.ts similarity index 100% rename from src/features/apps/terminal/command.ts rename to packages/apps/terminal/core/command.ts diff --git a/src/features/apps/terminal/commands.ts b/packages/apps/terminal/core/commands.ts similarity index 100% rename from src/features/apps/terminal/commands.ts rename to packages/apps/terminal/core/commands.ts diff --git a/src/features/apps/terminal/commands/cat.ts b/packages/apps/terminal/core/commands/cat.ts similarity index 100% rename from src/features/apps/terminal/commands/cat.ts rename to packages/apps/terminal/core/commands/cat.ts diff --git a/src/features/apps/terminal/commands/cd.ts b/packages/apps/terminal/core/commands/cd.ts similarity index 100% rename from src/features/apps/terminal/commands/cd.ts rename to packages/apps/terminal/core/commands/cd.ts diff --git a/src/features/apps/terminal/commands/clear.ts b/packages/apps/terminal/core/commands/clear.ts similarity index 100% rename from src/features/apps/terminal/commands/clear.ts rename to packages/apps/terminal/core/commands/clear.ts diff --git a/src/features/apps/terminal/commands/cmatrix.ts b/packages/apps/terminal/core/commands/cmatrix.ts similarity index 100% rename from src/features/apps/terminal/commands/cmatrix.ts rename to packages/apps/terminal/core/commands/cmatrix.ts diff --git a/src/features/apps/terminal/commands/compgen.ts b/packages/apps/terminal/core/commands/compgen.ts similarity index 100% rename from src/features/apps/terminal/commands/compgen.ts rename to packages/apps/terminal/core/commands/compgen.ts diff --git a/src/features/apps/terminal/commands/cowsay.ts b/packages/apps/terminal/core/commands/cowsay.ts similarity index 100% rename from src/features/apps/terminal/commands/cowsay.ts rename to packages/apps/terminal/core/commands/cowsay.ts diff --git a/src/features/apps/terminal/commands/dir.ts b/packages/apps/terminal/core/commands/dir.ts similarity index 100% rename from src/features/apps/terminal/commands/dir.ts rename to packages/apps/terminal/core/commands/dir.ts diff --git a/src/features/apps/terminal/commands/echo.ts b/packages/apps/terminal/core/commands/echo.ts similarity index 100% rename from src/features/apps/terminal/commands/echo.ts rename to packages/apps/terminal/core/commands/echo.ts diff --git a/src/features/apps/terminal/commands/exit.ts b/packages/apps/terminal/core/commands/exit.ts similarity index 100% rename from src/features/apps/terminal/commands/exit.ts rename to packages/apps/terminal/core/commands/exit.ts diff --git a/src/features/apps/terminal/commands/fortune.ts b/packages/apps/terminal/core/commands/fortune.ts similarity index 100% rename from src/features/apps/terminal/commands/fortune.ts rename to packages/apps/terminal/core/commands/fortune.ts diff --git a/src/features/apps/terminal/commands/help.ts b/packages/apps/terminal/core/commands/help.ts similarity index 100% rename from src/features/apps/terminal/commands/help.ts rename to packages/apps/terminal/core/commands/help.ts diff --git a/src/features/apps/terminal/commands/hostname.ts b/packages/apps/terminal/core/commands/hostname.ts similarity index 100% rename from src/features/apps/terminal/commands/hostname.ts rename to packages/apps/terminal/core/commands/hostname.ts diff --git a/src/features/apps/terminal/commands/lolcat.ts b/packages/apps/terminal/core/commands/lolcat.ts similarity index 100% rename from src/features/apps/terminal/commands/lolcat.ts rename to packages/apps/terminal/core/commands/lolcat.ts diff --git a/src/features/apps/terminal/commands/ls.ts b/packages/apps/terminal/core/commands/ls.ts similarity index 100% rename from src/features/apps/terminal/commands/ls.ts rename to packages/apps/terminal/core/commands/ls.ts diff --git a/src/features/apps/terminal/commands/make.ts b/packages/apps/terminal/core/commands/make.ts similarity index 100% rename from src/features/apps/terminal/commands/make.ts rename to packages/apps/terminal/core/commands/make.ts diff --git a/src/features/apps/terminal/commands/man.ts b/packages/apps/terminal/core/commands/man.ts similarity index 100% rename from src/features/apps/terminal/commands/man.ts rename to packages/apps/terminal/core/commands/man.ts diff --git a/src/features/apps/terminal/commands/mkdir.ts b/packages/apps/terminal/core/commands/mkdir.ts similarity index 100% rename from src/features/apps/terminal/commands/mkdir.ts rename to packages/apps/terminal/core/commands/mkdir.ts diff --git a/src/features/apps/terminal/commands/neofetch.ts b/packages/apps/terminal/core/commands/neofetch.ts similarity index 100% rename from src/features/apps/terminal/commands/neofetch.ts rename to packages/apps/terminal/core/commands/neofetch.ts diff --git a/src/features/apps/terminal/commands/pwd.ts b/packages/apps/terminal/core/commands/pwd.ts similarity index 100% rename from src/features/apps/terminal/commands/pwd.ts rename to packages/apps/terminal/core/commands/pwd.ts diff --git a/src/features/apps/terminal/commands/reboot.ts b/packages/apps/terminal/core/commands/reboot.ts similarity index 100% rename from src/features/apps/terminal/commands/reboot.ts rename to packages/apps/terminal/core/commands/reboot.ts diff --git a/src/features/apps/terminal/commands/reload.ts b/packages/apps/terminal/core/commands/reload.ts similarity index 100% rename from src/features/apps/terminal/commands/reload.ts rename to packages/apps/terminal/core/commands/reload.ts diff --git a/src/features/apps/terminal/commands/rev.ts b/packages/apps/terminal/core/commands/rev.ts similarity index 100% rename from src/features/apps/terminal/commands/rev.ts rename to packages/apps/terminal/core/commands/rev.ts diff --git a/src/features/apps/terminal/commands/rm.ts b/packages/apps/terminal/core/commands/rm.ts similarity index 100% rename from src/features/apps/terminal/commands/rm.ts rename to packages/apps/terminal/core/commands/rm.ts diff --git a/src/features/apps/terminal/commands/rmdir.ts b/packages/apps/terminal/core/commands/rmdir.ts similarity index 100% rename from src/features/apps/terminal/commands/rmdir.ts rename to packages/apps/terminal/core/commands/rmdir.ts diff --git a/src/features/apps/terminal/commands/sl.ts b/packages/apps/terminal/core/commands/sl.ts similarity index 100% rename from src/features/apps/terminal/commands/sl.ts rename to packages/apps/terminal/core/commands/sl.ts diff --git a/src/features/apps/terminal/commands/touch.ts b/packages/apps/terminal/core/commands/touch.ts similarity index 100% rename from src/features/apps/terminal/commands/touch.ts rename to packages/apps/terminal/core/commands/touch.ts diff --git a/src/features/apps/terminal/commands/uptime.ts b/packages/apps/terminal/core/commands/uptime.ts similarity index 100% rename from src/features/apps/terminal/commands/uptime.ts rename to packages/apps/terminal/core/commands/uptime.ts diff --git a/src/features/apps/terminal/commands/whatis.ts b/packages/apps/terminal/core/commands/whatis.ts similarity index 100% rename from src/features/apps/terminal/commands/whatis.ts rename to packages/apps/terminal/core/commands/whatis.ts diff --git a/src/features/apps/terminal/commands/whoami.ts b/packages/apps/terminal/core/commands/whoami.ts similarity index 100% rename from src/features/apps/terminal/commands/whoami.ts rename to packages/apps/terminal/core/commands/whoami.ts diff --git a/src/features/apps/terminal/stream.ts b/packages/apps/terminal/core/stream.ts similarity index 100% rename from src/features/apps/terminal/stream.ts rename to packages/apps/terminal/core/stream.ts diff --git a/src/components/apps/text-editor/TextEditor.module.css b/packages/apps/text-editor/components/TextEditor.module.css similarity index 100% rename from src/components/apps/text-editor/TextEditor.module.css rename to packages/apps/text-editor/components/TextEditor.module.css diff --git a/src/components/apps/text-editor/TextEditor.tsx b/packages/apps/text-editor/components/TextEditor.tsx similarity index 100% rename from src/components/apps/text-editor/TextEditor.tsx rename to packages/apps/text-editor/components/TextEditor.tsx diff --git a/src/components/apps/text-editor/overrides/MarkdownBlockquote.tsx b/packages/apps/text-editor/components/overrides/MarkdownBlockquote.tsx similarity index 100% rename from src/components/apps/text-editor/overrides/MarkdownBlockquote.tsx rename to packages/apps/text-editor/components/overrides/MarkdownBlockquote.tsx diff --git a/src/components/apps/text-editor/overrides/MarkdownImage.tsx b/packages/apps/text-editor/components/overrides/MarkdownImage.tsx similarity index 100% rename from src/components/apps/text-editor/overrides/MarkdownImage.tsx rename to packages/apps/text-editor/components/overrides/MarkdownImage.tsx diff --git a/src/components/apps/text-editor/overrides/MarkdownLink.tsx b/packages/apps/text-editor/components/overrides/MarkdownLink.tsx similarity index 100% rename from src/components/apps/text-editor/overrides/MarkdownLink.tsx rename to packages/apps/text-editor/components/overrides/MarkdownLink.tsx diff --git a/src/config/apps/textEditor.config.ts b/packages/apps/text-editor/config/textEditor.config.ts similarity index 100% rename from src/config/apps/textEditor.config.ts rename to packages/apps/text-editor/config/textEditor.config.ts diff --git a/src/features/apps/text-editor/_utils/sanitizeProps.ts b/packages/apps/text-editor/core/_utils/sanitizeProps.ts similarity index 100% rename from src/features/apps/text-editor/_utils/sanitizeProps.ts rename to packages/apps/text-editor/core/_utils/sanitizeProps.ts diff --git a/packages/core/README.md b/packages/core/README.md new file mode 100644 index 0000000..aa3cf87 --- /dev/null +++ b/packages/core/README.md @@ -0,0 +1 @@ +# @ProzillaOS/core \ No newline at end of file diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 0000000..d7d1bcc --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,35 @@ +{ + "name": "@prozilla-os/core", + "version": "1.0.0", + "author": { + "name": "Prozilla", + "email": "business@prozilla.dev", + "url": "https://prozilla.dev/" + }, + "main": "src/index.ts", + "type": "module", + "scripts": { + "test": "tsc --watch" + }, + "repository": "https://github.com/Prozilla/ProzillaOS", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-regular-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "react": "^18.3.1", + "react-draggable": "^4.4.6", + "react-error-boundary": "^4.0.13", + "react-ga4": "^2.1.0", + "react-svg": "^16.1.34", + "@prozilla-os/file-explorer": "^1.0.0" + }, + "devDependencies": { + "@types/node": "^20.14.2", + "typescript": "^5.4.5" + }, + "files": [ + "src/index.ts" + ] +} diff --git a/src/components/_utils/button/Button.module.css b/packages/core/src/components/_utils/button/Button.module.css similarity index 100% rename from src/components/_utils/button/Button.module.css rename to packages/core/src/components/_utils/button/Button.module.css diff --git a/src/components/_utils/button/Button.tsx b/packages/core/src/components/_utils/button/Button.tsx similarity index 100% rename from src/components/_utils/button/Button.tsx rename to packages/core/src/components/_utils/button/Button.tsx diff --git a/src/components/apps/file-explorer/directory-list/DirectoryList.module.css b/packages/core/src/components/_utils/directory-list/DirectoryList.module.css similarity index 100% rename from src/components/apps/file-explorer/directory-list/DirectoryList.module.css rename to packages/core/src/components/_utils/directory-list/DirectoryList.module.css diff --git a/src/components/apps/file-explorer/directory-list/DirectoryList.tsx b/packages/core/src/components/_utils/directory-list/DirectoryList.tsx similarity index 95% rename from src/components/apps/file-explorer/directory-list/DirectoryList.tsx rename to packages/core/src/components/_utils/directory-list/DirectoryList.tsx index 6bedcd9..472dc1c 100644 --- a/src/components/apps/file-explorer/directory-list/DirectoryList.tsx +++ b/packages/core/src/components/_utils/directory-list/DirectoryList.tsx @@ -1,10 +1,10 @@ import { MouseEventHandler, ReactElement, useEffect, useRef, useState } from "react"; -import { VirtualFile } from "../../../../features/virtual-drive/file"; -import { VirtualFolder } from "../../../../features/virtual-drive/folder/virtualFolder"; -import { Interactable } from "../../../_utils/interactable/Interactable"; import styles from "./DirectoryList.module.css"; import { ImagePreview } from "./ImagePreview"; -import { Vector2 } from "../../../../features/math/vector2"; +import { VirtualFile } from "../../../features/virtual-drive/file"; +import { VirtualFolder } from "../../../features/virtual-drive/folder"; +import { Vector2 } from "../../../features"; +import { Interactable } from "../interactable/Interactable"; export interface OnSelectionChangeParams { files?: string[]; diff --git a/src/components/apps/file-explorer/directory-list/ImagePreview.module.css b/packages/core/src/components/_utils/directory-list/ImagePreview.module.css similarity index 100% rename from src/components/apps/file-explorer/directory-list/ImagePreview.module.css rename to packages/core/src/components/_utils/directory-list/ImagePreview.module.css diff --git a/src/components/apps/file-explorer/directory-list/ImagePreview.tsx b/packages/core/src/components/_utils/directory-list/ImagePreview.tsx similarity index 87% rename from src/components/apps/file-explorer/directory-list/ImagePreview.tsx rename to packages/core/src/components/_utils/directory-list/ImagePreview.tsx index f1e9b98..b737568 100644 --- a/src/components/apps/file-explorer/directory-list/ImagePreview.tsx +++ b/packages/core/src/components/_utils/directory-list/ImagePreview.tsx @@ -1,8 +1,8 @@ import { useState } from "react"; import styles from "./ImagePreview.module.css"; import { ReactSVG } from "react-svg"; -import { AppsManager } from "../../../../features/apps/appsManager"; -import { APPS } from "../../../../config/apps.config"; +import { AppsManager } from "../../../features"; +import { APPS } from "../../../constants/apps.const"; interface ImagePreviewProps { source: string; diff --git a/src/components/_utils/dropdown-button/DropdownButton.module.css b/packages/core/src/components/_utils/dropdown-button/DropdownButton.module.css similarity index 100% rename from src/components/_utils/dropdown-button/DropdownButton.module.css rename to packages/core/src/components/_utils/dropdown-button/DropdownButton.module.css diff --git a/src/components/_utils/dropdown-button/DropdownButton.tsx b/packages/core/src/components/_utils/dropdown-button/DropdownButton.tsx similarity index 100% rename from src/components/_utils/dropdown-button/DropdownButton.tsx rename to packages/core/src/components/_utils/dropdown-button/DropdownButton.tsx diff --git a/src/components/apps/_utils/header-menu/HeaderMenu.module.css b/packages/core/src/components/_utils/header-menu/HeaderMenu.module.css similarity index 100% rename from src/components/apps/_utils/header-menu/HeaderMenu.module.css rename to packages/core/src/components/_utils/header-menu/HeaderMenu.module.css diff --git a/src/components/apps/_utils/header-menu/HeaderMenu.tsx b/packages/core/src/components/_utils/header-menu/HeaderMenu.tsx similarity index 55% rename from src/components/apps/_utils/header-menu/HeaderMenu.tsx rename to packages/core/src/components/_utils/header-menu/HeaderMenu.tsx index 3f5875d..e75aea6 100644 --- a/src/components/apps/_utils/header-menu/HeaderMenu.tsx +++ b/packages/core/src/components/_utils/header-menu/HeaderMenu.tsx @@ -1,9 +1,8 @@ import styles from "./HeaderMenu.module.css"; -import { ActionsProps, Actions } from "../../../actions/Actions"; -import { useZIndex } from "../../../../hooks/z-index/zIndex"; -import { ZIndexManager } from "../../../../features/z-index/zIndexManager"; -import { ActionsManager } from "../../../../features/actions/actionsManager"; - +import { ActionsProps, Actions } from "../../actions/Actions"; +import { useZIndex } from "../../../hooks/z-index/zIndex"; +import { ZIndexManager } from "../../../features/z-index/zIndexManager"; +import { ActionsManager } from "../../../features/actions/actionsManager"; export function HeaderMenu({ children, ...props }: ActionsProps) { const zIndex = useZIndex({ groupIndex: ZIndexManager.GROUPS.MODALS, index: 5 }); diff --git a/packages/core/src/components/_utils/index.ts b/packages/core/src/components/_utils/index.ts new file mode 100644 index 0000000..4869ca4 --- /dev/null +++ b/packages/core/src/components/_utils/index.ts @@ -0,0 +1,10 @@ +export { Button } from "./button/Button"; +export { DirectoryList } from "./directory-list/DirectoryList"; +export { DropdownButton } from "./dropdown-button/DropdownButton"; +export { Interactable } from "./interactable/Interactable"; +export { ProgressBar } from "./progress-bar/ProgressBar"; +export { HeaderMenu } from "./header-menu/HeaderMenu"; +export { WebView } from "./web-view/WebView"; +export { ImagePreview } from "./directory-list/ImagePreview"; + +export type { OnSelectionChangeParams, FileEventHandler, FolderEventHandler } from "./directory-list/DirectoryList"; \ No newline at end of file diff --git a/src/components/_utils/interactable/Interactable.tsx b/packages/core/src/components/_utils/interactable/Interactable.tsx similarity index 82% rename from src/components/_utils/interactable/Interactable.tsx rename to packages/core/src/components/_utils/interactable/Interactable.tsx index 6e78093..04b3943 100644 --- a/src/components/_utils/interactable/Interactable.tsx +++ b/packages/core/src/components/_utils/interactable/Interactable.tsx @@ -1,7 +1,7 @@ import { MouseEventHandler, ReactNode, useState } from "react"; -import { INTERACTIBLE_DOUBLE_CLICK_DELAY } from "../../../config/utils.config"; +import { useSystemManager } from "../../../hooks"; -let timeoutId: NodeJS.Timeout | null = null; +let timeoutId: number | null = null; interface InteractableProps { onClick: Function; @@ -11,6 +11,7 @@ interface InteractableProps { } export function Interactable({ onClick, onDoubleClick, children, ...props }: InteractableProps) { + const { miscConfig } = useSystemManager(); const [clicked, setClicked] = useState(false); const onButtonClick = (event: MouseEvent) => { @@ -32,7 +33,7 @@ export function Interactable({ onClick, onDoubleClick, children, ...props }: Int timeoutId = setTimeout(() => { setClicked(false); - }, INTERACTIBLE_DOUBLE_CLICK_DELAY); + }, miscConfig.doubleClickDelay); }; return
-

{NAME}

+

{systemName}

{AppsManager.APPS.sort((a, b) => a.name.localeCompare(b.name)).map(({ name, id }) => - {screenWidth != null && screenHeight != null && screenWidth > MIN_SCREEN_WIDTH && screenHeight > MIN_SCREEN_HEIGHT + {screenWidth != null && screenHeight != null + && screenWidth > windowsConfig.minScreenSize.x && screenHeight > windowsConfig.minScreenSize.y ?