| name | Kolibri | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| colors |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| semantic-colors |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| breakpoints |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| typography |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| rounded |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| spacing |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| zIndex |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| durations |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| easings |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| animations |
|
The design system is engineered to project a sense of institutional-grade security fused with the velocity of modern decentralized finance. It caters to a tech-savvy audience that values precision and transparency within the Tezos ecosystem.
The visual direction combines High-Tech Minimalism with Glassmorphism. This approach utilizes deep obsidian surfaces and vibrant phosphorescent accents to create a high-contrast, data-centric environment. The aesthetic is "technical-premium"—avoiding unnecessary ornamentation in favor of functional clarity and sophisticated depth. Every interaction should feel instantaneous and reliable, reinforcing the brand's position as a fast, secure gateway to liquidity.
Typeface: JetBrains Mono is used for all text. Its monospaced glyphs are critical for DeFi: numbers stay aligned when balances update, preventing layout shifts and improving scannability of financial data.
The palette is anchored in a Dark Mode foundation to reduce eye strain during prolonged financial monitoring and to emphasize the "high-tech" nature of the product.
Color roles follow the Material 3 model:
- Primary (
#f5fff5): Text and icons placed on top of the primary container. Not the button fill color. - Primary Container (
#00ffa3): The actual neon emerald used for primary buttons, success states, and growth indicators. It should appear to "glow" against the dark background. - On Primary (
#003920): Text color on primary containers (used for solid button labels). - Secondary (
#b9f1ff) / Secondary Container (#00e0ff): Used for secondary data points, info links, or subtle UI accents to provide a cool-toned contrast to the green. - Tertiary (
#fffbff) / Tertiary Container (#ffdd67): Reserved for warning or attention states, such as elevated liquidation risk. - Error (
#ffb4ab) / Error Container (#93000a): Critical warnings and error states. - Surface (
#121414): The near-black background. All other surfaces are layered on top of it. - On Surface (
#e2e2e2): Primary text color. - On Surface Variant (
#b9cbbd): Secondary text, labels, metadata. - Surface Tint (
#00e290): Focus rings, active tab underlines, links.
These aliases map the Material roles to domain meaning:
accent.safe=primary-fixed-dimaccent.warning=tertiary-fixed-dimaccent.danger=errorglass.surface=rgba(30, 32, 32, 0.6)glass.surface-high=rgba(40, 42, 42, 0.85)border.subtle=rgba(255, 255, 255, 0.08)border.divider=rgba(255, 255, 255, 0.05)text.muted=on-surface-variantdonate-pink=#e84393
The design system uses JetBrains Mono for all typographic needs. Its monospaced structure is essential for DeFi dashboards where numerical alignment directly impacts readability and trust.
- Scale: Headlines use tight letter-spacing and semi-bold weights to appear "engineered."
- Hierarchy: Use
label-mdfor metadata and section headers to create a rhythmic distinction between data labels and numerical values. - Numerics: Every numeric style (
body-*,label-*) usesfont-variant-numeric: tabular-nums. This prevents layout shifting when balances, prices, or percentages update in real-time. - Monospace: Code snippets, addresses, hashes, and transaction IDs should use the
monofont family token.
This design system follows a strict 8px grid system to ensure mathematical harmony across all components.
- Mobile First: The layout is primarily fluid within a
16pxside margin (margin-mobile). On desktop the margin is40px(margin-desktop). - Grid: Use a 4-column grid for mobile (
< md) and a 12-column grid for tablet/desktop (>= md). - Rhythm: Vertical spacing should be generous to allow the glassmorphism effects to "breathe." Use
lg(24px) for section spacing andmd(16px) for internal card padding. - Breakpoints:
sm: 640pxmd: 768pxlg: 1024pxxl: 1280px
Depth is achieved through a combination of Glassmorphism and Subtle Outlines rather than heavy shadows.
- Layer 0 (Background):
surface(#121414). - Layer 1 (Cards):
glass.surface(rgba(30, 32, 32, 0.6)) with a16px–32pxbackdrop-blur. Each card is finished with a1pxsolidborder.subtle(8%white opacity) to define its edges against the dark background. - Layer 2 (Modals/Popovers):
glass.surface-high(rgba(40, 42, 42, 0.85)) with a more pronounced white inner-stroke to simulate closer physical proximity to the user. - Layer 3 (Nav/Floating): Fixed navbar also uses
glass.surfacewithbackdrop-blur. - Shadows: Only used sparingly on floating action buttons (FABs) using a colored glow (
#00FFA3at 20% opacity) rather than a black shadow. Dialogs usedialog-glow. - Performance Fallback: On low-end devices or when
prefers-reduced-transparencyis active, replacebackdrop-filter: blur(...)with an opaquesurface-container-highbackground to avoid GPU strain and maintain readability.
The shape language is "Soft-Tech." While the brand is professional, purely sharp corners are avoided to maintain a user-friendly and approachable feel.
- Base Radius:
8px(rounded-DEFAULT) for standard components like input fields and small buttons. - Medium Radius:
12px(rounded-md) for segmented controls and radio cards. - Large Radius:
16px(rounded-lg) for main container cards and dialogs. - Extra Radius:
24px(rounded-xl) for featured dashboard modules. - Pill Radius:
9999px(rounded-full) for buttons, chips, and wallet balance badges.
All transitions should feel instantaneous yet polished. DeFi interfaces update in real time, so motion must be calm and not distracting.
- Fast (
150ms): Hover states, focus rings, button presses, chip toggles. - Normal (
200ms): Dialog open/close, tab transitions, radio card selection. - Slow (
300ms): Progress bar fills, large layout shifts. - Easing: Default
ease. Avoid bouncy or playful easings. - Skeleton:
skeleton-pulseanimation (1.5s ease-in-out infinite) for loading placeholders. - Spinner:
spinanimation (1s linear infinite) for loading buttons. - Disabled: Prefer
opacity: 0.5+cursor: not-allowedover grayscale for disabled states.
- Library:
lucide-reactis the single source of truth for icons. Avoid mixing icon sets. - Sizes:
12px–14px: inline buttons, chips, copy button.16px–20px: default UI icons in cards and dialogs.24px–28px: navbar actions, feature illustrations.
- Color: Default to
on-surface-variant. Useprimary-fixed-dimfor accent/CTA icons,errorfor warnings,tertiary-fixed-dimfor cautionary states. - Stroke: Default Lucide stroke (
1.5–2). Do not adjust stroke width per icon unless necessary for optical balance. - Loading: Use
Loader2with thespinanimation token. Never use a static spinner icon without animation.
- Contrast: Aim for WCAG AA 4.5:1 for all text.
on-surface/on-surface-varianton surface layers already meet this. Be cautious when placing text onglasssurfaces over complex backgrounds—use a solidsurface-container-*fallback if needed. - Focus: Every interactive element must have a visible
focus-visiblering usingsurface-tint(2pxoutline). - Motion: Respect
prefers-reduced-motionwhere possible; reduce or disable backdrop-blur forprefers-reduced-transparency. - Screen Readers: Use Base UI primitives (
Dialog,Tabs,Combobox,Tooltip) for correct ARIA roles. Never build custom select/dropdown/ modal from scratch.
| Component | Padding | Gap | Notes |
|---|---|---|---|
| Button (sm) | px: md, py: sm |
— | Pill shape, 28px height |
| Button (md) | px: lg, py: sm |
— | 36px height |
| Button (lg) | px: xl, py: md |
— | 44px height |
| Icon Button | 0 |
— | Fixed width/height by size |
| Card | padding: md |
gap: xs |
rounded-lg |
| Dialog | padding: lg |
gap: md |
rounded-lg |
| Input | 8px 12px |
— | rounded-md |
| Input Group | — | — | Input + suffix/chip, focus ring on group root |
| Radio Card | padding: sm |
gap: sm |
rounded-md |
| Chip | 2px 8px |
— | rounded-full |
| Data Row | paddingY: sm optional |
— | divider variant adds border-bottom |
| Segmented Tabs | padding: xs |
gap: xs |
rounded-md container, rounded-sm items |
| Skeleton Inline | width: w prop |
— | Uses shape="inline" |
Buttons use a variant × tone matrix. This avoids a combinatorial explosion of one-off variants.
- Variants:
solid,outline,ghost,icon. - Tones:
primary,warning,danger. - Sizes:
sm,md,lg. - States:
- Default: defined by variant + tone.
- Hover: solid uses opacity; outline/ghost use a tinted transparent overlay (
/5–/15). - Active:
transform: scale(0.96)for all variants (solid, outline, ghost, chips, currency toggles). - Disabled:
opacity: 0.5,cursor: not-allowed. - Loading:
aria-busy="true", spinner icon, preserves disabled state.
- Base:
glass.surface+border.subtle+rounded-lg. accent: none / safe / warning / danger — adds a4pxleft border in the corresponding accent color.interactive: hover background shifts toglass.surface-hover.- Avoid putting complex gradients inside borders; rely on the glass surface and subtle outline.
- Background:
surface-container. - Border:
1px solid outline-variant. - Border radius:
rounded-md. - Focus: border color changes to
surface-tintwith a1pxoutline glow (box-shadow: 0 0 0 1px surface-tint). - Error: border color
error, text colorerrorfor the description. - Disabled:
opacity: 0.5.
- Backdrop:
surface/60+backdrop-blur(8px), z-indexdialog-backdrop. - Popup:
glass.surface-high+border.subtle+rounded-lg, z-indexdialog. - Sizes:
md(default,headline-smtitle) andsm(body-lgtitle). - Close button: icon-only
ButtonwithXicon, positioned top-right. - Animation: opacity + scale transitions (200ms).
underline: bottom border tab list, active tab underlined withsurface-tint.segmented: pill container (surface-container-lowest), selected item usesprimary-container/15background andprimary-fixed-dimcolor.- Use
data-selectedfor styling, not render-prop className merging.
- Track:
surface-container-highest,rounded-full, height4px. - Indicator colors by
level: safe (accent.safe), warning (accent.warning), danger (accent.danger). - Indicator glow uses the same color at 60% opacity (
token(colors.x, 0.6)). - Width is managed by Base UI; do not set it manually.
- Base:
surface-container+outline-variantborder +rounded-md. - Hover:
surface-container-high. - Checked:
primary-containerborder +primary-container/6background via&[data-checked].
Used for "LTV", "APY", "Status" and currency toggles.
- Colors:
primary,warning,error. - Style: low-opacity background (
/12) with the saturated text color. - Shape: pill (
rounded-full).
Use the dataRow recipe:
- Flex row,
justify-content: space-between,align-items: center. textStyle: body-sm.- Optional
dividervariant adds a1pxborder.dividerbottom andpadding-bottom: sm/margin-bottom: sm. - Numerical values are right-aligned, labels left-aligned.
Use the <Skeleton /> component with shape and optional w (width) prop.
inline: for text/number placeholders.text/heading/circle/block: for generic block placeholders.- Animation:
skeleton-pulsetoken.
- Icon-only
Button(variant="icon",size="sm"). - Icons:
Copydefault,Checkafter success (withprimary-fixed-dimcolor). - Tooltip: "Copy" on hover, "Copied" after click. Wrapped in
Tooltip.Positionerfor correct placement.
Built on Base UI Combobox for full keyboard navigation (arrows, enter, escape) and accessibility.
- Input uses the existing
inputrecipe. - Popup uses the
popuprecipe. - Items render their label directly, not inside
ItemIndicator. - Item hover uses
primary-container/6, selected item usesprimary-container/10.
- Mobile: single-column card grids, full-width dialogs, compact navbar icons.
- Tablet/Desktop: multi-column grids (
md: 2 cols,lg: 3 cols for ovens), wider margins. - Dialogs should remain centered and bounded by
max-width: 480pxon all viewports.