diff --git a/docs/src/app/(docs)/react/components/alert-dialog/demos/_index.module.css b/docs/src/app/(docs)/react/components/alert-dialog/demos/_index.module.css index 1690fa86d9d..552bc0df8a4 100644 --- a/docs/src/app/(docs)/react/components/alert-dialog/demos/_index.module.css +++ b/docs/src/app/(docs)/react/components/alert-dialog/demos/_index.module.css @@ -72,7 +72,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: 0.2; @@ -81,6 +80,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { @@ -103,7 +103,7 @@ left: 50%; transform: translate(-50%, -50%); width: 24rem; - max-width: calc(100vw - 3rem); + max-width: calc(100% - 3rem); margin-top: -2rem; padding: 1rem; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/alert-dialog/demos/detached-triggers-controlled/tailwind/index.tsx b/docs/src/app/(docs)/react/components/alert-dialog/demos/detached-triggers-controlled/tailwind/index.tsx index fa0210be608..df5946f2de4 100644 --- a/docs/src/app/(docs)/react/components/alert-dialog/demos/detached-triggers-controlled/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/alert-dialog/demos/detached-triggers-controlled/tailwind/index.tsx @@ -70,8 +70,8 @@ export default function AlertDialogDetachedTriggersControlledDemo() { > {({ payload }) => ( - - + +
{payload?.message ?? 'Are you sure?'} diff --git a/docs/src/app/(docs)/react/components/alert-dialog/demos/detached-triggers-simple/tailwind/index.tsx b/docs/src/app/(docs)/react/components/alert-dialog/demos/detached-triggers-simple/tailwind/index.tsx index b863dcec53b..4c07cd00167 100644 --- a/docs/src/app/(docs)/react/components/alert-dialog/demos/detached-triggers-simple/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/alert-dialog/demos/detached-triggers-simple/tailwind/index.tsx @@ -18,8 +18,8 @@ export default function AlertDialogDetachedTriggersSimpleDemo() { - - + +
Discard draft? diff --git a/docs/src/app/(docs)/react/components/alert-dialog/demos/hero/css-modules/index.module.css b/docs/src/app/(docs)/react/components/alert-dialog/demos/hero/css-modules/index.module.css index 7f0b579b063..f71007183e7 100644 --- a/docs/src/app/(docs)/react/components/alert-dialog/demos/hero/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/alert-dialog/demos/hero/css-modules/index.module.css @@ -72,7 +72,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: 0.2; @@ -81,6 +80,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { @@ -103,7 +103,7 @@ left: 50%; transform: translate(-50%, -50%); width: 24rem; - max-width: calc(100vw - 3rem); + max-width: calc(100% - 3rem); margin-top: -2rem; padding: 1rem; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/alert-dialog/demos/hero/tailwind/index.tsx b/docs/src/app/(docs)/react/components/alert-dialog/demos/hero/tailwind/index.tsx index cbb9dc6808d..d22f01406f2 100644 --- a/docs/src/app/(docs)/react/components/alert-dialog/demos/hero/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/alert-dialog/demos/hero/tailwind/index.tsx @@ -10,8 +10,8 @@ export default function ExampleAlertDialog() { Discard draft - - + +
Discard draft? diff --git a/docs/src/app/(docs)/react/components/alert-dialog/demos/open-from-menu/css-modules/index.module.css b/docs/src/app/(docs)/react/components/alert-dialog/demos/open-from-menu/css-modules/index.module.css index 9ce135eeab8..a72850288be 100644 --- a/docs/src/app/(docs)/react/components/alert-dialog/demos/open-from-menu/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/alert-dialog/demos/open-from-menu/css-modules/index.module.css @@ -149,7 +149,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: 0.2; @@ -158,6 +157,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { @@ -180,7 +180,7 @@ left: 50%; transform: translate(-50%, -50%); width: 24rem; - max-width: calc(100vw - 3rem); + max-width: calc(100% - 3rem); margin-top: -2rem; padding: 1rem; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/alert-dialog/demos/open-from-menu/tailwind/index.tsx b/docs/src/app/(docs)/react/components/alert-dialog/demos/open-from-menu/tailwind/index.tsx index 6f4f10c902a..bd65dbb098f 100644 --- a/docs/src/app/(docs)/react/components/alert-dialog/demos/open-from-menu/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/alert-dialog/demos/open-from-menu/tailwind/index.tsx @@ -30,8 +30,8 @@ export default function ExampleAlertDialog() { {/* Control the alert dialog state */} - - + +
Delete playlist? diff --git a/docs/src/app/(docs)/react/components/dialog/demos/_index.module.css b/docs/src/app/(docs)/react/components/dialog/demos/_index.module.css index fcf40ce3f9b..c6cfd6c6927 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/_index.module.css +++ b/docs/src/app/(docs)/react/components/dialog/demos/_index.module.css @@ -64,7 +64,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: 0.2; @@ -73,6 +72,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { @@ -95,7 +95,7 @@ left: 50%; transform: translate(-50%, -50%); width: 24rem; - max-width: calc(100vw - 3rem); + max-width: calc(100% - 3rem); margin-top: -2rem; padding: 1rem; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/dialog/demos/detached-triggers-controlled/tailwind/index.tsx b/docs/src/app/(docs)/react/components/dialog/demos/detached-triggers-controlled/tailwind/index.tsx index d63e34239c8..847c8c86438 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/detached-triggers-controlled/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/dialog/demos/detached-triggers-controlled/tailwind/index.tsx @@ -63,8 +63,8 @@ export default function DialogDetachedTriggersControlledDemo() { > {({ payload }) => ( - - + + {payload !== undefined && ( Dialog {payload} )} diff --git a/docs/src/app/(docs)/react/components/dialog/demos/detached-triggers-simple/tailwind/index.tsx b/docs/src/app/(docs)/react/components/dialog/demos/detached-triggers-simple/tailwind/index.tsx index f4244f56321..f0d03eae6c7 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/detached-triggers-simple/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/dialog/demos/detached-triggers-simple/tailwind/index.tsx @@ -16,8 +16,8 @@ export default function DialogDetachedTriggersSimpleDemo() { - - + +
Notifications diff --git a/docs/src/app/(docs)/react/components/dialog/demos/focus-management/css-modules/index.module.css b/docs/src/app/(docs)/react/components/dialog/demos/focus-management/css-modules/index.module.css index 41a67fe1428..087d0f267c6 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/focus-management/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/dialog/demos/focus-management/css-modules/index.module.css @@ -71,7 +71,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: 0.2; @@ -80,6 +79,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { @@ -102,7 +102,7 @@ left: 50%; transform: translate(-50%, -50%); width: 24rem; - max-width: calc(100vw - 3rem); + max-width: calc(100% - 3rem); margin-top: -2rem; padding: 1rem; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/dialog/demos/focus-management/tailwind/index.tsx b/docs/src/app/(docs)/react/components/dialog/demos/focus-management/tailwind/index.tsx index f0ecffc33f5..96b18f7aaa3 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/focus-management/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/dialog/demos/focus-management/tailwind/index.tsx @@ -15,11 +15,11 @@ export default function ExampleDialog() { Open feedback - +
Feedback form diff --git a/docs/src/app/(docs)/react/components/dialog/demos/hero/css-modules/index.module.css b/docs/src/app/(docs)/react/components/dialog/demos/hero/css-modules/index.module.css index f5faa6ac8c3..96433615283 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/hero/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/dialog/demos/hero/css-modules/index.module.css @@ -64,7 +64,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: 0.2; @@ -73,6 +72,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { @@ -95,7 +95,7 @@ left: 50%; transform: translate(-50%, -50%); width: 24rem; - max-width: calc(100vw - 3rem); + max-width: calc(100% - 3rem); margin-top: -2rem; padding: 1rem; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/dialog/demos/hero/tailwind/index.tsx b/docs/src/app/(docs)/react/components/dialog/demos/hero/tailwind/index.tsx index 270515cdb9b..f1274141122 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/hero/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/dialog/demos/hero/tailwind/index.tsx @@ -7,8 +7,8 @@ export default function ExampleDialog() { View notifications - - + +
Notifications diff --git a/docs/src/app/(docs)/react/components/dialog/demos/inside-scroll/css-modules/index.module.css b/docs/src/app/(docs)/react/components/dialog/demos/inside-scroll/css-modules/index.module.css index f93428ed363..81ec4d01632 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/inside-scroll/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/dialog/demos/inside-scroll/css-modules/index.module.css @@ -102,7 +102,7 @@ position: relative; display: flex; flex-direction: column; - width: min(40rem, calc(100vw - 2rem)); + width: min(40rem, calc(100% - 2rem)); max-height: 100%; max-width: 100%; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/dialog/demos/inside-scroll/tailwind/index.tsx b/docs/src/app/(docs)/react/components/dialog/demos/inside-scroll/tailwind/index.tsx index 6b6d036d71f..60cf62b57b2 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/inside-scroll/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/dialog/demos/inside-scroll/tailwind/index.tsx @@ -10,7 +10,7 @@ export default function InsideScrollDialog() { - +
Dialog diff --git a/docs/src/app/(docs)/react/components/dialog/demos/nested/css-modules/index.module.css b/docs/src/app/(docs)/react/components/dialog/demos/nested/css-modules/index.module.css index 6bf6211f20a..a59838bd311 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/nested/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/dialog/demos/nested/css-modules/index.module.css @@ -107,7 +107,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: 0.2; @@ -116,6 +115,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { @@ -137,7 +137,7 @@ flex-direction: column; gap: 1rem; width: 24rem; - max-width: calc(100vw - 3rem); + max-width: calc(100% - 3rem); margin-top: -2rem; padding: 1rem; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/dialog/demos/nested/tailwind/index.tsx b/docs/src/app/(docs)/react/components/dialog/demos/nested/tailwind/index.tsx index 0419e971aad..4fe86dd27b3 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/nested/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/dialog/demos/nested/tailwind/index.tsx @@ -7,8 +7,8 @@ export default function ExampleDialog() { View notifications - - + +
Notifications @@ -21,7 +21,7 @@ export default function ExampleDialog() { Customize - +
Customize notifications diff --git a/docs/src/app/(docs)/react/components/dialog/demos/open-from-menu/css-modules/index.module.css b/docs/src/app/(docs)/react/components/dialog/demos/open-from-menu/css-modules/index.module.css index eb836a23993..74db6af16cd 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/open-from-menu/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/dialog/demos/open-from-menu/css-modules/index.module.css @@ -141,7 +141,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: 0.2; @@ -150,6 +149,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { @@ -172,7 +172,7 @@ left: 50%; transform: translate(-50%, -50%); width: 24rem; - max-width: calc(100vw - 3rem); + max-width: calc(100% - 3rem); margin-top: -2rem; padding: 1rem; border: 1px solid oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/dialog/demos/open-from-menu/tailwind/index.tsx b/docs/src/app/(docs)/react/components/dialog/demos/open-from-menu/tailwind/index.tsx index f77d3e96210..f72b393d108 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/open-from-menu/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/dialog/demos/open-from-menu/tailwind/index.tsx @@ -30,8 +30,8 @@ export default function ExampleDialog() { {/* Control the dialog state */} - - + +
Playlist details diff --git a/docs/src/app/(docs)/react/components/dialog/demos/uncontained/css-modules/index.module.css b/docs/src/app/(docs)/react/components/dialog/demos/uncontained/css-modules/index.module.css index 196f78bd758..6fada7e1871 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/uncontained/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/dialog/demos/uncontained/css-modules/index.module.css @@ -64,7 +64,6 @@ .Backdrop { position: fixed; - min-height: 100dvh; inset: 0; background-color: rgb(0 0 0 / 20%); transition: opacity 150ms; @@ -72,6 +71,7 @@ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { diff --git a/docs/src/app/(docs)/react/components/dialog/demos/uncontained/tailwind/index.tsx b/docs/src/app/(docs)/react/components/dialog/demos/uncontained/tailwind/index.tsx index e0459ad82ec..d4b1c245af5 100644 --- a/docs/src/app/(docs)/react/components/dialog/demos/uncontained/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/dialog/demos/uncontained/tailwind/index.tsx @@ -7,7 +7,7 @@ export default function ExampleUncontainedDialog() { Open dialog - + - + - + Drawer diff --git a/docs/src/app/(docs)/react/components/drawer/demos/nested/css-modules/index.module.css b/docs/src/app/(docs)/react/components/drawer/demos/nested/css-modules/index.module.css index aa0a215edd9..52553608e3d 100644 --- a/docs/src/app/(docs)/react/components/drawer/demos/nested/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/drawer/demos/nested/css-modules/index.module.css @@ -66,7 +66,6 @@ --backdrop-opacity: 0.2; --bleed: 3rem; position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: calc(var(--backdrop-opacity) * (1 - var(--drawer-swipe-progress))); @@ -74,6 +73,11 @@ transition-property: opacity; transition-timing-function: cubic-bezier(0.32, 0.72, 0, 1); + /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ + @supports (-webkit-touch-callout: none) { + min-height: 100dvh; + } + @media (prefers-color-scheme: dark) { --backdrop-opacity: 0.7; } @@ -127,7 +131,7 @@ width: calc(100% + 2px); margin-left: -1px; margin-right: -1px; - max-height: calc(80vh + var(--bleed)); + max-height: calc(80% + var(--bleed)); height: var(--drawer-height, auto); margin-bottom: calc(-1 * var(--bleed)); padding: 1rem 1.5rem 1.5rem; @@ -149,6 +153,10 @@ will-change: transform; transform: translateY(var(--translate-y)) scale(var(--stack-scale)); + @supports (-webkit-touch-callout: none) { + max-height: calc(80vh + var(--bleed)); + } + @media (prefers-color-scheme: dark) { border-color: white; background-color: oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/drawer/demos/nested/tailwind/index.tsx b/docs/src/app/(docs)/react/components/drawer/demos/nested/tailwind/index.tsx index ab0de67ebdc..45267e749f3 100644 --- a/docs/src/app/(docs)/react/components/drawer/demos/nested/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/drawer/demos/nested/tailwind/index.tsx @@ -8,7 +8,7 @@ export default function ExampleDrawerNested() { Open drawer stack - +
@@ -127,7 +127,7 @@ export default function ExampleDrawerNested() { } const popupClassName = - "[--bleed:3rem] [--peek:1rem] [--stack-progress:clamp(0,var(--drawer-swipe-progress),1)] [--stack-step:0.05] [--stack-peek-offset:max(0px,calc((var(--nested-drawers)-var(--stack-progress))*var(--peek)))] [--scale-base:calc(max(0,1-(var(--nested-drawers)*var(--stack-step))))] [--scale:clamp(0,calc(var(--scale-base)+(var(--stack-step)*var(--stack-progress))),1)] [--shrink:calc(1-var(--scale))] [--height:max(0px,calc(var(--drawer-frontmost-height,var(--drawer-height))-var(--bleed)))] group/popup relative -mx-px -mb-[3rem] w-[calc(100%+2px)] max-h-[calc(80vh+3rem)] [height:var(--drawer-height,auto)] border border-neutral-950 border-b-0 bg-white px-6 pt-4 pb-[calc(1.5rem+env(safe-area-inset-bottom,0px)+3rem)] text-neutral-950 outline-none shadow-[0.25rem_0.25rem_0] shadow-black/12 overflow-y-auto overscroll-contain touch-auto [transform-origin:50%_calc(100%-var(--bleed))] [transform:translateY(calc(var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--shrink)*var(--height))))_scale(var(--scale))] after:pointer-events-none after:absolute after:inset-0 after:bg-transparent after:content-[''] after:transition-[background-color] after:duration-[450ms] after:ease-[cubic-bezier(0.32,0.72,0,1)] data-swiping:select-none data-swiping:duration-0 data-nested-drawer-swiping:duration-0 data-starting-style:[transform:translateY(calc(100%-var(--bleed)+2px))] data-ending-style:[transform:translateY(calc(100%-var(--bleed)+2px))] data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-nested-drawer-open:h-[calc(var(--height)+var(--bleed))] data-nested-drawer-open:overflow-hidden data-nested-drawer-open:after:bg-black/5 dark:border-white dark:border-b-0 dark:bg-neutral-950 dark:text-white dark:shadow-none [transition:transform_450ms_cubic-bezier(0.32,0.72,0,1),height_450ms_cubic-bezier(0.32,0.72,0,1),opacity_450ms_cubic-bezier(0.32,0.72,0,1)]"; + "[--bleed:3rem] [--peek:1rem] [--stack-progress:clamp(0,var(--drawer-swipe-progress),1)] [--stack-step:0.05] [--stack-peek-offset:max(0px,calc((var(--nested-drawers)-var(--stack-progress))*var(--peek)))] [--scale-base:calc(max(0,1-(var(--nested-drawers)*var(--stack-step))))] [--scale:clamp(0,calc(var(--scale-base)+(var(--stack-step)*var(--stack-progress))),1)] [--shrink:calc(1-var(--scale))] [--height:max(0px,calc(var(--drawer-frontmost-height,var(--drawer-height))-var(--bleed)))] group/popup relative -mx-px -mb-[3rem] w-[calc(100%+2px)] max-h-[calc(80%+3rem)] supports-[-webkit-touch-callout:none]:max-h-[calc(80vh+3rem)] [height:var(--drawer-height,auto)] border border-neutral-950 border-b-0 bg-white px-6 pt-4 pb-[calc(1.5rem+env(safe-area-inset-bottom,0px)+3rem)] text-neutral-950 outline-none shadow-[0.25rem_0.25rem_0] shadow-black/12 overflow-y-auto overscroll-contain touch-auto [transform-origin:50%_calc(100%-var(--bleed))] [transform:translateY(calc(var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--shrink)*var(--height))))_scale(var(--scale))] after:pointer-events-none after:absolute after:inset-0 after:bg-transparent after:content-[''] after:transition-[background-color] after:duration-[450ms] after:ease-[cubic-bezier(0.32,0.72,0,1)] data-swiping:select-none data-swiping:duration-0 data-nested-drawer-swiping:duration-0 data-starting-style:[transform:translateY(calc(100%-var(--bleed)+2px))] data-ending-style:[transform:translateY(calc(100%-var(--bleed)+2px))] data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-nested-drawer-open:h-[calc(var(--height)+var(--bleed))] data-nested-drawer-open:overflow-hidden data-nested-drawer-open:after:bg-black/5 dark:border-white dark:border-b-0 dark:bg-neutral-950 dark:text-white dark:shadow-none [transition:transform_450ms_cubic-bezier(0.32,0.72,0,1),height_450ms_cubic-bezier(0.32,0.72,0,1),opacity_450ms_cubic-bezier(0.32,0.72,0,1)]"; const contentClassName = 'mx-auto w-full max-w-[32rem] transition-opacity duration-[300ms] ease-[cubic-bezier(0.45,1.005,0,1.005)] group-data-nested-drawer-open/popup:opacity-0 group-data-nested-drawer-swiping/popup:opacity-100'; diff --git a/docs/src/app/(docs)/react/components/drawer/demos/position/css-modules/index.module.css b/docs/src/app/(docs)/react/components/drawer/demos/position/css-modules/index.module.css index c04a6a95b48..fb17bd2c257 100644 --- a/docs/src/app/(docs)/react/components/drawer/demos/position/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/drawer/demos/position/css-modules/index.module.css @@ -66,7 +66,6 @@ --backdrop-opacity: 0.2; --bleed: 3rem; position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: calc(var(--backdrop-opacity) * (1 - var(--drawer-swipe-progress))); @@ -74,6 +73,11 @@ transition-property: opacity; transition-timing-function: cubic-bezier(0.32, 0.72, 0, 1); + /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ + @supports (-webkit-touch-callout: none) { + min-height: 100dvh; + } + @media (prefers-color-scheme: dark) { --backdrop-opacity: 0.7; } @@ -104,7 +108,7 @@ --bleed: 3rem; box-sizing: border-box; width: 100%; - max-height: calc(80vh + var(--bleed)); + max-height: calc(80% + var(--bleed)); margin-bottom: calc(-1 * var(--bleed)); padding: 1rem 1.5rem 1.5rem; padding-bottom: calc(1.5rem + env(safe-area-inset-bottom, 0px) + var(--bleed)); @@ -119,6 +123,10 @@ will-change: transform; transform: translateY(var(--drawer-swipe-movement-y)); + @supports (-webkit-touch-callout: none) { + max-height: calc(80vh + var(--bleed)); + } + @media (prefers-color-scheme: dark) { border-top: 1px solid white; background-color: oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/drawer/demos/position/tailwind/index.tsx b/docs/src/app/(docs)/react/components/drawer/demos/position/tailwind/index.tsx index ef55b26f599..c3fa3377a83 100644 --- a/docs/src/app/(docs)/react/components/drawer/demos/position/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/drawer/demos/position/tailwind/index.tsx @@ -7,9 +7,9 @@ export default function ExampleDrawer() { Open bottom drawer - + - +
diff --git a/docs/src/app/(docs)/react/components/drawer/demos/snap-points/css-modules/index.module.css b/docs/src/app/(docs)/react/components/drawer/demos/snap-points/css-modules/index.module.css index 9689606db71..558f0c30306 100644 --- a/docs/src/app/(docs)/react/components/drawer/demos/snap-points/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/drawer/demos/snap-points/css-modules/index.module.css @@ -66,7 +66,6 @@ --backdrop-opacity: 0.2; --bleed: 3rem; position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: calc(var(--backdrop-opacity) * (1 - var(--drawer-swipe-progress))); @@ -74,6 +73,11 @@ transition-property: opacity; transition-timing-function: cubic-bezier(0.32, 0.72, 0, 1); + /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */ + @supports (-webkit-touch-callout: none) { + min-height: 100dvh; + } + @media (prefers-color-scheme: dark) { --backdrop-opacity: 0.7; } @@ -133,7 +137,7 @@ display: flex; flex-direction: column; width: 100%; - max-height: calc(100dvh - var(--top-margin)); + max-height: calc(100% - var(--top-margin)); padding-bottom: max(0px, calc(var(--drawer-snap-point-offset) + var(--drawer-swipe-movement-y))); border-top: 1px solid oklch(14.5% 0 0deg); background-color: white; @@ -148,6 +152,10 @@ transform: translateY(calc(var(--drawer-snap-point-offset) + var(--drawer-swipe-movement-y))); will-change: transform; + @supports (-webkit-touch-callout: none) { + max-height: calc(100dvh - var(--top-margin)); + } + @media (prefers-color-scheme: dark) { border-top: 1px solid white; background-color: oklch(14.5% 0 0deg); diff --git a/docs/src/app/(docs)/react/components/drawer/demos/snap-points/tailwind/index.tsx b/docs/src/app/(docs)/react/components/drawer/demos/snap-points/tailwind/index.tsx index 9aec475dea9..b6f3706b6df 100644 --- a/docs/src/app/(docs)/react/components/drawer/demos/snap-points/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/drawer/demos/snap-points/tailwind/index.tsx @@ -18,10 +18,10 @@ export default function ExampleDrawerSnapPoints() { Open snap drawer - +
diff --git a/docs/src/app/(docs)/react/components/drawer/demos/virtual-keyboard-aware/css-modules/index.module.css b/docs/src/app/(docs)/react/components/drawer/demos/virtual-keyboard-aware/css-modules/index.module.css index 029abf28245..4e708bad922 100644 --- a/docs/src/app/(docs)/react/components/drawer/demos/virtual-keyboard-aware/css-modules/index.module.css +++ b/docs/src/app/(docs)/react/components/drawer/demos/virtual-keyboard-aware/css-modules/index.module.css @@ -66,7 +66,6 @@ --backdrop-opacity: 0.2; --bleed: 3rem; position: fixed; - min-height: 100dvh; inset: 0; background-color: black; opacity: calc(var(--backdrop-opacity) * (1 - var(--drawer-swipe-progress))); @@ -76,6 +75,7 @@ @supports (-webkit-touch-callout: none) { position: absolute; + min-height: 100dvh; } @media (prefers-color-scheme: dark) { diff --git a/docs/src/app/(docs)/react/components/drawer/demos/virtual-keyboard-aware/tailwind/index.tsx b/docs/src/app/(docs)/react/components/drawer/demos/virtual-keyboard-aware/tailwind/index.tsx index 7bbe4a3e336..c735626ef3d 100644 --- a/docs/src/app/(docs)/react/components/drawer/demos/virtual-keyboard-aware/tailwind/index.tsx +++ b/docs/src/app/(docs)/react/components/drawer/demos/virtual-keyboard-aware/tailwind/index.tsx @@ -20,7 +20,7 @@ export default function ExampleDrawerVirtualKeyboardAware() { - +