Compare commits
	
		
			44 Commits
		
	
	
		
			docker-tes
			...
			feat/struc
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | df33229934 | ||
|  | 49fafaa096 | ||
|  | ca9b32a23b | ||
|  | 76e3ff4e02 | ||
|  | eabf3ca7d3 | ||
|  | 94e6db10bb | ||
|  | 26e1d5fec3 | ||
|  | 66be87b688 | ||
|  | f7b4e32218 | ||
|  | 57407112fb | ||
|  | b280cc2e01 | ||
|  | e6ebf892c5 | ||
|  | b754641058 | ||
|  | 722f4f760e | ||
|  | 01e04a209f | ||
|  | 0299fd1ea0 | ||
|  | cf8dec53ca | ||
|  | d5c012d748 | ||
|  | 2ccbd9a44c | ||
|  | ccd89d48d9 | ||
|  | 87d788ddef | ||
|  | 809b625a34 | ||
|  | 95c753a549 | ||
|  | 0bb8b7ec5c | ||
|  | c6d084f5dc | ||
|  | 0024ce36c8 | ||
|  | c44e746807 | ||
|  | b1826066f4 | ||
|  | b0b8acc45b | ||
|  | e2b9ffc072 | ||
|  | 68c43ea372 | ||
|  | 3b46baca4f | ||
|  | 772e461c08 | ||
|  | 5c6018a0f9 | ||
|  | 0b7989c3d3 | ||
|  | 8cfcc3e39c | ||
|  | 3a57261590 | ||
|  | a86a1a461c | ||
|  | 2257e1df0c | ||
|  | ccb72c8970 | ||
|  | 740ff941a5 | ||
|  | 117a683d9a | ||
|  | 9eba4b7373 | ||
|  | 91306dc0c7 | 
							
								
								
									
										0
									
								
								.assets/manifest.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -37,3 +37,5 @@ Thumbs.db | |||||||
| # Db | # Db | ||||||
| db.sqlite | db.sqlite | ||||||
| /searxng | /searxng | ||||||
|  |  | ||||||
|  | certificates | ||||||
| @@ -16,7 +16,7 @@ | |||||||
|  |  | ||||||
| <hr/> | <hr/> | ||||||
|  |  | ||||||
| [](https://discord.gg/26aArMy8tT) | [](https://discord.gg/26aArMy8tT) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -90,6 +90,9 @@ There are mainly 2 ways of installing Perplexica - With Docker, Without Docker. | |||||||
|    - `OLLAMA`: Your Ollama API URL. You should enter it as `http://host.docker.internal:PORT_NUMBER`. If you installed Ollama on port 11434, use `http://host.docker.internal:11434`. For other ports, adjust accordingly. **You need to fill this if you wish to use Ollama's models instead of OpenAI's**. |    - `OLLAMA`: Your Ollama API URL. You should enter it as `http://host.docker.internal:PORT_NUMBER`. If you installed Ollama on port 11434, use `http://host.docker.internal:11434`. For other ports, adjust accordingly. **You need to fill this if you wish to use Ollama's models instead of OpenAI's**. | ||||||
|    - `GROQ`: Your Groq API key. **You only need to fill this if you wish to use Groq's hosted models**. |    - `GROQ`: Your Groq API key. **You only need to fill this if you wish to use Groq's hosted models**. | ||||||
|    - `ANTHROPIC`: Your Anthropic API key. **You only need to fill this if you wish to use Anthropic models**. |    - `ANTHROPIC`: Your Anthropic API key. **You only need to fill this if you wish to use Anthropic models**. | ||||||
|  |    - `Gemini`: Your Gemini API key. **You only need to fill this if you wish to use Google's models**. | ||||||
|  |    - `DEEPSEEK`: Your Deepseek API key. **Only needed if you want Deepseek models.** | ||||||
|  |    - `AIMLAPI`: Your AI/ML API key. **Only needed if you want to use AI/ML API models and embeddings.** | ||||||
|  |  | ||||||
|      **Note**: You can change these after starting Perplexica from the settings dialog. |      **Note**: You can change these after starting Perplexica from the settings dialog. | ||||||
|  |  | ||||||
| @@ -111,7 +114,7 @@ There are mainly 2 ways of installing Perplexica - With Docker, Without Docker. | |||||||
| 2. Clone the repository and rename the `sample.config.toml` file to `config.toml` in the root directory. Ensure you complete all required fields in this file. | 2. Clone the repository and rename the `sample.config.toml` file to `config.toml` in the root directory. Ensure you complete all required fields in this file. | ||||||
| 3. After populating the configuration run `npm i`. | 3. After populating the configuration run `npm i`. | ||||||
| 4. Install the dependencies and then execute `npm run build`. | 4. Install the dependencies and then execute `npm run build`. | ||||||
| 5. Finally, start the app by running `npm rum start` | 5. Finally, start the app by running `npm run start` | ||||||
|  |  | ||||||
| **Note**: Using Docker is recommended as it simplifies the setup process, especially for managing environment variables and dependencies. | **Note**: Using Docker is recommended as it simplifies the setup process, especially for managing environment variables and dependencies. | ||||||
|  |  | ||||||
| @@ -132,7 +135,7 @@ If you're encountering an Ollama connection error, it is likely due to the backe | |||||||
|  |  | ||||||
| 3. **Linux Users - Expose Ollama to Network:** | 3. **Linux Users - Expose Ollama to Network:** | ||||||
|  |  | ||||||
|    - Inside `/etc/systemd/system/ollama.service`, you need to add `Environment="OLLAMA_HOST=0.0.0.0"`. Then restart Ollama by `systemctl restart ollama`. For more information see [Ollama docs](https://github.com/ollama/ollama/blob/main/docs/faq.md#setting-environment-variables-on-linux) |    - Inside `/etc/systemd/system/ollama.service`, you need to add `Environment="OLLAMA_HOST=0.0.0.0:11434"`. (Change the port number if you are using a different one.) Then reload the systemd manager configuration with `systemctl daemon-reload`, and restart Ollama by `systemctl restart ollama`. For more information see [Ollama docs](https://github.com/ollama/ollama/blob/main/docs/faq.md#setting-environment-variables-on-linux) | ||||||
|  |  | ||||||
|    - Ensure that the port (default is 11434) is not blocked by your firewall. |    - Ensure that the port (default is 11434) is not blocked by your firewall. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -41,6 +41,6 @@ To update Perplexica to the latest version, follow these steps: | |||||||
| 3. Check for changes in the configuration files. If the `sample.config.toml` file contains new fields, delete your existing `config.toml` file, rename `sample.config.toml` to `config.toml`, and update the configuration accordingly. | 3. Check for changes in the configuration files. If the `sample.config.toml` file contains new fields, delete your existing `config.toml` file, rename `sample.config.toml` to `config.toml`, and update the configuration accordingly. | ||||||
| 4. After populating the configuration run `npm i`. | 4. After populating the configuration run `npm i`. | ||||||
| 5. Install the dependencies and then execute `npm run build`. | 5. Install the dependencies and then execute `npm run build`. | ||||||
| 6. Finally, start the app by running `npm rum start` | 6. Finally, start the app by running `npm run start` | ||||||
|  |  | ||||||
| --- | --- | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								package.json
									
									
									
									
									
								
							
							
						
						| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "perplexica-frontend", |   "name": "perplexica-frontend", | ||||||
|   "version": "1.10.2", |   "version": "1.11.0-rc2", | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "author": "ItzCrazyKns", |   "author": "ItzCrazyKns", | ||||||
|   "scripts": { |   "scripts": { | ||||||
| @@ -15,11 +15,12 @@ | |||||||
|     "@headlessui/react": "^2.2.0", |     "@headlessui/react": "^2.2.0", | ||||||
|     "@iarna/toml": "^2.2.5", |     "@iarna/toml": "^2.2.5", | ||||||
|     "@icons-pack/react-simple-icons": "^12.3.0", |     "@icons-pack/react-simple-icons": "^12.3.0", | ||||||
|     "@langchain/anthropic": "^0.3.15", |     "@langchain/anthropic": "^0.3.24", | ||||||
|     "@langchain/community": "^0.3.36", |     "@langchain/community": "^0.3.49", | ||||||
|     "@langchain/core": "^0.3.42", |     "@langchain/core": "^0.3.66", | ||||||
|     "@langchain/google-genai": "^0.1.12", |     "@langchain/google-genai": "^0.2.15", | ||||||
|     "@langchain/openai": "^0.0.25", |     "@langchain/ollama": "^0.2.3", | ||||||
|  |     "@langchain/openai": "^0.6.2", | ||||||
|     "@langchain/textsplitters": "^0.1.0", |     "@langchain/textsplitters": "^0.1.0", | ||||||
|     "@tailwindcss/typography": "^0.5.12", |     "@tailwindcss/typography": "^0.5.12", | ||||||
|     "@xenova/transformers": "^2.17.2", |     "@xenova/transformers": "^2.17.2", | ||||||
| @@ -31,7 +32,7 @@ | |||||||
|     "drizzle-orm": "^0.40.1", |     "drizzle-orm": "^0.40.1", | ||||||
|     "html-to-text": "^9.0.5", |     "html-to-text": "^9.0.5", | ||||||
|     "jspdf": "^3.0.1", |     "jspdf": "^3.0.1", | ||||||
|     "langchain": "^0.1.30", |     "langchain": "^0.3.30", | ||||||
|     "lucide-react": "^0.363.0", |     "lucide-react": "^0.363.0", | ||||||
|     "mammoth": "^1.9.1", |     "mammoth": "^1.9.1", | ||||||
|     "markdown-to-jsx": "^7.7.2", |     "markdown-to-jsx": "^7.7.2", | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								public/icon-100.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 916 B | 
							
								
								
									
										
											BIN
										
									
								
								public/icon-50.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 515 B | 
							
								
								
									
										
											BIN
										
									
								
								public/icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 30 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/screenshots/p1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 183 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/screenshots/p1_small.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 130 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/screenshots/p2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 627 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/screenshots/p2_small.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 202 KiB | 
							
								
								
									
										131
									
								
								public/weather-ico/clear-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,131 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.34167" y="-.34167" width="1.6833" height="1.85"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-sun-shiny { | ||||||
|  |         0% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           stroke-dasharray: 0.1px 10px; | ||||||
|  |           stroke-dashoffset: -1px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun-shiny line { | ||||||
|  |         -webkit-animation-name: am-weather-sun-shiny; | ||||||
|  |         -moz-animation-name: am-weather-sun-shiny; | ||||||
|  |         -ms-animation-name: am-weather-sun-shiny; | ||||||
|  |         animation-name: am-weather-sun-shiny; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" | ||||||
|  |         style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" stroke-width="2" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 4.9 KiB | 
							
								
								
									
										159
									
								
								public/weather-ico/clear-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,159 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.3038" y="-.3318" width="1.6076" height="1.894"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g id="night" transform="translate(-4,-18)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .78534 36 20.022)" stroke-width="1.2616"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="4 2.7 5.2 3.3 4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5" fill="#ffa500" stroke-miterlimit="10" | ||||||
|  |           stroke-width="1.4105" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="4 2.7 5.2 3.3 4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5" | ||||||
|  |           fill="#ffa500" stroke-miterlimit="10" stroke-width="1.4105" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2.5232" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 6.7 KiB | 
							
								
								
									
										178
									
								
								public/weather-ico/cloudy-1-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,178 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.28472" width="1.403" height="1.6944"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-sun-shiny { | ||||||
|  |         0% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           stroke-dasharray: 0.1px 10px; | ||||||
|  |           stroke-dashoffset: -1px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun-shiny line { | ||||||
|  |         -webkit-animation-name: am-weather-sun-shiny; | ||||||
|  |         -moz-animation-name: am-weather-sun-shiny; | ||||||
|  |         -ms-animation-name: am-weather-sun-shiny; | ||||||
|  |         animation-name: am-weather-sun-shiny; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" | ||||||
|  |         style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" stroke-width="2" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-2" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#c6deff" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 6.8 KiB | 
							
								
								
									
										206
									
								
								public/weather-ico/cloudy-1-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,206 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.19471" y="-.26087" width="1.3744" height="1.6884"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3 4 4 3.3 5.2 2.7 4" fill="#ffa500" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3 4 4 3.3 5.2 2.7 4" | ||||||
|  |           fill="#ffa500" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-2" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#c6deff" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 8.6 KiB | 
							
								
								
									
										244
									
								
								public/weather-ico/fog-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,244 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.21122" width="1.403" height="1.4997"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** FOG | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-fog-1 { | ||||||
|  |         0% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           transform: translate(7px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-fog-1 { | ||||||
|  |         -webkit-animation-name: am-weather-fog-1; | ||||||
|  |         -moz-animation-name: am-weather-fog-1; | ||||||
|  |         -ms-animation-name: am-weather-fog-1; | ||||||
|  |         animation-name: am-weather-fog-1; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-fog-2 { | ||||||
|  |         0% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         21.05% { | ||||||
|  |           transform: translate(-6px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         78.95% { | ||||||
|  |           transform: translate(9px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-fog-2 { | ||||||
|  |         -webkit-animation-name: am-weather-fog-2; | ||||||
|  |         -moz-animation-name: am-weather-fog-2; | ||||||
|  |         -ms-animation-name: am-weather-fog-2; | ||||||
|  |         animation-name: am-weather-fog-2; | ||||||
|  |         -webkit-animation-duration: 20s; | ||||||
|  |         -moz-animation-duration: 20s; | ||||||
|  |         -ms-animation-duration: 20s; | ||||||
|  |         animation-duration: 20s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-fog-3 { | ||||||
|  |         0% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         25% { | ||||||
|  |           transform: translate(4px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         75% { | ||||||
|  |           transform: translate(-4px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-fog-3 { | ||||||
|  |         -webkit-animation-name: am-weather-fog-3; | ||||||
|  |         -moz-animation-name: am-weather-fog-3; | ||||||
|  |         -ms-animation-name: am-weather-fog-3; | ||||||
|  |         animation-name: am-weather-fog-3; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-fog-4 { | ||||||
|  |         0% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           transform: translate(-4px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-fog-4 { | ||||||
|  |         -webkit-animation-name: am-weather-fog-4; | ||||||
|  |         -moz-animation-name: am-weather-fog-4; | ||||||
|  |         -ms-animation-name: am-weather-fog-4; | ||||||
|  |         animation-name: am-weather-fog-4; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" transform="translate(0,16)"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" stroke-width="2" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" />F | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffc04a" stroke="#ffc04a" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-fog" transform="translate(-10,20)" fill="none" stroke="#c6deff" stroke-linecap="round" | ||||||
|  |       stroke-width="2"> | ||||||
|  |       <line class="am-weather-fog-1" y1="0" y2="0" x1="1" x2="37" stroke-dasharray="3, 5, 17, 5, 7" /> | ||||||
|  |       <line class="am-weather-fog-2" y1="5" y2="5" x1="9" x2="33" stroke-dasharray="11, 7, 15" /> | ||||||
|  |       <line class="am-weather-fog-3" y1="10" y2="10" x1="5" x2="40" stroke-dasharray="11, 7, 3, 5, 9" /> | ||||||
|  |       <line class="am-weather-fog-4" y1="15" y2="15" x1="7" x2="42" stroke-dasharray="13, 5, 9, 5, 3" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 8.0 KiB | 
							
								
								
									
										309
									
								
								public/weather-ico/fog-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,309 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.21122" width="1.403" height="1.4997"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** FOG | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-fog-1 { | ||||||
|  |         0% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           transform: translate(7px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-fog-1 { | ||||||
|  |         -webkit-animation-name: am-weather-fog-1; | ||||||
|  |         -moz-animation-name: am-weather-fog-1; | ||||||
|  |         -ms-animation-name: am-weather-fog-1; | ||||||
|  |         animation-name: am-weather-fog-1; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-fog-2 { | ||||||
|  |         0% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         21.05% { | ||||||
|  |           transform: translate(-6px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         78.95% { | ||||||
|  |           transform: translate(9px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-fog-2 { | ||||||
|  |         -webkit-animation-name: am-weather-fog-2; | ||||||
|  |         -moz-animation-name: am-weather-fog-2; | ||||||
|  |         -ms-animation-name: am-weather-fog-2; | ||||||
|  |         animation-name: am-weather-fog-2; | ||||||
|  |         -webkit-animation-duration: 20s; | ||||||
|  |         -moz-animation-duration: 20s; | ||||||
|  |         -ms-animation-duration: 20s; | ||||||
|  |         animation-duration: 20s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-fog-3 { | ||||||
|  |         0% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         25% { | ||||||
|  |           transform: translate(4px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         75% { | ||||||
|  |           transform: translate(-4px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-fog-3 { | ||||||
|  |         -webkit-animation-name: am-weather-fog-3; | ||||||
|  |         -moz-animation-name: am-weather-fog-3; | ||||||
|  |         -ms-animation-name: am-weather-fog-3; | ||||||
|  |         animation-name: am-weather-fog-3; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-fog-4 { | ||||||
|  |         0% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           transform: translate(-4px, 0px) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           transform: translate(0px, 0px) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-fog-4 { | ||||||
|  |         -webkit-animation-name: am-weather-fog-4; | ||||||
|  |         -moz-animation-name: am-weather-fog-4; | ||||||
|  |         -ms-animation-name: am-weather-fog-4; | ||||||
|  |         animation-name: am-weather-fog-4; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" fill="#ffc04a" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" | ||||||
|  |           fill="#ffc04a" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffc04a" stroke="#ffc04a" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-fog" transform="translate(-10,20)" fill="none" stroke="#c6deff" stroke-linecap="round" | ||||||
|  |       stroke-width="2"> | ||||||
|  |       <line class="am-weather-fog-1" y1="0" y2="0" x1="1" x2="37" stroke-dasharray="3, 5, 17, 5, 7" /> | ||||||
|  |       <line class="am-weather-fog-2" y1="5" y2="5" x1="9" x2="33" stroke-dasharray="11, 7, 15" /> | ||||||
|  |       <line class="am-weather-fog-3" y1="10" y2="10" x1="5" x2="40" stroke-dasharray="11, 7, 3, 5, 9" /> | ||||||
|  |       <line class="am-weather-fog-4" y1="15" y2="15" x1="7" x2="42" stroke-dasharray="13, 5, 9, 5, 3" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										204
									
								
								public/weather-ico/frost-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,204 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.21122" width="1.403" height="1.4997"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** FROST | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-frost { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         1% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         3% { | ||||||
|  |           -webkit-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(-0.3px, 0.0px); | ||||||
|  |           transform: translate(-0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         5% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         7% { | ||||||
|  |           -webkit-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(-0.3px, 0.0px); | ||||||
|  |           transform: translate(-0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         9% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         11% { | ||||||
|  |           -webkit-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(-0.3px, 0.0px); | ||||||
|  |           transform: translate(-0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         13% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         15% { | ||||||
|  |           -webkit-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(-0.3px, 0.0px); | ||||||
|  |           transform: translate(-0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         16% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-frost { | ||||||
|  |         -webkit-animation-name: am-weather-frost; | ||||||
|  |         -moz-animation-name: am-weather-frost; | ||||||
|  |         animation-name: am-weather-frost; | ||||||
|  |         -webkit-animation-duration: 1.11s; | ||||||
|  |         -moz-animation-duration: 1.11s; | ||||||
|  |         animation-duration: 1.11s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" transform="translate(0,16)"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" stroke-width="2" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" />F | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffc04a" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffc04a" stroke="#ffc04a" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g transform="translate(-16,4)"> | ||||||
|  |       <g class="am-weather-frost" stroke="#57a0ee" transform="translate(0,2)" fill="none" stroke-width="2" | ||||||
|  |         stroke-linecap="round" | ||||||
|  |         style="-moz-animation-duration:1.11s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-frost;-moz-animation-timing-function:linear;-webkit-animation-duration:1.11s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-frost;-webkit-animation-timing-function:linear"> | ||||||
|  |         <path d="M11,32H45" /> | ||||||
|  |         <path d="M15.5,37H40.5" /> | ||||||
|  |         <path d="M22.5,42H33.5" /> | ||||||
|  |       </g> | ||||||
|  |       <g> | ||||||
|  |         <path stroke="#57a0ee" transform="translate(0,0)" fill="none" stroke-width="2" stroke-linecap="round" | ||||||
|  |           d="M28,31V9M28,22l11,-3.67M34,20l2,-4M34,20l4,2M28,22l-11,-3.67M22,20l-2,-4M22,20l-4,2M28,14.27l3.01,-3.02M28,14.27l-3.01,-3.02" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 7.3 KiB | 
							
								
								
									
										269
									
								
								public/weather-ico/frost-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,269 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.21122" width="1.403" height="1.4997"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** FROST | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-frost { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         1% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         3% { | ||||||
|  |           -webkit-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(-0.3px, 0.0px); | ||||||
|  |           transform: translate(-0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         5% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         7% { | ||||||
|  |           -webkit-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(-0.3px, 0.0px); | ||||||
|  |           transform: translate(-0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         9% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         11% { | ||||||
|  |           -webkit-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(-0.3px, 0.0px); | ||||||
|  |           transform: translate(-0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         13% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         15% { | ||||||
|  |           -webkit-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(-0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(-0.3px, 0.0px); | ||||||
|  |           transform: translate(-0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         16% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-frost { | ||||||
|  |         -webkit-animation-name: am-weather-frost; | ||||||
|  |         -moz-animation-name: am-weather-frost; | ||||||
|  |         animation-name: am-weather-frost; | ||||||
|  |         -webkit-animation-duration: 1.11s; | ||||||
|  |         -moz-animation-duration: 1.11s; | ||||||
|  |         animation-duration: 1.11s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" fill="#ffc04a" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" | ||||||
|  |           fill="#ffc04a" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffc04a" stroke="#ffc04a" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g transform="translate(-16,4)"> | ||||||
|  |       <g class="am-weather-frost" stroke="#57a0ee" transform="translate(0,2)" fill="none" stroke-width="2" | ||||||
|  |         stroke-linecap="round" | ||||||
|  |         style="-moz-animation-duration:1.11s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-frost;-moz-animation-timing-function:linear;-webkit-animation-duration:1.11s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-frost;-webkit-animation-timing-function:linear"> | ||||||
|  |         <path d="M11,32H45" /> | ||||||
|  |         <path d="M15.5,37H40.5" /> | ||||||
|  |         <path d="M22.5,42H33.5" /> | ||||||
|  |       </g> | ||||||
|  |       <g> | ||||||
|  |         <path stroke="#57a0ee" transform="translate(0,0)" fill="none" stroke-width="2" stroke-linecap="round" | ||||||
|  |           d="M28,31V9M28,22l11,-3.67M34,20l2,-4M34,20l4,2M28,22l-11,-3.67M22,20l-2,-4M22,20l-4,2M28,14.27l3.01,-3.02M28,14.27l-3.01,-3.02" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										141
									
								
								public/weather-ico/rain-and-sleet-mix.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,141 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <!-- Mix of Rain and Sleet | Contributed by hsoJ95 on GitHub: https://github.com/hsoj95 --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.24684" y="-.22776" width="1.4937" height="1.5756"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** RAIN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-rain { | ||||||
|  |         0% { | ||||||
|  |           stroke-dashoffset: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dashoffset: -100; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-1 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-2 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-delay: 0.25s; | ||||||
|  |         -moz-animation-delay: 0.25s; | ||||||
|  |         -ms-animation-delay: 0.25s; | ||||||
|  |         animation-delay: 0.25s; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-3 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-3 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-3; | ||||||
|  |         -moz-animation-name: am-weather-cloud-3; | ||||||
|  |         animation-name: am-weather-cloud-3; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-3;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-3;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-sleet-2" transform="translate(-20,-10) rotate(10,-247.39,200.17)" fill="none" stroke="#91c0f8" | ||||||
|  |       stroke-linecap="round"> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-5,1)" y2="8" stroke-dasharray="0.1, 7" stroke-width="2" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(5)" y2="8" stroke-dasharray="0.1, 7" stroke-width="2" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-rain-3" transform="translate(-20,-10) rotate(10,-245.89,217.31)" fill="none" stroke="#91c0f8" | ||||||
|  |       stroke-dasharray="4, 7" stroke-linecap="round" stroke-width="2"> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-13,1)" y2="8" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-3,2)" y2="8" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-2" transform="translate(7,-1)" y2="8" | ||||||
|  |         style="-moz-animation-delay:0.25s;-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-delay:0.25s;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-delay:0.25s;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 7.6 KiB | 
							
								
								
									
										179
									
								
								public/weather-ico/rainy-1-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,179 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.21122" width="1.403" height="1.4997"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** RAIN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-rain { | ||||||
|  |         0% { | ||||||
|  |           stroke-dashoffset: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dashoffset: -100; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-1 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" | ||||||
|  |         style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" stroke-width="2" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-rain-1" transform="translate(-20,-10) rotate(10,-238.68,233.96)"> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-6,1)" y2="8" fill="none" stroke="#91c0f8" | ||||||
|  |         stroke-dasharray="4, 7" stroke-linecap="round" stroke-width="2" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 7.4 KiB | 
							
								
								
									
										243
									
								
								public/weather-ico/rainy-1-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,243 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.21122" width="1.403" height="1.4997"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** RAIN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-rain { | ||||||
|  |         0% { | ||||||
|  |           stroke-dashoffset: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dashoffset: -100; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-1 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" fill="#ffa500" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" | ||||||
|  |           fill="#ffa500" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weaher-rain-1" transform="translate(-20,-10) rotate(10,-238.68,233.96)"> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-6,1)" y2="8" fill="none" stroke="#91c0f8" | ||||||
|  |         stroke-dasharray="4, 7" stroke-linecap="round" stroke-width="2" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 10 KiB | 
							
								
								
									
										204
									
								
								public/weather-ico/rainy-2-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,204 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.20592" width="1.403" height="1.4872"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** RAIN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-rain { | ||||||
|  |         0% { | ||||||
|  |           stroke-dashoffset: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dashoffset: -100; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-1 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-2 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-delay: 0.25s; | ||||||
|  |         -moz-animation-delay: 0.25s; | ||||||
|  |         -ms-animation-delay: 0.25s; | ||||||
|  |         animation-delay: 0.25s; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" | ||||||
|  |         style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" stroke="#ffa500" stroke-linecap="round" stroke-width="2" fifll="none" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g transform="translate(-20,-10) rotate(10,-245.89,217.31)" fill="none" stroke="#91c0f8" stroke-dasharray="4, 7" stroke-linecap="round" | ||||||
|  |       stroke-width="2"> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-6,1)" y2="8" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-2" transform="translate(0,-1)" y2="8" | ||||||
|  |         style="-moz-animation-delay:0.25s;-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-delay:0.25s;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-delay:0.25s;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 8.8 KiB | 
							
								
								
									
										256
									
								
								public/weather-ico/rainy-2-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,256 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** RAIN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-rain { | ||||||
|  |         0% { | ||||||
|  |           stroke-dashoffset: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dashoffset: -100; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-1 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-2 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-delay: 0.25s; | ||||||
|  |         -moz-animation-delay: 0.25s; | ||||||
|  |         -ms-animation-delay: 0.25s; | ||||||
|  |         animation-delay: 0.25s; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g class="layer" transform="translate(16,-2)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" fill="#ffa500" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" | ||||||
|  |           fill="#ffa500" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-rain-2" transform="translate(-20,-10) rotate(10,34,46)" fill="none" stroke="#91c0f8" | ||||||
|  |       stroke-dasharray="4, 7" stroke-linecap="round" stroke-width="2"> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-6,1)" x1="34" x2="34" y1="46" y2="54" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-2" transform="translate(0,-1)" x1="34" x2="34" y1="46" y2="54" | ||||||
|  |         style="-moz-animation-delay:0.25s;-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-delay:0.25s;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-delay:0.25s;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										206
									
								
								public/weather-ico/rainy-3-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,206 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.24684" y="-.22892" width="1.4937" height="1.5576"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** RAIN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-rain { | ||||||
|  |         0% { | ||||||
|  |           stroke-dashoffset: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dashoffset: -100; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-1 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-2 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-delay: 0.25s; | ||||||
|  |         -moz-animation-delay: 0.25s; | ||||||
|  |         -ms-animation-delay: 0.25s; | ||||||
|  |         animation-delay: 0.25s; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" | ||||||
|  |         style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" stroke="#ffa500" stroke-linecap="round" stroke-width="2" fifll="none" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g transform="translate(-20,-10) rotate(10,-247.39,200.17)" fill="none" stroke="#91c0f8" stroke-dasharray="4, 4" | ||||||
|  |       stroke-linecap="round" stroke-width="2"> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-4,1)" y2="8" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-2" transform="translate(0,-1)" y2="8" | ||||||
|  |         style="-moz-animation-delay:0.25s;-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-delay:0.25s;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-delay:0.25s;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(4)" y2="8" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 9.3 KiB | 
							
								
								
									
										270
									
								
								public/weather-ico/rainy-3-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,270 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.24684" y="-.22892" width="1.4937" height="1.5576"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** RAIN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-rain { | ||||||
|  |         0% { | ||||||
|  |           stroke-dashoffset: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dashoffset: -100; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-1 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-rain-2 { | ||||||
|  |         -webkit-animation-name: am-weather-rain; | ||||||
|  |         -moz-animation-name: am-weather-rain; | ||||||
|  |         -ms-animation-name: am-weather-rain; | ||||||
|  |         animation-name: am-weather-rain; | ||||||
|  |         -webkit-animation-delay: 0.25s; | ||||||
|  |         -moz-animation-delay: 0.25s; | ||||||
|  |         -ms-animation-delay: 0.25s; | ||||||
|  |         animation-delay: 0.25s; | ||||||
|  |         -webkit-animation-duration: 8s; | ||||||
|  |         -moz-animation-duration: 8s; | ||||||
|  |         -ms-animation-duration: 8s; | ||||||
|  |         animation-duration: 8s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" fill="#ffa500" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" | ||||||
|  |           fill="#ffa500" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g transform="translate(-20,-10) rotate(10,-247.39,200.17)" fill="none" stroke="#91c0f8" stroke-dasharray="4, 4" | ||||||
|  |       stroke-linecap="round" stroke-width="2"> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(-4,1)" y2="8" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-2" transform="translate(0,-1)" y2="8" | ||||||
|  |         style="-moz-animation-delay:0.25s;-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-delay:0.25s;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-delay:0.25s;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |       <line class="am-weather-rain-1" transform="translate(4)" y2="8" | ||||||
|  |         style="-moz-animation-duration:8s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-rain;-moz-animation-timing-function:linear;-ms-animation-duration:8s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-rain;-ms-animation-timing-function:linear;-webkit-animation-duration:8s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-rain;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 12 KiB | 
							
								
								
									
										374
									
								
								public/weather-ico/scattered-thunderstorms-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,374 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <!-- Scattered Thunderstorms | Contributed by hsoJ95 on GitHub: https://github.com/hsoj95 --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.1975" width="1.403" height="1.4766"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-3 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(-5px, 0px); | ||||||
|  |           -moz-transform: translate(-5px, 0px); | ||||||
|  |           -ms-transform: translate(-5px, 0px); | ||||||
|  |           transform: translate(-5px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(10px, 0px); | ||||||
|  |           -moz-transform: translate(10px, 0px); | ||||||
|  |           -ms-transform: translate(10px, 0px); | ||||||
|  |           transform: translate(10px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(-5px, 0px); | ||||||
|  |           -moz-transform: translate(-5px, 0px); | ||||||
|  |           -ms-transform: translate(-5px, 0px); | ||||||
|  |           transform: translate(-5px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-3 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-3; | ||||||
|  |         -moz-animation-name: am-weather-cloud-3; | ||||||
|  |         animation-name: am-weather-cloud-3; | ||||||
|  |         -webkit-animation-duration: 7s; | ||||||
|  |         -moz-animation-duration: 7s; | ||||||
|  |         animation-duration: 7s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-sun-shiny { | ||||||
|  |         0% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           stroke-dasharray: 0.1px 10px; | ||||||
|  |           stroke-dashoffset: -1px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun-shiny line { | ||||||
|  |         -webkit-animation-name: am-weather-sun-shiny; | ||||||
|  |         -moz-animation-name: am-weather-sun-shiny; | ||||||
|  |         -ms-animation-name: am-weather-sun-shiny; | ||||||
|  |         animation-name: am-weather-sun-shiny; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** STROKE | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-stroke { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         2% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         4% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         6% { | ||||||
|  |           -webkit-transform: translate(0.5px, 0.4px); | ||||||
|  |           -moz-transform: translate(0.5px, 0.4px); | ||||||
|  |           -ms-transform: translate(0.5px, 0.4px); | ||||||
|  |           transform: translate(0.5px, 0.4px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         8% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         10% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         12% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         14% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         16% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         18% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         20% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         22% { | ||||||
|  |           -webkit-transform: translate(1px, 0.0px); | ||||||
|  |           -moz-transform: translate(1px, 0.0px); | ||||||
|  |           -ms-transform: translate(1px, 0.0px); | ||||||
|  |           transform: translate(1px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         24% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         26% { | ||||||
|  |           -webkit-transform: translate(-1px, 0.0px); | ||||||
|  |           -moz-transform: translate(-1px, 0.0px); | ||||||
|  |           -ms-transform: translate(-1px, 0.0px); | ||||||
|  |           transform: translate(-1px, 0.0px); | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         28% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         40% { | ||||||
|  |           fill: orange; | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         65% { | ||||||
|  |           fill: white; | ||||||
|  |           -webkit-transform: translate(-1px, 5.0px); | ||||||
|  |           -moz-transform: translate(-1px, 5.0px); | ||||||
|  |           -ms-transform: translate(-1px, 5.0px); | ||||||
|  |           transform: translate(-1px, 5.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         61% { | ||||||
|  |           fill: orange; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-stroke { | ||||||
|  |         -webkit-animation-name: am-weather-stroke; | ||||||
|  |         -moz-animation-name: am-weather-stroke; | ||||||
|  |         animation-name: am-weather-stroke; | ||||||
|  |         -webkit-animation-duration: 1.11s; | ||||||
|  |         -moz-animation-duration: 1.11s; | ||||||
|  |         animation-duration: 1.11s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g id="thunder" transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" | ||||||
|  |         style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" stroke-width="2" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-lightning" transform="matrix(1.2,0,0,1.2,-4,28)"> | ||||||
|  |       <polygon class="am-weather-stroke" points="11.1 6.9 14.3 -2.9 20.5 -2.9 16.4 4.3 20.3 4.3 11.5 14.6 14.9 6.9" | ||||||
|  |         fill="#ffa500" stroke="#fff" | ||||||
|  |         style="-moz-animation-duration:1.11s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-stroke;-moz-animation-timing-function:linear;-webkit-animation-duration:1.11s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-stroke;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 13 KiB | 
							
								
								
									
										283
									
								
								public/weather-ico/scattered-thunderstorms-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,283 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <!-- Scattered Thunderstorms | Contributed by hsoJ95 on GitHub: https://github.com/hsoj95 --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.1975" width="1.403" height="1.4766"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-3 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(-5px, 0px); | ||||||
|  |           -moz-transform: translate(-5px, 0px); | ||||||
|  |           -ms-transform: translate(-5px, 0px); | ||||||
|  |           transform: translate(-5px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(10px, 0px); | ||||||
|  |           -moz-transform: translate(10px, 0px); | ||||||
|  |           -ms-transform: translate(10px, 0px); | ||||||
|  |           transform: translate(10px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(-5px, 0px); | ||||||
|  |           -moz-transform: translate(-5px, 0px); | ||||||
|  |           -ms-transform: translate(-5px, 0px); | ||||||
|  |           transform: translate(-5px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-3 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-3; | ||||||
|  |         -moz-animation-name: am-weather-cloud-3; | ||||||
|  |         animation-name: am-weather-cloud-3; | ||||||
|  |         -webkit-animation-duration: 7s; | ||||||
|  |         -moz-animation-duration: 7s; | ||||||
|  |         animation-duration: 7s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** STROKE | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-stroke { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         2% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         4% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         6% { | ||||||
|  |           -webkit-transform: translate(0.5px, 0.4px); | ||||||
|  |           -moz-transform: translate(0.5px, 0.4px); | ||||||
|  |           -ms-transform: translate(0.5px, 0.4px); | ||||||
|  |           transform: translate(0.5px, 0.4px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         8% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         10% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         12% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         14% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         16% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         18% { | ||||||
|  |           -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |           transform: translate(0.3px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         20% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         22% { | ||||||
|  |           -webkit-transform: translate(1px, 0.0px); | ||||||
|  |           -moz-transform: translate(1px, 0.0px); | ||||||
|  |           -ms-transform: translate(1px, 0.0px); | ||||||
|  |           transform: translate(1px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         24% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         26% { | ||||||
|  |           -webkit-transform: translate(-1px, 0.0px); | ||||||
|  |           -moz-transform: translate(-1px, 0.0px); | ||||||
|  |           -ms-transform: translate(-1px, 0.0px); | ||||||
|  |           transform: translate(-1px, 0.0px); | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         28% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         40% { | ||||||
|  |           fill: orange; | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         65% { | ||||||
|  |           fill: white; | ||||||
|  |           -webkit-transform: translate(-1px, 5.0px); | ||||||
|  |           -moz-transform: translate(-1px, 5.0px); | ||||||
|  |           -ms-transform: translate(-1px, 5.0px); | ||||||
|  |           transform: translate(-1px, 5.0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         61% { | ||||||
|  |           fill: orange; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |           -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |           -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |           transform: translate(0.0px, 0.0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-stroke { | ||||||
|  |         -webkit-animation-name: am-weather-stroke; | ||||||
|  |         -moz-animation-name: am-weather-stroke; | ||||||
|  |         animation-name: am-weather-stroke; | ||||||
|  |         -webkit-animation-duration: 1.11s; | ||||||
|  |         -moz-animation-duration: 1.11s; | ||||||
|  |         animation-duration: 1.11s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g id="thunder" transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="3.3 1.5 4 2.7 5.2 3.3 4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7" fill="#ffa500" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="3.3 1.5 4 2.7 5.2 3.3 4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7" | ||||||
|  |           fill="#ffa500" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-lightning" transform="matrix(1.2,0,0,1.2,-4,28)"> | ||||||
|  |       <polygon class="am-weather-stroke" points="11.1 6.9 14.3 -2.9 20.5 -2.9 16.4 4.3 20.3 4.3 11.5 14.6 14.9 6.9" | ||||||
|  |         fill="#ffa500" stroke="#fff" | ||||||
|  |         style="-moz-animation-duration:1.11s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-stroke;-moz-animation-timing-function:linear;-webkit-animation-duration:1.11s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-stroke;-webkit-animation-timing-function:linear" /> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										307
									
								
								public/weather-ico/severe-thunderstorm.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,307 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <!-- Severe Thunderstorm | Contributed by hsoJ95 on GitHub: https://github.com/hsoj95 --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |     <defs> | ||||||
|  |         <filter id="blur" x="-.17571" y="-.19575" width="1.3379" height="1.4959"> | ||||||
|  |             <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |             <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |             <feComponentTransfer> | ||||||
|  |                 <feFuncA slope="0.05" type="linear" /> | ||||||
|  |             </feComponentTransfer> | ||||||
|  |             <feMerge> | ||||||
|  |                 <feMergeNode /> | ||||||
|  |                 <feMergeNode in="SourceGraphic" /> | ||||||
|  |             </feMerge> | ||||||
|  |         </filter> | ||||||
|  |         <style type="text/css"> | ||||||
|  |             <![CDATA[ | ||||||
|  |             /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |             @keyframes am-weather-cloud-3 { | ||||||
|  |                 0% { | ||||||
|  |                     -webkit-transform: translate(-5px, 0px); | ||||||
|  |                     -moz-transform: translate(-5px, 0px); | ||||||
|  |                     -ms-transform: translate(-5px, 0px); | ||||||
|  |                     transform: translate(-5px, 0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 50% { | ||||||
|  |                     -webkit-transform: translate(10px, 0px); | ||||||
|  |                     -moz-transform: translate(10px, 0px); | ||||||
|  |                     -ms-transform: translate(10px, 0px); | ||||||
|  |                     transform: translate(10px, 0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 100% { | ||||||
|  |                     -webkit-transform: translate(-5px, 0px); | ||||||
|  |                     -moz-transform: translate(-5px, 0px); | ||||||
|  |                     -ms-transform: translate(-5px, 0px); | ||||||
|  |                     transform: translate(-5px, 0px); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             .am-weather-cloud-3 { | ||||||
|  |                 -webkit-animation-name: am-weather-cloud-3; | ||||||
|  |                 -moz-animation-name: am-weather-cloud-3; | ||||||
|  |                 animation-name: am-weather-cloud-3; | ||||||
|  |                 -webkit-animation-duration: 7s; | ||||||
|  |                 -moz-animation-duration: 7s; | ||||||
|  |                 animation-duration: 7s; | ||||||
|  |                 -webkit-animation-timing-function: linear; | ||||||
|  |                 -moz-animation-timing-function: linear; | ||||||
|  |                 animation-timing-function: linear; | ||||||
|  |                 -webkit-animation-iteration-count: infinite; | ||||||
|  |                 -moz-animation-iteration-count: infinite; | ||||||
|  |                 animation-iteration-count: infinite; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             @keyframes am-weather-cloud-1 { | ||||||
|  |                 0% { | ||||||
|  |                     -webkit-transform: translate(0px, 0px); | ||||||
|  |                     -moz-transform: translate(0px, 0px); | ||||||
|  |                     -ms-transform: translate(0px, 0px); | ||||||
|  |                     transform: translate(0px, 0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 50% { | ||||||
|  |                     -webkit-transform: translate(2px, 0px); | ||||||
|  |                     -moz-transform: translate(2px, 0px); | ||||||
|  |                     -ms-transform: translate(2px, 0px); | ||||||
|  |                     transform: translate(2px, 0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 100% { | ||||||
|  |                     -webkit-transform: translate(0px, 0px); | ||||||
|  |                     -moz-transform: translate(0px, 0px); | ||||||
|  |                     -ms-transform: translate(0px, 0px); | ||||||
|  |                     transform: translate(0px, 0px); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             .am-weather-cloud-1 { | ||||||
|  |                 -webkit-animation-name: am-weather-cloud-1; | ||||||
|  |                 -moz-animation-name: am-weather-cloud-1; | ||||||
|  |                 animation-name: am-weather-cloud-1; | ||||||
|  |                 -webkit-animation-duration: 3s; | ||||||
|  |                 -moz-animation-duration: 3s; | ||||||
|  |                 animation-duration: 3s; | ||||||
|  |                 -webkit-animation-timing-function: linear; | ||||||
|  |                 -moz-animation-timing-function: linear; | ||||||
|  |                 animation-timing-function: linear; | ||||||
|  |                 -webkit-animation-iteration-count: infinite; | ||||||
|  |                 -moz-animation-iteration-count: infinite; | ||||||
|  |                 animation-iteration-count: infinite; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             /* | ||||||
|  | ** STROKE | ||||||
|  | */ | ||||||
|  |  | ||||||
|  |             @keyframes am-weather-stroke { | ||||||
|  |                 0% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 2% { | ||||||
|  |                     -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |                     transform: translate(0.3px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 4% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 6% { | ||||||
|  |                     -webkit-transform: translate(0.5px, 0.4px); | ||||||
|  |                     -moz-transform: translate(0.5px, 0.4px); | ||||||
|  |                     -ms-transform: translate(0.5px, 0.4px); | ||||||
|  |                     transform: translate(0.5px, 0.4px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 8% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 10% { | ||||||
|  |                     -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |                     transform: translate(0.3px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 12% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 14% { | ||||||
|  |                     -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |                     transform: translate(0.3px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 16% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 18% { | ||||||
|  |                     -webkit-transform: translate(0.3px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.3px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.3px, 0.0px); | ||||||
|  |                     transform: translate(0.3px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 20% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 22% { | ||||||
|  |                     -webkit-transform: translate(1px, 0.0px); | ||||||
|  |                     -moz-transform: translate(1px, 0.0px); | ||||||
|  |                     -ms-transform: translate(1px, 0.0px); | ||||||
|  |                     transform: translate(1px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 24% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 26% { | ||||||
|  |                     -webkit-transform: translate(-1px, 0.0px); | ||||||
|  |                     -moz-transform: translate(-1px, 0.0px); | ||||||
|  |                     -ms-transform: translate(-1px, 0.0px); | ||||||
|  |                     transform: translate(-1px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 28% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 40% { | ||||||
|  |                     fill: orange; | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 65% { | ||||||
|  |                     fill: white; | ||||||
|  |                     -webkit-transform: translate(-1px, 5.0px); | ||||||
|  |                     -moz-transform: translate(-1px, 5.0px); | ||||||
|  |                     -ms-transform: translate(-1px, 5.0px); | ||||||
|  |                     transform: translate(-1px, 5.0px); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 61% { | ||||||
|  |                     fill: orange; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 100% { | ||||||
|  |                     -webkit-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -moz-transform: translate(0.0px, 0.0px); | ||||||
|  |                     -ms-transform: translate(0.0px, 0.0px); | ||||||
|  |                     transform: translate(0.0px, 0.0px); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             .am-weather-stroke { | ||||||
|  |                 -webkit-animation-name: am-weather-stroke; | ||||||
|  |                 -moz-animation-name: am-weather-stroke; | ||||||
|  |                 animation-name: am-weather-stroke; | ||||||
|  |                 -webkit-animation-duration: 1.11s; | ||||||
|  |                 -moz-animation-duration: 1.11s; | ||||||
|  |                 animation-duration: 1.11s; | ||||||
|  |                 -webkit-animation-timing-function: linear; | ||||||
|  |                 -moz-animation-timing-function: linear; | ||||||
|  |                 animation-timing-function: linear; | ||||||
|  |                 -webkit-animation-iteration-count: infinite; | ||||||
|  |                 -moz-animation-iteration-count: infinite; | ||||||
|  |                 animation-iteration-count: infinite; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             @keyframes error { | ||||||
|  |                 0% { | ||||||
|  |                     fill: #cc0000; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 50% { | ||||||
|  |                     fill: #ff0000; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 100% { | ||||||
|  |                     fill: #cc0000; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             #Shape { | ||||||
|  |                 -webkit-animation-name: error; | ||||||
|  |                 -moz-animation-name: error; | ||||||
|  |                 animation-name: error; | ||||||
|  |                 -webkit-animation-duration: 1s; | ||||||
|  |                 -moz-animation-duration: 1s; | ||||||
|  |                 animation-duration: 1s; | ||||||
|  |                 -webkit-animation-timing-function: linear; | ||||||
|  |                 -moz-animation-timing-function: linear; | ||||||
|  |                 animation-timing-function: linear; | ||||||
|  |                 -webkit-animation-iteration-count: infinite; | ||||||
|  |                 -moz-animation-iteration-count: infinite; | ||||||
|  |                 animation-iteration-count: infinite; | ||||||
|  |             } | ||||||
|  |             ]]> | ||||||
|  |         </style> | ||||||
|  |     </defs> | ||||||
|  |     <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |         <g class="am-weather-cloud-1" | ||||||
|  |             style="-moz-animation-duration:7s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-1;-moz-animation-timing-function:linear;-webkit-animation-duration:7s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-1;-webkit-animation-timing-function:linear"> | ||||||
|  |             <path transform="matrix(.6 0 0 .6 -10 -6)" | ||||||
|  |                 d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |                 fill="#666" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |         </g> | ||||||
|  |         <g class="am-weather-cloud-3"> | ||||||
|  |             <path transform="translate(-20,-11)" | ||||||
|  |                 d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |                 fill="#333" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="matrix(1.2,0,0,1.2,-4,28)"> | ||||||
|  |             <polygon class="am-weather-stroke" | ||||||
|  |                 points="11.1 6.9 14.3 -2.9 20.5 -2.9 16.4 4.3 20.3 4.3 11.5 14.6 14.9 6.9" fill="#ffa500" stroke="#fff" | ||||||
|  |                 style="-moz-animation-duration:1.11s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-stroke;-moz-animation-timing-function:linear;-webkit-animation-duration:1.11s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-stroke;-webkit-animation-timing-function:linear" /> | ||||||
|  |         </g> | ||||||
|  |         <g class="warning" transform="translate(20,30)"> | ||||||
|  |             <path | ||||||
|  |                 d="m7.7791 2.906-5.9912 10.117c-0.56283 0.95042-0.24862 2.1772 0.7018 2.74 0.30853 0.18271 0.66051 0.27911 1.0191 0.27911h11.982c1.1046 0 2-0.89543 2-2 0-0.35857-0.0964-0.71056-0.27911-1.0191l-5.9912-10.117c-0.56283-0.95042-1.7896-1.2646-2.74-0.7018-0.28918 0.17125-0.53055 0.41262-0.7018 0.7018z" | ||||||
|  |                 fill="#c00" /> | ||||||
|  |             <path d="m9.5 10.5v-5" stroke="#fff" stroke-linecap="round" stroke-width="1.5" /> | ||||||
|  |             <circle cx="9.5" cy="13" r="1" fill="#fff" /> | ||||||
|  |         </g> | ||||||
|  |     </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 13 KiB | 
							
								
								
									
										241
									
								
								public/weather-ico/snowy-1-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,241 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.23099" width="1.403" height="1.5634"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-sun-shiny { | ||||||
|  |         0% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           stroke-dasharray: 0.1px 10px; | ||||||
|  |           stroke-dashoffset: -1px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun-shiny line { | ||||||
|  |         -webkit-animation-name: am-weather-sun-shiny; | ||||||
|  |         -moz-animation-name: am-weather-sun-shiny; | ||||||
|  |         -ms-animation-name: am-weather-sun-shiny; | ||||||
|  |         animation-name: am-weather-sun-shiny; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** SNOW | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-snow { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translateX(0) translateY(0); | ||||||
|  |           -moz-transform: translateX(0) translateY(0); | ||||||
|  |           -ms-transform: translateX(0) translateY(0); | ||||||
|  |           transform: translateX(0) translateY(0); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         33.33% { | ||||||
|  |           -webkit-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           -moz-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           -ms-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           transform: translateX(-1.2px) translateY(2px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         66.66% { | ||||||
|  |           -webkit-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           -moz-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           -ms-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           transform: translateX(1.4px) translateY(4px); | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           -moz-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           -ms-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-snow-1 { | ||||||
|  |         -webkit-animation-name: am-weather-snow; | ||||||
|  |         -moz-animation-name: am-weather-snow; | ||||||
|  |         -ms-animation-name: am-weather-snow; | ||||||
|  |         animation-name: am-weather-snow; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" transform="translate(0,16)" | ||||||
|  |         style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" stroke-width="2" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-snow-1" | ||||||
|  |       style="-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |       <g transform="translate(12,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |         <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |         <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 9.6 KiB | 
							
								
								
									
										269
									
								
								public/weather-ico/snowy-1-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,269 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.23099" width="1.403" height="1.5634"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** SNOW | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-snow { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translateX(0) translateY(0); | ||||||
|  |           -moz-transform: translateX(0) translateY(0); | ||||||
|  |           -ms-transform: translateX(0) translateY(0); | ||||||
|  |           transform: translateX(0) translateY(0); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         33.33% { | ||||||
|  |           -webkit-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           -moz-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           -ms-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           transform: translateX(-1.2px) translateY(2px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         66.66% { | ||||||
|  |           -webkit-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           -moz-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           -ms-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           transform: translateX(1.4px) translateY(4px); | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           -moz-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           -ms-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-snow-1 { | ||||||
|  |         -webkit-animation-name: am-weather-snow; | ||||||
|  |         -moz-animation-name: am-weather-snow; | ||||||
|  |         -ms-animation-name: am-weather-snow; | ||||||
|  |         animation-name: am-weather-snow; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" fill="#ffa500" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" | ||||||
|  |           fill="#ffa500" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-snow-1" | ||||||
|  |       style="-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |       <g transform="translate(12,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |         <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |         <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										273
									
								
								public/weather-ico/snowy-2-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,273 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.23099" width="1.403" height="1.5634"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-sun { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(360deg); | ||||||
|  |           -moz-transform: rotate(360deg); | ||||||
|  |           -ms-transform: rotate(360deg); | ||||||
|  |           transform: rotate(360deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun { | ||||||
|  |         -webkit-animation-name: am-weather-sun; | ||||||
|  |         -moz-animation-name: am-weather-sun; | ||||||
|  |         -ms-animation-name: am-weather-sun; | ||||||
|  |         animation-name: am-weather-sun; | ||||||
|  |         -webkit-animation-duration: 9s; | ||||||
|  |         -moz-animation-duration: 9s; | ||||||
|  |         -ms-animation-duration: 9s; | ||||||
|  |         animation-duration: 9s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-sun-shiny { | ||||||
|  |         0% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           stroke-dasharray: 0.1px 10px; | ||||||
|  |           stroke-dashoffset: -1px; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           stroke-dasharray: 3px 10px; | ||||||
|  |           stroke-dashoffset: 0px; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-sun-shiny line { | ||||||
|  |         -webkit-animation-name: am-weather-sun-shiny; | ||||||
|  |         -moz-animation-name: am-weather-sun-shiny; | ||||||
|  |         -ms-animation-name: am-weather-sun-shiny; | ||||||
|  |         animation-name: am-weather-sun-shiny; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** SNOW | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-snow { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translateX(0) translateY(0); | ||||||
|  |           -moz-transform: translateX(0) translateY(0); | ||||||
|  |           -ms-transform: translateX(0) translateY(0); | ||||||
|  |           transform: translateX(0) translateY(0); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         33.33% { | ||||||
|  |           -webkit-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           -moz-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           -ms-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           transform: translateX(-1.2px) translateY(2px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         66.66% { | ||||||
|  |           -webkit-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           -moz-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           -ms-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           transform: translateX(1.4px) translateY(4px); | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           -moz-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           -ms-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-snow-1 { | ||||||
|  |         -webkit-animation-name: am-weather-snow; | ||||||
|  |         -moz-animation-name: am-weather-snow; | ||||||
|  |         -ms-animation-name: am-weather-snow; | ||||||
|  |         animation-name: am-weather-snow; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-snow-2 { | ||||||
|  |         -webkit-animation-name: am-weather-snow; | ||||||
|  |         -moz-animation-name: am-weather-snow; | ||||||
|  |         -ms-animation-name: am-weather-snow; | ||||||
|  |         animation-name: am-weather-snow; | ||||||
|  |         -webkit-animation-delay: 1.2s; | ||||||
|  |         -moz-animation-delay: 1.2s; | ||||||
|  |         -ms-animation-delay: 1.2s; | ||||||
|  |         animation-delay: 1.2s; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="translate(0,16)"> | ||||||
|  |       <g class="am-weather-sun" | ||||||
|  |         style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |         <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" stroke-width="2" /> | ||||||
|  |         <g transform="rotate(45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(135)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="scale(-1)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(225)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-90)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |         <g transform="rotate(-45)"> | ||||||
|  |           <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |             stroke-width="2" /> | ||||||
|  |         </g> | ||||||
|  |       </g> | ||||||
|  |       <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-snow-1" | ||||||
|  |       style="-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |       <g transform="translate(7,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |         <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |         <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-snow-2" | ||||||
|  |       style="-moz-animation-delay:1.2s;-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-delay:1.2s;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-delay:1.2s;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |       <g transform="translate(16,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |         <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |         <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										301
									
								
								public/weather-ico/snowy-2-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,301 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |   <defs> | ||||||
|  |     <filter id="blur" x="-.20655" y="-.23099" width="1.403" height="1.5634"> | ||||||
|  |       <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |       <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |       <feComponentTransfer> | ||||||
|  |         <feFuncA slope="0.05" type="linear" /> | ||||||
|  |       </feComponentTransfer> | ||||||
|  |       <feMerge> | ||||||
|  |         <feMergeNode /> | ||||||
|  |         <feMergeNode in="SourceGraphic" /> | ||||||
|  |       </feMerge> | ||||||
|  |     </filter> | ||||||
|  |     <style type="text/css"> | ||||||
|  |       <![CDATA[ | ||||||
|  |       /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-cloud-2 { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: translate(2px, 0px); | ||||||
|  |           -moz-transform: translate(2px, 0px); | ||||||
|  |           -ms-transform: translate(2px, 0px); | ||||||
|  |           transform: translate(2px, 0px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translate(0px, 0px); | ||||||
|  |           -moz-transform: translate(0px, 0px); | ||||||
|  |           -ms-transform: translate(0px, 0px); | ||||||
|  |           transform: translate(0px, 0px); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-cloud-2 { | ||||||
|  |         -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |         -moz-animation-name: am-weather-cloud-2; | ||||||
|  |         animation-name: am-weather-cloud-2; | ||||||
|  |         -webkit-animation-duration: 3s; | ||||||
|  |         -moz-animation-duration: 3s; | ||||||
|  |         animation-duration: 3s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-moon { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         50% { | ||||||
|  |           -webkit-transform: rotate(15deg); | ||||||
|  |           -moz-transform: rotate(15deg); | ||||||
|  |           -ms-transform: rotate(15deg); | ||||||
|  |           transform: rotate(15deg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: rotate(0deg); | ||||||
|  |           -moz-transform: rotate(0deg); | ||||||
|  |           -ms-transform: rotate(0deg); | ||||||
|  |           transform: rotate(0deg); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon { | ||||||
|  |         -webkit-animation-name: am-weather-moon; | ||||||
|  |         -moz-animation-name: am-weather-moon; | ||||||
|  |         -ms-animation-name: am-weather-moon; | ||||||
|  |         animation-name: am-weather-moon; | ||||||
|  |         -webkit-animation-duration: 6s; | ||||||
|  |         -moz-animation-duration: 6s; | ||||||
|  |         -ms-animation-duration: 6s; | ||||||
|  |         animation-duration: 6s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |         -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |         transform-origin: 12.5px 15.15px 0; | ||||||
|  |         /* TODO FF CENTER ISSUE */ | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-1 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-1 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |         animation-name: am-weather-moon-star-1; | ||||||
|  |         -webkit-animation-delay: 3s; | ||||||
|  |         -moz-animation-delay: 3s; | ||||||
|  |         -ms-animation-delay: 3s; | ||||||
|  |         animation-delay: 3s; | ||||||
|  |         -webkit-animation-duration: 5s; | ||||||
|  |         -moz-animation-duration: 5s; | ||||||
|  |         -ms-animation-duration: 5s; | ||||||
|  |         animation-duration: 5s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       @keyframes am-weather-moon-star-2 { | ||||||
|  |         0% { | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-moon-star-2 { | ||||||
|  |         -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |         -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |         -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |         animation-name: am-weather-moon-star-2; | ||||||
|  |         -webkit-animation-delay: 5s; | ||||||
|  |         -moz-animation-delay: 5s; | ||||||
|  |         -ms-animation-delay: 5s; | ||||||
|  |         animation-delay: 5s; | ||||||
|  |         -webkit-animation-duration: 4s; | ||||||
|  |         -moz-animation-duration: 4s; | ||||||
|  |         -ms-animation-duration: 4s; | ||||||
|  |         animation-duration: 4s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: 1; | ||||||
|  |         -moz-animation-iteration-count: 1; | ||||||
|  |         -ms-animation-iteration-count: 1; | ||||||
|  |         animation-iteration-count: 1; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       /* | ||||||
|  | ** SNOW | ||||||
|  | */ | ||||||
|  |       @keyframes am-weather-snow { | ||||||
|  |         0% { | ||||||
|  |           -webkit-transform: translateX(0) translateY(0); | ||||||
|  |           -moz-transform: translateX(0) translateY(0); | ||||||
|  |           -ms-transform: translateX(0) translateY(0); | ||||||
|  |           transform: translateX(0) translateY(0); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         33.33% { | ||||||
|  |           -webkit-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           -moz-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           -ms-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |           transform: translateX(-1.2px) translateY(2px); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         66.66% { | ||||||
|  |           -webkit-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           -moz-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           -ms-transform: translateX(1.4px) translateY(4px); | ||||||
|  |           transform: translateX(1.4px) translateY(4px); | ||||||
|  |           opacity: 1; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         100% { | ||||||
|  |           -webkit-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           -moz-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           -ms-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           transform: translateX(-1.6px) translateY(6px); | ||||||
|  |           opacity: 0; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-snow-1 { | ||||||
|  |         -webkit-animation-name: am-weather-snow; | ||||||
|  |         -moz-animation-name: am-weather-snow; | ||||||
|  |         -ms-animation-name: am-weather-snow; | ||||||
|  |         animation-name: am-weather-snow; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .am-weather-snow-2 { | ||||||
|  |         -webkit-animation-name: am-weather-snow; | ||||||
|  |         -moz-animation-name: am-weather-snow; | ||||||
|  |         -ms-animation-name: am-weather-snow; | ||||||
|  |         animation-name: am-weather-snow; | ||||||
|  |         -webkit-animation-delay: 1.2s; | ||||||
|  |         -moz-animation-delay: 1.2s; | ||||||
|  |         -ms-animation-delay: 1.2s; | ||||||
|  |         animation-delay: 1.2s; | ||||||
|  |         -webkit-animation-duration: 2s; | ||||||
|  |         -moz-animation-duration: 2s; | ||||||
|  |         -ms-animation-duration: 2s; | ||||||
|  |         animation-duration: 2s; | ||||||
|  |         -webkit-animation-timing-function: linear; | ||||||
|  |         -moz-animation-timing-function: linear; | ||||||
|  |         -ms-animation-timing-function: linear; | ||||||
|  |         animation-timing-function: linear; | ||||||
|  |         -webkit-animation-iteration-count: infinite; | ||||||
|  |         -moz-animation-iteration-count: infinite; | ||||||
|  |         -ms-animation-iteration-count: infinite; | ||||||
|  |         animation-iteration-count: infinite; | ||||||
|  |       } | ||||||
|  |       ]]> | ||||||
|  |     </style> | ||||||
|  |   </defs> | ||||||
|  |   <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |     <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |       <g class="am-weather-moon-star-1" | ||||||
|  |         style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" fill="#ffa500" | ||||||
|  |           stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon-star-2" | ||||||
|  |         style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |         <polygon transform="translate(20,10)" points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" | ||||||
|  |           fill="#ffa500" stroke-miterlimit="10" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-moon" | ||||||
|  |         style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |         <path | ||||||
|  |           d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |           fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-cloud-3" | ||||||
|  |       style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |       <path transform="translate(-20,-11)" | ||||||
|  |         d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |         fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-snow-1" | ||||||
|  |       style="-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |       <g transform="translate(7,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |         <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |         <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |     <g class="am-weather-snow-2" | ||||||
|  |       style="-moz-animation-delay:1.2s;-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-delay:1.2s;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-delay:1.2s;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |       <g transform="translate(16,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |         <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |         <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |         <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |       </g> | ||||||
|  |     </g> | ||||||
|  |   </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 13 KiB | 
							
								
								
									
										334
									
								
								public/weather-ico/snowy-3-day.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,334 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |    <defs> | ||||||
|  |       <filter id="blur" x="-.24684" y="-.26897" width="1.4937" height="1.6759"> | ||||||
|  |          <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |          <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |          <feComponentTransfer> | ||||||
|  |             <feFuncA slope="0.05" type="linear" /> | ||||||
|  |          </feComponentTransfer> | ||||||
|  |          <feMerge> | ||||||
|  |             <feMergeNode /> | ||||||
|  |             <feMergeNode in="SourceGraphic" /> | ||||||
|  |          </feMerge> | ||||||
|  |       </filter> | ||||||
|  |       <style type="text/css"> | ||||||
|  |          <![CDATA[ | ||||||
|  |          /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |          @keyframes am-weather-cloud-2 { | ||||||
|  |             0% { | ||||||
|  |                -webkit-transform: translate(0px, 0px); | ||||||
|  |                -moz-transform: translate(0px, 0px); | ||||||
|  |                -ms-transform: translate(0px, 0px); | ||||||
|  |                transform: translate(0px, 0px); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             50% { | ||||||
|  |                -webkit-transform: translate(2px, 0px); | ||||||
|  |                -moz-transform: translate(2px, 0px); | ||||||
|  |                -ms-transform: translate(2px, 0px); | ||||||
|  |                transform: translate(2px, 0px); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                -webkit-transform: translate(0px, 0px); | ||||||
|  |                -moz-transform: translate(0px, 0px); | ||||||
|  |                -ms-transform: translate(0px, 0px); | ||||||
|  |                transform: translate(0px, 0px); | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-cloud-2 { | ||||||
|  |             -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |             -moz-animation-name: am-weather-cloud-2; | ||||||
|  |             animation-name: am-weather-cloud-2; | ||||||
|  |             -webkit-animation-duration: 3s; | ||||||
|  |             -moz-animation-duration: 3s; | ||||||
|  |             animation-duration: 3s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          /* | ||||||
|  | ** SUN | ||||||
|  | */ | ||||||
|  |          @keyframes am-weather-sun { | ||||||
|  |             0% { | ||||||
|  |                -webkit-transform: rotate(0deg); | ||||||
|  |                -moz-transform: rotate(0deg); | ||||||
|  |                -ms-transform: rotate(0deg); | ||||||
|  |                transform: rotate(0deg); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                -webkit-transform: rotate(360deg); | ||||||
|  |                -moz-transform: rotate(360deg); | ||||||
|  |                -ms-transform: rotate(360deg); | ||||||
|  |                transform: rotate(360deg); | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-sun { | ||||||
|  |             -webkit-animation-name: am-weather-sun; | ||||||
|  |             -moz-animation-name: am-weather-sun; | ||||||
|  |             -ms-animation-name: am-weather-sun; | ||||||
|  |             animation-name: am-weather-sun; | ||||||
|  |             -webkit-animation-duration: 9s; | ||||||
|  |             -moz-animation-duration: 9s; | ||||||
|  |             -ms-animation-duration: 9s; | ||||||
|  |             animation-duration: 9s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          @keyframes am-weather-sun-shiny { | ||||||
|  |             0% { | ||||||
|  |                stroke-dasharray: 3px 10px; | ||||||
|  |                stroke-dashoffset: 0px; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             50% { | ||||||
|  |                stroke-dasharray: 0.1px 10px; | ||||||
|  |                stroke-dashoffset: -1px; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                stroke-dasharray: 3px 10px; | ||||||
|  |                stroke-dashoffset: 0px; | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-sun-shiny line { | ||||||
|  |             -webkit-animation-name: am-weather-sun-shiny; | ||||||
|  |             -moz-animation-name: am-weather-sun-shiny; | ||||||
|  |             -ms-animation-name: am-weather-sun-shiny; | ||||||
|  |             animation-name: am-weather-sun-shiny; | ||||||
|  |             -webkit-animation-duration: 2s; | ||||||
|  |             -moz-animation-duration: 2s; | ||||||
|  |             -ms-animation-duration: 2s; | ||||||
|  |             animation-duration: 2s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          /* | ||||||
|  | ** SNOW | ||||||
|  | */ | ||||||
|  |          @keyframes am-weather-snow { | ||||||
|  |             0% { | ||||||
|  |                -webkit-transform: translateX(0) translateY(0); | ||||||
|  |                -moz-transform: translateX(0) translateY(0); | ||||||
|  |                -ms-transform: translateX(0) translateY(0); | ||||||
|  |                transform: translateX(0) translateY(0); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             33.33% { | ||||||
|  |                -webkit-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |                -moz-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |                -ms-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |                transform: translateX(-1.2px) translateY(2px); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             66.66% { | ||||||
|  |                -webkit-transform: translateX(1.4px) translateY(4px); | ||||||
|  |                -moz-transform: translateX(1.4px) translateY(4px); | ||||||
|  |                -ms-transform: translateX(1.4px) translateY(4px); | ||||||
|  |                transform: translateX(1.4px) translateY(4px); | ||||||
|  |                opacity: 1; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                -webkit-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |                -moz-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |                -ms-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |                transform: translateX(-1.6px) translateY(6px); | ||||||
|  |                opacity: 0; | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          @keyframes am-weather-snow-reverse { | ||||||
|  |             0% { | ||||||
|  |                -webkit-transform: translateX(0) translateY(0); | ||||||
|  |                -moz-transform: translateX(0) translateY(0); | ||||||
|  |                -ms-transform: translateX(0) translateY(0); | ||||||
|  |                transform: translateX(0) translateY(0); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             33.33% { | ||||||
|  |                -webkit-transform: translateX(1.2px) translateY(2px); | ||||||
|  |                -moz-transform: translateX(1.2px) translateY(2px); | ||||||
|  |                -ms-transform: translateX(1.2px) translateY(2px); | ||||||
|  |                transform: translateX(1.2px) translateY(2px); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             66.66% { | ||||||
|  |                -webkit-transform: translateX(-1.4px) translateY(4px); | ||||||
|  |                -moz-transform: translateX(-1.4px) translateY(4px); | ||||||
|  |                -ms-transform: translateX(-1.4px) translateY(4px); | ||||||
|  |                transform: translateX(-1.4px) translateY(4px); | ||||||
|  |                opacity: 1; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                -webkit-transform: translateX(1.6px) translateY(6px); | ||||||
|  |                -moz-transform: translateX(1.6px) translateY(6px); | ||||||
|  |                -ms-transform: translateX(1.6px) translateY(6px); | ||||||
|  |                transform: translateX(1.6px) translateY(6px); | ||||||
|  |                opacity: 0; | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-snow-1 { | ||||||
|  |             -webkit-animation-name: am-weather-snow; | ||||||
|  |             -moz-animation-name: am-weather-snow; | ||||||
|  |             -ms-animation-name: am-weather-snow; | ||||||
|  |             animation-name: am-weather-snow; | ||||||
|  |             -webkit-animation-duration: 2s; | ||||||
|  |             -moz-animation-duration: 2s; | ||||||
|  |             -ms-animation-duration: 2s; | ||||||
|  |             animation-duration: 2s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-snow-2 { | ||||||
|  |             -webkit-animation-name: am-weather-snow; | ||||||
|  |             -moz-animation-name: am-weather-snow; | ||||||
|  |             -ms-animation-name: am-weather-snow; | ||||||
|  |             animation-name: am-weather-snow; | ||||||
|  |             -webkit-animation-delay: 1.2s; | ||||||
|  |             -moz-animation-delay: 1.2s; | ||||||
|  |             -ms-animation-delay: 1.2s; | ||||||
|  |             animation-delay: 1.2s; | ||||||
|  |             -webkit-animation-duration: 2s; | ||||||
|  |             -moz-animation-duration: 2s; | ||||||
|  |             -ms-animation-duration: 2s; | ||||||
|  |             animation-duration: 2s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-snow-3 { | ||||||
|  |             -webkit-animation-name: am-weather-snow-reverse; | ||||||
|  |             -moz-animation-name: am-weather-snow-reverse; | ||||||
|  |             -ms-animation-name: am-weather-snow-reverse; | ||||||
|  |             animation-name: am-weather-snow-reverse; | ||||||
|  |             -webkit-animation-duration: 2s; | ||||||
|  |             -moz-animation-duration: 2s; | ||||||
|  |             -ms-animation-duration: 2s; | ||||||
|  |             animation-duration: 2s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |          ]]> | ||||||
|  |       </style> | ||||||
|  |    </defs> | ||||||
|  |    <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |       <g transform="translate(0,16)"> | ||||||
|  |          <g class="am-weather-sun" | ||||||
|  |             style="-moz-animation-duration:9s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-sun;-moz-animation-timing-function:linear;-ms-animation-duration:9s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-sun;-ms-animation-timing-function:linear;-webkit-animation-duration:9s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-sun;-webkit-animation-timing-function:linear"> | ||||||
|  |             <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |                stroke-width="2" /> | ||||||
|  |             <g transform="rotate(45)"> | ||||||
|  |                <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |                   stroke-width="2" /> | ||||||
|  |             </g> | ||||||
|  |             <g transform="rotate(90)"> | ||||||
|  |                <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |                   stroke-width="2" /> | ||||||
|  |             </g> | ||||||
|  |             <g transform="rotate(135)"> | ||||||
|  |                <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |                   stroke-width="2" /> | ||||||
|  |             </g> | ||||||
|  |             <g transform="scale(-1)"> | ||||||
|  |                <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |                   stroke-width="2" /> | ||||||
|  |             </g> | ||||||
|  |             <g transform="rotate(225)"> | ||||||
|  |                <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |                   stroke-width="2" /> | ||||||
|  |             </g> | ||||||
|  |             <g transform="rotate(-90)"> | ||||||
|  |                <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |                   stroke-width="2" /> | ||||||
|  |             </g> | ||||||
|  |             <g transform="rotate(-45)"> | ||||||
|  |                <line transform="translate(0,9)" y2="3" fill="none" stroke="#ffa500" stroke-linecap="round" | ||||||
|  |                   stroke-width="2" /> | ||||||
|  |             </g> | ||||||
|  |          </g> | ||||||
|  |          <circle r="5" fill="#ffa500" stroke="#ffa500" stroke-width="2" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-cloud-2" | ||||||
|  |          style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |          <path transform="translate(-20,-11)" | ||||||
|  |             d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |             fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-snow-1" | ||||||
|  |          style="-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |          <g transform="translate(3,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |             <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |             <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |          </g> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-snow-2" | ||||||
|  |          style="-moz-animation-delay:1.2s;-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-delay:1.2s;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-delay:1.2s;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |          <g transform="translate(11,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |             <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |             <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |          </g> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-snow-3" | ||||||
|  |          style="-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow-reverse;-moz-animation-timing-function:linear;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow-reverse;-ms-animation-timing-function:linear;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow-reverse;-webkit-animation-timing-function:linear"> | ||||||
|  |          <g transform="translate(20,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |             <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |             <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |          </g> | ||||||
|  |       </g> | ||||||
|  |    </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 15 KiB | 
							
								
								
									
										361
									
								
								public/weather-ico/snowy-3-night.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,361 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- (c) ammap.com | SVG weather icons --> | ||||||
|  | <svg width="56" height="48" version="1.1" xmlns="http://www.w3.org/2000/svg"> | ||||||
|  |    <defs> | ||||||
|  |       <filter id="blur" x="-.24684" y="-.26897" width="1.4937" height="1.6759"> | ||||||
|  |          <feGaussianBlur in="SourceAlpha" stdDeviation="3" /> | ||||||
|  |          <feOffset dx="0" dy="4" result="offsetblur" /> | ||||||
|  |          <feComponentTransfer> | ||||||
|  |             <feFuncA slope="0.05" type="linear" /> | ||||||
|  |          </feComponentTransfer> | ||||||
|  |          <feMerge> | ||||||
|  |             <feMergeNode /> | ||||||
|  |             <feMergeNode in="SourceGraphic" /> | ||||||
|  |          </feMerge> | ||||||
|  |       </filter> | ||||||
|  |       <style type="text/css"> | ||||||
|  |          <![CDATA[ | ||||||
|  |          /* | ||||||
|  | ** CLOUDS | ||||||
|  | */ | ||||||
|  |          @keyframes am-weather-cloud-2 { | ||||||
|  |             0% { | ||||||
|  |                -webkit-transform: translate(0px, 0px); | ||||||
|  |                -moz-transform: translate(0px, 0px); | ||||||
|  |                -ms-transform: translate(0px, 0px); | ||||||
|  |                transform: translate(0px, 0px); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             50% { | ||||||
|  |                -webkit-transform: translate(2px, 0px); | ||||||
|  |                -moz-transform: translate(2px, 0px); | ||||||
|  |                -ms-transform: translate(2px, 0px); | ||||||
|  |                transform: translate(2px, 0px); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                -webkit-transform: translate(0px, 0px); | ||||||
|  |                -moz-transform: translate(0px, 0px); | ||||||
|  |                -ms-transform: translate(0px, 0px); | ||||||
|  |                transform: translate(0px, 0px); | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-cloud-2 { | ||||||
|  |             -webkit-animation-name: am-weather-cloud-2; | ||||||
|  |             -moz-animation-name: am-weather-cloud-2; | ||||||
|  |             animation-name: am-weather-cloud-2; | ||||||
|  |             -webkit-animation-duration: 3s; | ||||||
|  |             -moz-animation-duration: 3s; | ||||||
|  |             animation-duration: 3s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          /* | ||||||
|  | ** MOON | ||||||
|  | */ | ||||||
|  |          @keyframes am-weather-moon { | ||||||
|  |             0% { | ||||||
|  |                -webkit-transform: rotate(0deg); | ||||||
|  |                -moz-transform: rotate(0deg); | ||||||
|  |                -ms-transform: rotate(0deg); | ||||||
|  |                transform: rotate(0deg); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             50% { | ||||||
|  |                -webkit-transform: rotate(15deg); | ||||||
|  |                -moz-transform: rotate(15deg); | ||||||
|  |                -ms-transform: rotate(15deg); | ||||||
|  |                transform: rotate(15deg); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                -webkit-transform: rotate(0deg); | ||||||
|  |                -moz-transform: rotate(0deg); | ||||||
|  |                -ms-transform: rotate(0deg); | ||||||
|  |                transform: rotate(0deg); | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-moon { | ||||||
|  |             -webkit-animation-name: am-weather-moon; | ||||||
|  |             -moz-animation-name: am-weather-moon; | ||||||
|  |             -ms-animation-name: am-weather-moon; | ||||||
|  |             animation-name: am-weather-moon; | ||||||
|  |             -webkit-animation-duration: 6s; | ||||||
|  |             -moz-animation-duration: 6s; | ||||||
|  |             -ms-animation-duration: 6s; | ||||||
|  |             animation-duration: 6s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |             -webkit-transform-origin: 12.5px 15.15px 0; | ||||||
|  |             /* TODO FF CENTER ISSUE */ | ||||||
|  |             -moz-transform-origin: 12.5px 15.15px 0; | ||||||
|  |             /* TODO FF CENTER ISSUE */ | ||||||
|  |             -ms-transform-origin: 12.5px 15.15px 0; | ||||||
|  |             /* TODO FF CENTER ISSUE */ | ||||||
|  |             transform-origin: 12.5px 15.15px 0; | ||||||
|  |             /* TODO FF CENTER ISSUE */ | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          @keyframes am-weather-moon-star-1 { | ||||||
|  |             0% { | ||||||
|  |                opacity: 0; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                opacity: 1; | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-moon-star-1 { | ||||||
|  |             -webkit-animation-name: am-weather-moon-star-1; | ||||||
|  |             -moz-animation-name: am-weather-moon-star-1; | ||||||
|  |             -ms-animation-name: am-weather-moon-star-1; | ||||||
|  |             animation-name: am-weather-moon-star-1; | ||||||
|  |             -webkit-animation-delay: 3s; | ||||||
|  |             -moz-animation-delay: 3s; | ||||||
|  |             -ms-animation-delay: 3s; | ||||||
|  |             animation-delay: 3s; | ||||||
|  |             -webkit-animation-duration: 5s; | ||||||
|  |             -moz-animation-duration: 5s; | ||||||
|  |             -ms-animation-duration: 5s; | ||||||
|  |             animation-duration: 5s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: 1; | ||||||
|  |             -moz-animation-iteration-count: 1; | ||||||
|  |             -ms-animation-iteration-count: 1; | ||||||
|  |             animation-iteration-count: 1; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          @keyframes am-weather-moon-star-2 { | ||||||
|  |             0% { | ||||||
|  |                opacity: 0; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                opacity: 1; | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-moon-star-2 { | ||||||
|  |             -webkit-animation-name: am-weather-moon-star-2; | ||||||
|  |             -moz-animation-name: am-weather-moon-star-2; | ||||||
|  |             -ms-animation-name: am-weather-moon-star-2; | ||||||
|  |             animation-name: am-weather-moon-star-2; | ||||||
|  |             -webkit-animation-delay: 5s; | ||||||
|  |             -moz-animation-delay: 5s; | ||||||
|  |             -ms-animation-delay: 5s; | ||||||
|  |             animation-delay: 5s; | ||||||
|  |             -webkit-animation-duration: 4s; | ||||||
|  |             -moz-animation-duration: 4s; | ||||||
|  |             -ms-animation-duration: 4s; | ||||||
|  |             animation-duration: 4s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: 1; | ||||||
|  |             -moz-animation-iteration-count: 1; | ||||||
|  |             -ms-animation-iteration-count: 1; | ||||||
|  |             animation-iteration-count: 1; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          /* | ||||||
|  | ** SNOW | ||||||
|  | */ | ||||||
|  |          @keyframes am-weather-snow { | ||||||
|  |             0% { | ||||||
|  |                -webkit-transform: translateX(0) translateY(0); | ||||||
|  |                -moz-transform: translateX(0) translateY(0); | ||||||
|  |                -ms-transform: translateX(0) translateY(0); | ||||||
|  |                transform: translateX(0) translateY(0); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             33.33% { | ||||||
|  |                -webkit-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |                -moz-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |                -ms-transform: translateX(-1.2px) translateY(2px); | ||||||
|  |                transform: translateX(-1.2px) translateY(2px); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             66.66% { | ||||||
|  |                -webkit-transform: translateX(1.4px) translateY(4px); | ||||||
|  |                -moz-transform: translateX(1.4px) translateY(4px); | ||||||
|  |                -ms-transform: translateX(1.4px) translateY(4px); | ||||||
|  |                transform: translateX(1.4px) translateY(4px); | ||||||
|  |                opacity: 1; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                -webkit-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |                -moz-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |                -ms-transform: translateX(-1.6px) translateY(6px); | ||||||
|  |                transform: translateX(-1.6px) translateY(6px); | ||||||
|  |                opacity: 0; | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          @keyframes am-weather-snow-reverse { | ||||||
|  |             0% { | ||||||
|  |                -webkit-transform: translateX(0) translateY(0); | ||||||
|  |                -moz-transform: translateX(0) translateY(0); | ||||||
|  |                -ms-transform: translateX(0) translateY(0); | ||||||
|  |                transform: translateX(0) translateY(0); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             33.33% { | ||||||
|  |                -webkit-transform: translateX(1.2px) translateY(2px); | ||||||
|  |                -moz-transform: translateX(1.2px) translateY(2px); | ||||||
|  |                -ms-transform: translateX(1.2px) translateY(2px); | ||||||
|  |                transform: translateX(1.2px) translateY(2px); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             66.66% { | ||||||
|  |                -webkit-transform: translateX(-1.4px) translateY(4px); | ||||||
|  |                -moz-transform: translateX(-1.4px) translateY(4px); | ||||||
|  |                -ms-transform: translateX(-1.4px) translateY(4px); | ||||||
|  |                transform: translateX(-1.4px) translateY(4px); | ||||||
|  |                opacity: 1; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             100% { | ||||||
|  |                -webkit-transform: translateX(1.6px) translateY(6px); | ||||||
|  |                -moz-transform: translateX(1.6px) translateY(6px); | ||||||
|  |                -ms-transform: translateX(1.6px) translateY(6px); | ||||||
|  |                transform: translateX(1.6px) translateY(6px); | ||||||
|  |                opacity: 0; | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-snow-1 { | ||||||
|  |             -webkit-animation-name: am-weather-snow; | ||||||
|  |             -moz-animation-name: am-weather-snow; | ||||||
|  |             -ms-animation-name: am-weather-snow; | ||||||
|  |             animation-name: am-weather-snow; | ||||||
|  |             -webkit-animation-duration: 2s; | ||||||
|  |             -moz-animation-duration: 2s; | ||||||
|  |             -ms-animation-duration: 2s; | ||||||
|  |             animation-duration: 2s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-snow-2 { | ||||||
|  |             -webkit-animation-name: am-weather-snow; | ||||||
|  |             -moz-animation-name: am-weather-snow; | ||||||
|  |             -ms-animation-name: am-weather-snow; | ||||||
|  |             animation-name: am-weather-snow; | ||||||
|  |             -webkit-animation-delay: 1.2s; | ||||||
|  |             -moz-animation-delay: 1.2s; | ||||||
|  |             -ms-animation-delay: 1.2s; | ||||||
|  |             animation-delay: 1.2s; | ||||||
|  |             -webkit-animation-duration: 2s; | ||||||
|  |             -moz-animation-duration: 2s; | ||||||
|  |             -ms-animation-duration: 2s; | ||||||
|  |             animation-duration: 2s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |  | ||||||
|  |          .am-weather-snow-3 { | ||||||
|  |             -webkit-animation-name: am-weather-snow-reverse; | ||||||
|  |             -moz-animation-name: am-weather-snow-reverse; | ||||||
|  |             -ms-animation-name: am-weather-snow-reverse; | ||||||
|  |             animation-name: am-weather-snow-reverse; | ||||||
|  |             -webkit-animation-duration: 2s; | ||||||
|  |             -moz-animation-duration: 2s; | ||||||
|  |             -ms-animation-duration: 2s; | ||||||
|  |             animation-duration: 2s; | ||||||
|  |             -webkit-animation-timing-function: linear; | ||||||
|  |             -moz-animation-timing-function: linear; | ||||||
|  |             -ms-animation-timing-function: linear; | ||||||
|  |             animation-timing-function: linear; | ||||||
|  |             -webkit-animation-iteration-count: infinite; | ||||||
|  |             -moz-animation-iteration-count: infinite; | ||||||
|  |             -ms-animation-iteration-count: infinite; | ||||||
|  |             animation-iteration-count: infinite; | ||||||
|  |          } | ||||||
|  |          ]]> | ||||||
|  |       </style> | ||||||
|  |    </defs> | ||||||
|  |    <g transform="translate(16,-2)" filter="url(#blur)"> | ||||||
|  |       <g transform="matrix(.8 0 0 .8 16 4)"> | ||||||
|  |          <g class="am-weather-moon-star-1" | ||||||
|  |             style="-moz-animation-delay:3s;-moz-animation-duration:5s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-1;-moz-animation-timing-function:linear;-ms-animation-delay:3s;-ms-animation-duration:5s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-1;-ms-animation-timing-function:linear;-webkit-animation-delay:3s;-webkit-animation-duration:5s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-1;-webkit-animation-timing-function:linear"> | ||||||
|  |             <polygon points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" fill="#ffa500" | ||||||
|  |                stroke-miterlimit="10" /> | ||||||
|  |          </g> | ||||||
|  |          <g class="am-weather-moon-star-2" | ||||||
|  |             style="-moz-animation-delay:5s;-moz-animation-duration:4s;-moz-animation-iteration-count:1;-moz-animation-name:am-weather-moon-star-2;-moz-animation-timing-function:linear;-ms-animation-delay:5s;-ms-animation-duration:4s;-ms-animation-iteration-count:1;-ms-animation-name:am-weather-moon-star-2;-ms-animation-timing-function:linear;-webkit-animation-delay:5s;-webkit-animation-duration:4s;-webkit-animation-iteration-count:1;-webkit-animation-name:am-weather-moon-star-2;-webkit-animation-timing-function:linear"> | ||||||
|  |             <polygon transform="translate(20,10)" points="4 4 3.3 5.2 2.7 4 1.5 3.3 2.7 2.7 3.3 1.5 4 2.7 5.2 3.3" | ||||||
|  |                fill="#ffa500" stroke-miterlimit="10" /> | ||||||
|  |          </g> | ||||||
|  |          <g class="am-weather-moon" | ||||||
|  |             style="-moz-animation-duration:6s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-moon;-moz-animation-timing-function:linear;-moz-transform-origin:12.5px 15.15px 0;-ms-animation-duration:6s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-moon;-ms-animation-timing-function:linear;-ms-transform-origin:12.5px 15.15px 0;-webkit-animation-duration:6s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-moon;-webkit-animation-timing-function:linear;-webkit-transform-origin:12.5px 15.15px 0"> | ||||||
|  |             <path | ||||||
|  |                d="m14.5 13.2c0-3.7 2-6.9 5-8.7-1.5-0.9-3.2-1.3-5-1.3-5.5 0-10 4.5-10 10s4.5 10 10 10c1.8 0 3.5-0.5 5-1.3-3-1.7-5-5-5-8.7z" | ||||||
|  |                fill="#ffa500" stroke="#ffa500" stroke-linejoin="round" stroke-width="2" /> | ||||||
|  |          </g> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-cloud-2" | ||||||
|  |          style="-moz-animation-duration:3s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-cloud-2;-moz-animation-timing-function:linear;-webkit-animation-duration:3s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-cloud-2;-webkit-animation-timing-function:linear"> | ||||||
|  |          <path transform="translate(-20,-11)" | ||||||
|  |             d="m47.7 35.4c0-4.6-3.7-8.2-8.2-8.2-1 0-1.9 0.2-2.8 0.5-0.3-3.4-3.1-6.2-6.6-6.2-3.7 0-6.7 3-6.7 6.7 0 0.8 0.2 1.6 0.4 2.3-0.3-0.1-0.7-0.1-1-0.1-3.7 0-6.7 3-6.7 6.7 0 3.6 2.9 6.6 6.5 6.7h17.2c4.4-0.5 7.9-4 7.9-8.4z" | ||||||
|  |             fill="#57a0ee" stroke="#fff" stroke-linejoin="round" stroke-width="1.2" /> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-snow-1" | ||||||
|  |          style="-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |          <g transform="translate(3,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |             <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |             <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |          </g> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-snow-2" | ||||||
|  |          style="-moz-animation-delay:1.2s;-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow;-moz-animation-timing-function:linear;-ms-animation-delay:1.2s;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow;-ms-animation-timing-function:linear;-webkit-animation-delay:1.2s;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow;-webkit-animation-timing-function:linear"> | ||||||
|  |          <g transform="translate(11,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |             <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |             <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |          </g> | ||||||
|  |       </g> | ||||||
|  |       <g class="am-weather-snow-3" | ||||||
|  |          style="-moz-animation-duration:2s;-moz-animation-iteration-count:infinite;-moz-animation-name:am-weather-snow-reverse;-moz-animation-timing-function:linear;-ms-animation-duration:2s;-ms-animation-iteration-count:infinite;-ms-animation-name:am-weather-snow-reverse;-ms-animation-timing-function:linear;-webkit-animation-duration:2s;-webkit-animation-iteration-count:infinite;-webkit-animation-name:am-weather-snow-reverse;-webkit-animation-timing-function:linear"> | ||||||
|  |          <g transform="translate(20,28)" fill="none" stroke="#57a0ee" stroke-linecap="round"> | ||||||
|  |             <line transform="translate(0,9)" y1="-2.5" y2="2.5" stroke-width="1.2" /> | ||||||
|  |             <line transform="rotate(45,-10.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(90,-4.5,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |             <line transform="rotate(135,-1.864,4.5)" y1="-2.5" y2="2.5" /> | ||||||
|  |          </g> | ||||||
|  |       </g> | ||||||
|  |    </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 17 KiB | 
| @@ -25,6 +25,9 @@ API_URL = "" # Ollama API URL - http://host.docker.internal:11434 | |||||||
| [MODELS.DEEPSEEK] | [MODELS.DEEPSEEK] | ||||||
| API_KEY = "" | API_KEY = "" | ||||||
|  |  | ||||||
|  | [MODELS.AIMLAPI] | ||||||
|  | API_KEY = "" # Required to use AI/ML API chat and embedding models | ||||||
|  |  | ||||||
| [MODELS.LM_STUDIO] | [MODELS.LM_STUDIO] | ||||||
| API_URL = "" # LM Studio API URL - http://host.docker.internal:1234 | API_URL = "" # LM Studio API URL - http://host.docker.internal:1234 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -223,7 +223,7 @@ export const POST = async (req: Request) => { | |||||||
|  |  | ||||||
|     if (body.chatModel?.provider === 'custom_openai') { |     if (body.chatModel?.provider === 'custom_openai') { | ||||||
|       llm = new ChatOpenAI({ |       llm = new ChatOpenAI({ | ||||||
|         openAIApiKey: getCustomOpenaiApiKey(), |         apiKey: getCustomOpenaiApiKey(), | ||||||
|         modelName: getCustomOpenaiModelName(), |         modelName: getCustomOpenaiModelName(), | ||||||
|         temperature: 0.7, |         temperature: 0.7, | ||||||
|         configuration: { |         configuration: { | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ import { | |||||||
|   getOllamaApiEndpoint, |   getOllamaApiEndpoint, | ||||||
|   getOpenaiApiKey, |   getOpenaiApiKey, | ||||||
|   getDeepseekApiKey, |   getDeepseekApiKey, | ||||||
|  |   getAimlApiKey, | ||||||
|   getLMStudioApiEndpoint, |   getLMStudioApiEndpoint, | ||||||
|   updateConfig, |   updateConfig, | ||||||
| } from '@/lib/config'; | } from '@/lib/config'; | ||||||
| @@ -57,6 +58,7 @@ export const GET = async (req: Request) => { | |||||||
|     config['groqApiKey'] = getGroqApiKey(); |     config['groqApiKey'] = getGroqApiKey(); | ||||||
|     config['geminiApiKey'] = getGeminiApiKey(); |     config['geminiApiKey'] = getGeminiApiKey(); | ||||||
|     config['deepseekApiKey'] = getDeepseekApiKey(); |     config['deepseekApiKey'] = getDeepseekApiKey(); | ||||||
|  |     config['aimlApiKey'] = getAimlApiKey(); | ||||||
|     config['customOpenaiApiUrl'] = getCustomOpenaiApiUrl(); |     config['customOpenaiApiUrl'] = getCustomOpenaiApiUrl(); | ||||||
|     config['customOpenaiApiKey'] = getCustomOpenaiApiKey(); |     config['customOpenaiApiKey'] = getCustomOpenaiApiKey(); | ||||||
|     config['customOpenaiModelName'] = getCustomOpenaiModelName(); |     config['customOpenaiModelName'] = getCustomOpenaiModelName(); | ||||||
| @@ -95,6 +97,9 @@ export const POST = async (req: Request) => { | |||||||
|         DEEPSEEK: { |         DEEPSEEK: { | ||||||
|           API_KEY: config.deepseekApiKey, |           API_KEY: config.deepseekApiKey, | ||||||
|         }, |         }, | ||||||
|  |         AIMLAPI: { | ||||||
|  |           API_KEY: config.aimlApiKey, | ||||||
|  |         }, | ||||||
|         LM_STUDIO: { |         LM_STUDIO: { | ||||||
|           API_URL: config.lmStudioApiUrl, |           API_URL: config.lmStudioApiUrl, | ||||||
|         }, |         }, | ||||||
|   | |||||||
| @@ -16,7 +16,14 @@ const topics = ['AI', 'tech']; /* TODO: Add UI to customize this */ | |||||||
|  |  | ||||||
| export const GET = async (req: Request) => { | export const GET = async (req: Request) => { | ||||||
|   try { |   try { | ||||||
|     const data = ( |     const params = new URL(req.url).searchParams; | ||||||
|  |     const mode: 'normal' | 'preview' = | ||||||
|  |       (params.get('mode') as 'normal' | 'preview') || 'normal'; | ||||||
|  |  | ||||||
|  |     let data = []; | ||||||
|  |  | ||||||
|  |     if (mode === 'normal') { | ||||||
|  |       data = ( | ||||||
|         await Promise.all([ |         await Promise.all([ | ||||||
|           ...new Array(articleWebsites.length * topics.length) |           ...new Array(articleWebsites.length * topics.length) | ||||||
|             .fill(0) |             .fill(0) | ||||||
| @@ -29,6 +36,7 @@ export const GET = async (req: Request) => { | |||||||
|                   { |                   { | ||||||
|                     engines: ['bing news'], |                     engines: ['bing news'], | ||||||
|                     pageno: 1, |                     pageno: 1, | ||||||
|  |                     language: 'en', | ||||||
|                   }, |                   }, | ||||||
|                 ) |                 ) | ||||||
|               ).results; |               ).results; | ||||||
| @@ -38,6 +46,18 @@ export const GET = async (req: Request) => { | |||||||
|         .map((result) => result) |         .map((result) => result) | ||||||
|         .flat() |         .flat() | ||||||
|         .sort(() => Math.random() - 0.5); |         .sort(() => Math.random() - 0.5); | ||||||
|  |     } else { | ||||||
|  |       data = ( | ||||||
|  |         await searchSearxng( | ||||||
|  |           `site:${articleWebsites[Math.floor(Math.random() * articleWebsites.length)]} ${topics[Math.floor(Math.random() * topics.length)]}`, | ||||||
|  |           { | ||||||
|  |             engines: ['bing news'], | ||||||
|  |             pageno: 1, | ||||||
|  |             language: 'en', | ||||||
|  |           }, | ||||||
|  |         ) | ||||||
|  |       ).results; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     return Response.json( |     return Response.json( | ||||||
|       { |       { | ||||||
|   | |||||||
| @@ -49,7 +49,7 @@ export const POST = async (req: Request) => { | |||||||
|  |  | ||||||
|     if (body.chatModel?.provider === 'custom_openai') { |     if (body.chatModel?.provider === 'custom_openai') { | ||||||
|       llm = new ChatOpenAI({ |       llm = new ChatOpenAI({ | ||||||
|         openAIApiKey: getCustomOpenaiApiKey(), |         apiKey: getCustomOpenaiApiKey(), | ||||||
|         modelName: getCustomOpenaiModelName(), |         modelName: getCustomOpenaiModelName(), | ||||||
|         temperature: 0.7, |         temperature: 0.7, | ||||||
|         configuration: { |         configuration: { | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ export const POST = async (req: Request) => { | |||||||
|     if (body.chatModel?.provider === 'custom_openai') { |     if (body.chatModel?.provider === 'custom_openai') { | ||||||
|       llm = new ChatOpenAI({ |       llm = new ChatOpenAI({ | ||||||
|         modelName: body.chatModel?.name || getCustomOpenaiModelName(), |         modelName: body.chatModel?.name || getCustomOpenaiModelName(), | ||||||
|         openAIApiKey: |         apiKey: | ||||||
|           body.chatModel?.customOpenAIKey || getCustomOpenaiApiKey(), |           body.chatModel?.customOpenAIKey || getCustomOpenaiApiKey(), | ||||||
|         temperature: 0.7, |         temperature: 0.7, | ||||||
|         configuration: { |         configuration: { | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ export const POST = async (req: Request) => { | |||||||
|  |  | ||||||
|     if (body.chatModel?.provider === 'custom_openai') { |     if (body.chatModel?.provider === 'custom_openai') { | ||||||
|       llm = new ChatOpenAI({ |       llm = new ChatOpenAI({ | ||||||
|         openAIApiKey: getCustomOpenaiApiKey(), |         apiKey: getCustomOpenaiApiKey(), | ||||||
|         modelName: getCustomOpenaiModelName(), |         modelName: getCustomOpenaiModelName(), | ||||||
|         temperature: 0.7, |         temperature: 0.7, | ||||||
|         configuration: { |         configuration: { | ||||||
|   | |||||||
| @@ -49,7 +49,7 @@ export const POST = async (req: Request) => { | |||||||
|  |  | ||||||
|     if (body.chatModel?.provider === 'custom_openai') { |     if (body.chatModel?.provider === 'custom_openai') { | ||||||
|       llm = new ChatOpenAI({ |       llm = new ChatOpenAI({ | ||||||
|         openAIApiKey: getCustomOpenaiApiKey(), |         apiKey: getCustomOpenaiApiKey(), | ||||||
|         modelName: getCustomOpenaiModelName(), |         modelName: getCustomOpenaiModelName(), | ||||||
|         temperature: 0.7, |         temperature: 0.7, | ||||||
|         configuration: { |         configuration: { | ||||||
|   | |||||||
							
								
								
									
										167
									
								
								src/app/api/weather/route.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,167 @@ | |||||||
|  | export const POST = async (req: Request) => { | ||||||
|  |   try { | ||||||
|  |     const body: { lat: number; lng: number; temperatureUnit: 'C' | 'F' } = | ||||||
|  |       await req.json(); | ||||||
|  |  | ||||||
|  |     if (!body.lat || !body.lng) { | ||||||
|  |       return Response.json( | ||||||
|  |         { | ||||||
|  |           message: 'Invalid request.', | ||||||
|  |         }, | ||||||
|  |         { status: 400 }, | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     const res = await fetch( | ||||||
|  |       `https://api.open-meteo.com/v1/forecast?latitude=${body.lat}&longitude=${body.lng}¤t=weather_code,temperature_2m,is_day,relative_humidity_2m,wind_speed_10m&timezone=auto${body.temperatureUnit === 'C' ? '' : '&temperature_unit=fahrenheit'}`, | ||||||
|  |     ); | ||||||
|  |  | ||||||
|  |     const data = await res.json(); | ||||||
|  |  | ||||||
|  |     if (data.error) { | ||||||
|  |       console.error(`Error fetching weather data: ${data.reason}`); | ||||||
|  |       return Response.json( | ||||||
|  |         { | ||||||
|  |           message: 'An error has occurred.', | ||||||
|  |         }, | ||||||
|  |         { status: 500 }, | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     const weather: { | ||||||
|  |       temperature: number; | ||||||
|  |       condition: string; | ||||||
|  |       humidity: number; | ||||||
|  |       windSpeed: number; | ||||||
|  |       icon: string; | ||||||
|  |       temperatureUnit: 'C' | 'F'; | ||||||
|  |     } = { | ||||||
|  |       temperature: data.current.temperature_2m, | ||||||
|  |       condition: '', | ||||||
|  |       humidity: data.current.relative_humidity_2m, | ||||||
|  |       windSpeed: data.current.wind_speed_10m, | ||||||
|  |       icon: '', | ||||||
|  |       temperatureUnit: body.temperatureUnit, | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     const code = data.current.weather_code; | ||||||
|  |     const isDay = data.current.is_day === 1; | ||||||
|  |     const dayOrNight = isDay ? 'day' : 'night'; | ||||||
|  |  | ||||||
|  |     switch (code) { | ||||||
|  |       case 0: | ||||||
|  |         weather.icon = `clear-${dayOrNight}`; | ||||||
|  |         weather.condition = 'Clear'; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 1: | ||||||
|  |         weather.condition = 'Mainly Clear'; | ||||||
|  |       case 2: | ||||||
|  |         weather.condition = 'Partly Cloudy'; | ||||||
|  |       case 3: | ||||||
|  |         weather.icon = `cloudy-1-${dayOrNight}`; | ||||||
|  |         weather.condition = 'Cloudy'; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 45: | ||||||
|  |         weather.condition = 'Fog'; | ||||||
|  |       case 48: | ||||||
|  |         weather.icon = `fog-${dayOrNight}`; | ||||||
|  |         weather.condition = 'Fog'; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 51: | ||||||
|  |         weather.condition = 'Light Drizzle'; | ||||||
|  |       case 53: | ||||||
|  |         weather.condition = 'Moderate Drizzle'; | ||||||
|  |       case 55: | ||||||
|  |         weather.icon = `rainy-1-${dayOrNight}`; | ||||||
|  |         weather.condition = 'Dense Drizzle'; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 56: | ||||||
|  |         weather.condition = 'Light Freezing Drizzle'; | ||||||
|  |       case 57: | ||||||
|  |         weather.icon = `frost-${dayOrNight}`; | ||||||
|  |         weather.condition = 'Dense Freezing Drizzle'; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 61: | ||||||
|  |         weather.condition = 'Slight Rain'; | ||||||
|  |       case 63: | ||||||
|  |         weather.condition = 'Moderate Rain'; | ||||||
|  |       case 65: | ||||||
|  |         weather.condition = 'Heavy Rain'; | ||||||
|  |         weather.icon = `rainy-2-${dayOrNight}`; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 66: | ||||||
|  |         weather.condition = 'Light Freezing Rain'; | ||||||
|  |       case 67: | ||||||
|  |         weather.condition = 'Heavy Freezing Rain'; | ||||||
|  |         weather.icon = 'rain-and-sleet-mix'; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 71: | ||||||
|  |         weather.condition = 'Slight Snow Fall'; | ||||||
|  |       case 73: | ||||||
|  |         weather.condition = 'Moderate Snow Fall'; | ||||||
|  |       case 75: | ||||||
|  |         weather.condition = 'Heavy Snow Fall'; | ||||||
|  |         weather.icon = `snowy-2-${dayOrNight}`; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 77: | ||||||
|  |         weather.condition = 'Snow'; | ||||||
|  |         weather.icon = `snowy-1-${dayOrNight}`; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 80: | ||||||
|  |         weather.condition = 'Slight Rain Showers'; | ||||||
|  |       case 81: | ||||||
|  |         weather.condition = 'Moderate Rain Showers'; | ||||||
|  |       case 82: | ||||||
|  |         weather.condition = 'Heavy Rain Showers'; | ||||||
|  |         weather.icon = `rainy-3-${dayOrNight}`; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 85: | ||||||
|  |         weather.condition = 'Slight Snow Showers'; | ||||||
|  |       case 86: | ||||||
|  |         weather.condition = 'Moderate Snow Showers'; | ||||||
|  |       case 87: | ||||||
|  |         weather.condition = 'Heavy Snow Showers'; | ||||||
|  |         weather.icon = `snowy-3-${dayOrNight}`; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 95: | ||||||
|  |         weather.condition = 'Thunderstorm'; | ||||||
|  |         weather.icon = `scattered-thunderstorms-${dayOrNight}`; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       case 96: | ||||||
|  |         weather.condition = 'Thunderstorm with Slight Hail'; | ||||||
|  |       case 99: | ||||||
|  |         weather.condition = 'Thunderstorm with Heavy Hail'; | ||||||
|  |         weather.icon = 'severe-thunderstorm'; | ||||||
|  |         break; | ||||||
|  |  | ||||||
|  |       default: | ||||||
|  |         weather.icon = `clear-${dayOrNight}`; | ||||||
|  |         weather.condition = 'Clear'; | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return Response.json(weather); | ||||||
|  |   } catch (err) { | ||||||
|  |     console.error('An error occurred while getting home widgets', err); | ||||||
|  |     return Response.json( | ||||||
|  |       { | ||||||
|  |         message: 'An error has occurred.', | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         status: 500, | ||||||
|  |       }, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | }; | ||||||
| @@ -11,3 +11,11 @@ | |||||||
|     display: none; |     display: none; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @media screen and (-webkit-min-device-pixel-ratio: 0) { | ||||||
|  |   select, | ||||||
|  |   textarea, | ||||||
|  |   input { | ||||||
|  |     font-size: 16px !important; | ||||||
|  |   } | ||||||
|  | } | ||||||
|   | |||||||
							
								
								
									
										54
									
								
								src/app/manifest.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,54 @@ | |||||||
|  | import type { MetadataRoute } from 'next'; | ||||||
|  |  | ||||||
|  | export default function manifest(): MetadataRoute.Manifest { | ||||||
|  |   return { | ||||||
|  |     name: 'Perplexica - Chat with the internet', | ||||||
|  |     short_name: 'Perplexica', | ||||||
|  |     description: | ||||||
|  |       'Perplexica is an AI powered chatbot that is connected to the internet.', | ||||||
|  |     start_url: '/', | ||||||
|  |     display: 'standalone', | ||||||
|  |     background_color: '#0a0a0a', | ||||||
|  |     theme_color: '#0a0a0a', | ||||||
|  |     screenshots: [ | ||||||
|  |       { | ||||||
|  |         src: '/screenshots/p1.png', | ||||||
|  |         form_factor: 'wide', | ||||||
|  |         sizes: '2560x1600', | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         src: '/screenshots/p2.png', | ||||||
|  |         form_factor: 'wide', | ||||||
|  |         sizes: '2560x1600', | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         src: '/screenshots/p1_small.png', | ||||||
|  |         form_factor: 'narrow', | ||||||
|  |         sizes: '828x1792', | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         src: '/screenshots/p2_small.png', | ||||||
|  |         form_factor: 'narrow', | ||||||
|  |         sizes: '828x1792', | ||||||
|  |       }, | ||||||
|  |     ], | ||||||
|  |     icons: [ | ||||||
|  |       { | ||||||
|  |         src: '/icon-50.png', | ||||||
|  |         sizes: '50x50', | ||||||
|  |         type: 'image/png' as const, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         src: '/icon-100.png', | ||||||
|  |         sizes: '100x100', | ||||||
|  |         type: 'image/png', | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         src: '/icon.png', | ||||||
|  |         sizes: '440x440', | ||||||
|  |         type: 'image/png', | ||||||
|  |         purpose: 'any', | ||||||
|  |       }, | ||||||
|  |     ], | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @@ -23,6 +23,7 @@ interface SettingsType { | |||||||
|   ollamaApiUrl: string; |   ollamaApiUrl: string; | ||||||
|   lmStudioApiUrl: string; |   lmStudioApiUrl: string; | ||||||
|   deepseekApiKey: string; |   deepseekApiKey: string; | ||||||
|  |   aimlApiKey: string; | ||||||
|   customOpenaiApiKey: string; |   customOpenaiApiKey: string; | ||||||
|   customOpenaiApiUrl: string; |   customOpenaiApiUrl: string; | ||||||
|   customOpenaiModelName: string; |   customOpenaiModelName: string; | ||||||
| @@ -147,6 +148,7 @@ const Page = () => { | |||||||
|   const [automaticImageSearch, setAutomaticImageSearch] = useState(false); |   const [automaticImageSearch, setAutomaticImageSearch] = useState(false); | ||||||
|   const [automaticVideoSearch, setAutomaticVideoSearch] = useState(false); |   const [automaticVideoSearch, setAutomaticVideoSearch] = useState(false); | ||||||
|   const [systemInstructions, setSystemInstructions] = useState<string>(''); |   const [systemInstructions, setSystemInstructions] = useState<string>(''); | ||||||
|  |   const [temperatureUnit, setTemperatureUnit] = useState<'C' | 'F'>('C'); | ||||||
|   const [savingStates, setSavingStates] = useState<Record<string, boolean>>({}); |   const [savingStates, setSavingStates] = useState<Record<string, boolean>>({}); | ||||||
|  |  | ||||||
|   useEffect(() => { |   useEffect(() => { | ||||||
| @@ -209,6 +211,8 @@ const Page = () => { | |||||||
|  |  | ||||||
|       setSystemInstructions(localStorage.getItem('systemInstructions')!); |       setSystemInstructions(localStorage.getItem('systemInstructions')!); | ||||||
|  |  | ||||||
|  |       setTemperatureUnit(localStorage.getItem('temperatureUnit')! as 'C' | 'F'); | ||||||
|  |  | ||||||
|       setIsLoading(false); |       setIsLoading(false); | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
| @@ -367,6 +371,8 @@ const Page = () => { | |||||||
|         localStorage.setItem('embeddingModel', value); |         localStorage.setItem('embeddingModel', value); | ||||||
|       } else if (key === 'systemInstructions') { |       } else if (key === 'systemInstructions') { | ||||||
|         localStorage.setItem('systemInstructions', value); |         localStorage.setItem('systemInstructions', value); | ||||||
|  |       } else if (key === 'temperatureUnit') { | ||||||
|  |         localStorage.setItem('temperatureUnit', value.toString()); | ||||||
|       } |       } | ||||||
|     } catch (err) { |     } catch (err) { | ||||||
|       console.error('Failed to save:', err); |       console.error('Failed to save:', err); | ||||||
| @@ -415,13 +421,35 @@ const Page = () => { | |||||||
|       ) : ( |       ) : ( | ||||||
|         config && ( |         config && ( | ||||||
|           <div className="flex flex-col space-y-6 pb-28 lg:pb-8"> |           <div className="flex flex-col space-y-6 pb-28 lg:pb-8"> | ||||||
|             <SettingsSection title="Appearance"> |             <SettingsSection title="Preferences"> | ||||||
|               <div className="flex flex-col space-y-1"> |               <div className="flex flex-col space-y-1"> | ||||||
|                 <p className="text-black/70 dark:text-white/70 text-sm"> |                 <p className="text-black/70 dark:text-white/70 text-sm"> | ||||||
|                   Theme |                   Theme | ||||||
|                 </p> |                 </p> | ||||||
|                 <ThemeSwitcher /> |                 <ThemeSwitcher /> | ||||||
|               </div> |               </div> | ||||||
|  |               <div className="flex flex-col space-y-1"> | ||||||
|  |                 <p className="text-black/70 dark:text-white/70 text-sm"> | ||||||
|  |                   Temperature Unit | ||||||
|  |                 </p> | ||||||
|  |                 <Select | ||||||
|  |                   value={temperatureUnit ?? undefined} | ||||||
|  |                   onChange={(e) => { | ||||||
|  |                     setTemperatureUnit(e.target.value as 'C' | 'F'); | ||||||
|  |                     saveConfig('temperatureUnit', e.target.value); | ||||||
|  |                   }} | ||||||
|  |                   options={[ | ||||||
|  |                     { | ||||||
|  |                       label: 'Celsius', | ||||||
|  |                       value: 'C', | ||||||
|  |                     }, | ||||||
|  |                     { | ||||||
|  |                       label: 'Fahrenheit', | ||||||
|  |                       value: 'F', | ||||||
|  |                     }, | ||||||
|  |                   ]} | ||||||
|  |                 /> | ||||||
|  |               </div> | ||||||
|             </SettingsSection> |             </SettingsSection> | ||||||
|  |  | ||||||
|             <SettingsSection title="Automatic Search"> |             <SettingsSection title="Automatic Search"> | ||||||
| @@ -515,7 +543,7 @@ const Page = () => { | |||||||
|             <SettingsSection title="System Instructions"> |             <SettingsSection title="System Instructions"> | ||||||
|               <div className="flex flex-col space-y-4"> |               <div className="flex flex-col space-y-4"> | ||||||
|                 <Textarea |                 <Textarea | ||||||
|                   value={systemInstructions} |                   value={systemInstructions ?? undefined} | ||||||
|                   isSaving={savingStates['systemInstructions']} |                   isSaving={savingStates['systemInstructions']} | ||||||
|                   onChange={(e) => { |                   onChange={(e) => { | ||||||
|                     setSystemInstructions(e.target.value); |                     setSystemInstructions(e.target.value); | ||||||
| @@ -862,6 +890,25 @@ const Page = () => { | |||||||
|                   /> |                   /> | ||||||
|                 </div> |                 </div> | ||||||
|  |  | ||||||
|  |                 <div className="flex flex-col space-y-1"> | ||||||
|  |                   <p className="text-black/70 dark:text-white/70 text-sm"> | ||||||
|  |                     AI/ML API Key | ||||||
|  |                   </p> | ||||||
|  |                   <Input | ||||||
|  |                     type="text" | ||||||
|  |                     placeholder="AI/ML API Key" | ||||||
|  |                     value={config.aimlApiKey} | ||||||
|  |                     isSaving={savingStates['aimlApiKey']} | ||||||
|  |                     onChange={(e) => { | ||||||
|  |                       setConfig((prev) => ({ | ||||||
|  |                         ...prev!, | ||||||
|  |                         aimlApiKey: e.target.value, | ||||||
|  |                       })); | ||||||
|  |                     }} | ||||||
|  |                     onSave={(value) => saveConfig('aimlApiKey', value)} | ||||||
|  |                   /> | ||||||
|  |                 </div> | ||||||
|  |  | ||||||
|                 <div className="flex flex-col space-y-1"> |                 <div className="flex flex-col space-y-1"> | ||||||
|                   <p className="text-black/70 dark:text-white/70 text-sm"> |                   <p className="text-black/70 dark:text-white/70 text-sm"> | ||||||
|                     LM Studio API URL |                     LM Studio API URL | ||||||
|   | |||||||
| @@ -82,14 +82,29 @@ const checkConfig = async ( | |||||||
|     ) { |     ) { | ||||||
|       if (!chatModel || !chatModelProvider) { |       if (!chatModel || !chatModelProvider) { | ||||||
|         const chatModelProviders = providers.chatModelProviders; |         const chatModelProviders = providers.chatModelProviders; | ||||||
|  |         const chatModelProvidersKeys = Object.keys(chatModelProviders); | ||||||
|  |  | ||||||
|  |         if (!chatModelProviders || chatModelProvidersKeys.length === 0) { | ||||||
|  |           return toast.error('No chat models available'); | ||||||
|  |         } else { | ||||||
|           chatModelProvider = |           chatModelProvider = | ||||||
|           chatModelProvider || Object.keys(chatModelProviders)[0]; |             chatModelProvidersKeys.find( | ||||||
|  |               (provider) => | ||||||
|  |                 Object.keys(chatModelProviders[provider]).length > 0, | ||||||
|  |             ) || chatModelProvidersKeys[0]; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if ( | ||||||
|  |           chatModelProvider === 'custom_openai' && | ||||||
|  |           Object.keys(chatModelProviders[chatModelProvider]).length === 0 | ||||||
|  |         ) { | ||||||
|  |           toast.error( | ||||||
|  |             "Looks like you haven't configured any chat model providers. Please configure them from the settings page or the config file.", | ||||||
|  |           ); | ||||||
|  |           return setHasError(true); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         chatModel = Object.keys(chatModelProviders[chatModelProvider])[0]; |         chatModel = Object.keys(chatModelProviders[chatModelProvider])[0]; | ||||||
|  |  | ||||||
|         if (!chatModelProviders || Object.keys(chatModelProviders).length === 0) |  | ||||||
|           return toast.error('No chat models available'); |  | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       if (!embeddingModel || !embeddingModelProvider) { |       if (!embeddingModel || !embeddingModelProvider) { | ||||||
| @@ -117,7 +132,8 @@ const checkConfig = async ( | |||||||
|  |  | ||||||
|       if ( |       if ( | ||||||
|         Object.keys(chatModelProviders).length > 0 && |         Object.keys(chatModelProviders).length > 0 && | ||||||
|         !chatModelProviders[chatModelProvider] |         (!chatModelProviders[chatModelProvider] || | ||||||
|  |           Object.keys(chatModelProviders[chatModelProvider]).length === 0) | ||||||
|       ) { |       ) { | ||||||
|         const chatModelProvidersKeys = Object.keys(chatModelProviders); |         const chatModelProvidersKeys = Object.keys(chatModelProviders); | ||||||
|         chatModelProvider = |         chatModelProvider = | ||||||
| @@ -132,6 +148,16 @@ const checkConfig = async ( | |||||||
|         chatModelProvider && |         chatModelProvider && | ||||||
|         !chatModelProviders[chatModelProvider][chatModel] |         !chatModelProviders[chatModelProvider][chatModel] | ||||||
|       ) { |       ) { | ||||||
|  |         if ( | ||||||
|  |           chatModelProvider === 'custom_openai' && | ||||||
|  |           Object.keys(chatModelProviders[chatModelProvider]).length === 0 | ||||||
|  |         ) { | ||||||
|  |           toast.error( | ||||||
|  |             "Looks like you haven't configured any chat model providers. Please configure them from the settings page or the config file.", | ||||||
|  |           ); | ||||||
|  |           return setHasError(true); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         chatModel = Object.keys( |         chatModel = Object.keys( | ||||||
|           chatModelProviders[ |           chatModelProviders[ | ||||||
|             Object.keys(chatModelProviders[chatModelProvider]).length > 0 |             Object.keys(chatModelProviders[chatModelProvider]).length > 0 | ||||||
| @@ -139,6 +165,7 @@ const checkConfig = async ( | |||||||
|               : Object.keys(chatModelProviders)[0] |               : Object.keys(chatModelProviders)[0] | ||||||
|           ], |           ], | ||||||
|         )[0]; |         )[0]; | ||||||
|  |  | ||||||
|         localStorage.setItem('chatModel', chatModel); |         localStorage.setItem('chatModel', chatModel); | ||||||
|       } |       } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,8 +1,9 @@ | |||||||
| import { Settings } from 'lucide-react'; | import { Settings } from 'lucide-react'; | ||||||
| import EmptyChatMessageInput from './EmptyChatMessageInput'; | import EmptyChatMessageInput from './EmptyChatMessageInput'; | ||||||
| import { useState } from 'react'; |  | ||||||
| import { File } from './ChatWindow'; | import { File } from './ChatWindow'; | ||||||
| import Link from 'next/link'; | import Link from 'next/link'; | ||||||
|  | import WeatherWidget from './WeatherWidget'; | ||||||
|  | import NewsArticleWidget from './NewsArticleWidget'; | ||||||
|  |  | ||||||
| const EmptyChat = ({ | const EmptyChat = ({ | ||||||
|   sendMessage, |   sendMessage, | ||||||
| @@ -25,8 +26,6 @@ const EmptyChat = ({ | |||||||
|   files: File[]; |   files: File[]; | ||||||
|   setFiles: (files: File[]) => void; |   setFiles: (files: File[]) => void; | ||||||
| }) => { | }) => { | ||||||
|   const [isSettingsOpen, setIsSettingsOpen] = useState(false); |  | ||||||
|  |  | ||||||
|   return ( |   return ( | ||||||
|     <div className="relative"> |     <div className="relative"> | ||||||
|       <div className="absolute w-full flex flex-row items-center justify-end mr-5 mt-5"> |       <div className="absolute w-full flex flex-row items-center justify-end mr-5 mt-5"> | ||||||
| @@ -34,7 +33,8 @@ const EmptyChat = ({ | |||||||
|           <Settings className="cursor-pointer lg:hidden" /> |           <Settings className="cursor-pointer lg:hidden" /> | ||||||
|         </Link> |         </Link> | ||||||
|       </div> |       </div> | ||||||
|       <div className="flex flex-col items-center justify-center min-h-screen max-w-screen-sm mx-auto p-2 space-y-8"> |       <div className="flex flex-col items-center justify-center min-h-screen max-w-screen-sm mx-auto p-2 space-y-4"> | ||||||
|  |         <div className="flex flex-col items-center justify-center w-full space-y-8"> | ||||||
|           <h2 className="text-black/70 dark:text-white/70 text-3xl font-medium -mt-8"> |           <h2 className="text-black/70 dark:text-white/70 text-3xl font-medium -mt-8"> | ||||||
|             Research begins here. |             Research begins here. | ||||||
|           </h2> |           </h2> | ||||||
| @@ -50,6 +50,15 @@ const EmptyChat = ({ | |||||||
|             setFiles={setFiles} |             setFiles={setFiles} | ||||||
|           /> |           /> | ||||||
|         </div> |         </div> | ||||||
|  |         <div className="flex flex-col w-full gap-4 mt-2 sm:flex-row sm:justify-center"> | ||||||
|  |           <div className="flex-1 w-full"> | ||||||
|  |             <WeatherWidget /> | ||||||
|  |           </div> | ||||||
|  |           <div className="flex-1 w-full"> | ||||||
|  |             <NewsArticleWidget /> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|     </div> |     </div> | ||||||
|   ); |   ); | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										71
									
								
								src/components/NewsArticleWidget.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,71 @@ | |||||||
|  | import { useEffect, useState } from 'react'; | ||||||
|  |  | ||||||
|  | interface Article { | ||||||
|  |   title: string; | ||||||
|  |   content: string; | ||||||
|  |   url: string; | ||||||
|  |   thumbnail: string; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const NewsArticleWidget = () => { | ||||||
|  |   const [article, setArticle] = useState<Article | null>(null); | ||||||
|  |   const [loading, setLoading] = useState(true); | ||||||
|  |   const [error, setError] = useState(false); | ||||||
|  |  | ||||||
|  |   useEffect(() => { | ||||||
|  |     fetch('/api/discover?mode=preview') | ||||||
|  |       .then((res) => res.json()) | ||||||
|  |       .then((data) => { | ||||||
|  |         const articles = (data.blogs || []).filter((a: Article) => a.thumbnail); | ||||||
|  |         setArticle(articles[Math.floor(Math.random() * articles.length)]); | ||||||
|  |         setLoading(false); | ||||||
|  |       }) | ||||||
|  |       .catch(() => { | ||||||
|  |         setError(true); | ||||||
|  |         setLoading(false); | ||||||
|  |       }); | ||||||
|  |   }, []); | ||||||
|  |  | ||||||
|  |   return ( | ||||||
|  |     <div className="bg-light-secondary dark:bg-dark-secondary rounded-xl border border-light-200 dark:border-dark-200 shadow-sm flex flex-row items-center w-full h-24 min-h-[96px] max-h-[96px] px-3 py-2 gap-3 overflow-hidden"> | ||||||
|  |       {loading ? ( | ||||||
|  |         <> | ||||||
|  |           <div className="animate-pulse flex flex-row items-center w-full h-full"> | ||||||
|  |             <div className="rounded-lg w-16 min-w-16 max-w-16 h-16 min-h-16 max-h-16 bg-light-200 dark:bg-dark-200 mr-3" /> | ||||||
|  |             <div className="flex flex-col justify-center flex-1 h-full w-0 gap-2"> | ||||||
|  |               <div className="h-4 w-3/4 rounded bg-light-200 dark:bg-dark-200" /> | ||||||
|  |               <div className="h-3 w-1/2 rounded bg-light-200 dark:bg-dark-200" /> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </> | ||||||
|  |       ) : error ? ( | ||||||
|  |         <div className="w-full text-xs text-red-400">Could not load news.</div> | ||||||
|  |       ) : article ? ( | ||||||
|  |         <a | ||||||
|  |           href={`/?q=Summary: ${article.url}`} | ||||||
|  |           className="flex flex-row items-center w-full h-full group" | ||||||
|  |         > | ||||||
|  |           <img | ||||||
|  |             className="object-cover rounded-lg w-16 min-w-16 max-w-16 h-16 min-h-16 max-h-16 border border-light-200 dark:border-dark-200 bg-light-200 dark:bg-dark-200 group-hover:opacity-90 transition" | ||||||
|  |             src={ | ||||||
|  |               new URL(article.thumbnail).origin + | ||||||
|  |               new URL(article.thumbnail).pathname + | ||||||
|  |               `?id=${new URL(article.thumbnail).searchParams.get('id')}` | ||||||
|  |             } | ||||||
|  |             alt={article.title} | ||||||
|  |           /> | ||||||
|  |           <div className="flex flex-col justify-center flex-1 h-full pl-3 w-0"> | ||||||
|  |             <div className="font-bold text-xs text-black dark:text-white leading-tight truncate overflow-hidden whitespace-nowrap"> | ||||||
|  |               {article.title} | ||||||
|  |             </div> | ||||||
|  |             <p className="text-black/70 dark:text-white/70 text-xs leading-snug truncate overflow-hidden whitespace-nowrap"> | ||||||
|  |               {article.content} | ||||||
|  |             </p> | ||||||
|  |           </div> | ||||||
|  |         </a> | ||||||
|  |       ) : null} | ||||||
|  |     </div> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export default NewsArticleWidget; | ||||||
							
								
								
									
										159
									
								
								src/components/WeatherWidget.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,159 @@ | |||||||
|  | import { Cloud, Sun, CloudRain, CloudSnow, Wind } from 'lucide-react'; | ||||||
|  | import { useEffect, useState } from 'react'; | ||||||
|  |  | ||||||
|  | const WeatherWidget = () => { | ||||||
|  |   const [data, setData] = useState({ | ||||||
|  |     temperature: 0, | ||||||
|  |     condition: '', | ||||||
|  |     location: '', | ||||||
|  |     humidity: 0, | ||||||
|  |     windSpeed: 0, | ||||||
|  |     icon: '', | ||||||
|  |     temperatureUnit: 'C', | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   const [loading, setLoading] = useState(true); | ||||||
|  |  | ||||||
|  |   useEffect(() => { | ||||||
|  |     const getApproxLocation = async () => { | ||||||
|  |       const res = await fetch('https://ipwhois.app/json/'); | ||||||
|  |       const data = await res.json(); | ||||||
|  |  | ||||||
|  |       return { | ||||||
|  |         latitude: data.latitude, | ||||||
|  |         longitude: data.longitude, | ||||||
|  |         city: data.city, | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     const getLocation = async ( | ||||||
|  |       callback: (location: { | ||||||
|  |         latitude: number; | ||||||
|  |         longitude: number; | ||||||
|  |         city: string; | ||||||
|  |       }) => void, | ||||||
|  |     ) => { | ||||||
|  |       if (navigator.geolocation) { | ||||||
|  |         const result = await navigator.permissions.query({ | ||||||
|  |           name: 'geolocation', | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         if (result.state === 'granted') { | ||||||
|  |           navigator.geolocation.getCurrentPosition(async (position) => { | ||||||
|  |             const res = await fetch( | ||||||
|  |               `https://api-bdc.io/data/reverse-geocode-client?latitude=${position.coords.latitude}&longitude=${position.coords.longitude}&localityLanguage=en`, | ||||||
|  |               { | ||||||
|  |                 method: 'GET', | ||||||
|  |                 headers: { | ||||||
|  |                   'Content-Type': 'application/json', | ||||||
|  |                 }, | ||||||
|  |               }, | ||||||
|  |             ); | ||||||
|  |  | ||||||
|  |             const data = await res.json(); | ||||||
|  |  | ||||||
|  |             callback({ | ||||||
|  |               latitude: position.coords.latitude, | ||||||
|  |               longitude: position.coords.longitude, | ||||||
|  |               city: data.locality, | ||||||
|  |             }); | ||||||
|  |           }); | ||||||
|  |         } else if (result.state === 'prompt') { | ||||||
|  |           callback(await getApproxLocation()); | ||||||
|  |           navigator.geolocation.getCurrentPosition((position) => {}); | ||||||
|  |         } else if (result.state === 'denied') { | ||||||
|  |           callback(await getApproxLocation()); | ||||||
|  |         } | ||||||
|  |       } else { | ||||||
|  |         callback(await getApproxLocation()); | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     getLocation(async (location) => { | ||||||
|  |       const res = await fetch(`/api/weather`, { | ||||||
|  |         method: 'POST', | ||||||
|  |         body: JSON.stringify({ | ||||||
|  |           lat: location.latitude, | ||||||
|  |           lng: location.longitude, | ||||||
|  |           temperatureUnit: localStorage.getItem('temperatureUnit') ?? 'C', | ||||||
|  |         }), | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |       const data = await res.json(); | ||||||
|  |  | ||||||
|  |       if (res.status !== 200) { | ||||||
|  |         console.error('Error fetching weather data'); | ||||||
|  |         setLoading(false); | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       setData({ | ||||||
|  |         temperature: data.temperature, | ||||||
|  |         condition: data.condition, | ||||||
|  |         location: location.city, | ||||||
|  |         humidity: data.humidity, | ||||||
|  |         windSpeed: data.windSpeed, | ||||||
|  |         icon: data.icon, | ||||||
|  |         temperatureUnit: data.temperatureUnit, | ||||||
|  |       }); | ||||||
|  |       setLoading(false); | ||||||
|  |     }); | ||||||
|  |   }, []); | ||||||
|  |  | ||||||
|  |   return ( | ||||||
|  |     <div className="bg-light-secondary dark:bg-dark-secondary rounded-xl border border-light-200 dark:border-dark-200 shadow-sm flex flex-row items-center w-full h-24 min-h-[96px] max-h-[96px] px-3 py-2 gap-3"> | ||||||
|  |       {loading ? ( | ||||||
|  |         <> | ||||||
|  |           <div className="flex flex-col items-center justify-center w-16 min-w-16 max-w-16 h-full animate-pulse"> | ||||||
|  |             <div className="h-10 w-10 rounded-full bg-light-200 dark:bg-dark-200 mb-2" /> | ||||||
|  |             <div className="h-4 w-10 rounded bg-light-200 dark:bg-dark-200" /> | ||||||
|  |           </div> | ||||||
|  |           <div className="flex flex-col justify-between flex-1 h-full py-1 animate-pulse"> | ||||||
|  |             <div className="flex flex-row items-center justify-between"> | ||||||
|  |               <div className="h-3 w-20 rounded bg-light-200 dark:bg-dark-200" /> | ||||||
|  |               <div className="h-3 w-12 rounded bg-light-200 dark:bg-dark-200" /> | ||||||
|  |             </div> | ||||||
|  |             <div className="h-3 w-16 rounded bg-light-200 dark:bg-dark-200 mt-1" /> | ||||||
|  |             <div className="flex flex-row justify-between w-full mt-auto pt-1 border-t border-light-200 dark:border-dark-200"> | ||||||
|  |               <div className="h-3 w-16 rounded bg-light-200 dark:bg-dark-200" /> | ||||||
|  |               <div className="h-3 w-8 rounded bg-light-200 dark:bg-dark-200" /> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </> | ||||||
|  |       ) : ( | ||||||
|  |         <> | ||||||
|  |           <div className="flex flex-col items-center justify-center w-16 min-w-16 max-w-16 h-full"> | ||||||
|  |             <img | ||||||
|  |               src={`/weather-ico/${data.icon}.svg`} | ||||||
|  |               alt={data.condition} | ||||||
|  |               className="h-10 w-auto" | ||||||
|  |             /> | ||||||
|  |             <span className="text-base font-semibold text-black dark:text-white"> | ||||||
|  |               {data.temperature}°{data.temperatureUnit} | ||||||
|  |             </span> | ||||||
|  |           </div> | ||||||
|  |           <div className="flex flex-col justify-between flex-1 h-full py-1"> | ||||||
|  |             <div className="flex flex-row items-center justify-between"> | ||||||
|  |               <span className="text-xs font-medium text-black dark:text-white"> | ||||||
|  |                 {data.location} | ||||||
|  |               </span> | ||||||
|  |               <span className="flex items-center text-xs text-black/60 dark:text-white/60"> | ||||||
|  |                 <Wind className="w-3 h-3 mr-1" /> | ||||||
|  |                 {data.windSpeed} km/h | ||||||
|  |               </span> | ||||||
|  |             </div> | ||||||
|  |             <span className="text-xs text-black/60 dark:text-white/60 mt-1"> | ||||||
|  |               {data.condition} | ||||||
|  |             </span> | ||||||
|  |             <div className="flex flex-row justify-between w-full mt-auto pt-1 border-t border-light-200 dark:border-dark-200 text-xs text-black/60 dark:text-white/60"> | ||||||
|  |               <span>Humidity: {data.humidity}%</span> | ||||||
|  |               <span>Now</span> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </> | ||||||
|  |       )} | ||||||
|  |     </div> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export default WeatherWidget; | ||||||
| @@ -35,6 +35,9 @@ interface Config { | |||||||
|     DEEPSEEK: { |     DEEPSEEK: { | ||||||
|       API_KEY: string; |       API_KEY: string; | ||||||
|     }; |     }; | ||||||
|  |     AIMLAPI: { | ||||||
|  |       API_KEY: string; | ||||||
|  |     }; | ||||||
|     LM_STUDIO: { |     LM_STUDIO: { | ||||||
|       API_URL: string; |       API_URL: string; | ||||||
|     }; |     }; | ||||||
| @@ -85,6 +88,8 @@ export const getOllamaApiEndpoint = () => loadConfig().MODELS.OLLAMA.API_URL; | |||||||
|  |  | ||||||
| export const getDeepseekApiKey = () => loadConfig().MODELS.DEEPSEEK.API_KEY; | export const getDeepseekApiKey = () => loadConfig().MODELS.DEEPSEEK.API_KEY; | ||||||
|  |  | ||||||
|  | export const getAimlApiKey = () => loadConfig().MODELS.AIMLAPI.API_KEY; | ||||||
|  |  | ||||||
| export const getCustomOpenaiApiKey = () => | export const getCustomOpenaiApiKey = () => | ||||||
|   loadConfig().MODELS.CUSTOM_OPENAI.API_KEY; |   loadConfig().MODELS.CUSTOM_OPENAI.API_KEY; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,63 +1,41 @@ | |||||||
| export const webSearchRetrieverPrompt = ` | export const webSearchRetrieverPrompt = ` | ||||||
| You are an AI question rephraser. You will be given a conversation and a follow-up question,  you will have to rephrase the follow up question so it is a standalone question and can be used by another LLM to search the web for information to answer it. | You are an AI question rephraser. You will be given a conversation and a follow-up question; rephrase it into a standalone question that another LLM can use to search the web. | ||||||
| If it is a simple writing task or a greeting (unless the greeting contains a question after it) like Hi, Hello, How are you, etc. than a question then you need to return \`not_needed\` as the response (This is because the LLM won't need to search the web for finding information on this topic). |  | ||||||
| If the user asks some question from some URL or wants you to summarize a PDF or a webpage (via URL) you need to return the links inside the \`links\` XML block and the question inside the \`question\` XML block. If the user wants to you to summarize the webpage or the PDF you need to return \`summarize\` inside the \`question\` XML block in place of a question and the link to summarize in the \`links\` XML block. |  | ||||||
| You must always return the rephrased question inside the \`question\` XML block, if there are no links in the follow-up question then don't insert a \`links\` XML block in your response. |  | ||||||
|  |  | ||||||
| There are several examples attached for your reference inside the below \`examples\` XML block | Return ONLY a JSON object that matches this schema: | ||||||
|  | query: string   // the standalone question (or "summarize") | ||||||
|  | links: string[] // URLs extracted from the user query (empty if none) | ||||||
|  | searchRequired: boolean // true if web search is needed, false for greetings/simple writing tasks | ||||||
|  | searchMode: "" | "normal" | "news" // "" when searchRequired is false; "news" if the user asks for news/articles, otherwise "normal" | ||||||
|  |  | ||||||
| <examples> | Rules | ||||||
| 1. Follow up question: What is the capital of France | - Greetings / simple writing tasks → query:"", links:[], searchRequired:false, searchMode:"" | ||||||
| Rephrased question:\` | - Summarizing a URL → query:"summarize", links:[url...], searchRequired:true, searchMode:"normal" | ||||||
| <question> | - Asking for news/articles → searchMode:"news" | ||||||
| Capital of france |  | ||||||
| </question> | Examples | ||||||
| \` | 1. Follow-up: What is the capital of France? | ||||||
|  | "query":"capital of France","links":[],"searchRequired":true,"searchMode":"normal" | ||||||
|  |  | ||||||
| 2. Hi, how are you? | 2. Hi, how are you? | ||||||
| Rephrased question\` | "query":"","links":[],"searchRequired":false,"searchMode":"" | ||||||
| <question> |  | ||||||
| not_needed |  | ||||||
| </question> |  | ||||||
| \` |  | ||||||
|  |  | ||||||
| 3. Follow up question: What is Docker? | 3. Follow-up: What is Docker? | ||||||
| Rephrased question: \` | "query":"what is Docker","links":[],"searchRequired":true,"searchMode":"normal" | ||||||
| <question> |  | ||||||
| What is Docker |  | ||||||
| </question> |  | ||||||
| \` |  | ||||||
|  |  | ||||||
| 4. Follow up question: Can you tell me what is X from https://example.com | 4. Follow-up: Can you tell me what is X from https://example.com? | ||||||
| Rephrased question: \` | "query":"what is X","links":["https://example.com"],"searchRequired":true,"searchMode":"normal" | ||||||
| <question> |  | ||||||
| Can you tell me what is X? |  | ||||||
| </question> |  | ||||||
|  |  | ||||||
| <links> | 5. Follow-up: Summarize the content from https://example.com | ||||||
| https://example.com | "query":"summarize","links":["https://example.com"],"searchRequired":true,"searchMode":"normal" | ||||||
| </links> |  | ||||||
| \` |  | ||||||
|  |  | ||||||
| 5. Follow up question: Summarize the content from https://example.com | 6. Follow-up: Latest news about AI | ||||||
| Rephrased question: \` | "query":"latest news about AI","links":[],"searchRequired":true,"searchMode":"news" | ||||||
| <question> |  | ||||||
| summarize |  | ||||||
| </question> |  | ||||||
|  |  | ||||||
| <links> |  | ||||||
| https://example.com |  | ||||||
| </links> |  | ||||||
| \` |  | ||||||
| </examples> |  | ||||||
|  |  | ||||||
| Anything below is the part of the actual conversation and you need to use conversation and the follow-up question to rephrase the follow-up question as a standalone question based on the guidelines shared above. |  | ||||||
|  |  | ||||||
| <conversation> | <conversation> | ||||||
| {chat_history} | {chat_history} | ||||||
| </conversation> | </conversation> | ||||||
|  |  | ||||||
| Follow up question: {query} | Follow-up question: {query} | ||||||
| Rephrased question: | Rephrased question: | ||||||
| `; | `; | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										94
									
								
								src/lib/providers/aimlapi.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,94 @@ | |||||||
|  | import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai'; | ||||||
|  | import { getAimlApiKey } from '../config'; | ||||||
|  | import { ChatModel, EmbeddingModel } from '.'; | ||||||
|  | import { BaseChatModel } from '@langchain/core/language_models/chat_models'; | ||||||
|  | import { Embeddings } from '@langchain/core/embeddings'; | ||||||
|  | import axios from 'axios'; | ||||||
|  |  | ||||||
|  | export const PROVIDER_INFO = { | ||||||
|  |   key: 'aimlapi', | ||||||
|  |   displayName: 'AI/ML API', | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | interface AimlApiModel { | ||||||
|  |   id: string; | ||||||
|  |   name?: string; | ||||||
|  |   type?: string; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const API_URL = 'https://api.aimlapi.com'; | ||||||
|  |  | ||||||
|  | export const loadAimlApiChatModels = async () => { | ||||||
|  |   const apiKey = getAimlApiKey(); | ||||||
|  |  | ||||||
|  |   if (!apiKey) return {}; | ||||||
|  |  | ||||||
|  |   try { | ||||||
|  |     const response = await axios.get(`${API_URL}/models`, { | ||||||
|  |       headers: { | ||||||
|  |         'Content-Type': 'application/json', | ||||||
|  |         Authorization: `Bearer ${apiKey}`, | ||||||
|  |       }, | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     const chatModels: Record<string, ChatModel> = {}; | ||||||
|  |  | ||||||
|  |     response.data.data.forEach((model: AimlApiModel) => { | ||||||
|  |       if (model.type === 'chat-completion') { | ||||||
|  |         chatModels[model.id] = { | ||||||
|  |           displayName: model.name || model.id, | ||||||
|  |           model: new ChatOpenAI({ | ||||||
|  |             apiKey: apiKey, | ||||||
|  |             modelName: model.id, | ||||||
|  |             temperature: 0.7, | ||||||
|  |             configuration: { | ||||||
|  |               baseURL: API_URL, | ||||||
|  |             }, | ||||||
|  |           }) as unknown as BaseChatModel, | ||||||
|  |         }; | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     return chatModels; | ||||||
|  |   } catch (err) { | ||||||
|  |     console.error(`Error loading AI/ML API models: ${err}`); | ||||||
|  |     return {}; | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const loadAimlApiEmbeddingModels = async () => { | ||||||
|  |   const apiKey = getAimlApiKey(); | ||||||
|  |  | ||||||
|  |   if (!apiKey) return {}; | ||||||
|  |  | ||||||
|  |   try { | ||||||
|  |     const response = await axios.get(`${API_URL}/models`, { | ||||||
|  |       headers: { | ||||||
|  |         'Content-Type': 'application/json', | ||||||
|  |         Authorization: `Bearer ${apiKey}`, | ||||||
|  |       }, | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     const embeddingModels: Record<string, EmbeddingModel> = {}; | ||||||
|  |  | ||||||
|  |     response.data.data.forEach((model: AimlApiModel) => { | ||||||
|  |       if (model.type === 'embedding') { | ||||||
|  |         embeddingModels[model.id] = { | ||||||
|  |           displayName: model.name || model.id, | ||||||
|  |           model: new OpenAIEmbeddings({ | ||||||
|  |             apiKey: apiKey, | ||||||
|  |             modelName: model.id, | ||||||
|  |             configuration: { | ||||||
|  |               baseURL: API_URL, | ||||||
|  |             }, | ||||||
|  |           }) as unknown as Embeddings, | ||||||
|  |         }; | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     return embeddingModels; | ||||||
|  |   } catch (err) { | ||||||
|  |     console.error(`Error loading AI/ML API embeddings models: ${err}`); | ||||||
|  |     return {}; | ||||||
|  |   } | ||||||
|  | }; | ||||||
| @@ -31,7 +31,7 @@ export const loadDeepseekChatModels = async () => { | |||||||
|       chatModels[model.key] = { |       chatModels[model.key] = { | ||||||
|         displayName: model.displayName, |         displayName: model.displayName, | ||||||
|         model: new ChatOpenAI({ |         model: new ChatOpenAI({ | ||||||
|           openAIApiKey: deepseekApiKey, |           apiKey: deepseekApiKey, | ||||||
|           modelName: model.key, |           modelName: model.key, | ||||||
|           temperature: 0.7, |           temperature: 0.7, | ||||||
|           configuration: { |           configuration: { | ||||||
|   | |||||||
| @@ -13,9 +13,17 @@ import { BaseChatModel } from '@langchain/core/language_models/chat_models'; | |||||||
| import { Embeddings } from '@langchain/core/embeddings'; | import { Embeddings } from '@langchain/core/embeddings'; | ||||||
|  |  | ||||||
| const geminiChatModels: Record<string, string>[] = [ | const geminiChatModels: Record<string, string>[] = [ | ||||||
|  |   { | ||||||
|  |     displayName: 'Gemini 2.5 Flash Preview 05-20', | ||||||
|  |     key: 'gemini-2.5-flash-preview-05-20', | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     displayName: 'Gemini 2.5 Pro Preview', | ||||||
|  |     key: 'gemini-2.5-pro-preview-05-06', | ||||||
|  |   }, | ||||||
|   { |   { | ||||||
|     displayName: 'Gemini 2.5 Pro Experimental', |     displayName: 'Gemini 2.5 Pro Experimental', | ||||||
|     key: 'gemini-2.5-pro-exp-03-25', |     key: 'gemini-2.5-pro-preview-05-06', | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     displayName: 'Gemini 2.0 Flash', |     displayName: 'Gemini 2.0 Flash', | ||||||
|   | |||||||
| @@ -29,12 +29,15 @@ export const loadGroqChatModels = async () => { | |||||||
|       chatModels[model.id] = { |       chatModels[model.id] = { | ||||||
|         displayName: model.id, |         displayName: model.id, | ||||||
|         model: new ChatOpenAI({ |         model: new ChatOpenAI({ | ||||||
|           openAIApiKey: groqApiKey, |           apiKey: groqApiKey, | ||||||
|           modelName: model.id, |           modelName: model.id, | ||||||
|           temperature: 0.7, |           temperature: 0.7, | ||||||
|           configuration: { |           configuration: { | ||||||
|             baseURL: 'https://api.groq.com/openai/v1', |             baseURL: 'https://api.groq.com/openai/v1', | ||||||
|           }, |           }, | ||||||
|  |           metadata: { | ||||||
|  |             'model-type': 'groq', | ||||||
|  |           }, | ||||||
|         }) as unknown as BaseChatModel, |         }) as unknown as BaseChatModel, | ||||||
|       }; |       }; | ||||||
|     }); |     }); | ||||||
|   | |||||||
| @@ -35,6 +35,11 @@ import { | |||||||
|   loadDeepseekChatModels, |   loadDeepseekChatModels, | ||||||
|   PROVIDER_INFO as DeepseekInfo, |   PROVIDER_INFO as DeepseekInfo, | ||||||
| } from './deepseek'; | } from './deepseek'; | ||||||
|  | import { | ||||||
|  |   loadAimlApiChatModels, | ||||||
|  |   loadAimlApiEmbeddingModels, | ||||||
|  |   PROVIDER_INFO as AimlApiInfo, | ||||||
|  | } from './aimlapi'; | ||||||
| import { | import { | ||||||
|   loadLMStudioChatModels, |   loadLMStudioChatModels, | ||||||
|   loadLMStudioEmbeddingsModels, |   loadLMStudioEmbeddingsModels, | ||||||
| @@ -49,6 +54,7 @@ export const PROVIDER_METADATA = { | |||||||
|   gemini: GeminiInfo, |   gemini: GeminiInfo, | ||||||
|   transformers: TransformersInfo, |   transformers: TransformersInfo, | ||||||
|   deepseek: DeepseekInfo, |   deepseek: DeepseekInfo, | ||||||
|  |   aimlapi: AimlApiInfo, | ||||||
|   lmstudio: LMStudioInfo, |   lmstudio: LMStudioInfo, | ||||||
|   custom_openai: { |   custom_openai: { | ||||||
|     key: 'custom_openai', |     key: 'custom_openai', | ||||||
| @@ -76,6 +82,7 @@ export const chatModelProviders: Record< | |||||||
|   anthropic: loadAnthropicChatModels, |   anthropic: loadAnthropicChatModels, | ||||||
|   gemini: loadGeminiChatModels, |   gemini: loadGeminiChatModels, | ||||||
|   deepseek: loadDeepseekChatModels, |   deepseek: loadDeepseekChatModels, | ||||||
|  |   aimlapi: loadAimlApiChatModels, | ||||||
|   lmstudio: loadLMStudioChatModels, |   lmstudio: loadLMStudioChatModels, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -87,6 +94,7 @@ export const embeddingModelProviders: Record< | |||||||
|   ollama: loadOllamaEmbeddingModels, |   ollama: loadOllamaEmbeddingModels, | ||||||
|   gemini: loadGeminiEmbeddingModels, |   gemini: loadGeminiEmbeddingModels, | ||||||
|   transformers: loadTransformersEmbeddingsModels, |   transformers: loadTransformersEmbeddingsModels, | ||||||
|  |   aimlapi: loadAimlApiEmbeddingModels, | ||||||
|   lmstudio: loadLMStudioEmbeddingsModels, |   lmstudio: loadLMStudioEmbeddingsModels, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -110,7 +118,7 @@ export const getAvailableChatModelProviders = async () => { | |||||||
|           [customOpenAiModelName]: { |           [customOpenAiModelName]: { | ||||||
|             displayName: customOpenAiModelName, |             displayName: customOpenAiModelName, | ||||||
|             model: new ChatOpenAI({ |             model: new ChatOpenAI({ | ||||||
|               openAIApiKey: customOpenAiApiKey, |               apiKey: customOpenAiApiKey, | ||||||
|               modelName: customOpenAiModelName, |               modelName: customOpenAiModelName, | ||||||
|               temperature: 0.7, |               temperature: 0.7, | ||||||
|               configuration: { |               configuration: { | ||||||
|   | |||||||
| @@ -47,7 +47,7 @@ export const loadLMStudioChatModels = async () => { | |||||||
|       chatModels[model.id] = { |       chatModels[model.id] = { | ||||||
|         displayName: model.name || model.id, |         displayName: model.name || model.id, | ||||||
|         model: new ChatOpenAI({ |         model: new ChatOpenAI({ | ||||||
|           openAIApiKey: 'lm-studio', |           apiKey: 'lm-studio', | ||||||
|           configuration: { |           configuration: { | ||||||
|             baseURL: ensureV1Endpoint(endpoint), |             baseURL: ensureV1Endpoint(endpoint), | ||||||
|           }, |           }, | ||||||
| @@ -83,7 +83,7 @@ export const loadLMStudioEmbeddingsModels = async () => { | |||||||
|       embeddingsModels[model.id] = { |       embeddingsModels[model.id] = { | ||||||
|         displayName: model.name || model.id, |         displayName: model.name || model.id, | ||||||
|         model: new OpenAIEmbeddings({ |         model: new OpenAIEmbeddings({ | ||||||
|           openAIApiKey: 'lm-studio', |           apiKey: 'lm-studio', | ||||||
|           configuration: { |           configuration: { | ||||||
|             baseURL: ensureV1Endpoint(endpoint), |             baseURL: ensureV1Endpoint(endpoint), | ||||||
|           }, |           }, | ||||||
|   | |||||||
| @@ -6,8 +6,8 @@ export const PROVIDER_INFO = { | |||||||
|   key: 'ollama', |   key: 'ollama', | ||||||
|   displayName: 'Ollama', |   displayName: 'Ollama', | ||||||
| }; | }; | ||||||
| import { ChatOllama } from '@langchain/community/chat_models/ollama'; | import { ChatOllama } from '@langchain/ollama'; | ||||||
| import { OllamaEmbeddings } from '@langchain/community/embeddings/ollama'; | import { OllamaEmbeddings } from '@langchain/ollama'; | ||||||
|  |  | ||||||
| export const loadOllamaChatModels = async () => { | export const loadOllamaChatModels = async () => { | ||||||
|   const ollamaApiEndpoint = getOllamaApiEndpoint(); |   const ollamaApiEndpoint = getOllamaApiEndpoint(); | ||||||
|   | |||||||
| @@ -67,7 +67,7 @@ export const loadOpenAIChatModels = async () => { | |||||||
|       chatModels[model.key] = { |       chatModels[model.key] = { | ||||||
|         displayName: model.displayName, |         displayName: model.displayName, | ||||||
|         model: new ChatOpenAI({ |         model: new ChatOpenAI({ | ||||||
|           openAIApiKey: openaiApiKey, |           apiKey: openaiApiKey, | ||||||
|           modelName: model.key, |           modelName: model.key, | ||||||
|           temperature: 0.7, |           temperature: 0.7, | ||||||
|         }) as unknown as BaseChatModel, |         }) as unknown as BaseChatModel, | ||||||
| @@ -93,7 +93,7 @@ export const loadOpenAIEmbeddingModels = async () => { | |||||||
|       embeddingModels[model.key] = { |       embeddingModels[model.key] = { | ||||||
|         displayName: model.displayName, |         displayName: model.displayName, | ||||||
|         model: new OpenAIEmbeddings({ |         model: new OpenAIEmbeddings({ | ||||||
|           openAIApiKey: openaiApiKey, |           apiKey: openaiApiKey, | ||||||
|           modelName: model.key, |           modelName: model.key, | ||||||
|         }) as unknown as Embeddings, |         }) as unknown as Embeddings, | ||||||
|       }; |       }; | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ import computeSimilarity from '../utils/computeSimilarity'; | |||||||
| import formatChatHistoryAsString from '../utils/formatHistory'; | import formatChatHistoryAsString from '../utils/formatHistory'; | ||||||
| import eventEmitter from 'events'; | import eventEmitter from 'events'; | ||||||
| import { StreamEvent } from '@langchain/core/tracers/log_stream'; | import { StreamEvent } from '@langchain/core/tracers/log_stream'; | ||||||
|  | import { z } from 'zod'; | ||||||
|  |  | ||||||
| export interface MetaSearchAgentType { | export interface MetaSearchAgentType { | ||||||
|   searchAndAnswer: ( |   searchAndAnswer: ( | ||||||
| @@ -52,6 +53,17 @@ type BasicChainInput = { | |||||||
|   query: string; |   query: string; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | const retrieverLLMOutputSchema = z.object({ | ||||||
|  |   query: z.string().describe('The query to search the web for.'), | ||||||
|  |   links: z | ||||||
|  |     .array(z.string()) | ||||||
|  |     .describe('The links to search/summarize if present'), | ||||||
|  |   searchRequired: z | ||||||
|  |     .boolean() | ||||||
|  |     .describe('Wether there is a need to search the web'), | ||||||
|  |   searchMode: z.enum(['', 'normal', 'news']).describe('The search mode.'), | ||||||
|  | }); | ||||||
|  |  | ||||||
| class MetaSearchAgent implements MetaSearchAgentType { | class MetaSearchAgent implements MetaSearchAgentType { | ||||||
|   private config: Config; |   private config: Config; | ||||||
|   private strParser = new StringOutputParser(); |   private strParser = new StringOutputParser(); | ||||||
| @@ -62,26 +74,24 @@ class MetaSearchAgent implements MetaSearchAgentType { | |||||||
|  |  | ||||||
|   private async createSearchRetrieverChain(llm: BaseChatModel) { |   private async createSearchRetrieverChain(llm: BaseChatModel) { | ||||||
|     (llm as unknown as ChatOpenAI).temperature = 0; |     (llm as unknown as ChatOpenAI).temperature = 0; | ||||||
|  |  | ||||||
|     return RunnableSequence.from([ |     return RunnableSequence.from([ | ||||||
|       PromptTemplate.fromTemplate(this.config.queryGeneratorPrompt), |       PromptTemplate.fromTemplate(this.config.queryGeneratorPrompt), | ||||||
|  |       Object.assign( | ||||||
|  |         Object.create(Object.getPrototypeOf(llm)), | ||||||
|         llm, |         llm, | ||||||
|       this.strParser, |       ).withStructuredOutput(retrieverLLMOutputSchema, { | ||||||
|       RunnableLambda.from(async (input: string) => { |         ...(llm.metadata?.['model-type'] === 'groq' | ||||||
|         const linksOutputParser = new LineListOutputParser({ |           ? { | ||||||
|           key: 'links', |               method: 'json-object', | ||||||
|         }); |             } | ||||||
|  |           : {}), | ||||||
|  |       }), | ||||||
|  |       RunnableLambda.from( | ||||||
|  |         async (input: z.infer<typeof retrieverLLMOutputSchema>) => { | ||||||
|  |           let question = input.query; | ||||||
|  |           const links = input.links; | ||||||
|  |  | ||||||
|         const questionOutputParser = new LineOutputParser({ |           if (!input.searchRequired) { | ||||||
|           key: 'question', |  | ||||||
|         }); |  | ||||||
|  |  | ||||||
|         const links = await linksOutputParser.parse(input); |  | ||||||
|         let question = this.config.summarizer |  | ||||||
|           ? await questionOutputParser.parse(input) |  | ||||||
|           : input; |  | ||||||
|  |  | ||||||
|         if (question === 'not_needed') { |  | ||||||
|             return { query: '', docs: [] }; |             return { query: '', docs: [] }; | ||||||
|           } |           } | ||||||
|  |  | ||||||
| @@ -207,7 +217,10 @@ class MetaSearchAgent implements MetaSearchAgentType { | |||||||
|  |  | ||||||
|             const res = await searchSearxng(question, { |             const res = await searchSearxng(question, { | ||||||
|               language: 'en', |               language: 'en', | ||||||
|             engines: this.config.activeEngines, |               engines: | ||||||
|  |                 input.searchMode === 'normal' | ||||||
|  |                   ? this.config.activeEngines | ||||||
|  |                   : ['bing news'], | ||||||
|             }); |             }); | ||||||
|  |  | ||||||
|             const documents = res.results.map( |             const documents = res.results.map( | ||||||
| @@ -228,7 +241,8 @@ class MetaSearchAgent implements MetaSearchAgentType { | |||||||
|  |  | ||||||
|             return { query: question, docs: documents }; |             return { query: question, docs: documents }; | ||||||
|           } |           } | ||||||
|       }), |         }, | ||||||
|  |       ), | ||||||
|     ]); |     ]); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||