UI Library
The real production tokens and components ServiceLine's screens render with — every state below is live and interactive, not a documentation-only lookalike.
Brand
ON LIGHT
ServiceLine
Restaurant Operations
ON DARK (nav surface)
ServiceLine
Restaurant Operations
Three offset gradient bars — a coordinated order-flow / ticket-rail motif that also reads as an abstract "S." Pure SVG (react-native-svg), so it scales cleanly from a 20px nav glyph up to app-icon size with no image asset.
Color
BRAND
violet
#7257E8
violetHover
#6247D5
violetPressed
#5036B8
cobalt
#3F66E8
cyan
#36BBD0
paleViolet
#EFECFF
paleCobalt
#E9EFFF
paleCyan
#E5F8FB
textOnBrand
#FFFFFF
NEUTRAL
0
#FFFFFF
50
#F7F8FC
100
#F3F5FA
150
#EDEFFC
200
#DCE0EB
300
#C8CEDD
400
#AAB1C1
500
#9299A8
600
#788095
700
#555C70
800
#2B3155
900
#191E3A
950
#11152B
SEMANTIC — colors.semantic.<name>, the bg/fg/border triple every status surface pulls from
Success
Warning
Danger
Info
Live
PRIMARY GRADIENT — reserved for the main CTA, logo details, active nav, selected KPI icons, and restrained chart accents. Never every card, input, or button.
Surfaces & elevation
Not every item sits in an identical white rounded card.
surface
Default passive card
tinted
Quieter summary surface
borderOnly
Flat section, no shadow
dark
High-attention panel
INTERACTIVE — hover to lift, press to settle, tab to focus (respects reduced motion)
none
sm
md
lg
xl
Typography
display — The quick brown fox jumps over the lazy dog
h1 — The quick brown fox jumps over the lazy dog
h2 — The quick brown fox jumps over the lazy dog
h3 — The quick brown fox jumps over the lazy dog
bodyLg — The quick brown fox jumps over the lazy dog
body — The quick brown fox jumps over the lazy dog
bodyMedium — The quick brown fox jumps over the lazy dog
caption — The quick brown fox jumps over the lazy dog
label — The quick brown fox jumps over the lazy dog
TABULAR NUMERALS — prices, times, quantities, KPIs
$1,284.90
Icon containers
Compact tinted tiles for KPI cards and section headers.
brand
cyan
success
warning
danger
neutral
Buttons
VARIANTS — primary carries the gradient; use it once per view
SIZES
STATES — hover, focus (tab to it), and press are all live; try disabled vs. loading
FILTER CHIPS — pale violet when selected, never the full gradient
Status badges
Text plus a dot, so status is never color alone — real OrderStatus type.
Pending
Confirmed
Preparing
Ready
Completed
Cancelled
Live
Custom badge
Lists
The left/right row shape used for Orders, Menu items, and the CRM customer list. A row nested inside an existing Card (e.g. items under a category) uses surface=false.
Alice Nguyen
alice@example.com
$86.23
3 orders
Bob Martinez
bob@example.com
$23.76
2 orders
Ranked bars
Real relative magnitude from actual data — never a decorative or fake metric.
Classic Burger
11 sold
Spring Rolls
4 sold
Buffalo Wings
3 sold
Navigation
The actual bar rendered in the app shell (apps/dashboard/components/NavBar.tsx), which just wires these to expo-router's Link. Click a link to try the active/hover/focus states — tab to one to see the focus ring. Resize the window below the tablet breakpoint to see it collapse to the dark mobile menu.
ServiceLine
Restaurant Ops
Home
Orders
Menu
Customers
Settings
Form controls
Text field
Focus this field to see the cobalt ring and outer glow
Text field with error
This value is invalid
Disabled text field
Select (built on Modal + FlatList)
SWITCHES — on: violet, off: cool neutral gray, thumb always white
Ordering enabled (interactive)
Toggles whether customers can place new orders
Fixed on state
Fixed off state
Disabled
Modal
Toast
Loading, empty, and error states
SPINNER — indeterminate wait (modals, small panels)
Loading orders…
SKELETON — cool-neutral base with a shimmer sweep (disabled under reduced motion), shaped like the content it replaces
No orders yet
Orders placed today will show up here.
Couldn't load orders
Check your connection and try again.
Accessible contrast pairings
Measured with the WCAG relative-luminance formula against this file's exact tokens, not eyeballed.
Primary text on app background
16.0:1
Secondary text on white surface
6.7:1
Muted text on white surface
4.0:1 (large text only)
Inverse text on midnight nav
17.3:1
White text on violet / cobalt (gradient button)
4.9:1 / 4.9:1
Focus ring on white / app background
4.0:1 / 3.6:1
Every semantic foreground on its own background
4.3–5.0:1