@@ -4,6 +4,8 @@ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog
44
55import { cn } from "@coss/ui/lib/utils" ;
66
7+ const AlertDialogCreateHandle = AlertDialogPrimitive . createHandle ;
8+
79const AlertDialog = AlertDialogPrimitive . Root ;
810
911const AlertDialogPortal = AlertDialogPrimitive . Portal ;
@@ -37,7 +39,7 @@ function AlertDialogViewport({
3739 return (
3840 < AlertDialogPrimitive . Viewport
3941 className = { cn (
40- "fixed inset-0 z-50 grid grid-rows-[1fr_auto ] justify-items-center pt-6 sm:grid-rows-[1fr_auto_3fr] sm: p-4" ,
42+ "fixed inset-0 z-50 grid grid-rows-[1fr_auto_3fr ] justify-items-center p-4" ,
4143 className ,
4244 ) }
4345 data-slot = "alert-dialog-viewport"
@@ -48,15 +50,25 @@ function AlertDialogViewport({
4850
4951function AlertDialogPopup ( {
5052 className,
53+ bottomStickOnMobile = true ,
5154 ...props
52- } : AlertDialogPrimitive . Popup . Props ) {
55+ } : AlertDialogPrimitive . Popup . Props & {
56+ bottomStickOnMobile ?: boolean ;
57+ } ) {
5358 return (
5459 < AlertDialogPortal >
5560 < AlertDialogBackdrop />
56- < AlertDialogViewport >
61+ < AlertDialogViewport
62+ className = { cn (
63+ bottomStickOnMobile &&
64+ "max-sm:grid-rows-[1fr_auto] max-sm:p-0 max-sm:pt-12" ,
65+ ) }
66+ >
5767 < AlertDialogPrimitive . Popup
5868 className = { cn (
59- "sm:-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 grid max-h-full w-full min-w-0 border-t bg-popover bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:shadow-[0_1px_--theme(--color-black/4%)] data-nested-dialog-open:origin-top data-ending-style:opacity-0 data-starting-style:opacity-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden sm:max-w-lg sm:data-nested:data-ending-style:translate-y-8 sm:data-nested:data-starting-style:translate-y-8 sm:scale-[calc(1-0.1*var(--nested-dialogs))] sm:rounded-2xl sm:border sm:data-ending-style:scale-98 sm:data-starting-style:scale-98 sm:before:rounded-[calc(var(--radius-2xl)-1px)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]" ,
69+ "-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]" ,
70+ bottomStickOnMobile &&
71+ "max-sm:max-w-none max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none" ,
6072 className ,
6173 ) }
6274 data-slot = "alert-dialog-popup"
@@ -94,7 +106,7 @@ function AlertDialogFooter({
94106 < div
95107 className = { cn (
96108 "flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]" ,
97- variant === "default" && "border-t bg-muted/50 py-4" ,
109+ variant === "default" && "border-t bg-muted/72 py-4" ,
98110 variant === "bare" && "pt-4 pb-6" ,
99111 className ,
100112 ) }
@@ -110,7 +122,10 @@ function AlertDialogTitle({
110122} : AlertDialogPrimitive . Title . Props ) {
111123 return (
112124 < AlertDialogPrimitive . Title
113- className = { cn ( "font-heading text-xl leading-none" , className ) }
125+ className = { cn (
126+ "font-heading font-semibold text-xl leading-none" ,
127+ className ,
128+ ) }
114129 data-slot = "alert-dialog-title"
115130 { ...props }
116131 />
@@ -137,6 +152,7 @@ function AlertDialogClose(props: AlertDialogPrimitive.Close.Props) {
137152}
138153
139154export {
155+ AlertDialogCreateHandle ,
140156 AlertDialog ,
141157 AlertDialogPortal ,
142158 AlertDialogBackdrop ,
0 commit comments