Browse Source

add accessibility titles

imwald
Silberengel 4 months ago
parent
commit
c5e0566650
  1. 6
      src/components/AboutInfoDialog/index.tsx
  2. 9
      src/components/ClientSelect/index.tsx
  3. 5
      src/components/EmojiPickerDialog/index.tsx
  4. 6
      src/components/KindFilter/index.tsx
  5. 6
      src/components/LoginDialog/index.tsx
  6. 5
      src/components/NoteOptions/MobileMenu.tsx
  7. 5
      src/components/NoteStats/LikeButton.tsx
  8. 5
      src/components/NoteStats/RepostButton.tsx
  9. 5
      src/components/NoteStats/SeenOnButton.tsx
  10. 8
      src/components/PostEditor/index.tsx

6
src/components/AboutInfoDialog/index.tsx

@ -1,5 +1,5 @@
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog' import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'
import { Drawer, DrawerContent, DrawerTrigger } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerDescription, DrawerTrigger } from '@/components/ui/drawer'
import { CODY_PUBKEY, SILBERENGEL_PUBKEY } from '@/constants' import { CODY_PUBKEY, SILBERENGEL_PUBKEY } from '@/constants'
import { useScreenSize } from '@/providers/ScreenSizeProvider' import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
@ -87,6 +87,10 @@ export default function AboutInfoDialog({ children }: { children: React.ReactNod
<Drawer open={open} onOpenChange={setOpen}> <Drawer open={open} onOpenChange={setOpen}>
<DrawerTrigger asChild>{children}</DrawerTrigger> <DrawerTrigger asChild>{children}</DrawerTrigger>
<DrawerContent> <DrawerContent>
<DrawerHeader className="sr-only">
<DrawerTitle>About</DrawerTitle>
<DrawerDescription>Information about the application</DrawerDescription>
</DrawerHeader>
<div className="p-4 space-y-4">{content}</div> <div className="p-4 space-y-4">{content}</div>
</DrawerContent> </DrawerContent>
</Drawer> </Drawer>

9
src/components/ClientSelect/index.tsx

@ -1,6 +1,6 @@
import { Button, ButtonProps } from '@/components/ui/button' import { Button, ButtonProps } from '@/components/ui/button'
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog' import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'
import { Drawer, DrawerContent, DrawerOverlay, DrawerTrigger } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerOverlay, DrawerTrigger } from '@/components/ui/drawer'
import { Separator } from '@/components/ui/separator' import { Separator } from '@/components/ui/separator'
import { ExtendedKind } from '@/constants' import { ExtendedKind } from '@/constants'
import { getReplaceableEventIdentifier, getNoteBech32Id } from '@/lib/event' import { getReplaceableEventIdentifier, getNoteBech32Id } from '@/lib/event'
@ -176,7 +176,12 @@ export default function ClientSelect({
setOpen(false) setOpen(false)
}} }}
/> />
<DrawerContent hideOverlay>{content}</DrawerContent> <DrawerContent hideOverlay>
<DrawerHeader className="sr-only">
<DrawerTitle>Client Selection</DrawerTitle>
</DrawerHeader>
{content}
</DrawerContent>
</Drawer> </Drawer>
</div> </div>
) )

5
src/components/EmojiPickerDialog/index.tsx

@ -1,4 +1,4 @@
import { Drawer, DrawerContent, DrawerTrigger } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger } from '@/components/ui/drawer'
import { import {
DropdownMenu, DropdownMenu,
DropdownMenuContent, DropdownMenuContent,
@ -24,6 +24,9 @@ export default function EmojiPickerDialog({
<Drawer open={open} onOpenChange={setOpen}> <Drawer open={open} onOpenChange={setOpen}>
<DrawerTrigger asChild>{children}</DrawerTrigger> <DrawerTrigger asChild>{children}</DrawerTrigger>
<DrawerContent> <DrawerContent>
<DrawerHeader className="sr-only">
<DrawerTitle>Emoji Picker</DrawerTitle>
</DrawerHeader>
<EmojiPicker <EmojiPicker
onEmojiClick={(emoji, e) => { onEmojiClick={(emoji, e) => {
e.stopPropagation() e.stopPropagation()

6
src/components/KindFilter/index.tsx

@ -1,6 +1,6 @@
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
import { Checkbox } from '@/components/ui/checkbox' import { Checkbox } from '@/components/ui/checkbox'
import { Drawer, DrawerContent, DrawerHeader, DrawerTrigger } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger } from '@/components/ui/drawer'
import { Label } from '@/components/ui/label' import { Label } from '@/components/ui/label'
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover' import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
import { ExtendedKind, SUPPORTED_KINDS } from '@/constants' import { ExtendedKind, SUPPORTED_KINDS } from '@/constants'
@ -179,7 +179,9 @@ export default function KindFilter({
<Drawer open={open} onOpenChange={setOpen}> <Drawer open={open} onOpenChange={setOpen}>
<DrawerTrigger asChild></DrawerTrigger> <DrawerTrigger asChild></DrawerTrigger>
<DrawerContent className="px-4"> <DrawerContent className="px-4">
<DrawerHeader /> <DrawerHeader className="sr-only">
<DrawerTitle>Filter</DrawerTitle>
</DrawerHeader>
{content} {content}
</DrawerContent> </DrawerContent>
</Drawer> </Drawer>

6
src/components/LoginDialog/index.tsx

@ -1,5 +1,5 @@
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog' import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'
import { Drawer, DrawerContent } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerDescription } from '@/components/ui/drawer'
import { useScreenSize } from '@/providers/ScreenSizeProvider' import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { Dispatch } from 'react' import { Dispatch } from 'react'
import AccountManager from '../AccountManager' import AccountManager from '../AccountManager'
@ -17,6 +17,10 @@ export default function LoginDialog({
return ( return (
<Drawer open={open} onOpenChange={setOpen}> <Drawer open={open} onOpenChange={setOpen}>
<DrawerContent className="max-h-[90vh]"> <DrawerContent className="max-h-[90vh]">
<DrawerHeader className="sr-only">
<DrawerTitle>Account Manager</DrawerTitle>
<DrawerDescription>Manage your Nostr account and settings</DrawerDescription>
</DrawerHeader>
<div className="flex flex-col p-4 gap-4 overflow-auto"> <div className="flex flex-col p-4 gap-4 overflow-auto">
<AccountManager close={() => setOpen(false)} /> <AccountManager close={() => setOpen(false)} />
</div> </div>

5
src/components/NoteOptions/MobileMenu.tsx

@ -1,5 +1,5 @@
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
import { Drawer, DrawerContent, DrawerOverlay } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerOverlay } from '@/components/ui/drawer'
import { ArrowLeft } from 'lucide-react' import { ArrowLeft } from 'lucide-react'
import { MenuAction, SubMenuAction } from './useMenuActions' import { MenuAction, SubMenuAction } from './useMenuActions'
@ -32,6 +32,9 @@ export function MobileMenu({
<Drawer open={isDrawerOpen} onOpenChange={setIsDrawerOpen}> <Drawer open={isDrawerOpen} onOpenChange={setIsDrawerOpen}>
<DrawerOverlay onClick={closeDrawer} /> <DrawerOverlay onClick={closeDrawer} />
<DrawerContent hideOverlay className="max-h-[80vh]"> <DrawerContent hideOverlay className="max-h-[80vh]">
<DrawerHeader className="sr-only">
<DrawerTitle>Options</DrawerTitle>
</DrawerHeader>
<div className="overflow-y-auto overscroll-contain py-2" style={{ touchAction: 'pan-y' }}> <div className="overflow-y-auto overscroll-contain py-2" style={{ touchAction: 'pan-y' }}>
{!showSubMenu ? ( {!showSubMenu ? (
menuActions.map((action, index) => { menuActions.map((action, index) => {

5
src/components/NoteStats/LikeButton.tsx

@ -1,4 +1,4 @@
import { Drawer, DrawerContent, DrawerOverlay } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerOverlay } from '@/components/ui/drawer'
import { import {
DropdownMenu, DropdownMenu,
DropdownMenuContent, DropdownMenuContent,
@ -164,6 +164,9 @@ export default function LikeButton({ event, hideCount = false }: { event: Event;
<Drawer open={isEmojiReactionsOpen} onOpenChange={setIsEmojiReactionsOpen}> <Drawer open={isEmojiReactionsOpen} onOpenChange={setIsEmojiReactionsOpen}>
<DrawerOverlay onClick={() => setIsEmojiReactionsOpen(false)} /> <DrawerOverlay onClick={() => setIsEmojiReactionsOpen(false)} />
<DrawerContent hideOverlay> <DrawerContent hideOverlay>
<DrawerHeader className="sr-only">
<DrawerTitle>React</DrawerTitle>
</DrawerHeader>
{(isDiscussion || isReplyToDiscussion) ? ( {(isDiscussion || isReplyToDiscussion) ? (
<DiscussionEmojis <DiscussionEmojis
onEmojiClick={(emoji) => { onEmojiClick={(emoji) => {

5
src/components/NoteStats/RepostButton.tsx

@ -1,5 +1,5 @@
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
import { Drawer, DrawerContent, DrawerOverlay } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerOverlay } from '@/components/ui/drawer'
import { import {
DropdownMenu, DropdownMenu,
DropdownMenuContent, DropdownMenuContent,
@ -101,6 +101,9 @@ export default function RepostButton({ event, hideCount = false }: { event: Even
<Drawer open={isDrawerOpen} onOpenChange={setIsDrawerOpen}> <Drawer open={isDrawerOpen} onOpenChange={setIsDrawerOpen}>
<DrawerOverlay onClick={() => setIsDrawerOpen(false)} /> <DrawerOverlay onClick={() => setIsDrawerOpen(false)} />
<DrawerContent hideOverlay> <DrawerContent hideOverlay>
<DrawerHeader className="sr-only">
<DrawerTitle>Repost</DrawerTitle>
</DrawerHeader>
<div className="py-2"> <div className="py-2">
<Button <Button
onClick={(e) => { onClick={(e) => {

5
src/components/NoteStats/SeenOnButton.tsx

@ -1,6 +1,6 @@
import { useSecondaryPage } from '@/PageManager' import { useSecondaryPage } from '@/PageManager'
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
import { Drawer, DrawerContent, DrawerOverlay } from '@/components/ui/drawer' import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerOverlay } from '@/components/ui/drawer'
import { import {
DropdownMenu, DropdownMenu,
DropdownMenuContent, DropdownMenuContent,
@ -54,6 +54,9 @@ export default function SeenOnButton({ event }: { event: Event }) {
<Drawer open={isDrawerOpen} onOpenChange={setIsDrawerOpen}> <Drawer open={isDrawerOpen} onOpenChange={setIsDrawerOpen}>
<DrawerOverlay onClick={() => setIsDrawerOpen(false)} /> <DrawerOverlay onClick={() => setIsDrawerOpen(false)} />
<DrawerContent hideOverlay> <DrawerContent hideOverlay>
<DrawerHeader className="sr-only">
<DrawerTitle>Seen on</DrawerTitle>
</DrawerHeader>
<div className="py-2"> <div className="py-2">
{relays.map((relay) => ( {relays.map((relay) => (
<Button <Button

8
src/components/PostEditor/index.tsx

@ -10,7 +10,8 @@ import {
Sheet, Sheet,
SheetContent, SheetContent,
SheetDescription, SheetDescription,
SheetHeader SheetHeader,
SheetTitle
} from '@/components/ui/sheet' } from '@/components/ui/sheet'
import { useScreenSize } from '@/providers/ScreenSizeProvider' import { useScreenSize } from '@/providers/ScreenSizeProvider'
import postEditor from '@/services/post-editor.service' import postEditor from '@/services/post-editor.service'
@ -60,8 +61,9 @@ export default function PostEditor({
> >
<ScrollArea className="px-4 h-full max-h-screen" scrollBarClassName="opacity-100"> <ScrollArea className="px-4 h-full max-h-screen" scrollBarClassName="opacity-100">
<div className="space-y-4 px-2 py-6"> <div className="space-y-4 px-2 py-6">
<SheetHeader> <SheetHeader className="sr-only">
<SheetDescription className="hidden" /> <SheetTitle>Post Editor</SheetTitle>
<SheetDescription>Create a new post or reply</SheetDescription>
</SheetHeader> </SheetHeader>
{content} {content}
</div> </div>

Loading…
Cancel
Save