From 72d5402c0138f9cb148cb10a0ecad8b1c7f02818 Mon Sep 17 00:00:00 2001 From: mohiit1502 Date: Mon, 7 Aug 2023 03:14:11 +0530 Subject: [PATCH] [MAJOR] Added tab bar, fixed bugs --- package-lock.json | 515 ++++++++++++++++-- package.json | 5 +- plop-templates/Component/Component.tsx.hbs | 3 +- plop-templates/components.interface.ts.hbs | 2 + plopfile.cjs | 18 + src/app/Router.tsx | 4 +- .../ComponentList/ComponentList.tsx | 2 +- src/app/components/Editor/Editor.tsx | 60 +- .../components/Header/Header.component.scss | 7 + src/app/components/Header/Header.tsx | 71 ++- src/app/components/IconsList/IconsList.tsx | 23 +- src/app/components/Main/Main.tsx | 4 +- .../atoms/Alert/Alert.component.scss | 3 +- src/app/components/atoms/Alert/Alert.tsx | 21 +- .../BrowserIncompatibility.tsx | 36 +- src/app/components/atoms/Icon/Icon.tsx | 17 +- src/app/components/atoms/Link/Link.tsx | 41 +- .../LoadableIcon/LoadableIcon.component.scss | 3 + .../atoms/LoadableIcon/LoadableIcon.test.ts | 6 + .../atoms/LoadableIcon/LoadableIcon.tsx | 113 ++++ .../components/atoms/LoadableIcon/index.ts | 3 + .../atoms/Loader/Loader.component.scss | 74 +++ .../components/atoms/Loader/Loader.test.ts | 8 + src/app/components/atoms/Loader/Loader.tsx | 48 ++ src/app/components/atoms/Loader/index.ts | 3 + .../ProgressIndicator/ProgressIndicator.tsx | 7 +- .../components/atoms/Tab/Tab.component.scss | 24 +- src/app/components/atoms/Tab/Tab.tsx | 113 ++-- .../atoms/TabBar/TabBar.component.scss | 14 + src/app/components/atoms/TabBar/TabBar.tsx | 96 +++- src/app/components/index.ts | 4 + .../Component_404.component.scss | 12 +- .../molecules/Component_404/Component_404.tsx | 19 +- src/app/config/api-config.ts | 2 +- src/app/config/components.ts | 9 + .../ComponentsViewerPage.tsx | 4 +- src/app/pages/FontsPage/FontsPage.page.scss | 3 + src/app/pages/FontsPage/FontsPage.slice.ts | 18 + src/app/pages/FontsPage/FontsPage.test.ts | 8 + src/app/pages/FontsPage/FontsPage.tsx | 9 + src/app/pages/FontsPage/index.ts | 3 + src/app/pages/IconsPage/IconsPage.tsx | 22 +- src/app/pages/index.ts | 2 + src/app/routes.ts | 17 +- src/app/static/images/ARC_logo.jpeg | Bin 0 -> 34004 bytes src/app/static/images/ARC_logo1.jpeg | Bin 0 -> 119930 bytes src/app/static/images/Omnia Alkatra.svg | 1 + src/app/static/images/Omnia.svg | 1 + src/app/static/images/index.ts | 3 +- src/app/static/styles/_global.scss | 8 + src/app/static/styles/_variables.scss | 3 +- src/app/types/components.interface.ts | 110 ++++ src/app/types/entity.interface.ts | 15 + src/app/types/enums.ts | 29 + src/app/types/types.ts | 14 + src/app/utils/domHelper.ts | 23 + src/app/utils/helper.tsx | 2 +- src/app/utils/index.ts | 6 + src/app/utils/network.ts | 6 +- vite.config.ts | 4 +- 60 files changed, 1440 insertions(+), 261 deletions(-) create mode 100644 plop-templates/components.interface.ts.hbs create mode 100755 src/app/components/atoms/LoadableIcon/LoadableIcon.component.scss create mode 100755 src/app/components/atoms/LoadableIcon/LoadableIcon.test.ts create mode 100755 src/app/components/atoms/LoadableIcon/LoadableIcon.tsx create mode 100755 src/app/components/atoms/LoadableIcon/index.ts create mode 100755 src/app/components/atoms/Loader/Loader.component.scss create mode 100755 src/app/components/atoms/Loader/Loader.test.ts create mode 100755 src/app/components/atoms/Loader/Loader.tsx create mode 100755 src/app/components/atoms/Loader/index.ts create mode 100755 src/app/pages/FontsPage/FontsPage.page.scss create mode 100644 src/app/pages/FontsPage/FontsPage.slice.ts create mode 100755 src/app/pages/FontsPage/FontsPage.test.ts create mode 100755 src/app/pages/FontsPage/FontsPage.tsx create mode 100755 src/app/pages/FontsPage/index.ts create mode 100644 src/app/static/images/ARC_logo.jpeg create mode 100644 src/app/static/images/ARC_logo1.jpeg create mode 100644 src/app/static/images/Omnia Alkatra.svg create mode 100644 src/app/static/images/Omnia.svg create mode 100644 src/app/types/components.interface.ts create mode 100644 src/app/types/entity.interface.ts create mode 100644 src/app/types/enums.ts create mode 100644 src/app/types/types.ts create mode 100644 src/app/utils/domHelper.ts create mode 100644 src/app/utils/index.ts diff --git a/package-lock.json b/package-lock.json index 1b837ad..c90e097 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,9 @@ "react-bootstrap": "^2.7.4", "react-dev-utils": "^12.0.1", "react-redux": "^8.0.1", - "react-router-dom": "^6.13.0" + "react-router-dom": "^6.13.0", + "uuid": "^9.0.0", + "vite-plugin-svgr": "^3.2.0" }, "devDependencies": { "@storybook/addon-essentials": "^7.0.23", @@ -37,6 +39,7 @@ "@types/react": "^18.0.15", "@types/react-dom": "^18.0.6", "@types/testing-library__jest-dom": "^5.14.5", + "@types/uuid": "^9.0.2", "@vitejs/plugin-react": "^4.0.0", "eslint": "^8.0.0", "eslint-config-react-app": "^7.0.1", @@ -9478,6 +9481,247 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-7.0.0.tgz", + "integrity": "sha512-khWbXesWIP9v8HuKCl2NU2HNAyqpSQ/vkIl36Nbn4HIwEYSRWL0H7Gs6idJdha2DkpFDWlsqMELvoCE8lfFY6Q==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-7.0.0.tgz", + "integrity": "sha512-iiZaIvb3H/c7d3TH2HBeK91uI2rMhZNwnsIrvd7ZwGLkFw6mmunOCoVnjdYua662MqGFxlN9xTq4fv9hgR4VXQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-7.0.0.tgz", + "integrity": "sha512-sQQmyo+qegBx8DfFc04PFmIO1FP1MHI1/QEpzcIcclo5OAISsOJPW76ZIs0bDyO/DBSJEa/tDa1W26pVtt0FRw==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-7.0.0.tgz", + "integrity": "sha512-i6MaAqIZXDOJeikJuzocByBf8zO+meLwfQ/qMHIjCcvpnfvWf82PFvredEZElErB5glQFJa2KVKk8N2xV6tRRA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-7.0.0.tgz", + "integrity": "sha512-BoVSh6ge3SLLpKC0pmmN9DFlqgFy4NxNgdZNLPNJWBUU7TQpDWeBuyVuDW88iXydb5Cv0ReC+ffa5h3VrKfk1w==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-7.0.0.tgz", + "integrity": "sha512-tNDcBa+hYn0gO+GkP/AuNKdVtMufVhU9fdzu+vUQsR18RIJ9RWe7h/pSBY338RO08wArntwbDk5WhQBmhf2PaA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-7.0.0.tgz", + "integrity": "sha512-qw54u8ljCJYL2KtBOjI5z7Nzg8LnSvQOP5hPKj77H4VQL4+HdKbAT5pnkkZLmHKYwzsIHSYKXxHouD8zZamCFQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-7.0.0.tgz", + "integrity": "sha512-CcFECkDj98daOg9jE3Bh3uyD9kzevCAnZ+UtzG6+BQG/jOQ2OA3jHnX6iG4G1MCJkUQFnUvEv33NvQfqrb/F3A==", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-7.0.0.tgz", + "integrity": "sha512-EX/NHeFa30j5UjldQGVQikuuQNHUdGmbh9kEpBKofGUtF0GUPJ4T4rhoYiqDAOmBOxojyot36JIFiDUHUK1ilQ==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^7.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^7.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^7.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^7.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "^7.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "^7.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "^7.0.0", + "@svgr/babel-plugin-transform-svg-component": "^7.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-7.0.0.tgz", + "integrity": "sha512-ztAoxkaKhRVloa3XydohgQQCb0/8x9T63yXovpmHzKMkHO6pkjdsIAWKOS4bE95P/2quVh1NtjSKlMRNzSBffw==", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "^7.0.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@svgr/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@svgr/core/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-7.0.0.tgz", + "integrity": "sha512-42Ej9sDDEmsJKjrfQ1PHmiDiHagh/u9AHO9QWbeNx4KmD9yS5d1XHmXUNINfUcykAU+4431Cn+k6Vn5mWBYimQ==", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-7.0.0.tgz", + "integrity": "sha512-SWlTpPQmBUtLKxXWgpv8syzqIU8XgFRvyhfkam2So8b3BE0OS0HPe5UfmlJ2KIC+a7dpuuYovPR2WAQuSyMoPw==", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "^7.0.0", + "@svgr/hast-util-to-babel-ast": "^7.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, "node_modules/@swc/helpers": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", @@ -9833,8 +10077,7 @@ "node_modules/@types/estree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "peer": true + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" }, "node_modules/@types/express": { "version": "4.17.17", @@ -10140,6 +10383,12 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "node_modules/@types/uuid": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", + "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", + "dev": true + }, "node_modules/@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", @@ -12644,6 +12893,17 @@ "node": ">=6" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/envinfo": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.9.0.tgz", @@ -13573,8 +13833,7 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/esutils": { "version": "2.0.3", @@ -15031,7 +15290,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true + "devOptional": true }, "node_modules/import-fresh": { "version": "3.3.0", @@ -18047,18 +18306,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -18355,7 +18602,6 @@ "version": "8.4.24", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -19587,7 +19833,6 @@ "version": "3.25.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", - "dev": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -19763,7 +20008,7 @@ "version": "1.63.4", "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.4.tgz", "integrity": "sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==", - "dev": true, + "devOptional": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -20115,7 +20360,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -20420,6 +20664,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -21345,7 +21594,6 @@ "version": "4.3.9", "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", - "dev": true, "dependencies": { "esbuild": "^0.17.5", "postcss": "^8.4.23", @@ -21412,6 +21660,40 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/vite-plugin-svgr": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-3.2.0.tgz", + "integrity": "sha512-Uvq6niTvhqJU6ga78qLKBFJSDvxWhOnyfQSoKpDPMAGxJPo5S3+9hyjExE5YDj6Lpa4uaLkGc1cBgxXov+LjSw==", + "dependencies": { + "@rollup/pluginutils": "^5.0.2", + "@svgr/core": "^7.0.0", + "@svgr/plugin-jsx": "^7.0.0" + }, + "peerDependencies": { + "vite": "^2.6.0 || 3 || 4" + } + }, + "node_modules/vite-plugin-svgr/node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/vitest": { "version": "0.30.1", "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.30.1.tgz", @@ -28605,6 +28887,131 @@ "file-system-cache": "^2.0.0" } }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-7.0.0.tgz", + "integrity": "sha512-khWbXesWIP9v8HuKCl2NU2HNAyqpSQ/vkIl36Nbn4HIwEYSRWL0H7Gs6idJdha2DkpFDWlsqMELvoCE8lfFY6Q==", + "requires": {} + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-7.0.0.tgz", + "integrity": "sha512-iiZaIvb3H/c7d3TH2HBeK91uI2rMhZNwnsIrvd7ZwGLkFw6mmunOCoVnjdYua662MqGFxlN9xTq4fv9hgR4VXQ==", + "requires": {} + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-7.0.0.tgz", + "integrity": "sha512-sQQmyo+qegBx8DfFc04PFmIO1FP1MHI1/QEpzcIcclo5OAISsOJPW76ZIs0bDyO/DBSJEa/tDa1W26pVtt0FRw==", + "requires": {} + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-7.0.0.tgz", + "integrity": "sha512-i6MaAqIZXDOJeikJuzocByBf8zO+meLwfQ/qMHIjCcvpnfvWf82PFvredEZElErB5glQFJa2KVKk8N2xV6tRRA==", + "requires": {} + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-7.0.0.tgz", + "integrity": "sha512-BoVSh6ge3SLLpKC0pmmN9DFlqgFy4NxNgdZNLPNJWBUU7TQpDWeBuyVuDW88iXydb5Cv0ReC+ffa5h3VrKfk1w==", + "requires": {} + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-7.0.0.tgz", + "integrity": "sha512-tNDcBa+hYn0gO+GkP/AuNKdVtMufVhU9fdzu+vUQsR18RIJ9RWe7h/pSBY338RO08wArntwbDk5WhQBmhf2PaA==", + "requires": {} + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-7.0.0.tgz", + "integrity": "sha512-qw54u8ljCJYL2KtBOjI5z7Nzg8LnSvQOP5hPKj77H4VQL4+HdKbAT5pnkkZLmHKYwzsIHSYKXxHouD8zZamCFQ==", + "requires": {} + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-7.0.0.tgz", + "integrity": "sha512-CcFECkDj98daOg9jE3Bh3uyD9kzevCAnZ+UtzG6+BQG/jOQ2OA3jHnX6iG4G1MCJkUQFnUvEv33NvQfqrb/F3A==", + "requires": {} + }, + "@svgr/babel-preset": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-7.0.0.tgz", + "integrity": "sha512-EX/NHeFa30j5UjldQGVQikuuQNHUdGmbh9kEpBKofGUtF0GUPJ4T4rhoYiqDAOmBOxojyot36JIFiDUHUK1ilQ==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^7.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^7.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^7.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^7.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "^7.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "^7.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "^7.0.0", + "@svgr/babel-plugin-transform-svg-component": "^7.0.0" + } + }, + "@svgr/core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-7.0.0.tgz", + "integrity": "sha512-ztAoxkaKhRVloa3XydohgQQCb0/8x9T63yXovpmHzKMkHO6pkjdsIAWKOS4bE95P/2quVh1NtjSKlMRNzSBffw==", + "requires": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "^7.0.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "requires": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-7.0.0.tgz", + "integrity": "sha512-42Ej9sDDEmsJKjrfQ1PHmiDiHagh/u9AHO9QWbeNx4KmD9yS5d1XHmXUNINfUcykAU+4431Cn+k6Vn5mWBYimQ==", + "requires": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + } + }, + "@svgr/plugin-jsx": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-7.0.0.tgz", + "integrity": "sha512-SWlTpPQmBUtLKxXWgpv8syzqIU8XgFRvyhfkam2So8b3BE0OS0HPe5UfmlJ2KIC+a7dpuuYovPR2WAQuSyMoPw==", + "requires": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "^7.0.0", + "@svgr/hast-util-to-babel-ast": "^7.0.0", + "svg-parser": "^2.0.4" + } + }, "@swc/helpers": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", @@ -28901,8 +29308,7 @@ "@types/estree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "peer": true + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" }, "@types/express": { "version": "4.17.17", @@ -29207,6 +29613,12 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "@types/uuid": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", + "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", + "dev": true + }, "@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", @@ -31116,6 +31528,11 @@ } } }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, "envinfo": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.9.0.tgz", @@ -31806,8 +32223,7 @@ "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "esutils": { "version": "2.0.3", @@ -32908,7 +33324,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true + "devOptional": true }, "import-fresh": { "version": "3.3.0", @@ -35094,14 +35510,6 @@ "dev": true, "requires": { "entities": "^4.4.0" - }, - "dependencies": { - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - } } }, "parseurl": { @@ -35329,7 +35737,6 @@ "version": "8.4.24", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "dev": true, "requires": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -36240,7 +36647,6 @@ "version": "3.25.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", - "dev": true, "requires": { "fsevents": "~2.3.2" } @@ -36351,7 +36757,7 @@ "version": "1.63.4", "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.4.tgz", "integrity": "sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==", - "dev": true, + "devOptional": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -36635,8 +37041,7 @@ "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "source-map-support": { "version": "0.5.21", @@ -36871,6 +37276,11 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -37575,7 +37985,6 @@ "version": "4.3.9", "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", - "dev": true, "requires": { "esbuild": "^0.17.5", "fsevents": "~2.3.2", @@ -37597,6 +38006,28 @@ "vite": "^3.0.0 || ^4.0.0" } }, + "vite-plugin-svgr": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-3.2.0.tgz", + "integrity": "sha512-Uvq6niTvhqJU6ga78qLKBFJSDvxWhOnyfQSoKpDPMAGxJPo5S3+9hyjExE5YDj6Lpa4uaLkGc1cBgxXov+LjSw==", + "requires": { + "@rollup/pluginutils": "^5.0.2", + "@svgr/core": "^7.0.0", + "@svgr/plugin-jsx": "^7.0.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + } + } + }, "vitest": { "version": "0.30.1", "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.30.1.tgz", diff --git a/package.json b/package.json index 846b72a..2729cc3 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,9 @@ "react-bootstrap": "^2.7.4", "react-dev-utils": "^12.0.1", "react-redux": "^8.0.1", - "react-router-dom": "^6.13.0" + "react-router-dom": "^6.13.0", + "uuid": "^9.0.0", + "vite-plugin-svgr": "^3.2.0" }, "devDependencies": { "@storybook/addon-essentials": "^7.0.23", @@ -56,6 +58,7 @@ "@types/react": "^18.0.15", "@types/react-dom": "^18.0.6", "@types/testing-library__jest-dom": "^5.14.5", + "@types/uuid": "^9.0.2", "@vitejs/plugin-react": "^4.0.0", "eslint": "^8.0.0", "eslint-config-react-app": "^7.0.1", diff --git a/plop-templates/Component/Component.tsx.hbs b/plop-templates/Component/Component.tsx.hbs index 14cbffe..2db4781 100755 --- a/plop-templates/Component/Component.tsx.hbs +++ b/plop-templates/Component/Component.tsx.hbs @@ -1,6 +1,5 @@ import "./{{pascalCase name}}.component.scss" - -interface {{pascalCase name}}Props {} +import { {{pascalCase name}}Props } from "../../../types/components.interface" const {{pascalCase name}} = (props: {{pascalCase name}}Props): JSX.Element => { return
In Component {{pascalCase name}}
diff --git a/plop-templates/components.interface.ts.hbs b/plop-templates/components.interface.ts.hbs new file mode 100644 index 0000000..1eb7881 --- /dev/null +++ b/plop-templates/components.interface.ts.hbs @@ -0,0 +1,2 @@ +/* PLOP_INJECT_INTERFACE */ + diff --git a/plopfile.cjs b/plopfile.cjs index c926a43..24913e3 100644 --- a/plopfile.cjs +++ b/plopfile.cjs @@ -47,6 +47,12 @@ module.exports = (plop) => { pattern: `/* PLOP_INJECT_EXPORT */`, template: `\t{{pascalCase name}},`, }, + { + type: "append", + path: "src/app/types/components.interface.ts", + pattern: `/* PLOP_INJECT_INTERFACE */`, + template: `export interface {{pascalCase name}}Props extends BaseProps {\n}\n`, + }, ], }) plop.setGenerator("atom", { @@ -97,6 +103,12 @@ module.exports = (plop) => { pattern: `/* PLOP_INJECT_EXPORT */`, template: `\t{{pascalCase name}},`, }, + { + type: "append", + path: "src/app/types/components.interface.ts", + pattern: `/* PLOP_INJECT_INTERFACE */`, + template: `export interface {{pascalCase name}}Props extends BaseProps {\n}\n`, + }, ], }) plop.setGenerator("molecule", { @@ -147,6 +159,12 @@ module.exports = (plop) => { pattern: `/* PLOP_INJECT_EXPORT */`, template: `\t{{pascalCase name}},`, }, + { + type: "append", + path: "src/app/types/components.interface.ts", + pattern: `/* PLOP_INJECT_INTERFACE */`, + template: `export interface {{pascalCase name}}Props extends BaseProps {\n}\n`, + }, ], }) plop.setGenerator("page", { diff --git a/src/app/Router.tsx b/src/app/Router.tsx index 330fabc..72e4a0a 100644 --- a/src/app/Router.tsx +++ b/src/app/Router.tsx @@ -1,6 +1,7 @@ import { Suspense, useEffect } from "react" import { useRoutes } from "react-router-dom" -import { AlertProps } from "./components/atoms/Alert/Alert" +import { AlertProps } from "./types/components.interface" +import Header from "./components/Header" import { useAppSelector } from "./hooks" import { notification } from "./store" import { Alert } from "./components" @@ -22,6 +23,7 @@ const Router = (props: RouterProps) => { return ( Loading...}> +
{useRoutes(ROUTES)} diff --git a/src/app/components/ComponentList/ComponentList.tsx b/src/app/components/ComponentList/ComponentList.tsx index 83b116d..830ea38 100755 --- a/src/app/components/ComponentList/ComponentList.tsx +++ b/src/app/components/ComponentList/ComponentList.tsx @@ -14,7 +14,7 @@ const ComponentList = (props: ComponentListProps): JSX.Element => { const params = treeNode.data?.props treeNode.data?.component && navigate( - Network.stringifyUrl(`/component/${treeNode.data?.component}`, params), + Network.stringifyUrl(`/components/${treeNode.data?.component}`, params), ) } return ( diff --git a/src/app/components/Editor/Editor.tsx b/src/app/components/Editor/Editor.tsx index 55d0cc5..cbf77a7 100755 --- a/src/app/components/Editor/Editor.tsx +++ b/src/app/components/Editor/Editor.tsx @@ -1,31 +1,14 @@ -import { useEffect, useState } from "react" +import { ReactNode, useEffect, useState } from "react" import { useLocation } from "react-router-dom" import { createPortal } from "react-dom" import { Alert, Toggle } from ".." +import { FrameContentDefinition } from "../../types/entity.interface" +import { FrameContentProps } from "../../types/components.interface" import Helper from "../../utils/helper" import COMPONENTS from "../../config/components" import * as images from "../../static/images" import "./Editor.component.scss" -interface FrameContentDefinition { - componentName: string - component: JSX.ElementType - props?: { - [key: string]: - | string - | number - | boolean - | { [key: string]: any } - | undefined - } - data: { [key: string]: any } - hierarchy: string -} -interface FrameContentProps { - contentDefinition: FrameContentDefinition | null - notificationProps?: any -} - const FrameContent = ( props: FrameContentProps, ): JSX.Element | string | null => { @@ -66,6 +49,7 @@ const Editor = (): JSX.Element | string => { const [selectedComponentDefinition, setSelectedComponentDefinition] = useState(null) const [theme, setTheme] = useState("th-light-1") + const [portal, setPortal] = useState() const location = useLocation() useEffect(() => { @@ -79,12 +63,20 @@ const Editor = (): JSX.Element | string => { const iframeHtml = contentRef?.contentWindow?.document?.getElementsByTagName("html")[0] iframeHtml && iframeHtml.setAttribute("ar-theme", theme) + const iframeBody = iframeHtml?.getElementsByTagName("body")[0] + iframeBody && (iframeBody.style.backgroundColor = "var(--ar-bg)") + if (selectedComponentDefinition && selectedComponentDefinition.props) { + selectedComponentDefinition.props.theme = theme + } } }, [contentRef, theme]) useEffect(() => { - const locationPathArr = location.pathname.split("/") - const componentName = locationPathArr[locationPathArr.length - 1] + const locationPathArr = location.pathname + .split("/") + .filter((p: string) => p) + const componentName = + locationPathArr.length > 1 && locationPathArr[locationPathArr.length - 1] if (componentName) { const { selectedItem, hierarchy } = Helper.findComponentDescription( componentName, @@ -180,6 +172,19 @@ const Editor = (): JSX.Element | string => { const mountNode = contentRef?.contentWindow?.document?.body + useEffect(() => { + mountNode && + setPortal( + createPortal( + , + mountNode, + ), + ) + }, [selectedComponentDefinition, mountNode, notificationProps, theme]) + return (
@@ -198,16 +203,9 @@ const Editor = (): JSX.Element | string => { ref={setContentRef} title="Armco form-componentComponent Viewer" > - {mountNode && - createPortal( - , - mountNode, - )} - {/*
*/} + {portal} + {/*
*/}
) } diff --git a/src/app/components/Header/Header.component.scss b/src/app/components/Header/Header.component.scss index 3790c81..77e1afe 100755 --- a/src/app/components/Header/Header.component.scss +++ b/src/app/components/Header/Header.component.scss @@ -1,4 +1,11 @@ .ar-Header { background-color: var(--ar-bg-base); border-bottom: 1px solid var(--ar-color-layout-border); + + .ar-Header__app-logo { + cursor: pointer; + .ar-Header__brand { + border-radius: 50%; + } + } } diff --git a/src/app/components/Header/Header.tsx b/src/app/components/Header/Header.tsx index 2cc0764..af52746 100755 --- a/src/app/components/Header/Header.tsx +++ b/src/app/components/Header/Header.tsx @@ -1,9 +1,74 @@ +import { useEffect, useState } from "react" +import { useLocation, useNavigate } from "react-router-dom" +import { v4 as uuid } from "uuid" +import { TabBar } from ".." +import { ArTabType } from "../../types/enums" +import { TabProps } from "../../types/entity.interface" +import { AppLogo } from "../../static/images" +import { ReactComponent as AppName } from "../../static/images/Omnia Alkatra.svg" import "./Header.component.scss" -interface HeaderProps {} +const tabs = [ + { + label: "Components", + id: uuid(), + isActive: true, + route: "/components", + icon: "cg.CgComponents", + }, + { + label: "Icons", + id: uuid(), + isActive: false, + route: "/icons", + icon: "md.MdOutlineInsertEmoticon", + }, + { + label: "Fonts", + id: uuid(), + isActive: false, + route: "/fonts", + icon: "bi.BiFontFamily", + }, +] -const Header = (props: HeaderProps): JSX.Element => { - return
+const Header = (): JSX.Element => { + const navigate = useNavigate() + const location = useLocation() + const [activeTabId, setActiveTabId] = useState() + + useEffect(() => { + const matchedTab = + tabs && tabs.find((tab) => location.pathname.startsWith(tab.route)) + if (matchedTab) { + setActiveTabId(matchedTab.id) + } + }, [location]) + return ( +
+
navigate("/")}> + App Logo + +
+ { + tab.isActive = activeTabId === tab.id + return tab + })} + variant={ArTabType.MODERN} + onTabSelected={(id: string, data: TabProps) => { + data?.data?.route && navigate(data.data.route) + }} + /> +
+ ) } export default Header diff --git a/src/app/components/IconsList/IconsList.tsx b/src/app/components/IconsList/IconsList.tsx index 3d10df7..8ecc65a 100755 --- a/src/app/components/IconsList/IconsList.tsx +++ b/src/app/components/IconsList/IconsList.tsx @@ -1,7 +1,8 @@ import { ChangeEvent } from "react" import { useAppDispatch } from "../../hooks" import { notify } from "../../store" -import { Pagination, Search } from ".." +import { Loader, Pagination, Search } from ".." +import { ArLoaderTypes } from "../../types/enums" import Helper from "../../utils/helper" import { ICON_ROOT } from "../../config/constants" import "./IconsList.component.scss" @@ -58,7 +59,10 @@ const IconsList = (props: IconsListProps): JSX.Element => { } return ( -
+
+ {!icons && ( + + )}
@@ -88,14 +92,13 @@ const IconsList = (props: IconsListProps): JSX.Element => {
-
- {icons && - icons - .slice(0, 100) - .map((icon, index) => ( - - ))} -
+ {icons && ( +
+ {icons.slice(0, 100).map((icon, index) => ( + + ))} +
+ )}
) } diff --git a/src/app/components/Main/Main.tsx b/src/app/components/Main/Main.tsx index 5e59f6e..bd301a1 100755 --- a/src/app/components/Main/Main.tsx +++ b/src/app/components/Main/Main.tsx @@ -14,7 +14,9 @@ const Main = (props: MainProps): JSX.Element => {
{drawerContent} - {mainContent} + + {mainContent} +
) diff --git a/src/app/components/atoms/Alert/Alert.component.scss b/src/app/components/atoms/Alert/Alert.component.scss index b601a2f..30aab15 100755 --- a/src/app/components/atoms/Alert/Alert.component.scss +++ b/src/app/components/atoms/Alert/Alert.component.scss @@ -3,6 +3,7 @@ transition: all 0.3s; border-radius: 0.2rem; opacity: 0; + color: white; &.show { opacity: 1; @@ -67,7 +68,7 @@ } &.success { background-color: var(--ar-color-success); - color: var(--ar-bg); + color: var(--ar-white); } .ar-Alert__icon { diff --git a/src/app/components/atoms/Alert/Alert.tsx b/src/app/components/atoms/Alert/Alert.tsx index e386e40..3908120 100755 --- a/src/app/components/atoms/Alert/Alert.tsx +++ b/src/app/components/atoms/Alert/Alert.tsx @@ -1,20 +1,8 @@ import { useEffect, useState } from "react" import Icon from "../Icon" -import API_CONFIG from "../../../config/api-config" -import "./Alert.component.scss" +import { AlertProps } from "../../../types/components.interface" import { ICON_ROOT } from "../../../config/constants" - -type AlertType = "success" | "warning" | "error" | "information" -export interface AlertProps { - classes?: string - closeable?: boolean - demo?: boolean - position?: string - show?: boolean - type?: AlertType - message: string - timeout?: number -} +import "./Alert.component.scss" let timeoutRef: any const Alert = (props: AlertProps): JSX.Element => { @@ -35,7 +23,10 @@ const Alert = (props: AlertProps): JSX.Element => { setTimeout(() => show("show"), 0) if (!demo || timeout) { clearTimeout(timeoutRef) - timeoutRef = setTimeout(() => show(""), timeout || 5000) + timeoutRef = setTimeout(() => { + show("") + window.top?.postMessage({ ar: null }, "*") + }, timeout || 5000) } } }, [position, type, timeout, externalShow, message, demo]) diff --git a/src/app/components/atoms/BrowserIncompatibility/BrowserIncompatibility.tsx b/src/app/components/atoms/BrowserIncompatibility/BrowserIncompatibility.tsx index 49df3ad..8231339 100755 --- a/src/app/components/atoms/BrowserIncompatibility/BrowserIncompatibility.tsx +++ b/src/app/components/atoms/BrowserIncompatibility/BrowserIncompatibility.tsx @@ -1,36 +1,36 @@ -import { Alert, Icon } from "../.." +import { Alert, Link, LoadableIcon } from "../.." +import { BrowserIncompatibilityProps } from "../../../types/components.interface" import Helper from "../../../utils/helper" -import { ICON_ROOT } from "../../../config/constants" import "./BrowserIncompatibility.component.scss" -interface BrowserIncompatibilityProps { - applicationName?: string - moreLink?: string -} - const BrowserIncompatibility = ( props: BrowserIncompatibilityProps, ): JSX.Element => { - const { applicationName, moreLink } = props - const demoDummyLink = "http://notabuck.com/armco-design-system/docs/devices" + const { applicationName, moreLink, theme } = props + const demoDummyLink = "https://notabuck.com/armco-design-system/docs/devices" const demoAppName = '"My Awesome App"' const helpLink = moreLink || demoDummyLink const app = applicationName || demoAppName const heroIconSize = "8rem" + return (
-
{app} can not run on this browser

Supported browsers are Google Chrome v51+ & Microsoft's Edge v32+

For More details you can also check the below link

-
{ Helper.copyToClipboard(helpLink) window.top?.postMessage( @@ -40,15 +40,15 @@ const BrowserIncompatibility = ( type: "success", closeable: true, message: "Link Copied!", + show: true, }, }, "*", ) }} - > - {helpLink} - -
+ preemptNavigation + /> +
) } diff --git a/src/app/components/atoms/Icon/Icon.tsx b/src/app/components/atoms/Icon/Icon.tsx index 304bc1f..62fd7c8 100755 --- a/src/app/components/atoms/Icon/Icon.tsx +++ b/src/app/components/atoms/Icon/Icon.tsx @@ -1,22 +1,7 @@ -import { MouseEventHandler } from "react" import { ICON_ROOT } from "../../../config/constants" +import { IconProps } from "../../../types/components.interface" import "./Icon.component.scss" -interface IconProps { - alt?: string - classes?: string - color?: string - containerClasses?: string - demo?: boolean - height?: string - onClick?: MouseEventHandler - onMouseEnter?: MouseEventHandler - onMouseLeave?: MouseEventHandler - size?: string - src: string - width?: string -} - const Icon = (props: IconProps): JSX.Element | null => { const { alt, diff --git a/src/app/components/atoms/Link/Link.tsx b/src/app/components/atoms/Link/Link.tsx index 6c31465..385cc12 100755 --- a/src/app/components/atoms/Link/Link.tsx +++ b/src/app/components/atoms/Link/Link.tsx @@ -1,10 +1,41 @@ -import React from "react" +import { useNavigate } from "react-router-dom" +import { LinkProps } from "../../../types/components.interface" import "./Link.component.scss" -interface LinkProps {} - -const Link = (props: any): JSX.Element => { - return
In Component Link
+const Link = (props: LinkProps): JSX.Element => { + const { + classes, + label, + to, + children, + onClick, + openInNew, + preemptNavigation, + } = props + const navigate = useNavigate() + return ( +
{ + if (!preemptNavigation) { + if (to) { + if ( + to.startsWith("http://") || + to.startsWith("https://") || + openInNew + ) { + !openInNew ? window.open(to) : window.open(to, "_blank") + } else { + navigate(to) + } + } + } + onClick && onClick(e) + }} + > + {label || children} +
+ ) } export default Link diff --git a/src/app/components/atoms/LoadableIcon/LoadableIcon.component.scss b/src/app/components/atoms/LoadableIcon/LoadableIcon.component.scss new file mode 100755 index 0000000..d03237c --- /dev/null +++ b/src/app/components/atoms/LoadableIcon/LoadableIcon.component.scss @@ -0,0 +1,3 @@ +.ar-LoadableIcon { + transition: all 0.3s; +} diff --git a/src/app/components/atoms/LoadableIcon/LoadableIcon.test.ts b/src/app/components/atoms/LoadableIcon/LoadableIcon.test.ts new file mode 100755 index 0000000..5526fc3 --- /dev/null +++ b/src/app/components/atoms/LoadableIcon/LoadableIcon.test.ts @@ -0,0 +1,6 @@ +import React from "react" +import LoadableIcon from "./LoadableIcon" + +describe("LoadableIcon", () => { + it("renders without error", () => {}) +}) diff --git a/src/app/components/atoms/LoadableIcon/LoadableIcon.tsx b/src/app/components/atoms/LoadableIcon/LoadableIcon.tsx new file mode 100755 index 0000000..106a366 --- /dev/null +++ b/src/app/components/atoms/LoadableIcon/LoadableIcon.tsx @@ -0,0 +1,113 @@ +import { useEffect, useState } from "react" +import { Network, DomHelper } from "../../../utils" +import { LoadableIconProps } from "../../../types/components.interface" +import { GenericObject, ObjectType } from "../../../types/types" +import "./LoadableIcon.component.scss" + +const parser = new DOMParser() + +// Add below string to prevent API calls for same iconKey, +// This value is overriden in promise resolution below +const ongoingApiCalls: ObjectType = {} + +const iconsFactory: GenericObject = {} + +const placeholder = parser + .parseFromString( + '', + "image/svg+xml", + ) + .querySelector("svg") + +const LoadableIcon = (props: LoadableIconProps) => { + const { classes, color, height, isLocal, size, width } = props + let { icon } = props + const [b64, setB64] = useState() + const [iconContent, setIconContent] = useState( + placeholder, + ) + + icon = !icon || icon.indexOf(".") < 0 ? "gr.GrStatusPlaceholder" : icon + const iconParts = icon.split(".") + const iconCategory = iconParts[0] ? iconParts[0].toLowerCase() : "" + const iconName = iconParts[1] + const iconKey = `${iconCategory}_${iconName}` + + const iData = iconsFactory[iconKey] + + const getIcon = () => { + if (!ongoingApiCalls[iconKey]) { + // console.log("Requesting Icon from Server for the icon: ", iconKey) + ongoingApiCalls[iconKey] = true + Network.getStatic(`/icon/${iconCategory}/${iconName}`) + .then((res) => { + const parsedSvg = parser + .parseFromString(res.body, "image/svg+xml") + .querySelector("svg") + if (parsedSvg) { + iconsFactory[iconKey] = parsedSvg + setIconContent(parsedSvg) + } + }) + .catch((e) => { + console.log(e) + ongoingApiCalls[iconKey] = false + }) + .finally(() => (ongoingApiCalls[iconKey] = false)) + } + } + + /* eslint-disable react-hooks/exhaustive-deps */ + useEffect(() => { + if (!isLocal) { + if (iconName && iconCategory) { + !iData && getIcon() + } else { + console.log("Icon name and category is required, received: ", icon) + } + } + }, []) + + useEffect(() => { + iconContent && !isLocal && setB64(DomHelper.svgToBase64(iconContent)) + }, [iconContent]) + + useEffect(() => { + iData && + !isLocal && + setB64(DomHelper.svgToBase64(iData, { size, classes, color })) + }, [size, classes, color]) + + if (isLocal) { + return ( + Icon + ) + } + + // Below is only for property changes after first render like on hover, click etc + if (iData && !b64) { + setB64(DomHelper.svgToBase64(iData, { size, classes, color })) + } + + return b64 ? ( + Icon + ) : null +} + +export default LoadableIcon diff --git a/src/app/components/atoms/LoadableIcon/index.ts b/src/app/components/atoms/LoadableIcon/index.ts new file mode 100755 index 0000000..210ab4b --- /dev/null +++ b/src/app/components/atoms/LoadableIcon/index.ts @@ -0,0 +1,3 @@ +import LoadableIcon from "./LoadableIcon" + +export default LoadableIcon diff --git a/src/app/components/atoms/Loader/Loader.component.scss b/src/app/components/atoms/Loader/Loader.component.scss new file mode 100755 index 0000000..9543cbf --- /dev/null +++ b/src/app/components/atoms/Loader/Loader.component.scss @@ -0,0 +1,74 @@ +.ar-Loader { + background: rgba(0, 0, 0, 0.2); + z-index: 1001; + .ar-Loader-content { + position: absolute; + + &.custom { + top: calc(50% - 25px); + left: calc(50% - 25px); + .loader { + width: 50px; + height: 50px; + animation: rotating 5s infinite; + border-radius: 50%; + overflow: hidden; + } + } + + &.circle { + top: calc(50% - 25px); + left: calc(50% - 25px); + .loader { + width: 50px; + height: 50px; + animation: effect 1s linear infinite; + border-radius: 50%; + border: 6px solid #a3bdda; + border-top-color: #3B77BC; + } + } + + &.small .loader { + top: calc(50% - 12.5px); + left: calc(50% - 12.5px); + width: 25px; + height: 25px; + } + + &.large .loader { + top: calc(50% - 50px); + left: calc(50% - 50px); + width: 100px; + height: 100px; + } + + } + @keyframes effect { + 0% {transform: rotate(0deg);} + 100% {transform: rotate(360deg);} + } + + @keyframes rotating { + 0% { + transform: rotate(0deg); + animation-timing-function: linear; /* Constant speed for the first 4s */ + } + 25% { + transform: rotate(1800deg); /* 10 rotations (10 x 360 degrees) */ + animation-timing-function: linear; /* Constant speed for the next 1s */ + } + 50% { + transform: rotate(3600deg); /* 6 rotations (6 x 360 degrees) */ + animation-timing-function: cubic-bezier(0, -200, 1, -200); /* Slow down for the next 4s */ + } + 75% { + transform: rotate(4320deg); /* 10 rotations (10 x 360 degrees) */ + animation-timing-function: cubic-bezier(0, -200, 1, -200); /* Constant speed for the next 1s */ + } + 100% { + transform: rotate(5040deg); /* 12 rotations (12 x 360 degrees) */ + animation-timing-function: linear; /* Constant speed for the last 4s */ + } + } +} diff --git a/src/app/components/atoms/Loader/Loader.test.ts b/src/app/components/atoms/Loader/Loader.test.ts new file mode 100755 index 0000000..ec79fa2 --- /dev/null +++ b/src/app/components/atoms/Loader/Loader.test.ts @@ -0,0 +1,8 @@ +import React from "react" +import Loader from "./Loader" + +describe("Loader", () => { + it("renders without error", () => { + + }) +}) diff --git a/src/app/components/atoms/Loader/Loader.tsx b/src/app/components/atoms/Loader/Loader.tsx new file mode 100755 index 0000000..036bd4b --- /dev/null +++ b/src/app/components/atoms/Loader/Loader.tsx @@ -0,0 +1,48 @@ +import { LoaderProps } from "../../../types/components.interface" +import { ArLoaderTypes } from "../../../types/enums" +import { LoadableIcon, ProgressIndicator } from "../.." +import { AppLogo } from "../../../static/images" +import "./Loader.component.scss" + +// Add ability to provide custom loader: an icon or image that rotates +const Loader = (props: LoaderProps): JSX.Element => { + const { type = ArLoaderTypes.CIRCLE, size, label, icon, progress } = props + let loaderContent + switch (type) { + case ArLoaderTypes.BAR: + loaderContent = + break + case ArLoaderTypes.CUSTOM: + loaderContent = ( + <> + + + + {label ? {label} : ""} + + ) + break + case ArLoaderTypes.CIRCLE: + default: + loaderContent = ( + <> + + {label ? {label} : ""} + + ) + } + + return ( +
+
+ {loaderContent} +
+
+ ) +} + +export default Loader diff --git a/src/app/components/atoms/Loader/index.ts b/src/app/components/atoms/Loader/index.ts new file mode 100755 index 0000000..2198ded --- /dev/null +++ b/src/app/components/atoms/Loader/index.ts @@ -0,0 +1,3 @@ +import Loader from "./Loader" + +export default Loader diff --git a/src/app/components/atoms/ProgressIndicator/ProgressIndicator.tsx b/src/app/components/atoms/ProgressIndicator/ProgressIndicator.tsx index 6b505c8..9041648 100755 --- a/src/app/components/atoms/ProgressIndicator/ProgressIndicator.tsx +++ b/src/app/components/atoms/ProgressIndicator/ProgressIndicator.tsx @@ -1,14 +1,11 @@ -import React from "react" import "./ProgressIndicator.component.scss" interface ProgressIndicatorProps {} const ProgressIndicator = (props: any): JSX.Element => { return ( -
- In Component ProgressIndicator -
+
In Component ProgressIndicator
) } -export default ProgressIndicator \ No newline at end of file +export default ProgressIndicator diff --git a/src/app/components/atoms/Tab/Tab.component.scss b/src/app/components/atoms/Tab/Tab.component.scss index 33eb855..4d66b47 100755 --- a/src/app/components/atoms/Tab/Tab.component.scss +++ b/src/app/components/atoms/Tab/Tab.component.scss @@ -1,37 +1,37 @@ .ar-Tab { - width: 5rem; - height: 2rem; + max-width: 10rem; + max-height: 3rem; line-height: 1; - border: var(--ar-border); - border-radius: 6px 6px 0 0; padding: 0.4rem 1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; + z-index: 1; - &:hover { + &:hover:not(.active) { background-color: var(--ar-bg-hover); } - .active { - + &.active { + // background-color: var(--ar-bg-selected); } - .compact { + &.compact { } - .comfortable { + &.comfortable { } - .modern { + &.modern { } - .classic { - + &.classic { + border: var(--ar-border); + border-radius: 6px 6px 0 0; } .ar-Tab__delete-icon { diff --git a/src/app/components/atoms/Tab/Tab.tsx b/src/app/components/atoms/Tab/Tab.tsx index 39cae67..eccd20e 100755 --- a/src/app/components/atoms/Tab/Tab.tsx +++ b/src/app/components/atoms/Tab/Tab.tsx @@ -1,55 +1,78 @@ -import Icon from "../Icon" +import { memo, useEffect, useRef } from "react" +import { TabProps } from "../../../types/components.interface" +import { LoadableIcon, Icon } from "../.." import "./Tab.component.scss" -export interface TabProps { - label: string - data?: any - demo?: boolean - deletable?: boolean - id?: string - isActive?: boolean - onSelect?: Function - size?: string - variant?: string -} - const dummyData = { label: "Tab 1", id: "23jhrfl2l3lkj2lk3jlkjlsd", isActive: false, } -const Tab = (props: TabProps): JSX.Element => { - const { - label, - data, - demo, - deletable, - id, - isActive, - onSelect, - size, - variant, - } = props - const useLabel = label ? label : demo ? dummyData.label : label - return ( -
onSelect && onSelect(id, data)} - > - {deletable && ( - - )} - {useLabel} -
- ) -} +const Tab = memo( + (props: TabProps): JSX.Element => { + const { + bubbleDimensions, + data, + demo, + deletable, + icon, + id, + isActive, + label, + onSelect, + size, + variant, + } = props + const tabRef = useRef(null) + let useLabel = label ? label : demo ? dummyData.label : label + + useEffect(() => { + if (isActive && bubbleDimensions) { + const selectedTabDimensions = + tabRef.current && tabRef.current.getBoundingClientRect() + let selectedWidth, selectedLeft + if (selectedTabDimensions) { + selectedWidth = selectedTabDimensions.width + selectedLeft = tabRef.current.offsetLeft + } + bubbleDimensions(selectedWidth, selectedLeft) + } + }, [isActive, bubbleDimensions]) + + return ( +
onSelect && onSelect(id, props)} + ref={tabRef} + > + {deletable && ( + + )} + {useLabel} + {icon && } +
+ ) + }, + (prevProps, props) => { + return ( + prevProps.isActive === props.isActive && + JSON.stringify(prevProps.data) === JSON.stringify(props.data) && + prevProps.icon === props.icon && + prevProps.label === props.label && + prevProps.size === props.size && + prevProps.variant === props.variant + ) + }, +) export default Tab diff --git a/src/app/components/atoms/TabBar/TabBar.component.scss b/src/app/components/atoms/TabBar/TabBar.component.scss index 57faee5..6163866 100755 --- a/src/app/components/atoms/TabBar/TabBar.component.scss +++ b/src/app/components/atoms/TabBar/TabBar.component.scss @@ -1,3 +1,17 @@ .ar-TabBar { height: 3.1rem; + font-size: 0.8rem; + + .slider { + height: 100%; + border-bottom: 3px solid blue; /* Change to your desired border color */ + bottom: 0; + background-color: var(--ar-bg-selected); + } + + &.modern { + .slider { + transition: left 0.3s, width 0.3s; + } + } } diff --git a/src/app/components/atoms/TabBar/TabBar.tsx b/src/app/components/atoms/TabBar/TabBar.tsx index bb0724e..e6909c7 100755 --- a/src/app/components/atoms/TabBar/TabBar.tsx +++ b/src/app/components/atoms/TabBar/TabBar.tsx @@ -1,17 +1,9 @@ import { useEffect, useState } from "react" -import { TabProps } from "../Tab/Tab" import { Tab } from "../.." +import { TabBarProps, TabProps } from "../../../types/components.interface" +import { ObjectType } from "../../../types/types" import "./TabBar.component.scss" -interface TabBarProps { - activeId?: string - data: TabProps[] - demo?: boolean - onTabChanged?: (id: string, data: any) => void - size?: string - variant?: string -} - const dummyData = [ { label: "Tab 1", @@ -31,39 +23,93 @@ const dummyData = [ ] const TabBar = (props: TabBarProps): JSX.Element => { - const { data, demo, onTabChanged, size, variant, activeId } = props - const [activeTab, setActiveTab] = useState() + const { + classes, + data, + demo, + onTabSelected, + size, + variant, + activeId, + ...rest + } = props + const [activeTab, setActiveTab] = useState() const useData = data || (demo && dummyData) + useEffect(() => { + demo && !activeId && setActiveTab({ id: "23jhrfl2l3lkj2lk3jlkjlsd" }) if (activeId !== undefined) { - setActiveTab(activeId) + setActiveTab({ id: activeId }) + } else { + const activeTab = data && data.find((t) => t.isActive) + if (activeTab && activeTab.id) { + setActiveTab({ id: activeTab.id }) + } } - }, [activeId]) - const onLocalTabChanged = (id: string, data: any) => { - if (activeId === undefined) { - setActiveTab(id) - } - onTabChanged && onTabChanged(id, data) + }, [activeId, data, demo]) + + const receiveDimensionsOfSelectedTab = ( + selectedWidth?: number, + selectedLeft?: number, + ) => { + setActiveTab({ ...activeTab, selectedWidth, selectedLeft }) } + + const onLocalTabSelected = (id: string, data: any) => { + if (activeTab) { + if (id !== activeTab.id) { + setActiveTab({ ...activeTab, id }) + onTabSelected && onTabSelected(id, data) + } + } else { + setActiveTab({ id }) + onTabSelected && onTabSelected(id, data) + } + } + const tabRenders = useData ?.filter((t) => t) .map((tab: TabProps) => { return ( ) }) return (
{tabRenders} + {activeTab && + activeTab.selectedLeft !== undefined && + activeTab.selectedWidth !== undefined && ( +
+ )}
) } diff --git a/src/app/components/index.ts b/src/app/components/index.ts index 598b0e4..0cf7967 100755 --- a/src/app/components/index.ts +++ b/src/app/components/index.ts @@ -1,4 +1,6 @@ /* PLOP_INJECT_IMPORT */ +import Loader from "./atoms/Loader" +import LoadableIcon from "./atoms/LoadableIcon" import ErrorBoundary from "./molecules/ErrorBoundary" import Component_404 from "./molecules/Component_404" import AlertStackManager from "./molecules/AlertStackManager" @@ -114,6 +116,8 @@ import Alert from "./atoms/Alert" export { /* PLOP_INJECT_EXPORT */ + Loader, + LoadableIcon, ErrorBoundary, Component_404, AlertStackManager, diff --git a/src/app/components/molecules/Component_404/Component_404.component.scss b/src/app/components/molecules/Component_404/Component_404.component.scss index 537ab7f..8997e16 100755 --- a/src/app/components/molecules/Component_404/Component_404.component.scss +++ b/src/app/components/molecules/Component_404/Component_404.component.scss @@ -1,3 +1,13 @@ .ar-Component_404 { - + .ar-Component_404-content { + height: 30rem; + min-width: 30rem; + font-size: 0.8rem; + border: var(--ar-border); + background-color: var(--ar-bg-base); + transition: box-shadow 0.3s; + &:hover { + box-shadow: 0px 4px 8px var(--ar-shadow); + } + } } diff --git a/src/app/components/molecules/Component_404/Component_404.tsx b/src/app/components/molecules/Component_404/Component_404.tsx index 95cbbc6..178773b 100755 --- a/src/app/components/molecules/Component_404/Component_404.tsx +++ b/src/app/components/molecules/Component_404/Component_404.tsx @@ -1,9 +1,22 @@ +import { Component_404Props } from "../../../types/components.interface" +import { Icon } from "../.." import "./Component_404.component.scss" -interface Component_404Props {} - const Component_404 = (props: Component_404Props): JSX.Element => { - return
In Component Component_404
+ const { iconSize } = props + return ( +
+
+ +
Could not dig what you asked for
+

Please check the URL and try again.

+

+ You may also use the tabs (right-top) to navigate if you're not sure + about the URL +

+
+
+ ) } export default Component_404 diff --git a/src/app/config/api-config.ts b/src/app/config/api-config.ts index c9777c6..b7f71f5 100644 --- a/src/app/config/api-config.ts +++ b/src/app/config/api-config.ts @@ -4,7 +4,7 @@ const API_CONFIG: ApiConfig = { production: "https://armco.tech/api", }, STATIC_HOST: { - development: "http://localhost:8080", + development: "https://static.armco.tech", production: "https://static.armco.tech", }, } diff --git a/src/app/config/components.ts b/src/app/config/components.ts index 5162581..54ee33e 100644 --- a/src/app/config/components.ts +++ b/src/app/config/components.ts @@ -209,6 +209,15 @@ const COMPONENTS: ComponentList = { props: [], variants: {}, }, + { + name: "Loader", + props: ["type", "label", "size"], + variants: { + size: ["small", "regular", "large"], + label: ["Loading Users...", "Submitting Report..."], + type: ["bar", "circle", "custom"], + }, + }, { name: "ProgressIndicator", props: [], diff --git a/src/app/pages/ComponentsViewerPage/ComponentsViewerPage.tsx b/src/app/pages/ComponentsViewerPage/ComponentsViewerPage.tsx index 0710f36..dc53993 100755 --- a/src/app/pages/ComponentsViewerPage/ComponentsViewerPage.tsx +++ b/src/app/pages/ComponentsViewerPage/ComponentsViewerPage.tsx @@ -1,5 +1,4 @@ import Main from "../../components/Main" -import Header from "../../components/Header" import Footer from "../../components/Footer" import ComponentList from "../../components/ComponentList" import Editor from "../../components/Editor" @@ -12,8 +11,7 @@ const ComponentsViewerPage = ( props: ComponentsViewerPageProps, ): JSX.Element => { return ( -
-
+
} mainContent={ diff --git a/src/app/pages/FontsPage/FontsPage.page.scss b/src/app/pages/FontsPage/FontsPage.page.scss new file mode 100755 index 0000000..f717786 --- /dev/null +++ b/src/app/pages/FontsPage/FontsPage.page.scss @@ -0,0 +1,3 @@ +.ar-FontsPage { + +} diff --git a/src/app/pages/FontsPage/FontsPage.slice.ts b/src/app/pages/FontsPage/FontsPage.slice.ts new file mode 100644 index 0000000..1cece56 --- /dev/null +++ b/src/app/pages/FontsPage/FontsPage.slice.ts @@ -0,0 +1,18 @@ +import { createSlice } from "@reduxjs/toolkit" + +export interface FontsPageState {} + +const initialState: FontsPageState = {} + +export const fontsPageSlice = createSlice({ + name: "fontsPage", + initialState, + reducers: { + increment: (state) => {}, + }, + extraReducers: (builder) => {}, +}) + +export const { increment } = fontsPageSlice.actions + +export default fontsPageSlice.reducer diff --git a/src/app/pages/FontsPage/FontsPage.test.ts b/src/app/pages/FontsPage/FontsPage.test.ts new file mode 100755 index 0000000..172187c --- /dev/null +++ b/src/app/pages/FontsPage/FontsPage.test.ts @@ -0,0 +1,8 @@ +import React from "react" +import FontsPage from "./FontsPage" + +describe("FontsPage", () => { + it("renders without error", () => { + + }) +}) diff --git a/src/app/pages/FontsPage/FontsPage.tsx b/src/app/pages/FontsPage/FontsPage.tsx new file mode 100755 index 0000000..cfdaeda --- /dev/null +++ b/src/app/pages/FontsPage/FontsPage.tsx @@ -0,0 +1,9 @@ +import "./FontsPage.page.scss" + +interface FontsPageProps {} + +const FontsPage = (props: FontsPageProps): JSX.Element => { + return
Be Here Soon
+} + +export default FontsPage diff --git a/src/app/pages/FontsPage/index.ts b/src/app/pages/FontsPage/index.ts new file mode 100755 index 0000000..6db5429 --- /dev/null +++ b/src/app/pages/FontsPage/index.ts @@ -0,0 +1,3 @@ +import FontsPage from "./FontsPage" + +export default FontsPage diff --git a/src/app/pages/IconsPage/IconsPage.tsx b/src/app/pages/IconsPage/IconsPage.tsx index cb1fada..c500f54 100755 --- a/src/app/pages/IconsPage/IconsPage.tsx +++ b/src/app/pages/IconsPage/IconsPage.tsx @@ -2,8 +2,8 @@ import { useEffect, useState } from "react" import { Filters } from "../../components" import Footer from "../../components/Footer" import Main from "../../components/Main" -import Header from "../../components/Header" import IconsList from "../../components/IconsList" +import { ObjectType } from "../../types/types" import Network from "../../utils/network" import Helper from "../../utils/helper" import "./IconsPage.page.scss" @@ -51,7 +51,7 @@ const IconsPage = (props: IconsPageProps): JSX.Element => { (filters.alphabet as Array).map( (al: BasicFilterConfig) => al.value, ) - Helper.matchArrayFilters( + finalFilteredIconList = Helper.matchArrayFilters( finalFilteredIconList, alphabet, "name", @@ -63,18 +63,20 @@ const IconsPage = (props: IconsPageProps): JSX.Element => { if (categories) { Object.keys(categories).forEach((category) => { const categoryValue = categories[category as keyof BasicFilterType] - Helper.matchArrayFilters( - finalFilteredIconList, - categoryValue, - "group", - ) + if ((categoryValue as Array).length > 0) { + finalFilteredIconList = Helper.matchArrayFilters( + finalFilteredIconList, + categoryValue, + "group", + ) + } }) } const countFilter = filters.count && "data" in filters.count && filters.count.data if (countFilter) { - finalFilteredIconList = finalFilteredIconList.slice( + finalFilteredIconList = finalFilteredIconList?.slice( "startIndex" in countFilter ? +countFilter.startIndex : 0, "endIndex" in countFilter ? +countFilter.endIndex : 0, ) @@ -85,8 +87,7 @@ const IconsPage = (props: IconsPageProps): JSX.Element => { }, [filters, icons, searchText]) return ( -
-
+
{ onFilterChange={setFilters} /> } - // mainContent={} mainContent={ } diff --git a/src/app/pages/index.ts b/src/app/pages/index.ts index 878d185..23f2a1b 100755 --- a/src/app/pages/index.ts +++ b/src/app/pages/index.ts @@ -1,4 +1,5 @@ /* PLOP_INJECT_IMPORT */ +import FontsPage from "./FontsPage" import DocsPage from "./DocsPage" import IconsPage from "./IconsPage" import ComponentsViewerPage from "./ComponentsViewerPage" @@ -6,6 +7,7 @@ import PlaygroundPage from "./PlaygroundPage" export { /* PLOP_INJECT_EXPORT */ + FontsPage, DocsPage, IconsPage, ComponentsViewerPage, diff --git a/src/app/routes.ts b/src/app/routes.ts index 7a45a7f..6941e89 100644 --- a/src/app/routes.ts +++ b/src/app/routes.ts @@ -15,7 +15,17 @@ const ROUTES = [ element: "IconsPage", }, { - path: "/component/:name", + path: "/fonts", + class: "fonts", + element: "FontsPage", + }, + { + path: "/components", + class: "component-viewer", + element: "ComponentsViewerPage", + }, + { + path: "/components/:name", class: "component-viewer", element: "ComponentsViewerPage", }, @@ -24,6 +34,11 @@ const ROUTES = [ class: "docs", element: "DocsPage", }, + { + path: "*", + class: "not-a-route", + element: "Component_404", + }, ] export default ROUTES diff --git a/src/app/static/images/ARC_logo.jpeg b/src/app/static/images/ARC_logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..45a1dabae89c7dad092a93cfb6a2c7d3cdc2aa74 GIT binary patch literal 34004 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 Ni~j%yIyL{0{|f{M?8*QD literal 0 HcmV?d00001 diff --git a/src/app/static/images/ARC_logo1.jpeg b/src/app/static/images/ARC_logo1.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..0802040486c09ed1e86e7d9e45c23845c6fc06f6 GIT binary patch literal 119930 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 ?eJT)334*S6oHPgPBX}MY1P5*v-_{hB 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

Om3N>(H2pxLS2=Poc7@@* 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 VqEqsGRIk?m05$lzf5m@C|JhKja(n;) literal 0 HcmV?d00001 diff --git a/src/app/static/images/Omnia Alkatra.svg b/src/app/static/images/Omnia Alkatra.svg new file mode 100644 index 0000000..0a0de93 --- /dev/null +++ b/src/app/static/images/Omnia Alkatra.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/static/images/Omnia.svg b/src/app/static/images/Omnia.svg new file mode 100644 index 0000000..e3dca15 --- /dev/null +++ b/src/app/static/images/Omnia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/static/images/index.ts b/src/app/static/images/index.ts index f671d69..28502c5 100644 --- a/src/app/static/images/index.ts +++ b/src/app/static/images/index.ts @@ -1,3 +1,4 @@ +import AppLogo from "./ARC_logo.jpeg" import Balloon from "./balloon.jpg" -export { Balloon } +export { AppLogo, Balloon } diff --git a/src/app/static/styles/_global.scss b/src/app/static/styles/_global.scss index a8425f8..edbfd1e 100644 --- a/src/app/static/styles/_global.scss +++ b/src/app/static/styles/_global.scss @@ -1,5 +1,6 @@ @use "./variables"; @use "bootstrap/scss/bootstrap.scss"; +@import "../../static/styles/mixins"; html { font-size: 16px; @@ -12,12 +13,14 @@ html, body, #root { } body { + @include drawer-header-footer-layout; margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen' 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + color: var(--ar-color-font); } code { @@ -60,6 +63,11 @@ code { align-items: center; } +.flex-h-center { + display: flex; + justify-content: center; +} + .h-0 { height: 0 !important; min-height: 0 !important; diff --git a/src/app/static/styles/_variables.scss b/src/app/static/styles/_variables.scss index e8a44ac..8b6d187 100644 --- a/src/app/static/styles/_variables.scss +++ b/src/app/static/styles/_variables.scss @@ -2,6 +2,7 @@ // heights and layout --ar-height-header: 3rem; --ar-height-footer: 1.5rem; + --ar-white: rgba(250, 250, 240); --ar-color-font-danger-faded: rgba(243, 32, 19, 0.7); --ar-color-font-success-faded: rgba(92, 184, 92, 0.7); --ar-color-font-info-faded: rgba(13, 202, 240, 0.7); @@ -52,7 +53,7 @@ --ar-color-primary: #3232d8; --ar-color-primary-faded: rgba(50, 50, 216, 0.7); --ar-color-secondary: #525252; - --ar-bg-base: #030307; + --ar-bg-base: #101010; --ar-bg: black; --ar-bg-hover: #0a0700; --ar-bg-hover-2: #1f1c15; diff --git a/src/app/types/components.interface.ts b/src/app/types/components.interface.ts new file mode 100644 index 0000000..7ee7317 --- /dev/null +++ b/src/app/types/components.interface.ts @@ -0,0 +1,110 @@ +import { MouseEventHandler, ReactNode } from "react" +import { ArAlertType, ArLoaderTypes, ArSizes } from "./enums" +import { FrameContentDefinition } from "./entity.interface" + +export interface BaseProps { + classes?: string + containerClasses?: string + childClasses?: string + theme?: string +} + +/* PLOP_INJECT_INTERFACE */ +export interface LoaderProps extends BaseProps { + type?: ArLoaderTypes + size?: ArSizes + label?: string + icon?: string + progress?: number +} + +export interface LoadableIconProps extends BaseProps { + color?: string + icon?: string + height?: string + isLocal?: boolean + size?: string + width?: string +} + +export interface IconProps extends BaseProps { + alt?: string + color?: string + demo?: boolean + height?: string + onClick?: MouseEventHandler + onMouseEnter?: MouseEventHandler + onMouseLeave?: MouseEventHandler + size?: string + src: string + width?: string +} + +export interface TabProps extends BaseProps { + bubbleDimensions?: Function + data?: any + demo?: boolean + deletable?: boolean + icon?: string + id?: string + isActive?: boolean + label: string + onSelect?: Function + size?: string + variant?: string +} + +export interface TabBarProps extends BaseProps { + activeId?: string + data: TabProps[] + demo?: boolean + onTabSelected?: (id: string, data: any) => void + size?: string + variant?: string + [key: string]: any +} + +export interface AlertProps extends BaseProps { + closeable?: boolean + demo?: boolean + position?: string + show?: boolean + type?: ArAlertType + message: string + timeout?: number +} + +export interface BrowserIncompatibilityProps extends BaseProps { + applicationName?: string + moreLink?: string +} + +interface LinkBaseProps extends BaseProps { + to: string + onClick?: MouseEventHandler + openInNew?: boolean + preemptNavigation?: boolean +} +interface LinkLabelProps extends LinkBaseProps { + label: string +} + +interface LinkChildrenProps extends LinkBaseProps { + children: ReactNode +} +export type LinkProps = + | (LinkLabelProps & Partial) + | (Partial & LinkChildrenProps) + +export interface Component_404Props extends BaseProps { + iconSize?: string +} + +export interface FrameContentProps extends BaseProps { + contentDefinition: FrameContentDefinition | null + notificationProps?: any +} + +// export interface LoaderProps extends BaseProps { + +// } diff --git a/src/app/types/entity.interface.ts b/src/app/types/entity.interface.ts new file mode 100644 index 0000000..e734237 --- /dev/null +++ b/src/app/types/entity.interface.ts @@ -0,0 +1,15 @@ +export interface FrameContentDefinition { + componentName: string + component: JSX.ElementType + props?: { + theme?: string + [key: string]: + | string + | number + | boolean + | { [key: string]: any } + | undefined + } + data: { [key: string]: any } + hierarchy: string +} diff --git a/src/app/types/enums.ts b/src/app/types/enums.ts new file mode 100644 index 0000000..c7b1183 --- /dev/null +++ b/src/app/types/enums.ts @@ -0,0 +1,29 @@ +export enum ArTabType { + CLASSIC = "classic", + MODERN = "modern", +} + +export enum ArAriaRoles { + TAB = "tab", +} + +export enum ArAlertType { + SUCCESS = "success", + WARNING = "warning", + ERROR = "error", + INFORMATION = "information", +} + +export enum ArSizes { + XSMALL = "xsmall", + SMALL = "small", + REGULAR = "regular", + LARGE = "large", + XLARGE = "xlarge", +} + +export enum ArLoaderTypes { + BAR = "bar", + CIRCLE = "circle", + CUSTOM = "custom", +} diff --git a/src/app/types/types.ts b/src/app/types/types.ts new file mode 100644 index 0000000..939339e --- /dev/null +++ b/src/app/types/types.ts @@ -0,0 +1,14 @@ +export type ObjectType = { + [key: string]: + | string + | number + | boolean + | null + | undefined + | ObjectType + | ArrayType +} + +export type ArrayType = Array + +export type GenericObject = { [key: string]: T } diff --git a/src/app/utils/domHelper.ts b/src/app/utils/domHelper.ts new file mode 100644 index 0000000..7cf2cce --- /dev/null +++ b/src/app/utils/domHelper.ts @@ -0,0 +1,23 @@ +import { LoadableIconProps } from "../types/entity.interface" + +class DOMHelper { + static svgToBase64(svg: SVGSVGElement, svgProps?: LoadableIconProps) { + const { size, classes, color } = svgProps || {} + svg.setAttribute("height", size || "1rem") + svg.setAttribute("width", size || "1rem") + svg.setAttribute("class", classes || "") + svg.setAttribute("stroke", color || "black") + const path = svg.querySelector("path") + // Override stroke and color of "path" node inside SVG at below line. + path && + color && + !!path.getAttribute("stroke") && + path.setAttribute("stroke", color) + // path && color && !!path.getAttribute("fill") && path.setAttribute("fill", color); + svg.style.color = color || "black" + const serializedSvg = new XMLSerializer().serializeToString(svg) + return btoa(serializedSvg) + } +} + +export default DOMHelper diff --git a/src/app/utils/helper.tsx b/src/app/utils/helper.tsx index 67d5146..c878104 100644 --- a/src/app/utils/helper.tsx +++ b/src/app/utils/helper.tsx @@ -202,7 +202,7 @@ class Helper { : searchList.filter( (item) => filters.findIndex( - (al) => item[match].toLowerCase() === al.toLowerCase(), + (al) => item[match].toLowerCase() === al.value.toLowerCase(), ) > -1, ) } diff --git a/src/app/utils/index.ts b/src/app/utils/index.ts new file mode 100644 index 0000000..96f2795 --- /dev/null +++ b/src/app/utils/index.ts @@ -0,0 +1,6 @@ +import DomHelper from "./domHelper" +import Adapter from "./adapters" +import Helper from "./helper" +import Network from "./network" + +export { DomHelper, Adapter, Helper, Network } diff --git a/src/app/utils/network.ts b/src/app/utils/network.ts index f0b11ea..3a3de4f 100644 --- a/src/app/utils/network.ts +++ b/src/app/utils/network.ts @@ -27,8 +27,8 @@ export default class Network { static async getStatic( url: string, - queryParams: object | null, - options: Options | null, + queryParams?: object | null, + options?: Options | null, ) { let urlString = Network.stringifyUrl(url, queryParams) const environment = process.env.NODE_ENV || "development" @@ -119,7 +119,7 @@ export default class Network { throw new Error(err.message, err.error) } - static stringifyUrl(url: string, queryParams: any) { + static stringifyUrl(url: string, queryParams?: any) { return url ? queryParams ? Object.keys(queryParams).reduce( diff --git a/vite.config.ts b/vite.config.ts index b522027..9ebd33a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,11 +1,13 @@ import { defineConfig } from "vitest/config" import react from "@vitejs/plugin-react" import path from "path" +import svgr from "vite-plugin-svgr" import { visualizer } from "rollup-plugin-visualizer" // https://vitejs.dev/config/ export default defineConfig({ plugins: [ + svgr(), react(), // visualizer({ // template: "treemap", // or sunburst @@ -26,7 +28,7 @@ export default defineConfig({ }, build: { outDir: "build", - // sourcemap: true, + sourcemap: true, rollupOptions: { treeshake: true, },