--- name: docs-design description: Design system skill for docs. Activate when building UI components, pages, or any visual elements. Provides exact color tokens, typography scale, spacing grid, component patterns, and craft rules. Read references/DESIGN.md before writing any CSS or JSX. --- # docs Design System You are building UI for **docs**. Light-themed, neutral palette, sans-serif typography (Product Sans), compact density on a 4px grid. ## Visual Reference **IMPORTANT**: Study ALL screenshots below before writing any UI. Match colors, typography, spacing, layout, and motion exactly as shown. ### Homepage ![docs Homepage](screenshots/homepage.png) > Read `references/DESIGN.md` for full token details. ## Design Philosophy - **Layered depth** — use shadow tokens to create a sense of physical layering. Each elevation level has a specific shadow. - **Gradient accents** — gradients are used thoughtfully for emphasis, not decoration. - **Single typeface** — Product Sans carries all text. Hierarchy comes from size, weight, and color — never font mixing. - **compact density** — 4px base grid. Every dimension is a multiple of 4. - **neutral palette** — the color temperature runs neutral, matching the sans-serif typography. - **Subtle motion** — transitions smooth state changes. Keep durations under 300ms, use ease-out curves. ## Color System ### Core Palette | Role | Token | Hex | Use | |------|-------|-----|-----| | Background | `--background` | `#f6f8fa` | Page/app background | | Surface | `--surface` | `#393a34` | Cards, panels, modals | | Text Primary | `--text-primary` | `#1c1e21` | Headings, body text | | Text Muted | `--text-muted` | `#ebedf0` | Captions, placeholders | | Border | `--border` | `#2b3137` | Dividers, card borders | ### Status Colors | Status | Hex | Use | |--------|-----|-----| | Success | `#00a400` | Confirmations, positive trends | | Warning | `#ffba00` | Caution states, pending items | | Danger | `#fa383e` | Errors, destructive actions | ### Extended Palette - **docsearch-container-background:** `#090a11` — Deep background layer or shadow color - **ifm-color-black:** `#000000` — Deep background layer or shadow color - **ifm-footer-background-color:** `#303846` - **sidebar-hover-bg-color:** `#4b39ef` - **ifm-color-primary:** `#3578e5` - **ifm-color-info:** `#54c7ec` - **ifm-color-primary-dark:** `#306cce` ### CSS Variable Tokens ```css --ifm-card-border-color: var(--ifm-color-primary); --ifm-contrast-background-value: 90%; --ifm-contrast-foreground-value: 70%; --ifm-contrast-background-dark-value: 70%; --ifm-contrast-foreground-dark-value: 90%; --ifm-color-primary: #3578e5; --ifm-color-secondary: #ebedf0; --ifm-color-primary-dark: #306cce; --ifm-color-primary-darker: #2d66c3; --ifm-color-primary-darkest: #2554a0; --ifm-color-primary-light: #538ce9; --ifm-color-primary-lighter: #72a1ed; --ifm-color-primary-lightest: #9abcf2; --ifm-color-primary-contrast-background: #ebf2fc; --ifm-color-primary-contrast-foreground: #102445; --ifm-color-secondary-dark: #d4d5d8; --ifm-color-secondary-darker: #c8c9cc; --ifm-color-secondary-darkest: #a4a6a8; --ifm-color-secondary-light: #eef0f2; --ifm-color-secondary-lighter: #f1f2f5; ``` ## Typography ### Font Stack - **Product Sans** — Heading 1, Heading 2, Heading 3, Body, Caption ### Font Sources ```css @font-face { font-family: "Product Sans"; src: url("fonts/ProductSans-Regular.ttf") format("truetype"); font-weight: 400; } ``` ### Type Scale | Role | Family | Size | Weight | |------|--------|------|--------| | Heading 1 | Product Sans | 3rem | 700 | | Heading 2 | Product Sans | 2.5rem | 700 | | Heading 3 | Product Sans | 2rem | 700 | | Body | Product Sans | 14px | 400 | | Caption | Product Sans | .9rem | 400 | ### Typography Rules - All text uses **Product Sans** — never add another font family - Max 3-4 font sizes per screen - Headings: weight 600-700, body: weight 400 - Use color and opacity for text hierarchy, not additional font sizes - Line height: 1.5 for body, 1.2 for headings ## Spacing & Layout ### Base Grid: 4px Every dimension (margin, padding, gap, width, height) must be a multiple of **4px**. ### Spacing Scale `2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 36, 48` px ### Spacing as Meaning | Spacing | Use | |---------|-----| | 4-8px | Tight: related items (icon + label, avatar + name) | | 12-16px | Medium: between groups within a section | | 24-32px | Wide: between distinct sections | | 48px+ | Vast: major page section breaks | ### Border Radius Scale: `.2rem, .25rem, .5rem, 1em, 2rem, 2px, 3px, 4px, 6px, 8px, 10px, 20px, 40px, inherit` Default: `4px` ### Container Max-width: `996px`, centered with auto margins. ### Breakpoints | Name | Value | |------|-------| | sm | 576px | | md | 768px | | lg | 996px | | lg | 997px | | lg | 1024px | | 2xl | 1440px | Mobile-first: design for small screens, layer on responsive overrides. ## Component Patterns ### Card ```css .card { background: #393a34; border: 1px solid #2b3137; border-radius: 4px; padding: 16px; box-shadow: var(--ifm-blockquote-shadow); } ``` ```html

Card Title

Card content goes here.

``` ### Button ```css /* Primary */ .btn-primary { background: #cccccc; color: #1c1e21; border-radius: 4px; padding: 8px 16px; font-weight: 500; transition: opacity 150ms ease; } .btn-primary:hover { opacity: 0.9; } /* Ghost */ .btn-ghost { background: transparent; border: 1px solid #2b3137; color: #1c1e21; border-radius: 4px; padding: 8px 16px; } ``` ```html ``` ### Input ```css .input { background: #f6f8fa; border: 1px solid #2b3137; border-radius: 4px; padding: 8px 12px; color: #1c1e21; font-size: 14px; } .input:focus { border-color: var(--accent); outline: none; } ``` ```html ``` ### Badge / Chip ```css .badge { display: inline-flex; align-items: center; padding: 4px 8px; border-radius: 9999px; font-size: 12px; font-weight: 500; background: #393a34; color: #ebedf0; } ``` ```html New Beta ``` ### Modal / Dialog ```css .modal-backdrop { background: rgba(0, 0, 0, 0.6); } .modal { background: #393a34; border: 1px solid #2b3137; border-radius: inherit; padding: 24px; max-width: 480px; width: 90vw; box-shadow: 0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color); } ``` ```html ``` ### Table ```css .table { width: 100%; border-collapse: collapse; } .table th { text-align: left; padding: 8px 12px; font-weight: 500; font-size: 12px; color: #ebedf0; text-transform: uppercase; letter-spacing: 0.05em; border-bottom: 1px solid #2b3137; } .table td { padding: 12px; border-bottom: 1px solid #2b3137; } ``` ```html
NameStatusDate
Item OneActiveJan 1
Item TwoPendingJan 2
``` ### Navigation ```css .nav { display: flex; align-items: center; gap: 8px; padding: 12px 16px; border-bottom: 1px solid #2b3137; } .nav-link { color: #ebedf0; padding: 8px 12px; border-radius: 4px; transition: color 150ms; } .nav-link:hover { color: #1c1e21; } ``` ```html ``` ### Extracted Components These components were found in the codebase: **Button** (`html`) **Navigation** (`html`) ## Page Structure The following page sections were detected: - **Navigation** — Top navigation bar (5 items) - **Hero** — Hero section (detected from heading structure) - **Footer** — Page footer with links and info (4 items) - **Faq** — FAQ/accordion section When building pages, follow this section order and structure. ## Animation & Motion This project uses **subtle motion**. Transitions smooth state changes without calling attention. ### CSS Animations - `a` - `b` ### Motion Tokens - **Duration scale:** `100ms`, `200ms`, `250ms`, `300ms` - **Easing functions:** `ease-in-out`, `linear`, `ease-in`, `ease` - **Animated properties:** `color` ### Motion Guidelines - **Duration:** Use values from the duration scale above. Short (100ms) for micro-interactions, long (300ms) for page transitions - **Easing:** Use `ease-in-out` as the default easing curve - **Direction:** Elements enter from bottom/right, exit to top/left - **Reduced motion:** Always respect `prefers-reduced-motion` — disable animations when set ## Depth & Elevation ### Shadow Tokens - Subtle: `inset 0-1px 0 var(--ifm-color-emphasis-400)` - Raised (cards, buttons): `var(--ifm-blockquote-shadow)` - Raised (cards, buttons): `var(--ifm-global-shadow-lw)` - Raised (cards, buttons): `var(--ifm-global-shadow-md)` - Raised (cards, buttons): `var(--ifm-global-shadow-tl)` - Raised (cards, buttons): `var(--ifm-alert-shadow)` ### Z-Index Scale `10, 200, 300, 1031` Use these exact values — never invent z-index values. ## Anti-Patterns (Never Do) - **No blur effects** — no backdrop-blur, no filter: blur() - **No zebra striping** — tables and lists use borders for separation - **No invented colors** — every hex value must come from the palette above - **No arbitrary spacing** — every dimension is a multiple of 4px - **No extra fonts** — only Product Sans are allowed - **No arbitrary border-radius** — use the scale: .2rem, .25rem, .5rem, 1em, 2rem, 2px, 3px, 4px, 6px, 8px - **No opacity for disabled states** — use muted colors instead ## Workflow 1. **Read** `references/DESIGN.md` before writing any UI code 2. **Pick colors** from the Color System section — never invent new ones 3. **Set typography** — Product Sans only, using the type scale 4. **Build layout** on the 4px grid — check every margin, padding, gap 5. **Match components** to patterns above before creating new ones 6. **Apply elevation** — use shadow tokens 7. **Validate** — every value traces back to a design token. No magic numbers. ## Brand Spec - **Favicon:** `/logos/favicon.png` - **Site URL:** `https://docs.flutterflow.io/designer/` - **Brand typeface:** Product Sans ## Quick Reference ``` Background: #f6f8fa Surface: #393a34 Text: #1c1e21 / #ebedf0 Accent: (not extracted) Border: #2b3137 Font: Product Sans Spacing: 4px grid Radius: 4px Components: 7 detected ``` ## When to Trigger Activate this skill when: - Creating new components, pages, or visual elements for docs - Writing CSS, Tailwind classes, styled-components, or inline styles - Building page layouts, templates, or responsive designs - Reviewing UI code for design consistency - The user mentions "docs" design, style, UI, or theme - Generating mockups, wireframes, or visual prototypes --- # Full Reference Files > Every output file is embedded below. Claude has full design system context from /skills alone. ## Design System Tokens (DESIGN.md) # docs DESIGN.md > Auto-generated design system — reverse-engineered via static analysis by skillui. > Frameworks: None detected > Colors: 20 · Fonts: 1 · Components: 7 > Icon library: not detected · State: not detected > Primary theme: light · Dark mode toggle: no · Motion: subtle ## Visual Reference **Match this design exactly** — study colors, fonts, spacing, and component shapes before writing any UI code. ![docs Homepage](../screenshots/homepage.png) --- ## 1. Visual Theme & Atmosphere This is a **light-themed** interface with a neutral, approachable feel. The light background emphasizes content clarity. Typography uses **Product Sans** throughout — a clean, modern choice that maintains consistency. Spacing follows a **4px base grid** (compact density), with scale: 2, 4, 6, 8, 10, 12, 16, 20px. Motion is subtle — smooth transitions (150-300ms) ease state changes without drawing attention. --- ## 2. Color Palette & Roles | Token | Hex | Role | Use | |---|---|---|---| | ifm-color-primary-contrast-background | `#f6f8fa` | background | Page background, darkest surface | | ifm-card-text-color | `#393a34` | surface | Card and panel backgrounds | | ifm-color-warning-contrast-background | `#fff8e6` | surface | Card and panel backgrounds | | ifm-color-gray-900 | `#1c1e21` | text-primary | Headings and body text | | ifm-color-secondary | `#ebedf0` | text-muted | Captions, placeholders, secondary info | | ifm-color-secondary-contrast-foreground | `#474748` | text-muted | Captions, placeholders, secondary info | | ifm-color-gray-700 | `#606770` | text-muted | Captions, placeholders, secondary info | | ifm-color-secondary-dark | `#d4d5d8` | text-muted | Captions, placeholders, secondary info | | ifm-color-secondary-darker | `#c8c9cc` | text-muted | Captions, placeholders, secondary info | | ifm-footer-background-color | `#2b3137` | border | Dividers, card borders, outlines | | ifm-color-danger | `#fa383e` | danger | Error states, destructive actions | | ifm-color-success | `#00a400` | success | Success states, positive indicators | | ifm-color-warning | `#ffba00` | warning | Warning states, caution indicators | | docsearch-container-background | `#090a11` | info | Informational highlights | | ifm-color-black | `#000000` | unknown | Palette color | | ifm-footer-background-color | `#303846` | unknown | Palette color | | sidebar-hover-bg-color | `#4b39ef` | unknown | Palette color | | ifm-color-primary | `#3578e5` | unknown | Palette color | | ifm-color-info | `#54c7ec` | unknown | Palette color | | ifm-color-primary-dark | `#306cce` | unknown | Palette color | ### CSS Variable Tokens ```css --ifm-card-border-color: var(--ifm-color-primary); --ifm-contrast-background-value: 90%; --ifm-contrast-foreground-value: 70%; --ifm-contrast-background-dark-value: 70%; --ifm-contrast-foreground-dark-value: 90%; --ifm-color-primary: #3578e5; --ifm-color-secondary: #ebedf0; --ifm-color-primary-dark: #306cce; --ifm-color-primary-darker: #2d66c3; --ifm-color-primary-darkest: #2554a0; --ifm-color-primary-light: #538ce9; --ifm-color-primary-lighter: #72a1ed; --ifm-color-primary-lightest: #9abcf2; --ifm-color-primary-contrast-background: #ebf2fc; --ifm-color-primary-contrast-foreground: #102445; --ifm-color-secondary-dark: #d4d5d8; --ifm-color-secondary-darker: #c8c9cc; --ifm-color-secondary-darkest: #a4a6a8; --ifm-color-secondary-light: #eef0f2; --ifm-color-secondary-lighter: #f1f2f5; ``` --- ## 3. Typography Rules **Font Stack:** - **Product Sans** — Heading 1, Heading 2, Heading 3, Body, Caption **Font Sources:** ```css @font-face { font-family: "Product Sans"; src: url("fonts/ProductSans-Regular.ttf") format("truetype"); font-weight: 400; } ``` | Role | Font | Size | Weight | |---|---|---|---| | Heading 1 | Product Sans | 3rem | 700 | | Heading 2 | Product Sans | 2.5rem | 700 | | Heading 3 | Product Sans | 2rem | 700 | | Body | Product Sans | 14px | 400 | | Caption | Product Sans | .9rem | 400 | **Typographic Rules:** - Use **Product Sans** for all text — do not mix font families - Maintain consistent hierarchy: no more than 3-4 font sizes per screen - Headings use bold (600-700), body uses regular (400) - Line height: 1.5 for body text, 1.2 for headings - Use color and opacity for secondary hierarchy, not additional font sizes --- ## 4. Component Stylings ### Layout (1) **Footer** — `html` ### Navigation (1) **Navigation** — `html` ### Data Display (1) **List** — `html` ### Data Input (1) **Button** — `html` - Animation: ### Media (3) **Image** — `html` **Icon** — `html` **Map/Canvas** — `html` --- ## 5. Layout Principles - **Base spacing unit:** 4px - **Spacing scale:** 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 36, 48 - **Border radius:** .2rem, .25rem, .5rem, 1em, 2rem, 2px, 3px, 4px, 6px, 8px, 10px, 20px, 40px, inherit - **Max content width:** 996px **Spacing as Meaning:** | Spacing | Use | |---|---| | 4-8px | Tight: related items within a group | | 12-16px | Medium: between groups | | 24-32px | Wide: between sections | | 48px+ | Vast: major section breaks | --- ## 6. Depth & Elevation ### Flat — subtle depth hints - `inset 0-1px 0 var(--ifm-color-emphasis-400)` ### Raised — cards, buttons, interactive elements - `var(--ifm-blockquote-shadow)` - `var(--ifm-global-shadow-lw)` - `var(--ifm-global-shadow-md)` ### Floating — dropdowns, popovers, modals - `0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color)` - `0 4px 12px #0000001a` - `0 4px 12px #ffffff1a` ### Z-Index Scale `10, 200, 300, 1031` --- ## 7. Animation & Motion This project uses **subtle motion**. Transitions smooth state changes without demanding attention. ### CSS Animations - `@keyframes a` - `@keyframes b` ### Animated Components - **Button**: ### Motion Guidelines - Duration: 150-300ms for micro-interactions, 300-500ms for page transitions - Easing: `ease-out` for enters, `ease-in` for exits - Always respect `prefers-reduced-motion` --- ## 8. Do's and Don'ts ### Do's - Use `#f6f8fa` as the primary page background - Use **Product Sans** for all UI text - Follow the **4px** spacing grid for all margins, padding, and gaps - Use the defined shadow tokens for elevation — see Section 6 - Use border-radius from the scale: .2rem, .25rem, .5rem, 1em, 2rem - Reuse existing components from Section 4 before creating new ones ### Don'ts - Don't introduce colors outside this palette — extend the design tokens first - Don't mix font families — use Product Sans consistently - Don't use arbitrary spacing values — stick to multiples of 4px - Don't create custom box-shadow values outside the system tokens - Don't use arbitrary border-radius values — pick from the defined scale - Don't duplicate component patterns — check Section 4 first - Don't use backdrop-blur or blur effects ### Anti-Patterns (detected from codebase) - No blur or backdrop-blur effects - No zebra striping on tables/lists --- ## 9. Responsive Behavior | Name | Value | Source | |---|---|---| | sm | 576px | css | | md | 768px | css | | lg | 996px | css | | lg | 997px | css | | lg | 1024px | css | | 2xl | 1440px | css | **Approach:** Use `@media (min-width: ...)` queries matching the breakpoints above. --- ## 10. Agent Prompt Guide Use these as starting points when building new UI: ### Build a Card ``` Background: #393a34 Border: 1px solid #2b3137 Radius: 4px Padding: 16px Font: Product Sans Use shadow tokens from Section 6. ``` ### Build a Button ``` Primary: bg var(--accent), text white Ghost: bg transparent, border #2b3137 Padding: 8px 16px Radius: 4px Hover: opacity 0.9 or lighter shade Focus: ring with var(--accent) ``` ### Build a Page Layout ``` Background: #f6f8fa Max-width: 996px, centered Grid: 4px base Responsive: mobile-first, breakpoints from Section 9 ``` ### Build a Stats Card ``` Surface: #393a34 Label: #ebedf0 (muted, 12px, uppercase) Value: #1c1e21 (primary, 24-32px, bold) Status: use success/warning/danger from Section 2 ``` ### Build a Form ``` Input bg: #f6f8fa Input border: 1px solid #2b3137 Focus: border-color var(--accent) Label: #ebedf0 12px Spacing: 16px between fields Radius: 4px ``` ### General Component ``` 1. Read DESIGN.md Sections 2-6 for tokens 2. Colors: only from palette 3. Font: Product Sans, type scale from Section 3 4. Spacing: 4px grid 5. Components: match patterns from Section 4 6. Elevation: shadow tokens ``` ## Bundled Fonts (fonts/) The following font files are bundled in the `fonts/` directory: - `fonts/ProductSans-Regular.ttf` Use these local font files in `@font-face` declarations instead of fetching from Google Fonts. ## Homepage Screenshots (screenshots/) ![homepage.png](screenshots/homepage.png)