mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-03 08:53:36 +00:00
feat(ui): add per-project themes and fix scrolling/styling issues
- Add per-project theme support with theme selector in sidebar - Fix file diffs scrolling in agent output modal with proper overflow handling - Improve cursor styling across all interactive elements (buttons, tabs, checkboxes) - Enhance hotkey styling to use consistent theme colors - Fix Kanban board flash/refresh issues with React.memo optimizations - Update tab component for better theme integration with proper active states 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
This commit is contained in:
@@ -248,6 +248,8 @@ export interface AppActions {
|
||||
|
||||
// Theme actions
|
||||
setTheme: (theme: ThemeMode) => void;
|
||||
setProjectTheme: (projectId: string, theme: ThemeMode | null) => void; // Set per-project theme (null to clear)
|
||||
getEffectiveTheme: () => ThemeMode; // Get the effective theme (project or global)
|
||||
|
||||
// Feature actions
|
||||
setFeatures: (features: Feature[]) => void;
|
||||
@@ -635,6 +637,37 @@ export const useAppStore = create<AppState & AppActions>()(
|
||||
// Theme actions
|
||||
setTheme: (theme) => set({ theme }),
|
||||
|
||||
setProjectTheme: (projectId, theme) => {
|
||||
// Update the project's theme property
|
||||
const projects = get().projects.map((p) =>
|
||||
p.id === projectId
|
||||
? { ...p, theme: theme === null ? undefined : theme }
|
||||
: p
|
||||
);
|
||||
set({ projects });
|
||||
|
||||
// Also update currentProject if it's the same project
|
||||
const currentProject = get().currentProject;
|
||||
if (currentProject?.id === projectId) {
|
||||
set({
|
||||
currentProject: {
|
||||
...currentProject,
|
||||
theme: theme === null ? undefined : theme,
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
getEffectiveTheme: () => {
|
||||
const currentProject = get().currentProject;
|
||||
// If current project has a theme set, use it
|
||||
if (currentProject?.theme) {
|
||||
return currentProject.theme as ThemeMode;
|
||||
}
|
||||
// Otherwise fall back to global theme
|
||||
return get().theme;
|
||||
},
|
||||
|
||||
// Feature actions
|
||||
setFeatures: (features) => set({ features }),
|
||||
|
||||
|
||||
Reference in New Issue
Block a user