Skip to the page
Nitti Design System

Components

The components (shadcn, on Base UI primitives) live in @nitti-ai/design-system/components. Each example renders once per brand from the same code.

Buttons

Nitti Intelligence
Polyther

Badges & status

Nitti Intelligence
DefaultSecondaryOutlineAgainstAgreePendingDraft
Polyther
DefaultSecondaryOutlineAgainstAgreePendingDraft

Forms

Nitti Intelligence
Polyther

Choices & ranges

Nitti Intelligence
x
Polyther
x

Cards

Nitti Intelligence
Responses: the grid permit inquiry
42 organisations responded · deadline passed
Closed
Agree27
Against9
x
Polyther
Responses: the grid permit inquiry
42 organisations responded · deadline passed
Closed
Agree27
Against9
x

Alerts

Nitti Intelligence
Polyther

Tabs

Nitti Intelligence
Most respondents support the proposal but question its timeline.
Polyther
Most respondents support the proposal but question its timeline.

Tables

Nitti Intelligence
OrganisationStanceSubmitted
NorrlandskraftAgree2026-09-14
Kommunförbundet NorrAgainst2026-09-18
NaturvårdsringenAgree2026-09-21
Polyther
OrganisationStanceSubmitted
NorrlandskraftAgree2026-09-14
Kommunförbundet NorrAgainst2026-09-18
NaturvårdsringenAgree2026-09-21

Empty, loading & identity

Nitti Intelligence
No documents yet
VSJAEK

Press ⌘ K to search

Polyther
No documents yet
VSJAEK

Press ⌘ K to search

Lists of things

Item is one thing in a list as a row: what stands for it, its name, a line about it, and what can be done with it at the end. On the page each row is a card that leads on; inside a surface the rows are bare, with a hairline where the list is long. A list in a panel scrolls in a ScrollArea, under the system's own thin scrollbar. Rows that are sorted or filtered are a DataTable instead.

Nitti Intelligence
Polyther

Searching a list

Command is a list that is searched by typing and walked with the arrow keys. As a picker it holds more options than a menu can (a project to move something to, the values of a filter), with a check on what is chosen. As a palette, in a dialog, it goes to a place or runs an action by name.

Nitti Intelligence
Polyther

Dates

Calendar picks a day or a range. A day is a round button; the chosen one is filled, a range is its two ends filled with the days between on a band, and today sits on the quiet fill. It has no surface of its own: it goes in a Popover or on a Card. The week starts on Monday.

Nitti Intelligence
September 2026
Polyther
September 2026

Split button

ButtonGroup joins buttons that are one control into one pill: the thing itself, and beside it a chevron for the other ways of doing it. The parts are told apart by a hairline of the page between them, not an outline. For choosing one of several, use a ToggleGroup.

Nitti Intelligence
Page 3 of 12
Polyther
Page 3 of 12

Confirming

AlertDialog asks before something that cannot be taken back. It is the Dialog's surface without a close button, and a press outside does not dismiss it. The title is the question in the words of the thing, the answers say what each does, and the dialog stays open while a slow action runs. For anything that can be undone, do it and offer Undo in a toast.

Toasts

A toast says what just happened and leaves by itself. It is always the popover surface; what kind of news it is shows in its icon alone. One line, a second when there is something to add, at most one action. Use it to confirm what the person just did, with Undo where it can be taken back. An error the person has to act on is said where the problem is, not in a toast.

Overlays

Dialogs, menus, select popups and tooltips render in a portal on the page root, so they follow the product chosen at the top of the page rather than the panel they open from.