PageSourceSearch

https://vebtools.org/assets/ImageToPDF-Dq8wLn1j.js

js vebtools.org collected 2026-10-08 23:03:15 UTC 3,189 bytes, 1 lines download raw bytes

1import{j as e,t as c,aa as m,V as x}from"./vendor-react-B9GpnH9A.js";import{F as p}from"./FileConverterBase-Cyiu3vIB.js";import{u as h}from"./usePdfProcessor-BMlMKNkH.js";import"./index-BvPOHJEr.js";import"./vendor-utils-Ce1ZTWB2.js";import"./vendor-motion-DDxOswi1.js";import"./ToolLayout-BPTl2CIa.js";import"./tool-seo-D-AFVobA.js";function P(){const{imagesToPdf:l,download:i,error:t,processing:a,results:r,clearResults:n}=h(),o=async s=>{s.length!==0&&await l(s,"converted_images.pdf")};return e.jsxs("div",{className:"max-w-4xl mx-auto",children:[t&&e.jsx("div",{className:"mb-6 p-4 bg-red-50 border border-red-100 rounded-2xl flex items-center gap-3 text-red-600 animate-in fade-in slide-in-from-top-2",children:e.jsx("p",{className:"text-sm font-bold",children:t})}),e.jsxs("div",{className:"mb-8 p-6 bg-slate-50 rounded-[2rem] border border-slate-100 flex items-start gap-4",children:[e.jsx("div",{className:"p-3 bg-slate-900 text-white rounded-2xl",children:e.jsx(c,{className:"w-6 h-6"})}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-black text-slate-900 mb-1",children:"Local Processing"}),e.jsx("p",{className:"text-xs text-slate-500 font-medium leading-relaxed",children:"Your images are converted into a PDF locally in your browser. Fast and private."})]})]}),e.jsx(p,{title:"Image to PDF",description:"Convert JPG, PNG, and other images to a high-quality PDF document.",accept:"image/*",onConvert:o,disabled:a,multiple:!0}),a&&e.jsxs("div",{className:"mt-8 flex flex-col items-center gap-4 animate-pulse",children:[e.jsx("div",{className:"w-12 h-12 border-4 border-slate-900 border-t-transparent rounded-full animate-spin"}),e.jsx("p",{className:"text-sm font-black text-slate-900",children:"Creating PDF..."})]}),r.length>0&&e.jsxs("div",{className:"mt-12 space-y-4 animate-in fade-in slide-in-from-bottom-4",children:[e.jsxs("div",{className:"flex items-center justify-between px-2",children:[e.jsx("h3",{className:"text-lg font-black text-slate-900",children:"Generated PDFs"}),e.jsx("button",{onClick:n,className:"text-xs font-black text-slate-400 hover:text-red-500 transition-colors uppercase tracking-wider",children:"Clear All"})]}),e.jsx("div",{className:"grid gap-3",children:r.map((s,d)=>e.jsxs("div",{className:"flex items-center justify-between p-4 bg-white rounded-3xl border-2 border-slate-100 hover:border-slate-200 transition-all group",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"p-3 bg-green-50 text-green-600 rounded-2xl group-hover:scale-110 transition-transform",children:e.jsx(m,{className:"w-5 h-5"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-black text-slate-900 line-clamp-1",children:s.name}),e.jsxs("p",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-tight",children:[s.pageCount," ",s.pageCount===1?"Page":"Pages"," • ",(s.blob.size/1024).toFixed(1)," KB"]})]})]}),e.jsxs("button",{onClick:()=>i(s),className:"flex items-center gap-2 px-6 py-3 bg-slate-900 hover:bg-black text-white rounded-2xl text-xs font-black transition-all shadow-lg active:scale-95",children:[e.jsx(x,{className:"w-4 h-4"}),"Download"]})]},d))})]})]})}export{P 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.