@heroui/theme
Version:
The default theme for HeroUI components
194 lines (191 loc) • 4 kB
JavaScript
import {
tv
} from "./chunk-TX3FPB7D.mjs";
import {
dataFocusVisibleClasses
} from "./chunk-JGY6VQQQ.mjs";
// src/components/modal.ts
var modal = tv({
slots: {
wrapper: [
"flex",
"w-screen",
"h-[100dvh]",
"fixed",
"inset-0",
"z-50",
"overflow-x-auto",
"justify-center",
"h-[--visual-viewport-height]"
],
base: [
"flex",
"flex-col",
"relative",
"bg-white",
"z-50",
"w-full",
"box-border",
"bg-content1",
"outline-solid outline-transparent",
"mx-1",
"my-1",
"sm:mx-6",
"sm:my-16"
],
backdrop: "z-50",
header: "flex py-4 px-6 flex-initial text-large font-semibold",
body: "flex flex-1 flex-col gap-3 px-6 py-2",
footer: "flex flex-row gap-2 px-6 py-4 justify-end",
closeButton: [
"absolute",
"appearance-none",
"outline-solid outline-transparent",
"select-none",
"top-1",
"end-1",
"p-2",
"text-foreground-500",
"rounded-full",
"hover:bg-default-100",
"active:bg-default-200",
"tap-highlight-transparent",
// focus ring
...dataFocusVisibleClasses
]
},
variants: {
size: {
xs: {
base: "max-w-xs"
},
sm: {
base: "max-w-sm"
},
md: {
base: "max-w-md"
},
lg: {
base: "max-w-lg"
},
xl: {
base: "max-w-xl"
},
"2xl": {
base: "max-w-2xl"
},
"3xl": {
base: "max-w-3xl"
},
"4xl": {
base: "max-w-4xl"
},
"5xl": {
base: "max-w-5xl"
},
full: {
base: "my-0 mx-0 sm:mx-0 sm:my-0 max-w-full h-[100dvh] min-h-[100dvh] !rounded-none"
}
},
radius: {
none: { base: "rounded-none" },
sm: { base: "rounded-small" },
md: { base: "rounded-medium" },
lg: { base: "rounded-large" }
},
placement: {
auto: {
wrapper: "items-end sm:items-center"
},
center: {
wrapper: "items-center sm:items-center"
},
top: {
wrapper: "items-start sm:items-start"
},
"top-center": {
wrapper: "items-start sm:items-center"
},
bottom: {
wrapper: "items-end sm:items-end"
},
"bottom-center": {
wrapper: "items-end sm:items-center"
}
},
shadow: {
none: {
base: "shadow-none"
},
sm: {
base: "shadow-small"
},
md: {
base: "shadow-medium"
},
lg: {
base: "shadow-large"
}
},
backdrop: {
transparent: {
backdrop: "hidden"
},
opaque: {
backdrop: "bg-overlay/50 backdrop-opacity-disabled"
},
blur: {
backdrop: "backdrop-blur-md backdrop-saturate-150 bg-overlay/30"
}
},
scrollBehavior: {
normal: {
base: "overflow-y-hidden"
},
inside: {
base: "max-h-[calc(100%_-_8rem)]",
body: "overflow-y-auto"
},
outside: {
wrapper: "items-start sm:items-start overflow-y-auto",
base: "my-16"
}
},
disableAnimation: {
false: {
wrapper: [
// mobile animation vars
"[--scale-enter:100%]",
"[--scale-exit:100%]",
"[--slide-enter:0px]",
"[--slide-exit:80px]",
// tablet/desktop animation vars
"sm:[--scale-enter:100%]",
"sm:[--scale-exit:103%]",
"sm:[--slide-enter:0px]",
"sm:[--slide-exit:0px]"
]
}
}
},
defaultVariants: {
size: "md",
radius: "lg",
shadow: "sm",
placement: "auto",
backdrop: "opaque",
scrollBehavior: "normal"
},
compoundVariants: [
// backdrop (opaque/blur)
{
backdrop: ["opaque", "blur"],
class: {
backdrop: "w-screen h-screen fixed inset-0"
}
}
]
});
export {
modal
};