aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-07-26 12:58:01 +0000
committerMohamed Bassem <me@mbassem.com>2025-07-26 12:58:01 +0000
commit154efe17421ca96d433fcc1f820ad460e1675bdc (patch)
tree4336090648fe7196818bcc371104d3b603a68c0e /apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx
parent8b4fb49cc066eef602d9d089e7b71d183231a8fd (diff)
downloadkarakeep-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.tsx23
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(() => {