diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 067935f..0000000 --- a/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "gallery", - "lockfileVersion": 2, - "requires": true, - "packages": {} -} diff --git a/package.json b/package.json deleted file mode 100644 index 0967ef4..0000000 --- a/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/static/package-lock.json b/static/package-lock.json index 297b938..1b5ae32 100644 --- a/static/package-lock.json +++ b/static/package-lock.json @@ -15,6 +15,7 @@ "flag-icons": "^7.5.0" }, "devDependencies": { + "@types/bootstrap": "^5.2.11", "@types/node": "^26.1.0", "copy-webpack-plugin": "^14.0.0", "css-loader": "^7.1.4", @@ -435,6 +436,15 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, + "node_modules/@types/bootstrap": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.11.tgz", + "integrity": "sha512-69ykbLiNzQxi6Q/y/aYJLrlzI5QkLQjhIYW2U+cxujBxAmaBtmXKtxnFes59Ttfpt936as6xJU0dYnmVpcwIwg==", + "dev": true, + "dependencies": { + "@popperjs/core": "^2.9.2" + } + }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", diff --git a/static/package.json b/static/package.json index d867f2e..050a116 100644 --- a/static/package.json +++ b/static/package.json @@ -14,6 +14,7 @@ "flag-icons": "^7.5.0" }, "devDependencies": { + "@types/bootstrap": "^5.2.11", "@types/node": "^26.1.0", "copy-webpack-plugin": "^14.0.0", "css-loader": "^7.1.4", diff --git a/static/src/index.ts b/static/src/index.ts index ad7f9db..94fa0cb 100644 --- a/static/src/index.ts +++ b/static/src/index.ts @@ -1,7 +1,6 @@ import * as bootstrap from "bootstrap"; import "./components"; import "./language"; -//import "./main.scss"; import "./theme"; import "./weather/weather"; import "./schedule/schedule"; diff --git a/static/src/lib/weather-icons.scss b/static/src/lib/weather-icons.scss new file mode 100644 index 0000000..3e4440e --- /dev/null +++ b/static/src/lib/weather-icons.scss @@ -0,0 +1,3 @@ +@use "./weather-icons/sass/weather-icons" with ( + $weather-icons-path: "weather-icons/icons" +); diff --git a/static/src/lib/weather-icons/build.py b/static/src/lib/weather-icons/build.py deleted file mode 100644 index 6ed1a8c..0000000 --- a/static/src/lib/weather-icons/build.py +++ /dev/null @@ -1,22 +0,0 @@ -from pathlib import Path -from string import Template - -LIST_ITEM = Template( - """.$name { - mask-image: url(./svg/$name.svg); -} -""" -) - - -def generate(): - work_dir = Path(__file__).parent - data = "" - for item in (work_dir / "svg").glob("*.svg"): - data += LIST_ITEM.substitute({"name": item.stem}) - target = work_dir / "classes-list.scss" - target.write_text(data) - - -if __name__ == "__main__": - generate() diff --git a/static/src/lib/weather-icons/classes-list.scss b/static/src/lib/weather-icons/classes-list.scss deleted file mode 100644 index 7f05c51..0000000 --- a/static/src/lib/weather-icons/classes-list.scss +++ /dev/null @@ -1,93 +0,0 @@ -.wi-day-snow { - mask-image: url(./svg/wi-day-snow.svg); -} -.wi-rain-mix { - mask-image: url(./svg/wi-rain-mix.svg); -} -.wi-thunderstorm { - mask-image: url(./svg/wi-thunderstorm.svg); -} -.wi-hail { - mask-image: url(./svg/wi-hail.svg); -} -.wi-day-rain { - mask-image: url(./svg/wi-day-rain.svg); -} -.wi-cloudy { - mask-image: url(./svg/wi-cloudy.svg); -} -.wi-day-hail { - mask-image: url(./svg/wi-day-hail.svg); -} -.wi-night-clear { - mask-image: url(./svg/wi-night-clear.svg); -} -.wi-day-cloudy { - mask-image: url(./svg/wi-day-cloudy.svg); -} -.wi-day-storm-showers { - mask-image: url(./svg/wi-day-storm-showers.svg); -} -.wi-lightning { - mask-image: url(./svg/wi-lightning.svg); -} -.wi-day-rain-mix { - mask-image: url(./svg/wi-day-rain-mix.svg); -} -.wi-day-showers { - mask-image: url(./svg/wi-day-showers.svg); -} -.wi-storm-showers { - mask-image: url(./svg/wi-storm-showers.svg); -} -.wi-snow { - mask-image: url(./svg/wi-snow.svg); -} -.wi-cloud { - mask-image: url(./svg/wi-cloud.svg); -} -.wi-night-alt-snow { - mask-image: url(./svg/wi-night-alt-snow.svg); -} -.wi-night-alt-lightning { - mask-image: url(./svg/wi-night-alt-lightning.svg); -} -.wi-day-sunny { - mask-image: url(./svg/wi-day-sunny.svg); -} -.wi-night-alt-hail { - mask-image: url(./svg/wi-night-alt-hail.svg); -} -.wi-night-alt-cloudy { - mask-image: url(./svg/wi-night-alt-cloudy.svg); -} -.wi-night-alt-storm-showers { - mask-image: url(./svg/wi-night-alt-storm-showers.svg); -} -.wi-day-thunderstorm { - mask-image: url(./svg/wi-day-thunderstorm.svg); -} -.wi-wind-deg { - mask-image: url(./svg/wi-wind-deg.svg); -} -.wi-showers { - mask-image: url(./svg/wi-showers.svg); -} -.wi-night-alt-rain-mix { - mask-image: url(./svg/wi-night-alt-rain-mix.svg); -} -.wi-rain { - mask-image: url(./svg/wi-rain.svg); -} -.wi-night-alt-thunderstorm { - mask-image: url(./svg/wi-night-alt-thunderstorm.svg); -} -.wi-night-alt-showers { - mask-image: url(./svg/wi-night-alt-showers.svg); -} -.wi-day-lightning { - mask-image: url(./svg/wi-day-lightning.svg); -} -.wi-night-alt-rain { - mask-image: url(./svg/wi-night-alt-rain.svg); -} diff --git a/static/src/lib/weather-icons/svg/wi-cloud.svg b/static/src/lib/weather-icons/icons/wi-cloud.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-cloud.svg rename to static/src/lib/weather-icons/icons/wi-cloud.svg diff --git a/static/src/lib/weather-icons/svg/wi-cloudy.svg b/static/src/lib/weather-icons/icons/wi-cloudy.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-cloudy.svg rename to static/src/lib/weather-icons/icons/wi-cloudy.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-cloudy.svg b/static/src/lib/weather-icons/icons/wi-day-cloudy.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-cloudy.svg rename to static/src/lib/weather-icons/icons/wi-day-cloudy.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-hail.svg b/static/src/lib/weather-icons/icons/wi-day-hail.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-hail.svg rename to static/src/lib/weather-icons/icons/wi-day-hail.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-lightning.svg b/static/src/lib/weather-icons/icons/wi-day-lightning.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-lightning.svg rename to static/src/lib/weather-icons/icons/wi-day-lightning.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-rain-mix.svg b/static/src/lib/weather-icons/icons/wi-day-rain-mix.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-rain-mix.svg rename to static/src/lib/weather-icons/icons/wi-day-rain-mix.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-rain.svg b/static/src/lib/weather-icons/icons/wi-day-rain.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-rain.svg rename to static/src/lib/weather-icons/icons/wi-day-rain.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-showers.svg b/static/src/lib/weather-icons/icons/wi-day-showers.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-showers.svg rename to static/src/lib/weather-icons/icons/wi-day-showers.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-snow.svg b/static/src/lib/weather-icons/icons/wi-day-snow.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-snow.svg rename to static/src/lib/weather-icons/icons/wi-day-snow.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-storm-showers.svg b/static/src/lib/weather-icons/icons/wi-day-storm-showers.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-storm-showers.svg rename to static/src/lib/weather-icons/icons/wi-day-storm-showers.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-sunny.svg b/static/src/lib/weather-icons/icons/wi-day-sunny.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-sunny.svg rename to static/src/lib/weather-icons/icons/wi-day-sunny.svg diff --git a/static/src/lib/weather-icons/svg/wi-day-thunderstorm.svg b/static/src/lib/weather-icons/icons/wi-day-thunderstorm.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-day-thunderstorm.svg rename to static/src/lib/weather-icons/icons/wi-day-thunderstorm.svg diff --git a/static/src/lib/weather-icons/svg/wi-hail.svg b/static/src/lib/weather-icons/icons/wi-hail.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-hail.svg rename to static/src/lib/weather-icons/icons/wi-hail.svg diff --git a/static/src/lib/weather-icons/svg/wi-lightning.svg b/static/src/lib/weather-icons/icons/wi-lightning.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-lightning.svg rename to static/src/lib/weather-icons/icons/wi-lightning.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-cloudy.svg b/static/src/lib/weather-icons/icons/wi-night-alt-cloudy.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-cloudy.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-cloudy.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-hail.svg b/static/src/lib/weather-icons/icons/wi-night-alt-hail.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-hail.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-hail.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-lightning.svg b/static/src/lib/weather-icons/icons/wi-night-alt-lightning.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-lightning.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-lightning.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-rain-mix.svg b/static/src/lib/weather-icons/icons/wi-night-alt-rain-mix.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-rain-mix.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-rain-mix.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-rain.svg b/static/src/lib/weather-icons/icons/wi-night-alt-rain.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-rain.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-rain.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-showers.svg b/static/src/lib/weather-icons/icons/wi-night-alt-showers.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-showers.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-showers.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-snow.svg b/static/src/lib/weather-icons/icons/wi-night-alt-snow.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-snow.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-snow.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-storm-showers.svg b/static/src/lib/weather-icons/icons/wi-night-alt-storm-showers.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-storm-showers.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-storm-showers.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-alt-thunderstorm.svg b/static/src/lib/weather-icons/icons/wi-night-alt-thunderstorm.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-alt-thunderstorm.svg rename to static/src/lib/weather-icons/icons/wi-night-alt-thunderstorm.svg diff --git a/static/src/lib/weather-icons/svg/wi-night-clear.svg b/static/src/lib/weather-icons/icons/wi-night-clear.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-night-clear.svg rename to static/src/lib/weather-icons/icons/wi-night-clear.svg diff --git a/static/src/lib/weather-icons/svg/wi-rain-mix.svg b/static/src/lib/weather-icons/icons/wi-rain-mix.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-rain-mix.svg rename to static/src/lib/weather-icons/icons/wi-rain-mix.svg diff --git a/static/src/lib/weather-icons/svg/wi-rain.svg b/static/src/lib/weather-icons/icons/wi-rain.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-rain.svg rename to static/src/lib/weather-icons/icons/wi-rain.svg diff --git a/static/src/lib/weather-icons/svg/wi-showers.svg b/static/src/lib/weather-icons/icons/wi-showers.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-showers.svg rename to static/src/lib/weather-icons/icons/wi-showers.svg diff --git a/static/src/lib/weather-icons/svg/wi-snow.svg b/static/src/lib/weather-icons/icons/wi-snow.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-snow.svg rename to static/src/lib/weather-icons/icons/wi-snow.svg diff --git a/static/src/lib/weather-icons/svg/wi-storm-showers.svg b/static/src/lib/weather-icons/icons/wi-storm-showers.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-storm-showers.svg rename to static/src/lib/weather-icons/icons/wi-storm-showers.svg diff --git a/static/src/lib/weather-icons/svg/wi-thunderstorm.svg b/static/src/lib/weather-icons/icons/wi-thunderstorm.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-thunderstorm.svg rename to static/src/lib/weather-icons/icons/wi-thunderstorm.svg diff --git a/static/src/lib/weather-icons/svg/wi-wind-deg.svg b/static/src/lib/weather-icons/icons/wi-wind-deg.svg similarity index 100% rename from static/src/lib/weather-icons/svg/wi-wind-deg.svg rename to static/src/lib/weather-icons/icons/wi-wind-deg.svg diff --git a/static/src/lib/weather-icons/sass/_variables.scss b/static/src/lib/weather-icons/sass/_variables.scss new file mode 100644 index 0000000..cc0acf2 --- /dev/null +++ b/static/src/lib/weather-icons/sass/_variables.scss @@ -0,0 +1,34 @@ +$weather-icons-path: "../icons" !default; +$weather-icons-included: ( + "wi-cloud", + "wi-cloudy", + "wi-day-cloudy", + "wi-day-hail", + "wi-day-lightning", + "wi-day-rain-mix", + "wi-day-rain", + "wi-day-showers", + "wi-day-snow", + "wi-day-storm-showers", + "wi-day-sunny", + "wi-day-thunderstorm", + "wi-hail", + "wi-lightning", + "wi-night-alt-cloudy", + "wi-night-alt-hail", + "wi-night-alt-lightning", + "wi-night-alt-rain-mix", + "wi-night-alt-rain", + "wi-night-alt-showers", + "wi-night-alt-snow", + "wi-night-alt-storm-showers", + "wi-night-alt-thunderstorm", + "wi-night-clear", + "wi-rain-mix", + "wi-rain", + "wi-showers", + "wi-snow", + "wi-storm-showers", + "wi-thunderstorm", + "wi-wind-deg" +) !default; diff --git a/static/src/lib/weather-icons/weather-icons.scss b/static/src/lib/weather-icons/sass/_weather-icons-base.scss similarity index 69% rename from static/src/lib/weather-icons/weather-icons.scss rename to static/src/lib/weather-icons/sass/_weather-icons-base.scss index 199980e..d15db71 100644 --- a/static/src/lib/weather-icons/weather-icons.scss +++ b/static/src/lib/weather-icons/sass/_weather-icons-base.scss @@ -1,5 +1,4 @@ -@import "./classes-list"; -@import "./classes-wind-aliases"; +@use "variables"; .wi { display: inline-block; @@ -21,3 +20,9 @@ font-size: 3.5rem; } } + +@mixin weather-icon($icon) { + .#{$icon} { + mask-image: url(#{variables.$weather-icons-path}/#{$icon}.svg); + } +} diff --git a/static/src/lib/weather-icons/sass/_weather-icons-list.scss b/static/src/lib/weather-icons/sass/_weather-icons-list.scss new file mode 100644 index 0000000..c0e1409 --- /dev/null +++ b/static/src/lib/weather-icons/sass/_weather-icons-list.scss @@ -0,0 +1,6 @@ +@use "variables"; +@use "weather-icons-base"; + +@each $icon in variables.$weather-icons-included { + @include weather-icons-base.weather-icon($icon); +} diff --git a/static/src/lib/weather-icons/classes-wind-aliases.scss b/static/src/lib/weather-icons/sass/_weather-wind-aliases.scss similarity index 100% rename from static/src/lib/weather-icons/classes-wind-aliases.scss rename to static/src/lib/weather-icons/sass/_weather-wind-aliases.scss diff --git a/static/src/lib/weather-icons/sass/weather-icons.scss b/static/src/lib/weather-icons/sass/weather-icons.scss new file mode 100644 index 0000000..5763019 --- /dev/null +++ b/static/src/lib/weather-icons/sass/weather-icons.scss @@ -0,0 +1,4 @@ +@forward "variables"; +@use "weather-icons-base"; +@use "weather-icons-list"; +@use "weather-wind-aliases"; diff --git a/static/src/main.scss b/static/src/main.scss index 6a1a80e..5b3a9e7 100644 --- a/static/src/main.scss +++ b/static/src/main.scss @@ -1,7 +1,7 @@ @import "./lib/flag-icons"; @import "./lib/bootstrap"; @import "./lib/bootstrap-icons"; -@import "./lib/weather-icons/weather-icons"; +@import "./lib/weather-icons"; @import "./widget.scss"; @import "./weather/weather.scss"; diff --git a/static/webpack.config.ts b/static/webpack.config.ts index e0cc2e0..1dbcc81 100644 --- a/static/webpack.config.ts +++ b/static/webpack.config.ts @@ -5,9 +5,6 @@ import { fileURLToPath } from "url"; import webpack from "webpack"; import packageInfo from "./package.json" with { type: "json" }; -// in case you run into any TypeScript error when configuring `devServer` -//import "webpack-dev-server"; - const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -49,9 +46,8 @@ const config: webpack.Configuration = { new CopyPlugin({ patterns: [ { - from: "./src/**/*.svg", - //to: "[path][name].[contenthash][ext]", - to: "svg/[name][ext]", + from: "./src/lib/weather-icons/icons/*.svg", + to: "weather-icons/icons/[name][ext]", }, { from: "./node_modules/bootstrap-icons/icons/*.svg", @@ -60,7 +56,7 @@ const config: webpack.Configuration = { { from: "./node_modules/flag-icons/flags/1x1/*.svg", to: "flag-icons/flags/1x1/[name][ext]", - } + }, ], }), ],