@@ -139,66 +139,89 @@ import {
139139 Instagram ,
140140 Linkedin ,
141141 InspectionPanel ,
142+ GitMerge ,
143+ GitPullRequest ,
144+ GitBranch ,
145+ PencilRuler ,
146+ GitGraph ,
147+ PencilLine ,
148+ Pen ,
149+ Pencil ,
150+ Pin ,
151+ GitCommitVertical ,
142152} from '@react-zero-ui/icon-sprite' ;
143153import Link from 'next/link' ;
154+ import HeaderBar from '../components/HeaderBar' ;
155+ import StatsCard from '../components/StatsCard' ;
156+ import { SectionGrid } from '../components/SectionGrid' ;
157+
158+ export const metadata = {
159+ title : 'React Zero Icon Sprite - Lucide to SVG sprite solution' ,
160+ description :
161+ 'Reduce HTML bundle by 300%. Use thousands of Lucide icons in React with a single SVG sprite. Zero client-side re-renders, tiny bundles, and instant performance.' ,
162+ alternates : { canonical : 'https://zero-ui.dev/icon-sprite' } ,
163+ } ;
144164
145165const page = ( ) => {
146166 return (
147167 < div className = "min-h-screen bg-gradient-to-b from-slate-50 to-white dark:from-slate-900 dark:to-slate-950" >
148168 < main className = "mx-auto max-w-7xl px-4 py-8 space-y-6" >
149- < div className = "flex flex-col gap-4 md:flex-row md:items-center md:justify-between" >
150- < div >
151- < h1 className = "text-3xl font-semibold tracking-tight" > Zero UI Icon Sprite </ h1 >
152- < p className = "mt-1 text-sm text-slate-600 dark:text-slate-300" >
169+ < HeaderBar
170+ title = "Zero UI Icon Sprite"
171+ subtitle = {
172+ < >
153173 Lucide to SVG sprite solution for React. w/custom icon support.{ ' ' }
154174 < Link
155175 href = "https://github.com/react-zero-ui/icon-sprite#readme"
156176 className = "text-blue-500 hover:underline"
157177 target = "_blank" >
158178 See Github
159179 </ Link >
160- </ p >
161- </ div >
162- < div className = "inline-flex rounded-xl border border-slate-200 dark:border-slate-700 bg-white/70 w-fit dark:bg-slate-900/60 backdrop-blur supports-[backdrop-filter]:bg-white/50 shadow-sm overflow-hidden" >
163- < Link
164- href = "/zero-icon-sprite"
165- className = "px-3 py-2 text-sm font-medium bg-slate-900 text-white dark:bg-white dark:text-slate-900 w-fit"
166- aria-current = "page" >
167- Zero UI Sprite
168- </ Link >
169- < Link
170- href = "/lucide-react"
171- className = "px-3 py-2 text-sm font-medium text-slate-700 hover:bg-slate-50 dark:text-slate-300 dark:hover:bg-slate-700 w-fit" >
172- Lucide React
173- </ Link >
174- </ div >
175- </ div >
180+ </ >
181+ }
182+ activeTab = "sprite"
183+ />
176184
177185 < section className = "grid grid-cols-1 gap-3 sm:grid-cols-2" >
178- < div className = "rounded-2xl border border-slate-200 dark:border-slate-700 bg-white/70 dark:bg-slate-900/60 backdrop-blur supports-[backdrop-filter]:bg-white/50 p-4 shadow-sm" >
179- < div className = "text-xs uppercase tracking-wide text-slate-500" > This page</ div >
180- < div className = "mt-1 flex items-baseline gap-2" >
181- < div className = "text-xl sm:text-2xl font-semibold" > HTML size: 6.9kb</ div >
182- < span className = "inline-flex items-center rounded-full bg-green-100 text-green-700 px-2 py-0.5 text-xs font-medium" > -290%</ span >
183- </ div >
184- </ div >
185- < div className = "rounded-2xl border border-slate-200 dark:border-slate-700 bg-white/70 dark:bg-slate-900/60 backdrop-blur supports-[backdrop-filter]:bg-white/50 p-4 shadow-sm" >
186- < div className = "text-xs uppercase tracking-wide text-slate-500" > Lucide React page</ div >
187- < div className = "mt-1 flex items-baseline gap-2" >
188- < div className = "text-xl sm:text-2xl font-semibold" > HTML size: 19.5kb</ div >
189- < span className = "inline-flex items-center rounded-full bg-red-100 text-red-700 px-2 py-0.5 text-xs font-medium" > +290%</ span >
190- </ div >
191- </ div >
186+ < StatsCard
187+ title = "This page"
188+ value = "8.5kb"
189+ badgeText = "-290%"
190+ badgeTone = "positive"
191+ />
192+ < StatsCard
193+ title = "Lucide React page"
194+ value = "23.0kb"
195+ badgeText = "+270%"
196+ badgeTone = "negative"
197+ />
192198 </ section >
193199
194200 < p className = "text-sm text-slate-600 dark:text-slate-300" > Open DevTools → Elements to compare document size and structure.</ p >
195201
196- < div className = "rounded-2xl border border-slate-200 dark:border-slate-700 bg-white/70 dark:bg-slate-900/60 backdrop-blur supports-[backdrop-filter]:bg-white/50 p-4 shadow-sm" >
202+ < div className = "rounded-2xl border border-slate-200 dark:border-slate-700 bg-white/70 dark:bg-slate-900/60 p-4 shadow-sm" >
197203 < div className = "mb-3 flex items-center justify-between" >
198- < h2 className = "text-sm font-medium text-slate-700 dark:text-slate-200" > 150 Icons</ h2 >
204+ < h2 className = "text-sm font-medium text-slate-700 dark:text-slate-200" > 150 Icons - loaded with Zero Icon Sprite </ h2 >
199205 < div className = "text-xs text-slate-500" > Sprite-based rendering</ div >
200206 </ div >
201- < div className = "grid grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10 gap-2 md:gap-3 **:rounded-md **:bg-blue-600 **:text-white **:p-2 **:shadow-sm **:transition **:duration-150 **:hover:scale-105 **:w-9 **:h-9 justify-items-center" >
207+ < SectionGrid >
208+ < Facebook size = { 24 } />
209+ < Instagram
210+ height = { 24 }
211+ width = { 24 }
212+ />
213+ < Linkedin size = { 24 } />
214+ < InspectionPanel size = { 24 } />
215+ < Pin size = { 24 } />
216+ < Pencil size = { 24 } />
217+ < Pen size = { 24 } />
218+ < PencilLine size = { 24 } />
219+ < PencilRuler size = { 24 } />
220+ < GitGraph size = { 24 } />
221+ < GitBranch size = { 24 } />
222+ < GitPullRequest size = { 24 } />
223+ < GitMerge size = { 24 } />
224+ < GitCommitVertical size = { 24 } />
202225 < AlarmSmoke size = { 24 } />
203226 < Album size = { 24 } />
204227 < AArrowDown size = { 24 } />
@@ -335,11 +358,7 @@ const page = () => {
335358 < Bath size = { 24 } />
336359 < Battery size = { 24 } />
337360 < BluetoothSearching size = { 24 } />
338- < Facebook size = { 24 } />
339- < Instagram size = { 24 } />
340- < Linkedin size = { 24 } />
341- < InspectionPanel size = { 24 } />
342- </ div >
361+ </ SectionGrid >
343362 </ div >
344363 </ main >
345364 </ div >
0 commit comments