UNPKG

@grafana/ui

Version:
1 lines • 17.1 kB
{"version":3,"file":"Box.cjs","sources":["../../../../../src/components/Layout/Box/Box.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { type Property } from 'csstype';\nimport { type ElementType, forwardRef, type PropsWithChildren } from 'react';\nimport * as React from 'react';\n\nimport { type GrafanaTheme2, type ThemeSpacingTokens, type ThemeShape, type ThemeShadows } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { type AlignItems, type Direction, type FlexProps, type JustifyContent } from '../types';\nimport { type ResponsiveProp, getResponsiveStyle } from '../utils/responsiveness';\nimport { getSizeStyles, type SizeProps } from '../utils/styles';\n\ntype Display = 'flex' | 'block' | 'inline' | 'inline-block' | 'none';\nexport type BackgroundColor = keyof GrafanaTheme2['colors']['background'] | 'error' | 'success' | 'warning' | 'info';\nexport type BorderStyle = 'solid' | 'dashed';\nexport type BorderColor = keyof GrafanaTheme2['colors']['border'] | 'error' | 'success' | 'warning' | 'info';\nexport type BorderRadius = keyof ThemeShape['radius'];\nexport type BoxShadow = keyof ThemeShadows;\n\nexport interface BoxProps extends FlexProps, SizeProps, Omit<React.HTMLAttributes<HTMLElement>, 'className' | 'style'> {\n // Margin props\n /** Sets the property `margin` */\n margin?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the properties `margin-top` and `margin-bottom`. Higher priority than margin. */\n marginX?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the properties `margin-left` and `margin-right`. Higher priority than margin. */\n marginY?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the property `margin-top`. Higher priority than margin and marginY. */\n marginTop?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the property `margin-bottom`. Higher priority than margin and marginXY */\n marginBottom?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the property `margin-left`. Higher priority than margin and marginX. */\n marginLeft?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the property `margin-right`. Higher priority than margin and marginX. */\n marginRight?: ResponsiveProp<ThemeSpacingTokens>;\n\n // Padding props\n /** Sets the property `padding` */\n padding?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the properties `padding-top` and `padding-bottom`. Higher priority than padding. */\n paddingX?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the properties `padding-left` and `padding-right`. Higher priority than padding. */\n paddingY?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the property `padding-top`. Higher priority than padding and paddingY. */\n paddingTop?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the property `padding-bottom`. Higher priority than padding and paddingY. */\n paddingBottom?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the property `padding-left`. Higher priority than padding and paddingX. */\n paddingLeft?: ResponsiveProp<ThemeSpacingTokens>;\n /** Sets the property `padding-right`. Higher priority than padding and paddingX. */\n paddingRight?: ResponsiveProp<ThemeSpacingTokens>;\n\n // Border Props\n borderStyle?: ResponsiveProp<BorderStyle>;\n borderColor?: ResponsiveProp<BorderColor>;\n borderRadius?: ResponsiveProp<BorderRadius>;\n\n // Flex Props\n alignItems?: ResponsiveProp<AlignItems>;\n direction?: ResponsiveProp<Direction>;\n justifyContent?: ResponsiveProp<JustifyContent>;\n gap?: ResponsiveProp<ThemeSpacingTokens>;\n\n // Other props\n backgroundColor?: ResponsiveProp<BackgroundColor>;\n display?: ResponsiveProp<Display>;\n boxShadow?: ResponsiveProp<BoxShadow>;\n /** Sets the HTML element that will be rendered as a Box. Defaults to 'div' */\n element?: ElementType;\n position?: ResponsiveProp<Property.Position>;\n}\n\n/**\n * The Box Component is the most basic layout component. It can be used to build more complex components and layouts with properties that use our design tokens instead of using CSS.\n *\n * https://developers.grafana.com/ui/latest/index.html?path=/docs/layout-box--docs\n */\nexport const Box = forwardRef<HTMLElement, PropsWithChildren<BoxProps>>((props, ref) => {\n const {\n children,\n margin,\n marginX,\n marginY,\n marginTop,\n marginBottom,\n marginLeft,\n marginRight,\n padding,\n paddingX,\n paddingY,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n display,\n backgroundColor,\n grow,\n shrink,\n basis,\n flex,\n borderColor,\n borderStyle,\n borderRadius,\n direction,\n justifyContent,\n alignItems,\n boxShadow,\n element,\n gap,\n width,\n minWidth,\n maxWidth,\n height,\n minHeight,\n maxHeight,\n position,\n ...rest\n } = props;\n const styles = useStyles2(\n getStyles,\n margin,\n marginX,\n marginY,\n marginTop,\n marginBottom,\n marginLeft,\n marginRight,\n padding,\n paddingX,\n paddingY,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n display,\n backgroundColor,\n grow,\n shrink,\n basis,\n flex,\n borderColor,\n borderStyle,\n borderRadius,\n direction,\n justifyContent,\n alignItems,\n boxShadow,\n gap,\n position\n );\n const sizeStyles = useStyles2(getSizeStyles, width, minWidth, maxWidth, height, minHeight, maxHeight);\n const Element = element ?? 'div';\n\n return (\n <Element ref={ref} className={cx(styles.root, sizeStyles)} {...rest}>\n {children}\n </Element>\n );\n});\n\nBox.displayName = 'Box';\n\nconst customBorderColor = (color: BorderColor, theme: GrafanaTheme2) => {\n switch (color) {\n case 'error':\n case 'success':\n case 'info':\n case 'warning':\n return theme.colors[color].borderTransparent;\n default:\n return color ? theme.colors.border[color] : undefined;\n }\n};\n\nconst customBackgroundColor = (color: BackgroundColor, theme: GrafanaTheme2) => {\n switch (color) {\n case 'error':\n case 'success':\n case 'info':\n case 'warning':\n return theme.colors[color].transparent;\n default:\n return color ? theme.colors.background[color] : undefined;\n }\n};\n\nconst getStyles = (\n theme: GrafanaTheme2,\n margin: BoxProps['margin'],\n marginX: BoxProps['marginX'],\n marginY: BoxProps['marginY'],\n marginTop: BoxProps['marginTop'],\n marginBottom: BoxProps['marginBottom'],\n marginLeft: BoxProps['marginLeft'],\n marginRight: BoxProps['marginRight'],\n padding: BoxProps['padding'],\n paddingX: BoxProps['paddingX'],\n paddingY: BoxProps['paddingY'],\n paddingTop: BoxProps['paddingTop'],\n paddingBottom: BoxProps['paddingBottom'],\n paddingLeft: BoxProps['paddingLeft'],\n paddingRight: BoxProps['paddingRight'],\n display: BoxProps['display'],\n backgroundColor: BoxProps['backgroundColor'],\n grow: BoxProps['grow'],\n shrink: BoxProps['shrink'],\n basis: BoxProps['basis'],\n flex: BoxProps['flex'],\n borderColor: BoxProps['borderColor'],\n borderStyle: BoxProps['borderStyle'],\n borderRadius: BoxProps['borderRadius'],\n direction: BoxProps['direction'],\n justifyContent: BoxProps['justifyContent'],\n alignItems: BoxProps['alignItems'],\n boxShadow: BoxProps['boxShadow'],\n gap: BoxProps['gap'],\n position: BoxProps['position']\n) => {\n return {\n root: css([\n getResponsiveStyle(theme, margin, (val) => ({\n margin: theme.spacing(val),\n })),\n getResponsiveStyle(theme, marginX, (val) => ({\n marginLeft: theme.spacing(val),\n marginRight: theme.spacing(val),\n })),\n getResponsiveStyle(theme, marginY, (val) => ({\n marginTop: theme.spacing(val),\n marginBottom: theme.spacing(val),\n })),\n getResponsiveStyle(theme, marginTop, (val) => ({\n marginTop: theme.spacing(val),\n })),\n getResponsiveStyle(theme, marginBottom, (val) => ({\n marginBottom: theme.spacing(val),\n })),\n getResponsiveStyle(theme, marginLeft, (val) => ({\n marginLeft: theme.spacing(val),\n })),\n getResponsiveStyle(theme, marginRight, (val) => ({\n marginRight: theme.spacing(val),\n })),\n getResponsiveStyle(theme, padding, (val) => ({\n padding: theme.spacing(val),\n })),\n getResponsiveStyle(theme, paddingX, (val) => ({\n paddingLeft: theme.spacing(val),\n paddingRight: theme.spacing(val),\n })),\n getResponsiveStyle(theme, paddingY, (val) => ({\n paddingTop: theme.spacing(val),\n paddingBottom: theme.spacing(val),\n })),\n getResponsiveStyle(theme, paddingTop, (val) => ({\n paddingTop: theme.spacing(val),\n })),\n getResponsiveStyle(theme, paddingBottom, (val) => ({\n paddingBottom: theme.spacing(val),\n })),\n getResponsiveStyle(theme, paddingLeft, (val) => ({\n paddingLeft: theme.spacing(val),\n })),\n getResponsiveStyle(theme, paddingRight, (val) => ({\n paddingRight: theme.spacing(val),\n })),\n getResponsiveStyle(theme, display, (val) => ({\n display: val,\n })),\n getResponsiveStyle(theme, backgroundColor, (val) => ({\n backgroundColor: customBackgroundColor(val, theme),\n })),\n getResponsiveStyle(theme, direction, (val) => ({\n flexDirection: val,\n })),\n getResponsiveStyle(theme, grow, (val) => ({\n flexGrow: val,\n })),\n getResponsiveStyle(theme, shrink, (val) => ({\n flexShrink: val,\n })),\n getResponsiveStyle(theme, basis, (val) => ({\n flexBasis: val,\n })),\n getResponsiveStyle(theme, flex, (val) => ({\n flex: val,\n })),\n getResponsiveStyle(theme, borderStyle, (val) => ({\n borderStyle: val,\n })),\n getResponsiveStyle(theme, borderColor, (val) => ({\n borderColor: customBorderColor(val, theme),\n })),\n (borderStyle || borderColor) && {\n borderWidth: '1px',\n },\n getResponsiveStyle(theme, justifyContent, (val) => ({\n justifyContent: val,\n })),\n getResponsiveStyle(theme, alignItems, (val) => ({\n alignItems: val,\n })),\n getResponsiveStyle(theme, borderRadius, (val) => ({\n borderRadius: theme.shape.radius[val],\n })),\n getResponsiveStyle(theme, boxShadow, (val) => ({\n boxShadow: theme.shadows[val],\n })),\n getResponsiveStyle(theme, gap, (val) => ({\n gap: theme.spacing(val),\n })),\n getResponsiveStyle(theme, position, (val) => ({\n position: val,\n })),\n ]),\n };\n};\n"],"names":["forwardRef","styles","useStyles2","getSizeStyles","jsx","cx","css","getResponsiveStyle"],"mappings":"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"}