Repository navigation
Major Changes
-
6c51820: Release 1.0.
The package is a drop-in replacement for Lucide, so its public surface is Lucide's: the component names, the props, and the
DynamicIconlookup are all fixed by what they stand in for. There is no API design left to settle, and staying on 0.x communicated hesitancy rather than instability.This release carries the two corrections that make that surface honest, and both are breaking:
- The 85
-filledexports that rendered outline art are gone, along with their entries inDynamicIcon's name union. strokeWidthreaches the artwork on the 1,788 outline icons that previously ignored it. 74 icons whose source art mixes stroke widths keep their authored values, because scaling them to a single width would flatten the drawing.
Both belong in the release that fixes the API rather than in one that follows it.
- The 85
Minor Changes
-
0a108f2: Remove 85
-filledexports that rendered outline art.The build generated a
-filledalias for every outline icon that had no filled SVG, re-exporting the outline component under the filled name.AmazonFilledIcon,PaypalFilledIcon,KeyFilledIconand 82 others were in the public API and inDynamicIcon's name union, and every one of them drew 2px strokes. Toggling an icon from outline to filled — the thing the pair exists for — changed nothing on screen and raised no error.Breaking: these 85 names no longer exist. Nothing renders differently, because the alias resolved to the outline component the whole time: replace
XFilledIconwithXIconand the pixels are identical. TypeScript flags the static imports at compile time;DynamicIconlogs and falls back for a name it cannot find. No Lucide-compatible alias referenced any of the 85, so that surface is unchanged.A
-filledname is now exported only when a-filledSVG exists. Roughly half of the 85 are brand marks — payment cards, platform logos — where a filled counterpart is not a style the set should be expected to draw; the rest are gaps in the artwork, and the honest signal for a gap is a missing export rather than a name that quietly points somewhere else.Dropped:
amazon,apple-podcast,arrow-curve-down-left,arrow-curve-right,arrow-from-line-down,arrow-from-line-up,arrow-merge-left,arrow-merge-right,audible,audio-bars,beehiiv,branches,brand-amex,brand-jcb,brand-mastercard,brand-visa,brand-zoom,buymeacoffee,cable-knife,cashapp,chevron-down,chevron-up,circle-exclamation,circle-outline,cloud-dots,copy-simple,doordash,dot-grid-2x3-horizontal,dot-grid-2x3-vertical,dot-small,exposure,file-arrow-left,file-arrow-left-2,file-arrow-right,file-arrow-right-2,flick,four-k,frame-simple,git-commit-vertical,google-colored,google-play,info,kakaotalk,key,kick,knife-spoon,land-plot-simple,line-brand,login,macinthosh,magic,mailchimp,meandu,onlyfans,opentable,paypal,pencel-line,person-simple,pie-chart,quote,roundness,satellite,sevenrooms,shopify,sidebar-left-arrow-right,signal,slash-forward,soundcloud,square-arrow-down-2,square-arrow-left,square-arrow-right,square-arrow-up-2,tactics,three-d-sphere,trending-down-simple,uber,verified-check,video-play,vimeo,vk,voice,waves-simple,weibo,windows-colored,x-twitter— each-filled. -
5056dd6: Make
strokeWidthactually change the stroke.The prop was accepted, documented, and inert: every generated component hardcoded
strokeWidth={2}on its children, and a child presentation attribute beats the one inherited from the<svg>the prop lands on. The build now strips that attribute so the prop reaches the artwork — 1,788 outline icons that previously ignored it.This is a visual change for anyone already passing
strokeWidthand getting nothing: those icons will now render at the width they asked for instead of at 2. Rendering at the defaultstrokeWidth={2}is unchanged.The strip is per icon and all-or-nothing. 80 icons keep hardcoded widths because their strokes are optically tuned — an interior mark thinned to 1.8 so it does not clog beside a 2px container — and stripping some widths but not others would invert that adjustment at low stroke widths.
strokeWidthalso cannot reach any filled icon, whose art is outline-expanded into afillwith no stroke left to vary (lucide-react behaves the same way). SeeDESIGN.mdfor the full list and the reasoning.
Patch Changes
-
0a108f2: Cover every icon with metadata, and give each concept one answer.
96 outline SVGs shipped with no
icons-datarecord, so they were absent from category listings and unreachable by keyword search; one record (cloud-, a typo ofcloud) named an icon that does not exist. Both are now filled in and both directions are checked —validate:icons-datafails if metadata and outline art stop covering each other exactly._categories.jsoncarriedVehiclesandVehicles & Aircraftsas separate categories; they are merged intoVehicles.New:
icons-data/_concepts.json, a table of 114 UI concepts each mapping to exactly one canonical slug —delete → trash-can,search → magnifying-glass,settings → settings-gear-1. It answers "what is the icon for X?" with one icon and keeps answering with one, so the set cannot quietly grow two icons for the same idea. Validation checks that every target resolves to a real icon and that no concept has been given a second answer.