blue-chestnut-solar-expert 0.0.63 → 0.0.64

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 (152) hide show
  1. package/dist/cjs/eraser-icon_19.cjs.entry.js +1 -1
  2. package/dist/cjs/{lerc-Cg9Ef4kN.js → lerc-CQf05pmr.js} +3 -3
  3. package/dist/cjs/{lerc-Cg9Ef4kN.js.map → lerc-CQf05pmr.js.map} +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/loading-widget.cjs.entry.js +2 -2
  6. package/dist/cjs/loading-widget.cjs.entry.js.map +1 -1
  7. package/dist/cjs/loading-widget.entry.cjs.js.map +1 -1
  8. package/dist/cjs/stencil-library.cjs.js +1 -1
  9. package/dist/collection/components/map-draw/map-draw.js +17 -46
  10. package/dist/collection/components/map-draw/map-draw.js.map +1 -1
  11. package/dist/collection/components/map-draw/map-selector.js +3 -3
  12. package/dist/collection/components/map-draw/polygon-buttons.js +1 -1
  13. package/dist/collection/components/map-draw/polygon-information.js +18 -11
  14. package/dist/collection/components/map-draw/polygon-information.js.map +1 -1
  15. package/dist/collection/components/map-draw/tool-box.js +3 -3
  16. package/dist/collection/components/map-draw/tutorial-component.js +3 -3
  17. package/dist/collection/components/settings/settings.js +8 -8
  18. package/dist/collection/components/solar-expert/solar-expert.js +3 -1
  19. package/dist/collection/components/solar-expert/solar-expert.js.map +1 -1
  20. package/dist/collection/components/solar-system-form/solar-system-form.js +36 -36
  21. package/dist/collection/components/widgets/loading-widget.js +1 -1
  22. package/dist/collection/output.css +17 -0
  23. package/dist/collection/types/lang.js.map +1 -1
  24. package/dist/collection/utils/lang/english.js +1 -0
  25. package/dist/collection/utils/lang/english.js.map +1 -1
  26. package/dist/collection/utils/lang/german.js +1 -0
  27. package/dist/collection/utils/lang/german.js.map +1 -1
  28. package/dist/collection/utils/lang/spanish.js +1 -0
  29. package/dist/collection/utils/lang/spanish.js.map +1 -1
  30. package/dist/collection/utils/solar.js +1 -0
  31. package/dist/collection/utils/solar.js.map +1 -1
  32. package/dist/components/eraser-icon.js +1 -1
  33. package/dist/components/house-icon.js +1 -1
  34. package/dist/components/icon-selector.js +1 -1
  35. package/dist/components/loading-widget.js +2 -2
  36. package/dist/components/loading-widget.js.map +1 -1
  37. package/dist/components/map-draw.js +1 -1
  38. package/dist/components/map-selector.js +1 -1
  39. package/dist/components/marker-icon.js +1 -1
  40. package/dist/components/move-icon.js +1 -1
  41. package/dist/components/octagon-minus-icon.js +1 -1
  42. package/dist/components/p-1jcVNjsm.js +47 -0
  43. package/dist/components/p-1jcVNjsm.js.map +1 -0
  44. package/dist/components/p-4FooU4eR.js +40 -0
  45. package/dist/components/p-4FooU4eR.js.map +1 -0
  46. package/dist/components/p-6rmvkwsO.js +163 -0
  47. package/dist/components/p-6rmvkwsO.js.map +1 -0
  48. package/dist/components/p-BYULvwxQ.js +40 -0
  49. package/dist/components/p-BYULvwxQ.js.map +1 -0
  50. package/dist/components/{p-BsvvtnQe.js → p-B_6Ue-UQ.js} +5 -2
  51. package/dist/components/p-B_6Ue-UQ.js.map +1 -0
  52. package/dist/components/p-BcBvva_X.js +40 -0
  53. package/dist/components/p-BcBvva_X.js.map +1 -0
  54. package/dist/components/p-But3uNm3.js +76 -0
  55. package/dist/components/p-But3uNm3.js.map +1 -0
  56. package/dist/components/p-COCnOrkb.js +121 -0
  57. package/dist/components/p-COCnOrkb.js.map +1 -0
  58. package/dist/components/p-COL7rExT.js +86 -0
  59. package/dist/components/p-COL7rExT.js.map +1 -0
  60. package/dist/components/p-CpGXfh7Q.js +114 -0
  61. package/dist/components/p-CpGXfh7Q.js.map +1 -0
  62. package/dist/components/p-Cu7ckMQp.js +40 -0
  63. package/dist/components/p-Cu7ckMQp.js.map +1 -0
  64. package/dist/components/p-CxwiRuTf.js +623 -0
  65. package/dist/components/p-CxwiRuTf.js.map +1 -0
  66. package/dist/components/p-DCMO4ssM.js +40 -0
  67. package/dist/components/p-DCMO4ssM.js.map +1 -0
  68. package/dist/components/p-DWrXodHT.js +40 -0
  69. package/dist/components/p-DWrXodHT.js.map +1 -0
  70. package/dist/components/{p-CIfpd0H7.js → p-De6Uhz0b.js} +39 -67
  71. package/dist/components/p-De6Uhz0b.js.map +1 -0
  72. package/dist/components/{p-UhBaEaSb.js → p-DoOT28vq.js} +3 -3
  73. package/dist/components/{p-UhBaEaSb.js.map → p-DoOT28vq.js.map} +1 -1
  74. package/dist/components/{p-kbMAsJ_s.js → p-IzVa21Wl.js} +40 -40
  75. package/dist/components/{p-kbMAsJ_s.js.map → p-IzVa21Wl.js.map} +1 -1
  76. package/dist/components/p-JzJ_ZuEh.js +89 -0
  77. package/dist/components/p-JzJ_ZuEh.js.map +1 -0
  78. package/dist/components/p-kB7DMoo7.js +40 -0
  79. package/dist/components/p-kB7DMoo7.js.map +1 -0
  80. package/dist/components/p-rW0sFWOp.js +40 -0
  81. package/dist/components/p-rW0sFWOp.js.map +1 -0
  82. package/dist/components/polygon-buttons.js +1 -1
  83. package/dist/components/polygon-information.js +1 -1
  84. package/dist/components/search-icon.js +1 -1
  85. package/dist/components/settings-icon.js +1 -1
  86. package/dist/components/settings-modal.js +1 -1
  87. package/dist/components/solar-expert.js +23 -21
  88. package/dist/components/solar-expert.js.map +1 -1
  89. package/dist/components/solar-system-form.js +1 -1
  90. package/dist/components/toast-notification.js +1 -1
  91. package/dist/components/tool-box.js +1 -1
  92. package/dist/components/tutorial-component.js +1 -1
  93. package/dist/components/undo-icon.js +1 -1
  94. package/dist/esm/eraser-icon_19.entry.js +1 -1
  95. package/dist/esm/{lerc-D1ySec2h.js → lerc-j3yBkoBc.js} +3 -3
  96. package/dist/esm/{lerc-D1ySec2h.js.map → lerc-j3yBkoBc.js.map} +1 -1
  97. package/dist/esm/loader.js +1 -1
  98. package/dist/esm/loading-widget.entry.js +2 -2
  99. package/dist/esm/loading-widget.entry.js.map +1 -1
  100. package/dist/esm/stencil-library.js +1 -1
  101. package/dist/stencil-library/loading-widget.entry.esm.js.map +1 -1
  102. package/dist/stencil-library/p-741a746a.entry.js +2 -0
  103. package/dist/stencil-library/p-741a746a.entry.js.map +1 -0
  104. package/dist/stencil-library/p-c6J1w7ew.js +2 -0
  105. package/dist/stencil-library/p-c6J1w7ew.js.map +1 -0
  106. package/dist/stencil-library/{p-ea3fd08c.entry.js → p-d2fcb2d8.entry.js} +2 -2
  107. package/dist/stencil-library/{p-r7aBltoS.js → p-rVA7BFlW.js} +4 -4
  108. package/dist/stencil-library/{p-r7aBltoS.js.map → p-rVA7BFlW.js.map} +1 -1
  109. package/dist/stencil-library/stencil-library.esm.js +1 -1
  110. package/dist/types/components/map-draw/map-draw.d.ts +1 -4
  111. package/dist/types/components/map-draw/polygon-information.d.ts +1 -0
  112. package/dist/types/types/lang.d.ts +1 -0
  113. package/package.json +1 -1
  114. package/dist/components/p-6t2i7GOy.js +0 -163
  115. package/dist/components/p-6t2i7GOy.js.map +0 -1
  116. package/dist/components/p-B2W-WTcd.js +0 -47
  117. package/dist/components/p-B2W-WTcd.js.map +0 -1
  118. package/dist/components/p-Bl-OxMMK.js +0 -40
  119. package/dist/components/p-Bl-OxMMK.js.map +0 -1
  120. package/dist/components/p-BsvvtnQe.js.map +0 -1
  121. package/dist/components/p-BzU0ssT8.js +0 -40
  122. package/dist/components/p-BzU0ssT8.js.map +0 -1
  123. package/dist/components/p-C241_R3r.js +0 -623
  124. package/dist/components/p-C241_R3r.js.map +0 -1
  125. package/dist/components/p-CBoVsYa-.js +0 -40
  126. package/dist/components/p-CBoVsYa-.js.map +0 -1
  127. package/dist/components/p-CIfpd0H7.js.map +0 -1
  128. package/dist/components/p-CuNvbl9l.js +0 -40
  129. package/dist/components/p-CuNvbl9l.js.map +0 -1
  130. package/dist/components/p-CuhV6w4i.js +0 -40
  131. package/dist/components/p-CuhV6w4i.js.map +0 -1
  132. package/dist/components/p-CwFdd3zn.js +0 -86
  133. package/dist/components/p-CwFdd3zn.js.map +0 -1
  134. package/dist/components/p-D3H70xDr.js +0 -40
  135. package/dist/components/p-D3H70xDr.js.map +0 -1
  136. package/dist/components/p-DIii3RoN.js +0 -76
  137. package/dist/components/p-DIii3RoN.js.map +0 -1
  138. package/dist/components/p-DPHbqum8.js +0 -114
  139. package/dist/components/p-DPHbqum8.js.map +0 -1
  140. package/dist/components/p-DXQvpFgv.js +0 -114
  141. package/dist/components/p-DXQvpFgv.js.map +0 -1
  142. package/dist/components/p-DnjGygv7.js +0 -89
  143. package/dist/components/p-DnjGygv7.js.map +0 -1
  144. package/dist/components/p-DxfT4KzX.js +0 -40
  145. package/dist/components/p-DxfT4KzX.js.map +0 -1
  146. package/dist/components/p-gYPKei39.js +0 -40
  147. package/dist/components/p-gYPKei39.js.map +0 -1
  148. package/dist/stencil-library/p-Tmp2o-vp.js +0 -2
  149. package/dist/stencil-library/p-Tmp2o-vp.js.map +0 -1
  150. package/dist/stencil-library/p-c2c69c28.entry.js +0 -2
  151. package/dist/stencil-library/p-c2c69c28.entry.js.map +0 -1
  152. /package/dist/stencil-library/{p-ea3fd08c.entry.js.map → p-d2fcb2d8.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/types/lang.ts"],"names":[],"mappings":"","sourcesContent":["export type Language = \"en\" | \"es\" | \"de\";\r\n\r\nexport interface LanguageStrings {\r\n settings: {\r\n language: string;\r\n rowSpacing: string;\r\n columnSpacing: string;\r\n borderInset: string;\r\n };\r\n mapSelector: {\r\n explanation: string;\r\n radius: string;\r\n accept: string;\r\n chooseOnMap: string;\r\n switchToStandard: string;\r\n switchToSatellite: string;\r\n noAddressSelected: string;\r\n };\r\n solarExpert: {\r\n searchPlaceholder: string;\r\n };\r\n solarSystemForm: {\r\n title: string;\r\n year: string;\r\n systemInformation: string;\r\n numberOfPanels: string;\r\n panelPeakPower: string;\r\n totalSystemPeakPower: string;\r\n electricityPrice: string;\r\n compensationRate: string;\r\n autonomy: string;\r\n totalEnergyConsumption: string;\r\n totalEnergyProduction: string;\r\n costSavings: string;\r\n householdConsumptionTitle: string;\r\n consumptionProfileTitle: string;\r\n electricityCostsTitle: string;\r\n compensationRateTitle: string;\r\n resultsTitle: string;\r\n savingsDisclaimer: string;\r\n annualConsumption: string;\r\n name: string;\r\n email: string;\r\n phone: string;\r\n nameError: string;\r\n emailError: string;\r\n phoneError: string;\r\n consumptionProfiles: {\r\n mostlyAtHome: string;\r\n mostlyAway: string;\r\n };\r\n chart: {\r\n consumption: string;\r\n production: string;\r\n consumptionProfile: string;\r\n relativeConsumption: string;\r\n hourOfDay: string;\r\n };\r\n validEmailError: string;\r\n requestOffer: string;\r\n requestOfferButton: string;\r\n additionalComponents: {\r\n title: string;\r\n heatPump: string;\r\n electricCar: string;\r\n battery: string;\r\n chargingTime: string;\r\n chargingTimeDay: string;\r\n chargingTimeNight: string;\r\n kilometersPerYear: string;\r\n };\r\n annualPriceIncrease: string;\r\n costSavings20Years: string;\r\n compensation20Years: string;\r\n monetaryBenefit20Years: string;\r\n approximate: string;\r\n sending: string;\r\n leadSubmitted: string;\r\n leadError: string;\r\n };\r\n mapDraw: {\r\n instructions: {\r\n show: string;\r\n hide: string;\r\n parts: {\r\n roof: string;\r\n obstruction: string;\r\n delete: string;\r\n move: string;\r\n end: string;\r\n };\r\n };\r\n noPolygonSelected: string;\r\n noAddressSelected: string;\r\n information: string;\r\n calculateSolarPanels: string;\r\n markRoofEdge: string;\r\n markAsFlatRoof: string;\r\n panels: string;\r\n area: string;\r\n azimuth: string;\r\n pitch: string;\r\n loading: string;\r\n tools: {\r\n roof: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n obstruction: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n delete: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n move: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n undo: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n markRoofEdge: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n };\r\n toast: {\r\n undoSuccess: string;\r\n calculateSolarPanelsSuccess: string;\r\n markAsFlatRoofSuccess: string;\r\n };\r\n tutorial: {\r\n title: string;\r\n description: string;\r\n understood: string;\r\n markEdge: {\r\n title: string;\r\n description: string;\r\n understood: string;\r\n };\r\n additionalTools: {\r\n title: string;\r\n description: string;\r\n understood: string;\r\n };\r\n };\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/types/lang.ts"],"names":[],"mappings":"","sourcesContent":["export type Language = \"en\" | \"es\" | \"de\";\r\n\r\nexport interface LanguageStrings {\r\n settings: {\r\n language: string;\r\n rowSpacing: string;\r\n columnSpacing: string;\r\n borderInset: string;\r\n };\r\n mapSelector: {\r\n explanation: string;\r\n radius: string;\r\n accept: string;\r\n chooseOnMap: string;\r\n switchToStandard: string;\r\n switchToSatellite: string;\r\n noAddressSelected: string;\r\n };\r\n solarExpert: {\r\n searchPlaceholder: string;\r\n };\r\n solarSystemForm: {\r\n title: string;\r\n year: string;\r\n systemInformation: string;\r\n numberOfPanels: string;\r\n panelPeakPower: string;\r\n totalSystemPeakPower: string;\r\n electricityPrice: string;\r\n compensationRate: string;\r\n autonomy: string;\r\n totalEnergyConsumption: string;\r\n totalEnergyProduction: string;\r\n costSavings: string;\r\n householdConsumptionTitle: string;\r\n consumptionProfileTitle: string;\r\n electricityCostsTitle: string;\r\n compensationRateTitle: string;\r\n resultsTitle: string;\r\n savingsDisclaimer: string;\r\n annualConsumption: string;\r\n name: string;\r\n email: string;\r\n phone: string;\r\n nameError: string;\r\n emailError: string;\r\n phoneError: string;\r\n consumptionProfiles: {\r\n mostlyAtHome: string;\r\n mostlyAway: string;\r\n };\r\n chart: {\r\n consumption: string;\r\n production: string;\r\n consumptionProfile: string;\r\n relativeConsumption: string;\r\n hourOfDay: string;\r\n };\r\n validEmailError: string;\r\n requestOffer: string;\r\n requestOfferButton: string;\r\n additionalComponents: {\r\n title: string;\r\n heatPump: string;\r\n electricCar: string;\r\n battery: string;\r\n chargingTime: string;\r\n chargingTimeDay: string;\r\n chargingTimeNight: string;\r\n kilometersPerYear: string;\r\n };\r\n annualPriceIncrease: string;\r\n costSavings20Years: string;\r\n compensation20Years: string;\r\n monetaryBenefit20Years: string;\r\n approximate: string;\r\n sending: string;\r\n leadSubmitted: string;\r\n leadError: string;\r\n };\r\n mapDraw: {\r\n instructions: {\r\n show: string;\r\n hide: string;\r\n parts: {\r\n roof: string;\r\n obstruction: string;\r\n delete: string;\r\n move: string;\r\n end: string;\r\n };\r\n };\r\n noPolygonSelected: string;\r\n noAddressSelected: string;\r\n information: string;\r\n calculateSolarPanels: string;\r\n markRoofEdge: string;\r\n markAsFlatRoof: string;\r\n panels: string;\r\n area: string;\r\n azimuth: string;\r\n pitch: string;\r\n loading: string;\r\n imageLoadError: string;\r\n tools: {\r\n roof: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n obstruction: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n delete: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n move: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n undo: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n markRoofEdge: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n };\r\n };\r\n toast: {\r\n undoSuccess: string;\r\n calculateSolarPanelsSuccess: string;\r\n markAsFlatRoofSuccess: string;\r\n };\r\n tutorial: {\r\n title: string;\r\n description: string;\r\n understood: string;\r\n markEdge: {\r\n title: string;\r\n description: string;\r\n understood: string;\r\n };\r\n additionalTools: {\r\n title: string;\r\n description: string;\r\n understood: string;\r\n };\r\n };\r\n };\r\n}\r\n"]}
@@ -99,6 +99,7 @@ export const en = {
99
99
  azimuth: "Azimuth",
100
100
  pitch: "Pitch",
101
101
  loading: "Loading",
102
+ imageLoadError: "An error occurred while loading the satellite image. Please try again.",
102
103
  tools: {
103
104
  roof: {
104
105
  name: "Roof",
@@ -1 +1 @@
1
- {"version":3,"file":"english.js","sourceRoot":"","sources":["../../../src/utils/lang/english.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const en: LanguageStrings = {\r\n settings: {\r\n language: \"Language\",\r\n rowSpacing: \"Row Spacing\",\r\n columnSpacing: \"Column Spacing\",\r\n borderInset: \"Border Inset\",\r\n },\r\n mapSelector: {\r\n explanation:\r\n \"Select your house on the map and adjust the radius of the circle to fully encompase your roof.\",\r\n radius: \"Radius (meters)\",\r\n accept: \"Accept\",\r\n chooseOnMap: \"Choose on Map\",\r\n switchToStandard: \"Switch to Standard Map\",\r\n switchToSatellite: \"Switch to Satellite\",\r\n noAddressSelected: \"Please select an address first\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Search for your address\",\r\n },\r\n solarSystemForm: {\r\n title: \"Solar System Configuration\",\r\n systemInformation: \"System Information\",\r\n numberOfPanels: \"Number of Solar Panels\",\r\n panelPeakPower: \"Panel Peak Power (kW)\",\r\n totalSystemPeakPower: \"Total System Peak Power (kW)\",\r\n electricityPrice: \"Electricity Price (€/kWh)\",\r\n compensationRate: \"Compensation Rate (€/kWh)\",\r\n autonomy: \"Autonomy\",\r\n totalEnergyConsumption: \"Total Energy Consumption\",\r\n totalEnergyProduction: \"Total Energy Production (approximate)\",\r\n costSavings: \"Cost Savings (€/year)\",\r\n householdConsumptionTitle: \"Household Electricity Consumption\",\r\n consumptionProfileTitle: \"Consumption Profile\",\r\n electricityCostsTitle: \"Electricity Costs\",\r\n compensationRateTitle: \"Compensation Rate\",\r\n resultsTitle: \"Results\",\r\n savingsDisclaimer:\r\n \"Disclaimer: The savings are based on the average electricity price in Spain.\",\r\n annualConsumption: \"Annual Consumption (kWh)\",\r\n name: \"Name\",\r\n email: \"Email\",\r\n phone: \"Phone Number (optional)\",\r\n nameError: \"Please enter your name\",\r\n emailError: \"Please enter a valid email address\",\r\n phoneError: \"Please enter a valid phone number\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Mostly at home\",\r\n mostlyAway: \"Mostly away\",\r\n },\r\n chart: {\r\n consumption: \"Consumption\",\r\n production: \"Production\",\r\n consumptionProfile: \"Consumption Profile\",\r\n relativeConsumption: \"Relative Consumption\",\r\n hourOfDay: \"Hour of Day\",\r\n },\r\n validEmailError: \"Please enter a valid email address\",\r\n requestOffer: \"Request Offer\",\r\n requestOfferButton: \"Request Offer\",\r\n year: \"year\",\r\n additionalComponents: {\r\n title: \"Additional Components\",\r\n heatPump: \"Heat Pump\",\r\n electricCar: \"Electric Car\",\r\n battery: \"Battery\",\r\n chargingTime: \"Charging Time\",\r\n chargingTimeDay: \"Day (06:00 - 18:00)\",\r\n chargingTimeNight: \"Night (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilometers per Year\",\r\n },\r\n annualPriceIncrease: \"Annual Price Increase (%)\",\r\n costSavings20Years: \"20-Year Savings\",\r\n compensation20Years: \"Feed-in Tariff 20 Years\",\r\n monetaryBenefit20Years: \"Monetary Benefit 20 Years\",\r\n approximate: \"Approximate value\",\r\n sending: \"Sending...\",\r\n leadSubmitted: \"Your request has been submitted successfully!\",\r\n leadError:\r\n \"There was an error submitting your request. Please try again.\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Show Instructions\",\r\n hide: \"Hide Instructions\",\r\n parts: {\r\n roof:\r\n \"After you have searched and selected your address. Highlight the part of your roof that you want to add solar panels to. Mark each surface with a polygon with the roof tool\",\r\n obstruction:\r\n \". If you have skylights or other obstructions where you don't want to add solar panels, mark those as well with the obstruction tool\",\r\n delete: \". You can delete polygons with the delete tool\",\r\n move:\r\n \". If you want to change the corners of a polygon, select the move tool\",\r\n end: \", select the polygon you want to change and drag and drop the corners.\",\r\n },\r\n },\r\n noPolygonSelected: \"No polygon selected\",\r\n noAddressSelected: \"Please select an address\",\r\n information: \"Information\",\r\n calculateSolarPanels: \"Calculate Solar Panels\",\r\n markRoofEdge: \"Mark lower roof edge\",\r\n markAsFlatRoof: \"Mark as flat roof\",\r\n panels: \"Panels\",\r\n area: \"Area\",\r\n azimuth: \"Azimuth\",\r\n pitch: \"Pitch\",\r\n loading: \"Loading\",\r\n tools: {\r\n roof: {\r\n name: \"Roof\",\r\n explanation: \"Draw the roof of the building\",\r\n ariaLabel: \"Roof\",\r\n },\r\n obstruction: {\r\n name: \"Obstruction\",\r\n explanation: \"Draw the obstruction of the building\",\r\n ariaLabel: \"Obstruction\",\r\n },\r\n delete: {\r\n name: \"Delete\",\r\n explanation: \"Delete the selected polygon\",\r\n ariaLabel: \"Delete\",\r\n },\r\n move: {\r\n name: \"Move\",\r\n explanation: \"Move the selected polygon\",\r\n ariaLabel: \"Move\",\r\n },\r\n undo: {\r\n name: \"Undo\",\r\n explanation: \"Undo the last action\",\r\n ariaLabel: \"Undo\",\r\n },\r\n markRoofEdge: {\r\n name: \"Roof Edge\",\r\n explanation: \"Mark the edge of the roof\",\r\n ariaLabel: \"Mark Roof Edge\",\r\n },\r\n },\r\n toast: {\r\n undoSuccess: \"Action undone successfully\",\r\n calculateSolarPanelsSuccess: \"Solar panels calculated successfully\",\r\n markAsFlatRoofSuccess:\r\n \"Roof marked as flat. Please select an edge to align the panels with the building.\",\r\n },\r\n tutorial: {\r\n title: \"How to Mark Your Roof\",\r\n description:\r\n \"Use the roof tool to mark the roof segment where you want to install solar panels. Click on the corners of your roof to create a polygon.\",\r\n understood: \"Understood\",\r\n markEdge: {\r\n title: \"Mark the Lower Roof Edge\",\r\n description:\r\n \"Now mark the lower edge of your roof to help calculate the optimal solar panel placement. Click on the points along the bottom edge of your roof.\",\r\n understood: \"Understood\",\r\n },\r\n additionalTools: {\r\n title: \"Additional Tools Available\",\r\n description:\r\n \"You can now add more roof segments using the roof tool. Use the obstruction tool to mark areas where you don't want solar panels (like skylights or chimneys). The move tool allows you to select any polygon and edit its points by dragging them.\",\r\n understood: \"Understood\",\r\n },\r\n },\r\n },\r\n};\r\n"]}
1
+ {"version":3,"file":"english.js","sourceRoot":"","sources":["../../../src/utils/lang/english.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const en: LanguageStrings = {\r\n settings: {\r\n language: \"Language\",\r\n rowSpacing: \"Row Spacing\",\r\n columnSpacing: \"Column Spacing\",\r\n borderInset: \"Border Inset\",\r\n },\r\n mapSelector: {\r\n explanation:\r\n \"Select your house on the map and adjust the radius of the circle to fully encompase your roof.\",\r\n radius: \"Radius (meters)\",\r\n accept: \"Accept\",\r\n chooseOnMap: \"Choose on Map\",\r\n switchToStandard: \"Switch to Standard Map\",\r\n switchToSatellite: \"Switch to Satellite\",\r\n noAddressSelected: \"Please select an address first\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Search for your address\",\r\n },\r\n solarSystemForm: {\r\n title: \"Solar System Configuration\",\r\n systemInformation: \"System Information\",\r\n numberOfPanels: \"Number of Solar Panels\",\r\n panelPeakPower: \"Panel Peak Power (kW)\",\r\n totalSystemPeakPower: \"Total System Peak Power (kW)\",\r\n electricityPrice: \"Electricity Price (€/kWh)\",\r\n compensationRate: \"Compensation Rate (€/kWh)\",\r\n autonomy: \"Autonomy\",\r\n totalEnergyConsumption: \"Total Energy Consumption\",\r\n totalEnergyProduction: \"Total Energy Production (approximate)\",\r\n costSavings: \"Cost Savings (€/year)\",\r\n householdConsumptionTitle: \"Household Electricity Consumption\",\r\n consumptionProfileTitle: \"Consumption Profile\",\r\n electricityCostsTitle: \"Electricity Costs\",\r\n compensationRateTitle: \"Compensation Rate\",\r\n resultsTitle: \"Results\",\r\n savingsDisclaimer:\r\n \"Disclaimer: The savings are based on the average electricity price in Spain.\",\r\n annualConsumption: \"Annual Consumption (kWh)\",\r\n name: \"Name\",\r\n email: \"Email\",\r\n phone: \"Phone Number (optional)\",\r\n nameError: \"Please enter your name\",\r\n emailError: \"Please enter a valid email address\",\r\n phoneError: \"Please enter a valid phone number\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Mostly at home\",\r\n mostlyAway: \"Mostly away\",\r\n },\r\n chart: {\r\n consumption: \"Consumption\",\r\n production: \"Production\",\r\n consumptionProfile: \"Consumption Profile\",\r\n relativeConsumption: \"Relative Consumption\",\r\n hourOfDay: \"Hour of Day\",\r\n },\r\n validEmailError: \"Please enter a valid email address\",\r\n requestOffer: \"Request Offer\",\r\n requestOfferButton: \"Request Offer\",\r\n year: \"year\",\r\n additionalComponents: {\r\n title: \"Additional Components\",\r\n heatPump: \"Heat Pump\",\r\n electricCar: \"Electric Car\",\r\n battery: \"Battery\",\r\n chargingTime: \"Charging Time\",\r\n chargingTimeDay: \"Day (06:00 - 18:00)\",\r\n chargingTimeNight: \"Night (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilometers per Year\",\r\n },\r\n annualPriceIncrease: \"Annual Price Increase (%)\",\r\n costSavings20Years: \"20-Year Savings\",\r\n compensation20Years: \"Feed-in Tariff 20 Years\",\r\n monetaryBenefit20Years: \"Monetary Benefit 20 Years\",\r\n approximate: \"Approximate value\",\r\n sending: \"Sending...\",\r\n leadSubmitted: \"Your request has been submitted successfully!\",\r\n leadError:\r\n \"There was an error submitting your request. Please try again.\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Show Instructions\",\r\n hide: \"Hide Instructions\",\r\n parts: {\r\n roof:\r\n \"After you have searched and selected your address. Highlight the part of your roof that you want to add solar panels to. Mark each surface with a polygon with the roof tool\",\r\n obstruction:\r\n \". If you have skylights or other obstructions where you don't want to add solar panels, mark those as well with the obstruction tool\",\r\n delete: \". You can delete polygons with the delete tool\",\r\n move:\r\n \". If you want to change the corners of a polygon, select the move tool\",\r\n end: \", select the polygon you want to change and drag and drop the corners.\",\r\n },\r\n },\r\n noPolygonSelected: \"No polygon selected\",\r\n noAddressSelected: \"Please select an address\",\r\n information: \"Information\",\r\n calculateSolarPanels: \"Calculate Solar Panels\",\r\n markRoofEdge: \"Mark lower roof edge\",\r\n markAsFlatRoof: \"Mark as flat roof\",\r\n panels: \"Panels\",\r\n area: \"Area\",\r\n azimuth: \"Azimuth\",\r\n pitch: \"Pitch\",\r\n loading: \"Loading\",\r\n imageLoadError:\r\n \"An error occurred while loading the satellite image. Please try again.\",\r\n tools: {\r\n roof: {\r\n name: \"Roof\",\r\n explanation: \"Draw the roof of the building\",\r\n ariaLabel: \"Roof\",\r\n },\r\n obstruction: {\r\n name: \"Obstruction\",\r\n explanation: \"Draw the obstruction of the building\",\r\n ariaLabel: \"Obstruction\",\r\n },\r\n delete: {\r\n name: \"Delete\",\r\n explanation: \"Delete the selected polygon\",\r\n ariaLabel: \"Delete\",\r\n },\r\n move: {\r\n name: \"Move\",\r\n explanation: \"Move the selected polygon\",\r\n ariaLabel: \"Move\",\r\n },\r\n undo: {\r\n name: \"Undo\",\r\n explanation: \"Undo the last action\",\r\n ariaLabel: \"Undo\",\r\n },\r\n markRoofEdge: {\r\n name: \"Roof Edge\",\r\n explanation: \"Mark the edge of the roof\",\r\n ariaLabel: \"Mark Roof Edge\",\r\n },\r\n },\r\n toast: {\r\n undoSuccess: \"Action undone successfully\",\r\n calculateSolarPanelsSuccess: \"Solar panels calculated successfully\",\r\n markAsFlatRoofSuccess:\r\n \"Roof marked as flat. Please select an edge to align the panels with the building.\",\r\n },\r\n tutorial: {\r\n title: \"How to Mark Your Roof\",\r\n description:\r\n \"Use the roof tool to mark the roof segment where you want to install solar panels. Click on the corners of your roof to create a polygon.\",\r\n understood: \"Understood\",\r\n markEdge: {\r\n title: \"Mark the Lower Roof Edge\",\r\n description:\r\n \"Now mark the lower edge of your roof to help calculate the optimal solar panel placement. Click on the points along the bottom edge of your roof.\",\r\n understood: \"Understood\",\r\n },\r\n additionalTools: {\r\n title: \"Additional Tools Available\",\r\n description:\r\n \"You can now add more roof segments using the roof tool. Use the obstruction tool to mark areas where you don't want solar panels (like skylights or chimneys). The move tool allows you to select any polygon and edit its points by dragging them.\",\r\n understood: \"Understood\",\r\n },\r\n },\r\n },\r\n};\r\n"]}
@@ -99,6 +99,7 @@ export const de = {
99
99
  area: "Fläche",
100
100
  azimuth: "Ausrichtung",
101
101
  pitch: "Neigung",
102
+ imageLoadError: "Beim Laden des Satellitenbildes ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",
102
103
  tools: {
103
104
  roof: {
104
105
  name: "Dach",
@@ -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 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 (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"]}
@@ -99,6 +99,7 @@ export const es = {
99
99
  area: "Área",
100
100
  azimuth: "Azimut",
101
101
  pitch: "Inclinación",
102
+ imageLoadError: "Ocurrió un error al cargar la imagen satelital. Por favor, inténtelo de nuevo.",
102
103
  tools: {
103
104
  roof: {
104
105
  name: "Tejado",
@@ -1 +1 @@
1
- {"version":3,"file":"spanish.js","sourceRoot":"","sources":["../../../src/utils/lang/spanish.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const es: LanguageStrings = {\r\n settings: {\r\n language: \"Idioma\",\r\n rowSpacing: \"Espaciado de filas\",\r\n columnSpacing: \"Espaciado de columnas\",\r\n borderInset: \"Espaciado de bordes\",\r\n },\r\n mapSelector: {\r\n explanation:\r\n \"Selecciona tu casa en el mapa y ajusta el radio del círculo para cubrir completamente tu tejado.\",\r\n radius: \"Radio (metros)\",\r\n accept: \"Aceptar\",\r\n chooseOnMap: \"Seleccionar en el mapa\",\r\n switchToStandard: \"Cambiar a Mapa Estándar\",\r\n switchToSatellite: \"Cambiar a Satélite\",\r\n noAddressSelected: \"Por favor, selecciona una dirección primero\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Buscar tu dirección\",\r\n },\r\n solarSystemForm: {\r\n title: \"Configuración del sistema solar\",\r\n systemInformation: \"Información del sistema\",\r\n numberOfPanels: \"Número de paneles solares\",\r\n panelPeakPower: \"Potencia pico del panel (kW)\",\r\n totalSystemPeakPower: \"Potencia pico total del sistema (kW)\",\r\n electricityPrice: \"Precio de la electricidad (€/kWh)\",\r\n compensationRate: \"Tasa de compensación (€/kWh)\",\r\n autonomy: \"Autonomía\",\r\n totalEnergyConsumption: \"Consumo Total de Energía\",\r\n totalEnergyProduction: \"Producción Total de Energía (aproximado)\",\r\n costSavings: \"Ahorro (€/año)\",\r\n householdConsumptionTitle: \"Consumo de la casa\",\r\n consumptionProfileTitle: \"Perfil de consumo\",\r\n electricityCostsTitle: \"Costes de la electricidad\",\r\n compensationRateTitle: \"Tasa de compensación\",\r\n resultsTitle: \"Resultados\",\r\n savingsDisclaimer:\r\n \"Nota: Los ahorros se basan en el precio promedio de la electricidad en España.\",\r\n annualConsumption: \"Consumo anual (kWh)\",\r\n name: \"Nombre\",\r\n email: \"Email\",\r\n phone: \"Número de teléfono (opcional)\",\r\n nameError: \"Por favor, ingrese su nombre\",\r\n emailError:\r\n \"Por favor, ingrese una dirección de correo electrónico válida\",\r\n phoneError: \"Por favor, ingrese un número de teléfono válido\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Principalmente en casa\",\r\n mostlyAway: \"Empleo\",\r\n },\r\n chart: {\r\n consumption: \"Consumo\",\r\n production: \"Producción\",\r\n consumptionProfile: \"Perfil de consumo\",\r\n relativeConsumption: \"Consumo\",\r\n hourOfDay: \"Hora del día\",\r\n },\r\n validEmailError:\r\n \"Por favor, ingrese una dirección de correo electrónico válida\",\r\n requestOffer: \"Solicitar una oferta\",\r\n requestOfferButton: \"Solicitar oferta\",\r\n year: \"Año\",\r\n additionalComponents: {\r\n title: \"Componentes adicionales\",\r\n heatPump: \"Caldera\",\r\n electricCar: \"Coche eléctrico\",\r\n battery: \"Batería\",\r\n chargingTime: \"Hora de carga\",\r\n chargingTimeDay: \"Día (06:00 - 18:00)\",\r\n chargingTimeNight: \"Noche (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilómetros por año\",\r\n },\r\n annualPriceIncrease: \"Aumento anual del precio (%)\",\r\n costSavings20Years: \"Ahorro 20 años\",\r\n compensation20Years: \"Compensación 20 años\",\r\n monetaryBenefit20Years: \"Beneficio monetario 20 años\",\r\n approximate: \"Valor aproximado\",\r\n sending: \"Enviando...\",\r\n leadSubmitted: \"¡Su solicitud ha sido enviada exitosamente!\",\r\n leadError:\r\n \"Hubo un error al enviar su solicitud. Por favor, inténtelo de nuevo.\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Mostrar instrucciones\",\r\n hide: \"Ocultar instrucciones\",\r\n parts: {\r\n roof:\r\n \"Después de buscar y seleccionar su dirección, resalte la parte del tejado donde desea añadir paneles solares. Marque cada superficie con un polígono con la herramienta de tejado\",\r\n obstruction:\r\n \". Si tiene claraboyas u otras obstrucciones donde no desea añadir paneles solares, márquelas también con la herramienta de obstrucción\",\r\n delete:\r\n \". Puede eliminar polígonos con la herramienta de eliminación\",\r\n move:\r\n \". Si desea cambiar las esquinas de un polígono, seleccione la herramienta de movimiento\",\r\n end: \", seleccione el polígono que desea modificar y arrastre y suelte los bordes.\",\r\n },\r\n },\r\n markRoofEdge: \"Marcar borde inferior del tejado\",\r\n markAsFlatRoof: \"Marcar como tejado plano\",\r\n loading: \"Cargando\",\r\n noPolygonSelected: \"No se ha seleccionado un polígono\",\r\n noAddressSelected: \"Por favor, seleccione una dirección\",\r\n information: \"Información\",\r\n calculateSolarPanels: \"Calcular paneles solares\",\r\n panels: \"Paneles\",\r\n area: \"Área\",\r\n azimuth: \"Azimut\",\r\n pitch: \"Inclinación\",\r\n tools: {\r\n roof: {\r\n name: \"Tejado\",\r\n explanation: \"Dibuje el tejado del edificio\",\r\n ariaLabel: \"Tejado\",\r\n },\r\n obstruction: {\r\n name: \"Obstrucción\",\r\n explanation: \"Dibuje la obstrucción del edificio\",\r\n ariaLabel: \"Obstrucción\",\r\n },\r\n delete: {\r\n name: \"Eliminar\",\r\n explanation: \"Elimine el polígono seleccionado\",\r\n ariaLabel: \"Eliminar\",\r\n },\r\n move: {\r\n name: \"Mover\",\r\n explanation: \"Mueva los puntos del polígono seleccionado\",\r\n ariaLabel: \"Mover\",\r\n },\r\n undo: {\r\n name: \"Deshacer\",\r\n explanation: \"Deshaga la última acción\",\r\n ariaLabel: \"Deshacer\",\r\n },\r\n markRoofEdge: {\r\n name: \"Marcar borde inferior del tejado\",\r\n explanation: \"Marque el borde inferior del tejado\",\r\n ariaLabel: \"Marcar borde inferior del tejado\",\r\n },\r\n },\r\n toast: {\r\n undoSuccess: \"Acción deshecha exitosamente\",\r\n calculateSolarPanelsSuccess:\r\n \"Paneles solares calculados exitosamente\",\r\n markAsFlatRoofSuccess:\r\n \"Tejado marcado como plano. Por favor, seleccione un borde para alinear los paneles con el edificio.\",\r\n },\r\n tutorial: {\r\n title: \"Cómo marcar su tejado\",\r\n description:\r\n \"Use la herramienta de tejado para marcar el segmento del tejado donde desea instalar paneles solares. Haga clic en las esquinas de su tejado para crear un polígono.\",\r\n understood: \"Entendido\",\r\n markEdge: {\r\n title: \"Marcar el borde inferior del tejado\",\r\n description:\r\n \"Ahora marque el borde inferior de su tejado para ayudar a calcular la colocación óptima de los paneles solares. Haga clic en los puntos a lo largo del borde inferior de su tejado.\",\r\n understood: \"Entendido\",\r\n },\r\n additionalTools: {\r\n title: \"Herramientas adicionales disponibles\",\r\n description:\r\n \"Ahora puede añadir más segmentos de tejado usando la herramienta de tejado. Use la herramienta de obstrucción para marcar áreas donde no desea paneles solares (como claraboyas o chimeneas). La herramienta de movimiento le permite seleccionar cualquier polígono y editar sus puntos arrastrándolos.\",\r\n understood: \"Entendido\",\r\n },\r\n },\r\n },\r\n};\r\n"]}
1
+ {"version":3,"file":"spanish.js","sourceRoot":"","sources":["../../../src/utils/lang/spanish.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const es: LanguageStrings = {\r\n settings: {\r\n language: \"Idioma\",\r\n rowSpacing: \"Espaciado de filas\",\r\n columnSpacing: \"Espaciado de columnas\",\r\n borderInset: \"Espaciado de bordes\",\r\n },\r\n mapSelector: {\r\n explanation:\r\n \"Selecciona tu casa en el mapa y ajusta el radio del círculo para cubrir completamente tu tejado.\",\r\n radius: \"Radio (metros)\",\r\n accept: \"Aceptar\",\r\n chooseOnMap: \"Seleccionar en el mapa\",\r\n switchToStandard: \"Cambiar a Mapa Estándar\",\r\n switchToSatellite: \"Cambiar a Satélite\",\r\n noAddressSelected: \"Por favor, selecciona una dirección primero\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Buscar tu dirección\",\r\n },\r\n solarSystemForm: {\r\n title: \"Configuración del sistema solar\",\r\n systemInformation: \"Información del sistema\",\r\n numberOfPanels: \"Número de paneles solares\",\r\n panelPeakPower: \"Potencia pico del panel (kW)\",\r\n totalSystemPeakPower: \"Potencia pico total del sistema (kW)\",\r\n electricityPrice: \"Precio de la electricidad (€/kWh)\",\r\n compensationRate: \"Tasa de compensación (€/kWh)\",\r\n autonomy: \"Autonomía\",\r\n totalEnergyConsumption: \"Consumo Total de Energía\",\r\n totalEnergyProduction: \"Producción Total de Energía (aproximado)\",\r\n costSavings: \"Ahorro (€/año)\",\r\n householdConsumptionTitle: \"Consumo de la casa\",\r\n consumptionProfileTitle: \"Perfil de consumo\",\r\n electricityCostsTitle: \"Costes de la electricidad\",\r\n compensationRateTitle: \"Tasa de compensación\",\r\n resultsTitle: \"Resultados\",\r\n savingsDisclaimer:\r\n \"Nota: Los ahorros se basan en el precio promedio de la electricidad en España.\",\r\n annualConsumption: \"Consumo anual (kWh)\",\r\n name: \"Nombre\",\r\n email: \"Email\",\r\n phone: \"Número de teléfono (opcional)\",\r\n nameError: \"Por favor, ingrese su nombre\",\r\n emailError:\r\n \"Por favor, ingrese una dirección de correo electrónico válida\",\r\n phoneError: \"Por favor, ingrese un número de teléfono válido\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Principalmente en casa\",\r\n mostlyAway: \"Empleo\",\r\n },\r\n chart: {\r\n consumption: \"Consumo\",\r\n production: \"Producción\",\r\n consumptionProfile: \"Perfil de consumo\",\r\n relativeConsumption: \"Consumo\",\r\n hourOfDay: \"Hora del día\",\r\n },\r\n validEmailError:\r\n \"Por favor, ingrese una dirección de correo electrónico válida\",\r\n requestOffer: \"Solicitar una oferta\",\r\n requestOfferButton: \"Solicitar oferta\",\r\n year: \"Año\",\r\n additionalComponents: {\r\n title: \"Componentes adicionales\",\r\n heatPump: \"Caldera\",\r\n electricCar: \"Coche eléctrico\",\r\n battery: \"Batería\",\r\n chargingTime: \"Hora de carga\",\r\n chargingTimeDay: \"Día (06:00 - 18:00)\",\r\n chargingTimeNight: \"Noche (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilómetros por año\",\r\n },\r\n annualPriceIncrease: \"Aumento anual del precio (%)\",\r\n costSavings20Years: \"Ahorro 20 años\",\r\n compensation20Years: \"Compensación 20 años\",\r\n monetaryBenefit20Years: \"Beneficio monetario 20 años\",\r\n approximate: \"Valor aproximado\",\r\n sending: \"Enviando...\",\r\n leadSubmitted: \"¡Su solicitud ha sido enviada exitosamente!\",\r\n leadError:\r\n \"Hubo un error al enviar su solicitud. Por favor, inténtelo de nuevo.\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Mostrar instrucciones\",\r\n hide: \"Ocultar instrucciones\",\r\n parts: {\r\n roof:\r\n \"Después de buscar y seleccionar su dirección, resalte la parte del tejado donde desea añadir paneles solares. Marque cada superficie con un polígono con la herramienta de tejado\",\r\n obstruction:\r\n \". Si tiene claraboyas u otras obstrucciones donde no desea añadir paneles solares, márquelas también con la herramienta de obstrucción\",\r\n delete:\r\n \". Puede eliminar polígonos con la herramienta de eliminación\",\r\n move:\r\n \". Si desea cambiar las esquinas de un polígono, seleccione la herramienta de movimiento\",\r\n end: \", seleccione el polígono que desea modificar y arrastre y suelte los bordes.\",\r\n },\r\n },\r\n markRoofEdge: \"Marcar borde inferior del tejado\",\r\n markAsFlatRoof: \"Marcar como tejado plano\",\r\n loading: \"Cargando\",\r\n noPolygonSelected: \"No se ha seleccionado un polígono\",\r\n noAddressSelected: \"Por favor, seleccione una dirección\",\r\n information: \"Información\",\r\n calculateSolarPanels: \"Calcular paneles solares\",\r\n panels: \"Paneles\",\r\n area: \"Área\",\r\n azimuth: \"Azimut\",\r\n pitch: \"Inclinación\",\r\n imageLoadError:\r\n \"Ocurrió un error al cargar la imagen satelital. Por favor, inténtelo de nuevo.\",\r\n tools: {\r\n roof: {\r\n name: \"Tejado\",\r\n explanation: \"Dibuje el tejado del edificio\",\r\n ariaLabel: \"Tejado\",\r\n },\r\n obstruction: {\r\n name: \"Obstrucción\",\r\n explanation: \"Dibuje la obstrucción del edificio\",\r\n ariaLabel: \"Obstrucción\",\r\n },\r\n delete: {\r\n name: \"Eliminar\",\r\n explanation: \"Elimine el polígono seleccionado\",\r\n ariaLabel: \"Eliminar\",\r\n },\r\n move: {\r\n name: \"Mover\",\r\n explanation: \"Mueva los puntos del polígono seleccionado\",\r\n ariaLabel: \"Mover\",\r\n },\r\n undo: {\r\n name: \"Deshacer\",\r\n explanation: \"Deshaga la última acción\",\r\n ariaLabel: \"Deshacer\",\r\n },\r\n markRoofEdge: {\r\n name: \"Marcar borde inferior del tejado\",\r\n explanation: \"Marque el borde inferior del tejado\",\r\n ariaLabel: \"Marcar borde inferior del tejado\",\r\n },\r\n },\r\n toast: {\r\n undoSuccess: \"Acción deshecha exitosamente\",\r\n calculateSolarPanelsSuccess:\r\n \"Paneles solares calculados exitosamente\",\r\n markAsFlatRoofSuccess:\r\n \"Tejado marcado como plano. Por favor, seleccione un borde para alinear los paneles con el edificio.\",\r\n },\r\n tutorial: {\r\n title: \"Cómo marcar su tejado\",\r\n description:\r\n \"Use la herramienta de tejado para marcar el segmento del tejado donde desea instalar paneles solares. Haga clic en las esquinas de su tejado para crear un polígono.\",\r\n understood: \"Entendido\",\r\n markEdge: {\r\n title: \"Marcar el borde inferior del tejado\",\r\n description:\r\n \"Ahora marque el borde inferior de su tejado para ayudar a calcular la colocación óptima de los paneles solares. Haga clic en los puntos a lo largo del borde inferior de su tejado.\",\r\n understood: \"Entendido\",\r\n },\r\n additionalTools: {\r\n title: \"Herramientas adicionales disponibles\",\r\n description:\r\n \"Ahora puede añadir más segmentos de tejado usando la herramienta de tejado. Use la herramienta de obstrucción para marcar áreas donde no desea paneles solares (como claraboyas o chimeneas). La herramienta de movimiento le permite seleccionar cualquier polígono y editar sus puntos arrastrándolos.\",\r\n understood: \"Entendido\",\r\n },\r\n },\r\n },\r\n};\r\n"]}
@@ -59,6 +59,7 @@ export async function downloadGeoTIFF(url, apiKey) {
59
59
  }
60
60
  // [END solar_api_download_geotiff]
61
61
  export async function getBuildingImages(latitude, longitude, apiKey, radiusMeters = 15) {
62
+ console.log("getBuildingImages", latitude, longitude, radiusMeters);
62
63
  if (latitude === 0 || longitude === 0) {
63
64
  return null;
64
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"solar.js","sourceRoot":"","sources":["../../src/utils/solar.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n BuildingInsightsResponse,\r\n DataLayersResponse,\r\n GeoTiff,\r\n} from \"harmonia-types\";\r\n\r\n// import { fromArrayBuffer, TypedArray } from \"../geotiff\";\r\nimport { fromArrayBuffer, TypedArray } from \"geotiff\";\r\nimport * as geokeysToProj4 from \"geotiff-geokeys-to-proj4\";\r\nimport proj4 from \"proj4\";\r\n\r\n/**\r\n * Downloads the pixel values for a Data Layer URL from the Solar API.\r\n *\r\n * @param {string} url URL from the Data Layers response.\r\n * @param {string} apiKey Google Cloud API key.\r\n * @return {Promise<GeoTiff>} Pixel values with shape and lat/lon bounds.\r\n */\r\nexport async function downloadGeoTIFF(url: string, apiKey: string) { //}: Promise<GeoTiff> {\r\n // Include your Google Cloud API key in the Data Layers URL.\r\n const solarUrl = url.includes(\"solar.googleapis.com\")\r\n ? url + `&key=${apiKey}`\r\n : url;\r\n const response = await fetch(solarUrl);\r\n if (response.status != 200) {\r\n const error = await response.json();\r\n console.error(`downloadGeoTIFF failed: ${url}\\n`, error);\r\n throw error;\r\n }\r\n\r\n // Get the GeoTIFF rasters, which are the pixel values for each band.\r\n const arrayBuffer = await response.arrayBuffer();\r\n const tiff = await fromArrayBuffer(arrayBuffer);\r\n const image = await tiff.getImage();\r\n const rasters = await image.readRasters();\r\n\r\n // Reproject the bounding box into lat/lon coordinates.\r\n const geoKeys = image.getGeoKeys();\r\n const projObj = geokeysToProj4.toProj4(geoKeys);\r\n const projection = proj4(projObj.proj4, \"WGS84\");\r\n const box = image.getBoundingBox();\r\n const sw = projection.forward({\r\n x: box[0] * projObj.coordinatesConversionParameters.x,\r\n y: box[1] * projObj.coordinatesConversionParameters.y,\r\n });\r\n const ne = projection.forward({\r\n x: box[2] * projObj.coordinatesConversionParameters.x,\r\n y: box[3] * projObj.coordinatesConversionParameters.y,\r\n });\r\n\r\n return {\r\n // Width and height of the data layer image in pixels.\r\n // Used to know the row and column since Javascript\r\n // stores the values as flat arrays.\r\n width: rasters.width,\r\n height: rasters.height,\r\n // Each raster reprents the pixel values of each band.\r\n // We convert them from `geotiff.TypedArray`s into plain\r\n // Javascript arrays to make them easier to process.\r\n rasters: [...Array(rasters.length).keys()].map((i) =>\r\n Array.from(rasters[i] as TypedArray)\r\n ),\r\n // The bounding box as a lat/lon rectangle.\r\n bounds: {\r\n north: ne.y,\r\n south: sw.y,\r\n east: ne.x,\r\n west: sw.x,\r\n },\r\n };\r\n}\r\n// [END solar_api_download_geotiff]\r\n\r\nexport async function getBuildingImages(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n radiusMeters: number = 15,\r\n) {\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n radius_meters: (radiusMeters + 2).toString(),\r\n required_quality: \"LOW\",\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/dataLayers:get?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n const parsedResponse: DataLayersResponse = await response.json();\r\n\r\n const rgbTiff = await downloadGeoTIFF(\r\n parsedResponse.rgbUrl,\r\n apiKey,\r\n );\r\n\r\n return rgbTiff;\r\n } catch (error) {\r\n console.error(\"Error fetching building images:\", error);\r\n return null;\r\n }\r\n}\r\n\r\nexport async function fetchSolarData(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n) {\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const contentType = response.headers.get(\"content-type\");\r\n if (!contentType || !contentType.includes(\"application/json\")) {\r\n const text = await response.text();\r\n console.error(\r\n \"Unexpected content type:\",\r\n contentType,\r\n \"Response:\",\r\n text,\r\n );\r\n return null;\r\n }\r\n\r\n const rawData: BuildingInsightsResponse = await response.json();\r\n return rawData;\r\n } catch (error) {\r\n console.error(\"Error fetching solar data:\", error);\r\n if (\r\n error instanceof TypeError &&\r\n error.message === \"Failed to fetch\"\r\n ) {\r\n throw new Error(\"Unable to connect to the solar data API.\");\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\nexport function getPixelInMeters(rgbTiff: GeoTiff): number {\r\n const latDiff = rgbTiff.bounds.north - rgbTiff.bounds.south;\r\n // const lngDiff = rgbTiff.bounds.east - rgbTiff.bounds.west;\r\n // const pixelWidth = rgbTiff.width;\r\n const pixelHeight = rgbTiff.height;\r\n const pixelInMeters = latDiff * 111320 / pixelHeight;\r\n // const latAvg = (rgbTiff.bounds.north + rgbTiff.bounds.south) / 2;\r\n // const pixelInMetersLng = lngDiff * 111320 * Math.cos(latAvg * Math.PI / 180) / pixelWidth;\r\n return pixelInMeters;\r\n}\r\n"]}
1
+ {"version":3,"file":"solar.js","sourceRoot":"","sources":["../../src/utils/solar.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n BuildingInsightsResponse,\r\n DataLayersResponse,\r\n GeoTiff,\r\n} from \"harmonia-types\";\r\n\r\n// import { fromArrayBuffer, TypedArray } from \"../geotiff\";\r\nimport { fromArrayBuffer, TypedArray } from \"geotiff\";\r\nimport * as geokeysToProj4 from \"geotiff-geokeys-to-proj4\";\r\nimport proj4 from \"proj4\";\r\n\r\n/**\r\n * Downloads the pixel values for a Data Layer URL from the Solar API.\r\n *\r\n * @param {string} url URL from the Data Layers response.\r\n * @param {string} apiKey Google Cloud API key.\r\n * @return {Promise<GeoTiff>} Pixel values with shape and lat/lon bounds.\r\n */\r\nexport async function downloadGeoTIFF(url: string, apiKey: string) { //}: Promise<GeoTiff> {\r\n // Include your Google Cloud API key in the Data Layers URL.\r\n const solarUrl = url.includes(\"solar.googleapis.com\")\r\n ? url + `&key=${apiKey}`\r\n : url;\r\n const response = await fetch(solarUrl);\r\n if (response.status != 200) {\r\n const error = await response.json();\r\n console.error(`downloadGeoTIFF failed: ${url}\\n`, error);\r\n throw error;\r\n }\r\n\r\n // Get the GeoTIFF rasters, which are the pixel values for each band.\r\n const arrayBuffer = await response.arrayBuffer();\r\n const tiff = await fromArrayBuffer(arrayBuffer);\r\n const image = await tiff.getImage();\r\n const rasters = await image.readRasters();\r\n\r\n // Reproject the bounding box into lat/lon coordinates.\r\n const geoKeys = image.getGeoKeys();\r\n const projObj = geokeysToProj4.toProj4(geoKeys);\r\n const projection = proj4(projObj.proj4, \"WGS84\");\r\n const box = image.getBoundingBox();\r\n const sw = projection.forward({\r\n x: box[0] * projObj.coordinatesConversionParameters.x,\r\n y: box[1] * projObj.coordinatesConversionParameters.y,\r\n });\r\n const ne = projection.forward({\r\n x: box[2] * projObj.coordinatesConversionParameters.x,\r\n y: box[3] * projObj.coordinatesConversionParameters.y,\r\n });\r\n\r\n return {\r\n // Width and height of the data layer image in pixels.\r\n // Used to know the row and column since Javascript\r\n // stores the values as flat arrays.\r\n width: rasters.width,\r\n height: rasters.height,\r\n // Each raster reprents the pixel values of each band.\r\n // We convert them from `geotiff.TypedArray`s into plain\r\n // Javascript arrays to make them easier to process.\r\n rasters: [...Array(rasters.length).keys()].map((i) =>\r\n Array.from(rasters[i] as TypedArray)\r\n ),\r\n // The bounding box as a lat/lon rectangle.\r\n bounds: {\r\n north: ne.y,\r\n south: sw.y,\r\n east: ne.x,\r\n west: sw.x,\r\n },\r\n };\r\n}\r\n// [END solar_api_download_geotiff]\r\n\r\nexport async function getBuildingImages(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n radiusMeters: number = 15,\r\n) {\r\n console.log(\"getBuildingImages\", latitude, longitude, radiusMeters);\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n radius_meters: (radiusMeters + 2).toString(),\r\n required_quality: \"LOW\",\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/dataLayers:get?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n const parsedResponse: DataLayersResponse = await response.json();\r\n\r\n const rgbTiff = await downloadGeoTIFF(\r\n parsedResponse.rgbUrl,\r\n apiKey,\r\n );\r\n\r\n return rgbTiff;\r\n } catch (error) {\r\n console.error(\"Error fetching building images:\", error);\r\n return null;\r\n }\r\n}\r\n\r\nexport async function fetchSolarData(\r\n latitude: number,\r\n longitude: number,\r\n apiKey: string,\r\n) {\r\n if (latitude === 0 || longitude === 0) {\r\n return null;\r\n }\r\n try {\r\n const args = {\r\n \"location.latitude\": latitude.toFixed(5),\r\n \"location.longitude\": longitude.toFixed(5),\r\n };\r\n const params = new URLSearchParams({\r\n ...args,\r\n key: apiKey,\r\n });\r\n const response = await fetch(\r\n `https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`,\r\n );\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text();\r\n throw new Error(\r\n `HTTP error! status: ${response.status}, body: ${errorText}`,\r\n );\r\n }\r\n\r\n const contentType = response.headers.get(\"content-type\");\r\n if (!contentType || !contentType.includes(\"application/json\")) {\r\n const text = await response.text();\r\n console.error(\r\n \"Unexpected content type:\",\r\n contentType,\r\n \"Response:\",\r\n text,\r\n );\r\n return null;\r\n }\r\n\r\n const rawData: BuildingInsightsResponse = await response.json();\r\n return rawData;\r\n } catch (error) {\r\n console.error(\"Error fetching solar data:\", error);\r\n if (\r\n error instanceof TypeError &&\r\n error.message === \"Failed to fetch\"\r\n ) {\r\n throw new Error(\"Unable to connect to the solar data API.\");\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\nexport function getPixelInMeters(rgbTiff: GeoTiff): number {\r\n const latDiff = rgbTiff.bounds.north - rgbTiff.bounds.south;\r\n // const lngDiff = rgbTiff.bounds.east - rgbTiff.bounds.west;\r\n // const pixelWidth = rgbTiff.width;\r\n const pixelHeight = rgbTiff.height;\r\n const pixelInMeters = latDiff * 111320 / pixelHeight;\r\n // const latAvg = (rgbTiff.bounds.north + rgbTiff.bounds.south) / 2;\r\n // const pixelInMetersLng = lngDiff * 111320 * Math.cos(latAvg * Math.PI / 180) / pixelWidth;\r\n return pixelInMeters;\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
 
2
2
  if (typeof global === "undefined") { var global = globalThis || window || self; }
3
- import { E as EraserIcon$1, d as defineCustomElement$1 } from './p-CBoVsYa-.js';
3
+ import { E as EraserIcon$1, d as defineCustomElement$1 } from './p-Cu7ckMQp.js';
4
4
 
5
5
  const EraserIcon = EraserIcon$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 { H as HouseIcon$1, d as defineCustomElement$1 } from './p-D3H70xDr.js';
3
+ import { H as HouseIcon$1, d as defineCustomElement$1 } from './p-BcBvva_X.js';
4
4
 
5
5
  const HouseIcon = HouseIcon$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 { I as Icon, d as defineCustomElement$1 } from './p-DPHbqum8.js';
3
+ import { I as Icon, d as defineCustomElement$1 } from './p-CpGXfh7Q.js';
4
4
 
5
5
  const IconSelector = Icon;
6
6
  const defineCustomElement = defineCustomElement$1;
@@ -2,7 +2,7 @@
2
2
  if (typeof global === "undefined") { var global = globalThis || window || self; }
3
3
  import { p as proxyCustomElement, H, h } from './index.js';
4
4
 
5
- const outputCss = "/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-md: 28rem;\n --container-2xl: 42rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-lg: 0.5rem;\n --radius-4xl: 2rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-primary: hsl(41 51% 90%);\n --color-primary-foreground: hsl(0 0% 0%);\n --color-secondary: hsl(28 100% 8%);\n --color-secondary-foreground: hsl(0 0% 100%);\n --color-tertiary: hsl(28 100% 29%);\n --color-tertiary-foreground: hsl(0 0% 100%);\n --color-muted: hsl(0 0% 100%);\n --color-muted-foreground: hsl(0 0% 0%);\n --color-error: hsl(0 100% 50%);\n --color-error-foreground: hsl(0 0% 100%);\n --color-surface: hsl(0 0% 88%);\n --color-surface-hover: hsl(0 0% 82%);\n --color-surface-active: hsl(0 0% 64%);\n --color-text-muted: hsl(0 0% 45%);\n --color-text-secondary: hsl(0 0% 55%);\n --color-text-placeholder: hsl(0 0% 73%);\n --color-border: hsl(0 0% 82%);\n --color-border-light: hsl(0 0% 93%);\n --color-success: hsl(142 76% 36%);\n --color-info: hsl(221 83% 53%);\n --color-hover: hsl(0 0% 88%);\n --color-hover-dark: hsl(28 100% 8%);\n --color-overlay: rgba(0, 0, 0, 0.24);\n --color-tooltip: hsl(0 0% 13%);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1 {\n left: calc(var(--spacing) * 1);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-50 {\n z-index: 50;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-auto {\n margin: auto;\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .table {\n display: table;\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-full {\n height: 100%;\n }\n .max-h-full {\n max-height: 100%;\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-full {\n width: 100%;\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .flex-1 {\n flex: 1;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-2 {\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-95 {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-100 {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .resize {\n resize: both;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-4xl {\n border-radius: var(--radius-4xl);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-border {\n border-color: var(--color-border);\n }\n .border-current {\n border-color: currentcolor;\n }\n .border-error {\n border-color: var(--color-error);\n }\n .border-error\\/20 {\n border-color: color-mix(in srgb, hsl(0 100% 50%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-error) 20%, transparent);\n }\n }\n .border-info {\n border-color: var(--color-info);\n }\n .border-info\\/20 {\n border-color: color-mix(in srgb, hsl(221 83% 53%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-info) 20%, transparent);\n }\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-secondary {\n border-color: var(--color-secondary);\n }\n .border-success {\n border-color: var(--color-success);\n }\n .border-success\\/20 {\n border-color: color-mix(in srgb, hsl(142 76% 36%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-success) 20%, transparent);\n }\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-error {\n background-color: var(--color-error);\n }\n .bg-error\\/10 {\n background-color: color-mix(in srgb, hsl(0 100% 50%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-error) 10%, transparent);\n }\n }\n .bg-error\\/90 {\n background-color: color-mix(in srgb, hsl(0 100% 50%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-error) 90%, transparent);\n }\n }\n .bg-info {\n background-color: var(--color-info);\n }\n .bg-info\\/90 {\n background-color: color-mix(in srgb, hsl(221 83% 53%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-info) 90%, transparent);\n }\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .bg-overlay {\n background-color: var(--color-overlay);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-secondary {\n background-color: var(--color-secondary);\n }\n .bg-success {\n background-color: var(--color-success);\n }\n .bg-success\\/10 {\n background-color: color-mix(in srgb, hsl(142 76% 36%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-success) 10%, transparent);\n }\n }\n .bg-success\\/90 {\n background-color: color-mix(in srgb, hsl(142 76% 36%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-success) 90%, transparent);\n }\n }\n .bg-surface {\n background-color: var(--color-surface);\n }\n .bg-tertiary {\n background-color: var(--color-tertiary);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .object-contain {\n object-fit: contain;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-7 {\n padding-top: calc(var(--spacing) * 7);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-10 {\n padding-left: calc(var(--spacing) * 10);\n }\n .text-center {\n text-align: center;\n }\n .text-right {\n text-align: right;\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .text-error {\n color: var(--color-error);\n }\n .text-error-foreground {\n color: var(--color-error-foreground);\n }\n .text-muted {\n color: var(--color-muted);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-secondary {\n color: var(--color-secondary);\n }\n .text-success {\n color: var(--color-success);\n }\n .text-text-muted {\n color: var(--color-text-muted);\n }\n .text-text-secondary {\n color: var(--color-text-secondary);\n }\n .text-white {\n color: var(--color-white);\n }\n .underline {\n text-decoration-line: underline;\n }\n .accent-tertiary {\n accent-color: var(--color-tertiary);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .hover\\:bg-hover {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-hover);\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n }\n }\n }\n .hover\\:bg-overlay {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-overlay);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(28 100% 8%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-surface-hover {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-surface-hover);\n }\n }\n }\n .hover\\:bg-tertiary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-tertiary);\n }\n }\n }\n .hover\\:bg-tertiary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(28 100% 29%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-tertiary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-text-secondary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-text-secondary);\n }\n }\n }\n .focus\\:border-2 {\n &:focus {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n }\n .focus\\:border-secondary {\n &:focus {\n border-color: var(--color-secondary);\n }\n }\n .focus\\:border-transparent {\n &:focus {\n border-color: transparent;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-secondary {\n &:focus {\n --tw-ring-color: var(--color-secondary);\n }\n }\n .focus\\:ring-tertiary {\n &:focus {\n --tw-ring-color: var(--color-tertiary);\n }\n }\n .focus\\:ring-offset-0 {\n &:focus {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .sm\\:mt-0 {\n @media (width >= 40rem) {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .sm\\:flex-3 {\n @media (width >= 40rem) {\n flex: 3;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:items-center {\n @media (width >= 40rem) {\n align-items: center;\n }\n }\n .sm\\:gap-4 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-runnable-track\\]\\:rounded-full {\n &::-webkit-slider-runnable-track {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-runnable-track\\]\\:bg-black\\/25 {\n &::-webkit-slider-runnable-track {\n background-color: color-mix(in srgb, #000 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 25%, transparent);\n }\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:h-\\[10px\\] {\n &::-webkit-slider-thumb {\n height: 10px;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:w-\\[10px\\] {\n &::-webkit-slider-thumb {\n width: 10px;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:appearance-none {\n &::-webkit-slider-thumb {\n appearance: none;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:rounded-full {\n &::-webkit-slider-thumb {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:bg-muted {\n &::-webkit-slider-thumb {\n background-color: var(--color-muted);\n }\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n";
5
+ const outputCss = "/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-md: 28rem;\n --container-2xl: 42rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-lg: 0.5rem;\n --radius-4xl: 2rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-primary: hsl(41 51% 90%);\n --color-primary-foreground: hsl(0 0% 0%);\n --color-secondary: hsl(28 100% 8%);\n --color-secondary-foreground: hsl(0 0% 100%);\n --color-tertiary: hsl(28 100% 29%);\n --color-tertiary-foreground: hsl(0 0% 100%);\n --color-muted: hsl(0 0% 100%);\n --color-muted-foreground: hsl(0 0% 0%);\n --color-error: hsl(0 100% 50%);\n --color-error-foreground: hsl(0 0% 100%);\n --color-surface: hsl(0 0% 88%);\n --color-surface-hover: hsl(0 0% 82%);\n --color-surface-active: hsl(0 0% 64%);\n --color-text-muted: hsl(0 0% 45%);\n --color-text-secondary: hsl(0 0% 55%);\n --color-text-placeholder: hsl(0 0% 73%);\n --color-border: hsl(0 0% 82%);\n --color-border-light: hsl(0 0% 93%);\n --color-success: hsl(142 76% 36%);\n --color-info: hsl(221 83% 53%);\n --color-hover: hsl(0 0% 88%);\n --color-hover-dark: hsl(28 100% 8%);\n --color-overlay: rgba(0, 0, 0, 0.24);\n --color-tooltip: hsl(0 0% 13%);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1 {\n left: calc(var(--spacing) * 1);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-50 {\n z-index: 50;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-auto {\n margin: auto;\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .table {\n display: table;\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-full {\n height: 100%;\n }\n .max-h-full {\n max-height: 100%;\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-full {\n width: 100%;\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .flex-1 {\n flex: 1;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-2 {\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-95 {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-100 {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .resize {\n resize: both;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-4xl {\n border-radius: var(--radius-4xl);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-border {\n border-color: var(--color-border);\n }\n .border-current {\n border-color: currentcolor;\n }\n .border-error {\n border-color: var(--color-error);\n }\n .border-error\\/20 {\n border-color: color-mix(in srgb, hsl(0 100% 50%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-error) 20%, transparent);\n }\n }\n .border-info {\n border-color: var(--color-info);\n }\n .border-info\\/20 {\n border-color: color-mix(in srgb, hsl(221 83% 53%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-info) 20%, transparent);\n }\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-secondary {\n border-color: var(--color-secondary);\n }\n .border-success {\n border-color: var(--color-success);\n }\n .border-success\\/20 {\n border-color: color-mix(in srgb, hsl(142 76% 36%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-success) 20%, transparent);\n }\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-error {\n background-color: var(--color-error);\n }\n .bg-error\\/10 {\n background-color: color-mix(in srgb, hsl(0 100% 50%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-error) 10%, transparent);\n }\n }\n .bg-error\\/90 {\n background-color: color-mix(in srgb, hsl(0 100% 50%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-error) 90%, transparent);\n }\n }\n .bg-info {\n background-color: var(--color-info);\n }\n .bg-info\\/90 {\n background-color: color-mix(in srgb, hsl(221 83% 53%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-info) 90%, transparent);\n }\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .bg-overlay {\n background-color: var(--color-overlay);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-secondary {\n background-color: var(--color-secondary);\n }\n .bg-success {\n background-color: var(--color-success);\n }\n .bg-success\\/10 {\n background-color: color-mix(in srgb, hsl(142 76% 36%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-success) 10%, transparent);\n }\n }\n .bg-success\\/90 {\n background-color: color-mix(in srgb, hsl(142 76% 36%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-success) 90%, transparent);\n }\n }\n .bg-surface {\n background-color: var(--color-surface);\n }\n .bg-tertiary {\n background-color: var(--color-tertiary);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .object-contain {\n object-fit: contain;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-7 {\n padding-top: calc(var(--spacing) * 7);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-10 {\n padding-left: calc(var(--spacing) * 10);\n }\n .text-center {\n text-align: center;\n }\n .text-right {\n text-align: right;\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .text-error {\n color: var(--color-error);\n }\n .text-error-foreground {\n color: var(--color-error-foreground);\n }\n .text-muted {\n color: var(--color-muted);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-secondary {\n color: var(--color-secondary);\n }\n .text-success {\n color: var(--color-success);\n }\n .text-text-muted {\n color: var(--color-text-muted);\n }\n .text-text-secondary {\n color: var(--color-text-secondary);\n }\n .text-white {\n color: var(--color-white);\n }\n .underline {\n text-decoration-line: underline;\n }\n .accent-tertiary {\n accent-color: var(--color-tertiary);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .hover\\:bg-hover {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-hover);\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n }\n }\n }\n .hover\\:bg-overlay {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-overlay);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(28 100% 8%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-surface-hover {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-surface-hover);\n }\n }\n }\n .hover\\:bg-tertiary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-tertiary);\n }\n }\n }\n .hover\\:bg-tertiary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(28 100% 29%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-tertiary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-text-secondary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-text-secondary);\n }\n }\n }\n .focus\\:border-2 {\n &:focus {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n }\n .focus\\:border-secondary {\n &:focus {\n border-color: var(--color-secondary);\n }\n }\n .focus\\:border-transparent {\n &:focus {\n border-color: transparent;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-secondary {\n &:focus {\n --tw-ring-color: var(--color-secondary);\n }\n }\n .focus\\:ring-tertiary {\n &:focus {\n --tw-ring-color: var(--color-tertiary);\n }\n }\n .focus\\:ring-offset-0 {\n &:focus {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .sm\\:mt-0 {\n @media (width >= 40rem) {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .sm\\:flex-3 {\n @media (width >= 40rem) {\n flex: 3;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:items-center {\n @media (width >= 40rem) {\n align-items: center;\n }\n }\n .sm\\:gap-4 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:pl-2 {\n @media (width >= 48rem) {\n padding-left: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-runnable-track\\]\\:rounded-full {\n &::-webkit-slider-runnable-track {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-runnable-track\\]\\:bg-black\\/25 {\n &::-webkit-slider-runnable-track {\n background-color: color-mix(in srgb, #000 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 25%, transparent);\n }\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:h-\\[10px\\] {\n &::-webkit-slider-thumb {\n height: 10px;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:w-\\[10px\\] {\n &::-webkit-slider-thumb {\n width: 10px;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:appearance-none {\n &::-webkit-slider-thumb {\n appearance: none;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:rounded-full {\n &::-webkit-slider-thumb {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:bg-muted {\n &::-webkit-slider-thumb {\n background-color: var(--color-muted);\n }\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n";
6
6
 
7
7
  const LoadingWidget$1 = /*@__PURE__*/ proxyCustomElement(class LoadingWidget extends H {
8
8
  constructor() {
@@ -10,7 +10,7 @@ const LoadingWidget$1 = /*@__PURE__*/ proxyCustomElement(class LoadingWidget ext
10
10
  this.__registerHost();
11
11
  }
12
12
  render() {
13
- return (h("div", { key: '1acecea39dba1a012e6bb35b4b17f3e40aa0e8fc', class: "absolute flex items-center justify-center bg-muted bg-opacity-75 z-20 pt-7 rounded-4xl" }, h("div", { key: '1bc46dbd17c8e6ce7468876a9534c672cc198dee', class: "animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-secondary" })));
13
+ return (h("div", { key: '60316e73e9161a81e299e5e0632fc83c30d3fc15', class: "absolute flex items-center justify-center bg-muted bg-opacity-75 z-20 pt-7 rounded-4xl" }, h("div", { key: 'f8edb698475d859fe07e53efe8e66a42e66dba29', class: "animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-secondary" })));
14
14
  }
15
15
  static get style() { return outputCss; }
16
16
  }, [0, "loading-widget"]);