Skip to content
Hops Design
Theme
Hospitality operations, simplified

One system.
Every Hops product.

A framework-agnostic component library that gives Hops Inventory, Finance, Connect and the tools around them one clear visual language.

50+ components & recipes 3 product themes 0 JS dependencies
Start here

Start with core.
Add recipes deliberately.

Choose the core-only or full stylesheet, include it in a Hops application, and add the hops-theme scope to the application shell.

Terminal
$ bun run build:css
app.html
<link rel="stylesheet" href="/styles/hops.css" />

Designed for gradual adoption

Every public class uses the hops- prefix, so teams can introduce the library alongside existing Tailwind or legacy CSS.

Foundations

Colour that knows its job.

Warm, calm neutrals keep dense operational interfaces easy to scan. Product accents carry meaning without taking over the page.

Charcoal#24282A
Warm stone#EEECE8
Paper#FCFBFA
Hops green#00AF6E
Fresh lime#D8FFB0
Finance purple#8264F8
Typography

Human at the top.
Precise underneath.

Platypi brings an editorial, hospitality-led voice to key moments. Plus Jakarta Sans keeps everyday product work direct and legible.

Heading / Platypi

Know what your business is actually doing.

Interface / Plus Jakarta Sans

Variance is information. Review the gap, understand the cause, and take the right next step.

Aa400 · 500 · 600 · 700 · 800
Product themes

One family, three jobs.

Switch one attribute to carry the right product accent. Component structure and behaviour stay identical.

Inventory
default
Finance
finance
Connect
connect
Components

Buttons

Actions with clear hierarchy, useful sizes, complete states and an accessible focus treatment.

.hops-btn .hops-btn--primary
Status

Badges

Compact labels for state, category and small pieces of operational context.

DraftHops AIMatchedNeeds reviewOverdue
.hops-badge5 states
Surfaces

Cards & stats

Quiet containers for operational summaries, decisions and drill-down entry points.

Actual GP

72.4%

↑ 3.2% vs last week

Invoice value

£8,420

18 ready to post

Connected systems

12

All healthy

Stock take #1842

The Garden Room · Today
Complete

All 486 items have been counted. Three variances need a manager's note.

ARRF+2

Invoice review

Check extracted lines before anything reaches the ledger.

Input

Forms

Familiar controls with generous targets, legible help text and unmissable error states.

Shown on purchase orders and deliveries.

This reference already exists.

.hops-field .hops-inputNative HTML controls
Feedback

Alerts

Operational feedback should say what happened, why it matters and what to do next.

i

Connection scheduled

Lightspeed will begin syncing after tonight's close.

Invoice matched

The invoice, delivery and purchase order agree.

!

Three lines need review

Unit prices differ from the current supplier catalogue.

×

Upload failed

The file could not be read. Try exporting it as CSV.

Data display

Tables & progress

Dense enough for real work, calm enough to read at the end of a long service.

SupplierReferenceValueStatusOwner
Fresh DirectINV-10291£1,842.90MatchedAR
BrakesBRK-80342£986.44ReviewRF
Liberty WinesLW-44208£2,314.00DraftJM
Catalogue enrichment74%
1,248 of 1,682 products complete
Layers & loading

Overlays & loading

Use overlays for focused decisions, and loading states to preserve the shape of incoming content.

About this variance
.hops-dialog .hops-skeletonReduced-motion aware
Governance

Shared twice.
Understood once.

A pattern enters core only after it appears in at least two products and carries the same meaning in both. Product recipes can move faster without making every local decision a permanent framework promise.

01

Observe

Find the same user need in two or more maintained Hops products.

02

Align

Confirm the states, language and accessibility contract mean the same thing.

03

Promote

Move only the stable visual and semantic contract into prefixed core CSS.

The promotion rule

Promote something into core after it appears in at least two products and can share the same semantics—not merely because it exists somewhere.

Phase 1 · Core

Cross-product essentials

The structures repeatedly rebuilt by operational products: application chrome, anchored actions, selection, upload, feedback and dense data work.

Menu & popover.hops-menu
Toast & banner.hops-toast
!Working as The Garden Room

Catalogue imported

142 products are ready to review.

Combobox & command.hops-combobox
  • FDFresh Direct
  • FFFresh Fields
Upload & file row.hops-dropzone
PDFINV-10291.pdf1.8 MB · Uploaded
Accordion & empty state.hops-disclosure
Why does this line need review?
The invoice unit price is 8% above the latest supplier catalogue.
How is variance calculated?
It compares expected and actual usage for the period.

No other matches

Try a supplier name or invoice reference.

Advanced table & pagination.hops-table-toolbar .hops-pagination
ReferenceValueStatus
Fresh DirectINV-10291£1,842.90Matched
BrakesBRK-80342£986.44Review
Phase 2 · Core & recipes

Operational workflows

Reviewing documents, choosing dates, moving through processes, reading history and understanding system state.

Document preview.hops-preview
INV-10291.pdf
1 / 2
FRESH DIRECT

Invoice

INV-10291 · 22 July 2026

Garden Room Hospitality

Food supplies£1,842.90
Calendar & date picker.hops-calendar
July 2026
Stepper & lifecycle.hops-stepper
  1. Upload
  2. Extract
  3. 3Review
  4. 4Post
DraftQueuedRunningReviewCompleteFailedOffline
Activity & audit.hops-timeline
  1. Invoice matched

    Alex accepted the suggested purchase order.

  2. Extraction completed

    18 lines found with 98% confidence.

    source: email · model: invoice-v4
  3. Document uploaded

Chart frame.hops-chart

Actual GP by week

Garden Room · Last 6 weeks

+3.2%
Actual and forecast gross profit by week
WeekTypeGross profit
1Actual52%
2Actual65%
3Actual58%
4Forecast74%
5Forecast70%
6Forecast82%
  • Actual
  • Forecast
Drawer, range & controls.hops-drawer .hops-range

Use a drawer when context should remain visible behind a focused task.

Phase 3 · Recipes

Compositions, not constraints

Demand-backed starting points that share core primitives while leaving domain behaviour with the product that understands it.

Auth & accountFeedback servicePermissionsWorkspace treeTechnical workspaceChat & CopilotConnectivityCatalogue & basketMarketingKanban & matrix
Auth, account & OTP.hops-auth-shell .hops-otp
Welcome back

Enter your PIN

Chat & Copilot.hops-chat
Hops CopilotReady
H
Gross profit improved by 3.2%. The biggest change was lower produce waste at The Garden Room.
Show me the three biggest variances.
Technical workspace.hops-workspace .hops-code-surface
1query VenueSummary {2  venue(id: "garden-room") {3    grossProfit4  }5}
// 200 OK · 84 ms
{
  "grossProfit": 72.4
}
Permissions.hops-permissions
Invoices
Post invoicesSend matched invoices to the ledgerInherited
Delete documentsPermanently remove source filesExplicit
Feedback & connectivity.hops-feedback .hops-connectivity
Working offline3 pending

How was this page?

Your feedback helps us improve Hops.

Catalogue & basket.hops-catalog-layout
Heritage tomatoes
Fresh Direct · 2 kg case
£8.40
House white
Liberty Wines · 6 × 75 cl
£42.00
Operations board.hops-board
To review 2
Fresh Direct

3 price variances

Today
Liberty Wines

Missing PO

Matched 8
Brakes

Ready to post

Marketing composition.hops-marketing-hero
Hospitality operations

See the whole business.
Act on what matters.

Inventory, finance and connected systems in one calm operational view.

Meet Hops
i

Kept outside core on purpose

PDF rendering, chart engines, editor runtimes, drag-and-drop, chat streaming and framework-specific keyboard state remain adapter responsibilities. Hops Design supplies their shared visual and semantic surface.

Confirm action

Post 18 invoices?

The matched invoices will be sent to Xero. You can still view them in the audit trail.

Invoice review

Fresh Direct · INV-10291

!

Three price variances

Review the extracted values before accepting the match.