Stitch redesign, Energieversorger-Kampagne, UI improvements

- Apply Stitch design system to leadspeicher, suche, TopBar, globals.css
- Add Energieversorger queue campaign (Netzbetreiber, Fernwärme, Industriepark)
  with BW + Bayern priority, tracks usage per term+location combo
- Remove TopBar right-side actions (Leads finden, bell, settings)
- Remove mode tabs from manual search, rename KI button
- Fix Google Fonts @import order (move to <link> in layout.tsx)
- Add cursor-pointer globally via globals.css
- Responsive fixes for campaign buttons and KI button
- Fix .dockerignore to exclude .env from image build
- Add stadtwerke-cities API + city data (50 cities per Bundesland)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Timo Uttenweiler
2026-04-09 10:08:00 +02:00
parent 54e0d22f9c
commit 7db914084e
9 changed files with 868 additions and 356 deletions

View File

@@ -0,0 +1,161 @@
// Größte Städte je Bundesland, sortiert nach Einwohnerzahl (absteigend)
// Quelle: Destatis / Wikipedia, Stand 2024
export const STADTWERKE_CITIES: Record<string, string[]> = {
Bayern: [
"München", "Nürnberg", "Augsburg", "Regensburg", "Ingolstadt",
"Würzburg", "Fürth", "Erlangen", "Bayreuth", "Landshut",
"Rosenheim", "Kempten", "Bamberg", "Aschaffenburg", "Neu-Ulm",
"Schweinfurt", "Ansbach", "Straubing", "Passau", "Coburg",
"Dachau", "Freising", "Germering", "Memmingen", "Kaufbeuren",
"Hof", "Amberg", "Weiden", "Pfaffenhofen", "Starnberg",
"Traunreut", "Gauting", "Garching", "Erding", "Fürstenfeldbruck",
"Unterschleißheim", "Waldkraiburg", "Marktoberdorf", "Neumarkt", "Altötting",
"Weißenburg", "Schwabach", "Deggendorf", "Traunstein", "Burghausen",
"Bad Reichenhall", "Neuburg an der Donau", "Kelheim", "Dillingen", "Günzburg",
],
"Nordrhein-Westfalen": [
"Köln", "Düsseldorf", "Dortmund", "Essen", "Duisburg",
"Bochum", "Wuppertal", "Bielefeld", "Bonn", "Münster",
"Gelsenkirchen", "Aachen", "Mönchengladbach", "Krefeld", "Oberhausen",
"Hagen", "Hamm", "Solingen", "Leverkusen", "Osnabrück",
"Herne", "Neuss", "Paderborn", "Gütersloh", "Recklinghausen",
"Mülheim", "Siegen", "Bergisch Gladbach", "Witten", "Bottrop",
"Heiligenhaus", "Velbert", "Troisdorf", "Moers", "Iserlohn",
"Lünen", "Detmold", "Remscheid", "Castrop-Rauxel", "Minden",
"Lippstadt", "Herford", "Viersen", "Düren", "Marl",
"Dinslaken", "Dormagen", "Ratingen", "Wesel", "Gladbeck",
],
"Baden-Württemberg": [
"Stuttgart", "Karlsruhe", "Mannheim", "Freiburg", "Heidelberg",
"Ulm", "Heilbronn", "Pforzheim", "Reutlingen", "Ludwigsburg",
"Esslingen", "Tübingen", "Villingen-Schwenningen", "Konstanz", "Aalen",
"Friedrichshafen", "Sindelfingen", "Ravensburg", "Offenburg", "Göppingen",
"Böblingen", "Schwäbisch Gmünd", "Lahr", "Waiblingen", "Baden-Baden",
"Bruchsal", "Weinheim", "Leonberg", "Bietigheim-Bissingen", "Heidenheim",
"Schwäbisch Hall", "Nagold", "Singen", "Nürtingen", "Fellbach",
"Tuttlingen", "Überlingen", "Backnang", "Ditzingen", "Kirchheim",
"Schorndorf", "Filderstadt", "Leinfelden-Echterdingen", "Ettlingen", "Weil am Rhein",
"Rottenburg", "Rheinfelden", "Leutkirch", "Mosbach", "Crailsheim",
],
Hessen: [
"Frankfurt", "Wiesbaden", "Kassel", "Darmstadt", "Offenbach",
"Hanau", "Marburg", "Gießen", "Fulda", "Wetzlar",
"Rüsselsheim", "Langen", "Bad Homburg", "Dreieich", "Viernheim",
"Maintal", "Friedberg", "Bensheim", "Rodgau", "Eschborn",
"Limburg", "Hofheim", "Bad Nauheim", "Gelnhausen", "Herborn",
"Mörfelden-Walldorf", "Heppenheim", "Seligenstadt", "Bruchköbel", "Büdingen",
"Korbach", "Mühlheim", "Neu-Isenburg", "Oberursel", "Königstein",
"Seligenstädt", "Lampertheim", "Bad Hersfeld", "Groß-Gerau", "Lauterbach",
"Riedstadt", "Baunatal", "Taunusstein", "Bebra", "Schlüchtern",
"Dillenburg", "Alsfeld", "Bad Vilbel", "Griesheim", "Hünfeld",
],
Niedersachsen: [
"Hannover", "Braunschweig", "Osnabrück", "Oldenburg", "Wolfsburg",
"Göttingen", "Salzgitter", "Hildesheim", "Delmenhorst", "Wilhelmshaven",
"Celle", "Lüneburg", "Wolfenbüttel", "Garbsen", "Hameln",
"Lingen", "Langenhagen", "Peine", "Cuxhaven", "Emden",
"Nordhorn", "Goslar", "Stade", "Rheine", "Leer",
"Buxtehude", "Hameln", "Alfeld", "Rotenburg", "Achim",
"Winsen", "Buchholz", "Sarstedt", "Bad Salzdetfurth", "Seelze",
"Wunstorf", "Nienburg", "Uelzen", "Holzminden", "Osterode",
"Clausthal-Zellerfeld", "Bückeburg", "Springe", "Hemmingen", "Isernhagen",
"Ganderkesee", "Papenburg", "Meppen", "Gifhorn", "Schöningen",
],
Sachsen: [
"Leipzig", "Dresden", "Chemnitz", "Zwickau", "Erfurt",
"Plauen", "Görlitz", "Hoyerswerda", "Bautzen", "Gera",
"Zittau", "Freiberg", "Riesa", "Pirna", "Döbeln",
"Freital", "Mittweida", "Meißen", "Werdau", "Crimmitschau",
"Annaberg-Buchholz", "Stollberg", "Torgau", "Oelsnitz", "Aue-Bad Schlema",
"Limbach-Oberfrohna", "Borna", "Glauchau", "Delitzsch", "Coswig",
"Radebeul", "Weißwasser", "Grimma", "Meerane", "Frankenberg",
"Wittenberg", "Zschopau", "Reichenbach", "Marienberg", "Auerbach",
"Großenhain", "Lößnitz", "Hohenstein-Ernstthal", "Schneeberg", "Flöha",
"Eilenburg", "Geithain", "Brand-Erbisdorf", "Lugau", "Radeberg",
],
Berlin: [
"Berlin-Mitte", "Berlin-Charlottenburg", "Berlin-Spandau", "Berlin-Steglitz",
"Berlin-Tempelhof", "Berlin-Schöneberg", "Berlin-Kreuzberg", "Berlin-Prenzlauer Berg",
"Berlin-Friedrichshain", "Berlin-Lichtenberg", "Berlin-Hohenschönhausen",
"Berlin-Reinickendorf", "Berlin-Wedding", "Berlin-Neukölln", "Berlin-Treptow",
"Berlin-Köpenick", "Berlin-Wilmersdorf", "Berlin-Zehlendorf", "Berlin-Pankow",
"Berlin-Weißensee", "Berlin-Hellersdorf", "Berlin-Marzahn", "Berlin-Adlershof",
"Berlin-Buch", "Berlin-Mahlsdorf",
],
Hamburg: [
"Hamburg-Mitte", "Hamburg-Altona", "Hamburg-Eimsbüttel", "Hamburg-Nord",
"Hamburg-Wandsbek", "Hamburg-Bergedorf", "Hamburg-Harburg",
"Norderstedt", "Ahrensburg", "Reinbek", "Glinde", "Bargteheide",
"Bad Oldesloe", "Elmshorn", "Pinneberg", "Wedel", "Geesthacht",
"Lauenburg", "Buchholz", "Buxtehude", "Stade", "Winsen",
"Heide", "Itzehoe", "Bad Segeberg",
],
Bremen: [
"Bremen", "Bremerhaven", "Delmenhorst", "Achim", "Syke",
"Lilienthal", "Stuhr", "Weyhe", "Bassum", "Schwanewede",
],
Thüringen: [
"Erfurt", "Jena", "Gera", "Weimar", "Gotha",
"Nordhausen", "Suhl", "Ilmenau", "Eisenach", "Altenburg",
"Mühlhausen", "Sonneberg", "Sömmerda", "Saalfeld", "Bad Langensalza",
"Pößneck", "Apolda", "Arnstadt", "Greiz", "Schmalkalden",
"Hildburghausen", "Rudolstadt", "Zeulenroda", "Leinefelde-Worbis", "Bad Salzungen",
"Meiningen", "Sonneberg", "Schleiz", "Neustadt an der Orla", "Eisenberg",
"Lobenstein", "Sondershausen", "Bleicherode", "Heilbad Heiligenstadt", "Dingelstädt",
],
"Sachsen-Anhalt": [
"Halle", "Magdeburg", "Dessau-Roßlau", "Wittenberg", "Halle-Neustadt",
"Halberstadt", "Stendal", "Quedlinburg", "Bitterfeld-Wolfen", "Merseburg",
"Bernburg", "Köthen", "Weißenfels", "Zeitz", "Naumburg",
"Sangerhausen", "Aschersleben", "Staßfurt", "Burg", "Gardelegen",
"Wernigerode", "Schönebeck", "Blauen", "Eisleben", "Wolfen",
"Zerbst", "Calbe", "Tangermünde", "Wanzleben", "Klötze",
],
Brandenburg: [
"Potsdam", "Cottbus", "Brandenburg an der Havel", "Frankfurt (Oder)", "Oranienburg",
"Eberswalde", "Bernau", "Neuruppin", "Schwedt", "Falkensee",
"Strausberg", "Eisenhüttenstadt", "Ludwigsfelde", "Werder", "Königs Wusterhausen",
"Prenzlau", "Nauen", "Luckenwalde", "Senftenberg", "Spremberg",
"Forst", "Guben", "Neuenhagen", "Templin", "Rathenow",
"Finowfurt", "Bad Belzig", "Jüterbog", "Zossen", "Zehdenick",
],
"Mecklenburg-Vorpommern": [
"Rostock", "Schwerin", "Neubrandenburg", "Stralsund", "Greifswald",
"Wismar", "Güstrow", "Neustadt-Glewe", "Waren", "Bergen auf Rügen",
"Ribnitz-Damgarten", "Ueckermünde", "Wolgast", "Anklam", "Parchim",
"Hagenow", "Neustrelitz", "Teterow", "Pasewalk", "Demmin",
"Sassnitz", "Lüdershagen", "Ludwigslust", "Malchin", "Stavenhagen",
],
Saarland: [
"Saarbrücken", "Neunkirchen", "Saarlouis", "Sankt Ingbert", "Homburg",
"Völklingen", "Merzig", "Dillingen", "Sulzbach", "Überherrn",
"Saarwellingen", "Bexbach", "Püttlingen", "Friedrichsthal", "Blieskastel",
"Sankt Wendel", "Lebach", "Ottweiler", "Wadern", "Losheim",
],
"Rheinland-Pfalz": [
"Mainz", "Ludwigshafen", "Koblenz", "Trier", "Kaiserslautern",
"Worms", "Neustadt", "Bad Kreuznach", "Pirmasens", "Andernach",
"Speyer", "Zweibrücken", "Frankenthal", "Bingen", "Neuwied",
"Idar-Oberstein", "Landau", "Ingelheim", "Mayen", "Remagen",
"Konz", "Simmern", "Montabaur", "Kusel", "Birkenfeld",
"Cochem", "Lahnstein", "Alzey", "Bad Dürkheim", "Germersheim",
"Grünstadt", "Winnweiler", "Daun", "Gerolstein", "Linz",
"Bendorf", "Nastätten", "Simmern", "Kirchheimbolanden", "Rockenhausen",
],
"Schleswig-Holstein": [
"Kiel", "Lübeck", "Flensburg", "Neumünster", "Norderstedt",
"Elmshorn", "Pinneberg", "Itzehoe", "Schleswig", "Heide",
"Bad Oldesloe", "Wedel", "Reinbek", "Ahrensburg", "Bargteheide",
"Kaltenkirchen", "Quickborn", "Büdelsdorf", "Rendsburg", "Brunsbüttel",
"Husum", "Niebüll", "Eckernförde", "Neustadt", "Bad Segeberg",
"Preetz", "Eutin", "Mölln", "Ratzeburg", "Geesthacht",
"Glinde", "Wahlstedt", "Bad Schwartau", "Lütjenburg", "Plön",
],
};
// Flache Liste aller Städte
export const ALL_CITIES = Object.values(STADTWERKE_CITIES).flat();
// Alle Bundesländer
export const BUNDESLAENDER = Object.keys(STADTWERKE_CITIES);