blue-chestnut-solar-expert 0.0.65 → 0.0.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/cjs/eraser-icon_19.cjs.entry.js +1 -1
  2. package/dist/cjs/{lerc-CweSdQV9.js → lerc-v64rYVDy.js} +3 -3
  3. package/dist/cjs/{lerc-CweSdQV9.js.map → lerc-v64rYVDy.js.map} +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/stencil-library.cjs.js +1 -1
  6. package/dist/collection/components/solar-system-form/solar-system-form.js +72 -48
  7. package/dist/collection/components/solar-system-form/solar-system-form.js.map +1 -1
  8. package/dist/collection/utils/lang/german.js +6 -6
  9. package/dist/collection/utils/lang/german.js.map +1 -1
  10. package/dist/components/map-draw.js +1 -1
  11. package/dist/components/map-selector.js +1 -1
  12. package/dist/components/{p-CN8xBdHM.js → p-B4X-RCW0.js} +3 -3
  13. package/dist/components/{p-CN8xBdHM.js.map → p-B4X-RCW0.js.map} +1 -1
  14. package/dist/components/{p-DDmNiupX.js → p-BFJHTJPM.js} +4 -4
  15. package/dist/components/{p-DDmNiupX.js.map → p-BFJHTJPM.js.map} +1 -1
  16. package/dist/components/{p-DRV0Pmhs.js → p-BcVa4_YP.js} +3 -3
  17. package/dist/components/{p-DRV0Pmhs.js.map → p-BcVa4_YP.js.map} +1 -1
  18. package/dist/components/{p-CE2V-avM.js → p-Bopprtc7.js} +3 -3
  19. package/dist/components/{p-CE2V-avM.js.map → p-Bopprtc7.js.map} +1 -1
  20. package/dist/components/{p-QhOsRYRe.js → p-DWirjxpO.js} +3 -3
  21. package/dist/components/{p-QhOsRYRe.js.map → p-DWirjxpO.js.map} +1 -1
  22. package/dist/components/{p-Cl7aThVr.js → p-DlNHVTGB.js} +10 -10
  23. package/dist/components/{p-Cl7aThVr.js.map → p-DlNHVTGB.js.map} +1 -1
  24. package/dist/components/{p-Ooow0N-g.js → p-Dzl6kfPI.js} +3 -3
  25. package/dist/components/{p-Ooow0N-g.js.map → p-Dzl6kfPI.js.map} +1 -1
  26. package/dist/components/{p-CCG3fXg3.js → p-PkMjF2if.js} +75 -51
  27. package/dist/components/p-PkMjF2if.js.map +1 -0
  28. package/dist/components/{p-B_6Ue-UQ.js → p-eDwaXClX.js} +8 -8
  29. package/dist/components/p-eDwaXClX.js.map +1 -0
  30. package/dist/components/{p-BXoz2zXG.js → p-i1uLweD0.js} +3 -3
  31. package/dist/components/{p-BXoz2zXG.js.map → p-i1uLweD0.js.map} +1 -1
  32. package/dist/components/polygon-buttons.js +1 -1
  33. package/dist/components/polygon-information.js +1 -1
  34. package/dist/components/settings-modal.js +1 -1
  35. package/dist/components/solar-expert.js +9 -9
  36. package/dist/components/solar-system-form.js +1 -1
  37. package/dist/components/tool-box.js +1 -1
  38. package/dist/components/tutorial-component.js +1 -1
  39. package/dist/esm/eraser-icon_19.entry.js +1 -1
  40. package/dist/esm/{lerc-D7wRie33.js → lerc-CAiDQjTu.js} +3 -3
  41. package/dist/esm/{lerc-D7wRie33.js.map → lerc-CAiDQjTu.js.map} +1 -1
  42. package/dist/esm/loader.js +1 -1
  43. package/dist/esm/stencil-library.js +1 -1
  44. package/dist/stencil-library/{p-D3ZsxpeN.js → p-BBtmpSUK.js} +2 -2
  45. package/dist/stencil-library/{p-D3ZsxpeN.js.map → p-BBtmpSUK.js.map} +1 -1
  46. package/dist/stencil-library/{p-CcRwkRDp.js → p-cAuhy_jT.js} +4 -4
  47. package/dist/stencil-library/{p-CcRwkRDp.js.map → p-cAuhy_jT.js.map} +1 -1
  48. package/dist/stencil-library/{p-05a58ef0.entry.js → p-e7b94dbb.entry.js} +2 -2
  49. package/dist/stencil-library/stencil-library.esm.js +1 -1
  50. package/dist/types/components/solar-system-form/solar-system-form.d.ts +1 -0
  51. package/package.json +1 -1
  52. package/dist/components/p-B_6Ue-UQ.js.map +0 -1
  53. package/dist/components/p-CCG3fXg3.js.map +0 -1
  54. /package/dist/stencil-library/{p-05a58ef0.entry.js.map → p-e7b94dbb.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"solar-system-form.js","sourceRoot":"","sources":["../../../src/components/solar-system-form/solar-system-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State, Watch } from \"@stencil/core\";\nimport { DEFAULT_SOLAR_PANEL_TYPE } from \"../../config\";\nimport { getLanguageStrings } from \"../../utils/lang/general\";\nimport { Polygon } from \"harmonia-types\";\nimport { state } from \"../../store\";\nimport { SimulationConfig, SolarSystem } from \"harmonia-sim\";\nimport { generateElectricCarChargingHours, simulate } from \"harmonia-sim\";\nimport { HEAT_PUMP_CONSUMPTION } from \"../../constants\";\nimport { LeadData, sendLeadToNexvoro } from \"../../utils/api\";\n\n@Component({\n tag: \"solar-system-form\",\n styleUrl: \"../../output.css\",\n shadow: false,\n})\nexport class SolarSystemForm {\n @Prop()\n systemConfigs: { [id: string]: SolarSystem } = {};\n @Prop()\n polygons: Polygon[] = [];\n @Prop()\n roofCanvas: HTMLCanvasElement;\n @Prop()\n polygonCanvas: HTMLCanvasElement;\n\n @State()\n householdConsumption: number = 4500;\n @State()\n consumptionProfile: \"mostly_at_home\" | \"mostly_away\" = \"mostly_at_home\";\n @State()\n electricityPrice: number = 0.3;\n @State()\n compensationRate: number = 0.07;\n @State()\n annualPriceIncrease: number = 2;\n @State()\n autonomy: number = 0;\n @State()\n costSavings: number = 0;\n @State()\n numberOfPanels: number = 5;\n @State()\n panelPeakPower: number = 0.4; // kW per panel\n @State()\n name: string = \"\";\n @State()\n email: string = \"\";\n @State()\n phone: string = \"\";\n @State()\n nameError: string = \"\";\n @State()\n emailError: string = \"\";\n @State()\n phoneError: string = \"\";\n @State()\n electricCar: boolean = false;\n @State()\n electricCarChargingTime: \"day\" | \"night\" = \"day\";\n @State()\n heatPump: number = 0;\n @State()\n battery: number = 0;\n\n @State()\n compensation20Years: number = 0;\n @State()\n savedCosts20Years: number = 0;\n @State()\n maxPanels: number = 5;\n @State()\n kmDrivenPerYear: number = 10000;\n @State()\n totalEnergyConsumption: number = 4500;\n @State()\n totalEnergyProduction: number = 0;\n @State()\n isSubmitting: boolean = false;\n @State()\n submitMessage: string = \"\";\n @State()\n submitSuccess: boolean = false;\n\n @Watch(\"systemConfigs\")\n updateSystemConfigs() {\n if (Object.keys(this.systemConfigs).length === 0) {\n this.numberOfPanels = 0;\n this.maxPanels = 0;\n return;\n }\n this.numberOfPanels = Object.keys(this.systemConfigs).reduce(\n (acc, curr) => acc + this.systemConfigs[curr].numberOfPanels,\n 0,\n );\n this.maxPanels = Object.keys(this.systemConfigs).reduce(\n (acc, curr) => acc + this.systemConfigs[curr].numberOfPanels,\n 0,\n );\n\n this.panelPeakPower = Object.entries(this.systemConfigs)[0][1][0]\n ?.panel.kWattPeak ?? 0.44;\n\n this.recalculate();\n }\n\n private formatEuropeanNumber(num: number, decimals: number = 2): string {\n const fixed = num.toFixed(decimals);\n const [integerPart, decimalPart] = fixed.split(\".\");\n\n // Add dots as thousands separators\n const formattedInteger = integerPart.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n \".\",\n );\n\n // Join with comma as decimal separator\n return decimalPart\n ? `${formattedInteger},${decimalPart}`\n : formattedInteger;\n }\n\n private recalculate() {\n const currentSystemConfigs = {};\n let totalNumberOfPanels = 0;\n for (const [key, value] of Object.entries(this.systemConfigs)) {\n if (totalNumberOfPanels >= this.numberOfPanels) {\n break;\n }\n if (\n value.numberOfPanels + totalNumberOfPanels > this.numberOfPanels\n ) {\n currentSystemConfigs[key] = {\n ...value,\n numberOfPanels: this.numberOfPanels - totalNumberOfPanels,\n };\n totalNumberOfPanels = this.numberOfPanels;\n } else {\n currentSystemConfigs[key] = value;\n totalNumberOfPanels += value.numberOfPanels;\n }\n }\n\n const simulationConfig: SimulationConfig = {\n general: {\n simulationYears: 20,\n },\n householdConsumption: {\n consumptionProfile: this.consumptionProfile,\n winterConsumptionFactor: 1.4,\n summerConsumptionFactor: 0.6,\n averageConsumption: this.householdConsumption / 365,\n },\n electricityPrice: {\n purchase: this.electricityPrice,\n sell: this.compensationRate,\n increase: this.annualPriceIncrease / 100,\n },\n solarSystems: currentSystemConfigs,\n batteryKWh: this.battery,\n solarRadiation: {\n winterFactor: 0.2,\n summerFactor: 0.6,\n },\n heatPump: {\n m2: this.heatPump,\n consumptionPerM2: HEAT_PUMP_CONSUMPTION / 365,\n },\n electricCar: this.electricCar\n ? {\n averageKilometersPerDay: this.kmDrivenPerYear / 365,\n consumptionkWhPer100km: 20,\n batteryKWh: 80,\n chargingHours: this.electricCarChargingTime === \"day\"\n ? generateElectricCarChargingHours(6, 18)\n : generateElectricCarChargingHours(18, 6),\n }\n : undefined,\n };\n\n const result = simulate(simulationConfig);\n\n this.compensation20Years = result.compensationPerDay * 365 * 20;\n this.savedCosts20Years = result.byYearSavedCosts.reduce(\n (acc, curr) => acc + curr,\n 0,\n ) + this.compensation20Years;\n this.costSavings = result.byYearSavedCosts[0];\n this.autonomy = result.autonomy * 100;\n this.totalEnergyConsumption = result.totalEnergyConsumptionDay * 365;\n // Calculate total energy production based on compensation and rate\n this.totalEnergyProduction = result.totalEnergyProduction * 365;\n }\n\n componentWillLoad() {\n this.updateSystemConfigs();\n }\n\n private validateForm(): boolean {\n let isValid = true;\n const t = getLanguageStrings(state.settings.language);\n\n // Validate name\n if (!this.name.trim()) {\n this.nameError = t.solarSystemForm.nameError;\n isValid = false;\n } else {\n this.nameError = \"\";\n }\n\n // Validate email\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!this.email.trim()) {\n this.emailError = t.solarSystemForm.emailError;\n isValid = false;\n } else if (!emailRegex.test(this.email)) {\n this.emailError = t.solarSystemForm.validEmailError;\n isValid = false;\n } else {\n this.emailError = \"\";\n }\n\n // Validate phone (optional)\n const phoneRegex = /^[\\+]?[1-9][\\d]{0,15}$/;\n if (\n this.phone.trim() &&\n !phoneRegex.test(this.phone.replace(/[\\s\\-\\(\\)]/g, \"\"))\n ) {\n this.phoneError = t.solarSystemForm.phoneError;\n isValid = false;\n } else {\n this.phoneError = \"\";\n }\n\n return isValid;\n }\n\n private async handleRequestOffer() {\n if (!this.validateForm()) {\n return;\n }\n\n this.isSubmitting = true;\n this.submitMessage = \"\";\n this.submitSuccess = false;\n\n const t = getLanguageStrings(state.settings.language);\n\n try {\n const leadData: LeadData = {\n location: {\n name: state.location,\n latitude: state.latitude,\n longitude: state.longitude,\n },\n systemConfig: {\n maxNumberOfPanels: this.maxPanels,\n panelPeakPower: this.panelPeakPower,\n polygons: this.polygons,\n solarSystems: this.systemConfigs,\n electricityPrice: this.electricityPrice,\n compensationRate: this.compensationRate,\n annualPriceIncrease: this.annualPriceIncrease,\n },\n client: {\n name: this.name,\n email: this.email,\n phone: this.phone,\n consumption: this.householdConsumption,\n consumptionProfile: this.consumptionProfile,\n hasBattery: this.battery > 0,\n battery: this.battery,\n hasHeatPump: this.heatPump > 0,\n heatPumpM2: this.heatPump,\n hasElectricCar: this.electricCar,\n electricCarChargingTime: this.electricCarChargingTime,\n electricCarKmPerYear: this.kmDrivenPerYear,\n },\n images: {\n roof: this.roofCanvas.toDataURL(),\n polygon: this.polygonCanvas.toDataURL(),\n },\n results: {\n autonomy: this.autonomy,\n costSavings: this.costSavings,\n compensation20Years: this.compensation20Years,\n savedCosts20Years: this.savedCosts20Years,\n totalEnergyConsumption: this.totalEnergyConsumption,\n },\n };\n console.log(\"leadData\", leadData);\n const result = await sendLeadToNexvoro(leadData);\n\n this.submitSuccess = result.success;\n\n if (result.success) {\n console.log(\"Lead successfully sent to Nexvoro\", result);\n this.submitMessage = t.solarSystemForm.leadSubmitted;\n // Optionally reset form or show success message\n } else {\n console.error(\n \"Failed to send lead to Nexvoro:\",\n result.message,\n );\n this.submitMessage = t.solarSystemForm.leadError;\n }\n } catch (error) {\n console.error(\"Error in handleRequestOffer:\", error);\n this.submitSuccess = false;\n this.submitMessage = error instanceof Error\n ? error.message\n : \"An unexpected error occurred\";\n } finally {\n this.isSubmitting = false;\n }\n }\n\n private isIOS(): boolean {\n return state.isIOS;\n }\n\n render() {\n const t = getLanguageStrings(state.settings.language);\n\n // Reusable style objects\n const borderStyle = { border: \"1px solid var(--color-border)\" };\n const errorBorderStyle = { border: \"1px solid var(--color-error)\" };\n\n return (\n <div\n class=\"flex flex-col justify-center items-center w-full h-full pt-4\" // style={{\n // display: (Object.keys(this.systemConfigs).length === 0)\n // ? \"none\"\n // : \"flex\",\n // }}\n id=\"solar-system-form\"\n >\n <h1 class=\"text-2xl font-bold text-secondary mb-4 w-full\">\n {t.solarSystemForm.title}\n </h1>\n\n <div class=\"w-full bg-primary rounded-4xl space-y-6\">\n {/* System Info Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.systemInformation}\n </h2>\n <div class=\"flex flex-col sm:flex-row gap-4\">\n {/* Number of Panels */}\n <div class=\"flex-1 bg-muted rounded-4xl p-4 space-y-3\">\n <div class=\"flex items-center justify-between\">\n <label class=\"text-sm font-medium text-text-muted\">\n {t.solarSystemForm.numberOfPanels}\n </label>\n {!this.isIOS()\n ? (\n <input\n type=\"number\"\n class=\"w-20 px-3 py-1 rounded-full bg-muted text-muted-foreground text-right\"\n value={this.numberOfPanels}\n readOnly\n />\n )\n : (\n <input\n type=\"number\"\n min=\"1\"\n max={this.maxPanels}\n class=\"w-20 px-3 py-1 rounded-full focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground text-center\"\n style={borderStyle}\n value={this.numberOfPanels}\n onInput={(e) => {\n const value = parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n if (\n value >= 1 &&\n value <=\n this.maxPanels\n ) {\n this.numberOfPanels =\n value;\n this.recalculate();\n }\n }}\n />\n )}\n </div>\n {!this.isIOS() && (\n <input\n type=\"range\"\n min=\"1\"\n max={this.maxPanels}\n step=\"1\"\n class=\"input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\n value={this.numberOfPanels}\n onInput={(e) => {\n this.numberOfPanels = parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n )}\n </div>\n\n {/* Panel Peak Power */}\n <div class=\"flex-1 bg-muted rounded-4xl p-4\">\n <div class=\"flex items-center justify-between\">\n <label class=\"text-sm font-medium text-text-muted\">\n {t.solarSystemForm.panelPeakPower}\n </label>\n <span class=\"text-text-muted\">\n {this.panelPeakPower.toFixed(2)} kW\n </span>\n </div>\n <div class=\"flex items-center justify-between mt-4\">\n <span class=\"text-sm font-medium text-text-muted\">\n {t.solarSystemForm.totalSystemPeakPower}\n </span>\n <span class=\"font-bold text-text-muted\">\n {(DEFAULT_SOLAR_PANEL_TYPE.kWattPeak *\n this.numberOfPanels).toFixed(1)} kWp\n </span>\n </div>\n </div>\n </div>\n </div>\n {/* Household Consumption Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.householdConsumptionTitle}\n </h2>\n <div class=\"grid grid-rows-2 gap-0\">\n <div class=\"grid grid-cols-2 gap-4\">\n <label class=\"block text-sm font-medium text-text-muted\">\n {t.solarSystemForm.annualConsumption}\n </label>\n <label class=\"block text-sm font-medium text-text-muted\">\n {t.solarSystemForm.consumptionProfileTitle}\n </label>\n </div>\n <div class=\"grid grid-cols-2 gap-4\">\n <input\n type=\"number\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\n style={borderStyle}\n value={this.householdConsumption}\n onInput={(e) => {\n this.householdConsumption = parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n <select\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\n style={borderStyle}\n onChange={(e) => {\n this.consumptionProfile =\n (e.target as HTMLSelectElement)\n .value as\n | \"mostly_at_home\"\n | \"mostly_away\";\n this.recalculate();\n }}\n >\n <option\n value=\"mostly_at_home\"\n selected={this.consumptionProfile ===\n \"mostly_at_home\"}\n >\n {t.solarSystemForm.consumptionProfiles\n .mostlyAtHome}\n </option>\n <option\n value=\"mostly_away\"\n selected={this.consumptionProfile ===\n \"mostly_away\"}\n >\n {t.solarSystemForm.consumptionProfiles\n .mostlyAway}\n </option>\n </select>\n </div>\n </div>\n {\n /* <div class=\"mt-4 h-48\">\n <canvas ref={(el) => this.chartRef = el}></canvas>\n </div> */\n }\n </div>\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.additionalComponents.title}\n </h2>\n <div class=\"flex flex-col gap-4\">\n {/* Heat Pump Section */}\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"heatPump\"\n class=\"w-4 h-4 accent-tertiary border-border rounded-full focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\n checked={this.heatPump > 0}\n onChange={(e) => {\n this.heatPump =\n (e.target as HTMLInputElement)\n .checked\n ? 100\n : 0;\n this.recalculate();\n }}\n />\n <label\n htmlFor=\"heatPump\"\n class=\"text-text-muted\"\n >\n {t.solarSystemForm\n .additionalComponents\n .heatPump}\n </label>\n </div>\n {(this.heatPump > 0 && !this.isIOS()) && (\n <span class=\"text-text-muted\">\n {this.heatPump} m²\n </span>\n )}\n </div>\n {this.heatPump > 0 && (\n <div class=\"flex flex-col gap-2\">\n {this.isIOS()\n ? (\n <div class=\"flex items-center gap-2\">\n <input\n type=\"number\"\n min=\"10\"\n max=\"300\"\n step=\"10\"\n class=\"flex-1 px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n style={borderStyle}\n value={this.heatPump}\n onInput={(e) => {\n const value =\n parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n if (\n value >= 10 &&\n value <= 300\n ) {\n this.heatPump =\n value;\n this.recalculate();\n }\n }}\n />\n <span class=\"text-sm text-text-muted\">\n m²\n </span>\n </div>\n )\n : (\n <input\n type=\"range\"\n min=\"10\"\n max=\"300\"\n step=\"10\"\n class=\"input-slider custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\n value={this.heatPump}\n onInput={(e) => {\n this.heatPump =\n parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n )}\n </div>\n )}\n </div>\n\n {/* Electric Car Section */}\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"electricCar\"\n class=\"w-4 h-4 accent-tertiary border-border rounded focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\n checked={this.electricCar}\n onChange={(e) => {\n this.electricCar =\n (e.target as HTMLInputElement)\n .checked;\n this.recalculate();\n }}\n />\n <label\n htmlFor=\"electricCar\"\n class=\"text-text-muted\"\n >\n {t.solarSystemForm\n .additionalComponents\n .electricCar}\n </label>\n </div>\n </div>\n {this.electricCar && (\n <div class=\"flex flex-col gap-2\">\n <div class=\"grid grid-cols-2 gap-4\">\n <label class=\"text-sm text-text-muted\">\n {t.solarSystemForm\n .additionalComponents\n .chargingTime}\n </label>\n <label class=\"text-sm text-text-muted\">\n {t.solarSystemForm\n .additionalComponents\n .kilometersPerYear}\n </label>\n </div>\n <div class=\"grid grid-cols-2 gap-4\">\n <select\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n onChange={(e) => {\n this.electricCarChargingTime =\n (e.target as HTMLSelectElement)\n .value as\n | \"day\"\n | \"night\";\n this.recalculate();\n }}\n style={borderStyle}\n >\n <option\n value=\"day\"\n selected={this\n .electricCarChargingTime ===\n \"day\"}\n >\n {t.solarSystemForm\n .additionalComponents\n .chargingTimeDay}\n </option>\n <option\n value=\"night\"\n selected={this\n .electricCarChargingTime ===\n \"night\"}\n >\n {t.solarSystemForm\n .additionalComponents\n .chargingTimeNight}\n </option>\n </select>\n <input\n type=\"number\"\n min=\"1000\"\n max=\"50000\"\n step=\"1000\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n value={this.kmDrivenPerYear}\n onInput={(e) => {\n this.kmDrivenPerYear =\n parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n style={borderStyle}\n />\n </div>\n </div>\n )}\n </div>\n\n {/* Battery Section */}\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"battery\"\n class=\"w-4 h-4 accent-tertiary border-border rounded-full focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\n checked={this.battery > 0}\n onChange={(e) => {\n this.battery =\n (e.target as HTMLInputElement)\n .checked\n ? 5\n : 0;\n this.recalculate();\n }}\n />\n <label\n htmlFor=\"battery\"\n class=\"text-text-muted\"\n >\n {t.solarSystemForm\n .additionalComponents\n .battery}\n </label>\n </div>\n {(this.battery > 0 && !this.isIOS()) && (\n <span class=\"text-text-muted\">\n {this.battery} kWh\n </span>\n )}\n </div>\n {this.battery > 0 && (\n <div class=\"flex flex-col gap-2\">\n {this.isIOS()\n ? (\n <div class=\"flex items-center gap-2\">\n <input\n type=\"number\"\n min=\"1\"\n max=\"20\"\n step=\"1\"\n class=\"flex-1 px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n value={this.battery}\n onInput={(e) => {\n const value =\n parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n if (\n value >= 1 &&\n value <= 20\n ) {\n this.battery =\n value;\n this.recalculate();\n }\n }}\n style={borderStyle}\n />\n <span class=\"text-sm text-text-muted\">\n kWh\n </span>\n </div>\n )\n : (\n <input\n type=\"range\"\n min=\"1\"\n max=\"20\"\n step=\"1\"\n class=\"input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\n value={this.battery}\n onInput={(e) => {\n this.battery = parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {/* Electricity Price and Compensation Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.electricityCostsTitle}\n </h2>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns:\n \"repeat(auto-fit, minmax(250px, 1fr))\",\n gap: \"1rem\",\n }}\n >\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.electricityPrice}\n </label>\n <input\n type=\"number\"\n step=\"0.01\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n style={borderStyle}\n value={this.electricityPrice.toFixed(2)}\n onInput={(e) => {\n this.electricityPrice = parseFloat(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n </div>\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.compensationRate}\n </label>\n <input\n type=\"number\"\n step=\"0.01\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n style={borderStyle}\n value={this.compensationRate.toFixed(2)}\n onInput={(e) => {\n this.compensationRate = parseFloat(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n </div>\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.annualPriceIncrease}\n </label>\n <input\n type=\"number\"\n step=\"0.1\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n style={borderStyle}\n value={this.annualPriceIncrease.toFixed(1)}\n onInput={(e) => {\n this.annualPriceIncrease = parseFloat(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Results Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.resultsTitle}\n </h2>\n <div class=\"bg-muted rounded-4xl p-4\">\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.autonomy}\n </span>\n <span class=\"text-xl font-bold text-secondary mt-1 sm:mt-0\">\n {this.autonomy > 100\n ? \"100\"\n : this.formatEuropeanNumber(\n this.autonomy,\n 1,\n )}%\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.totalEnergyConsumption}\n </span>\n <span class=\"text-xl font-bold text-secondary mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.totalEnergyConsumption,\n 0,\n )} kWh/{t.solarSystemForm.year}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.totalEnergyProduction}\n </span>\n <span class=\"text-xl font-bold text-secondary mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.totalEnergyProduction,\n 0,\n )} kWh/{t.solarSystemForm.year}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.costSavings}\n </span>\n </div>\n <span class=\"text-xl font-bold text-success mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.costSavings,\n )}€/{t\n .solarSystemForm.year}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.compensation20Years}\n </span>\n </div>\n <span class=\"text-xl font-bold text-success mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.compensation20Years,\n )}€\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm\n .monetaryBenefit20Years}\n </span>\n </div>\n <span class=\"text-xl font-bold text-success mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.savedCosts20Years,\n )}€\n </span>\n </div>\n </div>\n </div>\n\n {/* Contact Information Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.requestOffer}\n </h2>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns:\n \"repeat(auto-fit, minmax(250px, 1fr))\",\n gap: \"1rem\",\n }}\n >\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.name}\n </label>\n <input\n type=\"text\"\n class={`w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\n style={this.nameError\n ? errorBorderStyle\n : borderStyle}\n value={this.name}\n onInput={(e) => {\n this.name =\n (e.target as HTMLInputElement)\n .value;\n this.validateForm();\n }}\n placeholder=\"Your name\"\n />\n {this.nameError && (\n <p class=\"text-error text-sm mt-1\">\n {this.nameError}\n </p>\n )}\n </div>\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.email}\n </label>\n <input\n type=\"email\"\n class={`w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\n style={this.emailError\n ? errorBorderStyle\n : borderStyle}\n value={this.email}\n onInput={(e) => {\n this.email =\n (e.target as HTMLInputElement)\n .value;\n this.validateForm();\n }}\n placeholder=\"your.email@example.com\"\n />\n {this.emailError && (\n <p class=\"text-error text-sm mt-1\">\n {this.emailError}\n </p>\n )}\n </div>\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.phone}\n </label>\n <input\n type=\"tel\"\n class={`w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\n style={this.phoneError\n ? errorBorderStyle\n : borderStyle}\n value={this.phone}\n onInput={(e) => {\n this.phone =\n (e.target as HTMLInputElement)\n .value;\n this.validateForm();\n }}\n placeholder=\"+34 123 456 789\"\n />\n {this.phoneError && (\n <p class=\"text-error text-sm mt-1\">\n {this.phoneError}\n </p>\n )}\n </div>\n </div>\n <div class=\"flex flex-col items-center gap-4\">\n <button\n onClick={() => this.handleRequestOffer()}\n disabled={!this.name.trim() ||\n !this.email.trim() || !!this.nameError ||\n !!this.emailError || !!this.phoneError ||\n this.isSubmitting}\n class={`px-6 py-3 rounded-4xl transition-colors duration-200 flex items-center gap-2 ${\n this.isSubmitting\n ? \"bg-muted text-text-muted cursor-not-allowed\"\n : \"bg-secondary hover:bg-tertiary\"\n }`}\n style={{\n color: this.isSubmitting\n ? \"var(--color-text-muted)\"\n : \"#ffffff\",\n }}\n >\n {this.isSubmitting && (\n <div class=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\">\n </div>\n )}\n {this.isSubmitting\n ? t.solarSystemForm.sending\n : t.solarSystemForm.requestOfferButton}\n </button>\n\n {this.submitMessage && (\n <div\n class={`text-sm px-4 py-2 rounded-4xl ${\n this.submitSuccess\n ? \"bg-success/10 text-success border border-success/20\"\n : \"bg-error/10 text-error border border-error/20\"\n }`}\n >\n {this.submitMessage}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"solar-system-form.js","sourceRoot":"","sources":["../../../src/components/solar-system-form/solar-system-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State, Watch } from \"@stencil/core\";\nimport { DEFAULT_SOLAR_PANEL_TYPE } from \"../../config\";\nimport { getLanguageStrings } from \"../../utils/lang/general\";\nimport { Polygon } from \"harmonia-types\";\nimport { state } from \"../../store\";\nimport { SimulationConfig, SolarSystem } from \"harmonia-sim\";\nimport { generateElectricCarChargingHours, simulate } from \"harmonia-sim\";\nimport { HEAT_PUMP_CONSUMPTION } from \"../../constants\";\nimport { LeadData, sendLeadToNexvoro } from \"../../utils/api\";\n\n@Component({\n tag: \"solar-system-form\",\n styleUrl: \"../../output.css\",\n shadow: false,\n})\nexport class SolarSystemForm {\n @Prop()\n systemConfigs: { [id: string]: SolarSystem } = {};\n @Prop()\n polygons: Polygon[] = [];\n @Prop()\n roofCanvas: HTMLCanvasElement;\n @Prop()\n polygonCanvas: HTMLCanvasElement;\n\n @State()\n householdConsumption: number = 4500;\n @State()\n consumptionProfile: \"mostly_at_home\" | \"mostly_away\" = \"mostly_at_home\";\n @State()\n electricityPrice: number = 0.3;\n @State()\n compensationRate: number = 0.07;\n @State()\n annualPriceIncrease: number = 2;\n @State()\n autonomy: number = 0;\n @State()\n costSavings: number = 0;\n @State()\n numberOfPanels: number = 5;\n @State()\n panelPeakPower: number = 0.4; // kW per panel\n @State()\n name: string = \"\";\n @State()\n email: string = \"\";\n @State()\n phone: string = \"\";\n @State()\n nameError: string = \"\";\n @State()\n emailError: string = \"\";\n @State()\n phoneError: string = \"\";\n @State()\n electricCar: boolean = false;\n @State()\n electricCarChargingTime: \"day\" | \"night\" = \"day\";\n @State()\n heatPump: number = 0;\n @State()\n battery: number = 0;\n @State()\n batteryEnabled: boolean = false;\n\n @State()\n compensation20Years: number = 0;\n @State()\n savedCosts20Years: number = 0;\n @State()\n maxPanels: number = 5;\n @State()\n kmDrivenPerYear: number = 10000;\n @State()\n totalEnergyConsumption: number = 4500;\n @State()\n totalEnergyProduction: number = 0;\n @State()\n isSubmitting: boolean = false;\n @State()\n submitMessage: string = \"\";\n @State()\n submitSuccess: boolean = false;\n\n @Watch(\"systemConfigs\")\n updateSystemConfigs() {\n if (Object.keys(this.systemConfigs).length === 0) {\n this.numberOfPanels = 0;\n this.maxPanels = 0;\n return;\n }\n this.numberOfPanels = Object.keys(this.systemConfigs).reduce(\n (acc, curr) => acc + this.systemConfigs[curr].numberOfPanels,\n 0,\n );\n this.maxPanels = Object.keys(this.systemConfigs).reduce(\n (acc, curr) => acc + this.systemConfigs[curr].numberOfPanels,\n 0,\n );\n\n this.panelPeakPower = Object.entries(this.systemConfigs)[0][1][0]\n ?.panel.kWattPeak ?? 0.44;\n\n this.recalculate();\n }\n\n private formatEuropeanNumber(num: number, decimals: number = 2): string {\n const fixed = num.toFixed(decimals);\n const [integerPart, decimalPart] = fixed.split(\".\");\n\n // Add dots as thousands separators\n const formattedInteger = integerPart.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n \".\",\n );\n\n // Join with comma as decimal separator\n return decimalPart\n ? `${formattedInteger},${decimalPart}`\n : formattedInteger;\n }\n\n private recalculate() {\n const currentSystemConfigs = {};\n let totalNumberOfPanels = 0;\n for (const [key, value] of Object.entries(this.systemConfigs)) {\n if (totalNumberOfPanels >= this.numberOfPanels) {\n break;\n }\n if (\n value.numberOfPanels + totalNumberOfPanels > this.numberOfPanels\n ) {\n currentSystemConfigs[key] = {\n ...value,\n numberOfPanels: this.numberOfPanels - totalNumberOfPanels,\n };\n totalNumberOfPanels = this.numberOfPanels;\n } else {\n currentSystemConfigs[key] = value;\n totalNumberOfPanels += value.numberOfPanels;\n }\n }\n\n const simulationConfig: SimulationConfig = {\n general: {\n simulationYears: 20,\n },\n householdConsumption: {\n consumptionProfile: this.consumptionProfile,\n winterConsumptionFactor: 1.4,\n summerConsumptionFactor: 0.6,\n averageConsumption: this.householdConsumption / 365,\n },\n electricityPrice: {\n purchase: this.electricityPrice,\n sell: this.compensationRate,\n increase: this.annualPriceIncrease / 100,\n },\n solarSystems: currentSystemConfigs,\n batteryKWh: this.battery,\n solarRadiation: {\n winterFactor: 0.2,\n summerFactor: 0.6,\n },\n heatPump: {\n m2: this.heatPump,\n consumptionPerM2: HEAT_PUMP_CONSUMPTION / 365,\n },\n electricCar: this.electricCar\n ? {\n averageKilometersPerDay: this.kmDrivenPerYear / 365,\n consumptionkWhPer100km: 20,\n batteryKWh: 80,\n chargingHours: this.electricCarChargingTime === \"day\"\n ? generateElectricCarChargingHours(6, 18)\n : generateElectricCarChargingHours(18, 6),\n }\n : undefined,\n };\n\n const result = simulate(simulationConfig);\n\n this.compensation20Years = result.compensationPerDay * 365 * 20;\n this.savedCosts20Years = result.byYearSavedCosts.reduce(\n (acc, curr) => acc + curr,\n 0,\n ) + this.compensation20Years;\n this.costSavings = result.byYearSavedCosts[0];\n this.autonomy = result.autonomy * 100;\n this.totalEnergyConsumption = result.totalEnergyConsumptionDay * 365;\n // Calculate total energy production based on compensation and rate\n this.totalEnergyProduction = result.totalEnergyProduction * 365;\n }\n\n componentWillLoad() {\n this.updateSystemConfigs();\n }\n\n private validateForm(): boolean {\n let isValid = true;\n const t = getLanguageStrings(state.settings.language);\n\n // Validate name\n if (!this.name.trim()) {\n this.nameError = t.solarSystemForm.nameError;\n isValid = false;\n } else {\n this.nameError = \"\";\n }\n\n // Validate email\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!this.email.trim()) {\n this.emailError = t.solarSystemForm.emailError;\n isValid = false;\n } else if (!emailRegex.test(this.email)) {\n this.emailError = t.solarSystemForm.validEmailError;\n isValid = false;\n } else {\n this.emailError = \"\";\n }\n\n // Validate phone (optional)\n const phoneRegex = /^[\\+]?[1-9][\\d]{0,15}$/;\n if (\n this.phone.trim() &&\n !phoneRegex.test(this.phone.replace(/[\\s\\-\\(\\)]/g, \"\"))\n ) {\n this.phoneError = t.solarSystemForm.phoneError;\n isValid = false;\n } else {\n this.phoneError = \"\";\n }\n\n return isValid;\n }\n\n private async handleRequestOffer() {\n if (!this.validateForm()) {\n return;\n }\n\n this.isSubmitting = true;\n this.submitMessage = \"\";\n this.submitSuccess = false;\n\n const t = getLanguageStrings(state.settings.language);\n\n try {\n const leadData: LeadData = {\n location: {\n name: state.location,\n latitude: state.latitude,\n longitude: state.longitude,\n },\n systemConfig: {\n maxNumberOfPanels: this.maxPanels,\n panelPeakPower: this.panelPeakPower,\n polygons: this.polygons,\n solarSystems: this.systemConfigs,\n electricityPrice: this.electricityPrice,\n compensationRate: this.compensationRate,\n annualPriceIncrease: this.annualPriceIncrease,\n },\n client: {\n name: this.name,\n email: this.email,\n phone: this.phone,\n consumption: this.householdConsumption,\n consumptionProfile: this.consumptionProfile,\n hasBattery: this.batteryEnabled,\n battery: this.battery,\n hasHeatPump: this.heatPump > 0,\n heatPumpM2: this.heatPump,\n hasElectricCar: this.electricCar,\n electricCarChargingTime: this.electricCarChargingTime,\n electricCarKmPerYear: this.kmDrivenPerYear,\n },\n images: {\n roof: this.roofCanvas.toDataURL(),\n polygon: this.polygonCanvas.toDataURL(),\n },\n results: {\n autonomy: this.autonomy,\n costSavings: this.costSavings,\n compensation20Years: this.compensation20Years,\n savedCosts20Years: this.savedCosts20Years,\n totalEnergyConsumption: this.totalEnergyConsumption,\n },\n };\n console.log(\"leadData\", leadData);\n const result = await sendLeadToNexvoro(leadData);\n\n this.submitSuccess = result.success;\n\n if (result.success) {\n console.log(\"Lead successfully sent to Nexvoro\", result);\n this.submitMessage = t.solarSystemForm.leadSubmitted;\n // Optionally reset form or show success message\n } else {\n console.error(\n \"Failed to send lead to Nexvoro:\",\n result.message,\n );\n this.submitMessage = t.solarSystemForm.leadError;\n }\n } catch (error) {\n console.error(\"Error in handleRequestOffer:\", error);\n this.submitSuccess = false;\n this.submitMessage = error instanceof Error\n ? error.message\n : \"An unexpected error occurred\";\n } finally {\n this.isSubmitting = false;\n }\n }\n\n private isIOS(): boolean {\n return state.isIOS;\n }\n\n render() {\n const t = getLanguageStrings(state.settings.language);\n\n // Reusable style objects\n const borderStyle = { border: \"1px solid var(--color-border)\" };\n const errorBorderStyle = { border: \"1px solid var(--color-error)\" };\n\n return (\n <div\n class=\"flex flex-col justify-center items-center w-full h-full pt-4\" // style={{\n // display: (Object.keys(this.systemConfigs).length === 0)\n // ? \"none\"\n // : \"flex\",\n // }}\n id=\"solar-system-form\"\n >\n <h1 class=\"text-2xl font-bold text-secondary mb-4 w-full\">\n {t.solarSystemForm.title}\n </h1>\n\n <div class=\"w-full bg-primary rounded-4xl space-y-6\">\n {/* System Info Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.systemInformation}\n </h2>\n <div class=\"flex flex-col sm:flex-row gap-4\">\n {/* Number of Panels */}\n <div class=\"flex-1 bg-muted rounded-4xl p-4 space-y-3\">\n <div class=\"flex items-center justify-between\">\n <label class=\"text-sm font-medium text-text-muted\">\n {t.solarSystemForm.numberOfPanels}\n </label>\n {!this.isIOS()\n ? (\n <input\n type=\"number\"\n class=\"w-20 px-3 py-1 rounded-full bg-muted text-muted-foreground text-right\"\n value={this.numberOfPanels}\n readOnly\n />\n )\n : (\n <input\n type=\"number\"\n min=\"1\"\n max={this.maxPanels}\n class=\"w-20 px-3 py-1 rounded-full focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground text-center\"\n style={borderStyle}\n value={this.numberOfPanels}\n onInput={(e) => {\n const value = parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n if (\n value >= 1 &&\n value <=\n this.maxPanels\n ) {\n this.numberOfPanels =\n value;\n this.recalculate();\n }\n }}\n />\n )}\n </div>\n {!this.isIOS() && (\n <input\n type=\"range\"\n min=\"1\"\n max={this.maxPanels}\n step=\"1\"\n class=\"input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\n value={this.numberOfPanels}\n onInput={(e) => {\n this.numberOfPanels = parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n if (isNaN(this.numberOfPanels)) {\n this.numberOfPanels = 0;\n }\n this.recalculate();\n }}\n />\n )}\n </div>\n\n {/* Panel Peak Power */}\n <div class=\"flex-1 bg-muted rounded-4xl p-4\">\n <div class=\"flex items-center justify-between\">\n <label class=\"text-sm font-medium text-text-muted\">\n {t.solarSystemForm.panelPeakPower}\n </label>\n <span class=\"text-text-muted\">\n {this.panelPeakPower.toFixed(2)} kW\n </span>\n </div>\n <div class=\"flex items-center justify-between mt-4\">\n <span class=\"text-sm font-medium text-text-muted\">\n {t.solarSystemForm.totalSystemPeakPower}\n </span>\n <span class=\"font-bold text-text-muted\">\n {(DEFAULT_SOLAR_PANEL_TYPE.kWattPeak *\n this.numberOfPanels).toFixed(1)} kWp\n </span>\n </div>\n </div>\n </div>\n </div>\n {/* Household Consumption Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.householdConsumptionTitle}\n </h2>\n <div class=\"grid grid-rows-2 gap-0\">\n <div class=\"grid grid-cols-2 gap-4\">\n <label class=\"block text-sm font-medium text-text-muted\">\n {t.solarSystemForm.annualConsumption}\n </label>\n <label class=\"block text-sm font-medium text-text-muted\">\n {t.solarSystemForm.consumptionProfileTitle}\n </label>\n </div>\n <div class=\"grid grid-cols-2 gap-4\">\n <input\n type=\"number\"\n step=\"100\"\n min=\"0\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\n style={borderStyle}\n value={this.householdConsumption}\n onInput={(e) => {\n this.householdConsumption = parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n <select\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\n style={borderStyle}\n onChange={(e) => {\n this.consumptionProfile =\n (e.target as HTMLSelectElement)\n .value as\n | \"mostly_at_home\"\n | \"mostly_away\";\n this.recalculate();\n }}\n >\n <option\n value=\"mostly_at_home\"\n selected={this.consumptionProfile ===\n \"mostly_at_home\"}\n >\n {t.solarSystemForm.consumptionProfiles\n .mostlyAtHome}\n </option>\n <option\n value=\"mostly_away\"\n selected={this.consumptionProfile ===\n \"mostly_away\"}\n >\n {t.solarSystemForm.consumptionProfiles\n .mostlyAway}\n </option>\n </select>\n </div>\n </div>\n {\n /* <div class=\"mt-4 h-48\">\n <canvas ref={(el) => this.chartRef = el}></canvas>\n </div> */\n }\n </div>\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.additionalComponents.title}\n </h2>\n <div class=\"flex flex-col gap-4\">\n {/* Heat Pump Section */}\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"heatPump\"\n class=\"w-4 h-4 accent-tertiary border-border rounded-full focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\n checked={this.heatPump > 0}\n onChange={(e) => {\n this.heatPump =\n (e.target as HTMLInputElement)\n .checked\n ? 100\n : 0;\n this.recalculate();\n }}\n />\n <label\n htmlFor=\"heatPump\"\n class=\"text-text-muted\"\n >\n {t.solarSystemForm\n .additionalComponents\n .heatPump}\n </label>\n </div>\n {(this.heatPump > 0 && !this.isIOS()) && (\n <span class=\"text-text-muted\">\n {this.heatPump} m²\n </span>\n )}\n </div>\n {this.heatPump > 0 && (\n <div class=\"flex flex-col gap-2\">\n {this.isIOS()\n ? (\n <div class=\"flex items-center gap-2\">\n <input\n type=\"number\"\n min=\"10\"\n max=\"300\"\n step=\"10\"\n class=\"flex-1 px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n style={borderStyle}\n value={this.heatPump}\n onInput={(e) => {\n let value =\n parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n if (isNaN(value)) {\n value = 0;\n }\n if (\n value >= 0 &&\n value <= 300\n ) {\n this.heatPump =\n value;\n this.recalculate();\n }\n }}\n />\n <span class=\"text-sm text-text-muted\">\n m²\n </span>\n </div>\n )\n : (\n <input\n type=\"range\"\n min=\"10\"\n max=\"300\"\n step=\"10\"\n class=\"input-slider custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\n value={this.heatPump}\n onInput={(e) => {\n this.heatPump =\n parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n )}\n </div>\n )}\n </div>\n\n {/* Electric Car Section */}\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"electricCar\"\n class=\"w-4 h-4 accent-tertiary border-border rounded focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\n checked={this.electricCar}\n onChange={(e) => {\n this.electricCar =\n (e.target as HTMLInputElement)\n .checked;\n this.recalculate();\n }}\n />\n <label\n htmlFor=\"electricCar\"\n class=\"text-text-muted\"\n >\n {t.solarSystemForm\n .additionalComponents\n .electricCar}\n </label>\n </div>\n </div>\n {this.electricCar && (\n <div class=\"flex flex-col gap-2\">\n <div class=\"grid grid-cols-2 gap-4\">\n <label class=\"text-sm text-text-muted\">\n {t.solarSystemForm\n .additionalComponents\n .chargingTime}\n </label>\n <label class=\"text-sm text-text-muted\">\n {t.solarSystemForm\n .additionalComponents\n .kilometersPerYear}\n </label>\n </div>\n <div class=\"grid grid-cols-2 gap-4\">\n <select\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n onChange={(e) => {\n this.electricCarChargingTime =\n (e.target as HTMLSelectElement)\n .value as\n | \"day\"\n | \"night\";\n this.recalculate();\n }}\n style={borderStyle}\n >\n <option\n value=\"day\"\n selected={this\n .electricCarChargingTime ===\n \"day\"}\n >\n {t.solarSystemForm\n .additionalComponents\n .chargingTimeDay}\n </option>\n <option\n value=\"night\"\n selected={this\n .electricCarChargingTime ===\n \"night\"}\n >\n {t.solarSystemForm\n .additionalComponents\n .chargingTimeNight}\n </option>\n </select>\n <input\n type=\"number\"\n min=\"1000\"\n max=\"100000\"\n step=\"1000\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n value={this.kmDrivenPerYear}\n onInput={(e) => {\n this.kmDrivenPerYear =\n parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n if (\n isNaN(\n this.kmDrivenPerYear,\n )\n ) {\n this.kmDrivenPerYear =\n 0;\n }\n this.recalculate();\n }}\n style={borderStyle}\n />\n </div>\n </div>\n )}\n </div>\n\n {/* Battery Section */}\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n id=\"battery\"\n class=\"w-4 h-4 accent-tertiary border-border rounded-full focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\n checked={this.batteryEnabled}\n onChange={(e) => {\n this.batteryEnabled =\n (e.target as HTMLInputElement)\n .checked;\n this.battery =\n this.batteryEnabled\n ? 5\n : 0;\n this.recalculate();\n }}\n />\n <label\n htmlFor=\"battery\"\n class=\"text-text-muted\"\n >\n {t.solarSystemForm\n .additionalComponents\n .battery}\n </label>\n </div>\n {(this.batteryEnabled && !this.isIOS()) && (\n <span class=\"text-text-muted\">\n {this.battery} kWh\n </span>\n )}\n </div>\n {this.batteryEnabled && (\n <div class=\"flex flex-col gap-2\">\n {this.isIOS()\n ? (\n <div class=\"flex items-center gap-2\">\n <input\n type=\"number\"\n min=\"0\"\n max=\"20\"\n step=\"1\"\n class=\"flex-1 px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n value={this.battery}\n onInput={(e) => {\n let value =\n parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n if (isNaN(value)) {\n value = 0;\n }\n if (\n value >= 0 &&\n value <= 20\n ) {\n this.battery =\n value;\n } else {\n this.battery =\n 20;\n }\n this.recalculate();\n }}\n style={borderStyle}\n />\n <span class=\"text-sm text-text-muted\">\n kWh\n </span>\n </div>\n )\n : (\n <input\n type=\"range\"\n min=\"1\"\n max=\"20\"\n step=\"1\"\n class=\"input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\n value={this.battery}\n onInput={(e) => {\n const value = parseInt(\n (e.target as HTMLInputElement)\n .value,\n );\n this.battery = value;\n this.batteryEnabled =\n value > 0;\n this.recalculate();\n }}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {/* Electricity Price and Compensation Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.electricityCostsTitle}\n </h2>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns:\n \"repeat(auto-fit, minmax(100px, 1fr))\",\n gap: \"1rem\",\n }}\n >\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.electricityPrice}\n </label>\n <input\n type=\"number\"\n step=\"0.01\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n style={borderStyle}\n value={this.electricityPrice.toFixed(2)}\n onInput={(e) => {\n this.electricityPrice = parseFloat(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n </div>\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.compensationRate}\n </label>\n <input\n type=\"number\"\n step=\"0.01\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n style={borderStyle}\n value={this.compensationRate.toFixed(2)}\n onInput={(e) => {\n this.compensationRate = parseFloat(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n </div>\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.annualPriceIncrease}\n </label>\n <input\n type=\"number\"\n step=\"0.1\"\n class=\"w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\n style={borderStyle}\n value={this.annualPriceIncrease.toFixed(1)}\n onInput={(e) => {\n this.annualPriceIncrease = parseFloat(\n (e.target as HTMLInputElement)\n .value,\n );\n this.recalculate();\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Results Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.resultsTitle}\n </h2>\n <div class=\"bg-muted rounded-4xl p-4\">\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.autonomy}\n </span>\n <span class=\"text-xl font-bold text-secondary mt-1 sm:mt-0\">\n {this.autonomy > 100\n ? \"100\"\n : this.formatEuropeanNumber(\n this.autonomy,\n 1,\n )}%\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.totalEnergyConsumption}\n </span>\n <span class=\"text-xl font-bold text-secondary mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.totalEnergyConsumption,\n 0,\n )} kWh/{t.solarSystemForm.year}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.totalEnergyProduction}\n </span>\n <span class=\"text-xl font-bold text-secondary mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.totalEnergyProduction,\n 0,\n )} kWh/{t.solarSystemForm.year}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.costSavings}\n </span>\n </div>\n <span class=\"text-xl font-bold text-success mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.costSavings,\n )} €/{t\n .solarSystemForm.year}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm.compensation20Years}\n </span>\n </div>\n <span class=\"text-xl font-bold text-success mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.compensation20Years,\n )} €\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center justify-between mt-4\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-text-muted\">\n {t.solarSystemForm\n .monetaryBenefit20Years}\n </span>\n </div>\n <span class=\"text-xl font-bold text-success mt-1 sm:mt-0\">\n {this.formatEuropeanNumber(\n this.savedCosts20Years,\n )} €\n </span>\n </div>\n </div>\n </div>\n\n {/* Contact Information Section */}\n <div\n class=\"space-y-4 p-4 rounded-4xl\"\n style={borderStyle}\n >\n <h2 class=\"text-lg font-semibold text-secondary\">\n {t.solarSystemForm.requestOffer}\n </h2>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns:\n \"repeat(auto-fit, minmax(1 00px, 1fr))\",\n gap: \"1rem\",\n }}\n >\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.name}\n </label>\n <input\n type=\"text\"\n class={`w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\n style={this.nameError\n ? errorBorderStyle\n : borderStyle}\n value={this.name}\n onInput={(e) => {\n this.name =\n (e.target as HTMLInputElement)\n .value;\n this.validateForm();\n }}\n placeholder=\"Your name\"\n />\n {this.nameError && (\n <p class=\"text-error text-sm mt-1\">\n {this.nameError}\n </p>\n )}\n </div>\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.email}\n </label>\n <input\n type=\"email\"\n class={`w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\n style={this.emailError\n ? errorBorderStyle\n : borderStyle}\n value={this.email}\n onInput={(e) => {\n this.email =\n (e.target as HTMLInputElement)\n .value;\n this.validateForm();\n }}\n placeholder=\"your.email@example.com\"\n />\n {this.emailError && (\n <p class=\"text-error text-sm mt-1\">\n {this.emailError}\n </p>\n )}\n </div>\n <div>\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\n {t.solarSystemForm.phone}\n </label>\n <input\n type=\"tel\"\n class={`w-full px-4 py-2 rounded-4xl focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\n style={this.phoneError\n ? errorBorderStyle\n : borderStyle}\n value={this.phone}\n onInput={(e) => {\n this.phone =\n (e.target as HTMLInputElement)\n .value;\n this.validateForm();\n }}\n placeholder=\"+34 123 456 789\"\n />\n {this.phoneError && (\n <p class=\"text-error text-sm mt-1\">\n {this.phoneError}\n </p>\n )}\n </div>\n </div>\n <div class=\"flex flex-col items-center gap-4\">\n <button\n onClick={() => this.handleRequestOffer()}\n disabled={!this.name.trim() ||\n !this.email.trim() || !!this.nameError ||\n !!this.emailError || !!this.phoneError ||\n this.isSubmitting}\n class={`px-6 py-3 rounded-4xl transition-colors duration-200 flex items-center gap-2 ${\n this.isSubmitting\n ? \"bg-muted text-text-muted cursor-not-allowed\"\n : \"bg-secondary hover:bg-tertiary\"\n }`}\n style={{\n color: this.isSubmitting\n ? \"var(--color-text-muted)\"\n : \"#ffffff\",\n }}\n >\n {this.isSubmitting && (\n <div class=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\">\n </div>\n )}\n {this.isSubmitting\n ? t.solarSystemForm.sending\n : t.solarSystemForm.requestOfferButton}\n </button>\n\n {this.submitMessage && (\n <div\n class={`text-sm px-4 py-2 rounded-4xl ${\n this.submitSuccess\n ? \"bg-success/10 text-success border border-success/20\"\n : \"bg-error/10 text-error border border-error/20\"\n }`}\n >\n {this.submitMessage}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n"]}
@@ -27,15 +27,15 @@ export const de = {
27
27
  compensationRate: "Einspeisevergütung (€/kWh)",
28
28
  autonomy: "Autarkie",
29
29
  totalEnergyConsumption: "Gesamtenergieverbrauch",
30
- totalEnergyProduction: "Gesamtenergieerzeugung (ungefähr)",
31
- costSavings: "Einsparungen (€/Jahr)",
30
+ totalEnergyProduction: "Gesamtenergieerzeugung",
31
+ costSavings: "Einsparungen",
32
32
  householdConsumptionTitle: "Haushaltsverbrauch",
33
33
  consumptionProfileTitle: "Verbrauchprofil",
34
34
  electricityCostsTitle: "Stromkosten",
35
35
  compensationRateTitle: "Einspeisevergütung",
36
36
  resultsTitle: "Ergebnisse",
37
37
  savingsDisclaimer: "Disclaimer: Die Einsparungen basieren auf dem durchschnittlichen Strompreis in Deutschland.",
38
- annualConsumption: "Jährlicher Verbrauch (kWh)",
38
+ annualConsumption: "Jährlicher Verbrauch",
39
39
  name: "Name",
40
40
  email: "Email",
41
41
  phone: "Telefonnummer (optional)",
@@ -43,8 +43,8 @@ export const de = {
43
43
  emailError: "Bitte geben Sie eine gültige E-Mail-Adresse ein",
44
44
  phoneError: "Bitte geben Sie eine gültige Telefonnummer ein",
45
45
  consumptionProfiles: {
46
- mostlyAtHome: "Hauptsächlich zu Hause",
47
- mostlyAway: "Erwerbstätig",
46
+ mostlyAtHome: "Tag",
47
+ mostlyAway: "Nacht",
48
48
  },
49
49
  chart: {
50
50
  consumption: "Verbrauch",
@@ -143,7 +143,7 @@ export const de = {
143
143
  understood: "Verstanden",
144
144
  markEdge: {
145
145
  title: "Untere Dachkante markieren",
146
- description: "Markieren Sie jetzt die untere Kante Ihres Daches, um die optimale Platzierung der Solarpaneele zu berechnen. Klicken Sie auf die Punkte entlang der unteren Kante Ihres Daches.",
146
+ description: "Falls Störobjekte wie Dachfenster und Schornsteine vorhanden sind, markieren Sie diese mit dem Hindernis Werkzeug. Danach markieren Sie die untere Kante Ihres Daches, um die optimale Platzierung der Solarpaneele zu berechnen. Klicken Sie auf die unteren Kante Ihres Daches.",
147
147
  understood: "Verstanden",
148
148
  },
149
149
  additionalTools: {
@@ -1 +1 @@
1
- {"version":3,"file":"german.js","sourceRoot":"","sources":["../../../src/utils/lang/german.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const de: LanguageStrings = {\r\n settings: {\r\n language: \"Sprache\",\r\n rowSpacing: \"Zeilenabstand\",\r\n columnSpacing: \"Spaltenabstand\",\r\n borderInset: \"Randabstand\",\r\n },\r\n mapSelector: {\r\n explanation:\r\n \"Wählen Sie Ihre Adresse auf der Karte und passen Sie den Radius des Kreises an, um Ihr Dach vollständig zu erfassen.\",\r\n radius: \"Radius (Meter)\",\r\n accept: \"Akzeptieren\",\r\n chooseOnMap: \"Auf der Karte auswählen\",\r\n switchToStandard: \"Zur Standardkarte wechseln\",\r\n switchToSatellite: \"Zur Satellitenansicht wechseln\",\r\n noAddressSelected: \"Bitte wählen Sie zuerst eine Adresse aus\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Geben Sie Ihre Adresse ein\",\r\n },\r\n solarSystemForm: {\r\n title: \"Solarsystem Konfiguration\",\r\n systemInformation: \"System Information\",\r\n numberOfPanels: \"Anzahl der Solarpanel\",\r\n panelPeakPower: \"Panelleistung (kW)\",\r\n totalSystemPeakPower: \"Anlagengröße (kWp)\",\r\n electricityPrice: \"Strompreis (€/kWh)\",\r\n compensationRate: \"Einspeisevergütung (€/kWh)\",\r\n autonomy: \"Autarkie\",\r\n totalEnergyConsumption: \"Gesamtenergieverbrauch\",\r\n totalEnergyProduction: \"Gesamtenergieerzeugung (ungefähr)\",\r\n costSavings: \"Einsparungen (€/Jahr)\",\r\n householdConsumptionTitle: \"Haushaltsverbrauch\",\r\n consumptionProfileTitle: \"Verbrauchprofil\",\r\n electricityCostsTitle: \"Stromkosten\",\r\n compensationRateTitle: \"Einspeisevergütung\",\r\n resultsTitle: \"Ergebnisse\",\r\n savingsDisclaimer:\r\n \"Disclaimer: Die Einsparungen basieren auf dem durchschnittlichen Strompreis in Deutschland.\",\r\n annualConsumption: \"Jährlicher Verbrauch (kWh)\",\r\n name: \"Name\",\r\n email: \"Email\",\r\n phone: \"Telefonnummer (optional)\",\r\n nameError: \"Bitte geben Sie Ihren Namen ein\",\r\n emailError: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\r\n phoneError: \"Bitte geben Sie eine gültige Telefonnummer ein\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Hauptsächlich zu Hause\",\r\n mostlyAway: \"Erwerbstätig\",\r\n },\r\n chart: {\r\n consumption: \"Verbrauch\",\r\n production: \"Produktion\",\r\n consumptionProfile: \"Verbrauchprofil\",\r\n relativeConsumption: \"Verbrauch\",\r\n hourOfDay: \"Stunde des Tages\",\r\n },\r\n validEmailError: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\r\n requestOffer: \"Angebot anfordern\",\r\n requestOfferButton: \"Angebot anfordern\",\r\n year: \"Jahr\",\r\n additionalComponents: {\r\n title: \"Zusätzliches\",\r\n heatPump: \"Wärmepumpe\",\r\n electricCar: \"Elektroauto\",\r\n battery: \"Batterie\",\r\n chargingTime: \"Zeitpunkt der Ladung\",\r\n chargingTimeDay: \"Tag (06:00 - 18:00)\",\r\n chargingTimeNight: \"Nacht (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilometer pro Jahr\",\r\n },\r\n annualPriceIncrease: \"Jährliche Preissteigerung (%)\t\",\r\n costSavings20Years: \"20-Jährige Einsparungen\",\r\n compensation20Years: \"Einspeisevergütung 20 Jahre\",\r\n monetaryBenefit20Years: \"Geldwerter Vorteil 20 Jahre\",\r\n approximate: \"Ungefährer Wert\",\r\n sending: \"Wird gesendet...\",\r\n leadSubmitted: \"Ihre Anfrage wurde erfolgreich übermittelt!\",\r\n leadError:\r\n \"Beim Übermitteln Ihrer Anfrage ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Anleitung anzeigen\",\r\n hide: \"Anleitung ausblenden\",\r\n parts: {\r\n roof:\r\n \"Nachdem Sie Ihre Adresse gesucht und ausgewählt haben. Markieren Sie die Teile Ihres Daches, auf denen Sie Solarpanelleisten hinzufügen möchten. Markieren Sie jede Oberfläche mit einem Polygon mit dem Dachwerkzeug\",\r\n obstruction:\r\n \". Wenn Sie Dachfenster oder andere Hindernisse haben, auf denen Sie keine Solarpanele hinzufügen können, markieren Sie diese mit dem Hinderniswerkzeug\",\r\n delete: \". Sie können Polygone mit dem Löschwerkzeug löschen\",\r\n move:\r\n \". Wenn Sie die Ecken eines Polygons ändern möchten, wählen Sie das Verschiebewerkzeug\",\r\n end: \", wählen Sie das Polygon, das Sie ändern möchten, und verschieben Sie die Ecken.\",\r\n },\r\n },\r\n markRoofEdge: \"untere Dachkante markieren\",\r\n markAsFlatRoof: \"Als Flachdach markieren\",\r\n loading: \"Lädt\",\r\n noPolygonSelected: \"Kein Dachsegment ausgewählt\",\r\n noAddressSelected: \"Bitte wählen Sie eine Adresse aus\",\r\n information: \"Dachsegment Information\",\r\n calculateSolarPanels: \"Solarpanele berechnen\",\r\n panels: \"Panele\",\r\n area: \"Fläche\",\r\n azimuth: \"Ausrichtung\",\r\n pitch: \"Neigung\",\r\n imageLoadError:\r\n \"Beim Laden des Satellitenbildes ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.\",\r\n tools: {\r\n roof: {\r\n name: \"Dach\",\r\n explanation: \"Zeichnen Sie das Dach des Gebäudes\",\r\n ariaLabel: \"Dach\",\r\n },\r\n obstruction: {\r\n name: \"Hindernis\",\r\n explanation: \"Zeichnen Sie das Hindernis des Gebäudes\",\r\n ariaLabel: \"Hindernis\",\r\n },\r\n delete: {\r\n name: \"Löschen\",\r\n explanation: \"Löschen Sie das ausgewählte Polygon\",\r\n ariaLabel: \"Löschen\",\r\n },\r\n move: {\r\n name: \"Verschieben\",\r\n explanation: \"Verschieben Sie Punkte des ausgewählten Polygons\",\r\n ariaLabel: \"Verschieben\",\r\n },\r\n undo: {\r\n name: \"Rückgängig\",\r\n explanation: \"Machen Sie die letzte Aktion rückgängig\",\r\n ariaLabel: \"Rückgängig\",\r\n },\r\n markRoofEdge: {\r\n name: \"Dachkante\",\r\n explanation: \"Markieren Sie die Kante des Daches\",\r\n ariaLabel: \"Dachkante markieren\",\r\n },\r\n },\r\n toast: {\r\n undoSuccess: \"Aktion erfolgreich rückgängig gemacht\",\r\n calculateSolarPanelsSuccess: \"Solarpaneele erfolgreich berechnet\",\r\n markAsFlatRoofSuccess:\r\n \"Dach als Flachdach markiert. Bitte wählen Sie eine Kante aus, um die Paneele mit dem Gebäude auszurichten.\",\r\n },\r\n tutorial: {\r\n title: \"So markieren Sie Ihr Dach\",\r\n description:\r\n \"Verwenden Sie das Dachwerkzeug, um das Dachsegment zu markieren, auf dem Sie Solarpaneele installieren möchten. Klicken Sie auf die Ecken Ihres Daches, um ein Polygon zu erstellen.\",\r\n understood: \"Verstanden\",\r\n markEdge: {\r\n title: \"Untere Dachkante markieren\",\r\n description:\r\n \"Markieren Sie jetzt die untere Kante Ihres Daches, um die optimale Platzierung der Solarpaneele zu berechnen. Klicken Sie auf die Punkte entlang der unteren Kante Ihres Daches.\",\r\n understood: \"Verstanden\",\r\n },\r\n additionalTools: {\r\n title: \"Zusätzliche Werkzeuge verfügbar\",\r\n description:\r\n \"Sie können jetzt weitere Dachsegmente mit dem Dachwerkzeug hinzufügen. Verwenden Sie das Hinderniswerkzeug, um Bereiche zu markieren, in denen Sie keine Solarpaneele möchten (wie Dachfenster oder Schornsteine). Das Verschiebewerkzeug ermöglicht es Ihnen, ein beliebiges Polygon auszuwählen und seine Punkte durch Ziehen zu bearbeiten.\",\r\n understood: \"Verstanden\",\r\n },\r\n },\r\n },\r\n};\r\n"]}
1
+ {"version":3,"file":"german.js","sourceRoot":"","sources":["../../../src/utils/lang/german.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const de: LanguageStrings = {\r\n settings: {\r\n language: \"Sprache\",\r\n rowSpacing: \"Zeilenabstand\",\r\n columnSpacing: \"Spaltenabstand\",\r\n borderInset: \"Randabstand\",\r\n },\r\n mapSelector: {\r\n explanation:\r\n \"Wählen Sie Ihre Adresse auf der Karte und passen Sie den Radius des Kreises an, um Ihr Dach vollständig zu erfassen.\",\r\n radius: \"Radius (Meter)\",\r\n accept: \"Akzeptieren\",\r\n chooseOnMap: \"Auf der Karte auswählen\",\r\n switchToStandard: \"Zur Standardkarte wechseln\",\r\n switchToSatellite: \"Zur Satellitenansicht wechseln\",\r\n noAddressSelected: \"Bitte wählen Sie zuerst eine Adresse aus\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Geben Sie Ihre Adresse ein\",\r\n },\r\n solarSystemForm: {\r\n title: \"Solarsystem Konfiguration\",\r\n systemInformation: \"System Information\",\r\n numberOfPanels: \"Anzahl der Solarpanel\",\r\n panelPeakPower: \"Panelleistung (kW)\",\r\n totalSystemPeakPower: \"Anlagengröße (kWp)\",\r\n electricityPrice: \"Strompreis (€/kWh)\",\r\n compensationRate: \"Einspeisevergütung (€/kWh)\",\r\n autonomy: \"Autarkie\",\r\n totalEnergyConsumption: \"Gesamtenergieverbrauch\",\r\n totalEnergyProduction: \"Gesamtenergieerzeugung\",\r\n costSavings: \"Einsparungen\",\r\n householdConsumptionTitle: \"Haushaltsverbrauch\",\r\n consumptionProfileTitle: \"Verbrauchprofil\",\r\n electricityCostsTitle: \"Stromkosten\",\r\n compensationRateTitle: \"Einspeisevergütung\",\r\n resultsTitle: \"Ergebnisse\",\r\n savingsDisclaimer:\r\n \"Disclaimer: Die Einsparungen basieren auf dem durchschnittlichen Strompreis in Deutschland.\",\r\n annualConsumption: \"Jährlicher Verbrauch\",\r\n name: \"Name\",\r\n email: \"Email\",\r\n phone: \"Telefonnummer (optional)\",\r\n nameError: \"Bitte geben Sie Ihren Namen ein\",\r\n emailError: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\r\n phoneError: \"Bitte geben Sie eine gültige Telefonnummer ein\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Tag\",\r\n mostlyAway: \"Nacht\",\r\n },\r\n chart: {\r\n consumption: \"Verbrauch\",\r\n production: \"Produktion\",\r\n consumptionProfile: \"Verbrauchprofil\",\r\n relativeConsumption: \"Verbrauch\",\r\n hourOfDay: \"Stunde des Tages\",\r\n },\r\n validEmailError: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\r\n requestOffer: \"Angebot anfordern\",\r\n requestOfferButton: \"Angebot anfordern\",\r\n year: \"Jahr\",\r\n additionalComponents: {\r\n title: \"Zusätzliches\",\r\n heatPump: \"Wärmepumpe\",\r\n electricCar: \"Elektroauto\",\r\n battery: \"Batterie\",\r\n chargingTime: \"Zeitpunkt der Ladung\",\r\n chargingTimeDay: \"Tag (06:00 - 18:00)\",\r\n chargingTimeNight: \"Nacht (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilometer pro Jahr\",\r\n },\r\n annualPriceIncrease: \"Jährliche Preissteigerung (%)\t\",\r\n costSavings20Years: \"20-Jährige Einsparungen\",\r\n compensation20Years: \"Einspeisevergütung 20 Jahre\",\r\n monetaryBenefit20Years: \"Geldwerter Vorteil 20 Jahre\",\r\n approximate: \"Ungefährer Wert\",\r\n sending: \"Wird gesendet...\",\r\n leadSubmitted: \"Ihre Anfrage wurde erfolgreich übermittelt!\",\r\n leadError:\r\n \"Beim Übermitteln Ihrer Anfrage ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Anleitung anzeigen\",\r\n hide: \"Anleitung ausblenden\",\r\n parts: {\r\n roof:\r\n \"Nachdem Sie Ihre Adresse gesucht und ausgewählt haben. Markieren Sie die Teile Ihres Daches, auf denen Sie Solarpanelleisten hinzufügen möchten. Markieren Sie jede Oberfläche mit einem Polygon mit dem Dachwerkzeug\",\r\n obstruction:\r\n \". Wenn Sie Dachfenster oder andere Hindernisse haben, auf denen Sie keine Solarpanele hinzufügen können, markieren Sie diese mit dem Hinderniswerkzeug\",\r\n delete: \". Sie können Polygone mit dem Löschwerkzeug löschen\",\r\n move:\r\n \". Wenn Sie die Ecken eines Polygons ändern möchten, wählen Sie das Verschiebewerkzeug\",\r\n end: \", wählen Sie das Polygon, das Sie ändern möchten, und verschieben Sie die Ecken.\",\r\n },\r\n },\r\n markRoofEdge: \"untere Dachkante markieren\",\r\n markAsFlatRoof: \"Als Flachdach markieren\",\r\n loading: \"Lädt\",\r\n noPolygonSelected: \"Kein Dachsegment ausgewählt\",\r\n noAddressSelected: \"Bitte wählen Sie eine Adresse aus\",\r\n information: \"Dachsegment Information\",\r\n calculateSolarPanels: \"Solarpanele berechnen\",\r\n panels: \"Panele\",\r\n area: \"Fläche\",\r\n azimuth: \"Ausrichtung\",\r\n pitch: \"Neigung\",\r\n imageLoadError:\r\n \"Beim Laden des Satellitenbildes ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.\",\r\n tools: {\r\n roof: {\r\n name: \"Dach\",\r\n explanation: \"Zeichnen Sie das Dach des Gebäudes\",\r\n ariaLabel: \"Dach\",\r\n },\r\n obstruction: {\r\n name: \"Hindernis\",\r\n explanation: \"Zeichnen Sie das Hindernis des Gebäudes\",\r\n ariaLabel: \"Hindernis\",\r\n },\r\n delete: {\r\n name: \"Löschen\",\r\n explanation: \"Löschen Sie das ausgewählte Polygon\",\r\n ariaLabel: \"Löschen\",\r\n },\r\n move: {\r\n name: \"Verschieben\",\r\n explanation: \"Verschieben Sie Punkte des ausgewählten Polygons\",\r\n ariaLabel: \"Verschieben\",\r\n },\r\n undo: {\r\n name: \"Rückgängig\",\r\n explanation: \"Machen Sie die letzte Aktion rückgängig\",\r\n ariaLabel: \"Rückgängig\",\r\n },\r\n markRoofEdge: {\r\n name: \"Dachkante\",\r\n explanation: \"Markieren Sie die Kante des Daches\",\r\n ariaLabel: \"Dachkante markieren\",\r\n },\r\n },\r\n toast: {\r\n undoSuccess: \"Aktion erfolgreich rückgängig gemacht\",\r\n calculateSolarPanelsSuccess: \"Solarpaneele erfolgreich berechnet\",\r\n markAsFlatRoofSuccess:\r\n \"Dach als Flachdach markiert. Bitte wählen Sie eine Kante aus, um die Paneele mit dem Gebäude auszurichten.\",\r\n },\r\n tutorial: {\r\n title: \"So markieren Sie Ihr Dach\",\r\n description:\r\n \"Verwenden Sie das Dachwerkzeug, um das Dachsegment zu markieren, auf dem Sie Solarpaneele installieren möchten. Klicken Sie auf die Ecken Ihres Daches, um ein Polygon zu erstellen.\",\r\n understood: \"Verstanden\",\r\n markEdge: {\r\n title: \"Untere Dachkante markieren\",\r\n description:\r\n \"Falls Störobjekte wie Dachfenster und Schornsteine vorhanden sind, markieren Sie diese mit dem Hindernis Werkzeug. Danach markieren Sie die untere Kante Ihres Daches, um die optimale Platzierung der Solarpaneele zu berechnen. Klicken Sie auf die unteren Kante Ihres Daches.\",\r\n understood: \"Verstanden\",\r\n },\r\n additionalTools: {\r\n title: \"Zusätzliche Werkzeuge verfügbar\",\r\n description:\r\n \"Sie können jetzt weitere Dachsegmente mit dem Dachwerkzeug hinzufügen. Verwenden Sie das Hinderniswerkzeug, um Bereiche zu markieren, in denen Sie keine Solarpaneele möchten (wie Dachfenster oder Schornsteine). Das Verschiebewerkzeug ermöglicht es Ihnen, ein beliebiges Polygon auszuwählen und seine Punkte durch Ziehen zu bearbeiten.\",\r\n understood: \"Verstanden\",\r\n },\r\n },\r\n },\r\n};\r\n"]}
@@ -1,6 +1,6 @@
1
1
 
2
2
  if (typeof global === "undefined") { var global = globalThis || window || self; }
3
- import { M as MapDraw$1, d as defineCustomElement$1 } from './p-Cl7aThVr.js';
3
+ import { M as MapDraw$1, d as defineCustomElement$1 } from './p-DlNHVTGB.js';
4
4
 
5
5
  const MapDraw = MapDraw$1;
6
6
  const defineCustomElement = defineCustomElement$1;
@@ -1,6 +1,6 @@
1
1
 
2
2
  if (typeof global === "undefined") { var global = globalThis || window || self; }
3
- import { M as MapSelector$1, d as defineCustomElement$1 } from './p-CE2V-avM.js';
3
+ import { M as MapSelector$1, d as defineCustomElement$1 } from './p-Bopprtc7.js';
4
4
 
5
5
  const MapSelector = MapSelector$1;
6
6
  const defineCustomElement = defineCustomElement$1;