UNPKG

ivt

Version:

Ivt Components Library

1 lines 11.8 kB
{"version":3,"file":"index.mjs","sources":["../../src/components/default/dash/DashCard.tsx","../../src/components/default/dash/DashCardList.tsx","../../src/components/default/dash/ErrorMessageDashCard.tsx","../../src/components/default/dash/ValuePercentage.tsx"],"sourcesContent":["import React from \"react\";\nimport { TooltipIndicator } from \"@/components/default/base\";\nimport { Card, CardContent, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { cn } from \"@/lib/utils\";\nimport { formatNegative } from \"@/utils/styles\";\n\ninterface DashCardProps {\n\ttitle: string;\n\ttooltip?: string;\n\tvalue: number | string | null;\n\tfooter?: React.ReactNode;\n\tvalueFormatter?: (value: number | string | null) => React.ReactNode;\n\tclassName?: string;\n\tvalueClassName?: string;\n\tisLoading?: boolean;\n}\n\nexport function DashCard({\n\ttitle,\n\ttooltip,\n\tvalue,\n\tfooter,\n\tvalueFormatter = (v) => v,\n\tclassName,\n\tvalueClassName,\n\tisLoading,\n}: DashCardProps) {\n\treturn (\n\t\t<Card className={cn(\"h-full gap-2\", className)}>\n\t\t\t<CardHeader className=\"gap-0\">\n\t\t\t\t<CardTitle className=\"flex flex-wrap items-center gap-2 text-sm font-medium\">\n\t\t\t\t\t{title}\n\t\t\t\t\t{tooltip && <TooltipIndicator>{tooltip}</TooltipIndicator>}\n\t\t\t\t</CardTitle>\n\t\t\t</CardHeader>\n\n\t\t\t<CardContent>\n\t\t\t\t{isLoading ? (\n\t\t\t\t\t<Skeleton className={cn(\"h-10 w-32 rounded-md\", valueClassName)} />\n\t\t\t\t) : (\n\t\t\t\t\t<p\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"text-3xl font-bold\",\n\t\t\t\t\t\t\ttypeof value === \"number\" && formatNegative(+value),\n\t\t\t\t\t\t\tvalueClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{valueFormatter(value)}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</CardContent>\n\n\t\t\t{footer && <CardFooter>{isLoading ? <Skeleton className=\"h-4 w-20\" /> : footer}</CardFooter>}\n\t\t</Card>\n\t);\n}\n","import React from \"react\";\nimport { Card, CardContent, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { cn } from \"@/lib/utils\";\nimport { TooltipIndicator } from \"../base\";\n\ninterface DashCardListProps {\n\ttitle: string;\n\ttooltip?: string;\n\tcontent: React.ReactNode;\n\tfooter?: React.ReactNode;\n\tclassName?: string;\n\tvalueClassName?: string;\n\tisLoading?: boolean;\n}\n\nexport function DashCardList({\n\ttitle,\n\ttooltip,\n\tfooter,\n\tcontent,\n\tclassName,\n\tvalueClassName,\n\tisLoading,\n}: DashCardListProps) {\n\treturn (\n\t\t<Card className={cn(\"h-full gap-2\", className)}>\n\t\t\t<CardHeader className=\"gap-0\">\n\t\t\t\t<CardTitle className=\"flex flex-wrap items-center gap-2 text-sm font-medium\">\n\t\t\t\t\t{title}\n\t\t\t\t\t{tooltip && <TooltipIndicator>{tooltip}</TooltipIndicator>}\n\t\t\t\t</CardTitle>\n\t\t\t</CardHeader>\n\n\t\t\t<CardContent>\n\t\t\t\t{isLoading ? <Skeleton className={cn(\"h-10 w-32 rounded-md\", valueClassName)} /> : content}\n\t\t\t</CardContent>\n\n\t\t\t{footer && <CardFooter>{isLoading ? <Skeleton className=\"h-4 w-20\" /> : footer}</CardFooter>}\n\t\t</Card>\n\t);\n}\n","import { AlertTriangle } from \"lucide-react\";\nimport React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface ErrorMessageDashCardProps extends React.HTMLAttributes<HTMLDivElement> {\n\tchildren?: React.ReactNode;\n\tshouldIcon?: boolean;\n}\n\nexport const ErrorMessageDashCard: React.FC<ErrorMessageDashCardProps> = ({\n\tchildren,\n\tclassName,\n\tshouldIcon = true,\n\t...props\n}) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"text-destructive flex flex-wrap items-center gap-1 text-sm\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{shouldIcon && <AlertTriangle className=\"h-4 w-4\" />}\n\t\t\t<span>{children ?? \"Erro ao carregar os dados\"}</span>\n\t\t</div>\n\t);\n};\n","import React from \"react\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { formatDateToBrazilian } from \"@/utils/date\";\nimport { formatMoney, formatNumberWithComma } from \"@/utils/format-numbers\";\n\ninterface ValuePercentageProps {\n\tpercentage: number;\n\tprevStartDate?: string | null;\n\tprevEndDate?: string | null;\n\tstartDate?: string | null;\n\tendDate?: string | null;\n\tprevValue?: number | null;\n\tvalue?: number | null;\n\tvalueMaxFractionDigits?: number;\n\tvalueMinFractionDigits?: number;\n\tshowText?: boolean;\n\ttext?: string;\n\tformatAsMoney?: boolean;\n}\n\nexport const ValuePercentage: React.FC<ValuePercentageProps> = ({\n\tpercentage,\n\tprevStartDate,\n\tprevEndDate,\n\tstartDate,\n\tendDate,\n\tprevValue,\n\tvalue,\n\tvalueMaxFractionDigits = 2,\n\tvalueMinFractionDigits = 2,\n\tshowText = true,\n\ttext = \"desde o último mês\",\n\tformatAsMoney = false,\n}) => {\n\tconst cellCSS =\n\t\tpercentage === 0\n\t\t\t? \"text-muted-foreground\"\n\t\t\t: percentage < 0\n\t\t\t\t? \"text-destructive\"\n\t\t\t\t: \"text-positive\";\n\tconst iconValue = percentage < 0 ? \"\" : \"\";\n\tconst formatValue = (val: number) => {\n\t\tconst options = {\n\t\t\tvalue: val,\n\t\t\tminimumFractionDigits: valueMinFractionDigits,\n\t\t\tmaximumFractionDigits: valueMaxFractionDigits,\n\t\t};\n\t\treturn formatAsMoney\n\t\t\t? formatMoney({\n\t\t\t\t\tvalue: options.value,\n\t\t\t\t\tminimumFractionDigits: options.minimumFractionDigits,\n\t\t\t\t\tmaximumFractionDigits: options.maximumFractionDigits,\n\t\t\t\t\tcurrency: \"BRL\",\n\t\t\t\t})\n\t\t\t: formatNumberWithComma(options);\n\t};\n\n\treturn (\n\t\t<TooltipProvider>\n\t\t\t<Tooltip>\n\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t<div className={cn(\"text-xs\", cellCSS)}>\n\t\t\t\t\t\t<span className=\"mr-1\">{iconValue}</span>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{formatNumberWithComma({\n\t\t\t\t\t\t\t\tvalue: percentage,\n\t\t\t\t\t\t\t\tminimumFractionDigits: 0,\n\t\t\t\t\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t%\n\t\t\t\t\t\t</span>{\" \"}\n\t\t\t\t\t\t{showText && <span className=\"text-muted-foreground\">{text}</span>}\n\t\t\t\t\t</div>\n\t\t\t\t</TooltipTrigger>\n\t\t\t\t{prevStartDate && startDate && (\n\t\t\t\t\t<TooltipContent side=\"bottom\" className=\"bg-secondary flex flex-col\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{formatDateToBrazilian(prevStartDate)}{\" \"}\n\t\t\t\t\t\t\t{prevEndDate && `- ${formatDateToBrazilian(prevEndDate)}`}:{\" \"}\n\t\t\t\t\t\t\t{formatValue(prevValue ?? 0)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{formatDateToBrazilian(startDate)} {endDate && `- ${formatDateToBrazilian(endDate)}`}:{\" \"}\n\t\t\t\t\t\t\t{formatValue(value ?? 0)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</TooltipContent>\n\t\t\t\t)}\n\t\t\t</Tooltip>\n\t\t</TooltipProvider>\n\t);\n};\n"],"names":["DashCard","title","tooltip","value","footer","valueFormatter","v","className","valueClassName","isLoading","React","Card","cn","CardHeader","CardTitle","TooltipIndicator","CardContent","Skeleton","p","formatNegative","CardFooter","DashCardList","content","ErrorMessageDashCard","children","shouldIcon","props","div","AlertTriangle","span","ValuePercentage","percentage","prevStartDate","prevEndDate","startDate","endDate","prevValue","valueMaxFractionDigits","valueMinFractionDigits","showText","text","formatAsMoney","cellCSS","iconValue","formatValue","val","options","minimumFractionDigits","maximumFractionDigits","formatMoney","currency","formatNumberWithComma","TooltipProvider","Tooltip","TooltipTrigger","asChild","TooltipContent","side","formatDateToBrazilian"],"mappings":"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"}