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

components

Input

One height, one radius, one focus ring — everywhere. Error uses `aria-invalid` on the element itself; never hard-code a red border.

Read the full spec

Default

A bare input. Placeholder text is a hint, not a label — always pair with a visible `<Label>` in production.

tsx
import { Input } from "@wolf/design-system";

<Input placeholder="you@wolf.co" />

Types

Inherits every native type — `email`, `password`, `number`, `tel`, `url`, `date`, `file`.

tsx
<Input type="email" placeholder="you@wolf.co" />
<Input type="password" placeholder="••••••••" />
<Input type="number" placeholder="42" />
<Input type="file" />

States

Default, focus, disabled, read-only, and error. Focus is keyboard-first — tab into the first field to see the ring.

tsx
<Input placeholder="Default" />
<Input placeholder="Disabled" disabled />
<Input defaultValue="Read-only value" readOnly />
<Input aria-invalid defaultValue="wrong@" />

With leading adornment

No built-in adornment slot — compose with a wrapper and absolute-positioned icon to keep the focus ring on the input itself.

tsx
<div className="relative">
  <Search className="absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground" aria-hidden />
  <Input className="pl-9" placeholder="Search reports…" />
</div>
Previous — ComponentsButton
Next — ComponentsCard