Skip to content

Commit d9be81d

Browse files
committed
cleanup
1 parent d1a3620 commit d9be81d

8 files changed

Lines changed: 20 additions & 16 deletions

File tree

apps/twig/src/renderer/components/KeyboardShortcutsSheet.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
getShortcutsByCategory,
66
type ShortcutCategory,
77
} from "@renderer/constants/keyboard-shortcuts";
8+
import { isMac } from "@utils/platform";
89
import { useMemo } from "react";
910

1011
interface KeyboardShortcutsSheetProps {
@@ -134,8 +135,6 @@ export function KeyboardShortcutsList() {
134135

135136
function SingleShortcutKeys({ keys }: { keys: string }) {
136137
const formatted = formatHotkey(keys);
137-
const isMac =
138-
typeof navigator !== "undefined" && /Mac/.test(navigator.platform);
139138

140139
if (isMac) {
141140
return (

apps/twig/src/renderer/constants/keyboard-shortcuts.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { isMac } from "@utils/platform";
2+
13
export const SHORTCUTS = {
24
COMMAND_MENU: "mod+k",
35
NEW_TASK: "mod+n,mod+t",
@@ -189,9 +191,6 @@ export function getShortcutsByCategory(): Record<
189191
}
190192

191193
export function formatHotkey(keys: string): string {
192-
const isMac =
193-
typeof navigator !== "undefined" && /Mac/.test(navigator.platform);
194-
195194
// Get only the first hotkey if multiple are defined (e.g., "mod+1,mod+2,mod+3")
196195
// But handle edge case where comma is the actual key (e.g., "mod+,")
197196
let hotkey = keys;

apps/twig/src/renderer/features/command/components/CommandMenu.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { Flex, Text } from "@radix-ui/themes";
1616
import { track } from "@renderer/lib/analytics";
1717
import { useNavigationStore } from "@stores/navigationStore";
1818
import { useRegisteredFoldersStore } from "@stores/registeredFoldersStore";
19-
import { useThemeStore } from "@stores/themeStore";
19+
import { THEME_CYCLE_LABELS, useThemeStore } from "@stores/themeStore";
2020
import { useCallback, useEffect, useRef } from "react";
2121
import { useHotkeys } from "react-hotkeys-hook";
2222
import { ANALYTICS_EVENTS, type CommandMenuAction } from "@/types/analytics";
@@ -156,11 +156,7 @@ export function CommandMenu({ open, onOpenChange }: CommandMenuProps) {
156156
{theme === "system" && (
157157
<MoonIcon className="mr-3 h-3 w-3 text-gray-11" />
158158
)}
159-
<Text size="1">
160-
{theme === "dark" && "Switch to light mode"}
161-
{theme === "light" && "Switch to system theme"}
162-
{theme === "system" && "Switch to dark mode"}
163-
</Text>
159+
<Text size="1">{THEME_CYCLE_LABELS[theme]}</Text>
164160
</Command.Item>
165161
<Command.Item
166162
value="Toggle left sidebar"

apps/twig/src/renderer/features/settings/components/sections/GeneralSettings.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
import { track } from "@renderer/lib/analytics";
1717
import { playCompletionSound } from "@renderer/lib/sounds";
1818
import { useSettingsStore as useTerminalSettingsStore } from "@stores/settingsStore";
19+
import { resolveIsDarkMode } from "@stores/themeStore";
1920
import type { ThemePreference } from "@stores/themeStore";
2021
import { useThemeStore } from "@stores/themeStore";
2122
import { useCallback, useEffect, useRef, useState } from "react";
@@ -112,7 +113,7 @@ export function GeneralSettings() {
112113
new_value: value,
113114
old_value: theme,
114115
});
115-
if (value === "light" && cursorGlow) {
116+
if (!resolveIsDarkMode(value) && cursorGlow) {
116117
setCursorGlow(false);
117118
}
118119
setTheme(value);

apps/twig/src/renderer/features/sidebar/components/ProjectSwitcher.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { trpcVanilla } from "@renderer/trpc/client";
2929
import { useQuery } from "@tanstack/react-query";
3030
import { useCallback, useEffect, useRef, useState } from "react";
3131
import { getCloudUrlFromRegion } from "@/constants/oauth";
32+
import { isMac } from "@utils/platform";
3233
import "./ProjectSwitcher.css";
3334

3435
export function ProjectSwitcher() {
@@ -276,7 +277,7 @@ export function ProjectSwitcher() {
276277
<Flex align="center" justify="between" style={{ flex: 1 }}>
277278
<Text size="1">Keyboard Shortcuts</Text>
278279
<Text size="1" className="ml-4 text-gray-9">
279-
{navigator.platform.includes("Mac") ? "⌘/" : "Ctrl+/"}
280+
{isMac ? "⌘/" : "Ctrl+/"}
280281
</Text>
281282
</Flex>
282283
</DropdownMenu.Item>
@@ -293,7 +294,7 @@ export function ProjectSwitcher() {
293294
<Text size="1">Settings</Text>
294295
</Flex>
295296
<Text size="1" className="text-gray-9">
296-
{navigator.platform.includes("Mac") ? "⌘," : "Ctrl+,"}
297+
{isMac ? "⌘," : "Ctrl+,"}
297298
</Text>
298299
</button>
299300

apps/twig/src/renderer/features/terminal/services/TerminalManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { FitAddon } from "@xterm/addon-fit";
33
import { SerializeAddon } from "@xterm/addon-serialize";
44
import { WebLinksAddon } from "@xterm/addon-web-links";
55
import { Terminal as XTerm } from "@xterm/xterm";
6+
import { isMac } from "@utils/platform";
67
import { logger } from "@/renderer/lib/logger";
78

89
const log = logger.scope("terminal-manager");
@@ -111,7 +112,6 @@ function loadAddons(term: XTerm) {
111112

112113
function attachKeyHandlers(term: XTerm) {
113114
term.attachCustomKeyEventHandler((event: KeyboardEvent) => {
114-
const isMac = /Mac/.test(navigator.platform);
115115
const cmdOrCtrl = isMac ? event.metaKey : event.ctrlKey;
116116

117117
if (event.key === "k" && cmdOrCtrl && event.type === "keydown") {

apps/twig/src/renderer/stores/themeStore.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type ThemeStore = ThemeStoreState & ThemeStoreActions;
1717

1818
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
1919

20-
function resolveIsDarkMode(theme: ThemePreference): boolean {
20+
export function resolveIsDarkMode(theme: ThemePreference): boolean {
2121
if (theme === "system") {
2222
return mediaQuery.matches;
2323
}
@@ -26,6 +26,12 @@ function resolveIsDarkMode(theme: ThemePreference): boolean {
2626

2727
const THEME_CYCLE: ThemePreference[] = ["dark", "light", "system"];
2828

29+
export const THEME_CYCLE_LABELS: Record<ThemePreference, string> = {
30+
dark: "Switch to light mode",
31+
light: "Switch to system theme",
32+
system: "Switch to dark mode",
33+
};
34+
2935
export const useThemeStore = create<ThemeStore>()(
3036
persist(
3137
(set) => ({
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export const isMac =
2+
typeof navigator !== "undefined" && /Mac/.test(navigator.platform);

0 commit comments

Comments
 (0)