77
88 < title > Starter template for Vue 3 with Bootstrap 5, SASS and Bootstrap Icons on TypeScript!</ title >
99
10- < style >
11- body ,
12- html {
13- width : 100% ;
14- height : 100% ;
15- }
16-
17- .aside {
18- position : fixed;
19- bottom : 5px ;
20- right : 5px ;
21- }
22-
23- .hidden { display : none; }
24- </ style >
10+ < style > body , html { width : 100% ; height : 100% ; }</ style >
2511 </ head >
2612 < body class ="d-flex flex-column ">
2713 < div id ="app " class ="d-flex flex-column h-100 "> </ div >
28-
29- < aside class ="aside ">
30- < span id ="theme-toggle " type ="button ">
31- < svg id ="light-icon " width ="20 " height ="20 " class ="hidden " fill ="currentColor " viewBox ="0 0 20 20 " xmlns ="http://www.w3.org/2000/svg ">
32- < path d ="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z "> </ path >
33- </ svg >
34- < svg id ="dark-icon " width ="20 " height ="20 " class ="hidden " fill ="currentColor " viewBox ="0 0 20 20 " xmlns ="http://www.w3.org/2000/svg ">
35- < path d ="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z " fill-rule ="evenodd " clip-rule ="evenodd "> </ path >
36- </ svg >
37- </ span >
38- </ aside >
39-
40- < script >
41- const docElm = document . documentElement ;
42- const themeToggleBtn = docElm . querySelector ( "#theme-toggle" ) ;
43- const darkIcon = themeToggleBtn . querySelector ( "#dark-icon" ) ;
44- const lightIcon = themeToggleBtn . querySelector ( "#light-icon" ) ;
45-
46- if ( localStorage . getItem ( "color-theme" ) === "dark" ) {
47- darkIcon . classList . remove ( "hidden" ) ;
48- docElm . classList . remove ( "light" ) ;
49- docElm . classList . add ( "dark" ) ;
50- docElm . dataset . bsTheme = "dark" ;
51- } else {
52- if ( ( ! ( 'color-theme' in localStorage ) ) && ( window . matchMedia ( '(prefers-color-scheme: dark)' ) . matches ) ) {
53- darkIcon . classList . remove ( "hidden" ) ;
54- docElm . classList . remove ( "light" ) ;
55- docElm . classList . add ( "dark" ) ;
56- docElm . dataset . bsTheme = "dark" ;
57- localStorage . setItem ( "color-theme" , "dark" ) ;
58- } else {
59- lightIcon . classList . remove ( "hidden" ) ;
60- docElm . classList . remove ( "dark" ) ;
61- docElm . classList . add ( "light" ) ;
62- docElm . dataset . bsTheme = "light" ;
63- localStorage . setItem ( "color-theme" , "light" ) ;
64- }
65- }
66-
67- themeToggleBtn . addEventListener ( "click" , function ( ) {
68- darkIcon . classList . toggle ( "hidden" ) ;
69- lightIcon . classList . toggle ( "hidden" ) ;
70-
71- if ( localStorage . getItem ( "color-theme" ) ) {
72- if ( localStorage . getItem ( "color-theme" ) === "light" ) {
73- docElm . classList . add ( "dark" ) ;
74- docElm . dataset . bsTheme = "dark" ;
75- localStorage . setItem ( "color-theme" , "dark" ) ;
76- } else {
77- docElm . classList . remove ( "dark" ) ;
78- docElm . dataset . bsTheme = "light" ;
79- localStorage . setItem ( "color-theme" , "light" ) ;
80- }
81- } else {
82- if ( docElm . classList . contains ( "dark" ) ) {
83- docElm . classList . remove ( "dark" ) ;
84- docElm . dataset . bsTheme = "light" ;
85- localStorage . setItem ( "color-theme" , "light" ) ;
86- } else {
87- docElm . classList . add ( "dark" ) ;
88- docElm . dataset . bsTheme = "dark" ;
89- localStorage . setItem ( "color-theme" , "dark" ) ;
90- }
91- }
92- } ) ;
93- </ script >
9414 < script type ="module " src ="./src/main.ts "> </ script >
9515 </ body >
9616</ html >
0 commit comments