@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
1 lines • 3.63 kB
Source Map (JSON)
{"version":3,"file":"Skeleton.cjs","names":["createVarsResolver","rem","getRadius","factory","useProps","Box","useStyles","classes"],"sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './Skeleton.module.css';\n\nexport type SkeletonStylesNames = 'root';\nexport type SkeletonCssVariables = {\n root: '--skeleton-width' | '--skeleton-height' | '--skeleton-radius';\n};\n\nexport interface SkeletonProps\n extends BoxProps, StylesApiProps<SkeletonFactory>, ElementProps<'div'> {\n /** Determines whether Skeleton overlay should be displayed @default true */\n visible?: boolean;\n\n /** Skeleton `height`, numbers are converted to rem @default auto */\n height?: React.CSSProperties['height'];\n\n /** Skeleton `width`, numbers are converted to rem, ignored when `circle` prop is set. @default 100% */\n width?: React.CSSProperties['width'];\n\n /** If set, Skeleton `width` and `border-radius` are equal to its `height` @default false */\n circle?: boolean;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius. Numbers are converted to rem. @default theme.defaultRadius */\n radius?: React.CSSProperties['borderRadius'];\n\n /** Enables animation @default true */\n animate?: boolean;\n}\n\nexport type SkeletonFactory = Factory<{\n props: SkeletonProps;\n ref: HTMLDivElement;\n stylesNames: SkeletonStylesNames;\n vars: SkeletonCssVariables;\n}>;\n\nconst defaultProps = {\n visible: true,\n animate: true,\n} satisfies Partial<SkeletonProps>;\n\nconst varsResolver = createVarsResolver<SkeletonFactory>(\n (_, { width, height, radius, circle }) => ({\n root: {\n '--skeleton-height': rem(height),\n '--skeleton-width': circle ? rem(height) : rem(width),\n '--skeleton-radius': circle ? '1000px' : radius === undefined ? undefined : getRadius(radius),\n },\n })\n);\n\nexport const Skeleton = factory<SkeletonFactory>((_props) => {\n const props = useProps('Skeleton', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n width,\n height,\n circle,\n visible,\n radius,\n animate,\n mod,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<SkeletonFactory>({\n name: 'Skeleton',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return <Box {...getStyles('root')} mod={[{ visible, animate }, mod]} {...others} />;\n});\n\nSkeleton.classes = classes;\nSkeleton.varsResolver = varsResolver;\nSkeleton.displayName = '@mantine/core/Skeleton';\n"],"mappings":";;;;;;;;;;;;AAgDA,MAAM,eAAe;CACnB,SAAS;CACT,SAAS;CACV;AAED,MAAM,eAAeA,6BAAAA,oBAClB,GAAG,EAAE,OAAO,QAAQ,QAAQ,cAAc,EACzC,MAAM;CACJ,qBAAqBC,YAAAA,IAAI,OAAO;CAChC,oBAAoB,SAASA,YAAAA,IAAI,OAAO,GAAGA,YAAAA,IAAI,MAAM;CACrD,qBAAqB,SAAS,WAAW,WAAW,KAAA,IAAY,KAAA,IAAYC,iBAAAA,UAAU,OAAO;CAC9F,EACF,EACF;AAED,MAAa,WAAWC,gBAAAA,SAA0B,WAAW;CAC3D,MAAM,QAAQC,kBAAAA,SAAS,YAAY,cAAc,OAAO;CACxD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,QACA,QACA,SACA,QACA,SACA,KACA,YACA,GAAG,WACD;AAgBJ,QAAO,iBAAA,GAAA,kBAAA,KAACC,YAAAA,KAAD;EAAK,GAdMC,mBAAAA,UAA2B;GAC3C,MAAM;GACN,SAAA,wBAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,CAEwB,OAAO;EAAE,KAAK,CAAC;GAAE;GAAS;GAAS,EAAE,IAAI;EAAE,GAAI;EAAU,CAAA;EACnF;AAEF,SAAS,UAAUC,wBAAAA;AACnB,SAAS,eAAe;AACxB,SAAS,cAAc"}