@zydon/common 2.9.35 → 2.9.36

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Analytics/OrderProjection/Calendar/index.tsx","../../../../src/components/Analytics/OrderProjection/CalendarCells/styles.ts","../../../../src/components/Analytics/OrderProjection/context.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/DayCell/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/DayCell/Summary/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/DayCell/Summary/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Header/DayCell/Summary/Tooltip.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/PartnerCell/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/PartnerCell/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Header/PartnerCell/Tooltip.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/DayColumn.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/Event/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventAlert/alertRegistry.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventAlert/styles.ts","../../../../src/components/Analytics/OrderProjection/Details/EventAlert/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/List/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderPlaced/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ErrorState.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderPlaced/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderPlanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderPlanned/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderUnplanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderUnplanned/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ShoppingCartAbandoned/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ShoppingCartAbandoned/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ShoppingCartActive/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ShoppingCartActive/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/PartnerInformations/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/PartnerInformations/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/styles.ts","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/OrderPlaced/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/Base/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/OrderPlanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/OrderUnplanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/ShoppingCartAbandoned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/ShoppingCartActive/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/tooltipRegistry.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/Event/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/GroupedEvents/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/GroupedEvents/Card.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/OrderPlaced/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/Base/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/OrderPlanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/OrderUnplanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/ShoppingCartAbandoned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/ShoppingCartActive/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/tooltipRegistry.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/GroupedEvents/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/index.tsx","../../../../src/components/Analytics/OrderProjection/PartnerStatus/index.tsx","../../../../src/components/Analytics/OrderProjection/PartnerStatus/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/Informations/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/Informations/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/LastSales/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/LastSales/Card.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/LastSales/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/Recurrence/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/SaleSummary/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/SaleSummary/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/SaleSummary/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Classifications/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Classifications/ClassificationOption/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/DateFilter/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/DateFilter/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Partners/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Profiles/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Status/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Status/StatusOption/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/ViewModeSelector/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/ViewModeSelector/props.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/ViewModeSelector/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/WeekNavigator/index.tsx"],"names":["useCallback","useMemo","CircularProgress","TableCell","TableRow","dayjs","styled","MuiTableRow","PartnerCell","prop","theme","cellAlign","Cell","isToday","Container","createContext","useContext","jsx","OrderProjectionContext","OrderProjectionProvider","adapters","slots","children","filters","useOrderProjectionFilters_default","value","useOrderProjectionContext","context","useOrderProjectionFilterContext","Stack","Typography","Skeleton","alpha","Label","ColoredLabel_default","Fragment","jsxs","Tooltip","day","summary","today","isFuture","counts","dateFormatted","summaryDay","d","Icon_default","Tooltip_default","Summary","isFetchingSummary","ordersPlacedCount","ordersExpectedCount","orderPlaced","orderUnplanned","orderPlanned","Result_default","Summary_default","DAY_LABELS","DayCell","index","resize","ColumnResizeHandle_default","DayCell_default","Button","ItemButton","active","open","onClose","onOpen","usePopover_default","ascending","setAscending","handleSetAscending","Skeleton_default","IconButton_default","MenuPopover_default","PartnerCell_default","MuiTableHead","TableHead","Header","days","getColumnResizeProps","PARTNER_COLUMN_KEY","getDayColumnKey","Header_default","memo","useState","Divider","ORDER_PLANNED_ALERT_BY_PERIOD","alertRegistry","config","getEventStyles","referenceDate","period","getPeriodInfo","icon","message","fToNow","MuiAlert","Alert","customBackground","customColor","EventAlert","origin","configGetter","EventAlert_default","LoadingButton","ErrorState","onRetry","isFetching","ErrorState_default","OrderPlacedSkeleton","OrderPlaced","eventId","useEventDetails","renderEventStatus","renderEventActions","event","isLoadingEvent","isFetchingEvent","isError","refetch","detailId","isBaseLoading","isSale","fDate","fCurrencyBRL","OrderPlaced_default","OrderPlannedSkeleton","isPast","OrderPlanned","renderSaleLink","isLoading","lastSaleId","lastSaleDate","getRecurrenceLabel","OrderPlanned_default","OrderUnplannedSkeleton","OrderUnplanned","OrderUnplanned_default","Link","ShoppingCartAbandonedSkeleton","ShoppingCartAbandoned","formatAddress","ShoppingCartAbandoned_default","ShoppingCartActiveSkeleton","ShoppingCartActive","ShoppingCartActive_default","EVENT_CONTENT_MAP","EventContent","Component","EventContent_default","List","events","getEventCode","evt","Accordion","AccordionSummary","AccordionDetails","List_default","PartnerInformationsSkeleton","PartnerInformations","partner","onPhoneUpdated","renderPartnerLink","renderPhoneEditor","cpfMaskOrCnpjMask","phoneMask","PartnerInformations_default","TypeChip","Details","primaryEvent","phoneUpdated","setPhoneUpdated","eventDetails","handlePhoneUpdated","phone","Drawer_default","Details_default","BaseTooltip","title","description","details","footer","Base_default","OrderPlacedTooltip","OrderPlannedTooltip","OrderUnplannedTooltip","ShoppingCartAbandonedTooltip","ShoppingCartActiveTooltip","iconProps","tooltipRegistry","Card","eventType","styles","IconBadge","Event","detailsOpen","toggleDetailsOpen","useToggle_default","Event_default","GroupedBaseTooltip","GroupedOrderPlacedTooltip","visibleEvents","MAX_VISIBLE_TOOLTIP_EVENTS","remaining","ICON_BY_PERIOD","TITLE_BY_PERIOD","DESCRIPTION_BY_PERIOD","GroupedOrderPlannedTooltip","GroupedOrderUnplannedTooltip","GroupedShoppingCartAbandonedTooltip","GroupedShoppingCartActiveTooltip","groupedTooltipRegistry","customHoverBackground","GroupedEventCard","group","count","label","TooltipContent","Card_default","GroupedEvents","grouped","groups","GroupedEvents_default","EventList","EventCell","shouldGroup","MAX_INDIVIDUAL_EVENTS","eventIndex","EventCell_default","DayColumn","DayColumn_default","useRef","Box","Dot","PartnerStatus","status","variant","color","statusOption","STATUS_OPTIONS","statusColor","PartnerStatus_default","Chip","InformationsSkeleton","Informations","expanded","toggleExpanded","partnerData","partnerPhone","fiscalRegistrationNumber","handlePhoneSuccess","Informations_default","order","SimpleCard_default","isEqual","LastSalesSkeleton","LastSales","queryParams","usePartnerOrders","orders","LastSales_default","Recurrence","recurrenceLabel","Recurrence_default","MuiDivider","SaleSummarySkeleton","SaleSummary","usePartnerSaleSummary","saleSummary","SaleSummary_default","setOpen","iconRef","localPhone","setLocalPhone","hasPhone","updatedPhone","saleCount","saleLabel","handleOpen","handleDetailsOpen","Row","eventsByDate","map","key","list","dayIndex","Row_default","MuiCard","MuiTable","MuiTableBody","MuiTableContainer","TableContainer","Table","totalWidth","isResizing","TableBody","Badge","Checkbox","FormControlLabel","ClassificationOption","classification","checked","onToggle","ClassificationOption_default","classifications","Status","Classifications","selectedClassifications","setSelectedClassifications","handleToggle","c","Classifications_default","PickersDay","getCircle","hover","radius","DateCalendarStyled","DateCalendar_default","StyledDay","isInRange","isStart","isEnd","isDaily","daysOfWeek","isSameDay","firstDate","secondDate","DateFilter","baseDate","dateRange","viewMode","handleBaseDateChange","startDate","endDate","handleChange","newValue","ownerState","DateFilter_default","Partners","selectedPartners","setSelectedPartners","inputValue","setInputValue","buildOptions","finishSearch","onSearch","onSelectValue","search","searching","useAutocomplete_default","usePartnerOptions","partners","options","id","name","hasPartners","handleSelectPartner","partnerId","partnerLabel","option","p","handleDeletePartner","Autocomplete_default","_","o","Partners_default","Profiles","selectedProfiles","setSelectedProfiles","useProfileOptions","profiles","hasProfiles","handleSelectProfile","profileId","profileLabel","handleDeleteProfile","profile","Profiles_default","StatusOption","EVENT_TYPE_OPTIONS","StatusOption_default","eventTypes","EventType","selectedEventTypes","setSelectedEventTypes","s","Status_default","Filters","Filters_default","MobileContainer","ToolbarSection","ToolbarSectionStart","ToolbarSectionCenter","ToolbarSectionEnd","VIEW_MODE_LABELS","VIEW_MODE_ICONS","ViewModeSelector","setViewMode","handleSetViewMode","mode","ViewModeSelector_default","WeekNavigator","visibleDays","handlePreviousWeek","handleNextWeek","dateLabel","start","end","sameMonth","sameYear","WeekNavigator_default","Toolbar","isMobile","useResponsive_default","activeFiltersCount","filtersOpen","toggleFiltersOpen","Toolbar_default","Calendar","onRowsScrollEnd","isFetchingNextPage","scrollRef","getDaysInRange","columns","PARTNER_COLUMN_MIN_WIDTH","PARTNER_COLUMN_DEFAULT_WIDTH","DAY_COLUMN_MIN_WIDTH","columnWidths","useResizableColumns_default","handleScroll","container","scrollTop","scrollHeight","clientHeight","SCROLL_END_THRESHOLD","column","Calendar_default"],"mappings":"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","sourcesContent":["import { useCallback, useMemo } from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\nimport dayjs from 'dayjs';\n\nimport {\n Cell,\n Container,\n PartnerCell,\n} from 'components/Analytics/OrderProjection/CalendarCells';\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport useResizableColumns from 'hooks/useResizableColumns';\nimport { ResizableColumn } from 'hooks/useResizableColumns.types';\nimport useResponsive from 'hooks/useResponsive';\nimport {\n DAY_COLUMN_MIN_WIDTH,\n getDayColumnKey,\n getDaysInRange,\n PARTNER_COLUMN_DEFAULT_WIDTH,\n PARTNER_COLUMN_KEY,\n PARTNER_COLUMN_MIN_WIDTH,\n SCROLL_END_THRESHOLD,\n} from 'utils/orderProjection';\n\nimport Header from './Header';\nimport { CalendarProps } from './props';\nimport Row from './Row';\nimport { Card, Table, TableBody, TableContainer } from './styles';\nimport Toolbar from './Toolbar';\n\nconst Calendar = ({\n partners,\n summary,\n isFetching,\n isFetchingSummary,\n onRowsScrollEnd,\n isFetchingNextPage,\n}: CalendarProps) => {\n const { dateRange, scrollRef } = useOrderProjectionFilterContext();\n\n const isMobile = useResponsive('down', 'sm');\n\n const days = useMemo(\n () => getDaysInRange(dateRange.start_date, dateRange.end_date),\n [dateRange.start_date, dateRange.end_date],\n );\n\n const columns = useMemo<ResizableColumn[]>(\n () => [\n {\n key: PARTNER_COLUMN_KEY,\n minWidth: PARTNER_COLUMN_MIN_WIDTH,\n defaultWidth: PARTNER_COLUMN_DEFAULT_WIDTH,\n },\n ...days.map((_, index) => ({\n key: getDayColumnKey(index),\n minWidth: DAY_COLUMN_MIN_WIDTH,\n })),\n ],\n [days],\n );\n\n const { columnWidths, totalWidth, isResizing, getColumnResizeProps } =\n useResizableColumns({\n columns,\n containerRef: scrollRef,\n enabled: !isMobile,\n });\n\n const handleScroll = useCallback(() => {\n const container = scrollRef.current;\n if (!container || isFetchingNextPage) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n const distanceToEnd = scrollHeight - scrollTop - clientHeight;\n\n if (distanceToEnd <= SCROLL_END_THRESHOLD) {\n onRowsScrollEnd();\n }\n }, [scrollRef, onRowsScrollEnd, isFetchingNextPage]);\n\n return (\n <Card variant=\"outlined\">\n <Toolbar />\n\n <TableContainer ref={scrollRef} onScroll={handleScroll}>\n <Table stickyHeader totalWidth={totalWidth} isResizing={isResizing}>\n {!!columnWidths.length && (\n <colgroup>\n {columnWidths.map((column, index) => (\n <col key={index} style={{ width: column.width }} />\n ))}\n </colgroup>\n )}\n\n <Header\n days={days}\n summary={summary}\n isFetchingSummary={isFetchingSummary}\n getColumnResizeProps={getColumnResizeProps}\n />\n\n <TableBody>\n {!partners.length && (\n <Container>\n <PartnerCell />\n\n {days.map((day, index) => (\n <Cell key={index} isToday={day.isSame(dayjs(), 'day')} />\n ))}\n </Container>\n )}\n\n {partners.map((partner, index) => (\n <Row\n key={partner.external_id}\n index={index}\n partner={partner}\n days={days}\n isFetching={isFetching}\n />\n ))}\n\n {isFetchingNextPage && (\n <TableRow>\n <TableCell\n colSpan={days.length + 1}\n align=\"center\"\n sx={{ py: 2, border: 'none' }}\n >\n <CircularProgress size={24} />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Card>\n );\n};\n\nexport default Calendar;\n","import { styled } from '@mui/material/styles';\nimport TableCell from '@mui/material/TableCell';\nimport MuiTableRow from '@mui/material/TableRow';\n\ninterface CellProps {\n isToday?: boolean;\n cellAlign?: 'top' | 'center' | 'bottom';\n}\n\nexport const PartnerCell = styled(TableCell, {\n shouldForwardProp: prop => prop !== 'cellAlign',\n})<CellProps>(({ theme, cellAlign = 'top' }) => ({\n position: 'sticky',\n left: 0,\n zIndex: 1,\n\n verticalAlign: cellAlign,\n\n backgroundColor: theme.palette.background.paper,\n\n [theme.breakpoints.down('sm')]: {\n width: '50%',\n minWidth: '50%',\n },\n}));\n\nexport const Cell = styled(TableCell, {\n shouldForwardProp: prop => prop !== 'isToday',\n})<CellProps>(({ theme, isToday }) => {\n const backgroundColor = isToday\n ? theme.palette.grey[200]\n : theme.palette.common.white;\n\n return {\n width: 'auto',\n minWidth: 'auto',\n overflow: 'hidden',\n\n backgroundColor: `${backgroundColor} !important`,\n\n verticalAlign: 'top',\n };\n});\n\nexport const Container = styled(MuiTableRow)(({ theme }) => ({\n '& .MuiTableCell-root': {\n padding: theme.spacing(1, 2),\n\n borderBottom: `1px solid ${theme.palette.divider} !important`,\n borderRight: `1px solid ${theme.palette.divider} !important`,\n\n '&:last-child': {\n borderRight: 'none !important',\n },\n },\n}));\n","import { createContext, useContext, useMemo } from 'react';\n\nimport useOrderProjectionFilters, {\n UseOrderProjectionFiltersReturn,\n} from 'hooks/useOrderProjectionFilters';\n\nimport { OrderProjectionProviderProps, OrderProjectionValue } from './props';\n\nconst OrderProjectionContext = createContext<OrderProjectionValue | null>(null);\n\nconst OrderProjectionProvider = ({\n adapters,\n slots,\n children,\n}: OrderProjectionProviderProps) => {\n const filters = useOrderProjectionFilters();\n\n const value = useMemo(\n () => ({ adapters, slots, filters }),\n [adapters, slots, filters],\n );\n\n return (\n <OrderProjectionContext.Provider value={value}>\n {children}\n </OrderProjectionContext.Provider>\n );\n};\n\nconst useOrderProjectionContext = (): OrderProjectionValue => {\n const context = useContext(OrderProjectionContext);\n\n if (!context) {\n throw new Error(\n 'useOrderProjectionContext must be used within an OrderProjectionProvider',\n );\n }\n\n return context;\n};\n\nconst useOrderProjectionFilterContext = (): UseOrderProjectionFiltersReturn =>\n useOrderProjectionContext().filters;\n\nexport {\n OrderProjectionProvider,\n useOrderProjectionContext,\n useOrderProjectionFilterContext,\n};\n","import TableRow from '@mui/material/TableRow';\n\nimport { getDayColumnKey, PARTNER_COLUMN_KEY } from 'utils/orderProjection';\n\nimport DayCell from './DayCell';\nimport PartnerCell from './PartnerCell';\nimport { HeaderProps } from './props';\nimport { TableHead } from './styles';\n\nconst Header = ({\n days,\n summary,\n isFetchingSummary,\n getColumnResizeProps,\n}: HeaderProps) => (\n <TableHead>\n <TableRow>\n <PartnerCell\n summary={summary}\n isFetchingSummary={isFetchingSummary}\n resize={getColumnResizeProps(PARTNER_COLUMN_KEY)}\n />\n\n {days.map((day, index) => (\n <DayCell\n key={index}\n index={index}\n day={day}\n summary={summary}\n isFetchingSummary={isFetchingSummary}\n resize={getColumnResizeProps(getDayColumnKey(index))}\n />\n ))}\n </TableRow>\n </TableHead>\n);\n\nexport default Header;\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport { Cell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport ColumnResizeHandle from 'components/ColumnResizeHandle';\n\nimport { DayCellProps } from './props';\nimport Summary from './Summary';\n\nconst DAY_LABELS = ['Dom.', 'Seg.', 'Ter.', 'Qua.', 'Qui.', 'Sex.', 'Sáb.'];\n\nconst DayCell = ({\n day,\n index,\n summary,\n isFetchingSummary,\n resize,\n}: DayCellProps) => {\n const isToday = day.isSame(dayjs(), 'day');\n\n return (\n <Cell isToday={isToday} data-testid={`day-cell-${index}`}>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n flexWrap=\"wrap\"\n gap={1}\n >\n <Stack>\n <Typography\n variant=\"subtitle2\"\n color={isToday ? 'primary.main' : 'text.secondary'}\n >\n {day.date()}\n </Typography>\n\n <Typography\n variant=\"body2\"\n fontSize={13}\n color={isToday ? 'primary.main' : 'text.secondary'}\n >\n {DAY_LABELS[day.day()]}\n </Typography>\n </Stack>\n\n <Summary\n day={day}\n summary={summary}\n isFetchingSummary={isFetchingSummary}\n />\n </Stack>\n\n {resize && (\n <ColumnResizeHandle\n label={`Redimensionar coluna ${day.format('DD/MM')}`}\n {...resize}\n />\n )}\n </Cell>\n );\n};\n\nexport default DayCell;\n","import { useMemo } from 'react';\nimport Skeleton from '@mui/material/Skeleton';\nimport dayjs from 'dayjs';\n\nimport Result from 'components/Result';\nimport MuiTooltip from 'components/Tooltip';\n\nimport { SummaryProps } from './props';\nimport { Label } from './styles';\nimport Tooltip from './Tooltip';\n\nconst Summary = ({ day, summary, isFetchingSummary }: SummaryProps) => {\n const isToday = day.isSame(dayjs(), 'day');\n\n const { ordersPlacedCount, ordersExpectedCount } = useMemo(() => {\n const dateFormatted = day.format('YYYY-MM-DD');\n const summaryDay = summary?.days.find(d => d.date === dateFormatted);\n\n const orderPlaced = summaryDay?.order_placed ?? 0;\n const orderUnplanned = summaryDay?.order_unplanned ?? 0;\n const orderPlanned = summaryDay?.order_planned ?? 0;\n\n return {\n ordersPlacedCount: orderPlaced + orderUnplanned,\n ordersExpectedCount: orderPlaced + orderUnplanned + orderPlanned,\n };\n }, [day, summary]);\n\n return (\n <Result\n isLoading={isFetchingSummary}\n loading={<Skeleton width={50} height={24} />}\n >\n <MuiTooltip title={<Tooltip day={day} summary={summary} />} arrow>\n <span>\n <Label\n variant=\"filled\"\n backgroundColor=\"#919EAB29\"\n color=\"text.secondary\"\n isToday={isToday}\n >\n {ordersPlacedCount} de {ordersExpectedCount}\n </Label>\n </span>\n </MuiTooltip>\n </Result>\n );\n};\n\nexport default Summary;\n","import { alpha, styled } from '@mui/material/styles';\n\nimport ColoredLabel from 'components/ColoredLabel';\n\nexport const Label = styled(ColoredLabel, {\n shouldForwardProp: prop => prop !== 'isToday',\n})<{ isToday: boolean }>(({ theme, isToday }) => ({\n color: isToday ? theme.palette.primary.main : theme.palette.text.secondary,\n backgroundColor: isToday\n ? alpha(theme.palette.primary.main, 0.15)\n : alpha(theme.palette.grey[500], 0.15),\n\n cursor: 'pointer',\n}));\n","import { useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport Icon from 'components/Icon';\n\nimport { TooltipProps } from './props';\n\nconst Tooltip = ({ day, summary }: TooltipProps) => {\n const today = useMemo(() => dayjs().startOf('day'), []);\n\n const isFuture = day.isAfter(today, 'day');\n\n const counts = useMemo(() => {\n const dateFormatted = day.format('YYYY-MM-DD');\n const summaryDay = summary?.days.find(d => d.date === dateFormatted);\n\n return {\n shopping_cart_active: summaryDay?.shopping_cart_active ?? 0,\n order_placed: summaryDay?.order_placed ?? 0,\n order_unplanned: summaryDay?.order_unplanned ?? 0,\n order_planned: summaryDay?.order_planned ?? 0,\n shopping_cart_abandoned: summaryDay?.shopping_cart_abandoned ?? 0,\n };\n }, [day, summary]);\n\n return (\n <Stack gap={1.5}>\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Icon icon=\"CALENDAR_TODAY\" color=\"grey.400\" />\n\n <Typography variant=\"caption\" fontWeight=\"bold\">\n Pedidos\n </Typography>\n </Stack>\n\n <Stack gap={0.5}>\n {!isFuture && (\n <>\n <Typography variant=\"caption\">\n Pedidos em andamento:{' '}\n <strong>{counts.shopping_cart_active}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Pedidos realizados: <strong>{counts.order_placed}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Pedidos fora do padrão: <strong>{counts.order_unplanned}</strong>\n </Typography>\n </>\n )}\n\n <Typography variant=\"caption\">\n Pedidos previstos: <strong>{counts.order_planned}</strong>\n </Typography>\n\n {!isFuture && (\n <Typography variant=\"caption\">\n Carrinhos abandonados:{' '}\n <strong>{counts.shopping_cart_abandoned}</strong>\n </Typography>\n )}\n </Stack>\n </Stack>\n );\n};\n\nexport default Tooltip;\n","'use client';\nimport { useCallback } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { PartnerCell as StyledPartnerCell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport ColoredLabel from 'components/ColoredLabel';\nimport ColumnResizeHandle from 'components/ColumnResizeHandle';\nimport IconButton from 'components/IconButton';\nimport MenuPopover from 'components/MenuPopover';\nimport Result from 'components/Result';\nimport Skeleton from 'components/Skeleton';\nimport MuiTooltip from 'components/Tooltip';\nimport usePopover from 'hooks/usePopover';\n\nimport { PartnerCellProps } from './props';\nimport { ItemButton } from './styles';\nimport Tooltip from './Tooltip';\n\nconst PartnerCell = ({\n summary,\n isFetchingSummary,\n resize,\n}: PartnerCellProps) => {\n const { open, onClose, onOpen } = usePopover();\n const { ascending, setAscending } = useOrderProjectionFilterContext();\n\n const handleSetAscending = useCallback(\n (value: boolean) => {\n setAscending(value);\n onClose();\n },\n [onClose, setAscending],\n );\n\n return (\n <>\n <StyledPartnerCell cellAlign=\"center\">\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n flexWrap=\"wrap\"\n gap={1}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Typography variant=\"caption\" color=\"text.primary\">\n Clientes\n </Typography>\n\n <Result\n isLoading={isFetchingSummary}\n loading={<Skeleton width={26} height={24} />}\n >\n <MuiTooltip title={<Tooltip summary={summary} />} arrow>\n <span>\n <ColoredLabel\n variant=\"filled\"\n backgroundColor=\"#919EAB29\"\n color=\"text.secondary\"\n sx={{ cursor: 'pointer' }}\n >\n {summary?.partner_count ?? 0}\n </ColoredLabel>\n </span>\n </MuiTooltip>\n </Result>\n </Stack>\n\n <IconButton\n label=\"Selecionar ordenação\"\n icon=\"SORTING_AZ_02\"\n color=\"text.secondary\"\n size=\"small\"\n onClick={onOpen}\n />\n </Stack>\n\n {resize && (\n <ColumnResizeHandle\n label=\"Redimensionar coluna Clientes\"\n {...resize}\n />\n )}\n </StyledPartnerCell>\n\n <MenuPopover\n open={open}\n onClose={onClose}\n disabledArrow\n sx={{ width: 180, p: 1 }}\n >\n <ItemButton\n variant=\"text\"\n onClick={() => handleSetAscending(true)}\n active={ascending}\n fullWidth\n >\n De A à Z\n </ItemButton>\n\n <ItemButton\n variant=\"text\"\n onClick={() => handleSetAscending(false)}\n active={!ascending}\n fullWidth\n >\n De Z à A\n </ItemButton>\n </MenuPopover>\n </>\n );\n};\n\nexport default PartnerCell;\n","import Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\ninterface ItemButtonProps {\n active?: boolean;\n}\n\nexport const ItemButton = styled(Button, {\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 Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nimport { TooltipProps } from './props';\n\nconst Tooltip = ({ summary }: TooltipProps) => {\n return (\n <Stack gap={1.5}>\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Icon icon=\"USER_GROUP\" color=\"grey.400\" />\n\n <Typography variant=\"caption\" fontWeight=\"bold\">\n Clientes\n </Typography>\n </Stack>\n\n <Stack gap={0.5}>\n <Typography variant=\"caption\">\n Total de clientes: <strong>{summary?.partner_count ?? 0}</strong>\n </Typography>\n </Stack>\n </Stack>\n );\n};\n\nexport default Tooltip;\n","import { styled } from '@mui/material/styles';\nimport MuiTableHead from '@mui/material/TableHead';\n\nexport const TableHead = styled(MuiTableHead)(({ theme }) => ({\n '& .MuiTableCell-root': {\n padding: theme.spacing(1, 2),\n\n borderTop: `1px solid ${theme.palette.divider} !important`,\n borderBottom: `1px solid ${theme.palette.divider} !important`,\n borderRight: `1px solid ${theme.palette.divider} !important`,\n\n background: theme.palette.common.white,\n\n '&:last-child': {\n borderRight: 'none !important',\n },\n },\n\n '& .MuiTableCell-root:first-of-type': {\n zIndex: 3,\n },\n}));\n","import { memo, useMemo } from 'react';\n\nimport { Container } from 'components/Analytics/OrderProjection/CalendarCells';\nimport { Event } from 'types/orderProjection';\n\nimport DayColumn from './DayColumn';\nimport PartnerCell from './PartnerCell';\nimport { RowProps } from './props';\n\nconst Row = ({ partner, index, days, isFetching }: RowProps) => {\n const eventsByDate = useMemo(() => {\n const map = new Map<string, Event[]>();\n\n partner.events.forEach(event => {\n const key = new Date(event.reference_date).toISOString().slice(0, 10);\n const list = map.get(key) ?? [];\n list.push(event);\n map.set(key, list);\n });\n\n return map;\n }, [partner.events]);\n\n return (\n <Container data-testid={`partner-${index}`}>\n <PartnerCell partner={partner} />\n\n {days.map((day, dayIndex) => (\n <DayColumn\n key={dayIndex}\n index={dayIndex}\n day={day}\n events={eventsByDate.get(day.format('YYYY-MM-DD')) ?? []}\n isFetching={isFetching}\n />\n ))}\n </Container>\n );\n};\n\nexport default memo(Row);\n","import dayjs from 'dayjs';\n\nimport { Cell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport Skeleton from 'components/Skeleton';\n\nimport EventCell from './EventCell';\nimport { DayColumnProps } from './props';\n\nconst DayColumn = ({ day, index, events, isFetching }: DayColumnProps) => {\n const isToday = day.isSame(dayjs(), 'day');\n\n if (isFetching)\n return (\n <Cell isToday={isToday} data-testid={`day-column-${index}`}>\n <Skeleton width=\"100%\" height=\"100%\" sx={{ maxHeight: 46.42 }} />\n </Cell>\n );\n\n return <EventCell events={events} day={day} index={index} />;\n};\n\nexport default DayColumn;\n","import dayjs from 'dayjs';\n\nimport { Cell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport { MAX_INDIVIDUAL_EVENTS } from 'utils/orderProjection';\n\nimport Event from './Event';\nimport GroupedEvents from './GroupedEvents';\nimport { EventCellProps } from './props';\nimport { EventList } from './styles';\n\nconst EventCell = ({ events, day, index }: EventCellProps) => {\n const isToday = day.isSame(dayjs(), 'day');\n\n if (events.length === 0)\n return <Cell isToday={isToday} data-testid={`day-column-${index}`} />;\n\n const shouldGroup = events.length > MAX_INDIVIDUAL_EVENTS;\n\n return (\n <Cell isToday={isToday} data-testid={`day-column-${index}`}>\n <EventList>\n {shouldGroup ? (\n <GroupedEvents events={events} />\n ) : (\n events.map((event, eventIndex) => (\n <Event key={eventIndex} index={eventIndex} event={event} />\n ))\n )}\n </EventList>\n </Cell>\n );\n};\n\nexport default EventCell;\n","import Typography from '@mui/material/Typography';\n\nimport Details from 'components/Analytics/OrderProjection/Details';\nimport { tooltipRegistry } from 'components/Analytics/OrderProjection/Tooltips/Single/tooltipRegistry';\nimport Tooltip from 'components/Tooltip';\nimport useToggle from 'hooks/useToggle';\nimport { getPeriodInfo } from 'utils/orderProjection';\n\nimport { EventProps } from './props';\nimport { Card, IconBadge } from './styles';\n\nconst Event = ({ event, index }: EventProps) => {\n const [detailsOpen, toggleDetailsOpen] = useToggle();\n const config = tooltipRegistry[event.type];\n\n if (!config) return null;\n\n const { period } = getPeriodInfo(event.reference_date);\n const icon = config.getIcon(event);\n\n return (\n <>\n <Tooltip title={config.getTooltip(event)} arrow>\n <Card\n data-testid={`event-${index}`}\n eventType={event.type}\n period={period}\n onClick={toggleDetailsOpen}\n >\n {icon && (\n <IconBadge eventType={event.type} period={period}>\n {icon}\n </IconBadge>\n )}\n\n <Typography variant=\"subtitle2\" fontSize={13} noWrap>\n {config.getTitle(event)}\n </Typography>\n\n <Typography variant=\"caption\" noWrap>\n {config.getDescription(event)}\n </Typography>\n </Card>\n </Tooltip>\n\n <Details\n open={detailsOpen}\n onClose={toggleDetailsOpen}\n events={[event]}\n />\n </>\n );\n};\n\nexport default Event;\n","import { useCallback, useState } from 'react';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Drawer from 'components/Drawer';\nimport { getEventStyles, getPeriodInfo } from 'utils/orderProjection';\n\nimport EventAlert from './EventAlert';\nimport List from './List';\nimport PartnerInformations from './PartnerInformations';\nimport { DetailsProps } from './props';\nimport { TypeChip } from './styles';\n\nconst Details = ({ open, onClose, events }: DetailsProps) => {\n const primaryEvent = events[0];\n const [phoneUpdated, setPhoneUpdated] = useState<string>();\n\n const { useEventDetails } = useOrderProjectionContext().adapters;\n\n const {\n data: eventDetails,\n isLoading,\n refetch,\n } = useEventDetails(primaryEvent?.id ?? '', {\n skip: !open || !primaryEvent?.id,\n });\n\n const { period } = getPeriodInfo(primaryEvent?.reference_date ?? new Date());\n\n const config = getEventStyles(primaryEvent?.type, period);\n\n const handlePhoneUpdated = useCallback(\n (phone: string) => {\n // backend está demorando para retornar o telefone atualizado\n setPhoneUpdated(phone);\n refetch();\n },\n [refetch],\n );\n\n return (\n <Drawer\n open={open}\n onClose={onClose}\n headerTitle={\n <>\n Detalhes{' '}\n <TypeChip\n customBackground={config.background}\n customColor={config.color}\n >\n <Typography variant=\"subtitle2\" fontSize={13} noWrap>\n {config.label}\n </Typography>\n </TypeChip>\n </>\n }\n headerProps={{ direction: 'row-reverse' }}\n contentProps={{ p: 0 }}\n maxWidth={520}\n >\n <Stack position=\"sticky\" top={0} zIndex={9}>\n <EventAlert\n origin={primaryEvent?.type}\n referenceDate={primaryEvent?.reference_date}\n />\n </Stack>\n\n <PartnerInformations\n partner={\n eventDetails?.partner\n ? {\n ...eventDetails.partner,\n phone: phoneUpdated ?? eventDetails.partner.phone,\n }\n : undefined\n }\n isLoading={isLoading}\n onPhoneUpdated={handlePhoneUpdated}\n />\n\n <Divider />\n\n <List events={events} />\n </Drawer>\n );\n};\n\nexport default Details;\n","import { ReactNode } from 'react';\n\nimport Icon from 'components/Icon';\nimport { EventType, Period } from 'types/orderProjection';\nimport { fToNow } from 'utils/formatTime';\nimport { getEventStyles, getPeriodInfo } from 'utils/orderProjection';\n\nimport { AlertConfigGetter } from './props';\n\nconst ORDER_PLANNED_ALERT_BY_PERIOD: Record<\n Period,\n { icon: ReactNode; message: ReactNode }\n> = {\n [Period.PAST]: {\n icon: <Icon icon=\"HEXAGON_WARNING\" color=\"#FF5630\" width={24} />,\n message: (\n <>\n O cliente deveria ter feito pedido, conforme sua frequência de compra,\n mas nenhum pedido foi registrado. Esse comportamento pode indicar{' '}\n <strong>queda de engajamento</strong> ou{' '}\n <strong>risco de inativação</strong>.\n </>\n ),\n },\n [Period.TODAY]: {\n icon: <Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" width={24} />,\n message: (\n <>\n Conforme a frequência de compra deste cliente, um pedido era esperado\n hoje, mas nenhum registro foi feito até o momento.\n </>\n ),\n },\n [Period.FUTURE]: {\n icon: <Icon icon=\"INFO\" color=\"common.black\" width={24} />,\n message: (\n <>\n Baseado na rotina de compras identificada.{' '}\n <strong>Nenhuma ação é necessária no momento</strong>.\n </>\n ),\n },\n};\n\nexport const alertRegistry: Partial<Record<EventType, AlertConfigGetter>> = {\n [EventType.ORDER_UNPLANNED]: () => {\n const config = getEventStyles(EventType.ORDER_UNPLANNED);\n\n return {\n icon: <Icon icon=\"INFO\" color=\"#00B8D9\" width={24} />,\n message: (\n <>\n O cliente realizou um pedido em um dia diferente da sua rotina\n habitual. Isso pode indicar uma{' '}\n <strong>mudança de comportamento de compra</strong> ou uma{' '}\n <strong>demanda excepcional</strong>.\n </>\n ),\n background: config.background,\n color: config.color,\n };\n },\n\n [EventType.ORDER_PLANNED]: ({ referenceDate }) => {\n const { period } = getPeriodInfo(referenceDate || new Date());\n const config = getEventStyles(EventType.ORDER_PLANNED, period);\n const { icon, message } = ORDER_PLANNED_ALERT_BY_PERIOD[period];\n\n return {\n icon,\n message,\n background: config.background,\n color: config.color,\n };\n },\n\n [EventType.SHOPPING_CART_ACTIVE]: () => {\n const config = getEventStyles(EventType.SHOPPING_CART_ACTIVE);\n\n return {\n icon: <Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" width={24} />,\n message: <>O cliente está atualizando o carrinho neste momento.</>,\n background: config.background,\n color: config.color,\n };\n },\n\n [EventType.SHOPPING_CART_ABANDONED]: ({ referenceDate }) => {\n const config = getEventStyles(EventType.SHOPPING_CART_ABANDONED);\n\n return {\n icon: <Icon icon=\"HEXAGON_WARNING\" color=\"#FF5630\" width={24} />,\n message: (\n <>\n Carrinho está abandonado há <strong>{fToNow(referenceDate)}</strong>.\n </>\n ),\n background: config.background,\n color: config.color,\n };\n },\n};\n","import MuiAlert from '@mui/material/Alert';\nimport { styled } from '@mui/material/styles';\n\ninterface AlertProps {\n customBackground?: string;\n customColor?: string;\n}\n\nexport const Alert = styled(MuiAlert, {\n shouldForwardProp: prop =>\n prop !== 'customBackground' && prop !== 'customColor',\n})<AlertProps>(({ theme, customBackground, customColor }) => ({\n padding: theme.spacing(1.5, 2),\n borderRadius: 0,\n borderBottom: `1px solid ${theme.palette.divider}`,\n background: customBackground,\n color: customColor,\n}));\n","import { alertRegistry } from './alertRegistry';\nimport { EventAlertProps } from './props';\nimport { Alert } from './styles';\n\nconst EventAlert = ({ origin, referenceDate }: EventAlertProps) => {\n const configGetter = alertRegistry[origin];\n\n if (!configGetter) return null;\n\n const config = configGetter({ origin, referenceDate });\n\n if (!config) return null;\n\n return (\n <Alert\n icon={config.icon}\n customBackground={config.background}\n customColor={config.color}\n >\n {config.message}\n </Alert>\n );\n};\n\nexport default EventAlert;\n","import Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\n\nimport EventContent from '../EventContent';\n\nimport { ListProps } from './props';\n\nconst List = ({ events }: ListProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n if (events.length <= 1) {\n const event = events[0];\n\n if (!event) return null;\n\n return <EventContent origin={event.type} eventId={event.id} />;\n }\n\n return (\n <>\n {events.map(evt => (\n <Accordion\n key={evt.id}\n slotProps={{ transition: { unmountOnExit: true } }}\n >\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Pedido:&ensp;\n <Typography\n component=\"span\"\n variant=\"body2\"\n fontWeight={600}\n color=\"text.primary\"\n >\n #{getEventCode(evt)}\n </Typography>\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails sx={{ p: 0, mt: -2 }}>\n <EventContent origin={evt.type} eventId={evt.id} />\n </AccordionDetails>\n </Accordion>\n ))}\n </>\n );\n};\n\nexport default List;\n","import Alert from '@mui/material/Alert';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport { ExternalOrigin } from 'types/orderProjection';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport OrderPlacedSkeleton from './Skeleton';\n\nconst OrderPlaced = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { renderEventStatus, renderEventActions } = slots;\n\n const {\n data: event,\n isLoading: isLoadingEvent,\n isFetching: isFetchingEvent,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n const detailId =\n event?.detail?.sale_external_id || event?.detail?.external_id;\n const isBaseLoading = isLoadingEvent || isFetchingEvent;\n\n const isSale = event?.external_origin === ExternalOrigin.SALE;\n const isPageLoading = isBaseLoading;\n\n return (\n <Result\n isLoading={isPageLoading}\n loading={<OrderPlacedSkeleton />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do pedido realizado!\"\n onRetry={refetch}\n isFetching={isFetchingEvent}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do pedido\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ID\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {detailId ? `#${detailId}` : '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data e hora\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fDate(event?.detail?.created_at, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fCurrencyBRL(event?.detail?.total_value ?? event?.amount_value)}\n </Typography>\n </Stack>\n\n {event && renderEventStatus?.(event)}\n </Stack>\n\n <Stack gap={1.5}>\n {event && renderEventActions?.(event)}\n\n {!isSale && (\n <Alert severity=\"warning\">\n Este pedido foi importado do ERP. Para visualizar detalhes ou\n realizar ações, acesse o sistema ERP.\n </Alert>\n )}\n </Stack>\n </Stack>\n </Result>\n );\n};\n\nexport default OrderPlaced;\n","import LoadingButton from '@mui/lab/LoadingButton';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nimport { ErrorStateProps } from './props';\n\nconst ErrorState = ({ message, onRetry, isFetching }: ErrorStateProps) => (\n <Stack alignItems=\"center\" justifyContent=\"center\" p={3} gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {message}\n </Typography>\n\n <LoadingButton\n variant=\"text\"\n startIcon={<Icon icon=\"REFRESH_CHANGE\" />}\n size=\"small\"\n onClick={onRetry}\n loading={isFetching}\n >\n Tentar novamente\n </LoadingButton>\n </Stack>\n);\n\nexport default ErrorState;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nconst OrderPlacedSkeleton = () => {\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do pedido\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ID\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data e hora\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do pedido\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Status do pedido\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n </Stack>\n\n <Stack\n display=\"grid\"\n gridTemplateColumns={{ xs: '1fr', sm: '1fr 1fr' }}\n gap={1.5}\n >\n <Skeleton width=\"100%\" height={30} />\n\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n </Stack>\n );\n};\n\nexport default OrderPlacedSkeleton;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport { Period } from 'types/orderProjection';\nimport { fDate, fToNow } from 'utils/formatTime';\nimport { getPeriodInfo, getRecurrenceLabel } from 'utils/orderProjection';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport OrderPlannedSkeleton from './Skeleton';\n\nconst OrderPlanned = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { renderEventActions, renderSaleLink } = slots;\n\n const {\n data: event,\n isLoading,\n isFetching,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n const { period } = getPeriodInfo(event?.reference_date ?? new Date());\n const isPast = period === Period.PAST;\n const isFuture = period === Period.FUTURE;\n\n const lastSaleId =\n event?.partner?.sale_analysis?.last_sale_sale_external_id ||\n event?.partner?.sale_analysis?.last_sale_external_id;\n const lastSaleDate =\n event?.partner?.sale_analysis?.last_sale_negotiation_date;\n\n return (\n <Result\n isLoading={isLoading}\n loading={<OrderPlannedSkeleton period={period} />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do pedido previsto!\"\n onRetry={refetch}\n isFetching={isFetching}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n {isFuture ? 'Comportamento de compra' : 'Resumo'}\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data prevista\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fDate(event?.reference_date, 'DD/MM/YYYY')}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {getRecurrenceLabel(event?.partner?.recurrence)}\n </Typography>\n </Stack>\n\n {isPast && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Período desde o último pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {lastSaleDate ? fToNow(lastSaleDate) : '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Último pedido\n </Typography>\n\n {lastSaleId ? (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n {renderSaleLink?.(lastSaleId)}\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n em {fDate(lastSaleDate, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n -\n </Typography>\n )}\n </Stack>\n </>\n )}\n </Stack>\n\n {event && renderEventActions?.(event)}\n </Stack>\n </Result>\n );\n};\n\nexport default OrderPlanned;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\nimport { Period } from 'types/orderProjection';\n\nimport { OrderPlannedSkeletonProps } from './props';\n\nconst OrderPlannedSkeleton = ({ period }: OrderPlannedSkeletonProps) => {\n const isPast = period === Period.PAST;\n const isFuture = period === Period.FUTURE;\n\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n {isFuture ? 'Comportamento de compra' : 'Resumo'}\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data prevista\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n {isPast && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Período desde o último pedido\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Último pedido\n </Typography>\n\n <Skeleton width=\"50%\" height={22} />\n </Stack>\n </>\n )}\n </Stack>\n\n <Stack\n display=\"grid\"\n gridTemplateColumns={{ xs: '1fr', sm: '1fr 1fr' }}\n gap={1}\n >\n <Skeleton width=\"100%\" height={30} />\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n </Stack>\n );\n};\n\nexport default OrderPlannedSkeleton;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { getRecurrenceLabel } from 'utils/orderProjection';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport OrderUnplannedSkeleton from './Skeleton';\n\nconst OrderUnplanned = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { renderEventActions } = slots;\n\n const {\n data: event,\n isLoading,\n isFetching,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n const detailId =\n event?.detail?.sale_external_id || event?.detail?.external_id;\n\n return (\n <Result\n isLoading={isLoading}\n loading={<OrderUnplannedSkeleton />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do pedido!\"\n onRetry={refetch}\n isFetching={isFetching}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do pedido\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ID\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {detailId ? `#${detailId}` : '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data e hora\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fDate(event?.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fCurrencyBRL(event?.amount_value)}\n </Typography>\n </Stack>\n </Stack>\n\n <Divider sx={{ mx: -3 }} />\n\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Comportamento de compra\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {getRecurrenceLabel(event?.partner?.recurrence)}\n </Typography>\n </Stack>\n </Stack>\n\n {event && renderEventActions?.(event)}\n </Stack>\n </Result>\n );\n};\n\nexport default OrderUnplanned;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nconst OrderUnplannedSkeleton = () => {\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do pedido\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ID\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data e hora\n </Typography>\n\n <Skeleton width=\"25%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do pedido\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n </Stack>\n\n <Divider sx={{ mx: -3 }} />\n\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Comportamento de compra\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Skeleton width=\"35%\" height={22} />\n </Stack>\n </Stack>\n\n <Stack\n display=\"grid\"\n gridTemplateColumns={{ xs: '1fr', sm: '1fr 1fr' }}\n gap={1}\n >\n <Skeleton width=\"100%\" height={30} />\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n </Stack>\n );\n};\nexport default OrderUnplannedSkeleton;\n","import Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport ShoppingCartAbandonedSkeleton from './Skeleton';\n\nconst ShoppingCartAbandoned = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { formatAddress } = slots;\n\n const {\n data: event,\n isLoading,\n isFetching,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n return (\n <Result\n isLoading={isLoading}\n loading={<ShoppingCartAbandonedSkeleton />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do carrinho abandonado!\"\n onRetry={refetch}\n isFetching={isFetching}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações do carrinho\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Tempo decorrido desde o abandono\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fDate(event?.detail?.abandoned_at, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Modelo de pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {event?.detail?.new_order?.name ?? '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Forma de pagamento\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {event?.detail?.payment_method?.name ?? '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do carrinho\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fCurrencyBRL(event?.detail?.total ?? event?.amount_value)}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Endereço\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {formatAddress(event?.detail?.address)}\n </Typography>\n </Stack>\n </Stack>\n\n <Button\n component={Link}\n href={`https://wa.me/${event?.partner?.phone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outlined\"\n startIcon={<Icon icon=\"WHATSAPP\" color=\"success.main\" />}\n color=\"inherit\"\n size=\"small\"\n disabled={!event?.partner?.phone}\n >\n Enviar mensagem\n </Button>\n </Stack>\n </Result>\n );\n};\n\nexport default ShoppingCartAbandoned;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nconst ShoppingCartAbandonedSkeleton = () => {\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações do carrinho\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Tempo decorrido desde o abandono\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Modelo de pedido\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Forma de pagamento\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do carrinho\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Endereço\n </Typography>\n\n <Skeleton width=\"80%\" height={22} />\n </Stack>\n </Stack>\n\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n );\n};\n\nexport default ShoppingCartAbandonedSkeleton;\n","import Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport { fCurrencyBRL } from 'utils/formatNumber';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport ShoppingCartActiveSkeleton from './Skeleton';\n\nconst ShoppingCartActive = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { formatAddress } = slots;\n\n const {\n data: event,\n isLoading,\n isFetching,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n return (\n <Result\n isLoading={isLoading}\n loading={<ShoppingCartActiveSkeleton />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do carrinho!\"\n onRetry={refetch}\n isFetching={isFetching}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do carrinho\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Modelo de pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {event?.detail?.new_order?.name ?? '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Forma de pagamento\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {event?.detail?.payment_method?.name ?? '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do carrinho\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fCurrencyBRL(event?.detail?.total ?? event?.amount_value)}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Endereço\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {formatAddress(event?.detail?.address)}\n </Typography>\n </Stack>\n </Stack>\n\n <Button\n component={Link}\n href={`https://wa.me/${event?.partner?.phone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outlined\"\n startIcon={<Icon icon=\"WHATSAPP\" color=\"success.main\" />}\n color=\"inherit\"\n size=\"small\"\n disabled={!event?.partner?.phone}\n >\n Enviar mensagem\n </Button>\n </Stack>\n </Result>\n );\n};\n\nexport default ShoppingCartActive;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nconst ShoppingCartActiveSkeleton = () => {\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do carrinho\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Modelo de pedido\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Forma de pagamento\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do carrinho\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Endereço\n </Typography>\n\n <Skeleton width=\"80%\" height={22} />\n </Stack>\n </Stack>\n\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n );\n};\n\nexport default ShoppingCartActiveSkeleton;\n","import { EventType } from 'types/orderProjection';\n\nimport OrderPlaced from './OrderPlaced';\nimport OrderPlanned from './OrderPlanned';\nimport OrderUnplanned from './OrderUnplanned';\nimport { EventContentProps, EventContentRouterProps } from './props';\nimport ShoppingCartAbandoned from './ShoppingCartAbandoned';\nimport ShoppingCartActive from './ShoppingCartActive';\n\nconst EVENT_CONTENT_MAP: Record<\n EventType,\n React.ComponentType<EventContentProps>\n> = {\n [EventType.ORDER_PLACED]: OrderPlaced,\n [EventType.ORDER_UNPLANNED]: OrderUnplanned,\n [EventType.ORDER_PLANNED]: OrderPlanned,\n [EventType.SHOPPING_CART_ACTIVE]: ShoppingCartActive,\n [EventType.SHOPPING_CART_ABANDONED]: ShoppingCartAbandoned,\n};\n\nconst EventContent = ({ origin, eventId }: EventContentRouterProps) => {\n const Component = EVENT_CONTENT_MAP[origin];\n\n if (!Component) return null;\n\n return <Component eventId={eventId} />;\n};\n\nexport default EventContent;\n","import Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport { cpfMaskOrCnpjMask, phoneMask } from 'utils/mask';\n\nimport { PartnerInformationsProps } from './props';\nimport PartnerInformationsSkeleton from './Skeleton';\n\nconst PartnerInformations = ({\n partner,\n isLoading,\n onPhoneUpdated,\n}: PartnerInformationsProps) => {\n const { renderPartnerLink, renderPhoneEditor } =\n useOrderProjectionContext().slots;\n\n return (\n <Result isLoading={isLoading} loading={<PartnerInformationsSkeleton />}>\n <Stack p={3} gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações do cliente\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome\n </Typography>\n\n {renderPartnerLink ? (\n renderPartnerLink(partner)\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partner?.name || '-'}\n </Typography>\n )}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n CPF/CNPJ\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {partner?.tax_id ? cpfMaskOrCnpjMask(partner.tax_id) : '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n {partner?.phone ? (\n <Link\n href={`https://wa.me/${partner.phone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n color=\"#22C55E\"\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Icon icon=\"WHATSAPP\" color=\"#22C55E\" />\n\n <Typography variant=\"subtitle2\" color=\"success.main\">\n {phoneMask(partner.phone)}\n </Typography>\n </Stack>\n </Link>\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n\n {renderPhoneEditor?.(\n partner?.external_id ?? '',\n onPhoneUpdated ?? (() => {}),\n )}\n </Stack>\n </Stack>\n </Result>\n );\n};\n\nexport default PartnerInformations;\n","import Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport Skeleton from 'components/Skeleton';\n\nconst PartnerInformationsSkeleton = () => (\n <Stack p={3} gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações do cliente\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n CPF/CNPJ\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n <Skeleton width=\"100%\" height={22} />\n </Stack>\n\n <Button\n variant=\"text\"\n startIcon={<Icon icon=\"PENCIL_EDIT\" />}\n color=\"inherit\"\n size=\"small\"\n disabled\n >\n Editar\n </Button>\n </Stack>\n </Stack>\n);\n\nexport default PartnerInformationsSkeleton;\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\ninterface TypeChipProps {\n customBackground: string;\n customColor: string;\n}\n\nexport const TypeChip = styled(Stack, {\n shouldForwardProp: prop =>\n prop !== 'customBackground' && prop !== 'customColor',\n})<TypeChipProps>(({ theme, customBackground, customColor }) => ({\n padding: theme.spacing(0.5, 1),\n borderRadius: 4,\n background: customBackground,\n color: customColor,\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst OrderPlacedTooltip = ({ event }: SingleTooltipProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n return (\n <BaseTooltip\n icon={<Icon icon=\"CHECK_CIRCLE\" color=\"#22C55E\" />}\n title=\"Pedido realizado\"\n description=\"Pedido realizado com sucesso!\"\n details={\n <>\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>\n {getEventCode(event) ? `#${getEventCode(event)}` : '-'}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Data e hora:{' '}\n <strong>\n {fDate(event.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </>\n }\n />\n );\n};\n\nexport default OrderPlacedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { BaseTooltipProps } from './props';\n\nconst BaseTooltip = ({\n icon,\n title,\n description,\n details,\n footer,\n}: BaseTooltipProps) => (\n <Stack gap={1}>\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n {icon}\n\n <Typography variant=\"caption\" fontWeight=\"bold\">\n {title}\n </Typography>\n </Stack>\n\n <Typography variant=\"caption\">{description}</Typography>\n\n {details && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n <Stack>{details}</Stack>\n </>\n )}\n\n {footer && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n {footer}\n </>\n )}\n </Stack>\n);\n\nexport default BaseTooltip;\n","import Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { Period } from 'types/orderProjection';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { getPeriodInfo } from 'utils/orderProjection';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst OrderPlannedTooltip = ({ event }: SingleTooltipProps) => {\n const { period } = getPeriodInfo(event.reference_date);\n\n if (period === Period.PAST) {\n return (\n <BaseTooltip\n icon={<Icon icon=\"HEXAGON_WARNING\" color=\"#FF5630\" />}\n title=\"Pedido não realizado\"\n description=\"Cliente não realizou o pedido previsto na data esperada.\"\n details={\n <Typography variant=\"caption\">\n Data prevista:{' '}\n <strong>{fDate(event.reference_date, 'DD/MM/YYYY')}</strong>\n </Typography>\n }\n />\n );\n }\n\n if (period === Period.TODAY) {\n return (\n <BaseTooltip\n icon={<Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" />}\n title=\"Pedido previsto para hoje\"\n description=\"Nenhum pedido registrado até o momento.\"\n details={\n <Typography variant=\"caption\">\n Valor previsto: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n }\n />\n );\n }\n\n return (\n <BaseTooltip\n icon={<Icon icon=\"CALENDAR_TODAY\" color=\"#C4CDD5\" />}\n title=\"Pedido previsto\"\n description=\"Próximo pedido estimado conforme padrão de frequência.\"\n details={\n <Typography variant=\"caption\">\n Data prevista:{' '}\n <strong>{fDate(event.reference_date, 'DD/MM/YYYY')}</strong>\n </Typography>\n }\n />\n );\n};\n\nexport default OrderPlannedTooltip;\n","import Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst OrderUnplannedTooltip = ({ event }: SingleTooltipProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n return (\n <BaseTooltip\n icon={<Icon icon=\"INFO\" color=\"#00B8D9\" />}\n title=\"Pedido fora do padrão\"\n description=\"Pedido feito em dia não previsto pela frequência.\"\n details={\n <>\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>\n {getEventCode(event) ? `#${getEventCode(event)}` : '-'}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Data e hora:{' '}\n <strong>\n {fDate(event.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </>\n }\n />\n );\n};\n\nexport default OrderUnplannedTooltip;\n","import Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fToNow } from 'utils/formatTime';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst ShoppingCartAbandonedTooltip = ({ event }: SingleTooltipProps) => (\n <BaseTooltip\n icon={<Icon icon=\"CANCEL_CIRCLE_SOLID\" color=\"#FF5630\" />}\n title=\"Carrinho abandonado\"\n description={\n <>\n Carrinho inativo há <strong>{fToNow(event.reference_date)}</strong> —\n valor estimado: <strong>{fCurrencyBRL(event.amount_value)}</strong>.\n </>\n }\n details={\n <>\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>{event.external_id ? `#${event.external_id}` : '-'}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </>\n }\n />\n);\n\nexport default ShoppingCartAbandonedTooltip;\n","import Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst ShoppingCartActiveTooltip = ({ event }: SingleTooltipProps) => (\n <BaseTooltip\n icon={<Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" />}\n title=\"Pedido em andamento\"\n description=\"Cliente está atualizando o carrinho neste momento.\"\n details={\n <Typography variant=\"caption\">\n Valor parcial: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n }\n />\n);\n\nexport default ShoppingCartActiveTooltip;\n","import Icon from 'components/Icon';\nimport { EventType, Period } from 'types/orderProjection';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fToNow } from 'utils/formatTime';\nimport { getPeriodInfo } from 'utils/orderProjection';\n\nimport OrderPlacedTooltip from './OrderPlaced';\nimport OrderPlannedTooltip from './OrderPlanned';\nimport OrderUnplannedTooltip from './OrderUnplanned';\nimport { TooltipRegistryConfig } from './props';\nimport ShoppingCartAbandonedTooltip from './ShoppingCartAbandoned';\nimport ShoppingCartActiveTooltip from './ShoppingCartActive';\n\nconst iconProps = {\n color: 'common.white',\n width: 16,\n height: 16,\n sx: { flexShrink: 0 },\n};\n\nexport const tooltipRegistry: Record<EventType, TooltipRegistryConfig> = {\n [EventType.ORDER_PLACED]: {\n getIcon: () => null,\n getTitle: () => 'Pedido realizado',\n getDescription: () => 'Pedido confirmado com sucesso!',\n getTooltip: event => <OrderPlacedTooltip event={event} />,\n },\n\n [EventType.ORDER_UNPLANNED]: {\n getIcon: () => null,\n getTitle: () => 'Pedido fora do padrão',\n getDescription: () => 'Pedido feito fora do dia habitual.',\n getTooltip: event => <OrderUnplannedTooltip event={event} />,\n },\n\n [EventType.ORDER_PLANNED]: {\n getIcon: event => {\n const { period } = getPeriodInfo(event.reference_date);\n\n if (period === Period.PAST) {\n return <Icon icon=\"HEXAGON_WARNING\" {...iconProps} />;\n }\n\n if (period === Period.TODAY) {\n return <Icon icon=\"WARNING_TRIANGLE_SOLID\" {...iconProps} />;\n }\n\n return null;\n },\n getTitle: event => {\n const { period } = getPeriodInfo(event.reference_date);\n\n if (period === Period.PAST) return 'Pedido não realizado';\n if (period === Period.TODAY) return 'Pedido previsto para hoje';\n\n return 'Pedido previsto';\n },\n getDescription: event => {\n const { period } = getPeriodInfo(event.reference_date);\n\n if (period === Period.PAST) {\n return 'Cliente não realizou o pedido previsto na data esperada.';\n }\n\n if (period === Period.TODAY) {\n return 'Nenhum pedido registrado até o momento.';\n }\n\n return 'Próximo pedido estimado conforme padrão de frequência.';\n },\n getTooltip: event => <OrderPlannedTooltip event={event} />,\n },\n\n [EventType.SHOPPING_CART_ACTIVE]: {\n getIcon: () => null,\n getTitle: () => 'Pedido em andamento',\n getDescription: () => 'Cliente está atualizando o carrinho neste momento.',\n getTooltip: event => <ShoppingCartActiveTooltip event={event} />,\n },\n\n [EventType.SHOPPING_CART_ABANDONED]: {\n getIcon: () => <Icon icon=\"CANCEL_CIRCLE_SOLID\" {...iconProps} />,\n getTitle: () => 'Carrinho abandonado',\n getDescription: event =>\n `Carrinho inativo há ${fToNow(event.reference_date)} — valor estimado: ${fCurrencyBRL(event.amount_value)}.`,\n getTooltip: event => <ShoppingCartAbandonedTooltip event={event} />,\n },\n};\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nimport { EventType, Period } from 'types/orderProjection';\nimport { getEventStyles } from 'utils/orderProjection';\n\ninterface CardProps {\n eventType: EventType;\n period?: Period;\n}\n\nexport const Card = styled(Stack, {\n shouldForwardProp: prop => prop !== 'eventType' && prop !== 'period',\n})<CardProps>(({ theme, eventType, period }) => {\n const styles = getEventStyles(eventType, period);\n\n return {\n position: 'relative',\n padding: theme.spacing(0.5, 1),\n borderRadius: 4,\n background: styles.background,\n color: styles.color,\n cursor: 'pointer',\n\n '&:hover': {\n background: styles.backgroundHover,\n },\n };\n});\n\nexport const IconBadge = styled(Stack, {\n shouldForwardProp: prop => prop !== 'eventType' && prop !== 'period',\n})<CardProps>(({ theme, eventType, period }) => {\n const styles = getEventStyles(eventType, period);\n\n return {\n position: 'absolute',\n top: -5,\n right: -5,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n background: styles.iconBadgeColor,\n boxShadow: `0 0 0 2px ${theme.palette.common.white}`,\n };\n});\n","import { useMemo } from 'react';\n\nimport { EventType } from 'types/orderProjection';\nimport { GroupedEvent } from 'types/orderProjection';\nimport { getEventStyles, getPeriodInfo } from 'utils/orderProjection';\n\nimport GroupedEventCard from './Card';\nimport { GroupedEventsProps } from './props';\n\nconst GroupedEvents = ({ events }: GroupedEventsProps) => {\n const grouped = useMemo(() => {\n const groups: Record<string, GroupedEvent> = {};\n\n events.forEach(event => {\n const config =\n event.type === EventType.ORDER_PLANNED\n ? getEventStyles(\n event.type,\n getPeriodInfo(event.reference_date).period,\n )\n : getEventStyles(event.type);\n\n if (!groups[config.label]) {\n groups[config.label] = {\n count: 0,\n config,\n events: [],\n };\n }\n\n groups[config.label].count += 1;\n groups[config.label].events.push(event);\n });\n\n return Object.values(groups);\n }, [events]);\n\n return (\n <>\n {grouped.map((group, index) => (\n <GroupedEventCard key={index} index={index} group={group} />\n ))}\n </>\n );\n};\n\nexport default GroupedEvents;\n","import Typography from '@mui/material/Typography';\n\nimport Details from 'components/Analytics/OrderProjection/Details';\nimport { groupedTooltipRegistry } from 'components/Analytics/OrderProjection/Tooltips/Grouped/tooltipRegistry';\nimport Tooltip from 'components/Tooltip';\nimport useToggle from 'hooks/useToggle';\n\nimport { GroupedEventCardProps } from './props';\nimport { Card } from './styles';\n\nconst GroupedEventCard = ({ group, index }: GroupedEventCardProps) => {\n const [detailsOpen, toggleDetailsOpen] = useToggle();\n\n const { config, count, events } = group;\n\n const label = count > 1 ? config.labelPlural : config.label;\n\n const TooltipContent = groupedTooltipRegistry[events[0].type];\n\n return (\n <>\n <Tooltip title={<TooltipContent events={events} />} arrow>\n <Card\n data-testid={`grouped-events-${index}`}\n customBackground={config.background}\n customColor={config.color}\n customHoverBackground={config.backgroundHover}\n onClick={toggleDetailsOpen}\n >\n <Typography\n variant=\"subtitle2\"\n fontSize={13}\n title={`${count} ${label}`}\n noWrap\n >\n <strong>{count}</strong> {label}\n </Typography>\n </Card>\n </Tooltip>\n\n <Details open={detailsOpen} onClose={toggleDetailsOpen} events={events} />\n </>\n );\n};\n\nexport default GroupedEventCard;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { MAX_VISIBLE_TOOLTIP_EVENTS } from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst GroupedOrderPlacedTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={<Icon icon=\"CHECK_CIRCLE\" color=\"#22C55E\" />}\n title=\"Pedidos realizados\"\n description=\"Pedidos realizados com sucesso!\"\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>\n {getEventCode(event) ? `#${getEventCode(event)}` : '-'}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Data/Hora:{' '}\n <strong>\n {fDate(event.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} pedido{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedOrderPlacedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { GroupedBaseTooltipProps } from './props';\n\nconst GroupedBaseTooltip = ({\n icon,\n title,\n description,\n children,\n}: GroupedBaseTooltipProps) => (\n <Stack gap={1}>\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n {icon}\n\n <Typography variant=\"caption\" fontWeight=\"bold\">\n {title}\n </Typography>\n </Stack>\n\n <Typography variant=\"caption\">{description}</Typography>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={1}>{children}</Stack>\n </Stack>\n);\n\nexport default GroupedBaseTooltip;\n","import { ReactNode } from 'react';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { Period } from 'types/orderProjection';\nimport { fDate } from 'utils/formatTime';\nimport {\n getPeriodInfo,\n MAX_VISIBLE_TOOLTIP_EVENTS,\n} from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst ICON_BY_PERIOD: Record<Period, ReactNode> = {\n [Period.PAST]: <Icon icon=\"HEXAGON_WARNING\" color=\"#FF5630\" />,\n [Period.TODAY]: <Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" />,\n [Period.FUTURE]: <Icon icon=\"CALENDAR_TODAY\" color=\"#C4CDD5\" />,\n};\n\nconst TITLE_BY_PERIOD: Record<Period, string> = {\n [Period.PAST]: 'Pedidos não realizados',\n [Period.TODAY]: 'Pedidos previstos para hoje',\n [Period.FUTURE]: 'Pedidos previstos',\n};\n\nconst DESCRIPTION_BY_PERIOD: Record<Period, string> = {\n [Period.PAST]:\n 'Clientes não realizaram os pedidos previstos na data esperada.',\n [Period.TODAY]: 'Nenhum pedido registrado até o momento.',\n [Period.FUTURE]: 'Próximos pedidos estimados conforme padrão de frequência.',\n};\n\nconst GroupedOrderPlannedTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const { period } = getPeriodInfo(events[0]?.reference_date);\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={ICON_BY_PERIOD[period]}\n title={TITLE_BY_PERIOD[period]}\n description={DESCRIPTION_BY_PERIOD[period]}\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n Data prevista:{' '}\n <strong>{fDate(event.reference_date, 'DD/MM/YYYY')}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} pedido{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedOrderPlannedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { MAX_VISIBLE_TOOLTIP_EVENTS } from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst GroupedOrderUnplannedTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={<Icon icon=\"INFO\" color=\"#00B8D9\" />}\n title=\"Pedidos fora do padrão\"\n description=\"Pedidos feitos em dias não previstos pela frequência.\"\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>\n {getEventCode(event) ? `#${getEventCode(event)}` : '-'}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Data/Hora:{' '}\n <strong>\n {fDate(event.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} pedido{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedOrderUnplannedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fToNow } from 'utils/formatTime';\nimport { MAX_VISIBLE_TOOLTIP_EVENTS } from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst GroupedShoppingCartAbandonedTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={<Icon icon=\"CANCEL_CIRCLE_SOLID\" color=\"#FF5630\" />}\n title=\"Carrinhos abandonados\"\n description=\"Carrinhos inativos há algum tempo.\"\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>{event.external_id ? `#${event.external_id}` : '-'}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Inativo há: <strong>{fToNow(event.reference_date)}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} carrinho{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedShoppingCartAbandonedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { MAX_VISIBLE_TOOLTIP_EVENTS } from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst GroupedShoppingCartActiveTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={<Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" />}\n title=\"Pedidos em andamento\"\n description=\"Clientes estão atualizando seus carrinhos neste momento.\"\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>{event.external_id ? `#${event.external_id}` : '-'}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor parcial: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} carrinho{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedShoppingCartActiveTooltip;\n","import { EventType } from 'types/orderProjection';\n\nimport GroupedOrderPlacedTooltip from './OrderPlaced';\nimport GroupedOrderPlannedTooltip from './OrderPlanned';\nimport GroupedOrderUnplannedTooltip from './OrderUnplanned';\nimport { GroupedTooltipRegistry } from './props';\nimport GroupedShoppingCartAbandonedTooltip from './ShoppingCartAbandoned';\nimport GroupedShoppingCartActiveTooltip from './ShoppingCartActive';\n\nexport const groupedTooltipRegistry: Record<EventType, GroupedTooltipRegistry> =\n {\n [EventType.ORDER_PLACED]: GroupedOrderPlacedTooltip,\n [EventType.ORDER_UNPLANNED]: GroupedOrderUnplannedTooltip,\n [EventType.ORDER_PLANNED]: GroupedOrderPlannedTooltip,\n [EventType.SHOPPING_CART_ACTIVE]: GroupedShoppingCartActiveTooltip,\n [EventType.SHOPPING_CART_ABANDONED]: GroupedShoppingCartAbandonedTooltip,\n };\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\ninterface CardProps {\n customBackground: string;\n customColor: string;\n customHoverBackground?: string;\n}\n\nexport const Card = styled(Stack, {\n shouldForwardProp: prop =>\n prop !== 'customBackground' &&\n prop !== 'customColor' &&\n prop !== 'customHoverBackground',\n})<CardProps>(\n ({ theme, customBackground, customColor, customHoverBackground }) => ({\n padding: theme.spacing(0.5, 1),\n borderRadius: 4,\n background: customBackground,\n color: customColor,\n cursor: 'pointer',\n\n '&:hover': {\n background: customHoverBackground,\n },\n }),\n);\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const EventList = styled(Stack)({\n gap: 4,\n});\n","import { useCallback, useMemo, useRef, useState } from 'react';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { PartnerCell as StyledPartnerCell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport PartnerStatus from 'components/Analytics/OrderProjection/PartnerStatus';\nimport Drawer from 'components/Drawer';\nimport Icon from 'components/Icon';\nimport MenuPopover from 'components/MenuPopover';\nimport usePopover from 'hooks/usePopover';\nimport useToggle from 'hooks/useToggle';\nimport { STATUS_OPTIONS } from 'utils/partnerAnalysis';\n\nimport Details from './Details';\nimport { PartnerCellProps } from './props';\nimport { Container, ItemButton } from './styles';\n\nconst PartnerCell = ({ partner }: PartnerCellProps) => {\n const { open, onClose, setOpen } = usePopover();\n const iconRef = useRef<HTMLSpanElement>(null);\n\n const [detailsOpen, toggleDetailsOpen] = useToggle(false);\n\n const [localPhone, setLocalPhone] = useState(partner.phone);\n\n const phone = localPhone?.replace(/\\D/g, '');\n const hasPhone = !!phone;\n\n const handlePhoneUpdated = useCallback((updatedPhone: string) => {\n setLocalPhone(updatedPhone);\n }, []);\n\n const saleCount = partner.sale_analysis.sale_count;\n\n const saleLabel = useMemo(\n () => `${saleCount} pedido${saleCount === 0 || saleCount > 1 ? 's' : ''}`,\n [saleCount],\n );\n\n const title = useMemo(() => {\n const classificationLabel = STATUS_OPTIONS[partner.classification]?.label;\n const details = [classificationLabel, saleLabel]\n .filter(Boolean)\n .join(' • ');\n\n return `${partner.name}\\n${details}`;\n }, [partner.classification, partner.name, saleLabel]);\n\n const handleOpen = useCallback(() => {\n if (iconRef.current) {\n setOpen(iconRef.current);\n }\n }, [setOpen]);\n\n const handleDetailsOpen = useCallback(() => {\n onClose();\n toggleDetailsOpen();\n }, [onClose, toggleDetailsOpen]);\n\n return (\n <>\n <StyledPartnerCell\n title={title}\n onClick={handleOpen}\n sx={{ cursor: 'pointer' }}\n >\n <Container>\n <Stack overflow=\"hidden\">\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partner.name}\n </Typography>\n\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n <PartnerStatus\n status={partner.classification}\n variant=\"caption\"\n color=\"text.disabled\"\n />\n\n <Typography variant=\"caption\" color=\"text.disabled\" noWrap>\n {partner.classification && <>&#x2022;</>} {saleLabel}\n </Typography>\n </Stack>\n </Stack>\n\n <span ref={iconRef}>\n <Icon icon=\"ARROW_DOWN_SIMPLE\" color=\"text.secondary\" />\n </span>\n </Container>\n </StyledPartnerCell>\n\n <MenuPopover\n open={open}\n onClose={onClose}\n disabledArrow\n sx={{ width: 180, p: 1 }}\n >\n <ItemButton\n component={Link}\n href={`https://wa.me/${phone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"text\"\n startIcon={<Icon icon=\"WHATSAPP\" />}\n disabled={!hasPhone}\n fullWidth\n >\n Enviar mensagem\n </ItemButton>\n\n <ItemButton\n variant=\"text\"\n startIcon={<Icon icon=\"INFORMATIONS\" />}\n onClick={handleDetailsOpen}\n fullWidth\n >\n Ver detalhes\n </ItemButton>\n </MenuPopover>\n\n <Drawer\n open={detailsOpen}\n onClose={toggleDetailsOpen}\n headerTitle=\"Detalhes do cliente\"\n headerProps={{ direction: 'row-reverse' }}\n maxWidth={520}\n contentProps={{ p: 0 }}\n >\n <Details partner={partner} onPhoneUpdated={handlePhoneUpdated} />\n </Drawer>\n </>\n );\n};\n\nexport default PartnerCell;\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { STATUS_OPTIONS } from 'utils/partnerAnalysis';\n\nimport { PartnerStatusProps } from './props';\nimport { Dot } from './styles';\n\nconst PartnerStatus = ({\n status,\n variant = 'body2',\n color = 'text.primary',\n}: PartnerStatusProps) => {\n const statusOption = STATUS_OPTIONS[status];\n\n if (!statusOption) return null;\n\n const { label, color: statusColor } = statusOption;\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Dot bgcolor={statusColor} />\n\n <Typography variant={variant} color={color} noWrap>\n {label}\n </Typography>\n </Stack>\n );\n};\n\nexport default PartnerStatus;\n","import Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\nexport const Dot = styled(Box)(() => ({\n width: 6,\n height: 6,\n borderRadius: '50%',\n flexShrink: 0,\n}));\n","import { useCallback, useMemo } from 'react';\nimport Chip from '@mui/material/Chip';\nimport Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport PartnerStatus from 'components/Analytics/OrderProjection/PartnerStatus';\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport useToggle from 'hooks/useToggle';\nimport { cpfMaskOrCnpjMask, phoneMask } from 'utils/mask';\n\nimport { InformationsProps } from './props';\nimport InformationsSkeleton from './Skeleton';\n\nconst Informations = ({ partner, onPhoneUpdated }: InformationsProps) => {\n const [expanded, toggleExpanded] = useToggle(true);\n\n const { adapters, slots } = useOrderProjectionContext();\n const { renderPartnerLink, renderPhoneEditor } = slots;\n\n const {\n data: partnerData,\n isLoading,\n refetch,\n } = adapters.usePartnerDetails(partner.external_id, {\n skip: !partner.external_id || !expanded,\n });\n\n const partnerPhone = partnerData?.mobile ?? partnerData?.phone;\n\n const fiscalRegistrationNumber = useMemo(\n () =>\n partnerData?.fiscal_registration_number\n ? cpfMaskOrCnpjMask(partnerData?.fiscal_registration_number)\n : '-',\n [partnerData?.fiscal_registration_number],\n );\n\n const handlePhoneSuccess = useCallback(\n (phone: string) => {\n refetch();\n onPhoneUpdated?.(phone);\n },\n [refetch, onPhoneUpdated],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded} defaultExpanded>\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Result isLoading={isLoading} loading={<InformationsSkeleton />}>\n <Stack mt={-1} px={1} gap={1}>\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome\n </Typography>\n\n {renderPartnerLink ? (\n renderPartnerLink(partnerData)\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partner?.name || '-'}\n </Typography>\n )}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n CPF/CNPJ\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fiscalRegistrationNumber}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n E-mail\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partnerData?.email || '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Status do cliente\n </Typography>\n\n {partner.classification ? (\n <PartnerStatus\n status={partner.classification}\n variant=\"subtitle2\"\n color=\"text.primary\"\n />\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Segmento\n </Typography>\n\n {partnerData?.profile?.name ? (\n <Chip\n variant=\"outlined\"\n label={partnerData.profile.name}\n size=\"small\"\n color=\"default\"\n sx={{ width: 'fit-content' }}\n />\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n {partnerPhone ? (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n <Icon\n icon=\"WHATSAPP\"\n color=\"success.main\"\n sx={{ flexShrink: 0 }}\n />\n\n <Link\n component={Link}\n href={`https://wa.me/${partnerPhone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"subtitle2\"\n color=\"success.main\"\n noWrap\n >\n {phoneMask(partnerPhone)}\n </Link>\n </Stack>\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n\n {renderPhoneEditor?.(partner.external_id, handlePhoneSuccess)}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Vendedor preferencial\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partnerData?.main_seller?.name || '-'}\n </Typography>\n </Stack>\n </Stack>\n </Result>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Informations;\n","import Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport Skeleton from 'components/Skeleton';\n\nconst InformationsSkeleton = () => {\n return (\n <Stack mt={-1} px={1} gap={1}>\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n CPF/CNPJ\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n E-mail\n </Typography>\n\n <Skeleton width=\"35%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Status do cliente\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Segmento\n </Typography>\n\n <Skeleton width=\"35%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n <Skeleton width=\"100%\" height={22} />\n </Stack>\n\n <Button\n variant=\"text\"\n startIcon={<Icon icon=\"PENCIL_EDIT\" />}\n color=\"inherit\"\n size=\"small\"\n disabled\n >\n Editar\n </Button>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Vendedor preferencial\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n </Stack>\n );\n};\n\nexport default InformationsSkeleton;\n","import { useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport useToggle from 'hooks/useToggle';\nimport { Filter, GridQuery, Sort } from 'types/filter';\n\nimport Card from './Card';\nimport { LastSalesProps } from './props';\nimport LastSalesSkeleton from './Skeleton';\n\nconst LastSales = ({ partner }: LastSalesProps) => {\n const [expanded, toggleExpanded] = useToggle(false);\n\n const queryParams = useMemo<GridQuery | null>(() => {\n if (!partner?.external_id) return null;\n\n return {\n perPage: 5,\n sort: {\n fieldName: 'negotiationDate',\n sortType: 'DESC',\n } as Sort,\n filter: {\n operator: 'AND',\n groups: [\n {\n operator: 'AND',\n conditionals: [\n {\n fieldName: 'partnerId',\n conditional: 'EQUALS',\n value: [partner.external_id],\n },\n ],\n },\n ],\n } as Filter,\n };\n }, [partner?.external_id]);\n\n const { usePartnerOrders } = useOrderProjectionContext().adapters;\n\n const { data: { items: orders = [] } = {}, isLoading } = usePartnerOrders(\n queryParams!,\n { skip: !queryParams },\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Últimos pedidos\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1} px={1}>\n <Result\n isLoading={isLoading}\n loading={<LastSalesSkeleton />}\n isEmpty={orders?.length === 0}\n empty={\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={1.5}\n p={2}\n >\n <Typography variant=\"body2\" color=\"text.secondary\">\n Este cliente ainda não possui pedidos realizados.\n </Typography>\n </Stack>\n }\n >\n <Stack gap={1.5}>\n {orders?.map((order, index) => (\n <Card\n key={order.id}\n order={order}\n data-testid={`last-order-${index}`}\n />\n ))}\n </Stack>\n </Result>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default LastSales;\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport SimpleCard from 'components/SimpleCard';\nimport { isEqual } from 'utils/compare';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport { CardProps } from './props';\n\nconst Card = ({ order }: CardProps) => {\n const { renderSaleLink } = useOrderProjectionContext().slots;\n\n return (\n <SimpleCard\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n p={1.5}\n sx={{ borderRadius: 1 }}\n >\n <Stack overflow=\"hidden\">\n {order?.id ? (\n renderSaleLink?.(order.id)\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n -\n </Typography>\n )}\n\n <Typography variant=\"caption\" color=\"text.secondary\">\n {fDate(order?.negotiation_date, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fCurrencyBRL(order?.total_value)}\n </Typography>\n </SimpleCard>\n );\n};\n\nexport default memo(Card, isEqual);\n","import Stack from '@mui/material/Stack';\n\nimport Skeleton from 'components/Skeleton';\n\nconst LastSalesSkeleton = () => {\n return (\n <Stack gap={1.5}>\n <Skeleton width=\"100%\" height={66} />\n <Skeleton width=\"100%\" height={66} />\n <Skeleton width=\"100%\" height={66} />\n <Skeleton width=\"100%\" height={66} />\n <Skeleton width=\"100%\" height={66} />\n </Stack>\n );\n};\n\nexport default LastSalesSkeleton;\n","import { useMemo } from 'react';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport useToggle from 'hooks/useToggle';\nimport { fDate } from 'utils/formatTime';\nimport { getRecurrenceLabel } from 'utils/orderProjection';\n\nimport { RecurrenceProps } from './props';\n\nconst Recurrence = ({ partner }: RecurrenceProps) => {\n const { renderSaleLink } = useOrderProjectionContext().slots;\n\n const [expanded, toggleExpanded] = useToggle(false);\n const recurrenceLabel = useMemo(\n () => getRecurrenceLabel(partner?.recurrence),\n [partner?.recurrence],\n );\n\n const lastSaleId =\n partner?.sale_analysis?.last_sale_sale_external_id ||\n partner?.sale_analysis?.last_sale_external_id;\n const lastSaleDate = partner?.sale_analysis?.last_sale_negotiation_date;\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Comportamento de compra\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1} px={1} gap={1}>\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {recurrenceLabel}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Último pedido\n </Typography>\n\n {lastSaleId ? (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n {renderSaleLink?.(lastSaleId)}\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n em {fDate(lastSaleDate, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n -\n </Typography>\n )}\n </Stack>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Recurrence;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport useToggle from 'hooks/useToggle';\nimport { fCurrencyBRL } from 'utils/formatNumber';\n\nimport { SaleSummaryProps } from './props';\nimport SaleSummarySkeleton from './Skeleton';\n\nconst SaleSummary = ({ partner }: SaleSummaryProps) => {\n const [expanded, toggleExpanded] = useToggle(false);\n\n const { usePartnerSaleSummary } = useOrderProjectionContext().adapters;\n\n const { data: saleSummary, isLoading } = usePartnerSaleSummary(\n partner.external_id,\n {\n skip: !partner.external_id || !expanded,\n },\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Indicadores de vendas\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1} px={1}>\n <Result isLoading={isLoading} loading={<SaleSummarySkeleton />}>\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n justifyContent={{ xs: 'flex-start', sm: 'center' }}\n gap={3}\n >\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Qtd. de pedidos</Typography>\n\n <Typography variant=\"subtitle2\">\n {saleSummary?.order_quantity || 0}\n </Typography>\n </Stack>\n\n <Divider orientation=\"vertical\" flexItem />\n\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Valor total</Typography>\n\n <Typography variant=\"subtitle2\">\n {fCurrencyBRL(saleSummary?.total_value)}\n </Typography>\n </Stack>\n\n <Divider orientation=\"vertical\" flexItem />\n\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Ticket médio</Typography>\n\n <Typography variant=\"subtitle2\">\n {fCurrencyBRL(saleSummary?.average_ticket)}\n </Typography>\n </Stack>\n </Stack>\n </Result>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default SaleSummary;\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nimport { Divider } from './styles';\n\nconst SaleSummarySkeleton = () => {\n return (\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n justifyContent={{ xs: 'flex-start', sm: 'center' }}\n gap={3}\n >\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Qtd. de pedidos</Typography>\n\n <Skeleton width={30} height={22} />\n </Stack>\n\n <Divider orientation=\"vertical\" flexItem />\n\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Valor total</Typography>\n\n <Skeleton width={92} height={22} />\n </Stack>\n\n <Divider orientation=\"vertical\" flexItem />\n\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Ticket médio</Typography>\n\n <Skeleton width={71} height={22} />\n </Stack>\n </Stack>\n );\n};\n\nexport default SaleSummarySkeleton;\n","import MuiDivider from '@mui/material/Divider';\nimport { styled } from '@mui/material/styles';\n\nexport const Divider = styled(MuiDivider)(({ theme }) => ({\n height: 30,\n alignSelf: 'center',\n\n borderStyle: 'dashed',\n\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n}));\n","import Informations from './Informations';\nimport LastSales from './LastSales';\nimport { DetailsProps } from './props';\nimport Recurrence from './Recurrence';\nimport SaleSummary from './SaleSummary';\n\nconst Details = ({ partner, onPhoneUpdated }: DetailsProps) => {\n return (\n <>\n <Informations partner={partner} onPhoneUpdated={onPhoneUpdated} />\n <SaleSummary partner={partner} />\n <Recurrence partner={partner} />\n <LastSales partner={partner} />\n </>\n );\n};\n\nexport default Details;\n","import Button from '@mui/material/Button';\nimport Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const Container = styled(Stack)(({ theme }) => ({\n minHeight: 47.42,\n\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n\n gap: theme.spacing(1.5),\n}));\n\nexport const ItemButton = styled(Button)(({ theme }) => ({\n justifyContent: 'flex-start',\n\n color: theme.palette.text.primary,\n fontWeight: 400,\n\n '&:hover': {\n background: theme.palette.action.hover,\n },\n})) as typeof Button;\n","import MuiCard from '@mui/material/Card';\nimport { styled } from '@mui/material/styles';\nimport MuiTable from '@mui/material/Table';\nimport MuiTableBody from '@mui/material/TableBody';\nimport MuiTableContainer from '@mui/material/TableContainer';\n\ninterface TableProps {\n totalWidth: number;\n isResizing: boolean;\n}\n\nexport const Card = styled(MuiCard)({\n display: 'flex',\n flexDirection: 'column',\n\n width: '100%',\n height: 'calc(100vh - 300px)',\n\n boxShadow: 'none',\n overflow: 'hidden',\n});\n\nexport const TableContainer = styled(MuiTableContainer)({\n flex: 1,\n});\n\nexport const Table = styled(MuiTable, {\n shouldForwardProp: prop => prop !== 'totalWidth' && prop !== 'isResizing',\n})<TableProps>(({ totalWidth, isResizing }) => ({\n tableLayout: 'fixed',\n borderCollapse: 'separate',\n borderSpacing: 0,\n height: '100%',\n\n ...(totalWidth > 0 && { width: totalWidth }),\n\n ...(isResizing && {\n userSelect: 'none',\n cursor: 'col-resize',\n }),\n}));\n\nexport const TableBody = styled(MuiTableBody)(({ theme }) => ({\n '& .MuiTableRow-root': {\n backgroundColor: theme.palette.background.paper,\n },\n\n '& .MuiTableRow-root:last-child .MuiTableCell-root': {\n height: '100%',\n },\n}));\n","'use client';\nimport { useMemo } from 'react';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\n\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport Drawer from 'components/Drawer';\nimport Icon from 'components/Icon';\nimport IconButton from 'components/IconButton';\nimport useResponsive from 'hooks/useResponsive';\nimport useToggle from 'hooks/useToggle';\n\nimport Filters from './Filters';\nimport {\n Container,\n MobileContainer,\n ToolbarSectionCenter,\n ToolbarSectionEnd,\n ToolbarSectionStart,\n} from './styles';\nimport ViewModeSelector from './ViewModeSelector';\nimport WeekNavigator from './WeekNavigator';\n\nconst Toolbar = () => {\n const isMobile = useResponsive('down', 'sm');\n\n const { selectedPartners, selectedProfiles, selectedEventTypes } =\n useOrderProjectionFilterContext();\n\n const activeFiltersCount = useMemo(\n () =>\n selectedPartners.length +\n selectedProfiles.length +\n selectedEventTypes.length,\n [\n selectedPartners.length,\n selectedProfiles.length,\n selectedEventTypes.length,\n ],\n );\n\n const [filtersOpen, toggleFiltersOpen] = useToggle();\n\n return (\n <>\n {isMobile ? (\n <MobileContainer>\n <WeekNavigator />\n\n <Badge\n badgeContent={activeFiltersCount}\n invisible={activeFiltersCount === 0}\n color=\"primary\"\n >\n <IconButton\n label=\"Filtrar\"\n icon=\"FILTER_LIST\"\n color=\"inherit\"\n size=\"small\"\n onClick={toggleFiltersOpen}\n />\n </Badge>\n </MobileContainer>\n ) : (\n <Container>\n <ToolbarSectionStart>\n <ViewModeSelector />\n </ToolbarSectionStart>\n\n <ToolbarSectionCenter>\n <WeekNavigator />\n </ToolbarSectionCenter>\n\n <ToolbarSectionEnd>\n <Badge\n badgeContent={activeFiltersCount}\n invisible={activeFiltersCount === 0}\n color=\"primary\"\n >\n <Button\n variant=\"text\"\n startIcon={<Icon icon=\"FILTER_LIST\" />}\n endIcon={<Icon icon=\"ARROW_DOWN_SIMPLE\" />}\n color=\"inherit\"\n size=\"small\"\n onClick={toggleFiltersOpen}\n >\n Filtrar\n </Button>\n </Badge>\n </ToolbarSectionEnd>\n </Container>\n )}\n\n <Drawer\n open={filtersOpen}\n onClose={toggleFiltersOpen}\n headerTitle=\"Filtros\"\n headerProps={{ direction: 'row-reverse' }}\n contentProps={{ p: 0 }}\n maxWidth={320}\n >\n <Filters />\n </Drawer>\n </>\n );\n};\n\nexport default Toolbar;\n","'use client';\nimport { useCallback } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport useToggle from 'hooks/useToggle';\nimport { Status } from 'utils/partnerAnalysis';\n\nimport ClassificationOption from './ClassificationOption';\n\nconst classifications = Object.values(Status);\n\nconst Classifications = () => {\n const { selectedClassifications, setSelectedClassifications } =\n useOrderProjectionFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(\n !!selectedClassifications.length,\n );\n\n const handleToggle = useCallback(\n (classification: Status) => {\n setSelectedClassifications(\n selectedClassifications.includes(classification)\n ? selectedClassifications.filter(c => c !== classification)\n : [...selectedClassifications, classification],\n );\n },\n [setSelectedClassifications, selectedClassifications],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Classificações\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1}>\n {classifications.map(classification => (\n <ClassificationOption\n key={classification}\n classification={classification}\n checked={selectedClassifications.includes(classification)}\n onToggle={() => handleToggle(classification)}\n />\n ))}\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Classifications;\n","'use client';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\n\nimport { STATUS_OPTIONS } from 'utils/partnerAnalysis';\n\nimport { ClassificationOptionProps } from './props';\n\nconst ClassificationOption = ({\n classification,\n checked,\n onToggle,\n}: ClassificationOptionProps) => {\n const { label, color } = STATUS_OPTIONS[classification];\n\n return (\n <FormControlLabel\n control={\n <Checkbox\n name={`classification-${classification}`}\n checked={checked}\n onChange={onToggle}\n />\n }\n label={\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack width={6} height={16} bgcolor={color} borderRadius={1} />{' '}\n {label}\n </Stack>\n }\n />\n );\n};\n\nexport default ClassificationOption;\n","import { useCallback } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport { ViewMode } from 'types/orderProjection';\n\nimport { DateCalendarStyled, StyledDay } from './styles';\n\nconst daysOfWeek = ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'];\n\nconst isSameDay = (firstDate: Date, secondDate: Date) => {\n return (\n firstDate.getFullYear() === secondDate.getFullYear() &&\n firstDate.getMonth() === secondDate.getMonth() &&\n firstDate.getDate() === secondDate.getDate()\n );\n};\n\nconst DateFilter = () => {\n const { baseDate, dateRange, viewMode, handleBaseDateChange } =\n useOrderProjectionFilterContext();\n\n const startDate = dayjs(dateRange.start_date).toDate();\n const endDate = dayjs(dateRange.end_date).toDate();\n\n const isInRange = useCallback(\n (day: Date) => {\n return (\n isSameDay(day, startDate) ||\n isSameDay(day, endDate) ||\n (day > startDate && day < endDate)\n );\n },\n [startDate, endDate],\n );\n\n const isStart = useCallback(\n (day: Date) => isSameDay(day, startDate),\n [startDate],\n );\n\n const isEnd = useCallback((day: Date) => isSameDay(day, endDate), [endDate]);\n\n const handleChange = useCallback(\n (newValue: Date | null | undefined) => {\n if (newValue) {\n handleBaseDateChange(dayjs(newValue));\n }\n },\n [handleBaseDateChange],\n );\n\n return (\n <Stack p={2} pb={3} gap={2}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Calendário\n </Typography>\n\n <Stack alignItems=\"center\">\n <DateCalendarStyled\n value={baseDate.toDate()}\n onChange={handleChange}\n showDaysOutsideCurrentMonth\n slots={{ day: StyledDay as never }}\n slotProps={{\n day: ownerState => {\n const day = ownerState.day.toDate();\n\n return {\n isInRange: isInRange(day),\n isStart: isStart(day),\n isEnd: isEnd(day),\n isDaily: viewMode === ViewMode.DAY,\n disableMargin: true,\n };\n },\n }}\n dayOfWeekFormatter={day => {\n return daysOfWeek[day.day()];\n }}\n fixedWeekNumber={6}\n />\n </Stack>\n </Stack>\n );\n};\n\nexport default DateFilter;\n","import { alpha, styled } from '@mui/material/styles';\nimport { PickersDay } from '@mui/x-date-pickers/PickersDay';\n\nimport CommonDateCalendar from 'components/DateCalendar';\n\nimport { StyledDayProps } from './props';\n\nconst getCircle = (\n color: string,\n hover: string,\n radius: number | string = '40%',\n): Record<string, unknown> => ({\n position: 'relative',\n backgroundColor: 'transparent',\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n inset: 3,\n backgroundColor: color,\n borderRadius: radius,\n zIndex: -1,\n },\n\n '&:hover, &:focus': {\n backgroundColor: 'transparent',\n\n '&::before': {\n backgroundColor: hover,\n },\n },\n});\n\nexport const DateCalendarStyled = styled(CommonDateCalendar)(() => ({\n '&.MuiDateCalendar-root': {\n margin: -24,\n },\n\n '& .MuiPickersCalendarHeader-label': {\n textTransform: 'capitalize',\n },\n}));\n\nexport const StyledDay = styled(PickersDay, {\n shouldForwardProp: prop =>\n prop !== 'isDaily' &&\n prop !== 'isInRange' &&\n prop !== 'isStart' &&\n prop !== 'isEnd',\n})<StyledDayProps>(({ theme, isInRange, isStart, isEnd, isDaily }) => ({\n borderRadius: 0,\n\n '&:not(.Mui-selected):not(.MuiPickersDay-today)': {\n '&:hover, &:focus': {\n backgroundColor: theme.palette.action.hover,\n borderRadius: '40%',\n },\n },\n\n ...(!isInRange && {\n '&.MuiPickersDay-today:not(.Mui-selected)': {\n color: theme.palette.common.white,\n border: 'none !important',\n ...getCircle(\n theme.palette.common.black,\n alpha(theme.palette.common.black, 0.8),\n ),\n },\n }),\n\n '&.Mui-selected': {\n color: `${theme.palette.primary.contrastText} !important`,\n ...getCircle(theme.palette.primary.main, theme.palette.primary.dark),\n },\n\n ...(isInRange &&\n isDaily && {\n color: theme.palette.primary.contrastText,\n ...getCircle(theme.palette.primary.main, theme.palette.primary.dark, 6),\n }),\n\n ...(isInRange &&\n !isDaily && {\n backgroundColor: 'transparent',\n borderTop: `1px solid ${theme.palette.divider}`,\n borderBottom: `1px solid ${theme.palette.divider}`,\n borderLeft: isStart ? `1px solid ${theme.palette.divider}` : 'none',\n borderRight: isEnd ? `1px solid ${theme.palette.divider}` : 'none',\n\n ...(isStart && {\n borderTopLeftRadius: 8,\n borderBottomLeftRadius: 8,\n }),\n\n ...(isEnd && {\n borderTopRightRadius: 8,\n borderBottomRightRadius: 8,\n }),\n\n '&.MuiPickersDay-today:not(.Mui-selected)': {\n borderTop: `1px solid ${theme.palette.divider} !important`,\n borderBottom: `1px solid ${theme.palette.divider} !important`,\n borderLeft: 'none !important',\n borderRight: 'none !important',\n },\n }),\n}));\n","'use client';\nimport { useCallback, useMemo, useState } from 'react';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport {\n useOrderProjectionContext,\n useOrderProjectionFilterContext,\n} from 'components/Analytics/OrderProjection/context';\nimport { OrderProjectionOption } from 'components/Analytics/OrderProjection/props';\nimport Autocomplete from 'components/Autocomplete';\nimport Result from 'components/Result';\nimport SimpleCard from 'components/SimpleCard';\nimport useAutocomplete from 'hooks/useAutocomplete';\nimport useToggle from 'hooks/useToggle';\n\nconst Partners = () => {\n const { selectedPartners, setSelectedPartners } =\n useOrderProjectionFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(true);\n const [inputValue, setInputValue] = useState('');\n\n const {\n buildOptions,\n finishSearch,\n onSearch,\n onSelectValue,\n search,\n searching,\n } = useAutocomplete();\n\n const { usePartnerOptions } = useOrderProjectionContext().adapters;\n\n const {\n items: partners,\n isFetching,\n isLoading,\n } = usePartnerOptions({ search, skip: !expanded });\n\n const options = useMemo(() => {\n if (searching || isFetching) return [];\n\n return buildOptions(\n partners.map(({ id, name }) => ({ value: id, label: name || '' })),\n isFetching,\n );\n }, [buildOptions, isFetching, partners, searching]);\n\n const hasPartners = selectedPartners.length > 0;\n\n const handleSelectPartner = useCallback(\n (value: unknown) => {\n onSelectValue(options, value);\n\n const partnerId =\n typeof value === 'string'\n ? value\n : String((value as { value?: string | number } | null)?.value || '');\n\n const selectedOption = options.find(\n (option: { value?: string | number; label?: string }) =>\n String(option.value) === partnerId,\n );\n\n const partnerLabel =\n selectedOption?.label ||\n (typeof value === 'string'\n ? value\n : String((value as { label?: string } | null)?.label || ''));\n\n if (partnerId && !selectedPartners.some(p => p.id === partnerId)) {\n setSelectedPartners([\n ...selectedPartners,\n { id: partnerId, name: partnerLabel },\n ]);\n }\n\n setInputValue('');\n },\n [setSelectedPartners, onSelectValue, options, selectedPartners],\n );\n\n const handleDeletePartner = useCallback(\n (partner: OrderProjectionOption) => {\n setSelectedPartners(selectedPartners.filter(p => p.id !== partner.id));\n },\n [setSelectedPartners, selectedPartners],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Clientes\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack gap={1}>\n <Autocomplete\n name=\"partners\"\n label=\"Clientes\"\n placeholder=\"Digite para buscar um cliente...\"\n size=\"small\"\n options={options}\n loading={isLoading}\n inputValue={inputValue}\n onInputChange={(_, newValue) => setInputValue(newValue)}\n onSearch={onSearch}\n onBlur={finishSearch}\n onChange={handleSelectPartner}\n filterOptions={o => o}\n noOptionsText={\n searching || isFetching ? 'Carregando...' : undefined\n }\n InputLabelProps={{ shrink: true }}\n fullWidth\n />\n\n <SimpleCard\n direction=\"row\"\n alignItems=\"center\"\n flexWrap=\"wrap\"\n overflow=\"auto\"\n maxHeight={148}\n p={1.5}\n sx={{ bgcolor: 'grey.50' }}\n >\n <Result\n isEmpty={!hasPartners}\n empty={\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nenhum cliente selecionado\n </Typography>\n }\n >\n {selectedPartners.map((partner, index) => (\n <Chip\n key={partner.id}\n variant=\"outlined\"\n label={partner.name}\n color=\"default\"\n onDelete={() => handleDeletePartner(partner)}\n data-testid={`filter-partner-${index}`}\n />\n ))}\n </Result>\n </SimpleCard>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Partners;\n","'use client';\nimport { useCallback, useMemo, useState } from 'react';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport {\n useOrderProjectionContext,\n useOrderProjectionFilterContext,\n} from 'components/Analytics/OrderProjection/context';\nimport { OrderProjectionOption } from 'components/Analytics/OrderProjection/props';\nimport Autocomplete from 'components/Autocomplete';\nimport Result from 'components/Result';\nimport SimpleCard from 'components/SimpleCard';\nimport useAutocomplete from 'hooks/useAutocomplete';\nimport useToggle from 'hooks/useToggle';\n\nconst Profiles = () => {\n const { selectedProfiles, setSelectedProfiles } =\n useOrderProjectionFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(!!selectedProfiles.length);\n const [inputValue, setInputValue] = useState('');\n\n const {\n buildOptions,\n finishSearch,\n onSearch,\n onSelectValue,\n search,\n searching,\n } = useAutocomplete();\n\n const { useProfileOptions } = useOrderProjectionContext().adapters;\n\n const {\n items: profiles,\n isFetching,\n isLoading,\n } = useProfileOptions({ search, skip: !expanded });\n\n const options = useMemo(() => {\n if (searching || isFetching) return [];\n\n return buildOptions(\n profiles.map(({ id, name }) => ({ value: id, label: name || '' })),\n isFetching,\n );\n }, [buildOptions, isFetching, profiles, searching]);\n\n const hasProfiles = selectedProfiles.length > 0;\n\n const handleSelectProfile = useCallback(\n (value: unknown) => {\n onSelectValue(options, value);\n\n const profileId =\n typeof value === 'string'\n ? value\n : String((value as { value?: string | number } | null)?.value || '');\n\n const selectedOption = options.find(\n (option: { value?: string | number; label?: string }) =>\n String(option.value) === profileId,\n );\n\n const profileLabel =\n selectedOption?.label ||\n (typeof value === 'string'\n ? value\n : String((value as { label?: string } | null)?.label || ''));\n\n if (profileId && !selectedProfiles.some(p => p.id === profileId)) {\n setSelectedProfiles([\n ...selectedProfiles,\n { id: profileId, name: profileLabel },\n ]);\n }\n\n setInputValue('');\n },\n [setSelectedProfiles, onSelectValue, options, selectedProfiles],\n );\n\n const handleDeleteProfile = useCallback(\n (profile: OrderProjectionOption) => {\n setSelectedProfiles(selectedProfiles.filter(p => p.id !== profile.id));\n },\n [setSelectedProfiles, selectedProfiles],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Segmentos\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack gap={1}>\n <Autocomplete\n name=\"profiles\"\n label=\"Segmentos\"\n placeholder=\"Digite para buscar um segmento...\"\n size=\"small\"\n options={options}\n loading={isLoading}\n inputValue={inputValue}\n onInputChange={(_, newValue) => setInputValue(newValue)}\n onSearch={onSearch}\n onBlur={finishSearch}\n onChange={handleSelectProfile}\n filterOptions={o => o}\n noOptionsText={\n searching || isFetching ? 'Carregando...' : undefined\n }\n InputLabelProps={{ shrink: true }}\n fullWidth\n />\n\n <SimpleCard\n direction=\"row\"\n alignItems=\"center\"\n flexWrap=\"wrap\"\n overflow=\"auto\"\n maxHeight={148}\n p={1.5}\n sx={{ bgcolor: 'grey.50' }}\n >\n <Result\n isEmpty={!hasProfiles}\n empty={\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nenhum segmento selecionado\n </Typography>\n }\n >\n {selectedProfiles.map((profile, index) => (\n <Chip\n key={profile.id}\n variant=\"outlined\"\n label={profile.name}\n color=\"default\"\n onDelete={() => handleDeleteProfile(profile)}\n data-testid={`filter-profile-${index}`}\n />\n ))}\n </Result>\n </SimpleCard>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Profiles;\n","'use client';\nimport { useCallback } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport useToggle from 'hooks/useToggle';\nimport { EventType } from 'types/orderProjection';\n\nimport StatusOption from './StatusOption';\n\nconst eventTypes = Object.values(EventType);\n\nconst Status = () => {\n const { selectedEventTypes, setSelectedEventTypes } =\n useOrderProjectionFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(!!selectedEventTypes.length);\n\n const handleToggle = useCallback(\n (eventType: EventType) => {\n setSelectedEventTypes(\n selectedEventTypes.includes(eventType)\n ? selectedEventTypes.filter(s => s !== eventType)\n : [...selectedEventTypes, eventType],\n );\n },\n [setSelectedEventTypes, selectedEventTypes],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Status de eventos\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1}>\n {eventTypes.map(eventType => (\n <StatusOption\n key={eventType}\n status={eventType}\n checked={selectedEventTypes.includes(eventType)}\n onToggle={() => handleToggle(eventType)}\n />\n ))}\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Status;\n","'use client';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\n\nimport { EVENT_TYPE_OPTIONS } from 'utils/orderProjection';\n\nimport { StatusOptionProps } from './props';\n\nconst StatusOption = ({ status, checked, onToggle }: StatusOptionProps) => {\n const { label, color } = EVENT_TYPE_OPTIONS[status];\n\n return (\n <FormControlLabel\n control={\n <Checkbox\n name={`status-${status}`}\n checked={checked}\n onChange={onToggle}\n />\n }\n label={\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack width={6} height={16} bgcolor={color} borderRadius={1} />{' '}\n {label}\n </Stack>\n }\n />\n );\n};\n\nexport default StatusOption;\n","import Classifications from './Classifications';\nimport DateFilter from './DateFilter';\nimport Partners from './Partners';\nimport Profiles from './Profiles';\nimport Status from './Status';\n\nconst Filters = () => {\n return (\n <>\n <DateFilter />\n <Partners />\n <Profiles />\n <Status />\n <Classifications />\n </>\n );\n};\n\nexport default Filters;\n","import Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const Container = styled(Stack)(({ theme }) => ({\n flexDirection: 'row',\n alignItems: 'center',\n\n padding: theme.spacing(2.5),\n gap: theme.spacing(1),\n}));\n\nexport const MobileContainer = styled(Stack)(({ theme }) => ({\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n\n padding: theme.spacing(2.5),\n gap: theme.spacing(1),\n}));\n\nexport const ToolbarSection = styled(Box)({\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n});\n\nexport const ToolbarSectionStart = styled(ToolbarSection)({\n justifyContent: 'flex-start',\n});\n\nexport const ToolbarSectionCenter = styled(ToolbarSection)({\n justifyContent: 'center',\n});\n\nexport const ToolbarSectionEnd = styled(ToolbarSection)({\n justifyContent: 'flex-end',\n});\n","'use client';\nimport { useCallback } from 'react';\nimport Button from '@mui/material/Button';\n\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport MenuPopover from 'components/MenuPopover';\nimport usePopover from 'hooks/usePopover';\nimport { ViewMode } from 'types/orderProjection';\n\nimport { VIEW_MODE_ICONS, VIEW_MODE_LABELS } from './props';\nimport { ItemButton } from './styles';\n\nconst ViewModeSelector = () => {\n const { open, onClose, onOpen } = usePopover();\n const { viewMode, setViewMode } = useOrderProjectionFilterContext();\n\n const handleSetViewMode = useCallback(\n (mode: ViewMode) => {\n setViewMode(mode);\n onClose();\n },\n [onClose, setViewMode],\n );\n\n return (\n <>\n <Button\n variant=\"text\"\n startIcon={<Icon icon={VIEW_MODE_ICONS[viewMode]} />}\n endIcon={<Icon icon=\"ARROW_DOWN_SIMPLE\" />}\n color=\"inherit\"\n size=\"small\"\n onClick={onOpen}\n >\n {VIEW_MODE_LABELS[viewMode]}\n </Button>\n\n <MenuPopover\n open={open}\n onClose={onClose}\n disabledArrow\n sx={{ width: 180, p: 1 }}\n >\n <ItemButton\n variant=\"text\"\n startIcon={<Icon icon=\"CALENDAR_TODAY\" />}\n onClick={() => handleSetViewMode(ViewMode.DAY)}\n active={viewMode === ViewMode.DAY}\n fullWidth\n >\n Dia\n </ItemButton>\n\n <ItemButton\n variant=\"text\"\n startIcon={<Icon icon=\"COLUMNS\" />}\n onClick={() => handleSetViewMode(ViewMode.WEEK)}\n active={viewMode === ViewMode.WEEK}\n fullWidth\n >\n Semana\n </ItemButton>\n </MenuPopover>\n </>\n );\n};\n\nexport default ViewModeSelector;\n","import { IconEnum } from 'components/Icon';\nimport { ViewMode } from 'types/orderProjection';\n\nexport const VIEW_MODE_LABELS: Record<ViewMode, string> = {\n [ViewMode.DAY]: 'Dia',\n [ViewMode.WEEK]: 'Semana',\n};\n\nexport const VIEW_MODE_ICONS: Record<ViewMode, IconEnum> = {\n [ViewMode.DAY]: IconEnum.CALENDAR_TODAY,\n [ViewMode.WEEK]: IconEnum.COLUMNS,\n};\n","import Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\ninterface ItemButtonProps {\n active?: boolean;\n}\n\nexport const ItemButton = styled(Button, {\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","'use client';\nimport { useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport IconButton from 'components/IconButton';\nimport { fDate } from 'utils/formatTime';\n\nconst WeekNavigator = () => {\n const { visibleDays, dateRange, handlePreviousWeek, handleNextWeek } =\n useOrderProjectionFilterContext();\n\n const dateLabel = useMemo(() => {\n const start = dayjs(dateRange.start_date);\n const end = dayjs(dateRange.end_date);\n\n if (visibleDays === 1) {\n return fDate(start.toDate(), 'DD [de] MMM [de] YYYY');\n }\n\n const sameMonth = start.month() === end.month();\n const sameYear = start.year() === end.year();\n\n if (sameMonth && sameYear) {\n return `${start.format('DD')} - ${fDate(end.toDate(), 'DD [de] MMM [de] YYYY')}`;\n }\n\n if (sameYear) {\n return `${fDate(start.toDate(), 'DD [de] MMM')} - ${fDate(end.toDate(), 'DD [de] MMM')}`;\n }\n\n return `${fDate(start.toDate(), 'DD MMM YYYY')} - ${fDate(end.toDate(), 'DD MMM YYYY')}`;\n }, [dateRange, visibleDays]);\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <IconButton\n label=\"Semana anterior\"\n icon=\"CHEVRON_LEFT\"\n color=\"inherit\"\n size=\"small\"\n onClick={handlePreviousWeek}\n />\n\n <Typography variant=\"subtitle1\" color=\"text.primary\" noWrap>\n {dateLabel}\n </Typography>\n\n <IconButton\n label=\"Próxima semana\"\n icon=\"CHEVRON_RIGHT\"\n color=\"inherit\"\n size=\"small\"\n onClick={handleNextWeek}\n />\n </Stack>\n );\n};\n\nexport default WeekNavigator;\n"]}
1
+ {"version":3,"sources":["../../../../src/components/Analytics/OrderProjection/Calendar/index.tsx","../../../../src/components/Analytics/OrderProjection/CalendarCells/styles.ts","../../../../src/components/Analytics/OrderProjection/context.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/DayCell/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/DayCell/Summary/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/DayCell/Summary/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Header/DayCell/Summary/Tooltip.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/PartnerCell/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/PartnerCell/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Header/PartnerCell/Tooltip.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Header/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/DayColumn.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/Event/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventAlert/alertRegistry.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventAlert/styles.ts","../../../../src/components/Analytics/OrderProjection/Details/EventAlert/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/List/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderPlaced/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ErrorState.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderPlaced/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderPlanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderPlanned/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderUnplanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/OrderUnplanned/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ShoppingCartAbandoned/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ShoppingCartAbandoned/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ShoppingCartActive/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/ShoppingCartActive/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/EventContent/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/PartnerInformations/index.tsx","../../../../src/components/Analytics/OrderProjection/Details/PartnerInformations/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Details/styles.ts","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/OrderPlaced/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/Base/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/OrderPlanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/OrderUnplanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/ShoppingCartAbandoned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/ShoppingCartActive/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Single/tooltipRegistry.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/Event/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/GroupedEvents/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/GroupedEvents/Card.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/OrderPlaced/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/Base/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/OrderPlanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/OrderUnplanned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/ShoppingCartAbandoned/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/ShoppingCartActive/index.tsx","../../../../src/components/Analytics/OrderProjection/Tooltips/Grouped/tooltipRegistry.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/GroupedEvents/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/EventCell/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/index.tsx","../../../../src/components/Analytics/OrderProjection/PartnerStatus/index.tsx","../../../../src/components/Analytics/OrderProjection/PartnerStatus/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/Informations/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/Informations/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/LastSales/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/LastSales/Card.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/LastSales/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/Recurrence/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/SaleSummary/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/SaleSummary/Skeleton.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/SaleSummary/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/Details/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Row/PartnerCell/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Classifications/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Classifications/ClassificationOption/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/DateFilter/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/DateFilter/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Partners/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Profiles/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Status/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/Status/StatusOption/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/Filters/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/ViewModeSelector/index.tsx","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/ViewModeSelector/props.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/ViewModeSelector/styles.ts","../../../../src/components/Analytics/OrderProjection/Calendar/Toolbar/WeekNavigator/index.tsx"],"names":["useCallback","useMemo","CircularProgress","TableCell","TableRow","dayjs","styled","MuiTableRow","PartnerCell","prop","theme","cellAlign","Cell","isToday","Container","createContext","useContext","jsx","OrderProjectionContext","OrderProjectionProvider","adapters","slots","children","filters","useOrderProjectionFilters_default","value","useOrderProjectionContext","context","useOrderProjectionFilterContext","Stack","Typography","Skeleton","alpha","Label","ColoredLabel_default","Fragment","jsxs","Tooltip","day","summary","today","isFuture","counts","dateFormatted","summaryDay","d","Icon_default","Tooltip_default","Summary","isFetchingSummary","ordersPlacedCount","ordersExpectedCount","orderPlaced","orderUnplanned","orderPlanned","Result_default","Summary_default","DAY_LABELS","DayCell","index","resize","ColumnResizeHandle_default","DayCell_default","Button","ItemButton","active","open","onClose","onOpen","usePopover_default","ascending","setAscending","handleSetAscending","Skeleton_default","IconButton_default","MenuPopover_default","PartnerCell_default","MuiTableHead","TableHead","Header","days","getColumnResizeProps","PARTNER_COLUMN_KEY","getDayColumnKey","Header_default","memo","useState","Divider","ORDER_PLANNED_ALERT_BY_PERIOD","alertRegistry","config","getEventStyles","referenceDate","period","getPeriodInfo","icon","message","fToNow","MuiAlert","Alert","customBackground","customColor","EventAlert","origin","configGetter","EventAlert_default","LoadingButton","ErrorState","onRetry","isFetching","ErrorState_default","OrderPlacedSkeleton","OrderPlaced","eventId","useEventDetails","renderEventStatus","renderEventActions","event","isLoadingEvent","isFetchingEvent","isError","refetch","detailId","isBaseLoading","isSale","fDate","fCurrencyBRL","OrderPlaced_default","OrderPlannedSkeleton","isPast","OrderPlanned","renderSaleLink","isLoading","lastSaleId","lastSaleDate","getRecurrenceLabel","OrderPlanned_default","OrderUnplannedSkeleton","OrderUnplanned","OrderUnplanned_default","Link","ShoppingCartAbandonedSkeleton","ShoppingCartAbandoned","formatAddress","ShoppingCartAbandoned_default","ShoppingCartActiveSkeleton","ShoppingCartActive","ShoppingCartActive_default","EVENT_CONTENT_MAP","EventContent","Component","EventContent_default","List","events","getEventCode","evt","Accordion","AccordionSummary","AccordionDetails","List_default","PartnerInformationsSkeleton","PartnerInformations","partner","onPhoneUpdated","renderPartnerLink","renderPhoneEditor","cpfMaskOrCnpjMask","phoneMask","PartnerInformations_default","TypeChip","Details","primaryEvent","phoneUpdated","setPhoneUpdated","eventDetails","handlePhoneUpdated","phone","Drawer_default","Details_default","BaseTooltip","title","description","details","footer","Base_default","OrderPlacedTooltip","OrderPlannedTooltip","OrderUnplannedTooltip","ShoppingCartAbandonedTooltip","ShoppingCartActiveTooltip","iconProps","tooltipRegistry","Card","eventType","styles","IconBadge","Event","detailsOpen","toggleDetailsOpen","useToggle_default","Event_default","GroupedBaseTooltip","GroupedOrderPlacedTooltip","visibleEvents","MAX_VISIBLE_TOOLTIP_EVENTS","remaining","ICON_BY_PERIOD","TITLE_BY_PERIOD","DESCRIPTION_BY_PERIOD","GroupedOrderPlannedTooltip","GroupedOrderUnplannedTooltip","GroupedShoppingCartAbandonedTooltip","GroupedShoppingCartActiveTooltip","groupedTooltipRegistry","customHoverBackground","GroupedEventCard","group","count","label","TooltipContent","Card_default","GroupedEvents","grouped","groups","GroupedEvents_default","EventList","EventCell","shouldGroup","MAX_INDIVIDUAL_EVENTS","eventIndex","EventCell_default","DayColumn","DayColumn_default","useRef","Box","Dot","PartnerStatus","status","variant","color","statusOption","STATUS_OPTIONS","statusColor","PartnerStatus_default","Chip","InformationsSkeleton","Informations","expanded","toggleExpanded","partnerData","partnerPhone","fiscalRegistrationNumber","handlePhoneSuccess","Informations_default","order","SimpleCard_default","isEqual","LastSalesSkeleton","LastSales","queryParams","usePartnerOrders","orders","LastSales_default","Recurrence","recurrenceLabel","Recurrence_default","MuiDivider","SaleSummarySkeleton","SaleSummary","usePartnerSaleSummary","saleSummary","SaleSummary_default","setOpen","iconRef","localPhone","setLocalPhone","hasPhone","updatedPhone","saleCount","saleLabel","handleOpen","handleDetailsOpen","Row","eventsByDate","map","key","list","dayIndex","Row_default","MuiCard","MuiTable","MuiTableBody","MuiTableContainer","TableContainer","Table","totalWidth","isResizing","TableBody","Badge","Checkbox","FormControlLabel","ClassificationOption","classification","checked","onToggle","ClassificationOption_default","classifications","Status","Classifications","selectedClassifications","setSelectedClassifications","handleToggle","c","Classifications_default","PickersDay","getCircle","hover","radius","DateCalendarStyled","DateCalendar_default","StyledDay","isInRange","isStart","isEnd","isDaily","daysOfWeek","isSameDay","firstDate","secondDate","DateFilter","baseDate","dateRange","viewMode","handleBaseDateChange","startDate","endDate","handleChange","newValue","ownerState","DateFilter_default","Partners","selectedPartners","setSelectedPartners","inputValue","setInputValue","buildOptions","finishSearch","onSearch","onSelectValue","search","searching","useAutocomplete_default","usePartnerOptions","partners","options","id","name","hasPartners","handleSelectPartner","partnerId","partnerLabel","option","p","handleDeletePartner","Autocomplete_default","_","o","Partners_default","Profiles","selectedProfiles","setSelectedProfiles","useProfileOptions","profiles","hasProfiles","handleSelectProfile","profileId","profileLabel","handleDeleteProfile","profile","Profiles_default","StatusOption","EVENT_TYPE_OPTIONS","StatusOption_default","eventTypes","EventType","selectedEventTypes","setSelectedEventTypes","s","Status_default","Filters","Filters_default","MobileContainer","ToolbarSection","ToolbarSectionStart","ToolbarSectionCenter","ToolbarSectionEnd","VIEW_MODE_LABELS","VIEW_MODE_ICONS","ViewModeSelector","setViewMode","handleSetViewMode","mode","ViewModeSelector_default","WeekNavigator","visibleDays","handlePreviousWeek","handleNextWeek","dateLabel","start","end","sameMonth","sameYear","WeekNavigator_default","Toolbar","isMobile","useResponsive_default","activeFiltersCount","filtersOpen","toggleFiltersOpen","Toolbar_default","Calendar","onRowsScrollEnd","isFetchingNextPage","scrollRef","getDaysInRange","columns","PARTNER_COLUMN_MIN_WIDTH","PARTNER_COLUMN_DEFAULT_WIDTH","DAY_COLUMN_MIN_WIDTH","columnWidths","useResizableColumns_default","handleScroll","container","scrollTop","scrollHeight","clientHeight","SCROLL_END_THRESHOLD","column","Calendar_default"],"mappings":"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","sourcesContent":["import { useCallback, useMemo } from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\nimport dayjs from 'dayjs';\n\nimport {\n Cell,\n Container,\n PartnerCell,\n} from 'components/Analytics/OrderProjection/CalendarCells';\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport useResizableColumns from 'hooks/useResizableColumns';\nimport { ResizableColumn } from 'hooks/useResizableColumns.types';\nimport useResponsive from 'hooks/useResponsive';\nimport {\n DAY_COLUMN_MIN_WIDTH,\n getDayColumnKey,\n getDaysInRange,\n PARTNER_COLUMN_DEFAULT_WIDTH,\n PARTNER_COLUMN_KEY,\n PARTNER_COLUMN_MIN_WIDTH,\n SCROLL_END_THRESHOLD,\n} from 'utils/orderProjection';\n\nimport Header from './Header';\nimport { CalendarProps } from './props';\nimport Row from './Row';\nimport { Card, Table, TableBody, TableContainer } from './styles';\nimport Toolbar from './Toolbar';\n\nconst Calendar = ({\n partners,\n summary,\n isFetching,\n isFetchingSummary,\n onRowsScrollEnd,\n isFetchingNextPage,\n}: CalendarProps) => {\n const { dateRange, scrollRef } = useOrderProjectionFilterContext();\n\n const isMobile = useResponsive('down', 'sm');\n\n const days = useMemo(\n () => getDaysInRange(dateRange.start_date, dateRange.end_date),\n [dateRange.start_date, dateRange.end_date],\n );\n\n const columns = useMemo<ResizableColumn[]>(\n () => [\n {\n key: PARTNER_COLUMN_KEY,\n minWidth: PARTNER_COLUMN_MIN_WIDTH,\n defaultWidth: PARTNER_COLUMN_DEFAULT_WIDTH,\n },\n ...days.map((_, index) => ({\n key: getDayColumnKey(index),\n minWidth: DAY_COLUMN_MIN_WIDTH,\n })),\n ],\n [days],\n );\n\n const { columnWidths, totalWidth, isResizing, getColumnResizeProps } =\n useResizableColumns({\n columns,\n containerRef: scrollRef,\n enabled: !isMobile,\n });\n\n const handleScroll = useCallback(() => {\n const container = scrollRef.current;\n if (!container || isFetchingNextPage) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n const distanceToEnd = scrollHeight - scrollTop - clientHeight;\n\n if (distanceToEnd <= SCROLL_END_THRESHOLD) {\n onRowsScrollEnd();\n }\n }, [scrollRef, onRowsScrollEnd, isFetchingNextPage]);\n\n return (\n <Card variant=\"outlined\">\n <Toolbar />\n\n <TableContainer ref={scrollRef} onScroll={handleScroll}>\n <Table stickyHeader totalWidth={totalWidth} isResizing={isResizing}>\n {!!columnWidths.length && (\n <colgroup>\n {columnWidths.map((column, index) => (\n <col key={index} style={{ width: column.width }} />\n ))}\n </colgroup>\n )}\n\n <Header\n days={days}\n summary={summary}\n isFetchingSummary={isFetchingSummary}\n getColumnResizeProps={getColumnResizeProps}\n />\n\n <TableBody>\n {!partners.length && (\n <Container>\n <PartnerCell />\n\n {days.map((day, index) => (\n <Cell key={index} isToday={day.isSame(dayjs(), 'day')} />\n ))}\n </Container>\n )}\n\n {partners.map((partner, index) => (\n <Row\n key={partner.external_id}\n index={index}\n partner={partner}\n days={days}\n isFetching={isFetching}\n />\n ))}\n\n {isFetchingNextPage && (\n <TableRow>\n <TableCell\n colSpan={days.length + 1}\n align=\"center\"\n sx={{ py: 2, border: 'none' }}\n >\n <CircularProgress size={24} />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Card>\n );\n};\n\nexport default Calendar;\n","import { styled } from '@mui/material/styles';\nimport TableCell from '@mui/material/TableCell';\nimport MuiTableRow from '@mui/material/TableRow';\n\ninterface CellProps {\n isToday?: boolean;\n cellAlign?: 'top' | 'center' | 'bottom';\n}\n\nexport const PartnerCell = styled(TableCell, {\n shouldForwardProp: prop => prop !== 'cellAlign',\n})<CellProps>(({ theme, cellAlign = 'top' }) => ({\n position: 'sticky',\n left: 0,\n zIndex: 1,\n\n verticalAlign: cellAlign,\n\n backgroundColor: theme.palette.background.paper,\n\n [theme.breakpoints.down('sm')]: {\n width: '50%',\n minWidth: '50%',\n },\n}));\n\nexport const Cell = styled(TableCell, {\n shouldForwardProp: prop => prop !== 'isToday',\n})<CellProps>(({ theme, isToday }) => {\n const backgroundColor = isToday\n ? theme.palette.grey[200]\n : theme.palette.common.white;\n\n return {\n width: 'auto',\n minWidth: 'auto',\n overflow: 'hidden',\n\n backgroundColor: `${backgroundColor} !important`,\n\n verticalAlign: 'top',\n };\n});\n\nexport const Container = styled(MuiTableRow)(({ theme }) => ({\n '& .MuiTableCell-root': {\n padding: theme.spacing(1, 2),\n\n borderBottom: `1px solid ${theme.palette.divider} !important`,\n borderRight: `1px solid ${theme.palette.divider} !important`,\n\n '&:last-child': {\n borderRight: 'none !important',\n },\n },\n}));\n","import { createContext, useContext, useMemo } from 'react';\n\nimport useOrderProjectionFilters, {\n UseOrderProjectionFiltersReturn,\n} from 'hooks/useOrderProjectionFilters';\n\nimport { OrderProjectionProviderProps, OrderProjectionValue } from './props';\n\nconst OrderProjectionContext = createContext<OrderProjectionValue | null>(null);\n\nconst OrderProjectionProvider = ({\n adapters,\n slots,\n children,\n}: OrderProjectionProviderProps) => {\n const filters = useOrderProjectionFilters();\n\n const value = useMemo(\n () => ({ adapters, slots, filters }),\n [adapters, slots, filters],\n );\n\n return (\n <OrderProjectionContext.Provider value={value}>\n {children}\n </OrderProjectionContext.Provider>\n );\n};\n\nconst useOrderProjectionContext = (): OrderProjectionValue => {\n const context = useContext(OrderProjectionContext);\n\n if (!context) {\n throw new Error(\n 'useOrderProjectionContext must be used within an OrderProjectionProvider',\n );\n }\n\n return context;\n};\n\nconst useOrderProjectionFilterContext = (): UseOrderProjectionFiltersReturn =>\n useOrderProjectionContext().filters;\n\nexport {\n OrderProjectionProvider,\n useOrderProjectionContext,\n useOrderProjectionFilterContext,\n};\n","import TableRow from '@mui/material/TableRow';\n\nimport { getDayColumnKey, PARTNER_COLUMN_KEY } from 'utils/orderProjection';\n\nimport DayCell from './DayCell';\nimport PartnerCell from './PartnerCell';\nimport { HeaderProps } from './props';\nimport { TableHead } from './styles';\n\nconst Header = ({\n days,\n summary,\n isFetchingSummary,\n getColumnResizeProps,\n}: HeaderProps) => (\n <TableHead>\n <TableRow>\n <PartnerCell\n summary={summary}\n isFetchingSummary={isFetchingSummary}\n resize={getColumnResizeProps(PARTNER_COLUMN_KEY)}\n />\n\n {days.map((day, index) => (\n <DayCell\n key={index}\n index={index}\n day={day}\n summary={summary}\n isFetchingSummary={isFetchingSummary}\n resize={getColumnResizeProps(getDayColumnKey(index))}\n />\n ))}\n </TableRow>\n </TableHead>\n);\n\nexport default Header;\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport { Cell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport ColumnResizeHandle from 'components/ColumnResizeHandle';\n\nimport { DayCellProps } from './props';\nimport Summary from './Summary';\n\nconst DAY_LABELS = ['Dom.', 'Seg.', 'Ter.', 'Qua.', 'Qui.', 'Sex.', 'Sáb.'];\n\nconst DayCell = ({\n day,\n index,\n summary,\n isFetchingSummary,\n resize,\n}: DayCellProps) => {\n const isToday = day.isSame(dayjs(), 'day');\n\n return (\n <Cell isToday={isToday} data-testid={`day-cell-${index}`}>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n flexWrap=\"wrap\"\n gap={1}\n >\n <Stack>\n <Typography\n variant=\"subtitle2\"\n color={isToday ? 'primary.main' : 'text.secondary'}\n >\n {day.date()}\n </Typography>\n\n <Typography\n variant=\"body2\"\n fontSize={13}\n color={isToday ? 'primary.main' : 'text.secondary'}\n >\n {DAY_LABELS[day.day()]}\n </Typography>\n </Stack>\n\n <Summary\n day={day}\n summary={summary}\n isFetchingSummary={isFetchingSummary}\n />\n </Stack>\n\n {resize && (\n <ColumnResizeHandle\n label={`Redimensionar coluna ${day.format('DD/MM')}`}\n {...resize}\n />\n )}\n </Cell>\n );\n};\n\nexport default DayCell;\n","import { useMemo } from 'react';\nimport Skeleton from '@mui/material/Skeleton';\nimport dayjs from 'dayjs';\n\nimport Result from 'components/Result';\nimport MuiTooltip from 'components/Tooltip';\n\nimport { SummaryProps } from './props';\nimport { Label } from './styles';\nimport Tooltip from './Tooltip';\n\nconst Summary = ({ day, summary, isFetchingSummary }: SummaryProps) => {\n const isToday = day.isSame(dayjs(), 'day');\n\n const { ordersPlacedCount, ordersExpectedCount } = useMemo(() => {\n const dateFormatted = day.format('YYYY-MM-DD');\n const summaryDay = summary?.days.find(d => d.date === dateFormatted);\n\n const orderPlaced = summaryDay?.order_placed ?? 0;\n const orderUnplanned = summaryDay?.order_unplanned ?? 0;\n const orderPlanned = summaryDay?.order_planned ?? 0;\n\n return {\n ordersPlacedCount: orderPlaced + orderUnplanned,\n ordersExpectedCount: orderPlaced + orderUnplanned + orderPlanned,\n };\n }, [day, summary]);\n\n return (\n <Result\n isLoading={isFetchingSummary}\n loading={<Skeleton width={50} height={24} />}\n >\n <MuiTooltip title={<Tooltip day={day} summary={summary} />} arrow>\n <span>\n <Label\n variant=\"filled\"\n backgroundColor=\"#919EAB29\"\n color=\"text.secondary\"\n isToday={isToday}\n >\n {ordersPlacedCount} de {ordersExpectedCount}\n </Label>\n </span>\n </MuiTooltip>\n </Result>\n );\n};\n\nexport default Summary;\n","import { alpha, styled } from '@mui/material/styles';\n\nimport ColoredLabel from 'components/ColoredLabel';\n\nexport const Label = styled(ColoredLabel, {\n shouldForwardProp: prop => prop !== 'isToday',\n})<{ isToday: boolean }>(({ theme, isToday }) => ({\n color: isToday ? theme.palette.primary.main : theme.palette.text.secondary,\n backgroundColor: isToday\n ? alpha(theme.palette.primary.main, 0.15)\n : alpha(theme.palette.grey[500], 0.15),\n\n cursor: 'pointer',\n}));\n","import { useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport Icon from 'components/Icon';\n\nimport { TooltipProps } from './props';\n\nconst Tooltip = ({ day, summary }: TooltipProps) => {\n const today = useMemo(() => dayjs().startOf('day'), []);\n\n const isFuture = day.isAfter(today, 'day');\n\n const counts = useMemo(() => {\n const dateFormatted = day.format('YYYY-MM-DD');\n const summaryDay = summary?.days.find(d => d.date === dateFormatted);\n\n return {\n shopping_cart_active: summaryDay?.shopping_cart_active ?? 0,\n order_placed: summaryDay?.order_placed ?? 0,\n order_unplanned: summaryDay?.order_unplanned ?? 0,\n order_planned: summaryDay?.order_planned ?? 0,\n shopping_cart_abandoned: summaryDay?.shopping_cart_abandoned ?? 0,\n };\n }, [day, summary]);\n\n return (\n <Stack gap={1.5}>\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Icon icon=\"CALENDAR_TODAY\" color=\"grey.400\" />\n\n <Typography variant=\"caption\" fontWeight=\"bold\">\n Pedidos\n </Typography>\n </Stack>\n\n <Stack gap={0.5}>\n {!isFuture && (\n <>\n <Typography variant=\"caption\">\n Pedidos em andamento:{' '}\n <strong>{counts.shopping_cart_active}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Pedidos realizados: <strong>{counts.order_placed}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Pedidos fora do padrão: <strong>{counts.order_unplanned}</strong>\n </Typography>\n </>\n )}\n\n <Typography variant=\"caption\">\n Pedidos previstos: <strong>{counts.order_planned}</strong>\n </Typography>\n\n {!isFuture && (\n <Typography variant=\"caption\">\n Carrinhos abandonados:{' '}\n <strong>{counts.shopping_cart_abandoned}</strong>\n </Typography>\n )}\n </Stack>\n </Stack>\n );\n};\n\nexport default Tooltip;\n","'use client';\nimport { useCallback } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { PartnerCell as StyledPartnerCell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport ColoredLabel from 'components/ColoredLabel';\nimport ColumnResizeHandle from 'components/ColumnResizeHandle';\nimport IconButton from 'components/IconButton';\nimport MenuPopover from 'components/MenuPopover';\nimport Result from 'components/Result';\nimport Skeleton from 'components/Skeleton';\nimport MuiTooltip from 'components/Tooltip';\nimport usePopover from 'hooks/usePopover';\n\nimport { PartnerCellProps } from './props';\nimport { ItemButton } from './styles';\nimport Tooltip from './Tooltip';\n\nconst PartnerCell = ({\n summary,\n isFetchingSummary,\n resize,\n}: PartnerCellProps) => {\n const { open, onClose, onOpen } = usePopover();\n const { ascending, setAscending } = useOrderProjectionFilterContext();\n\n const handleSetAscending = useCallback(\n (value: boolean) => {\n setAscending(value);\n onClose();\n },\n [onClose, setAscending],\n );\n\n return (\n <>\n <StyledPartnerCell cellAlign=\"center\">\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n flexWrap=\"wrap\"\n gap={1}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Typography variant=\"caption\" color=\"text.primary\">\n Clientes\n </Typography>\n\n <Result\n isLoading={isFetchingSummary}\n loading={<Skeleton width={26} height={24} />}\n >\n <MuiTooltip title={<Tooltip summary={summary} />} arrow>\n <span>\n <ColoredLabel\n variant=\"filled\"\n backgroundColor=\"#919EAB29\"\n color=\"text.secondary\"\n sx={{ cursor: 'pointer' }}\n >\n {summary?.partner_count ?? 0}\n </ColoredLabel>\n </span>\n </MuiTooltip>\n </Result>\n </Stack>\n\n <IconButton\n label=\"Selecionar ordenação\"\n icon=\"SORTING_AZ_02\"\n color=\"text.secondary\"\n size=\"small\"\n onClick={onOpen}\n />\n </Stack>\n\n {resize && (\n <ColumnResizeHandle\n label=\"Redimensionar coluna Clientes\"\n {...resize}\n />\n )}\n </StyledPartnerCell>\n\n <MenuPopover\n open={open}\n onClose={onClose}\n disabledArrow\n sx={{ width: 180, p: 1 }}\n >\n <ItemButton\n variant=\"text\"\n onClick={() => handleSetAscending(true)}\n active={ascending}\n fullWidth\n >\n De A à Z\n </ItemButton>\n\n <ItemButton\n variant=\"text\"\n onClick={() => handleSetAscending(false)}\n active={!ascending}\n fullWidth\n >\n De Z à A\n </ItemButton>\n </MenuPopover>\n </>\n );\n};\n\nexport default PartnerCell;\n","import Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\ninterface ItemButtonProps {\n active?: boolean;\n}\n\nexport const ItemButton = styled(Button, {\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 Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nimport { TooltipProps } from './props';\n\nconst Tooltip = ({ summary }: TooltipProps) => {\n return (\n <Stack gap={1.5}>\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Icon icon=\"USER_GROUP\" color=\"grey.400\" />\n\n <Typography variant=\"caption\" fontWeight=\"bold\">\n Clientes\n </Typography>\n </Stack>\n\n <Stack gap={0.5}>\n <Typography variant=\"caption\">\n Total de clientes: <strong>{summary?.partner_count ?? 0}</strong>\n </Typography>\n </Stack>\n </Stack>\n );\n};\n\nexport default Tooltip;\n","import { styled } from '@mui/material/styles';\nimport MuiTableHead from '@mui/material/TableHead';\n\nexport const TableHead = styled(MuiTableHead)(({ theme }) => ({\n '& .MuiTableCell-root': {\n padding: theme.spacing(1, 2),\n\n borderTop: `1px solid ${theme.palette.divider} !important`,\n borderBottom: `1px solid ${theme.palette.divider} !important`,\n borderRight: `1px solid ${theme.palette.divider} !important`,\n\n background: theme.palette.common.white,\n\n '&:last-child': {\n borderRight: 'none !important',\n },\n },\n\n '& .MuiTableCell-root:first-of-type': {\n zIndex: 3,\n },\n}));\n","import { memo, useMemo } from 'react';\n\nimport { Container } from 'components/Analytics/OrderProjection/CalendarCells';\nimport { Event } from 'types/orderProjection';\n\nimport DayColumn from './DayColumn';\nimport PartnerCell from './PartnerCell';\nimport { RowProps } from './props';\n\nconst Row = ({ partner, index, days, isFetching }: RowProps) => {\n const eventsByDate = useMemo(() => {\n const map = new Map<string, Event[]>();\n\n partner.events.forEach(event => {\n const key = new Date(event.reference_date).toISOString().slice(0, 10);\n const list = map.get(key) ?? [];\n list.push(event);\n map.set(key, list);\n });\n\n return map;\n }, [partner.events]);\n\n return (\n <Container data-testid={`partner-${index}`}>\n <PartnerCell partner={partner} />\n\n {days.map((day, dayIndex) => (\n <DayColumn\n key={dayIndex}\n index={dayIndex}\n day={day}\n events={eventsByDate.get(day.format('YYYY-MM-DD')) ?? []}\n isFetching={isFetching}\n />\n ))}\n </Container>\n );\n};\n\nexport default memo(Row);\n","import dayjs from 'dayjs';\n\nimport { Cell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport Skeleton from 'components/Skeleton';\n\nimport EventCell from './EventCell';\nimport { DayColumnProps } from './props';\n\nconst DayColumn = ({ day, index, events, isFetching }: DayColumnProps) => {\n const isToday = day.isSame(dayjs(), 'day');\n\n if (isFetching)\n return (\n <Cell isToday={isToday} data-testid={`day-column-${index}`}>\n <Skeleton width=\"100%\" height=\"100%\" sx={{ maxHeight: 46.42 }} />\n </Cell>\n );\n\n return <EventCell events={events} day={day} index={index} />;\n};\n\nexport default DayColumn;\n","import dayjs from 'dayjs';\n\nimport { Cell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport { MAX_INDIVIDUAL_EVENTS } from 'utils/orderProjection';\n\nimport Event from './Event';\nimport GroupedEvents from './GroupedEvents';\nimport { EventCellProps } from './props';\nimport { EventList } from './styles';\n\nconst EventCell = ({ events, day, index }: EventCellProps) => {\n const isToday = day.isSame(dayjs(), 'day');\n\n if (events.length === 0)\n return <Cell isToday={isToday} data-testid={`day-column-${index}`} />;\n\n const shouldGroup = events.length > MAX_INDIVIDUAL_EVENTS;\n\n return (\n <Cell isToday={isToday} data-testid={`day-column-${index}`}>\n <EventList>\n {shouldGroup ? (\n <GroupedEvents events={events} />\n ) : (\n events.map((event, eventIndex) => (\n <Event key={eventIndex} index={eventIndex} event={event} />\n ))\n )}\n </EventList>\n </Cell>\n );\n};\n\nexport default EventCell;\n","import Typography from '@mui/material/Typography';\n\nimport Details from 'components/Analytics/OrderProjection/Details';\nimport { tooltipRegistry } from 'components/Analytics/OrderProjection/Tooltips/Single/tooltipRegistry';\nimport Tooltip from 'components/Tooltip';\nimport useToggle from 'hooks/useToggle';\nimport { getPeriodInfo } from 'utils/orderProjection';\n\nimport { EventProps } from './props';\nimport { Card, IconBadge } from './styles';\n\nconst Event = ({ event, index }: EventProps) => {\n const [detailsOpen, toggleDetailsOpen] = useToggle();\n const config = tooltipRegistry[event.type];\n\n if (!config) return null;\n\n const { period } = getPeriodInfo(event.reference_date);\n const icon = config.getIcon(event);\n\n return (\n <>\n <Tooltip title={config.getTooltip(event)} arrow>\n <Card\n data-testid={`event-${index}`}\n eventType={event.type}\n period={period}\n onClick={toggleDetailsOpen}\n >\n {icon && (\n <IconBadge eventType={event.type} period={period}>\n {icon}\n </IconBadge>\n )}\n\n <Typography variant=\"subtitle2\" fontSize={13} noWrap>\n {config.getTitle(event)}\n </Typography>\n\n <Typography variant=\"caption\" noWrap>\n {config.getDescription(event)}\n </Typography>\n </Card>\n </Tooltip>\n\n <Details\n open={detailsOpen}\n onClose={toggleDetailsOpen}\n events={[event]}\n />\n </>\n );\n};\n\nexport default Event;\n","import { useCallback, useState } from 'react';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Drawer from 'components/Drawer';\nimport { getEventStyles, getPeriodInfo } from 'utils/orderProjection';\n\nimport EventAlert from './EventAlert';\nimport List from './List';\nimport PartnerInformations from './PartnerInformations';\nimport { DetailsProps } from './props';\nimport { TypeChip } from './styles';\n\nconst Details = ({ open, onClose, events }: DetailsProps) => {\n const primaryEvent = events[0];\n const [phoneUpdated, setPhoneUpdated] = useState<string>();\n\n const { useEventDetails } = useOrderProjectionContext().adapters;\n\n const {\n data: eventDetails,\n isLoading,\n refetch,\n } = useEventDetails(primaryEvent?.id ?? '', {\n skip: !open || !primaryEvent?.id,\n });\n\n const { period } = getPeriodInfo(primaryEvent?.reference_date ?? new Date());\n\n const config = getEventStyles(primaryEvent?.type, period);\n\n const handlePhoneUpdated = useCallback(\n (phone: string) => {\n // backend está demorando para retornar o telefone atualizado\n setPhoneUpdated(phone);\n refetch();\n },\n [refetch],\n );\n\n return (\n <Drawer\n open={open}\n onClose={onClose}\n headerTitle={\n <>\n Detalhes{' '}\n <TypeChip\n customBackground={config.background}\n customColor={config.color}\n >\n <Typography variant=\"subtitle2\" fontSize={13} noWrap>\n {config.label}\n </Typography>\n </TypeChip>\n </>\n }\n headerProps={{ direction: 'row-reverse' }}\n contentProps={{ p: 0 }}\n maxWidth={520}\n >\n <Stack position=\"sticky\" top={0} zIndex={9}>\n <EventAlert\n origin={primaryEvent?.type}\n referenceDate={primaryEvent?.reference_date}\n />\n </Stack>\n\n <PartnerInformations\n partner={\n eventDetails?.partner\n ? {\n ...eventDetails.partner,\n phone: phoneUpdated ?? eventDetails.partner.phone,\n }\n : undefined\n }\n isLoading={isLoading}\n onPhoneUpdated={handlePhoneUpdated}\n />\n\n <Divider />\n\n <List events={events} />\n </Drawer>\n );\n};\n\nexport default Details;\n","import { ReactNode } from 'react';\n\nimport Icon from 'components/Icon';\nimport { fToNow } from 'utils/formatTime';\nimport { EventType, Period } from 'utils/orderProjection';\nimport { getEventStyles, getPeriodInfo } from 'utils/orderProjection';\n\nimport { AlertConfigGetter } from './props';\n\nconst ORDER_PLANNED_ALERT_BY_PERIOD: Record<\n Period,\n { icon: ReactNode; message: ReactNode }\n> = {\n [Period.PAST]: {\n icon: <Icon icon=\"HEXAGON_WARNING\" color=\"#FF5630\" width={24} />,\n message: (\n <>\n O cliente deveria ter feito pedido, conforme sua frequência de compra,\n mas nenhum pedido foi registrado. Esse comportamento pode indicar{' '}\n <strong>queda de engajamento</strong> ou{' '}\n <strong>risco de inativação</strong>.\n </>\n ),\n },\n [Period.TODAY]: {\n icon: <Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" width={24} />,\n message: (\n <>\n Conforme a frequência de compra deste cliente, um pedido era esperado\n hoje, mas nenhum registro foi feito até o momento.\n </>\n ),\n },\n [Period.FUTURE]: {\n icon: <Icon icon=\"INFO\" color=\"common.black\" width={24} />,\n message: (\n <>\n Baseado na rotina de compras identificada.{' '}\n <strong>Nenhuma ação é necessária no momento</strong>.\n </>\n ),\n },\n};\n\nexport const alertRegistry: Partial<Record<EventType, AlertConfigGetter>> = {\n [EventType.ORDER_UNPLANNED]: () => {\n const config = getEventStyles(EventType.ORDER_UNPLANNED);\n\n return {\n icon: <Icon icon=\"INFO\" color=\"#00B8D9\" width={24} />,\n message: (\n <>\n O cliente realizou um pedido em um dia diferente da sua rotina\n habitual. Isso pode indicar uma{' '}\n <strong>mudança de comportamento de compra</strong> ou uma{' '}\n <strong>demanda excepcional</strong>.\n </>\n ),\n background: config.background,\n color: config.color,\n };\n },\n\n [EventType.ORDER_PLANNED]: ({ referenceDate }) => {\n const { period } = getPeriodInfo(referenceDate || new Date());\n const config = getEventStyles(EventType.ORDER_PLANNED, period);\n const { icon, message } = ORDER_PLANNED_ALERT_BY_PERIOD[period];\n\n return {\n icon,\n message,\n background: config.background,\n color: config.color,\n };\n },\n\n [EventType.SHOPPING_CART_ACTIVE]: () => {\n const config = getEventStyles(EventType.SHOPPING_CART_ACTIVE);\n\n return {\n icon: <Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" width={24} />,\n message: <>O cliente está atualizando o carrinho neste momento.</>,\n background: config.background,\n color: config.color,\n };\n },\n\n [EventType.SHOPPING_CART_ABANDONED]: ({ referenceDate }) => {\n const config = getEventStyles(EventType.SHOPPING_CART_ABANDONED);\n\n return {\n icon: <Icon icon=\"HEXAGON_WARNING\" color=\"#FF5630\" width={24} />,\n message: (\n <>\n Carrinho está abandonado há <strong>{fToNow(referenceDate)}</strong>.\n </>\n ),\n background: config.background,\n color: config.color,\n };\n },\n};\n","import MuiAlert from '@mui/material/Alert';\nimport { styled } from '@mui/material/styles';\n\ninterface AlertProps {\n customBackground?: string;\n customColor?: string;\n}\n\nexport const Alert = styled(MuiAlert, {\n shouldForwardProp: prop =>\n prop !== 'customBackground' && prop !== 'customColor',\n})<AlertProps>(({ theme, customBackground, customColor }) => ({\n padding: theme.spacing(1.5, 2),\n borderRadius: 0,\n borderBottom: `1px solid ${theme.palette.divider}`,\n background: customBackground,\n color: customColor,\n}));\n","import { alertRegistry } from './alertRegistry';\nimport { EventAlertProps } from './props';\nimport { Alert } from './styles';\n\nconst EventAlert = ({ origin, referenceDate }: EventAlertProps) => {\n const configGetter = alertRegistry[origin];\n\n if (!configGetter) return null;\n\n const config = configGetter({ origin, referenceDate });\n\n if (!config) return null;\n\n return (\n <Alert\n icon={config.icon}\n customBackground={config.background}\n customColor={config.color}\n >\n {config.message}\n </Alert>\n );\n};\n\nexport default EventAlert;\n","import Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\n\nimport EventContent from '../EventContent';\n\nimport { ListProps } from './props';\n\nconst List = ({ events }: ListProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n if (events.length <= 1) {\n const event = events[0];\n\n if (!event) return null;\n\n return <EventContent origin={event.type} eventId={event.id} />;\n }\n\n return (\n <>\n {events.map(evt => (\n <Accordion\n key={evt.id}\n slotProps={{ transition: { unmountOnExit: true } }}\n >\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Pedido:&ensp;\n <Typography\n component=\"span\"\n variant=\"body2\"\n fontWeight={600}\n color=\"text.primary\"\n >\n #{getEventCode(evt)}\n </Typography>\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails sx={{ p: 0, mt: -2 }}>\n <EventContent origin={evt.type} eventId={evt.id} />\n </AccordionDetails>\n </Accordion>\n ))}\n </>\n );\n};\n\nexport default List;\n","import Alert from '@mui/material/Alert';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { ExternalOrigin } from 'utils/orderProjection';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport OrderPlacedSkeleton from './Skeleton';\n\nconst OrderPlaced = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { renderEventStatus, renderEventActions } = slots;\n\n const {\n data: event,\n isLoading: isLoadingEvent,\n isFetching: isFetchingEvent,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n const detailId =\n event?.detail?.sale_external_id || event?.detail?.external_id;\n const isBaseLoading = isLoadingEvent || isFetchingEvent;\n\n const isSale = event?.external_origin === ExternalOrigin.SALE;\n const isPageLoading = isBaseLoading;\n\n return (\n <Result\n isLoading={isPageLoading}\n loading={<OrderPlacedSkeleton />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do pedido realizado!\"\n onRetry={refetch}\n isFetching={isFetchingEvent}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do pedido\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ID\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {detailId ? `#${detailId}` : '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data e hora\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fDate(event?.detail?.created_at, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fCurrencyBRL(event?.detail?.total_value ?? event?.amount_value)}\n </Typography>\n </Stack>\n\n {event && renderEventStatus?.(event)}\n </Stack>\n\n <Stack gap={1.5}>\n {event && renderEventActions?.(event)}\n\n {!isSale && (\n <Alert severity=\"warning\">\n Este pedido foi importado do ERP. Para visualizar detalhes ou\n realizar ações, acesse o sistema ERP.\n </Alert>\n )}\n </Stack>\n </Stack>\n </Result>\n );\n};\n\nexport default OrderPlaced;\n","import LoadingButton from '@mui/lab/LoadingButton';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nimport { ErrorStateProps } from './props';\n\nconst ErrorState = ({ message, onRetry, isFetching }: ErrorStateProps) => (\n <Stack alignItems=\"center\" justifyContent=\"center\" p={3} gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {message}\n </Typography>\n\n <LoadingButton\n variant=\"text\"\n startIcon={<Icon icon=\"REFRESH_CHANGE\" />}\n size=\"small\"\n onClick={onRetry}\n loading={isFetching}\n >\n Tentar novamente\n </LoadingButton>\n </Stack>\n);\n\nexport default ErrorState;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nconst OrderPlacedSkeleton = () => {\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do pedido\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ID\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data e hora\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do pedido\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Status do pedido\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n </Stack>\n\n <Stack\n display=\"grid\"\n gridTemplateColumns={{ xs: '1fr', sm: '1fr 1fr' }}\n gap={1.5}\n >\n <Skeleton width=\"100%\" height={30} />\n\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n </Stack>\n );\n};\n\nexport default OrderPlacedSkeleton;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport { fDate, fToNow } from 'utils/formatTime';\nimport { Period } from 'utils/orderProjection';\nimport { getPeriodInfo, getRecurrenceLabel } from 'utils/orderProjection';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport OrderPlannedSkeleton from './Skeleton';\n\nconst OrderPlanned = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { renderEventActions, renderSaleLink } = slots;\n\n const {\n data: event,\n isLoading,\n isFetching,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n const { period } = getPeriodInfo(event?.reference_date ?? new Date());\n const isPast = period === Period.PAST;\n const isFuture = period === Period.FUTURE;\n\n const lastSaleId =\n event?.partner?.sale_analysis?.last_sale_sale_external_id ||\n event?.partner?.sale_analysis?.last_sale_external_id;\n const lastSaleDate =\n event?.partner?.sale_analysis?.last_sale_negotiation_date;\n\n return (\n <Result\n isLoading={isLoading}\n loading={<OrderPlannedSkeleton period={period} />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do pedido previsto!\"\n onRetry={refetch}\n isFetching={isFetching}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n {isFuture ? 'Comportamento de compra' : 'Resumo'}\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data prevista\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fDate(event?.reference_date, 'DD/MM/YYYY')}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {getRecurrenceLabel(event?.partner?.recurrence)}\n </Typography>\n </Stack>\n\n {isPast && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Período desde o último pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {lastSaleDate ? fToNow(lastSaleDate) : '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Último pedido\n </Typography>\n\n {lastSaleId ? (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n {renderSaleLink?.(lastSaleId)}\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n em {fDate(lastSaleDate, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n -\n </Typography>\n )}\n </Stack>\n </>\n )}\n </Stack>\n\n {event && renderEventActions?.(event)}\n </Stack>\n </Result>\n );\n};\n\nexport default OrderPlanned;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\nimport { Period } from 'utils/orderProjection';\n\nimport { OrderPlannedSkeletonProps } from './props';\n\nconst OrderPlannedSkeleton = ({ period }: OrderPlannedSkeletonProps) => {\n const isPast = period === Period.PAST;\n const isFuture = period === Period.FUTURE;\n\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n {isFuture ? 'Comportamento de compra' : 'Resumo'}\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data prevista\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n {isPast && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Período desde o último pedido\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Último pedido\n </Typography>\n\n <Skeleton width=\"50%\" height={22} />\n </Stack>\n </>\n )}\n </Stack>\n\n <Stack\n display=\"grid\"\n gridTemplateColumns={{ xs: '1fr', sm: '1fr 1fr' }}\n gap={1}\n >\n <Skeleton width=\"100%\" height={30} />\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n </Stack>\n );\n};\n\nexport default OrderPlannedSkeleton;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { getRecurrenceLabel } from 'utils/orderProjection';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport OrderUnplannedSkeleton from './Skeleton';\n\nconst OrderUnplanned = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { renderEventActions } = slots;\n\n const {\n data: event,\n isLoading,\n isFetching,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n const detailId =\n event?.detail?.sale_external_id || event?.detail?.external_id;\n\n return (\n <Result\n isLoading={isLoading}\n loading={<OrderUnplannedSkeleton />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do pedido!\"\n onRetry={refetch}\n isFetching={isFetching}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do pedido\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ID\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {detailId ? `#${detailId}` : '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data e hora\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fDate(event?.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fCurrencyBRL(event?.amount_value)}\n </Typography>\n </Stack>\n </Stack>\n\n <Divider sx={{ mx: -3 }} />\n\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Comportamento de compra\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {getRecurrenceLabel(event?.partner?.recurrence)}\n </Typography>\n </Stack>\n </Stack>\n\n {event && renderEventActions?.(event)}\n </Stack>\n </Result>\n );\n};\n\nexport default OrderUnplanned;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nconst OrderUnplannedSkeleton = () => {\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do pedido\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ID\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Data e hora\n </Typography>\n\n <Skeleton width=\"25%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do pedido\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n </Stack>\n\n <Divider sx={{ mx: -3 }} />\n\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Comportamento de compra\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Skeleton width=\"35%\" height={22} />\n </Stack>\n </Stack>\n\n <Stack\n display=\"grid\"\n gridTemplateColumns={{ xs: '1fr', sm: '1fr 1fr' }}\n gap={1}\n >\n <Skeleton width=\"100%\" height={30} />\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n </Stack>\n );\n};\nexport default OrderUnplannedSkeleton;\n","import Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport ShoppingCartAbandonedSkeleton from './Skeleton';\n\nconst ShoppingCartAbandoned = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { formatAddress } = slots;\n\n const {\n data: event,\n isLoading,\n isFetching,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n return (\n <Result\n isLoading={isLoading}\n loading={<ShoppingCartAbandonedSkeleton />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do carrinho abandonado!\"\n onRetry={refetch}\n isFetching={isFetching}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações do carrinho\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Tempo decorrido desde o abandono\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fDate(event?.detail?.abandoned_at, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Modelo de pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {event?.detail?.new_order?.name ?? '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Forma de pagamento\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {event?.detail?.payment_method?.name ?? '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do carrinho\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fCurrencyBRL(event?.detail?.total ?? event?.amount_value)}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Endereço\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {formatAddress(event?.detail?.address)}\n </Typography>\n </Stack>\n </Stack>\n\n <Button\n component={Link}\n href={`https://wa.me/${event?.partner?.phone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outlined\"\n startIcon={<Icon icon=\"WHATSAPP\" color=\"success.main\" />}\n color=\"inherit\"\n size=\"small\"\n disabled={!event?.partner?.phone}\n >\n Enviar mensagem\n </Button>\n </Stack>\n </Result>\n );\n};\n\nexport default ShoppingCartAbandoned;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nconst ShoppingCartAbandonedSkeleton = () => {\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações do carrinho\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Tempo decorrido desde o abandono\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Modelo de pedido\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Forma de pagamento\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do carrinho\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Endereço\n </Typography>\n\n <Skeleton width=\"80%\" height={22} />\n </Stack>\n </Stack>\n\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n );\n};\n\nexport default ShoppingCartAbandonedSkeleton;\n","import Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport { fCurrencyBRL } from 'utils/formatNumber';\n\nimport ErrorState from '../ErrorState';\nimport { EventContentProps } from '../props';\n\nimport ShoppingCartActiveSkeleton from './Skeleton';\n\nconst ShoppingCartActive = ({ eventId }: EventContentProps) => {\n const { adapters, slots } = useOrderProjectionContext();\n const { useEventDetails } = adapters;\n const { formatAddress } = slots;\n\n const {\n data: event,\n isLoading,\n isFetching,\n isError,\n refetch,\n } = useEventDetails(eventId, {\n skip: !eventId,\n });\n\n return (\n <Result\n isLoading={isLoading}\n loading={<ShoppingCartActiveSkeleton />}\n anError={isError}\n error={\n <ErrorState\n message=\"Não foi possível carregar os detalhes do carrinho!\"\n onRetry={refetch}\n isFetching={isFetching}\n />\n }\n >\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do carrinho\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Modelo de pedido\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {event?.detail?.new_order?.name ?? '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Forma de pagamento\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {event?.detail?.payment_method?.name ?? '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do carrinho\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fCurrencyBRL(event?.detail?.total ?? event?.amount_value)}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Endereço\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {formatAddress(event?.detail?.address)}\n </Typography>\n </Stack>\n </Stack>\n\n <Button\n component={Link}\n href={`https://wa.me/${event?.partner?.phone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outlined\"\n startIcon={<Icon icon=\"WHATSAPP\" color=\"success.main\" />}\n color=\"inherit\"\n size=\"small\"\n disabled={!event?.partner?.phone}\n >\n Enviar mensagem\n </Button>\n </Stack>\n </Result>\n );\n};\n\nexport default ShoppingCartActive;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nconst ShoppingCartActiveSkeleton = () => {\n return (\n <Stack gap={3} p={3}>\n <Stack gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Resumo do carrinho\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Modelo de pedido\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Forma de pagamento\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Valor do carrinho\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Endereço\n </Typography>\n\n <Skeleton width=\"80%\" height={22} />\n </Stack>\n </Stack>\n\n <Skeleton width=\"100%\" height={30} />\n </Stack>\n );\n};\n\nexport default ShoppingCartActiveSkeleton;\n","import { EventType } from 'utils/orderProjection';\n\nimport OrderPlaced from './OrderPlaced';\nimport OrderPlanned from './OrderPlanned';\nimport OrderUnplanned from './OrderUnplanned';\nimport { EventContentProps, EventContentRouterProps } from './props';\nimport ShoppingCartAbandoned from './ShoppingCartAbandoned';\nimport ShoppingCartActive from './ShoppingCartActive';\n\nconst EVENT_CONTENT_MAP: Record<\n EventType,\n React.ComponentType<EventContentProps>\n> = {\n [EventType.ORDER_PLACED]: OrderPlaced,\n [EventType.ORDER_UNPLANNED]: OrderUnplanned,\n [EventType.ORDER_PLANNED]: OrderPlanned,\n [EventType.SHOPPING_CART_ACTIVE]: ShoppingCartActive,\n [EventType.SHOPPING_CART_ABANDONED]: ShoppingCartAbandoned,\n};\n\nconst EventContent = ({ origin, eventId }: EventContentRouterProps) => {\n const Component = EVENT_CONTENT_MAP[origin];\n\n if (!Component) return null;\n\n return <Component eventId={eventId} />;\n};\n\nexport default EventContent;\n","import Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport { cpfMaskOrCnpjMask, phoneMask } from 'utils/mask';\n\nimport { PartnerInformationsProps } from './props';\nimport PartnerInformationsSkeleton from './Skeleton';\n\nconst PartnerInformations = ({\n partner,\n isLoading,\n onPhoneUpdated,\n}: PartnerInformationsProps) => {\n const { renderPartnerLink, renderPhoneEditor } =\n useOrderProjectionContext().slots;\n\n return (\n <Result isLoading={isLoading} loading={<PartnerInformationsSkeleton />}>\n <Stack p={3} gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações do cliente\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome\n </Typography>\n\n {renderPartnerLink ? (\n renderPartnerLink(partner)\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partner?.name || '-'}\n </Typography>\n )}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n CPF/CNPJ\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {partner?.tax_id ? cpfMaskOrCnpjMask(partner.tax_id) : '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n {partner?.phone ? (\n <Link\n href={`https://wa.me/${partner.phone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n color=\"#22C55E\"\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Icon icon=\"WHATSAPP\" color=\"#22C55E\" />\n\n <Typography variant=\"subtitle2\" color=\"success.main\">\n {phoneMask(partner.phone)}\n </Typography>\n </Stack>\n </Link>\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n\n {renderPhoneEditor?.(\n partner?.external_id ?? '',\n onPhoneUpdated ?? (() => {}),\n )}\n </Stack>\n </Stack>\n </Result>\n );\n};\n\nexport default PartnerInformations;\n","import Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport Skeleton from 'components/Skeleton';\n\nconst PartnerInformationsSkeleton = () => (\n <Stack p={3} gap={1}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações do cliente\n </Typography>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n CPF/CNPJ\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n <Skeleton width=\"100%\" height={22} />\n </Stack>\n\n <Button\n variant=\"text\"\n startIcon={<Icon icon=\"PENCIL_EDIT\" />}\n color=\"inherit\"\n size=\"small\"\n disabled\n >\n Editar\n </Button>\n </Stack>\n </Stack>\n);\n\nexport default PartnerInformationsSkeleton;\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\ninterface TypeChipProps {\n customBackground: string;\n customColor: string;\n}\n\nexport const TypeChip = styled(Stack, {\n shouldForwardProp: prop =>\n prop !== 'customBackground' && prop !== 'customColor',\n})<TypeChipProps>(({ theme, customBackground, customColor }) => ({\n padding: theme.spacing(0.5, 1),\n borderRadius: 4,\n background: customBackground,\n color: customColor,\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst OrderPlacedTooltip = ({ event }: SingleTooltipProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n return (\n <BaseTooltip\n icon={<Icon icon=\"CHECK_CIRCLE\" color=\"#22C55E\" />}\n title=\"Pedido realizado\"\n description=\"Pedido realizado com sucesso!\"\n details={\n <>\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>\n {getEventCode(event) ? `#${getEventCode(event)}` : '-'}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Data e hora:{' '}\n <strong>\n {fDate(event.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </>\n }\n />\n );\n};\n\nexport default OrderPlacedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { BaseTooltipProps } from './props';\n\nconst BaseTooltip = ({\n icon,\n title,\n description,\n details,\n footer,\n}: BaseTooltipProps) => (\n <Stack gap={1}>\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n {icon}\n\n <Typography variant=\"caption\" fontWeight=\"bold\">\n {title}\n </Typography>\n </Stack>\n\n <Typography variant=\"caption\">{description}</Typography>\n\n {details && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n <Stack>{details}</Stack>\n </>\n )}\n\n {footer && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n {footer}\n </>\n )}\n </Stack>\n);\n\nexport default BaseTooltip;\n","import Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { Period } from 'utils/orderProjection';\nimport { getPeriodInfo } from 'utils/orderProjection';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst OrderPlannedTooltip = ({ event }: SingleTooltipProps) => {\n const { period } = getPeriodInfo(event.reference_date);\n\n if (period === Period.PAST) {\n return (\n <BaseTooltip\n icon={<Icon icon=\"HEXAGON_WARNING\" color=\"#FF5630\" />}\n title=\"Pedido não realizado\"\n description=\"Cliente não realizou o pedido previsto na data esperada.\"\n details={\n <Typography variant=\"caption\">\n Data prevista:{' '}\n <strong>{fDate(event.reference_date, 'DD/MM/YYYY')}</strong>\n </Typography>\n }\n />\n );\n }\n\n if (period === Period.TODAY) {\n return (\n <BaseTooltip\n icon={<Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" />}\n title=\"Pedido previsto para hoje\"\n description=\"Nenhum pedido registrado até o momento.\"\n details={\n <Typography variant=\"caption\">\n Valor previsto: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n }\n />\n );\n }\n\n return (\n <BaseTooltip\n icon={<Icon icon=\"CALENDAR_TODAY\" color=\"#C4CDD5\" />}\n title=\"Pedido previsto\"\n description=\"Próximo pedido estimado conforme padrão de frequência.\"\n details={\n <Typography variant=\"caption\">\n Data prevista:{' '}\n <strong>{fDate(event.reference_date, 'DD/MM/YYYY')}</strong>\n </Typography>\n }\n />\n );\n};\n\nexport default OrderPlannedTooltip;\n","import Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst OrderUnplannedTooltip = ({ event }: SingleTooltipProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n return (\n <BaseTooltip\n icon={<Icon icon=\"INFO\" color=\"#00B8D9\" />}\n title=\"Pedido fora do padrão\"\n description=\"Pedido feito em dia não previsto pela frequência.\"\n details={\n <>\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>\n {getEventCode(event) ? `#${getEventCode(event)}` : '-'}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Data e hora:{' '}\n <strong>\n {fDate(event.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </>\n }\n />\n );\n};\n\nexport default OrderUnplannedTooltip;\n","import Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fToNow } from 'utils/formatTime';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst ShoppingCartAbandonedTooltip = ({ event }: SingleTooltipProps) => (\n <BaseTooltip\n icon={<Icon icon=\"CANCEL_CIRCLE_SOLID\" color=\"#FF5630\" />}\n title=\"Carrinho abandonado\"\n description={\n <>\n Carrinho inativo há <strong>{fToNow(event.reference_date)}</strong> —\n valor estimado: <strong>{fCurrencyBRL(event.amount_value)}</strong>.\n </>\n }\n details={\n <>\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>{event.external_id ? `#${event.external_id}` : '-'}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </>\n }\n />\n);\n\nexport default ShoppingCartAbandonedTooltip;\n","import Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\n\nimport BaseTooltip from '../Base';\nimport { SingleTooltipProps } from '../props';\n\nconst ShoppingCartActiveTooltip = ({ event }: SingleTooltipProps) => (\n <BaseTooltip\n icon={<Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" />}\n title=\"Pedido em andamento\"\n description=\"Cliente está atualizando o carrinho neste momento.\"\n details={\n <Typography variant=\"caption\">\n Valor parcial: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n }\n />\n);\n\nexport default ShoppingCartActiveTooltip;\n","import Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fToNow } from 'utils/formatTime';\nimport { EventType, Period } from 'utils/orderProjection';\nimport { getPeriodInfo } from 'utils/orderProjection';\n\nimport OrderPlacedTooltip from './OrderPlaced';\nimport OrderPlannedTooltip from './OrderPlanned';\nimport OrderUnplannedTooltip from './OrderUnplanned';\nimport { TooltipRegistryConfig } from './props';\nimport ShoppingCartAbandonedTooltip from './ShoppingCartAbandoned';\nimport ShoppingCartActiveTooltip from './ShoppingCartActive';\n\nconst iconProps = {\n color: 'common.white',\n width: 16,\n height: 16,\n sx: { flexShrink: 0 },\n};\n\nexport const tooltipRegistry: Record<EventType, TooltipRegistryConfig> = {\n [EventType.ORDER_PLACED]: {\n getIcon: () => null,\n getTitle: () => 'Pedido realizado',\n getDescription: () => 'Pedido confirmado com sucesso!',\n getTooltip: event => <OrderPlacedTooltip event={event} />,\n },\n\n [EventType.ORDER_UNPLANNED]: {\n getIcon: () => null,\n getTitle: () => 'Pedido fora do padrão',\n getDescription: () => 'Pedido feito fora do dia habitual.',\n getTooltip: event => <OrderUnplannedTooltip event={event} />,\n },\n\n [EventType.ORDER_PLANNED]: {\n getIcon: event => {\n const { period } = getPeriodInfo(event.reference_date);\n\n if (period === Period.PAST) {\n return <Icon icon=\"HEXAGON_WARNING\" {...iconProps} />;\n }\n\n if (period === Period.TODAY) {\n return <Icon icon=\"WARNING_TRIANGLE_SOLID\" {...iconProps} />;\n }\n\n return null;\n },\n getTitle: event => {\n const { period } = getPeriodInfo(event.reference_date);\n\n if (period === Period.PAST) return 'Pedido não realizado';\n if (period === Period.TODAY) return 'Pedido previsto para hoje';\n\n return 'Pedido previsto';\n },\n getDescription: event => {\n const { period } = getPeriodInfo(event.reference_date);\n\n if (period === Period.PAST) {\n return 'Cliente não realizou o pedido previsto na data esperada.';\n }\n\n if (period === Period.TODAY) {\n return 'Nenhum pedido registrado até o momento.';\n }\n\n return 'Próximo pedido estimado conforme padrão de frequência.';\n },\n getTooltip: event => <OrderPlannedTooltip event={event} />,\n },\n\n [EventType.SHOPPING_CART_ACTIVE]: {\n getIcon: () => null,\n getTitle: () => 'Pedido em andamento',\n getDescription: () => 'Cliente está atualizando o carrinho neste momento.',\n getTooltip: event => <ShoppingCartActiveTooltip event={event} />,\n },\n\n [EventType.SHOPPING_CART_ABANDONED]: {\n getIcon: () => <Icon icon=\"CANCEL_CIRCLE_SOLID\" {...iconProps} />,\n getTitle: () => 'Carrinho abandonado',\n getDescription: event =>\n `Carrinho inativo há ${fToNow(event.reference_date)} — valor estimado: ${fCurrencyBRL(event.amount_value)}.`,\n getTooltip: event => <ShoppingCartAbandonedTooltip event={event} />,\n },\n};\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nimport { EventType, Period } from 'utils/orderProjection';\nimport { getEventStyles } from 'utils/orderProjection';\n\ninterface CardProps {\n eventType: EventType;\n period?: Period;\n}\n\nexport const Card = styled(Stack, {\n shouldForwardProp: prop => prop !== 'eventType' && prop !== 'period',\n})<CardProps>(({ theme, eventType, period }) => {\n const styles = getEventStyles(eventType, period);\n\n return {\n position: 'relative',\n padding: theme.spacing(0.5, 1),\n borderRadius: 4,\n background: styles.background,\n color: styles.color,\n cursor: 'pointer',\n\n '&:hover': {\n background: styles.backgroundHover,\n },\n };\n});\n\nexport const IconBadge = styled(Stack, {\n shouldForwardProp: prop => prop !== 'eventType' && prop !== 'period',\n})<CardProps>(({ theme, eventType, period }) => {\n const styles = getEventStyles(eventType, period);\n\n return {\n position: 'absolute',\n top: -5,\n right: -5,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n background: styles.iconBadgeColor,\n boxShadow: `0 0 0 2px ${theme.palette.common.white}`,\n };\n});\n","import { useMemo } from 'react';\n\nimport { GroupedEvent } from 'types/orderProjection';\nimport { EventType } from 'utils/orderProjection';\nimport { getEventStyles, getPeriodInfo } from 'utils/orderProjection';\n\nimport GroupedEventCard from './Card';\nimport { GroupedEventsProps } from './props';\n\nconst GroupedEvents = ({ events }: GroupedEventsProps) => {\n const grouped = useMemo(() => {\n const groups: Record<string, GroupedEvent> = {};\n\n events.forEach(event => {\n const config =\n event.type === EventType.ORDER_PLANNED\n ? getEventStyles(\n event.type,\n getPeriodInfo(event.reference_date).period,\n )\n : getEventStyles(event.type);\n\n if (!groups[config.label]) {\n groups[config.label] = {\n count: 0,\n config,\n events: [],\n };\n }\n\n groups[config.label].count += 1;\n groups[config.label].events.push(event);\n });\n\n return Object.values(groups);\n }, [events]);\n\n return (\n <>\n {grouped.map((group, index) => (\n <GroupedEventCard key={index} index={index} group={group} />\n ))}\n </>\n );\n};\n\nexport default GroupedEvents;\n","import Typography from '@mui/material/Typography';\n\nimport Details from 'components/Analytics/OrderProjection/Details';\nimport { groupedTooltipRegistry } from 'components/Analytics/OrderProjection/Tooltips/Grouped/tooltipRegistry';\nimport Tooltip from 'components/Tooltip';\nimport useToggle from 'hooks/useToggle';\n\nimport { GroupedEventCardProps } from './props';\nimport { Card } from './styles';\n\nconst GroupedEventCard = ({ group, index }: GroupedEventCardProps) => {\n const [detailsOpen, toggleDetailsOpen] = useToggle();\n\n const { config, count, events } = group;\n\n const label = count > 1 ? config.labelPlural : config.label;\n\n const TooltipContent = groupedTooltipRegistry[events[0].type];\n\n return (\n <>\n <Tooltip title={<TooltipContent events={events} />} arrow>\n <Card\n data-testid={`grouped-events-${index}`}\n customBackground={config.background}\n customColor={config.color}\n customHoverBackground={config.backgroundHover}\n onClick={toggleDetailsOpen}\n >\n <Typography\n variant=\"subtitle2\"\n fontSize={13}\n title={`${count} ${label}`}\n noWrap\n >\n <strong>{count}</strong> {label}\n </Typography>\n </Card>\n </Tooltip>\n\n <Details open={detailsOpen} onClose={toggleDetailsOpen} events={events} />\n </>\n );\n};\n\nexport default GroupedEventCard;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { MAX_VISIBLE_TOOLTIP_EVENTS } from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst GroupedOrderPlacedTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={<Icon icon=\"CHECK_CIRCLE\" color=\"#22C55E\" />}\n title=\"Pedidos realizados\"\n description=\"Pedidos realizados com sucesso!\"\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>\n {getEventCode(event) ? `#${getEventCode(event)}` : '-'}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Data/Hora:{' '}\n <strong>\n {fDate(event.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} pedido{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedOrderPlacedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { GroupedBaseTooltipProps } from './props';\n\nconst GroupedBaseTooltip = ({\n icon,\n title,\n description,\n children,\n}: GroupedBaseTooltipProps) => (\n <Stack gap={1}>\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n {icon}\n\n <Typography variant=\"caption\" fontWeight=\"bold\">\n {title}\n </Typography>\n </Stack>\n\n <Typography variant=\"caption\">{description}</Typography>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={1}>{children}</Stack>\n </Stack>\n);\n\nexport default GroupedBaseTooltip;\n","import { ReactNode } from 'react';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fDate } from 'utils/formatTime';\nimport { Period } from 'utils/orderProjection';\nimport {\n getPeriodInfo,\n MAX_VISIBLE_TOOLTIP_EVENTS,\n} from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst ICON_BY_PERIOD: Record<Period, ReactNode> = {\n [Period.PAST]: <Icon icon=\"HEXAGON_WARNING\" color=\"#FF5630\" />,\n [Period.TODAY]: <Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" />,\n [Period.FUTURE]: <Icon icon=\"CALENDAR_TODAY\" color=\"#C4CDD5\" />,\n};\n\nconst TITLE_BY_PERIOD: Record<Period, string> = {\n [Period.PAST]: 'Pedidos não realizados',\n [Period.TODAY]: 'Pedidos previstos para hoje',\n [Period.FUTURE]: 'Pedidos previstos',\n};\n\nconst DESCRIPTION_BY_PERIOD: Record<Period, string> = {\n [Period.PAST]:\n 'Clientes não realizaram os pedidos previstos na data esperada.',\n [Period.TODAY]: 'Nenhum pedido registrado até o momento.',\n [Period.FUTURE]: 'Próximos pedidos estimados conforme padrão de frequência.',\n};\n\nconst GroupedOrderPlannedTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const { period } = getPeriodInfo(events[0]?.reference_date);\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={ICON_BY_PERIOD[period]}\n title={TITLE_BY_PERIOD[period]}\n description={DESCRIPTION_BY_PERIOD[period]}\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n Data prevista:{' '}\n <strong>{fDate(event.reference_date, 'DD/MM/YYYY')}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} pedido{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedOrderPlannedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\nimport { MAX_VISIBLE_TOOLTIP_EVENTS } from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst GroupedOrderUnplannedTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const { getEventCode } = useOrderProjectionContext().slots;\n\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={<Icon icon=\"INFO\" color=\"#00B8D9\" />}\n title=\"Pedidos fora do padrão\"\n description=\"Pedidos feitos em dias não previstos pela frequência.\"\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>\n {getEventCode(event) ? `#${getEventCode(event)}` : '-'}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Data/Hora:{' '}\n <strong>\n {fDate(event.reference_date, 'DD/MM/YYYY [às] HH:mm')}\n </strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} pedido{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedOrderUnplannedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fToNow } from 'utils/formatTime';\nimport { MAX_VISIBLE_TOOLTIP_EVENTS } from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst GroupedShoppingCartAbandonedTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={<Icon icon=\"CANCEL_CIRCLE_SOLID\" color=\"#FF5630\" />}\n title=\"Carrinhos abandonados\"\n description=\"Carrinhos inativos há algum tempo.\"\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>{event.external_id ? `#${event.external_id}` : '-'}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Inativo há: <strong>{fToNow(event.reference_date)}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} carrinho{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedShoppingCartAbandonedTooltip;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { MAX_VISIBLE_TOOLTIP_EVENTS } from 'utils/orderProjection';\n\nimport GroupedBaseTooltip from '../Base';\nimport { GroupedTooltipComponentProps } from '../props';\n\nconst GroupedShoppingCartActiveTooltip = ({\n events,\n}: GroupedTooltipComponentProps) => {\n const visibleEvents = events.slice(0, MAX_VISIBLE_TOOLTIP_EVENTS);\n const remaining = events.length - MAX_VISIBLE_TOOLTIP_EVENTS;\n\n return (\n <GroupedBaseTooltip\n icon={<Icon icon=\"WARNING_TRIANGLE_SOLID\" color=\"#FFAB00\" />}\n title=\"Pedidos em andamento\"\n description=\"Clientes estão atualizando seus carrinhos neste momento.\"\n >\n {visibleEvents.map((event, index) => (\n <Stack key={event.id}>\n {index > 0 && <Divider sx={{ borderStyle: 'dashed', mb: 1 }} />}\n\n <Typography variant=\"caption\">\n ID:{' '}\n <strong>{event.external_id ? `#${event.external_id}` : '-'}</strong>\n </Typography>\n\n <Typography variant=\"caption\">\n Valor parcial: <strong>{fCurrencyBRL(event.amount_value)}</strong>\n </Typography>\n </Stack>\n ))}\n\n {remaining > 0 && (\n <>\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Typography variant=\"caption\">\n e mais {remaining} carrinho{remaining > 1 ? 's' : ''}\n </Typography>\n </>\n )}\n </GroupedBaseTooltip>\n );\n};\n\nexport default GroupedShoppingCartActiveTooltip;\n","import { EventType } from 'utils/orderProjection';\n\nimport GroupedOrderPlacedTooltip from './OrderPlaced';\nimport GroupedOrderPlannedTooltip from './OrderPlanned';\nimport GroupedOrderUnplannedTooltip from './OrderUnplanned';\nimport { GroupedTooltipRegistry } from './props';\nimport GroupedShoppingCartAbandonedTooltip from './ShoppingCartAbandoned';\nimport GroupedShoppingCartActiveTooltip from './ShoppingCartActive';\n\nexport const groupedTooltipRegistry: Record<EventType, GroupedTooltipRegistry> =\n {\n [EventType.ORDER_PLACED]: GroupedOrderPlacedTooltip,\n [EventType.ORDER_UNPLANNED]: GroupedOrderUnplannedTooltip,\n [EventType.ORDER_PLANNED]: GroupedOrderPlannedTooltip,\n [EventType.SHOPPING_CART_ACTIVE]: GroupedShoppingCartActiveTooltip,\n [EventType.SHOPPING_CART_ABANDONED]: GroupedShoppingCartAbandonedTooltip,\n };\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\ninterface CardProps {\n customBackground: string;\n customColor: string;\n customHoverBackground?: string;\n}\n\nexport const Card = styled(Stack, {\n shouldForwardProp: prop =>\n prop !== 'customBackground' &&\n prop !== 'customColor' &&\n prop !== 'customHoverBackground',\n})<CardProps>(\n ({ theme, customBackground, customColor, customHoverBackground }) => ({\n padding: theme.spacing(0.5, 1),\n borderRadius: 4,\n background: customBackground,\n color: customColor,\n cursor: 'pointer',\n\n '&:hover': {\n background: customHoverBackground,\n },\n }),\n);\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const EventList = styled(Stack)({\n gap: 4,\n});\n","import { useCallback, useMemo, useRef, useState } from 'react';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { PartnerCell as StyledPartnerCell } from 'components/Analytics/OrderProjection/CalendarCells';\nimport PartnerStatus from 'components/Analytics/OrderProjection/PartnerStatus';\nimport Drawer from 'components/Drawer';\nimport Icon from 'components/Icon';\nimport MenuPopover from 'components/MenuPopover';\nimport usePopover from 'hooks/usePopover';\nimport useToggle from 'hooks/useToggle';\nimport { STATUS_OPTIONS } from 'utils/partnerAnalysis';\n\nimport Details from './Details';\nimport { PartnerCellProps } from './props';\nimport { Container, ItemButton } from './styles';\n\nconst PartnerCell = ({ partner }: PartnerCellProps) => {\n const { open, onClose, setOpen } = usePopover();\n const iconRef = useRef<HTMLSpanElement>(null);\n\n const [detailsOpen, toggleDetailsOpen] = useToggle(false);\n\n const [localPhone, setLocalPhone] = useState(partner.phone);\n\n const phone = localPhone?.replace(/\\D/g, '');\n const hasPhone = !!phone;\n\n const handlePhoneUpdated = useCallback((updatedPhone: string) => {\n setLocalPhone(updatedPhone);\n }, []);\n\n const saleCount = partner.sale_analysis.sale_count;\n\n const saleLabel = useMemo(\n () => `${saleCount} pedido${saleCount === 0 || saleCount > 1 ? 's' : ''}`,\n [saleCount],\n );\n\n const title = useMemo(() => {\n const classificationLabel = STATUS_OPTIONS[partner.classification]?.label;\n const details = [classificationLabel, saleLabel]\n .filter(Boolean)\n .join(' • ');\n\n return `${partner.name}\\n${details}`;\n }, [partner.classification, partner.name, saleLabel]);\n\n const handleOpen = useCallback(() => {\n if (iconRef.current) {\n setOpen(iconRef.current);\n }\n }, [setOpen]);\n\n const handleDetailsOpen = useCallback(() => {\n onClose();\n toggleDetailsOpen();\n }, [onClose, toggleDetailsOpen]);\n\n return (\n <>\n <StyledPartnerCell\n title={title}\n onClick={handleOpen}\n sx={{ cursor: 'pointer' }}\n >\n <Container>\n <Stack overflow=\"hidden\">\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partner.name}\n </Typography>\n\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n <PartnerStatus\n status={partner.classification}\n variant=\"caption\"\n color=\"text.disabled\"\n />\n\n <Typography variant=\"caption\" color=\"text.disabled\" noWrap>\n {partner.classification && <>&#x2022;</>} {saleLabel}\n </Typography>\n </Stack>\n </Stack>\n\n <span ref={iconRef}>\n <Icon icon=\"ARROW_DOWN_SIMPLE\" color=\"text.secondary\" />\n </span>\n </Container>\n </StyledPartnerCell>\n\n <MenuPopover\n open={open}\n onClose={onClose}\n disabledArrow\n sx={{ width: 180, p: 1 }}\n >\n <ItemButton\n component={Link}\n href={`https://wa.me/${phone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"text\"\n startIcon={<Icon icon=\"WHATSAPP\" />}\n disabled={!hasPhone}\n fullWidth\n >\n Enviar mensagem\n </ItemButton>\n\n <ItemButton\n variant=\"text\"\n startIcon={<Icon icon=\"INFORMATIONS\" />}\n onClick={handleDetailsOpen}\n fullWidth\n >\n Ver detalhes\n </ItemButton>\n </MenuPopover>\n\n <Drawer\n open={detailsOpen}\n onClose={toggleDetailsOpen}\n headerTitle=\"Detalhes do cliente\"\n headerProps={{ direction: 'row-reverse' }}\n maxWidth={520}\n contentProps={{ p: 0 }}\n >\n <Details partner={partner} onPhoneUpdated={handlePhoneUpdated} />\n </Drawer>\n </>\n );\n};\n\nexport default PartnerCell;\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { STATUS_OPTIONS } from 'utils/partnerAnalysis';\n\nimport { PartnerStatusProps } from './props';\nimport { Dot } from './styles';\n\nconst PartnerStatus = ({\n status,\n variant = 'body2',\n color = 'text.primary',\n}: PartnerStatusProps) => {\n const statusOption = STATUS_OPTIONS[status];\n\n if (!statusOption) return null;\n\n const { label, color: statusColor } = statusOption;\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Dot bgcolor={statusColor} />\n\n <Typography variant={variant} color={color} noWrap>\n {label}\n </Typography>\n </Stack>\n );\n};\n\nexport default PartnerStatus;\n","import Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\nexport const Dot = styled(Box)(() => ({\n width: 6,\n height: 6,\n borderRadius: '50%',\n flexShrink: 0,\n}));\n","import { useCallback, useMemo } from 'react';\nimport Chip from '@mui/material/Chip';\nimport Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport PartnerStatus from 'components/Analytics/OrderProjection/PartnerStatus';\nimport Icon from 'components/Icon';\nimport Result from 'components/Result';\nimport useToggle from 'hooks/useToggle';\nimport { cpfMaskOrCnpjMask, phoneMask } from 'utils/mask';\n\nimport { InformationsProps } from './props';\nimport InformationsSkeleton from './Skeleton';\n\nconst Informations = ({ partner, onPhoneUpdated }: InformationsProps) => {\n const [expanded, toggleExpanded] = useToggle(true);\n\n const { adapters, slots } = useOrderProjectionContext();\n const { renderPartnerLink, renderPhoneEditor } = slots;\n\n const {\n data: partnerData,\n isLoading,\n refetch,\n } = adapters.usePartnerDetails(partner.external_id, {\n skip: !partner.external_id || !expanded,\n });\n\n const partnerPhone = partnerData?.mobile ?? partnerData?.phone;\n\n const fiscalRegistrationNumber = useMemo(\n () =>\n partnerData?.fiscal_registration_number\n ? cpfMaskOrCnpjMask(partnerData?.fiscal_registration_number)\n : '-',\n [partnerData?.fiscal_registration_number],\n );\n\n const handlePhoneSuccess = useCallback(\n (phone: string) => {\n refetch();\n onPhoneUpdated?.(phone);\n },\n [refetch, onPhoneUpdated],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded} defaultExpanded>\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Informações\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Result isLoading={isLoading} loading={<InformationsSkeleton />}>\n <Stack mt={-1} px={1} gap={1}>\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome\n </Typography>\n\n {renderPartnerLink ? (\n renderPartnerLink(partnerData)\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partner?.name || '-'}\n </Typography>\n )}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n CPF/CNPJ\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fiscalRegistrationNumber}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n E-mail\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partnerData?.email || '-'}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Status do cliente\n </Typography>\n\n {partner.classification ? (\n <PartnerStatus\n status={partner.classification}\n variant=\"subtitle2\"\n color=\"text.primary\"\n />\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Segmento\n </Typography>\n\n {partnerData?.profile?.name ? (\n <Chip\n variant=\"outlined\"\n label={partnerData.profile.name}\n size=\"small\"\n color=\"default\"\n sx={{ width: 'fit-content' }}\n />\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n {partnerPhone ? (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n <Icon\n icon=\"WHATSAPP\"\n color=\"success.main\"\n sx={{ flexShrink: 0 }}\n />\n\n <Link\n component={Link}\n href={`https://wa.me/${partnerPhone}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"subtitle2\"\n color=\"success.main\"\n noWrap\n >\n {phoneMask(partnerPhone)}\n </Link>\n </Stack>\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n\n {renderPhoneEditor?.(partner.external_id, handlePhoneSuccess)}\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Vendedor preferencial\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {partnerData?.main_seller?.name || '-'}\n </Typography>\n </Stack>\n </Stack>\n </Result>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Informations;\n","import Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\nimport Skeleton from 'components/Skeleton';\n\nconst InformationsSkeleton = () => {\n return (\n <Stack mt={-1} px={1} gap={1}>\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n CPF/CNPJ\n </Typography>\n\n <Skeleton width=\"30%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n E-mail\n </Typography>\n\n <Skeleton width=\"35%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Status do cliente\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Segmento\n </Typography>\n\n <Skeleton width=\"35%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n <Skeleton width=\"100%\" height={22} />\n </Stack>\n\n <Button\n variant=\"text\"\n startIcon={<Icon icon=\"PENCIL_EDIT\" />}\n color=\"inherit\"\n size=\"small\"\n disabled\n >\n Editar\n </Button>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Telefone\n </Typography>\n\n <Skeleton width=\"20%\" height={22} />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Vendedor preferencial\n </Typography>\n\n <Skeleton width=\"40%\" height={22} />\n </Stack>\n </Stack>\n );\n};\n\nexport default InformationsSkeleton;\n","import { useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport useToggle from 'hooks/useToggle';\nimport { Filter, GridQuery, Sort } from 'types/filter';\n\nimport Card from './Card';\nimport { LastSalesProps } from './props';\nimport LastSalesSkeleton from './Skeleton';\n\nconst LastSales = ({ partner }: LastSalesProps) => {\n const [expanded, toggleExpanded] = useToggle(false);\n\n const queryParams = useMemo<GridQuery | null>(() => {\n if (!partner?.external_id) return null;\n\n return {\n perPage: 5,\n sort: {\n fieldName: 'negotiationDate',\n sortType: 'DESC',\n } as Sort,\n filter: {\n operator: 'AND',\n groups: [\n {\n operator: 'AND',\n conditionals: [\n {\n fieldName: 'partnerId',\n conditional: 'EQUALS',\n value: [partner.external_id],\n },\n ],\n },\n ],\n } as Filter,\n };\n }, [partner?.external_id]);\n\n const { usePartnerOrders } = useOrderProjectionContext().adapters;\n\n const { data: { items: orders = [] } = {}, isLoading } = usePartnerOrders(\n queryParams!,\n { skip: !queryParams },\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Últimos pedidos\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1} px={1}>\n <Result\n isLoading={isLoading}\n loading={<LastSalesSkeleton />}\n isEmpty={orders?.length === 0}\n empty={\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={1.5}\n p={2}\n >\n <Typography variant=\"body2\" color=\"text.secondary\">\n Este cliente ainda não possui pedidos realizados.\n </Typography>\n </Stack>\n }\n >\n <Stack gap={1.5}>\n {orders?.map((order, index) => (\n <Card\n key={order.id}\n order={order}\n data-testid={`last-order-${index}`}\n />\n ))}\n </Stack>\n </Result>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default LastSales;\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport SimpleCard from 'components/SimpleCard';\nimport { isEqual } from 'utils/compare';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate } from 'utils/formatTime';\n\nimport { CardProps } from './props';\n\nconst Card = ({ order }: CardProps) => {\n const { renderSaleLink } = useOrderProjectionContext().slots;\n\n return (\n <SimpleCard\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={3}\n p={1.5}\n sx={{ borderRadius: 1 }}\n >\n <Stack overflow=\"hidden\">\n {order?.id ? (\n renderSaleLink?.(order.id)\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n -\n </Typography>\n )}\n\n <Typography variant=\"caption\" color=\"text.secondary\">\n {fDate(order?.negotiation_date, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {fCurrencyBRL(order?.total_value)}\n </Typography>\n </SimpleCard>\n );\n};\n\nexport default memo(Card, isEqual);\n","import Stack from '@mui/material/Stack';\n\nimport Skeleton from 'components/Skeleton';\n\nconst LastSalesSkeleton = () => {\n return (\n <Stack gap={1.5}>\n <Skeleton width=\"100%\" height={66} />\n <Skeleton width=\"100%\" height={66} />\n <Skeleton width=\"100%\" height={66} />\n <Skeleton width=\"100%\" height={66} />\n <Skeleton width=\"100%\" height={66} />\n </Stack>\n );\n};\n\nexport default LastSalesSkeleton;\n","import { useMemo } from 'react';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport useToggle from 'hooks/useToggle';\nimport { fDate } from 'utils/formatTime';\nimport { getRecurrenceLabel } from 'utils/orderProjection';\n\nimport { RecurrenceProps } from './props';\n\nconst Recurrence = ({ partner }: RecurrenceProps) => {\n const { renderSaleLink } = useOrderProjectionContext().slots;\n\n const [expanded, toggleExpanded] = useToggle(false);\n const recurrenceLabel = useMemo(\n () => getRecurrenceLabel(partner?.recurrence),\n [partner?.recurrence],\n );\n\n const lastSaleId =\n partner?.sale_analysis?.last_sale_sale_external_id ||\n partner?.sale_analysis?.last_sale_external_id;\n const lastSaleDate = partner?.sale_analysis?.last_sale_negotiation_date;\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Comportamento de compra\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1} px={1} gap={1}>\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Frequência de compras\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {recurrenceLabel}\n </Typography>\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Último pedido\n </Typography>\n\n {lastSaleId ? (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n {renderSaleLink?.(lastSaleId)}\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n em {fDate(lastSaleDate, 'DD/MM/YYYY [às] HH:mm')}\n </Typography>\n </Stack>\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n -\n </Typography>\n )}\n </Stack>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Recurrence;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionContext } from 'components/Analytics/OrderProjection/context';\nimport Result from 'components/Result';\nimport useToggle from 'hooks/useToggle';\nimport { fCurrencyBRL } from 'utils/formatNumber';\n\nimport { SaleSummaryProps } from './props';\nimport SaleSummarySkeleton from './Skeleton';\n\nconst SaleSummary = ({ partner }: SaleSummaryProps) => {\n const [expanded, toggleExpanded] = useToggle(false);\n\n const { usePartnerSaleSummary } = useOrderProjectionContext().adapters;\n\n const { data: saleSummary, isLoading } = usePartnerSaleSummary(\n partner.external_id,\n {\n skip: !partner.external_id || !expanded,\n },\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Indicadores de vendas\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1} px={1}>\n <Result isLoading={isLoading} loading={<SaleSummarySkeleton />}>\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n justifyContent={{ xs: 'flex-start', sm: 'center' }}\n gap={3}\n >\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Qtd. de pedidos</Typography>\n\n <Typography variant=\"subtitle2\">\n {saleSummary?.order_quantity || 0}\n </Typography>\n </Stack>\n\n <Divider orientation=\"vertical\" flexItem />\n\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Valor total</Typography>\n\n <Typography variant=\"subtitle2\">\n {fCurrencyBRL(saleSummary?.total_value)}\n </Typography>\n </Stack>\n\n <Divider orientation=\"vertical\" flexItem />\n\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Ticket médio</Typography>\n\n <Typography variant=\"subtitle2\">\n {fCurrencyBRL(saleSummary?.average_ticket)}\n </Typography>\n </Stack>\n </Stack>\n </Result>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default SaleSummary;\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Skeleton from 'components/Skeleton';\n\nimport { Divider } from './styles';\n\nconst SaleSummarySkeleton = () => {\n return (\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n justifyContent={{ xs: 'flex-start', sm: 'center' }}\n gap={3}\n >\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Qtd. de pedidos</Typography>\n\n <Skeleton width={30} height={22} />\n </Stack>\n\n <Divider orientation=\"vertical\" flexItem />\n\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Valor total</Typography>\n\n <Skeleton width={92} height={22} />\n </Stack>\n\n <Divider orientation=\"vertical\" flexItem />\n\n <Stack alignItems={{ xs: 'flex-start', sm: 'center' }}>\n <Typography variant=\"body2\">Ticket médio</Typography>\n\n <Skeleton width={71} height={22} />\n </Stack>\n </Stack>\n );\n};\n\nexport default SaleSummarySkeleton;\n","import MuiDivider from '@mui/material/Divider';\nimport { styled } from '@mui/material/styles';\n\nexport const Divider = styled(MuiDivider)(({ theme }) => ({\n height: 30,\n alignSelf: 'center',\n\n borderStyle: 'dashed',\n\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n}));\n","import Informations from './Informations';\nimport LastSales from './LastSales';\nimport { DetailsProps } from './props';\nimport Recurrence from './Recurrence';\nimport SaleSummary from './SaleSummary';\n\nconst Details = ({ partner, onPhoneUpdated }: DetailsProps) => {\n return (\n <>\n <Informations partner={partner} onPhoneUpdated={onPhoneUpdated} />\n <SaleSummary partner={partner} />\n <Recurrence partner={partner} />\n <LastSales partner={partner} />\n </>\n );\n};\n\nexport default Details;\n","import Button from '@mui/material/Button';\nimport Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const Container = styled(Stack)(({ theme }) => ({\n minHeight: 47.42,\n\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n\n gap: theme.spacing(1.5),\n}));\n\nexport const ItemButton = styled(Button)(({ theme }) => ({\n justifyContent: 'flex-start',\n\n color: theme.palette.text.primary,\n fontWeight: 400,\n\n '&:hover': {\n background: theme.palette.action.hover,\n },\n})) as typeof Button;\n","import MuiCard from '@mui/material/Card';\nimport { styled } from '@mui/material/styles';\nimport MuiTable from '@mui/material/Table';\nimport MuiTableBody from '@mui/material/TableBody';\nimport MuiTableContainer from '@mui/material/TableContainer';\n\ninterface TableProps {\n totalWidth: number;\n isResizing: boolean;\n}\n\nexport const Card = styled(MuiCard)({\n display: 'flex',\n flexDirection: 'column',\n\n width: '100%',\n height: 'calc(100vh - 300px)',\n\n boxShadow: 'none',\n overflow: 'hidden',\n});\n\nexport const TableContainer = styled(MuiTableContainer)({\n flex: 1,\n});\n\nexport const Table = styled(MuiTable, {\n shouldForwardProp: prop => prop !== 'totalWidth' && prop !== 'isResizing',\n})<TableProps>(({ totalWidth, isResizing }) => ({\n tableLayout: 'fixed',\n borderCollapse: 'separate',\n borderSpacing: 0,\n height: '100%',\n\n ...(totalWidth > 0 && { width: totalWidth }),\n\n ...(isResizing && {\n userSelect: 'none',\n cursor: 'col-resize',\n }),\n}));\n\nexport const TableBody = styled(MuiTableBody)(({ theme }) => ({\n '& .MuiTableRow-root': {\n backgroundColor: theme.palette.background.paper,\n },\n\n '& .MuiTableRow-root:last-child .MuiTableCell-root': {\n height: '100%',\n },\n}));\n","'use client';\nimport { useMemo } from 'react';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\n\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport Drawer from 'components/Drawer';\nimport Icon from 'components/Icon';\nimport IconButton from 'components/IconButton';\nimport useResponsive from 'hooks/useResponsive';\nimport useToggle from 'hooks/useToggle';\n\nimport Filters from './Filters';\nimport {\n Container,\n MobileContainer,\n ToolbarSectionCenter,\n ToolbarSectionEnd,\n ToolbarSectionStart,\n} from './styles';\nimport ViewModeSelector from './ViewModeSelector';\nimport WeekNavigator from './WeekNavigator';\n\nconst Toolbar = () => {\n const isMobile = useResponsive('down', 'sm');\n\n const { selectedPartners, selectedProfiles, selectedEventTypes } =\n useOrderProjectionFilterContext();\n\n const activeFiltersCount = useMemo(\n () =>\n selectedPartners.length +\n selectedProfiles.length +\n selectedEventTypes.length,\n [\n selectedPartners.length,\n selectedProfiles.length,\n selectedEventTypes.length,\n ],\n );\n\n const [filtersOpen, toggleFiltersOpen] = useToggle();\n\n return (\n <>\n {isMobile ? (\n <MobileContainer>\n <WeekNavigator />\n\n <Badge\n badgeContent={activeFiltersCount}\n invisible={activeFiltersCount === 0}\n color=\"primary\"\n >\n <IconButton\n label=\"Filtrar\"\n icon=\"FILTER_LIST\"\n color=\"inherit\"\n size=\"small\"\n onClick={toggleFiltersOpen}\n />\n </Badge>\n </MobileContainer>\n ) : (\n <Container>\n <ToolbarSectionStart>\n <ViewModeSelector />\n </ToolbarSectionStart>\n\n <ToolbarSectionCenter>\n <WeekNavigator />\n </ToolbarSectionCenter>\n\n <ToolbarSectionEnd>\n <Badge\n badgeContent={activeFiltersCount}\n invisible={activeFiltersCount === 0}\n color=\"primary\"\n >\n <Button\n variant=\"text\"\n startIcon={<Icon icon=\"FILTER_LIST\" />}\n endIcon={<Icon icon=\"ARROW_DOWN_SIMPLE\" />}\n color=\"inherit\"\n size=\"small\"\n onClick={toggleFiltersOpen}\n >\n Filtrar\n </Button>\n </Badge>\n </ToolbarSectionEnd>\n </Container>\n )}\n\n <Drawer\n open={filtersOpen}\n onClose={toggleFiltersOpen}\n headerTitle=\"Filtros\"\n headerProps={{ direction: 'row-reverse' }}\n contentProps={{ p: 0 }}\n maxWidth={320}\n >\n <Filters />\n </Drawer>\n </>\n );\n};\n\nexport default Toolbar;\n","'use client';\nimport { useCallback } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport useToggle from 'hooks/useToggle';\nimport { Status } from 'utils/partnerAnalysis';\n\nimport ClassificationOption from './ClassificationOption';\n\nconst classifications = Object.values(Status);\n\nconst Classifications = () => {\n const { selectedClassifications, setSelectedClassifications } =\n useOrderProjectionFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(\n !!selectedClassifications.length,\n );\n\n const handleToggle = useCallback(\n (classification: Status) => {\n setSelectedClassifications(\n selectedClassifications.includes(classification)\n ? selectedClassifications.filter(c => c !== classification)\n : [...selectedClassifications, classification],\n );\n },\n [setSelectedClassifications, selectedClassifications],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Classificações\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1}>\n {classifications.map(classification => (\n <ClassificationOption\n key={classification}\n classification={classification}\n checked={selectedClassifications.includes(classification)}\n onToggle={() => handleToggle(classification)}\n />\n ))}\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Classifications;\n","'use client';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\n\nimport { STATUS_OPTIONS } from 'utils/partnerAnalysis';\n\nimport { ClassificationOptionProps } from './props';\n\nconst ClassificationOption = ({\n classification,\n checked,\n onToggle,\n}: ClassificationOptionProps) => {\n const { label, color } = STATUS_OPTIONS[classification];\n\n return (\n <FormControlLabel\n control={\n <Checkbox\n name={`classification-${classification}`}\n checked={checked}\n onChange={onToggle}\n />\n }\n label={\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack width={6} height={16} bgcolor={color} borderRadius={1} />{' '}\n {label}\n </Stack>\n }\n />\n );\n};\n\nexport default ClassificationOption;\n","import { useCallback } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport { ViewMode } from 'utils/orderProjection';\n\nimport { DateCalendarStyled, StyledDay } from './styles';\n\nconst daysOfWeek = ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'];\n\nconst isSameDay = (firstDate: Date, secondDate: Date) => {\n return (\n firstDate.getFullYear() === secondDate.getFullYear() &&\n firstDate.getMonth() === secondDate.getMonth() &&\n firstDate.getDate() === secondDate.getDate()\n );\n};\n\nconst DateFilter = () => {\n const { baseDate, dateRange, viewMode, handleBaseDateChange } =\n useOrderProjectionFilterContext();\n\n const startDate = dayjs(dateRange.start_date).toDate();\n const endDate = dayjs(dateRange.end_date).toDate();\n\n const isInRange = useCallback(\n (day: Date) => {\n return (\n isSameDay(day, startDate) ||\n isSameDay(day, endDate) ||\n (day > startDate && day < endDate)\n );\n },\n [startDate, endDate],\n );\n\n const isStart = useCallback(\n (day: Date) => isSameDay(day, startDate),\n [startDate],\n );\n\n const isEnd = useCallback((day: Date) => isSameDay(day, endDate), [endDate]);\n\n const handleChange = useCallback(\n (newValue: Date | null | undefined) => {\n if (newValue) {\n handleBaseDateChange(dayjs(newValue));\n }\n },\n [handleBaseDateChange],\n );\n\n return (\n <Stack p={2} pb={3} gap={2}>\n <Typography variant=\"overline\" color=\"text.secondary\">\n Calendário\n </Typography>\n\n <Stack alignItems=\"center\">\n <DateCalendarStyled\n value={baseDate.toDate()}\n onChange={handleChange}\n showDaysOutsideCurrentMonth\n slots={{ day: StyledDay as never }}\n slotProps={{\n day: ownerState => {\n const day = ownerState.day.toDate();\n\n return {\n isInRange: isInRange(day),\n isStart: isStart(day),\n isEnd: isEnd(day),\n isDaily: viewMode === ViewMode.DAY,\n disableMargin: true,\n };\n },\n }}\n dayOfWeekFormatter={day => {\n return daysOfWeek[day.day()];\n }}\n fixedWeekNumber={6}\n />\n </Stack>\n </Stack>\n );\n};\n\nexport default DateFilter;\n","import { alpha, styled } from '@mui/material/styles';\nimport { PickersDay } from '@mui/x-date-pickers/PickersDay';\n\nimport CommonDateCalendar from 'components/DateCalendar';\n\nimport { StyledDayProps } from './props';\n\nconst getCircle = (\n color: string,\n hover: string,\n radius: number | string = '40%',\n): Record<string, unknown> => ({\n position: 'relative',\n backgroundColor: 'transparent',\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n inset: 3,\n backgroundColor: color,\n borderRadius: radius,\n zIndex: -1,\n },\n\n '&:hover, &:focus': {\n backgroundColor: 'transparent',\n\n '&::before': {\n backgroundColor: hover,\n },\n },\n});\n\nexport const DateCalendarStyled = styled(CommonDateCalendar)(() => ({\n '&.MuiDateCalendar-root': {\n margin: -24,\n },\n\n '& .MuiPickersCalendarHeader-label': {\n textTransform: 'capitalize',\n },\n}));\n\nexport const StyledDay = styled(PickersDay, {\n shouldForwardProp: prop =>\n prop !== 'isDaily' &&\n prop !== 'isInRange' &&\n prop !== 'isStart' &&\n prop !== 'isEnd',\n})<StyledDayProps>(({ theme, isInRange, isStart, isEnd, isDaily }) => ({\n borderRadius: 0,\n\n '&:not(.Mui-selected):not(.MuiPickersDay-today)': {\n '&:hover, &:focus': {\n backgroundColor: theme.palette.action.hover,\n borderRadius: '40%',\n },\n },\n\n ...(!isInRange && {\n '&.MuiPickersDay-today:not(.Mui-selected)': {\n color: theme.palette.common.white,\n border: 'none !important',\n ...getCircle(\n theme.palette.common.black,\n alpha(theme.palette.common.black, 0.8),\n ),\n },\n }),\n\n '&.Mui-selected': {\n color: `${theme.palette.primary.contrastText} !important`,\n ...getCircle(theme.palette.primary.main, theme.palette.primary.dark),\n },\n\n ...(isInRange &&\n isDaily && {\n color: theme.palette.primary.contrastText,\n ...getCircle(theme.palette.primary.main, theme.palette.primary.dark, 6),\n }),\n\n ...(isInRange &&\n !isDaily && {\n backgroundColor: 'transparent',\n borderTop: `1px solid ${theme.palette.divider}`,\n borderBottom: `1px solid ${theme.palette.divider}`,\n borderLeft: isStart ? `1px solid ${theme.palette.divider}` : 'none',\n borderRight: isEnd ? `1px solid ${theme.palette.divider}` : 'none',\n\n ...(isStart && {\n borderTopLeftRadius: 8,\n borderBottomLeftRadius: 8,\n }),\n\n ...(isEnd && {\n borderTopRightRadius: 8,\n borderBottomRightRadius: 8,\n }),\n\n '&.MuiPickersDay-today:not(.Mui-selected)': {\n borderTop: `1px solid ${theme.palette.divider} !important`,\n borderBottom: `1px solid ${theme.palette.divider} !important`,\n borderLeft: 'none !important',\n borderRight: 'none !important',\n },\n }),\n}));\n","'use client';\nimport { useCallback, useMemo, useState } from 'react';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport {\n useOrderProjectionContext,\n useOrderProjectionFilterContext,\n} from 'components/Analytics/OrderProjection/context';\nimport { OrderProjectionOption } from 'components/Analytics/OrderProjection/props';\nimport Autocomplete from 'components/Autocomplete';\nimport Result from 'components/Result';\nimport SimpleCard from 'components/SimpleCard';\nimport useAutocomplete from 'hooks/useAutocomplete';\nimport useToggle from 'hooks/useToggle';\n\nconst Partners = () => {\n const { selectedPartners, setSelectedPartners } =\n useOrderProjectionFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(true);\n const [inputValue, setInputValue] = useState('');\n\n const {\n buildOptions,\n finishSearch,\n onSearch,\n onSelectValue,\n search,\n searching,\n } = useAutocomplete();\n\n const { usePartnerOptions } = useOrderProjectionContext().adapters;\n\n const {\n items: partners,\n isFetching,\n isLoading,\n } = usePartnerOptions({ search, skip: !expanded });\n\n const options = useMemo(() => {\n if (searching || isFetching) return [];\n\n return buildOptions(\n partners.map(({ id, name }) => ({ value: id, label: name || '' })),\n isFetching,\n );\n }, [buildOptions, isFetching, partners, searching]);\n\n const hasPartners = selectedPartners.length > 0;\n\n const handleSelectPartner = useCallback(\n (value: unknown) => {\n onSelectValue(options, value);\n\n const partnerId =\n typeof value === 'string'\n ? value\n : String((value as { value?: string | number } | null)?.value || '');\n\n const selectedOption = options.find(\n (option: { value?: string | number; label?: string }) =>\n String(option.value) === partnerId,\n );\n\n const partnerLabel =\n selectedOption?.label ||\n (typeof value === 'string'\n ? value\n : String((value as { label?: string } | null)?.label || ''));\n\n if (partnerId && !selectedPartners.some(p => p.id === partnerId)) {\n setSelectedPartners([\n ...selectedPartners,\n { id: partnerId, name: partnerLabel },\n ]);\n }\n\n setInputValue('');\n },\n [setSelectedPartners, onSelectValue, options, selectedPartners],\n );\n\n const handleDeletePartner = useCallback(\n (partner: OrderProjectionOption) => {\n setSelectedPartners(selectedPartners.filter(p => p.id !== partner.id));\n },\n [setSelectedPartners, selectedPartners],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Clientes\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack gap={1}>\n <Autocomplete\n name=\"partners\"\n label=\"Clientes\"\n placeholder=\"Digite para buscar um cliente...\"\n size=\"small\"\n options={options}\n loading={isLoading}\n inputValue={inputValue}\n onInputChange={(_, newValue) => setInputValue(newValue)}\n onSearch={onSearch}\n onBlur={finishSearch}\n onChange={handleSelectPartner}\n filterOptions={o => o}\n noOptionsText={\n searching || isFetching ? 'Carregando...' : undefined\n }\n InputLabelProps={{ shrink: true }}\n fullWidth\n />\n\n <SimpleCard\n direction=\"row\"\n alignItems=\"center\"\n flexWrap=\"wrap\"\n overflow=\"auto\"\n maxHeight={148}\n p={1.5}\n sx={{ bgcolor: 'grey.50' }}\n >\n <Result\n isEmpty={!hasPartners}\n empty={\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nenhum cliente selecionado\n </Typography>\n }\n >\n {selectedPartners.map((partner, index) => (\n <Chip\n key={partner.id}\n variant=\"outlined\"\n label={partner.name}\n color=\"default\"\n onDelete={() => handleDeletePartner(partner)}\n data-testid={`filter-partner-${index}`}\n />\n ))}\n </Result>\n </SimpleCard>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Partners;\n","'use client';\nimport { useCallback, useMemo, useState } from 'react';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport {\n useOrderProjectionContext,\n useOrderProjectionFilterContext,\n} from 'components/Analytics/OrderProjection/context';\nimport { OrderProjectionOption } from 'components/Analytics/OrderProjection/props';\nimport Autocomplete from 'components/Autocomplete';\nimport Result from 'components/Result';\nimport SimpleCard from 'components/SimpleCard';\nimport useAutocomplete from 'hooks/useAutocomplete';\nimport useToggle from 'hooks/useToggle';\n\nconst Profiles = () => {\n const { selectedProfiles, setSelectedProfiles } =\n useOrderProjectionFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(!!selectedProfiles.length);\n const [inputValue, setInputValue] = useState('');\n\n const {\n buildOptions,\n finishSearch,\n onSearch,\n onSelectValue,\n search,\n searching,\n } = useAutocomplete();\n\n const { useProfileOptions } = useOrderProjectionContext().adapters;\n\n const {\n items: profiles,\n isFetching,\n isLoading,\n } = useProfileOptions({ search, skip: !expanded });\n\n const options = useMemo(() => {\n if (searching || isFetching) return [];\n\n return buildOptions(\n profiles.map(({ id, name }) => ({ value: id, label: name || '' })),\n isFetching,\n );\n }, [buildOptions, isFetching, profiles, searching]);\n\n const hasProfiles = selectedProfiles.length > 0;\n\n const handleSelectProfile = useCallback(\n (value: unknown) => {\n onSelectValue(options, value);\n\n const profileId =\n typeof value === 'string'\n ? value\n : String((value as { value?: string | number } | null)?.value || '');\n\n const selectedOption = options.find(\n (option: { value?: string | number; label?: string }) =>\n String(option.value) === profileId,\n );\n\n const profileLabel =\n selectedOption?.label ||\n (typeof value === 'string'\n ? value\n : String((value as { label?: string } | null)?.label || ''));\n\n if (profileId && !selectedProfiles.some(p => p.id === profileId)) {\n setSelectedProfiles([\n ...selectedProfiles,\n { id: profileId, name: profileLabel },\n ]);\n }\n\n setInputValue('');\n },\n [setSelectedProfiles, onSelectValue, options, selectedProfiles],\n );\n\n const handleDeleteProfile = useCallback(\n (profile: OrderProjectionOption) => {\n setSelectedProfiles(selectedProfiles.filter(p => p.id !== profile.id));\n },\n [setSelectedProfiles, selectedProfiles],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Segmentos\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack gap={1}>\n <Autocomplete\n name=\"profiles\"\n label=\"Segmentos\"\n placeholder=\"Digite para buscar um segmento...\"\n size=\"small\"\n options={options}\n loading={isLoading}\n inputValue={inputValue}\n onInputChange={(_, newValue) => setInputValue(newValue)}\n onSearch={onSearch}\n onBlur={finishSearch}\n onChange={handleSelectProfile}\n filterOptions={o => o}\n noOptionsText={\n searching || isFetching ? 'Carregando...' : undefined\n }\n InputLabelProps={{ shrink: true }}\n fullWidth\n />\n\n <SimpleCard\n direction=\"row\"\n alignItems=\"center\"\n flexWrap=\"wrap\"\n overflow=\"auto\"\n maxHeight={148}\n p={1.5}\n sx={{ bgcolor: 'grey.50' }}\n >\n <Result\n isEmpty={!hasProfiles}\n empty={\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nenhum segmento selecionado\n </Typography>\n }\n >\n {selectedProfiles.map((profile, index) => (\n <Chip\n key={profile.id}\n variant=\"outlined\"\n label={profile.name}\n color=\"default\"\n onDelete={() => handleDeleteProfile(profile)}\n data-testid={`filter-profile-${index}`}\n />\n ))}\n </Result>\n </SimpleCard>\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Profiles;\n","import { EventType } from 'utils/orderProjection';\n'use client';\nimport { useCallback } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from 'components/Accordion';\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport useToggle from 'hooks/useToggle';\n\nimport StatusOption from './StatusOption';\n\nconst eventTypes = Object.values(EventType);\n\nconst Status = () => {\n const { selectedEventTypes, setSelectedEventTypes } =\n useOrderProjectionFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(!!selectedEventTypes.length);\n\n const handleToggle = useCallback(\n (eventType: EventType) => {\n setSelectedEventTypes(\n selectedEventTypes.includes(eventType)\n ? selectedEventTypes.filter(s => s !== eventType)\n : [...selectedEventTypes, eventType],\n );\n },\n [setSelectedEventTypes, selectedEventTypes],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Status de eventos\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1}>\n {eventTypes.map(eventType => (\n <StatusOption\n key={eventType}\n status={eventType}\n checked={selectedEventTypes.includes(eventType)}\n onToggle={() => handleToggle(eventType)}\n />\n ))}\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Status;\n","'use client';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\n\nimport { EVENT_TYPE_OPTIONS } from 'utils/orderProjection';\n\nimport { StatusOptionProps } from './props';\n\nconst StatusOption = ({ status, checked, onToggle }: StatusOptionProps) => {\n const { label, color } = EVENT_TYPE_OPTIONS[status];\n\n return (\n <FormControlLabel\n control={\n <Checkbox\n name={`status-${status}`}\n checked={checked}\n onChange={onToggle}\n />\n }\n label={\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack width={6} height={16} bgcolor={color} borderRadius={1} />{' '}\n {label}\n </Stack>\n }\n />\n );\n};\n\nexport default StatusOption;\n","import Classifications from './Classifications';\nimport DateFilter from './DateFilter';\nimport Partners from './Partners';\nimport Profiles from './Profiles';\nimport Status from './Status';\n\nconst Filters = () => {\n return (\n <>\n <DateFilter />\n <Partners />\n <Profiles />\n <Status />\n <Classifications />\n </>\n );\n};\n\nexport default Filters;\n","import Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const Container = styled(Stack)(({ theme }) => ({\n flexDirection: 'row',\n alignItems: 'center',\n\n padding: theme.spacing(2.5),\n gap: theme.spacing(1),\n}));\n\nexport const MobileContainer = styled(Stack)(({ theme }) => ({\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n\n padding: theme.spacing(2.5),\n gap: theme.spacing(1),\n}));\n\nexport const ToolbarSection = styled(Box)({\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n});\n\nexport const ToolbarSectionStart = styled(ToolbarSection)({\n justifyContent: 'flex-start',\n});\n\nexport const ToolbarSectionCenter = styled(ToolbarSection)({\n justifyContent: 'center',\n});\n\nexport const ToolbarSectionEnd = styled(ToolbarSection)({\n justifyContent: 'flex-end',\n});\n","import { ViewMode } from 'utils/orderProjection';\n'use client';\nimport { useCallback } from 'react';\nimport Button from '@mui/material/Button';\n\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport Icon from 'components/Icon';\nimport MenuPopover from 'components/MenuPopover';\nimport usePopover from 'hooks/usePopover';\n\nimport { VIEW_MODE_ICONS, VIEW_MODE_LABELS } from './props';\nimport { ItemButton } from './styles';\n\nconst ViewModeSelector = () => {\n const { open, onClose, onOpen } = usePopover();\n const { viewMode, setViewMode } = useOrderProjectionFilterContext();\n\n const handleSetViewMode = useCallback(\n (mode: ViewMode) => {\n setViewMode(mode);\n onClose();\n },\n [onClose, setViewMode],\n );\n\n return (\n <>\n <Button\n variant=\"text\"\n startIcon={<Icon icon={VIEW_MODE_ICONS[viewMode]} />}\n endIcon={<Icon icon=\"ARROW_DOWN_SIMPLE\" />}\n color=\"inherit\"\n size=\"small\"\n onClick={onOpen}\n >\n {VIEW_MODE_LABELS[viewMode]}\n </Button>\n\n <MenuPopover\n open={open}\n onClose={onClose}\n disabledArrow\n sx={{ width: 180, p: 1 }}\n >\n <ItemButton\n variant=\"text\"\n startIcon={<Icon icon=\"CALENDAR_TODAY\" />}\n onClick={() => handleSetViewMode(ViewMode.DAY)}\n active={viewMode === ViewMode.DAY}\n fullWidth\n >\n Dia\n </ItemButton>\n\n <ItemButton\n variant=\"text\"\n startIcon={<Icon icon=\"COLUMNS\" />}\n onClick={() => handleSetViewMode(ViewMode.WEEK)}\n active={viewMode === ViewMode.WEEK}\n fullWidth\n >\n Semana\n </ItemButton>\n </MenuPopover>\n </>\n );\n};\n\nexport default ViewModeSelector;\n","import { IconEnum } from 'components/Icon';\nimport { ViewMode } from 'utils/orderProjection';\n\nexport const VIEW_MODE_LABELS: Record<ViewMode, string> = {\n [ViewMode.DAY]: 'Dia',\n [ViewMode.WEEK]: 'Semana',\n};\n\nexport const VIEW_MODE_ICONS: Record<ViewMode, IconEnum> = {\n [ViewMode.DAY]: IconEnum.CALENDAR_TODAY,\n [ViewMode.WEEK]: IconEnum.COLUMNS,\n};\n","import Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\ninterface ItemButtonProps {\n active?: boolean;\n}\n\nexport const ItemButton = styled(Button, {\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","'use client';\nimport { useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport dayjs from 'dayjs';\n\nimport { useOrderProjectionFilterContext } from 'components/Analytics/OrderProjection/context';\nimport IconButton from 'components/IconButton';\nimport { fDate } from 'utils/formatTime';\n\nconst WeekNavigator = () => {\n const { visibleDays, dateRange, handlePreviousWeek, handleNextWeek } =\n useOrderProjectionFilterContext();\n\n const dateLabel = useMemo(() => {\n const start = dayjs(dateRange.start_date);\n const end = dayjs(dateRange.end_date);\n\n if (visibleDays === 1) {\n return fDate(start.toDate(), 'DD [de] MMM [de] YYYY');\n }\n\n const sameMonth = start.month() === end.month();\n const sameYear = start.year() === end.year();\n\n if (sameMonth && sameYear) {\n return `${start.format('DD')} - ${fDate(end.toDate(), 'DD [de] MMM [de] YYYY')}`;\n }\n\n if (sameYear) {\n return `${fDate(start.toDate(), 'DD [de] MMM')} - ${fDate(end.toDate(), 'DD [de] MMM')}`;\n }\n\n return `${fDate(start.toDate(), 'DD MMM YYYY')} - ${fDate(end.toDate(), 'DD MMM YYYY')}`;\n }, [dateRange, visibleDays]);\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <IconButton\n label=\"Semana anterior\"\n icon=\"CHEVRON_LEFT\"\n color=\"inherit\"\n size=\"small\"\n onClick={handlePreviousWeek}\n />\n\n <Typography variant=\"subtitle1\" color=\"text.primary\" noWrap>\n {dateLabel}\n </Typography>\n\n <IconButton\n label=\"Próxima semana\"\n icon=\"CHEVRON_RIGHT\"\n color=\"inherit\"\n size=\"small\"\n onClick={handleNextWeek}\n />\n </Stack>\n );\n};\n\nexport default WeekNavigator;\n"]}