diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-07-26 12:58:01 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-07-26 12:58:01 +0000 |
| commit | 154efe17421ca96d433fcc1f820ad460e1675bdc (patch) | |
| tree | 4336090648fe7196818bcc371104d3b603a68c0e /apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx | |
| parent | 8b4fb49cc066eef602d9d089e7b71d183231a8fd (diff) | |
| download | karakeep-154efe17421ca96d433fcc1f820ad460e1675bdc.tar.zst | |
feat: Configurable number of grid columns. Fixes #1713
Diffstat (limited to 'apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx')
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx b/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx index 21bc5fed..954a7751 100644 --- a/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx +++ b/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx @@ -5,6 +5,7 @@ import useBulkActionsStore from "@/lib/bulkActions"; import { bookmarkLayoutSwitch, useBookmarkLayout, + useGridColumns, } from "@/lib/userLocalSettings/bookmarksLayout"; import tailwindConfig from "@/tailwind.config"; import { Slot } from "@radix-ui/react-slot"; @@ -27,15 +28,21 @@ function StyledBookmarkCard({ children }: { children: React.ReactNode }) { ); } -function getBreakpointConfig() { +function getBreakpointConfig(userColumns: number) { const fullConfig = resolveConfig(tailwindConfig); const breakpointColumnsObj: { [key: number]: number; default: number } = { - default: 3, + default: userColumns, }; - breakpointColumnsObj[parseInt(fullConfig.theme.screens.lg)] = 2; - breakpointColumnsObj[parseInt(fullConfig.theme.screens.md)] = 1; - breakpointColumnsObj[parseInt(fullConfig.theme.screens.sm)] = 1; + + // Responsive behavior: reduce columns on smaller screens + const lgColumns = Math.max(1, Math.min(userColumns, userColumns - 1)); + const mdColumns = Math.max(1, Math.min(userColumns, 2)); + const smColumns = 1; + + breakpointColumnsObj[parseInt(fullConfig.theme.screens.lg)] = lgColumns; + breakpointColumnsObj[parseInt(fullConfig.theme.screens.md)] = mdColumns; + breakpointColumnsObj[parseInt(fullConfig.theme.screens.sm)] = smColumns; return breakpointColumnsObj; } @@ -53,8 +60,12 @@ export default function BookmarksGrid({ fetchNextPage?: () => void; }) { const layout = useBookmarkLayout(); + const gridColumns = useGridColumns(); const bulkActionsStore = useBulkActionsStore(); - const breakpointConfig = useMemo(() => getBreakpointConfig(), []); + const breakpointConfig = useMemo( + () => getBreakpointConfig(gridColumns), + [gridColumns], + ); const { ref: loadMoreRef, inView: loadMoreButtonInView } = useInView(); useEffect(() => { |
