diff --git a/.jules/palette.md b/.jules/palette.md index ea004e2d..e0de0d76 100644 --- a/.jules/palette.md +++ b/.jules/palette.md @@ -81,3 +81,6 @@ ## 2026-08-12 - Skip to Content Accessibility **Learning:** Screen reader and keyboard-only users experience significant friction when forced to navigate through repetitive header controls on every page load. **Action:** Keep a visible-on-focus skip link as the first interactive element, target a programmatically focusable main container, and give the focused link a high-contrast outline. +## 2024-05-19 - Visually hiding file inputs for better UX +**Learning:** Browsers natively suppress `change` events on `` if the user selects the same file repeatedly. Also, native file inputs are often difficult to style consistently. Replacing them with a styled proxy ` +

@@ -325,6 +326,9 @@

Dashboard

} const fileInput = document.getElementById('file'); +const fileProxy = document.getElementById('file-proxy'); +fileProxy.addEventListener('click', () => fileInput.click()); + fileInput.addEventListener('change', () => { const selectedFile = fileInput.files?.[0]; fileInput.value = '';