@chakra-ui/react
Version:
Responsive and accessible React UI components built with React and Emotion
233 lines (229 loc) • 4.9 kB
JavaScript
"use strict";
'use strict';
var anatomy = require('../../anatomy.cjs');
var config = require('../../styled-system/config.cjs');
const dialogSlotRecipe = config.defineSlotRecipe({
slots: anatomy.dialogAnatomy.keys(),
className: "chakra-dialog",
base: {
backdrop: {
bg: "blackAlpha.500",
pos: "fixed",
left: 0,
top: 0,
w: "100vw",
h: "100dvh",
zIndex: "calc(var(--z-index) - 1) ",
_open: {
animationName: "fade-in",
animationDuration: "slow"
},
_closed: {
animationName: "fade-out",
animationDuration: "moderate"
}
},
positioner: {
display: "flex",
width: "100vw",
height: "100dvh",
position: "fixed",
left: 0,
top: 0,
"--dialog-z-index": "zIndex.modal",
zIndex: "calc(var(--dialog-z-index) + var(--layer-index, 0))",
justifyContent: "center",
overscrollBehaviorY: "none"
},
content: {
display: "flex",
flexDirection: "column",
position: "relative",
width: "100%",
outline: 0,
borderRadius: "l3",
textStyle: "sm",
my: "var(--dialog-margin, var(--dialog-base-margin))",
"--dialog-z-index": "zIndex.modal",
zIndex: "calc(var(--dialog-z-index) + var(--layer-index, 0))",
bg: "bg.panel",
boxShadow: "lg",
_open: {
animationDuration: "moderate"
},
_closed: {
animationDuration: "faster"
}
},
header: {
display: "flex",
gap: "2",
flex: 0,
px: "6",
pt: "6",
pb: "4"
},
body: {
flex: "1",
px: "6",
pt: "2",
pb: "6"
},
footer: {
display: "flex",
alignItems: "center",
justifyContent: "flex-end",
gap: "3",
px: "6",
pt: "2",
pb: "4"
},
title: {
textStyle: "lg",
fontWeight: "semibold"
},
description: {
color: "fg.muted"
},
closeTrigger: {
pos: "absolute",
top: "2",
insetEnd: "2"
}
},
variants: {
placement: {
center: {
positioner: {
alignItems: "center"
},
content: {
"--dialog-base-margin": "auto",
mx: "auto"
}
},
top: {
positioner: {
alignItems: "flex-start"
},
content: {
"--dialog-base-margin": "spacing.16",
mx: "auto"
}
},
bottom: {
positioner: {
alignItems: "flex-end"
},
content: {
"--dialog-base-margin": "spacing.16",
mx: "auto"
}
}
},
scrollBehavior: {
inside: {
positioner: {
overflow: "hidden"
},
content: {
maxH: "calc(100% - 7.5rem)"
},
body: {
overflow: "auto"
}
},
outside: {
positioner: {
overflow: "auto",
pointerEvents: "auto"
}
}
},
size: {
xs: {
content: {
maxW: "sm"
}
},
sm: {
content: {
maxW: "md"
}
},
md: {
content: {
maxW: "lg"
}
},
lg: {
content: {
maxW: "2xl"
}
},
xl: {
content: {
maxW: "4xl"
}
},
cover: {
positioner: {
padding: "10"
},
content: {
width: "100%",
height: "100%",
"--dialog-margin": "0"
}
},
full: {
content: {
maxW: "100vw",
minH: "100vh",
"--dialog-margin": "0",
borderRadius: "0"
}
}
},
motionPreset: {
scale: {
content: {
_open: { animationName: "scale-in, fade-in" },
_closed: { animationName: "scale-out, fade-out" }
}
},
"slide-in-bottom": {
content: {
_open: { animationName: "slide-from-bottom, fade-in" },
_closed: { animationName: "slide-to-bottom, fade-out" }
}
},
"slide-in-top": {
content: {
_open: { animationName: "slide-from-top, fade-in" },
_closed: { animationName: "slide-to-top, fade-out" }
}
},
"slide-in-left": {
content: {
_open: { animationName: "slide-from-left, fade-in" },
_closed: { animationName: "slide-to-left, fade-out" }
}
},
"slide-in-right": {
content: {
_open: { animationName: "slide-from-right, fade-in" },
_closed: { animationName: "slide-to-right, fade-out" }
}
},
none: {}
}
},
defaultVariants: {
size: "md",
scrollBehavior: "outside",
placement: "top",
motionPreset: "scale"
}
});
exports.dialogSlotRecipe = dialogSlotRecipe;