mirror of
https://github.com/Dvorinka/excalidraw-full.git
synced 2026-06-03 13:52:56 +00:00
8.9 KiB
8.9 KiB
Excalidraw FULL - Frontend Design System
Design Context
Target Audience
- Product teams who need visual collaboration tools
- Developers creating architecture diagrams, flowcharts
- Designers wireframing and prototyping
- Educators and facilitators running workshops
- Anyone who prefers hand-drawn aesthetics over sterile diagrams
Use Cases
- Brainstorming and ideation sessions
- System architecture and technical diagrams
- UI/UX wireframing and user flows
- Kanban boards and project planning
- Meeting notes and retrospectives
- Mind mapping and knowledge organization
Brand Personality
Hand-crafted technical workspace
- Human and approachable (hand-drawn aesthetic)
- Professional but not sterile
- Creative and collaborative
- Calm, uncluttered interface
- Self-hosted, privacy-conscious
Tone
Warm minimalism meets technical precision. The hand-drawn style softens technical content, making complex diagrams feel accessible and collaborative.
Color System
Primary Palette
--color-primary: #6965db; /* Main purple */
--color-primary-darker: #5b57d1; /* Hover states */
--color-primary-darkest: #4a47b1; /* Active states */
--color-primary-light: #e3e2fe; /* Subtle backgrounds */
--color-primary-hover: #5753d0; /* Interactive hover */
Neutral Palette
--color-gray-10: #f5f5f5; /* Lightest background */
--color-gray-20: #ebebeb; /* Card backgrounds */
--color-gray-30: #d6d6d6; /* Borders subtle */
--color-gray-40: #b8b8b8; /* Disabled states */
--color-gray-50: #999999; /* Muted text */
--color-gray-60: #7a7a7a; /* Secondary text */
--color-gray-70: #5c5c5c; /* Body text light */
--color-gray-80: #3d3d3d; /* Body text */
--color-gray-85: #242424; /* Headings */
--color-gray-90: #1e1e1e; /* Strong text */
--color-gray-100: #121212; /* Near black */
Semantic Colors
--color-success: #cafccc;
--color-success-text: #268029;
--color-warning: #fceeca;
--color-warning-dark: #f5c354;
--color-danger: #db6965;
--color-danger-dark: #d65550;
--color-danger-text: #700000;
Surface Colors (Light Mode)
--island-bg-color: #ffffff;
--color-surface-low: #f8f9fa;
--color-surface-high: #e9ecef;
--color-surface-primary-container: #e3e2fe;
--color-on-surface: #1e1e1e;
--color-on-primary-container: #4a47b1;
Typography
Font Stack
--ui-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--editor-font: "Virgil", "Cascadia", "Segoe UI", sans-serif; /* Hand-drawn feel */
Type Scale
--text-xs: 0.75rem; /* 12px - Captions, labels */
--text-sm: 0.875rem; /* 14px - Secondary text */
--text-base: 1rem; /* 16px - Body text */
--text-lg: 1.125rem; /* 18px - Large body */
--text-xl: 1.25rem; /* 20px - H4 */
--text-2xl: 1.5rem; /* 24px - H3 */
--text-3xl: 1.875rem; /* 30px - H2 */
--text-4xl: 2.25rem; /* 36px - H1 */
Font Weights
- 400 Regular - Body text
- 500 Medium - Emphasis, labels
- 600 Semibold - Subheadings
- 700 Bold - Headings, important text
Spacing System
Base Unit
--space-factor: 0.25rem; /* 4px base */
Scale
--space-1: 0.25rem; /* 4px */
--space-2: 0.5rem; /* 8px */
--space-3: 0.75rem; /* 12px */
--space-4: 1rem; /* 16px */
--space-5: 1.25rem; /* 20px */
--space-6: 1.5rem; /* 24px */
--space-8: 2rem; /* 32px */
--space-10: 2.5rem; /* 40px */
--space-12: 3rem; /* 48px */
--space-16: 4rem; /* 64px */
Component Patterns
Island Pattern (Excalidraw Signature)
Floating container with subtle shadow:
.island {
background: var(--island-bg-color);
border-radius: var(--border-radius-lg);
box-shadow: var(--shadow-island);
padding: var(--space-4);
}
Buttons
Primary Button
.btn-primary {
background: var(--color-primary);
color: white;
border-radius: var(--border-radius-lg);
padding: 0.625rem 1rem;
font-weight: 500;
&:hover { background: var(--color-primary-hover); }
&:active { background: var(--color-primary-darkest); }
}
Secondary Button
.btn-secondary {
background: var(--color-surface-low);
color: var(--color-on-surface);
border: 1px solid var(--color-surface-high);
border-radius: var(--border-radius-lg);
&:hover { background: var(--color-surface-high); }
}
Ghost Button
.btn-ghost {
background: transparent;
color: var(--color-on-surface);
&:hover { background: var(--color-surface-low); }
}
Cards
Drawing Card
.drawing-card {
background: var(--island-bg-color);
border-radius: var(--border-radius-lg);
box-shadow: var(--shadow-island);
overflow: hidden;
transition: transform 0.15s ease, box-shadow 0.15s ease;
&:hover {
transform: translateY(-2px);
box-shadow: var(--shadow-island-stronger);
}
}
Form Inputs
Text Input
.input {
background: var(--input-bg-color);
border: 1px solid var(--input-border-color);
border-radius: var(--border-radius-md);
padding: 0.5rem 0.75rem;
font-size: var(--text-base);
&:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 3px var(--color-primary-light);
}
&:hover:not(:focus) {
background: var(--input-hover-bg-color);
}
}
Layout Patterns
App Shell Structure
┌─────────────────────────────────────────────────────────┐
│ Sidebar │ Header │
│ ├─────────────────────────────────────────────┤
│ │ │
│ Navigation │ Main Content │
│ │ │
│ │ │
│ │ │
└─────────────┴─────────────────────────────────────────────┘
Dashboard Grid
.dashboard-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: var(--space-6);
}
Sidebar Navigation
.sidebar {
width: 260px;
background: var(--island-bg-color);
border-right: 1px solid var(--color-gray-20);
padding: var(--space-4);
}
Shadows & Effects
--shadow-island: 0px 0px 1px 0px rgba(0, 0, 0, 0.17),
0px 0px 3px 0px rgba(0, 0, 0, 0.08),
0px 7px 14px 0px rgba(0, 0, 0, 0.05);
--shadow-island-stronger: 0px 0px 1px 0px rgba(0, 0, 0, 0.17),
0px 0px 3px 0px rgba(0, 0, 0, 0.08),
0px 7px 14px 0px rgb(0 0 0 / 18%);
--modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),
0px 41.7776px 33.4221px rgba(0, 0, 0, 0.05),
0px 22.3363px 17.869px rgba(0, 0, 0, 0.04);
Border Radius
--border-radius-sm: 0.25rem; /* 4px */
--border-radius-md: 0.375rem; /* 6px */
--border-radius-lg: 0.5rem; /* 8px */
--border-radius-xl: 0.75rem; /* 12px */
--border-radius-full: 9999px; /* Pills, avatars */
Animation & Transitions
Timing
--duration-fast: 0.15s;
--duration-normal: 0.2s;
--duration-slow: 0.3s;
Easing
--ease-out: cubic-bezier(0.4, 0, 0.2, 1);
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
Common Transitions
/* Hover states */
transition: background-color var(--duration-fast) var(--ease-out);
/* Card interactions */
transition: transform var(--duration-fast) var(--ease-out),
box-shadow var(--duration-fast) var(--ease-out);
/* Modal/dialog */
transition: opacity var(--duration-normal) var(--ease-out),
transform var(--duration-normal) var(--ease-out);
Icon System
- 16px (default-icon-size) for inline UI
- 20px (lg-icon-size) for buttons
- 24px for navigation
- Lucide icons preferred for consistency
- Stroke width: 1.5px - 2px
Responsive Breakpoints
--breakpoint-sm: 640px;
--breakpoint-md: 768px;
--breakpoint-lg: 1024px;
--breakpoint-xl: 1280px;
--breakpoint-2xl: 1536px;
Page Specifications
Dashboard
- Grid of drawing cards with thumbnails
- Recent activity sidebar
- Quick actions header
- Team selector
File Browser
- Folder tree sidebar
- Breadcrumb navigation
- Sortable/filterable drawing list
- Bulk actions toolbar
Auth Pages
- Centered card layout
- Clean, minimal design
- Clear call-to-action
- Social auth buttons (GitHub)
Editor (Canvas)
- Full-screen canvas
- Minimal surrounding UI
- Floating toolbars (island pattern)
- Collapsible side panels
Settings
- Tabbed interface
- Sidebar navigation for sections
- Clear section headers
- Form-based layout