spoko-design-system 1.26.0 → 1.26.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/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## [1.26.1](https://github.com/polo-blue/sds/compare/v1.26.0...v1.26.1) (2026-02-22)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **CategoryDetails:** prevent sidebar flash during view transitions ([597dceb](https://github.com/polo-blue/sds/commit/597dceb0b1e0dfc8b404d63f63bb75b4a236d191))
6
+
1
7
  ## [1.26.0](https://github.com/polo-blue/sds/compare/v1.25.1...v1.26.0) (2026-02-04)
2
8
 
3
9
  ### Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spoko-design-system",
3
- "version": "1.26.0",
3
+ "version": "1.26.1",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "main": "./index.ts",
@@ -101,18 +101,20 @@ const subcategoryPath = subcategory?.path || `/${category.slug}/${subcategory?.s
101
101
  </div>
102
102
 
103
103
  <script>
104
- function initializeSidebar() {
105
- const sidebar = document.getElementById('sidebar');
104
+ function applySidebarState(doc: Document) {
105
+ const sidebar = doc.getElementById('sidebar');
106
106
  const savedState = localStorage.getItem('sidebarState') || 'open';
107
+ const isCollapsed = savedState === 'closed';
107
108
 
108
109
  if (sidebar) {
109
- sidebar.classList.toggle('collapsed', savedState === 'closed');
110
- updateTogglers(savedState === 'closed');
110
+ sidebar.classList.toggle('collapsed', isCollapsed);
111
111
  }
112
+
113
+ updateTogglers(doc, isCollapsed);
112
114
  }
113
115
 
114
- function updateTogglers(isCollapsed) {
115
- document.querySelectorAll('.category-sidebar-toggler').forEach(toggler => {
116
+ function updateTogglers(doc: Document, isCollapsed: boolean) {
117
+ doc.querySelectorAll('.category-sidebar-toggler').forEach(toggler => {
116
118
  const expandedIcon = toggler.querySelector('.expanded-icon');
117
119
  const collapsedIcon = toggler.querySelector('.collapsed-icon');
118
120
 
@@ -121,8 +123,7 @@ const subcategoryPath = subcategory?.path || `/${category.slug}/${subcategory?.s
121
123
  collapsedIcon.classList.toggle('hidden', !isCollapsed);
122
124
  }
123
125
 
124
- // Update aria-expanded for accessibility
125
- toggler.setAttribute('aria-expanded', !isCollapsed);
126
+ toggler.setAttribute('aria-expanded', String(!isCollapsed));
126
127
  });
127
128
  }
128
129
 
@@ -138,7 +139,7 @@ const subcategoryPath = subcategory?.path || `/${category.slug}/${subcategory?.s
138
139
  const isCollapsed = sidebar.classList.toggle('collapsed');
139
140
  document.body.classList.remove('overflow-hidden');
140
141
  localStorage.setItem('sidebarState', isCollapsed ? 'closed' : 'open');
141
- updateTogglers(isCollapsed);
142
+ updateTogglers(document, isCollapsed);
142
143
  }
143
144
  }
144
145
  }
@@ -150,27 +151,15 @@ const subcategoryPath = subcategory?.path || `/${category.slug}/${subcategory?.s
150
151
  });
151
152
  }
152
153
 
153
- // Initialize on page load
154
+ // Initialize on page load (initial + after view transitions)
154
155
  document.addEventListener('astro:page-load', () => {
155
- initializeSidebar();
156
+ applySidebarState(document);
156
157
  setupTogglers();
157
158
  });
158
159
 
159
- // Preserve state during view transitions
160
- document.addEventListener('astro:before-swap', () => {
161
- const sidebarState = localStorage.getItem('sidebarState');
162
- if (sidebarState) {
163
- sessionStorage.setItem('tempSidebarState', sidebarState);
164
- }
165
- });
166
-
167
- document.addEventListener('astro:after-swap', () => {
168
- const tempState = sessionStorage.getItem('tempSidebarState');
169
- if (tempState) {
170
- localStorage.setItem('sidebarState', tempState);
171
- sessionStorage.removeItem('tempSidebarState');
172
- initializeSidebar();
173
- }
160
+ // Apply sidebar state to incoming DOM BEFORE swap to prevent flash
161
+ document.addEventListener('astro:before-swap', e => {
162
+ applySidebarState(e.newDocument);
174
163
  });
175
164
  </script>
176
165