diff --git a/docs/README.md b/docs/README.md index 586b143..a28d906 100644 --- a/docs/README.md +++ b/docs/README.md @@ -60,7 +60,7 @@ See [docs/configuration](configuration/README.md) for more information. Contains the static build files after [building](#building--deploying) the application. This directory is not included in the GitHub repository. -### Coding style +### Code style Type | Case | Example --- | --- | --- @@ -75,6 +75,7 @@ Global constant variables | MACRO_CASE | ```export const NAME = "Prozilla OS";`` Classes | PascalCase | ```class WindowsManager { }``` React components | PascalCase | ```export function WindowsView({ }) { }``` Functions | camelCase | ```function focusWindow() { }``` +Types | PascalCase | ```type FooBar = boolean;``` ### External files diff --git a/docs/features/README.md b/docs/features/README.md index 228a887..07de1ec 100644 --- a/docs/features/README.md +++ b/docs/features/README.md @@ -10,7 +10,7 @@ To see the status and to-do's of each feature, check the [task board](https://pr ## Table of Contents -- [Actions](storage/README.md) +- [Actions](actions/README.md) - [Apps](apps/README.md) - [Modals](modals/README.md) - [Settings](settings/README.md) diff --git a/docs/features/apps/README.md b/docs/features/apps/README.md index a70129a..31d8758 100644 --- a/docs/features/apps/README.md +++ b/docs/features/apps/README.md @@ -62,7 +62,7 @@ The webview template can be used to turn a webpage into an application by simply ```js // features/apps/apps.js -import { WebView } from "../../components/apps/templates/WebView.jsx"; +import { WebView } from "../../components/apps/templates/WebView"; export default class AppsManager { static APPLICATIONS = [ @@ -91,7 +91,7 @@ export function Example() { ```js // features/apps/apps.js -import { Example } from "../../components/apps/example/Example.jsx"; +import { Example } from "../../components/apps/example/Example"; export default class AppsManager { static APPLICATIONS = [ diff --git a/package-lock.json b/package-lock.json index 5c608eb..361f234 100644 --- a/package-lock.json +++ b/package-lock.json @@ -133,7 +133,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/@babel/eslint-parser": { @@ -166,7 +166,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/@babel/generator": { @@ -228,7 +228,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/@babel/helper-create-class-features-plugin": { @@ -258,7 +258,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { @@ -282,7 +282,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/@babel/helper-define-polyfill-provider": { @@ -523,7 +523,7 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", "bin": { - "parser": "bin/babel-parser.js" + "parser": "bin/babel-parser" }, "engines": { "node": ">=6.0.0" @@ -1678,7 +1678,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { @@ -1937,7 +1937,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/@babel/preset-modules": { @@ -2414,7 +2414,7 @@ "argparse": "^2.0.1" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "js-yaml": "bin/js-yaml" } }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { @@ -3300,7 +3300,7 @@ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/@nodelib/fs.scandir": { @@ -5806,7 +5806,7 @@ "dependencies": { "browserslist": "^4.21.5", "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", + "fraction": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -6147,7 +6147,7 @@ "node": ">= 8.0.0" } }, - "node_modules/big.js": { + "node_modules/big": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", @@ -6289,7 +6289,7 @@ "update-browserslist-db": "^1.0.11" }, "bin": { - "browserslist": "cli.js" + "browserslist": "cli" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" @@ -7329,7 +7329,7 @@ } } }, - "node_modules/decimal.js": { + "node_modules/decimal": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" @@ -7677,7 +7677,7 @@ "jake": "^10.8.5" }, "bin": { - "ejs": "bin/cli.js" + "ejs": "bin/cli" }, "engines": { "node": ">=0.10.0" @@ -7977,8 +7977,8 @@ "esutils": "^2.0.2" }, "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "escodegen": "bin/escodegen", + "esgenerate": "bin/esgenerate" }, "engines": { "node": ">=6.0" @@ -8041,7 +8041,7 @@ "text-table": "^0.2.0" }, "bin": { - "eslint": "bin/eslint.js" + "eslint": "bin/eslint" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8296,7 +8296,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/eslint-plugin-jsdoc": { @@ -8368,7 +8368,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/eslint-plugin-react": { @@ -8445,7 +8445,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/eslint-plugin-testing-library": { @@ -8687,7 +8687,7 @@ "argparse": "^2.0.1" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "js-yaml": "bin/js-yaml" } }, "node_modules/eslint/node_modules/supports-color": { @@ -8733,8 +8733,8 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "esparse": "bin/esparse", + "esvalidate": "bin/esvalidate" }, "engines": { "node": ">=4" @@ -9379,7 +9379,7 @@ "node": ">= 0.6" } }, - "node_modules/fraction.js": { + "node_modules/fraction": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", @@ -9557,8 +9557,8 @@ "globby": "^6.1.0" }, "bin": { - "gh-pages": "bin/gh-pages.js", - "gh-pages-clean": "bin/gh-pages-clean.js" + "gh-pages": "bin/gh-pages", + "gh-pages-clean": "bin/gh-pages-clean" }, "engines": { "node": ">=10" @@ -9904,7 +9904,7 @@ "he": "bin/he" } }, - "node_modules/highlight.js": { + "node_modules/highlight": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", @@ -9920,7 +9920,7 @@ "node": ">= 6.0.0" } }, - "node_modules/hpack.js": { + "node_modules/hpack": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", @@ -10008,7 +10008,7 @@ "terser": "^5.10.0" }, "bin": { - "html-minifier-terser": "cli.js" + "html-minifier-terser": "cli" }, "engines": { "node": ">=12" @@ -10235,7 +10235,7 @@ "resolve-cwd": "^3.0.0" }, "bin": { - "import-local-fixture": "fixtures/cli.js" + "import-local-fixture": "fixtures/cli" }, "engines": { "node": ">=8" @@ -10292,7 +10292,7 @@ "node": ">= 0.4" } }, - "node_modules/ipaddr.js": { + "node_modules/ipaddr": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", @@ -10487,7 +10487,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "bin": { - "is-docker": "cli.js" + "is-docker": "cli" }, "engines": { "node": ">=8" @@ -10834,7 +10834,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/istanbul-lib-report": { @@ -10925,7 +10925,7 @@ "minimatch": "^3.1.2" }, "bin": { - "jake": "bin/cli.js" + "jake": "bin/cli" }, "engines": { "node": ">=10" @@ -11005,7 +11005,7 @@ "jest-cli": "^27.5.1" }, "bin": { - "jest": "bin/jest.js" + "jest": "bin/jest" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -11144,7 +11144,7 @@ "yargs": "^16.2.0" }, "bin": { - "jest": "bin/jest.js" + "jest": "bin/jest" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -12877,7 +12877,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", "bin": { - "jiti": "bin/jiti.js" + "jiti": "bin/jiti" } }, "node_modules/js-tokens": { @@ -12894,7 +12894,7 @@ "esprima": "^4.0.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "js-yaml": "bin/js-yaml" } }, "node_modules/jsdoc-type-pratt-parser": { @@ -12917,7 +12917,7 @@ "cssom": "^0.4.4", "cssstyle": "^2.3.0", "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", + "decimal": "^10.2.1", "domexception": "^2.0.1", "escodegen": "^2.0.0", "form-data": "^3.0.0", @@ -12987,7 +12987,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { - "json5": "lib/cli.js" + "json5": "lib/cli" }, "engines": { "node": ">=6" @@ -13118,7 +13118,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { - "big.js": "^5.2.2", + "big": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" }, @@ -13178,7 +13178,7 @@ "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { - "loose-envify": "cli.js" + "loose-envify": "cli" } }, "node_modules/lower-case": { @@ -13195,7 +13195,7 @@ "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", "dependencies": { "fault": "^1.0.0", - "highlight.js": "~10.7.0" + "highlight": "~10.7.0" }, "funding": { "type": "github", @@ -13215,7 +13215,7 @@ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "bin": { - "lz-string": "bin/bin.js" + "lz-string": "bin/bin" } }, "node_modules/magic-string": { @@ -13245,7 +13245,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/makeerror": { @@ -13334,7 +13334,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "bin": { - "mime": "cli.js" + "mime": "cli" }, "engines": { "node": ">=4" @@ -13474,7 +13474,7 @@ "minimist": "^1.2.6" }, "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "bin/cmd" } }, "node_modules/ms": { @@ -13491,7 +13491,7 @@ "thunky": "^1.0.2" }, "bin": { - "multicast-dns": "cli.js" + "multicast-dns": "cli" } }, "node_modules/mz": { @@ -15502,13 +15502,13 @@ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "ipaddr": "1.9.1" }, "engines": { "node": ">= 0.10" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { + "node_modules/proxy-addr/node_modules/ipaddr": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", @@ -15890,7 +15890,7 @@ "workbox-webpack-plugin": "^6.4.1" }, "bin": { - "react-scripts": "bin/react-scripts.js" + "react-scripts": "bin/react-scripts" }, "engines": { "node": ">=14.0.0" @@ -15937,7 +15937,7 @@ "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==", "dependencies": { "@babel/runtime": "^7.3.1", - "highlight.js": "^10.4.1", + "highlight": "^10.4.1", "lowlight": "^1.17.0", "prismjs": "^1.27.0", "refractor": "^3.6.0" @@ -16314,7 +16314,7 @@ "glob": "^7.1.3" }, "bin": { - "rimraf": "bin.js" + "rimraf": "bin" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -16575,7 +16575,7 @@ "lru-cache": "^6.0.0" }, "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" }, "engines": { "node": ">=10" @@ -16954,7 +16954,7 @@ "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", + "hpack": "^2.1.6", "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" @@ -17460,8 +17460,8 @@ "sucrase": "^3.32.0" }, "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" + "tailwind": "lib/cli", + "tailwindcss": "lib/cli" }, "engines": { "node": ">=14.0.0" @@ -17746,7 +17746,7 @@ "minimist": "^1.2.0" }, "bin": { - "json5": "lib/cli.js" + "json5": "lib/cli" } }, "node_modules/tsconfig-paths/node_modules/strip-bom": { @@ -18031,7 +18031,7 @@ "picocolors": "^1.0.0" }, "bin": { - "update-browserslist-db": "cli.js" + "update-browserslist-db": "cli" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -18207,7 +18207,7 @@ "webpack-sources": "^3.2.3" }, "bin": { - "webpack": "bin/webpack.js" + "webpack": "bin/webpack" }, "engines": { "node": ">=10.13.0" @@ -18316,7 +18316,7 @@ "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", + "ipaddr": "^2.0.1", "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", @@ -18330,7 +18330,7 @@ "ws": "^8.13.0" }, "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "webpack-dev-server": "bin/webpack-dev-server" }, "engines": { "node": ">= 12.13.0" diff --git a/package.json b/package.json index d079e0c..0224073 100644 --- a/package.json +++ b/package.json @@ -95,8 +95,6 @@ ], "jsdoc/check-values": "warn", "jsdoc/empty-tags": "warn", - "jsdoc/check-param-names": "warn", - "jsdoc/check-property-names": "warn", "jsdoc/check-access": "warn", "jsdoc/check-alignment": "warn", "jsdoc/multiline-blocks": "warn", diff --git a/src/App.tsx b/src/App.tsx index 70ee040..c1c98ad 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,14 +1,14 @@ import styles from "./App.module.css"; -import { Taskbar } from "./components/taskbar/Taskbar.jsx"; +import { Taskbar } from "./components/taskbar/Taskbar"; import { WindowsManagerProvider } from "./hooks/windows/windowsManagerContext"; -import { WindowsView } from "./components/windows/WindowsView.jsx"; +import { WindowsView } from "./components/windows/WindowsView"; import { VirtualRootProvider } from "./hooks/virtual-drive/virtualRootContext"; -import { Desktop } from "./components/desktop/Desktop.jsx"; +import { Desktop } from "./components/desktop/Desktop"; import { SettingsManagerProvider } from "./hooks/settings/settingsManagerContext"; -import { ModalsView } from "./components/modals/ModalsView.jsx"; -import React, { FC, useEffect } from "react"; +import { ModalsView } from "./components/modals/ModalsView"; +import { FC, useEffect } from "react"; import { ZIndexManagerProvider } from "./hooks/z-index/zIndexManagerContext"; -import { TrackingManager } from "./features/tracking/trackingManager.js"; +import { TrackingManager } from "./features/tracking/trackingManager"; import { ModalsManagerProvider } from "./hooks/modals/modalsManagerContext"; TrackingManager.initialize(); diff --git a/src/components/_utils/button/Button.jsx b/src/components/_utils/button/Button.tsx similarity index 78% rename from src/components/_utils/button/Button.jsx rename to src/components/_utils/button/Button.tsx index 3270d28..789c044 100644 --- a/src/components/_utils/button/Button.jsx +++ b/src/components/_utils/button/Button.tsx @@ -1,13 +1,16 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import styles from "./Button.module.css"; import { faExternalLink } from "@fortawesome/free-solid-svg-icons"; +import { ReactNode } from "react"; -/** - * @param {object} props - * @param {string} props.className - * @param {string} props.href - */ -export function Button(props) { +interface ButtonProps { + className?: string; + href?: string; + children?: ReactNode; + [key: string]: any; +} + +export function Button(props: ButtonProps) { let { className = "" } = props; const { href, children } = props; diff --git a/src/components/_utils/dropdown-button/DropdownButton.jsx b/src/components/_utils/dropdown-button/DropdownButton.tsx similarity index 92% rename from src/components/_utils/dropdown-button/DropdownButton.jsx rename to src/components/_utils/dropdown-button/DropdownButton.tsx index 139ea01..521d02e 100644 --- a/src/components/_utils/dropdown-button/DropdownButton.jsx +++ b/src/components/_utils/dropdown-button/DropdownButton.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; import styles from "./DropdownButton.module.css"; -import OutsideClickListener from "../../../hooks/_utils/outsideClick.js"; -import { formatShortcut } from "../../../features/_utils/string.utils.js"; +import OutsideClickListener from "../../../hooks/_utils/outsideClick"; +import { formatShortcut } from "../../../features/_utils/string.utils"; /** * @param {object} props @@ -25,7 +25,7 @@ export function DropdownButton({ label, options, shortcuts }) { {open && options ? (
- {Object.entries(options).map(([label, callback]) => + {Object.entries(options).map(([label, callback]: [label: string, callback: Function]) =>
; } \ No newline at end of file diff --git a/src/components/actions/actions/RadioAction.jsx b/src/components/actions/actions/RadioAction.tsx similarity index 79% rename from src/components/actions/actions/RadioAction.jsx rename to src/components/actions/actions/RadioAction.tsx index 472b7fb..5e75f59 100644 --- a/src/components/actions/actions/RadioAction.jsx +++ b/src/components/actions/actions/RadioAction.tsx @@ -1,9 +1,10 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { formatShortcut } from "../../../features/_utils/string.utils.js"; +import { formatShortcut } from "../../../features/_utils/string.utils"; import styles from "../Actions.module.css"; import { faCircleDot } from "@fortawesome/free-solid-svg-icons"; -import { useState } from "react"; +import { ReactNode, useState } from "react"; import { faCircle } from "@fortawesome/free-regular-svg-icons"; +import { ActionProps } from "../Actions"; /** * @param {object} props @@ -15,14 +16,23 @@ import { faCircle } from "@fortawesome/free-regular-svg-icons"; * @param {number} props.initialIndex * @param {Function} props.onTrigger */ -export function RadioAction({ actionId, options, initialIndex, onTrigger }) { + +interface RadioActionProps extends ActionProps { + options: { + label: string; + shortcut?: string[] + }[]; + initialIndex: number; +} + +export function RadioAction({ actionId, options, initialIndex, onTrigger }: RadioActionProps): ReactNode { const [activeIndex, setActiveIndex] = useState(initialIndex ?? 0); return (
{options.map(({ label, shortcut }, index) =>