# Notification

Komponente des SBB Design Systems Lyne.

- Paket: `@sbb-esta/lyne-elements` (Angular: `@sbb-esta/lyne-angular`)
- Aufbau: ein Element
- Kategorien: Indicator
- Status: Gestaltungsrichtlinien vollständig

## Links

- Seite auf digital.sbb.ch: https://digital.sbb.ch/de/design-system/lyne/components/notification/
- Storybook: https://lyne-elements.app.sbb.ch/?path=/docs/elements-notification--docs
- Angular (`@sbb-esta/lyne-angular`): https://lyne-angular.app.sbb.ch/angular/components/notification/overview (API: https://lyne-angular.app.sbb.ch/angular/components/notification/api)
- Figma: https://www.figma.com/design/mWknI2rC5DJmOgRO61WKai/Lyne-Components?node-id=7491-43
- GitHub: https://github.com/sbb-design-systems/lyne-components/tree/v5.12.0/src/elements/notification

## Elemente

- `sbb-notification`: It displays messages which require a user's attention without interrupting its tasks.

## Verwandte Komponenten

- Ähnlich: [Alert](https://digital.sbb.ch/de/design-system/lyne/components/alert/index.md), [Toast](https://digital.sbb.ch/de/design-system/lyne/components/toast/index.md)

## Übersicht

### Was macht die Komponente?
Eine Notification informiert Nutzende im Inhalt über den Status einer Aktion oder über andere wichtige Hinweise, ohne ihre Aufgabe zu unterbrechen. Es gibt die Typen Info, Note, Success, Warn und Error.

### Wann soll die Komponente eingesetzt werden?
* Um Nutzende im Ablauf über den Status von Aktionen zu informieren, z.B. Erfolg oder Fehler.
* Um auf erforderliche Handlungen oder Änderungen hinzuweisen.
* Für systemweite, sehr wichtige Meldungen ist stattdessen die Alert-Komponente zu verwenden.

### Regeln.
* Die Notification steht oben im Hauptinhalt oder nahe beim betroffenen Element. Die Positionierung ist in der ganzen Applikation einheitlich.
* Der Text ist kurz und klar. Ein Titel ist optional.
* Die Notification verschwindet nicht automatisch. Sie bleibt, bis Nutzende sie schliessen oder das Problem gelöst ist.
* Der Schliessen-Button ist optional. Muss die Meldung unbedingt gelesen werden, wird er weggelassen (`readonly`).
* Neu erscheinende Notifications müssen Screenreadern angekündigt werden (`aria-live="polite"` am Container).

## Implementation (Web Components, Englisch)

The `<sbb-notification>` is a component which purpose is to inform users of updates.
A notification is an element that displays a brief, important message
in a way that attracts the user's attention without interrupting the user's task.

Inline notifications show up in task flows, to notify users of an action status or other information.
They usually appear at the top of the primary content area or close to the item needing attention.

The `<sbb-notification>` is structured in the following way:

- Icon: informs users of the notification type at a glance.
- Title (optional): gives users a quick overview of the notification.
- Close button (optional): closes the notification.
- Message: provides additional detail and/or actionable steps for the user to take.

```html
<sbb-notification>
  <sbb-title level="3">Notification title</sbb-title>
  The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
  <sbb-link href="/">Link one</sbb-link>
  <sbb-link href="/">Link two</sbb-link>
  <sbb-link href="/">Link three</sbb-link>
</sbb-notification>
```

Note that the notification only supports inline links.

### Variants

The `<sbb-notification>` supports the types `info` (default), `note`, `success`, `warn` and `error`, based on the type of the information displayed.

```html
<sbb-notification type="success">...</sbb-notification>

<sbb-notification type="warn">...</sbb-notification>

<sbb-notification type="error">...</sbb-notification>
```

### States

It is possible to display the component in `readonly` state by using the self-named property.
In this case, the close button will not be shown.

```html
<sbb-notification readonly> ... </sbb-notification>
```

### Interactions

Inline notifications do not dismiss automatically.
They persist on the page until the user dismisses them or takes action that resolves the notification.

By default, a close button is displayed to dismiss inline notifications. Including the close button is optional
and should not be included if it is critical for a user to read or interact with the notification by setting the `readonly` property to `true`.

### Style

If the `<sbb-notification>` host needs a margin, in order to properly animate it on open/close,
we suggest using the `--sbb-notification-margin` variable to set it.
For example, use `--sbb-notification-margin: 0 0 var(--sbb-spacing-fixed-4x) 0` to apply a bottom margin.

### Accessibility

In order to announce the notification's content to screen readers as it becomes visible,
consumers **must** use the `aria-live` attribute with the `polite` value on the component's container.
This ensures that users who rely on screen readers are promptly informed of any relevant updates or changes.

```html
<!-- Add here any incoming notification by adding a sbb-notification component. -->
<div id="notification-container" aria-live="polite">
  <sbb-notification type="success">Task successfully completed.</sbb-notification>
</div>
```

### Animation

Set the `animation` property to manage which animations are enabled.
As a base rule, opening animations should be active if a notification arrives after the initial page load.

## API (Web Components, Englisch)

Vollständige API-Tabellen (Attribute, Events, Slots, CSS-Eigenschaften): https://digital.sbb.ch/de/design-system/lyne/components/notification/api.md
