{"version":3,"file":"StatsCard.mjs","sources":["../../../../src/lib/nextGenComponents/components/StatsCard/StatsCard.tsx"],"sourcesContent":["import { type FunctionComponent, type ReactNode, type SVGProps } from 'react'\n\nimport Clock from '../../../images/clock.svg?react'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components'\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'\nimport { STATS_CARD_TIMESTAMP } from '@/constants'\nimport { cn } from '@/lib/utils'\n\ntype StatsCardProps = {\n  children: ReactNode\n  className?: string\n  variant?: 'default' | 'compact'\n  onClick?: () => void\n}\n\nconst StatsCardBase = ({\n  children,\n  className,\n  variant = 'default',\n  onClick\n}: Readonly<StatsCardProps>) => {\n  return (\n    <Card\n      className={cn(\n        'border bg-card text-card-foreground',\n        variant === 'default' && 'flex-1 rounded-lg shadow-stat-card',\n        variant === 'compact' && 'rounded-md w-fit',\n        className\n      )}\n      onClick={onClick}\n    >\n      {children}\n    </Card>\n  )\n}\n\ntype HeaderProps = {\n  children?: ReactNode\n  title?: string\n  icon?: FunctionComponent<SVGProps<SVGSVGElement>>\n  showTimestamp?: boolean\n  timestampLabel?: string\n}\n\nconst Header = ({\n  children,\n  title,\n  icon: Icon,\n  showTimestamp = true,\n  timestampLabel = STATS_CARD_TIMESTAMP\n}: Readonly<HeaderProps>) => {\n  return (\n    <CardHeader className=\"flex justify-between items-center gap-x-2 flex-row pt-4 px-5\">\n      <CardTitle className=\"flex items-center gap-x-1 text-[15px] capitalize font-medium leading-[normal]\">\n        {Icon && <Icon className=\"shrink-0 w-4 h-4\" />}\n        <span>{title}</span>\n      </CardTitle>\n      {showTimestamp && (\n        <span className=\"flex items-center gap-x-1 text-xs text-[#7F7989] truncate max-[1300px]:hidden group-data-[pinned=false]/sidebar-wrapper:max-[1300px]:flex group-data-[pinned=false]/sidebar-wrapper:max-[1100px]:hidden\">\n          <Clock className=\"h-2.5 w-2.5\" />\n          {timestampLabel}\n        </span>\n      )}\n      {children}\n    </CardHeader>\n  )\n}\n\ntype RowProps = {\n  children: ReactNode\n}\n\nconst Row = ({ children }: Readonly<RowProps>) => {\n  return <div className=\"flex items-baseline justify-between px-5\">{children}</div>\n}\n\ntype MainCounterProps = {\n  children: ReactNode\n  className?: string\n  id?: string\n  onClick?: () => void\n}\n\nconst MainCounter = ({ children, className, id, onClick }: Readonly<MainCounterProps>) => {\n  return (\n    <CardContent\n      className={cn('flex justify-center pb-12 text-[27px] font-bold', className)}\n      data-testid={id}\n      onClick={onClick}\n    >\n      {children}\n    </CardContent>\n  )\n}\n\ntype SecondaryCounterProps = {\n  children: ReactNode\n  className?: string\n}\n\nconst SecondaryCounter = ({ children, className }: Readonly<SecondaryCounterProps>) => {\n  return <div className={cn('text-[15px] font-medium', className)}>{children}</div>\n}\n\ntype DetailsProps = {\n  children: ReactNode\n  className?: string\n}\n\nconst Details = ({ children, className }: Readonly<DetailsProps>) => {\n  return (\n    <div\n      className={cn(\n        'mt-4 max-[1250px]:hidden group-data-[pinned=false]/sidebar-wrapper:max-[1250px]:block group-data-[pinned=false]/sidebar-wrapper:max-[1100px]:hidden',\n        className\n      )}\n    >\n      {children}\n    </div>\n  )\n}\n\ntype CompactProps = {\n  icon?: FunctionComponent<SVGProps<SVGSVGElement>>\n  value: ReactNode\n  tooltipLabel?: string\n  className?: string\n}\n\nconst Compact = ({ icon: Icon, value, tooltipLabel, className }: Readonly<CompactProps>) => {\n  return (\n    <div className={cn('flex items-center gap-x-2 px-4 py-2.5', className)}>\n      {Icon && tooltipLabel ? (\n        <TooltipProvider>\n          <Tooltip delayDuration={300}>\n            <TooltipTrigger type=\"button\" className=\"cursor-default\">\n              <Icon className=\"shrink-0 w-5 h-5\" />\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>{tooltipLabel}</p>\n            </TooltipContent>\n          </Tooltip>\n        </TooltipProvider>\n      ) : (\n        Icon && <Icon className=\"shrink-0 w-5 h-5\" />\n      )}\n      <span className=\"text-xl font-semibold leading-none\">{value}</span>\n    </div>\n  )\n}\n\nconst StatsCard = Object.assign(StatsCardBase, {\n  Header,\n  Row,\n  MainCounter,\n  SecondaryCounter,\n  Details,\n  Compact\n})\n\nexport default StatsCard\n"],"names":["StatsCardBase","children","className","variant","onClick","jsx","Card","cn","Header","title","Icon","showTimestamp","timestampLabel","STATS_CARD_TIMESTAMP","jsxs","CardHeader","CardTitle","Clock","Row","MainCounter","id","CardContent","SecondaryCounter","Details","Compact","value","tooltipLabel","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","StatsCard"],"mappings":";;;;;;;AAeA,MAAMA,IAAgB,CAAC;AAAA,EACrB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,SAAAC;AACF,MAEI,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ,MAAY,aAAa;AAAA,MACzBA,MAAY,aAAa;AAAA,MACzBD;AAAA,IAAA;AAAA,IAEF,SAAAE;AAAA,IAEC,UAAAH;AAAA,EAAA;AAAA,GAaDO,IAAS,CAAC;AAAA,EACd,UAAAP;AAAA,EACA,OAAAQ;AAAA,EACA,MAAMC;AAAA,EACN,eAAAC,IAAgB;AAAA,EAChB,gBAAAC,IAAiBC;AACnB,MAEI,gBAAAC,EAACC,GAAA,EAAW,WAAU,gEACpB,UAAA;AAAA,EAAA,gBAAAD,EAACE,GAAA,EAAU,WAAU,iFAClB,UAAA;AAAA,IAAAN,KAAQ,gBAAAL,EAACK,GAAA,EAAK,WAAU,mBAAA,CAAmB;AAAA,IAC5C,gBAAAL,EAAC,UAAM,UAAAI,EAAA,CAAM;AAAA,EAAA,GACf;AAAA,EACCE,KACC,gBAAAG,EAAC,QAAA,EAAK,WAAU,2MACd,UAAA;AAAA,IAAA,gBAAAT,EAACY,GAAA,EAAM,WAAU,cAAA,CAAc;AAAA,IAC9BL;AAAA,EAAA,GACH;AAAA,EAEDX;AAAA,GACH,GAQEiB,IAAM,CAAC,EAAE,UAAAjB,QACN,gBAAAI,EAAC,OAAA,EAAI,WAAU,4CAA4C,UAAAJ,EAAA,CAAS,GAUvEkB,IAAc,CAAC,EAAE,UAAAlB,GAAU,WAAAC,GAAW,IAAAkB,GAAI,SAAAhB,QAE5C,gBAAAC;AAAA,EAACgB;AAAA,EAAA;AAAA,IACC,WAAWd,EAAG,mDAAmDL,CAAS;AAAA,IAC1E,eAAakB;AAAA,IACb,SAAAhB;AAAA,IAEC,UAAAH;AAAA,EAAA;AAAA,GAUDqB,IAAmB,CAAC,EAAE,UAAArB,GAAU,WAAAC,0BAC5B,OAAA,EAAI,WAAWK,EAAG,2BAA2BL,CAAS,GAAI,UAAAD,GAAS,GAQvEsB,IAAU,CAAC,EAAE,UAAAtB,GAAU,WAAAC,QAEzB,gBAAAG;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWE;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAGD,UAAAD;AAAA,EAAA;AAAA,GAYDuB,IAAU,CAAC,EAAE,MAAMd,GAAM,OAAAe,GAAO,cAAAC,GAAc,WAAAxB,0BAE/C,OAAA,EAAI,WAAWK,EAAG,yCAAyCL,CAAS,GAClE,UAAA;AAAA,EAAAQ,KAAQgB,IACP,gBAAArB,EAACsB,GAAA,EACC,UAAA,gBAAAb,EAACc,GAAA,EAAQ,eAAe,KACtB,UAAA;AAAA,IAAA,gBAAAvB,EAACwB,GAAA,EAAe,MAAK,UAAS,WAAU,kBACtC,UAAA,gBAAAxB,EAACK,GAAA,EAAK,WAAU,mBAAA,CAAmB,EAAA,CACrC;AAAA,IACA,gBAAAL,EAACyB,GAAA,EACC,UAAA,gBAAAzB,EAAC,KAAA,EAAG,aAAa,EAAA,CACnB;AAAA,EAAA,GACF,GACF,IAEAK,KAAQ,gBAAAL,EAACK,GAAA,EAAK,WAAU,oBAAmB;AAAA,EAE7C,gBAAAL,EAAC,QAAA,EAAK,WAAU,sCAAsC,UAAAoB,EAAA,CAAM;AAAA,GAC9D,GAIEM,IAAY,OAAO,OAAO/B,GAAe;AAAA,EAC7C,QAAAQ;AAAA,EACA,KAAAU;AAAA,EACA,aAAAC;AAAA,EACA,kBAAAG;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AACF,CAAC;"}