1import{j as s,U as t,aa as a}from"./index-DwOsqt_4.js";import{t as o,d as n}from"./nativeDownload-ruPHFkyf.js";const i=[{size:192,src:"/icons/icon-192.png",purpose:"any"},{size:256,src:"/icons/icon-256.png",purpose:"any"},{size:384,src:"/icons/icon-384.png",purpose:"any"},{size:512,src:"/icons/icon-512.png",purpose:"any"},{size:192,src:"/icons/icon-192-maskable.png",purpose:"maskable"},{size:512,src:"/icons/icon-512-maskable.png",purpose:"maskable"}];function c(){return s.jsxs("div",{className:"w-full max-w-[120rem] mx-auto px-5 sm:px-8 pt-10 pb-32",children:[s.jsxs("div",{className:"text-center mb-10",children:[s.jsx("h1",{className:"font-serif text-3xl font-bold text-foreground mb-2",children:"Manifest Icons"}),s.jsxs("p",{className:"font-sans text-sm text-muted-foreground",children:["These are the real icon files served from ",s.jsx("code",{children:"/icons/"})," and referenced in",s.jsx("code",{children:" manifest.json"}),". They're bundled with the app (same-origin), so they load reliably on every domain without CORS issues."]})]}),s.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-6",children:i.map(e=>s.jsxs("div",{className:"bg-card border border-border rounded-2xl p-6 flex flex-col items-center gap-4 shadow-sm",children:[s.jsx("div",{className:"bg-secondary/40 border border-border flex items-center justify-center overflow-hidden",style:{width:e.size>256?256:e.size,height:e.size>256?256:e.size,borderRadius:e.purpose==="maskable"?"9999px":"1rem"},children:s.jsx("img",{src:e.src,alt:`${e.size}x${e.size} ${e.purpose} icon`,className:"w-full h-full object-contain"})}),s.jsxs("div",{className:"text-center",children:[s.jsxs("p",{className:"font-sans text-sm font-semibold text-foreground",children:[e.size,"Ã",e.size]}),s.jsxs("p",{className:"font-sans text-xs text-muted-foreground",children:["Purpose: ",e.purpose]})]}),s.jsxs("button",{type:"button",onClick:()=>{fetch(e.src).then(r=>r.blob()).then(r=>o(r,`kjb-icon-${e.size}-${e.purpose}.png`)).then(()=>a.success(n())).catch(r=>{console.error("Icon download failed:",r),a.error("Download failed. Please try again.")})},className:"flex items-center gap-2 px-4 py-2 rounded-xl bg-primary text-primary-foreground font-sans text-sm font-medium transition-all duration-200 hover:scale-[1.02] active:scale-[0.98]",children:[s.jsx(t,{className:"w-4 h-4"}),"Download ",e.size,"px"]})]},`${e.purpose}-${e.size}`))}),s.jsxs("p",{className:"font-sans text-xs text-muted-foreground text-center mt-8 max-w-xl mx-auto",children:["No upload step needed â these files already ship with the app at ",s.jsx("code",{children:"public/icons/"}),"and are referenced directly in ",s.jsx("code",{children:"manifest.json"}),"."]})]})}export{c as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.