import { ReactNode } from 'react'; import { PopoverSlot } from '../popover/PopoverSheet'; export type BottomSheetCloseReason = 'closeButton' | 'scrim' | 'escape' | 'drag' | 'viewResults' | 'action'; /** @figmaNode 9Q7C7JYPgnUSsrX1L8v40t#5354-169163 (Ad-Voca-concept · "_bottom sheet") */ export interface StyledBottomSheetProps { /** @figmaProp none — test hook */ dataTest: string; /** @figmaProp none — a11y: lets a trigger point `aria-controls` at the sheet */ id?: string; /** @figmaProp none — behavioral: controlled */ open: boolean; /** @figmaProp none — behavioral: every dismiss route lands here; none of them commits anything */ onClose: (reason: BottomSheetCloseReason) => void; /** * Name the object, not just the action — "Handlinger — søknad 4417". A sheet detaches from its * trigger, so the header is what tells the user which row they opened. * @figmaProp Title = ReactNode→true | undefined→false */ title?: ReactNode; /** @figmaProp none — a11y: the dialog's name when there is no `title` */ ariaLabel?: string; /** @figmaProp Slot — the scrollable body */ children: PopoverSlot; /** * Left of the footer. Omit it and pass `resultCount` to get the standard "Vis resultater (N)". * @figmaProp Footer = ReactNode→true | undefined→false — left slot ("View results (3)") */ viewResultsAction?: PopoverSlot; /** @figmaProp Footer = ReactNode→true | undefined→false — right slot ("Reset filter") */ resetAction?: PopoverSlot; /** @figmaProp none — the popover's Actions row, kept so nothing is lost when it becomes a sheet */ footerActions?: PopoverSlot; /** * Result total for the built-in "Vis resultater (N)" control and its in-sheet live region. `null` * means the total is unavailable. Keep passing the last count while a request is in flight — the * label never blanks, never disables and never shows a spinner. * @figmaProp none — behavioral */ resultCount?: number | null; /** @figmaProp none — a11y: accessible name of the close control */ closeLabel?: string; /** @figmaProp none — style escape hatch, applied to the sheet container */ className?: string; } /** * ASMA Design System **Bottom Sheet** (ASMA-8184) — the mobile (0–743px) form of the Action popover: * a modal sheet with a dimmed scrim, top-rounded container, decorative grabber, header (title + * close), a body that scrolls internally and an optional sticky footer. * * Height fits the content up to 90vh; there are no resize detents. Below 480px of viewport height * (a phone in landscape) it becomes a full-screen dialog instead. Five equivalent dismiss routes — * close button, "Vis resultater", scrim, Escape, dragging down past 30% — and none of them commits * or discards anything: filters apply as the user goes and actions commit on activation. * * Interaction model is the popover's: `role="dialog"`, `Tab` only, no `role="menu"`, no arrow keys. * Focus moves to the sheet on open (so the title is announced first) and back to the trigger on * close. `PopoverSheet` with `variant='action'` renders this automatically below 744px. */ export declare const StyledBottomSheet: ({ dataTest, id, open, onClose, title, ariaLabel, children, viewResultsAction, resetAction, footerActions, resultCount, closeLabel, className, }: StyledBottomSheetProps) => JSX.Element | null;