diff --git a/apps/showcase/index.html b/apps/showcase/index.html index 0226942..e03a0c5 100644 --- a/apps/showcase/index.html +++ b/apps/showcase/index.html @@ -2,7 +2,10 @@ - + Methanium UI Showcase diff --git a/package.json b/package.json index 8779d0d..1e336be 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@methanium/ui", - "version": "0.0.28", + "version": "0.0.29", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/src/cmp/alert-dialog.tsx b/src/cmp/alert-dialog.tsx index a0a9c26..848b7a9 100644 --- a/src/cmp/alert-dialog.tsx +++ b/src/cmp/alert-dialog.tsx @@ -52,7 +52,7 @@ function AlertDialogContent({ data-slot="alert-dialog-content" data-size={size} className={cn( - "group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", + "group/alert-dialog-content fixed top-[calc((100dvh+max(1rem,var(--ui-safe-area-top))-max(1rem,var(--ui-safe-area-bottom)))/2)] left-[calc((100%+max(1rem,var(--ui-safe-area-left))-max(1rem,var(--ui-safe-area-right)))/2)] z-50 grid w-[calc(100%-max(1rem,var(--ui-safe-area-left))-max(1rem,var(--ui-safe-area-right)))] max-h-[calc(100dvh-max(1rem,var(--ui-safe-area-top))-max(1rem,var(--ui-safe-area-bottom)))] -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className, )} {...props} diff --git a/src/cmp/combobox.tsx b/src/cmp/combobox.tsx index dddb01f..755cc5d 100644 --- a/src/cmp/combobox.tsx +++ b/src/cmp/combobox.tsx @@ -2,6 +2,7 @@ import * as React from "react"; import { Combobox as ComboboxPrimitive } from "@base-ui/react"; import { cn } from "../lib/utils"; +import { useSafeAreaCollisionPadding } from "../hooks/use-safe-area"; import { Button } from "./button"; import { InputGroup, @@ -89,12 +90,20 @@ function ComboboxContent({ align = "start", alignOffset = 0, anchor, + collisionPadding, ...props }: ComboboxPrimitive.Popup.Props & Pick< ComboboxPrimitive.Positioner.Props, - "side" | "align" | "sideOffset" | "alignOffset" | "anchor" + | "side" + | "align" + | "sideOffset" + | "alignOffset" + | "anchor" + | "collisionPadding" >) { + const safeAreaCollisionPadding = useSafeAreaCollisionPadding(); + return ( ) { + const safeAreaCollisionPadding = useSafeAreaCollisionPadding(); + return ( ) { + const safeAreaCollisionPadding = useSafeAreaCollisionPadding(); + return ( ; @@ -20,12 +21,15 @@ function HoverCardContent({ sideOffset = 4, align = "center", alignOffset = 4, + collisionPadding, ...props }: PreviewCardPrimitive.Popup.Props & Pick< PreviewCardPrimitive.Positioner.Props, - "align" | "alignOffset" | "side" | "sideOffset" + "align" | "alignOffset" | "side" | "sideOffset" | "collisionPadding" >) { + const safeAreaCollisionPadding = useSafeAreaCollisionPadding(); + return ( -