From 3435327bc074a7ba8c3fe8939c97de54bbdefd65 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Thu, 22 Jan 2026 05:10:53 -0600 Subject: fix(app): session screen accessibility improvements (#9907) --- packages/ui/src/components/dialog.tsx | 2 +- packages/ui/src/components/image-preview.tsx | 2 +- packages/ui/src/components/list.tsx | 2 +- packages/ui/src/components/message-part.tsx | 1 + packages/ui/src/components/popover.tsx | 16 +++++++++------- packages/ui/src/components/session-turn.tsx | 14 +++++++++----- packages/ui/src/components/text-field.tsx | 1 + packages/ui/src/components/toast.tsx | 2 +- 8 files changed, 24 insertions(+), 16 deletions(-) (limited to 'packages/ui/src/components') diff --git a/packages/ui/src/components/dialog.tsx b/packages/ui/src/components/dialog.tsx index 4b871732d..cff9edaf2 100644 --- a/packages/ui/src/components/dialog.tsx +++ b/packages/ui/src/components/dialog.tsx @@ -40,7 +40,7 @@ export function Dialog(props: DialogProps) { {props.action} - + diff --git a/packages/ui/src/components/image-preview.tsx b/packages/ui/src/components/image-preview.tsx index 88bf38980..1ab868576 100644 --- a/packages/ui/src/components/image-preview.tsx +++ b/packages/ui/src/components/image-preview.tsx @@ -14,7 +14,7 @@ export function ImagePreview(props: ImagePreviewProps) {
- +
{props.alt diff --git a/packages/ui/src/components/list.tsx b/packages/ui/src/components/list.tsx index aeb2769d6..41e528e79 100644 --- a/packages/ui/src/components/list.tsx +++ b/packages/ui/src/components/list.tsx @@ -230,7 +230,7 @@ export function List(props: ListProps & { ref?: (ref: ListRef) => void }) />
- setInternalFilter("")} /> + setInternalFilter("")} aria-label="Clear filter" />
{searchAction()} diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx index d1788f1df..d639c5224 100644 --- a/packages/ui/src/components/message-part.tsx +++ b/packages/ui/src/components/message-part.tsx @@ -429,6 +429,7 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp event.stopPropagation() handleCopy() }} + aria-label={copied() ? i18n.t("ui.message.copied") : i18n.t("ui.message.copy")} /> diff --git a/packages/ui/src/components/popover.tsx b/packages/ui/src/components/popover.tsx index 3262098e5..3de7cb516 100644 --- a/packages/ui/src/components/popover.tsx +++ b/packages/ui/src/components/popover.tsx @@ -1,21 +1,23 @@ import { Popover as Kobalte } from "@kobalte/core/popover" -import { ComponentProps, JSXElement, ParentProps, Show, splitProps } from "solid-js" +import { ComponentProps, JSXElement, ParentProps, Show, splitProps, ValidComponent } from "solid-js" import { IconButton } from "./icon-button" -export interface PopoverProps extends ParentProps, Omit, "children"> { - trigger: JSXElement +export interface PopoverProps extends ParentProps, Omit, "children"> { + trigger?: JSXElement + triggerAs?: T + triggerProps?: ComponentProps title?: JSXElement description?: JSXElement class?: ComponentProps<"div">["class"] classList?: ComponentProps<"div">["classList"] } -export function Popover(props: PopoverProps) { - const [local, rest] = splitProps(props, ["trigger", "title", "description", "class", "classList", "children"]) +export function Popover(props: PopoverProps) { + const [local, rest] = splitProps(props, ["trigger", "triggerAs", "triggerProps", "title", "description", "class", "classList", "children"]) return ( - + {local.trigger} @@ -30,7 +32,7 @@ export function Popover(props: PopoverProps) {
{local.title} - +
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx index 06e421882..1cd210499 100644 --- a/packages/ui/src/components/session-turn.tsx +++ b/packages/ui/src/components/session-turn.tsx @@ -506,13 +506,13 @@ export function SessionTurn( 0}> -
+
{/* User Message */} -
+
@@ -525,6 +525,7 @@ export function SessionTurn( variant="ghost" size="small" onClick={props.onStepsExpandedToggle ?? (() => {})} + aria-expanded={props.stepsExpanded} > @@ -552,8 +553,8 @@ export function SessionTurn( {i18n.t("ui.sessionTurn.steps.hide")} {i18n.t("ui.sessionTurn.steps.show")} - · - {store.duration} + + {store.duration} 0}> @@ -563,7 +564,7 @@ export function SessionTurn(
{/* Response */} 0}> -
+
{(assistantMessage) => ( {/* Response */} +
+ {!working() && response() ? response() : ""} +
diff --git a/packages/ui/src/components/text-field.tsx b/packages/ui/src/components/text-field.tsx index a4eafa561..0694e421e 100644 --- a/packages/ui/src/components/text-field.tsx +++ b/packages/ui/src/components/text-field.tsx @@ -103,6 +103,7 @@ export function TextField(props: TextFieldProps) { variant="ghost" onClick={handleCopy} data-slot="input-copy-button" + aria-label={copied() ? i18n.t("ui.textField.copied") : i18n.t("ui.textField.copyToClipboard")} /> diff --git a/packages/ui/src/components/toast.tsx b/packages/ui/src/components/toast.tsx index f34c46d42..9493e50ca 100644 --- a/packages/ui/src/components/toast.tsx +++ b/packages/ui/src/components/toast.tsx @@ -62,7 +62,7 @@ function ToastActions(props: ComponentProps<"div">) { } function ToastCloseButton(props: ToastCloseButtonProps & ComponentProps<"button">) { - return + return } function ToastProgressTrack(props: ComponentProps) { -- cgit v1.2.3