Skip to content

Layouts ​

Modularous provides a layered application shell built from six components. In practice you only configure ue-main — the rest are assembled automatically.

Component hierarchy ​

ue-main  (Main.vue)
├── v-app-bar          — optional top bar
├── ue-sidebar  (Sidebar.vue)
│   └── ue-sidebar-content  (SidebarContent.vue)
│       ├── ue-sidebar-drawer-content  (SidebarDrawerContent.vue)
│       │   ├── [prepend]  app name + logo + rail toggle
│       │   ├── ue-navigation-group  — nav items
│       │   └── [append]   user info, profile menu, logout, About
│       └── resize handle (drag to resize)
├── v-main             — page content slot
├── v-bottom-navigation — optional mobile nav bar
└── singleton modals
    ├── ue-modal-media      — media library
    ├── ue-modal (profile)  — profile image upload
    ├── ue-modal (alert)    — dialog-style alerts
    ├── ue-modal (login)    — session-expired re-login
    ├── ue-alert            — snackbar/toast alerts
    └── ue-dynamic-modal    — programmatically triggered modals

Components ​

ComponentTagRole
Mainue-mainTop-level app shell — the only component you configure directly
Sidebarue-sidebarNavigation drawer with hover-zone support for fully-hidden mode
SidebarContentue-sidebar-contentAdds resize handle and secondary drawer slots around the drawer
SidebarDrawerContentue-sidebar-drawer-contentThe v-navigation-drawer — header, nav list, user footer
Home—Legacy prototype layout (not for production use)
Footer—Legacy prototype footer (not for production use)

The sidebar behaviour is driven by ui_settings in the Modularous config and the user's saved preferences. The four effective modes are:

ModeDescription
Persistent expandedFull-width drawer, always visible on desktop
RailIcon-only strip; expands on hover (expandHover: 'mini')
Fully hiddenCompletely off-screen; a hover zone on the left edge triggers it (expandHover: 'hidden')
TemporaryOverlay drawer (default on mobile)

You do not pass these modes as props — they are resolved from store state inside useSidebar().