diff --git a/src/app/page.tsx b/src/app/page.tsx index 54fcd40b..79300ddd 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -22,6 +22,7 @@ import { MonitorIcon, PolkadotIcon, RelayersIcon, + RoleManagerIcon, StarknetIcon, StellarIcon, SuiIcon, @@ -170,6 +171,13 @@ export default function HomePage() { title="UI Builder" description="Spin up user interfaces for any deployed contract. Select the function, auto-generate a React UI with wallet-connect and multi-network support, and export a complete app." /> + + } + title="Role Manager" + description="Manage contract permissions from one interface to define role-based access, set multi-level hierarchies, and assign granular admin controls for any team or governance model." + /> diff --git a/src/components/icons/index.ts b/src/components/icons/index.ts index fb4f2b00..6c20c5eb 100644 --- a/src/components/icons/index.ts +++ b/src/components/icons/index.ts @@ -12,6 +12,7 @@ export { MidnightIcon } from "./midnight-icon"; export { MonitorIcon } from "./monitor-icon"; export { PolkadotIcon } from "./polkadot-icon"; export { RelayersIcon } from "./relayers-icon"; +export { RoleManagerIcon } from "./role-manager-icon"; export { StarknetIcon } from "./starknet-icon"; export { StellarIcon } from "./stellar-icon"; export { SuiIcon } from "./sui-icon"; diff --git a/src/components/icons/role-manager-icon.tsx b/src/components/icons/role-manager-icon.tsx new file mode 100644 index 00000000..ba9c25b3 --- /dev/null +++ b/src/components/icons/role-manager-icon.tsx @@ -0,0 +1,42 @@ +export function RoleManagerIcon({ className }: { className: string }) { + return ( + + Role Manager Icon + + + + + + ); +} diff --git a/src/components/layout/docs-layout-client.tsx b/src/components/layout/docs-layout-client.tsx index a4721ce1..b6083827 100644 --- a/src/components/layout/docs-layout-client.tsx +++ b/src/components/layout/docs-layout-client.tsx @@ -54,6 +54,7 @@ export function DocsLayoutClient({ children }: DocsLayoutClientProps) { pathname.startsWith("/monitor") || pathname.startsWith("/relayer") || pathname.startsWith("/ui-builder") || + pathname.startsWith("/role-manager") || pathname.startsWith("/ecosystem-adapters") || pathname.startsWith("/tools"); @@ -65,6 +66,7 @@ export function DocsLayoutClient({ children }: DocsLayoutClientProps) { "/monitor", "/relayer", "/ui-builder", + "/role-manager", "/ecosystem-adapters", "/tools", ]) @@ -103,6 +105,7 @@ export function DocsLayoutClient({ children }: DocsLayoutClientProps) { "/relayer", "/monitor", "/ui-builder", + "/role-manager", "/upgrades", ]); if ( diff --git a/src/hooks/use-navigation-tree.ts b/src/hooks/use-navigation-tree.ts index f1de9ffc..4932dd59 100644 --- a/src/hooks/use-navigation-tree.ts +++ b/src/hooks/use-navigation-tree.ts @@ -57,7 +57,8 @@ export function useNavigationTree() { ) { sessionStorage.setItem("lastEcosystem", "ethereum"); } else { - // Shared paths (/ui-builder, /monitor, /relayer, /ecosystem-adapters, /tools) + // Shared paths (/ui-builder, /monitor, /relayer, /role-manager, + // /ecosystem-adapters, /tools) // have no ecosystem in their prefix. If the specific page is uniquely owned // by one ecosystem (e.g. /relayer/.../guides/stellar-channels-guide -> Stellar), // persist that so later navigation to ambiguous shared pages (quickstart, api/*) @@ -105,6 +106,7 @@ export function useNavigationTree() { pathname.startsWith("/monitor") || pathname.startsWith("/relayer") || pathname.startsWith("/ui-builder") || + pathname.startsWith("/role-manager") || pathname.startsWith("/ecosystem-adapters") || pathname.startsWith("/tools") ) {