Hype StackHypeStack

Search

Search the packs, templates, docs, and pages

Layouts

A layout is the shell around your features: the sidebar, the navigation, the header, the settings frame. Every project has exactly one, and the four are interchangeable. Swap one for another and your feature code does not change.

PackPriceThe look
layout-basicFreeA classic dashboard: a sidebar that collapses to an icon rail, a brand logo in the header, an inset content panel with breadcrumbs
layout-glassPaidGlassmorphism: a frosted, blurred sidebar floating over soft color flairs, with an opaque content card
layout-joyfulPaidPlayful: a floating sidebar panel painted in the brand color, pill navigation, round icons when collapsed
layout-native-app-shellPaidOne shell for web and Electron: primary, secondary, and tertiary navigation, a mobile drawer, and macOS-style window chrome on desktop

Install one with compose, or pin it for CI:

bash
npx @hype-stack/cli compose --packs starter-saas-betterauth,layout-glass

No special integration needed

Layouts are frontend, mobile, and extension code only. No backend files, no Prisma models, no environment variables, no third-party account.

What it depends on

  • A starter pack for auth. A layout renders the signed-in user, so it requires the auth capability every starter provides.
  • Optionally Notifications. Each layout knows where the inbox bell goes when that pack is present.

How a layout stays out of your way

A layout never imports a feature pack, and a feature pack never imports the layout. They meet through four exported arrays the CLI rebuilds after every install, from what stack.json says each pack contributed:

AreaWho fills itRendered where
navbarActionsNotifications bell, project switcherThe header
userMenuActionsOrganization menu from a SaaS starterThe avatar dropdown
sidebarActionsOrganization switcher block from a SaaS starterAbove the sidebar navigation
drawerActionsOrganization switcher for phonesThe foot of the mobile drawer

That is why the free auth starter, which has no organizations, leaves those areas empty, and why swapping to a SaaS starter later fills them without touching the layout. Sidebar entries themselves come from nav.constants.ts, which packs patch with a messageKey so the label translates with everything else.

Admin app

The admin app has a layout too. When you compose, the picker asks once whether to copy the frontend layout for it; say no and you pick separately. All four layouts can render the admin shell. Pin both from the command line with a suffix:

bash
npx @hype-stack/cli compose --packs layout-glass@frontend,layout-basic@admin

Themes are separate

A layout is shape and structure. Color comes from the theme you picked at create (or with --theme), and corner radius from --radius, so the same layout looks different on every project. See Create a Project.

Environment variables

None.

Sponsor open source

Every purchase and sponsorship funds my 8+ years of work on open source given freely to the community. It keeps the lights on, funds new packs, and keeps the ecosystem alive. Even a small tier means a lot. Thank you!

Sponsor on GitHub