From 7360105594735a94e6c2f9776e8122d0693a4f43 Mon Sep 17 00:00:00 2001 From: Erkam Yaman Date: Wed, 21 Oct 2026 15:34:23 +0000 Subject: [PATCH 1/5] fix(hub-ui): mark the selected dock with aria-current The dock bar and the group sidebar marked the selected dock only with a scale and a color, so a screen reader announced every dock button the same way and its user could not tell which dock was open (WCAG 4.1.2). The button of the dock that is shown now gets `aria-current="page"`. A new `isCurrent` prop carries this, because `isSelected` is also on while a group popover is merely open. Group members in the sidebar get the same attribute. --- packages/hub-ui/src/client/components/dock/DockEntries.vue | 1 + packages/hub-ui/src/client/components/dock/DockEntry.vue | 6 ++++++ .../hub-ui/src/client/components/dock/DockGroupButton.vue | 1 + .../hub-ui/src/client/components/dock/DockGroupSidebar.vue | 1 + 4 files changed, 9 insertions(+) diff --git a/packages/hub-ui/src/client/components/dock/DockEntries.vue b/packages/hub-ui/src/client/components/dock/DockEntries.vue index 55aa6dc2d..89ab1d55c 100644 --- a/packages/hub-ui/src/client/components/dock/DockEntries.vue +++ b/packages/hub-ui/src/client/components/dock/DockEntries.vue @@ -74,6 +74,7 @@ function toggleDockEntry(dock: DevframeDockEntry) { :dock :is-action="dock.type === 'action'" :is-selected="selected?.id === dock.id" + :is-current="selected?.id === dock.id" :is-dimmed="dimInactive && selected ? (selected.id !== dock.id) : false" :is-vertical="isVertical" :badge="dock.badge" diff --git a/packages/hub-ui/src/client/components/dock/DockEntry.vue b/packages/hub-ui/src/client/components/dock/DockEntry.vue index 4d7e9934c..51d9c8642 100644 --- a/packages/hub-ui/src/client/components/dock/DockEntry.vue +++ b/packages/hub-ui/src/client/components/dock/DockEntry.vue @@ -13,6 +13,11 @@ const props = withDefaults( dock: DevframeDockEntryBase isAction?: boolean isSelected?: boolean + /** + * The dock is the one shown now. Unlike `isSelected`, which is also on + * while a group popover is open, this marks the button `aria-current`. + */ + isCurrent?: boolean isDimmed?: boolean isVertical?: boolean badge?: string @@ -98,6 +103,7 @@ useEventListener('pointerdown', () => {