What to build
A thin wrapper around Solar Icons that exposes a consistent size and color API driven by design tokens.
Set up:
Icon component with props: name (Solar icon name union type), size (maps to spacing tokens: sm/md/lg/xl or raw pixel value), variant (Solar style: linear/bold/outline/broken), color (defaults to currentColor)
solar-icon-set declared as a peer dependency — consuming apps install it directly to control which icon styles are bundled
- Full TypeScript types for
name (autocomplete from Solar Icons enum/union) and other props
- Storybook story showing all variants and sizes
Tests (Vitest + Testing Library):
- Unknown
name value does not crash — renders nothing or a fallback without throwing
size prop maps to correct pixel dimensions
Acceptance criteria
Blocked by
What to build
A thin wrapper around Solar Icons that exposes a consistent size and color API driven by design tokens.
Set up:
Iconcomponent with props:name(Solar icon name union type),size(maps to spacing tokens:sm/md/lg/xlor raw pixel value),variant(Solar style:linear/bold/outline/broken),color(defaults tocurrentColor)solar-icon-setdeclared as a peer dependency — consuming apps install it directly to control which icon styles are bundledname(autocomplete from Solar Icons enum/union) and other propsTests (Vitest + Testing Library):
namevalue does not crash — renders nothing or a fallback without throwingsizeprop maps to correct pixel dimensionsAcceptance criteria
<Icon name="Home" size="md" variant="linear" />renders the correct Solar iconsizeprop values (sm/md/lg/xl) map to consistent pixel dimensions via spacing tokensnamepropsolar-icon-setis inpeerDependencies, notdependenciesBlocked by