Orbex Sonar-DB Design system , home

All components

  • Button

    The action a screen or a card exists for, in four weights and two sizes.

    Native HTML · 1.8 KB

  • Icon button

    A round button that shows only an icon, with a name for screen readers.

    Native HTML · 1.5 KB

  • Badge

    A small count or dot on a navigation item, an icon button or a tab.

    Native HTML · 1.1 KB

  • Status

    The state of an order, a delivery or an invoice, as a dot or a chip.

    Native HTML · 1.1 KB

  • Switch

    Turns a setting on or off at once. It works in forms and without JavaScript.

    Native HTML · 1.7 KB

  • Checkbox

    A choice that is confirmed later, alone or in a list where all can be selected at once.

    Native HTML · 1.8 KB

  • Segmented control

    A choice of one among a few options, shown side by side.

    Native HTML · 1.9 KB

  • Text field and select

    Text fields and selects, each with its label, help and error.

    Native HTML · 2.2 KB

  • Notice

    A message inside the page that stays until the situation changes.

    Native HTML · 1.3 KB

  • Toast

    Short feedback on something that just happened, with an undo when it helps.

    Base UI · 2.4 KB

  • Menu

    A list of actions or choices that opens from a button.

    Base UI · 2.0 KB

  • Tooltip

    A short label shown on hover and focus, mostly for icon buttons.

    Base UI · 1.2 KB

  • Dialog

    A window that asks for a decision, or a side panel or a bottom sheet.

    Native HTML · 9.0 KB

  • Scroll area

    Content that scrolls inside a fixed height, with a thin indicator instead of a scrollbar.

    Native HTML · 2.0 KB

  • Card

    The unit of the overview: a title, a summary figure, content and a way to the full page.

    Native HTML · 4.8 KB with Card link, Card scroll, Unit menu

  • Card link

    The link at the foot of a card to the page it summarizes.

    Native HTML · 4.8 KB with Card, Card scroll, Unit menu

  • Card scroll

    The list in a card that scrolls first when the card’s size leaves no room.

    Native HTML · 4.8 KB with Card, Card link, Unit menu

  • Unit menu

    The unit a card’s figures are shown in, as a pill that opens a menu.

    Native HTML · 4.8 KB with Card, Card link, Card scroll

  • Tick bar

    A share of a whole as a row of fine ticks.

    Native HTML · 1.3 KB

  • Ring chart

    Parts of a whole as a ring of ticks.

    Native HTML · 1.4 KB

  • Trend chart

    A daily series as a line, with its running total.

    Native HTML · 4.2 KB

  • Chart legend

    The key to a chart’s colors.

    Native HTML · 0.9 KB

  • Search field

    A search box whose results open under it as people type.

    Base UI · 4.2 KB with Search result

  • Search result

    One row of results: an icon, a title, a line under it and a status.

    Base UI · 4.2 KB with Search field

How they come together in the overview, its cards, charts and search, is in Patterns.

How they are built

  • Native HTML first. Buttons, switches, checkboxes, radios, fields, selects and dialogs are the browser’s own elements. They work before any script loads, in forms, with every assistive technology, and they cost almost nothing to ship.
  • Base UI for complex behavior. Menus and tooltips need positioning, focus management and typeahead the platform does not offer everywhere yet. Base UI, maintained full-time by the MUI team, provides that behavior unstyled.
  • Plain CSS on tokens. Each component has one stylesheet in the sonar.components cascade layer. Variants are data attributes; values are tokens only. No CSS-in-JS, no utility framework, and an app’s own styles always win without !important.
  • One entry point per component. An app imports @orbex/sonar-components/button and its stylesheet and loads nothing else. All 24 weigh 47.8 KB gzipped together, script and styles.

Install

Installing the packages, setting the cascade layers and importing the tokens are on one page: Installation. Each component page ends with its own import and its API; the props of every component are also published as data at /api.json.

Quality gates

  • Types: strict TypeScript, and the declarations ship with the package.
  • Behavior: every component is tested in a DOM with Testing Library: roles, names, keyboard and state.
  • Accessibility: axe runs on every rendered component in the tests; contrast is enforced on the tokens, where it is decided.
  • Weight: the build fails when a component’s script and styles pass 3 KB gzipped. Two entry points have a larger budget, named in the build with its reason: the trend chart and the card (Card, Card link, Card scroll and Unit menu), at 4 KB.
  • Versions: tokens and components are released together with Changesets, so one version names one consistent system.