diff --git a/src/main/ipc.ts b/src/main/ipc.ts index cebbd766..2c65fb42 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -154,4 +154,17 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { ipcMain.handle('knowledge-base:add', KnowledgeService.add) ipcMain.handle('knowledge-base:remove', KnowledgeService.remove) ipcMain.handle('knowledge-base:search', KnowledgeService.search) + + // window + ipcMain.handle('window:set-minimum-size', (_, width: number, height: number) => { + mainWindow?.setMinimumSize(width, height) + }) + + ipcMain.handle('window:reset-minimum-size', () => { + mainWindow?.setMinimumSize(1080, 600) + const [width, height] = mainWindow?.getSize() ?? [1080, 600] + if (width < 1080) { + mainWindow?.setSize(1080, height) + } + }) } diff --git a/src/preload/index.d.ts b/src/preload/index.d.ts index e9c24b41..0333f1b0 100644 --- a/src/preload/index.d.ts +++ b/src/preload/index.d.ts @@ -76,6 +76,10 @@ declare global { remove: ({ uniqueId, base }: { uniqueId: string; base: KnowledgeBaseParams }) => Promise search: ({ search, base }: { search: string; base: KnowledgeBaseParams }) => Promise } + window: { + setMinimumSize: (width: number, height: number) => Promise + resetMinimumSize: () => Promise + } } } } diff --git a/src/preload/index.ts b/src/preload/index.ts index 2e1b8e99..696d066e 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -70,6 +70,10 @@ const api = { ipcRenderer.invoke('knowledge-base:remove', { uniqueId, base }), search: ({ search, base }: { search: string; base: KnowledgeBaseParams }) => ipcRenderer.invoke('knowledge-base:search', { search, base }) + }, + window: { + setMinimumSize: (width: number, height: number) => ipcRenderer.invoke('window:set-minimum-size', width, height), + resetMinimumSize: () => ipcRenderer.invoke('window:reset-minimum-size') } } diff --git a/src/renderer/src/assets/styles/index.scss b/src/renderer/src/assets/styles/index.scss index 8f5f879e..15fbb7e5 100644 --- a/src/renderer/src/assets/styles/index.scss +++ b/src/renderer/src/assets/styles/index.scss @@ -176,7 +176,7 @@ body, #content-container { border-top-left-radius: 12px; border-left: 0.5px solid var(--color-border); - box-shadow: -2px 0px 20px -4px rgba(0, 0, 0, 0.08); + box-shadow: -2px 0px 20px -4px rgba(0, 0, 0, 0.06); } .loader { diff --git a/src/renderer/src/pages/apps/AppsPage.tsx b/src/renderer/src/pages/apps/AppsPage.tsx index 9d1cf223..4145310c 100644 --- a/src/renderer/src/pages/apps/AppsPage.tsx +++ b/src/renderer/src/pages/apps/AppsPage.tsx @@ -73,14 +73,15 @@ const ContentContainer = styled.div` ` const AppsContainer = styled.div` - display: flex; - min-width: 930px; + display: grid; + min-width: 0; max-width: 930px; + width: 100%; max-height: 520px; min-height: 520px; - display: grid; - grid-template-columns: repeat(8, minmax(90px, 1fr)); - gap: 25px 25px; + grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); + gap: 25px; + justify-content: center; ` export default AppsPage diff --git a/src/renderer/src/pages/home/HomePage.tsx b/src/renderer/src/pages/home/HomePage.tsx index 161f8830..50ee7710 100644 --- a/src/renderer/src/pages/home/HomePage.tsx +++ b/src/renderer/src/pages/home/HomePage.tsx @@ -1,5 +1,5 @@ import { useAssistants } from '@renderer/hooks/useAssistant' -import { useShowAssistants } from '@renderer/hooks/useStore' +import { useSettings } from '@renderer/hooks/useSettings' import { useActiveTopic } from '@renderer/hooks/useTopic' import NavigationService from '@renderer/services/NavigationService' import { Assistant } from '@renderer/types' @@ -22,7 +22,7 @@ const HomePage: FC = () => { const [activeAssistant, setActiveAssistant] = useState(state?.assistant || _activeAssistant || assistants[0]) const { activeTopic, setActiveTopic } = useActiveTopic(activeAssistant, state?.topic) - const { showAssistants } = useShowAssistants() + const { showAssistants, showTopics, topicPosition } = useSettings() _activeAssistant = activeAssistant @@ -35,6 +35,15 @@ const HomePage: FC = () => { state?.topic && setActiveTopic(state?.topic) }, [state]) + useEffect(() => { + const canMinimize = topicPosition == 'left' ? !showAssistants : !showAssistants && !showTopics + window.api.window.setMinimumSize(canMinimize ? 520 : 1080, 600) + + return () => { + window.api.window.resetMinimumSize() + } + }, [showAssistants, showTopics, topicPosition]) + return ( diff --git a/src/renderer/src/pages/home/Navbar.tsx b/src/renderer/src/pages/home/Navbar.tsx index 9dd2fea3..beefff48 100644 --- a/src/renderer/src/pages/home/Navbar.tsx +++ b/src/renderer/src/pages/home/Navbar.tsx @@ -130,6 +130,9 @@ const TitleText = styled.span` font-family: Ubuntu; font-size: 13px; user-select: none; + @media (max-width: 600px) { + display: none; + } ` export default HeaderNavbar diff --git a/src/renderer/src/pages/paintings/Artboard.tsx b/src/renderer/src/pages/paintings/Artboard.tsx index 3669e227..f20443ff 100644 --- a/src/renderer/src/pages/paintings/Artboard.tsx +++ b/src/renderer/src/pages/paintings/Artboard.tsx @@ -72,8 +72,8 @@ const Artboard: FC = ({ preview={{ mask: false }} onContextMenu={handleContextMenu} style={{ - width: '70vh', - height: '70vh', + maxWidth: '70vh', + maxHeight: '70vh', objectFit: 'contain', backgroundColor: 'var(--color-background-soft)', cursor: 'pointer'