Hoppa till huvudinnehåll

Migrationsguide

Layout från @midas-ds/components och @midas-ds/layout kan användas parallellt — du behöver inte migrera allt på en gång. Ta det i din egen takt.

Vad är nytt?

Den gamla Layout är en monolitisk komponent som konfigureras med en enda stor props-struktur. Det nya paketet är komponentbaserat — du sätter ihop strukturen med JSX istället för dataobjekt.

AspektGammalt (@midas-ds/components)Nytt (@midas-ds/layout)
Menystrukturitems-array med dataobjektNavigation + NavigationLink i JSX
Användarinfouser-prop (name, title)Ditt eget innehåll i HeaderActions
Appnamnapp-prop (name, color)Ditt eget innehåll i Header
RoutingclientSideRouter + clientSideHrefas-prop på NavigationLink
Mobilvariant="external" för navbar-layoutNavbar + Sidebar hanteras automatiskt
SidopanelFinns intePanel + PanelProvider
StateHanteras interntContext-baserat, du styr

Steg för steg

1. Installera det nya paketet

npm install @midas-ds/layout

2. Byt ut import

// Gammalt
import { Layout } from '@midas-ds/components'

// Nytt
import { Layout, LayoutContent, Main, Header, ... } from '@midas-ds/layout'

3. Bygg om strukturen

Gammalt — konfiguration via props:

<Layout
variant='internal'
items={[
{
items: [
{ title: 'Hem', href: '/', icon: House },
],
},
{
title: 'Ansökan',
items: [
{ title: 'Skapa ansökan', href: '/ansökan', icon: Plus },
],
},
]}
title='Min app'
user={{ name: 'Anna Andersson', title: 'Handläggare' }}
app={{ name: 'Min applikation' }}
>
{/* innehåll */}
</Layout>

Nytt — komposition med JSX:

<Layout>
<Header>
<HeaderActions>
<HeaderAction icon={<User />}>Anna Andersson</HeaderAction>
</HeaderActions>
</Header>

<LayoutContent>
<Sidebar title='Min applikation'>
<Navigation>
<NavigationLink href='/' icon={<House />}>Hem</NavigationLink>
<NavigationSection title='Ansökan'>
<NavigationLink href='/ansökan' icon={<Plus />}>Skapa ansökan</NavigationLink>
</NavigationSection>
</Navigation>
</Sidebar>

<Main>
{/* innehåll */}
</Main>
</LayoutContent>

<Navbar>
<ul>
<NavigationLink href='/' icon={<House />}>Hem</NavigationLink>
</ul>
</Navbar>
</Layout>

4. Migrera routing

Gammalt:

<Layout
clientSideRouter={navigate}
clientSideHref={useHref}
...
>

Nytt — använd as-propen på NavigationLink:

import { Link as RouterLink } from 'react-router'

<NavigationLink as={RouterLink} to='/' icon={<House />}>
Hem
</NavigationLink>

5. Ta bort variant="external"

Den externa varianten (navbar längst ned på mobil) hanteras automatiskt av det nya paketet. Lägg till Navbar i din struktur — Sidebar döljer sig automatiskt på mobil.

<Layout>
...
<Sidebar>...</Sidebar> {/* syns bara på desktop */}
<Navbar>...</Navbar> {/* syns bara på mobil */}
</Layout>