PatternFly 6 dashboard shell: masthead, sidebar, Auth0 provider, protected routes, React Query bootstrap.
Generic text brand only (BrandMark). No proprietary logos or default tenant labels.
npm install @coderic/dashboard-shell @coderic/dashboard-core @coderic/aclPeers (install in app): React 19, React Router 7, PatternFly 6, @auth0/auth0-spa-js, @tanstack/react-query.
@coderic:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}Repo: https://github.com/Coderic/coderic-dashboard-shell
Styles: import "@coderic/dashboard-shell/styles";
| Symbol | Purpose |
|---|---|
DashboardRoot | QueryClient + DashboardAuthProvider wrapper (requires claimsConfig) |
DashboardAuthProvider | Auth0 SPA + ACL context |
AppShell | PatternFly Page layout with sidebar |
ProtectedRoute | Redirect unauthenticated users |
RouterLinkButton | PF button as React Router link |
BrandMark | Text masthead brand (title, optional subtitle) |
useAuth, useAccessToken | Auth hooks |
CSS classes use prefix dsh-* (not vendor-specific).
Prebuilt @coderic/* dist must share one React instance with the app:
importpathfrom"node:path";import{fileURLToPath}from"node:url";constappDir=path.dirname(fileURLToPath(import.meta.url));exportdefaultdefineConfig({resolve: {dedupe: ["react","react-dom","react-router","react-router-dom","@tanstack/react-query"],alias: {react: path.join(appDir,"node_modules/react"),"react-dom": path.join(appDir,"node_modules/react-dom"),},},});Without this, runtime fails with Cannot read properties of null (reading 'useEffect').
import{DashboardRoot,AppShell,ProtectedRoute}from"@coderic/dashboard-shell";import"@coderic/dashboard-shell/styles";import{env}from"./config/env";import{claimsConfig}from"./config/claims";import{dashboardRegistry}from"./auth/registry";createRoot(document.getElementById("root")!).render(<DashboardRootenv={env}registry={dashboardRegistry}claimsConfig={claimsConfig}isAdminUser={(user)=>user?.email?.endsWith("@example.com")}><BrowserRouterbasename="/dashboard"><Routes><Routeelement={<ProtectedRoute><AppShell…/></ProtectedRoute>}>
…
</Route></Routes></BrowserRouter></DashboardRoot>,);<AppShellbrand={dashboardBrand}dashboardLink={{label: "Home",route: "/"}}navSections={[…]}showBilling={false}/>Removed (do not use):CodericAuthProvider, MasterBrand, portalLabel.
| Portal | brandSubtitle | auth0ClientGroup |
|---|---|---|
| coderic.cloud | CLOUD | corporate |
| coderic.store | STORE | corporate |
| coderic.com | BUSINESS | corporate |
| coderic.financial | FINANCIAL | corporate |
| coderic.dev | DEVELOPMENT | foundation |
| coderic.org | ORGANIZATION | foundation |
| coderic.net | NETWORK | foundation |
| coderic.io | HUB | foundation |
Always set brandTitle="CODERIC" in Coderic portals.
MIT