diff --git a/k-notes-frontend/src/components/ui/sidebar.tsx b/k-notes-frontend/src/components/ui/sidebar.tsx
index 30638ac..4a2113c 100644
--- a/k-notes-frontend/src/components/ui/sidebar.tsx
+++ b/k-notes-frontend/src/components/ui/sidebar.tsx
@@ -207,7 +207,7 @@ function Sidebar({
return (
) {
data-slot="sidebar-inset"
className={cn(
"bg-background relative flex w-full flex-1 flex-col",
- "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
+ "lg:peer-data-[variant=inset]:m-2 lg:peer-data-[variant=inset]:ml-0 lg:peer-data-[variant=inset]:rounded-xl lg:peer-data-[variant=inset]:shadow-sm lg:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
className
)}
{...props}
@@ -569,7 +569,7 @@ function SidebarMenuAction({
"peer-data-[size=lg]/menu-button:top-2.5",
"group-data-[collapsible=icon]:hidden",
showOnHover &&
- "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
+ "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
className
)}
{...props}
diff --git a/k-notes-frontend/src/hooks/use-mobile.ts b/k-notes-frontend/src/hooks/use-mobile.ts
index 2b0fe1d..4355a52 100644
--- a/k-notes-frontend/src/hooks/use-mobile.ts
+++ b/k-notes-frontend/src/hooks/use-mobile.ts
@@ -1,6 +1,6 @@
import * as React from "react"
-const MOBILE_BREAKPOINT = 768
+const MOBILE_BREAKPOINT = 1025
export function useIsMobile() {
const [isMobile, setIsMobile] = React.useState
(undefined)
diff --git a/k-notes-frontend/src/index.css b/k-notes-frontend/src/index.css
index f578180..6bbd33d 100644
--- a/k-notes-frontend/src/index.css
+++ b/k-notes-frontend/src/index.css
@@ -5,6 +5,9 @@
@custom-variant dark (&:is(.dark *));
@theme inline {
+ /* Override lg breakpoint to include 1024px devices (tablets) in mobile layout */
+ --breakpoint-lg: 1025px;
+
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
diff --git a/k-notes-frontend/src/pages/dashboard.tsx b/k-notes-frontend/src/pages/dashboard.tsx
index ac5b52a..9c2adb8 100644
--- a/k-notes-frontend/src/pages/dashboard.tsx
+++ b/k-notes-frontend/src/pages/dashboard.tsx
@@ -14,12 +14,13 @@ import { useKeyboardShortcuts } from "@/hooks/use-keyboard-shortcuts";
import { useTranslation } from "react-i18next";
// Masonry breakpoint columns configuration
+// react-masonry-css: key = max-width, value = column count at that width and below
+// Check order: finds first key >= viewport width
const masonryBreakpoints = {
- default: 4,
- 1280: 4,
- 1024: 3,
- 768: 2,
- 640: 1,
+ default: 4, // Default for very large screens
+ 1280: 4, // 1025-1280px: 4 columns (wide desktop)
+ 1024: 2, // 481-1024px: 2 columns (tablets - since sidebar is overlay)
+ 480: 1, // 0-480px: 1 column (phones)
};
export default function DashboardPage() {
@@ -93,10 +94,10 @@ export default function DashboardPage() {
};
return (
-
+
{/* Action Bar */}
-
-
+
+
-
+
{!isArchive && (
-
+
)}
@@ -154,7 +155,7 @@ export default function DashboardPage() {
{isLoading && (
@@ -206,7 +207,7 @@ export default function DashboardPage() {
trigger={