UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

1 lines 2.03 kB
{"version":3,"file":"skeleton-text.cjs","names":["styled","Skeleton","mergeCSS"],"sources":["../../../../src/components/skeleton/skeleton-text.tsx"],"sourcesContent":["\"use client\"\n\nimport type { Component, HTMLStyledProps } from \"../../core\"\nimport type { SkeletonProps } from \"./skeleton\"\nimport { mergeCSS, styled } from \"../../core\"\nimport { Skeleton } from \"./skeleton\"\n\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"lineClamp\"> {\n /**\n * The number of lines to display.\n */\n lineClamp?: number\n /**\n * Props for the root element.\n */\n rootProps?: HTMLStyledProps\n}\n\nexport const SkeletonText = (({\n css,\n children,\n gap = \"2\",\n lineClamp = 3,\n loading = true,\n _loading,\n _notFirst,\n rootProps,\n ...rest\n}: SkeletonTextProps) => {\n return (\n <styled.div w=\"full\" {...rootProps}>\n {Array.from({ length: lineClamp }).map((_, index) => {\n if (!loading && index > 0) return null\n\n return (\n <Skeleton\n key={index}\n css={mergeCSS(css, { \"--height\": \"sizes.4\" })}\n loading={loading}\n _loading={{\n _last: { maxW: lineClamp > 1 ? \"80%\" : \"100%\" },\n ..._loading,\n }}\n _notFirst={{ mt: gap, ..._notFirst }}\n {...rest}\n >\n {!loading && index === 0 ? children : undefined}\n </Skeleton>\n )\n })}\n </styled.div>\n )\n}) as Component<\"div\", SkeletonTextProps>\n"],"mappings":";;;;;;;;;;;AAkBA,MAAa,iBAAiB,EAC5B,KACA,UACA,MAAM,KACN,YAAY,GACZ,UAAU,MACV,UACA,WACA,UACA,GAAG,WACoB;AACvB,QACE,2CAACA,uBAAO;EAAI,GAAE;EAAO,GAAI;YACtB,MAAM,KAAK,EAAE,QAAQ,WAAW,CAAC,CAAC,KAAK,GAAG,UAAU;AACnD,OAAI,CAAC,WAAW,QAAQ,EAAG,QAAO;AAElC,UACE,2CAACC;IAEC,KAAKC,2BAAS,KAAK,EAAE,YAAY,WAAW,CAAC;IACpC;IACT,UAAU;KACR,OAAO,EAAE,MAAM,YAAY,IAAI,QAAQ,QAAQ;KAC/C,GAAG;KACJ;IACD,WAAW;KAAE,IAAI;KAAK,GAAG;KAAW;IACpC,GAAI;cAEH,CAAC,WAAW,UAAU,IAAI,WAAW;MAVjC,MAWI;IAEb;GACS"}