Styling Tenzir UI
This skill provides Tenzir's brand and style guidelines for frontend development.
Contents
Design System Overview
Tenzir's design system provides consistent styling across all Tenzir products.
When implementing frontend components, always reference the appropriate section:
Quick Reference
Fonts
- Inter - Corporate font for UI text
- JetBrains Mono - Monospace font for code
Usage Guidelines
- Always use design tokens - Never hardcode pixel values; use the token names (e.g.,
text-sm, text-base)
- Respect the type scale - Use the defined sizes; don't create custom sizes
- Match weight to purpose - Use semi-bold for headings, medium for emphasis, regular for body text
- Apply letter-spacing - Larger text sizes (2xl+) require negative letter-spacing
Spacing
- Scale: 0, 0.5, 1, 2, 3, 4, 5, 6, 7, 8, 10, 16, 20
- Base unit: 4px (1 = 0.25rem = 4px)
- Common: p-2 (8px) for inputs, p-4 (16px) for containers, gap-4 (16px) for sections
Colors
- Primary: Blue (
#0A54FF) and Green (#29E06C)
- Neutrals: 11-shade grey scale from
neutral-800 (black) to neutral-50 (white)
- Semantic: Success (green), Warning (yellow), Error (red)
- Graph colors: Blue, Lightblue, Purple, Pink, Orange, Yellow (in order)
Shadows
- shadow-l - Sidepanels and modals (highest elevation)
- shadow-m - Popups
- shadow-s - Tooltips and toasts
- shadow-xs - Subtle elevation (lowest)
Buttons
- Primary - Solid blue (
blue-500), main actions
- Secondary - Outlined (
neutral-250 border), alternative actions
- Tertiary - Text-only, low-emphasis actions
- Sizes: XS (24px), S (28px), M (32px), L (36px)
Inputs
- Input Field - M (32px), L (36px) heights; neutral-100 background
- Search - 32px height with search icon and clear button
- Checkbox - 16px square, 5px radius
- Radio Button - 16px circle
- Toggle Switch - 32x20px with sliding knob
- Focus ring - 3px primary-200 for inputs, 2px for controls
Tags & Badges
- Tag - 24px height, 9 colors, add/remove variants
- Badge - 16px height, 8px uppercase text, 9 colors (same palette as tags)
Navigation
- Tab Bar - 48px height, 2px active indicator, notification counter support
Feedback
- Toast - 48px min-height, shadow-s, optional icon/subtitle/button/progress bar
CSS Custom Properties Naming Convention
When implementing the design system in CSS, use the --tnz- prefix for all custom properties:
:root {
/* Typography */
--tnz-font-sans: "Inter Variable", "Inter", system-ui, sans-serif;
--tnz-font-mono: "JetBrains Mono Variable", "JetBrains Mono", monospace;
/* Font Sizes */
--tnz-text-xxs: 0.625rem; /* 10px */
--tnz-text-xs: 0.75rem; /* 12px */
--tnz-text-sm: 0.875rem; /* 14px */
--tnz-text-base: 1rem; /* 16px */
--tnz-text-lg: 1.125rem; /* 18px */
--tnz-text-xl: 1.25rem; /* 20px */
--tnz-text-2xl: 1.5rem; /* 24px */
--tnz-text-3xl: 1.875rem; /* 30px */
--tnz-text-4xl: 2.25rem; /* 36px */
--tnz-text-5xl: 3rem; /* 48px */
/* Border Radius - 5px is the standard */
--tnz-radius: 5px;
/* Spacing Scale (base unit: 4px) */
--tnz-space-0: 0;
--tnz-space-0-5: 0.125rem; /* 2px */
--tnz-space-1: 0.25rem; /* 4px */
--tnz-space-1-5: 0.375rem; /* 6px */
--tnz-space-2: 0.5rem; /* 8px */
--tnz-space-3: 0.75rem; /* 12px */
--tnz-space-4: 1rem; /* 16px */
--tnz-space-5: 1.25rem; /* 20px */
--tnz-space-6: 1.5rem; /* 24px */
--tnz-space-7: 1.75rem; /* 28px */
--tnz-space-8: 2rem; /* 32px */
--tnz-space-10: 2.5rem; /* 40px */
--tnz-space-16: 4rem; /* 64px */
--tnz-space-20: 5rem; /* 80px */
/* Shadows */
--tnz-shadow-xs: 0px 8px 16px -8px #0e10171a, 0px 3px 6px -3px #0e10171a;
--tnz-shadow-s: 0px 8px 16px -8px #0e101733, 0px 3px 6px -3px #0e101733;
--tnz-shadow-m: 0px 10px 20px -8px #0e101733, 0px 4px 8px -6px #0e101733;
--tnz-shadow-l: 0px 20px 40px -16px #0e101733, 0px 8px 16px -8px #0e101733;
/* Transitions */
--tnz-transition-fast: 0.15s ease;
--tnz-transition-base: 0.2s ease;
--tnz-transition-slow: 0.3s ease;
/* Colors - see colors.md for full palette */
/* Primary Blue */
--tnz-primary-500: #0a54ff;
--tnz-primary-600: #0043e0;
/* ... etc */
/* Neutrals */
--tnz-neutral-50: #fdfdfe;
--tnz-neutral-100: #f7f8fa;
--tnz-neutral-200: #f0f1f5;
/* ... etc */
}
Important: Always use design tokens via CSS custom properties. Never hardcode values like font-family: 'Inter' or border-radius: 5px - use var(--tnz-font-sans) and var(--tnz-radius) instead.
When to Load References
Load the specific reference file when you need detailed specifications:
1---2name: styling-tenzir-ui3description: Provides Tenzir design system tokens and component specifications. Use when building UI components, styling with CSS/Tailwind, choosing colors, typography, spacing, or implementing buttons, inputs, tags/badges, toasts, and other Tenzir UI elements.4---56# Styling Tenzir UI78This skill provides Tenzir's brand and style guidelines for frontend development.910## Contents1112- [Design System Overview](#design-system-overview)13- [Quick Reference](#quick-reference)14- [When to Load References](#when-to-load-references)1516## Design System Overview1718Tenzir's design system provides consistent styling across all Tenzir products.1920When implementing frontend components, always reference the appropriate section:2122| Aspect | Reference | Description |23| -------------- | ---------------------------------------------- | ---------------------------------------------- |24| Typography | [typography.md](./typography.md) | Font families, sizes, weights, line heights |25| Colors | [colors.md](./colors.md) | Brand colors, semantic colors, neutrals |26| Spacing | [spacing.md](./spacing.md) | Padding and margin scale |27| Shadows | [shadows.md](./shadows.md) | Elevation and shadow styles |28| Border Radius | [border-radius.md](./border-radius.md) | Corner radius tokens (always 5px) |29| Buttons | [buttons.md](./buttons.md) | All button styles (standard, delete, floating) |30| Dropdown | [dropdown.md](./dropdown.md) | Dropdown trigger with chevron |31| Hyperlinks | [hyperlinks.md](./hyperlinks.md) | Link styling with underline |32| Segmented Ctrl | [segmented-control.md](./segmented-control.md) | Toggle between mutually exclusive options |33| Input Field | [input-field.md](./input-field.md) | Text input with title and states |34| Search Input | [search-input.md](./search-input.md) | Search field with icon and clear |35| Checkbox | [checkbox.md](./checkbox.md) | Square multi-select control |36| Radio Button | [radio-button.md](./radio-button.md) | Circular single-select control |37| Toggle Switch | [toggle-switch.md](./toggle-switch.md) | Binary on/off switch |38| Tag | [tag.md](./tag.md) | Colored labels for categorization |39| Badge | [badge.md](./badge.md) | Small uppercase status indicators |40| Tab Bar | [tab-bar.md](./tab-bar.md) | Horizontal navigation tabs |41| Toast | [toast.md](./toast.md) | Transient notification messages |4243## Quick Reference4445### Fonts4647- **Inter** - Corporate font for UI text48- **JetBrains Mono** - Monospace font for code4950### Usage Guidelines51521. **Always use design tokens** - Never hardcode pixel values; use the token names (e.g., `text-sm`, `text-base`)532. **Respect the type scale** - Use the defined sizes; don't create custom sizes543. **Match weight to purpose** - Use semi-bold for headings, medium for emphasis, regular for body text554. **Apply letter-spacing** - Larger text sizes (2xl+) require negative letter-spacing5657### Spacing5859- **Scale:** 0, 0.5, 1, 2, 3, 4, 5, 6, 7, 8, 10, 16, 2060- **Base unit:** 4px (1 = 0.25rem = 4px)61- **Common:** p-2 (8px) for inputs, p-4 (16px) for containers, gap-4 (16px) for sections6263### Colors6465- **Primary:** Blue (`#0A54FF`) and Green (`#29E06C`)66- **Neutrals:** 11-shade grey scale from `neutral-800` (black) to `neutral-50` (white)67- **Semantic:** Success (green), Warning (yellow), Error (red)68- **Graph colors:** Blue, Lightblue, Purple, Pink, Orange, Yellow (in order)6970### Shadows7172- **shadow-l** - Sidepanels and modals (highest elevation)73- **shadow-m** - Popups74- **shadow-s** - Tooltips and toasts75- **shadow-xs** - Subtle elevation (lowest)7677### Buttons7879- **Primary** - Solid blue (`blue-500`), main actions80- **Secondary** - Outlined (`neutral-250` border), alternative actions81- **Tertiary** - Text-only, low-emphasis actions82- **Sizes:** XS (24px), S (28px), M (32px), L (36px)8384### Inputs8586- **Input Field** - M (32px), L (36px) heights; neutral-100 background87- **Search** - 32px height with search icon and clear button88- **Checkbox** - 16px square, 5px radius89- **Radio Button** - 16px circle90- **Toggle Switch** - 32x20px with sliding knob91- **Focus ring** - 3px primary-200 for inputs, 2px for controls9293### Tags & Badges9495- **Tag** - 24px height, 9 colors, add/remove variants96- **Badge** - 16px height, 8px uppercase text, 9 colors (same palette as tags)9798### Navigation99100- **Tab Bar** - 48px height, 2px active indicator, notification counter support101102### Feedback103104- **Toast** - 48px min-height, shadow-s, optional icon/subtitle/button/progress bar105106## CSS Custom Properties Naming Convention107108When implementing the design system in CSS, use the `--tnz-` prefix for all custom properties:109110```css111:root {112 /* Typography */113 --tnz-font-sans: "Inter Variable", "Inter", system-ui, sans-serif;114 --tnz-font-mono: "JetBrains Mono Variable", "JetBrains Mono", monospace;115116 /* Font Sizes */117 --tnz-text-xxs: 0.625rem; /* 10px */118 --tnz-text-xs: 0.75rem; /* 12px */119 --tnz-text-sm: 0.875rem; /* 14px */120 --tnz-text-base: 1rem; /* 16px */121 --tnz-text-lg: 1.125rem; /* 18px */122 --tnz-text-xl: 1.25rem; /* 20px */123 --tnz-text-2xl: 1.5rem; /* 24px */124 --tnz-text-3xl: 1.875rem; /* 30px */125 --tnz-text-4xl: 2.25rem; /* 36px */126 --tnz-text-5xl: 3rem; /* 48px */127128 /* Border Radius - 5px is the standard */129 --tnz-radius: 5px;130131 /* Spacing Scale (base unit: 4px) */132 --tnz-space-0: 0;133 --tnz-space-0-5: 0.125rem; /* 2px */134 --tnz-space-1: 0.25rem; /* 4px */135 --tnz-space-1-5: 0.375rem; /* 6px */136 --tnz-space-2: 0.5rem; /* 8px */137 --tnz-space-3: 0.75rem; /* 12px */138 --tnz-space-4: 1rem; /* 16px */139 --tnz-space-5: 1.25rem; /* 20px */140 --tnz-space-6: 1.5rem; /* 24px */141 --tnz-space-7: 1.75rem; /* 28px */142 --tnz-space-8: 2rem; /* 32px */143 --tnz-space-10: 2.5rem; /* 40px */144 --tnz-space-16: 4rem; /* 64px */145 --tnz-space-20: 5rem; /* 80px */146147 /* Shadows */148 --tnz-shadow-xs: 0px 8px 16px -8px #0e10171a, 0px 3px 6px -3px #0e10171a;149 --tnz-shadow-s: 0px 8px 16px -8px #0e101733, 0px 3px 6px -3px #0e101733;150 --tnz-shadow-m: 0px 10px 20px -8px #0e101733, 0px 4px 8px -6px #0e101733;151 --tnz-shadow-l: 0px 20px 40px -16px #0e101733, 0px 8px 16px -8px #0e101733;152153 /* Transitions */154 --tnz-transition-fast: 0.15s ease;155 --tnz-transition-base: 0.2s ease;156 --tnz-transition-slow: 0.3s ease;157158 /* Colors - see colors.md for full palette */159 /* Primary Blue */160 --tnz-primary-500: #0a54ff;161 --tnz-primary-600: #0043e0;162 /* ... etc */163164 /* Neutrals */165 --tnz-neutral-50: #fdfdfe;166 --tnz-neutral-100: #f7f8fa;167 --tnz-neutral-200: #f0f1f5;168 /* ... etc */169}170```171172**Important:** Always use design tokens via CSS custom properties. Never hardcode values like `font-family: 'Inter'` or `border-radius: 5px` - use `var(--tnz-font-sans)` and `var(--tnz-radius)` instead.173174## When to Load References175176Load the specific reference file when you need detailed specifications:177178- Working on typography? Read [typography.md](./typography.md)179- Implementing colors? Read [colors.md](./colors.md)180- Adding shadows/elevation? Read [shadows.md](./shadows.md)181- Building buttons? Read [buttons.md](./buttons.md)182- Adding spacing? Read [spacing.md](./spacing.md)