Planet-first design system for sustainable digital experiences.
Dark-first, OLED-friendly components with carbon budgets, energy-aware rendering, and accessibility baked in. Built with React, TypeScript, and Tailwind CSS.
- Energy-aware rendering -- components adapt to device battery level and grid carbon intensity
- Carbon tracking -- built-in carbon budget utilities and per-component cost estimation
- Dark-first design -- OLED-optimized themes that reduce screen energy consumption
- Accessible by default -- WCAG 2.1 AA compliant with semantic markup and keyboard support
- Tree-shakeable -- import only what you need with zero side effects
- TypeScript-first -- full type definitions for every component, hook, and utility
- Tailwind CSS integration -- extends your existing Tailwind config with energy-conscious design tokens
npm install @solar-ds/design-systemPeer dependencies: react >= 18.2 and react-dom >= 18.2
import { Button, EnergyAwareProvider } from '@solar-ds/design-system'
import '@solar-ds/design-system/styles'
function App() {
return (
<EnergyAwareProvider>
<Button variant="primary">Get Started</Button>
</EnergyAwareProvider>
)
}Header-- top-level navigation bar with energy mode indicatorStatsGrid-- grid layout for key metric cardsChartCard-- data visualization container with lazy renderingRecentActivity-- time-ordered activity feedTopContent-- featured content highlight section
EnergyModeIndicator-- displays current energy mode (eco, balanced, performance)CarbonFootprint-- visualizes estimated carbon cost of a page or componentClickToLoadMedia-- defers media loading until user interactionGridStatusBadge-- shows real-time electricity grid carbon intensityDataCostBadge-- displays estimated data transfer costCarbonBudgetBar-- progress bar tracking carbon budget consumptionAdaptiveImage-- serves image quality based on device energy profileDeferredContent-- delays rendering of non-critical contentPrintCarbonLabel-- carbon cost label for print stylesheetsSustainabilityScorecard-- overall sustainability metrics dashboard
Button-- primary action element with energy-aware variantsInput-- text input with built-in validationTextarea-- multi-line text inputSelect-- dropdown selection controlCheckbox-- binary toggle with label supportRadio-- single-select option within a groupSwitch-- on/off toggle control
useDeviceEnergyProfile-- returns battery level, charging status, and recommended energy modeuseGridIntensity-- fetches real-time carbon intensity of the user's electricity griduseCarbonCost-- estimates the carbon cost of a component or interactionuseVisibilityPause-- pauses expensive operations when the tab is not visibleuseResourceObserver-- monitors network requests and resource consumptionuseCarbonBudget-- tracks cumulative carbon spend against a configurable budget
Extend your Tailwind configuration with Solar design tokens:
// tailwind.config.js
const solarConfig = require('@solar-ds/design-system/tailwind')
module.exports = {
presets: [solarConfig],
content: [
'./src/**/*.{js,ts,jsx,tsx}',
'./node_modules/@solar-ds/design-system/dist/**/*.{js,mjs}',
],
}npm run dev # showcase app
npm run storybook # component explorer
npm run test # unit tests
npm run build:lib # library buildMIT
Created by Ravi Palwe | GitHub