blue-chestnut-solar-expert 0.0.27 → 0.0.29
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.
- package/dist/cjs/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/eraser-icon_16.cjs.entry.js +41 -41
- package/dist/cjs/eraser-icon_16.cjs.entry.js.map +1 -1
- package/dist/cjs/loading-widget.cjs.entry.js +1 -1
- package/dist/cjs/solar-calculator.cjs.entry.js +1 -1
- package/dist/collection/components/settings/settings.js +8 -8
- package/dist/collection/components/settings/settings.js.map +1 -1
- package/dist/collection/components/solar-calculator/solar-calculator.js +1 -1
- package/dist/collection/components/solar-expert/solar-expert.js +2 -2
- package/dist/collection/components/solar-expert/solar-expert.js.map +1 -1
- package/dist/collection/components/solar-system-form/solar-system-form.js +31 -31
- package/dist/collection/components/widgets/loading-widget.js +1 -1
- package/dist/components/loading-widget.js +1 -1
- package/dist/components/map-draw.js +1 -1
- package/dist/components/{p-BraaSfVN.js → p-C8b9lX1K.js} +33 -33
- package/dist/components/{p-BraaSfVN.js.map → p-C8b9lX1K.js.map} +1 -1
- package/dist/components/{p-Cfxk__-m.js → p-Cp6mvZCj.js} +4 -4
- package/dist/components/{p-Cfxk__-m.js.map → p-Cp6mvZCj.js.map} +1 -1
- package/dist/components/{p-aI3c1NCj.js → p-DRZd44KM.js} +10 -10
- package/dist/components/p-DRZd44KM.js.map +1 -0
- package/dist/components/settings-modal.js +1 -1
- package/dist/components/solar-calculator.js +1 -1
- package/dist/components/solar-expert.js +5 -5
- package/dist/components/solar-expert.js.map +1 -1
- package/dist/components/solar-system-form.js +1 -1
- package/dist/esm/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.js.map +1 -1
- package/dist/esm/eraser-icon_16.entry.js +41 -41
- package/dist/esm/eraser-icon_16.entry.js.map +1 -1
- package/dist/esm/loading-widget.entry.js +1 -1
- package/dist/esm/solar-calculator.entry.js +1 -1
- package/dist/stencil-library/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.esm.js.map +1 -1
- package/dist/stencil-library/{p-74e0c2f0.entry.js → p-4020a1f0.entry.js} +2 -2
- package/dist/stencil-library/{p-7e0b62d2.entry.js → p-76ce6493.entry.js} +2 -2
- package/dist/stencil-library/{p-e423f7bb.entry.js → p-8b5f9a3a.entry.js} +2 -2
- package/dist/stencil-library/{p-e423f7bb.entry.js.map → p-8b5f9a3a.entry.js.map} +1 -1
- package/dist/stencil-library/stencil-library.esm.js +1 -1
- package/package.json +1 -1
- package/dist/components/p-aI3c1NCj.js.map +0 -1
- /package/dist/stencil-library/{p-74e0c2f0.entry.js.map → p-4020a1f0.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-7e0b62d2.entry.js.map → p-76ce6493.entry.js.map} +0 -0
|
@@ -9,7 +9,7 @@ const LoadingWidget = class {
|
|
|
9
9
|
index.registerInstance(this, hostRef);
|
|
10
10
|
}
|
|
11
11
|
render() {
|
|
12
|
-
return (index.h("div", { key: '
|
|
12
|
+
return (index.h("div", { key: 'fd87a9b0905bfc9237be96adee10ac9605531e2a', class: "absolute flex items-center justify-center bg-muted bg-opacity-75 z-20 pt-7 rounded-4xl" }, index.h("div", { key: 'e83ac46dcdb9958a2f9e697cb16f8924684a6c6f', class: "animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-secondary" })));
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
LoadingWidget.style = outputCss;
|
|
@@ -210,7 +210,7 @@ const SolarCalculator = class {
|
|
|
210
210
|
});
|
|
211
211
|
}
|
|
212
212
|
render() {
|
|
213
|
-
return (index.h("div", { key: '
|
|
213
|
+
return (index.h("div", { key: 'b996ba9138084650cf00d7334e79202be6ddb054', class: "flex flex-col w-full h-full p-3" }, index.h("div", { key: 'f4b38a9b018e2f1e049ecbc8f6dfe06e950add77', class: "pb-3" }, index.h("div", { key: 'dccce38ba962b2b217abc23ca05d1563773d629d', class: "relative" }, index.h("i", { key: '0199eb1a3862e8e27defcda2dad9c85e273c7069', "data-lucide": "search", class: "absolute left-3 top-1/2 transform -translate-y-1/2 text-text-placeholder " }), index.h("input", { key: '85530eb8e3a1e6f6939ad678fafd75ae4758a8e7', ref: (el) => this.inputElement = el, type: "text", placeholder: "Search for a location", class: "w-full pl-10 pr-4 py-2 border border-border rounded-4xl focus:outline-none focus:ring-2 focus:ring-info bg-muted" }))), this.buildingInsights && (index.h("div", { key: 'b89f57b541ab152a44af62ebbdb6eb12de7fe5ec' }, "buildingInsights", index.h("div", { key: '2c9507ea6b80def3e41f0d85605c0a01365e2a94' }, JSON.stringify(this.buildingInsights))))));
|
|
214
214
|
}
|
|
215
215
|
};
|
|
216
216
|
SolarCalculator.style = outputCss;
|
|
@@ -31,14 +31,14 @@ export class SettingsModal {
|
|
|
31
31
|
};
|
|
32
32
|
render() {
|
|
33
33
|
const t = getLanguageStrings(state.settings.language);
|
|
34
|
-
return (h("div", { key: '69815a7efeb8f52a5d3422b06dc212a50b9f405b', class: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50" }, h("div", { key: 'ed368ae8d0d6d2946c5a4ecc559f018521e1bce8', class: "bg-primary rounded-4xl p-6 w-full max-w-md" }, h("div", { key: 'f51088beb4d8445503fa08c3dd2a2b8c886f79ce', class: "flex justify-between items-center mb-6" }, h("h2", { key: 'a9bcb7b893961bbf2032c1b8a110624ec3a95e65', class: "text-xl font-semibold" }, "Settings"), h("button", { key: '47d4dc1cc0789485da95218becfc921ae5db177c', class: "p-2 hover:bg-hover rounded-full transition-colors", onClick: this.handleClose }, h("svg", { key: '42923fdd6d5c96ceee98bdddca2e7e6bda42dcfa', xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("line", { key: '751c5243b5b785a21131b02a3142c6d46e0cffeb', x1: "18", y1: "6", x2: "6", y2: "18" }), h("line", { key: 'e26bd2a1b20aa718ced6183130e962c9dbd159b9', x1: "6", y1: "6", x2: "18", y2: "18" })))), h("div", { key: '560be61d72a1a98eea4d2788d49eee7a3107470d', class: "space-y-4" }, h("div", { key: '2e6422d175602e7a53eb3d629c37c47980c08da1' }, h("h3", { key: '0d043e5ddbfb9de4a8c198d748bd5ae39fd3b4b4', class: "text-sm font-medium text-text-muted mb-1" }, "Debug Information"), h("p", { key: '547de97a72e386222c53a5d890ad0df8fdb4d01e', class: "text-sm text-text-muted mb-1" }, "state: ", JSON.stringify(state, null, 2))), h("div", { key: '
|
|
35
|
-
.value) }, h("option", { key: '
|
|
36
|
-
"en" }, "English"), h("option", { key: '
|
|
37
|
-
"es" }, "Espa\u00F1ol"), h("option", { key: '
|
|
38
|
-
"de" }, "Deutsch"))), h("div", { key: '
|
|
39
|
-
.value)) })), h("div", { key: '
|
|
40
|
-
.value)) })), h("div", { key: '
|
|
41
|
-
.value)) }))), h("div", { key: '
|
|
34
|
+
return (h("div", { key: '69815a7efeb8f52a5d3422b06dc212a50b9f405b', class: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50" }, h("div", { key: 'ed368ae8d0d6d2946c5a4ecc559f018521e1bce8', class: "bg-primary rounded-4xl p-6 w-full max-w-md" }, h("div", { key: 'f51088beb4d8445503fa08c3dd2a2b8c886f79ce', class: "flex justify-between items-center mb-6" }, h("h2", { key: 'a9bcb7b893961bbf2032c1b8a110624ec3a95e65', class: "text-xl font-semibold" }, "Settings"), h("button", { key: '47d4dc1cc0789485da95218becfc921ae5db177c', class: "p-2 hover:bg-hover rounded-full transition-colors", onClick: this.handleClose }, h("svg", { key: '42923fdd6d5c96ceee98bdddca2e7e6bda42dcfa', xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("line", { key: '751c5243b5b785a21131b02a3142c6d46e0cffeb', x1: "18", y1: "6", x2: "6", y2: "18" }), h("line", { key: 'e26bd2a1b20aa718ced6183130e962c9dbd159b9', x1: "6", y1: "6", x2: "18", y2: "18" })))), h("div", { key: '560be61d72a1a98eea4d2788d49eee7a3107470d', class: "space-y-4" }, h("div", { key: '2e6422d175602e7a53eb3d629c37c47980c08da1' }, h("h3", { key: '0d043e5ddbfb9de4a8c198d748bd5ae39fd3b4b4', class: "text-sm font-medium text-text-muted mb-1" }, "Debug Information"), h("p", { key: '547de97a72e386222c53a5d890ad0df8fdb4d01e', class: "text-sm text-text-muted mb-1" }, "state: ", JSON.stringify(state, null, 2)), h("p", { key: 'f0b99a34387a052b37263f23dc9508f633b8ba25', class: "text-sm text-text-muted mb-1" }, navigator.userAgent)), h("div", { key: 'eed47be8b7b9fecb9f55bc97990463203dc5f34e' }, h("label", { key: 'd3f9f5b9d18a5ae92cff81d8c00c0d361620cfc1', class: "block text-sm font-medium text-text-muted mb-1" }, t.settings.language), h("select", { key: '4d91a944e57b092e9e5ed291bfc92eb73e84ff8d', class: "w-full bg-muted rounded-4xl p-2", onInput: (e) => this.handleInputChange("language", e.target
|
|
35
|
+
.value) }, h("option", { key: 'f065a01801c5ffce8607c242072fd36c2037dbaf', value: "en", selected: this.tempSettings.language ===
|
|
36
|
+
"en" }, "English"), h("option", { key: '0aa180899e17666af6c0dd272f930ea96b89ad13', value: "es", selected: this.tempSettings.language ===
|
|
37
|
+
"es" }, "Espa\u00F1ol"), h("option", { key: 'b0fbeed0f78f1244094ce50c5db8448e799f1c64', value: "de", selected: this.tempSettings.language ===
|
|
38
|
+
"de" }, "Deutsch"))), h("div", { key: 'b814d3cf2ceebf2ecfb270db2c8dd0215142c798' }, h("label", { key: '40de044f05c466ae7f95da8227c66dfb8f301ab1', class: "block text-sm font-medium text-text-muted mb-1" }, t.settings.rowSpacing), h("input", { key: '6e7885911d3304962171a9a4f2de945e7b62dceb', type: "number", class: "w-full bg-muted rounded-4xl p-2", value: this.tempSettings.rowSpacing, onInput: (e) => this.handleInputChange("rowSpacing", parseFloat(e.target
|
|
39
|
+
.value)) })), h("div", { key: '6f0cd38ae69cc5dc48422a8e41ce0fcbbee75629' }, h("label", { key: 'bdc86c8dd09b718666b8f3a9b60ac7c08f4474f3', class: "block text-sm font-medium text-text-muted mb-1" }, t.settings.columnSpacing), h("input", { key: '9d28aec6d130584e70670d487e0b01af89f69e76', type: "number", class: "w-full bg-muted rounded-4xl p-2", value: this.tempSettings.columnSpacing, onInput: (e) => this.handleInputChange("columnSpacing", parseFloat(e.target
|
|
40
|
+
.value)) })), h("div", { key: '582595eaed721488e3b0973cd72317440f75cc25' }, h("label", { key: '4ecbab16972274f55b885706becd3af406118f97', class: "block text-sm font-medium text-text-muted mb-1" }, t.settings.borderInset), h("input", { key: '085c9a1bda471e5058fb99c81ca317716d9f300d', type: "number", class: "w-full bg-muted rounded-4xl p-2", value: this.tempSettings.borderInset, onInput: (e) => this.handleInputChange("borderInset", parseFloat(e.target
|
|
41
|
+
.value)) }))), h("div", { key: 'd698b5e642cff47c3aa35589ec434d8b6d5b3792', class: "flex justify-end gap-4 mt-6" }, h("button", { key: '449262ec470a7f29513e6eb4a9bead1a2bf014e2', class: "px-4 py-2 bg-surface rounded-4xl hover:bg-surface-hover transition-colors", onClick: this.handleClose }, "Cancel"), h("button", { key: '723dc0f16e17be3db127b37ec5a43380be491aed', class: "px-4 py-2 bg-secondary text-muted rounded-4xl hover:bg-text-secondary transition-colors", onClick: this.handleSave }, "Save Changes")))));
|
|
42
42
|
}
|
|
43
43
|
static get is() { return "settings-modal"; }
|
|
44
44
|
static get originalStyleUrls() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/components/settings/settings.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Prop, State } from \"@stencil/core\";\r\nimport { Settings, state } from \"../../store\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { Language } from \"../../types/lang\";\r\n\r\n@Component({\r\n tag: \"settings-modal\",\r\n styleUrl: \"../../output.css\",\r\n shadow: false,\r\n})\r\nexport class SettingsModal {\r\n @Prop()\r\n settings: Settings;\r\n\r\n @State()\r\n private tempSettings: Settings;\r\n\r\n @Event()\r\n close: EventEmitter<void>;\r\n\r\n @Event()\r\n save: EventEmitter<Settings>;\r\n\r\n componentWillLoad() {\r\n this.tempSettings = { ...this.settings };\r\n }\r\n\r\n private handleClose = () => {\r\n if (\r\n JSON.stringify(this.tempSettings) !== JSON.stringify(this.settings)\r\n ) {\r\n if (\r\n confirm(\r\n \"Are you sure you want to close without saving your changes?\",\r\n )\r\n ) {\r\n this.close.emit();\r\n }\r\n } else {\r\n this.close.emit();\r\n }\r\n };\r\n\r\n private handleSave = () => {\r\n this.save.emit(this.tempSettings);\r\n this.close.emit();\r\n };\r\n\r\n private handleInputChange = (\r\n key: keyof Settings,\r\n value: number | Language,\r\n ) => {\r\n this.tempSettings = {\r\n ...this.tempSettings,\r\n [key]: value,\r\n };\r\n };\r\n\r\n render() {\r\n const t = getLanguageStrings(state.settings.language);\r\n return (\r\n <div class=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50\">\r\n <div class=\"bg-primary rounded-4xl p-6 w-full max-w-md\">\r\n <div class=\"flex justify-between items-center mb-6\">\r\n <h2 class=\"text-xl font-semibold\">Settings</h2>\r\n <button\r\n class=\"p-2 hover:bg-hover rounded-full transition-colors\"\r\n onClick={this.handleClose}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <div class=\"space-y-4\">\r\n <div>\r\n <h3 class=\"text-sm font-medium text-text-muted mb-1\">\r\n Debug Information\r\n </h3>\r\n <p class=\"text-sm text-text-muted mb-1\">\r\n state: {JSON.stringify(state, null, 2)}\r\n </p>\r\n </div>\r\n <div>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.settings.language}\r\n </label>\r\n <select\r\n class=\"w-full bg-muted rounded-4xl p-2\"\r\n onInput={(e) =>\r\n this.handleInputChange(\r\n \"language\",\r\n (e.target as HTMLSelectElement)\r\n .value as Language,\r\n )}\r\n >\r\n <option\r\n value=\"en\"\r\n selected={this.tempSettings.language ===\r\n \"en\"}\r\n >\r\n English\r\n </option>\r\n <option\r\n value=\"es\"\r\n selected={this.tempSettings.language ===\r\n \"es\"}\r\n >\r\n Español\r\n </option>\r\n <option\r\n value=\"de\"\r\n selected={this.tempSettings.language ===\r\n \"de\"}\r\n >\r\n Deutsch\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.settings.rowSpacing}\r\n </label>\r\n <input\r\n type=\"number\"\r\n class=\"w-full bg-muted rounded-4xl p-2\"\r\n value={this.tempSettings.rowSpacing}\r\n onInput={(e) =>\r\n this.handleInputChange(\r\n \"rowSpacing\",\r\n parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n ),\r\n )}\r\n />\r\n </div>\r\n\r\n <div>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.settings.columnSpacing}\r\n </label>\r\n <input\r\n type=\"number\"\r\n class=\"w-full bg-muted rounded-4xl p-2\"\r\n value={this.tempSettings.columnSpacing}\r\n onInput={(e) =>\r\n this.handleInputChange(\r\n \"columnSpacing\",\r\n parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n ),\r\n )}\r\n />\r\n </div>\r\n\r\n <div>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.settings.borderInset}\r\n </label>\r\n <input\r\n type=\"number\"\r\n class=\"w-full bg-muted rounded-4xl p-2\"\r\n value={this.tempSettings.borderInset}\r\n onInput={(e) =>\r\n this.handleInputChange(\r\n \"borderInset\",\r\n parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n ),\r\n )}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex justify-end gap-4 mt-6\">\r\n <button\r\n class=\"px-4 py-2 bg-surface rounded-4xl hover:bg-surface-hover transition-colors\"\r\n onClick={this.handleClose}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"px-4 py-2 bg-secondary text-muted rounded-4xl hover:bg-text-secondary transition-colors\"\r\n onClick={this.handleSave}\r\n >\r\n Save Changes\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/components/settings/settings.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Prop, State } from \"@stencil/core\";\r\nimport { Settings, state } from \"../../store\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { Language } from \"../../types/lang\";\r\n\r\n@Component({\r\n tag: \"settings-modal\",\r\n styleUrl: \"../../output.css\",\r\n shadow: false,\r\n})\r\nexport class SettingsModal {\r\n @Prop()\r\n settings: Settings;\r\n\r\n @State()\r\n private tempSettings: Settings;\r\n\r\n @Event()\r\n close: EventEmitter<void>;\r\n\r\n @Event()\r\n save: EventEmitter<Settings>;\r\n\r\n componentWillLoad() {\r\n this.tempSettings = { ...this.settings };\r\n }\r\n\r\n private handleClose = () => {\r\n if (\r\n JSON.stringify(this.tempSettings) !== JSON.stringify(this.settings)\r\n ) {\r\n if (\r\n confirm(\r\n \"Are you sure you want to close without saving your changes?\",\r\n )\r\n ) {\r\n this.close.emit();\r\n }\r\n } else {\r\n this.close.emit();\r\n }\r\n };\r\n\r\n private handleSave = () => {\r\n this.save.emit(this.tempSettings);\r\n this.close.emit();\r\n };\r\n\r\n private handleInputChange = (\r\n key: keyof Settings,\r\n value: number | Language,\r\n ) => {\r\n this.tempSettings = {\r\n ...this.tempSettings,\r\n [key]: value,\r\n };\r\n };\r\n\r\n render() {\r\n const t = getLanguageStrings(state.settings.language);\r\n return (\r\n <div class=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50\">\r\n <div class=\"bg-primary rounded-4xl p-6 w-full max-w-md\">\r\n <div class=\"flex justify-between items-center mb-6\">\r\n <h2 class=\"text-xl font-semibold\">Settings</h2>\r\n <button\r\n class=\"p-2 hover:bg-hover rounded-full transition-colors\"\r\n onClick={this.handleClose}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <div class=\"space-y-4\">\r\n <div>\r\n <h3 class=\"text-sm font-medium text-text-muted mb-1\">\r\n Debug Information\r\n </h3>\r\n <p class=\"text-sm text-text-muted mb-1\">\r\n state: {JSON.stringify(state, null, 2)}\r\n </p>\r\n <p class=\"text-sm text-text-muted mb-1\">\r\n {navigator.userAgent}\r\n </p>\r\n </div>\r\n <div>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.settings.language}\r\n </label>\r\n <select\r\n class=\"w-full bg-muted rounded-4xl p-2\"\r\n onInput={(e) =>\r\n this.handleInputChange(\r\n \"language\",\r\n (e.target as HTMLSelectElement)\r\n .value as Language,\r\n )}\r\n >\r\n <option\r\n value=\"en\"\r\n selected={this.tempSettings.language ===\r\n \"en\"}\r\n >\r\n English\r\n </option>\r\n <option\r\n value=\"es\"\r\n selected={this.tempSettings.language ===\r\n \"es\"}\r\n >\r\n Español\r\n </option>\r\n <option\r\n value=\"de\"\r\n selected={this.tempSettings.language ===\r\n \"de\"}\r\n >\r\n Deutsch\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.settings.rowSpacing}\r\n </label>\r\n <input\r\n type=\"number\"\r\n class=\"w-full bg-muted rounded-4xl p-2\"\r\n value={this.tempSettings.rowSpacing}\r\n onInput={(e) =>\r\n this.handleInputChange(\r\n \"rowSpacing\",\r\n parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n ),\r\n )}\r\n />\r\n </div>\r\n\r\n <div>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.settings.columnSpacing}\r\n </label>\r\n <input\r\n type=\"number\"\r\n class=\"w-full bg-muted rounded-4xl p-2\"\r\n value={this.tempSettings.columnSpacing}\r\n onInput={(e) =>\r\n this.handleInputChange(\r\n \"columnSpacing\",\r\n parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n ),\r\n )}\r\n />\r\n </div>\r\n\r\n <div>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.settings.borderInset}\r\n </label>\r\n <input\r\n type=\"number\"\r\n class=\"w-full bg-muted rounded-4xl p-2\"\r\n value={this.tempSettings.borderInset}\r\n onInput={(e) =>\r\n this.handleInputChange(\r\n \"borderInset\",\r\n parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n ),\r\n )}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex justify-end gap-4 mt-6\">\r\n <button\r\n class=\"px-4 py-2 bg-surface rounded-4xl hover:bg-surface-hover transition-colors\"\r\n onClick={this.handleClose}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n class=\"px-4 py-2 bg-secondary text-muted rounded-4xl hover:bg-text-secondary transition-colors\"\r\n onClick={this.handleSave}\r\n >\r\n Save Changes\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -54,7 +54,7 @@ export class SolarCalculator {
|
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
render() {
|
|
57
|
-
return (h("div", { key: '
|
|
57
|
+
return (h("div", { key: 'b996ba9138084650cf00d7334e79202be6ddb054', class: "flex flex-col w-full h-full p-3" }, h("div", { key: 'f4b38a9b018e2f1e049ecbc8f6dfe06e950add77', class: "pb-3" }, h("div", { key: 'dccce38ba962b2b217abc23ca05d1563773d629d', class: "relative" }, h("i", { key: '0199eb1a3862e8e27defcda2dad9c85e273c7069', "data-lucide": "search", class: "absolute left-3 top-1/2 transform -translate-y-1/2 text-text-placeholder " }), h("input", { key: '85530eb8e3a1e6f6939ad678fafd75ae4758a8e7', ref: (el) => this.inputElement = el, type: "text", placeholder: "Search for a location", class: "w-full pl-10 pr-4 py-2 border border-border rounded-4xl focus:outline-none focus:ring-2 focus:ring-info bg-muted" }))), this.buildingInsights && (h("div", { key: 'b89f57b541ab152a44af62ebbdb6eb12de7fe5ec' }, "buildingInsights", h("div", { key: '2c9507ea6b80def3e41f0d85605c0a01365e2a94' }, JSON.stringify(this.buildingInsights))))));
|
|
58
58
|
}
|
|
59
59
|
static get is() { return "solar-calculator"; }
|
|
60
60
|
static get originalStyleUrls() {
|
|
@@ -61,7 +61,7 @@ export class SolarExpert {
|
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
state.settings.language = this.language;
|
|
64
|
-
state.isIOS =
|
|
64
|
+
state.isIOS = navigator.userAgent.indexOf("Safari") != -1;
|
|
65
65
|
this.applyTheme();
|
|
66
66
|
}
|
|
67
67
|
colorSchemeChanged() {
|
|
@@ -118,7 +118,7 @@ export class SolarExpert {
|
|
|
118
118
|
}
|
|
119
119
|
render() {
|
|
120
120
|
const t = getLanguageStrings(this.language);
|
|
121
|
-
return (h("div", { key: '
|
|
121
|
+
return (h("div", { key: '3777fe38fe920db77718468c61d15032e3edd875', class: "flex flex-col w-full h-full p-3 m-auto", id: "solar-calculator" }, this.showMapSelector
|
|
122
122
|
? (h("map-selector", { "api-key": this.apiKey, language: this.language }))
|
|
123
123
|
: (h(h.Fragment, null, h("div", { class: "pb-3 flex flex-row gap-4 items-stretch w-full bg-primary" }, h("div", { class: "relative flex-3" }, h("div", { class: "absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground" }, h("search-icon", null)), h("input", { ref: (el) => this.inputElement = el, type: "text", placeholder: t.solarExpert
|
|
124
124
|
.searchPlaceholder, class: "w-full pl-10 pr-4 py-2 border border-border rounded-4xl focus:ring-secondary bg-muted text-muted-foreground h-full" })), h("button", { onClick: () => this.handleChooseOnMap(), class: "flex-1 pl-4 pr-4 py-2 border border-border bg-muted rounded-4xl focus:ring-secondary hover:bg-secondary hover:text-muted" }, t.mapSelector.chooseOnMap)), h("map-draw", { apiKey: this.apiKey })))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solar-expert.js","sourceRoot":"","sources":["../../../src/components/solar-expert/solar-expert.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Env, h, Prop, State, Watch } from \"@stencil/core\";\r\nimport { Loader } from \"@googlemaps/js-api-loader\";\r\nimport { Language } from \"../../types/lang\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { onChange, state } from \"../../store\";\r\nimport { ColorScheme } from \"../../config\";\r\nimport { applyThemeGlobally } from \"../../utils/theme\";\r\n\r\n@Component({\r\n tag: \"solar-expert\",\r\n shadow: false,\r\n styleUrl: \"../../output.css\",\r\n})\r\nexport class SolarExpert {\r\n @Element()\r\n el!: HTMLElement;\r\n\r\n @Prop()\r\n apiKey: string = Env.GOOGLE_MAPS_API_KEY;\r\n @Prop()\r\n language: Language = \"en\";\r\n @Prop()\r\n colorScheme: Partial<ColorScheme> | null = null;\r\n // {\r\n // primary: \"hsl(0 0% 100%)\",\r\n // secondary: \"hsl(0 0% 100%)\",\r\n // tertiary: \"hsl(0 0% 100%)\",\r\n // muted: \"hsl(0 0% 100%)\",\r\n // error: \"hsl(0 0% 100%)\",\r\n // // secondary: \"hsl(180 100% 25%)\",\r\n // // tertiary: \"hsl(24 100% 18%)\",\r\n // // muted: \"hsl(0 0% 85%)\",\r\n // // error: \"hsl(240 75% 29%)\",\r\n // primaryForeground: \"hsl(0 0% 100%)\",\r\n // secondaryForeground: \"hsl(0 0% 100%)\",\r\n // tertiaryForeground: \"hsl(0 0% 100%)\",\r\n // mutedForeground: \"hsl(0 0% 100%)\",\r\n // errorForeground: \"hsl(0 0% 100%)\",\r\n // surface: \"hsl(0 0% 100%)\",\r\n // surfaceHover: \"hsl(0 0% 100%)\",\r\n // surfaceActive: \"hsl(0 0% 100%)\",\r\n // // Text colors\r\n // textMuted: \"hsl(0 0% 100%)\",\r\n // textSecondary: \"hsl(0 0% 100%)\",\r\n // textPlaceholder: \"hsl(0 0% 100%)\",\r\n // // Border colors\r\n // border: \"hsl(0 0% 100%)\",\r\n // borderLight: \"hsl(0 0% 100%)\",\r\n // // Status colors\r\n // success: \"hsl(0 0% 100%)\",\r\n // info: \"hsl(0 0% 100%)\",\r\n // // Interactive colors\r\n // hover: \"hsl(0 0% 100%)\",\r\n // hoverDark: \"hsl(0 0% 100%)\",\r\n // overlay: \"hsl(0 0% 100%)\",\r\n // tooltip: \"hsl(0 0% 100%)\",\r\n // };\r\n\r\n @State()\r\n latitude: number | null = 40.581614;\r\n @State()\r\n longitude: number | null = -4.128423;\r\n @State()\r\n isLoaded: boolean = false;\r\n @State()\r\n autocomplete: google.maps.places.Autocomplete | null = null;\r\n @State()\r\n place: google.maps.places.PlaceResult | null = null;\r\n @State()\r\n showMapSelector: boolean = false;\r\n\r\n private inputElement?: HTMLInputElement;\r\n\r\n componentWillLoad() {\r\n state.isMobile =\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i\r\n .test(navigator.userAgent) || window.innerWidth < 768;\r\n this.loadGoogleMapsScript();\r\n onChange(\"latitude\", () => {\r\n if (this.showMapSelector) {\r\n this.showMapSelector = false;\r\n this.scrollToMapDraw();\r\n }\r\n });\r\n state.settings.language = this.language;\r\n state.isIOS = /iPhone|iPad|iPod/.test(navigator.userAgent);\r\n\r\n this.applyTheme();\r\n }\r\n\r\n @Watch(\"colorScheme\")\r\n colorSchemeChanged() {\r\n this.applyTheme();\r\n }\r\n\r\n private applyTheme() {\r\n if (this.colorScheme) {\r\n applyThemeGlobally(this.colorScheme);\r\n }\r\n }\r\n\r\n private async loadGoogleMapsScript() {\r\n try {\r\n const loader = new Loader({\r\n apiKey: this.apiKey,\r\n libraries: [\"places\", \"maps\", \"marker\"],\r\n });\r\n\r\n const places = await loader.importLibrary(\"places\");\r\n this.isLoaded = true;\r\n this.initializeAutocomplete(places);\r\n } catch (error) {\r\n console.error(\"Error loading Google Maps: \", error);\r\n }\r\n }\r\n\r\n private initializeAutocomplete(\r\n places: google.maps.PlacesLibrary,\r\n ) {\r\n if (!this.inputElement || !this.isLoaded) return;\r\n this.autocomplete = new places.Autocomplete(this.inputElement);\r\n\r\n this.autocomplete.addListener(\"place_changed\", () => {\r\n const place = this.autocomplete?.getPlace();\r\n this.latitude = place?.geometry?.location?.lat() ?? 0;\r\n this.longitude = place?.geometry?.location?.lng() ?? 0;\r\n state.latitude = this.latitude;\r\n state.longitude = this.longitude;\r\n\r\n this.scrollToMapDraw();\r\n });\r\n }\r\n\r\n private scrollToMapDraw() {\r\n if (state.isMobile) {\r\n const solarSystemFormElement = this.el.querySelector(\r\n \"solar-system-form\",\r\n );\r\n if (solarSystemFormElement) {\r\n solarSystemFormElement.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n } else {\r\n const mapDrawElement = this.el.querySelector(\"map-draw\");\r\n if (mapDrawElement) {\r\n mapDrawElement.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n }\r\n }\r\n\r\n private handleChooseOnMap() {\r\n this.showMapSelector = true;\r\n }\r\n\r\n render() {\r\n const t = getLanguageStrings(this.language);\r\n return (\r\n <div\r\n class=\"flex flex-col w-full h-full p-3 m-auto\"\r\n id=\"solar-calculator\"\r\n >\r\n {this.showMapSelector\r\n ? (\r\n <map-selector\r\n api-key={this.apiKey}\r\n language={this.language}\r\n />\r\n )\r\n : (\r\n <>\r\n <div class=\"pb-3 flex flex-row gap-4 items-stretch w-full bg-primary\">\r\n <div class=\"relative flex-3\">\r\n <div class=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground\">\r\n <search-icon />\r\n </div>\r\n <input\r\n ref={(el) => this.inputElement = el}\r\n type=\"text\"\r\n placeholder={t.solarExpert\r\n .searchPlaceholder}\r\n class=\"w-full pl-10 pr-4 py-2 border border-border rounded-4xl focus:ring-secondary bg-muted text-muted-foreground h-full\"\r\n />\r\n </div>\r\n <button\r\n onClick={() => this.handleChooseOnMap()}\r\n class=\"flex-1 pl-4 pr-4 py-2 border border-border bg-muted rounded-4xl focus:ring-secondary hover:bg-secondary hover:text-muted\"\r\n >\r\n {t.mapSelector.chooseOnMap}\r\n </button>\r\n </div>\r\n <map-draw\r\n apiKey={this.apiKey}\r\n />\r\n </>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"solar-expert.js","sourceRoot":"","sources":["../../../src/components/solar-expert/solar-expert.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Env, h, Prop, State, Watch } from \"@stencil/core\";\r\nimport { Loader } from \"@googlemaps/js-api-loader\";\r\nimport { Language } from \"../../types/lang\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { onChange, state } from \"../../store\";\r\nimport { ColorScheme } from \"../../config\";\r\nimport { applyThemeGlobally } from \"../../utils/theme\";\r\n\r\n@Component({\r\n tag: \"solar-expert\",\r\n shadow: false,\r\n styleUrl: \"../../output.css\",\r\n})\r\nexport class SolarExpert {\r\n @Element()\r\n el!: HTMLElement;\r\n\r\n @Prop()\r\n apiKey: string = Env.GOOGLE_MAPS_API_KEY;\r\n @Prop()\r\n language: Language = \"en\";\r\n @Prop()\r\n colorScheme: Partial<ColorScheme> | null = null;\r\n // {\r\n // primary: \"hsl(0 0% 100%)\",\r\n // secondary: \"hsl(0 0% 100%)\",\r\n // tertiary: \"hsl(0 0% 100%)\",\r\n // muted: \"hsl(0 0% 100%)\",\r\n // error: \"hsl(0 0% 100%)\",\r\n // // secondary: \"hsl(180 100% 25%)\",\r\n // // tertiary: \"hsl(24 100% 18%)\",\r\n // // muted: \"hsl(0 0% 85%)\",\r\n // // error: \"hsl(240 75% 29%)\",\r\n // primaryForeground: \"hsl(0 0% 100%)\",\r\n // secondaryForeground: \"hsl(0 0% 100%)\",\r\n // tertiaryForeground: \"hsl(0 0% 100%)\",\r\n // mutedForeground: \"hsl(0 0% 100%)\",\r\n // errorForeground: \"hsl(0 0% 100%)\",\r\n // surface: \"hsl(0 0% 100%)\",\r\n // surfaceHover: \"hsl(0 0% 100%)\",\r\n // surfaceActive: \"hsl(0 0% 100%)\",\r\n // // Text colors\r\n // textMuted: \"hsl(0 0% 100%)\",\r\n // textSecondary: \"hsl(0 0% 100%)\",\r\n // textPlaceholder: \"hsl(0 0% 100%)\",\r\n // // Border colors\r\n // border: \"hsl(0 0% 100%)\",\r\n // borderLight: \"hsl(0 0% 100%)\",\r\n // // Status colors\r\n // success: \"hsl(0 0% 100%)\",\r\n // info: \"hsl(0 0% 100%)\",\r\n // // Interactive colors\r\n // hover: \"hsl(0 0% 100%)\",\r\n // hoverDark: \"hsl(0 0% 100%)\",\r\n // overlay: \"hsl(0 0% 100%)\",\r\n // tooltip: \"hsl(0 0% 100%)\",\r\n // };\r\n\r\n @State()\r\n latitude: number | null = 40.581614;\r\n @State()\r\n longitude: number | null = -4.128423;\r\n @State()\r\n isLoaded: boolean = false;\r\n @State()\r\n autocomplete: google.maps.places.Autocomplete | null = null;\r\n @State()\r\n place: google.maps.places.PlaceResult | null = null;\r\n @State()\r\n showMapSelector: boolean = false;\r\n\r\n private inputElement?: HTMLInputElement;\r\n\r\n componentWillLoad() {\r\n state.isMobile =\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i\r\n .test(navigator.userAgent) || window.innerWidth < 768;\r\n this.loadGoogleMapsScript();\r\n onChange(\"latitude\", () => {\r\n if (this.showMapSelector) {\r\n this.showMapSelector = false;\r\n this.scrollToMapDraw();\r\n }\r\n });\r\n state.settings.language = this.language;\r\n state.isIOS = navigator.userAgent.indexOf(\"Safari\") != -1;\r\n\r\n this.applyTheme();\r\n }\r\n\r\n @Watch(\"colorScheme\")\r\n colorSchemeChanged() {\r\n this.applyTheme();\r\n }\r\n\r\n private applyTheme() {\r\n if (this.colorScheme) {\r\n applyThemeGlobally(this.colorScheme);\r\n }\r\n }\r\n\r\n private async loadGoogleMapsScript() {\r\n try {\r\n const loader = new Loader({\r\n apiKey: this.apiKey,\r\n libraries: [\"places\", \"maps\", \"marker\"],\r\n });\r\n\r\n const places = await loader.importLibrary(\"places\");\r\n this.isLoaded = true;\r\n this.initializeAutocomplete(places);\r\n } catch (error) {\r\n console.error(\"Error loading Google Maps: \", error);\r\n }\r\n }\r\n\r\n private initializeAutocomplete(\r\n places: google.maps.PlacesLibrary,\r\n ) {\r\n if (!this.inputElement || !this.isLoaded) return;\r\n this.autocomplete = new places.Autocomplete(this.inputElement);\r\n\r\n this.autocomplete.addListener(\"place_changed\", () => {\r\n const place = this.autocomplete?.getPlace();\r\n this.latitude = place?.geometry?.location?.lat() ?? 0;\r\n this.longitude = place?.geometry?.location?.lng() ?? 0;\r\n state.latitude = this.latitude;\r\n state.longitude = this.longitude;\r\n\r\n this.scrollToMapDraw();\r\n });\r\n }\r\n\r\n private scrollToMapDraw() {\r\n if (state.isMobile) {\r\n const solarSystemFormElement = this.el.querySelector(\r\n \"solar-system-form\",\r\n );\r\n if (solarSystemFormElement) {\r\n solarSystemFormElement.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n } else {\r\n const mapDrawElement = this.el.querySelector(\"map-draw\");\r\n if (mapDrawElement) {\r\n mapDrawElement.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n }\r\n }\r\n\r\n private handleChooseOnMap() {\r\n this.showMapSelector = true;\r\n }\r\n\r\n render() {\r\n const t = getLanguageStrings(this.language);\r\n return (\r\n <div\r\n class=\"flex flex-col w-full h-full p-3 m-auto\"\r\n id=\"solar-calculator\"\r\n >\r\n {this.showMapSelector\r\n ? (\r\n <map-selector\r\n api-key={this.apiKey}\r\n language={this.language}\r\n />\r\n )\r\n : (\r\n <>\r\n <div class=\"pb-3 flex flex-row gap-4 items-stretch w-full bg-primary\">\r\n <div class=\"relative flex-3\">\r\n <div class=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground\">\r\n <search-icon />\r\n </div>\r\n <input\r\n ref={(el) => this.inputElement = el}\r\n type=\"text\"\r\n placeholder={t.solarExpert\r\n .searchPlaceholder}\r\n class=\"w-full pl-10 pr-4 py-2 border border-border rounded-4xl focus:ring-secondary bg-muted text-muted-foreground h-full\"\r\n />\r\n </div>\r\n <button\r\n onClick={() => this.handleChooseOnMap()}\r\n class=\"flex-1 pl-4 pr-4 py-2 border border-border bg-muted rounded-4xl focus:ring-secondary hover:bg-secondary hover:text-muted\"\r\n >\r\n {t.mapSelector.chooseOnMap}\r\n </button>\r\n </div>\r\n <map-draw\r\n apiKey={this.apiKey}\r\n />\r\n </>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -137,13 +137,13 @@ export class SolarSystemForm {
|
|
|
137
137
|
}
|
|
138
138
|
render() {
|
|
139
139
|
const t = getLanguageStrings(state.settings.language);
|
|
140
|
-
return (h("div", { key: '
|
|
140
|
+
return (h("div", { key: '58296df9ae0c416d8a38c2a9e763fbdec361e7b2', class: "flex flex-col justify-center items-center w-full h-full pt-4" // style={{
|
|
141
141
|
,
|
|
142
142
|
// display: (Object.keys(this.systemConfigs).length === 0)
|
|
143
143
|
// ? "none"
|
|
144
144
|
// : "flex",
|
|
145
145
|
// }}
|
|
146
|
-
id: "solar-system-form" }, h("h1", { key: '
|
|
146
|
+
id: "solar-system-form" }, h("h1", { key: '8bc991059b82822639864d0ff59abf228959b09a', class: "text-2xl font-bold text-secondary mb-4 w-full" }, t.solarSystemForm.title), h("div", { key: '7e3e5e154680a75ef7982cc959c59c94ef557cc3', class: "w-full bg-primary rounded-4xl p-6 space-y-6" }, h("div", { key: 'f9edb930082dfdc024f1156e60bfb833578d6428', class: "space-y-4" }, h("h2", { key: 'c6ac55b26ed020900ea4b9a06884917ff1ebc1dd', class: "text-lg font-semibold text-secondary" }, t.solarSystemForm.systemInformation), h("div", { key: '39a191bbfb457a51bec489d182ab4ad1252d8c29', class: "grid grid-rows-3 gap-0" }, h("div", { key: 'f9ad33becaeeca2662e419254f9f195d427111f9', class: "grid grid-cols-2 gap-4" }, h("label", { key: '4d266c1e198f53e93ee6891832e4d56508abe57c', class: "block text-sm font-medium text-text-muted mb-1" }, t.solarSystemForm.numberOfPanels), h("label", { key: '8c7d173b40b06129c991f9ca2acae7989a0714d6', class: "block text-sm font-medium text-text-muted mb-1" }, t.solarSystemForm.panelPeakPower)), h("div", { key: '8fda12c5d7eec29418ad796112dc64f50e73eead', class: "grid grid-cols-2 gap-4" }, !this.isIOS()
|
|
147
147
|
? (h("input", { type: "number", class: "w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground", value: this.numberOfPanels, readOnly: true }))
|
|
148
148
|
: (h("input", { type: "number", min: "1", max: this.maxPanels, class: "flex-1 px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground", value: this.numberOfPanels, onInput: (e) => {
|
|
149
149
|
const value = parseInt(e.target
|
|
@@ -154,36 +154,36 @@ export class SolarSystemForm {
|
|
|
154
154
|
this.numberOfPanels = value;
|
|
155
155
|
this.recalculate();
|
|
156
156
|
}
|
|
157
|
-
} })), h("input", { key: '
|
|
158
|
-
(h("input", { key: '
|
|
157
|
+
} })), h("input", { key: '4e138a8675c4bb81c09a6d711481e98e1f2977fd', type: "number", class: "w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground", value: this.panelPeakPower, readonly: true })), h("div", { key: 'bd4f2a05cc7e6dedf2036fecdc37e809ade67fd1', class: "grid grid-cols-2 gap-4" }, h("div", { key: 'c3285bcc8c967e7e57e15b4c938c797dc33d1687', class: "w-full pt-2" }, !this.isIOS() &&
|
|
158
|
+
(h("input", { key: '8612184d1fc6df69c2f4ec95581278162367a36b', type: "range", min: "1", max: this.maxPanels, step: "1", 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", value: this.numberOfPanels, onInput: (e) => {
|
|
159
159
|
this.numberOfPanels =
|
|
160
160
|
parseInt(e.target
|
|
161
161
|
.value);
|
|
162
162
|
this.recalculate();
|
|
163
|
-
} }))))), h("div", { key: '
|
|
164
|
-
this.numberOfPanels).toFixed(1), " kW")))), h("div", { key: '
|
|
163
|
+
} }))))), h("div", { key: 'ce90bb3d25bf9ed171155f98d386abc1bdffcac8', class: "bg-muted rounded-4xl p-4" }, h("div", { key: 'feea6fc5bb47c6d6569953a51cf61efe777603fe', class: "flex items-center justify-between" }, h("span", { key: '8e64cd4cd6fe2b0d682e02d3f0505e3b3d5a7654', class: "text-text-muted" }, t.solarSystemForm.totalSystemPeakPower), h("span", { key: '72f0265b00ddfe306cfe35ff974ef725d564d9ad', class: "text-xl font-bold text-secondary" }, (DEFAULT_SOLAR_PANEL_TYPE.kWattPeak *
|
|
164
|
+
this.numberOfPanels).toFixed(1), " kW")))), h("div", { key: 'cfa2ca911004fd28740af77a8d426fd11a33844f', class: "space-y-4" }, h("h2", { key: '3dd69d68a48943c83a4bf3983e53eebd04598d97', class: "text-lg font-semibold text-secondary" }, t.solarSystemForm.householdConsumptionTitle), h("div", { key: '4ba69b22c9e466cc4491bdbea538143261f8da4b', class: "grid grid-rows-2 gap-0" }, h("div", { key: '5021208200c6e7d17d8febfe3ff9732474b63f33', class: "grid grid-cols-2 gap-4" }, h("label", { key: '98b59fc7b56b57d01caa3dd39aceaf7b79404fc1', class: "block text-sm font-medium text-text-muted" }, t.solarSystemForm.annualConsumption), h("label", { key: 'a43f6353931e6432fc6175843d6cafe2345c2ada', class: "block text-sm font-medium text-text-muted" }, t.solarSystemForm.consumptionProfileTitle)), h("div", { key: '2b00b4f45bdc5b3a7a02e6aedc92350e113c4133', class: "grid grid-cols-2 gap-4" }, h("input", { key: '636be800fc83bb0855f144408e931496ea1553db', type: "number", class: "w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground", value: this.householdConsumption, onInput: (e) => {
|
|
165
165
|
this.householdConsumption = parseInt(e.target
|
|
166
166
|
.value);
|
|
167
167
|
this.recalculate();
|
|
168
|
-
} }), h("select", { key: '
|
|
168
|
+
} }), h("select", { key: '5d32047cbf3e368ad98aa97eea3199989c714a0a', class: "w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground", onChange: (e) => {
|
|
169
169
|
this.consumptionProfile =
|
|
170
170
|
e.target
|
|
171
171
|
.value;
|
|
172
172
|
this.recalculate();
|
|
173
|
-
} }, h("option", { key: '
|
|
173
|
+
} }, h("option", { key: 'e760307e3a0db5ccc41e275aa51c7c4dca4d11ee', value: "mostly_at_home", selected: this.consumptionProfile ===
|
|
174
174
|
"mostly_at_home" }, t.solarSystemForm.consumptionProfiles
|
|
175
|
-
.mostlyAtHome), h("option", { key: '
|
|
175
|
+
.mostlyAtHome), h("option", { key: '5eb339cb0c926d55cd37b75580f861b06245e56e', value: "mostly_away", selected: this.consumptionProfile ===
|
|
176
176
|
"mostly_away" }, t.solarSystemForm.consumptionProfiles
|
|
177
|
-
.mostlyAway))))), h("div", { key: '
|
|
177
|
+
.mostlyAway))))), h("div", { key: '4ee0eed5ae63f5f670a08d0706ac5cbc203b7b43', class: "space-y-4" }, h("h2", { key: '5f2fdb67ea997c3b13822767679841d5bb52a27c', class: "text-lg font-semibold text-secondary" }, t.solarSystemForm.additionalComponents.title), h("div", { key: '2aeb94a24b1097e34a412860dd7a34fa66e58cac', class: "flex flex-col gap-4" }, h("div", { key: '843ef8f7a7b881436a28e20a7565c2f1d20035d5', class: "flex flex-col bg-muted rounded-4xl p-4 gap-4" }, h("div", { key: 'bba188e686ffc07f9c2300ef5481a7c4c38f8d01', class: "flex items-center justify-between" }, h("div", { key: '5a60e94a9e73c067fa0730ba04cb9dc78d4c699e', class: "flex items-center gap-2" }, h("input", { key: '022904f62f9bec7b1b0ff7b7cda70da387afc7f0', type: "checkbox", id: "heatPump", class: "w-4 h-4 accent-tertiary border-gray-300 rounded-full focus:ring-tertiary focus:ring-offset-0 focus:ring-2", checked: this.heatPump > 0, onChange: (e) => {
|
|
178
178
|
this.heatPump =
|
|
179
179
|
e.target
|
|
180
180
|
.checked
|
|
181
181
|
? 100
|
|
182
182
|
: 0;
|
|
183
183
|
this.recalculate();
|
|
184
|
-
} }), h("label", { key: '
|
|
184
|
+
} }), h("label", { key: '180f948ac4e201ab73d55cbcb31b4102fbb12085', htmlFor: "heatPump", class: "text-text-muted" }, t.solarSystemForm
|
|
185
185
|
.additionalComponents
|
|
186
|
-
.heatPump)), (this.heatPump > 0 && !this.isIOS()) && (h("span", { key: '
|
|
186
|
+
.heatPump)), (this.heatPump > 0 && !this.isIOS()) && (h("span", { key: '84f39c22d2bd91da501971c0a44e92a85fd111a5', class: "text-text-muted" }, this.heatPump, " m\u00B2"))), this.heatPump > 0 && (h("div", { key: '7d72b86d4a0404c284581713bfe4bc21b43c2e6d', class: "flex flex-col gap-2" }, this.isIOS()
|
|
187
187
|
? (h("div", { class: "flex items-center gap-2" }, h("input", { type: "number", min: "10", max: "300", step: "10", class: "flex-1 px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted", value: this.heatPump, onInput: (e) => {
|
|
188
188
|
const value = parseInt(e.target
|
|
189
189
|
.value);
|
|
@@ -199,37 +199,37 @@ export class SolarSystemForm {
|
|
|
199
199
|
parseInt(e.target
|
|
200
200
|
.value);
|
|
201
201
|
this.recalculate();
|
|
202
|
-
} }))))), h("div", { key: '
|
|
202
|
+
} }))))), h("div", { key: 'c9e2d581cea0a188c7e83c0e0b0dba5bf7bae9ca', class: "flex flex-col bg-muted rounded-4xl p-4 gap-4" }, h("div", { key: 'a58a0d3114ff20a137bf217e054394bc427250a7', class: "flex items-center justify-between" }, h("div", { key: '2022bc49ef1e53f7191558e93b64088ba34580a7', class: "flex items-center gap-2" }, h("input", { key: '5736e93590501ea2e0fbe72fa9ef85b8d662b941', type: "checkbox", id: "electricCar", class: "w-4 h-4 accent-tertiary border-gray-300 rounded focus:ring-tertiary focus:ring-offset-0 focus:ring-2", checked: this.electricCar, onChange: (e) => {
|
|
203
203
|
this.electricCar =
|
|
204
204
|
e.target
|
|
205
205
|
.checked;
|
|
206
206
|
this.recalculate();
|
|
207
|
-
} }), h("label", { key: '
|
|
207
|
+
} }), h("label", { key: '26ec06696859d804833acf722fa9b8b521854bf2', htmlFor: "electricCar", class: "text-text-muted" }, t.solarSystemForm
|
|
208
208
|
.additionalComponents
|
|
209
|
-
.electricCar))), this.electricCar && (h("div", { key: '
|
|
209
|
+
.electricCar))), this.electricCar && (h("div", { key: '9c22e6bef2d797ddd317d67508a2fc80bb4b4607', class: "flex flex-col gap-2" }, h("div", { key: 'aff0e5b462bb1bd6fd2d6fa7bec9f23a9f721c4c', class: "grid grid-cols-2 gap-4" }, h("label", { key: '5d2f8303e316aa4d07b83775b14048a1b5fa1d77', class: "text-sm text-text-muted" }, t.solarSystemForm
|
|
210
210
|
.additionalComponents
|
|
211
|
-
.chargingTime), h("label", { key: '
|
|
211
|
+
.chargingTime), h("label", { key: '479c64be185c33752bd3943cee7c320db1365b00', class: "text-sm text-text-muted" }, t.solarSystemForm
|
|
212
212
|
.additionalComponents
|
|
213
|
-
.kilometersPerYear)), h("div", { key: '
|
|
213
|
+
.kilometersPerYear)), h("div", { key: 'b33eb67682580f4fe226a4e24977849b1c498c0d', class: "grid grid-cols-2 gap-4" }, h("select", { key: 'fd0679d0557120e9e60409261c0449d17a62b9b8', class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted", onChange: (e) => {
|
|
214
214
|
this.electricCarChargingTime =
|
|
215
215
|
e.target
|
|
216
216
|
.value;
|
|
217
217
|
this.recalculate();
|
|
218
|
-
} }, h("option", { key: '
|
|
218
|
+
} }, h("option", { key: '533ba2939c88b597a8de6a33e99d423be567c63e', value: "day", selected: this
|
|
219
219
|
.electricCarChargingTime ===
|
|
220
220
|
"day" }, t.solarSystemForm
|
|
221
221
|
.additionalComponents
|
|
222
|
-
.chargingTimeDay), h("option", { key: '
|
|
222
|
+
.chargingTimeDay), h("option", { key: '5f38ec5c8e84e7e958b898d53ef8a4cd52fb2001', value: "night", selected: this
|
|
223
223
|
.electricCarChargingTime ===
|
|
224
224
|
"night" }, t.solarSystemForm
|
|
225
225
|
.additionalComponents
|
|
226
|
-
.chargingTimeNight)), h("input", { key: '
|
|
226
|
+
.chargingTimeNight)), h("input", { key: '17b2d88d26582f7ca895ebdf06ab75e6aef02bdf', type: "number", min: "1000", max: "50000", step: "1000", class: "w-full px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted", value: this.kmDrivenPerYear, onInput: (e) => {
|
|
227
227
|
this.kmDrivenPerYear =
|
|
228
228
|
parseInt(e.target
|
|
229
229
|
.value);
|
|
230
230
|
this.recalculate();
|
|
231
|
-
} }))))), h("div", { key: '
|
|
232
|
-
.battery), !this.isIOS() && (h("span", { key: '
|
|
231
|
+
} }))))), h("div", { key: 'f7868775a41753bc7672bbf760edf048d69a94b2', class: "flex flex-col bg-muted rounded-4xl p-4 gap-4" }, h("div", { key: 'f502d069b83046b8a29f91e29422077ff1028d90', class: "flex items-center justify-between" }, h("label", { key: 'c33786837258f5ba82a5d2045a794918bf17bdaa', class: "text-text-muted" }, t.solarSystemForm.additionalComponents
|
|
232
|
+
.battery), !this.isIOS() && (h("span", { key: 'd4e61a25305a0d29840f1f7cf8d4322fa697e3d8', class: "text-text-muted" }, this.battery, " kWh"))), h("div", { key: '8e58465995117be4cbe22b3f376ebcb296e1ed6d', class: "flex flex-col gap-2" }, this.isIOS()
|
|
233
233
|
? (h("div", { class: "flex items-center gap-2" }, h("input", { type: "number", min: "0", max: "20", step: "1", class: "flex-1 px-4 py-2 rounded-4xl border border-gray-300 focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted", value: this.battery, onInput: (e) => {
|
|
234
234
|
const value = parseInt(e.target
|
|
235
235
|
.value);
|
|
@@ -244,37 +244,37 @@ export class SolarSystemForm {
|
|
|
244
244
|
this.battery = parseInt(e.target
|
|
245
245
|
.value);
|
|
246
246
|
this.recalculate();
|
|
247
|
-
} })))))), h("div", { key: '
|
|
247
|
+
} })))))), h("div", { key: '83484f0973593211ce5c375bbaaa49ae60c857d3', class: "space-y-4" }, h("h2", { key: '66902f9f1c70370ea57f11c24de5f700353b2801', class: "text-lg font-semibold text-secondary" }, t.solarSystemForm.electricityCostsTitle), h("div", { key: '5e416328700a2989eeb59886aa2b15447d9c7108', class: "grid grid-rows-2 gap-0" }, h("div", { key: '1b5de740a2e7f6dc9027a42e2469faf85f860b12', class: "grid grid-cols-3 gap-4" }, h("label", { key: 'd847462337675b52a0b87bbf57eb57771ecb8be9', class: "block text-sm font-medium text-text-muted mb-1" }, t.solarSystemForm.electricityPrice), h("label", { key: 'cda092b8b30813cf150ac6f773abdea1ff0bcb88', class: "block text-sm font-medium text-text-muted mb-1" }, t.solarSystemForm.compensationRate), h("label", { key: '6c3152e73c9af337073bfa92fb2b0bfc15354a2b', class: "block text-sm font-medium text-text-muted mb-1" }, t.solarSystemForm.annualPriceIncrease)), h("div", { key: '2d5cc9c5e35dd608e887210f726e7cf2dccab3a3', class: "grid grid-cols-3 gap-4 text-primary-foreground" }, h("input", { key: '22c17145439337d3f487e7cd3b376e47d67876da', type: "number", step: "0.01", class: "w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted", value: this.electricityPrice.toFixed(2), onInput: (e) => {
|
|
248
248
|
this.electricityPrice = parseFloat(e.target
|
|
249
249
|
.value);
|
|
250
250
|
this.recalculate();
|
|
251
|
-
} }), h("input", { key: '
|
|
251
|
+
} }), h("input", { key: 'fce6a662a97519aac9dc90d436ffc1b8d6e9bf87', type: "number", step: "0.01", class: "w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted", value: this.compensationRate.toFixed(2), onInput: (e) => {
|
|
252
252
|
this.compensationRate = parseFloat(e.target
|
|
253
253
|
.value);
|
|
254
254
|
this.recalculate();
|
|
255
|
-
} }), h("input", { key: '
|
|
255
|
+
} }), h("input", { key: '09da58f733254ee9a71f8dd9c3a644c84e663f16', type: "number", step: "0.1", class: "w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted", value: this.annualPriceIncrease.toFixed(1), onInput: (e) => {
|
|
256
256
|
this.annualPriceIncrease = parseFloat(e.target
|
|
257
257
|
.value);
|
|
258
258
|
this.recalculate();
|
|
259
|
-
} })))), h("div", { key: '
|
|
259
|
+
} })))), h("div", { key: '715ea73993ad45be600d968e188456151e5ec715', class: "space-y-4 p-4 border border-border rounded-4xl" }, h("h2", { key: 'ed64121ef230a3fd3a7b4229fcae1bc42f02050e', class: "text-lg font-semibold text-secondary" }, t.solarSystemForm.resultsTitle), h("div", { key: '591a2c238062aacef74422ce6ed71d56d543f65f', class: "bg-muted rounded-4xl p-4" }, h("div", { key: '939fb610c4da321a5e7b29791cd82d38c85b8128', class: "flex items-center justify-between" }, h("span", { key: '8a83686f8a4ca80b201f0aa364a370ee554d1dfe', class: "text-text-muted" }, t.solarSystemForm.autonomy), h("span", { key: 'd9ae02c499498be74e4933ce13950d10c00761fb', class: "text-xl font-bold text-secondary" }, this.autonomy > 100
|
|
260
260
|
? "100"
|
|
261
|
-
: this.autonomy.toFixed(1), "%")), h("div", { key: '
|
|
262
|
-
.savingsDisclaimer))), h("span", { key: '
|
|
263
|
-
.solarSystemForm.year)), h("div", { key: '
|
|
261
|
+
: this.autonomy.toFixed(1), "%")), h("div", { key: 'a63a0e23ec7d546a93eb85c584c2bfd24e7f2c8b', class: "flex items-center justify-between mt-4" }, h("div", { key: '0e131cf26fb1fe7d410081ae991391a01750c738', class: "flex items-center gap-2" }, h("span", { key: '72720181f07b78e5d24090a1955ba954012e2052', class: "text-text-muted" }, t.solarSystemForm.costSavings), h("div", { key: '6f215fbf81f99a096ea3020c685e5276bd318d8f', class: "relative group" }, h("svg", { key: '634aae8d52af3e33aa78a9ad14bf722181886222', xmlns: "http://www.w3.org/2000/svg", class: "h-5 w-5 text-gray-400 cursor-help", viewBox: "0 0 20 20", fill: "currentColor" }, h("path", { key: '38a0e26fe5cb62790787593fe1134065e0aeb8db', "fill-rule": "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3a1 1 0 00-.867.5 1 1 0 11-1.731-1A3 3 0 0113 8a3.001 3.001 0 01-2 2.83V11a1 1 0 11-2 0v-1a1 1 0 011-1 1 1 0 100-2zm0 8a1 1 0 100-2 1 1 0 000 2z", "clip-rule": "evenodd" })), h("div", { key: '94b31ce93d0d4d9acc8454cc036d9b70e633464b', class: "absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 w-64 p-2 bg-gray-800 text-muted text-sm rounded-lg opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none" }, t.solarSystemForm
|
|
262
|
+
.savingsDisclaimer))), h("span", { key: 'e79c03fe2a57cd7a7156f7b23c5abe207c306119', class: "text-xl font-bold text-success" }, this.costSavings.toFixed(2), "\u20AC/", t
|
|
263
|
+
.solarSystemForm.year)), h("div", { key: '50eadaa3f467a9cc47a26cf24a935918c7c84908', class: "flex items-center justify-between mt-4" }, h("div", { key: '3fcebc56fdf326b3fa369c9afc1e99a321540ac3', class: "flex items-center gap-2" }, h("span", { key: '7f8fc8398382e9dc45dcb2527964fa37596d5777', class: "text-text-muted" }, "Einspeiseverg\u00FCtung 25 Jahre")), h("span", { key: '0e57b2a127349ad32972e11709892a08de2351cd', class: "text-xl font-bold text-success" }, this.compensation25Years.toFixed(2), "\u20AC")), h("div", { key: '911f2a229dc0902bfa3cccbbb0685408b996ab20', class: "flex items-center justify-between mt-4" }, h("div", { key: 'bfc5510ad45d5ef808d98a7793dbb7285d72eb60', class: "flex items-center gap-2" }, h("span", { key: 'e4ca3bc26eda6936bcc05729d616f800958eba18', class: "text-text-muted" }, "Geldwerter Vorteil 25 Jahre")), h("span", { key: '39d5809f08de430897aec70bdd467534bc690cb9', class: "text-xl font-bold text-success" }, this.savedCosts25Years.toFixed(2), "\u20AC")))), h("div", { key: 'e2a083422053e96f3a41c4e2b215a230b284d602', class: "space-y-4 pt-4" }, h("h2", { key: 'd90a6e040b51641f851c14163bcfe2709bcb39f1', class: "text-lg font-semibold text-secondary" }, t.solarSystemForm.requestOffer), h("div", { key: 'b3c55c9f9cb6b9f94cb10af87e6933bb16a918d1', class: "grid gap-4" }, h("div", { key: 'cb2948f9d6dc7af12428db67a1db480eb6a185e4', class: "grid grid-cols-2 gap-4" }, h("label", { key: 'f8dfd890c5d43704d876e3712827ec6994169a27', class: "block text-sm font-medium text-text-muted mb-1" }, t.solarSystemForm.name), h("label", { key: '18f83d7ba7b9b71ce862f8d62b1ae6601fd3461c', class: "block text-sm font-medium text-text-muted mb-1" }, t.solarSystemForm.email)), h("div", { key: 'ea253e4d63e118a6aee715b343f58a7599e4b2d3', class: "grid grid-cols-2 gap-4" }, h("div", { key: '7fb48769fd6cfcf1dbedafed95f105446f2b4021' }, h("input", { key: 'c9b3885f869946969bef835fded562f71a91416a', type: "text", class: `w-full px-4 py-2 rounded-4xl border ${this.nameError
|
|
264
264
|
? "border-error"
|
|
265
265
|
: "border-border"} focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`, value: this.name, onInput: (e) => {
|
|
266
266
|
this.name =
|
|
267
267
|
e.target
|
|
268
268
|
.value;
|
|
269
269
|
this.validateForm();
|
|
270
|
-
}, placeholder: "Your name" }), this.nameError && (h("p", { key: '
|
|
270
|
+
}, placeholder: "Your name" }), this.nameError && (h("p", { key: '2c9ed2313e00001787287d5c9d403e5ff18e1186', class: "text-error text-sm mt-1" }, this.nameError))), h("div", { key: '5f5244dda5a2591a9bf1b88cb06b3ee58b270500' }, h("input", { key: '634e6ec4af085d92be18b9b187605b8a66e7d4e8', type: "email", class: `w-full px-4 py-2 rounded-4xl border ${this.emailError
|
|
271
271
|
? "border-error"
|
|
272
272
|
: "border-border"} focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`, value: this.email, onInput: (e) => {
|
|
273
273
|
this.email =
|
|
274
274
|
e.target
|
|
275
275
|
.value;
|
|
276
276
|
this.validateForm();
|
|
277
|
-
}, placeholder: "your.email@example.com" }), this.emailError && (h("p", { key: '
|
|
277
|
+
}, placeholder: "your.email@example.com" }), this.emailError && (h("p", { key: 'dabb317d13e748f489d6ef1542b44798b85c29f7', class: "text-error text-sm mt-1" }, this.emailError))))), h("div", { key: 'ad6b0be2c9a8a91246ecaecdb9100ae7cff7f0c5', class: "flex justify-center" }, h("button", { key: '04172ddff28b03a2ffa0f669d8f0ae14139a4cd2', onClick: () => this.handleRequestOffer(), disabled: !this.name.trim() ||
|
|
278
278
|
!this.email.trim() || !!this.nameError ||
|
|
279
279
|
!!this.emailError, class: "px-4 py-2 bg-secondary rounded-4xl hover:bg-tertiary transition-colors duration-200 text-muted" }, t.solarSystemForm.requestOfferButton))))));
|
|
280
280
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
export class LoadingWidget {
|
|
3
3
|
render() {
|
|
4
|
-
return (h("div", { key: '
|
|
4
|
+
return (h("div", { key: 'fd87a9b0905bfc9237be96adee10ac9605531e2a', class: "absolute flex items-center justify-center bg-muted bg-opacity-75 z-20 pt-7 rounded-4xl" }, h("div", { key: 'e83ac46dcdb9958a2f9e697cb16f8924684a6c6f', class: "animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-secondary" })));
|
|
5
5
|
}
|
|
6
6
|
static get is() { return "loading-widget"; }
|
|
7
7
|
static get originalStyleUrls() {
|
|
@@ -8,7 +8,7 @@ const LoadingWidget$1 = /*@__PURE__*/ proxyCustomElement(class LoadingWidget ext
|
|
|
8
8
|
this.__registerHost();
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
return (h("div", { key: '
|
|
11
|
+
return (h("div", { key: 'fd87a9b0905bfc9237be96adee10ac9605531e2a', class: "absolute flex items-center justify-center bg-muted bg-opacity-75 z-20 pt-7 rounded-4xl" }, h("div", { key: 'e83ac46dcdb9958a2f9e697cb16f8924684a6c6f', class: "animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-secondary" })));
|
|
12
12
|
}
|
|
13
13
|
static get style() { return outputCss; }
|
|
14
14
|
}, [0, "loading-widget"]);
|