LowCodeStacks™
Sign in

NewPower Apps · canvas componentNavigation and layout✓ Tested in StudioMIT License

Navigation shell

Your app's main menu: a side menu on wide screens that collapses to icons, and a bottom bar on phones, from one table. Badges, items hidden or disabled by role, the current screen marked, who is signed in, an animated light and dark switch, and outputs that place your content beside it.

Name in Studio
lcsNavShell
Version
0.2.0
Properties
26 inputs · 12 outputs · 4 events · 1 action
Sign in to copy

Free with an account

No ratings yet

Sign in to copy

Variations

As it is when you paste it, with every input at its default.

Home

Formulas on this screen

Set the same ones in Studio to try it the same way; there, each Notify shows its event in a banner, which this preview leaves out so nothing covers the component. The instance names are the ones Studio gives the first copy on a screen.

  • lcsNavShell_1.ScreenWidth = Parent.Width

  • lcsNavShell_1.ScreenHeight = Parent.Height

  • lcsNavShell_1.X = lcsNavShell_1.ShellX

  • lcsNavShell_1.Y = lcsNavShell_1.ShellY

  • lcsNavShell_1.Width = lcsNavShell_1.ShellWidth

  • lcsNavShell_1.Height = lcsNavShell_1.ShellHeight

  • Container1.X = lcsNavShell_1.ContentX

  • Container1.Y = lcsNavShell_1.ContentY

  • Container1.Width = lcsNavShell_1.ContentWidth

  • Container1.Height = lcsNavShell_1.ContentHeight

  • Label1.Text = LookUp(lcsNavShell_1.Items, Key = lcsNavShell_1.SelectedKey).Label

  • lcsNavShell_1.OnNavigate = Notify("Go to " & ItemKey)

  • lcsNavShell_1.OnToggle = Notify(If(Collapsed, "Menu collapsed", "Menu expanded"))

  • lcsNavShell_1.OnThemeChange = Notify("Theme: " & NewTheme)

  • lcsNavShell_1.OnUserSelect = Notify("Open profile")

  • Screen1.Fill = If(lcsNavShell_1.CurrentTheme = "Dark", RGBA(27, 27, 27, 1), RGBA(255, 255, 255, 1))

A web replica that behaves as the component does in Power Apps. In Studio it uses Microsoft's controls, which can look slightly different.

Add it in five steps

  1. In Power Apps Studio, open Settings > Updates and check that Modern controls and themes and Enhanced component properties are on.
  2. Open the Components tab in the tree view and select New component.
  3. Select an empty part of Studio, so the new component isn't selected.
  4. Copy the YAML on this page and press Ctrl+V. lcsNavShell appears with all its properties.
  5. On a screen, insert it from Insert > Custom > lcsNavShell.

What it needs

  • No premium licence: standard controls, no connectors
  • Modern controls and themes: on
  • Enhanced component properties: on
  • Tested in Power Apps Studio 3.26094.9 on October 11, 2026
  • Version 0.2.0

Properties (43)

Read from the component's own YAML, so they always match what you paste.

Inputs
PropertyKindTypeDefault
Items

The menu, in order: Key (your own id for the item), Label, Icon (a Fluent icon name, such as Home) and Badge (text such as 3, or blank).

InputTableTable( {Key: "home", Label: "Home", Icon: "Home", Badge: ""}, {Key: "orders", Label: "Orders", Icon: "Cart", Badge: "3"}, {Key: "customers", Label: "Customers", Icon: "People", Badge: ""}, {Key: "reports", Label: "Reports", Icon: "Document", Badge: ""}, {Key: "settings", Label: "Settings", Icon: "Settings", Badge: ""} )
Title

Your app's name, at the top of the side menu.

InputText"My app"
CurrentKey

The Key of the screen the user is on, from your app, so the menu marks it. Leave it blank and the menu marks the item last selected.

InputText""
HiddenKeys

Keys of items to hide, separated by commas, such as for a role.

InputText""
DisabledKeys

Keys of items to show but not allow, separated by commas.

InputText""
StartCollapsed

Starts the side menu collapsed to its icons.

InputBooleanfalse

Guide

Use lcsNavShell as the main menu of an app with several screens. Building one by hand means a gallery per screen size, a variable for the collapse state and the same formulas copied onto every screen. This component gives you:

  • One table for the menu. Each item has a Key (your own id), a Label, an Icon (a Fluent icon name, such as Home) and a Badge (text such as 3, or blank).
  • A side menu on wide screens with your app's name and a button that collapses it to icons. Collapsed, each icon shows its name on hover, and its badge as a dot with the count.
  • A bottom bar on phones, with an icon and a short label per item. It switches by itself below the width you choose (BottomBarBelow, 640 by default).
  • The current screen, from your app. Set CurrentKey and the menu marks that item, with a bar and a filled icon.
  • Items for some people only: hide items by key (HiddenKeys), or show them but don't allow them (DisabledKeys).
  • Who is signed in, at the bottom of the side menu: their picture (or initials), name and a line such as their role. Selecting it runs OnUserSelect().
  • Motion that feels finished: the current item's highlight eases in and its bar grows when the screen changes, and a new badge pulses twice to catch the eye. Turn it off with Motion; it never plays for people who've asked their device for reduced motion.
  • A light and dark switch beside it: a sun that turns into a moon, animated (it doesn't move for people who've asked for reduced motion). It switches the menu and runs OnThemeChange(NewTheme), so your app can follow.
  • Outputs that place it and your content, so the content moves over when the menu collapses or becomes a bottom bar.
  • Two looks: Standard, a plain side panel, and Premium, a floating card with a soft shadow, your app's mark (its first letter on your colour), a solid pill for the current item and the person signed in on their own card.
  • Your AccentColor, and a Dark theme. Hover and press shades follow the menu's own theme, so they show in dark mode too.

Did it work for you?

No ratings yet.Nobody has said it worked in their app yet.

Sign in to rate it or to say it worked in your app.

Comments

  1. LowCodeStacks teamPinned

    Welcome! Our favourite tip: each screen has its own copy of the menu, so keep it the same everywhere with one global table (gblMenu) in App.Formulas, and set Items to it.

    How many screens does your app have, and does the bottom bar on phones fit them? Ask here about roles, badges or themes.

Sign in to comment or reply. Comments show under a display name you choose, never your email.