This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
The following commit(s) were added to refs/heads/main by this push:
new e5942b2a App main menu redesign
e5942b2a is described below
commit e5942b2a2bfb38b60f73c81102af4ab59427d2dc
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Mon Jan 27 14:49:38 2025 -0500
App main menu redesign
---
.../src/main/webui/src/main/PageNavigation.tsx | 62 ++++++++++++----------
karavan-app/src/main/webui/src/main/main.css | 40 ++++++++++++--
2 files changed, 69 insertions(+), 33 deletions(-)
diff --git a/karavan-app/src/main/webui/src/main/PageNavigation.tsx
b/karavan-app/src/main/webui/src/main/PageNavigation.tsx
index f988d747..eb114ce0 100644
--- a/karavan-app/src/main/webui/src/main/PageNavigation.tsx
+++ b/karavan-app/src/main/webui/src/main/PageNavigation.tsx
@@ -39,7 +39,7 @@ import ResourcesIcon from
"@patternfly/react-icons/dist/js/icons/blueprint-icon"
import KnowledgebaseIcon from
"@patternfly/react-icons/dist/js/icons/book-open-icon";
import ContainersIcon from "@patternfly/react-icons/dist/js/icons/cubes-icon";
import ConfigIcon from "@patternfly/react-icons/dist/js/icons/cogs-icon";
-import ServicesIcon from "@patternfly/react-icons/dist/js/icons/services-icon";
+import ServicesIcon from "@patternfly/react-icons/dist/js/icons/tools-icon";
import {useAppConfigStore, useDevModeStore, useFileStore} from
"../api/ProjectStore";
import {shallow} from "zustand/shallow";
import {useNavigate} from "react-router-dom";
@@ -79,14 +79,13 @@ export function PageNavigation () {
new MenuItem("containers", "Containers", <ContainersIcon/>)
)
}
- pages.push(new MenuItem("knowledgebase", "Knowledgebase",
<KnowledgebaseIcon/>));
- pages.push(new MenuItem("configuration", "Configuration",
<ConfigIcon/>));
+ pages.push(new MenuItem("help", "Help", <KnowledgebaseIcon/>));
+ pages.push(new MenuItem("system", "System", <ConfigIcon/>));
return pages;
}
- return (<Flex className="nav-buttons" direction={{default: "column"}}
style={{height: "100%"}}
- spaceItems={{default: "spaceItemsNone"}}>
- <FlexItem alignSelf={{default: "alignSelfCenter"}}>
+ return (<div className="nav-buttons" style={{height: "100%", display:
"flex", flexDirection: "column"}}>
+ <div style={{alignSelf: 'center'}}>
<Bullseye>
{loading && <Spinner style={{position: "absolute"}}
diameter="40px" aria-label="Loading..."/>}
<Tooltip className="logo-tooltip" content={config.title + " "
+ config.version}
@@ -95,28 +94,35 @@ export function PageNavigation () {
</Tooltip>
</Bullseye>
- </FlexItem>
- {getMenu().map(page =>
- <FlexItem key={page.pageId} className={pageId === page.pageId ?
"nav-button-selected" : ""}>
- <Tooltip content={page.tooltip} position={"right"}>
- <Button id={page.pageId} icon={page.icon} variant={"plain"}
- className={pageId === page.pageId ?
"nav-button-selected" : ""}
- onClick={event => {
- setFile('none', undefined);
- setPodName(undefined);
- setStatus("none");
- setPageId(page.pageId);
- navigate(page.pageId);
- }}
- />
- </Tooltip>
- </FlexItem>
- )}
- <FlexItem flex={{default: "flex_2"}} alignSelf={{default:
"alignSelfCenter"}}>
+ </div>
+ {getMenu().map((page, index) => {
+ let className = "nav-button";
+ className = className.concat(pageId === page.pageId ? "
nav-button-selected" : "");
+ className = className.concat((index === getMenu().length - 1) ? "
nav-button-last" : "");
+ return (
+ <div key={page.pageId} style={{width: '100%'}}
className={pageId === page.pageId ? "nav-button-selected" : ""}>
+ <Button id={page.pageId}
+ icon={page.icon}
+ variant={"link"}
+ className={className}
+ onClick={event => {
+ setFile('none', undefined);
+ setPodName(undefined);
+ setStatus("none");
+ setPageId(page.pageId);
+ navigate(page.pageId);
+ }}
+ >
+ {page.pageId}
+ </Button>
+ </div>
+ )
+ })}
+ <div style={{alignSelf: 'center', flexGrow: '2'}}>
<Divider/>
- </FlexItem>
+ </div>
{KaravanApi.authType !== 'public' &&
- <FlexItem alignSelf={{default: "alignSelfCenter"}}>
+ <div style={{alignSelf: 'center'}}>
<Popover
hasAutoWidth
aria-label="Current user"
@@ -159,6 +165,6 @@ export function PageNavigation () {
>
<UserIcon className="avatar"/>
</Popover>
- </FlexItem>}
- </Flex>)
+ </div>}
+ </div>)
}
\ No newline at end of file
diff --git a/karavan-app/src/main/webui/src/main/main.css
b/karavan-app/src/main/webui/src/main/main.css
index 21e69898..aaf510de 100644
--- a/karavan-app/src/main/webui/src/main/main.css
+++ b/karavan-app/src/main/webui/src/main/main.css
@@ -1,5 +1,14 @@
.karavan .nav-buttons {
background: var(--pf-v5-c-page__header--BackgroundColor);
+ width: fit-content;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.karavan .nav-buttons .pf-v5-c-button svg {
+ fill: var(--pf-v5-global--Color--light-100);
}
.karavan .nav-buttons .logo {
@@ -11,13 +20,13 @@
.karavan .nav-buttons .pf-v5-c-button {
padding: 0;
- width: 64px;
+ /*width: 64px;*/
height: 64px;
color: var(--pf-v5-global--Color--light-100);
}
.karavan .nav-buttons .pf-v5-c-button svg {
- width: 24px;
+ width: 32px;
}
.karavan .nav-buttons .avatar {
@@ -25,20 +34,41 @@
height: 32px;
margin-bottom: 6px;
border: solid var(--pf-v5-global--Color--light-100) 1px;
- background-color: var(--pf-v5-global--Color--light-100);
border-radius: 32px;
padding: 6px;
+ background-color: white;
}
-.karavan .nav-buttons .pf-v5-c-button.pf-m-plain {
+.karavan .nav-buttons .nav-button {
border-left-width: 3px;
border-left-style: solid;
border-left-color: transparent;
+ border-top-width: 1px;
+ border-top-style: solid;
+ border-top-color: var(--pf-v5-global--BackgroundColor--dark-400);
border-radius: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ padding-left: 6px;
+ padding-right: 6px;
+ width: 100%;
}
-.karavan .nav-button-selected .pf-v5-c-button.pf-m-plain {
+.karavan .nav-buttons .nav-button .pf-v5-c-button__icon.pf-m-start {
+ margin-inline-end: initial;
+}
+
+.karavan .nav-buttons .nav-button-last {
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ border-bottom-color: var(--pf-v5-global--BackgroundColor--dark-400);
+}
+
+.karavan .nav-button-selected .pf-v5-c-button {
border-left-color: var(--pf-v5-global--active-color--400);
background-color: var(--pf-v5-global--BackgroundColor--dark-400);
}
+