diff --git a/www/src/components/search-command.tsx b/www/src/components/search-command.tsx index 8a0fb2a69..af7d2cda5 100644 --- a/www/src/components/search-command.tsx +++ b/www/src/components/search-command.tsx @@ -98,11 +98,9 @@ export function SearchCommand({ ) return isMobile ? ( - // Match the desktop modal's raised surface. Near-full-height sheet - // (mirrors base-ui.com's mobile search): the input sits at the top, - // structurally clear of the iOS keyboard, and the results list - // flexes below it. The drawer's keyboard inset keeps the list's - // bottom above the keyboard. + // Match the desktop modal's raised surface. Near-full-height sheet: + // the results list flexes above the input, which sits at the + // bottom — the drawer's keyboard inset keeps it above the keyboard. {content} diff --git a/www/src/components/search-dialog.tsx b/www/src/components/search-dialog.tsx index 8aeadce52..07f62d0d0 100644 --- a/www/src/components/search-dialog.tsx +++ b/www/src/components/search-dialog.tsx @@ -183,11 +183,21 @@ export default function SearchDialog({ data-command="" className={commandStyles({ // On mobile the dialog fills a near-full-height drawer, so the - // command column flexes instead of sizing to its content. - className: "gap-0 overflow-y-hidden p-0 max-md:min-h-0 max-md:grow", + // command column flexes instead of sizing to its content, and the + // field's shell inset moves to its bottom edge (same specificity as + // the command's own **: rules, which outrank plain classes). + className: + "gap-0 overflow-y-hidden p-0 max-md:min-h-0 max-md:grow max-md:**:data-search-field:pt-0 max-md:**:data-search-field:pb-1.5", })} > - + {/* On mobile the field sits at the bottom of the drawer, thumb-reach + and directly above the keyboard (the drawer's keyboard inset pads + the popup bottom). */} + {/* Radius stays concentric with the modal (2xl − 6px inset); the filled input needs no focus treatment, so the ring is off and the border stays the neutral field color on focus. */} @@ -206,7 +216,7 @@ export default function SearchDialog({ it rather than on the wrapper. */} (