Split left + split right fullwidth

Version fullwidth avec double sidebar : navigation à gauche, panneau secondaire à droite.

Viewport, max 1920px Double sidebar

Code du template

Structure du layout, avec le slot de contenu sous forme de <%- body %>.

Split left + split right fullwidth Html
<div class="min-h-screen bg-muted/30 lg:h-[100dvh] lg:overflow-hidden" style="--layout-max-width: 1920px;">
  <div class="mx-auto grid min-h-screen w-full max-w-[var(--layout-max-width)] grid-cols-1 lg:grid-cols-[17rem_minmax(0,1fr)_17rem] bg-background shadow-sm lg:h-[100dvh] lg:min-h-0 lg:overflow-hidden">

      <aside class="hidden h-[100dvh] overflow-x-hidden overflow-y-auto border-border bg-muted/20 lg:border-r lg:block">
        <div id="layout-left-side-panel-content" class="flex min-h-full min-w-0 flex-col p-4">
          <div class="border-b border-border pb-4">
            <a href="/" class="font-semibold">Product</a>
            <p class="mt-1 text-sm text-muted-foreground">Workspace navigation</p>
          </div>

          <nav class="flex-1 py-4">
            <%- include('ui/nav', { orientation: 'vertical', items: navItems }) %>
          </nav>

          <div class="border-t border-border pt-4">
            <button class="ui-btn ui-btn-outline ui-btn-color-primary ui-btn-sm w-full">Action</button>
          </div>
        </div>
      </aside>
      <section class="flex min-h-screen min-w-0 flex-col lg:h-[100dvh] lg:min-h-0 lg:overflow-hidden">
        <div class="border-b border-border bg-background/95 p-3 lg:hidden">
          <button id="layout-nav-trigger"
                  data-ui="drawer-trigger"
                  data-target="layout-nav-drawer"
                  class="ui-btn ui-btn-outline ui-btn-color-primary ui-btn-sm"
                  hidden>
            Navigation
          </button>
        </div>

        <main class="min-w-0 flex-1 lg:min-h-0 lg:overflow-y-auto">
          <div class="p-4 sm:p-6 lg:p-8">
            <%- body %>
          </div>
          <footer id="template-footer" class="shrink-0 border-t border-border bg-background/95">
          <div class="flex min-h-14 items-center justify-between gap-4 px-4 text-sm text-muted-foreground sm:px-6">
            <span>Footer</span>
            <a href="/settings">Settings</a>
          </div>
        </footer>
        </main>
      </section>
      <aside class="hidden h-[100dvh] overflow-x-hidden overflow-y-auto border-border bg-muted/20 lg:border-l lg:block">
        <div id="layout-right-side-panel-content" class="flex min-h-full min-w-0 flex-col p-4">
          <div class="border-b border-border pb-4">
            <a href="/" class="font-semibold">Product</a>
            <p class="mt-1 text-sm text-muted-foreground">Secondary panel</p>
          </div>

          <nav class="flex-1 py-4">
            <%- include('ui/nav', { orientation: 'vertical', items: navItems }) %>
          </nav>

          <div class="border-t border-border pt-4">
            <button class="ui-btn ui-btn-outline ui-btn-color-primary ui-btn-sm w-full">Action</button>
          </div>
        </div>
      </aside>
  </div>

  <div id="layout-mobile-side-panel-content" class="flex min-h-full min-w-0 flex-col lg:hidden">
    <div class="flex min-h-0 flex-1 flex-col gap-6">
      <section class="shrink-0">
        <p class="mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground">Navigation gauche</p>
        <%- include('ui/nav', { orientation: 'vertical', items: navItems }) %>
      </section>
      <section class="flex min-h-0 flex-1 flex-col border-t border-border pt-4">
        <p class="mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground">Panneau droit</p>
        <%- include('ui/nav', { class: 'flex-1', orientation: 'vertical', items: navItems }) %>
        <div class="mt-4 space-y-2 border-t border-border pt-4">
          <button class="ui-btn ui-btn-outline ui-btn-color-primary ui-btn-sm w-full">Action secondaire</button>
        </div>
      </section>
    </div>
  </div>

  <%- include('ui/drawer', {
    id:        'layout-nav-drawer',
    title:     'Navigation',
    titleIcon: 'panel-left',
    side:      'left',
    width:     { base: 'calc(100vw - 2rem)', sm: '22rem' },
    responsive: {
      source:     '#layout-mobile-side-panel-content',
      breakpoint: 'lg',
      controls:   '#layout-nav-trigger',
    },
  }) %>
</div>

Navigation gauche

Navigation principale du shell.

Panneau droit

Actions et raccourcis secondaires.