Merge branch 'feature/add-user-account-view' into 'main'

Add user account and settings boilerplate canvas pages.

See merge request vkuchenik/website-framework!36
This commit is contained in:
Dan Hansen
2025-07-29 21:52:51 +00:00
6 changed files with 75 additions and 8 deletions
@@ -7,6 +7,8 @@ import GlobalMapCanvas from "./views/GlobalMapCanvas";
import RegionalMapCanvas from "./views/RegionalMapCanvas";
import VolcanoCanvas from "./views/VolcanoCanvas";
import AdminCanvas from "./views/AdminCanvas";
import AccountCanvas from "./views/AccountCanvas"
import SettingsCanvas from "./views/SettingsCanvas"
import { DashboardCanvas } from "./views/DashboardCanvas";
import { DASHBOARD_VIEWS } from "@/constants/viewKeys";
@@ -30,6 +32,8 @@ export default function Canvas({ view, setView, layout, setLayout, onLayoutChang
{view === "regional" && <RegionalMapCanvas />}
{view === "volcano" && <VolcanoCanvas />}
{view === "admin" && <AdminCanvas />}
{view === "account" && <AccountCanvas />}
{view === "settings" && <SettingsCanvas />}
</Box>
);
}
@@ -0,0 +1,24 @@
import { Box, Text } from '@chakra-ui/react';
export default function AccountCanvas() {
return (
<Box p={8} mt={4} ml="auto" mr="auto" width="600px">
<Box
bg="bg"
shadow="md"
borderRadius="md"
p={8}
width="600px"
height="100px"
textAlign="center"
display="flex"
alignItems="center"
justifyContent="center"
>
<Text fontsize="2xl" fontWeight="bold" color="gray.700">
Account Canvas coming soon!
</Text>
</Box>
</Box>
);
}
@@ -0,0 +1,24 @@
import { Box, Text } from '@chakra-ui/react';
export default function SettingsCanvas() {
return (
<Box p={8} mt={4} ml="auto" mr="auto" width="600px">
<Box
bg="bg"
shadow="md"
borderRadius="md"
p={8}
width="600px"
height="100px"
textAlign="center"
display="flex"
alignItems="center"
justifyContent="center"
>
<Text fontsize="2xl" fontWeight="bold" color="gray.700">
Settings Canvas coming soon!
</Text>
</Box>
</Box>
);
}
+6 -2
View File
@@ -61,12 +61,16 @@ export default function Dashboard() {
width="100vw"
>
<GridItem rowSpan={1} colSpan={2}>
<Header />
<Header
view={ view }
setView={ setView }
/>
</GridItem>
<GridItem colSpan={1}>
<Sidebar
view={ view }
onChangeView={ setView }/>
onChangeView={ setView }
/>
</GridItem>
<GridItem colSpan={1} width="100%" overflow="auto">
<Canvas
@@ -8,7 +8,7 @@ const user = {
// avatar: "src\\assets\\user_profile.svg"
}
export default function Header() {
export default function Header({ view, setView }) {
const recipe = useRecipe({ key: "header" });
const styles = recipe();
@@ -20,7 +20,12 @@ export default function Header() {
<Text color="color" fontWeight="bold" textStyle="lg">{user.name}</Text>
<Text color="fg.muted" textStyle="sm">{user.email}</Text>
</Stack>
<UserAvatarMenu name={user.name} avatar={user.avatar} />
<UserAvatarMenu
name={user.name}
avatar={user.avatar}
view={ view }
setView={ setView }
/>
</Flex>
</chakra.div>
);
@@ -1,7 +1,7 @@
import { Avatar, Menu, Portal, Box } from "@chakra-ui/react"
export default function UserAvatarMenu({ name, avatar }) {
export default function UserAvatarMenu({ view, setView, name, avatar }) {
return (
<Menu.Root>
<Menu.Trigger focusRing="none">
@@ -21,9 +21,15 @@ export default function UserAvatarMenu({ name, avatar }) {
{/* zIndex: overlay = 1300 */}
<Menu.Positioner zIndex="overlay">
<Menu.Content>
<Menu.Item value="account">Account</Menu.Item>
<Menu.Item value="settings">Settings</Menu.Item>
<Menu.Item value="logout">Logout</Menu.Item>
<Menu.Item value="account" onClick={() => setView("account")}>
Account
</Menu.Item>
<Menu.Item value="settings" onClick={() => setView("settings")}>
Settings
</Menu.Item>
<Menu.Item value="logout" onClick={() => console.log("Log out triggered")}>
Logout
</Menu.Item>
</Menu.Content>
</Menu.Positioner>
</Portal>