+ {asideContent}
+ {canResize && (
+
+ )}
+
+ );
}
diff --git a/src/app/state/threadDrawerWidth.ts b/src/app/state/threadDrawerWidth.ts
new file mode 100644
index 00000000..1f340450
--- /dev/null
+++ b/src/app/state/threadDrawerWidth.ts
@@ -0,0 +1,33 @@
+import {
+ atomWithLocalStorage,
+ getLocalStorageItem,
+ setLocalStorageItem,
+} from './utils/atomWithLocalStorage';
+
+export const THREAD_DRAWER_WIDTH_KEY = 'vojo_thread_drawer_width';
+// Match the prior static `clamp(320, 28%, 420)` lower bound so users on
+// narrow viewports keep the same minimum they had pre-resize.
+export const THREAD_DRAWER_WIDTH_MIN = 320;
+// Upper end of the prior clamp — pleasant default for typical desktops.
+export const THREAD_DRAWER_WIDTH_DEFAULT = 420;
+
+const readThreadDrawerWidth = (key: string): number => {
+ const raw = getLocalStorageItem