haru interactiveharu interactive

Component package

Every component in DESIGN.md. Buttons through overlays render the shadcn registry components in registry/haru. Resize below 840px for the mobile rules.

Foundations

Colour

Brand tokens plus the preview's surface, text, line and tint mixes.

--haru-plum
#31212e · Text, dark fills
--haru-sakura
#f1b3cc · Accent fills, never text
--haru-mist
#f7f3f6 · Hero, promo
--haru-white
#ffffff · Page
--haru-ui-gray
plum 5% · Cards, rows
--haru-ui-sub
plum 62% · Secondary text
--haru-ui-line
plum 10% · Hairlines
--haru-ui-tint
sakura 30% · Selected, tags

Type

LINE Seed, -0.012em body tracking.

Search heading 34/44Practical software for digital communities.
Hero h1 36/46Practical software for digital communities.
Page title 26/36Practical software for digital communities.
Section h2, modal 22/30Practical software for digital communities.
Dialog, call-out 20/28Practical software for digital communities.
Nav, card title 17/24Practical software for digital communities.
Button, tab 16/22Practical software for digital communities.
Body 15/22Practical software for digital communities.
Label, chip 13/18Practical software for digital communities.
Tag 12/18Practical software for digital communities.

Home blocks

Promo banner + hero + pager

Banner 56px, r20. Hero 1200×360, r20, padding 40/100/40/88, art 400×280 with a 200px mark. Pager 160×4.

Managed game servers are coming in 2026

Practical software for digital communities.

haru interactive develops digital software, gaming infrastructure, and managed server solutions.

Section header

See all

h2 22/30 left, “See all” 16/22 + 18px chevron right. Below: dark strip 48px, r20, then cards 389×139, r20.

Server statusAll systems normal
Game servers
12plansAvailable
Web hosting
4plansAvailable
Bots
27plansAvailable

List rows

389×80, r20, 48px white icon tile r20. Slider arrow: 40px circle, 1px line.

How-to cards

288 wide, image 288×140 r20, label 13 bold joined by |, title 17/24.

Call-out and placeholder

Call-out 1200×112, r20, padding 0 60, art 112×112. Placeholder min 192px.

Need a custom setup?

Tell us what you are running and we will size it for you.

Promotion variant

Mist fill instead of gray.

Coming soon!

Buttons

Button

variant: default | secondary | white | outline. size: default 48px | lg 56px, both r20 like the Menu | icon 40px circle (outline + icon is the slider arrow). Press scales to 0.96.

Selectors

Radio group: pill

<RadioGroup variant="pill">. 38px, padding 8/16, r20, 15/21 600, 8px gap. On gray, give items bg-background.

AllGame serversWeb hostingBotsStorage
MonthlyQuarterlyYearly

Radio group: option

<RadioGroup variant="option">. 384×60, padding 0 20, r20, 12px apart, 24px check. Selected: sakura tint.

North AmericaEuropeAsia Pacific

Radio group: card

<RadioGroup variant="card">. 100px circle, 4px border when selected, 44px inner dot (color prop), label 17/24 18px below, optional status.

PlayerFreeHostPaid

Select

Trigger is the secondary button; popup is the Menu; selected item bold with a check.

Inputs

Search field

500×50, r30, padding 8/8/8/32; children go after the input. Heading 34/44, 36px above.

How can we help?

Field and input

Field: label 13/18 bold 8px above, max 384. Input 50px, r20, gray, plum border on focus.

Nav tabs and link list

<NavTabs variant="segmented"> 17/24, 2×20 bar. Default tabs 46px, 1×20 dividers, scroll. LinkList: 3px plum rules, rows 24/20/24/24.

Summary bar and event item

Page pattern, not a registry component. Bar 34px, r20, 13/18. Compact badge, title 20/28 16px below.

1 live event

Live

Invite a friend

Ongoing

Tags & price

Badge, status, price

Badge variant: default (tag 3/8 r20 12/18) | neutral | chip (4/10 r20 13) | compact. Price: struck 16/22 sub, discount and final 17/24.

Instant setupDDoS protectedNeutral
ChipCompactStatus

$9.9920%$7.99

Form controls

Checkbox, radio and switch

20px box r8 / 20px circle, 1.5px plum 30% border, plum when checked. Switch 44×26. Children become the label: 15/22, 10px gap.

Checkbox
Radio
Switch

Textarea and field states

FieldDescription 13/18 sub. No red in the palette: invalid fields get a tint fill and plum border; FieldError is bold with an icon.

Pick something your players will recognise.

Use letters, numbers and dashes only.

Slider

6px track plum 12%, 20px white thumb with a 3px plum ring.

2 GB to 32 GB

Navigation extras

Breadcrumb and pagination

Breadcrumb 14/20 bold, / separators in the line colour. Pages 36px, r16, current page plum.

Accordion

Same rules as the link list; panel on gray, height animates 200ms.

Menu and tooltip

Menu r20, 8px block padding, full-width items 14/20 with 10/18 padding, hover pill inset 8px r12. Tooltip: plum, 13/18 bold, r20, 8px off.

Feedback

Notice and toast

Notice: padding 16/20, r20, tint or neutral, 20px icon. Toast: plum, r20, padding 14/20, 24px from the bottom; toast.add({ title, type }).

Scheduled maintenance

Tokyo servers restart on 1 Nov at 04:00 KST.

Payment method expiring

Update your card before 30 Nov to keep auto-renew.

Progress and stepper

Bar 8px, gray track, plum fill. Steps: 32px circles, done sakura, current plum, 2px connectors.

x
  1. Plan
  2. Region
  3. Payment
  4. Done

Spinner and skeleton

Spinner 24px (20px inside buttons), currentColor. Skeleton gray with a white shimmer, r20.

Empty state

Centred, 64px faded art, title 17/24, body 15 sub, one primary button.

No servers yet

Your servers will show up here once you order one.

Data display

Table and avatars

Header row gray, r20, 13/18 bold. Cells 16px padding, 1px rules, numeric right-aligned. Avatar 40px (32 small), tint fill, groups overlap 8px.

ServerOwnerStatusPlayers
survival-01HKRunning24 / 40
creativeMJRunning3 / 20
modpack-testSYStopped0 / 10
HKH
HM+5

Overlays

Dialog, alert dialog and sheet

Dialog 440×640 max, r20, body 28/32 scrolls. AlertDialog 320 wide, padding 16. Sheet 400 wide from the right, r20 on the open side (none under 480px), in 300ms, out 200ms. Backdrop plum 60%.

Menu: groups, checkbox, radio, submenu

Group labels 12/16 bold muted. Checkbox items show a check on the right, radio items a plum dot. Submenus open to the right, first row level with the trigger.

Context menu and menubar

ContextMenuContent opens at the pointer with the Menu items. Menubar is a gray r20 track with r16 triggers; the open trigger turns white.

Right-click or long-press here

Navigation menu

Header nav with dropdown panels. One popup (the menu card) resizes and slides between panels; triggers turn gray while open.

Popover, preview card and drawer

Popover and PreviewCard use the menu card (r20, 150ms from 95%). PreviewCard opens on hover. Drawer is a bottom sheet, r20 top, swipe down to close.

Handles, backdrops and indent

A handle connects one popup to triggers anywhere, each passing its own payload. `backdrop` (off by default) dims the page behind a menu, popover or preview card. DrawerIndent pushes the app back while a drawer is open; DrawerSwipeArea opens it with a swipe up from the bottom edge.

Your appSwipe up from the bottom edge of this box, or use the button.

Entry & choice

Combobox and autocomplete

Field look (50px, r20). Combobox picks from items, with a check on the chosen one; multiple shows white chips. Autocomplete keeps typed text as the value.

Number field and OTP field

Number field: 50px gray group, 50px − and + cells, bold tabular value; drag the label to scrub. OTP: 50px squares, 8px apart.

Memory (GB)

Form, fieldset and checkbox group

Form shows Field errors on submit. Fieldset legend 17/24 bold. CheckboxGroup shares one value array; the parent checkbox toggles all.

Server

Lowercase, no spaces.

Notifications

Toggle and toggle group

Toggle: 40px gray, plum while pressed. ToggleGroup: segmented gray track, the pressed item is a white pill.

Layout & display

Tabs

ARIA tabs for in-page panels (NavTabs is for links). Gray r20 track, a white r16 pill slides to the active tab in 200ms.

Running on 8 GB in Seoul.

Toolbar

Gray r14 track of 36px items; arrow keys move between them. Pressed toggles turn plum; separators are 20px hairlines.

Collapsible, separator, meter and scroll area

Collapsible animates height like the accordion. Separator is a 1px hairline. Meter is an 8px sakura bar with label and value. ScrollArea bars appear on hover or scroll.

DocsStatusSupport
Storage
x
CPU
x

Page patterns

Step page

840 white column on gray, content 384, title 26/36. Action bar 80px, 1px top line.

Pick a region

North AmericaEurope
Back

Auth card

500 wide, padding 60/58, r20, 1px line, outline buttons 48px 12px apart.

Sign in

Service tiles and store rows

Tile 160×180, padding 20, r20, 60px icon. Store row 588×124, padding 20/24/20/32, r20.

Starter plan

Instant setupMonthly

Pro plan

Instant setupMonthly

Product detail

420 image + 60 gap + 360 info. Title 22/30, price 40 below, button 40 below.

Game servers

Minecraft Pro, 8 GB

Instant setupDDoS protected

$19.9920%$15.99

Good to know

  • Billed monthly; cancel any time.
  • Setup usually takes under a minute.