@zydon/common 2.8.76 → 2.8.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/chunk-ANEPP6QT.js +4 -0
  2. package/dist/chunk-ANEPP6QT.js.map +1 -0
  3. package/dist/chunk-BHYLHO5P.js +4 -0
  4. package/dist/chunk-BHYLHO5P.js.map +1 -0
  5. package/dist/chunk-CBW32OUQ.js +13 -0
  6. package/dist/chunk-CBW32OUQ.js.map +1 -0
  7. package/dist/chunk-DRGARBKB.js +8 -0
  8. package/dist/chunk-DRGARBKB.js.map +1 -0
  9. package/dist/chunk-FYG3YWFZ.js +4 -0
  10. package/dist/chunk-FYG3YWFZ.js.map +1 -0
  11. package/dist/chunk-J5XGGHQ7.js +8 -0
  12. package/dist/chunk-J5XGGHQ7.js.map +1 -0
  13. package/dist/chunk-J7RPKCIN.js +9 -0
  14. package/dist/chunk-J7RPKCIN.js.map +1 -0
  15. package/dist/{chunk-NWT5TUJO.js → chunk-JM3SE72J.js} +2 -2
  16. package/dist/chunk-RMYYQLRJ.js +7 -0
  17. package/dist/chunk-RMYYQLRJ.js.map +1 -0
  18. package/dist/chunk-SP5U3DJP.js +7 -0
  19. package/dist/chunk-SP5U3DJP.js.map +1 -0
  20. package/dist/chunk-VGTQYKAC.js +8 -0
  21. package/dist/chunk-VGTQYKAC.js.map +1 -0
  22. package/dist/chunk-XAPSXJZO.js +8 -0
  23. package/dist/chunk-XAPSXJZO.js.map +1 -0
  24. package/dist/chunk-XL6SZZGI.js +6 -0
  25. package/dist/chunk-XL6SZZGI.js.map +1 -0
  26. package/dist/chunk-XQZPUMVQ.js +14 -0
  27. package/dist/chunk-XQZPUMVQ.js.map +1 -0
  28. package/dist/components/Analytics/OverviewAnalytics/index.d.ts +54 -0
  29. package/dist/components/Analytics/OverviewAnalytics/index.js +47 -0
  30. package/dist/components/Analytics/OverviewAnalytics/index.js.map +1 -0
  31. package/dist/components/Analytics/PartnerAnalysis/index.d.ts +122 -0
  32. package/dist/components/Analytics/PartnerAnalysis/index.js +28 -0
  33. package/dist/components/Analytics/PartnerAnalysis/index.js.map +1 -0
  34. package/dist/components/Analytics/index.d.ts +117 -0
  35. package/dist/components/Analytics/index.js +47 -0
  36. package/dist/components/Analytics/index.js.map +1 -0
  37. package/dist/components/Avatar/index.d.ts +1 -1
  38. package/dist/components/AvatarButton/index.js +6 -6
  39. package/dist/components/AvatarButton/index.js.map +1 -1
  40. package/dist/components/Common/index.js +2 -2
  41. package/dist/components/DataView/index.d.ts +1 -1
  42. package/dist/components/DateRangeCalendar/index.js +1 -7
  43. package/dist/components/DateRangeCalendar/index.js.map +1 -1
  44. package/dist/components/Drawer/index.js +3 -12
  45. package/dist/components/Drawer/index.js.map +1 -1
  46. package/dist/components/DynamicDataView/index.js +1 -1
  47. package/dist/components/InfoCircle/index.js +3 -7
  48. package/dist/components/InfoCircle/index.js.map +1 -1
  49. package/dist/components/SimpleCard/index.js +1 -7
  50. package/dist/components/SimpleCard/index.js.map +1 -1
  51. package/dist/components/ToggleTheme/index.js +2 -2
  52. package/dist/components/form/DateField/index.js +1 -8
  53. package/dist/components/form/DateField/index.js.map +1 -1
  54. package/dist/components/form/Form/index.js +1 -7
  55. package/dist/components/form/Form/index.js.map +1 -1
  56. package/dist/hooks/useDatagrid.js +1 -6
  57. package/dist/hooks/useDatagrid.js.map +1 -1
  58. package/dist/hooks/useSnackbar.d.ts +1 -1
  59. package/dist/hooks/useThemeToggle.js +2 -2
  60. package/dist/index.d.ts +2 -2
  61. package/dist/index.js +2 -2
  62. package/dist/theme/core/index.d.ts +1 -1
  63. package/dist/theme/styles/index.d.ts +13 -13
  64. package/dist/theme/theme-provider.js +2 -2
  65. package/dist/types/analytics.d.ts +29 -0
  66. package/dist/types/analytics.js +2 -0
  67. package/dist/types/analytics.js.map +1 -0
  68. package/dist/types/overviewAnalytics.d.ts +88 -0
  69. package/dist/types/overviewAnalytics.js +2 -0
  70. package/dist/types/overviewAnalytics.js.map +1 -0
  71. package/dist/types/partnerAnalysis.d.ts +91 -0
  72. package/dist/types/partnerAnalysis.js +2 -0
  73. package/dist/types/partnerAnalysis.js.map +1 -0
  74. package/dist/utils/buildExportPayload.js +1 -1
  75. package/dist/utils/chart.d.ts +6 -0
  76. package/dist/utils/chart.js +2 -0
  77. package/dist/utils/chart.js.map +1 -0
  78. package/dist/utils/periodDates.d.ts +20 -0
  79. package/dist/utils/periodDates.js +3 -0
  80. package/dist/utils/periodDates.js.map +1 -0
  81. package/package.json +16 -2
  82. package/dist/{chunk-NWT5TUJO.js.map → chunk-JM3SE72J.js.map} +0 -0
  83. package/dist/{index-5a5e5dc8.d.ts → index-c8f1e6e7.d.ts} +12 -12
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/Analytics/PartnerAnalysis/PartnerBreakdown/index.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnerBreakdown/Chart/index.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnerBreakdown/Chart/styles.ts","../../../../src/components/Analytics/PartnerAnalysis/PartnerBreakdown/Chart/Tooltip.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnerBreakdown/Legend.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnersByProfile/index.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnersByProfile/Chart/index.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnersByProfile/Chart/PieLabel.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnersByProfile/Chart/styles.ts","../../../../src/components/Analytics/PartnerAnalysis/PartnersByProfile/Chart/Tooltip.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnersByProfile/Legend.tsx","../../../../src/components/Analytics/PartnerAnalysis/PartnersByProfile/props.ts","../../../../src/components/Analytics/PartnerAnalysis/Ranking/index.tsx","../../../../src/components/Analytics/PartnerAnalysis/Ranking/Chart/index.tsx","../../../../src/components/Analytics/PartnerAnalysis/Ranking/props.ts","../../../../src/components/Analytics/PartnerAnalysis/Ranking/Chart/BarBackground.tsx","../../../../src/components/Analytics/PartnerAnalysis/Ranking/Chart/Tooltip.tsx","../../../../src/components/Analytics/PartnerAnalysis/Ranking/Legend.tsx","../../../../src/components/Analytics/PartnerAnalysis/Ranking/styles.ts","../../../../src/components/Analytics/PartnerAnalysis/SellerPortfolio/index.tsx","../../../../src/components/Analytics/PartnerAnalysis/SellerPortfolio/Chart/index.tsx","../../../../src/components/Analytics/PartnerAnalysis/SellerPortfolio/Chart/BarBackground.tsx","../../../../src/components/Analytics/PartnerAnalysis/SellerPortfolio/Chart/Tooltip.tsx","../../../../src/components/Analytics/PartnerAnalysis/SellerPortfolio/Legend.tsx","../../../../src/components/Analytics/PartnerAnalysis/SellerPortfolio/props.ts"],"names":["CardContent","CardHeader","Stack","Pie","PieChart","ResponsiveContainer","Tooltip","styled","ChartContainer","theme","Divider","Typography","jsx","jsxs","formatPercentage","value","fPercent","PieChartTooltip","active","payload","total","entry","SimpleCard_default","Tooltip_default","PieChartBreakdown","chartData","isEmptyData","onPieClick","clickable","fNumber","Chart_default","Checkbox","FormControlLabel","PieChartLegend","items","hiddenKeys","onToggle","onItemClick","item","e","_","checked","fShortenNumber","Legend_default","PartnerBreakdown","title","legendItems","ChartCard","PartnerBreakdown_default","RADIAN","LABEL_OFFSET","MIN_PERCENTAGE","PieLabel","props","cx","cy","midAngle","outerRadius","percentage","cxNum","cyNum","outerR","angle","sin","cos","x1","y1","xMid","yMid","side","xEnd","yEnd","label","badgeW","badgeX","PieLabel_default","ProfileTooltip","renderLabel","ProfileChart","ProfileLegend","Scrollbar_default","PartnersByProfile","data","onLegendClick","Result_default","EmptyState_default","PartnersByProfile_default","SEGMENT_COLORS","MAX_VISIBLE","memo","useCallback","useMemo","useRef","useState","Slider","Bar","CartesianGrid","ComposedChart","ReferenceLine","XAxis","YAxis","AVERAGE_COLOR","RANKING_CONFIG","fCurrencyBRL","BarBackground","x","y","width","height","index","activeBarIndex","color","onBarClick","BarBackground_default","RankingTooltip","config","average","BAR_SIZE","BAR_SLOT","RankingChart","visibleSeries","activeCoordX","shouldRotateLabels","onMouseMove","onMouseLeave","yDomain","values","max","yTicks","step","i","barLabel","tooltipContent","renderXAxisTick","tickProps","RotatedTick_default","WrappedTick_default","handleBarClick","ChartWrapper","v","ReferenceCircle_default","RankingLegend","onToggleSerie","Ranking","children","isMobile","useResponsive_default","isDownLg","setVisibleSeries","visibleCount","setVisibleCount","setActiveBarIndex","setActiveCoordX","containerWidth","setContainerWidth","observerRef","wrapperRefCallback","node","sortedData","a","b","totalItems","maxVisible","showSlider","sliderMax","clampedCount","displayData","handleToggleSerie","serie","prev","handleChartMouseMove","state","handleChartMouseLeave","handleSliderChange","val","ChartCardHeader","Ranking_default","MuiButton","ItemButton","prop","BarChart","formatPct","StackedTooltip","visibleEntries","sum","series","s","pct","Fragment","SellerPortfolioChart","row","visible","firstVisible","lastVisible","isFirst","isLast","SellerPortfolioLegend","SellerPortfolio","setHiddenKeys","displayDataWithTotals","dataKey","next","handleMouseMove","handleMouseLeave","sellerId","sellerName","SellerPortfolio_default","CLASSIFICATION_SERIES","ABC_CURVE_SERIES","SELLER_PORTFOLIO_CONFIG"],"mappings":"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","sourcesContent":["import CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport Stack from '@mui/material/Stack';\nimport { ChartCard } from 'components/Analytics/ChartStyles';\n\nimport PieChartBreakdown from './Chart';\nimport PieChartLegend from './Legend';\nimport { PartnerBreakdownProps } from './props';\n\nconst PartnerBreakdown = ({\n title,\n chartData,\n total,\n isEmptyData,\n legendItems,\n hiddenKeys,\n onToggle,\n onPieClick,\n onItemClick,\n}: PartnerBreakdownProps) => (\n <ChartCard>\n <CardHeader title={title} />\n\n <CardContent>\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n alignItems=\"center\"\n gap={1.5}\n minWidth={0}\n >\n <PieChartBreakdown\n chartData={chartData}\n total={total}\n isEmptyData={isEmptyData}\n onPieClick={onPieClick}\n clickable={!!onPieClick}\n />\n\n <PieChartLegend\n items={legendItems}\n hiddenKeys={hiddenKeys}\n onToggle={onToggle}\n onItemClick={onItemClick}\n />\n </Stack>\n </CardContent>\n </ChartCard>\n);\n\nexport default PartnerBreakdown;\n","import { fNumber } from 'utils/formatNumber';\nimport { Pie, PieChart, ResponsiveContainer, Tooltip } from 'recharts';\n\nimport { ChartProps } from '../props';\n\nimport { ChartContainer } from './styles';\nimport PieChartTooltip from './Tooltip';\n\nconst PieChartBreakdown = ({\n chartData,\n total,\n isEmptyData,\n onPieClick,\n clickable,\n}: ChartProps) => (\n <ChartContainer>\n <ResponsiveContainer width={200} height={200}>\n <PieChart>\n <Pie\n data={chartData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={60}\n outerRadius={90}\n paddingAngle={2}\n strokeWidth={0}\n isAnimationActive={false}\n onClick={onPieClick}\n cursor={clickable ? 'pointer' : undefined}\n />\n\n <text\n x=\"50%\"\n y=\"46%\"\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n style={{ fontSize: 24, fontWeight: 700 }}\n >\n {fNumber(total)}\n </text>\n\n <text\n x=\"50%\"\n y=\"58%\"\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n style={{ fontSize: 12, fill: '#919EAB' }}\n >\n clientes\n </text>\n\n {!isEmptyData && (\n <Tooltip content={<PieChartTooltip total={total} />} />\n )}\n </PieChart>\n </ResponsiveContainer>\n </ChartContainer>\n);\n\nexport default PieChartBreakdown;\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const ChartContainer = styled(Stack)(({ theme }) => ({\n position: 'relative',\n alignSelf: 'flex-start',\n\n flexShrink: 0,\n\n '& .recharts-wrapper, & .recharts-wrapper *': {\n outline: 'none !important',\n boxShadow: 'none !important',\n },\n\n '& .recharts-pie-sector': {\n cursor: 'pointer',\n },\n\n [theme.breakpoints.down('md')]: {\n alignSelf: 'center',\n },\n}));\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport SimpleCard from 'components/SimpleCard';\nimport { fPercent } from 'utils/formatNumber';\n\nimport { CustomTooltipProps } from '../props';\n\nconst formatPercentage = (value: number) =>\n fPercent(value, {\n maximumFractionDigits: 2,\n ...(value > 0 && value < 100 ? { minimumFractionDigits: 2 } : {}),\n });\n\nconst PieChartTooltip = ({ active, payload, total }: CustomTooltipProps) => {\n if (!active || !payload?.length) return null;\n\n const entry = payload[0];\n\n return (\n <SimpleCard minWidth={{ xs: 'auto', sm: 200 }} p={1} gap={1}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {entry.name}\n </Typography>\n\n <Divider />\n\n <Stack>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack\n width={6}\n height={6}\n borderRadius=\"50%\"\n bgcolor={entry.payload.fill}\n />\n\n <Typography variant=\"body2\" noWrap>\n {entry.name}\n </Typography>\n </Stack>\n\n <Typography variant=\"body2\" noWrap>\n {formatPercentage(entry.payload.percentage)} ({entry.value})\n </Typography>\n </Stack>\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack width={6} height={6} borderRadius=\"50%\" bgcolor=\"#919EAB\" />\n\n <Typography variant=\"body2\" noWrap>\n Total\n </Typography>\n </Stack>\n\n <Typography variant=\"body2\" noWrap>\n {formatPercentage(100)} ({total})\n </Typography>\n </Stack>\n </Stack>\n </SimpleCard>\n );\n};\n\nexport default PieChartTooltip;\n","import Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { fPercent, fShortenNumber } from 'utils/formatNumber';\n\nimport { LegendProps } from './props';\n\nconst PieChartLegend = ({\n items,\n hiddenKeys,\n onToggle,\n onItemClick,\n}: LegendProps) => (\n <Stack width=\"100%\" justifyContent=\"center\">\n {items.map(item => (\n <Stack\n key={item.key}\n display=\"grid\"\n gridTemplateColumns=\"1fr auto auto\"\n alignItems=\"center\"\n gap={1.5}\n onClick={() => onItemClick?.(item.key, item.label)}\n sx={{\n ...(onItemClick ? { cursor: 'pointer' } : {}),\n }}\n >\n <FormControlLabel\n label={item.label}\n onClick={e => e.stopPropagation()}\n control={\n <Checkbox\n size=\"small\"\n checked={!hiddenKeys.has(item.key)}\n onChange={(_, checked) => onToggle(item.key, checked)}\n sx={{ '&.Mui-checked': { color: item.color } }}\n />\n }\n sx={{\n '& .MuiFormControlLabel-label': {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n }}\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n textAlign=\"right\"\n noWrap\n >\n {fPercent(item.percentage, {\n maximumFractionDigits: 2,\n ...(item.percentage > 0 && item.percentage < 100\n ? { minimumFractionDigits: 2 }\n : {}),\n })}\n </Typography>\n\n <Typography\n variant=\"subtitle2\"\n color=\"text.primary\"\n textAlign=\"right\"\n noWrap\n >\n {fShortenNumber(item.count)}\n </Typography>\n </Stack>\n ))}\n </Stack>\n);\n\nexport default PieChartLegend;\n","import CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport Stack from '@mui/material/Stack';\nimport { ChartCard } from 'components/Analytics/ChartStyles';\nimport EmptyState from 'components/Analytics/EmptyState';\nimport Result from 'components/Result';\n\nimport ProfileChart from './Chart';\nimport ProfileLegend from './Legend';\nimport { PartnersByProfileProps } from './props';\n\nconst PartnersByProfile = ({\n data,\n chartData,\n total,\n isEmptyData,\n onPieClick,\n onLegendClick,\n hiddenKeys,\n onToggle,\n}: PartnersByProfileProps) => (\n <ChartCard>\n <CardHeader title=\"Clientes por segmentos\" />\n\n <CardContent>\n <Result isEmpty={data.length === 0} empty={<EmptyState />}>\n <Stack alignItems=\"center\" gap={2}>\n <ProfileChart\n chartData={chartData}\n total={total}\n isEmptyData={isEmptyData}\n onPieClick={onPieClick}\n />\n\n <ProfileLegend\n items={data}\n hiddenKeys={hiddenKeys}\n onToggle={onToggle}\n onItemClick={onLegendClick}\n />\n </Stack>\n </Result>\n </CardContent>\n </ChartCard>\n);\n\nexport default PartnersByProfile;\n","import { PieLabelRenderProps } from 'recharts';\nimport { Pie, PieChart, ResponsiveContainer, Tooltip } from 'recharts';\n\nimport PieLabel from './PieLabel';\nimport { ChartProps } from './props';\nimport { ChartContainer } from './styles';\nimport ProfileTooltip from './Tooltip';\n\nconst renderLabel = (props: PieLabelRenderProps) => <PieLabel {...props} />;\n\nconst ProfileChart = ({\n chartData,\n total,\n isEmptyData,\n onPieClick,\n}: ChartProps) => (\n <ChartContainer>\n <ResponsiveContainer width={280} height={280}>\n <PieChart>\n <Pie\n data={chartData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n outerRadius={90}\n paddingAngle={1}\n strokeWidth={0}\n isAnimationActive={false}\n label={isEmptyData ? false : renderLabel}\n labelLine={false}\n onClick={onPieClick}\n cursor={onPieClick ? 'pointer' : undefined}\n />\n\n {!isEmptyData && (\n <Tooltip content={<ProfileTooltip total={total} />} />\n )}\n </PieChart>\n </ResponsiveContainer>\n </ChartContainer>\n);\n\nexport default ProfileChart;\n","import { PieLabelRenderProps } from 'recharts';\nimport { fPercent } from 'utils/formatNumber';\n\nconst RADIAN = Math.PI / 180;\nconst LABEL_OFFSET = 22;\nconst MIN_PERCENTAGE = 2;\n\nconst PieLabel = (props: PieLabelRenderProps) => {\n const { cx, cy, midAngle, outerRadius, percentage } =\n props as PieLabelRenderProps & { percentage: number };\n\n if (percentage < MIN_PERCENTAGE) return null;\n\n const cxNum = Number(cx);\n const cyNum = Number(cy);\n const outerR = Number(outerRadius);\n const angle = Number(midAngle);\n\n if (isNaN(cxNum) || isNaN(cyNum) || isNaN(outerR)) return null;\n\n const sin = Math.sin(-angle * RADIAN);\n const cos = Math.cos(-angle * RADIAN);\n\n const x1 = cxNum + outerR * cos;\n const y1 = cyNum + outerR * sin;\n\n const xMid = cxNum + (outerR + LABEL_OFFSET * 0.5) * cos;\n const yMid = cyNum + (outerR + LABEL_OFFSET * 0.5) * sin;\n\n const side = cos >= 0 ? 1 : -1;\n const xEnd = xMid + side * 10;\n const yEnd = yMid;\n\n const label = fPercent(percentage, {\n maximumFractionDigits: 1,\n ...(percentage > 0 && percentage < 100 ? { minimumFractionDigits: 1 } : {}),\n });\n\n const badgeW = label.length * 7 + 10;\n const badgeX = side === 1 ? xEnd + 2 : xEnd - badgeW - 2;\n\n return (\n <g>\n <path\n d={`M${x1},${y1} L${xMid},${yMid} L${xEnd},${yEnd}`}\n stroke=\"#637381\"\n fill=\"none\"\n strokeWidth={1}\n />\n\n <rect\n x={badgeX}\n y={yEnd - 10}\n width={badgeW}\n height={20}\n rx={4}\n fill=\"#212B36\"\n />\n\n <text\n x={badgeX + badgeW / 2}\n y={yEnd}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fontSize={11}\n fontWeight={600}\n fill=\"#FFFFFF\"\n >\n {label}\n </text>\n </g>\n );\n};\n\nexport default PieLabel;\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const ChartContainer = styled(Stack)({\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'center',\n\n '& .recharts-wrapper, & .recharts-wrapper *': {\n outline: 'none !important',\n boxShadow: 'none !important',\n },\n\n '& .recharts-wrapper': {\n overflow: 'visible !important',\n },\n\n '& .recharts-wrapper svg': {\n overflow: 'visible',\n },\n\n '& .recharts-pie-sector': {\n cursor: 'pointer',\n },\n});\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport SimpleCard from 'components/SimpleCard';\nimport { fPercent } from 'utils/formatNumber';\n\nimport { CustomTooltipProps } from './props';\n\nconst formatPercentage = (value: number) =>\n fPercent(value, {\n maximumFractionDigits: 2,\n ...(value > 0 && value < 100 ? { minimumFractionDigits: 2 } : {}),\n });\n\nconst ProfileTooltip = ({ active, payload, total }: CustomTooltipProps) => {\n if (!active || !payload?.length) return null;\n\n const entry = payload[0];\n\n return (\n <SimpleCard minWidth={{ xs: 'auto', sm: 200 }} p={1} gap={1}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {entry.name}\n </Typography>\n\n <Divider />\n\n <Stack>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack\n width={6}\n height={6}\n borderRadius=\"50%\"\n bgcolor={entry.payload.fill}\n />\n\n <Typography variant=\"body2\" noWrap>\n {entry.name}\n </Typography>\n </Stack>\n\n <Typography variant=\"body2\" noWrap>\n {formatPercentage(entry.payload.percentage)} ({entry.value})\n </Typography>\n </Stack>\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack width={6} height={6} borderRadius=\"50%\" bgcolor=\"#919EAB\" />\n\n <Typography variant=\"body2\" noWrap>\n Total\n </Typography>\n </Stack>\n\n <Typography variant=\"body2\" noWrap>\n {formatPercentage(100)} ({total})\n </Typography>\n </Stack>\n </Stack>\n </SimpleCard>\n );\n};\n\nexport default ProfileTooltip;\n","import Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Scrollbar from 'components/Scrollbar';\nimport { fPercent, fShortenNumber } from 'utils/formatNumber';\n\nimport { LegendProps } from './props';\n\nconst formatPercentage = (value: number) =>\n fPercent(value, {\n maximumFractionDigits: 2,\n ...(value > 0 && value < 100 ? { minimumFractionDigits: 2 } : {}),\n });\n\nconst ProfileLegend = ({\n items,\n hiddenKeys,\n onToggle,\n onItemClick,\n}: LegendProps) => (\n <Scrollbar sx={{ maxHeight: 280, width: '100%', pl: 0.5 }}>\n {items.map(item => (\n <Stack\n key={item.key}\n display=\"grid\"\n gridTemplateColumns=\"1fr auto auto\"\n alignItems=\"center\"\n gap={1.5}\n onClick={() => onItemClick?.(item.key)}\n sx={onItemClick ? { cursor: 'pointer' } : undefined}\n >\n <FormControlLabel\n label={item.label}\n onClick={e => e.stopPropagation()}\n control={\n <Checkbox\n size=\"small\"\n checked={!hiddenKeys.has(item.key)}\n onChange={(_, checked) => onToggle(item.key, checked)}\n sx={{ '&.Mui-checked': { color: item.color } }}\n />\n }\n sx={{\n '& .MuiFormControlLabel-label': {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n }}\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n textAlign=\"right\"\n noWrap\n >\n {formatPercentage(item.percentage)}\n </Typography>\n\n <Typography\n variant=\"subtitle2\"\n color=\"text.primary\"\n textAlign=\"right\"\n noWrap\n >\n {fShortenNumber(item.count)}\n </Typography>\n </Stack>\n ))}\n </Scrollbar>\n);\n\nexport default ProfileLegend;\n","export const SEGMENT_COLORS = [\n '#FF5630',\n '#FFAB00',\n '#22C55E',\n '#C4CDD5',\n '#8E33FF',\n '#00B8D9',\n '#3366FF',\n '#FF6C40',\n '#36B37E',\n '#B76E00',\n];\n\nexport const MAX_VISIBLE = 12;\n\nexport interface LegendItem {\n key: string;\n label: string;\n count: number;\n percentage: number;\n color: string;\n}\n\nexport interface LegendProps {\n items: LegendItem[];\n hiddenKeys: Set<string>;\n onToggle: (key: string, checked: boolean) => void;\n onItemClick?: (key: string) => void;\n}\n\nexport interface PartnersByProfileProps {\n data: LegendItem[];\n chartData: SegmentChartItem[];\n total: number;\n isEmptyData: boolean;\n onPieClick?: (_: unknown, index: number) => void;\n onLegendClick?: (key: string) => void;\n hiddenKeys: Set<string>;\n onToggle: (key: string, checked: boolean) => void;\n}\n\nexport interface SegmentChartItem {\n name: string;\n value: number;\n percentage: number;\n fill: string;\n}\n","import { memo, useCallback, useMemo, useRef, useState } from 'react';\nimport CardContent from '@mui/material/CardContent';\nimport Slider from '@mui/material/Slider';\nimport Stack from '@mui/material/Stack';\nimport { ChartCardHeader } from 'components/Analytics/ChartStyles';\nimport { ChartCard } from 'components/Analytics/ChartStyles';\nimport EmptyState from 'components/Analytics/EmptyState';\nimport Result from 'components/Result';\nimport useResponsive from 'hooks/useResponsive';\nimport { RankingItem } from 'types/partnerAnalysis';\nimport { MouseHandlerDataParam } from 'recharts/types/synchronisation/types';\n\nimport RankingChart from './Chart';\nimport RankingLegend from './Legend';\nimport { RankingProps, VisibleSeries } from './props';\n\nconst Ranking = memo(\n ({ data, config, average, onBarClick, children }: RankingProps & { children?: React.ReactNode }) => {\n const isMobile = useResponsive('down', 'sm');\n const isDownLg = useResponsive('down', 'lg');\n\n const [visibleSeries, setVisibleSeries] = useState<VisibleSeries>({\n bar: true,\n average: true,\n });\n const [visibleCount, setVisibleCount] = useState(12);\n const [activeBarIndex, setActiveBarIndex] = useState<number | null>(null);\n const [activeCoordX, setActiveCoordX] = useState<number | null>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n const observerRef = useRef<ResizeObserver | null>(null);\n\n const wrapperRefCallback = useCallback((node: HTMLDivElement | null) => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n observerRef.current = null;\n }\n if (node) {\n setContainerWidth(node.clientWidth);\n observerRef.current = new ResizeObserver(() =>\n setContainerWidth(node.clientWidth),\n );\n observerRef.current.observe(node);\n }\n }, []);\n\n const sortedData = useMemo(\n () =>\n [...data].sort(\n (a, b) => (b[config.dataKey] as number) - (a[config.dataKey] as number),\n ),\n [data, config.dataKey],\n );\n\n const totalItems = sortedData.length;\n\n const maxVisible = useMemo(() => {\n if (isMobile) return 10;\n if (isDownLg) return 25;\n return 30;\n }, [isMobile, isDownLg]);\n\n const showSlider = !isMobile && totalItems > 10;\n const sliderMax = Math.min(totalItems, maxVisible);\n\n const clampedCount = Math.min(\n isMobile ? totalItems : visibleCount,\n totalItems,\n maxVisible,\n );\n\n const displayData = useMemo(\n () => sortedData.slice(0, clampedCount),\n [sortedData, clampedCount],\n );\n\n const shouldRotateLabels = useMemo(() => {\n if (containerWidth === 0 || displayData.length === 0) return false;\n const slotPerBar = (containerWidth - 60) / displayData.length;\n return slotPerBar < 80;\n }, [containerWidth, displayData.length]);\n\n const handleToggleSerie = useCallback((serie: keyof VisibleSeries) => {\n setVisibleSeries(prev => ({ ...prev, [serie]: !prev[serie] }));\n }, []);\n\n const handleChartMouseMove = useCallback((state: MouseHandlerDataParam) => {\n if (state?.activeTooltipIndex != null) {\n setActiveBarIndex(Number(state.activeTooltipIndex));\n }\n if (state?.activeCoordinate?.x != null) {\n setActiveCoordX(state.activeCoordinate.x);\n }\n }, []);\n\n const handleChartMouseLeave = useCallback(() => {\n setActiveBarIndex(null);\n setActiveCoordX(null);\n }, []);\n\n const handleBarClick = useCallback(\n (item: RankingItem) => {\n if (!item) return;\n onBarClick?.(item);\n },\n [onBarClick],\n );\n\n const handleSliderChange = useCallback(\n (_: Event, val: number | number[]) => {\n setVisibleCount(val as number);\n },\n [],\n );\n\n return (\n <ChartCard>\n <ChartCardHeader\n title=\"Ranking de clientes\"\n action={children}\n />\n\n <CardContent>\n <Result isEmpty={displayData.length === 0} empty={<EmptyState />}>\n <Stack alignItems=\"center\" gap={1.5}>\n <Stack width=\"100%\" ref={wrapperRefCallback}>\n <RankingChart\n data={displayData}\n config={config}\n visibleSeries={visibleSeries}\n average={average}\n activeBarIndex={activeBarIndex}\n activeCoordX={activeCoordX}\n shouldRotateLabels={shouldRotateLabels}\n onMouseMove={handleChartMouseMove}\n onMouseLeave={handleChartMouseLeave}\n onBarClick={handleBarClick}\n />\n </Stack>\n\n <RankingLegend\n visibleSeries={visibleSeries}\n config={config}\n onToggleSerie={handleToggleSerie}\n />\n\n {showSlider && (\n <Slider\n size=\"small\"\n min={10}\n max={sliderMax}\n value={clampedCount}\n valueLabelDisplay=\"auto\"\n onChange={handleSliderChange}\n />\n )}\n </Stack>\n </Result>\n </CardContent>\n </ChartCard>\n );\n },\n);\n\nRanking.displayName = 'Ranking';\n\nexport default Ranking;\n","import { useCallback, useMemo } from 'react';\nimport {\n Bar,\n CartesianGrid,\n ComposedChart,\n ReferenceLine,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport { BarRectangleItem } from 'recharts/types/cartesian/Bar';\n\nimport { ChartWrapper } from 'components/Analytics/ChartStyles';\nimport ReferenceCircle from 'components/Analytics/ReferenceCircle';\nimport RotatedTick from 'components/Analytics/RotatedTick';\nimport { RotatedTickProps } from 'components/Analytics/RotatedTick/props';\nimport WrappedTick from 'components/Analytics/WrappedTick';\nimport { RankingItem } from 'types/partnerAnalysis';\nimport { fShortenNumber } from 'utils/formatNumber';\n\nimport { AVERAGE_COLOR } from '../props';\n\nimport BarBackground from './BarBackground';\nimport { ChartProps } from './props';\nimport RankingTooltip from './Tooltip';\n\nconst BAR_SIZE = 48;\nconst BAR_SLOT = BAR_SIZE / 0.8;\n\nconst RankingChart = ({\n data,\n config,\n visibleSeries,\n average,\n activeBarIndex,\n activeCoordX,\n shouldRotateLabels,\n onMouseMove,\n onMouseLeave,\n onBarClick,\n}: ChartProps) => {\n const yDomain = useMemo((): [number, number] => {\n if (!data.length) return [0, 1];\n const values = data.map(item => (item[config.dataKey] as number) || 0);\n if (visibleSeries.average && average > 0) values.push(average);\n const max = Math.max(...values);\n return [0, max > 0 ? max * 1.15 : 1];\n }, [data, config.dataKey, average, visibleSeries.average]);\n\n const yTicks = useMemo(() => {\n const [, max] = yDomain;\n const step = max / 6;\n return [\n ...new Set(Array.from({ length: 7 }, (_, i) => Math.round(step * i))),\n ];\n }, [yDomain]);\n\n const barLabel = useMemo(\n () =>\n shouldRotateLabels\n ? false\n : {\n position: 'top' as const,\n fontSize: 11,\n fill: '#212B36',\n formatter: (value: unknown) => config.formatLabel(Number(value)),\n },\n [shouldRotateLabels, config],\n );\n\n const tooltipContent = useMemo(\n () => <RankingTooltip config={config} average={average} />,\n [config, average],\n );\n\n const renderXAxisTick = useCallback(\n (tickProps: Record<string, unknown>) => {\n if (shouldRotateLabels) {\n return <RotatedTick {...(tickProps as RotatedTickProps)} />;\n }\n return (\n <WrappedTick\n x={tickProps.x as number}\n y={tickProps.y as number}\n payload={tickProps.payload as { value: string }}\n slotWidth={BAR_SLOT}\n />\n );\n },\n [shouldRotateLabels],\n );\n\n const handleBarClick = useCallback(\n (entry: BarRectangleItem) => {\n if (!entry) return;\n onBarClick(entry as unknown as RankingItem);\n },\n [onBarClick],\n );\n\n return (\n <ChartWrapper>\n <ResponsiveContainer width=\"100%\" height={350}>\n <ComposedChart\n data={data}\n margin={{ top: 20, right: 10, bottom: 0, left: 20 }}\n barCategoryGap=\"20%\"\n onMouseMove={onMouseMove}\n onMouseLeave={onMouseLeave}\n >\n <CartesianGrid\n vertical={false}\n strokeDasharray=\"3 3\"\n stroke=\"#F4F6F8\"\n />\n\n <XAxis\n dataKey=\"partner_name\"\n axisLine={false}\n tickLine={false}\n interval={0}\n height={shouldRotateLabels ? 70 : 50}\n tick={renderXAxisTick}\n />\n\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fontSize: 12, fill: '#637381' }}\n tickFormatter={(v: number) => fShortenNumber(v)}\n domain={yDomain}\n ticks={yTicks}\n />\n\n <Tooltip content={tooltipContent} />\n\n {visibleSeries.average && average > 0 && (\n <ReferenceLine\n y={average}\n stroke={AVERAGE_COLOR}\n strokeDasharray=\"8 4\"\n strokeWidth={2}\n ifOverflow=\"extendDomain\"\n />\n )}\n\n {visibleSeries.average && average > 0 && (\n <ReferenceLine\n y={average}\n stroke=\"none\"\n ifOverflow=\"extendDomain\"\n label={\n <ReferenceCircle\n activeCoordX={activeCoordX}\n referenceCircleColor={AVERAGE_COLOR}\n activeIndex={activeBarIndex}\n />\n }\n />\n )}\n\n {visibleSeries.bar && (\n <Bar\n dataKey={config.dataKey}\n name={config.barName}\n fill={config.color}\n maxBarSize={48}\n isAnimationActive={false}\n radius={[4, 4, 0, 0]}\n cursor=\"pointer\"\n onClick={handleBarClick}\n background={\n <BarBackground\n activeBarIndex={activeBarIndex}\n color={config.color}\n data={data}\n onBarClick={onBarClick}\n />\n }\n label={barLabel}\n />\n )}\n </ComposedChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n};\n\nexport default RankingChart;\n","import { RankingItem, RankingType } from 'types/partnerAnalysis';\nimport { fCurrencyBRL, fShortenNumber } from 'utils/formatNumber';\n\nexport const AVERAGE_COLOR = '#212B36';\n\nexport interface RankingTypeConfig {\n label: string;\n color: string;\n dataKey: keyof RankingItem;\n barName: string;\n averageName: string;\n averageDataKey: string;\n formatLabel: (value: number) => string;\n formatYAxis: (value: number) => string;\n floorAverage?: boolean;\n}\n\nexport interface VisibleSeries {\n bar: boolean;\n average: boolean;\n}\n\nexport interface LegendProps {\n visibleSeries: VisibleSeries;\n config: RankingTypeConfig;\n onToggleSerie: (serie: keyof VisibleSeries) => void;\n}\n\nexport interface RankingProps {\n data: RankingItem[];\n config: RankingTypeConfig;\n average: number;\n isFetching?: boolean;\n onBarClick?: (item: RankingItem) => void;\n}\n\nexport const RANKING_CONFIG: Record<RankingType, RankingTypeConfig> = {\n [RankingType.SALE_TOTAL_VALUE]: {\n label: 'Por valor total',\n color: '#22C55E',\n dataKey: 'total_sale_value',\n barName: 'Valor total por cliente',\n averageName: 'Média total de valor por cliente',\n averageDataKey: 'average_total_value',\n formatLabel: fCurrencyBRL,\n formatYAxis: fShortenNumber,\n },\n [RankingType.SALE_COUNT]: {\n label: 'Por pedidos',\n color: '#C684FF',\n dataKey: 'total_value_by_customer',\n barName: 'Quantidade de pedidos',\n averageName: 'Quantidade total de pedidos',\n averageDataKey: 'average_sale_count',\n formatLabel: String,\n formatYAxis: fShortenNumber,\n floorAverage: true,\n },\n [RankingType.SALE_AVERAGE_VALUE]: {\n label: 'Por ticket médio',\n color: '#00B8D9',\n dataKey: 'total_sale_value',\n barName: 'Ticket médio por cliente',\n averageName: 'Média do ticket médio',\n averageDataKey: 'average_ticket',\n formatLabel: fCurrencyBRL,\n formatYAxis: fShortenNumber,\n },\n};\n","import { BarBackgroundProps } from './props';\n\nconst BarBackground = ({\n x = 0,\n y = 0,\n width = 0,\n height = 0,\n index = 0,\n activeBarIndex,\n color,\n data,\n onBarClick,\n}: BarBackgroundProps) => {\n if (activeBarIndex !== index) return null;\n\n return (\n <rect\n x={x - 6}\n y={y}\n width={width + 12}\n height={height + 6}\n fill={color}\n opacity={0.16}\n rx={6}\n style={{ cursor: 'pointer' }}\n onClick={() => onBarClick(data[index])}\n />\n );\n};\n\nexport default BarBackground;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport SimpleCard from 'components/SimpleCard';\n\nimport { AVERAGE_COLOR } from '../props';\n\nimport { CustomTooltipProps } from './props';\n\nconst RankingTooltip = ({\n active,\n payload,\n label,\n config,\n average,\n}: CustomTooltipProps) => {\n if (!active || !payload?.length) return null;\n\n return (\n <SimpleCard minWidth={{ xs: 'auto', sm: 200 }} p={1} gap={1}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {label}\n </Typography>\n\n <Divider />\n\n <Stack>\n {payload.map((entry, index) => (\n <Stack\n key={entry.dataKey}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n data-testid={`tooltip-item-${index}`}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack\n width={6}\n height={6}\n borderRadius=\"50%\"\n bgcolor={entry.color}\n />\n\n <Typography variant=\"body2\" noWrap>\n {config.barName}\n </Typography>\n </Stack>\n\n <Typography variant=\"body2\">\n {config.formatLabel(entry.value)}\n </Typography>\n </Stack>\n ))}\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack\n width={6}\n height={6}\n borderRadius=\"50%\"\n bgcolor={AVERAGE_COLOR}\n />\n\n <Typography variant=\"body2\" noWrap>\n {config.averageName}\n </Typography>\n </Stack>\n\n <Typography variant=\"body2\">{config.formatLabel(average)}</Typography>\n </Stack>\n </Stack>\n </SimpleCard>\n );\n};\n\nexport default RankingTooltip;\n","import Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\n\nimport { AVERAGE_COLOR, LegendProps } from './props';\n\nconst RankingLegend = ({\n visibleSeries,\n config,\n onToggleSerie,\n}: LegendProps) => (\n <Stack direction=\"row\" justifyContent=\"center\" flexWrap=\"wrap\" gap={1}>\n <FormControlLabel\n control={\n <Checkbox\n checked={visibleSeries.bar}\n onChange={() => onToggleSerie('bar')}\n sx={{ '&.Mui-checked': { color: config.color } }}\n />\n }\n label={config.barName}\n />\n\n <FormControlLabel\n control={\n <Checkbox\n checked={visibleSeries.average}\n onChange={() => onToggleSerie('average')}\n sx={{ '&.Mui-checked': { color: AVERAGE_COLOR } }}\n />\n }\n label={config.averageName}\n />\n </Stack>\n);\n\nexport default RankingLegend;\n","import MuiButton from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\ninterface ItemButtonProps {\n active?: boolean;\n}\n\nexport const ItemButton = styled(MuiButton, {\n shouldForwardProp: prop => prop !== 'active',\n})<ItemButtonProps>(({ theme, active }) => ({\n justifyContent: 'flex-start',\n\n color: active ? theme.palette.primary.main : theme.palette.text.secondary,\n fontWeight: active ? 800 : 400,\n\n '&:hover': {\n background: theme.palette.action.hover,\n },\n}));\n","import { useCallback, useMemo, useRef, useState } from 'react';\nimport CardContent from '@mui/material/CardContent';\nimport Slider from '@mui/material/Slider';\nimport Stack from '@mui/material/Stack';\nimport { ChartCard, ChartCardHeader } from 'components/Analytics/ChartStyles';\nimport EmptyState from 'components/Analytics/EmptyState';\nimport Result from 'components/Result';\nimport useResponsive from 'hooks/useResponsive';\nimport { MouseHandlerDataParam } from 'recharts/types/synchronisation/types';\n\nimport SellerPortfolioChart from './Chart';\nimport SellerPortfolioLegend from './Legend';\nimport { ChartDataRow, SellerPortfolioProps } from './props';\n\nconst SellerPortfolio = ({\n data,\n config,\n onBarClick,\n children,\n}: SellerPortfolioProps) => {\n const isMobile = useResponsive('down', 'sm');\n const isDownLg = useResponsive('down', 'lg');\n\n const [hiddenKeys, setHiddenKeys] = useState<Set<string>>(new Set());\n const [visibleCount, setVisibleCount] = useState(12);\n const [activeBarIndex, setActiveBarIndex] = useState<number | null>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n const observerRef = useRef<ResizeObserver | null>(null);\n\n const sortedData = useMemo(\n () => [...data].sort((a, b) => b._total - a._total),\n [data],\n );\n\n const maxVisible = useMemo(() => {\n if (isMobile) return 10;\n if (isDownLg) return 25;\n return 30;\n }, [isDownLg, isMobile]);\n\n const totalItems = sortedData.length;\n const showSlider = !isMobile && totalItems > 10;\n const sliderMax = Math.min(totalItems, maxVisible);\n\n const clampedCount = Math.min(\n isMobile ? totalItems : visibleCount,\n totalItems,\n maxVisible,\n );\n\n const displayData = useMemo(\n () => sortedData.slice(0, clampedCount),\n [sortedData, clampedCount],\n );\n\n const shouldRotateLabels = useMemo(() => {\n if (containerWidth === 0 || displayData.length === 0) return false;\n const slotPerBar = (containerWidth - 60) / displayData.length;\n return slotPerBar < 80;\n }, [containerWidth, displayData.length]);\n\n const visibleSeries = useMemo(\n () => config.series.filter(s => !hiddenKeys.has(s.dataKey)),\n [config.series, hiddenKeys],\n );\n\n const displayDataWithTotals = useMemo(\n () =>\n displayData.map(item => ({\n ...item,\n _visibleTotal: visibleSeries.reduce(\n (sum, s) => sum + (Number(item[s.dataKey]) || 0),\n 0,\n ),\n })),\n [displayData, visibleSeries],\n );\n\n const wrapperRefCallback = useCallback((node: HTMLDivElement | null) => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n observerRef.current = null;\n }\n if (node) {\n setContainerWidth(node.clientWidth);\n observerRef.current = new ResizeObserver(() =>\n setContainerWidth(node.clientWidth),\n );\n observerRef.current.observe(node);\n }\n }, []);\n\n const handleToggleSerie = useCallback((dataKey: string) => {\n setHiddenKeys(prev => {\n const next = new Set(prev);\n if (next.has(dataKey)) next.delete(dataKey);\n else next.add(dataKey);\n return next;\n });\n }, []);\n\n const handleMouseMove = useCallback((state: MouseHandlerDataParam) => {\n if (state?.activeTooltipIndex != null) {\n setActiveBarIndex(Number(state.activeTooltipIndex));\n }\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setActiveBarIndex(null);\n }, []);\n\n const handleBarClick = useCallback(\n (sellerId: string, sellerName: string) => {\n onBarClick?.(sellerId, sellerName);\n },\n [onBarClick],\n );\n\n const handleSliderChange = useCallback(\n (_: Event, val: number | number[]) => {\n setVisibleCount(val as number);\n },\n [],\n );\n\n return (\n <ChartCard>\n <ChartCardHeader\n title=\"Carteira de clientes do vendedor\"\n action={children}\n />\n\n <CardContent>\n <Result isEmpty={displayData.length === 0} empty={<EmptyState />}>\n <Stack alignItems=\"center\" gap={1.5}>\n <Stack width=\"100%\" ref={wrapperRefCallback}>\n <SellerPortfolioChart\n data={displayDataWithTotals}\n config={config}\n visibleSeries={visibleSeries}\n hiddenKeys={hiddenKeys}\n activeBarIndex={activeBarIndex}\n shouldRotateLabels={shouldRotateLabels}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onBarClick={handleBarClick}\n />\n </Stack>\n\n <SellerPortfolioLegend\n series={config.series}\n hiddenKeys={hiddenKeys}\n onToggleSerie={handleToggleSerie}\n />\n\n {showSlider && (\n <Slider\n size=\"small\"\n min={10}\n max={sliderMax}\n value={clampedCount}\n valueLabelDisplay=\"auto\"\n onChange={handleSliderChange}\n />\n )}\n </Stack>\n </Result>\n </CardContent>\n </ChartCard>\n );\n};\n\nexport default SellerPortfolio;\n","import { type ReactElement, useCallback, useMemo } from 'react';\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport { BarRectangleItem } from 'recharts/types/cartesian/Bar';\n\nimport { ChartWrapper } from 'components/Analytics/ChartStyles';\nimport RotatedTick from 'components/Analytics/RotatedTick';\nimport { RotatedTickProps } from 'components/Analytics/RotatedTick/props';\nimport WrappedTick from 'components/Analytics/WrappedTick';\nimport { fShortenNumber } from 'utils/formatNumber';\n\nimport BarBackground from './BarBackground';\nimport { ChartProps } from './props';\nimport StackedTooltip from './Tooltip';\n\nconst BAR_SIZE = 48;\nconst BAR_SLOT = BAR_SIZE / 0.8;\n\nconst SellerPortfolioChart = ({\n data,\n config,\n visibleSeries,\n hiddenKeys,\n activeBarIndex,\n shouldRotateLabels,\n onMouseMove,\n onMouseLeave,\n onBarClick,\n}: ChartProps) => {\n const yDomain = useMemo((): [number, number] => {\n if (!data.length) return [0, 1];\n const max = Math.max(...data.map(item => item._visibleTotal));\n return [0, max > 0 ? max * 1.15 : 1];\n }, [data]);\n\n const yTicks = useMemo(() => {\n const [, max] = yDomain;\n const step = max / 6;\n return [\n ...new Set(Array.from({ length: 7 }, (_, i) => Math.round(step * i))),\n ];\n }, [yDomain]);\n\n const tooltipContent = useMemo(\n () => <StackedTooltip config={config} />,\n [config],\n );\n\n const renderXAxisTick = useCallback(\n (tickProps: Record<string, unknown>) => {\n if (shouldRotateLabels) {\n return <RotatedTick {...(tickProps as RotatedTickProps)} />;\n }\n return (\n <WrappedTick\n x={tickProps.x as number}\n y={tickProps.y as number}\n payload={tickProps.payload as { value: string }}\n slotWidth={BAR_SLOT}\n />\n );\n },\n [shouldRotateLabels],\n );\n\n const handleBarClick = useCallback(\n (entry: BarRectangleItem) => {\n if (!entry) return;\n const row = entry.payload as Record<string, unknown> | undefined;\n if (!row) return;\n onBarClick(String(row.seller_external_id), String(row.seller_name));\n },\n [onBarClick],\n );\n\n const renderLabel = useCallback(\n (props: Record<string, unknown>) => {\n const { x, y, width, index } = props as {\n x: number;\n y: number;\n width: number;\n index: number;\n };\n const total = data[index]?._visibleTotal;\n if (!total) return <></>;\n return (\n <text\n x={(x as number) + (width as number) / 2}\n y={(y as number) - 6}\n textAnchor=\"middle\"\n fontSize={11}\n fill=\"#212B36\"\n >\n {total}\n </text>\n );\n },\n [data],\n );\n\n return (\n <ChartWrapper>\n <ResponsiveContainer width=\"100%\" height={350}>\n <BarChart\n data={data}\n margin={{ top: 20, right: 10, bottom: 0, left: 20 }}\n barCategoryGap=\"20%\"\n onMouseMove={onMouseMove}\n onMouseLeave={onMouseLeave}\n >\n <CartesianGrid\n vertical={false}\n strokeDasharray=\"3 3\"\n stroke=\"#F4F6F8\"\n />\n\n <XAxis\n dataKey=\"seller_name\"\n axisLine={false}\n tickLine={false}\n interval={0}\n height={shouldRotateLabels ? 70 : 50}\n tick={renderXAxisTick}\n />\n\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fontSize: 12, fill: '#637381' }}\n tickFormatter={(v: number) => fShortenNumber(v)}\n domain={yDomain}\n ticks={yTicks}\n />\n\n <Tooltip content={tooltipContent} cursor={false} />\n\n {config.series.map(s => {\n const visible = !hiddenKeys.has(s.dataKey);\n const firstVisible = visibleSeries[0];\n const lastVisible = visibleSeries[visibleSeries.length - 1];\n const isFirst = visible && s.dataKey === firstVisible?.dataKey;\n const isLast = visible && s.dataKey === lastVisible?.dataKey;\n\n return (\n <Bar\n key={s.dataKey}\n dataKey={visible ? s.dataKey : `_hidden_${s.dataKey}`}\n name={s.name}\n fill={s.color}\n stackId=\"stack\"\n maxBarSize={48}\n isAnimationActive={false}\n cursor=\"pointer\"\n hide={!visible}\n onClick={handleBarClick}\n {...(isFirst && {\n background: (\n <BarBackground\n activeBarIndex={activeBarIndex}\n data={data}\n onBarClick={onBarClick}\n />\n ),\n })}\n {...(isLast && { radius: [4, 4, 0, 0] as [number, number, number, number] })}\n {...(isLast &&\n !shouldRotateLabels && {\n label: {\n position: 'top' as const,\n fontSize: 11,\n fill: '#212B36',\n content: renderLabel as unknown as ReactElement,\n },\n })}\n />\n );\n })}\n </BarChart>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n};\n\nexport default SellerPortfolioChart;\n","import { BarBackgroundProps } from './props';\n\nconst BarBackground = ({\n x = 0,\n y = 0,\n width = 0,\n height = 0,\n index = 0,\n activeBarIndex,\n data,\n onBarClick,\n}: BarBackgroundProps) => {\n if (activeBarIndex !== index) return null;\n\n const entry = data[index];\n\n return (\n <rect\n x={x - 6}\n y={y}\n width={width + 12}\n height={height + 6}\n fill=\"#919EAB\"\n opacity={0.16}\n rx={6}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (!entry) return;\n onBarClick(\n String(entry.seller_external_id),\n String(entry.seller_name),\n );\n }}\n />\n );\n};\n\nexport default BarBackground;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport SimpleCard from 'components/SimpleCard';\nimport { fPercent } from 'utils/formatNumber';\n\nimport { StackedTooltipProps, TooltipPayloadEntry } from './props';\n\nconst formatPct = (value: number) =>\n fPercent(value, {\n maximumFractionDigits: 2,\n ...(value > 0 && value < 100 ? { minimumFractionDigits: 2 } : {}),\n });\n\nconst StackedTooltip = ({\n active,\n payload,\n label,\n config,\n}: StackedTooltipProps) => {\n if (!active || !payload?.length) return null;\n\n const visibleEntries = payload.filter(\n entry => entry.value != null && entry.value > 0,\n );\n\n const total = visibleEntries.reduce(\n (sum: number, entry: TooltipPayloadEntry) => sum + entry.value,\n 0,\n );\n\n return (\n <SimpleCard minWidth={{ xs: 'auto', sm: 200 }} p={1} gap={1}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {label}\n </Typography>\n\n <Divider />\n\n <Stack>\n {visibleEntries.map((entry: TooltipPayloadEntry) => {\n const series = config.series.find(s => s.dataKey === entry.dataKey);\n const pct = total > 0 ? formatPct((entry.value / total) * 100) : '0%';\n\n return (\n <Stack\n key={entry.dataKey}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack\n width={6}\n height={6}\n borderRadius=\"50%\"\n bgcolor={entry.color}\n />\n\n <Typography variant=\"body2\" noWrap>\n {series?.name ?? entry.dataKey}\n </Typography>\n </Stack>\n\n <Typography variant=\"body2\" noWrap>\n {pct} ({entry.value})\n </Typography>\n </Stack>\n );\n })}\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack width={6} height={6} borderRadius=\"50%\" bgcolor=\"#919EAB\" />\n\n <Typography variant=\"body2\" noWrap>\n Total\n </Typography>\n </Stack>\n\n <Typography variant=\"body2\" noWrap>\n {formatPct(100)} ({total})\n </Typography>\n </Stack>\n </Stack>\n </SimpleCard>\n );\n};\n\nexport default StackedTooltip;\n","import Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\n\nimport { LegendProps } from './props';\n\nconst SellerPortfolioLegend = ({\n series,\n hiddenKeys,\n onToggleSerie,\n}: LegendProps) => (\n <Stack direction=\"row\" justifyContent=\"center\" flexWrap=\"wrap\" gap={1}>\n {series.map(s => (\n <FormControlLabel\n key={s.dataKey}\n control={\n <Checkbox\n checked={!hiddenKeys.has(s.dataKey)}\n onChange={() => onToggleSerie(s.dataKey)}\n sx={{ '&.Mui-checked': { color: s.color } }}\n />\n }\n label={s.name}\n />\n ))}\n </Stack>\n);\n\nexport default SellerPortfolioLegend;\n","import { AbcCurve, SellerPortfolioQueryType, Status } from 'types/partnerAnalysis';\nimport { fShortenNumber } from 'utils/formatNumber';\n\nexport interface StackedBarSeries {\n dataKey: string;\n name: string;\n color: string;\n}\n\nexport interface SellerPortfolioTypeConfig {\n label: string;\n series: StackedBarSeries[];\n formatYAxis: (value: number) => string;\n}\n\nexport interface ChartDataRow extends Record<string, string | number> {\n seller_name: string;\n seller_external_id: string;\n _total: number;\n}\n\nexport interface DisplayDataRow extends ChartDataRow {\n _visibleTotal: number;\n}\n\nexport interface SelectedSeller {\n id: string;\n name: string;\n}\n\nexport interface LegendProps {\n series: StackedBarSeries[];\n hiddenKeys: Set<string>;\n onToggleSerie: (dataKey: string) => void;\n}\n\nexport interface SellerPortfolioProps {\n data: ChartDataRow[];\n config: SellerPortfolioTypeConfig;\n onBarClick?: (sellerId: string, sellerName: string) => void;\n children?: React.ReactNode;\n}\n\nconst CLASSIFICATION_SERIES: StackedBarSeries[] = [\n { dataKey: Status.ACTIVE, name: 'Ativos', color: '#22C55E' },\n { dataKey: Status.AT_RISK, name: 'Em risco', color: '#FFAB00' },\n { dataKey: Status.INACTIVE, name: 'Inativos', color: '#FF5630' },\n { dataKey: Status.NEW_CLIENT, name: 'Novos clientes', color: '#8E33FF' },\n { dataKey: Status.PROSPECT, name: 'Prospects', color: '#00B8D9' },\n { dataKey: Status.LOST, name: 'Perdidos', color: '#C4CDD5' },\n];\n\nconst ABC_CURVE_SERIES: StackedBarSeries[] = [\n { dataKey: AbcCurve.A, name: 'Curva A', color: '#22C55E' },\n { dataKey: AbcCurve.B, name: 'Curva B', color: '#FFAB00' },\n { dataKey: AbcCurve.C, name: 'Curva C', color: '#FF5630' },\n];\n\nexport const SELLER_PORTFOLIO_CONFIG: Record<\n SellerPortfolioQueryType,\n SellerPortfolioTypeConfig\n> = {\n [SellerPortfolioQueryType.CLASSIFICATION]: {\n label: 'Por classificação',\n series: CLASSIFICATION_SERIES,\n formatYAxis: fShortenNumber,\n },\n [SellerPortfolioQueryType.ABC_CURVE]: {\n label: 'Por curva ABC',\n series: ABC_CURVE_SERIES,\n formatYAxis: fShortenNumber,\n },\n};\n"]}
@@ -0,0 +1,117 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _mui_material_Checkbox from '@mui/material/Checkbox';
3
+ import * as _mui_material_Stack from '@mui/material/Stack';
4
+ import * as _mui_material_CardHeader from '@mui/material/CardHeader';
5
+ import * as _emotion_styled from '@emotion/styled';
6
+ import * as _mui_system from '@mui/system';
7
+ import * as _mui_material_styles from '@mui/material/styles';
8
+ import * as react from 'react';
9
+ import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
10
+ import * as _mui_material_Card from '@mui/material/Card';
11
+ import { ExportFormat, FilterDateState } from '../../types/analytics.js';
12
+
13
+ interface AiSummaryProps {
14
+ brief?: string;
15
+ detail?: string;
16
+ isLoading: boolean;
17
+ formatContent?: (text: string) => string;
18
+ }
19
+
20
+ declare const AiSummary: ({ brief, detail, isLoading, formatContent, }: AiSummaryProps) => react_jsx_runtime.JSX.Element | null;
21
+
22
+ declare const ChartCard: _emotion_styled.StyledComponent<_mui_material_Card.CardOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
23
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
24
+ }, "children" | "className" | "style" | "classes" | "elevation" | "square" | "sx" | "variant" | "raised"> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
25
+ declare const ChartCardHeader: _emotion_styled.StyledComponent<_mui_material_CardHeader.CardHeaderOwnProps<"span", "span"> & _mui_material_OverridableComponent.CommonProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
26
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
27
+ }, "className" | "style" | "classes" | "sx" | "title" | "action" | "avatar" | "disableTypography" | "subheader" | "subheaderTypographyProps" | "titleTypographyProps"> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
28
+ declare const ChartWrapper: _emotion_styled.StyledComponent<_mui_material_Stack.StackOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
29
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
30
+ }, keyof _mui_material_OverridableComponent.CommonProps | keyof _mui_material_Stack.StackOwnProps> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
31
+ declare const TooltipContainer: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material_styles.Theme> & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
32
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
33
+ }, keyof _mui_system.BoxOwnProps<_mui_material_styles.Theme>> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
34
+ declare const TooltipDivider: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material_styles.Theme> & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
35
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
36
+ }, keyof _mui_system.BoxOwnProps<_mui_material_styles.Theme>> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
37
+ declare const TooltipDot: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material_styles.Theme> & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
38
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
39
+ }, keyof _mui_system.BoxOwnProps<_mui_material_styles.Theme>> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme> & {
40
+ dotColor: string;
41
+ }, {}, {}>;
42
+ declare const LegendContainer: _emotion_styled.StyledComponent<_mui_material_Stack.StackOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
43
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
44
+ }, keyof _mui_material_OverridableComponent.CommonProps | keyof _mui_material_Stack.StackOwnProps> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
45
+ declare const LegendItem: _emotion_styled.StyledComponent<_mui_material_Stack.StackOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
46
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
47
+ }, keyof _mui_material_OverridableComponent.CommonProps | keyof _mui_material_Stack.StackOwnProps> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
48
+ declare const ColoredCheckbox: _emotion_styled.StyledComponent<_mui_material_Checkbox.CheckboxProps & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme> & {
49
+ checkboxColor: string;
50
+ }, {}, {}>;
51
+ declare const SummaryStack: _emotion_styled.StyledComponent<_mui_material_Stack.StackOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
52
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
53
+ }, keyof _mui_material_OverridableComponent.CommonProps | keyof _mui_material_Stack.StackOwnProps> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
54
+ declare const SummaryDivider: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material_styles.Theme> & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
55
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
56
+ }, keyof _mui_system.BoxOwnProps<_mui_material_styles.Theme>> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
57
+ declare const EmptyStateContainer: _emotion_styled.StyledComponent<_mui_material_Stack.StackOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
58
+ ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
59
+ }, keyof _mui_material_OverridableComponent.CommonProps | keyof _mui_material_Stack.StackOwnProps> & _mui_system.MUIStyledCommonProps<_mui_material_styles.Theme>, {}, {}>;
60
+
61
+ declare const EmptyState: () => react_jsx_runtime.JSX.Element;
62
+
63
+ interface ExportButtonProps {
64
+ onExport: (format: ExportFormat) => void;
65
+ isExporting?: boolean;
66
+ }
67
+
68
+ declare const ExportButton: ({ onExport, isExporting }: ExportButtonProps) => react_jsx_runtime.JSX.Element;
69
+
70
+ interface FilterDateProps {
71
+ value: FilterDateState;
72
+ onSave: (value: FilterDateState) => void;
73
+ onClose: () => void;
74
+ }
75
+
76
+ declare const FilterDate: ({ value, onSave, onClose }: FilterDateProps) => react_jsx_runtime.JSX.Element;
77
+
78
+ interface ReferenceCircleProps {
79
+ viewBox?: {
80
+ x: number;
81
+ y: number;
82
+ width: number;
83
+ height: number;
84
+ };
85
+ offset?: number;
86
+ activeCoordX?: number | null;
87
+ referenceCircleColor?: string;
88
+ activeIndex: number | null;
89
+ }
90
+
91
+ declare const ReferenceCircle: (props: ReferenceCircleProps) => react_jsx_runtime.JSX.Element | null;
92
+
93
+ interface RotatedTickProps {
94
+ x?: number;
95
+ y?: number;
96
+ payload?: {
97
+ value: string;
98
+ };
99
+ tickFormatter?: (value: string, index: number) => string;
100
+ index?: number;
101
+ maxChars?: number;
102
+ }
103
+
104
+ declare const RotatedTick: (props: RotatedTickProps) => react_jsx_runtime.JSX.Element | null;
105
+
106
+ interface WrappedTickProps {
107
+ x?: number;
108
+ y?: number;
109
+ payload?: {
110
+ value: string;
111
+ };
112
+ slotWidth?: number;
113
+ }
114
+
115
+ declare const WrappedTick: ({ x, y, payload, slotWidth }: WrappedTickProps) => react_jsx_runtime.JSX.Element | null;
116
+
117
+ export { AiSummary, AiSummaryProps, ChartCard, ChartCardHeader, ChartWrapper, ColoredCheckbox, EmptyState, EmptyStateContainer, ExportButton, ExportButtonProps, FilterDate, FilterDateProps, LegendContainer, LegendItem, ReferenceCircle, RotatedTick, SummaryDivider, SummaryStack, TooltipContainer, TooltipDivider, TooltipDot, WrappedTick };
@@ -0,0 +1,47 @@
1
+ import { b as b$1, e, f, a as a$b } from '../../chunk-SP5U3DJP.js';
2
+ import { c as c$1, d } from '../../chunk-ANEPP6QT.js';
3
+ export { a as ReferenceCircle, b as WrappedTick } from '../../chunk-XL6SZZGI.js';
4
+ export { a as ChartCard, b as ChartCardHeader, c as ChartWrapper, i as ColoredCheckbox, m as EmptyState, l as EmptyStateContainer, g as LegendContainer, h as LegendItem, n as RotatedTick, k as SummaryDivider, j as SummaryStack, d as TooltipContainer, e as TooltipDivider, f as TooltipDot } from '../../chunk-XQZPUMVQ.js';
5
+ import { a as a$7 } from '../../chunk-XAPSXJZO.js';
6
+ import { a as a$8 } from '../../chunk-J7RPKCIN.js';
7
+ import { a as a$9 } from '../../chunk-DRGARBKB.js';
8
+ import { a as a$c } from '../../chunk-RUABKHIV.js';
9
+ import { a as a$1 } from '../../chunk-J5B2YJSR.js';
10
+ import { a } from '../../chunk-CBW32OUQ.js';
11
+ import { a as a$3 } from '../../chunk-4F2NKGF6.js';
12
+ import { c } from '../../chunk-VGTQYKAC.js';
13
+ import '../../chunk-F65ZXAGV.js';
14
+ import { a as a$a } from '../../chunk-6N456D64.js';
15
+ import { a as a$6 } from '../../chunk-CO2KQFUN.js';
16
+ import { a as a$4 } from '../../chunk-2GTD4JW2.js';
17
+ import '../../chunk-PBLSVXV5.js';
18
+ import { a as a$2 } from '../../chunk-E3R7W7GK.js';
19
+ import { a as a$5 } from '../../chunk-LQRRMVFN.js';
20
+ import { b } from '../../chunk-2ZJUGM2S.js';
21
+ import Wt from '@mui/material/AlertTitle';
22
+ import st from '@mui/material/Button';
23
+ import tt from '@mui/material/Typography';
24
+ import I from '@mui/material/Stack';
25
+ import Bt from '@mui/material/Alert';
26
+ import { keyframes, styled, alpha } from '@mui/material/styles';
27
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
28
+ import { memo, useState, useCallback } from 'react';
29
+ import Xt from '@mui/lab/LoadingButton';
30
+ import { useForm } from 'react-hook-form';
31
+ import ao from '@mui/material/Divider';
32
+ import io from '@mui/material/FormControlLabel';
33
+ import no from '@mui/material/Radio';
34
+ import lo from '@mui/material/RadioGroup';
35
+ import P from 'dayjs';
36
+
37
+ var Ot=keyframes`
38
+ 0% {
39
+ background-position: 0% 50%;
40
+ }
41
+ 100% {
42
+ background-position: 200% 50%;
43
+ }
44
+ `,F=styled(Bt)(({theme:t})=>{let r=t.palette.primary.main,i=alpha(r,.1);return {position:"relative",backgroundColor:alpha(t.palette.primary.main,.01),border:"1px solid transparent",borderRadius:8,"&::before":{content:'""',position:"absolute",inset:0,borderRadius:"inherit",padding:"1px",background:`linear-gradient(90deg, ${r} 0%, ${i} 50%, ${r} 100%)`,WebkitMask:"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)",WebkitMaskComposite:"xor",mask:"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)",maskComposite:"exclude",pointerEvents:"none"},overflow:"hidden","& .MuiAlert-message":{width:"100%"}}}),X=styled(F)({border:"1px solid transparent","&::before":{content:'""',position:"absolute",inset:0,borderRadius:"inherit",padding:"1px",background:"linear-gradient(90deg, #e01cd5 0%, #1CB5E0 50%, #e01cd5 100%)",backgroundSize:"200% auto",WebkitMask:"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)",WebkitMaskComposite:"xor",mask:"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)",maskComposite:"exclude",pointerEvents:"none",animation:`${Ot} 2s linear infinite`}});var Lt=()=>jsxs(X,{icon:jsx(a$4,{icon:"AI_08_SOLID_ROUND",color:"primary.main"}),action:jsx(a$c,{variant:"text",width:100,height:30}),children:[jsx(Wt,{variant:"subtitle1",color:"text.primary",children:"Resumo inteligente"}),jsxs(I,{gap:.5,children:[jsx(a$c,{variant:"text",width:"100%",height:30}),jsx(a$c,{variant:"text",width:"80%",height:30})]})]}),Z=Lt;var Ht=()=>jsxs(I,{direction:"row",alignItems:"center",gap:1.5,children:[jsx(a$4,{icon:"AI_08_SOLID_ROUND",color:"primary.main",sx:{flexGrow:0}}),jsxs(I,{children:[jsx(tt,{variant:"subtitle1",color:"text.primary",children:"Resumo inteligente"}),jsx(tt,{variant:"body2",color:"text.secondary",children:"Gerado com base nos dados consolidados da p\xE1gina."})]})]}),w=Ht;var $t=t=>t,et=({detail:t,formatContent:r})=>{let i=r??$t,l=r!=null;return jsx(tt,{variant:"body2",color:"text.primary",children:l?jsx("span",{dangerouslySetInnerHTML:{__html:i(t)}}):t})},Gt=({open:t,toggleOpen:r,detail:i,formatContent:l})=>b("down","sm")?jsx(a,{open:t,onClose:r,headerTitle:jsx(w,{}),headerProps:{direction:"row-reverse",sx:{"& > :last-child":{minWidth:0,overflow:"hidden"}}},children:jsx(et,{detail:i,formatContent:l})}):jsx(a$1,{open:t,onClose:r,dialogTitle:jsx(w,{}),dialogTitleProps:{sx:{flex:1,overflow:"hidden"}},maxWidth:"md",fullWidth:!0,scroll:"paper",children:jsx(et,{detail:i,formatContent:l})}),rt=memo(Gt);var qt=({brief:t,detail:r,isLoading:i=!1,formatContent:l})=>{let[m,u]=a$2(!1);return !(!!t&&!!r)&&!i?null:jsxs(Fragment,{children:[jsx(a$3,{isLoading:i,loading:jsx(Z,{}),children:jsxs(F,{icon:jsx(a$4,{icon:"AI_08_SOLID_ROUND",color:"primary.main"}),action:jsx(st,{variant:i?"contained":"text",color:"primary",size:"small",onClick:u,children:"Ver mais"}),children:[jsx(Wt,{variant:"subtitle1",color:"text.primary",children:"Resumo inteligente"}),jsx(tt,{variant:"body2",color:"text.secondary",children:t})]})}),jsx(rt,{open:m,toggleOpen:u,detail:r??"",formatContent:l})]})},Jt=qt;var nt=styled(st)(({theme:t})=>({color:t.palette.text.secondary,"&:hover":{background:t.palette.action.hover}})),lt=styled(Xt)(({theme:t})=>({justifyContent:"flex-start",color:t.palette.text.secondary,fontWeight:400,"&:hover":{background:t.palette.action.hover}}));var Zt=({onExport:t,isExporting:r})=>{let{open:i,onOpen:l,onClose:m}=a$5(),u=e=>{t(e),m();};return jsxs(Fragment,{children:[jsx(nt,{variant:"text",startIcon:jsx(a$4,{icon:"DOWNLOAD"}),color:"primary",size:"small",onClick:l,disabled:r,children:r?"Exportando...":"Exportar"}),jsx(a$6,{open:i,onClose:m,disabledArrow:!0,sx:{p:1,width:180},children:Object.values(c$1).map((e,p)=>jsx(lt,{variant:"text",onClick:()=>u(e),loading:r,fullWidth:!0,"data-testid":`export-button-${p}`,children:e},p))})]})},jt=Zt;var mt=styled(c)(({theme:t})=>({"&.MuiDateRangeCalendar-root":{margin:-24},"& .MuiPickersCalendarHeader-label":{textTransform:"capitalize"},[t.breakpoints.down(400)]:{"& .MuiPickersCalendarHeader-root":{padding:t.spacing(0,7)},"& .MuiDayCalendar-header, & .MuiDayCalendar-weekContainer":{gap:0},"& .MuiPickersDay-root, & .MuiDateRangePickerDay-root":{width:32,height:32},"& .MuiDayCalendar-weekDayLabel":{width:32,height:32},"& .MuiDayCalendar-slideTransition":{minHeight:210}},[t.breakpoints.down(350)]:{"& .MuiPickersDay-root, & .MuiDateRangePickerDay-root":{width:28,height:28},"& .MuiDayCalendar-weekDayLabel":{width:28,height:28},"& .MuiDayCalendar-slideTransition":{minHeight:196}}}));var so=["D","S","T","Q","Q","S","S"],po=({value:t,onSave:r,onClose:i})=>{let l=b("down","sm"),m=useForm({defaultValues:{period:t.period,start_date:t.start_date?P(t.start_date).toDate():null,end_date:t.end_date?P(t.end_date).toDate():null}}),{handleSubmit:u,setValue:e$1,getValues:p}=m,[B,x]=useState(t.period),[pt,D]=useState(()=>[t.start_date?P(t.start_date).toDate():null,t.end_date?P(t.end_date).toDate():null]),v=useCallback(o=>{let a=b$1(o);x(o),D([a.start_date,a.end_date]),e$1("period",o),e$1("start_date",a.start_date),e$1("end_date",a.end_date);},[e$1]),ct=useCallback(o=>{if(D(o),o[0]&&e$1("start_date",o[0]),o[1]&&e$1("end_date",o[1]),o[0]&&o[1]){let a=e(o[0],o[1]);x(a),e$1("period",a);}},[e$1]),ft=useCallback(o=>{e$1("start_date",o);let a=p("end_date");if(o&&a){let c=[o,a];D(c);let y=e(c[0],c[1]);x(y),e$1("period",y);}},[p,e$1]),ut=useCallback(o=>{e$1("end_date",o);let a=p("start_date");if(a&&o){let c=[a,o];D(c);let y=e(c[0],c[1]);x(y),e$1("period",y);}},[p,e$1]),gt=useCallback(o=>{o&&typeof o=="string"&&v(o);},[v]),yt=useCallback(o=>{r(f(o));},[r]);return jsxs(a$7,{methods:m,onSubmit:u(yt),gap:3,children:[jsx(tt,{variant:"overline",color:"text.secondary",children:"Defina o per\xEDodo"}),jsxs(I,{display:"grid",gridTemplateColumns:"1fr 1fr",alignItems:"center",gap:1.5,children:[jsx(a$8,{name:"start_date",label:"Data inicial",size:"small",onChange:ft}),jsx(a$8,{name:"end_date",label:"Data final",size:"small",onChange:ut})]}),jsxs(a$9,{direction:{xs:"column",sm:"row"},alignItems:"center",justifyContent:{xs:"center",sm:"space-between"},gap:{xs:3,sm:0},overflow:"hidden",children:[l?jsx(a$a,{name:"period",value:B,onChange:gt,options:a$b,size:"small",disableClearable:!0,fullWidth:!0}):jsx(lo,{value:B,onChange:(o,a)=>v(a),children:Object.values(d).map(o=>jsx(io,{value:o,control:jsx(no,{size:"small"}),label:a$b.find(a=>a.value===o)?.label},o))}),jsx(ao,{orientation:"vertical",flexItem:!0,sx:{display:{xs:"none",sm:"block"}}}),jsx(mt,{value:pt,onChange:ct,calendars:1,showDaysOutsideCurrentMonth:!0,fixedWeekNumber:6,disableFuture:!0,dayOfWeekFormatter:o=>so[o.day()]})]}),jsx(I,{alignItems:"flex-end",children:jsxs(I,{direction:"row",alignItems:"center",gap:1.5,children:[jsx(st,{variant:"outlined",color:"inherit",onClick:i,children:"Cancelar"}),jsx(st,{variant:"contained",type:"submit",children:"Salvar"})]})})]})},co=po;
45
+
46
+ export { Jt as AiSummary, jt as ExportButton, co as FilterDate };
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Analytics/AiSummary/index.tsx","../../../src/components/Analytics/AiSummary/Skeleton.tsx","../../../src/components/Analytics/AiSummary/styles.ts","../../../src/components/Analytics/AiSummary/Summary.tsx","../../../src/components/Analytics/AiSummary/Header.tsx","../../../src/components/Analytics/ExportButton/styles.ts","../../../src/components/Analytics/ExportButton/index.tsx","../../../src/components/Analytics/FilterDate/index.tsx","../../../src/components/Analytics/FilterDate/styles.ts"],"names":["AlertTitle","Button","Typography","Stack","MuiAlert","alpha","keyframes","styled","gradientAnimation","Alert","theme","primaryMain","primaryLight","LoadingAlert","jsx","jsxs","AiSummarySkeleton","Icon_default","Skeleton_default","memo","Header","Header_default","defaultFormatContent","text","SummaryContent","detail","formatContent","format","isHtml","Summary","open","toggleOpen","useResponsive_default","Drawer_default","Modal_default","Summary_default","Fragment","AiSummary","brief","isLoading","useToggle_default","Result_default","AiSummary_default","LoadingButton","MuiButton","ItemButton","ExportButton","onExport","isExporting","onOpen","onClose","usePopover_default","handleExport","MenuPopover_default","ExportFormat","index","ExportButton_default","useCallback","useState","useForm","Divider","FormControlLabel","Radio","RadioGroup","dayjs","DateRangeCalendar","DateRangeCalendar_default","daysOfWeek","FilterDate","value","onSave","isMobile","methods","handleSubmit","setValue","getValues","selectedPeriod","setSelectedPeriod","dateRange","setDateRange","handlePeriodChange","period","dates","getPeriodDates","handleCalendarChange","newRange","matchingPeriod","findMatchingPeriod","handleStartDateChange","date","endDate","handleEndDateChange","startDate","handleAutocompletePeriodChange","newValue","onSubmit","formData","toFilterDateState","Form_default","DateField_default","SimpleCard_default","Autocomplete_default","periodOptions","_","FilterPeriod","o","day","FilterDate_default"],"mappings":"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","sourcesContent":["import AlertTitle from '@mui/material/AlertTitle';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport useToggle from 'hooks/useToggle';\n\nimport { AiSummaryProps } from './props';\nimport AiSummarySkeleton from './Skeleton';\nimport { Alert } from './styles';\nimport Summary from './Summary';\n\nconst AiSummary = ({\n brief,\n detail,\n isLoading = false,\n formatContent,\n}: AiSummaryProps) => {\n const [open, toggleOpen] = useToggle(false);\n\n const hasSummary = !!brief && !!detail;\n\n if (!hasSummary && !isLoading) return null;\n\n return (\n <>\n <Result isLoading={isLoading} loading={<AiSummarySkeleton />}>\n <Alert\n icon={<Icon icon=\"AI_08_SOLID_ROUND\" color=\"primary.main\" />}\n action={\n <Button\n variant={isLoading ? 'contained' : 'text'}\n color=\"primary\"\n size=\"small\"\n onClick={toggleOpen}\n >\n Ver mais\n </Button>\n }\n >\n <AlertTitle variant=\"subtitle1\" color=\"text.primary\">\n Resumo inteligente\n </AlertTitle>\n\n <Typography variant=\"body2\" color=\"text.secondary\">\n {brief}\n </Typography>\n </Alert>\n </Result>\n\n <Summary\n open={open}\n toggleOpen={toggleOpen}\n detail={detail ?? ''}\n formatContent={formatContent}\n />\n </>\n );\n};\n\nexport default AiSummary;\n","import AlertTitle from '@mui/material/AlertTitle';\nimport Stack from '@mui/material/Stack';\n\nimport Icon from 'components/Icon';\nimport Skeleton from 'components/Skeleton';\n\nimport { LoadingAlert } from './styles';\n\nconst AiSummarySkeleton = () => (\n <LoadingAlert\n icon={<Icon icon=\"AI_08_SOLID_ROUND\" color=\"primary.main\" />}\n action={<Skeleton variant=\"text\" width={100} height={30} />}\n >\n <AlertTitle variant=\"subtitle1\" color=\"text.primary\">\n Resumo inteligente\n </AlertTitle>\n\n <Stack gap={0.5}>\n <Skeleton variant=\"text\" width=\"100%\" height={30} />\n <Skeleton variant=\"text\" width=\"80%\" height={30} />\n </Stack>\n </LoadingAlert>\n);\n\nexport default AiSummarySkeleton;\n","import MuiAlert from '@mui/material/Alert';\nimport { alpha, keyframes, styled } from '@mui/material/styles';\n\nconst gradientAnimation = keyframes`\n 0% {\n background-position: 0% 50%;\n }\n 100% {\n background-position: 200% 50%;\n }\n`;\n\nexport const Alert = styled(MuiAlert)(({ theme }) => {\n const primaryMain = theme.palette.primary.main;\n const primaryLight = alpha(primaryMain, 0.1);\n\n return {\n position: 'relative',\n\n backgroundColor: alpha(theme.palette.primary.main, 0.01),\n border: '1px solid transparent',\n\n borderRadius: 8,\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n inset: 0,\n borderRadius: 'inherit',\n padding: '1px',\n background: `linear-gradient(90deg, ${primaryMain} 0%, ${primaryLight} 50%, ${primaryMain} 100%)`,\n WebkitMask:\n 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)',\n WebkitMaskComposite: 'xor',\n mask: 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)',\n maskComposite: 'exclude',\n pointerEvents: 'none',\n },\n\n overflow: 'hidden',\n\n '& .MuiAlert-message': {\n width: '100%',\n },\n };\n});\n\nexport const LoadingAlert = styled(Alert)({\n border: '1px solid transparent',\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n inset: 0,\n borderRadius: 'inherit',\n padding: '1px',\n background: 'linear-gradient(90deg, #e01cd5 0%, #1CB5E0 50%, #e01cd5 100%)',\n backgroundSize: '200% auto',\n WebkitMask:\n 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)',\n WebkitMaskComposite: 'xor',\n mask: 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)',\n maskComposite: 'exclude',\n pointerEvents: 'none',\n animation: `${gradientAnimation} 2s linear infinite`,\n },\n});\n","import { memo } from 'react';\nimport Typography from '@mui/material/Typography';\n\nimport Drawer from 'components/Drawer';\nimport Modal from 'components/Modal';\nimport useResponsive from 'hooks/useResponsive';\n\nimport Header from './Header';\nimport { SummaryContentProps, SummaryProps } from './props';\n\nconst defaultFormatContent = (text: string) => text;\n\nconst SummaryContent = ({ detail, formatContent }: SummaryContentProps) => {\n const format = formatContent ?? defaultFormatContent;\n const isHtml = formatContent != null;\n\n return (\n <Typography variant=\"body2\" color=\"text.primary\">\n {isHtml ? (\n <span dangerouslySetInnerHTML={{ __html: format(detail) }} />\n ) : (\n detail\n )}\n </Typography>\n );\n};\n\nconst Summary = ({ open, toggleOpen, detail, formatContent }: SummaryProps) => {\n const isMobile = useResponsive('down', 'sm');\n\n if (isMobile) {\n return (\n <Drawer\n open={open}\n onClose={toggleOpen}\n headerTitle={<Header />}\n headerProps={{\n direction: 'row-reverse',\n sx: { '& > :last-child': { minWidth: 0, overflow: 'hidden' } },\n }}\n >\n <SummaryContent detail={detail} formatContent={formatContent} />\n </Drawer>\n );\n }\n\n return (\n <Modal\n open={open}\n onClose={toggleOpen}\n dialogTitle={<Header />}\n dialogTitleProps={{ sx: { flex: 1, overflow: 'hidden' } }}\n maxWidth=\"md\"\n fullWidth\n scroll=\"paper\"\n >\n <SummaryContent detail={detail} formatContent={formatContent} />\n </Modal>\n );\n};\n\nexport default memo(Summary);\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nconst Header = () => (\n <Stack direction=\"row\" alignItems=\"center\" gap={1.5}>\n <Icon icon=\"AI_08_SOLID_ROUND\" color=\"primary.main\" sx={{ flexGrow: 0 }} />\n\n <Stack>\n <Typography variant=\"subtitle1\" color=\"text.primary\">\n Resumo inteligente\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\">\n Gerado com base nos dados consolidados da página.\n </Typography>\n </Stack>\n </Stack>\n);\n\nexport default Header;\n","import LoadingButton from '@mui/lab/LoadingButton';\nimport MuiButton from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\nexport const Button = styled(MuiButton)(({ theme }) => ({\n color: theme.palette.text.secondary,\n\n '&:hover': {\n background: theme.palette.action.hover,\n },\n}));\n\nexport const ItemButton = styled(LoadingButton)(({ theme }) => ({\n justifyContent: 'flex-start',\n\n color: theme.palette.text.secondary,\n fontWeight: 400,\n\n '&:hover': {\n background: theme.palette.action.hover,\n },\n}));\n","import Icon from 'components/Icon';\nimport MenuPopover from 'components/MenuPopover';\nimport usePopover from 'hooks/usePopover';\nimport { ExportFormat } from 'types/analytics';\n\nimport { ExportButtonProps } from './props';\nimport { Button, ItemButton } from './styles';\n\nconst ExportButton = ({ onExport, isExporting }: ExportButtonProps) => {\n const { open, onOpen, onClose } = usePopover();\n\n const handleExport = (format: ExportFormat) => {\n onExport(format);\n onClose();\n };\n\n return (\n <>\n <Button\n variant=\"text\"\n startIcon={<Icon icon=\"DOWNLOAD\" />}\n color=\"primary\"\n size=\"small\"\n onClick={onOpen}\n disabled={isExporting}\n >\n {isExporting ? 'Exportando...' : 'Exportar'}\n </Button>\n\n <MenuPopover\n open={open}\n onClose={onClose}\n disabledArrow\n sx={{ p: 1, width: 180 }}\n >\n {Object.values(ExportFormat).map((format, index) => (\n <ItemButton\n key={index}\n variant=\"text\"\n onClick={() => handleExport(format)}\n loading={isExporting}\n fullWidth\n data-testid={`export-button-${index}`}\n >\n {format}\n </ItemButton>\n ))}\n </MenuPopover>\n </>\n );\n};\n\nexport default ExportButton;\n","import { useCallback, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport Autocomplete from 'components/Autocomplete';\nimport DateField from 'components/form/DateField';\nimport Form from 'components/form/Form';\nimport SimpleCard from 'components/SimpleCard';\nimport useResponsive from 'hooks/useResponsive';\nimport { FilterPeriod } from 'types/analytics';\nimport {\n findMatchingPeriod,\n getPeriodDates,\n periodOptions,\n toFilterDateState,\n} from 'utils/periodDates';\n\nimport { FilterDateForm, FilterDateProps } from './props';\nimport { DateRangeCalendar } from './styles';\n\nconst daysOfWeek = ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'];\n\nconst FilterDate = ({ value, onSave, onClose }: FilterDateProps) => {\n const isMobile = useResponsive('down', 'sm');\n\n const methods = useForm<FilterDateForm>({\n defaultValues: {\n period: value.period,\n start_date: value.start_date ? dayjs(value.start_date).toDate() : null,\n end_date: value.end_date ? dayjs(value.end_date).toDate() : null,\n },\n });\n\n const { handleSubmit, setValue, getValues } = methods;\n\n const [selectedPeriod, setSelectedPeriod] = useState<FilterPeriod>(\n value.period,\n );\n\n const [dateRange, setDateRange] = useState<[Date | null, Date | null]>(() => [\n value.start_date ? dayjs(value.start_date).toDate() : null,\n value.end_date ? dayjs(value.end_date).toDate() : null,\n ]);\n\n const handlePeriodChange = useCallback(\n (period: FilterPeriod) => {\n const dates = getPeriodDates(period);\n\n setSelectedPeriod(period);\n setDateRange([dates.start_date, dates.end_date]);\n\n setValue('period', period);\n setValue('start_date', dates.start_date);\n setValue('end_date', dates.end_date);\n },\n [setValue],\n );\n\n const handleCalendarChange = useCallback(\n (newRange: [Date | null, Date | null]) => {\n setDateRange(newRange);\n\n if (newRange[0]) setValue('start_date', newRange[0]);\n if (newRange[1]) setValue('end_date', newRange[1]);\n\n if (newRange[0] && newRange[1]) {\n const matchingPeriod = findMatchingPeriod(newRange[0], newRange[1]);\n setSelectedPeriod(matchingPeriod);\n setValue('period', matchingPeriod);\n }\n },\n [setValue],\n );\n\n const handleStartDateChange = useCallback(\n (date: Date) => {\n setValue('start_date', date);\n\n const endDate = getValues('end_date');\n\n if (date && endDate) {\n const newRange: [Date, Date] = [date, endDate];\n setDateRange(newRange);\n const matchingPeriod = findMatchingPeriod(newRange[0], newRange[1]);\n setSelectedPeriod(matchingPeriod);\n setValue('period', matchingPeriod);\n }\n },\n [getValues, setValue],\n );\n\n const handleEndDateChange = useCallback(\n (date: Date) => {\n setValue('end_date', date);\n\n const startDate = getValues('start_date');\n\n if (startDate && date) {\n const newRange: [Date, Date] = [startDate, date];\n setDateRange(newRange);\n const matchingPeriod = findMatchingPeriod(newRange[0], newRange[1]);\n setSelectedPeriod(matchingPeriod);\n setValue('period', matchingPeriod);\n }\n },\n [getValues, setValue],\n );\n\n const handleAutocompletePeriodChange = useCallback(\n (newValue: string | string[] | null) => {\n if (newValue && typeof newValue === 'string') {\n handlePeriodChange(newValue as FilterPeriod);\n }\n },\n [handlePeriodChange],\n );\n\n const onSubmit = useCallback(\n (formData: FilterDateForm) => {\n onSave(toFilterDateState(formData));\n },\n [onSave],\n );\n\n return (\n <Form methods={methods} onSubmit={handleSubmit(onSubmit)} gap={3}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Defina o período\n </Typography>\n\n <Stack\n display=\"grid\"\n gridTemplateColumns=\"1fr 1fr\"\n alignItems=\"center\"\n gap={1.5}\n >\n <DateField\n name=\"start_date\"\n label=\"Data inicial\"\n size=\"small\"\n onChange={handleStartDateChange}\n />\n <DateField\n name=\"end_date\"\n label=\"Data final\"\n size=\"small\"\n onChange={handleEndDateChange}\n />\n </Stack>\n\n <SimpleCard\n direction={{ xs: 'column', sm: 'row' }}\n alignItems=\"center\"\n justifyContent={{ xs: 'center', sm: 'space-between' }}\n gap={{ xs: 3, sm: 0 }}\n overflow=\"hidden\"\n >\n {!isMobile ? (\n <RadioGroup\n value={selectedPeriod}\n onChange={(_, newValue) =>\n handlePeriodChange(newValue as FilterPeriod)\n }\n >\n {Object.values(FilterPeriod).map(period => (\n <FormControlLabel\n key={period}\n value={period}\n control={<Radio size=\"small\" />}\n label={periodOptions.find(o => o.value === period)?.label}\n />\n ))}\n </RadioGroup>\n ) : (\n <Autocomplete\n name=\"period\"\n value={selectedPeriod}\n onChange={handleAutocompletePeriodChange}\n options={periodOptions}\n size=\"small\"\n disableClearable\n fullWidth\n />\n )}\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ display: { xs: 'none', sm: 'block' } }}\n />\n\n <DateRangeCalendar\n value={dateRange}\n onChange={handleCalendarChange}\n calendars={1}\n showDaysOutsideCurrentMonth\n fixedWeekNumber={6}\n disableFuture\n dayOfWeekFormatter={day => {\n return daysOfWeek[day.day()];\n }}\n />\n </SimpleCard>\n\n <Stack alignItems=\"flex-end\">\n <Stack direction=\"row\" alignItems=\"center\" gap={1.5}>\n <Button variant=\"outlined\" color=\"inherit\" onClick={onClose}>\n Cancelar\n </Button>\n\n <Button variant=\"contained\" type=\"submit\">\n Salvar\n </Button>\n </Stack>\n </Stack>\n </Form>\n );\n};\n\nexport default FilterDate;\n","import { styled } from '@mui/material/styles';\nimport CommonDateRangeCalendar from 'components/DateRangeCalendar';\n\nexport const DateRangeCalendar = styled(CommonDateRangeCalendar)(\n ({ theme }) => ({\n '&.MuiDateRangeCalendar-root': {\n margin: -24,\n },\n\n '& .MuiPickersCalendarHeader-label': {\n textTransform: 'capitalize',\n },\n\n [theme.breakpoints.down(400)]: {\n '& .MuiPickersCalendarHeader-root': {\n padding: theme.spacing(0, 7),\n },\n\n '& .MuiDayCalendar-header, & .MuiDayCalendar-weekContainer': {\n gap: 0,\n },\n\n '& .MuiPickersDay-root, & .MuiDateRangePickerDay-root': {\n width: 32,\n height: 32,\n },\n\n '& .MuiDayCalendar-weekDayLabel': {\n width: 32,\n height: 32,\n },\n\n '& .MuiDayCalendar-slideTransition': {\n minHeight: 210,\n },\n },\n\n [theme.breakpoints.down(350)]: {\n '& .MuiPickersDay-root, & .MuiDateRangePickerDay-root': {\n width: 28,\n height: 28,\n },\n\n '& .MuiDayCalendar-weekDayLabel': {\n width: 28,\n height: 28,\n },\n\n '& .MuiDayCalendar-slideTransition': {\n minHeight: 196,\n },\n },\n }),\n);\n"]}
@@ -11,7 +11,7 @@ interface ImageContainerProps {
11
11
 
12
12
  declare const Avatar: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<PropsWithChildren<ImageContainerProps & _mui_material_Avatar.AvatarOwnProps & _mui_material_Avatar.AvatarSlotsAndSlotProps & _mui_material_OverridableComponent.CommonProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
13
13
  ref?: ((instance: HTMLDivElement | null) => void) | react.RefObject<HTMLDivElement> | null | undefined;
14
- }, "children" | "className" | "style" | "classes" | "sx" | "variant" | "slots" | "slotProps" | "sizes" | "alt" | "src" | "srcSet" | "imgProps"> & {
14
+ }, "children" | "className" | "style" | "classes" | "sx" | "variant" | "slots" | "slotProps" | "alt" | "src" | "sizes" | "srcSet" | "imgProps"> & {
15
15
  component?: react.ElementType<any, keyof react.JSX.IntrinsicElements> | undefined;
16
16
  }>, "ref"> & react.RefAttributes<HTMLDivElement>>>;
17
17
 
@@ -6,26 +6,26 @@ import '../../chunk-PBLSVXV5.js';
6
6
  import { a as a$2 } from '../../chunk-VR3K2Y2C.js';
7
7
  import { a as a$1 } from '../../chunk-LQRRMVFN.js';
8
8
  import '../../chunk-U4I7JPER.js';
9
- import '../../chunk-NWT5TUJO.js';
9
+ import '../../chunk-JM3SE72J.js';
10
10
  import '../../chunk-373WGZZL.js';
11
+ import '../../chunk-WUFEPE2G.js';
11
12
  import '../../chunk-BX2DSNRV.js';
12
13
  import '../../chunk-X4F3O7PX.js';
13
14
  import '../../chunk-Q2AVS24Z.js';
14
15
  import '../../chunk-LNESYSHP.js';
15
16
  import '../../chunk-YPL4KIKN.js';
16
17
  import '../../chunk-HBOBTNB5.js';
17
- import '../../chunk-WUFEPE2G.js';
18
18
  import '../../chunk-GLRLKFPS.js';
19
- import j from '@mui/material/Avatar';
19
+ import G from '@mui/material/Avatar';
20
20
  import d from '@mui/material/Divider';
21
21
  import p from '@mui/material/Stack';
22
22
  import { styled, alpha } from '@mui/material/styles';
23
23
  import i from '@mui/material/Typography';
24
- import M from '@mui/lab/LoadingButton';
25
- import _ from '@mui/material/Button';
24
+ import _ from '@mui/lab/LoadingButton';
25
+ import O from '@mui/material/Button';
26
26
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
27
27
 
28
- var h=styled(p)({width:40,height:40,alignItems:"center",justifyContent:"center",borderRadius:"50%",border:"2px solid #1C1C1C",cursor:"pointer"}),w=styled(a)(({theme:o})=>({width:322,marginTop:20,"& .MuiPopover-paper":{width:540,padding:0,backgroundColor:o.palette.background.paper,borderRadius:o.spacing(1),backgroundImage:"none"}})),T=styled(p)(({theme:o})=>({alignItems:"center",justifyContent:"center",gap:o.spacing(1.5),padding:o.spacing(3),backgroundColor:alpha(o.palette.primary.main,.04)})),c=styled(p)(({theme:o})=>({marginLeft:o.spacing(1.75),marginRight:o.spacing(1.75),marginTop:o.spacing(2),marginBottom:o.spacing(2),gap:o.spacing(1)})),R=styled(_)(({theme:o})=>({width:"100%",alignItems:"flex-start",justifyContent:"flex-start",color:o.palette.text.primary})),z=styled(p)(({theme:o})=>({display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:o.spacing(2),cursor:"pointer"})),s=styled(p)(({theme:o})=>({alignItems:"center",gap:o.spacing(.5),color:o.palette.text.secondary,textAlign:"center","&:hover":{color:o.palette.primary.main}})),A=styled(M)(({theme:o})=>({width:"100%",alignItems:"flex-start",justifyContent:"flex-start",color:o.palette.error.main}));var D=({name:o="",email:g="",src:B,content:f,menuItems:y,subContent:v,logout:P,loadingLogout:S})=>{let m=a$1();return jsxs(Fragment,{children:[jsx(h,{"data-testid":"avatar-trigger-button",children:jsx(a$2,{alt:o,name:o,src:B,onClick:m.onOpen,"data-testid":"avatar-trigger",sx:{maxWidth:34,maxHeight:34}})}),jsxs(w,{open:m.open,onClose:m.onClose,arrow:"top-right",disableRestoreFocus:!0,"data-testid":"avatar-menu",children:[jsxs(T,{"data-testid":"avatar-account",children:[jsx(j,{sx:{bgcolor:r=>r.palette.mode==="dark"?alpha(r.palette.primary.main,.04):"success.lighter",border:r=>r.palette.mode==="dark"?"1px solid rgb(255, 252, 252)":"none",color:r=>r.palette.mode==="dark"?"primary.contrastText":"success.main",width:60,height:60},"data-testid":"avatar-initials",children:o.slice(0,2).toUpperCase()}),jsxs(p,{alignItems:"center",textAlign:"center",children:[jsx(i,{variant:"subtitle2",fontSize:"subtitle2.fontSize",color:"text.primary",children:o}),jsx(i,{variant:"body2",fontSize:"body2.fontSize",color:"text.secondary",children:g})]})]}),jsx(d,{}),f&&jsxs(Fragment,{children:[jsx(c,{"data-testid":"avatar-content",children:f}),jsx(d,{})]}),y&&jsxs(Fragment,{children:[jsx(c,{"data-testid":"avatar-menu-items",children:y.map(r=>jsx(R,{"data-testid":`avatar-menu-item-${r.label.toLowerCase().replace(/\s+/g,"-")}`,startIcon:jsx(a$3,{icon:r.icon,color:L=>L.palette.mode==="dark"?"text.secondary":"primary.main"}),...r.component&&{component:r.component,to:r.to},...r.onClick&&{onClick:r.onClick},children:jsxs(p,{direction:"row",alignItems:"center",justifyContent:"space-between",flex:1,gap:1,children:[jsx(i,{variant:"caption",fontSize:13,color:"text.secondary",children:r.label}),jsx(a$3,{icon:"ARROW_RIGHT_SIMPLE",color:"text.primary"})]})},r.label))}),jsx(d,{})]}),v&&jsxs(Fragment,{children:[jsx(c,{"data-testid":"avatar-subcontent",children:v}),jsx(d,{})]}),jsx(c,{"data-testid":"avatar-resources",children:jsxs(z,{children:[jsxs(s,{"data-testid":"resource-discord",onClick:()=>window.open("https://discord.gg/HMpBbABGVW","_blank"),children:[jsx(a$3,{icon:"DISCORD",color:"primary.main"}),jsx(i,{variant:"caption",fontSize:"caption.fontSize",children:"Comunidade"})]}),jsxs(s,{"data-testid":"resource-youtube",onClick:()=>window.open("https://youtube.com/playlist?list=PLqv8txNiT9o_LReCh5wKPiQaeBTg2Q1i3&si=3nGSAU3AdcPwoa-R","_blank","noopener noreferrer"),children:[jsx(a$3,{icon:"YOUTUBE",color:"primary.main"}),jsx(i,{variant:"caption",fontSize:"caption.fontSize",children:"Videos"})]}),jsxs(s,{"data-testid":"resource-ajuda",onClick:()=>window.open("https://ajuda.zydon.com.br","_blank","noopener noreferrer"),children:[jsx(a$3,{icon:"HELP_CIRCLE",color:"primary.main"}),jsx(i,{variant:"caption",fontSize:"caption.fontSize",children:"Ajuda"})]}),jsxs(s,{"data-testid":"resource-docs",onClick:()=>window.open("https://docs.zydon.com.br","_blank","noopener noreferrer"),children:[jsx(a$3,{icon:"CODE_FOLDER",color:"primary.main"}),jsx(i,{variant:"caption",fontSize:"caption.fontSize",children:"Docs"})]})]})}),jsx(d,{}),jsxs(c,{direction:"row",children:[jsx(A,{"data-testid":"logout-button",startIcon:jsx(a$3,{icon:"LOGOUT_02"}),size:"small",onClick:P,loading:S,children:S?"Saindo...":"Sair"}),a$4(g)&&jsxs(p,{direction:"row",alignItems:"center",gap:1,children:[jsx(i,{variant:"overline",fontSize:11,color:"text.disabled",children:"Apar\xEAncia:"}),jsx(a$5,{})]})]})]})]})},rt=D;
28
+ var w=styled(p)({width:40,height:40,alignItems:"center",justifyContent:"center",borderRadius:"50%",border:"2px solid #1C1C1C",cursor:"pointer"}),T=styled(a)(({theme:o})=>({width:322,marginTop:20,"& .MuiPopover-paper":{width:540,padding:0,backgroundColor:o.palette.background.paper,borderRadius:o.spacing(1),backgroundImage:"none"}})),R=styled(p)(({theme:o})=>({alignItems:"center",justifyContent:"center",gap:o.spacing(1.5),padding:o.spacing(3),backgroundColor:alpha(o.palette.primary.main,.04)})),c=styled(p)(({theme:o})=>({marginLeft:o.spacing(1.75),marginRight:o.spacing(1.75),marginTop:o.spacing(2),marginBottom:o.spacing(2),gap:o.spacing(1)})),S=styled(O)(({theme:o})=>({width:"100%",alignItems:"flex-start",justifyContent:"flex-start",color:o.palette.text.primary})),A=styled(p)(({theme:o})=>({display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:o.spacing(2),cursor:"pointer"})),s=styled(p)(({theme:o})=>({alignItems:"center",gap:o.spacing(.5),color:o.palette.text.secondary,textAlign:"center","&:hover":{color:o.palette.primary.main}})),B=styled(_)(({theme:o})=>({width:"100%",alignItems:"flex-start",justifyContent:"flex-start",color:o.palette.error.main}));var E=({name:o="",email:g="",src:P,content:y,menuItems:f,subContent:v,logout:L,loadingLogout:x})=>{let m=a$1();return jsxs(Fragment,{children:[jsx(w,{"data-testid":"avatar-trigger-button",children:jsx(a$2,{alt:o,name:o,src:P,onClick:m.onOpen,"data-testid":"avatar-trigger",sx:{maxWidth:34,maxHeight:34}})}),jsxs(T,{open:m.open,onClose:m.onClose,arrow:"top-right",disableRestoreFocus:!0,"data-testid":"avatar-menu",children:[jsxs(R,{"data-testid":"avatar-account",children:[jsx(G,{sx:{bgcolor:r=>r.palette.mode==="dark"?alpha(r.palette.primary.main,.04):"success.lighter",border:r=>r.palette.mode==="dark"?"1px solid rgb(255, 252, 252)":"none",color:r=>r.palette.mode==="dark"?"primary.contrastText":"success.main",width:60,height:60},"data-testid":"avatar-initials",children:o.slice(0,2).toUpperCase()}),jsxs(p,{alignItems:"center",textAlign:"center",children:[jsx(i,{variant:"subtitle2",color:"text.primary",children:o}),jsx(i,{variant:"body2",color:"text.secondary",children:g})]})]}),jsx(d,{}),y&&jsxs(Fragment,{children:[jsx(c,{"data-testid":"avatar-content",children:y}),jsx(d,{})]}),f&&jsxs(Fragment,{children:[jsx(c,{"data-testid":"avatar-menu-items",children:f.map(r=>jsx(S,{"data-testid":`avatar-menu-item-${r.label.toLowerCase().replace(/\s+/g,"-")}`,startIcon:jsx(a$3,{icon:r.icon,color:M=>M.palette.mode==="dark"?"text.secondary":"primary.main"}),...r.component&&{component:r.component,to:r.to},...r.onClick&&{onClick:r.onClick},children:jsxs(p,{direction:"row",alignItems:"center",justifyContent:"space-between",flex:1,gap:1,children:[jsx(i,{variant:"caption",fontSize:13,color:"text.secondary",children:r.label}),jsx(a$3,{icon:"ARROW_RIGHT_SIMPLE",color:"text.primary"})]})},r.label))}),jsx(d,{})]}),v&&jsxs(Fragment,{children:[jsx(c,{"data-testid":"avatar-subcontent",children:v}),jsx(d,{})]}),jsx(c,{"data-testid":"avatar-resources",children:jsxs(A,{children:[jsxs(s,{"data-testid":"resource-discord",onClick:()=>window.open("https://discord.gg/HMpBbABGVW","_blank"),children:[jsx(a$3,{icon:"DISCORD",color:"primary.main"}),jsx(i,{variant:"caption",children:"Comunidade"})]}),jsxs(s,{"data-testid":"resource-youtube",onClick:()=>window.open("https://youtube.com/playlist?list=PLqv8txNiT9o_LReCh5wKPiQaeBTg2Q1i3&si=3nGSAU3AdcPwoa-R","_blank","noopener noreferrer"),children:[jsx(a$3,{icon:"YOUTUBE",color:"primary.main"}),jsx(i,{variant:"caption",children:"Videos"})]}),jsxs(s,{"data-testid":"resource-ajuda",onClick:()=>window.open("https://ajuda.zydon.com.br","_blank","noopener noreferrer"),children:[jsx(a$3,{icon:"HELP_CIRCLE",color:"primary.main"}),jsx(i,{variant:"caption",children:"Ajuda"})]}),jsxs(s,{"data-testid":"resource-docs",onClick:()=>window.open("https://docs.zydon.com.br","_blank","noopener noreferrer"),children:[jsx(a$3,{icon:"CODE_FOLDER",color:"primary.main"}),jsx(i,{variant:"caption",children:"Docs"})]})]})}),jsx(d,{}),jsxs(c,{direction:"row",children:[jsx(B,{"data-testid":"logout-button",startIcon:jsx(a$3,{icon:"LOGOUT_02"}),size:"small",onClick:L,loading:x,children:x?"Saindo...":"Sair"}),a$4(g)&&jsxs(p,{direction:"row",alignItems:"center",gap:1,children:[jsx(i,{variant:"overline",fontSize:11,color:"text.disabled",children:"Apar\xEAncia:"}),jsx(a$5,{})]})]})]})]})},rt=E;
29
29
 
30
30
  export { rt as default };
31
31
  //# sourceMappingURL=index.js.map