DJC design system

Dashboard components

The full dashboard set, same brand and colour tokens as the mobile components. Control ladder: button 24 / 28 / 32px, fields 28 / 32px.

Alignment check

Button, Input and Select on one row — every top and bottom edge should land on the same line.

Buttons

Sizes

32 default · 28 sm · 24 xs

Variants

Only the primary action carries brand fill

Icon buttons

Square, matching the height ladder

States

Form controls

Input

32px, 14px text

Textarea

Date picker

A field on the 32px ladder, not a native date input — the OS picker brings its own type ramp and its own locale format.

Calendar

Always six weeks, so the grid never changes height between months

August 2026
MTWTFSS

Checkbox / Radio / Switch

Field

Label, helper, error — 6px row gap

As written on the ID card brought to the visit.

Slider

Always paired with a numeric readout

45 min

Tabs

One indicator that slides — and the line rule is the same colour as its label

Overlays

Alert dialog

No X, no outside-click dismiss. Only where undo is impossible — anything reversible gets an undo toast instead.

Dialog

Dismissible. For a task with a way out — the destructive confirm above is a different component.

Sheet

Popover / Tooltip

Dropdown menu

28px rows, one step below the trigger

K

Data display

Stat

2× size jump from label to value

Bookings today

24

Up: +3 from yesterday

Beds in use

2/3

Down: 1 tersedia

Badge / Avatar

CalledConfirmedWaiting listCancelledDoneWaitingOn a tintALBN

Progress / Skeleton

Capacity today
x

Empty state

Names the situation and offers one way out

No bookings today

New bookings appear here once they are confirmed.

Table

ServiceStatusCost
Amanda LestariDermatology consultConfirmedRp 450.000
Bagus NugrohoFacial acne treatmentConfirmedRp 1.250.000
Citra HalimChemical peelingWaiting listRp 980.000

Feedback and navigation

Alert

Every tone ships an icon, not just a tint

Information:

Pengingat otomatis aktif

Sent at 19.00 the day before.
Success:

Slot tersedia

Warning:

3 patients have not received a reminder

Breadcrumb

Last crumb is not a link

Accordion

Combobox

Select with a filter. Reach for it past ~10 options, or when the user knows the name but not the position.

Context menu

Right-click a row. Always a duplicate of something reachable another way — a menu with no visible affordance cannot be the only route to an action.

Right-click here

Scroll area

Overlay scrollbar that appears on scroll. For panels inside a fixed-height box — never for the page itself.

Chart

Series colour defaults to the --chart-1..5 ramp by position, so the lazy path and the token-correct path are the same path.

Sidebar

240px expanded, 48px rail. Toggle it — rows keep their centre, labels give way to tooltips, group headings become a hairline.

Content pane