diff --git a/.env.production b/.env.production
deleted file mode 100644
index fa20fe4..0000000
--- a/.env.production
+++ /dev/null
@@ -1,3 +0,0 @@
-GEN3_COMMONS_NAME=gen3
-NEXT_PUBLIC_GEN3_API=https://localhost/
-NEXT_PUBLIC_GEN3_DOMAIN=https://localhost/
diff --git a/Dockerfile b/Dockerfile
index 928e5c0..3b80b98 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -31,17 +31,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
&& npm install -g npm@10.5.2
RUN addgroup --system --gid 1001 nextjs && adduser --system --uid 1001 nextjs
-COPY ./package.json ./package-lock.json ./
-COPY ./package-lock.json ./
+COPY ./package.json ./package-lock.json ./next.config.js ./tsconfig.json ./.env.development ./tailwind.config.js ./postcss.config.js ./
COPY ./src ./src
COPY ./public ./public
COPY ./config ./config
-COPY ./next.config.js ./
-COPY ./tsconfig.json ./
-COPY ./.env.development ./
-COPY ./.env.production ./
-COPY ./tailwind.config.js ./
-COPY ./postcss.config.js ./
RUN npm ci
RUN npm install \
"@swc/core" \
diff --git a/config/icons/color.json b/config/icons/color.json
new file mode 100644
index 0000000..852e13a
--- /dev/null
+++ b/config/icons/color.json
@@ -0,0 +1,28 @@
+{
+ "prefix": "color",
+ "lastModified": 1724107947,
+ "icons": {
+ "analysis": {
+ "body": "",
+ "width": 64,
+ "height": 64
+ },
+ "discovery": {
+ "body": "",
+ "top": -13
+ },
+ "explorer": {
+ "body": "",
+ "left": -30,
+ "width": 511
+ },
+ "profile": {
+ "body": ""
+ },
+ "workspaces": {
+ "body": ""
+ }
+ },
+ "width": 512,
+ "height": 512
+}
diff --git a/config/icons/color/analysis.svg b/config/icons/color/analysis.svg
new file mode 100644
index 0000000..877872c
--- /dev/null
+++ b/config/icons/color/analysis.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/color/discovery.svg b/config/icons/color/discovery.svg
new file mode 100644
index 0000000..2fe223a
--- /dev/null
+++ b/config/icons/color/discovery.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/color/explorer.svg b/config/icons/color/explorer.svg
new file mode 100644
index 0000000..7cfe2d0
--- /dev/null
+++ b/config/icons/color/explorer.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/color/profile.svg b/config/icons/color/profile.svg
new file mode 100644
index 0000000..0fb33c8
--- /dev/null
+++ b/config/icons/color/profile.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/color/workspaces.svg b/config/icons/color/workspaces.svg
new file mode 100644
index 0000000..d073469
--- /dev/null
+++ b/config/icons/color/workspaces.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/dataDictionary.json b/config/icons/dataDictionary.json
new file mode 100644
index 0000000..7bf0508
--- /dev/null
+++ b/config/icons/dataDictionary.json
@@ -0,0 +1,58 @@
+{
+ "prefix": "dataDictionary",
+ "lastModified": 1724107947,
+ "icons": {
+ "dictionary-icon-administrative": {
+ "body": ""
+ },
+ "dictionary-icon-analysis": {
+ "body": "",
+ "height": 21
+ },
+ "dictionary-icon-biospecimen": {
+ "body": ""
+ },
+ "dictionary-icon-clinical": {
+ "body": ""
+ },
+ "dictionary-icon-clinical-assessment": {
+ "body": ""
+ },
+ "dictionary-icon-data-file": {
+ "body": ""
+ },
+ "dictionary-icon-data-observations": {
+ "body": ""
+ },
+ "dictionary-icon-default": {
+ "body": "",
+ "height": 21
+ },
+ "dictionary-icon-experimental-methods": {
+ "body": ""
+ },
+ "dictionary-icon-imaging": {
+ "body": ""
+ },
+ "dictionary-icon-index-file": {
+ "body": ""
+ },
+ "dictionary-icon-medical-history": {
+ "body": ""
+ },
+ "dictionary-icon-metadata": {
+ "body": ""
+ },
+ "dictionary-icon-notation": {
+ "body": ""
+ },
+ "dictionary-icon-study-administration": {
+ "body": ""
+ },
+ "dictionary-icon-subject-characteristics": {
+ "body": ""
+ }
+ },
+ "width": 20,
+ "height": 20
+}
diff --git a/config/icons/download.svg b/config/icons/download.svg
deleted file mode 100644
index 22a2656..0000000
--- a/config/icons/download.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/config/icons/gen3.json b/config/icons/gen3.json
index 21bf7fd..26d4c6a 100644
--- a/config/icons/gen3.json
+++ b/config/icons/gen3.json
@@ -1,7 +1,12 @@
{
"prefix": "gen3",
- "lastModified": 1718898014,
+ "lastModified": 1730144270,
"icons": {
+ "aisearch": {
+ "body": "",
+ "width": 682.67,
+ "height": 682.67
+ },
"analysis": {
"body": "",
"width": 35,
@@ -14,11 +19,26 @@
"width": 315.67,
"height": 294.22
},
+ "chevron-contract": {
+ "body": "",
+ "width": 16,
+ "height": 16
+ },
"chevron-down": {
"body": "",
"width": 58.026,
"height": 58.026
},
+ "chevron-expand": {
+ "body": "",
+ "width": 512,
+ "height": 512
+ },
+ "comparison": {
+ "body": "",
+ "width": 512,
+ "height": 512
+ },
"datafile": {
"body": "",
"width": 60,
@@ -79,8 +99,13 @@
"dictionary-icon-subject-characteristics": {
"body": ""
},
+ "dot": {
+ "body": "",
+ "width": 256,
+ "height": 256
+ },
"download": {
- "body": "",
+ "body": "",
"width": 24,
"height": 24
},
@@ -99,11 +124,31 @@
"width": 195,
"height": 89
},
+ "jupyter": {
+ "body": "",
+ "width": 44,
+ "height": 51
+ },
+ "loginarrowcircle": {
+ "body": "",
+ "width": 30,
+ "height": 30
+ },
"logincircle": {
"body": "",
"width": 24,
"height": 24
},
+ "open-in-modal": {
+ "body": "",
+ "width": 24,
+ "height": 24
+ },
+ "notebook": {
+ "body": "",
+ "width": 682.667,
+ "height": 682.667
+ },
"profile": {
"body": "",
"width": 512.001,
@@ -115,9 +160,9 @@
"height": 511.999
},
"upload": {
- "body": "",
- "width": 512,
- "height": 512
+ "body": "",
+ "width": 24,
+ "height": 24
},
"user": {
"body": "",
diff --git a/config/icons/gen3/aiSearch.svg b/config/icons/gen3/aiSearch.svg
new file mode 100644
index 0000000..593075d
--- /dev/null
+++ b/config/icons/gen3/aiSearch.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/config/icons/analysis.svg b/config/icons/gen3/analysis.svg
similarity index 100%
rename from config/icons/analysis.svg
rename to config/icons/gen3/analysis.svg
diff --git a/config/icons/bar-chart.svg b/config/icons/gen3/bar-chart.svg
similarity index 100%
rename from config/icons/bar-chart.svg
rename to config/icons/gen3/bar-chart.svg
diff --git a/config/icons/gen3/chevron-contract.svg b/config/icons/gen3/chevron-contract.svg
new file mode 100644
index 0000000..7b16d84
--- /dev/null
+++ b/config/icons/gen3/chevron-contract.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/chevron-down.svg b/config/icons/gen3/chevron-down.svg
similarity index 100%
rename from config/icons/chevron-down.svg
rename to config/icons/gen3/chevron-down.svg
diff --git a/config/icons/gen3/chevron-expand.svg b/config/icons/gen3/chevron-expand.svg
new file mode 100644
index 0000000..3a62aae
--- /dev/null
+++ b/config/icons/gen3/chevron-expand.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/gen3/comparison.svg b/config/icons/gen3/comparison.svg
new file mode 100644
index 0000000..114deb8
--- /dev/null
+++ b/config/icons/gen3/comparison.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/datafile.svg b/config/icons/gen3/datafile.svg
similarity index 100%
rename from config/icons/datafile.svg
rename to config/icons/gen3/datafile.svg
diff --git a/config/icons/dictionary.svg b/config/icons/gen3/dictionary.svg
similarity index 100%
rename from config/icons/dictionary.svg
rename to config/icons/gen3/dictionary.svg
diff --git a/config/icons/gen3/download.svg b/config/icons/gen3/download.svg
new file mode 100644
index 0000000..cab0abb
--- /dev/null
+++ b/config/icons/gen3/download.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/exploration.svg b/config/icons/gen3/exploration.svg
similarity index 100%
rename from config/icons/exploration.svg
rename to config/icons/gen3/exploration.svg
diff --git a/config/icons/gen3-dark.svg b/config/icons/gen3/gen3-dark.svg
similarity index 100%
rename from config/icons/gen3-dark.svg
rename to config/icons/gen3/gen3-dark.svg
diff --git a/config/icons/gen3.svg b/config/icons/gen3/gen3.svg
similarity index 100%
rename from config/icons/gen3.svg
rename to config/icons/gen3/gen3.svg
diff --git a/config/icons/gen3/jupyter.svg b/config/icons/gen3/jupyter.svg
new file mode 100644
index 0000000..d0fa7e4
--- /dev/null
+++ b/config/icons/gen3/jupyter.svg
@@ -0,0 +1,90 @@
+
diff --git a/config/icons/gen3/loginArrowCircle.svg b/config/icons/gen3/loginArrowCircle.svg
new file mode 100644
index 0000000..1fed0b6
--- /dev/null
+++ b/config/icons/gen3/loginArrowCircle.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/loginCircle.svg b/config/icons/gen3/loginCircle.svg
similarity index 100%
rename from config/icons/loginCircle.svg
rename to config/icons/gen3/loginCircle.svg
diff --git a/config/icons/gen3/not-found.svg b/config/icons/gen3/not-found.svg
new file mode 100644
index 0000000..68b0144
--- /dev/null
+++ b/config/icons/gen3/not-found.svg
@@ -0,0 +1,94 @@
+
+
diff --git a/config/icons/gen3/notebook.svg b/config/icons/gen3/notebook.svg
new file mode 100644
index 0000000..db56476
--- /dev/null
+++ b/config/icons/gen3/notebook.svg
@@ -0,0 +1,92 @@
+
+
+
+
diff --git a/config/icons/gen3/open_in_modal.svg b/config/icons/gen3/open_in_modal.svg
new file mode 100644
index 0000000..3462c34
--- /dev/null
+++ b/config/icons/gen3/open_in_modal.svg
@@ -0,0 +1,3 @@
+
diff --git a/config/icons/profile.svg b/config/icons/gen3/profile.svg
similarity index 100%
rename from config/icons/profile.svg
rename to config/icons/gen3/profile.svg
diff --git a/config/icons/query.svg b/config/icons/gen3/query.svg
similarity index 100%
rename from config/icons/query.svg
rename to config/icons/gen3/query.svg
diff --git a/config/icons/gen3/upload.svg b/config/icons/gen3/upload.svg
new file mode 100755
index 0000000..8859cfc
--- /dev/null
+++ b/config/icons/gen3/upload.svg
@@ -0,0 +1 @@
+
diff --git a/config/icons/user.svg b/config/icons/gen3/user.svg
similarity index 100%
rename from config/icons/user.svg
rename to config/icons/gen3/user.svg
diff --git a/config/icons/workspace.svg b/config/icons/gen3/workspace.svg
similarity index 100%
rename from config/icons/workspace.svg
rename to config/icons/gen3/workspace.svg
diff --git a/config/icons/upload.svg b/config/icons/upload.svg
deleted file mode 100755
index c2e2c5f..0000000
--- a/config/icons/upload.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
diff --git a/config/icons/workspace.json b/config/icons/workspace.json
new file mode 100644
index 0000000..8cd2718
--- /dev/null
+++ b/config/icons/workspace.json
@@ -0,0 +1,24 @@
+{
+ "prefix": "workspace",
+ "lastModified": 1724107947,
+ "icons": {
+ "galaxy": {
+ "body": "",
+ "width": 66
+ },
+ "jupyter": {
+ "body": "",
+ "width": 44,
+ "height": 51
+ },
+ "rlogo": {
+ "body": "",
+ "width": 75
+ },
+ "rstudio": {
+ "body": "",
+ "width": 50
+ }
+ },
+ "height": 50
+}
diff --git a/config/icons/workspace/galaxy.svg b/config/icons/workspace/galaxy.svg
new file mode 100644
index 0000000..3f743b7
--- /dev/null
+++ b/config/icons/workspace/galaxy.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/config/icons/workspace/jupyter.svg b/config/icons/workspace/jupyter.svg
new file mode 100644
index 0000000..ce0006b
--- /dev/null
+++ b/config/icons/workspace/jupyter.svg
@@ -0,0 +1,90 @@
+
diff --git a/config/icons/workspace/rlogo.svg b/config/icons/workspace/rlogo.svg
new file mode 100644
index 0000000..712b113
--- /dev/null
+++ b/config/icons/workspace/rlogo.svg
@@ -0,0 +1,17 @@
+
diff --git a/config/icons/workspace/rstudio.svg b/config/icons/workspace/rstudio.svg
new file mode 100644
index 0000000..32930f9
--- /dev/null
+++ b/config/icons/workspace/rstudio.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/package-lock.json b/package-lock.json
index 52b296f..c2a6121 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,8 +11,8 @@
"@fontsource/montserrat": "^5.0.19",
"@fontsource/poppins": "^5.0.15",
"@fontsource/source-sans-pro": "^5.0.8",
- "@gen3/core": "^0.10.50",
- "@gen3/frontend": "^0.10.50",
+ "@gen3/core": "^0.10.51",
+ "@gen3/frontend": "^0.10.51",
"@grafana/faro-react": "^1.9.1",
"@grafana/faro-web-sdk": "^1.9.1",
"@grafana/faro-web-tracing": "^1.9.1",
@@ -32,7 +32,7 @@
},
"devDependencies": {
"@axe-core/react": "^4.10.0",
- "@gen3/toolsff": "^0.10.50",
+ "@gen3/toolsff": "^0.10.51",
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/forms": "^0.5.3",
"@tailwindcss/line-clamp": "^0.4.2",
@@ -1766,9 +1766,9 @@
"license": "OFL-1.1"
},
"node_modules/@gen3/core": {
- "version": "0.10.50",
- "resolved": "https://registry.npmjs.org/@gen3/core/-/core-0.10.50.tgz",
- "integrity": "sha512-EFeGMx5YU02zQAQ7UOsYjLbu6ZAWdGU8CAo9kJHInWxzDvi5vWiWu4gfI99/4/JTppjJ0iZQR4NpNhfrIFl/ew==",
+ "version": "0.10.51",
+ "resolved": "https://registry.npmjs.org/@gen3/core/-/core-0.10.51.tgz",
+ "integrity": "sha512-F8SGoJld8j61t4Pn/gXLDVnKy+iR3+4fUTpDVk8v8Y22JyziTkGaldDX8FjswPaLS0ZPPpu4Lx+qPSNQquxclw==",
"license": "Apache-2.0",
"dependencies": {
"@reduxjs/toolkit": "^2.2.8",
@@ -1783,7 +1783,7 @@
},
"engines": {
"node": ">=20.11.0",
- "npm": ">=10.2.3"
+ "npm": ">=10.8.2"
},
"peerDependencies": {
"react": "^18.2.0",
@@ -1814,12 +1814,13 @@
}
},
"node_modules/@gen3/frontend": {
- "version": "0.10.50",
- "resolved": "https://registry.npmjs.org/@gen3/frontend/-/frontend-0.10.50.tgz",
- "integrity": "sha512-2aVLgWcBUBB4tjPGBNMHKVY4zIB4IqrlDOVVR8mTjIlgJ3OH63SMUDy8Lc2LdpFv0rfVWJ5U3KbsF8TgUmMEqA==",
+ "version": "0.10.51",
+ "resolved": "https://registry.npmjs.org/@gen3/frontend/-/frontend-0.10.51.tgz",
+ "integrity": "sha512-R9+LrlIM21JvaBsCHb9rGKQPHkWCumFk7Z9guPoWbTQSIpdvzPxDtijSSHUpMUxFuoeYmcC3lqNB8w6DPNJjmw==",
"license": "Apache-2.0",
"dependencies": {
"@graphiql/react": "^0.23.1",
+ "@hello-pangea/dnd": "^17.0.0",
"@iconify/react": "^4.0.1",
"@kbox-labs/react-echarts": "^1.4.0",
"@mantine/core": "^7.13.3",
@@ -1956,9 +1957,9 @@
}
},
"node_modules/@gen3/toolsff": {
- "version": "0.10.50",
- "resolved": "https://registry.npmjs.org/@gen3/toolsff/-/toolsff-0.10.50.tgz",
- "integrity": "sha512-7U3KT/vR6tQ1FfPPDv+1EIcu13ydTACImlt1W+kqFOalrUbGTuJGIVWhsn05U3Rde8nb/KpwYXkDlwNfB+eI+g==",
+ "version": "0.10.51",
+ "resolved": "https://registry.npmjs.org/@gen3/toolsff/-/toolsff-0.10.51.tgz",
+ "integrity": "sha512-EIYWazQmjLoH30/Pmcr5LkV4ICf3Rvw7SxFi/RzsVLrmzc/T6xxee9lNBiY1O6JaCjQ1G5aaK2JmPVLeUTbQAA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -1973,7 +1974,7 @@
},
"engines": {
"node": ">=20.11.0",
- "npm": ">=10.2.3"
+ "npm": ">=10.8.2"
},
"peerDependencies": {
"ts-node": "^10.9.2"
@@ -2117,6 +2118,48 @@
"react-dom": "^16 || ^17 || ^18"
}
},
+ "node_modules/@hello-pangea/dnd": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@hello-pangea/dnd/-/dnd-17.0.0.tgz",
+ "integrity": "sha512-LDDPOix/5N0j5QZxubiW9T0M0+1PR0rTDWeZF5pu1Tz91UQnuVK4qQ/EjY83Qm2QeX0eM8qDXANfDh3VVqtR4Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/runtime": "^7.25.6",
+ "css-box-model": "^1.2.1",
+ "memoize-one": "^6.0.0",
+ "raf-schd": "^4.0.3",
+ "react-redux": "^9.1.2",
+ "redux": "^5.0.1",
+ "use-memo-one": "^1.1.3"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@hello-pangea/dnd/node_modules/react-redux": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz",
+ "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/use-sync-external-store": "^0.0.3",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^18.2.25",
+ "react": "^18.0",
+ "redux": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "redux": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.14",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
@@ -8375,6 +8418,15 @@
"postcss": "^8.4"
}
},
+ "node_modules/css-box-model": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz",
+ "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==",
+ "license": "MIT",
+ "dependencies": {
+ "tiny-invariant": "^1.0.6"
+ }
+ },
"node_modules/css-font": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/css-font/-/css-font-1.2.0.tgz",
@@ -17622,6 +17674,12 @@
"integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
"license": "MIT"
},
+ "node_modules/memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==",
+ "license": "MIT"
+ },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -21435,6 +21493,12 @@
"performance-now": "^2.1.0"
}
},
+ "node_modules/raf-schd": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz",
+ "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==",
+ "license": "MIT"
+ },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -25625,6 +25689,15 @@
}
}
},
+ "node_modules/use-memo-one": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz",
+ "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/use-sidecar": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
diff --git a/package.json b/package.json
index d7ebe6c..8198464 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@gen3/commons-portal-app-base",
- "version": "0.10.50",
+ "version": "0.10.51",
"private": "true",
"engines": {
"npm": ">=10.2.3",
@@ -21,8 +21,8 @@
"@fontsource/montserrat": "^5.0.19",
"@fontsource/poppins": "^5.0.15",
"@fontsource/source-sans-pro": "^5.0.8",
- "@gen3/core": "^0.10.50",
- "@gen3/frontend": "^0.10.50",
+ "@gen3/core": "^0.10.51",
+ "@gen3/frontend": "^0.10.51",
"@grafana/faro-react": "^1.9.1",
"@grafana/faro-web-sdk": "^1.9.1",
"@grafana/faro-web-tracing": "^1.9.1",
@@ -42,7 +42,7 @@
},
"devDependencies": {
"@axe-core/react": "^4.10.0",
- "@gen3/toolsff": "^0.10.50",
+ "@gen3/toolsff": "^0.10.51",
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/forms": "^0.5.3",
"@tailwindcss/line-clamp": "^0.4.2",
diff --git a/src/lib/content/loadContent.ts b/src/lib/content/loadContent.ts
new file mode 100644
index 0000000..d4c2c8d
--- /dev/null
+++ b/src/lib/content/loadContent.ts
@@ -0,0 +1,40 @@
+import {
+ ContentSource,
+ Fonts,
+ RegisteredIcons,
+ TenStringArray,
+} from '@gen3/frontend';
+import { GEN3_COMMONS_NAME } from '@gen3/core';
+
+export const loadContent = async () => {
+ const modals = await ContentSource.get(
+ `config/${GEN3_COMMONS_NAME}/modals.json`,
+ );
+ const session = await ContentSource.get(
+ `config/${GEN3_COMMONS_NAME}/session.json`,
+ );
+
+ const fonts = await ContentSource.get(
+ `config/${GEN3_COMMONS_NAME}/themeFonts.json`,
+ );
+
+ const themeColors = await ContentSource.get(
+ `config/${GEN3_COMMONS_NAME}/themeColors.json`,
+ );
+
+ const colors = Object.fromEntries(
+ Object.entries(themeColors).map(([key, values]) => [
+ key,
+ Object.values(values) as TenStringArray,
+ ]),
+ );
+
+ const icons = await ContentSource.getAll(`config/icons/`, '\\.json');
+ return {
+ modalsConfig: modals,
+ sessionConfig: session,
+ themeFonts: fonts as Fonts,
+ colors: colors,
+ icons: icons as RegisteredIcons[],
+ };
+};
diff --git a/src/pages/Analysis.tsx b/src/pages/Analysis.tsx
new file mode 100644
index 0000000..21e809d
--- /dev/null
+++ b/src/pages/Analysis.tsx
@@ -0,0 +1,7 @@
+import {
+ AnalysisPage,
+ AnalysisPageGetServerSideProps as getServerSideProps,
+ } from '@gen3/frontend';
+ export default AnalysisPage;
+
+ export { getServerSideProps };
diff --git a/src/pages/NotebookLite.tsx b/src/pages/NotebookLite.tsx
new file mode 100644
index 0000000..6c163d2
--- /dev/null
+++ b/src/pages/NotebookLite.tsx
@@ -0,0 +1,7 @@
+import {
+ NotebookLitePage,
+ NotebookLitePageGetStaticProps as getStaticProps,
+} from '@gen3/frontend';
+
+export default NotebookLitePage;
+export { getStaticProps };
diff --git a/src/pages/Workspace.tsx b/src/pages/Workspace.tsx
index e4578be..96f172e 100644
--- a/src/pages/Workspace.tsx
+++ b/src/pages/Workspace.tsx
@@ -1,7 +1,7 @@
import {
- WorkspacesPage,
- WorkspacesPageGetServerSideProps as getServerSideProps,
+ WorkspacePage,
+ WorkspacePageGetServerSideProps as getServerSideProps,
} from '@gen3/frontend';
-export default WorkspacesPage;
+export default WorkspacePage;
export { getServerSideProps };
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx
index 16dfe42..e4b1b57 100644
--- a/src/pages/_app.tsx
+++ b/src/pages/_app.tsx
@@ -1,34 +1,48 @@
import App, { AppProps, AppContext, AppInitialProps } from 'next/app';
import React, { useEffect, useRef } from 'react';
+
import { Faro, FaroErrorBoundary, withFaroProfiler } from '@grafana/faro-react';
+
+import { initGrafanaFaro } from '../lib/Grafana/grafana';
+
import {
Gen3Provider,
TenStringArray,
type ModalsConfig,
- ContentSource,
RegisteredIcons,
Fonts,
SessionConfiguration,
+ registerCohortDiscoveryApp,
+ registerCohortDiversityApp,
+ registerCohortBuilderDefaultPreviewRenderers,
+ registerExplorerDefaultCellRenderers,
} from '@gen3/frontend';
+
+import { registerCohortTableCustomCellRenderers } from '@/lib/CohortBuilder/CustomCellRenderers';
+import { registerCustomExplorerDetailsPanels } from '@/lib/CohortBuilder/FileDetailsPanel';
+
import '../styles/globals.css';
import '@fontsource/montserrat';
import '@fontsource/source-sans-pro';
import '@fontsource/poppins';
-import { initGrafanaFaro } from '../lib/Grafana/grafana';
-import { GEN3_COMMONS_NAME, setDRSHostnames } from '@gen3/core';
+
+import { setDRSHostnames } from '@gen3/core';
import drsHostnames from '../../config/drsHostnames.json';
+import { loadContent } from '../lib/content/loadContent';
if (typeof window !== 'undefined' && process.env.NODE_ENV !== 'production') {
- // eslint-disable-next-line @typescript-eslint/no-var-requires
+ // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const ReactDOM = require('react-dom');
- // eslint-disable-next-line @typescript-eslint/no-var-requires
+ // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
const axe = require('@axe-core/react');
axe(React, ReactDOM, 1000);
}
+// TODO fix app registration
+
interface Gen3AppProps {
colors: Record;
- icons: RegisteredIcons;
+ icons: Array;
themeFonts: Fonts;
modalsConfig: ModalsConfig;
sessionConfig: SessionConfiguration;
@@ -50,27 +64,33 @@ const Gen3App = ({
const faroRef = useRef(null);
useEffect(() => {
+ // one time init
// if (
// process.env.NEXT_PUBLIC_FARO_COLLECTOR_URL &&
// process.env.NEXT_PUBLIC_FARO_APP_ENVIRONMENT != "local" &&
// !faroRef.current
// ) {
if (!faroRef.current) faroRef.current = initGrafanaFaro();
+ registerCohortDiscoveryApp();
+ registerCohortDiversityApp();
+ registerExplorerDefaultCellRenderers();
+ registerCohortBuilderDefaultPreviewRenderers();
+ registerCohortTableCustomCellRenderers();
+ registerCustomExplorerDetailsPanels();
// }
}, []);
-
return (
-
-
-
+
+
+
);
};
@@ -82,36 +102,10 @@ Gen3App.getInitialProps = async (
const ctx = await App.getInitialProps(context);
try {
- const modals = await ContentSource.get(
- `config/${GEN3_COMMONS_NAME}/modals.json`,
- );
- const session = await ContentSource.get(
- `config/${GEN3_COMMONS_NAME}/session.json`,
- );
-
- const fonts = await ContentSource.get(
- `config/${GEN3_COMMONS_NAME}/themeFonts.json`,
- );
-
- const themeColors = await ContentSource.get(
- `config/${GEN3_COMMONS_NAME}/themeColors.json`,
- );
-
- const colors = Object.fromEntries(
- Object.entries(themeColors).map(([key, values]) => [
- key,
- Object.values(values) as TenStringArray,
- ]),
- );
-
- const icons = await ContentSource.get('config/icons/gen3.json');
+ const res = await loadContent();
return {
...ctx,
- modalsConfig: modals,
- sessionConfig: session,
- themeFonts: fonts as Fonts,
- colors: colors,
- icons: icons as RegisteredIcons,
+ ...res,
};
} catch (error: any) {
console.error('Provider Wrapper error loading config', error.toString());
@@ -125,13 +119,15 @@ Gen3App.getInitialProps = async (
content: ['Poppins', 'sans-serif'],
fontFamily: 'Poppins',
},
- icons: {
- prefix: 'gen3',
- lastModified: 0,
- icons: {},
- width: 0,
- height: 0,
- },
+ icons: [
+ {
+ prefix: 'gen3',
+ lastModified: 0,
+ icons: {},
+ width: 0,
+ height: 0,
+ },
+ ],
modalsConfig: {},
sessionConfig: {},
};
diff --git a/src/pages/no-workspace-access.tsx b/src/pages/no-workspace-access.tsx
new file mode 100644
index 0000000..b9c9aa9
--- /dev/null
+++ b/src/pages/no-workspace-access.tsx
@@ -0,0 +1,7 @@
+import {
+ WorkspaceNoAccessPage,
+ WorkspaceNoAccessPageServerSideProps as getServerSideProps,
+} from '@gen3/frontend';
+export default WorkspaceNoAccessPage;
+
+export { getServerSideProps };