@loke/design-system
Version:
A design system with individually importable components
2 lines (1 loc) • 2.22 kB
JavaScript
import{cn}from"@loke/design-system/cn";import{createResponsiveComponent}from"@loke/design-system/responsive";import{cva}from"class-variance-authority";import{jsx}from"react/jsx-runtime";var textVariants=cva("text-base font-normal normal-case text-left text-foreground no-underline leading-normal whitespace-normal",{defaultVariants:{align:"left",color:"foreground",decoration:"none",lineHeight:"normal",size:"base",transform:"normal",weight:"normal",whiteSpace:"normal",wordBreak:"normal"},variants:{align:{center:"text-center",justify:"text-justify",left:"text-left",right:"text-right"},color:{accent:"text-accent-foreground",card:"text-card-foreground",destructive:"text-destructive",foreground:"text-foreground",muted:"text-muted-foreground",popover:"text-popover-foreground",primary:"text-primary",secondary:"text-secondary",white:"text-white"},decoration:{italic:"italic","line-through":"line-through",none:"no-underline",underline:"underline"},lineHeight:{loose:"leading-loose",none:"leading-none",normal:"leading-normal",relaxed:"leading-relaxed",snug:"leading-snug",tight:"leading-tight"},size:{"2xl":"text-2xl","3xl":"text-3xl","4xl":"text-4xl",base:"text-base",lg:"text-lg",sm:"text-sm",xl:"text-xl",xs:"text-xs"},transform:{capitalize:"capitalize",lowercase:"lowercase",normal:"normal-case",uppercase:"uppercase"},weight:{bold:"font-bold",light:"font-light",medium:"font-medium",normal:"font-normal",semibold:"font-semibold"},whiteSpace:{normal:"whitespace-normal",nowrap:"whitespace-nowrap",pre:"whitespace-pre","pre-line":"whitespace-pre-line","pre-wrap":"whitespace-pre-wrap"},wordBreak:{all:"break-all",keep:"break-keep",normal:"break-normal",words:"break-words"}}}),{createResponsive}=createResponsiveComponent(textVariants),Text=({size,weight,transform,align,truncate=!1,clamped,color,decoration,lineHeight,whiteSpace,wordBreak,className,children,...props})=>{let classes=createResponsive({align,color,decoration,lineHeight,size,transform,weight,whiteSpace,wordBreak});return jsx("span",{className:cn(classes,truncate&&"truncate",className),style:clamped?{display:"-webkit-box",overflow:"hidden",WebkitBoxOrient:"vertical",WebkitLineClamp:clamped}:{},...props,children})};export{textVariants,Text};