diff --git a/packages/app/package.json b/packages/app/package.json
index a9e0b04..89cfe01 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -49,6 +49,7 @@
"@cnoe-io/plugin-argo-workflows": "0.1.1",
"@cnoe-io/plugin-scaffolder-actions-frontend": "0.1.1",
"@internal/plugin-workflows": "^0.1.0",
+ "@internal/cnoe-ui-plugin": "^0.1.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@rjsf/core": "^5.8.1",
diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx
index 9ec04a8..e97ca3d 100644
--- a/packages/app/src/App.tsx
+++ b/packages/app/src/App.tsx
@@ -40,6 +40,11 @@ import { RequirePermission } from '@backstage/plugin-permission-react';
import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha';
import { KubernetesClusterPickerExtension } from '@cnoe-io/plugin-scaffolder-actions-frontend';
+import { ThemeProvider } from '@material-ui/core/styles';
+import CssBaseline from '@material-ui/core/CssBaseline';
+import LightIcon from '@material-ui/icons/WbSunny';
+import {CNOEHomepage, cnoeLightTheme, cnoeDarkTheme} from '@internal/cnoe-ui-plugin'
+
const app = createApp({
apis,
components: {
@@ -72,11 +77,36 @@ const app = createApp({
catalogIndex: catalogPlugin.routes.catalogIndex,
});
},
+ themes: [
+ {
+ id: 'cnoe-light-theme',
+ title: 'Light Theme',
+ variant: 'light',
+ icon: ,
+ Provider: ({ children }) => (
+
+ {children}
+
+ ),
+ },
+ {
+ id: 'cnoe-dark-theme',
+ title: 'Dark Theme',
+ variant: 'dark',
+ icon: ,
+ Provider: ({ children }) => (
+
+ {children}
+
+ ),
+ },
+ ]
});
const routes = (
- } />
+ } />
+ } />
} />
ScmIntegrationsApi.fromConfig(configApi),
+ deps: {configApi: configApiRef},
+ factory: ({configApi}) => ScmIntegrationsApi.fromConfig(configApi),
}),
ScmAuth.createDefaultApiFactory(),
createApiFactory({
diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx
index 6768b48..0a44078 100644
--- a/packages/app/src/components/Root/Root.tsx
+++ b/packages/app/src/components/Root/Root.tsx
@@ -1,12 +1,13 @@
import React, { PropsWithChildren } from 'react';
import { makeStyles } from '@material-ui/core';
import HomeIcon from '@material-ui/icons/Home';
+import CategoryIcon from '@material-ui/icons/Category';
import ExtensionIcon from '@material-ui/icons/Extension';
import MapIcon from '@material-ui/icons/MyLocation';
import LibraryBooks from '@material-ui/icons/LibraryBooks';
import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
-import LogoFull from './LogoFull';
-import LogoIcon from './LogoIcon';
+import {LogoFull, LogoIcon} from '@internal/cnoe-ui-plugin';
+
import {
Settings as SidebarSettings,
UserSettingsSignInAvatar,
@@ -65,7 +66,8 @@ export const Root = ({ children }: PropsWithChildren<{}>) => (
}>
{/* Global nav, not org-specific */}
-
+
+
diff --git a/plugins/cnoe-ui-plugin/package.json b/plugins/cnoe-ui-plugin/package.json
new file mode 100644
index 0000000..3b03a31
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@internal/cnoe-ui-plugin",
+ "version": "0.1.0",
+ "main": "src/index.ts",
+ "types": "src/index.ts",
+ "license": "Apache-2.0",
+ "publishConfig": {
+ "access": "public",
+ "main": "dist/index.esm.js",
+ "types": "dist/index.d.ts"
+ },
+ "backstage": {
+ "role": "frontend-plugin"
+ },
+ "scripts": {
+ "start": "backstage-cli package start",
+ "build": "backstage-cli package build",
+ "lint": "backstage-cli package lint",
+ "test": "backstage-cli package test",
+ "clean": "backstage-cli package clean",
+ "prepack": "backstage-cli package prepack",
+ "postpack": "backstage-cli package postpack"
+ },
+ "dependencies": {
+ "@backstage/core-components": "^0.13.3",
+ "@backstage/core-plugin-api": "^1.5.3",
+ "@backstage/plugin-catalog-react": "^1.8.0",
+ "@backstage/plugin-home": "^0.5.4",
+ "@backstage/theme": "^0.4.1",
+ "@material-ui/core": "^4.12.2",
+ "@material-ui/icons": "^4.9.1",
+ "@material-ui/lab": "4.0.0-alpha.57",
+ "react-use": "^17.2.4"
+ },
+ "peerDependencies": {
+ "react": "^16.13.1 || ^17.0.0"
+ },
+ "devDependencies": {
+ "@backstage/cli": "^0.22.9",
+ "@backstage/core-app-api": "^1.9.0",
+ "@backstage/dev-utils": "^1.0.17",
+ "@backstage/test-utils": "^1.4.1",
+ "@testing-library/jest-dom": "^5.10.1",
+ "@testing-library/react": "^12.1.3",
+ "@testing-library/user-event": "^14.0.0",
+ "@types/node": "*",
+ "cross-fetch": "^3.1.5",
+ "msw": "^0.49.0"
+ },
+ "files": [
+ "dist"
+ ]
+}
diff --git a/plugins/cnoe-ui-plugin/src/components/Homepage.tsx b/plugins/cnoe-ui-plugin/src/components/Homepage.tsx
new file mode 100644
index 0000000..e1f7029
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/components/Homepage.tsx
@@ -0,0 +1,83 @@
+import { Content, Page } from '@backstage/core-components';
+import { HomePageSearchBar } from '@backstage/plugin-search';
+import { SearchContextProvider } from '@backstage/plugin-search-react';
+import { Grid, makeStyles } from '@material-ui/core';
+import React from 'react';
+
+import {
+ HomePageToolkit,
+ HomePageCompanyLogo,
+ HomePageStarredEntities,
+ TemplateBackstageLogoIcon,
+} from '@backstage/plugin-home';
+
+import {
+ LogoBig,
+} from './logos';
+
+const useStyles = makeStyles(theme => ({
+ searchBar: {
+ display: 'flex',
+ maxWidth: '60vw',
+ backgroundColor: theme.palette.background.paper,
+ boxShadow: theme.shadows[1],
+ padding: '8px 0',
+ borderRadius: '50px',
+ margin: 'auto',
+ },
+}));
+
+const useLogoStyles = makeStyles(theme => ({
+ container: {
+ margin: theme.spacing(5, 0),
+ },
+ svg: {
+ width: 'auto',
+ height: 100,
+ },
+ path: {
+ fill: '#00568c',
+ },
+}));
+
+export const CNOEHomepage = () => {
+ const classes = useStyles();
+ const { container } = useLogoStyles();
+
+ return (
+
+
+
+
+ } />
+
+
+
+
+
+
+
+
+ ,
+ },
+ {
+ url: '/docs',
+ label: 'Tech Docs',
+ icon: ,
+ },
+ ]}
+ />
+
+
+
+
+
+
+ );
+};
diff --git a/plugins/cnoe-ui-plugin/src/components/logos/LogoBig.tsx b/plugins/cnoe-ui-plugin/src/components/logos/LogoBig.tsx
new file mode 100644
index 0000000..048dd9b
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/components/logos/LogoBig.tsx
@@ -0,0 +1,56 @@
+import React from 'react';
+import { makeStyles } from '@material-ui/core';
+
+const useStyles = makeStyles({
+ svg: {
+ width: 'auto',
+ height: 190,
+ },
+ whitePath: {
+ fill: '#ffffff',
+ stroke: 'none',
+ },
+ bluePath: {
+ fill: '#00568c',
+ stroke: 'none',
+ },
+ cyanPath: {
+ fill: '#00adee',
+ stroke: 'none',
+ },
+});
+
+export const LogoBig = () => {
+ const classes = useStyles();
+
+ return (
+
+ );
+};
diff --git a/plugins/cnoe-ui-plugin/src/components/logos/LogoFull.tsx b/plugins/cnoe-ui-plugin/src/components/logos/LogoFull.tsx
new file mode 100644
index 0000000..d4489ed
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/components/logos/LogoFull.tsx
@@ -0,0 +1,56 @@
+import React from 'react';
+import { makeStyles } from '@material-ui/core';
+
+const useStyles = makeStyles({
+ svg: {
+ width: 'auto',
+ height: 90,
+ },
+ whitePath: {
+ fill: '#ffffff',
+ stroke: 'none',
+ },
+ bluePath: {
+ fill: '#00568c',
+ stroke: 'none',
+ },
+ cyanPath: {
+ fill: '#00adee',
+ stroke: 'none',
+ },
+});
+
+export const LogoFull = () => {
+ const classes = useStyles();
+
+ return (
+
+ );
+};
diff --git a/plugins/cnoe-ui-plugin/src/components/logos/LogoIcon.tsx b/plugins/cnoe-ui-plugin/src/components/logos/LogoIcon.tsx
new file mode 100644
index 0000000..bcf70a1
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/components/logos/LogoIcon.tsx
@@ -0,0 +1,44 @@
+import React from 'react';
+import { makeStyles } from '@material-ui/core';
+
+const useStyles = makeStyles({
+ svg: {
+ width: 'auto',
+ height: 28,
+ },
+ whitePath: {
+ fill: '#ffffff',
+ stroke: 'none',
+ },
+ bluePath: {
+ fill: '#00568c',
+ stroke: 'none',
+ },
+ cyanPath: {
+ fill: '#00adee',
+ stroke: 'none',
+ },
+});
+
+export const LogoIcon = () => {
+ const classes = useStyles();
+
+ return (
+
+ );
+};
diff --git a/plugins/cnoe-ui-plugin/src/components/logos/index.tsx b/plugins/cnoe-ui-plugin/src/components/logos/index.tsx
new file mode 100644
index 0000000..908ff17
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/components/logos/index.tsx
@@ -0,0 +1,3 @@
+export {LogoFull} from './LogoFull';
+export {LogoIcon} from './LogoIcon';
+export {LogoBig} from './LogoBig';
diff --git a/plugins/cnoe-ui-plugin/src/components/themes/dark-theme.ts b/plugins/cnoe-ui-plugin/src/components/themes/dark-theme.ts
new file mode 100644
index 0000000..08bbcc8
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/components/themes/dark-theme.ts
@@ -0,0 +1,38 @@
+import {createTheme, darkTheme, genPageTheme, shapes} from '@backstage/theme';
+
+export const cnoeDarkTheme = createTheme({
+ palette: {
+ ...darkTheme.palette,
+ primary: {
+ main: '#25a0c2',
+ },
+ secondary: {
+ main: '#00568c',
+ },
+ },
+ defaultPageTheme: 'home',
+ pageTheme: {
+ home: genPageTheme({colors: ['#25a0c2', '#00568c'], shape: shapes.wave}),
+ documentation: genPageTheme({
+ colors: ['#25a0c2', '#00568c'],
+ shape: shapes.wave2,
+ }),
+ tool: genPageTheme({colors: ['#25a0c2', '#00568c'], shape: shapes.round}),
+ service: genPageTheme({
+ colors: ['#25a0c2', '#00568c'],
+ shape: shapes.wave,
+ }),
+ website: genPageTheme({
+ colors: ['#25a0c2', '#00568c'],
+ shape: shapes.wave,
+ }),
+ library: genPageTheme({
+ colors: ['#25a0c2', '#00568c'],
+ shape: shapes.wave,
+ }),
+ other: genPageTheme({colors: ['#25a0c2', '#00568c'], shape: shapes.wave}),
+ app: genPageTheme({colors: ['#25a0c2', '#00568c'], shape: shapes.wave}),
+ apis: genPageTheme({colors: ['#25a0c2', '#00568c'], shape: shapes.wave}),
+ },
+});
+
diff --git a/plugins/cnoe-ui-plugin/src/components/themes/index.ts b/plugins/cnoe-ui-plugin/src/components/themes/index.ts
new file mode 100644
index 0000000..197db68
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/components/themes/index.ts
@@ -0,0 +1,2 @@
+export {cnoeDarkTheme} from './dark-theme';
+export {cnoeLightTheme} from './light-theme';
diff --git a/plugins/cnoe-ui-plugin/src/components/themes/light-theme.ts b/plugins/cnoe-ui-plugin/src/components/themes/light-theme.ts
new file mode 100644
index 0000000..2a6dbe8
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/components/themes/light-theme.ts
@@ -0,0 +1,39 @@
+import {createTheme, lightTheme, genPageTheme, shapes} from '@backstage/theme';
+
+export const cnoeLightTheme = createTheme({
+ palette: {
+ ...lightTheme.palette,
+ primary: {
+ main: '#00568c',
+ },
+ secondary: {
+ main: '#00adee',
+ },
+ },
+ defaultPageTheme: 'home',
+ pageTheme: {
+ home: genPageTheme({colors: ['#00568c', '#00adee'], shape: shapes.wave}),
+ documentation: genPageTheme({
+ colors: ['#00568c', '#00adee'],
+ shape: shapes.wave2,
+ }),
+ tool: genPageTheme({colors: ['#00568c', '#00adee'], shape: shapes.round}),
+ service: genPageTheme({
+ colors: ['#00568c', '#00adee'],
+ shape: shapes.wave,
+ }),
+ website: genPageTheme({
+ colors: ['#00568c', '#00adee'],
+ shape: shapes.wave,
+ }),
+ library: genPageTheme({
+ colors: ['#00568c', '#00adee'],
+ shape: shapes.wave,
+ }),
+ other: genPageTheme({colors: ['#00568c', '#00adee'], shape: shapes.wave}),
+ app: genPageTheme({colors: ['#00568c', '#00adee'], shape: shapes.wave}),
+ apis: genPageTheme({colors: ['#00568c', '#00adee'], shape: shapes.wave}),
+ },
+});
+
+
diff --git a/plugins/cnoe-ui-plugin/src/index.ts b/plugins/cnoe-ui-plugin/src/index.ts
new file mode 100644
index 0000000..467f2b0
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/index.ts
@@ -0,0 +1,3 @@
+export * from './components/themes';
+export {LogoFull, LogoIcon} from './components/logos';
+export {CNOEHomepage} from './components/Homepage';
diff --git a/plugins/cnoe-ui-plugin/src/plugin.ts b/plugins/cnoe-ui-plugin/src/plugin.ts
new file mode 100644
index 0000000..60bb363
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/plugin.ts
@@ -0,0 +1,36 @@
+import {createPlugin, createComponentExtension} from '@backstage/core-plugin-api';
+
+import {rootRouteRef} from './routes';
+
+export const cnoeFrontendPlugin = createPlugin({
+ id: 'cnoe-ui-plugin',
+ routes: {
+ root: rootRouteRef,
+ },
+});
+
+export const AWSLogoFull = cnoeFrontendPlugin
+ .provide(
+ createComponentExtension({
+ name: 'LogoFull',
+ component: {lazy: () => import('./components/logos/LogoFull').then(m => m.LogoFull)},
+ }),
+ );
+
+export const AWSLogoIcon = cnoeFrontendPlugin
+ .provide(
+ createComponentExtension({
+ name: 'LogoIcon',
+ component: {lazy: () => import('./components/logos/LogoIcon').then(m => m.LogoIcon)},
+ }),
+ );
+
+export const CNOEHomepage = cnoeFrontendPlugin
+ .provide(
+ createComponentExtension({
+ name: 'Homepage',
+ component: {
+ lazy: () => import('./components/Homepage').then(m => m.CNOEHomepage),
+ },
+ }),
+ );
diff --git a/plugins/cnoe-ui-plugin/src/routes.ts b/plugins/cnoe-ui-plugin/src/routes.ts
new file mode 100644
index 0000000..c54a838
--- /dev/null
+++ b/plugins/cnoe-ui-plugin/src/routes.ts
@@ -0,0 +1,5 @@
+import {createRouteRef} from '@backstage/core-plugin-api';
+
+export const rootRouteRef = createRouteRef({
+ id: 'cnoe-ui',
+});
diff --git a/plugins/workflows/package.json b/plugins/workflows/package.json
index c8e289c..f5bc5d1 100644
--- a/plugins/workflows/package.json
+++ b/plugins/workflows/package.json
@@ -23,10 +23,10 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/core-components": "^0.13.1",
- "@backstage/core-plugin-api": "^1.5.1",
- "@backstage/plugin-catalog-react": "^1.6.0",
- "@backstage/theme": "^0.3.0",
+ "@backstage/core-components": "^0.13.3",
+ "@backstage/core-plugin-api": "^1.5.3",
+ "@backstage/plugin-catalog-react": "^1.8.0",
+ "@backstage/theme": "^0.4.1",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
@@ -36,10 +36,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.22.7",
- "@backstage/core-app-api": "^1.8.0",
- "@backstage/dev-utils": "^1.0.15",
- "@backstage/test-utils": "^1.3.1",
+ "@backstage/cli": "^0.22.9",
+ "@backstage/core-app-api": "^1.9.0",
+ "@backstage/dev-utils": "^1.0.17",
+ "@backstage/test-utils": "^1.4.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/yarn.lock b/yarn.lock
index 6123f63..da467b6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3762,6 +3762,43 @@
luxon "^3.0.0"
react-use "^17.2.4"
+"@backstage/plugin-home-react@^0.1.1":
+ version "0.1.1"
+ resolved "https://cnoe-833162080385.d.codeartifact.us-west-2.amazonaws.com/npm/cnoe/@backstage/plugin-home-react/-/plugin-home-react-0.1.1.tgz#31dd9877d95b45a12221cf70c5a190c2fecf618f"
+ integrity sha512-4mHWNkeS4eXpnA85d6g3GHCp+F+gtHsPqTLfZCBjkBnHn5Gxo7t0WNjsxTl97HRD85v+Scud6XtZ/ATMHt8RQA==
+ dependencies:
+ "@backstage/core-components" "^0.13.3"
+ "@backstage/core-plugin-api" "^1.5.3"
+ "@material-ui/core" "^4.12.2"
+ "@material-ui/icons" "^4.9.1"
+ "@rjsf/utils" "5.7.3"
+
+"@backstage/plugin-home@^0.5.4":
+ version "0.5.4"
+ resolved "https://cnoe-833162080385.d.codeartifact.us-west-2.amazonaws.com/npm/cnoe/@backstage/plugin-home/-/plugin-home-0.5.4.tgz#c3be22030c941c50325dc59c59a49810043d2d32"
+ integrity sha512-/NMXu0wccITryITFFGR6g3M3Flr/vduFpJlIir7tLvV+EA/YCVz8TClWcOI8kD9WWD9KA8fa7rRdHyTPWSxDRQ==
+ dependencies:
+ "@backstage/catalog-model" "^1.4.1"
+ "@backstage/config" "^1.0.8"
+ "@backstage/core-components" "^0.13.3"
+ "@backstage/core-plugin-api" "^1.5.3"
+ "@backstage/plugin-catalog-react" "^1.8.0"
+ "@backstage/plugin-home-react" "^0.1.1"
+ "@backstage/theme" "^0.4.1"
+ "@material-ui/core" "^4.12.2"
+ "@material-ui/icons" "^4.9.1"
+ "@material-ui/lab" "4.0.0-alpha.61"
+ "@rjsf/core-v5" "npm:@rjsf/core@5.7.3"
+ "@rjsf/material-ui-v5" "npm:@rjsf/material-ui@5.7.3"
+ "@rjsf/utils" "5.7.3"
+ "@rjsf/validator-ajv8" "5.7.3"
+ "@types/react" "^16.13.1 || ^17.0.0"
+ lodash "^4.17.21"
+ react-grid-layout "^1.3.4"
+ react-resizable "^3.0.4"
+ react-use "^17.2.4"
+ zod "~3.21.4"
+
"@backstage/plugin-kubernetes-backend@^0.11.2":
version "0.11.2"
resolved "https://registry.npmmirror.com/@backstage/plugin-kubernetes-backend/-/plugin-kubernetes-backend-0.11.2.tgz#cb83ad81c2b689f2395e2d25670492f08f29d6d2"
@@ -9283,9 +9320,9 @@
resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
-"@types/react-dom@*", "@types/react-dom@<18.0.0":
+"@types/react-dom@*", "@types/react-dom@<18.0.0", "@types/react-dom@^17":
version "17.0.20"
- resolved "https://registry.npmmirror.com/@types/react-dom/-/react-dom-17.0.20.tgz#e0c8901469d732b36d8473b40b679ad899da1b53"
+ resolved "https://cnoe-833162080385.d.codeartifact.us-west-2.amazonaws.com/npm/cnoe/@types/react-dom/-/react-dom-17.0.20.tgz#e0c8901469d732b36d8473b40b679ad899da1b53"
integrity sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==
dependencies:
"@types/react" "^17"
@@ -10080,6 +10117,7 @@ anymatch@^3.0.3, anymatch@~3.1.2:
"@cnoe-io/plugin-apache-spark" "0.1.1"
"@cnoe-io/plugin-argo-workflows" "0.1.1"
"@cnoe-io/plugin-scaffolder-actions-frontend" "0.1.1"
+ "@internal/cnoe-ui-plugin" "^0.1.0"
"@internal/plugin-workflows" "^0.1.0"
"@material-ui/core" "^4.12.2"
"@material-ui/icons" "^4.9.1"
@@ -11311,7 +11349,7 @@ clone@^1.0.2:
resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
-clsx@^1.0.2, clsx@^1.0.4, clsx@^1.2.1:
+clsx@^1.0.2, clsx@^1.0.4, clsx@^1.1.1, clsx@^1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
@@ -17053,6 +17091,11 @@ lodash.isarguments@^3.1.0:
resolved "https://registry.npmmirror.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==
+lodash.isequal@^4.0.0:
+ version "4.5.0"
+ resolved "https://cnoe-833162080385.d.codeartifact.us-west-2.amazonaws.com/npm/cnoe/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+ integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
+
lodash.ismatch@^4.4.0:
version "4.4.0"
resolved "https://registry.npmmirror.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37"
@@ -20029,7 +20072,7 @@ promzard@^0.3.0:
dependencies:
read "1"
-prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
+prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -20431,6 +20474,14 @@ react-double-scrollbar@0.0.15:
resolved "https://registry.npmmirror.com/react-double-scrollbar/-/react-double-scrollbar-0.0.15.tgz#e915ab8cb3b959877075f49436debfdb04288fe4"
integrity sha512-dLz3/WBIpgFnzFY0Kb4aIYBMT2BWomHuW2DH6/9jXfS6/zxRRBUFQ04My4HIB7Ma7QoRBpcy8NtkPeFgcGBpgg==
+react-draggable@^4.0.0, react-draggable@^4.0.3:
+ version "4.4.5"
+ resolved "https://cnoe-833162080385.d.codeartifact.us-west-2.amazonaws.com/npm/cnoe/react-draggable/-/react-draggable-4.4.5.tgz#9e37fe7ce1a4cf843030f521a0a4cc41886d7e7c"
+ integrity sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==
+ dependencies:
+ clsx "^1.1.1"
+ prop-types "^15.8.1"
+
react-error-overlay@^6.0.11:
version "6.0.11"
resolved "https://registry.npmmirror.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb"
@@ -20441,6 +20492,17 @@ react-fast-compare@^3.1.1:
resolved "https://registry.npmmirror.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
+react-grid-layout@^1.3.4:
+ version "1.3.4"
+ resolved "https://cnoe-833162080385.d.codeartifact.us-west-2.amazonaws.com/npm/cnoe/react-grid-layout/-/react-grid-layout-1.3.4.tgz#4fa819be24a1ba9268aa11b82d63afc4762a32ff"
+ integrity sha512-sB3rNhorW77HUdOjB4JkelZTdJGQKuXLl3gNg+BI8gJkTScspL1myfZzW/EM0dLEn+1eH+xW+wNqk0oIM9o7cw==
+ dependencies:
+ clsx "^1.1.1"
+ lodash.isequal "^4.0.0"
+ prop-types "^15.8.1"
+ react-draggable "^4.0.0"
+ react-resizable "^3.0.4"
+
react-helmet@6.1.0:
version "6.1.0"
resolved "https://registry.npmmirror.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
@@ -20538,6 +20600,14 @@ react-refresh@^0.14.0:
resolved "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
+react-resizable@^3.0.4:
+ version "3.0.5"
+ resolved "https://cnoe-833162080385.d.codeartifact.us-west-2.amazonaws.com/npm/cnoe/react-resizable/-/react-resizable-3.0.5.tgz#362721f2efbd094976f1780ae13f1ad7739786c1"
+ integrity sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==
+ dependencies:
+ prop-types "15.x"
+ react-draggable "^4.0.3"
+
"react-router-dom@6.0.0-beta.0 || ^6.3.0":
version "6.14.2"
resolved "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.14.2.tgz#88f520118b91aa60233bd08dbd3fdcaea3a68488"
@@ -24172,7 +24242,7 @@ zod-to-json-schema@^3.20.4:
resolved "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.21.1.tgz#a24b2737bf361fc516c92421eb59988b6e2fc046"
integrity sha512-y5g0MPxDq+YG/T+cHGPYH4PcBpyCqwK6wxeJ76MR563y0gk/14HKfebq8xHiItY7lkc9GDFygCnkvNDTvAhYAg==
-zod@^3.21.4:
+zod@^3.21.4, zod@~3.21.4:
version "3.21.4"
resolved "https://registry.npmmirror.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db"
integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==