[Feature Request] Paper icon system — renderless Icon component + alias resolution via createTokens
Open
Nobody has claimed this yet.
E: createSelection
E: createTokens
enhancement
paper
- Dominant language
- TypeScript
- Stars
- 735
- Forks
- 10
- Avg merge
- 10h 47m
- Merged PRs (30d)
- 72
Description
Summary
Icon system for Paper — renderless <Icon> component with alias resolution powered by createTokens. Design systems provide their icon set (UnoCSS classes, SVGs, etc.), Paper handles the plumbing.
Approach
- Alias resolution via
createTokens(e.g.{ close: 'i-mdi-close', menu: 'i-mdi-menu' }) - Renderless
<Icon>component that resolves alias → value, design system decides rendering - UnoCSS
presetIconshandles actual icon rendering via CSS classes - No icon set opinions at this layer — that's the design system's job
Out of Scope
- v0 level: no dedicated
createIconscomposable needed (createTokens covers alias mapping) - Specific icon sets (mdi, fa, etc.) — design system chooses
Related
- v0
createTokens— foundation for alias resolution - UnoCSS
presetIcons— rendering viai-mdi-*classes - Vuetify
mdi-unocssicon set (PR #22117) — reference implementation
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the v0 createTokens foundation and the Vuetify mdi-unocss PR #22117 reference implementation. Define the renderless Icon component around alias-to-value resolution, leaving icon rendering to the design system; done means aliases resolve through createTokens without imposing an icon set.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100