@zydon/common 2.9.56 → 2.9.58
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.
- package/README.md +6 -0
- package/dist/chunk-3MKH4GA7.js +14 -0
- package/dist/chunk-3MKH4GA7.js.map +1 -0
- package/dist/chunk-BVWXGGJY.js +27 -0
- package/dist/chunk-BVWXGGJY.js.map +1 -0
- package/dist/components/Analytics/Carts/index.js +3 -2
- package/dist/components/Analytics/Carts/index.js.map +1 -1
- package/dist/components/Analytics/OverviewAnalytics/index.js +3 -2
- package/dist/components/Analytics/OverviewAnalytics/index.js.map +1 -1
- package/dist/components/Analytics/PartnerAnalysis/index.js +3 -2
- package/dist/components/Analytics/PartnerAnalysis/index.js.map +1 -1
- package/dist/components/DataGrid/index.d.ts +1 -1
- package/dist/components/DataGrid/index.js +4 -1
- package/dist/components/DataView/index.d.ts +1 -1
- package/dist/components/DataView/index.js +3 -2
- package/dist/components/DynamicDataView/index.d.ts +3 -1
- package/dist/components/DynamicDataView/index.js +18 -17
- package/dist/components/DynamicDataView/index.js.map +1 -1
- package/dist/types/dataGridProps.d.ts +2 -0
- package/package.json +1 -1
- package/dist/chunk-SB7J43ND.js +0 -12
- package/dist/chunk-SB7J43ND.js.map +0 -1
- package/dist/chunk-VGZHKC76.js +0 -27
- package/dist/chunk-VGZHKC76.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Analytics/Carts/context.tsx","../../../../src/components/Analytics/Carts/Detail/index.tsx","../../../../src/components/Analytics/Carts/Detail/Informations/index.tsx","../../../../src/components/Analytics/Carts/Detail/Informations/Row.tsx","../../../../src/components/Analytics/Carts/Detail/Items/index.tsx","../../../../src/components/Analytics/Carts/Detail/Items/styles.ts","../../../../src/components/Analytics/Carts/Detail/styles.ts","../../../../src/components/Analytics/Carts/List/index.tsx","../../../../src/components/Analytics/Carts/StatusLabel/index.tsx","../../../../src/components/Analytics/Carts/List/styles.ts","../../../../src/components/Analytics/Carts/Summary/index.tsx","../../../../src/components/Analytics/Carts/Summary/Amount/index.tsx","../../../../src/components/Analytics/Carts/Summary/Card/index.tsx","../../../../src/components/Analytics/Carts/Summary/Card/Bar.tsx","../../../../src/components/Analytics/Carts/Summary/Card/utils.ts","../../../../src/components/Analytics/Carts/Summary/Card/styles.ts","../../../../src/components/Analytics/Carts/Summary/utils.ts","../../../../src/components/Analytics/Carts/Summary/Quantity/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Partners/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Profiles/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Profiles/ProfileOption/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Sellers/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Status/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Status/StatusOption/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/styles.ts"],"names":["createContext","useContext","useMemo","jsx","CartsContext","CartsProvider","adapters","slots","children","filters","useCartsFilters_default","value","useCartsContext","context","useCartsFilterContext","useCallback","CardContent","CardHeader","Stack","Typography","Divider","memo","jsxs","Row","label","Row_default","Informations","cart","fDate","getProfileName","fTimeAgo","cpfMaskOrCnpjMask","phoneMask","fCurrencyBRL","Informations_default","styled","MobileHeader","theme","Fragment","getProductCell","item","getMobileRender","DataViewMobileItem_default","renderCurrencyValue","Items","DataView_default","Label_default","row","data","Items_default","Button","MuiCard","Card","WhatsAppButton","CartDetail","phone","handleWhatsAppClick","message","url","Icon_default","Detail_default","CartStatusLabel","status","option","CART_STATUS_OPTIONS","StatusLabel_default","MuiLink","Link","getPartnerName","getUserName","getCreatedAt","getUpdatedAt","getStatus","getActions","handleSendWhatsAppMessage","handleSendEmail","MoreMenu_default","MenuItem_default","CartsList","apiRef","carts","isLoading","isFetching","isFetchingNextPage","onRowsScrollEnd","sortModel","handleSortModelChange","params","List_default","useState","Checkbox","FormControlLabel","BarChart","ResponsiveContainer","XAxis","YAxis","RechartsBar","RADIUS","getBarRadius","index","series","isFirstVisible","s","isLastVisible","COLORS","EMPTY_COLOR","Bar","isZero","serie","Bar_default","title","subtitle","legend","v","chartData","total","sum","ChartLoading_default","Card_default","formatPercentage","fPercent","Amount","active","abandoned","showActive","setShowActive","showAbandoned","setShowAbandoned","activeValue","abandonedValue","_","checked","Amount_default","Quantity","Quantity_default","CartsSummary","summary","Summary_default","Badge","Partners","selectedPartners","setSelectedPartners","OptionsFilter_default","Partners_default","Radio","ProfileOption","profile","onToggle","CART_PROFILE_OPTIONS","ProfileOption_default","Profiles","selectedProfile","setSelectedProfile","profileOptions","expanded","toggleExpanded","useToggle_default","handleToggle","Accordion","AccordionSummary","AccordionDetails","Profiles_default","Sellers","useOptions","selectedSellers","setSelectedSellers","Sellers_default","StatusOption","color","StatusOption_default","Status","selectedStatuses","setSelectedStatuses","statuses","CartStatus","Status_default","Filters","useSellerOptions","Filters_default","MuiButton","ExportButton","MenuPopover","MenuPopover_default","Toolbar","isMobile","useResponsive_default","dateFilter","handleDateFilterChange","activeFiltersCount","sellersCount","dateFilterPopover","usePopover_default","exportPopover","filtersOpen","toggleFiltersOpen","handleDateFilterSave","dateButtonLabel","FILTER_PERIOD_LABELS","fDateRangeShortLabel","Drawer_default","Toolbar_default"],"mappings":"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","sourcesContent":["import { createContext, useContext, useMemo } from 'react';\n\nimport useCartsFilters, { UseCartsFiltersReturn } from 'hooks/useCartsFilters';\nimport { CartsProviderProps, CartsValue } from 'types/carts';\n\nconst CartsContext = createContext<CartsValue | null>(null);\n\nconst CartsProvider = ({ adapters, slots, children }: CartsProviderProps) => {\n const filters = useCartsFilters();\n\n const value = useMemo(\n () => ({ adapters, slots, filters }),\n [adapters, slots, filters],\n );\n\n return (\n <CartsContext.Provider value={value}>{children}</CartsContext.Provider>\n );\n};\n\nconst useCartsContext = (): CartsValue => {\n const context = useContext(CartsContext);\n\n if (!context) {\n throw new Error('useCartsContext must be used within a CartsProvider');\n }\n\n return context;\n};\n\nconst useCartsFilterContext = (): UseCartsFiltersReturn =>\n useCartsContext().filters;\n\nexport { CartsProvider, useCartsContext, useCartsFilterContext };\n","import { useCallback } from 'react';\nimport CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport Icon from 'components/Icon';\nimport { CartDetailProps } from 'types/carts';\n\nimport Informations from './Informations';\nimport Items from './Items';\nimport { Card, WhatsAppButton } from './styles';\n\nconst CartDetail = ({ cart }: CartDetailProps) => {\n const { slots } = useCartsContext();\n\n const phone = cart?.partner?.phone?.replace(/\\D/g, '');\n\n const handleWhatsAppClick = useCallback(() => {\n const message = slots.buildRecoveryMessage(cart);\n\n const url = phone\n ? `https://wa.me/${phone}?text=${encodeURIComponent(message)}`\n : `https://wa.me/?text=${encodeURIComponent(message)}`;\n\n window.open(url, '_blank', 'noopener,noreferrer');\n }, [cart, phone, slots]);\n\n return (\n <Stack\n display=\"grid\"\n gridTemplateColumns={{ xs: '1fr', md: '2fr 1fr' }}\n gap={3}\n >\n <Stack\n position={{ md: 'relative' }}\n sx={{ order: { xs: 2, md: 1 } }}\n overflow=\"hidden\"\n >\n <Stack\n position={{ md: 'absolute' }}\n minHeight={{ md: 0 }}\n sx={{ inset: { md: 0 } }}\n >\n <Items cart={cart} />\n </Stack>\n </Stack>\n\n <Stack gap={3} sx={{ order: { xs: 1, md: 2 } }} overflow=\"hidden\">\n <Card variant=\"outlined\">\n <CardHeader\n title={\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n Informações\n </Typography>\n }\n />\n\n <CardContent>\n <Informations cart={cart} />\n </CardContent>\n </Card>\n\n <Card variant=\"outlined\" sx={{ order: { xs: 1, md: 2 } }}>\n <CardHeader\n title={\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n Recuperar carrinho abandonado\n </Typography>\n }\n />\n\n <CardContent>\n <Stack gap={3}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Envie uma mensagem pelo WhatsApp para o cliente com o link deste\n carrinho abandonado e incentive a finalização da compra.\n </Typography>\n\n <Stack gap={1.5}>\n <WhatsAppButton\n variant=\"contained\"\n startIcon={<Icon icon=\"WHATSAPP\" />}\n size=\"small\"\n onClick={handleWhatsAppClick}\n >\n Enviar carrinho por WhatsApp\n </WhatsAppButton>\n\n {slots.renderRecoveryActions?.(cart)}\n </Stack>\n </Stack>\n </CardContent>\n </Card>\n </Stack>\n </Stack>\n );\n};\n\nexport default CartDetail;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport { CartDetailProps } from 'types/carts';\nimport { getProfileName } from 'utils/carts';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate, fTimeAgo } from 'utils/formatTime';\nimport { cpfMaskOrCnpjMask, phoneMask } from 'utils/mask';\n\nimport Row from './Row';\n\nconst Informations = ({ cart }: CartDetailProps) => {\n const { slots } = useCartsContext();\n\n return (\n <Stack gap={3}>\n <Stack gap={0.5}>\n <Row\n label=\"Criado em\"\n value={\n cart.created_at\n ? fDate(cart.created_at, 'DD/MM/YYYY [às] HH:mm')\n : '-'\n }\n />\n\n <Row label=\"Usuário\" value={slots.renderDetailUserName(cart)} />\n\n <Row\n label=\"Tipo de usuário\"\n value={getProfileName(cart.user?.profile) || '-'}\n />\n\n <Row\n label=\"Última atualização\"\n value={fTimeAgo(cart.updated_at, 'instant') ?? '-'}\n />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Row\n label=\"Cliente\"\n value={\n <Stack alignItems=\"flex-end\" minWidth={0}>\n {slots.renderDetailPartnerName(cart)}\n\n {cart.partner?.tax_id && (\n <Typography\n variant=\"body2\"\n fontSize={13}\n color=\"text.secondary\"\n maxWidth=\"100%\"\n noWrap\n >\n {cpfMaskOrCnpjMask(cart.partner.tax_id)}\n </Typography>\n )}\n </Stack>\n }\n />\n\n <Row label=\"E-mail\" value={cart.partner?.email || '-'} />\n\n <Row\n label=\"Contato\"\n value={cart.partner?.phone ? phoneMask(cart.partner.phone) : '-'}\n />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Row\n label=\"Forma de pagamento\"\n value={cart.payment_method?.name || '-'}\n />\n\n <Row\n label=\"Subtotal\"\n value={cart.total != null ? fCurrencyBRL(cart.total) : '-'}\n />\n </Stack>\n </Stack>\n );\n};\n\nexport default Informations;\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { RowProps } from './props';\n\nconst Row = ({ label, value }: RowProps) => (\n <Stack\n direction=\"row\"\n justifyContent=\"space-between\"\n gap={1.5}\n overflow=\"hidden\"\n >\n <Typography variant=\"body2\" color=\"text.secondary\" flexShrink={0}>\n {label}:\n </Typography>\n\n <Typography\n component=\"div\"\n variant=\"body2\"\n fontWeight={500}\n color=\"text.primary\"\n noWrap\n >\n {value}\n </Typography>\n </Stack>\n);\n\nexport default memo(Row);\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { GridRenderCellParams } from '@mui/x-data-grid-premium';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport DataView from 'components/DataView';\nimport DataViewMobileItem from 'components/DataViewMobileItem';\nimport Label from 'components/Label';\nimport { CartDetailProps, CartItem, CartsSlots } from 'types/carts';\nimport { renderCurrencyValue } from 'utils/carts';\n\nimport { MobileHeader } from './styles';\n\nconst getProductCell = (item: CartItem) => {\n if (!item.product_name && !item.product_sku && !item.unit_name) {\n return (\n <Typography variant=\"body2\" color=\"text.primary\" noWrap>\n -\n </Typography>\n );\n }\n\n return (\n <Stack justifyContent=\"center\" height={1}>\n {item.product_name && (\n <Typography variant=\"body2\" color=\"text.primary\" noWrap>\n {item.product_name}\n </Typography>\n )}\n\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Typography variant=\"caption\" color=\"text.secondary\" noWrap>\n Cód.: {item.product_sku || '-'}\n </Typography>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ borderStyle: 'dashed' }}\n />\n\n <Typography variant=\"caption\" color=\"text.secondary\" noWrap>\n Unidade: {item.unit_name || '-'}\n </Typography>\n </Stack>\n </Stack>\n );\n};\n\nconst getMobileRender = (item: CartItem, slots: CartsSlots) => {\n return (\n <DataViewMobileItem key={item.id}>\n <Stack gap={1}>\n {slots.renderProductImage(item)}\n\n {item.product_name && (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {item.product_name || '-'}\n </Typography>\n )}\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Cód.: {item.product_sku || '-'}\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Unidade: {item.unit_name || '-'}\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Valor:{' '}\n <Typography\n component=\"span\"\n variant=\"subtitle2\"\n color=\"text.primary\"\n noWrap\n >\n {renderCurrencyValue(item.price)}\n </Typography>\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Qtd. de itens:{' '}\n <Typography\n component=\"span\"\n variant=\"subtitle2\"\n color=\"text.primary\"\n noWrap\n >\n {item.quantity}\n </Typography>\n </Typography>\n </Stack>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Subtotal:{' '}\n <Typography\n component=\"span\"\n variant=\"subtitle2\"\n color=\"text.primary\"\n >\n {renderCurrencyValue(item.total)}\n </Typography>\n </Typography>\n </Stack>\n </Stack>\n </DataViewMobileItem>\n );\n};\n\nconst Items = ({ cart }: CartDetailProps) => {\n const { slots } = useCartsContext();\n\n return (\n <DataView\n title=\"Itens\"\n header={\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n Itens\n </Typography>\n\n <Label variant=\"soft\" color=\"primary\">\n {cart.items.length || 0}\n </Label>\n </Stack>\n }\n headerProps={{ p: { xs: 3, md: 0 }, pb: { md: 1.5 } }}\n columns={[\n {\n field: 'image',\n headerName: 'Imagem',\n flex: 1,\n sortable: false,\n align: 'center',\n headerAlign: 'center',\n renderCell: ({ row }: GridRenderCellParams) => (\n <>{slots.renderProductImage(row as CartItem)}</>\n ),\n },\n {\n field: 'product_name',\n headerName: 'Produtos',\n flex: 3,\n sortable: false,\n renderCell: ({ row }: GridRenderCellParams) => getProductCell(row),\n },\n {\n field: 'price',\n headerName: 'Valor',\n flex: 1,\n sortable: false,\n renderCell: ({ row }: GridRenderCellParams) =>\n renderCurrencyValue((row as CartItem).price),\n },\n {\n field: 'quantity',\n headerName: 'Qtd. de itens',\n flex: 1,\n sortable: false,\n },\n {\n field: 'total',\n headerName: 'Subtotal',\n flex: 1,\n sortable: false,\n renderCell: ({ row }: GridRenderCellParams) =>\n renderCurrencyValue((row as CartItem).total),\n },\n ]}\n rows={cart.items}\n mobileSlots={<MobileHeader />}\n mobileRender={(data: CartItem) => getMobileRender(data, slots)}\n hideFooter\n disableRowSelectionOnClick\n disableColumnFilter\n disableColumnMenu\n disableColumnSorting\n disableColumnResize\n disableColumnPinning\n containerProps={{ height: '100%', sx: { p: { xs: 0, md: 3 } } }}\n />\n );\n};\n\nexport default Items;\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const MobileHeader = styled(Stack)(({ theme }) => ({\n position: 'sticky',\n borderBottom: `1px solid ${theme.palette.divider}`,\n}));\n","import Button from '@mui/material/Button';\nimport MuiCard from '@mui/material/Card';\nimport { styled } from '@mui/material/styles';\n\nexport const Card = styled(MuiCard)({\n width: '100%',\n height: 'fit-content',\n boxShadow: 'none',\n});\n\nexport const WhatsAppButton = styled(Button)(({ theme }) => ({\n background: theme.palette.success.main,\n color: theme.palette.success.contrastText,\n\n '&:hover': {\n background: theme.palette.success.dark,\n },\n}));\n","import { memo } from 'react';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { GridRenderCellParams, GridRowParams } from '@mui/x-data-grid-premium';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport CartStatusLabel from 'components/Analytics/Carts/StatusLabel';\nimport DataView from 'components/DataView';\nimport DataViewMobileItem from 'components/DataViewMobileItem';\nimport MenuItem from 'components/MenuItem';\nimport MoreMenu from 'components/MoreMenu';\nimport { Cart, CartsListProps, CartsSlots } from 'types/carts';\nimport { getProfileName, Profile, renderCurrencyValue } from 'utils/carts';\nimport { fDate, fTimeAgo } from 'utils/formatTime';\nimport { cpfMaskOrCnpjMask } from 'utils/mask';\n\nimport { MobileHeader } from './styles';\n\nconst getPartnerName = (cart: Cart, slots: CartsSlots) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n {cart?.partner?.name ? (\n <>\n {slots.renderPartnerName(cart)}\n\n <Typography variant=\"body2\" fontSize={13} color=\"text.secondary\">\n {cart?.partner?.tax_id\n ? cpfMaskOrCnpjMask(cart?.partner?.tax_id)\n : '-'}\n </Typography>\n </>\n ) : (\n '-'\n )}\n </Stack>\n );\n};\n\nconst getUserName = (cart: Cart, slots: CartsSlots) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n {cart?.user?.name ? (\n <>\n {slots.renderUserName(cart)}\n\n <Typography variant=\"body2\" fontSize={13} color=\"text.secondary\">\n {cart?.user?.profile === Profile.PARTNER ? 'Cliente' : 'Vendedor'}\n </Typography>\n </>\n ) : (\n '-'\n )}\n </Stack>\n );\n};\n\nconst getCreatedAt = (cart: Cart) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n {cart?.created_at ? (\n <>\n <Typography variant=\"body2\" color=\"text.primary\">\n {fDate(cart?.created_at, 'DD/MM/YYYY')}\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\">\n {fDate(cart?.created_at, '[às] HH:mm')}\n </Typography>\n </>\n ) : (\n '-'\n )}\n </Stack>\n );\n};\n\nconst getUpdatedAt = (cart: Cart) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n {cart?.updated_at ? (\n <Typography variant=\"body2\" color=\"text.primary\" noWrap>\n {fTimeAgo(cart?.updated_at, 'instant')}\n </Typography>\n ) : (\n '-'\n )}\n </Stack>\n );\n};\n\nconst getStatus = (cart: Cart) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n <CartStatusLabel status={cart?.status} />\n </Stack>\n );\n};\n\nconst getActions = (cart: Cart) => {\n const handleSendWhatsAppMessage = () => {\n const phone = cart?.partner?.phone?.replace(/\\D/g, '');\n window.open(`https://wa.me/${phone}`, '_blank');\n };\n\n const handleSendEmail = () => {\n window.location.href = `mailto:${cart?.partner?.email}`;\n };\n\n return (\n <MoreMenu\n key={cart.id}\n actions={\n <>\n <MenuItem\n onClick={handleSendWhatsAppMessage}\n disabled={!cart?.partner?.phone}\n >\n Enviar mensagem por WhatsApp\n </MenuItem>\n\n <MenuItem onClick={handleSendEmail} disabled={!cart?.partner?.email}>\n Enviar e-mail\n </MenuItem>\n </>\n }\n />\n );\n};\n\nconst getMobileRender = (cart: Cart, slots: CartsSlots) => {\n return (\n <DataViewMobileItem key={cart.id}>\n {slots.renderCartLink(\n cart,\n <Stack gap={1}>\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome do cliente\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {cart?.partner?.name || '-'}\n </Typography>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Usuário\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {cart?.user?.name || '-'}\n </Typography>\n </Stack>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ borderStyle: 'dashed', mx: 3 }}\n />\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Tipo de usuário\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {getProfileName(cart.user?.profile) || '-'}\n </Typography>\n </Stack>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Valor\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {renderCurrencyValue(cart?.amount_value)}\n </Typography>\n </Stack>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ borderStyle: 'dashed', mx: 3 }}\n />\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Qtd. de itens\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {cart?.item_quantity ?? 0}\n </Typography>\n </Stack>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Criado em\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {cart?.created_at ? fDate(cart?.created_at, 'DD/MM/YYYY') : '-'}\n </Typography>\n </Stack>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ borderStyle: 'dashed', mx: 3 }}\n />\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Última atualização\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fTimeAgo(cart?.updated_at, 'instant') ?? '-'}\n </Typography>\n </Stack>\n </Stack>\n\n <Stack gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Status\n </Typography>\n\n {cart?.status ? (\n <CartStatusLabel status={cart.status} />\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n </Stack>,\n )}\n\n <Stack position=\"absolute\" top={10} right={10}>\n {getActions(cart)}\n </Stack>\n </DataViewMobileItem>\n );\n};\n\nconst CartsList = ({\n apiRef,\n carts,\n isLoading,\n isFetching,\n isFetchingNextPage,\n onRowsScrollEnd,\n}: CartsListProps) => {\n const { slots, filters } = useCartsContext();\n\n const { sortModel, handleSortModelChange } = filters;\n\n const handleRowDoubleClick = ({ row }: GridRowParams) => {\n slots.onOpenCart(row as Cart);\n };\n\n return (\n <DataView\n apiRef={apiRef}\n title=\"Lista de carrinhos\"\n header={\n <Typography variant=\"h6\" color=\"text.primary\">\n Lista de carrinhos\n </Typography>\n }\n columns={[\n {\n field: 'partner_name',\n headerName: 'Nome do cliente',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) =>\n getPartnerName(row, slots),\n },\n {\n field: 'user_name',\n headerName: 'Usuário',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) =>\n getUserName(row, slots),\n },\n {\n field: 'amount_value',\n headerName: 'Valor',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) =>\n renderCurrencyValue((row as Cart).amount_value),\n },\n {\n field: 'item_quantity',\n headerName: 'Qtd. de itens',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) =>\n (row as Cart).item_quantity,\n },\n {\n field: 'created_at',\n headerName: 'Criado em',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) => getCreatedAt(row),\n },\n {\n field: 'status',\n headerName: 'Status',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) => getStatus(row),\n },\n {\n field: 'updated_at',\n headerName: 'Última atualização',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) => getUpdatedAt(row),\n },\n {\n field: 'actions',\n type: 'actions',\n headerName: 'Ações',\n maxWidth: 80,\n getActions: (params: GridRowParams) => [getActions(params.row)],\n },\n ]}\n rows={carts}\n mobileSlots={\n <MobileHeader>\n <Typography variant=\"body2\" fontWeight={600} color=\"text.secondary\">\n Carrinhos\n </Typography>\n </MobileHeader>\n }\n mobileRender={(data: Cart) => getMobileRender(data, slots)}\n loading={isLoading}\n fetching={isFetching && !isFetchingNextPage}\n fetchingNextPage={isFetchingNextPage}\n onRowsScrollEnd={onRowsScrollEnd}\n scrollEndThreshold={600}\n onRowDoubleClick={handleRowDoubleClick}\n disableRowSelectionOnClick\n disableColumnMenu\n sortingMode=\"server\"\n sortModel={sortModel}\n onSortModelChange={handleSortModelChange}\n slots={{\n noRowsOverlay: () => <>{slots.renderEmptyState()}</>,\n }}\n />\n );\n};\n\nexport default memo(CartsList);\n","import Label from 'components/Label';\nimport { CART_STATUS_OPTIONS } from 'utils/carts';\n\nimport { CartStatusLabelProps } from './props';\n\nconst CartStatusLabel = ({ status }: CartStatusLabelProps) => {\n const option = CART_STATUS_OPTIONS[status];\n\n return (\n <Label color={option?.color} sx={{ width: 'fit-content' }}>\n {option?.label}\n </Label>\n );\n};\n\nexport default CartStatusLabel;\n","import MuiLink from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const Link = styled(MuiLink)(({ theme }) => ({\n fontWeight: 600,\n color: theme.palette.primary.main,\n\n cursor: 'pointer',\n\n '&:hover': {\n textDecoration: 'underline',\n },\n}));\n\nexport const MobileHeader = styled(Stack)(({ theme }) => ({\n position: 'sticky',\n\n padding: theme.spacing(1.5),\n\n background: theme.palette.background.neutral,\n}));\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\n\nimport { CartsSummaryProps } from 'types/carts';\n\nimport Amount from './Amount';\nimport Quantity from './Quantity';\n\nconst CartsSummary = ({ summary, isFetching }: CartsSummaryProps) => {\n return (\n <Stack\n direction={{ xs: 'column', md: 'row' }}\n justifyContent=\"space-between\"\n gap={3}\n >\n <Quantity\n active={summary?.active}\n abandoned={summary?.abandoned}\n isFetching={isFetching}\n />\n\n <Amount\n active={summary?.active}\n abandoned={summary?.abandoned}\n isFetching={isFetching}\n />\n </Stack>\n );\n};\n\nexport default memo(CartsSummary);\n","import { memo, useState } from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Card from 'components/Analytics/Carts/Summary/Card';\nimport { formatPercentage } from 'components/Analytics/Carts/Summary/utils';\nimport { fCurrencyBRL } from 'utils/formatNumber';\n\nimport { AmountProps } from './props';\n\nconst Amount = ({ active, abandoned, isFetching }: AmountProps) => {\n const [showActive, setShowActive] = useState(true);\n const [showAbandoned, setShowAbandoned] = useState(true);\n\n const activeValue = showActive ? (active?.amount_value ?? 0) : 0;\n const abandonedValue = showAbandoned ? (abandoned?.amount_value ?? 0) : 0;\n const total = activeValue + abandonedValue;\n\n const series = [\n { name: 'Ativos', data: [activeValue] },\n { name: 'Abandonados', data: [abandonedValue] },\n ];\n\n return (\n <Card\n title=\"Valor em carrinhos\"\n subtitle={\n <Typography variant=\"subtitle2\" fontSize={20} fontWeight={700}>\n {fCurrencyBRL(total)}\n </Typography>\n }\n legend={\n <Stack>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n sx={{ mt: -1 }}\n >\n <FormControlLabel\n label=\"Ativos\"\n control={\n <Checkbox\n name=\"active\"\n size=\"small\"\n checked={showActive}\n onChange={(_, checked) => setShowActive(checked)}\n sx={{ '&.Mui-checked': { color: '#22C55E' } }}\n />\n }\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n noWrap\n title={`${formatPercentage(active?.amount_percentage ?? 0)} | ${fCurrencyBRL(active?.amount_value ?? 0)}`}\n >\n {formatPercentage(active?.amount_percentage ?? 0)}\n  \n <Typography component=\"span\" variant=\"body2\" color=\"text.primary\">\n {fCurrencyBRL(active?.amount_value ?? 0)}\n </Typography>\n </Typography>\n </Stack>\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n sx={{ mt: -1 }}\n >\n <FormControlLabel\n label=\"Abandonados\"\n control={\n <Checkbox\n name=\"abandoned\"\n size=\"small\"\n checked={showAbandoned}\n onChange={(_, checked) => setShowAbandoned(checked)}\n sx={{ '&.Mui-checked': { color: '#FF5630' } }}\n />\n }\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n noWrap\n title={`${formatPercentage(abandoned?.amount_percentage ?? 0)} | ${fCurrencyBRL(abandoned?.amount_value ?? 0)}`}\n >\n {formatPercentage(abandoned?.amount_percentage ?? 0)}\n  \n <Typography component=\"span\" variant=\"body2\" color=\"text.primary\">\n {fCurrencyBRL(abandoned?.amount_value ?? 0)}\n </Typography>\n </Typography>\n </Stack>\n </Stack>\n }\n series={series}\n isFetching={isFetching}\n />\n );\n};\n\nexport default memo(Amount);\n","import { memo, useMemo } from 'react';\nimport CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport Stack from '@mui/material/Stack';\nimport { BarChart, ResponsiveContainer, XAxis, YAxis } from 'recharts';\n\nimport ChartLoading from 'components/Analytics/ChartLoading';\n\nimport Bar from './Bar';\nimport { SummaryCardProps } from './props';\nimport { Card as StyledCard } from './styles';\n\nconst Card = ({\n title,\n subtitle,\n legend,\n series,\n isFetching,\n}: SummaryCardProps) => {\n const isZero = useMemo(\n () => series.every(s => s.data.every(v => v === 0)),\n [series],\n );\n\n const chartData = useMemo(() => {\n if (isZero) return [{ empty: 100 }];\n\n const total = series.reduce((sum, s) => sum + (s.data[0] ?? 0), 0);\n\n const row: Record<string, number> = {};\n\n series.forEach(s => {\n row[s.name] = total > 0 ? (s.data[0] / total) * 100 : 0;\n });\n\n return [row];\n }, [series, isZero]);\n\n return (\n <StyledCard variant=\"outlined\">\n <CardHeader title={title} />\n\n <CardContent>\n <Stack gap={2}>\n <Stack gap={1}>\n {subtitle}\n\n <ChartLoading active={isFetching}>\n <ResponsiveContainer\n width=\"100%\"\n height={24}\n style={{ pointerEvents: 'none' }}\n >\n <BarChart\n data={chartData}\n layout=\"vertical\"\n stackOffset=\"none\"\n margin={{ top: 0, right: 0, bottom: 0, left: 0 }}\n barCategoryGap={0}\n >\n <XAxis type=\"number\" hide domain={[0, 100]} />\n <YAxis type=\"category\" hide />\n\n <Bar series={series} isZero={isZero} />\n </BarChart>\n </ResponsiveContainer>\n </ChartLoading>\n </Stack>\n\n {legend}\n </Stack>\n </CardContent>\n </StyledCard>\n );\n};\n\nexport default memo(Card);\n","import { Bar as RechartsBar } from 'recharts';\n\nimport { BarListProps } from './props';\nimport { getBarRadius } from './utils';\n\nconst COLORS = ['#22C55E', '#FF5630'];\nconst EMPTY_COLOR = '#E5E7EB';\n\nconst Bar = ({ series, isZero }: BarListProps) => {\n if (isZero) {\n return (\n <RechartsBar\n dataKey=\"empty\"\n stackId=\"stack\"\n fill={EMPTY_COLOR}\n stroke=\"none\"\n radius={3}\n isAnimationActive={false}\n data-testid=\"bar-empty\"\n />\n );\n }\n\n return (\n <>\n {series.map((serie, index) => (\n <RechartsBar\n key={index}\n dataKey={serie.name}\n stackId=\"stack\"\n fill={COLORS[index]}\n stroke=\"none\"\n radius={getBarRadius(index, series)}\n isAnimationActive={false}\n data-testid={`bar-${index}`}\n />\n ))}\n </>\n );\n};\n\nexport default Bar;\n","import { SummaryCardSeries } from './props';\n\nconst RADIUS = 3;\n\nexport const getBarRadius = (\n index: number,\n series: SummaryCardSeries[],\n): [number, number, number, number] => {\n const isFirstVisible = index === series.findIndex(s => s.data[0] > 0);\n const isLastVisible =\n index === series.map(s => s.data[0] > 0).lastIndexOf(true);\n\n if (isFirstVisible && isLastVisible) return [RADIUS, RADIUS, RADIUS, RADIUS];\n if (isFirstVisible) return [RADIUS, 0, 0, RADIUS];\n if (isLastVisible) return [0, RADIUS, RADIUS, 0];\n\n return [0, 0, 0, 0];\n};\n","import MuiCard from '@mui/material/Card';\nimport { styled } from '@mui/material/styles';\n\nexport const Card = styled(MuiCard)(({ theme }) => ({\n width: '100%',\n height: 'auto',\n\n border: `1px solid ${theme.palette.divider}`,\n\n boxShadow: 'none',\n overflow: 'visible',\n}));\n","import { fPercent } from 'utils/formatNumber';\n\nexport const formatPercentage = (value: number) =>\n fPercent(value, {\n maximumFractionDigits: 2,\n ...(value > 0 && value < 100 ? { minimumFractionDigits: 2 } : {}),\n });\n","import { memo, useState } from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Card from 'components/Analytics/Carts/Summary/Card';\nimport { formatPercentage } from 'components/Analytics/Carts/Summary/utils';\n\nimport { QuantityProps } from './props';\n\nconst Quantity = ({ active, abandoned, isFetching }: QuantityProps) => {\n const [showActive, setShowActive] = useState(true);\n const [showAbandoned, setShowAbandoned] = useState(true);\n\n const activeValue = showActive ? (active?.quantity_value ?? 0) : 0;\n const abandonedValue = showAbandoned ? (abandoned?.quantity_value ?? 0) : 0;\n const total = activeValue + abandonedValue;\n\n const series = [\n { name: 'Ativos', data: [activeValue] },\n { name: 'Abandonados', data: [abandonedValue] },\n ];\n\n return (\n <Card\n title=\"Quantidade de carrinhos\"\n subtitle={\n <Typography variant=\"subtitle2\" fontSize={20} fontWeight={700}>\n {total}{' '}\n <Typography\n component=\"span\"\n variant=\"body2\"\n fontSize={13}\n color=\"text.secondary\"\n >\n carrinho{total !== 1 && 's'}\n </Typography>\n </Typography>\n }\n legend={\n <Stack>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n sx={{ mt: -1 }}\n >\n <FormControlLabel\n label=\"Ativos\"\n control={\n <Checkbox\n name=\"active\"\n size=\"small\"\n checked={showActive}\n onChange={(_, checked) => setShowActive(checked)}\n sx={{ '&.Mui-checked': { color: '#22C55E' } }}\n />\n }\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n noWrap\n title={`${formatPercentage(active?.quantity_percentage ?? 0)} ${\n active?.quantity_value ?? 0\n } | carrinho${active?.quantity_value !== 1 ? 's' : ''}`}\n >\n {formatPercentage(active?.quantity_percentage ?? 0)}\n  \n <Typography component=\"span\" variant=\"body2\" color=\"text.primary\">\n {active?.quantity_value ?? 0} carrinho\n {active?.quantity_value !== 1 ? 's' : ''}\n </Typography>\n </Typography>\n </Stack>\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n sx={{ mt: -1 }}\n >\n <FormControlLabel\n label=\"Abandonados\"\n control={\n <Checkbox\n name=\"abandoned\"\n size=\"small\"\n checked={showAbandoned}\n onChange={(_, checked) => setShowAbandoned(checked)}\n sx={{ '&.Mui-checked': { color: '#FF5630' } }}\n />\n }\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n noWrap\n title={`${formatPercentage(abandoned?.quantity_percentage ?? 0)} ${\n abandoned?.quantity_value\n } | carrinho${abandoned?.quantity_value !== 1 ? 's' : ''}`}\n >\n {formatPercentage(abandoned?.quantity_percentage ?? 0)}\n  \n <Typography component=\"span\" variant=\"body2\" color=\"text.primary\">\n {abandoned?.quantity_value} carrinho\n {abandoned?.quantity_value !== 1 ? 's' : ''}\n </Typography>\n </Typography>\n </Stack>\n </Stack>\n }\n series={series}\n isFetching={isFetching}\n />\n );\n};\n\nexport default memo(Quantity);\n","import { useCallback, useMemo } from 'react';\nimport Badge from '@mui/material/Badge';\nimport Stack from '@mui/material/Stack';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport Drawer from 'components/Drawer';\nimport Icon from 'components/Icon';\nimport MenuItem from 'components/MenuItem';\nimport usePopover from 'hooks/usePopover';\nimport useResponsive from 'hooks/useResponsive';\nimport useToggle from 'hooks/useToggle';\nimport { FilterDateState } from 'types/analytics';\nimport { FILTER_PERIOD_LABELS, FilterPeriod } from 'utils/analytics';\nimport { fDateRangeShortLabel } from 'utils/formatTime';\n\nimport Filters from './Filters';\nimport { Button, ExportButton, MenuPopover } from './styles';\n\nconst Toolbar = () => {\n const isMobile = useResponsive('down', 'sm');\n\n const { slots, adapters, filters } = useCartsContext();\n\n const {\n dateFilter,\n handleDateFilterChange,\n selectedPartners,\n selectedSellers,\n selectedStatuses,\n } = filters;\n\n const activeFiltersCount = useMemo(() => {\n const sellersCount = adapters.useSellerOptions ? selectedSellers.length : 0;\n\n return selectedPartners.length + sellersCount + selectedStatuses.length;\n }, [\n adapters.useSellerOptions,\n selectedPartners.length,\n selectedSellers.length,\n selectedStatuses.length,\n ]);\n\n const dateFilterPopover = usePopover();\n const exportPopover = usePopover();\n\n const [filtersOpen, toggleFiltersOpen] = useToggle();\n\n const handleDateFilterSave = useCallback(\n (value: FilterDateState) => {\n handleDateFilterChange(value);\n dateFilterPopover.onClose();\n },\n [handleDateFilterChange, dateFilterPopover],\n );\n\n const dateButtonLabel =\n dateFilter.period !== FilterPeriod.OTHER\n ? FILTER_PERIOD_LABELS[dateFilter.period]\n : fDateRangeShortLabel(dateFilter.start_date, dateFilter.end_date);\n\n return (\n <>\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n alignItems={{ xs: 'flex-start', sm: 'center' }}\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack width=\"100%\" direction=\"row\" alignItems=\"center\" gap={1.5}>\n <Button\n variant=\"outlined\"\n endIcon={<Icon icon=\"ARROW_DOWN_SIMPLE\" />}\n color=\"inherit\"\n size=\"small\"\n fullWidth={isMobile}\n onClick={dateFilterPopover.onOpen}\n >\n {isMobile ? 'Período' : dateButtonLabel}\n </Button>\n\n <Badge\n badgeContent={activeFiltersCount}\n invisible={activeFiltersCount === 0}\n color=\"primary\"\n >\n <Button\n variant=\"outlined\"\n startIcon={<Icon icon=\"FILTER_LIST\" />}\n color=\"inherit\"\n size=\"small\"\n fullWidth={isMobile}\n onClick={toggleFiltersOpen}\n >\n Filtrar\n </Button>\n </Badge>\n\n {isMobile && (\n <ExportButton\n variant=\"text\"\n startIcon={<Icon icon=\"DOWNLOAD_EXPORT_04\" />}\n size=\"small\"\n onClick={exportPopover.onOpen}\n sx={{ display: 'none' }}\n >\n Exportar\n </ExportButton>\n )}\n </Stack>\n\n {!isMobile && (\n <ExportButton\n variant=\"text\"\n startIcon={<Icon icon=\"DOWNLOAD_EXPORT_04\" />}\n size=\"small\"\n color=\"inherit\"\n onClick={exportPopover.onOpen}\n sx={{ display: 'none' }}\n >\n Exportar\n </ExportButton>\n )}\n </Stack>\n\n <MenuPopover\n open={dateFilterPopover.open}\n onClose={dateFilterPopover.onClose}\n arrow={isMobile ? 'top-center' : 'top-left'}\n TransitionProps={{ timeout: 0 }}\n disabledArrow\n >\n {slots.renderDateFilter({\n value: dateFilter,\n onSave: handleDateFilterSave,\n onClose: dateFilterPopover.onClose,\n })}\n </MenuPopover>\n\n <MenuPopover\n open={exportPopover.open}\n onClose={exportPopover.onClose}\n arrow=\"top-right\"\n disabledArrow\n >\n <MenuItem>Exportar XLSX</MenuItem>\n <MenuItem>Exportar CSV</MenuItem>\n <MenuItem>Exportar PDF</MenuItem>\n </MenuPopover>\n\n <Drawer\n open={filtersOpen}\n onClose={toggleFiltersOpen}\n headerTitle=\"Filtros\"\n headerProps={{ direction: 'row-reverse' }}\n contentProps={{ p: 0 }}\n maxWidth={400}\n >\n <Filters />\n </Drawer>\n </>\n );\n};\n\nexport default Toolbar;\n","import {\n useCartsContext,\n useCartsFilterContext,\n} from 'components/Analytics/Carts/context';\nimport OptionsFilter from 'components/Analytics/OptionsFilter';\n\nconst Partners = () => {\n const { adapters } = useCartsContext();\n const { selectedPartners, setSelectedPartners } = useCartsFilterContext();\n\n return (\n <OptionsFilter\n name=\"partners\"\n title=\"Clientes\"\n placeholder=\"Digite para buscar um cliente...\"\n emptyText=\"Nenhum cliente selecionado\"\n testIdPrefix=\"filter-partner\"\n defaultExpanded\n selected={selectedPartners}\n onChange={setSelectedPartners}\n useOptions={adapters.usePartnerOptions}\n />\n );\n};\n\nexport default Partners;\n","import { 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 {\n useCartsContext,\n useCartsFilterContext,\n} from 'components/Analytics/Carts/context';\nimport useToggle from 'hooks/useToggle';\nimport { Profile } from 'utils/carts';\n\nimport ProfileOption from './ProfileOption';\n\nconst Profiles = () => {\n const { slots } = useCartsContext();\n const { selectedProfile, setSelectedProfile } = useCartsFilterContext();\n\n const { profileOptions } = slots;\n\n const [expanded, toggleExpanded] = useToggle(!!selectedProfile);\n\n const handleToggle = useCallback(\n (profile: Profile) => {\n setSelectedProfile(selectedProfile === profile ? null : profile);\n },\n [setSelectedProfile, selectedProfile],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Perfis\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1}>\n {profileOptions.map(profile => (\n <ProfileOption\n key={profile}\n profile={profile}\n checked={selectedProfile === profile}\n onToggle={() => handleToggle(profile)}\n />\n ))}\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Profiles;\n","import FormControlLabel from '@mui/material/FormControlLabel';\nimport Radio from '@mui/material/Radio';\n\nimport { CART_PROFILE_OPTIONS } from 'utils/carts';\n\nimport { ProfileOptionProps } from './props';\n\nconst ProfileOption = ({ profile, checked, onToggle }: ProfileOptionProps) => {\n const { label } = CART_PROFILE_OPTIONS[profile];\n\n return (\n <FormControlLabel\n control={\n <Radio\n name={`profile-${profile}`}\n checked={checked}\n onClick={onToggle}\n />\n }\n label={label}\n />\n );\n};\n\nexport default ProfileOption;\n","import { useCartsFilterContext } from 'components/Analytics/Carts/context';\nimport OptionsFilter from 'components/Analytics/OptionsFilter';\n\nimport { SellersProps } from './props';\n\nconst Sellers = ({ useOptions }: SellersProps) => {\n const { selectedSellers, setSelectedSellers } = useCartsFilterContext();\n\n return (\n <OptionsFilter\n name=\"sellers\"\n title=\"Vendedores\"\n placeholder=\"Digite para buscar um vendedor...\"\n emptyText=\"Nenhum vendedor selecionado\"\n testIdPrefix=\"filter-seller\"\n defaultExpanded={!!selectedSellers.length}\n selected={selectedSellers}\n onChange={setSelectedSellers}\n useOptions={useOptions}\n />\n );\n};\n\nexport default Sellers;\n","import { useCallback, 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 { useCartsFilterContext } from 'components/Analytics/Carts/context';\nimport useToggle from 'hooks/useToggle';\nimport { CartStatus } from 'utils/carts';\n\nimport StatusOption from './StatusOption';\n\nconst Status = () => {\n const { selectedStatuses, setSelectedStatuses } = useCartsFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(!!selectedStatuses.length);\n\n const statuses = useMemo(\n () =>\n Object.values(CartStatus).filter(status => status !== CartStatus.EXPIRED),\n [],\n );\n\n const handleToggle = useCallback(\n (status: CartStatus) => {\n setSelectedStatuses(\n selectedStatuses.includes(status)\n ? selectedStatuses.filter(s => s !== status)\n : [...selectedStatuses, status],\n );\n },\n [setSelectedStatuses, selectedStatuses],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Status\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1}>\n {statuses.map(status => (\n <StatusOption\n key={status}\n status={status}\n checked={selectedStatuses.includes(status)}\n onToggle={() => handleToggle(status)}\n />\n ))}\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Status;\n","import Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nimport Label from 'components/Label';\nimport { CART_STATUS_OPTIONS } from 'utils/carts';\n\nimport { StatusOptionProps } from './props';\n\nconst StatusOption = ({ status, checked, onToggle }: StatusOptionProps) => {\n const { label, color } = CART_STATUS_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 <Label color={color} sx={{ cursor: 'pointer' }}>\n {label}\n </Label>\n }\n />\n );\n};\n\nexport default StatusOption;\n","import { useCartsContext } from 'components/Analytics/Carts/context';\n\nimport Partners from './Partners';\nimport Profiles from './Profiles';\nimport Sellers from './Sellers';\nimport Status from './Status';\n\nconst Filters = () => {\n const { adapters } = useCartsContext();\n\n const { useSellerOptions } = adapters;\n\n return (\n <>\n <Partners />\n\n {!!useSellerOptions && <Sellers useOptions={useSellerOptions} />}\n\n <Status />\n\n <Profiles />\n </>\n );\n};\n\nexport default Filters;\n","import MuiButton from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\nimport CommonMenuPopover from 'components/MenuPopover';\n\nexport const Button = styled(MuiButton)(({ theme }) => ({\n background: theme.palette.common.white,\n}));\n\nexport const ExportButton = styled(MuiButton)(({ theme }) => ({\n color: theme.palette.text.secondary,\n\n '&:hover': {\n background: theme.palette.action.hover,\n },\n\n [theme.breakpoints.down('sm')]: {\n border: `1px solid ${theme.palette.divider}`,\n\n textIndent: '-9999em',\n fontSize: 0,\n minWidth: 30,\n maxWidth: 30,\n height: 30,\n width: 30,\n overflow: 'hidden',\n\n '& .MuiButton-icon': {\n margin: 0,\n },\n },\n}));\n\nexport const MenuPopover = styled(CommonMenuPopover)(({ theme }) => ({\n '& .MuiPopover-paper': {\n width: 540,\n padding: theme.spacing(3),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.spacing(1),\n backgroundImage: 'none',\n\n [theme.breakpoints.down('sm')]: {\n width: 'calc(100% - 48px)',\n },\n },\n}));\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Analytics/Carts/context.tsx","../../../../src/components/Analytics/Carts/Detail/index.tsx","../../../../src/components/Analytics/Carts/Detail/Informations/index.tsx","../../../../src/components/Analytics/Carts/Detail/Informations/Row.tsx","../../../../src/components/Analytics/Carts/Detail/Items/index.tsx","../../../../src/components/Analytics/Carts/Detail/Items/styles.ts","../../../../src/components/Analytics/Carts/Detail/styles.ts","../../../../src/components/Analytics/Carts/List/index.tsx","../../../../src/components/Analytics/Carts/StatusLabel/index.tsx","../../../../src/components/Analytics/Carts/List/styles.ts","../../../../src/components/Analytics/Carts/Summary/index.tsx","../../../../src/components/Analytics/Carts/Summary/Amount/index.tsx","../../../../src/components/Analytics/Carts/Summary/Card/index.tsx","../../../../src/components/Analytics/Carts/Summary/Card/Bar.tsx","../../../../src/components/Analytics/Carts/Summary/Card/utils.ts","../../../../src/components/Analytics/Carts/Summary/Card/styles.ts","../../../../src/components/Analytics/Carts/Summary/utils.ts","../../../../src/components/Analytics/Carts/Summary/Quantity/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Partners/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Profiles/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Profiles/ProfileOption/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Sellers/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Status/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/Status/StatusOption/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/Filters/index.tsx","../../../../src/components/Analytics/Carts/Toolbar/styles.ts"],"names":["createContext","useContext","useMemo","jsx","CartsContext","CartsProvider","adapters","slots","children","filters","useCartsFilters_default","value","useCartsContext","context","useCartsFilterContext","useCallback","CardContent","CardHeader","Stack","Typography","Divider","memo","jsxs","Row","label","Row_default","Informations","cart","fDate","getProfileName","fTimeAgo","cpfMaskOrCnpjMask","phoneMask","fCurrencyBRL","Informations_default","styled","MobileHeader","theme","Fragment","getProductCell","item","getMobileRender","DataViewMobileItem_default","renderCurrencyValue","Items","DataView_default","Label_default","row","data","Items_default","Button","MuiCard","Card","WhatsAppButton","CartDetail","phone","handleWhatsAppClick","message","url","Icon_default","Detail_default","CartStatusLabel","status","option","CART_STATUS_OPTIONS","StatusLabel_default","MuiLink","Link","getPartnerName","getUserName","getCreatedAt","getUpdatedAt","getStatus","getActions","handleSendWhatsAppMessage","handleSendEmail","MoreMenu_default","MenuItem_default","CartsList","apiRef","carts","isLoading","isFetching","isFetchingNextPage","onRowsScrollEnd","sortModel","handleSortModelChange","params","List_default","useState","Checkbox","FormControlLabel","BarChart","ResponsiveContainer","XAxis","YAxis","RechartsBar","RADIUS","getBarRadius","index","series","isFirstVisible","s","isLastVisible","COLORS","EMPTY_COLOR","Bar","isZero","serie","Bar_default","title","subtitle","legend","v","chartData","total","sum","ChartLoading_default","Card_default","formatPercentage","fPercent","Amount","active","abandoned","showActive","setShowActive","showAbandoned","setShowAbandoned","activeValue","abandonedValue","_","checked","Amount_default","Quantity","Quantity_default","CartsSummary","summary","Summary_default","Badge","Partners","selectedPartners","setSelectedPartners","OptionsFilter_default","Partners_default","Radio","ProfileOption","profile","onToggle","CART_PROFILE_OPTIONS","ProfileOption_default","Profiles","selectedProfile","setSelectedProfile","profileOptions","expanded","toggleExpanded","useToggle_default","handleToggle","Accordion","AccordionSummary","AccordionDetails","Profiles_default","Sellers","useOptions","selectedSellers","setSelectedSellers","Sellers_default","StatusOption","color","StatusOption_default","Status","selectedStatuses","setSelectedStatuses","statuses","CartStatus","Status_default","Filters","useSellerOptions","Filters_default","MuiButton","ExportButton","MenuPopover","MenuPopover_default","Toolbar","isMobile","useResponsive_default","dateFilter","handleDateFilterChange","activeFiltersCount","sellersCount","dateFilterPopover","usePopover_default","exportPopover","filtersOpen","toggleFiltersOpen","handleDateFilterSave","dateButtonLabel","FILTER_PERIOD_LABELS","fDateRangeShortLabel","Drawer_default","Toolbar_default"],"mappings":"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","sourcesContent":["import { createContext, useContext, useMemo } from 'react';\n\nimport useCartsFilters, { UseCartsFiltersReturn } from 'hooks/useCartsFilters';\nimport { CartsProviderProps, CartsValue } from 'types/carts';\n\nconst CartsContext = createContext<CartsValue | null>(null);\n\nconst CartsProvider = ({ adapters, slots, children }: CartsProviderProps) => {\n const filters = useCartsFilters();\n\n const value = useMemo(\n () => ({ adapters, slots, filters }),\n [adapters, slots, filters],\n );\n\n return (\n <CartsContext.Provider value={value}>{children}</CartsContext.Provider>\n );\n};\n\nconst useCartsContext = (): CartsValue => {\n const context = useContext(CartsContext);\n\n if (!context) {\n throw new Error('useCartsContext must be used within a CartsProvider');\n }\n\n return context;\n};\n\nconst useCartsFilterContext = (): UseCartsFiltersReturn =>\n useCartsContext().filters;\n\nexport { CartsProvider, useCartsContext, useCartsFilterContext };\n","import { useCallback } from 'react';\nimport CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport Icon from 'components/Icon';\nimport { CartDetailProps } from 'types/carts';\n\nimport Informations from './Informations';\nimport Items from './Items';\nimport { Card, WhatsAppButton } from './styles';\n\nconst CartDetail = ({ cart }: CartDetailProps) => {\n const { slots } = useCartsContext();\n\n const phone = cart?.partner?.phone?.replace(/\\D/g, '');\n\n const handleWhatsAppClick = useCallback(() => {\n const message = slots.buildRecoveryMessage(cart);\n\n const url = phone\n ? `https://wa.me/${phone}?text=${encodeURIComponent(message)}`\n : `https://wa.me/?text=${encodeURIComponent(message)}`;\n\n window.open(url, '_blank', 'noopener,noreferrer');\n }, [cart, phone, slots]);\n\n return (\n <Stack\n display=\"grid\"\n gridTemplateColumns={{ xs: '1fr', md: '2fr 1fr' }}\n gap={3}\n >\n <Stack\n position={{ md: 'relative' }}\n sx={{ order: { xs: 2, md: 1 } }}\n overflow=\"hidden\"\n >\n <Stack\n position={{ md: 'absolute' }}\n minHeight={{ md: 0 }}\n sx={{ inset: { md: 0 } }}\n >\n <Items cart={cart} />\n </Stack>\n </Stack>\n\n <Stack gap={3} sx={{ order: { xs: 1, md: 2 } }} overflow=\"hidden\">\n <Card variant=\"outlined\">\n <CardHeader\n title={\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n Informações\n </Typography>\n }\n />\n\n <CardContent>\n <Informations cart={cart} />\n </CardContent>\n </Card>\n\n <Card variant=\"outlined\" sx={{ order: { xs: 1, md: 2 } }}>\n <CardHeader\n title={\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n Recuperar carrinho abandonado\n </Typography>\n }\n />\n\n <CardContent>\n <Stack gap={3}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Envie uma mensagem pelo WhatsApp para o cliente com o link deste\n carrinho abandonado e incentive a finalização da compra.\n </Typography>\n\n <Stack gap={1.5}>\n <WhatsAppButton\n variant=\"contained\"\n startIcon={<Icon icon=\"WHATSAPP\" />}\n size=\"small\"\n onClick={handleWhatsAppClick}\n >\n Enviar carrinho por WhatsApp\n </WhatsAppButton>\n\n {slots.renderRecoveryActions?.(cart)}\n </Stack>\n </Stack>\n </CardContent>\n </Card>\n </Stack>\n </Stack>\n );\n};\n\nexport default CartDetail;\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport { CartDetailProps } from 'types/carts';\nimport { getProfileName } from 'utils/carts';\nimport { fCurrencyBRL } from 'utils/formatNumber';\nimport { fDate, fTimeAgo } from 'utils/formatTime';\nimport { cpfMaskOrCnpjMask, phoneMask } from 'utils/mask';\n\nimport Row from './Row';\n\nconst Informations = ({ cart }: CartDetailProps) => {\n const { slots } = useCartsContext();\n\n return (\n <Stack gap={3}>\n <Stack gap={0.5}>\n <Row\n label=\"Criado em\"\n value={\n cart.created_at\n ? fDate(cart.created_at, 'DD/MM/YYYY [às] HH:mm')\n : '-'\n }\n />\n\n <Row label=\"Usuário\" value={slots.renderDetailUserName(cart)} />\n\n <Row\n label=\"Tipo de usuário\"\n value={getProfileName(cart.user?.profile) || '-'}\n />\n\n <Row\n label=\"Última atualização\"\n value={fTimeAgo(cart.updated_at, 'instant') ?? '-'}\n />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Row\n label=\"Cliente\"\n value={\n <Stack alignItems=\"flex-end\" minWidth={0}>\n {slots.renderDetailPartnerName(cart)}\n\n {cart.partner?.tax_id && (\n <Typography\n variant=\"body2\"\n fontSize={13}\n color=\"text.secondary\"\n maxWidth=\"100%\"\n noWrap\n >\n {cpfMaskOrCnpjMask(cart.partner.tax_id)}\n </Typography>\n )}\n </Stack>\n }\n />\n\n <Row label=\"E-mail\" value={cart.partner?.email || '-'} />\n\n <Row\n label=\"Contato\"\n value={cart.partner?.phone ? phoneMask(cart.partner.phone) : '-'}\n />\n </Stack>\n\n <Divider sx={{ borderStyle: 'dashed' }} />\n\n <Stack gap={0.5}>\n <Row\n label=\"Forma de pagamento\"\n value={cart.payment_method?.name || '-'}\n />\n\n <Row\n label=\"Subtotal\"\n value={cart.total != null ? fCurrencyBRL(cart.total) : '-'}\n />\n </Stack>\n </Stack>\n );\n};\n\nexport default Informations;\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { RowProps } from './props';\n\nconst Row = ({ label, value }: RowProps) => (\n <Stack\n direction=\"row\"\n justifyContent=\"space-between\"\n gap={1.5}\n overflow=\"hidden\"\n >\n <Typography variant=\"body2\" color=\"text.secondary\" flexShrink={0}>\n {label}:\n </Typography>\n\n <Typography\n component=\"div\"\n variant=\"body2\"\n fontWeight={500}\n color=\"text.primary\"\n noWrap\n >\n {value}\n </Typography>\n </Stack>\n);\n\nexport default memo(Row);\n","import Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { GridRenderCellParams } from '@mui/x-data-grid-premium';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport DataView from 'components/DataView';\nimport DataViewMobileItem from 'components/DataViewMobileItem';\nimport Label from 'components/Label';\nimport { CartDetailProps, CartItem, CartsSlots } from 'types/carts';\nimport { renderCurrencyValue } from 'utils/carts';\n\nimport { MobileHeader } from './styles';\n\nconst getProductCell = (item: CartItem) => {\n if (!item.product_name && !item.product_sku && !item.unit_name) {\n return (\n <Typography variant=\"body2\" color=\"text.primary\" noWrap>\n -\n </Typography>\n );\n }\n\n return (\n <Stack justifyContent=\"center\" height={1}>\n {item.product_name && (\n <Typography variant=\"body2\" color=\"text.primary\" noWrap>\n {item.product_name}\n </Typography>\n )}\n\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Typography variant=\"caption\" color=\"text.secondary\" noWrap>\n Cód.: {item.product_sku || '-'}\n </Typography>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ borderStyle: 'dashed' }}\n />\n\n <Typography variant=\"caption\" color=\"text.secondary\" noWrap>\n Unidade: {item.unit_name || '-'}\n </Typography>\n </Stack>\n </Stack>\n );\n};\n\nconst getMobileRender = (item: CartItem, slots: CartsSlots) => {\n return (\n <DataViewMobileItem key={item.id}>\n <Stack gap={1}>\n {slots.renderProductImage(item)}\n\n {item.product_name && (\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {item.product_name || '-'}\n </Typography>\n )}\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Cód.: {item.product_sku || '-'}\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Unidade: {item.unit_name || '-'}\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Valor:{' '}\n <Typography\n component=\"span\"\n variant=\"subtitle2\"\n color=\"text.primary\"\n noWrap\n >\n {renderCurrencyValue(item.price)}\n </Typography>\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Qtd. de itens:{' '}\n <Typography\n component=\"span\"\n variant=\"subtitle2\"\n color=\"text.primary\"\n noWrap\n >\n {item.quantity}\n </Typography>\n </Typography>\n </Stack>\n\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Subtotal:{' '}\n <Typography\n component=\"span\"\n variant=\"subtitle2\"\n color=\"text.primary\"\n >\n {renderCurrencyValue(item.total)}\n </Typography>\n </Typography>\n </Stack>\n </Stack>\n </DataViewMobileItem>\n );\n};\n\nconst Items = ({ cart }: CartDetailProps) => {\n const { slots } = useCartsContext();\n\n return (\n <DataView\n title=\"Itens\"\n header={\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n Itens\n </Typography>\n\n <Label variant=\"soft\" color=\"primary\">\n {cart.items.length || 0}\n </Label>\n </Stack>\n }\n headerProps={{ p: { xs: 3, md: 0 }, pb: { md: 1.5 } }}\n columns={[\n {\n field: 'image',\n headerName: 'Imagem',\n flex: 1,\n sortable: false,\n align: 'center',\n headerAlign: 'center',\n renderCell: ({ row }: GridRenderCellParams) => (\n <>{slots.renderProductImage(row as CartItem)}</>\n ),\n },\n {\n field: 'product_name',\n headerName: 'Produtos',\n flex: 3,\n sortable: false,\n renderCell: ({ row }: GridRenderCellParams) => getProductCell(row),\n },\n {\n field: 'price',\n headerName: 'Valor',\n flex: 1,\n sortable: false,\n renderCell: ({ row }: GridRenderCellParams) =>\n renderCurrencyValue((row as CartItem).price),\n },\n {\n field: 'quantity',\n headerName: 'Qtd. de itens',\n flex: 1,\n sortable: false,\n },\n {\n field: 'total',\n headerName: 'Subtotal',\n flex: 1,\n sortable: false,\n renderCell: ({ row }: GridRenderCellParams) =>\n renderCurrencyValue((row as CartItem).total),\n },\n ]}\n rows={cart.items}\n mobileSlots={<MobileHeader />}\n mobileRender={(data: CartItem) => getMobileRender(data, slots)}\n hideFooter\n disableRowSelectionOnClick\n disableColumnFilter\n disableColumnMenu\n disableColumnSorting\n disableColumnResize\n disableColumnPinning\n containerProps={{ height: '100%', sx: { p: { xs: 0, md: 3 } } }}\n />\n );\n};\n\nexport default Items;\n","import Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const MobileHeader = styled(Stack)(({ theme }) => ({\n position: 'sticky',\n borderBottom: `1px solid ${theme.palette.divider}`,\n}));\n","import Button from '@mui/material/Button';\nimport MuiCard from '@mui/material/Card';\nimport { styled } from '@mui/material/styles';\n\nexport const Card = styled(MuiCard)({\n width: '100%',\n height: 'fit-content',\n boxShadow: 'none',\n});\n\nexport const WhatsAppButton = styled(Button)(({ theme }) => ({\n background: theme.palette.success.main,\n color: theme.palette.success.contrastText,\n\n '&:hover': {\n background: theme.palette.success.dark,\n },\n}));\n","import { memo } from 'react';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { GridRenderCellParams, GridRowParams } from '@mui/x-data-grid-premium';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport CartStatusLabel from 'components/Analytics/Carts/StatusLabel';\nimport DataView from 'components/DataView';\nimport DataViewMobileItem from 'components/DataViewMobileItem';\nimport MenuItem from 'components/MenuItem';\nimport MoreMenu from 'components/MoreMenu';\nimport { Cart, CartsListProps, CartsSlots } from 'types/carts';\nimport { getProfileName, Profile, renderCurrencyValue } from 'utils/carts';\nimport { fDate, fTimeAgo } from 'utils/formatTime';\nimport { cpfMaskOrCnpjMask } from 'utils/mask';\n\nimport { MobileHeader } from './styles';\n\nconst getPartnerName = (cart: Cart, slots: CartsSlots) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n {cart?.partner?.name ? (\n <>\n {slots.renderPartnerName(cart)}\n\n <Typography variant=\"body2\" fontSize={13} color=\"text.secondary\">\n {cart?.partner?.tax_id\n ? cpfMaskOrCnpjMask(cart?.partner?.tax_id)\n : '-'}\n </Typography>\n </>\n ) : (\n '-'\n )}\n </Stack>\n );\n};\n\nconst getUserName = (cart: Cart, slots: CartsSlots) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n {cart?.user?.name ? (\n <>\n {slots.renderUserName(cart)}\n\n <Typography variant=\"body2\" fontSize={13} color=\"text.secondary\">\n {cart?.user?.profile === Profile.PARTNER ? 'Cliente' : 'Vendedor'}\n </Typography>\n </>\n ) : (\n '-'\n )}\n </Stack>\n );\n};\n\nconst getCreatedAt = (cart: Cart) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n {cart?.created_at ? (\n <>\n <Typography variant=\"body2\" color=\"text.primary\">\n {fDate(cart?.created_at, 'DD/MM/YYYY')}\n </Typography>\n\n <Typography variant=\"body2\" color=\"text.secondary\">\n {fDate(cart?.created_at, '[às] HH:mm')}\n </Typography>\n </>\n ) : (\n '-'\n )}\n </Stack>\n );\n};\n\nconst getUpdatedAt = (cart: Cart) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n {cart?.updated_at ? (\n <Typography variant=\"body2\" color=\"text.primary\" noWrap>\n {fTimeAgo(cart?.updated_at, 'instant')}\n </Typography>\n ) : (\n '-'\n )}\n </Stack>\n );\n};\n\nconst getStatus = (cart: Cart) => {\n return (\n <Stack justifyContent=\"center\" height={1}>\n <CartStatusLabel status={cart?.status} />\n </Stack>\n );\n};\n\nconst getActions = (cart: Cart) => {\n const handleSendWhatsAppMessage = () => {\n const phone = cart?.partner?.phone?.replace(/\\D/g, '');\n window.open(`https://wa.me/${phone}`, '_blank');\n };\n\n const handleSendEmail = () => {\n window.location.href = `mailto:${cart?.partner?.email}`;\n };\n\n return (\n <MoreMenu\n key={cart.id}\n actions={\n <>\n <MenuItem\n onClick={handleSendWhatsAppMessage}\n disabled={!cart?.partner?.phone}\n >\n Enviar mensagem por WhatsApp\n </MenuItem>\n\n <MenuItem onClick={handleSendEmail} disabled={!cart?.partner?.email}>\n Enviar e-mail\n </MenuItem>\n </>\n }\n />\n );\n};\n\nconst getMobileRender = (cart: Cart, slots: CartsSlots) => {\n return (\n <DataViewMobileItem key={cart.id}>\n {slots.renderCartLink(\n cart,\n <Stack gap={1}>\n <Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nome do cliente\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n {cart?.partner?.name || '-'}\n </Typography>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Usuário\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {cart?.user?.name || '-'}\n </Typography>\n </Stack>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ borderStyle: 'dashed', mx: 3 }}\n />\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Tipo de usuário\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {getProfileName(cart.user?.profile) || '-'}\n </Typography>\n </Stack>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Valor\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {renderCurrencyValue(cart?.amount_value)}\n </Typography>\n </Stack>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ borderStyle: 'dashed', mx: 3 }}\n />\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Qtd. de itens\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {cart?.item_quantity ?? 0}\n </Typography>\n </Stack>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" gap={1}>\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Criado em\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {cart?.created_at ? fDate(cart?.created_at, 'DD/MM/YYYY') : '-'}\n </Typography>\n </Stack>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ borderStyle: 'dashed', mx: 3 }}\n />\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"body2\" color=\"text.secondary\" noWrap>\n Última atualização\n </Typography>\n\n <Typography variant=\"subtitle2\" color=\"text.primary\" noWrap>\n {fTimeAgo(cart?.updated_at, 'instant') ?? '-'}\n </Typography>\n </Stack>\n </Stack>\n\n <Stack gap={0.5}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Status\n </Typography>\n\n {cart?.status ? (\n <CartStatusLabel status={cart.status} />\n ) : (\n <Typography variant=\"subtitle2\" color=\"text.primary\">\n -\n </Typography>\n )}\n </Stack>\n </Stack>,\n )}\n\n <Stack position=\"absolute\" top={10} right={10}>\n {getActions(cart)}\n </Stack>\n </DataViewMobileItem>\n );\n};\n\nconst CartsList = ({\n apiRef,\n carts,\n isLoading,\n isFetching,\n isFetchingNextPage,\n onRowsScrollEnd,\n}: CartsListProps) => {\n const { slots, filters } = useCartsContext();\n\n const { sortModel, handleSortModelChange } = filters;\n\n const handleRowDoubleClick = ({ row }: GridRowParams) => {\n slots.onOpenCart(row as Cart);\n };\n\n return (\n <DataView\n apiRef={apiRef}\n title=\"Lista de carrinhos\"\n header={\n <Typography variant=\"h6\" color=\"text.primary\">\n Lista de carrinhos\n </Typography>\n }\n columns={[\n {\n field: 'partner_name',\n headerName: 'Nome do cliente',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) =>\n getPartnerName(row, slots),\n },\n {\n field: 'user_name',\n headerName: 'Usuário',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) =>\n getUserName(row, slots),\n },\n {\n field: 'amount_value',\n headerName: 'Valor',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) =>\n renderCurrencyValue((row as Cart).amount_value),\n },\n {\n field: 'item_quantity',\n headerName: 'Qtd. de itens',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) =>\n (row as Cart).item_quantity,\n },\n {\n field: 'created_at',\n headerName: 'Criado em',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) => getCreatedAt(row),\n },\n {\n field: 'status',\n headerName: 'Status',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) => getStatus(row),\n },\n {\n field: 'updated_at',\n headerName: 'Última atualização',\n flex: 1,\n renderCell: ({ row }: GridRenderCellParams) => getUpdatedAt(row),\n },\n {\n field: 'actions',\n type: 'actions',\n headerName: 'Ações',\n maxWidth: 80,\n getActions: (params: GridRowParams) => [getActions(params.row)],\n },\n ]}\n rows={carts}\n mobileSlots={\n <MobileHeader>\n <Typography variant=\"body2\" fontWeight={600} color=\"text.secondary\">\n Carrinhos\n </Typography>\n </MobileHeader>\n }\n mobileRender={(data: Cart) => getMobileRender(data, slots)}\n loading={isLoading}\n fetching={isFetching && !isFetchingNextPage}\n fetchingNextPage={isFetchingNextPage}\n onRowsScrollEnd={onRowsScrollEnd}\n scrollEndThreshold={600}\n onRowDoubleClick={handleRowDoubleClick}\n disableRowSelectionOnClick\n disableColumnMenu\n sortingMode=\"server\"\n sortModel={sortModel}\n onSortModelChange={handleSortModelChange}\n slots={{\n noRowsOverlay: () => <>{slots.renderEmptyState()}</>,\n }}\n />\n );\n};\n\nexport default memo(CartsList);\n","import Label from 'components/Label';\nimport { CART_STATUS_OPTIONS } from 'utils/carts';\n\nimport { CartStatusLabelProps } from './props';\n\nconst CartStatusLabel = ({ status }: CartStatusLabelProps) => {\n const option = CART_STATUS_OPTIONS[status];\n\n return (\n <Label color={option?.color} sx={{ width: 'fit-content' }}>\n {option?.label}\n </Label>\n );\n};\n\nexport default CartStatusLabel;\n","import MuiLink from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const Link = styled(MuiLink)(({ theme }) => ({\n fontWeight: 600,\n color: theme.palette.primary.main,\n\n cursor: 'pointer',\n\n '&:hover': {\n textDecoration: 'underline',\n },\n}));\n\nexport const MobileHeader = styled(Stack)(({ theme }) => ({\n position: 'sticky',\n\n padding: theme.spacing(1.5),\n\n background: theme.palette.background.neutral,\n}));\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\n\nimport { CartsSummaryProps } from 'types/carts';\n\nimport Amount from './Amount';\nimport Quantity from './Quantity';\n\nconst CartsSummary = ({ summary, isFetching }: CartsSummaryProps) => {\n return (\n <Stack\n direction={{ xs: 'column', md: 'row' }}\n justifyContent=\"space-between\"\n gap={3}\n >\n <Quantity\n active={summary?.active}\n abandoned={summary?.abandoned}\n isFetching={isFetching}\n />\n\n <Amount\n active={summary?.active}\n abandoned={summary?.abandoned}\n isFetching={isFetching}\n />\n </Stack>\n );\n};\n\nexport default memo(CartsSummary);\n","import { memo, useState } from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Card from 'components/Analytics/Carts/Summary/Card';\nimport { formatPercentage } from 'components/Analytics/Carts/Summary/utils';\nimport { fCurrencyBRL } from 'utils/formatNumber';\n\nimport { AmountProps } from './props';\n\nconst Amount = ({ active, abandoned, isFetching }: AmountProps) => {\n const [showActive, setShowActive] = useState(true);\n const [showAbandoned, setShowAbandoned] = useState(true);\n\n const activeValue = showActive ? (active?.amount_value ?? 0) : 0;\n const abandonedValue = showAbandoned ? (abandoned?.amount_value ?? 0) : 0;\n const total = activeValue + abandonedValue;\n\n const series = [\n { name: 'Ativos', data: [activeValue] },\n { name: 'Abandonados', data: [abandonedValue] },\n ];\n\n return (\n <Card\n title=\"Valor em carrinhos\"\n subtitle={\n <Typography variant=\"subtitle2\" fontSize={20} fontWeight={700}>\n {fCurrencyBRL(total)}\n </Typography>\n }\n legend={\n <Stack>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n sx={{ mt: -1 }}\n >\n <FormControlLabel\n label=\"Ativos\"\n control={\n <Checkbox\n name=\"active\"\n size=\"small\"\n checked={showActive}\n onChange={(_, checked) => setShowActive(checked)}\n sx={{ '&.Mui-checked': { color: '#22C55E' } }}\n />\n }\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n noWrap\n title={`${formatPercentage(active?.amount_percentage ?? 0)} | ${fCurrencyBRL(active?.amount_value ?? 0)}`}\n >\n {formatPercentage(active?.amount_percentage ?? 0)}\n  \n <Typography component=\"span\" variant=\"body2\" color=\"text.primary\">\n {fCurrencyBRL(active?.amount_value ?? 0)}\n </Typography>\n </Typography>\n </Stack>\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n sx={{ mt: -1 }}\n >\n <FormControlLabel\n label=\"Abandonados\"\n control={\n <Checkbox\n name=\"abandoned\"\n size=\"small\"\n checked={showAbandoned}\n onChange={(_, checked) => setShowAbandoned(checked)}\n sx={{ '&.Mui-checked': { color: '#FF5630' } }}\n />\n }\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n noWrap\n title={`${formatPercentage(abandoned?.amount_percentage ?? 0)} | ${fCurrencyBRL(abandoned?.amount_value ?? 0)}`}\n >\n {formatPercentage(abandoned?.amount_percentage ?? 0)}\n  \n <Typography component=\"span\" variant=\"body2\" color=\"text.primary\">\n {fCurrencyBRL(abandoned?.amount_value ?? 0)}\n </Typography>\n </Typography>\n </Stack>\n </Stack>\n }\n series={series}\n isFetching={isFetching}\n />\n );\n};\n\nexport default memo(Amount);\n","import { memo, useMemo } from 'react';\nimport CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport Stack from '@mui/material/Stack';\nimport { BarChart, ResponsiveContainer, XAxis, YAxis } from 'recharts';\n\nimport ChartLoading from 'components/Analytics/ChartLoading';\n\nimport Bar from './Bar';\nimport { SummaryCardProps } from './props';\nimport { Card as StyledCard } from './styles';\n\nconst Card = ({\n title,\n subtitle,\n legend,\n series,\n isFetching,\n}: SummaryCardProps) => {\n const isZero = useMemo(\n () => series.every(s => s.data.every(v => v === 0)),\n [series],\n );\n\n const chartData = useMemo(() => {\n if (isZero) return [{ empty: 100 }];\n\n const total = series.reduce((sum, s) => sum + (s.data[0] ?? 0), 0);\n\n const row: Record<string, number> = {};\n\n series.forEach(s => {\n row[s.name] = total > 0 ? (s.data[0] / total) * 100 : 0;\n });\n\n return [row];\n }, [series, isZero]);\n\n return (\n <StyledCard variant=\"outlined\">\n <CardHeader title={title} />\n\n <CardContent>\n <Stack gap={2}>\n <Stack gap={1}>\n {subtitle}\n\n <ChartLoading active={isFetching}>\n <ResponsiveContainer\n width=\"100%\"\n height={24}\n style={{ pointerEvents: 'none' }}\n >\n <BarChart\n data={chartData}\n layout=\"vertical\"\n stackOffset=\"none\"\n margin={{ top: 0, right: 0, bottom: 0, left: 0 }}\n barCategoryGap={0}\n >\n <XAxis type=\"number\" hide domain={[0, 100]} />\n <YAxis type=\"category\" hide />\n\n <Bar series={series} isZero={isZero} />\n </BarChart>\n </ResponsiveContainer>\n </ChartLoading>\n </Stack>\n\n {legend}\n </Stack>\n </CardContent>\n </StyledCard>\n );\n};\n\nexport default memo(Card);\n","import { Bar as RechartsBar } from 'recharts';\n\nimport { BarListProps } from './props';\nimport { getBarRadius } from './utils';\n\nconst COLORS = ['#22C55E', '#FF5630'];\nconst EMPTY_COLOR = '#E5E7EB';\n\nconst Bar = ({ series, isZero }: BarListProps) => {\n if (isZero) {\n return (\n <RechartsBar\n dataKey=\"empty\"\n stackId=\"stack\"\n fill={EMPTY_COLOR}\n stroke=\"none\"\n radius={3}\n isAnimationActive={false}\n data-testid=\"bar-empty\"\n />\n );\n }\n\n return (\n <>\n {series.map((serie, index) => (\n <RechartsBar\n key={index}\n dataKey={serie.name}\n stackId=\"stack\"\n fill={COLORS[index]}\n stroke=\"none\"\n radius={getBarRadius(index, series)}\n isAnimationActive={false}\n data-testid={`bar-${index}`}\n />\n ))}\n </>\n );\n};\n\nexport default Bar;\n","import { SummaryCardSeries } from './props';\n\nconst RADIUS = 3;\n\nexport const getBarRadius = (\n index: number,\n series: SummaryCardSeries[],\n): [number, number, number, number] => {\n const isFirstVisible = index === series.findIndex(s => s.data[0] > 0);\n const isLastVisible =\n index === series.map(s => s.data[0] > 0).lastIndexOf(true);\n\n if (isFirstVisible && isLastVisible) return [RADIUS, RADIUS, RADIUS, RADIUS];\n if (isFirstVisible) return [RADIUS, 0, 0, RADIUS];\n if (isLastVisible) return [0, RADIUS, RADIUS, 0];\n\n return [0, 0, 0, 0];\n};\n","import MuiCard from '@mui/material/Card';\nimport { styled } from '@mui/material/styles';\n\nexport const Card = styled(MuiCard)(({ theme }) => ({\n width: '100%',\n height: 'auto',\n\n border: `1px solid ${theme.palette.divider}`,\n\n boxShadow: 'none',\n overflow: 'visible',\n}));\n","import { fPercent } from 'utils/formatNumber';\n\nexport const formatPercentage = (value: number) =>\n fPercent(value, {\n maximumFractionDigits: 2,\n ...(value > 0 && value < 100 ? { minimumFractionDigits: 2 } : {}),\n });\n","import { memo, useState } from 'react';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Card from 'components/Analytics/Carts/Summary/Card';\nimport { formatPercentage } from 'components/Analytics/Carts/Summary/utils';\n\nimport { QuantityProps } from './props';\n\nconst Quantity = ({ active, abandoned, isFetching }: QuantityProps) => {\n const [showActive, setShowActive] = useState(true);\n const [showAbandoned, setShowAbandoned] = useState(true);\n\n const activeValue = showActive ? (active?.quantity_value ?? 0) : 0;\n const abandonedValue = showAbandoned ? (abandoned?.quantity_value ?? 0) : 0;\n const total = activeValue + abandonedValue;\n\n const series = [\n { name: 'Ativos', data: [activeValue] },\n { name: 'Abandonados', data: [abandonedValue] },\n ];\n\n return (\n <Card\n title=\"Quantidade de carrinhos\"\n subtitle={\n <Typography variant=\"subtitle2\" fontSize={20} fontWeight={700}>\n {total}{' '}\n <Typography\n component=\"span\"\n variant=\"body2\"\n fontSize={13}\n color=\"text.secondary\"\n >\n carrinho{total !== 1 && 's'}\n </Typography>\n </Typography>\n }\n legend={\n <Stack>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n sx={{ mt: -1 }}\n >\n <FormControlLabel\n label=\"Ativos\"\n control={\n <Checkbox\n name=\"active\"\n size=\"small\"\n checked={showActive}\n onChange={(_, checked) => setShowActive(checked)}\n sx={{ '&.Mui-checked': { color: '#22C55E' } }}\n />\n }\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n noWrap\n title={`${formatPercentage(active?.quantity_percentage ?? 0)} ${\n active?.quantity_value ?? 0\n } | carrinho${active?.quantity_value !== 1 ? 's' : ''}`}\n >\n {formatPercentage(active?.quantity_percentage ?? 0)}\n  \n <Typography component=\"span\" variant=\"body2\" color=\"text.primary\">\n {active?.quantity_value ?? 0} carrinho\n {active?.quantity_value !== 1 ? 's' : ''}\n </Typography>\n </Typography>\n </Stack>\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1.5}\n sx={{ mt: -1 }}\n >\n <FormControlLabel\n label=\"Abandonados\"\n control={\n <Checkbox\n name=\"abandoned\"\n size=\"small\"\n checked={showAbandoned}\n onChange={(_, checked) => setShowAbandoned(checked)}\n sx={{ '&.Mui-checked': { color: '#FF5630' } }}\n />\n }\n />\n\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n noWrap\n title={`${formatPercentage(abandoned?.quantity_percentage ?? 0)} ${\n abandoned?.quantity_value\n } | carrinho${abandoned?.quantity_value !== 1 ? 's' : ''}`}\n >\n {formatPercentage(abandoned?.quantity_percentage ?? 0)}\n  \n <Typography component=\"span\" variant=\"body2\" color=\"text.primary\">\n {abandoned?.quantity_value} carrinho\n {abandoned?.quantity_value !== 1 ? 's' : ''}\n </Typography>\n </Typography>\n </Stack>\n </Stack>\n }\n series={series}\n isFetching={isFetching}\n />\n );\n};\n\nexport default memo(Quantity);\n","import { useCallback, useMemo } from 'react';\nimport Badge from '@mui/material/Badge';\nimport Stack from '@mui/material/Stack';\n\nimport { useCartsContext } from 'components/Analytics/Carts/context';\nimport Drawer from 'components/Drawer';\nimport Icon from 'components/Icon';\nimport MenuItem from 'components/MenuItem';\nimport usePopover from 'hooks/usePopover';\nimport useResponsive from 'hooks/useResponsive';\nimport useToggle from 'hooks/useToggle';\nimport { FilterDateState } from 'types/analytics';\nimport { FILTER_PERIOD_LABELS, FilterPeriod } from 'utils/analytics';\nimport { fDateRangeShortLabel } from 'utils/formatTime';\n\nimport Filters from './Filters';\nimport { Button, ExportButton, MenuPopover } from './styles';\n\nconst Toolbar = () => {\n const isMobile = useResponsive('down', 'sm');\n\n const { slots, adapters, filters } = useCartsContext();\n\n const {\n dateFilter,\n handleDateFilterChange,\n selectedPartners,\n selectedSellers,\n selectedStatuses,\n } = filters;\n\n const activeFiltersCount = useMemo(() => {\n const sellersCount = adapters.useSellerOptions ? selectedSellers.length : 0;\n\n return selectedPartners.length + sellersCount + selectedStatuses.length;\n }, [\n adapters.useSellerOptions,\n selectedPartners.length,\n selectedSellers.length,\n selectedStatuses.length,\n ]);\n\n const dateFilterPopover = usePopover();\n const exportPopover = usePopover();\n\n const [filtersOpen, toggleFiltersOpen] = useToggle();\n\n const handleDateFilterSave = useCallback(\n (value: FilterDateState) => {\n handleDateFilterChange(value);\n dateFilterPopover.onClose();\n },\n [handleDateFilterChange, dateFilterPopover],\n );\n\n const dateButtonLabel =\n dateFilter.period !== FilterPeriod.OTHER\n ? FILTER_PERIOD_LABELS[dateFilter.period]\n : fDateRangeShortLabel(dateFilter.start_date, dateFilter.end_date);\n\n return (\n <>\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n alignItems={{ xs: 'flex-start', sm: 'center' }}\n justifyContent=\"space-between\"\n gap={1.5}\n >\n <Stack width=\"100%\" direction=\"row\" alignItems=\"center\" gap={1.5}>\n <Button\n variant=\"outlined\"\n endIcon={<Icon icon=\"ARROW_DOWN_SIMPLE\" />}\n color=\"inherit\"\n size=\"small\"\n fullWidth={isMobile}\n onClick={dateFilterPopover.onOpen}\n >\n {isMobile ? 'Período' : dateButtonLabel}\n </Button>\n\n <Badge\n badgeContent={activeFiltersCount}\n invisible={activeFiltersCount === 0}\n color=\"primary\"\n >\n <Button\n variant=\"outlined\"\n startIcon={<Icon icon=\"FILTER_LIST\" />}\n color=\"inherit\"\n size=\"small\"\n fullWidth={isMobile}\n onClick={toggleFiltersOpen}\n >\n Filtrar\n </Button>\n </Badge>\n\n {isMobile && (\n <ExportButton\n variant=\"text\"\n startIcon={<Icon icon=\"DOWNLOAD_EXPORT_04\" />}\n size=\"small\"\n onClick={exportPopover.onOpen}\n sx={{ display: 'none' }}\n >\n Exportar\n </ExportButton>\n )}\n </Stack>\n\n {!isMobile && (\n <ExportButton\n variant=\"text\"\n startIcon={<Icon icon=\"DOWNLOAD_EXPORT_04\" />}\n size=\"small\"\n color=\"inherit\"\n onClick={exportPopover.onOpen}\n sx={{ display: 'none' }}\n >\n Exportar\n </ExportButton>\n )}\n </Stack>\n\n <MenuPopover\n open={dateFilterPopover.open}\n onClose={dateFilterPopover.onClose}\n arrow={isMobile ? 'top-center' : 'top-left'}\n TransitionProps={{ timeout: 0 }}\n disabledArrow\n >\n {slots.renderDateFilter({\n value: dateFilter,\n onSave: handleDateFilterSave,\n onClose: dateFilterPopover.onClose,\n })}\n </MenuPopover>\n\n <MenuPopover\n open={exportPopover.open}\n onClose={exportPopover.onClose}\n arrow=\"top-right\"\n disabledArrow\n >\n <MenuItem>Exportar XLSX</MenuItem>\n <MenuItem>Exportar CSV</MenuItem>\n <MenuItem>Exportar PDF</MenuItem>\n </MenuPopover>\n\n <Drawer\n open={filtersOpen}\n onClose={toggleFiltersOpen}\n headerTitle=\"Filtros\"\n headerProps={{ direction: 'row-reverse' }}\n contentProps={{ p: 0 }}\n maxWidth={400}\n >\n <Filters />\n </Drawer>\n </>\n );\n};\n\nexport default Toolbar;\n","import {\n useCartsContext,\n useCartsFilterContext,\n} from 'components/Analytics/Carts/context';\nimport OptionsFilter from 'components/Analytics/OptionsFilter';\n\nconst Partners = () => {\n const { adapters } = useCartsContext();\n const { selectedPartners, setSelectedPartners } = useCartsFilterContext();\n\n return (\n <OptionsFilter\n name=\"partners\"\n title=\"Clientes\"\n placeholder=\"Digite para buscar um cliente...\"\n emptyText=\"Nenhum cliente selecionado\"\n testIdPrefix=\"filter-partner\"\n defaultExpanded\n selected={selectedPartners}\n onChange={setSelectedPartners}\n useOptions={adapters.usePartnerOptions}\n />\n );\n};\n\nexport default Partners;\n","import { 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 {\n useCartsContext,\n useCartsFilterContext,\n} from 'components/Analytics/Carts/context';\nimport useToggle from 'hooks/useToggle';\nimport { Profile } from 'utils/carts';\n\nimport ProfileOption from './ProfileOption';\n\nconst Profiles = () => {\n const { slots } = useCartsContext();\n const { selectedProfile, setSelectedProfile } = useCartsFilterContext();\n\n const { profileOptions } = slots;\n\n const [expanded, toggleExpanded] = useToggle(!!selectedProfile);\n\n const handleToggle = useCallback(\n (profile: Profile) => {\n setSelectedProfile(selectedProfile === profile ? null : profile);\n },\n [setSelectedProfile, selectedProfile],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Perfis\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1}>\n {profileOptions.map(profile => (\n <ProfileOption\n key={profile}\n profile={profile}\n checked={selectedProfile === profile}\n onToggle={() => handleToggle(profile)}\n />\n ))}\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Profiles;\n","import FormControlLabel from '@mui/material/FormControlLabel';\nimport Radio from '@mui/material/Radio';\n\nimport { CART_PROFILE_OPTIONS } from 'utils/carts';\n\nimport { ProfileOptionProps } from './props';\n\nconst ProfileOption = ({ profile, checked, onToggle }: ProfileOptionProps) => {\n const { label } = CART_PROFILE_OPTIONS[profile];\n\n return (\n <FormControlLabel\n control={\n <Radio\n name={`profile-${profile}`}\n checked={checked}\n onClick={onToggle}\n />\n }\n label={label}\n />\n );\n};\n\nexport default ProfileOption;\n","import { useCartsFilterContext } from 'components/Analytics/Carts/context';\nimport OptionsFilter from 'components/Analytics/OptionsFilter';\n\nimport { SellersProps } from './props';\n\nconst Sellers = ({ useOptions }: SellersProps) => {\n const { selectedSellers, setSelectedSellers } = useCartsFilterContext();\n\n return (\n <OptionsFilter\n name=\"sellers\"\n title=\"Vendedores\"\n placeholder=\"Digite para buscar um vendedor...\"\n emptyText=\"Nenhum vendedor selecionado\"\n testIdPrefix=\"filter-seller\"\n defaultExpanded={!!selectedSellers.length}\n selected={selectedSellers}\n onChange={setSelectedSellers}\n useOptions={useOptions}\n />\n );\n};\n\nexport default Sellers;\n","import { useCallback, 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 { useCartsFilterContext } from 'components/Analytics/Carts/context';\nimport useToggle from 'hooks/useToggle';\nimport { CartStatus } from 'utils/carts';\n\nimport StatusOption from './StatusOption';\n\nconst Status = () => {\n const { selectedStatuses, setSelectedStatuses } = useCartsFilterContext();\n\n const [expanded, toggleExpanded] = useToggle(!!selectedStatuses.length);\n\n const statuses = useMemo(\n () =>\n Object.values(CartStatus).filter(status => status !== CartStatus.EXPIRED),\n [],\n );\n\n const handleToggle = useCallback(\n (status: CartStatus) => {\n setSelectedStatuses(\n selectedStatuses.includes(status)\n ? selectedStatuses.filter(s => s !== status)\n : [...selectedStatuses, status],\n );\n },\n [setSelectedStatuses, selectedStatuses],\n );\n\n return (\n <Accordion expanded={expanded} onChange={toggleExpanded}>\n <AccordionSummary>\n <Typography variant=\"body2\" fontWeight=\"bold\" color=\"text.primary\">\n Status\n </Typography>\n </AccordionSummary>\n\n <AccordionDetails>\n <Stack mt={-1}>\n {statuses.map(status => (\n <StatusOption\n key={status}\n status={status}\n checked={selectedStatuses.includes(status)}\n onToggle={() => handleToggle(status)}\n />\n ))}\n </Stack>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default Status;\n","import Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nimport Label from 'components/Label';\nimport { CART_STATUS_OPTIONS } from 'utils/carts';\n\nimport { StatusOptionProps } from './props';\n\nconst StatusOption = ({ status, checked, onToggle }: StatusOptionProps) => {\n const { label, color } = CART_STATUS_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 <Label color={color} sx={{ cursor: 'pointer' }}>\n {label}\n </Label>\n }\n />\n );\n};\n\nexport default StatusOption;\n","import { useCartsContext } from 'components/Analytics/Carts/context';\n\nimport Partners from './Partners';\nimport Profiles from './Profiles';\nimport Sellers from './Sellers';\nimport Status from './Status';\n\nconst Filters = () => {\n const { adapters } = useCartsContext();\n\n const { useSellerOptions } = adapters;\n\n return (\n <>\n <Partners />\n\n {!!useSellerOptions && <Sellers useOptions={useSellerOptions} />}\n\n <Status />\n\n <Profiles />\n </>\n );\n};\n\nexport default Filters;\n","import MuiButton from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\nimport CommonMenuPopover from 'components/MenuPopover';\n\nexport const Button = styled(MuiButton)(({ theme }) => ({\n background: theme.palette.common.white,\n}));\n\nexport const ExportButton = styled(MuiButton)(({ theme }) => ({\n color: theme.palette.text.secondary,\n\n '&:hover': {\n background: theme.palette.action.hover,\n },\n\n [theme.breakpoints.down('sm')]: {\n border: `1px solid ${theme.palette.divider}`,\n\n textIndent: '-9999em',\n fontSize: 0,\n minWidth: 30,\n maxWidth: 30,\n height: 30,\n width: 30,\n overflow: 'hidden',\n\n '& .MuiButton-icon': {\n margin: 0,\n },\n },\n}));\n\nexport const MenuPopover = styled(CommonMenuPopover)(({ theme }) => ({\n '& .MuiPopover-paper': {\n width: 540,\n padding: theme.spacing(3),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.spacing(1),\n backgroundImage: 'none',\n\n [theme.breakpoints.down('sm')]: {\n width: 'calc(100% - 48px)',\n },\n },\n}));\n"]}
|
|
@@ -8,11 +8,12 @@ import { a as a$4 } from '../../../chunk-NS4YQBCL.js';
|
|
|
8
8
|
import { d as d$2 } from '../../../chunk-2W5FGLTC.js';
|
|
9
9
|
import { h, d as d$1, c as c$2 } from '../../../chunk-OF6623HG.js';
|
|
10
10
|
import '../../../chunk-5J35UAV6.js';
|
|
11
|
-
import { d } from '../../../chunk-
|
|
11
|
+
import { d } from '../../../chunk-BVWXGGJY.js';
|
|
12
12
|
import { a as a$3 } from '../../../chunk-W5SQJCRV.js';
|
|
13
13
|
import { a as a$1 } from '../../../chunk-4F2NKGF6.js';
|
|
14
14
|
import '../../../chunk-PRWQQJDL.js';
|
|
15
|
-
import '../../../chunk-
|
|
15
|
+
import '../../../chunk-3MKH4GA7.js';
|
|
16
|
+
import '../../../chunk-TYX6CIOM.js';
|
|
16
17
|
import '../../../chunk-6U5LS7MP.js';
|
|
17
18
|
import '../../../chunk-JUAHRU5E.js';
|
|
18
19
|
import '../../../chunk-NIQW2J3M.js';
|