@prmichaelsen/acp-visualizer 0.13.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prmichaelsen/acp-visualizer",
3
- "version": "0.13.0",
3
+ "version": "0.13.1",
4
4
  "type": "module",
5
5
  "description": "Browser-based dashboard for visualizing ACP progress.yaml data",
6
6
  "bin": {
@@ -18,13 +18,23 @@ interface SidePanelContextValue {
18
18
  const SidePanelContext = createContext<SidePanelContextValue | undefined>(undefined)
19
19
 
20
20
  const MIN_WIDTH = 300
21
- const MAX_WIDTH = 800
22
21
  const DEFAULT_WIDTH = 500
22
+ const STORAGE_KEY = 'acp-visualizer.side-panel-size'
23
+
24
+ function loadWidth(): number {
25
+ if (typeof window === 'undefined') return DEFAULT_WIDTH
26
+ const stored = localStorage.getItem(STORAGE_KEY)
27
+ if (stored) {
28
+ const parsed = Number(stored)
29
+ if (!isNaN(parsed) && parsed >= MIN_WIDTH) return parsed
30
+ }
31
+ return DEFAULT_WIDTH
32
+ }
23
33
 
24
34
  export function SidePanelProvider({ children }: { children: ReactNode }) {
25
35
  const [content, setContent] = useState<PanelContent>(null)
26
36
  const [isOpen, setIsOpen] = useState(false)
27
- const [width, setWidthState] = useState(DEFAULT_WIDTH)
37
+ const [width, setWidthState] = useState(loadWidth)
28
38
 
29
39
  const openMilestone = (id: string) => {
30
40
  setContent({ type: 'milestone', id })
@@ -42,8 +52,9 @@ export function SidePanelProvider({ children }: { children: ReactNode }) {
42
52
  }
43
53
 
44
54
  const setWidth = (newWidth: number) => {
45
- const clampedWidth = Math.max(MIN_WIDTH, Math.min(MAX_WIDTH, newWidth))
46
- setWidthState(clampedWidth)
55
+ const clamped = Math.max(MIN_WIDTH, newWidth)
56
+ setWidthState(clamped)
57
+ localStorage.setItem(STORAGE_KEY, String(clamped))
47
58
  }
48
59
 
49
60
  return (