PageSourceSearch

https://ladecloud.io/assets/HerstellerUebersicht-CEGVP3tP.js

js ladecloud.io collected 2026-10-08 20:46:19 UTC 14,928 bytes, 1 lines download raw bytes

1import{p as H,r as b,u as S,j as e,d as Z,ai as I,ad as L,L as w,A as v,s as A}from"./index-BzhnpQ2E.js";import{F as R}from"./Footer-CfQSMKq1.js";import{u as q}from"./usePageMeta-BoK3kG4V.js";import{L as K}from"./layout-grid-C7usC4Xq.js";import{L as O}from"./list-BHBuhW-I.js";import{P as T}from"./plug-zap-DO1e17Vq.js";import"./seo-Da-sCsoV.js";const k={wallbox:"Wallbox",ladesaeule:"Ladesäule",ladestation:"DC-Ladestation"},M={zaehlmodul:"Zählmodul",mid:"MID",eichrechtskonform:"Eichrechtskonform"},G=["wallbox","ladesaeule","ladestation"],W=["zaehlmodul","mid","eichrechtskonform"],f={suche:"",bauarten:[],ladeart:"ALLE",leistungMin:"",leistungMax:"",zaehlertypen:[]};function D(s,t){return s==null||t==null?"–":s===t?`${s} kW`:`${s}–${t} kW`}function z(s){var t;return((t=s.modellbezeichnung)==null?void 0:t.trim())||s.modellname}function F({variant:s}){const t=s==="leer",n=t?"Ihr Hersteller fehlt? Das schließt nichts aus.":"Ihre Ladestation ist hier nicht aufgeführt?",x=t?"Jetzt anfragen, wir prüfen es":"Sprechen Sie uns an",g=t?"/anfrage?src=ladestationen-leerzustand":"/anfrage?src=ladestationen-hinweis";return e.jsxs("div",{className:`${t?"p-5 sm:p-6":"p-4 sm:p-5 max-w-3xl mx-auto"} bg-[#FFEDE7] border border-[#FFD4C4] rounded-tl-2xl rounded-tr-sm rounded-br-2xl rounded-bl-sm flex items-start gap-4 text-left`,children:[e.jsx("div",{className:"shrink-0 w-11 h-11 rounded-xl bg-[#FE3501] flex items-center justify-center",children:e.jsx(T,{className:"w-5 h-5 text-white"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-semibold text-[#1D2327]",children:n}),e.jsx("p",{className:"text-sm text-[#4A5257] mt-1",children:t?e.jsxs(e.Fragment,{children:["Diese Liste zeigt nur bereits geprüfte Hersteller. Grundsätzlich lässt sich ",e.jsx("strong",{className:"font-semibold text-[#1D2327]",children:"jede OCPP-fähige Ladestation"})," an Ladecloud.io anbinden."]}):e.jsxs(e.Fragment,{children:["Diese Liste wird laufend erweitert. Grundsätzlich funktioniert ",e.jsx("strong",{className:"font-semibold text-[#1D2327]",children:"jede OCPP-fähige Ladestation"})," mit Ladecloud.io."]})}),e.jsxs(w,{to:g,className:"inline-flex items-center gap-1 mt-3 text-sm font-semibold text-[#FE3501] hover:underline",children:[x," ",e.jsx(v,{className:"w-4 h-4"})]})]})]})}function le(){var E;const[s]=H(),[t,n]=b.useState(()=>{const l=s.get("q");return l?{...f,suche:l}:f}),[x,g]=b.useState("grid");b.useEffect(()=>{const l=s.get("q");l&&n(a=>a.suche===l?a:{...a,suche:l})},[s]);const h=S({queryKey:["hersteller-uebersicht"],staleTime:5*60*1e3,queryFn:async()=>{const[l,a]=await Promise.all([A.from("hersteller").select("id, name, slug, landingpage_aktiv").order("name",{ascending:!0}),A.from("hersteller_modelle").select("id, hersteller_id, modellname, modellbezeichnung, bauart, ladeart, hersteller_modell_leistung(leistung_kw), hersteller_modell_zaehlertyp(zaehlertyp)").eq("ist_aktiv",!0)]);if(l.error)throw l.error;if(a.error)throw a.error;const d=new Map;for(const r of a.data??[]){const c=d.get(r.hersteller_id)??[];c.push({id:r.id,modellname:r.modellname,modellbezeichnung:r.modellbezeichnung,bauart:r.bauart,ladeart:r.ladeart,leistungen:(r.hersteller_modell_leistung??[]).map(u=>Number(u.leistung_kw)),zaehlertypen:(r.hersteller_modell_zaehlertyp??[]).map(u=>u.zaehlertyp)}),d.set(r.hersteller_id,c)}return(l.data??[]).map(r=>{const c=d.get(r.id)??[],u=Array.from(new Set(c.map(o=>o.bauart))),y=Array.from(new Set(c.map(o=>o.ladeart))),m=Array.from(new Set(c.flatMap(o=>o.zaehlertypen))),i=c.flatMap(o=>o.leistungen).filter(o=>Number.isFinite(o));return{id:r.id,name:r.name,slug:r.slug,landingpage_aktiv:r.landingpage_aktiv,modelle:c,bauarten:u,ladearten:y,zaehlertypen:m,leistungMin:i.length?Math.min(...i):null,leistungMax:i.length?Math.max(...i):null}})}}),j=b.useMemo(()=>{const l=h.data??[],a=t.suche.trim().toLowerCase(),d=t.leistungMin.trim()===""?null:Number(t.leistungMin),p=t.leistungMax.trim()===""?null:Number(t.leistungMax),r=t.bauarten.length>0,c=t.zaehlertypen.length>0;return l.filter(u=>u.modelle.some(m=>{if(r&&!t.bauarten.includes(m.bauart)||t.ladeart!=="ALLE"&&m.ladeart!==t.ladeart||d!=null&&!m.leistungen.some(i=>i>=d)||p!=null&&!m.leistungen.some(i=>i<=p)||d!=null&&p!=null&&!m.leistungen.some(i=>i>=d&&i<=p)||c&&!m.zaehlertypen.some(i=>t.zaehlertypen.includes(i)))return!1;if(a){const i=m.modellname.toLowerCase().includes(a)||(m.modellbezeichnung??"").toLowerCase().includes(a),o=u.name.toLowerCase().includes(a);if(!i&&!o)return!1}return!0}))},[h.data,t]),_=((E=h.data)==null?void 0:E.length)??0,N=j.length,$=t.suche.trim()!==""||t.bauarten.length>0||t.ladeart!=="ALLE"||t.leistungMin!==""||t.leistungMax!==""||t.zaehlertypen.length>0;q({title:"Kompatible Ladestationen | OCPP Backend & Abrechnungssystem für über 100 Hersteller | Ladecloud.io",description:"Übersicht aller mit Ladecloud.io kompatiblen Ladestationen und Wallboxen. OCPP-Backend, Abrechnung und Lastmanagement für über 100 Hersteller – filterbar nach Bauart, Leistung und Zählertyp.",path:"/ladestationen",jsonLd:[{id:"ld-breadcrumb",schema:{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Startseite",item:"https://ladecloud.io/"},{"@type":"ListItem",position:2,name:"Kompatible Ladestationen",
1item:"https://ladecloud.io/ladestationen"}]}}]});function B(l){n(a=>({...a,bauarten:a.bauarten.includes(l)?a.bauarten.filter(d=>d!==l):[...a.bauarten,l]}))}function P(l){n(a=>({...a,zaehlertypen:a.zaehlertypen.includes(l)?a.zaehlertypen.filter(d=>d!==l):[...a.zaehlertypen,l]}))}return e.jsxs(e.Fragment,{children:[e.jsx(Z,{}),e.jsxs("main",{className:"min-h-screen bg-white",children:[e.jsx("section",{className:"pt-20 lg:pt-28 pb-10 bg-gradient-to-b from-[#F7F8FA] to-white",children:e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsx("p",{className:"text-xs font-semibold tracking-widest uppercase text-[#FE3501] mb-3",children:"Kompatibilität"}),e.jsx("h1",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold text-[#1D2327] leading-tight mb-4",children:"Kompatible Ladestationen"}),e.jsx("p",{className:"text-lg text-[#4A5257] max-w-3xl",children:"OCPP-Backend, Abrechnung und Lastmanagement für über 100 Modelle. Filtern Sie nach Bauart, Leistung und Zählertyp – und finden Sie Ihre Ladestation."})]})}),e.jsx("section",{className:"sticky top-[64px] z-30 bg-white/95 backdrop-blur border-b border-[#E4E6E9]",children:e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 py-4 space-y-4",children:[e.jsxs("div",{className:"flex flex-col lg:flex-row gap-3 lg:items-center",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(I,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[#8A9199]"}),e.jsx("input",{type:"text",value:t.suche,onChange:l=>n(a=>({...a,suche:l.target.value})),placeholder:"Hersteller oder Modell suchen…",className:"w-full pl-10 pr-3 py-2.5 rounded-lg border border-[#E4E6E9] focus:outline-none focus:ring-2 focus:ring-[#FE3501]/30 focus:border-[#FE3501] text-sm"})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[$&&e.jsxs("button",{onClick:()=>n(f),className:"text-sm text-[#4A5257] hover:text-[#FE3501] flex items-center gap-1 px-3 py-2 rounded-lg hover:bg-[#F7F8FA]",children:[e.jsx(L,{className:"w-4 h-4"})," Zurücksetzen"]}),e.jsxs("div",{className:"flex rounded-lg border border-[#E4E6E9] overflow-hidden",children:[e.jsx("button",{"aria-label":"Grid-Ansicht",onClick:()=>g("grid"),className:`p-2 ${x==="grid"?"bg-[#1D2327] text-white":"bg-white text-[#4A5257] hover:bg-[#F7F8FA]"}`,children:e.jsx(K,{className:"w-4 h-4"})}),e.jsx("button",{"aria-label":"Listen-Ansicht",onClick:()=>g("liste"),className:`p-2 ${x==="liste"?"bg-[#1D2327] text-white":"bg-white text-[#4A5257] hover:bg-[#F7F8FA]"}`,children:e.jsx(O,{className:"w-4 h-4"})})]})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-x-6 gap-y-3 text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"text-[#8A9199] text-xs uppercase font-semibold tracking-wide",children:"Bauart"}),G.map(l=>{const a=t.bauarten.includes(l);return e.jsx("button",{onClick:()=>B(l),className:`px-3 py-1 rounded-full border text-xs transition ${a?"bg-[#1D2327] text-white border-[#1D2327]":"bg-white text-[#4A5257] border-[#E4E6E9] hover:border-[#1D2327]"}`,children:k[l]},l)})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[#8A9199] text-xs uppercase font-semibold tracking-wide",children:"Ladeart"}),["ALLE","AC","DC"].map(l=>{const a=t.ladeart===l;return e.jsx("button",{onClick:()=>n(d=>({...d,ladeart:l})),className:`px-3 py-1 rounded-full border text-xs transition ${a?"bg-[#1D2327] text-white border-[#1D2327]":"bg-white text-[#4A5257] border-[#E4E6E9] hover:border-[#1D2327]"}`,children:l==="ALLE"?"Alle":l},l)})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[#8A9199] text-xs uppercase font-semibold tracking-wide",children:"Leistung"}),e.jsx("input",{type:"number",inputMode:"numeric",min:0,placeholder:"min",value:t.leistungMin,onChange:l=>n(a=>({...a,leistungMin:l.target.value})),className:"w-20 px-2 py-1 rounded-md border border-[#E4E6E9] text-xs focus:outline-none focus:border-[#1D2327]"}),e.jsx("span",{className:"text-[#8A9199] text-xs",children:"–"}),e.jsx("input",{type:"number",inputMode:"numeric",min:0,placeholder:"max",value:t.leistungMax,onChange:l=>n(a=>({...a,leistungMax:l.target.value}
1)),className:"w-20 px-2 py-1 rounded-md border border-[#E4E6E9] text-xs focus:outline-none focus:border-[#1D2327]"}),e.jsx("span",{className:"text-[#8A9199] text-xs",children:"kW"})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"text-[#8A9199] text-xs uppercase font-semibold tracking-wide",children:"Zählertyp"}),W.map(l=>{const a=t.zaehlertypen.includes(l);return e.jsx("button",{onClick:()=>P(l),className:`px-3 py-1 rounded-full border text-xs transition ${a?"bg-[#1D2327] text-white border-[#1D2327]":"bg-white text-[#4A5257] border-[#E4E6E9] hover:border-[#1D2327]"}`,children:M[l]},l)})]})]})]})}),e.jsxs("section",{className:"max-w-6xl mx-auto px-4 sm:px-6 py-10",children:[e.jsx("div",{className:"flex items-center justify-between mb-6",children:e.jsx("p",{className:"text-sm text-[#4A5257]",children:h.isLoading?"Lade Hersteller…":`${N} von ${_} Herstellern`})}),h.isLoading?e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx("div",{className:"w-8 h-8 border-2 border-[#FE3501] border-t-transparent rounded-full animate-spin"})}):N===0?e.jsxs("div",{className:"py-10",children:[e.jsx("p",{className:"text-center text-[#4A5257] mb-6 font-medium",children:"Keine Hersteller entsprechen den Filtern."}),e.jsx("div",{className:"max-w-2xl mx-auto",children:e.jsx(F,{variant:"leer"})}),e.jsx("div",{className:"text-center mt-6",children:e.jsxs("button",{onClick:()=>n(f),className:"inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-[#1D2327] text-white text-sm hover:bg-[#2A3237]",children:[e.jsx(L,{className:"w-4 h-4"})," Filter zurücksetzen"]})})]}):x==="grid"?e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5",children:j.map(l=>e.jsx(U,{hersteller:l},l.id))}):e.jsx("div",{className:"border border-[#E4E6E9] rounded-2xl overflow-hidden divide-y divide-[#E4E6E9] bg-white",children:j.map(l=>e.jsx(J,{hersteller:l},l.id))}),!h.isLoading&&N>0&&e.jsx("div",{className:"mt-10",children:e.jsx(F,{variant:"permanent"})})]})]}),e.jsx(R,{})]})}function C({h:s}){return e.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[s.bauarten.map(t=>e.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded-full bg-[#F0F9FF] text-[#0369A1] border border-[#BAE6FD]",children:k[t]},`b-${t}`)),s.ladearten.map(t=>e.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded-full bg-[#FEFCE8] text-[#854D0E] border border-[#FEF08A]",children:t},`l-${t}`)),s.zaehlertypen.map(t=>e.jsx("span",{className:"text-[11px] px-2 py-0.5 rounded-full bg-[#F0FDF4] text-[#166534] border border-[#BBF7D0]",children:M[t]},`z-${t}`))]})}function U({hersteller:s}){const t=s.landingpage_aktiv&&!!s.slug,n=e.jsxs("div",{className:`h-full rounded-2xl border border-[#E4E6E9] bg-white p-5 flex flex-col gap-4 transition ${t?"hover:border-[#1D2327] hover:shadow-md":""}`,children:[e.jsx("div",{className:"flex items-start justify-between gap-3",children:e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-[#1D2327]",children:s.name}),e.jsxs("p",{className:"text-xs text-[#8A9199] mt-0.5",children:[s.modelle.length," ",s.modelle.length===1?"Modell":"Modelle"," · ",D(s.leistungMin,s.leistungMax)]}),e.jsxs("div",{className:"mt-2",children:[e.jsxs("p",{className:"text-xs text-[#4A5257]",children:[s.modelle.slice(0,3).map(x=>x.modellname).join(", "),s.modelle.length>3&&` +${s.modelle.length-3} weitere`]}),e.jsx("div",{className:"w-6 h-px bg-[#E4E6E9] my-1"}),e.jsxs("p",{className:"text-[10px] text-[#8A9199]",children:[s.modelle.slice(0,3).map(z).join(", "),s.modelle.length>3&&` +${s.modelle.length-3} weitere`]})]})]})}),e.jsx(C,{h:s}),t&&e.jsx("div",{className:"mt-auto pt-2",children:e.jsxs("span",{className:"inline-flex items-center gap-1 text-sm font-medium text-[#FE3501]",children:["Zur Übersicht ",e.jsx(v,{className:"w-4 h-4"})]})})]});return t?e.jsx(w,{to:`/ladestationen/${s.slug}`,className:"block h-full",children:n}):e.jsx("div",{className:"h-full pointer-events-none",children:n})}function J({hersteller:s}){const t=s.landingpage_aktiv&&!!s.slug,n=e.jsxs("div",{className:`flex flex-col md:flex-row md:items-center gap-3 md:gap-6 px-4 md:px-6 py-4 transition ${t?"hover:bg-[#F7F8FA]":""}`,children:[e.jsxs("div",{className:"md:w-56 shrink-0",children:[e.jsx("h2",{className:"text-base font-semibold text-[#1D2327]",children:s.name}),e.jsxs("p",{className:"text-xs text-[#8A9199]",children:[s.modelle.length," ",s.modelle.length===1?"Modell":"Modelle"," · ",D(s.leistungMin,s.leistungMax)]}),e.jsxs("div",{className:"mt-2",children:[e.jsxs("p",{className:"text-xs text-[#4A5257]",children:[s.modelle.slice(0,3).map(x=>x.modellname).join(", "),s.modelle.length>3&&` +${s.modelle.length-3} weitere`]}),e.jsx("div",{className:"w-6 h-px bg-[#E4E6E9] my-1"}),e.jsxs("p",{className:"text-[10px] text-[#8A9199]",children:[s.modelle.slice(0,3).map(z).join(", "),s.modelle.length>3&&` +${s.modelle.length-3} weitere`]})]})]}),e.jsx("div",{className:"flex-1 min-w-0",children:e.jsx(C,{h:s})}),t&&e.jsx("div",{className:"md:w-48 md:text-right",children:e.jsxs("span",{className:"inline-flex items-center gap-1 text-sm font-medium text-[#FE3501]",children:["Zur Übersicht ",e.jsx(v,{className:"w-4 h-4"})]})})]});return t?e.jsx(w,{to:`/ladestationen/${s.slug}`,className:"block",children:n}):e.jsx("div",{className:"pointer-events-none",children:n})}export{le 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.