Skip to content

Commit

Permalink
refactor: enhance Navbar component structure and improve link rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
Dougley committed Feb 8, 2025
1 parent 8170248 commit 702f319
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 25 deletions.
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"extensions": [
"dbaeumer.vscode-eslint",
"IronGeek.vscode-env",
"bungcip.better-toml",
"tamasfe.even-better-toml",
"esbenp.prettier-vscode",
"ms-azuretools.vscode-docker",
"github.vscode-github-actions",
Expand Down
43 changes: 21 additions & 22 deletions apps/web-new/app/components/Navbar/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,14 @@ import classes from "./Navbar.module.css";
import { Settings } from "./Settings";
import { UserLoginStateControl } from "./UserLoginStateControl";

const data = [
interface NavItem {
label: string;
link: string;
icon: React.ComponentType<{ className?: string; stroke?: number }>;
children?: NavItem[];
}

const data: NavItem[] = [
{ label: "Home", link: "/", icon: IconHome },
{ label: "Premium", link: "/premium", icon: IconDiamond },
{
Expand Down Expand Up @@ -50,11 +57,11 @@ const data = [
},
];

export function Navbar() {
const { isDrawerOpen, toggleDrawer, closeDrawer, openDrawer } = useDrawer();
const rootData = useRouteLoaderData("root");

const links = data.map((item) => (
const renderNavLinks = (
items: NavItem[],
closeDrawer: () => void,
): React.ReactNode => {
return items.map((item) => (
<NavLink
className={classes.link}
href={item.link}
Expand All @@ -68,24 +75,16 @@ export function Navbar() {
}
}}
>
{item.children &&
item.children.map((child) => (
<NavLink
className={classes.link}
href={child.link}
key={child.label}
label={child.label}
leftSection={
<child.icon className={classes.linkIcon} stroke={1.5} />
}
renderRoot={(props) => <RemixNavLink to={child.link} {...props} />}
onClick={() => {
closeDrawer();
}}
/>
))}
{item.children && renderNavLinks(item.children, closeDrawer)}
</NavLink>
));
};

export function Navbar() {
const { isDrawerOpen, toggleDrawer, closeDrawer, openDrawer } = useDrawer();
const rootData = useRouteLoaderData("root");

const links = renderNavLinks(data, closeDrawer);

return (
<>
Expand Down
4 changes: 3 additions & 1 deletion apps/web-new/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@
"react-router": "^7.1.5",
"remix-auth": "4.1.0",
"remix-auth-oauth2": "^3.2.2",
"remix-utils": "^8.1.0"
"remix-utils": "^8.1.0",
"unified": "^11.0.5",
"unist-util-visit": "^5.0.0"
},
"devDependencies": {
"@cloudflare/workers-types": "^4.20250204.0",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dougley/frugal",
"packageManager": "pnpm@9.5.0",
"packageManager": "pnpm@10.2.0",
"version": "0.0.0",
"license": "MIT",
"devDependencies": {
Expand Down
6 changes: 6 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 702f319

Please sign in to comment.