| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  | let plugin = require("tailwindcss/plugin"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  | let multiThemePlugin = plugin.withOptions( | 
					
						
							|  |  |  |   function (options) { | 
					
						
							|  |  |  |     return function ({ addBase }) { | 
					
						
							|  |  |  |       let themes = options?.themes ?? []; | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  |       addBase(generateForRoot(themes)); | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  |       Object.keys(themes).forEach((themeName) => { | 
					
						
							|  |  |  |         addBase(generateForTheme(themes, themeName)); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  |   function (options) { | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       themes: options?.themes ?? [], | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  | function generateForRoot(themes) { | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  |   let defaultThemeName = Object.keys(themes)[0]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return Object.entries(themes[defaultThemeName]).map(([colourName, value]) => { | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       ":root": { | 
					
						
							|  |  |  |         [`--color-${colourName}`]: value, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  | function generateForTheme(themes, themeName) { | 
					
						
							| 
									
										
										
										
											2022-09-09 18:00:00 +01:00
										 |  |  |   return Object.entries(themes[themeName]).map(([colourName, value]) => { | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       [`[data-theme=${themeName}]`]: { | 
					
						
							|  |  |  |         [`--color-${colourName}`]: value, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = multiThemePlugin; |