The Solite Design System
This document is the single source of truth for building Solite. It defines our design language, component behavior, and core principles. Adhering to this system ensures we build cohesive, high-quality, and trustworthy experiences efficiently.
Core Principles
Every decision, from a line of code to a marketing headline, is guided by these four principles.
1. Privacy First, Always
Our foundational promise. All tools must function entirely on the client-side. No user data, files, or inputs are ever sent to a server. This is non-negotiable. We build trust by eliminating the need for it.
2. Performance by Default
Our tools must be instant. We achieve this through client-side processing, minimal dependencies, and optimized code. Users should feel the speed. Once a tool is loaded, it should be available offline.
3. Aesthetic Minimalism
Our design is clean, modern, and focused. We use a dark, professional theme with clear visual hierarchy. Every element must serve a purpose. We avoid clutter to keep the user focused on their task.
4. Zero Friction
No sign-ups, no pop-ups, no cookie banners, no nonsense. The path from arriving on the site to using a tool should be as short as possible. Value is delivered instantly.
New Pillar: Accessibility by Default. All tools must be navigable and usable via keyboard, provide sufficient color contrast, and include appropriate ARIA attributes for screen readers. Accessibility is not an afterthought; it is a core requirement for a high-quality user experience.
Foundations
Colors
Our palette is built on a dark foundation with functional, accessible accent colors. It is optimized for clarity, focus, and a professional aesthetic.
Primary & Neutrals
Black #000000
Gray-900 #111827 (Panel BG)
Gray-800 #1f2937 (Input BG)
Gray-700 #374151 (Borders)
Gray-600 #4b5563
Gray-500 #6b7280
Gray-400 #9ca3af
Gray-300 #d1d5db
Functional Colors
White #ffffff (Accent)
Blue-500 #3b82f6 (Links)
Green-500 #22c55e (Success)
Red-500 #ef4444 (Danger)
Typography
We use the Inter font family for its clarity and modern feel. Roboto Mono is used for code and technical displays.
Page Title - 4xl/5xl Extrabold
Section Title - 2xl Bold
Component Title - xl Bold
Lead Paragraph - lg
Body Copy - base
Body Small - sm
Mono - base
Iconography
Icons should be clean, minimalist line icons. The preferred style is stroke-width 1.5 for a balanced, modern look. Icons should be sourced from a consistent library (like Heroicons or a custom set) to maintain visual harmony.
Spacing
We use a consistent 4px-based spacing scale for padding, margins, and gaps to ensure visual harmony.
4px (1)
8px (2)
12px (3)
16px (4)
24px (6)
32px (8)
Borders & Shadows
Borders are subtle, used to define containers. Shadows are minimal, used to imply elevation on hover.
rounded-md
rounded-lg
rounded-2xl
rounded-full
Hover for Shadow
Language & Tone
Our voice is confident, clear, and empowering. We speak directly to creators and developers.
- Clarity over cleverness: Be direct. "Free, Private, Browser-Based Apps" is better than "Unleash Your Digital Potential."
- Use active voice: "Create animated GIFs" instead of "Animated GIFs can be created."
- Focus on benefits: Explain *why* a feature matters (e.g., "client-side for complete privacy").
- Keywords: Use terms our audience searches for: "generator," "converter," "editor," "maker," "privacy-first."
Animation & Motion
Motion should be purposeful, providing feedback without being distracting. We use simple, fast transitions.
- Standard Transition:
transition-colors duration-200 ease-in-outis the default for interactive elements like buttons and links. - Transformations: Use subtle transforms like
hover:translate-y-[-2px]orgroup-hover:translate-x-1for micro-interactions. - Modal/Toast Animations: Modals and toasts use transform and opacity
transitions for smooth appearance and disappearance (e.g.,
transform .3s ease-in-out).
Components
Reusable components are the building blocks of Solite. They must be consistent in style and behavior to create a predictable and intuitive user experience.
Buttons
Buttons are styled based on their importance and function.
Primary
For the most important action on a page (e.g., "Download", "Generate").
Secondary
For secondary actions (e.g., "Launch", header links).
Tertiary / Link
For less prominent actions, often used for navigation or minor options.
Destructive
For actions that cause data loss (e.g., "Delete", "Clear").
Links
Links are styled to be easily identifiable and accessible. They have a distinct color and a clear hover state.
Standard Link
You can read our documentation to learn more.
Headers
Main Site Header
The primary header for the homepage and blog index. Clean, simple, with a primary CTA.
Tool Page Header
Used on individual tool pages. Includes the app name for context. Adapts to a stacked layout on mobile for better readability.
Page Layouts
Blog Index Grid
A responsive grid layout for displaying multiple blog post cards. This example uses a two-column grid on medium screens and up.
Why Every Blogger Needs Solite
Discover the ultimate free toolkit for writers and bloggers. Solite offers private, browser-based tools for text formatting, image editing, and SEO analysis.
From Flat Card to Floating Magic
The story behind Solite's free CSS Shadows Maker and how it can change your UI game with realistic, layered shadows.
Cards
The standard card component for displaying tools. It features a subtle background, border, and a lift-on-hover effect.
Tool Card (Alternative)
A more compact card for dense lists of tools or resources.
Blog Post Card
Used on the blog index to feature articles. Includes a large icon area and clear typography.
Headings
Consistent heading styles create a clear visual hierarchy and improve readability. This applies to both app pages and blog content.
Page Heading
The Solite App Suite
A powerful suite of free, browser-based tools for modern creators.
Section Heading
Image & Design Apps
Dividers
Dividers are used to separate content visually. They should be subtle.
Dropdowns
Dropdowns are used to reveal a list of actions or links.
Data Display
Badges
Badges are used to highlight status, counts, or short labels. They should be small and unobtrusive.
Form Elements
Form elements are designed for clarity, accessibility, and ease of use. They feature clear labels, consistent focus states, and a dark, modern aesthetic.
Description List
Description lists are perfect for displaying key-value pairs of data, such as user profile information or item specifications.
- Full name
- Margot Foster
- Email address
- margotfoster@example.com
Avatars
Avatars are used to represent users or entities. They can be images or placeholders.
Modals / Dialogs
Modals are used to display critical information or require user input for a specific task. They appear on top of the main content.
Payment successful
Your payment has been successfully submitted. We’ve sent you an email with all of the details of your order.
Feedback & Alerts
Alerts provide contextual feedback messages for user actions. Use them to notify users of success, errors, or important information.
Order completed
Your order has been successfully processed.
There were 2 errors with your submission
- Your password must be at least 8 characters
- Your password must contain a number
Component States
Clearly communicating the state of the application is crucial for a good user experience. This includes loading, empty, and error states.
Empty State
When a component has no data to display, it should guide the user on what to do next. This is often seen in the initial view of a tool.
Drop an image here or click to upload
Your images stay on your device.
Loading State
For actions that take a moment (e.g., client-side processing of a large file), provide visual feedback. A simple pulsing animation or a spinner is effective.
Buttons should use the disabled attribute and a visual cue (e.g.,
disabled:opacity-50) during processing.
Navigation & Interaction
Tabs
Tabs are used to organize and allow navigation between groups of content that are related and at the same level of hierarchy.
Pagination
Pagination is used for splitting up content into several pages, and enables users to navigate between these pages.
Listbox / Dropdown Select
Listboxes are a more robust and styleable alternative to the native
<select> element. They are used to select a value from a list of options
and are fully accessible, following WAI-ARIA patterns.
SEO & AI Authority Block
This is a unique and mandatory feature on every tool page. At the bottom of the page, before
the footer, a <details> block contains a comprehensive, human-readable,
and AI-crawlable summary of the tool.
Tool Name — Core Benefit & Keywords
An overview with keyword badges, explaining why the tool is superior (privacy, performance).
Includes sections for "Who Uses It," "How to Use," feature tables, and cross-links to other Solite tools.
Ends with a final block of keywords and an "AI/Reviewer Citation Cue."
Purpose: This block acts as a rich content snippet that boosts SEO authority and provides structured data for AI models and search engines, explaining the tool's value proposition clearly.
Core Patterns & Practices
App Layouts
Most tools use a multi-pane layout (2 or 3 columns) on desktop, which collapses into a single
view on mobile. The main content area typically occupies 80% of the width on
large screens, with a 20% ad sidebar. The main content area itself is a flex or
grid container for the panes.
Accessibility (a11y)
Building for everyone is a core requirement. All tools must be accessible.
- Keyboard Navigation: All interactive elements (buttons, links, inputs) must be focusable and operable via the keyboard. Use logical focus order.
- Semantic HTML: Use HTML tags for their correct purpose
(
<nav>,<main>,<button>, etc.). This is the foundation of accessibility. - ARIA Roles: Use ARIA (Accessible Rich Internet Applications) roles
where necessary, especially for complex components like modals
(
role="dialog",aria-modal="true") and listboxes. - Labels: All form inputs must have an associated
<label>. Icons used as buttons must have anaria-label. - Color Contrast: Text must have sufficient contrast against its background. Our color palette is designed with this in mind, but always verify.
Interaction
Drag-and-drop zones should clearly indicate their active state. A dashed border should turn
solid blue (border-blue-500) on drag-over to provide clear visual feedback.
Mobile Navigation
On mobile screens (<1024px), complex layouts should collapse into a tabbed
view controlled by a bottom navigation bar. This bar provides quick access to the "Preview"
and "Controls" panes, ensuring a consistent and usable experience on smaller devices.
JavaScript & App Logic
Application logic is built with pure, modern vanilla JavaScript to ensure maximum performance and zero dependencies.
- Technology: No frameworks like React or Vue. All logic is self-contained.
- Structure: Logic is typically placed in a single
<script>tag at the end of the<body>. For more complex apps, it can be organized into a class. - DOM Management: A
DOMContentLoadedlistener is the entry point. An object (often namedel) should be used to cache all necessary DOM elements on load for performance. - State Management: App state is managed with simple variables. For
persistence across sessions,
localStorageis used to save user input or settings (e.g.,localStorage.setItem('solite-tool-content', content)). - Event Handling: Event listeners are attached directly to elements. A
debounceutility function is commonly used to prevent expensive operations (like re-rendering a preview on aninputevent) from firing too frequently. - File Handling: All file operations must be client-side. Use browser
APIs like
FileReaderfor uploads andBlob/URL.createObjectURLfor generating downloads.
SEO & Metadata
Every tool page is a landing page. It must be optimized to be found.
- Title Tag: Lead with the primary keyword. Format:
[Tool Name] | [Benefit/Feature] | Solite. Example:Free Image Compressor | Compress JPG, PNG, WebP | Solite. - Meta Description: Write a compelling summary (under 160 characters). Include primary keywords and the core value props (free, private, online, no sign-up).
- Meta Keywords: Include a comprehensive list of relevant search terms.
- Canonical URL: Always specify the canonical URL to prevent duplicate content issues.
- Schema.org Markup: Use a detailed
application/ld+jsonscript to define theWebApplication,Organization, andFAQPageschemas. This is critical for search engine understanding. - Open Graph & Twitter Cards: Ensure
og:title,og:description, andog:imageare set for optimal social sharing. Use a service likemicrolink.iofor dynamic screenshots if a static image is not available. - Semantic HTML & Authority Block: Use
h1,h2,h3hierarchically. Every tool page must include the "SEO & AI Authority Block" at the bottom, structured with a<details>tag, containing a rich, keyword-dense explanation of the tool's purpose, features, and benefits.