|
1 | 1 | --- |
2 | 2 | // Theme Picker Toggle Button |
| 3 | +import styles from './themeButton.module.css' |
3 | 4 | --- |
4 | 5 |
|
5 | | -<style> |
6 | | - /* Theme picker button styles */ |
7 | | - .theme-toggle-btn { |
8 | | - background-color: var(--color-primary); |
9 | | - border-radius: 50%; |
10 | | - border-width: 0; |
11 | | - height: var(--header-icon-size); |
12 | | - position: relative; |
13 | | - transition: 0.15s linear; |
14 | | - width: var(--header-icon-size); |
15 | | - z-index: var(--z-content-overlay); |
16 | | - } |
17 | | - |
18 | | - .theme-toggle-btn:hover, |
19 | | - .theme-toggle-btn:focus { |
20 | | - background-color: var(--color-primary-offset); |
21 | | - outline-width: 0; |
22 | | - } |
23 | | - |
24 | | - .theme-toggle-svg { |
25 | | - height: var(--header-icon-size); |
26 | | - position: relative; |
27 | | - transform: rotate(0deg); |
28 | | - transition: 0.3s cubic-bezier(0.165, 0.84, 0.44, 1); |
29 | | - width: var(--header-icon-size); |
30 | | - z-index: inherit; |
31 | | - } |
32 | | - |
33 | | - .theme-toggle-path { |
34 | | - fill: var(--color-page-base); |
35 | | - } |
36 | | - |
37 | | - .theme-toggle-circle { |
38 | | - fill: none; |
39 | | - stroke-dasharray: var(--circle-stroke); |
40 | | - stroke-dashoffset: var(--circle-stroke); |
41 | | - stroke-linecap: round; |
42 | | - stroke-width: 0.3rem; |
43 | | - transition: stroke-dashoffset 0.3s linear 0.1s; |
44 | | - } |
45 | | - |
46 | | - /* Animation for theme picker active state */ |
47 | | - .theme-toggle-btn[aria-expanded='true'] .theme-toggle-svg { |
48 | | - fill: var(--color-page-base); |
49 | | - transform: rotate(90deg); |
50 | | - } |
51 | | - |
52 | | - .theme-toggle-btn[aria-expanded='true'] .theme-toggle-circle { |
53 | | - stroke-dashoffset: 0; |
54 | | - } |
55 | | -</style> |
56 | | - |
57 | 6 | <button |
58 | | - class="theme-toggle-btn themepicker-toggle__toggle-btn" |
| 7 | + class:list={[ |
| 8 | + 'theme-toggle-btn themepicker-toggle__toggle-btn', |
| 9 | + 'relative inline-flex items-center justify-center', |
| 10 | + 'w-(--header-icon-size) h-(--header-icon-size)', |
| 11 | + 'rounded-full border-0', |
| 12 | + 'bg-primary hover:bg-primary-offset', |
| 13 | + 'focus:bg-primary-offset focus:outline-none focus-visible:bg-primary-offset', |
| 14 | + 'transition-colors duration-150 ease-linear', |
| 15 | + 'z-(--z-content-overlay)', |
| 16 | + styles.toggleBtn, |
| 17 | + ]} |
59 | 18 | type="button" |
60 | 19 | aria-expanded="false" |
61 | 20 | aria-controls="theme-picker-panel" |
|
65 | 24 | > |
66 | 25 | <svg |
67 | 26 | viewBox="0 0 50 50" |
68 | | - class="theme-toggle-svg" |
| 27 | + class:list={[ |
| 28 | + 'w-(--header-icon-size) h-(--header-icon-size)', |
| 29 | + 'relative', |
| 30 | + 'transition-transform duration-300 ease-[cubic-bezier(0.165,0.84,0.44,1)]', |
| 31 | + styles.toggleSvg, |
| 32 | + ]} |
69 | 33 | xmlns="http://www.w3.org/2000/svg" |
70 | 34 | aria-hidden="true" |
71 | 35 | focusable="false" |
72 | 36 | > |
73 | 37 | <g> |
74 | 38 | <path |
75 | | - class="theme-toggle-path" |
| 39 | + class:list={['fill-page-base']} |
76 | 40 | d="M 31.6,15.4 V 14.2 C 31.6,13.54 31.06,13 30.4,13 H 16 c -0.66,0 -1.2,0.54 -1.2,1.2 V 19 c 0,0.66 0.54,1.2 1.2,1.2 h 14.4 c 0.66,0 1.2,-0.54 1.2,-1.2 v -1.2 h 1.2 v 4.8 h -12 v 13.2 c 0,0.66 0.54,1.2 1.2,1.2 h 2.4 c 0.66,0 1.2,-0.54 1.2,-1.2 V 25 h 9.6 v -9.6 z" |
77 | 41 | ></path> |
78 | | - <circle class="theme-toggle-circle" r="23" cx="25" cy="25"></circle> |
| 42 | + <circle class={styles.toggleCircle} r="23" cx="25" cy="25"></circle> |
79 | 43 | </g> |
80 | 44 | </svg> |
81 | 45 | </button> |
0 commit comments