Theming
The admin dashboard supports light and dark themes out of the box, with automatic system preference detection.Theme Provider
The dashboard uses aThemeProvider (packages/admin/dashboard/src/providers/theme-provider/theme-provider.tsx) that:
- Persists theme selection to localStorage
- Supports
light,dark, andsystemoptions - Applies theme changes without page reload
- Manages smooth transitions between themes
Theme Context
Access the current theme in your custom components:Color Customization
The dashboard uses CSS variables for theming. You can override these in your own CSS:Branding
Custom Logo
To replace the Medusa logo with your own:Prepare Your Logo
Create SVG or PNG versions of your logo:
- Full logo (for sidebar)
- Icon/mark (for collapsed sidebar)
- Recommended size: SVG or 200x50px PNG
Custom Fonts
Add custom fonts to match your brand:Favicon
To customize the favicon:- Add your favicon files to the public directory
- Update the HTML head in your build configuration
Layout Customization
Sidebar Configuration
The sidebar can be customized through theSidebarProvider:
Custom Navigation
Add custom menu items to the sidebar:Styling Components
Using Medusa UI Components
The dashboard includes the@medusajs/ui design system:
Tailwind CSS
The dashboard uses Tailwind CSS for styling. All Tailwind utilities are available:Custom CSS
Add global styles by creating a CSS file:Advanced Customization
Custom Provider
Wrap the dashboard in your own provider:Internationalization
Customize or add translations:Best Practices
Maintain Theme Consistency
Maintain Theme Consistency
Always use CSS variables and Tailwind utilities instead of hard-coded colors to ensure your customizations work in both light and dark modes.
Use Design System Components
Use Design System Components
Leverage the
@medusajs/ui components for consistency and automatic theme support.Test Responsive Design
Test Responsive Design
Ensure your customizations work well on mobile, tablet, and desktop screens.
Optimize Performance
Optimize Performance
Keep custom CSS minimal and avoid heavy JavaScript in the main bundle.
Next Steps
- Learn how to add custom routes
- Create custom widgets to extend pages
- Review the JavaScript SDK for API integration