Accessibility
DetailDrawer, DetailDrawerSection from @prepared911/ui/blocks/detail-drawer.
dialog named by label. The record's title is the h2 inside it and each DetailDrawerSection title is an h3, so the heading order never skips.onOpenChange, unless the caller cancels it. With a dirty guard it opens the confirm dialog instead; a second Escape on the dialog keeps editing and leaves the drawer open, and focus stays inside the drawer.alertdialog named by its title and described by its explanation. Keep editing, the safe choice, takes focus first. A press outside never closes it.radiogroup named by recordsLabel. The arrow keys move between records and report onRecordChange; the selected segment is the record on screen. The strip scrolls on the inline axis when the segments overflow.loading, the title is a skeleton and the heading keeps its name; the body is a skeleton named by loadingLabel, in a region marked aria-busy. Nothing is disabled.scrollRegionLabel, so a keyboard user can scroll it.aria-label name. The close control is named by closeLabel.