Skip to content
Barua UI v0.2
Patterns

Productivity

App-shell chrome and work surfaces — dashboards, kanban boards, calendars and panels. Everything here composes from the same cards, lists and glass chrome as the rest of the system, so a whole workspace re-tints from a single accent token. The examples follow one fictional product: the Sema dashboard, a call-center console.

Workspace Shell

.b-workspace is a full-height CSS grid with four named areas: topbar spanning the top, then sidebar / main / inspector below. Children slot in by class — a .b-topnav takes the topbar, a .b-sidebar (or .b-rail) takes the sidebar, .b-workspace__main is the one scrolling work surface, and an optional .b-inspector docks on the trailing edge. Drop the inspector and main simply stretches. The shell defaults to 100dvh; the demo constrains it to a miniature.

An optional .b-statusbar as a direct child pins to a statusbar slot along the bottom — part of the fixed chrome, never part of the scroll.

Sema Live AH
Calls today 214 ▲ 9%

The inspector width is a variable API: --b-inspector-w (default 19rem) — the demo narrows it to fit the miniature.

Keep one primary work surface per window. .b-workspace__main is where the work happens; the sidebar and inspector support it — they never compete with it.
Don't nest scrollbars more than two deep (window → main, or main → one panel). A scrolling panel inside a scrolling main inside a scrolling page is seasickness.

Dashboard

.b-dashboard is a 12-column grid. Cards claim width with one of .b-span-2, .b-span-3, .b-span-4, .b-span-5, .b-span-6, .b-span-7, .b-span-8, .b-span-9, .b-span-10, .b-span-11 or .b-span-12 from 768px up, and stack to a single column below. Spans in one row should total twelve — 5 + 4 + 3 reads as well as 4 + 4 + 4, and a row that overflows wraps a card onto its own line. Compose it from .b-card + .b-stat for KPIs and the CSS charts from Data Visualization for trends.

Calls handled 4,182 ▲ 12% vs last week
Tickets resolved 318 ▲ 6% vs last week
Avg. handle time 3m 42s ▼ 21s over target
Calls per day
Activity
  • AH
    Asha resolved #4821
    Billing escalation
    2m
  • BO
    Baraka deployed USSD v3
    Staging
    18m
  • JK
    Joseph pushed 240 leads
    Nane Nane campaign
    1h

Command Center

A search-first hero for the top of a workspace: .b-command-center centers a big .b-input-group (capped at 34rem) with a row of quick-action .b-chips underneath. It answers "where do I start?" before the user has picked a surface.

Good morning, Asha

Search across calls, tickets and campaigns — or jump straight in.

Kanban Board

.b-kanban is a horizontally scrolling row of .b-kanban-col columns, each with a __header (title + __count) and a __list of task cards. During drag, mark the grabbed card .is-dragging and the hovered column .is-dropover — shown frozen mid-drag below, with a card leaving "In Progress" for "Done".

Backlog 3
  • Wire USSD flow
    USSD Sep 2 AH
  • Localise IVR prompts
    Voice Sep 5 BO
  • Draft agent onboarding doc
    Docs Sep 9 JK
In Progress 2
  • Fix webhook retries
    Bug Aug 28 JK
  • Instrument call analytics
    Data Aug 30 AH
Done 2
  • Ship agent console v1
    Release Aug 21 BO
  • Enable call recording
    Voice Aug 18 AH
Accessibility. Each column's __list is a real <ul> with cards as <li>, so screen readers announce "list, 3 items" per column. Pointer drag must have a keyboard alternative — a "Move to…" action menu on every card or +arrow shortcuts — and moves should be announced through a live region ("Fix webhook retries moved to Done, position 1 of 3").

Task & Task List

.b-task is the draggable unit of work: a __title plus a __meta row of badge, due date and an avatar that auto-shrinks and pushes to the trailing edge. It lifts on hover and tilts while .is-dragging.

Wire USSD flow
USSD Sep 2 AH
Fix webhook retries
Bug Aug 28 JK

Task list

For dense flat lists, .b-task-list stacks .b-task-rows: checkbox, __title, __due. Mark finished rows .is-done and late dates .is-overdue.

Wire USSD flow Sep 2
Fix webhook retries Aug 20
QA Swahili voice prompts Sep 4
Ship agent console v1 Aug 21

Calendar View

.b-calview is a 7-column month grid: one __head cell per weekday, then a __cell per day holding a __date and stacked .b-event pills (--green, --orange, --purple recolor them). .is-today fills the date disc with accent; .is-other-month dims spillover days. Two weeks are enough to show the pattern — a real month just repeats the same cells.

Mon
Tue
Wed
Thu
Fri
Sat
Sun
24 Standup
25 USSD demo
26 Sprint review 1:1 Asha
27
28 Campaign launch
29
30
31 Retro
1
2 Board prep
3
4
5
6

Gantt View

.b-gantt pairs a __label column with __row tracks. Each .b-gantt__bar is placed with two variables — --start and --len — and an inner <i> fills to --done for progress. Recolor per bar with --b-chart-color. The background grid divides into --b-gantt-units columns (default 12) — set it on the container to match your timescale.

Wire USSD flow
IVR prompts
Agent console
Campaign launch

Activity Panel

There is no dedicated activity component — compose an inspector-style card from .b-card and the Content page's .b-timeline: time, title, body per event, with .is-complete / .is-active dots marking progress.

Activity
Today
  1. 09:14
    Ticket #4821 resolved
    Asha closed the billing escalation after a callback.
  2. 11:02
    USSD flow v3 deployed
    Baraka pushed the new menu tree to staging.
  3. 13:40
    Campaign queued
    Nane Nane follow-ups scheduled for 15:00.

Inspector & Properties Panel

.b-inspector is the trailing panel of the workspace shell: a sticky __header with a close button, then stacked __sections each led by an <h6>. Inside, .b-props lays out label-control rows (__key at a fixed 6rem; inputs and selects auto-shrink to the small control height). Shown standalone here — inside a shell it docks with only a hairline start border.

Accessibility. Panels are landmarks: render the inspector as <aside aria-label="Inspector"> and the work surface as <main> so screen-reader users can jump between them. Give every __section a real heading (the <h6> here), label each control with a <label for>, and give the icon-only close button an aria-label.

Detail View & Master-Detail

.b-master-detail splits a __list (a .b-list of interactive rows, one .is-selected) from a __detail pane. Below 768px the panes collapse to one at a time: the list shows by default, and toggling .is-detail-open on the container swaps in the detail — pair it with a back button in the detail header.

  • AH
    #4821 — Billing escalation
    Resolved · Asha
    2h
  • BO
    #4832 — USSD menu loops
    Open · Baraka
    35m
  • JK
    #4835 — Recording missing
    Open · Joseph
    12m

#4832 — USSD menu loops

Caller reports the airtime menu returns to the root after option 3. Reproduced on the staging shortcode; likely a session-state regression in flow v3.

Status
Open
Assignee
Baraka O.
Due
Aug 28

Split Pane

Resizable side-by-side panels are covered in Layout.b-split + .b-panel with a .b-resize-handle between them, the leading panel made draggable via .b-resizable.

Queue
Transcript

Dock

A macOS-style app switcher. In production the glass .b-dock__tray sits inside .b-dock, which fixes it to the bottom of the viewport — shown statically here. Items magnify and lift on hover (scale 1.28 with a bounce ease) and .is-active draws the running-app dot.

Toolbar

The toolbar family lives in Actions; in a workspace it floats over the board as .b-toolbar--glass with the view's bulk actions at the trailing end.

App Grid

The iOS home screen: squircle icons with their names beneath, in an auto-filling grid. .is-soon dims an unreleased tile; __hint carries a quiet second line.

Ornament

visionOS's ornament, translated: a floating glass control cluster hanging half-off a panel's edge. Wrap the panel in .b-ornament-host; the ornament names its edge — --bottom, --top, --start, --end.

Q3 research.pdf
Page 4 of 18

Status Bar

.b-statusbar is the thin strip along the bottom of a shell: tabular-numeral __item entries with a hairline top border. Pair it with a .b-status dot for connection state and a .b-spacer to split leading from trailing items.

main Synced Ln 42, Col 7 UTF-8

Control Center

The iOS-style glass tile grid — .b-cc — for quick settings, connectivity, and media. Tiles span the 4-column grid (--2x2, --2x1, --4x1, --round); toggle pills flip with .b-cc__icon.is-on, and the chunky __range sliders hide a real <input type="range"> for keyboard and screen-reader access. Best floated over wallpaper-grade color.

Wi-Fi
Ghala
Bluetooth
On
AirDrop
Everyone
Not Playing
Do Not Disturb
On
Display
Sound
Accessibility. Every tile control is a real <button> with aria-pressed state and a label; the sliders overlay an invisible native <input type="range">, so keyboard arrows and VoiceOver work exactly like the system Control Center.

Liquid Glass Objects

Decorative-grade glass primitives in the Apple Developer "liquid" style — a refractive .b-lens button, a .b-liquid-toggle with a colored core inside a glass capsule, and a .b-liquid-bar gradient slider with a glass cap. Drawn entirely in CSS: layered radial highlights, inset rims, and backdrop blur.

Barua glass has three tiers. Tier 1 — blur, tint and specular edges — works in every modern browser. Tier 2 is real refraction: on Chromium, barua.js injects an SVG displacement-map filter (#b-refract) and adds .b-refract to <html>, so these objects optically bend whatever sits behind them through backdrop-filter: url() — put one over strong color and the backdrop visibly warps at the rim. Safari and Firefox keep Tier 1 automatically. Tier 3 (WebGL) is deliberately not shipped; Tier 2 covers the optics without a render pipeline.