Skip to content

Commit 5f0e935

Browse files
committed
Merge branch 'main' of https://github.com/murdercode/tempo
2 parents d225e97 + c18c9f2 commit 5f0e935

File tree

12 files changed

+787
-559
lines changed

12 files changed

+787
-559
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,5 @@ dist-ssr
2222
*.njsproj
2323
*.sln
2424
*.sw?
25+
26+
.claude

THEMES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Create a new CSS file in the `src/styles/themes/` folder with the following form
5858

5959
- **`espresso.css`** - Default theme with warm colors
6060
- **`pommodore64.css`** - Retro theme inspired by Commodore 64
61-
- **`matrix.css`** - Matrix theme with green digital effects
61+
- **`pipboy.css`** - Theme inspired by Fallout (PipBoy)
6262

6363
### 3. The System Does the Rest!
6464

src/managers/settings-manager.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -895,14 +895,14 @@ export class SettingsManager {
895895
this.systemThemeListener = (e) => {
896896
const newSystemTheme = e.matches ? 'dark' : 'light';
897897
console.log(`🎨 System theme changed: ${newSystemTheme}`);
898-
898+
899899
// Only apply if current preference is "auto"
900900
const currentPreference = this.settings?.appearance?.theme || 'auto';
901901
if (currentPreference === 'auto') {
902902
const html = document.documentElement;
903903
html.setAttribute('data-theme', newSystemTheme);
904904
console.log(`🎨 Auto theme updated to: ${newSystemTheme}`);
905-
905+
906906
// Update timer theme compatibility when system theme changes
907907
this.updateTimerThemeCompatibility();
908908
}
@@ -938,7 +938,7 @@ export class SettingsManager {
938938

939939
// For non-auto themes, keep the early initialization
940940
console.log(`🎨 Keeping early initialized theme: ${currentTheme}`);
941-
941+
942942
// Update settings to match current theme
943943
if (this.settings && this.settings.appearance) {
944944
this.settings.appearance.theme = currentTheme;
@@ -1017,7 +1017,7 @@ export class SettingsManager {
10171017
// Timer Theme Management Functions
10181018
getCurrentColorMode() {
10191019
const currentTheme = document.documentElement.getAttribute('data-theme');
1020-
1020+
10211021
// Since data-theme is now always 'light' or 'dark' (never 'auto'), this is simpler
10221022
return currentTheme === 'dark' ? 'dark' : 'light';
10231023
}
@@ -1171,7 +1171,7 @@ export class SettingsManager {
11711171
previewStatus.style.color = theme.preview.focus;
11721172

11731173
// Special handling for specific themes
1174-
if (themeId === 'matrix') {
1174+
if (themeId === 'pipboy') {
11751175
previewDisplay.style.background = '#000011';
11761176
previewDisplay.style.border = `1px solid ${theme.preview.focus}`;
11771177
previewDisplay.style.fontFamily = '"Share Tech Mono", monospace';

src/styles/main.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* Timer themes */
77
@import 'themes/espresso.css';
88
@import 'themes/pommodore64.css';
9-
@import 'themes/matrix.css';
9+
@import 'themes/pipboy.css';
1010

1111
/* Shared components for common patterns */
1212
@import 'shared-components.css';

src/styles/settings.css

Lines changed: 8 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -944,24 +944,16 @@
944944
font-size: 0.85rem;
945945
font-weight: 500;
946946
position: relative;
947+
opacity: 0.5;
947948
}
948949

949950
.theme-option:hover {
950-
background: var(--input-focus-shadow);
951-
color: var(--accent-color);
951+
opacity: 1;
952952
transform: translateY(-1px);
953953
}
954954

955955
.theme-option.active {
956-
background: var(--accent-color);
957-
color: var(--text-on-focus);
958-
box-shadow: 0 2px 8px var(--input-focus-shadow);
959-
}
960-
961-
.theme-option.active:hover {
962-
background: var(--accent-color);
963-
color: var(--text-on-focus);
964-
transform: translateY(-1px);
956+
opacity: 1;
965957
}
966958

967959
.theme-option i {
@@ -976,29 +968,6 @@
976968
letter-spacing: 0.5px;
977969
}
978970

979-
/* Theme specific icons and colors */
980-
.theme-option[data-theme="auto"] i {
981-
background: linear-gradient(45deg, var(--break-color), var(--long-break-color));
982-
-webkit-background-clip: text;
983-
-webkit-text-fill-color: transparent;
984-
background-clip: text;
985-
}
986-
987-
.theme-option[data-theme="light"] i {
988-
color: var(--break-color);
989-
}
990-
991-
.theme-option[data-theme="dark"] i {
992-
color: var(--shared-text);
993-
}
994-
995-
.theme-option[data-theme="auto"].active i,
996-
.theme-option[data-theme="light"].active i,
997-
.theme-option[data-theme="dark"].active i {
998-
color: var(--text-on-focus);
999-
-webkit-text-fill-color: var(--text-on-focus);
1000-
}
1001-
1002971
/* Timer Theme Grid Styles */
1003972
.timer-theme-grid {
1004973
display: grid;
@@ -1188,18 +1157,18 @@
11881157
}
11891158

11901159
/* Theme-specific preview styles */
1191-
.timer-preview-display[data-preview-theme="matrix"] {
1160+
.timer-preview-display[data-preview-theme="pipboy"] {
11921161
background: #000011 !important;
11931162
border-color: #00ff41 !important;
11941163
font-family: 'Share Tech Mono', monospace !important;
11951164
}
11961165

1197-
.timer-preview-display[data-preview-theme="matrix"] .timer-preview-time {
1166+
.timer-preview-display[data-preview-theme="pipboy"] .timer-preview-time {
11981167
color: #00ff41 !important;
11991168
text-shadow: 0 0 5px #00ff41;
12001169
}
12011170

1202-
.timer-preview-display[data-preview-theme="matrix"] .timer-preview-status {
1171+
.timer-preview-display[data-preview-theme="pipboy"] .timer-preview-status {
12031172
color: #00ff41 !important;
12041173
text-shadow: 0 0 3px #00ff41;
12051174
}
@@ -1267,7 +1236,7 @@
12671236
border-color: var(--shared-border);
12681237
}
12691238

1270-
[data-theme="dark"] .timer-preview-display[data-preview-theme="matrix"] {
1239+
[data-theme="dark"] .timer-preview-display[data-preview-theme="pipboy"] {
12711240
background: #000011 !important;
12721241
}
12731242

@@ -1286,7 +1255,7 @@
12861255
border-color: var(--shared-border);
12871256
}
12881257

1289-
[data-theme="auto"] .timer-preview-display[data-preview-theme="matrix"] {
1258+
[data-theme="auto"] .timer-preview-display[data-preview-theme="pipboy"] {
12901259
background: #000011 !important;
12911260
}
12921261

src/styles/shared-components.css

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,6 @@
8181
background: #334155;
8282
}
8383

84-
[data-theme="dark"] .nav-item-base.active:hover {
85-
background: var(--accent-color) !important;
86-
color: white !important;
87-
}
88-
8984
[data-theme="dark"] .sidebar-base {
9085
background: #212121;
9186
border-color: #313233;
@@ -133,11 +128,6 @@
133128
background: #334155;
134129
}
135130

136-
[data-theme="auto"] .nav-item-base.active:hover {
137-
background: var(--accent-color) !important;
138-
color: white !important;
139-
}
140-
141131
[data-theme="auto"] .sidebar-base {
142132
background: #1e293b;
143133
border-color: #334155;
@@ -309,23 +299,13 @@
309299
color: var(--text-color);
310300
width: 100%;
311301
text-decoration: none;
302+
opacity: 0.8;
312303
}
313304

314305
.nav-item-base:hover {
315-
background: #f8f9fa;
316306
transform: translateX(4px);
317307
}
318308

319-
.nav-item-base.active {
320-
background: var(--accent-color);
321-
color: var(--text-light);
322-
box-shadow: 0 4px 12px rgba(155, 89, 182, 0.3);
323-
}
324-
325-
.nav-item-base.active:hover {
326-
background: var(--accent-color);
327-
transform: translateX(6px);
328-
}
329309

330310
.nav-item-base i {
331311
font-size: 1.2rem;
@@ -334,6 +314,13 @@
334314
flex-shrink: 0;
335315
}
336316

317+
.nav-item-base.active {
318+
color: var(--text-color);
319+
box-shadow: 0 4px 12px var(--text-light);
320+
opacity: 1;
321+
}
322+
323+
337324
/* === BADGE COMPONENTS === */
338325

339326
/* Base badge for status indicators */

src/styles/sidebar.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118

119119
.sidebar.break .sidebar-icon.active {
120120
background: var(--break-primary-btn);
121-
color: var(--break-timer-color);
121+
color: #000;
122122
box-shadow: 0 4px 16px color-mix(in srgb, var(--break-timer-color) 30%, transparent);
123123
}
124124

@@ -135,7 +135,7 @@
135135

136136
.sidebar.longBreak .sidebar-icon.active {
137137
background: var(--long-break-primary-btn);
138-
color: var(--long-break-timer-color);
138+
color: #000;
139139
box-shadow: 0 4px 16px color-mix(in srgb, var(--long-break-timer-color) 30%, transparent);
140140
}
141141

src/styles/themes/espresso.css

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,6 @@
159159
color: var(--text-on-focus);
160160
}
161161

162-
:root[data-timer-theme="espresso"] .nav-item-base:hover {
163-
background: var(--hover-bg);
164-
}
165-
166-
:root[data-timer-theme="espresso"] .nav-item-base.active:hover {
167-
background: var(--focus-color) !important;
168-
color: var(--text-on-focus) !important;
169-
}
170-
171162
:root[data-timer-theme="espresso"] .sidebar-base {
172163
background: var(--card-bg);
173164
border-color: var(--stat-border);

0 commit comments

Comments
 (0)