diff --git a/.env b/.env index 83c60e7c..bfd410d0 100644 --- a/.env +++ b/.env @@ -1,11 +1,11 @@ -// API URLs +# API URLs API_URL=https://api.muetab.com/v2 SPONSORS_URL=https://sponsors.muetab.com GITHUB_URL=https://api.github.com DDG_IMAGE_PROXY=https://external-content.duckduckgo.com/iu/?u= OPENSTREETMAP_URL=https://www.openstreetmap.org -// Mue URLs +# Mue URLs WEBSITE_URL=https://muetab.com PRIVACY_URL=https://muetab.com/privacy BLOG_POST=https://blog.muetab.com/posts/version-7-0 @@ -17,7 +17,7 @@ DONATE_LINK=https://muetab.com/donate SENTRY_DSN =https://430352fd4b174d688ebd82fc85c22c58@o1217438.ingest.sentry.io/6359480 KNOWLEDGEBASE=https://support.muetab.com -// Mue Info +# Mue Info ORG_NAME=mue REPO_NAME=mue EMAIL=hello@muetab.com diff --git a/index.html b/index.html index 8b63da51..a55b8434 100644 --- a/index.html +++ b/index.html @@ -11,28 +11,103 @@
diff --git a/jsconfig.json b/jsconfig.json index 645a04b4..03e0036f 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,7 +1,9 @@ { "compilerOptions": { "module": "commonjs", - "target": "es6" + "target": "es6", + "baseUrl": "src" }, + "include": ["src"], "exclude": ["node_modules"] } diff --git a/manifest/background-chrome.js b/manifest/background-chrome.js deleted file mode 100644 index d53119bd..00000000 --- a/manifest/background-chrome.js +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable no-undef */ -chrome.runtime.setUninstallURL('https://muetab.com/uninstall'); - -chrome.runtime.onInstalled.addListener((details) => { - if (details.reason === 'install') { - chrome.tabs.create({ - url: chrome.runtime.getURL('index.html'), - }); - } -}); diff --git a/manifest/background-firefox.js b/manifest/background.js similarity index 72% rename from manifest/background-firefox.js rename to manifest/background.js index d4d7c792..a889ce2b 100644 --- a/manifest/background-firefox.js +++ b/manifest/background.js @@ -1,4 +1,9 @@ +/* eslint-disable no-use-before-define */ /* eslint-disable no-undef */ +if (typeof browser === "undefined") { + var browser = chrome; +} + browser.runtime.setUninstallURL('https://muetab.com/uninstall'); browser.runtime.onInstalled.addListener((details) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72a3631b..6b705a4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3302,7 +3302,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001587 + caniuse-lite: 1.0.30001588 electron-to-chromium: 1.4.673 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -3337,8 +3337,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001587: - resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} + /caniuse-lite@1.0.30001588: + resolution: {integrity: sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==} dev: true /chalk@2.4.2: @@ -3755,7 +3755,7 @@ packages: string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.1 typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 + typed-array-byte-offset: 1.0.1 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.14 @@ -6342,13 +6342,14 @@ packages: is-typed-array: 1.1.13 dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + /typed-array-byte-offset@1.0.1: + resolution: {integrity: sha512-tcqKMrTRXjqvHN9S3553NPCaGL0VPgFI92lXszmrE8DMhiDPLBYLlvo8Uu4WZAAX/aGqp/T1sbA4ph8EWjDF9Q==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.6 call-bind: 1.0.7 for-each: 0.3.3 + gopd: 1.0.1 has-proto: 1.0.1 is-typed-array: 1.1.13 dev: true diff --git a/scripts/updatetranslations.js b/scripts/updatetranslations.js index e3c4bf0b..d33a49cf 100644 --- a/scripts/updatetranslations.js +++ b/scripts/updatetranslations.js @@ -20,20 +20,20 @@ const compareAndRemoveKeys = (json1, json2) => { } }; -fs.readdirSync('../src/translations').forEach((file) => { +fs.readdirSync('../src/i18n/locales').forEach((file) => { if (file === 'en_GB.json') { return; } - const en = require('../src/translations/en_GB.json'); - const newdata = merge(en, require('../src/translations/' + file)); + const en = require('../src/i18n/locales/en_GB.json'); + const newdata = merge(en, require('../src/i18n/locales/' + file)); // remove strings not in english file compareAndRemoveKeys(newdata, en); // write new file - fs.writeFileSync('../src/translations/' + file, JSON.stringify(newdata, null, 2)); + fs.writeFileSync('../src/i18n/locales/' + file, JSON.stringify(newdata, null, 2)); // add new line - fs.appendFileSync('../src/translations/' + file, '\n'); + fs.appendFileSync('../src/i18n/locales/' + file, '\n'); }); diff --git a/src/App.jsx b/src/App.jsx index 85aced3b..2781c7ca 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,10 +1,10 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { ToastContainer } from 'react-toastify'; -import Background from 'components/widgets/background/Background'; -import Widgets from 'components/widgets/Widgets'; -import Modals from 'components/modals/Modals'; +import Background from 'features/widgets/background/Background'; +import Widgets from 'features/widgets/Widgets'; +import Modals from 'features/modals/Modals'; import { loadSettings, moveSettings } from 'modules/helpers/settings'; diff --git a/public/icons/128x128.png b/src/assets/icons/128x128.png similarity index 100% rename from public/icons/128x128.png rename to src/assets/icons/128x128.png diff --git a/public/icons/16x16.png b/src/assets/icons/16x16.png similarity index 100% rename from public/icons/16x16.png rename to src/assets/icons/16x16.png diff --git a/public/icons/32x32.png b/src/assets/icons/32x32.png similarity index 100% rename from public/icons/32x32.png rename to src/assets/icons/32x32.png diff --git a/public/icons/48x48.png b/src/assets/icons/48x48.png similarity index 100% rename from public/icons/48x48.png rename to src/assets/icons/48x48.png diff --git a/public/icons/mue_about.png b/src/assets/icons/mue_about.png similarity index 100% rename from public/icons/mue_about.png rename to src/assets/icons/mue_about.png diff --git a/public/icons/mue_dark.png b/src/assets/icons/mue_dark.png similarity index 100% rename from public/icons/mue_dark.png rename to src/assets/icons/mue_dark.png diff --git a/public/icons/mue_light.png b/src/assets/icons/mue_light.png similarity index 100% rename from public/icons/mue_light.png rename to src/assets/icons/mue_light.png diff --git a/public/icons/undraw_add_files_modified.svg b/src/assets/icons/undraw_add_files_modified.svg similarity index 100% rename from public/icons/undraw_add_files_modified.svg rename to src/assets/icons/undraw_add_files_modified.svg diff --git a/public/icons/undraw_around_the_world_modified.svg b/src/assets/icons/undraw_around_the_world_modified.svg similarity index 100% rename from public/icons/undraw_around_the_world_modified.svg rename to src/assets/icons/undraw_around_the_world_modified.svg diff --git a/public/icons/undraw_by_the_road.svg b/src/assets/icons/undraw_by_the_road.svg similarity index 100% rename from public/icons/undraw_by_the_road.svg rename to src/assets/icons/undraw_by_the_road.svg diff --git a/public/icons/undraw_celebration.svg b/src/assets/icons/undraw_celebration.svg similarity index 100% rename from public/icons/undraw_celebration.svg rename to src/assets/icons/undraw_celebration.svg diff --git a/public/icons/undraw_dark_mode.svg b/src/assets/icons/undraw_dark_mode.svg similarity index 100% rename from public/icons/undraw_dark_mode.svg rename to src/assets/icons/undraw_dark_mode.svg diff --git a/public/icons/undraw_making_art.svg b/src/assets/icons/undraw_making_art.svg similarity index 100% rename from public/icons/undraw_making_art.svg rename to src/assets/icons/undraw_making_art.svg diff --git a/public/icons/undraw_on_the_way.svg b/src/assets/icons/undraw_on_the_way.svg similarity index 100% rename from public/icons/undraw_on_the_way.svg rename to src/assets/icons/undraw_on_the_way.svg diff --git a/public/icons/undraw_private_data_modified.svg b/src/assets/icons/undraw_private_data_modified.svg similarity index 100% rename from public/icons/undraw_private_data_modified.svg rename to src/assets/icons/undraw_private_data_modified.svg diff --git a/public/icons/undraw_upgrade_modified.svg b/src/assets/icons/undraw_upgrade_modified.svg similarity index 100% rename from public/icons/undraw_upgrade_modified.svg rename to src/assets/icons/undraw_upgrade_modified.svg diff --git a/public/offline-images/1.webp b/src/assets/offline-images/1.webp similarity index 100% rename from public/offline-images/1.webp rename to src/assets/offline-images/1.webp diff --git a/public/offline-images/10.webp b/src/assets/offline-images/10.webp similarity index 100% rename from public/offline-images/10.webp rename to src/assets/offline-images/10.webp diff --git a/public/offline-images/11.webp b/src/assets/offline-images/11.webp similarity index 100% rename from public/offline-images/11.webp rename to src/assets/offline-images/11.webp diff --git a/public/offline-images/12.webp b/src/assets/offline-images/12.webp similarity index 100% rename from public/offline-images/12.webp rename to src/assets/offline-images/12.webp diff --git a/public/offline-images/2.webp b/src/assets/offline-images/2.webp similarity index 100% rename from public/offline-images/2.webp rename to src/assets/offline-images/2.webp diff --git a/public/offline-images/3.webp b/src/assets/offline-images/3.webp similarity index 100% rename from public/offline-images/3.webp rename to src/assets/offline-images/3.webp diff --git a/public/offline-images/4.webp b/src/assets/offline-images/4.webp similarity index 100% rename from public/offline-images/4.webp rename to src/assets/offline-images/4.webp diff --git a/public/offline-images/5.webp b/src/assets/offline-images/5.webp similarity index 100% rename from public/offline-images/5.webp rename to src/assets/offline-images/5.webp diff --git a/public/offline-images/6.webp b/src/assets/offline-images/6.webp similarity index 100% rename from public/offline-images/6.webp rename to src/assets/offline-images/6.webp diff --git a/public/offline-images/7.webp b/src/assets/offline-images/7.webp similarity index 100% rename from public/offline-images/7.webp rename to src/assets/offline-images/7.webp diff --git a/public/offline-images/8.webp b/src/assets/offline-images/8.webp similarity index 100% rename from public/offline-images/8.webp rename to src/assets/offline-images/8.webp diff --git a/public/offline-images/9.webp b/src/assets/offline-images/9.webp similarity index 100% rename from public/offline-images/9.webp rename to src/assets/offline-images/9.webp diff --git a/public/welcome-images/example1.webp b/src/assets/welcome-images/example1.webp similarity index 100% rename from public/welcome-images/example1.webp rename to src/assets/welcome-images/example1.webp diff --git a/public/welcome-images/example2.webp b/src/assets/welcome-images/example2.webp similarity index 100% rename from public/welcome-images/example2.webp rename to src/assets/welcome-images/example2.webp diff --git a/public/welcome-images/example3.webp b/src/assets/welcome-images/example3.webp similarity index 100% rename from public/welcome-images/example3.webp rename to src/assets/welcome-images/example3.webp diff --git a/public/welcome-images/example4.webp b/src/assets/welcome-images/example4.webp similarity index 100% rename from public/welcome-images/example4.webp rename to src/assets/welcome-images/example4.webp diff --git a/src/components/modals/main/settings/Button.jsx b/src/components/Elements/Button/Button.jsx similarity index 91% rename from src/components/modals/main/settings/Button.jsx rename to src/components/Elements/Button/Button.jsx index 3e1557c7..830b51bd 100644 --- a/src/components/modals/main/settings/Button.jsx +++ b/src/components/Elements/Button/Button.jsx @@ -1,5 +1,5 @@ import React, { forwardRef } from 'react'; -import Tooltip from '../../../helpers/tooltip/Tooltip'; +import Tooltip from 'components/Elements/Tooltip/Tooltip'; const Button = forwardRef( ( @@ -50,4 +50,4 @@ const Button = forwardRef( }, ); -export default Button; +export { Button as default, Button }; diff --git a/src/components/Elements/Button/index.jsx b/src/components/Elements/Button/index.jsx new file mode 100644 index 00000000..8b166a86 --- /dev/null +++ b/src/components/Elements/Button/index.jsx @@ -0,0 +1 @@ +export * from './Button'; diff --git a/src/components/helpers/sharemodal/ShareModal.jsx b/src/components/Elements/ShareModal/ShareModal.jsx similarity index 94% rename from src/components/helpers/sharemodal/ShareModal.jsx rename to src/components/Elements/ShareModal/ShareModal.jsx index 2b10f3ca..61e68355 100644 --- a/src/components/helpers/sharemodal/ShareModal.jsx +++ b/src/components/Elements/ShareModal/ShareModal.jsx @@ -1,10 +1,10 @@ import { memo } from 'react'; -import variables from 'modules/variables'; +import variables from 'config/variables'; import { MdClose, MdEmail, MdContentCopy } from 'react-icons/md'; import { FaTwitter, FaFacebookF } from 'react-icons/fa'; import { AiFillWechat } from 'react-icons/ai'; import { SiTencentqq } from 'react-icons/si'; -import Tooltip from '../tooltip/Tooltip'; +import Tooltip from '../Tooltip/Tooltip'; import { toast } from 'react-toastify'; import './sharemodal.scss'; @@ -123,4 +123,6 @@ function ShareModal({ modalClose, data }) { ); } -export default memo(ShareModal); +const MemoizedSharemodal = memo(ShareModal); + +export { MemoizedSharemodal as default, MemoizedSharemodal as ShareModal }; diff --git a/src/components/Elements/ShareModal/index.jsx b/src/components/Elements/ShareModal/index.jsx new file mode 100644 index 00000000..e53da60b --- /dev/null +++ b/src/components/Elements/ShareModal/index.jsx @@ -0,0 +1 @@ +export * from './ShareModal'; diff --git a/src/components/helpers/sharemodal/sharemodal.scss b/src/components/Elements/ShareModal/sharemodal.scss similarity index 100% rename from src/components/helpers/sharemodal/sharemodal.scss rename to src/components/Elements/ShareModal/sharemodal.scss diff --git a/src/components/helpers/tooltip/Tooltip.jsx b/src/components/Elements/Tooltip/Tooltip.jsx similarity index 92% rename from src/components/helpers/tooltip/Tooltip.jsx rename to src/components/Elements/Tooltip/Tooltip.jsx index 40c6b87c..d1140e84 100644 --- a/src/components/helpers/tooltip/Tooltip.jsx +++ b/src/components/Elements/Tooltip/Tooltip.jsx @@ -47,4 +47,6 @@ function Tooltip({ children, title, style, placement, subtitle }) { ); } -export default memo(Tooltip); +const MemoizedTooltip = memo(Tooltip); + +export { MemoizedTooltip as default, MemoizedTooltip as Tooltip }; diff --git a/src/components/Elements/Tooltip/index.jsx b/src/components/Elements/Tooltip/index.jsx new file mode 100644 index 00000000..7594a8f0 --- /dev/null +++ b/src/components/Elements/Tooltip/index.jsx @@ -0,0 +1 @@ +export * from './Tooltip'; diff --git a/src/components/helpers/tooltip/tooltip.scss b/src/components/Elements/Tooltip/tooltip.scss similarity index 100% rename from src/components/helpers/tooltip/tooltip.scss rename to src/components/Elements/Tooltip/tooltip.scss diff --git a/src/components/Elements/index.jsx b/src/components/Elements/index.jsx new file mode 100644 index 00000000..6821f83a --- /dev/null +++ b/src/components/Elements/index.jsx @@ -0,0 +1,3 @@ +export * from './Button'; +export * from './Tooltip'; +export * from './ShareModal'; diff --git a/src/components/modals/main/settings/Checkbox.jsx b/src/components/Form/Settings/Checkbox/Checkbox.jsx similarity index 94% rename from src/components/modals/main/settings/Checkbox.jsx rename to src/components/Form/Settings/Checkbox/Checkbox.jsx index 539857fb..f00d8f1b 100644 --- a/src/components/modals/main/settings/Checkbox.jsx +++ b/src/components/Form/Settings/Checkbox/Checkbox.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { Checkbox as CheckboxUI, FormControlLabel } from '@mui/material'; @@ -58,4 +58,4 @@ class Checkbox extends PureComponent { } } -export default Checkbox; +export { Checkbox as default, Checkbox }; diff --git a/src/components/Form/Settings/Checkbox/index.jsx b/src/components/Form/Settings/Checkbox/index.jsx new file mode 100644 index 00000000..f5c939fa --- /dev/null +++ b/src/components/Form/Settings/Checkbox/index.jsx @@ -0,0 +1 @@ +export * from './Checkbox'; diff --git a/src/components/modals/main/settings/ChipSelect.jsx b/src/components/Form/Settings/ChipSelect/ChipSelect.jsx similarity index 100% rename from src/components/modals/main/settings/ChipSelect.jsx rename to src/components/Form/Settings/ChipSelect/ChipSelect.jsx diff --git a/src/components/Form/Settings/ChipSelect/index.jsx b/src/components/Form/Settings/ChipSelect/index.jsx new file mode 100644 index 00000000..cc5adda3 --- /dev/null +++ b/src/components/Form/Settings/ChipSelect/index.jsx @@ -0,0 +1 @@ +export * from './ChipSelect'; diff --git a/src/components/modals/main/settings/Dropdown.jsx b/src/components/Form/Settings/Dropdown/Dropdown.jsx similarity index 95% rename from src/components/modals/main/settings/Dropdown.jsx rename to src/components/Form/Settings/Dropdown/Dropdown.jsx index f2aa81f0..99baa2d0 100644 --- a/src/components/modals/main/settings/Dropdown.jsx +++ b/src/components/Form/Settings/Dropdown/Dropdown.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { InputLabel, MenuItem, FormControl, Select } from '@mui/material'; @@ -73,4 +73,4 @@ class Dropdown extends PureComponent { } } -export default Dropdown; +export { Dropdown as default, Dropdown }; diff --git a/src/components/Form/Settings/Dropdown/index.jsx b/src/components/Form/Settings/Dropdown/index.jsx new file mode 100644 index 00000000..2f29bad4 --- /dev/null +++ b/src/components/Form/Settings/Dropdown/index.jsx @@ -0,0 +1 @@ +export * from './Dropdown'; diff --git a/src/components/modals/main/settings/FileUpload.jsx b/src/components/Form/Settings/FileUpload/FileUpload.jsx similarity index 95% rename from src/components/modals/main/settings/FileUpload.jsx rename to src/components/Form/Settings/FileUpload/FileUpload.jsx index 7b06478a..302298ea 100644 --- a/src/components/modals/main/settings/FileUpload.jsx +++ b/src/components/Form/Settings/FileUpload/FileUpload.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { toast } from 'react-toastify'; import { compressAccurately, filetoDataURL } from 'image-conversion'; @@ -62,4 +62,4 @@ class FileUpload extends PureComponent { } } -export default FileUpload; +export { FileUpload as default, FileUpload }; diff --git a/src/components/Form/Settings/FileUpload/index.jsx b/src/components/Form/Settings/FileUpload/index.jsx new file mode 100644 index 00000000..fca98b5b --- /dev/null +++ b/src/components/Form/Settings/FileUpload/index.jsx @@ -0,0 +1 @@ +export * from './FileUpload'; diff --git a/src/components/modals/main/settings/Radio.jsx b/src/components/Form/Settings/Radio/Radio.jsx similarity index 96% rename from src/components/modals/main/settings/Radio.jsx rename to src/components/Form/Settings/Radio/Radio.jsx index 22453cb7..73ae4564 100644 --- a/src/components/modals/main/settings/Radio.jsx +++ b/src/components/Form/Settings/Radio/Radio.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { Radio as RadioUI, @@ -84,4 +84,4 @@ class Radio extends PureComponent { } } -export default Radio; +export { Radio as default, Radio }; diff --git a/src/components/Form/Settings/Radio/index.jsx b/src/components/Form/Settings/Radio/index.jsx new file mode 100644 index 00000000..bfbe6d09 --- /dev/null +++ b/src/components/Form/Settings/Radio/index.jsx @@ -0,0 +1 @@ +export * from './Radio'; diff --git a/src/components/modals/main/settings/Slider.jsx b/src/components/Form/Settings/Slider/Slider.jsx similarity index 95% rename from src/components/modals/main/settings/Slider.jsx rename to src/components/Form/Settings/Slider/Slider.jsx index 8f988dd6..d4773458 100644 --- a/src/components/modals/main/settings/Slider.jsx +++ b/src/components/Form/Settings/Slider/Slider.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { toast } from 'react-toastify'; import { Slider } from '@mui/material'; @@ -85,4 +85,4 @@ class SliderComponent extends PureComponent { } } -export default SliderComponent; +export { SliderComponent as default, SliderComponent as Slider }; diff --git a/src/components/Form/Settings/Slider/index.jsx b/src/components/Form/Settings/Slider/index.jsx new file mode 100644 index 00000000..f48a8541 --- /dev/null +++ b/src/components/Form/Settings/Slider/index.jsx @@ -0,0 +1 @@ +export * from './Slider'; diff --git a/src/components/modals/main/settings/Switch.jsx b/src/components/Form/Settings/Switch/Switch.jsx similarity index 94% rename from src/components/modals/main/settings/Switch.jsx rename to src/components/Form/Settings/Switch/Switch.jsx index b8ac4dec..8d354789 100644 --- a/src/components/modals/main/settings/Switch.jsx +++ b/src/components/Form/Settings/Switch/Switch.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { Switch as SwitchUI, FormControlLabel } from '@mui/material'; @@ -53,4 +53,4 @@ class Switch extends PureComponent { } } -export default Switch; +export { Switch as default, Switch }; diff --git a/src/components/Form/Settings/Switch/index.jsx b/src/components/Form/Settings/Switch/index.jsx new file mode 100644 index 00000000..1b19c1d3 --- /dev/null +++ b/src/components/Form/Settings/Switch/index.jsx @@ -0,0 +1 @@ +export * from './Switch'; diff --git a/src/components/modals/main/settings/Text.jsx b/src/components/Form/Settings/Text/Text.jsx similarity index 96% rename from src/components/modals/main/settings/Text.jsx rename to src/components/Form/Settings/Text/Text.jsx index 5c3e5656..fa1984dd 100644 --- a/src/components/modals/main/settings/Text.jsx +++ b/src/components/Form/Settings/Text/Text.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { toast } from 'react-toastify'; import { TextField } from '@mui/material'; @@ -81,4 +81,4 @@ class Text extends PureComponent { } } -export default Text; +export { Text as default, Text }; diff --git a/src/components/Form/Settings/Text/index.jsx b/src/components/Form/Settings/Text/index.jsx new file mode 100644 index 00000000..b0c76af0 --- /dev/null +++ b/src/components/Form/Settings/Text/index.jsx @@ -0,0 +1 @@ +export * from './Text'; diff --git a/src/components/Form/Settings/index.jsx b/src/components/Form/Settings/index.jsx new file mode 100644 index 00000000..75eddedb --- /dev/null +++ b/src/components/Form/Settings/index.jsx @@ -0,0 +1,8 @@ +export * from './Checkbox'; +export * from './ChipSelect'; +export * from './Dropdown'; +export * from './FileUpload'; +export * from './Radio'; +export * from './Slider'; +export * from './Switch'; +export * from './Text'; diff --git a/src/components/Form/index.jsx b/src/components/Form/index.jsx new file mode 100644 index 00000000..90e26973 --- /dev/null +++ b/src/components/Form/index.jsx @@ -0,0 +1 @@ +export * from './Settings'; diff --git a/src/components/modals/main/settings/Header.jsx b/src/components/Layout/Settings/Header/Header.jsx similarity index 92% rename from src/components/modals/main/settings/Header.jsx rename to src/components/Layout/Settings/Header/Header.jsx index 68806c2e..8ad522d5 100644 --- a/src/components/modals/main/settings/Header.jsx +++ b/src/components/Layout/Settings/Header/Header.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState, useEffect } from 'react'; import { MdFlag, @@ -7,13 +7,13 @@ import { MdOutlineKeyboardArrowRight, } from 'react-icons/md'; import EventBus from 'modules/helpers/eventbus'; -import Button from './Button'; +import { Button } from 'components/Elements'; export const CustomActions = ({ children }) => { return children; }; -export default function Header(props) { +function Header(props) { const [setting, setSetting] = useState(localStorage.getItem(props.setting) === 'true'); useEffect(() => { @@ -88,5 +88,4 @@ export default function Header(props) { ); } -// Remove the export statement for customActions -// export { customActions }; +export { Header as default, Header }; diff --git a/src/components/Layout/Settings/Header/index.jsx b/src/components/Layout/Settings/Header/index.jsx new file mode 100644 index 00000000..266dec8a --- /dev/null +++ b/src/components/Layout/Settings/Header/index.jsx @@ -0,0 +1 @@ +export * from './Header'; diff --git a/src/components/modals/main/settings/SettingsItem.jsx b/src/components/Layout/Settings/Item/SettingsItem.jsx similarity index 100% rename from src/components/modals/main/settings/SettingsItem.jsx rename to src/components/Layout/Settings/Item/SettingsItem.jsx diff --git a/src/components/Layout/Settings/Item/index.jsx b/src/components/Layout/Settings/Item/index.jsx new file mode 100644 index 00000000..1cb73aae --- /dev/null +++ b/src/components/Layout/Settings/Item/index.jsx @@ -0,0 +1 @@ +export * from './SettingsItem'; diff --git a/src/components/modals/main/settings/PreferencesWrapper.jsx b/src/components/Layout/Settings/PreferencesWrapper/PreferencesWrapper.jsx similarity index 83% rename from src/components/modals/main/settings/PreferencesWrapper.jsx rename to src/components/Layout/Settings/PreferencesWrapper/PreferencesWrapper.jsx index badc4708..2ba4b110 100644 --- a/src/components/modals/main/settings/PreferencesWrapper.jsx +++ b/src/components/Layout/Settings/PreferencesWrapper/PreferencesWrapper.jsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; -import { Row, Content, Action } from './SettingsItem'; -import variables from 'modules/variables'; -import Slider from './Slider'; +import { Row, Content, Action } from '../Item/SettingsItem'; +import variables from 'config/variables'; +import Slider from '../../../Form/Settings/Slider/Slider'; import { values } from 'modules/helpers/settings/modals'; import EventBus from 'modules/helpers/eventbus'; @@ -43,4 +43,4 @@ const PreferencesWrapper = ({ children, ...props }) => { ); }; -export default PreferencesWrapper; +export { PreferencesWrapper as default, PreferencesWrapper }; diff --git a/src/components/Layout/Settings/PreferencesWrapper/index.jsx b/src/components/Layout/Settings/PreferencesWrapper/index.jsx new file mode 100644 index 00000000..9e4b991b --- /dev/null +++ b/src/components/Layout/Settings/PreferencesWrapper/index.jsx @@ -0,0 +1 @@ +export * from './PreferencesWrapper'; diff --git a/src/components/modals/main/settings/Section.jsx b/src/components/Layout/Settings/Section/Section.jsx similarity index 68% rename from src/components/modals/main/settings/Section.jsx rename to src/components/Layout/Settings/Section/Section.jsx index f802d336..e73b03d1 100644 --- a/src/components/modals/main/settings/Section.jsx +++ b/src/components/Layout/Settings/Section/Section.jsx @@ -1,7 +1,7 @@ import { MdOutlineKeyboardArrowRight } from 'react-icons/md'; import React from 'react'; -export default function Section({ title, subtitle, icon, onClick, children }) { +function Section({ title, subtitle, icon, onClick, children }) { return (
@@ -12,8 +12,10 @@ export default function Section({ title, subtitle, icon, onClick, children }) {
- {React.Children.count(children) === 0 ? : children} + {React.Children.count(children) === 0 ? : children}
); } + +export { Section as default, Section }; diff --git a/src/components/Layout/Settings/Section/index.jsx b/src/components/Layout/Settings/Section/index.jsx new file mode 100644 index 00000000..b524e0f3 --- /dev/null +++ b/src/components/Layout/Settings/Section/index.jsx @@ -0,0 +1 @@ +export * from './Section'; diff --git a/src/components/Layout/Settings/index.jsx b/src/components/Layout/Settings/index.jsx new file mode 100644 index 00000000..8350f6eb --- /dev/null +++ b/src/components/Layout/Settings/index.jsx @@ -0,0 +1,4 @@ +export * from './Header'; +export * from './Item'; +export * from './PreferencesWrapper'; +export * from './Section'; diff --git a/src/components/Layout/WidgetsLayout/WidgetsLayout.jsx b/src/components/Layout/WidgetsLayout/WidgetsLayout.jsx new file mode 100644 index 00000000..0df95dda --- /dev/null +++ b/src/components/Layout/WidgetsLayout/WidgetsLayout.jsx @@ -0,0 +1,5 @@ +const WidgetsLayout = ({ children }) => { + return
{children}
; +}; + +export { WidgetsLayout as default, WidgetsLayout }; diff --git a/src/components/Layout/WidgetsLayout/index.jsx b/src/components/Layout/WidgetsLayout/index.jsx new file mode 100644 index 00000000..a6b0128d --- /dev/null +++ b/src/components/Layout/WidgetsLayout/index.jsx @@ -0,0 +1 @@ +export * from './WidgetsLayout'; diff --git a/src/components/Layout/index.jsx b/src/components/Layout/index.jsx new file mode 100644 index 00000000..fd50bee3 --- /dev/null +++ b/src/components/Layout/index.jsx @@ -0,0 +1,2 @@ +export * from './Settings'; +export * from './WidgetsLayout'; diff --git a/src/components/modals/main/marketplace/examples/photos.json b/src/components/modals/main/marketplace/examples/photos.json deleted file mode 100644 index bf3dc38c..00000000 --- a/src/components/modals/main/marketplace/examples/photos.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "Example Photos", - "description": "This is an example.", - "type": "photos", - "version": "1.0.0", - "author": "Mue", - "icon_url": "https://raw.githubusercontent.com/mue/branding/main/logo/logo_square.png", - "screenshot_url": "https://github.com/mue/mue/raw/main/assets/screenshot.webp", - "photos": [ - { - "photographer": "Example photographer", - "location": "Example location", - "url": { - "default": "https://github.com/mue/mue/raw/main/assets/screenshot.webp" - } - }, - { - "photographer": "Example photographer 2", - "location": "Example location 2", - "url": { - "default": "https://github.com/mue/mue/raw/main/assets/screenshot2.webp" - } - } - ] -} diff --git a/src/components/modals/main/marketplace/examples/quotes.json b/src/components/modals/main/marketplace/examples/quotes.json deleted file mode 100644 index 577e1eb7..00000000 --- a/src/components/modals/main/marketplace/examples/quotes.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Example Quotes", - "description": "This is an example.", - "type": "quotes", - "version": "1.0.0", - "author": "Mue", - "icon_url": "https://raw.githubusercontent.com/mue/branding/main/logo/logo_square.png", - "screenshot_url": "https://github.com/mue/mue/raw/main/assets/screenshot.webp", - "language": "en", - "quotes": [ - { - "quote": "This is an example quote.", - "author": "Example 1" - }, - { - "quote": "This is another example quote.", - "author": "Example 2" - } - ] -} diff --git a/src/components/modals/main/marketplace/examples/settings.json b/src/components/modals/main/marketplace/examples/settings.json deleted file mode 100644 index df07ff22..00000000 --- a/src/components/modals/main/marketplace/examples/settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "Example Settings", - "description": "This is an example.", - "type": "settings", - "version": "1.0.0", - "author": "Mue", - "icon_url": "https://raw.githubusercontent.com/mue/branding/main/logo/logo_square.png", - "screenshot_url": "https://github.com/mue/mue/raw/main/assets/screenshot.webp", - "settings": { - "searchBar": false, - "weather": true - } -} diff --git a/src/config/.env b/src/config/.env new file mode 100644 index 00000000..678b118c --- /dev/null +++ b/src/config/.env @@ -0,0 +1,28 @@ +# API URLs +API_URL=https://api.muetab.com/v2 +SPONSORS_URL=https://sponsors.muetab.com +GITHUB_URL=https://api.github.com +DDG_IMAGE_PROXY=https://external-content.duckduckgo.com/iu/?u= +OPENSTREETMAP_URL=https://www.openstreetmap.org + +# Mue URLs +WEBSITE_URL=https://muetab.com +PRIVACY_URL=https://muetab.com/privacy +BLOG_POST=https://blog.muetab.com/posts/version-7-0 +TRANSLATIONS_URL=https://docs.muetab.com/translations/ +WEBLATE_URL=https://hosted.weblate.org/projects/mue/mue-tab/ +REPORT_ITEM=https://github.com/mue/marketplace/issues/new?assignees=&labels=item+report&template=item-report.md&title=%5BItem+Report%5D+ +BUG_REPORT=https://github.com/mue/mue/issues/new?assignees=&labels=issue+report&template=bug-report.md&title=%5BBug%5D+ +DONATE_LINK=https://muetab.com/donate +SENTRY_DSN=https://430352fd4b174d688ebd82fc85c22c58@o1217438.ingest.sentry.io/6359480 +KNOWLEDGEBASE=https://support.muetab.com + +# Mue Info +ORG_NAME=mue +REPO_NAME=mue +EMAIL=hello@muetab.com +TWITTER_HANDLE=getmue +DISCORD_SERVER=zv8C9F8 +OPENCOLLECTIVE_USERNAME=mue + +VERSION=7.0.1 diff --git a/src/modules/constants.js b/src/config/constants.js similarity index 100% rename from src/modules/constants.js rename to src/config/constants.js diff --git a/src/modules/variables.js b/src/config/variables.js similarity index 76% rename from src/modules/variables.js rename to src/config/variables.js index d2c3aa57..16db4f9b 100644 --- a/src/modules/variables.js +++ b/src/config/variables.js @@ -1,4 +1,4 @@ -import * as constants from 'modules/constants'; +import * as constants from 'config/constants'; import Stats from 'modules/helpers/stats'; const variables = { diff --git a/src/components/helpers/autocomplete/Autocomplete.jsx b/src/features/helpers/autocomplete/Autocomplete.jsx similarity index 100% rename from src/components/helpers/autocomplete/Autocomplete.jsx rename to src/features/helpers/autocomplete/Autocomplete.jsx diff --git a/src/components/helpers/autocomplete/autocomplete.scss b/src/features/helpers/autocomplete/autocomplete.scss similarity index 100% rename from src/components/helpers/autocomplete/autocomplete.scss rename to src/features/helpers/autocomplete/autocomplete.scss diff --git a/src/components/helpers/carousel/Carousel.jsx b/src/features/helpers/carousel/Carousel.jsx similarity index 98% rename from src/components/helpers/carousel/Carousel.jsx rename to src/features/helpers/carousel/Carousel.jsx index 5e07ea2d..c73083f4 100644 --- a/src/components/helpers/carousel/Carousel.jsx +++ b/src/features/helpers/carousel/Carousel.jsx @@ -3,7 +3,7 @@ import { MdOutlineArrowForwardIos, MdOutlineArrowBackIos } from 'react-icons/md' import useEmblaCarousel from 'embla-carousel-react'; import Autoplay from 'embla-carousel-autoplay'; -import variables from 'modules/variables'; +import variables from 'config/variables'; import './carousel.scss'; diff --git a/src/components/helpers/carousel/carousel.scss b/src/features/helpers/carousel/carousel.scss similarity index 100% rename from src/components/helpers/carousel/carousel.scss rename to src/features/helpers/carousel/carousel.scss diff --git a/src/components/helpers/preview/Preview.jsx b/src/features/helpers/preview/Preview.jsx similarity index 92% rename from src/components/helpers/preview/Preview.jsx rename to src/features/helpers/preview/Preview.jsx index e5789d8a..75672751 100644 --- a/src/components/helpers/preview/Preview.jsx +++ b/src/features/helpers/preview/Preview.jsx @@ -1,5 +1,5 @@ import { memo } from 'react'; -import variables from 'modules/variables'; +import variables from 'config/variables'; import './preview.scss'; function Preview(props) { diff --git a/src/components/helpers/preview/preview.scss b/src/features/helpers/preview/preview.scss similarity index 100% rename from src/components/helpers/preview/preview.scss rename to src/features/helpers/preview/preview.scss diff --git a/src/components/modals/ErrorBoundary.jsx b/src/features/modals/ErrorBoundary.jsx similarity index 96% rename from src/components/modals/ErrorBoundary.jsx rename to src/features/modals/ErrorBoundary.jsx index 0756f3e6..3e2b9b8a 100644 --- a/src/components/modals/ErrorBoundary.jsx +++ b/src/features/modals/ErrorBoundary.jsx @@ -1,10 +1,10 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdErrorOutline, MdRefresh } from 'react-icons/md'; import { captureException } from '@sentry/react'; -import Button from './main/settings/Button'; +import { Button } from 'components/Elements'; class ErrorBoundary extends PureComponent { constructor(props) { diff --git a/src/components/modals/Modals.jsx b/src/features/modals/Modals.jsx similarity index 98% rename from src/components/modals/Modals.jsx rename to src/features/modals/Modals.jsx index 0956cc29..88271e9a 100644 --- a/src/components/modals/Modals.jsx +++ b/src/features/modals/Modals.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import Modal from 'react-modal'; diff --git a/src/components/modals/main/Main.jsx b/src/features/modals/main/Main.jsx similarity index 94% rename from src/components/modals/main/Main.jsx rename to src/features/modals/main/Main.jsx index 9ed56c6e..96e4de0d 100644 --- a/src/components/modals/main/Main.jsx +++ b/src/features/modals/main/Main.jsx @@ -1,10 +1,9 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { Suspense, lazy, useState, memo } from 'react'; import { MdClose } from 'react-icons/md'; import './scss/index.scss'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; const Settings = lazy(() => import('./tabs/Settings')); const Addons = lazy(() => import('./tabs/Addons')); const Marketplace = lazy(() => import('./tabs/Marketplace')); diff --git a/src/components/modals/main/marketplace/Item.jsx b/src/features/modals/main/marketplace/Item.jsx similarity index 97% rename from src/components/modals/main/marketplace/Item.jsx rename to src/features/modals/main/marketplace/Item.jsx index 7c381bb0..b7371531 100644 --- a/src/components/modals/main/marketplace/Item.jsx +++ b/src/features/modals/main/marketplace/Item.jsx @@ -1,7 +1,7 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, Fragment } from 'react'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; -import ImageCarousel from 'components/helpers/carousel/Carousel'; +import { Tooltip } from 'components/Elements'; +import ImageCarousel from 'features/helpers/carousel/Carousel'; import { toast } from 'react-toastify'; import { MdIosShare, @@ -17,12 +17,12 @@ import { } from 'react-icons/md'; import Modal from 'react-modal'; -import Header from '../settings/Header'; -import Button from '../settings/Button'; +import { Header } from 'components/Layout/Settings'; +import { Button } from 'components/Elements'; import { install, uninstall } from 'modules/helpers/marketplace'; -import ShareModal from 'components/helpers/sharemodal/ShareModal'; +import { ShareModal } from 'components/Elements'; class Item extends PureComponent { constructor(props) { diff --git a/src/components/modals/main/marketplace/Items.jsx b/src/features/modals/main/marketplace/Items.jsx similarity index 97% rename from src/components/modals/main/marketplace/Items.jsx rename to src/features/modals/main/marketplace/Items.jsx index bc803b30..ec0502ea 100644 --- a/src/components/modals/main/marketplace/Items.jsx +++ b/src/features/modals/main/marketplace/Items.jsx @@ -1,8 +1,8 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import React, { memo } from 'react'; import { MdAutoFixHigh, MdOutlineArrowForward, MdOutlineOpenInNew } from 'react-icons/md'; -import Button from '../settings/Button'; +import { Button } from 'components/Elements'; function Items({ type, diff --git a/src/components/modals/main/marketplace/Lightbox.jsx b/src/features/modals/main/marketplace/Lightbox.jsx similarity index 89% rename from src/components/modals/main/marketplace/Lightbox.jsx rename to src/features/modals/main/marketplace/Lightbox.jsx index 07631e2c..d6601a77 100644 --- a/src/components/modals/main/marketplace/Lightbox.jsx +++ b/src/features/modals/main/marketplace/Lightbox.jsx @@ -1,5 +1,5 @@ import { memo } from 'react'; -import variables from 'modules/variables'; +import variables from 'config/variables'; function Lightbox({ modalClose, img }) { variables.stats.postEvent('modal', 'Opened lightbox'); diff --git a/src/components/modals/main/marketplace/SideloadFailedModal.jsx b/src/features/modals/main/marketplace/SideloadFailedModal.jsx similarity index 88% rename from src/components/modals/main/marketplace/SideloadFailedModal.jsx rename to src/features/modals/main/marketplace/SideloadFailedModal.jsx index 567c6325..c4526f10 100644 --- a/src/components/modals/main/marketplace/SideloadFailedModal.jsx +++ b/src/features/modals/main/marketplace/SideloadFailedModal.jsx @@ -1,8 +1,7 @@ import { memo } from 'react'; -import variables from 'modules/variables'; +import variables from 'config/variables'; import { MdClose } from 'react-icons/md'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; function SideloadFailedModal({ modalClose, reason }) { return (
diff --git a/src/components/modals/main/marketplace/sections/Added.jsx b/src/features/modals/main/marketplace/sections/Added.jsx similarity index 96% rename from src/components/modals/main/marketplace/sections/Added.jsx rename to src/features/modals/main/marketplace/sections/Added.jsx index 8f08d199..fa7c9acd 100644 --- a/src/components/modals/main/marketplace/sections/Added.jsx +++ b/src/features/modals/main/marketplace/sections/Added.jsx @@ -1,16 +1,16 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdUpdate, MdOutlineExtensionOff, MdSendTimeExtension } from 'react-icons/md'; import { toast } from 'react-toastify'; import Modal from 'react-modal'; import SideloadFailedModal from '../SideloadFailedModal'; -import FileUpload from '../../settings/FileUpload'; +import FileUpload from '../../../../../components/Form/Settings/FileUpload/FileUpload'; import Item from '../Item'; import Items from '../Items'; -import Dropdown from '../../settings/Dropdown'; -import Header, { CustomActions } from '../../settings/Header'; -import Button from '../../settings/Button'; +import Dropdown from '../../../../../components/Form/Settings/Dropdown/Dropdown'; +import { Header, CustomActions } from 'components/Layout/Settings'; +import { Button } from 'components/Elements'; import { install, uninstall, urlParser } from 'modules/helpers/marketplace'; diff --git a/src/components/modals/main/marketplace/sections/Create.jsx b/src/features/modals/main/marketplace/sections/Create.jsx similarity index 95% rename from src/components/modals/main/marketplace/sections/Create.jsx rename to src/features/modals/main/marketplace/sections/Create.jsx index cac66197..c0560f37 100644 --- a/src/components/modals/main/marketplace/sections/Create.jsx +++ b/src/features/modals/main/marketplace/sections/Create.jsx @@ -1,5 +1,5 @@ /* eslint-disable no-unused-vars */ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdOutlineExtensionOff } from 'react-icons/md'; diff --git a/src/components/modals/main/marketplace/sections/Marketplace.jsx b/src/features/modals/main/marketplace/sections/Marketplace.jsx similarity index 98% rename from src/components/modals/main/marketplace/sections/Marketplace.jsx rename to src/features/modals/main/marketplace/sections/Marketplace.jsx index e7b7af76..55e22162 100644 --- a/src/components/modals/main/marketplace/sections/Marketplace.jsx +++ b/src/features/modals/main/marketplace/sections/Marketplace.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { toast } from 'react-toastify'; import { @@ -12,9 +12,9 @@ import { import Item from '../Item'; import Items from '../Items'; -import Dropdown from '../../settings/Dropdown'; -import Header from '../../settings/Header'; -import Button from '../../settings/Button'; +import Dropdown from '../../../../../components/Form/Settings/Dropdown/Dropdown'; +import { Header } from 'components/Layout/Settings'; +import { Button } from 'components/Elements'; import { install, urlParser, uninstall } from 'modules/helpers/marketplace'; diff --git a/src/components/modals/main/scss/index.scss b/src/features/modals/main/scss/index.scss similarity index 100% rename from src/components/modals/main/scss/index.scss rename to src/features/modals/main/scss/index.scss diff --git a/src/components/modals/main/scss/marketplace/_main.scss b/src/features/modals/main/scss/marketplace/_main.scss similarity index 100% rename from src/components/modals/main/scss/marketplace/_main.scss rename to src/features/modals/main/scss/marketplace/_main.scss diff --git a/src/components/modals/main/scss/marketplace/modules/_buttons.scss b/src/features/modals/main/scss/marketplace/modules/_buttons.scss similarity index 100% rename from src/components/modals/main/scss/marketplace/modules/_buttons.scss rename to src/features/modals/main/scss/marketplace/modules/_buttons.scss diff --git a/src/components/modals/main/scss/marketplace/modules/_item.scss b/src/features/modals/main/scss/marketplace/modules/_item.scss similarity index 100% rename from src/components/modals/main/scss/marketplace/modules/_item.scss rename to src/features/modals/main/scss/marketplace/modules/_item.scss diff --git a/src/components/modals/main/scss/marketplace/modules/_lightbox.scss b/src/features/modals/main/scss/marketplace/modules/_lightbox.scss similarity index 100% rename from src/components/modals/main/scss/marketplace/modules/_lightbox.scss rename to src/features/modals/main/scss/marketplace/modules/_lightbox.scss diff --git a/src/components/modals/main/scss/modules/_links.scss b/src/features/modals/main/scss/modules/_links.scss similarity index 100% rename from src/components/modals/main/scss/modules/_links.scss rename to src/features/modals/main/scss/modules/_links.scss diff --git a/src/components/modals/main/scss/modules/_navbar.scss b/src/features/modals/main/scss/modules/_navbar.scss similarity index 100% rename from src/components/modals/main/scss/modules/_navbar.scss rename to src/features/modals/main/scss/modules/_navbar.scss diff --git a/src/components/modals/main/scss/modules/_scrollbars.scss b/src/features/modals/main/scss/modules/_scrollbars.scss similarity index 100% rename from src/components/modals/main/scss/modules/_scrollbars.scss rename to src/features/modals/main/scss/modules/_scrollbars.scss diff --git a/src/components/modals/main/scss/modules/_sidebar.scss b/src/features/modals/main/scss/modules/_sidebar.scss similarity index 100% rename from src/components/modals/main/scss/modules/_sidebar.scss rename to src/features/modals/main/scss/modules/_sidebar.scss diff --git a/src/components/modals/main/scss/modules/_tab-content.scss b/src/features/modals/main/scss/modules/_tab-content.scss similarity index 100% rename from src/components/modals/main/scss/modules/_tab-content.scss rename to src/features/modals/main/scss/modules/_tab-content.scss diff --git a/src/components/modals/main/scss/settings/_main.scss b/src/features/modals/main/scss/settings/_main.scss similarity index 100% rename from src/components/modals/main/scss/settings/_main.scss rename to src/features/modals/main/scss/settings/_main.scss diff --git a/src/components/modals/main/scss/settings/modules/_material-ui.scss b/src/features/modals/main/scss/settings/modules/_material-ui.scss similarity index 100% rename from src/components/modals/main/scss/settings/modules/_material-ui.scss rename to src/features/modals/main/scss/settings/modules/_material-ui.scss diff --git a/src/components/modals/main/scss/settings/modules/tabs/_about.scss b/src/features/modals/main/scss/settings/modules/tabs/_about.scss similarity index 100% rename from src/components/modals/main/scss/settings/modules/tabs/_about.scss rename to src/features/modals/main/scss/settings/modules/tabs/_about.scss diff --git a/src/components/modals/main/scss/settings/modules/tabs/_changelog.scss b/src/features/modals/main/scss/settings/modules/tabs/_changelog.scss similarity index 100% rename from src/components/modals/main/scss/settings/modules/tabs/_changelog.scss rename to src/features/modals/main/scss/settings/modules/tabs/_changelog.scss diff --git a/src/components/modals/main/scss/settings/modules/tabs/_order.scss b/src/features/modals/main/scss/settings/modules/tabs/_order.scss similarity index 100% rename from src/components/modals/main/scss/settings/modules/tabs/_order.scss rename to src/features/modals/main/scss/settings/modules/tabs/_order.scss diff --git a/src/components/modals/main/scss/settings/modules/tabs/_stats.scss b/src/features/modals/main/scss/settings/modules/tabs/_stats.scss similarity index 100% rename from src/components/modals/main/scss/settings/modules/tabs/_stats.scss rename to src/features/modals/main/scss/settings/modules/tabs/_stats.scss diff --git a/src/components/modals/main/scss/settings/react-color-picker-gradient-picker-custom-styles.scss b/src/features/modals/main/scss/settings/react-color-picker-gradient-picker-custom-styles.scss similarity index 100% rename from src/components/modals/main/scss/settings/react-color-picker-gradient-picker-custom-styles.scss rename to src/features/modals/main/scss/settings/react-color-picker-gradient-picker-custom-styles.scss diff --git a/src/components/modals/main/settings/ResetModal.jsx b/src/features/modals/main/settings/ResetModal.jsx similarity index 93% rename from src/components/modals/main/settings/ResetModal.jsx rename to src/features/modals/main/settings/ResetModal.jsx index bc88c0da..97b18029 100644 --- a/src/components/modals/main/settings/ResetModal.jsx +++ b/src/features/modals/main/settings/ResetModal.jsx @@ -1,9 +1,8 @@ import { memo } from 'react'; -import variables from 'modules/variables'; +import variables from 'config/variables'; import { MdClose, MdRestartAlt } from 'react-icons/md'; import { setDefaultSettings } from 'modules/helpers/settings'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; function ResetModal({ modalClose }) { const reset = () => { variables.stats.postEvent('setting', 'Reset'); diff --git a/src/components/modals/main/settings/sections/About.jsx b/src/features/modals/main/settings/sections/About.jsx similarity index 98% rename from src/components/modals/main/settings/sections/About.jsx rename to src/features/modals/main/settings/sections/About.jsx index ab6d8b67..0c849d3a 100644 --- a/src/components/modals/main/settings/sections/About.jsx +++ b/src/features/modals/main/settings/sections/About.jsx @@ -1,12 +1,11 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdEmail, MdContactPage } from 'react-icons/md'; import { FaDiscord, FaTwitter } from 'react-icons/fa'; import { SiGithubsponsors, SiOpencollective } from 'react-icons/si'; import { BiDonateHeart } from 'react-icons/bi'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; import other_contributors from 'modules/other_contributors.json'; export default class About extends PureComponent { @@ -20,8 +19,8 @@ export default class About extends PureComponent { update: variables.getMessage('modals.main.settings.sections.about.version.checking_update'), loading: variables.getMessage('modals.main.loading'), image: document.body.classList.contains('dark') - ? 'icons/mue_about.png' - : 'icons/mue_about.png', + ? 'src/assets/icons/mue_about.png' + : 'src/assets/icons/mue_about.png', }; this.controller = new AbortController(); } diff --git a/src/components/modals/main/settings/sections/Advanced.jsx b/src/features/modals/main/settings/sections/Advanced.jsx similarity index 94% rename from src/components/modals/main/settings/sections/Advanced.jsx rename to src/features/modals/main/settings/sections/Advanced.jsx index 21f82be7..047fa967 100644 --- a/src/components/modals/main/settings/sections/Advanced.jsx +++ b/src/features/modals/main/settings/sections/Advanced.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState } from 'react'; import Modal from 'react-modal'; import { @@ -10,17 +10,12 @@ import { import { exportSettings, importSettings } from 'modules/helpers/settings/modals'; -import FileUpload from '../FileUpload'; -import Text from '../Text'; -import Switch from '../Switch'; +import { FileUpload, Text, Switch, Dropdown } from 'components/Form/Settings'; import ResetModal from '../ResetModal'; -import Dropdown from '../Dropdown'; -import Header from '../Header'; -import { Row, Content, Action } from '../SettingsItem'; -import Section from '../Section'; +import { Header, Section, Row, Content, Action } from 'components/Layout/Settings'; -import time_zones from 'components/widgets/time/timezones.json'; +import time_zones from 'features/widgets/time/timezones.json'; export default function AdvancedSettings() { const [resetModal, setResetModal] = useState(false); diff --git a/src/components/modals/main/settings/sections/Appearance.jsx b/src/features/modals/main/settings/sections/Appearance.jsx similarity index 96% rename from src/components/modals/main/settings/sections/Appearance.jsx rename to src/features/modals/main/settings/sections/Appearance.jsx index 2ec167a4..e147d724 100644 --- a/src/components/modals/main/settings/sections/Appearance.jsx +++ b/src/features/modals/main/settings/sections/Appearance.jsx @@ -1,17 +1,9 @@ import { memo, useState } from 'react'; -import variables from 'modules/variables'; +import variables from 'config/variables'; -import Checkbox from '../Checkbox'; -import Dropdown from '../Dropdown'; -import Radio from '../Radio'; -import Slider from '../Slider'; -import Text from '../Text'; -import Header from '../Header'; - -import { Row, Content, Action } from '../SettingsItem'; - -import Section from '../Section'; +import { Checkbox, Dropdown, Radio, Slider, Text } from 'components/Form/Settings'; +import { Header, Section, Row, Content, Action } from 'components/Layout/Settings'; import { MdAccessibility } from 'react-icons/md'; diff --git a/src/components/modals/main/settings/sections/Changelog.jsx b/src/features/modals/main/settings/sections/Changelog.jsx similarity index 98% rename from src/components/modals/main/settings/sections/Changelog.jsx rename to src/features/modals/main/settings/sections/Changelog.jsx index 8e5d75a3..658bde63 100644 --- a/src/components/modals/main/settings/sections/Changelog.jsx +++ b/src/features/modals/main/settings/sections/Changelog.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { MdOutlineWifiOff } from 'react-icons/md'; import Modal from 'react-modal'; diff --git a/src/components/modals/main/settings/sections/Date.jsx b/src/features/modals/main/settings/sections/Date.jsx similarity index 94% rename from src/components/modals/main/settings/sections/Date.jsx rename to src/features/modals/main/settings/sections/Date.jsx index 3b132dec..2e9b6049 100644 --- a/src/components/modals/main/settings/sections/Date.jsx +++ b/src/features/modals/main/settings/sections/Date.jsx @@ -1,12 +1,10 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState } from 'react'; -import Header from '../Header'; -import Checkbox from '../Checkbox'; -import Dropdown from '../Dropdown'; +import { Header } from 'components/Layout/Settings'; +import { Checkbox, Dropdown } from 'components/Form/Settings'; -import { Row, Content, Action } from '../SettingsItem'; -import PreferencesWrapper from '../PreferencesWrapper'; +import { Row, Content, Action, PreferencesWrapper } from 'components/Layout/Settings'; export default function Date() { const [dateType, setDateType] = useState(localStorage.getItem('dateType') || 'long'); diff --git a/src/components/modals/main/settings/sections/Experimental.jsx b/src/features/modals/main/settings/sections/Experimental.jsx similarity index 88% rename from src/components/modals/main/settings/sections/Experimental.jsx rename to src/features/modals/main/settings/sections/Experimental.jsx index 33ee130b..835a5d83 100644 --- a/src/components/modals/main/settings/sections/Experimental.jsx +++ b/src/features/modals/main/settings/sections/Experimental.jsx @@ -1,13 +1,13 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState, memo } from 'react'; -import Checkbox from '../Checkbox'; -import Slider from '../Slider'; +import Checkbox from '../../../../../components/Form/Settings/Checkbox/Checkbox'; +import Slider from '../../../../../components/Form/Settings/Slider/Slider'; import { TextField } from '@mui/material'; import EventBus from 'modules/helpers/eventbus'; import { values } from 'modules/helpers/settings/modals'; -import { Row, Content, Action } from '../SettingsItem'; +import { Row, Content, Action } from '../../../../../components/Layout/Settings/Item/SettingsItem'; function ExperimentalSettings() { const [eventType, setEventType] = useState(); diff --git a/src/components/modals/main/settings/sections/Greeting.jsx b/src/features/modals/main/settings/sections/Greeting.jsx similarity index 90% rename from src/components/modals/main/settings/sections/Greeting.jsx rename to src/features/modals/main/settings/sections/Greeting.jsx index a1968f16..e4489309 100644 --- a/src/components/modals/main/settings/sections/Greeting.jsx +++ b/src/features/modals/main/settings/sections/Greeting.jsx @@ -1,13 +1,8 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState } from 'react'; -import Header from '../Header'; -import Checkbox from '../Checkbox'; -import Switch from '../Switch'; -import Text from '../Text'; - -import { Row, Content, Action } from '../SettingsItem'; -import PreferencesWrapper from '../PreferencesWrapper'; +import { Header, Row, Content, Action, PreferencesWrapper } from 'components/Layout/Settings'; +import { Checkbox, Switch, Text } from 'components/Form/Settings'; const GreetingSettings = () => { const [birthday, setBirthday] = useState( diff --git a/src/components/modals/main/settings/sections/Language.jsx b/src/features/modals/main/settings/sections/Language.jsx similarity index 95% rename from src/components/modals/main/settings/sections/Language.jsx rename to src/features/modals/main/settings/sections/Language.jsx index 4de0b07c..43ca854c 100644 --- a/src/components/modals/main/settings/sections/Language.jsx +++ b/src/features/modals/main/settings/sections/Language.jsx @@ -1,11 +1,11 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdOutlineOpenInNew } from 'react-icons/md'; -import Radio from '../Radio'; +import { Radio } from 'components/Form/Settings'; -import languages from 'modules/languages.json'; +import languages from '@/i18n/languages.json'; export default class LanguageSettings extends PureComponent { constructor() { diff --git a/src/components/modals/main/settings/sections/Message.jsx b/src/features/modals/main/settings/sections/Message.jsx similarity index 95% rename from src/components/modals/main/settings/sections/Message.jsx rename to src/features/modals/main/settings/sections/Message.jsx index 2a06a23d..a1cdbdf3 100644 --- a/src/components/modals/main/settings/sections/Message.jsx +++ b/src/features/modals/main/settings/sections/Message.jsx @@ -1,14 +1,11 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdCancel, MdAdd, MdOutlineTextsms } from 'react-icons/md'; import { toast } from 'react-toastify'; import { TextareaAutosize } from '@mui/material'; -import { Row, Content, Action } from '../SettingsItem'; -import Header from '../Header'; - +import { Header, Row, Content, Action, PreferencesWrapper } from 'components/Layout/Settings'; import EventBus from 'modules/helpers/eventbus'; -import PreferencesWrapper from '../PreferencesWrapper'; export default class Message extends PureComponent { constructor() { diff --git a/src/components/modals/main/settings/sections/Navbar.jsx b/src/features/modals/main/settings/sections/Navbar.jsx similarity index 95% rename from src/components/modals/main/settings/sections/Navbar.jsx rename to src/features/modals/main/settings/sections/Navbar.jsx index 75b3390e..941c10c4 100644 --- a/src/components/modals/main/settings/sections/Navbar.jsx +++ b/src/features/modals/main/settings/sections/Navbar.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState, memo } from 'react'; @@ -7,12 +7,12 @@ import { MdAddLink } from 'react-icons/md'; import AddModal from './quicklinks/AddModal'; -import Checkbox from '../Checkbox'; -import Dropdown from '../Dropdown'; -import Button from '../Button'; +import Checkbox from '../../../../../components/Form/Settings/Checkbox/Checkbox'; +import Dropdown from '../../../../../components/Form/Settings/Dropdown/Dropdown'; +import { Button } from 'components/Elements'; -import { Row, Content, Action } from '../SettingsItem'; -import Header from '../Header'; +import { Row, Content, Action } from '../../../../../components/Layout/Settings/Item/SettingsItem'; +import { Header } from 'components/Layout/Settings'; import { getTitleFromUrl, isValidUrl } from 'modules/helpers/settings/modals'; import QuickLink from './quicklinks/QuickLink'; diff --git a/src/components/modals/main/settings/sections/Overview.jsx b/src/features/modals/main/settings/sections/Overview.jsx similarity index 99% rename from src/components/modals/main/settings/sections/Overview.jsx rename to src/features/modals/main/settings/sections/Overview.jsx index 00582b86..ef1b1460 100644 --- a/src/components/modals/main/settings/sections/Overview.jsx +++ b/src/features/modals/main/settings/sections/Overview.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdOutlineDragIndicator } from 'react-icons/md'; import { sortableContainer, sortableElement } from '@muetab/react-sortable-hoc'; diff --git a/src/components/modals/main/settings/sections/QuickLinks.jsx b/src/features/modals/main/settings/sections/QuickLinks.jsx similarity index 96% rename from src/components/modals/main/settings/sections/QuickLinks.jsx rename to src/features/modals/main/settings/sections/QuickLinks.jsx index 156f500a..8c3d93b3 100644 --- a/src/components/modals/main/settings/sections/QuickLinks.jsx +++ b/src/features/modals/main/settings/sections/QuickLinks.jsx @@ -1,19 +1,16 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { MdAddLink, MdLinkOff } from 'react-icons/md'; -import Header from '../Header'; -import Checkbox from '../Checkbox'; -import Dropdown from '../Dropdown'; -import Button from '../Button'; +import { Header, Row, Content, Action, PreferencesWrapper } from 'components/Layout/Settings'; +import { Checkbox, Dropdown } from 'components/Form/Settings'; +import { Button } from 'components/Elements'; import Modal from 'react-modal'; -import { Row, Content, Action } from '../SettingsItem'; import AddModal from './quicklinks/AddModal'; import EventBus from 'modules/helpers/eventbus'; import QuickLink from './quicklinks/QuickLink'; import { getTitleFromUrl, isValidUrl } from 'modules/helpers/settings/modals'; -import PreferencesWrapper from '../PreferencesWrapper'; export default class QuickLinks extends PureComponent { constructor() { diff --git a/src/components/modals/main/settings/sections/Quote.jsx b/src/features/modals/main/settings/sections/Quote.jsx similarity index 96% rename from src/components/modals/main/settings/sections/Quote.jsx rename to src/features/modals/main/settings/sections/Quote.jsx index 02e42ffa..5da3afa2 100644 --- a/src/components/modals/main/settings/sections/Quote.jsx +++ b/src/features/modals/main/settings/sections/Quote.jsx @@ -1,15 +1,17 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import React, { PureComponent } from 'react'; import { MdCancel, MdAdd, MdSource, MdOutlineFormatQuote } from 'react-icons/md'; import TextareaAutosize from '@mui/material/TextareaAutosize'; -import Header from '../Header'; -import Checkbox from '../Checkbox'; -import Dropdown from '../Dropdown'; - -import { Row, Content, Action } from '../SettingsItem'; -import Section from '../Section'; -import PreferencesWrapper from '../PreferencesWrapper'; +import { + Header, + Row, + Content, + Action, + Section, + PreferencesWrapper, +} from 'components/Layout/Settings'; +import { Checkbox, Dropdown } from 'components/Form/Settings'; import { toast } from 'react-toastify'; import EventBus from 'modules/helpers/eventbus'; diff --git a/src/components/modals/main/settings/sections/Search.jsx b/src/features/modals/main/settings/sections/Search.jsx similarity index 93% rename from src/components/modals/main/settings/sections/Search.jsx rename to src/features/modals/main/settings/sections/Search.jsx index 65701ca6..4d146e0b 100644 --- a/src/components/modals/main/settings/sections/Search.jsx +++ b/src/features/modals/main/settings/sections/Search.jsx @@ -1,18 +1,14 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { toast } from 'react-toastify'; import { MenuItem, TextField } from '@mui/material'; -import Header from '../Header'; -import Dropdown from '../Dropdown'; -import Checkbox from '../Checkbox'; - -import { Row, Content, Action } from '../SettingsItem'; +import { Header, Row, Content, Action, PreferencesWrapper } from 'components/Layout/Settings'; +import { Dropdown, Checkbox } from 'components/Form/Settings'; import EventBus from 'modules/helpers/eventbus'; -import searchEngines from 'components/widgets/search/search_engines.json'; -import PreferencesWrapper from '../PreferencesWrapper'; +import searchEngines from 'features/widgets/search/search_engines.json'; export default class SearchSettings extends PureComponent { constructor() { diff --git a/src/components/modals/main/settings/sections/Stats.jsx b/src/features/modals/main/settings/sections/Stats.jsx similarity index 97% rename from src/components/modals/main/settings/sections/Stats.jsx rename to src/features/modals/main/settings/sections/Stats.jsx index d6303344..2baf932c 100644 --- a/src/components/modals/main/settings/sections/Stats.jsx +++ b/src/features/modals/main/settings/sections/Stats.jsx @@ -1,12 +1,12 @@ /* eslint-disable array-callback-return */ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdShowChart, MdRestartAlt, MdDownload } from 'react-icons/md'; import { FaTrophy } from 'react-icons/fa'; import { toast } from 'react-toastify'; -import Button from '../../settings/Button'; -import Header, { CustomActions } from '../../settings/Header'; +import { Button } from 'components/Elements'; +import { Header, CustomActions } from 'components/Layout/Settings'; import { saveFile } from 'modules/helpers/settings/modals'; diff --git a/src/components/modals/main/settings/sections/Time.jsx b/src/features/modals/main/settings/sections/Time.jsx similarity index 95% rename from src/components/modals/main/settings/sections/Time.jsx rename to src/features/modals/main/settings/sections/Time.jsx index 656ece02..8d4f9f11 100644 --- a/src/components/modals/main/settings/sections/Time.jsx +++ b/src/features/modals/main/settings/sections/Time.jsx @@ -1,13 +1,8 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import React, { useState } from 'react'; -import Header from '../Header'; -import Checkbox from '../Checkbox'; -import Dropdown from '../Dropdown'; -import Radio from '../Radio'; - -import PreferencesWrapper from '../PreferencesWrapper'; -import { Row, Content, Action } from '../SettingsItem'; +import { Header, Row, Content, Action, PreferencesWrapper } from 'components/Layout/Settings'; +import { Checkbox, Dropdown, Radio } from 'components/Form/Settings'; import { MdRefresh } from 'react-icons/md'; diff --git a/src/components/modals/main/settings/sections/Weather.jsx b/src/features/modals/main/settings/sections/Weather.jsx similarity index 95% rename from src/components/modals/main/settings/sections/Weather.jsx rename to src/features/modals/main/settings/sections/Weather.jsx index 36b89f1c..951b9bd8 100644 --- a/src/components/modals/main/settings/sections/Weather.jsx +++ b/src/features/modals/main/settings/sections/Weather.jsx @@ -1,18 +1,12 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdAutoAwesome } from 'react-icons/md'; -import Header from '../Header'; -import Radio from '../Radio'; -import Dropdown from '../Dropdown'; -import Checkbox from '../Checkbox'; +import { Header, Row, Content, Action, PreferencesWrapper } from 'components/Layout/Settings'; +import { Radio, Dropdown, Checkbox } from 'components/Form/Settings'; import { TextField } from '@mui/material'; -import PreferencesWrapper from '../PreferencesWrapper'; - -import { Row, Content, Action } from '../SettingsItem'; - export default class WeatherSettings extends PureComponent { constructor() { super(); diff --git a/src/components/modals/main/settings/sections/background/Background.jsx b/src/features/modals/main/settings/sections/background/Background.jsx similarity index 96% rename from src/components/modals/main/settings/sections/background/Background.jsx rename to src/features/modals/main/settings/sections/background/Background.jsx index f3cd4345..2c866b0a 100644 --- a/src/components/modals/main/settings/sections/background/Background.jsx +++ b/src/features/modals/main/settings/sections/background/Background.jsx @@ -1,16 +1,20 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MenuItem } from '@mui/material'; import { MdSource, MdOutlineKeyboardArrowRight, MdOutlineAutoAwesome } from 'react-icons/md'; -import Header from '../../Header'; -import Checkbox from '../../Checkbox'; -import ChipSelect from '../../ChipSelect'; -import Dropdown from '../../Dropdown'; -import Slider from '../../Slider'; -import Radio from '../../Radio'; -import { Row, Content, Action } from '../../SettingsItem'; -import Text from '../../Text'; +import { Header } from 'components/Layout/Settings'; +import Checkbox from '../../../../../../components/Form/Settings/Checkbox/Checkbox'; +import ChipSelect from '../../../../../../components/Form/Settings/ChipSelect/ChipSelect'; +import Dropdown from '../../../../../../components/Form/Settings/Dropdown/Dropdown'; +import Slider from '../../../../../../components/Form/Settings/Slider/Slider'; +import Radio from '../../../../../../components/Form/Settings/Radio/Radio'; +import { + Row, + Content, + Action, +} from '../../../../../../components/Layout/Settings/Item/SettingsItem'; +import Text from '../../../../../../components/Form/Settings/Text/Text'; import ColourSettings from './Colour'; import CustomSettings from './Custom'; diff --git a/src/components/modals/main/settings/sections/background/Colour.jsx b/src/features/modals/main/settings/sections/background/Colour.jsx similarity index 97% rename from src/components/modals/main/settings/sections/background/Colour.jsx rename to src/features/modals/main/settings/sections/background/Colour.jsx index 31fe9a12..bac05a8e 100644 --- a/src/components/modals/main/settings/sections/background/Colour.jsx +++ b/src/features/modals/main/settings/sections/background/Colour.jsx @@ -1,8 +1,12 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, Fragment } from 'react'; import { ColorPicker } from '@muetab/react-color-gradient-picker'; import { toast } from 'react-toastify'; -import { Row, Content, Action } from '../../SettingsItem'; +import { + Row, + Content, + Action, +} from '../../../../../../components/Layout/Settings/Item/SettingsItem'; import hexToRgb from 'modules/helpers/background/hexToRgb'; import rgbToHex from 'modules/helpers/background/rgbToHex'; diff --git a/src/components/modals/main/settings/sections/background/Custom.jsx b/src/features/modals/main/settings/sections/background/Custom.jsx similarity index 97% rename from src/components/modals/main/settings/sections/background/Custom.jsx rename to src/features/modals/main/settings/sections/background/Custom.jsx index 69aa6ef4..5b8af1aa 100644 --- a/src/components/modals/main/settings/sections/background/Custom.jsx +++ b/src/features/modals/main/settings/sections/background/Custom.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { toast } from 'react-toastify'; import { @@ -13,10 +13,9 @@ import EventBus from 'modules/helpers/eventbus'; import { compressAccurately, filetoDataURL } from 'image-conversion'; import { videoCheck } from 'modules/helpers/background/widget'; -import Checkbox from '../../Checkbox'; -import FileUpload from '../../FileUpload'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import Checkbox from '../../../../../../components/Form/Settings/Checkbox/Checkbox'; +import FileUpload from '../../../../../../components/Form/Settings/FileUpload/FileUpload'; +import { Tooltip } from 'components/Elements'; import Modal from 'react-modal'; import CustomURLModal from './CustomURLModal'; diff --git a/src/components/modals/main/settings/sections/background/CustomURLModal.jsx b/src/features/modals/main/settings/sections/background/CustomURLModal.jsx similarity index 93% rename from src/components/modals/main/settings/sections/background/CustomURLModal.jsx rename to src/features/modals/main/settings/sections/background/CustomURLModal.jsx index f779e7ca..c903c30e 100644 --- a/src/components/modals/main/settings/sections/background/CustomURLModal.jsx +++ b/src/features/modals/main/settings/sections/background/CustomURLModal.jsx @@ -1,8 +1,7 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState, memo } from 'react'; import { MdClose, MdOutlineAddLink } from 'react-icons/md'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; function CustomURLModal({ modalClose, urlError, modalCloseOnly }) { const [url, setURL] = useState(); diff --git a/src/components/modals/main/settings/sections/overview_skeletons/Clock.jsx b/src/features/modals/main/settings/sections/overview_skeletons/Clock.jsx similarity index 100% rename from src/components/modals/main/settings/sections/overview_skeletons/Clock.jsx rename to src/features/modals/main/settings/sections/overview_skeletons/Clock.jsx diff --git a/src/components/modals/main/settings/sections/overview_skeletons/Date.jsx b/src/features/modals/main/settings/sections/overview_skeletons/Date.jsx similarity index 100% rename from src/components/modals/main/settings/sections/overview_skeletons/Date.jsx rename to src/features/modals/main/settings/sections/overview_skeletons/Date.jsx diff --git a/src/components/modals/main/settings/sections/overview_skeletons/Greeting.jsx b/src/features/modals/main/settings/sections/overview_skeletons/Greeting.jsx similarity index 100% rename from src/components/modals/main/settings/sections/overview_skeletons/Greeting.jsx rename to src/features/modals/main/settings/sections/overview_skeletons/Greeting.jsx diff --git a/src/components/modals/main/settings/sections/overview_skeletons/Message.jsx b/src/features/modals/main/settings/sections/overview_skeletons/Message.jsx similarity index 100% rename from src/components/modals/main/settings/sections/overview_skeletons/Message.jsx rename to src/features/modals/main/settings/sections/overview_skeletons/Message.jsx diff --git a/src/components/modals/main/settings/sections/overview_skeletons/QuickLinks.jsx b/src/features/modals/main/settings/sections/overview_skeletons/QuickLinks.jsx similarity index 100% rename from src/components/modals/main/settings/sections/overview_skeletons/QuickLinks.jsx rename to src/features/modals/main/settings/sections/overview_skeletons/QuickLinks.jsx diff --git a/src/components/modals/main/settings/sections/overview_skeletons/Quote.jsx b/src/features/modals/main/settings/sections/overview_skeletons/Quote.jsx similarity index 100% rename from src/components/modals/main/settings/sections/overview_skeletons/Quote.jsx rename to src/features/modals/main/settings/sections/overview_skeletons/Quote.jsx diff --git a/src/components/modals/main/settings/sections/quicklinks/AddModal.jsx b/src/features/modals/main/settings/sections/quicklinks/AddModal.jsx similarity index 96% rename from src/components/modals/main/settings/sections/quicklinks/AddModal.jsx rename to src/features/modals/main/settings/sections/quicklinks/AddModal.jsx index d59f406b..fe0c7c12 100644 --- a/src/components/modals/main/settings/sections/quicklinks/AddModal.jsx +++ b/src/features/modals/main/settings/sections/quicklinks/AddModal.jsx @@ -1,10 +1,9 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState, memo } from 'react'; import { TextareaAutosize } from '@mui/material'; import { MdAddLink, MdClose } from 'react-icons/md'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; function AddModal({ urlError, iconError, addLink, closeModal, edit, editData, editLink }) { const [name, setName] = useState(edit ? editData.name : ''); const [url, setUrl] = useState(edit ? editData.url : ''); diff --git a/src/components/modals/main/settings/sections/quicklinks/QuickLink.jsx b/src/features/modals/main/settings/sections/quicklinks/QuickLink.jsx similarity index 97% rename from src/components/modals/main/settings/sections/quicklinks/QuickLink.jsx rename to src/features/modals/main/settings/sections/quicklinks/QuickLink.jsx index ad8a1f2c..41b462df 100644 --- a/src/components/modals/main/settings/sections/quicklinks/QuickLink.jsx +++ b/src/features/modals/main/settings/sections/quicklinks/QuickLink.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { MdEdit, MdCancel } from 'react-icons/md'; diff --git a/src/components/modals/main/tabs/Addons.jsx b/src/features/modals/main/tabs/Addons.jsx similarity index 92% rename from src/components/modals/main/tabs/Addons.jsx rename to src/features/modals/main/tabs/Addons.jsx index 9f548fda..2c42d393 100644 --- a/src/components/modals/main/tabs/Addons.jsx +++ b/src/features/modals/main/tabs/Addons.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { memo } from 'react'; import Tabs from './backend/Tabs'; diff --git a/src/components/modals/main/tabs/Marketplace.jsx b/src/features/modals/main/tabs/Marketplace.jsx similarity index 96% rename from src/components/modals/main/tabs/Marketplace.jsx rename to src/features/modals/main/tabs/Marketplace.jsx index 5876ed17..a158c562 100644 --- a/src/components/modals/main/tabs/Marketplace.jsx +++ b/src/features/modals/main/tabs/Marketplace.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { memo } from 'react'; import Tabs from './backend/Tabs'; diff --git a/src/components/modals/main/tabs/Settings.jsx b/src/features/modals/main/tabs/Settings.jsx similarity index 98% rename from src/components/modals/main/tabs/Settings.jsx rename to src/features/modals/main/tabs/Settings.jsx index 94489c33..474ac45d 100644 --- a/src/components/modals/main/tabs/Settings.jsx +++ b/src/features/modals/main/tabs/Settings.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { memo } from 'react'; import Tabs from './backend/Tabs'; diff --git a/src/components/modals/main/tabs/backend/Tab.jsx b/src/features/modals/main/tabs/backend/Tab.jsx similarity index 99% rename from src/components/modals/main/tabs/backend/Tab.jsx rename to src/features/modals/main/tabs/backend/Tab.jsx index 98e81634..a172a089 100644 --- a/src/components/modals/main/tabs/backend/Tab.jsx +++ b/src/features/modals/main/tabs/backend/Tab.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { memo, useState, useEffect } from 'react'; import { MdSettings as Settings, diff --git a/src/components/modals/main/tabs/backend/Tabs.jsx b/src/features/modals/main/tabs/backend/Tabs.jsx similarity index 97% rename from src/components/modals/main/tabs/backend/Tabs.jsx rename to src/features/modals/main/tabs/backend/Tabs.jsx index 9814b853..bf7643d3 100644 --- a/src/components/modals/main/tabs/backend/Tabs.jsx +++ b/src/features/modals/main/tabs/backend/Tabs.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdSettings, @@ -8,7 +8,7 @@ import { MdClose, } from 'react-icons/md'; import Tab from './Tab'; -import Button from '../../settings/Button'; +import { Button } from 'components/Elements'; import ErrorBoundary from '../../../ErrorBoundary'; class Tabs extends PureComponent { diff --git a/src/features/modals/welcome/Sections/ChooseLanguage.jsx b/src/features/modals/welcome/Sections/ChooseLanguage.jsx new file mode 100644 index 00000000..4f47c66c --- /dev/null +++ b/src/features/modals/welcome/Sections/ChooseLanguage.jsx @@ -0,0 +1,40 @@ +import variables from 'config/variables'; +import { MdOutlineOpenInNew } from 'react-icons/md'; +import languages from '@/i18n/languages.json'; + +import { Radio } from 'components/Form/Settings'; +import { Header } from '../components/Layout'; + +function ChooseLanguage() { + return ( + <> +
+ + GitHub + + + + Weblate + + +
+ +
+ + ); +} + +export { ChooseLanguage as default, ChooseLanguage }; diff --git a/src/features/modals/welcome/Sections/Final.jsx b/src/features/modals/welcome/Sections/Final.jsx new file mode 100644 index 00000000..1256ac44 --- /dev/null +++ b/src/features/modals/welcome/Sections/Final.jsx @@ -0,0 +1,45 @@ +import variables from 'config/variables'; +import languages from '@/i18n/languages.json'; +import { Header } from '../components/Layout'; + +function Final(props) { + return ( + <> +
+ {variables.getMessage('modals.welcome.sections.final.changes')} + + {variables.getMessage('modals.welcome.sections.final.changes_description')} + +
+
props.switchTab(1)}> + + {variables.getMessage('modals.main.settings.sections.language.title')}:{' '} + {languages.find((i) => i.value === localStorage.getItem('language')).name} + +
+
props.switchTab(3)}> + + {variables.getMessage('modals.main.settings.sections.appearance.theme.title')}:{' '} + {variables.getMessage( + 'modals.main.settings.sections.appearance.theme.' + localStorage.getItem('theme'), + )} + +
+ {/*} + {this.state.importedSettings.length !== 0 && ( +
this.props.switchTab(2)}> + {variables.getMessage('modals.main.settings.sections.final.imported', { + amount: this.state.importedSettings.length, + })}{' '} + {this.state.importedSettings.length} +
+ )}*/} +
+ + ); +} + +export { Final as default, Final }; diff --git a/src/features/modals/welcome/Sections/ImportSettings.jsx b/src/features/modals/welcome/Sections/ImportSettings.jsx new file mode 100644 index 00000000..01b5f1f2 --- /dev/null +++ b/src/features/modals/welcome/Sections/ImportSettings.jsx @@ -0,0 +1,69 @@ +import variables from 'config/variables'; +import { useState } from 'react'; +import { FileUpload } from 'components/Form/Settings'; +import { MdCloudUpload } from 'react-icons/md'; +import { importSettings as importSettingsFunction } from 'modules/helpers/settings/modals'; +import { Header } from '../components/Layout'; +import default_settings from 'modules/default_settings.json'; + +function ImportSettings(props) { + const [importedSettings, setImportedSettings] = useState([]); + + const importSettings = (e) => { + importSettingsFunction(e); + + const settings = []; + const data = JSON.parse(e.target.result); + Object.keys(data).forEach((setting) => { + // language and theme already shown, the others are only used internally + if ( + setting === 'language' || + setting === 'theme' || + setting === 'firstRun' || + setting === 'showWelcome' || + setting === 'showReminder' + ) { + return; + } + + const defaultSetting = default_settings.find((i) => i.name === setting); + if (defaultSetting !== undefined) { + if (data[setting] === String(defaultSetting.value)) { + return; + } + } + + settings.push({ + name: setting, + value: data[setting], + }); + }); + + setImportedSettings(settings); + props.switchTab(5); + }; + return ( + <> +
+ + importSettings(e)} + /> + {variables.getMessage('modals.welcome.tip')} + + {variables.getMessage('modals.welcome.sections.settings.tip')} + + + ); +} + +export { ImportSettings as default, ImportSettings }; diff --git a/src/features/modals/welcome/Sections/Intro.jsx b/src/features/modals/welcome/Sections/Intro.jsx new file mode 100644 index 00000000..e1bc475c --- /dev/null +++ b/src/features/modals/welcome/Sections/Intro.jsx @@ -0,0 +1,82 @@ +import variables from 'config/variables'; +import { useState, useEffect } from 'react'; + +import { Header } from '../components/Layout'; +import { MdOutlineWavingHand, MdOpenInNew } from 'react-icons/md'; +import { FaDiscord, FaGithub } from 'react-icons/fa'; + +function Intro() { +const [welcomeImage, setWelcomeImage] = useState(0); + +useEffect(() => { + const timer = setInterval(() => { + setWelcomeImage(prevWelcomeImage => prevWelcomeImage < 3 ? prevWelcomeImage + 1 : 0); + }, 3000); + + // Cleanup function to clear the interval when the component unmounts + return () => clearInterval(timer); + }, [welcomeImage]); + + return ( + <> +
+
+ Example Mue setup + #shareyourmue +
+
+
+ +
+
+ + {variables.getMessage('modals.welcome.sections.intro.title')} + + + {variables.getMessage('modals.welcome.sections.intro.description')} + +
+
+
+
+ +
+
+ + {variables.getMessage('modals.welcome.sections.intro.notices.discord_title')} + + + {variables.getMessage('modals.welcome.sections.intro.notices.discord_description')} + +
+ + {' '} + {variables.getMessage('modals.welcome.sections.intro.notices.discord_join')} + +
+
+
+ +
+
+ + {variables.getMessage('modals.welcome.sections.intro.notices.github_title')} + + + {variables.getMessage('modals.welcome.sections.intro.notices.github_description')} + +
+ + + {variables.getMessage('modals.welcome.sections.intro.notices.github_open')} + +
+ + ); +} + +export { Intro as default, Intro }; diff --git a/src/features/modals/welcome/Sections/PrivacyOptions.jsx b/src/features/modals/welcome/Sections/PrivacyOptions.jsx new file mode 100644 index 00000000..34b68fa4 --- /dev/null +++ b/src/features/modals/welcome/Sections/PrivacyOptions.jsx @@ -0,0 +1,59 @@ +import variables from 'config/variables'; +import { MdOutlineOpenInNew } from 'react-icons/md'; +import { Checkbox } from 'components/Form/Settings'; +import { Header } from '../components/Layout'; + +function PrivacyOptions() { + return ( + <> +
+ + + {variables.getMessage('modals.welcome.sections.privacy.offline_mode_description')} + + + + {variables.getMessage('modals.welcome.sections.privacy.ddg_proxy_description')} + + + {variables.getMessage('modals.welcome.sections.privacy.links.title')} + + + {variables.getMessage('modals.welcome.sections.privacy.links.privacy_policy')} + + + + + {variables.getMessage('modals.welcome.sections.privacy.links.source_code')} + + + + ); +} + +export { PrivacyOptions as default, PrivacyOptions }; diff --git a/src/features/modals/welcome/Sections/StyleSelection.jsx b/src/features/modals/welcome/Sections/StyleSelection.jsx new file mode 100644 index 00000000..ae267508 --- /dev/null +++ b/src/features/modals/welcome/Sections/StyleSelection.jsx @@ -0,0 +1,41 @@ +import variables from 'config/variables'; +import { MdArchive, MdOutlineWhatshot } from 'react-icons/md'; +import { useState } from 'react'; +import { Header } from '../components/Layout'; + +function StyleSelection() { + const widgetStyle = localStorage.getItem('widgetStyle'); + const [style, setStyle] = useState({ + newStyle: widgetStyle === 'legacy' ? 'toggle newStyle' : 'toggle newStyle active', + legacyStyle: widgetStyle === 'legacy' ? 'toggle legacyStyle active' : 'toggle legacyStyle', + }); + + const changeStyle = (type) => { + setStyle({ + newStyle: type === 'new' ? 'toggle newStyle active' : 'toggle newStyle', + legacyStyle: type === 'legacy' ? 'toggle legacyStyle active' : 'toggle legacyStyle', + }); + + localStorage.setItem('widgetStyle', type); + }; + + return ( + <> +
+
+
+
changeStyle('legacy')}> + + {variables.getMessage('modals.welcome.sections.style.legacy')} +
+
changeStyle('new')}> + + {variables.getMessage('modals.welcome.sections.style.modern')} +
+
+
+ + ) +} + +export { StyleSelection as default, StyleSelection }; \ No newline at end of file diff --git a/src/features/modals/welcome/Sections/ThemeSelection.jsx b/src/features/modals/welcome/Sections/ThemeSelection.jsx new file mode 100644 index 00000000..0bc5321b --- /dev/null +++ b/src/features/modals/welcome/Sections/ThemeSelection.jsx @@ -0,0 +1,56 @@ +import variables from 'config/variables'; +import { useState } from 'react'; +import { MdAutoAwesome, MdLightMode, MdDarkMode } from 'react-icons/md'; +import { loadSettings } from 'modules/helpers/settings'; +import { Header } from '../components/Layout'; + +function ThemeSelection() { + const [theme, setTheme] = useState({ + autoClass: 'toggle auto active', + lightClass: 'toggle lightTheme', + darkClass: 'toggle darkTheme', + }); + + const changeTheme = (type) => { + setTheme({ + autoClass: type === 'auto' ? 'toggle auto active' : 'toggle auto', + lightClass: type === 'light' ? 'toggle lightTheme active' : 'toggle lightTheme', + darkClass: type === 'dark' ? 'toggle darkTheme active' : 'toggle darkTheme', + }); + + localStorage.setItem('theme', type); + loadSettings(true); + }; + return ( + <> +
+
+
changeTheme('auto')}> + + {variables.getMessage('modals.main.settings.sections.appearance.theme.auto')} +
+
+
changeTheme('light')}> + + + {variables.getMessage('modals.main.settings.sections.appearance.theme.light')} + +
+
changeTheme('dark')}> + + + {variables.getMessage('modals.main.settings.sections.appearance.theme.dark')} + +
+
+
+ {variables.getMessage('modals.welcome.tip')} + {variables.getMessage('modals.welcome.sections.theme.tip')} + + ); +} + +export { ThemeSelection as default, ThemeSelection }; diff --git a/src/features/modals/welcome/Sections/index.jsx b/src/features/modals/welcome/Sections/index.jsx new file mode 100644 index 00000000..2884bb5d --- /dev/null +++ b/src/features/modals/welcome/Sections/index.jsx @@ -0,0 +1,7 @@ +export * from './Intro'; +export * from './ChooseLanguage'; +export * from './ImportSettings'; +export * from './ThemeSelection'; +export * from './StyleSelection'; +export * from './PrivacyOptions'; +export * from './Final'; \ No newline at end of file diff --git a/src/components/modals/welcome/Welcome.jsx b/src/features/modals/welcome/Welcome.jsx similarity index 73% rename from src/components/modals/welcome/Welcome.jsx rename to src/features/modals/welcome/Welcome.jsx index b6107488..227a6b85 100644 --- a/src/components/modals/welcome/Welcome.jsx +++ b/src/features/modals/welcome/Welcome.jsx @@ -1,32 +1,42 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdArrowBackIosNew, MdArrowForwardIos, MdOutlinePreview } from 'react-icons/md'; import EventBus from 'modules/helpers/eventbus'; -import WelcomeSections from './WelcomeSections'; -import ProgressBar from './ProgressBar'; -import Button from '../main/settings/Button'; +import { ProgressBar } from './components/Elements'; +import { Button } from 'components/Elements'; +import { Wrapper, Panel } from './components/Layout'; import './welcome.scss'; +import { + Intro, + ChooseLanguage, + ImportSettings, + ThemeSelection, + StyleSelection, + PrivacyOptions, + Final, +} from './Sections'; + class WelcomeModal extends PureComponent { constructor() { super(); this.state = { - image: './././icons/undraw_celebration.svg', + image: '/src/assets/icons/undraw_celebration.svg', currentTab: 0, finalTab: 5, buttonText: variables.getMessage('modals.welcome.buttons.next'), }; this.images = [ - './././icons/undraw_celebration.svg', - './././icons/undraw_around_the_world_modified.svg', - './././icons/undraw_add_files_modified.svg', - './././icons/undraw_dark_mode.svg', - './././icons/undraw_making_art.svg', - './././icons/undraw_private_data_modified.svg', - './././icons/undraw_upgrade_modified.svg', + '/src/assets/icons/undraw_celebration.svg', + '/src/assets/icons/undraw_around_the_world_modified.svg', + '/src/assets/icons/undraw_add_files_modified.svg', + '/src/assets/icons/undraw_dark_mode.svg', + '/src/assets/icons/undraw_making_art.svg', + '/src/assets/icons/undraw_private_data_modified.svg', + '/src/assets/icons/undraw_upgrade_modified.svg', ]; } @@ -98,9 +108,20 @@ class WelcomeModal extends PureComponent { } render() { + const tabComponents = { + 0: , + 1: , + 2: this.switchTab(tab)} />, + 3: , + 4: , + 5: , + 6: this.switchTab(tab)} />, + }; + + let CurrentSection = tabComponents[this.state.currentTab] || ; return ( -
-
+ + sidebar icon this.switchTab(tab)} /> -
-
-
- this.switchTab(tab)} - /> -
+ + + {CurrentSection}
{this.state.currentTab !== 0 ? (
-
-
+ + ); } } diff --git a/src/components/modals/welcome/WelcomeSections.jsx b/src/features/modals/welcome/WelcomeSections.jsx similarity index 97% rename from src/components/modals/welcome/WelcomeSections.jsx rename to src/features/modals/welcome/WelcomeSections.jsx index e256b91d..bcea9f67 100644 --- a/src/components/modals/welcome/WelcomeSections.jsx +++ b/src/features/modals/welcome/WelcomeSections.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { @@ -13,16 +13,13 @@ import { MdOutlineOpenInNew, } from 'react-icons/md'; import { FaDiscord, FaGithub } from 'react-icons/fa'; - -import Radio from '../main/settings/Radio'; -import Checkbox from '../main/settings/Checkbox'; -import FileUpload from '../main/settings/FileUpload'; +import { Radio, Checkbox, FileUpload } from 'components/Form/Settings'; import { loadSettings } from 'modules/helpers/settings'; import { importSettings } from 'modules/helpers/settings/modals'; import default_settings from 'modules/default_settings.json'; -import languages from 'modules/languages.json'; +import languages from '@/i18n/languages.json'; class WelcomeSections extends PureComponent { constructor() { @@ -146,7 +143,7 @@ class WelcomeSections extends PureComponent {
Example Mue setup diff --git a/src/components/modals/welcome/ProgressBar.jsx b/src/features/modals/welcome/components/Elements/ProgressBar/ProgressBar.jsx similarity index 79% rename from src/components/modals/welcome/ProgressBar.jsx rename to src/features/modals/welcome/components/Elements/ProgressBar/ProgressBar.jsx index 70e27738..a6d310d7 100644 --- a/src/components/modals/welcome/ProgressBar.jsx +++ b/src/features/modals/welcome/components/Elements/ProgressBar/ProgressBar.jsx @@ -21,4 +21,7 @@ function ProgressBar({ count, currentTab, switchTab }) { ); } -export default memo(ProgressBar); +const MemoizedProgressBar = memo(ProgressBar); + +export default MemoizedProgressBar; +export { MemoizedProgressBar as ProgressBar }; \ No newline at end of file diff --git a/src/features/modals/welcome/components/Elements/ProgressBar/index.jsx b/src/features/modals/welcome/components/Elements/ProgressBar/index.jsx new file mode 100644 index 00000000..979a48fd --- /dev/null +++ b/src/features/modals/welcome/components/Elements/ProgressBar/index.jsx @@ -0,0 +1 @@ +export * from './ProgressBar'; \ No newline at end of file diff --git a/src/features/modals/welcome/components/Elements/index.jsx b/src/features/modals/welcome/components/Elements/index.jsx new file mode 100644 index 00000000..979a48fd --- /dev/null +++ b/src/features/modals/welcome/components/Elements/index.jsx @@ -0,0 +1 @@ +export * from './ProgressBar'; \ No newline at end of file diff --git a/src/features/modals/welcome/components/Layout/Header.jsx b/src/features/modals/welcome/components/Layout/Header.jsx new file mode 100644 index 00000000..46ba683e --- /dev/null +++ b/src/features/modals/welcome/components/Layout/Header.jsx @@ -0,0 +1,12 @@ +function Header({ title, subtitle }) { + return ( + <> + {title} + + {subtitle} + + + ); +} + +export { Header as default, Header }; diff --git a/src/features/modals/welcome/components/Layout/Layout.jsx b/src/features/modals/welcome/components/Layout/Layout.jsx new file mode 100644 index 00000000..1785b539 --- /dev/null +++ b/src/features/modals/welcome/components/Layout/Layout.jsx @@ -0,0 +1,7 @@ +function Layout() { + return ( +

Cheese

+ ) +} + +export { Layout as default, Layout }; \ No newline at end of file diff --git a/src/features/modals/welcome/components/Layout/Panel.jsx b/src/features/modals/welcome/components/Layout/Panel.jsx new file mode 100644 index 00000000..05beebd8 --- /dev/null +++ b/src/features/modals/welcome/components/Layout/Panel.jsx @@ -0,0 +1,5 @@ +const Panel = ({ children, type }) => ( +
{type === 'content' ?
{children}
: children}
+); + +export { Panel as default, Panel }; diff --git a/src/features/modals/welcome/components/Layout/Wrapper.jsx b/src/features/modals/welcome/components/Layout/Wrapper.jsx new file mode 100644 index 00000000..cb786559 --- /dev/null +++ b/src/features/modals/welcome/components/Layout/Wrapper.jsx @@ -0,0 +1,5 @@ +const Wrapper = ({ children }) => ( +
{children}
+) + +export { Wrapper as default, Wrapper }; \ No newline at end of file diff --git a/src/features/modals/welcome/components/Layout/index.jsx b/src/features/modals/welcome/components/Layout/index.jsx new file mode 100644 index 00000000..3acb6361 --- /dev/null +++ b/src/features/modals/welcome/components/Layout/index.jsx @@ -0,0 +1,3 @@ +export * from './Wrapper'; +export * from './Panel'; +export * from './Header'; \ No newline at end of file diff --git a/src/features/modals/welcome/components/index.jsx b/src/features/modals/welcome/components/index.jsx new file mode 100644 index 00000000..9ec85a93 --- /dev/null +++ b/src/features/modals/welcome/components/index.jsx @@ -0,0 +1,2 @@ +export * from './Layout'; +export * from './Elements'; \ No newline at end of file diff --git a/src/components/modals/welcome/welcome.scss b/src/features/modals/welcome/welcome.scss similarity index 100% rename from src/components/modals/welcome/welcome.scss rename to src/features/modals/welcome/welcome.scss diff --git a/src/components/widgets/Widgets.jsx b/src/features/widgets/Widgets.jsx similarity index 95% rename from src/components/widgets/Widgets.jsx rename to src/features/widgets/Widgets.jsx index f407f411..66fc0708 100644 --- a/src/components/widgets/Widgets.jsx +++ b/src/features/widgets/Widgets.jsx @@ -7,6 +7,7 @@ import Search from './search/Search'; import QuickLinks from './quicklinks/QuickLinks'; import Date from './time/Date'; import Message from './message/Message'; +import { WidgetsLayout } from 'components/Layout'; import EventBus from 'modules/helpers/eventbus'; @@ -73,9 +74,9 @@ export default class Widgets extends PureComponent { render() { // don't show when welcome is there return this.state.welcome !== 'false' ? ( -
+ ) : ( -
+ }> {this.enabled('searchBar') && } {this.state.order.map((element, key) => ( @@ -83,7 +84,7 @@ export default class Widgets extends PureComponent { ))} {this.enabled('weatherEnabled') && this.online ? : null} -
+
); } } diff --git a/src/components/widgets/background/Background.jsx b/src/features/widgets/background/Background.jsx similarity index 99% rename from src/components/widgets/background/Background.jsx rename to src/features/widgets/background/Background.jsx index 88802b43..4b9e3374 100644 --- a/src/components/widgets/background/Background.jsx +++ b/src/features/widgets/background/Background.jsx @@ -1,6 +1,6 @@ /* eslint-disable no-unused-expressions */ // todo: rewrite this mess -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import PhotoInformation from './PhotoInformation'; diff --git a/src/components/widgets/background/ExcludeModal.jsx b/src/features/widgets/background/ExcludeModal.jsx similarity index 94% rename from src/components/widgets/background/ExcludeModal.jsx rename to src/features/widgets/background/ExcludeModal.jsx index 9a916671..85b50814 100644 --- a/src/components/widgets/background/ExcludeModal.jsx +++ b/src/features/widgets/background/ExcludeModal.jsx @@ -1,7 +1,8 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { memo } from 'react'; import EventBus from 'modules/helpers/eventbus'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; +import { Tooltip } from 'components/Elements'; + import { MdClose, MdDone } from 'react-icons/md'; function ExcludeModal({ modalClose, info }) { diff --git a/src/components/widgets/background/Favourite.jsx b/src/features/widgets/background/Favourite.jsx similarity index 98% rename from src/components/widgets/background/Favourite.jsx rename to src/features/widgets/background/Favourite.jsx index ca2d2472..0702bd71 100644 --- a/src/components/widgets/background/Favourite.jsx +++ b/src/features/widgets/background/Favourite.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdStar, MdStarBorder } from 'react-icons/md'; diff --git a/src/components/widgets/background/Maximise.jsx b/src/features/widgets/background/Maximise.jsx similarity index 95% rename from src/components/widgets/background/Maximise.jsx rename to src/features/widgets/background/Maximise.jsx index 03485fad..ce8a588f 100644 --- a/src/components/widgets/background/Maximise.jsx +++ b/src/features/widgets/background/Maximise.jsx @@ -1,10 +1,9 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import { MdCropFree } from 'react-icons/md'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; class Maximise extends PureComponent { constructor() { super(); diff --git a/src/components/widgets/background/PhotoInformation.jsx b/src/features/widgets/background/PhotoInformation.jsx similarity index 98% rename from src/components/widgets/background/PhotoInformation.jsx rename to src/features/widgets/background/PhotoInformation.jsx index dc2f7239..cea2440b 100644 --- a/src/components/widgets/background/PhotoInformation.jsx +++ b/src/features/widgets/background/PhotoInformation.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { useState, memo } from 'react'; import Favourite from './Favourite'; import { @@ -14,9 +14,10 @@ import { MdCategory as Category, MdVisibilityOff as VisibilityOff, } from 'react-icons/md'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; +import { Tooltip } from 'components/Elements'; + import Modal from 'react-modal'; -import ShareModal from 'components/helpers/sharemodal/ShareModal'; +import { ShareModal } from 'components/Elements'; import ExcludeModal from './ExcludeModal'; /** diff --git a/src/components/widgets/background/scss/_photoinformation.scss b/src/features/widgets/background/scss/_photoinformation.scss similarity index 100% rename from src/components/widgets/background/scss/_photoinformation.scss rename to src/features/widgets/background/scss/_photoinformation.scss diff --git a/src/components/widgets/background/scss/index.scss b/src/features/widgets/background/scss/index.scss similarity index 100% rename from src/components/widgets/background/scss/index.scss rename to src/features/widgets/background/scss/index.scss diff --git a/src/components/widgets/greeting/Greeting.jsx b/src/features/widgets/greeting/Greeting.jsx similarity index 99% rename from src/components/widgets/greeting/Greeting.jsx rename to src/features/widgets/greeting/Greeting.jsx index 3f6c32e7..bde1295a 100644 --- a/src/components/widgets/greeting/Greeting.jsx +++ b/src/features/widgets/greeting/Greeting.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { nth, convertTimezone } from 'modules/helpers/date'; diff --git a/src/components/widgets/greeting/greeting.scss b/src/features/widgets/greeting/greeting.scss similarity index 100% rename from src/components/widgets/greeting/greeting.scss rename to src/features/widgets/greeting/greeting.scss diff --git a/src/components/widgets/message/Message.jsx b/src/features/widgets/message/Message.jsx similarity index 100% rename from src/components/widgets/message/Message.jsx rename to src/features/widgets/message/Message.jsx diff --git a/src/components/widgets/message/message.scss b/src/features/widgets/message/message.scss similarity index 100% rename from src/components/widgets/message/message.scss rename to src/features/widgets/message/message.scss diff --git a/src/components/widgets/navbar/Apps.jsx b/src/features/widgets/navbar/Apps.jsx similarity index 97% rename from src/components/widgets/navbar/Apps.jsx rename to src/features/widgets/navbar/Apps.jsx index 79f9166b..68f4e1ad 100644 --- a/src/components/widgets/navbar/Apps.jsx +++ b/src/features/widgets/navbar/Apps.jsx @@ -1,9 +1,10 @@ // TODO: make it work with pins or on click or smth -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, memo, useState } from 'react'; import { MdPlaylistRemove, MdOutlineApps } from 'react-icons/md'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; +import { Tooltip } from 'components/Elements'; + import { shift, useFloating } from '@floating-ui/react-dom'; import EventBus from 'modules/helpers/eventbus'; diff --git a/src/components/widgets/navbar/Navbar.jsx b/src/features/widgets/navbar/Navbar.jsx similarity index 97% rename from src/components/widgets/navbar/Navbar.jsx rename to src/features/widgets/navbar/Navbar.jsx index c9ce3467..ccceabc1 100644 --- a/src/components/widgets/navbar/Navbar.jsx +++ b/src/features/widgets/navbar/Navbar.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { MdRefresh, MdSettings } from 'react-icons/md'; @@ -7,8 +7,7 @@ import Notes from './Notes'; import Todo from './Todo'; import Apps from './Apps'; import Maximise from '../background/Maximise'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; import EventBus from 'modules/helpers/eventbus'; import './scss/index.scss'; diff --git a/src/components/widgets/navbar/Notes.jsx b/src/features/widgets/navbar/Notes.jsx similarity index 97% rename from src/components/widgets/navbar/Notes.jsx rename to src/features/widgets/navbar/Notes.jsx index 11880812..42fe1104 100644 --- a/src/components/widgets/navbar/Notes.jsx +++ b/src/features/widgets/navbar/Notes.jsx @@ -1,11 +1,12 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, memo, useState } from 'react'; import { MdContentCopy, MdAssignment, MdPushPin, MdDownload } from 'react-icons/md'; import { useFloating, shift } from '@floating-ui/react-dom'; import TextareaAutosize from '@mui/material/TextareaAutosize'; import { toast } from 'react-toastify'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; +import { Tooltip } from 'components/Elements'; + import { saveFile } from 'modules/helpers/settings/modals'; import EventBus from 'modules/helpers/eventbus'; diff --git a/src/components/widgets/navbar/Todo.jsx b/src/features/widgets/navbar/Todo.jsx similarity index 98% rename from src/components/widgets/navbar/Todo.jsx rename to src/features/widgets/navbar/Todo.jsx index 1990b627..11fe8046 100644 --- a/src/components/widgets/navbar/Todo.jsx +++ b/src/features/widgets/navbar/Todo.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, memo, useState } from 'react'; import { @@ -10,7 +10,8 @@ import { MdPlaylistRemove, } from 'react-icons/md'; import TextareaAutosize from '@mui/material/TextareaAutosize'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; +import { Tooltip } from 'components/Elements'; + import Checkbox from '@mui/material/Checkbox'; import { shift, useFloating } from '@floating-ui/react-dom'; import { sortableContainer, sortableElement, sortableHandle } from '@muetab/react-sortable-hoc'; diff --git a/src/components/widgets/navbar/scss/_apps.scss b/src/features/widgets/navbar/scss/_apps.scss similarity index 100% rename from src/components/widgets/navbar/scss/_apps.scss rename to src/features/widgets/navbar/scss/_apps.scss diff --git a/src/components/widgets/navbar/scss/_notes.scss b/src/features/widgets/navbar/scss/_notes.scss similarity index 100% rename from src/components/widgets/navbar/scss/_notes.scss rename to src/features/widgets/navbar/scss/_notes.scss diff --git a/src/components/widgets/navbar/scss/_todo.scss b/src/features/widgets/navbar/scss/_todo.scss similarity index 100% rename from src/components/widgets/navbar/scss/_todo.scss rename to src/features/widgets/navbar/scss/_todo.scss diff --git a/src/components/widgets/navbar/scss/index.scss b/src/features/widgets/navbar/scss/index.scss similarity index 100% rename from src/components/widgets/navbar/scss/index.scss rename to src/features/widgets/navbar/scss/index.scss diff --git a/src/components/widgets/quicklinks/QuickLinks.jsx b/src/features/widgets/quicklinks/QuickLinks.jsx similarity index 98% rename from src/components/widgets/quicklinks/QuickLinks.jsx rename to src/features/widgets/quicklinks/QuickLinks.jsx index 85587df1..cff5b8b1 100644 --- a/src/components/widgets/quicklinks/QuickLinks.jsx +++ b/src/features/widgets/quicklinks/QuickLinks.jsx @@ -1,5 +1,6 @@ import { PureComponent, createRef } from 'react'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; +import { Tooltip } from 'components/Elements'; + import EventBus from 'modules/helpers/eventbus'; import './quicklinks.scss'; diff --git a/src/components/widgets/quicklinks/quicklinks.scss b/src/features/widgets/quicklinks/quicklinks.scss similarity index 100% rename from src/components/widgets/quicklinks/quicklinks.scss rename to src/features/widgets/quicklinks/quicklinks.scss diff --git a/src/components/widgets/quote/Quote.jsx b/src/features/widgets/quote/Quote.jsx similarity index 98% rename from src/components/widgets/quote/Quote.jsx rename to src/features/widgets/quote/Quote.jsx index 2de5fc7c..49b37c93 100644 --- a/src/components/widgets/quote/Quote.jsx +++ b/src/features/widgets/quote/Quote.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { MdContentCopy, @@ -11,9 +11,10 @@ import { import { toast } from 'react-toastify'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; +import { Tooltip } from 'components/Elements'; + import Modal from 'react-modal'; -import ShareModal from 'components/helpers/sharemodal/ShareModal'; +import { ShareModal } from 'components/Elements'; import offline_quotes from './offline_quotes.json'; diff --git a/src/components/widgets/quote/offline_quotes.json b/src/features/widgets/quote/offline_quotes.json similarity index 100% rename from src/components/widgets/quote/offline_quotes.json rename to src/features/widgets/quote/offline_quotes.json diff --git a/src/components/widgets/quote/quote.scss b/src/features/widgets/quote/quote.scss similarity index 100% rename from src/components/widgets/quote/quote.scss rename to src/features/widgets/quote/quote.scss diff --git a/src/components/widgets/search/Search.jsx b/src/features/widgets/search/Search.jsx similarity index 96% rename from src/components/widgets/search/Search.jsx rename to src/features/widgets/search/Search.jsx index 790f2131..897fde51 100644 --- a/src/components/widgets/search/Search.jsx +++ b/src/features/widgets/search/Search.jsx @@ -1,18 +1,17 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { MdSearch, MdMic, MdScreenSearchDesktop } from 'react-icons/md'; import { BsGoogle } from 'react-icons/bs'; import { SiDuckduckgo, SiMicrosoftbing, SiYahoo, SiBaidu } from 'react-icons/si'; import { FaYandex } from 'react-icons/fa'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - -import AutocompleteInput from 'components/helpers/autocomplete/Autocomplete'; +import { Tooltip } from 'components/Elements'; +import AutocompleteInput from 'features/helpers/autocomplete/Autocomplete'; import EventBus from 'modules/helpers/eventbus'; import './search.scss'; -import searchEngines from 'components/widgets/search/search_engines.json'; +import searchEngines from 'features/widgets/search/search_engines.json'; export default class Search extends PureComponent { constructor() { diff --git a/src/components/widgets/search/search.scss b/src/features/widgets/search/search.scss similarity index 100% rename from src/components/widgets/search/search.scss rename to src/features/widgets/search/search.scss diff --git a/src/components/widgets/search/search_engines.json b/src/features/widgets/search/search_engines.json similarity index 100% rename from src/components/widgets/search/search_engines.json rename to src/features/widgets/search/search_engines.json diff --git a/src/components/widgets/time/Clock.jsx b/src/features/widgets/time/Clock.jsx similarity index 100% rename from src/components/widgets/time/Clock.jsx rename to src/features/widgets/time/Clock.jsx diff --git a/src/components/widgets/time/Date.jsx b/src/features/widgets/time/Date.jsx similarity index 99% rename from src/components/widgets/time/Date.jsx rename to src/features/widgets/time/Date.jsx index 123125ee..29ae1223 100644 --- a/src/components/widgets/time/Date.jsx +++ b/src/features/widgets/time/Date.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent, createRef } from 'react'; import { nth, convertTimezone } from '../../../modules/helpers/date'; diff --git a/src/components/widgets/time/clock.scss b/src/features/widgets/time/clock.scss similarity index 100% rename from src/components/widgets/time/clock.scss rename to src/features/widgets/time/clock.scss diff --git a/src/components/widgets/time/date.scss b/src/features/widgets/time/date.scss similarity index 100% rename from src/components/widgets/time/date.scss rename to src/features/widgets/time/date.scss diff --git a/src/components/widgets/time/timezones.json b/src/features/widgets/time/timezones.json similarity index 100% rename from src/components/widgets/time/timezones.json rename to src/features/widgets/time/timezones.json diff --git a/src/components/widgets/weather/Expanded.jsx b/src/features/widgets/weather/Expanded.jsx similarity index 98% rename from src/components/widgets/weather/Expanded.jsx rename to src/features/widgets/weather/Expanded.jsx index 3796f82b..070c660a 100644 --- a/src/components/widgets/weather/Expanded.jsx +++ b/src/features/widgets/weather/Expanded.jsx @@ -6,8 +6,7 @@ import { MdDisabledVisible } from 'react-icons/md'; import WeatherIcon from './WeatherIcon'; import WindDirectionIcon from './WindDirectionIcon'; -import Tooltip from 'components/helpers/tooltip/Tooltip'; - +import { Tooltip } from 'components/Elements'; function Expanded({ state: { weather, icon }, weatherType, variables }) { /** * If the localStorage item is true and the weatherType is greater than or equal to 3, or if the diff --git a/src/components/widgets/weather/Weather.jsx b/src/features/widgets/weather/Weather.jsx similarity index 99% rename from src/components/widgets/weather/Weather.jsx rename to src/features/widgets/weather/Weather.jsx index 67774fb4..64399e2f 100644 --- a/src/components/widgets/weather/Weather.jsx +++ b/src/features/widgets/weather/Weather.jsx @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { PureComponent } from 'react'; import WeatherIcon from './WeatherIcon'; diff --git a/src/components/widgets/weather/WeatherIcon.jsx b/src/features/widgets/weather/WeatherIcon.jsx similarity index 100% rename from src/components/widgets/weather/WeatherIcon.jsx rename to src/features/widgets/weather/WeatherIcon.jsx diff --git a/src/components/widgets/weather/WindDirectionIcon.jsx b/src/features/widgets/weather/WindDirectionIcon.jsx similarity index 100% rename from src/components/widgets/weather/WindDirectionIcon.jsx rename to src/features/widgets/weather/WindDirectionIcon.jsx diff --git a/src/components/widgets/weather/weather.scss b/src/features/widgets/weather/weather.scss similarity index 100% rename from src/components/widgets/weather/weather.scss rename to src/features/widgets/weather/weather.scss diff --git a/src/modules/languages.json b/src/i18n/languages.json similarity index 100% rename from src/modules/languages.json rename to src/i18n/languages.json diff --git a/src/translations/bn.json b/src/i18n/locales/bn.json similarity index 100% rename from src/translations/bn.json rename to src/i18n/locales/bn.json diff --git a/src/translations/de_DE.json b/src/i18n/locales/de_DE.json similarity index 100% rename from src/translations/de_DE.json rename to src/i18n/locales/de_DE.json diff --git a/src/translations/en_GB.json b/src/i18n/locales/en_GB.json similarity index 100% rename from src/translations/en_GB.json rename to src/i18n/locales/en_GB.json diff --git a/src/translations/en_US.json b/src/i18n/locales/en_US.json similarity index 100% rename from src/translations/en_US.json rename to src/i18n/locales/en_US.json diff --git a/src/translations/es.json b/src/i18n/locales/es.json similarity index 100% rename from src/translations/es.json rename to src/i18n/locales/es.json diff --git a/src/translations/es_419.json b/src/i18n/locales/es_419.json similarity index 100% rename from src/translations/es_419.json rename to src/i18n/locales/es_419.json diff --git a/src/translations/fr.json b/src/i18n/locales/fr.json similarity index 100% rename from src/translations/fr.json rename to src/i18n/locales/fr.json diff --git a/src/translations/id_ID.json b/src/i18n/locales/id_ID.json similarity index 100% rename from src/translations/id_ID.json rename to src/i18n/locales/id_ID.json diff --git a/src/translations/nl.json b/src/i18n/locales/nl.json similarity index 100% rename from src/translations/nl.json rename to src/i18n/locales/nl.json diff --git a/src/translations/no.json b/src/i18n/locales/no.json similarity index 100% rename from src/translations/no.json rename to src/i18n/locales/no.json diff --git a/src/translations/pt.json b/src/i18n/locales/pt.json similarity index 100% rename from src/translations/pt.json rename to src/i18n/locales/pt.json diff --git a/src/translations/pt_BR.json b/src/i18n/locales/pt_BR.json similarity index 100% rename from src/translations/pt_BR.json rename to src/i18n/locales/pt_BR.json diff --git a/src/translations/ru.json b/src/i18n/locales/ru.json similarity index 100% rename from src/translations/ru.json rename to src/i18n/locales/ru.json diff --git a/src/translations/tr_TR.json b/src/i18n/locales/tr_TR.json similarity index 100% rename from src/translations/tr_TR.json rename to src/i18n/locales/tr_TR.json diff --git a/src/translations/zh_CN.json b/src/i18n/locales/zh_CN.json similarity index 100% rename from src/translations/zh_CN.json rename to src/i18n/locales/zh_CN.json diff --git a/src/index.jsx b/src/index.jsx index 717c7075..c29d2565 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -4,7 +4,7 @@ import * as Sentry from '@sentry/react'; import App from './App'; import ErrorBoundary from './ErrorBoundary'; -import variables from './modules/variables'; +import variables from './config/variables'; import './scss/index.scss'; // the toast css is based on default so we need to import it diff --git a/src/modules/helpers/settings/index.js b/src/modules/helpers/settings/index.js index 54416de5..dbcdcb98 100644 --- a/src/modules/helpers/settings/index.js +++ b/src/modules/helpers/settings/index.js @@ -1,8 +1,8 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import experimentalInit from '../experimental'; import defaultSettings from 'modules/default_settings.json'; -import languages from 'modules/languages.json'; +import languages from '@/i18n/languages.json'; /** * It sets the default settings for the extension diff --git a/src/modules/helpers/settings/modals.js b/src/modules/helpers/settings/modals.js index 24aa52a0..847bbabc 100644 --- a/src/modules/helpers/settings/modals.js +++ b/src/modules/helpers/settings/modals.js @@ -1,4 +1,4 @@ -import variables from 'modules/variables'; +import variables from 'config/variables'; import { toast } from 'react-toastify'; /** diff --git a/src/modules/translations.js b/src/modules/translations.js index ff1f9ca1..c0afa5d1 100644 --- a/src/modules/translations.js +++ b/src/modules/translations.js @@ -1,19 +1,19 @@ import I18n from '@eartharoid/i18n'; -import * as de_DE from '../translations/de_DE.json'; -import * as en_GB from '../translations/en_GB.json'; -import * as en_US from '../translations/en_US.json'; -import * as es from '../translations/es.json'; -import * as es_419 from '../translations/es_419.json'; -import * as fr from '../translations/fr.json'; -import * as nl from '../translations/nl.json'; -import * as no from '../translations/no.json'; -import * as ru from '../translations/ru.json'; -import * as zh_CN from '../translations/zh_CN.json'; -import * as id_ID from '../translations/id_ID.json'; -import * as tr_TR from '../translations/tr_TR.json'; -import * as pt_BR from '../translations/pt_BR.json'; -import * as bn from '../translations/bn.json'; +import * as de_DE from 'translations/de_DE.json'; +import * as en_GB from 'translations/en_GB.json'; +import * as en_US from 'translations/en_US.json'; +import * as es from 'translations/es.json'; +import * as es_419 from 'translations/es_419.json'; +import * as fr from 'translations/fr.json'; +import * as nl from 'translations/nl.json'; +import * as no from 'translations/no.json'; +import * as ru from 'translations/ru.json'; +import * as zh_CN from 'translations/zh_CN.json'; +import * as id_ID from 'translations/id_ID.json'; +import * as tr_TR from 'translations/tr_TR.json'; +import * as pt_BR from 'translations/pt_BR.json'; +import * as bn from 'translations/bn.json'; /** * Initialise the i18n object. @@ -57,4 +57,4 @@ export const translations = { tr_TR, pt_BR, bn, -}; \ No newline at end of file +}; diff --git a/src/scss/index.scss b/src/scss/index.scss index d42e224c..bbe9de53 100644 --- a/src/scss/index.scss +++ b/src/scss/index.scss @@ -122,12 +122,6 @@ body { place-items: center; width: 100vw; height: 100vh; - .criticalError-message { - color: #fff; - } - p { - color: #ffffffc0; - } .criticalError-actions { display: flex; @@ -137,10 +131,7 @@ body { button, a { - background: #0e1013; - box-shadow: 0 0 0 1px #484848; border: 0; - color: #fff; border-radius: 12px; padding: 10px 30px 10px 30px; font-size: 1rem; @@ -152,9 +143,58 @@ body { transition: 0.5s; cursor: pointer; text-decoration: none; + } +} - &:hover { - background: #1e1e1e; +/* light theme critical error */ +@media (prefers-color-scheme: dark) { + /** { + background-color: #000000 !important; + }*/ + + .criticalError { + .criticalError-message { + color: #fff; + } + + p { + color: rgba(255, 255, 255, 0.7529411765); + } + + a { + background: #0e1013; + box-shadow: 0 0 0 1px #484848; + color: #fff; + + &:hover { + background: #1e1e1e; + } + } + } +} + +@media (prefers-color-scheme: light) { + * { + background-color: #ffffff !important; + } + + .criticalError { + .criticalError-message { + color: #000; + } + + p { + color: rgba(0, 0, 0, 0.7529411765); + } + + a { + background: #fdfdfd; + box-shadow: 0 0 0 1px #484848; + color: #000; + + &:hover { + background: #f5f5f5; + } } } } diff --git a/vite.config.mjs b/vite.config.mjs index bc4155c8..0f26c652 100644 --- a/vite.config.mjs +++ b/vite.config.mjs @@ -1,4 +1,4 @@ -import { defineConfig } from 'vite'; +import { defineConfig, loadEnv } from 'vite'; import react from '@vitejs/plugin-react-swc'; import path from 'path'; import fs from 'fs'; @@ -63,39 +63,48 @@ const prepareBuilds = () => ({ }, }); -export default defineConfig({ - plugins: [react(), prepareBuilds(), progress()], - server: { - open: true, - hmr: { - protocol: 'ws', - host: 'localhost', +export default defineConfig(({ command, mode }) => { + const env = loadEnv(mode, process.cwd(), ''); + return { + define: { + __APP_ENV__: JSON.stringify(env.APP_ENV), }, - }, - build: { - minify: isProd ? 'esbuild' : false, - sourcemap: !isProd, - rollupOptions: { - output: { - manualChunks(id) { - if (id.includes('node_modules')) { - if (id.includes('@mui')) { - return 'vendor_mui'; - } + plugins: [react(), prepareBuilds(), progress()], + server: { + open: true, + hmr: { + protocol: 'ws', + host: 'localhost', + }, + }, + build: { + minify: isProd ? 'esbuild' : false, + sourcemap: !isProd, + rollupOptions: { + output: { + manualChunks(id) { + if (id.includes('node_modules')) { + if (id.includes('@mui')) { + return 'vendor_mui'; + } - return 'vendor'; - } + return 'vendor'; + } + }, }, }, }, - }, - resolve: { - extensions: ['.js', '.jsx'], - alias: { - components: path.resolve(__dirname, './src/components'), - modules: path.resolve(__dirname, './src/modules'), - translations: path.resolve(__dirname, './src/translations'), - scss: path.resolve(__dirname, './src/scss'), + resolve: { + extensions: ['.js', '.jsx'], + alias: { + '@': path.resolve(__dirname, './src'), + features: path.resolve(__dirname, './src/features'), + components: path.resolve(__dirname, './src/components'), + modules: path.resolve(__dirname, './src/modules'), + translations: path.resolve(__dirname, './src/i18n/locales'), + config: path.resolve(__dirname, './src/config'), + scss: path.resolve(__dirname, './src/scss'), + }, }, - }, + }; });