Skip to content

Commit 27064a8

Browse files
feat: add unified header
1 parent cdc124a commit 27064a8

11 files changed

+8880
-6054
lines changed

package-lock.json

+8,340-5,471
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"postcss": "^8.4.27",
2323
"react": "^18.2.0",
2424
"react-dom": "^18.2.0",
25+
"styled-components": "^6.0.7",
2526
"tailwindcss": "^3.3.3"
2627
},
2728
"devDependencies": {

src/App.jsx

+93-57
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,119 @@
11
import "./App.css";
2-
import { useState } from "react";
2+
import { useState, useRef, useEffect, useMemo } from "react";
33
import { Dropdown } from "flowbite-react";
4+
import { CadtLogo } from "./components/CadtLogo";
5+
import { ExplorerLogo } from "./components/ExplorerLogo";
6+
import { TokenizationLogo } from "./components/TokenizationLogo";
7+
import { Flowbite } from "flowbite-react";
8+
import flowbiteThemeSettings from "./flowbite.theme";
49

510
const appLinks = {
611
cadt: {
712
link: "/apps/cadt/index.html",
813
name: "CADT",
14+
logo: CadtLogo,
915
},
1016
climateExplorer: {
1117
link: "/apps/climate_explorer/index.html",
1218
name: "Climate Explorer",
19+
logo: ExplorerLogo,
1320
},
1421
climateTokenization: {
1522
link: "/apps/climate_tokenization_engine/index.html",
1623
name: "Climate Tokenization Engine",
24+
logo: TokenizationLogo,
1725
},
1826
};
1927

2028
const App = () => {
2129
const [activeApp, setActiveApp] = useState(appLinks["cadt"]);
30+
const cadtRef = useRef(null);
31+
const climateExplorerRef = useRef(null);
32+
const climateTokenizationRef = useRef(null);
33+
34+
useEffect(() => {
35+
if (cadtRef.current) {
36+
window.cadt = cadtRef.current.contentWindow;
37+
}
38+
}, [cadtRef.current]);
39+
40+
const themeSettings = useMemo(() => {
41+
return flowbiteThemeSettings();
42+
}, [flowbiteThemeSettings]);
43+
44+
const ActiveLogo = activeApp.logo;
45+
const TokenizationLogo = appLinks["climateTokenization"].logo;
46+
const ExplorerLogo = appLinks["climateExplorer"].logo;
47+
const CadtLogo = appLinks["cadt"].logo;
2248

2349
return (
24-
<div className="App">
25-
<header className="App-header">
26-
<Dropdown label={activeApp.name}>
27-
<Dropdown.Item onClick={() => setActiveApp(appLinks["cadt"])}>
28-
CADT
29-
</Dropdown.Item>
30-
<Dropdown.Item
31-
onClick={() => setActiveApp(appLinks["climateTokenization"])}
32-
>
33-
Climate Tokenization Engine
34-
</Dropdown.Item>
35-
<Dropdown.Item
36-
onClick={() => setActiveApp(appLinks["climateExplorer"])}
37-
>
38-
Climate Explorer
39-
</Dropdown.Item>
40-
</Dropdown>
41-
</header>
42-
<div
43-
className="app-window"
44-
style={{
45-
display: activeApp.name === appLinks["cadt"].name ? "block" : "none",
46-
}}
47-
>
48-
<iframe src={appLinks["cadt"].link} width="100%" height="100%"></iframe>
49-
</div>
50-
<div
51-
className="app-window"
52-
style={{
53-
display:
54-
activeApp.name === appLinks["climateTokenization"].name
55-
? "block"
56-
: "none",
57-
}}
58-
>
59-
<iframe
60-
src={appLinks["climateTokenization"].link}
61-
width="100%"
62-
height="100%"
63-
></iframe>
64-
</div>
65-
<div
66-
className="app-window"
67-
style={{
68-
display:
69-
activeApp.name === appLinks["climateExplorer"].name
70-
? "block"
71-
: "none",
72-
}}
73-
>
74-
<iframe
75-
src={appLinks["climateExplorer"].link}
76-
width="100%"
77-
height="100%"
78-
></iframe>
50+
<Flowbite theme={themeSettings}>
51+
<div className="App">
52+
<header className="App-header">
53+
<Dropdown label={<ActiveLogo />} size="lg">
54+
<Dropdown.Item onClick={() => setActiveApp(appLinks["cadt"])}>
55+
<CadtLogo />
56+
</Dropdown.Item>
57+
<Dropdown.Item
58+
onClick={() => setActiveApp(appLinks["climateTokenization"])}
59+
>
60+
<TokenizationLogo />
61+
</Dropdown.Item>
62+
<Dropdown.Item
63+
onClick={() => setActiveApp(appLinks["climateExplorer"])}
64+
>
65+
<ExplorerLogo />
66+
</Dropdown.Item>
67+
</Dropdown>
68+
</header>
69+
<div
70+
className="app-window"
71+
style={{
72+
display:
73+
activeApp.name === appLinks["cadt"].name ? "block" : "none",
74+
}}
75+
>
76+
<iframe
77+
ref={cadtRef}
78+
src={appLinks["cadt"].link}
79+
width="100%"
80+
height="100%"
81+
></iframe>
82+
</div>
83+
<div
84+
className="app-window"
85+
style={{
86+
display:
87+
activeApp.name === appLinks["climateTokenization"].name
88+
? "block"
89+
: "none",
90+
}}
91+
>
92+
<iframe
93+
ref={climateTokenizationRef}
94+
src={appLinks["climateTokenization"].link}
95+
width="100%"
96+
height="100%"
97+
></iframe>
98+
</div>
99+
<div
100+
className="app-window"
101+
style={{
102+
display:
103+
activeApp.name === appLinks["climateExplorer"].name
104+
? "block"
105+
: "none",
106+
}}
107+
>
108+
<iframe
109+
ref={climateExplorerRef}
110+
src={appLinks["climateExplorer"].link}
111+
width="100%"
112+
height="100%"
113+
></iframe>
114+
</div>
79115
</div>
80-
</div>
116+
</Flowbite>
81117
);
82118
};
83119

49.5 KB
Loading

src/assets/img/logo.png

17.8 KB
Loading
13.8 KB
Loading

0 commit comments

Comments
 (0)