diff --git a/.Jules/palette.md b/.Jules/palette.md index 7af9e36..02689eb 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -1,3 +1,6 @@ ## 2025-03-05 - Form controls missing focus indicators and ARIA labels **Learning:** Found that custom search inputs and select dropdowns were using `focus:outline-none` but missing visual focus states, impairing keyboard accessibility. Additionally, they were missing explicit ARIA labels. **Action:** Always ensure any interactive control using `focus:outline-none` has a corresponding `focus-visible:` ring state added (using standard `focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--strand-color-accent-lede)]`), and verify inputs have `aria-label` or related `aria-labelledby`. +## 2025-05-29 - Missing ARIA labels and focus states on interactive elements in playground +**Learning:** Verified that missing explicit `aria-label` attributes and visually prominent focus states (by stripping with `focus:outline-none`) are a recurring issue for custom inputs and selects, especially those nested inside wrapper components like `` that do not natively handle `htmlFor`. +**Action:** Always add explicit `aria-label` attributes to form elements where the visual label isn't directly bound, and replace `focus:outline-none` with `focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--strand-color-accent-lede)] focus:outline-none` to ensure keyboard accessibility. diff --git a/apps/quill/client/components/playground-view.tsx b/apps/quill/client/components/playground-view.tsx index 511226b..bdcdb49 100644 --- a/apps/quill/client/components/playground-view.tsx +++ b/apps/quill/client/components/playground-view.tsx @@ -295,7 +295,8 @@ export function PlaygroundView({
setPresetSlug(e.target.value as UseCase | "")} value={presetSlug} > @@ -326,7 +328,8 @@ export function PlaygroundView({ setTemperature(Number.parseFloat(e.target.value))} @@ -341,7 +344,8 @@ export function PlaygroundView({