jansuchanek / nadmin-layout
Configurable admin layout shell for Nette β sidebar, topbar, locale switcher, datagrid JS
v1.1.0
2026-03-20 14:34 UTC
Requires
- php: >=8.2
- latte/latte: ^3.1
- nette/di: ^3.2
README
Configurable admin UI shell for Nette Framework β sidebar menu, branding, and locale switcher driven by NEON config.
Features
- π Dynamic Sidebar β Define menu items, sections, icons, and permissions in NEON
- π¨ Branding β Configurable icon and name
- π Locale Switcher β Languages with flags from config
- βοΈ DI Extension β
AdminLayoutConfigvalue object auto-populated
Installation
composer require jansuchanek/nadmin-layout
Configuration
extensions: nadminLayout: NAdminLayout\DI\NAdminLayoutExtension nadminLayout: title: My Admin brand: icon: bi-shop name: MyApp menu: - { section: Navigation } - { label: Dashboard, icon: bi-grid, link: ":Admin:Dashboard:default" } - { label: Products, icon: bi-box-seam, link: ":Admin:Product:default" } - { section: Settings } - { label: Users, icon: bi-people, link: ":Admin:User:default", permission: "user.view" } locales: - { code: cs, flag: "π¨πΏ", label: Δesky } - { code: en, flag: "π¬π§", label: English }
Usage in Latte
{* Brand *} <i class="bi {$adminConfig->getBrandIcon()}"></i> {$adminConfig->getBrandName()} {* Menu *} {foreach $adminConfig->getMenuItems() as $item} {if isset($item['section'])} <div class="nav-section">{$item['section']}</div> {else} <a href="{plink $item['link']}">{$item['label']}</a> {/if} {/foreach} {* Locales *} {foreach $adminConfig->getLocales() as $loc} <a href="{link switchLocale! locale => $loc['code']}">{$loc['flag']} {$loc['label']}</a> {/foreach}
Requirements
- PHP >= 8.2
- Nette DI ^3.2
License
MIT