Community Wolf
Community
APIAboutContact
Book a demo

Community Wolf

Real-time safety intelligence for citizens and the teams who protect them.

Community Tools

  • Public map
  • Namola
  • WhatsApp

Business Tools

  • Access Control
  • Intelligence
  • Safety API
  • Group Agents
  • Patrol Management
  • Roster Management
  • Safety Survey
  • Pricing
  • Pricing calculator

Resources

  • Docs
  • Changelog
  • Design system

Company

  • Community
  • Business
  • API
  • About
  • Contact

Get pilot updates

New features, city launches, and integration partnerships - delivered monthly.

Subscribe to updates

(c) 2026 Community Wolf. All rights reserved.

Privacy PolicyTerms of Service
Wolf design system
Foundations
  • Brand
  • Voice and tone
  • Colour
  • Typography
  • Spacing and layout
  • Radius, elevation and borders
  • Motion
  • Iconography
  • Imagery and photography
  • Data visualisation
  • Accessibility
Patterns
  • App shell
  • Hero sections
  • Empty states
  • Error states
  • Skeletons and loading
  • Forms
  • Tables and data density
  • Confirmation and destructive actions
  • Authentication surfaces
Components
  • Button
  • Input
  • Card
  • Badge
  • Dialog
  • Label
  • Textarea
  • Select
  • Checkbox
  • Radio group
  • Switch
  • Form field
  • Tabs
  • Popover
  • Tooltip
  • Accordion
  • Alert dialog
  • Confirm dialog
  • Toast (Sonner)
  • Skeleton
  • Empty state

foundations

Radius, elevation and borders

Wolf's register is operational, not consumer-cute. Borders define surfaces by default; shadows earn their place only when a surface is actually floating above content.

Read the full spec

Radius scale

Literal values — no calc() derivation. Every rounded element picks one token. Nested corners must be smaller than their parent, never equal or larger.

  • 2pxxsInline tags at 10px text
  • 2pxsmSmall badges, pills
  • 3pxmdDefault input radius
  • 3.2pxlgCanonical — buttons, cards
  • 6pxxlLarger cards, hero media
  • 10px2xlOversized containers
  • 16px3xlPills, avatar fallback
  • 9999pxfullCircular — avatars, toggles
tsx
<div className="rounded-lg border"> { /* 3.2px canonical */ } </div>
<div className="rounded-xl border"> { /* 6px for modals */ } </div>

Shadow scale — reference only

Every step renders on white. Use the legend below to see which steps are allowed at rest and which are reserved for actually-floating surfaces.

  • xs--shadow-xsSubtle lift on tinted backgroundForbidden at rest on static surfaces
  • sm--shadow-smButton at rest, sticky headerAllowed for the use above
  • md--shadow-mdPopover, dropdown, tooltipAllowed for the use above
  • lg--shadow-lgDropdown menu (large lists)Allowed for the use above
  • xl--shadow-xlDialog, modal, alert-dialogAllowed for the use above
  • 2xl--shadow-2xlMarketing hero card — forbidden for WolfForbidden at rest on static surfaces

Sparing-shadow policy

If the surface is definitely clickable, or definitely floating above other content, a shadow earns its place. Otherwise: border only.

Border only

Static informational card

No elevation. The edge is defined by a 1px border on --border. This is the Wolf default.

Avoid — shadow at rest

Static card with shadow

Reads as generic SaaS template. The shadow is decorative — it adds no signal. Replace with a border.

Border weights

One weight per surface. Nested borders are forbidden — if a card is bordered, its internal fields aren't.

  • 0.5pxhairlineFine table row dividers (DPR ≥ 2 only)
  • 1pxdefaultCards, inputs, dividers
  • 2pxemphasisedFocused inputs, active states, selection
  • 3pxboldHeavy UI emphasis — rare

No double borders

When Element A has a border and contains Element B with a border, one of them must be removed. Visual weight stacks badly otherwise.

Correct — field has no border inside card

Midrand North

Wrong — nested borders

Midrand North

Composed — static vs interactive vs floating

Three canonical surface types. The only difference is how they communicate affordance.

Static

Border only

Informational content. Never elevates, even on hover.

Interactive

Lift on hover

Links, navigable cards. Shadow-sm only on hover — never at rest.

Floating

Dialog · shadow-xl

Modals and popovers. Genuine elevation above the page.

Previous — FoundationsSpacing and layout
Next — FoundationsMotion