Hopp til hovedinnhold
Meny

lmfaole.party / designsystem / komponenter / Tom tilstand

  • Forside
  • Turer
  • Økonomi
  • Slides
  • <lm-empty-state> – Tom tilstand / Empty state

    Om komponenten

    Formål

    Fremhevet, sentrert kort som forklarer hvorfor en flate er tom og hva brukeren kan gjøre for å fylle den (f.eks. "Du har ikke importert noen transaksjoner ennå" + en importer-handling), med en tydelig illustrasjon øverst. Rent presentasjons-/layoutansvar - komponenten kjenner ikke domenet, kun hvordan illustrasjon, tittel, beskrivelse og handling arrangeres.

    Egner seg for

    • Onboarding-oppfordringer på en side som ellers ville vært helt tom, med én tydelig neste handling.
    • Førstegangsbruker-flyter der en handling (import, oppsett, registrering) må gjøres før resten av siden gir mening.

    Egner seg ikke for

    • En midlertidig, sentrert plassholdertekst inni et fast panel/rutenett (f.eks. en presentasjonsvisning uten innhold ennå) - det er en annen, mer nøytral "ingenting å vise"-tilstand uten kort-bakgrunn eller handling, og løses bedre med enkel, lokal styling der den faktisk trengs.
    • Feilmeldinger eller valideringsstatus - bruk <lm-inline-message variant="feil"> for det i stedet.

    Bruk

    <script type="module" src="/designsystem/komponenter/innhold/empty-state/empty-state.js"></script>
    <script type="module" src="/designsystem/komponenter/handling/link-button/link-button.js"></script>
    
    <lm-empty-state>
        <lm-ikon slot="illustrasjon" navn="kvittering"></lm-ikon>
        <h2 slot="tittel">Velkommen!</h2>
        <p>Du har ikke importert noen transaksjoner ennå - start med å laste opp en CSV-eksport fra nettbanken din.</p>
        <lm-link-button slot="handling"><a href="/okonomi/forbruk/importer/index.html">Importer transaksjoner</a></lm-link-button>
    </lm-empty-state>

    Prøv selv

    Rediger koden under - resultatet oppdateres live.

    Slots

    Slot Beskrivelse
    illustrasjonValgfritt ikon/illustrasjon øverst i kortet. Har et standard <lm-ikon navn="eske"> som vises til forbrukeren gir sitt eget <lm-ikon slot="illustrasjon" navn="..."> tilpasset konteksten (f.eks. navn="kvittering" for en import-oppfordring).
    tittelOverskrift, typisk en <h2>/<h3> tilpasset sidens nivå.
    (standard)Kort forklarende tekst, typisk ett <p>-avsnitt, om hvorfor flaten er tom og hva brukeren kan gjøre.
    handlingValgfri handling, typisk en lenke eller knapp, som løser den tomme tilstanden (f.eks. "Importer transaksjoner").

    Parts

    Part Beskrivelse
    flateDen ytre, bakgrunnsfargede kortflaten.
    illustrasjonWrapper rundt den slottede (eller standard) illustrasjonen.
    tittelWrapper rundt den slottede tittelen.
    innholdWrapper rundt standard-slotten (beskrivelsen).
    handlingWrapper rundt den slottede handlingen.

    Styling med ::part()

    Hver part over kan restyles direkte fra et vanlig, ytre stilark - uten å måtte endre selve komponenten eller duplisere den:

    lm-empty-state::part(flate) {
        /* egne stiler for "Den ytre, bakgrunnsfargede kortflaten." */
    }
    
    lm-empty-state::part(illustrasjon) {
        /* egne stiler for "Wrapper rundt den slottede (eller standard) illustrasjonen." */
    }
    
    lm-empty-state::part(tittel) {
        /* egne stiler for "Wrapper rundt den slottede tittelen." */
    }
    
    lm-empty-state::part(innhold) {
        /* egne stiler for "Wrapper rundt standard-slotten (beskrivelsen)." */
    }
    
    lm-empty-state::part(handling) {
        /* egne stiler for "Wrapper rundt den slottede handlingen." */
    }

    Tilgjengelighet

    Setter ingen egne ARIA-roller eller aria-*-attributter; skjermlesere leser det slottede innholdet (overskrift, avsnitt, lenke/knapp) med sin egen, uendrede native semantikk.

    • Standard-illustrasjonen er dekorativ og har ingen etikett (skjules dermed for skjermlesere via <lm-ikon> sin egen tilgjengelighetslogikk); gi et forbrukervalgt illustrasjons-ikon etikett kun hvis det formidler informasjon utover det tittel/beskrivelse allerede sier.
    • Slottet innhold beholder sin egen, native semantikk uendret (overskrift forblir overskrift, lenke forblir lenke).
    • Komponenten legger ikke til noen fokusfelle, live-region eller egen tastaturlogikk.

    Detaljer

    • Erstatter den tidligere prosjektspesifikke CSS-klassen .onboarding-kort i okonomi/styles.css.
    • Illustrasjonen har et standard <lm-ikon navn="eske"> som <slot>-fallback - vises automatisk til forbrukeren gir sitt eget <lm-ikon slot="illustrasjon">, uten at komponenten trenger egen JS-logikk for dette.
    • Hele kortet (illustrasjon, tittel, beskrivelse, handling) er sentrert - dette er et bevisst designvalg for onboarding-/oppfordringskort, ikke en generell tekstjustering brukt andre steder i designsystemet.

    Referanser

    Se også:

    Brukes av:

    • okonomi/index.html - onboarding-kortet på Hjem-fanen, vist til brukeren har importert minst én transaksjon.
    • okonomi/formue/index.html - vist til minst én aktiva-/gjeldspost er registrert.

    Avhengigheter: designsystem/komponenter/ikon/ikon/